Migration vers datamodels

This commit is contained in:
2026-02-25 15:49:55 +01:00
parent 64eb40abfb
commit f1ab04bf32
95 changed files with 7418 additions and 593 deletions

View File

@@ -0,0 +1,57 @@
<section class="tab sheet-body {{tab.cssClass}}" data-tab="biodata" data-group="primary">
<div class="grid grid-2col">
<div>
<ul class="item-list alternate-list">
<li class="item flexrow">
<label class="item-name-label-medium">{{localize "ECRY.ui.bornplace"}}</label>
<input type="text" name="system.biodata.lieunaissance" value="{{system.biodata.lieunaissance}}" />
</li>
<li class="item flexrow">
<label class="item-name-label-medium">{{localize "ECRY.ui.age"}}</label>
<input type="text" name="system.biodata.age" value="{{system.biodata.age}}" />
</li>
<li class="item flexrow">
<label class="item-name-label-medium">{{localize "ECRY.ui.profession"}}</label>
<input type="text" name="system.biodata.profession" value="{{system.biodata.profession}}" />
</li>
</ul>
</div>
<div>
<ul>
<li class="item flexrow">
<label class="item-name-label-medium">{{localize "ECRY.ui.residence"}}</label>
<input type="text" name="system.biodata.residence" value="{{system.biodata.residence}}" />
</li>
<li class="item flexrow">
<label class="item-name-label-medium">{{localize "ECRY.ui.origin"}}</label>
<input type="text" name="system.biodata.nationalite" value="{{system.biodata.nationalite}}" />
</li>
<li class="item flexrow">
<label class="item-name-label-medium">{{localize "ECRY.ui.childhood"}}</label>
<input type="text" name="system.biodata.enfance" value="{{system.biodata.enfance}}" />
</li>
</ul>
</div>
</div>
<hr>
<span class="item-name-label-header items-title-bg">
<h3><label class="items-title-text">{{localize "ECRY.ui.background"}}</label></h3>
</span>
<div class="form-group editor">
{{formInput systemFields.biodata.fields.description enriched=enrichedDescription
value=system.biodata.description name="system.biodata.description" toggled=true}}
</div>
<hr>
<span class="item-name-label-header items-title-bg">
<h3><label class="items-title-text">{{localize "ECRY.ui.gmnotes"}}</label></h3>
</span>
<div class="form-group editor">
{{formInput systemFields.biodata.fields.gmnotes enriched=enrichedGmnotes
value=system.biodata.gmnotes name="system.biodata.gmnotes" toggled=true}}
</div>
<hr>
</section>

View File

