backend: frontend: added new fields to model structs and frontend form

This commit is contained in:
Patryk Hegenberg 2023-12-07 13:24:57 +01:00
parent eda80cf0f0
commit d50f5dab03
3 changed files with 488 additions and 249 deletions

View file

@ -63,7 +63,7 @@ func AddMonster(Monsters *[]model.Monster) http.HandlerFunc {
Perception: r.FormValue("perception"), Perception: r.FormValue("perception"),
Stealth: r.FormValue("stealth"), Stealth: r.FormValue("stealth"),
}, },
DamageRes: []string{r.FormValue("damageRes")}, Resist: []string{r.FormValue("resist")},
Senses: []string{r.FormValue("senses")}, Senses: []string{r.FormValue("senses")},
Languages: []string{r.FormValue("languages")}, Languages: []string{r.FormValue("languages")},
CR: r.FormValue("cr"), CR: r.FormValue("cr"),

View file

@ -16,7 +16,10 @@ type Monster struct {
CR string `json:"cr"` CR string `json:"cr"`
Type string `json:"type"` Type string `json:"type"`
Name string `json:"name"` Name string `json:"name"`
DamageRes []string `json:"damageResistances"` Vulnerable []string `json:"vulnerable"`
ConditionImmnue []string `json:"conditionImmune"`
Resist []string `json:"resist"`
Immune []string `json:"immune"`
Traits []Trait `json:"trait"` Traits []Trait `json:"trait"`
AC []AC `json:"ac"` AC []AC `json:"ac"`
Alignment []string `json:"alignment"` Alignment []string `json:"alignment"`
@ -45,17 +48,40 @@ type HP struct {
type Speed struct { type Speed struct {
Walk int `json:"walk"` Walk int `json:"walk"`
burrow int `json:"burrow"`
climb int `json:"climb"`
fly int `json:"fly"`
swim int `json:"swim"`
} }
type Save struct { type Save struct {
Dex string `json:"dex"` Dex string `json:"dex"`
Con string `json:"con"` Con string `json:"con"`
Wis string `json:"wis"` Wis string `json:"wis"`
Cha string `json:"cha"`
Str string `json:"str"`
Int string `json:"int"`
} }
type Skill struct { type Skill struct {
Perception string `json:"perception"`
Stealth string `json:"stealth"` Stealth string `json:"stealth"`
Acrobatics string `json:"acrobatics"`
AnimalHandling string `json:"animalHandling"`
Arcana string `json:"arcana"`
Athletics string `json:"athletics"`
Deception string `json:"deception"`
History string `json:"history"`
Insight string `json:"insight"`
Intimidation string `json:"intimidation"`
Investigation string `json:"investigation"`
Medicine string `json:"medicine"`
Nature string `json:"nature"`
Perception string `json:"perception"`
Performance string `json:"performance"`
Persuation string `json:"persuation"`
SleightOfHand string `json:"sleightOfHand"`
Survival string `json:"survival"`
Religion string `json:"religion"`
} }
type Trait struct { type Trait struct {

View file

@ -4,7 +4,8 @@
<div class="tile is-child field"> <div class="tile is-child field">
<label for="name">Monster Name:</label> <label for="name">Monster Name:</label>
<div class="control"> <div class="control">
<input type="text" name="name" required placeholder="Type here" class="input input-bordered w-full max-w-xs"> <input type="text" name="name" required placeholder="Type here"
class="input input-bordered w-full max-w-xs">
</div> </div>
</div> </div>
</div> </div>
@ -20,7 +21,15 @@
<div class="tile is-child field"> <div class="tile is-child field">
<label for="size">Size:</label> <label for="size">Size:</label>
<div class="control"> <div class="control">
<input type="text" name="size" required class="input input-bordered w-full max-w-xs"> <div class="select">
<select>
<option>H</option>
<option>T</option>
<option>S</option>
<option>L</option>
<option>G</option>
</select>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -79,12 +88,57 @@
</div> </div>
</div> </div>
</div> </div>
<div class="card tile is-ancestor is-vertical">
<header class="card-header">
<p class="card-header-title">
Speed
</p>
</header>
<div class="card-content">
<div class="content">
<div class="tile is-ancestor"> <div class="tile is-ancestor">
<div class="tile is-parent"> <div class="tile is-parent">
<div class="tile is-child field"> <div class="tile is-child field">
<label for="speed">Speed:</label> <label for="walk">Walk:</label>
<div class="control"> <div class="control">
<input type="number" name="speed" required class="input input-bordered w-full max-w-xs"> <input type="number" name="walk" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
<div class="tile is-parent">
<div class="tile is-child field">
<label for="burrow">burrow:</label>
<div class="control">
<input type="number" name="burrow" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
<div class="tile is-parent">
<div class="tile is-child field">
<label for="climb">Climb:</label>
<div class="control">
<input type="number" name="climb" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
</div>
<div class="tile is-ancestor">
<div class="tile is-parent">
<div class="tile is-child field">
<label for="fly">Fly:</label>
<div class="control">
<input type="number" name="fly" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
<div class="tile is-parent">
<div class="tile is-child field">
<label for="swim">Swim:</label>
<div class="control">
<input type="number" name="swim" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -114,6 +168,14 @@
</div> </div>
</div> </div>
</div> </div>
<div class="tile is-parent">
<div class="tile is-child field">
<label for="cr">CR:</label>
<div class="control">
<input type="text" name="cr" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
</div> </div>
<div class="tile is-ancestor"> <div class="tile is-ancestor">
<div class="tile is-parent"> <div class="tile is-parent">
@ -140,11 +202,27 @@
</div> </div>
</div> </div>
</div> </div>
<div class="tile is-parent">
<div class="tile is-child field">
<label for="passive">Passive:</label>
<div class="control">
<input type="number" name="passive" required class="input input-bordered w-full max-w-xs">
</div> </div>
</div>
</div>
</div>
<div class="card tile is-ancestor is-vertical">
<header class="card-header">
<p class="card-header-title">
Save
</p>
</header>
<div class="card-content">
<div class="content">
<div class="tile is-ancestor"> <div class="tile is-ancestor">
<div class="tile is-parent gap"> <div class="tile is-parent gap">
<div class="tile is-child field"> <div class="tile is-child field">
<label for="saveDex">Save Dex:</label> <label for="saveDex">Dex:</label>
<div class="control"> <div class="control">
<input type="text" name="saveDex" required class="input input-bordered w-full max-w-xs"> <input type="text" name="saveDex" required class="input input-bordered w-full max-w-xs">
</div> </div>
@ -152,7 +230,7 @@
</div> </div>
<div class="tile is-parent gap"> <div class="tile is-parent gap">
<div class="tile is-child field"> <div class="tile is-child field">
<label for="saveCon">Save Con:</label> <label for="saveCon">Con:</label>
<div class="control"> <div class="control">
<input type="text" name="saveCon" required class="input input-bordered w-full max-w-xs"> <input type="text" name="saveCon" required class="input input-bordered w-full max-w-xs">
</div> </div>
@ -160,13 +238,157 @@
</div> </div>
<div class="tile is-parent gap"> <div class="tile is-parent gap">
<div class="tile is-child field"> <div class="tile is-child field">
<label for="saveWis">Save Wis:</label> <label for="saveWis">Wis:</label>
<div class="control"> <div class="control">
<input type="text" name="saveWis" required class="input input-bordered w-full max-w-xs"> <input type="text" name="saveWis" required class="input input-bordered w-full max-w-xs">
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div>
<div class="tile is-ancestor">
<div class="tile is-parent gap">
<div class="tile is-child field">
<label for="saveCha">Cha:</label>
<div class="control">
<input type="text" name="saveCha" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
<div class="tile is-parent gap">
<div class="tile is-child field">
<label for="saveInt">Int:</label>
<div class="control">
<input type="text" name="saveInt" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
<div class="tile is-parent gap">
<div class="tile is-child field">
<label for="saveStr">Str:</label>
<div class="control">
<input type="text" name="saveStr" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card tile is-ancestor is-vertical">
<header class="card-header">
<p class="card-header-title">
Skill
</p>
</header>
<div class="card-content">
<div class="content">
<div class="tile is-ancestor">
<div class="tile is-parent">
<div class="tile is-child field">
<label for="acrobatics">Acrobatics:</label>
<div class="control">
<input type="text" name="acrobatics" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
<div class="tile is-parent">
<div class="tile is-child field">
<label for="animalHandling">Animal Handling:</label>
<div class="control">
<input type="text" name="animalHandling" required
class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
<div class="tile is-parent">
<div class="tile is-child field">
<label for="arcana">Arcana:</label>
<div class="control">
<input type="text" name="arcana" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
</div>
<div class="tile is-ancestor">
<div class="tile is-parent">
<div class="tile is-child field">
<label for="athletics">Athletics:</label>
<div class="control">
<input type="text" name="athletics" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
<div class="tile is-parent">
<div class="tile is-child field">
<label for="deception">Deception:</label>
<div class="control">
<input type="text" name="deception" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
<div class="tile is-parent">
<div class="tile is-child field">
<label for="history">History:</label>
<div class="control">
<input type="text" name="history" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
</div>
<div class="tile is-ancestor">
<div class="tile is-parent">
<div class="tile is-child field">
<label for="insight">Insight:</label>
<div class="control">
<input type="text" name="insight" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
<div class="tile is-parent">
<div class="tile is-child field">
<label for="intimidation">Intimidation:</label>
<div class="control">
<input type="text" name="intimidation" required
class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
<div class="tile is-parent">
<div class="tile is-child field">
<label for="investigation">Investigation:</label>
<div class="control">
<input type="text" name="investigation" required
class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
</div>
<div class="tile is-ancestor">
<div class="tile is-parent">
<div class="tile is-child field">
<label for="medicine">Medicine:</label>
<div class="control">
<input type="text" name="medicine" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
<div class="tile is-parent">
<div class="tile is-child field">
<label for="nature">Nature:</label>
<div class="control">
<input type="text" name="nature" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
<div class="tile is-parent">
<div class="tile is-child field">
<label for="performance">Performance:</label>
<div class="control">
<input type="text" name="performance" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
</div>
<div class="tile is-ancestor"> <div class="tile is-ancestor">
<div class="tile is-parent"> <div class="tile is-parent">
<div class="tile is-child field"> <div class="tile is-child field">
@ -176,8 +398,6 @@
</div> </div>
</div> </div>
</div> </div>
</div>
<div class="tile is-ancestor">
<div class="tile is-parent"> <div class="tile is-parent">
<div class="tile is-child field"> <div class="tile is-child field">
<label for="stealth">Stealth:</label> <label for="stealth">Stealth:</label>
@ -187,12 +407,15 @@
</div> </div>
</div> </div>
</div> </div>
</div>
</div>
</div>
<div class="tile is-ancestor"> <div class="tile is-ancestor">
<div class="tile is-parent"> <div class="tile is-parent">
<div class="tile is-child field"> <div class="tile is-child field">
<label for="damageRes">Damage Resistances:</label> <label for="resist">Damage Resistances:</label>
<div class="control"> <div class="control">
<input type="text" name="damageRes" required class="input input-bordered w-full max-w-xs"> <input type="text" name="resist" required class="input input-bordered w-full max-w-xs">
</div> </div>
</div> </div>
</div> </div>
@ -217,16 +440,6 @@
</div> </div>
</div> </div>
</div> </div>
<div class="tile is-ancestor">
<div class="tile is-parent">
<div class="tile is-child field">
<label for="cr">CR:</label>
<div class="control">
<input type="text" name="cr" required class="input input-bordered w-full max-w-xs">
</div>
</div>
</div>
</div>
<div class="tile is-ancestor"> <div class="tile is-ancestor">
<div class="tile is-parent"> <div class="tile is-parent">
<div class="tile is-child field"> <div class="tile is-child field">