better UI

This commit is contained in:
Lukas Forsberg 2025-11-23 23:31:47 +01:00
parent 76dff51c6f
commit 3c10555577

View File

@ -89,97 +89,134 @@
<div class="skill-form-container">
<h2>Skills</h2>
<div class="skill-headers">
<span class="col-name">Name</span>
<span class="col-value">Rating</span>
<span class="col-value">Attribute</span>
<span class="col-value">Dice Pool</span>
<span class="col-remove"></span>
</div>
{#each characterData.Skills as skill, i}
<div class="skill-entry">
<input class="col-name" placeholder="Name" bind:value={characterData.Skills[i].Name} />
<input class="col-value" type="number" min="0" bind:value={characterData.Skills[i].Rating} />
<select class="col-value" bind:value={characterData.Skills[i].Attribute}>
{#each Object.keys(Defaults.Attributes) as attr}
<option value={attr}>{attr}</option>
{/each}
</select>
<span class="col-value">{skill.Rating + characterData.Attributes[skill.Attribute]}</span>
<input type="number" min="1" bind:value={characterData.Skills[i].Page} />
<button on:click={() => viewPage(characterData.Skills[i].Page)}>View</button>
<button class="col-remove" on:click={() => remove("Skills", i)}>X</button>
</div>
{/each}
<button on:click={() => add("Skills")}>Add Skill</button>
<table>
<thead>
<tr>
<th>Name</th>
<th>Rating</th>
<th>Attribute</th>
<th>Dice Pool</th>
<th>Page</th>
<th></th>
<th></th>
</tr>
</thead>
<h2>Connections</h2>
<div class="skill-headers">
<span class="col-name">Name</span>
<span class="col-value">Loyalty</span>
<span class="col-value">Connection</span>
</div>
{#each characterData.Connections as connection, i}
<div class="skill-entry">
<input class="col-name" placeholder="Name" bind:value={characterData.Connections[i].Name} />
<input class="col-value" type="number" min="0" bind:value={characterData.Connections[i].Loyalty} />
<input class="col-value" type="number" min="0" bind:value={characterData.Connections[i].Connection} />
<button on:click={() => remove("Connections", i)}>X</button>
</div>
{/each}
<button on:click={() => add("Connections")}>Add Connection</button>
<tbody>
{#each characterData.Skills as skill, i}
<tr>
<td><input placeholder="Name" bind:value={characterData.Skills[i].Name} /></td>
<td><input type="number" min=0 max=100 bind:value={characterData.Skills[i].Rating} /></td>
<td><select bind:value={characterData.Skills[i].Attribute}>
{#each Object.keys(Defaults.Attributes) as attr}
<option value={attr}>{attr}</option>
{/each}
</select></td>
<td><span>{skill.Rating + characterData.Attributes[skill.Attribute]}</span></td>
<td><input type="number" min=1 max=354 bind:value={characterData.Skills[i].Page} /></td>
<td><button on:click={() => viewPage(characterData.Skills[i].Page)}>View</button></td>
<td><button on:click={() => remove("Skills", i)}>X</button></td>
</tr>
{/each}
</tbody>
</table>
<button on:click={() => add("Skills")}>+</button>
<h2>Contacts</h2>
<table>
<thead>
<tr>
<th>Name</th>
<th>Loyalty</th>
<th>Connection</th>
<th></th>
</tr>
</thead>
<tbody>
{#each characterData.Connections as connection, i}
<tr>
<td><input placeholder="Name" bind:value={characterData.Connections[i].Name}/></td>
<td><input type="number" min=0 max=100 bind:value={characterData.Connections[i].Loyalty} /></td>
<td><input type="number" min=0 max=100 bind:value={characterData.Connections[i].Connection} /></td>
<td><button on:click={() => remove("Connections", i)}>X</button></td>
</tr>
{/each}
</tbody>
</table>
<button on:click={() => add("Connections")}>+</button>
<h2>Ranged Weapons</h2>
<div class="skill-headers">
<span class="col-name">Weapon</span>
<span class="col-value">Damage</span>
<span class="col-value">Type</span>
<span class="col-value">AP</span>
<span class="col-value">Mode</span>
<span class="col-value">RC</span>
<span class="col-value">Ammo</span>
<span class="col-value">Availabiliy</span>
</div>
{#each characterData.RangedWeapons as weapon, i}
<div class="skill-entry">
<input class="col-name" placeholder="Name" bind:value={characterData.RangedWeapons[i].Weapon} />
<input class="col-value" type="number" min="0" bind:value={characterData.RangedWeapons[i].Damage} />
<input class="col-value" bind:value={characterData.RangedWeapons[i].Type} />
<input class="col-value" type="number" min="0" bind:value={characterData.RangedWeapons[i].AP} />
<input class="col-value" bind:value={characterData.RangedWeapons[i].Mode} />
<input class="col-value" type="number" min="0" bind:value={characterData.RangedWeapons[i].RC} />
<input class="col-value" type="number" min="0" bind:value={characterData.RangedWeapons[i].Ammo} />
<input class="col-value" bind:value={characterData.RangedWeapons[i].Availabiliy} />
<button on:click={() => remove("RangedWeapons", i)}>X</button>
</div>
{/each}
<button on:click={() => add("RangedWeapons")}>Add Ranged Weapon</button>
<table>
<thead>
<tr>
<th>Weapon</th>
<th>Damage</th>
<th>Type</th>
<th>AP</th>
<th>Mode</th>
<th>RC</th>
<th>Ammo</th>
<th>Availabiliy</th>
<th>Page</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
{#each characterData.RangedWeapons as weapon, i}
<tr>
<td><input placeholder="Name" bind:value={characterData.RangedWeapons[i].Weapon} /></td>
<td><input type="number" min=0 max=100 bind:value={characterData.RangedWeapons[i].Damage} /></td>
<td><input bind:value={characterData.RangedWeapons[i].Type} /></td>
<td><input type="number" min=0 max=100 bind:value={characterData.RangedWeapons[i].AP} /></td>
<td><input bind:value={characterData.RangedWeapons[i].Mode} /></td>
<td><input type="number" min=0 max=100 bind:value={characterData.RangedWeapons[i].RC} /></td>
<td><input type="number" min=0 max=9999 bind:value={characterData.RangedWeapons[i].Ammo} /></td>
<td><input bind:value={characterData.RangedWeapons[i].Availabiliy} /></td>
<td><input type="number" min=1 max=354 bind:value={characterData.Connections[i].Page} /></td>
<td><button on:click={() => viewPage(characterData.Connections[i].Page)}>View</button></td>
<td><button on:click={() => remove("RangedWeapons", i)}>X</button></td>
</tr>
{/each}
</tbody>
</table>
<button on:click={() => add("RangedWeapons")}>+</button>
<h2>Melee Weapons</h2>
<div class="skill-headers">
<span class="col-name">Weapon</span>
<span class="col-value">Reach</span>
<span class="col-value">Damage</span>
<span class="col-value">Type</span>
<span class="col-value">Strength Multiplier</span>
<span class="col-value">Calculated Damage</span>
<span class="col-value">AP</span>
<span></span> <!-- for the remove button -->
</div>
{#each characterData.MeleeWeapons as weapon, i}
<div class="skill-entry">
<input class="col-name" placeholder="Weapon" bind:value={characterData.MeleeWeapons[i].Weapon} />
<input class="col-value" type="number" min="0" bind:value={characterData.MeleeWeapons[i].Reach} />
<input class="col-value" type="number" min="0" bind:value={characterData.MeleeWeapons[i].Damage} />
<input class="col-value" placeholder="Type" bind:value={characterData.MeleeWeapons[i].Type} />
<input class="col-value" type="number" min="0" bind:value={characterData.MeleeWeapons[i]["Strength Multiplier"]} />
<span class="col-value">{(weapon["Strength Multiplier"] * characterData.Attributes.Strength) + weapon.Damage }</span>
<input class="col-value" type="number" min="0" bind:value={characterData.MeleeWeapons[i].AP} />
<button on:click={() => remove("MeleeWeapons", i)}>X</button>
</div>
{/each}
<button on:click={() => add("MeleeWeapons")}>Add Melee Weapon</button>
<table>
<thead>
<tr>
<th>Weapon</th>
<th>Reach</th>
<th>Damage</th>
<th>Type</th>
<th>Strength Multiplier</th>
<th>Calculated Damage</th>
<th>AP</th>
<th>Page</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
{#each characterData.MeleeWeapons as weapon, i}
<tr>
<td><input placeholder="Weapon" bind:value={characterData.MeleeWeapons[i].Weapon} /></td>
<td><input type="number" min=0 max=100 bind:value={characterData.MeleeWeapons[i].Reach} /></td>
<td><input type="number" min=0 max=100 bind:value={characterData.MeleeWeapons[i].Damage} /></td>
<td><input placeholder="Type" bind:value={characterData.MeleeWeapons[i].Type} /></td>
<td><input type="number" min=0 max=999 bind:value={characterData.MeleeWeapons[i]["Strength Multiplier"]} /></td>
<td><span> {(weapon["Strength Multiplier"] * characterData.Attributes.Strength) + weapon.Damage }</span></td>
<td><input type="number" min=0 max=100 bind:value={characterData.MeleeWeapons[i].AP} /></td>
<td><input type="number" min=1 max=354 bind:value={characterData.Connections[i].Page} /></td>
<td><button on:click={() => viewPage(characterData.Connections[i].Page)}>View</button></td>
<td><button on:click={() => remove("MeleeWeapons", i)}>X</button></td>
</tr>
{/each}
</tbody>
</table>
<button on:click={() => add("MeleeWeapons")}>+</button>
<h2>Cyberware</h2>
<div class="skill-headers">
@ -262,6 +299,10 @@
min-width: 40px;
}
th {
text-align: left;
}
.col-remove {
flex: 0;
}