@@ -0,0 +1,42 @@
<section class="tab sheet-body {{tab.cssClass}}" data-tab="cephaly" data-group="primary">
<div class="grid grid-2col">
<div>
<h3>{{localize "ECRY.ui.cephaly"}}</h3>
<ul class="stat-list alternate-list item-list">
{{#each cephalySkills as |skill skillkey|}}
<li class="item flexrow list-item">
<span class="item-name-label-long">
<a data-action="rollCephaly" data-skill-key="{{skillkey}}">
<i class="fa-solid fa-dice-d6"></i>
{{localize skill.name}}
</a>
</span>
<select class="item-field-label-short"
name="system.cephaly.skilllist.{{skillkey}}.value">
{{selectOptions @root.config.skillLevel selected=skill.value}}
</select>
</li>
{{/each}}
</ul>
</div>
<div>
{{#if annency.id}}
<h3>{{localize "ECRY.ui.annency"}} :
<a data-action="openAnnency" data-annency-id="{{annency.id}}">
{{annency.name}}<i class="fas fa-edit"></i>
</a>
</h3>
<ul class="stat-list alternate-list item-list">
<li class="item flexrow list-item">
<span class="item-name-label-long">{{annency.system.base.description}}</span>
</li>
</ul>
{{/if}}
</div>
</div>
</section>

View File

@@ -0,0 +1,68 @@
<section class="tab sheet-body {{tab.cssClass}}" data-tab="combat" data-group="primary">
{{!-- Impacts --}}
<div class="flexrow">
{{> systems/fvtt-ecryme/templates/actors/partial-impacts.hbs
impacts=system.impacts.physical impacttype="physical" impactMalus=impactsMalus.physical}}
{{> systems/fvtt-ecryme/templates/actors/partial-impacts.hbs
impacts=system.impacts.mental impacttype="mental" impactMalus=impactsMalus.mental}}
{{> systems/fvtt-ecryme/templates/actors/partial-impacts.hbs
impacts=system.impacts.social impacttype="social" impactMalus=impactsMalus.social}}
</div>
{{!-- Weapons --}}
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long2">
<h3><label class="item-name-label-header-long2">{{localize "ECRY.ui.weapons"}}</label></h3>
</span>
<span class="item-field-label-medium">
<label>{{localize "ECRY.ui.type"}}</label>
</span>
<span class="item-field-label-medium">
<label>{{localize "ECRY.ui.effect"}}</label>
</span>
</li>
{{#each weapons as |weapon key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{weapon._id}}">
<a data-action="itemEdit" data-item-id="{{weapon._id}}" class="item-name-img" title="{{localize 'ECRY.ui.edit'}}">
<img class="sheet-competence-img" src="{{weapon.img}}" />
</a>
<span class="item-name-label-long2">
<a data-action="rollWeaponConfront" data-item-id="{{weapon._id}}">
<i class="fa-regular fa-swords"></i>
{{weapon.name}}
</a>
</span>
<span class="item-field-label-medium">{{localize (concat "ECRY.ui." weapon.system.weapontype)}}</span>
<span class="item-field-label-medium">{{weapon.system.effect}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a data-action="itemDelete" data-item-id="{{weapon._id}}" title="{{localize 'ECRY.ui.delete'}}"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
{{!-- Maneuvers --}}
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long2">
<h3><label class="item-name-label-header-long2">{{localize "ECRY.ui.maneuvers"}}</label></h3>
</span>
</li>
{{#each maneuvers as |maneuver key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{maneuver._id}}">
<a data-action="itemEdit" data-item-id="{{maneuver._id}}" class="item-name-img" title="{{localize 'ECRY.ui.edit'}}">
<img class="sheet-competence-img" src="{{maneuver.img}}" />
</a>
<span class="item-name-label-long2">{{maneuver.name}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a data-action="itemDelete" data-item-id="{{maneuver._id}}" title="{{localize 'ECRY.ui.delete'}}"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</section>

View File

@@ -0,0 +1,40 @@
<section class="tab sheet-body {{tab.cssClass}}" data-tab="equipements" data-group="primary">
{{!-- Free equipment (plain text area) --}}
<span class="item-name-label-header items-title-bg">
<h3><label class="items-title-text">{{localize "ECRY.ui.equipmentfree"}}</label></h3>
</span>
<div class="form-group small-editor">
<textarea name="system.equipmentfree" rows="4">{{system.equipmentfree}}</textarea>
</div>
{{!-- Equipment list --}}
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">{{localize "ECRY.ui.equipment"}}s</label></h3>
</span>
<span class="item-field-label-medium">
<label>{{localize "ECRY.ui.weight"}}</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a data-action="itemCreate" data-type="equipment" title="{{localize 'ECRY.ui.create'}}"><i class="fas fa-plus"></i></a>
</div>
</li>
{{#each equipments as |equip key|}}
<li class="item list-item flexrow list-item-shadow" data-item-id="{{equip._id}}">
<a data-action="itemEdit" data-item-id="{{equip._id}}" class="item-name-img" title="{{localize 'ECRY.ui.edit'}}">
<img class="sheet-competence-img" src="{{equip.img}}" />
</a>
<span class="item-name-label">{{equip.name}}</span>
<span class="item-field-label-medium">{{equip.system.weight}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a data-action="itemDelete" data-item-id="{{equip._id}}" title="{{localize 'ECRY.ui.delete'}}"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</section>

View File

@@ -0,0 +1,70 @@
<section class="tab sheet-body {{tab.cssClass}}" data-tab="skills" data-group="primary">
<div class="grid grid-3col">
{{#each skills as |category categkey|}}
<div>
<ul class="stat-list alternate-list item-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header impact-title">
<h3>
{{#if (eq @root.type "npc")}}
<a data-action="rollSkillConfront" data-category-key="{{categkey}}" data-skill-key="rawnpc">
<i class="fa-regular fa-swords"></i>
</a>
<a data-action="rollSkill" data-category-key="{{categkey}}" data-skill-key="rawnpc">
<i class="fa-solid fa-dice-d6"></i>
{{/if}}
<label class="items-title-text">{{localize category.name}} ({{valueAtIndex @root.impactsMalus categkey}})</label>
{{#if (eq @root.type "npc")}}
</a>
<select class="item-field-label-short-header"
name="system.skills.{{categkey}}.pnjvalue">
{{selectOptions @root.config.skillLevel selected=category.pnjvalue}}
</select>
{{/if}}
</h3>
</span>
</li>
{{#each category.skilllist as |skill skillkey|}}
<li class="item flexrow list-item">
<span class="item-name-label-long">
<a data-action="rollSkillConfront" data-category-key="{{categkey}}" data-skill-key="{{skillkey}}">
<i class="fa-regular fa-swords"></i>
</a>
<a data-action="rollSkill" data-category-key="{{categkey}}" data-skill-key="{{skillkey}}">
<i class="fa-solid fa-dice-d6"></i>
{{localize skill.name}}
</a>
</span>
<select class="item-field-label-short"
name="system.skills.{{categkey}}.skilllist.{{skillkey}}.value">
{{selectOptions @root.config.skillLevel selected=skill.value}}
</select>
</li>
<li class="item flexrow list-item">
<ul class="ul-level1">
{{#each skill.spec as |spec idx|}}
<li class="item flexrow list-item" data-item-id="{{spec._id}}" data-item-type="specialization">
<a data-action="rollSpec" data-category-key="{{categkey}}" data-skill-key="{{skillkey}}" data-spec-id="{{spec._id}}">
<i class="fa-solid fa-dice-d6"></i>
{{spec.name}}
</a>
<div class="item-controls item-controls-fixed">
<a data-action="itemEdit" data-item-id="{{spec._id}}" title="{{localize 'ECRY.ui.edit'}}"><i class="fas fa-edit"></i></a>
<a data-action="itemDelete" data-item-id="{{spec._id}}" title="{{localize 'ECRY.ui.delete'}}"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</li>
{{/each}}
</ul>
</div>
{{/each}}
</div>
</section>

View File

@@ -0,0 +1,30 @@
<section class="tab sheet-body {{tab.cssClass}}" data-tab="traits" data-group="primary">
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long2">
<h3><label class="item-name-label-header-long2">{{localize "ECRY.ui.traits"}}</label></h3>
</span>
<span class="item-field-label-short">
<label>{{localize "ECRY.ui.level"}}</label>
</span>
<div class="item-controls item-controls-fixed">
<a data-action="itemCreate" data-type="trait" title="{{localize 'ECRY.ui.create'}}"><i class="fas fa-plus"></i></a>
</div>
</li>
{{#each traits as |trait key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{trait._id}}">
<a data-action="itemEdit" data-item-id="{{trait._id}}" class="item-name-img" title="{{localize 'ECRY.ui.edit'}}">
<img class="sheet-competence-img" src="{{trait.img}}" />
</a>
<span class="item-name-label-long2">{{trait.name}}</span>
<span class="item-field-label-short"><label>{{trait.system.level}}</label></span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a data-action="itemDelete" data-item-id="{{trait._id}}" title="{{localize 'ECRY.ui.delete'}}"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</section>

View File

@@ -0,0 +1,50 @@
<section class="tab sheet-body {{tab.cssClass}}" data-tab="annency" data-group="primary">
<div class="grid grid-2col">
<div>
<h3>{{localize "ECRY.ui.annency"}}</h3>
<ul class="stat-list alternate-list item-list">
<li class="item flexrow list-item">
<span class="item-name-label-short">{{localize "ECRY.ui.iscollective"}}</span>
<input type="checkbox" name="system.base.iscollective" {{checked system.base.iscollective}} />
<span class="item-name-label-short">{{localize "ECRY.ui.ismultiple"}}</span>
<input type="checkbox" name="system.base.ismultiple" {{checked system.base.ismultiple}} />
</li>
</ul>
<h3>{{localize "ECRY.ui.characters"}}</h3>
<ul class="stat-list alternate-list item-list">
{{#each characters as |character id|}}
<li class="item flexrow" data-actor-id="{{character.id}}">
<img class="item-name-img" src="{{character.img}}" />
<span class="item-name-label">{{character.name}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a data-action="actorEdit" title="{{localize 'ECRY.ui.edit'}}"><i class="fas fa-edit"></i></a>
<a data-action="actorDelete" title="{{localize 'ECRY.ui.delete'}}"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
<div>
<h3>{{localize "ECRY.ui.location"}}</h3>
<ul class="stat-list alternate-list item-list">
{{#each system.base.location as |location index|}}
<li class="item flexrow list-item">
<span class="item-name-label-medium">{{localize "ECRY.ui.location"}} {{index}}</span>
<textarea rows="3" name="system.base.location.{{index}}">{{location}}</textarea>
</li>
{{/each}}
<li class="item flexrow list-item">
<span class="item-name-label-medium">{{localize "ECRY.ui.enhancements"}}</span>
<textarea rows="3" name="system.base.enhancements">{{system.base.enhancements}}</textarea>
</li>
</ul>
</div>
</div>
</section>

View File

@@ -0,0 +1,23 @@
<section class="tab sheet-body {{tab.cssClass}}" data-tab="boheme" data-group="primary">
<h3>{{localize "ECRY.ui.oniricform"}}</h3>
<ul class="stat-list alternate-list item-list">
<li class="item flexrow list-item">
<span class="item-name-label-medium">{{localize "ECRY.ui.name"}}</span>
<input type="text" name="system.boheme.name" value="{{system.boheme.name}}" />
</li>
<li class="item flexrow list-item">
<span class="item-name-label-medium">{{localize "ECRY.ui.ideals"}}</span>
<input type="text" name="system.boheme.ideals" value="{{system.boheme.ideals}}" />
</li>
<li class="item flexrow list-item">
<span class="item-name-label-medium">{{localize "ECRY.ui.politic"}}</span>
<input type="text" name="system.boheme.politic" value="{{system.boheme.politic}}" />
</li>
<li class="item flexrow list-item">
<span class="item-name-label-medium">{{localize "ECRY.ui.description"}}</span>
<textarea rows="3" name="system.boheme.description">{{system.boheme.description}}</textarea>
</li>
</ul>
</section>

View File

@@ -8,9 +8,9 @@
{{#each impacts as |value key|}}
<li class="flexrow" data-impact-type="{{../impacttype}}">
<span class="item-field-label-medium"><label>{{localize (concat "ECRY.ui." key)}}</label></span>
<a class="impact-modify" data-impact-modifier="+1" data-impact-type="{{../impacttype}}" data-impact-level="{{key}}"><i class="fas fa-plus-square"></i></a>
<a data-action="impactModify" data-impact-modifier="+1" data-impact-type="{{../impacttype}}" data-impact-level="{{key}}"><i class="fas fa-plus-square"></i></a>
<span class="">{{value}}</span>
<a class="impact-modify" data-impact-modifier="-1" data-impact-type="{{../impacttype}}" data-impact-level="{{key}}"><i class="fas fa-minus-square"></i></a>
<a data-action="impactModify" data-impact-modifier="-1" data-impact-type="{{../impacttype}}" data-impact-level="{{key}}"><i class="fas fa-minus-square"></i></a>
</li>
{{/each}}
</ul>

View File

@@ -0,0 +1,51 @@
<header class="sheet-header flexrow">
<img class="profile-img" src="{{img}}" data-action="editImage" data-edit="img" title="{{name}}" />
<div class="header-fields flexcol">
<h1 class="charname">
<input name="name" type="text" value="{{name}}" placeholder="Name" />
</h1>
{{#if (eq type "annency")}}
{{!-- Annency header: description --}}
<div class="flexrow">
<label class="item-name-label-medium">{{localize "ECRY.ui.description"}} :</label>
<textarea rows="3" name="system.base.description">{{system.base.description}}</textarea>
</div>
{{else}}
{{!-- PC/NPC header: spleen, ideal, traits (rows always visible, controls conditional on item existence) --}}
<div class="flexrow actor-header-traits">
<ul>
<li class="flexrow item" data-item-id="{{spleen._id}}">
<label class="item-field-label-short">{{localize "ECRY.ui.spleen"}} :</label>
<label class="item-name-label-long">{{spleen.name}}</label>
<div class="item-filler">&nbsp;</div>
{{#if spleen}}
<div class="item-controls item-controls-fixed">
<a data-action="itemEdit" data-item-id="{{spleen._id}}" title="{{localize 'ECRY.ui.edit'}}"><i class="fas fa-edit"></i></a>
<a data-action="itemDelete" data-item-id="{{spleen._id}}" title="{{localize 'ECRY.ui.delete'}}"><i class="fas fa-trash"></i></a>
</div>
{{/if}}
</li>
<li class="item flexrow" data-item-id="{{ideal._id}}">
<label class="item-field-label-short">{{localize "ECRY.ui.ideal"}} :</label>
<label class="item-name-label-long">{{ideal.name}}</label>
<div class="item-filler">&nbsp;</div>
{{#if ideal}}
<div class="item-controls item-controls-fixed">
<a data-action="itemEdit" data-item-id="{{ideal._id}}" title="{{localize 'ECRY.ui.edit'}}"><i class="fas fa-edit"></i></a>
<a data-action="itemDelete" data-item-id="{{ideal._id}}" title="{{localize 'ECRY.ui.delete'}}"><i class="fas fa-trash"></i></a>
</div>
{{/if}}
</li>
<li class="item flexrow flexrow-no-expand flexrow-start">
<label class="item-name-label-short">{{localize "ECRY.ui.traits"}} :</label>
{{#each traits as |trait key|}}
<label class="item-name-label-free">
<a data-action="itemEdit" data-item-id="{{trait._id}}">{{trait.name}}</a>{{#unless @last}},&nbsp;{{/unless}}
</label>
{{/each}}
</li>
</ul>
</div>
{{/if}}
</div>
</header>