Arborescence de conteneurs

Les conteneurs sont maintenant précédés d'une icone:
* pour ouvrir:  '+'
* pour fermer: '-'
* si vide: carré vide
This commit is contained in:
Vincent Vandemeulebrouck 2022-08-26 22:23:04 +02:00
parent 82115ed8d7
commit 4b1862fa48
4 changed files with 54 additions and 30 deletions

View File

@ -465,34 +465,32 @@ export class RdDUtility {
/** Construit la structure récursive des conteneurs, avec imbrication potentielle /** Construit la structure récursive des conteneurs, avec imbrication potentielle
* *
*/ */
static buildConteneur(objet, niveau) { static buildConteneur(objet, profondeur) {
if (!niveau) niveau = 1; if (!profondeur) profondeur = 1;
objet.niveau = niveau; objet.niveau = profondeur;
//console.log("OBJ:", objet); const isConteneur = objet.type == 'conteneur';
let str = Handlebars.partials['systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-conteneur.html']({ item: objet }); const isOuvert = isConteneur && this.getAfficheContenu(objet._id);
if (objet.type == 'conteneur') { const isVide = isConteneur && Misc.templateData(objet).contenu.length == 0;
const afficherContenu = this.getAfficheContenu(objet._id); const conteneur = Handlebars.partials['systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-conteneur.html']({
str = str + RdDUtility.buildContenu(objet, niveau, afficherContenu); item: objet,
} vide: isVide,
return str; ouvert: isOuvert
});
const contenu = isConteneur ? RdDUtility.buildContenu(objet, profondeur, isOuvert) : '';
return conteneur + contenu;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static buildContenu(objet, niveau, afficherContenu) { static buildContenu(objet, profondeur, afficherContenu) {
if (!niveau) niveau = 1; if (!profondeur) profondeur = 1;
objet.niveau = niveau; objet.niveau = profondeur;
let strContenu = ""; const display = afficherContenu ? 'item-display-show' : 'item-display-hide';
//console.log("ITEM DISPLAYED", objet ); //console.log("ITEM DISPLAYED", objet );
if (afficherContenu) { let strContenu = `<ul class='item-list alterne-list ${display} list-item-margin${profondeur}'>`;
strContenu = "<ul class='item-list alterne-list item-display-show list-item-margin" + niveau + "'>";
} else {
strContenu = "<ul class='item-list alterne-list item-display-hide list-item-margin" + niveau + "'>";
}
for (let subItem of objet.subItems) { for (let subItem of objet.subItems) {
strContenu = strContenu + this.buildConteneur(subItem, niveau + 1); strContenu += this.buildConteneur(subItem, profondeur + 1);
} }
strContenu = strContenu + "</ul>"; return strContenu + "</ul>";
return strContenu;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */

View File

@ -806,16 +806,22 @@ ul, li {
} }
.list-item-margin1 { .list-item-margin1 {
margin-left: 1rem; margin-left: 0.5rem;
} }
.list-item-margin2 { .list-item-margin2 {
margin-left: 2rem; margin-left: 1rem;
} }
.list-item-margin3 { .list-item-margin3 {
margin-left: 3rem; margin-left: 1.5rem;
} }
.list-item-margin4 { .list-item-margin4 {
margin-left: 4rem; margin-left: 2rem;
}
.list-item-margin5 {
margin-left: 2.5rem;
}
.list-item-margin6 {
margin-left: 3rem;
} }
.sheet-competence-img { .sheet-competence-img {

View File

@ -1,9 +1,28 @@
<li class="item flexrow list-item" data-item-id="{{item._id}}" draggable="true"> <li class="item flexrow list-item" data-item-id="{{item._id}}" draggable="true">
<img class="sheet-competence-img" src="{{item.img}}" title="{{item.name}}"/>
{{#if (eq item.type 'conteneur')}} {{#if (eq item.type 'conteneur')}}
<span class="item-name conteneur-name flex-grow"><a data-item-id="{{item._id}}">+{{item.name}}</a></span> <span class="sheet-competence-img conteneur-name">
{{#if vide}}
<i class="far fa-square"></i>
{{else}} {{else}}
<a data-item-id="{{item._id}}">
{{#if ouvert}}
<i class="far fa-minus-square"></i>
<!-- <i class="far fa-caret-square-down"></i> -->
{{else}}
<i class="far fa-plus-square"></i>
<!-- <i class="fas fa-caret-square-right"></i> -->
{{/if}}
</a>
{{/if}}
</span>
<span class="item-name conteneur-name flex-grow">
<a data-item-id="{{item._id}}">
<img class="sheet-competence-img" src="{{item.img}}" title="{{item.name}}"/>
{{item.name}}
</a>
</span>
{{else}}
<img class="sheet-competence-img" src="{{item.img}}" title="{{item.name}}"/>
<span class="item-name flex-grow">{{item.name}}</span> <span class="item-name flex-grow">{{item.name}}</span>
{{/if}} {{/if}}
<span class="item-quantite">{{item.data.quantite}} <span class="item-quantite">{{item.data.quantite}}
@ -30,3 +49,4 @@
{{/if}} {{/if}}
</div> </div>
</li> </li>

View File

@ -690,7 +690,7 @@
{{#each objets as |item id|}} {{#each objets as |item id|}}
{{#unless item.estContenu}} {{#unless item.estContenu}}
{{#if (ne item.type 'conteneur')}} {{#if (ne item.type 'conteneur')}}
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-conteneur.html" item=item }} {{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-conteneur.html" item=item vide=true ouvert=true }}
{{/if}} {{/if}}
{{/unless}} {{/unless}}
{{/each}} {{/each}}