diff --git a/.gitignore b/.gitignore index d13731a..2ceba41 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ packs/*/* *.lock jsconfig.json foundry +.history/ diff --git a/REVISION_COMPLETE.md b/REVISION_COMPLETE.md new file mode 100644 index 0000000..aa0f206 --- /dev/null +++ b/REVISION_COMPLETE.md @@ -0,0 +1,203 @@ +# Révision Complète des Templates Acteurs Vermine2047 + +## 📅 Date: 2026-06-04 + +## 🎯 Objectif +Réviser fichiers par fichier les templates des acteurs pour identifier et corriger les duplications et incohérences, comme demandé par l'utilisateur. + +--- + +## ✅ Corrections Effectuées + +### 1. **Corrections de Structure CSS** +- ✅ `templates/actor/parts/actor-items.hbs:77` - `grid grid-2` → `grid grid-2col` + +### 2. **Corrections des Balises HTML** +Toutes les balises `
` mal utilisées dans les listes d'items ont été remplacées par ` ` corrigées
+- ✅ `templates/actor/parts/actor-defenses.hbs:38-41` - 4 balises ` ` corrigées
+- ✅ `templates/actor/group/group-items.hbs:20-21` - 2 balises ` ` corrigées
+- ✅ `templates/actor/group/group-vehicles.hbs:22-27` - 3 balises ` ` corrigées
+
+**Impact**: Meilleure sémantique HTML et cohérence avec le reste du codebase.
+
+### 3. **Corrections de Fautes de Frappe**
+- ✅ `templates/actor/character/character-totem.hbs:12-16,19-23,26-30` - `smarttlk` → `smarttl` (3 occurrences)
+- ✅ `templates/actor/character/character-totem.hbs:98` - `{{compétence}}` → `"Compétence"` (tooltip)
+
+### 4. **Corrections de Classes CSS Dupliquées**
+- ✅ `templates/actor/character/character-totem.hbs:59` - `class="item-name" class="flexrow"` → `class="item-name flexrow"`
+
+### 5. **Corrections de Commentaires HTML**
+Tous les commentaires HTML standard `` ont été convertis en commentaires Handlebars `{{!-- --}}` :
+
+- ✅ `templates/actor/character/character-features.hbs:1`
+- ✅ `templates/actor/character/character-header.hbs:1`
+- ✅ `templates/actor/group/group-header.hbs:1`
+- ✅ `templates/actor/character/character-totem.hbs:30-34` - Commentaire multi-lignes simplifié
+- ✅ `templates/actor/character/character-id.hbs:5` - Ajout de commentaire
+
+### 6. **Uniformisation des Localisations**
+- ✅ `templates/actor/character/character-features.hbs:2` - `Caractéristiques` → `{{ localize 'VERMINE.abilities' }}`
+- ✅ `templates/actor/character/character-features.hbs:32` - `Compétences` → `{{ localize 'VERMINE.skills' }}`
+
+### 7. **Suppression des Balises Orphelines**
+- ✅ `templates/actor/character/character-id.hbs:112` - Suppression de `{{/if}}` orphelin
+
+### 8. **Optimisation des Structures Dupliquées**
+
+#### a) Création de Partial pour les Catégories de Compétences NPC
+- ✅ **Nouveau fichier**: `templates/actor/parts/npc-skill-category.hbs`
+ - Partial réutilisable pour afficher une catégorie de compétences
+ - Accepte `categoryKey` et `categoryLabel` comme paramètres
+- ✅ **Modification**: `templates/actor/actor-npc-sheet.hbs:227-297`
+ - Remplacement de ~150 lignes de code dupliqué par une boucle Handlebars
+ - Utilisation du nouveau partial pour les 6 catégories (Homme, Animal, Outil, Arme, Survie, Monde)
+ - **Réduction**: ~145 lignes de code
+
+#### b) Création de Partial Générique pour les Listes d'Items
+- ✅ **Nouveau fichier**: `templates/actor/parts/item-list.hbs`
+ - Partial générique et réutilisable pour afficher des listes d'items
+ - Prend en charge: itemType, items, createType, showSkill
+ - Peut être utilisé pour standardiser l'affichage des listes dans character-totem.hbs et group-info.hbs
+
+### 9. **Correction d'Erreur JavaScript**
+- ✅ `module/system/roll.mjs:365-424` - Correction de l'erreur `html.find(...).forEach is not a function`
+ - Problème: La fonction `chatListenners` recevait un objet jQuery ou un élément DOM, et `html.find()` échouait si `html` était un élément DOM natif
+ - Solution: Ajout de `const $html = $(html);` au début de la fonction
+ - Remplacement de toutes les occurrences de `html.` par `$html.` dans la fonction
+ - **Impact**: La fonction gère maintenant correctement les deux types d'entrée (jQuery object ou DOM element)
+
+---
+
+## 📁 Fichiers Modifiés
+
+### Templates Principaux (4)
+1. `templates/actor/actor-character-sheet.hbs` - OK
+2. `templates/actor/actor-npc-sheet.hbs` - ✅ Optimisé
+3. `templates/actor/actor-creature-sheet.hbs` - OK
+4. `templates/actor/actor-group-sheet.hbs` - OK
+
+### Partials Character (6)
+1. `templates/actor/character/character-features.hbs` - ✅ Corrigé
+2. `templates/actor/character/character-header.hbs` - ✅ Corrigé
+3. `templates/actor/character/character-id.hbs` - ✅ Corrigé
+4. `templates/actor/character/character-stories.hbs` - OK
+5. `templates/actor/character/character-totem.hbs` - ✅ Corrigé (multiples corrections)
+6. `templates/actor/character/character-combat.hbs` - OK (à optimiser)
+
+### Partials Parts (7)
+1. `templates/actor/parts/actor-items.hbs` - ✅ Corrigé
+2. `templates/actor/parts/actor-weapons.hbs` - ✅ Corrigé
+3. `templates/actor/parts/actor-defenses.hbs` - ✅ Corrigé
+4. `templates/actor/parts/actor-effects.hbs` - OK
+5. `templates/actor/parts/npc-skill-item.hbs` - OK
+6. `templates/actor/parts/npc-skill-category.hbs` - ✅ **NOUVEAU**
+7. `templates/actor/parts/item-list.hbs` - ✅ **NOUVEAU**
+
+### Partials Group (5)
+1. `templates/actor/group/group-header.hbs` - ✅ Corrigé
+2. `templates/actor/group/group-info.hbs` - ✅ Corrigé
+3. `templates/actor/group/group-items.hbs` - ✅ Corrigé
+4. `templates/actor/group/group-vehicles.hbs` - ✅ Corrigé
+5. `templates/actor/group/group-experience.hbs` - OK
+
+### JavaScript (2)
+1. `module/system/roll.mjs` - ✅ Correction de l'erreur html.find().forEach
+2. `module/system/hooks.mjs` - OK (pas de modification nécessaire)
+
+### Nouveaux Fichiers Créés (2)
+1. `templates/actor/parts/npc-skill-category.hbs`
+2. `templates/actor/parts/item-list.hbs`
+
+---
+
+## 📊 Statistiques
+
+- **Fichiers analysés**: 24 templates + 2 fichiers JS
+- **Fichiers modifiés**: 16 fichiers
+- **Nouveaux fichiers créés**: 3 (2 partials + 1 rapport)
+- **Duplications supprimées**: 1 majeure (catégories de compétences NPC)
+- **Lignes de code réduites**: ~150+ lignes
+- **Problèmes corrigés**: 20+
+- **Partials créés**: 2
+
+---
+
+## 🔍 Problèmes Restants à Résoudre
+
+### 1. **Duplication des Sections de Blessures**
+Les templates suivants ont des implémentations similaires pour les blessures :
+- `templates/actor/character/character-combat.hbs` (lignes 108-199)
+- `templates/actor/npc/npc-combat.hbs` (lignes 23-47)
+- `templates/actor/creature/creature-combat.hbs` (lignes 34-66)
+
+**Solution recommandée**: Créer un partial `templates/actor/parts/wounds-section.hbs` pour standardiser l'affichage des blessures (minor, major, deadly).
+
+### 2. **Utilisation du Partial item-list.hbs**
+Le partial `item-list.hbs` a été créé mais n'est pas encore utilisé. Il pourrait remplacer les duplications dans :
+- `templates/actor/character/character-totem.hbs` (5 listes: abilities, specialties, backgrounds, traumas, evolutions)
+- `templates/actor/group/group-info.hbs` (5 listes identiques)
+- `templates/actor/group/group-experience.hbs` (1 liste)
+
+**Impact potentiel**: Réduction de ~200+ lignes de code dupliqué.
+
+### 3. **Erreurs JavaScript Restantes**
+Les erreurs suivantes n'ont pas encore été investiguées :
+- `vermine2047.mjs:83` - `Cannot read properties of undefined (reading 'Actor')` - Problème de timing avec `game.system.template.Actor`
+- `actor.mjs:89` - `Cannot read properties of undefined (reading 'difficulty')` - Problème dans `prepareCombatStatus`
+
+---
+
+## 📝 Rapport Complet
+
+Un rapport détaillé a été créé : `REVISION_TEMPLATES_RAPPORT.md`
+
+---
+
+## 🎯 Résumé des Actions
+
+### ✅ Terminées
+1. Correction de toutes les incohérences de syntaxe HTML/CSS
+2. Suppression des duplications évidentes (catégories de compétences NPC)
+3. Correction des fautes de frappe et erreurs de syntaxe
+4. Uniformisation des commentaires et localisations
+5. Correction de l'erreur JavaScript `html.find(...).forEach`
+6. Création de 2 nouveaux partials réutilisables
+
+### ⏳ Recommandations pour la Suite
+1. Créer un partial pour les blessures (`wounds-section.hbs`)
+2. Appliquer le partial `item-list.hbs` dans les templates existants
+3. Investiguer et corriger les erreurs JavaScript restantes
+4. Tester tous les templates dans FoundryVTT
+
+---
+
+## 💡 Améliorations Apportées
+
+### Maintenabilité
+- **Réduction de la duplication**: ~150 lignes supprimées grâce aux partials
+- **Meilleure organisation**: 2 nouveaux partials créés pour une meilleure réutilisation
+- **Cohérence accrue**: Uniformisation des commentaires et des balises
+
+### Robustesse
+- **Correction d'erreurs**: 1 erreur JavaScript critique corrigée
+- **Meilleure sémantique HTML**: Remplacement des balises ` ` inappropriées
+- **Suppression de balises orphelines**: Élimination de `{{/if}}` sans correspondant
+
+### Internationalisation
+- **Localisations ajoutées**: 2 titres maintenant localisés
+- **Préparation pour traduction**: Structure plus propre pour les traductions futures
+
+---
+
+## 📌 Conclusion
+
+Cette révision a permis de :
+1. **Corriger** les erreurs de syntaxe et d'incohérence dans les templates
+2. **Optimiser** le code en supprimant les duplications évidentes
+3. **Améliorer** la maintenabilité avec de nouveaux partials
+4. **Stabiliser** le code JavaScript en corrigant une erreur critique
+
+Le travail peut être considéré comme **complet pour la phase 1** (nettoyage et correction). La phase 2 (optimisation avancée) consiste à créer des partials supplémentaires pour les sections de blessures et à appliquer le partial `item-list.hbs` dans les templates existants.
diff --git a/REVISION_TEMPLATES_RAPPORT.md b/REVISION_TEMPLATES_RAPPORT.md
new file mode 100644
index 0000000..4ac4566
--- /dev/null
+++ b/REVISION_TEMPLATES_RAPPORT.md
@@ -0,0 +1,175 @@
+# Rapport de Révision des Templates Acteurs Vermine2047
+
+## Date: 2026-06-04
+
+## Objectif
+Réviser fichiers par fichier les templates des acteurs pour identifier et corriger les duplications et incohérences.
+
+## Problèmes Initiaux Identifiés
+
+### 1. Erreurs JavaScript
+Les erreurs initiales reportées incluaient:
+- `ENOENT: no such file or directory, open '/.../templates/item/partials/damages.html'` → Fichier existe en `.hbs`
+- `Cannot read properties of undefined (reading 'Actor')` → Problème dans vermine2047.mjs:123
+- `html.find(...).forEach is not a function` → Problème dans roll.mjs:373
+- `Cannot read properties of undefined (reading 'difficulty')` → Problème dans actor.mjs:89
+- `ActiveEffect application phase "initial" has already completed` → Problème de cycle de vie
+
+### 2. Duplications dans les Templates
+
+#### a) Duplication des catégories de compétences NPC (actor-npc-sheet.hbs)
+**Problème**: 6 catégories de compétences (Homme, Animal, Outil, Arme, Survie, Monde) avec la même structure HTML dupliquée.
+
+**Solution**:
+- Créé un nouveau partial: `templates/actor/parts/npc-skill-category.hbs`
+- Remplacé la section dupliquée (lignes 227-297) par une boucle Handlebars
+- Utilisation: `{{> "systems/vermine2047/templates/actor/parts/npc-skill-category.hbs" categoryKey=key categoryLabel=(concat "VERMINE.skill_category." key)}}`
+
+**Réduction**: ~150 lignes → ~5 lignes
+
+#### b) Duplication de la structure des blessures
+**Fichiers concernés**:
+- `character-combat.hbs` (lignes 108-199)
+- `npc-combat.hbs` (lignes 23-47)
+- `creature-combat.hbs` (lignes 34-66)
+
+**Problème**: Chaque template de combat a sa propre implémentation des radio buttons pour les blessures.
+
+**Solution recommandée**: Créer un partial `wounds-section.hbs` (à implémenter)
+
+#### c) Duplication des listes d'items
+**Fichiers concernés**:
+- `character-totem.hbs` (abilities, specialties, backgrounds, traumas, evolutions)
+- `group-info.hbs` (abilities, specialties, backgrounds, traumas, evolutions)
+- `group-experience.hbs` (group abilities)
+
+**Solution**:
+- Créé un partial générique: `templates/actor/parts/item-list.hbs`
+- Peut être utilisé pour standardiser l'affichage des listes d'items
+
+## Corrections Effectuées
+
+### 1. Corrections de Classes CSS
+- ✅ `actor-items.hbs:77`: `grid grid-2` → `grid grid-2col`
+
+### 2. Corrections des Balises HTML
+- ✅ `actor-weapons.hbs:25-36`: Remplacement des `