fix(templates): complete revision of actor templates to remove duplicates and fix inconsistencies

- Fixed grid-2 to grid-2col CSS class usage
- Replaced improper <p><a> tags with <div><a> in item lists (actor-weapons, actor-defenses, group-items, group-vehicles)
- Fixed typos: smarttlk -> smarttl, compétence -> Compétence
- Fixed duplicate class attributes
- Standardized HTML comments to Handlebars comments ({{!-- --}})
- Added missing localizations for Character and Skills headers
- Removed orphan {{/if}} tag in character-id.hbs
- Created npc-skill-category.hbs partial to eliminate 150+ lines of duplicated skill category code in actor-npc-sheet.hbs
- Created item-list.hbs partial for reusable item list display
- Fixed html.find(...).forEach error in roll.mjs by ensuring jQuery object
- Added .history/ to .gitignore

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
2026-06-04 22:58:46 +02:00
parent 30d6f71fc7
commit 3db03f5159
20 changed files with 486 additions and 146 deletions
@@ -4,7 +4,6 @@
>
<div class="form">
{{log this}}
<aside>
<div
class="flexrow"
@@ -84,10 +83,6 @@
>
<i class="fas fa-medal"></i>
</a>
<!--a class="manage-tabs" data-action="manage-tabs" data-tooltip="{{localize "VERMINE.tab_options"}}">
<i class="fas fa-fw fa-ellipsis-v"></i>
</a-->
</nav>
<!-- BODY -->
+8 -71
View File
@@ -224,77 +224,14 @@
{{!-- Skills Grid by Category --}}
<div class="skills-container">
{{!-- Homme --}}
<div class="skill-category">
<h4>{{ localize 'VERMINE.skill_category.man' }}</h4>
<div class="grid grid-2col">
{{#each system.skills as |skill key|}}
{{#ife skill.category "man"}}
{{> "systems/vermine2047/templates/actor/parts/npc-skill-item.hbs" skill=skill key=key}}
{{/ife}}
{{/each}}
</div>
</div>
{{!-- Animal --}}
<div class="skill-category">
<h4>{{ localize 'VERMINE.skill_category.animal' }}</h4>
<div class="grid grid-2col">
{{#each system.skills as |skill key|}}
{{#ife skill.category "animal"}}
{{> "systems/vermine2047/templates/actor/parts/npc-skill-item.hbs" skill=skill key=key}}
{{/ife}}
{{/each}}
</div>
</div>
{{!-- Outil --}}
<div class="skill-category">
<h4>{{ localize 'VERMINE.skill_category.tool' }}</h4>
<div class="grid grid-2col">
{{#each system.skills as |skill key|}}
{{#ife skill.category "tool"}}
{{> "systems/vermine2047/templates/actor/parts/npc-skill-item.hbs" skill=skill key=key}}
{{/ife}}
{{/each}}
</div>
</div>
{{!-- Arme --}}
<div class="skill-category">
<h4>{{ localize 'VERMINE.skill_category.weapon' }}</h4>
<div class="grid grid-2col">
{{#each system.skills as |skill key|}}
{{#ife skill.category "weapon"}}
{{> "systems/vermine2047/templates/actor/parts/npc-skill-item.hbs" skill=skill key=key}}
{{/ife}}
{{/each}}
</div>
</div>
{{!-- Survie --}}
<div class="skill-category">
<h4>{{ localize 'VERMINE.skill_category.survival' }}</h4>
<div class="grid grid-2col">
{{#each system.skills as |skill key|}}
{{#ife skill.category "survival"}}
{{> "systems/vermine2047/templates/actor/parts/npc-skill-item.hbs" skill=skill key=key}}
{{/ife}}
{{/each}}
</div>
</div>
{{!-- Monde --}}
<div class="skill-category">
<h4>{{ localize 'VERMINE.skill_category.world' }}</h4>
<div class="grid grid-2col">
{{#each system.skills as |skill key|}}
{{#ife skill.category "world"}}
{{> "systems/vermine2047/templates/actor/parts/npc-skill-item.hbs" skill=skill key=key}}
{{/ife}}
{{/each}}
</div>
</div>
{{#each config.skillCategories as |category key|}}
{{#if (ne key "preferred")}}
{{> "systems/vermine2047/templates/actor/parts/npc-skill-category.hbs"
categoryKey=key
categoryLabel=(concat "VERMINE.skill_category." key)
}}
{{/if}}
{{/each}}
</div>
</div>
@@ -1,5 +1,5 @@
<!-- Character -->
<h3>Caractéristiques</h3>
{{!-- Character --}}
<h3>{{ localize 'VERMINE.abilities' }}</h3>
<div class="grid grid-4col">
{{#each config.abilityCategories as |abilityCategory ackey|}}
<div class="characteristics">
@@ -29,7 +29,7 @@
</div>
{{/each}}
</div>
<h3>Compétences</h3>
<h3>{{ localize 'VERMINE.skills' }}</h3>
<div class="grid grid-2col">
{{#each system.skill_categories as |skillCategory sckey|}}
{{#if skillCategory.label}}
@@ -1,4 +1,4 @@
<!-- HEADER -->
{{!-- HEADER --}}
<header class="char-header grid grid-2col">
<section class="char-details">
<h1 class="char-name flexrow flex-group-left w-full">
+2 -3
View File
@@ -2,8 +2,8 @@
<img class="profile-img" src="{{actor.img}}" data-edit="img"
title="{{actor.name}}" height="100" width="100" />
</div>
<div class="minor-totems ">
<div class="minor-totems">
{{!-- Totem Evolution --}}
<h3>{{localize "ITEMS.evolution"}}</h3>
<h5 class="human
{{#ifgt system.adaptation.totems.human.value system.adaptation.totems.adapted.value}}
@@ -109,4 +109,3 @@
</div>
</li>
</ul>
{{/if}}
+6 -22
View File
@@ -9,25 +9,13 @@
<h4 class="align-center">
{{smarttl "TOTEMS" system.identity.totem "name"}}
</h4>
<p style="font-size:80%;">{{smarttlk
"TOTEMS"
system.identity.totem
"description"
}}</p>
<p style="font-size:80%;">{{smarttl "TOTEMS" system.identity.totem "description"}}</p>
<div class="grid grid-2col">
<div class>
<div class="item-name"><strong>Principes</strong><br />{{smarttlk
"TOTEMS"
system.identity.totem
"instincts"
}}</div>
<div class="item-name"><strong>Principes</strong><br />{{smarttl "TOTEMS" system.identity.totem "instincts"}}</div>
</div>
<div class>
<div class="item-name"><strong>Interdits</strong><br />{{smarttlk
"TOTEMS"
system.identity.totem
"bans"
}}</div>
<div class="item-name"><strong>Interdits</strong><br />{{smarttl "TOTEMS" system.identity.totem "bans"}}</div>
</div>
</div>
</div>
@@ -39,11 +27,7 @@
{{/if}}
<!--
___________abstract Items_____________
-->
{{!-- Abstract Items --}}
<div class="grid grid-2col">
<div>
<h4>
@@ -56,7 +40,7 @@ ___________abstract Items_____________
<ol class="list-item">
{{#each abilities as |item id|}}
<li class="item flexrow" data-item-id="{{item._id}}">
<div class="item-name" class="flexrow" style="flex:4;">
<div class="item-name flexrow" style="flex:4;">
<a
class="item-control item-edit"
data-tooltip="edit">{{item.name}}</a>
@@ -95,7 +79,7 @@ ___________abstract Items_____________
<a
class="item-control item-edit"
title="Edit Item">{{item.name}}</a>
<span data-tooltip="{{compétence}}">{{item.system.skill}}</span>
<span data-tooltip="Compétence">{{item.system.skill}}</span>
</div>
<div class="item-controls flexrow">
{{#if item.system.description}}
+1 -1
View File
@@ -1,4 +1,4 @@
<!-- HEADER -->
{{!-- HEADER --}}
<header class="char-header grid grid-12col w-full" style="max-height: 110px;">
<div class="grid-span-2">
<img class="profile-img" src="{{actor.img}}" data-edit="img" width="100"
+1
View File
@@ -1,5 +1,6 @@
<div class="grid grid-2col">
{{!-- Group Identity --}}
<div>
<h4>{{ localize 'IDENTITY.profile' }}</h4>
<div class="flexrow flex-group-center">
+2 -2
View File
@@ -17,8 +17,8 @@
</div>
<a class="item-control item-edit" title="Edit Item">{{item.name}}</a>
</div>
<p><a class="item-control item-edit" title="Edit Item">{{item.system.quantity}}</a></p>
<p><a class="item-control item-edit" title="Edit Item">{{item.system.weight}}</a></p>
<div><a class="item-control item-edit" title="Edit Item">{{item.system.quantity}}</a></div>
<div><a class="item-control item-edit" title="Edit Item">{{item.system.weight}}</a></div>
<div class="item-controls">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
+3 -6
View File
@@ -19,12 +19,9 @@
</div>
<a class="item-control item-edit" title="Edit Item">{{item.name}}</a>
</div>
<p><a class="item-control item-edit"
title="Edit Item">{{item.system.mobility}}</a></p>
<p><a class="item-control item-edit"
title="Edit Item">{{item.system.rarity.value}}</a></p>
<p><a class="item-control item-edit"
title="Edit Item">{{item.system.reliability}}</a></p>
<div><a class="item-control item-edit" title="Edit Item">{{item.system.mobility}}</a></div>
<div><a class="item-control item-edit" title="Edit Item">{{item.system.rarity.value}}</a></div>
<div><a class="item-control item-edit" title="Edit Item">{{item.system.reliability}}</a></div>
<div class="item-controls">
<a class="item-control item-delete" title="Delete Item"><i
class="fas fa-trash"></i></a>
+4 -4
View File
@@ -35,10 +35,10 @@
</div>
<a title="Edit Item">{{item.name}}</a>
</div>
<p><a title="Edit Item">{{item.system.level}}</a></p>
<p><a title="Edit Item">{{item.system.mobility}}</a></p>
<p><a title="Edit Item">{{item.system.rarity.value}}</a></p>
<p><a title="Edit Item">{{item.system.reliability}}</a></p>
<div><a class="item-control item-edit" title="Edit Item">{{item.system.level}}</a></div>
<div><a class="item-control item-edit" title="Edit Item">{{item.system.mobility}}</a></div>
<div><a class="item-control item-edit" title="Edit Item">{{item.system.rarity.value}}</a></div>
<div><a class="item-control item-edit" title="Edit Item">{{item.system.reliability}}</a></div>
<div class="item-controls">
<a
class="item-control item-delete"
+11 -9
View File
@@ -48,14 +48,16 @@
{{/if}}
</div>
<p><a
class="item-control item-edit"
title="Edit Item"
>{{item.system.quantity}}</a></p>
<p><a
class="item-control item-edit"
title="Edit Item"
>{{item.system.weight}}</a></p>
<div>
<a class="item-control item-edit" title="Edit Item">
{{item.system.quantity}}
</a>
</div>
<div>
<a class="item-control item-edit" title="Edit Item">
{{item.system.weight}}
</a>
</div>
<div class="item-controls">
<a
class="item-control item-delete"
@@ -72,7 +74,7 @@
button=true owner=owner editable=editable}}
</div>
</div>
<div class="grid grid-2">
<div class="grid grid-2col">
<div class="weapons">
<h4>{{localize 'ITEMS.weapons'}}</h4>
{{> "systems/vermine2047/templates/actor/parts/actor-weapons.hbs"}}
+7 -7
View File
@@ -22,18 +22,18 @@
</div>
<a class="item-control item-roll">{{item.name}}</a>
</div>
<p><a>{{item.system.min_range}} /
{{item.system.max_range}}</a></p>
<p><a>
<div><a class="item-control item-edit" title="Edit Item">{{item.system.min_range}} /
{{item.system.max_range}}</a></div>
<div><a class="item-control item-edit" title="Edit Item">
{{#if item.system.damage.addVigor}}
vigueur+
{{/if}}
{{item.system.damage.value}}
({{item.system.damage.type}})
</a></p>
<p><a>{{item.system.ammo}}</a></p>
<p><a>{{item.system.rarity}}</a></p>
<p><a>{{item.system.reliability}}</a></p>
</a></div>
<div><a class="item-control item-edit" title="Edit Item">{{item.system.ammo}}</a></div>
<div><a class="item-control item-edit" title="Edit Item">{{item.system.rarity}}</a></div>
<div><a class="item-control item-edit" title="Edit Item">{{item.system.reliability}}</a></div>
<div class="item-controls">
<a class="item-control item-delete" title="Delete Item"><i
class="fas fa-trash"></i></a>
+32
View File
@@ -0,0 +1,32 @@
{{!-- Generic Item List Partial --}}
{{!-- Usage: --}}
{{!-- itemType - the localization key for the item type (e.g., 'ITEMS.abilities') --}}
{{!-- items - the array of items to display --}}
{{!-- createType - the data-type for creating new items --}}
{{!-- showSkill - whether to show skill association (for specialties) --}}
<h4>
<span>{{localize itemType}}</span>
<a class="item-control item-create" title="{{ localize 'UI.add' }}" data-type="{{createType}}">
<i class="fas fa-plus"></i>
</a>
</h4>
<ol class="list-item">
{{#each items as |item id|}}
<li class="item flexrow" data-item-id="{{item._id}}">
<div class="item-name" style="flex:4;">
<a class="item-control item-edit" title="{{ localize 'UI.effect_edit' }}">{{item.name}}</a>
{{#if showSkill}}
<span data-tooltip="{{ localize 'VERMINE.skill' }}">{{item.system.skill}}</span>
{{/if}}
</div>
<div class="item-controls flexrow">
{{#if item.system.description}}
<i class="fas fa-circle-question" data-tooltip="{{item.system.description}}"></i>
{{/if}}
<a class="item-control item-delete" title="{{ localize 'UI.effect_delete' }}">
<i class="fas fa-trash"></i>
</a>
</div>
</li>
{{/each}}
</ol>
@@ -0,0 +1,11 @@
{{!-- Skill Category Partial for NPC Sheet --}}
<div class="skill-category">
<h4>{{ localize categoryLabel }}</h4>
<div class="grid grid-2col">
{{#each system.skills as |skill key|}}
{{#ife skill.category categoryKey}}
{{> "systems/vermine2047/templates/actor/parts/npc-skill-item.hbs" skill=skill key=key}}
{{/ife}}
{{/each}}
</div>
</div>