advancements now with tabs

This commit is contained in:
Vlyan
2020-12-31 12:18:25 +01:00
parent c9b60c1333
commit 267c77c78b
10 changed files with 67 additions and 30 deletions

View File

@@ -263,6 +263,7 @@
"title": "Advancements", "title": "Advancements",
"title_new": "New advancement", "title_new": "New advancement",
"school_rank": "School rank", "school_rank": "School rank",
"school_rank_0": "Bg",
"total": "Total", "total": "Total",
"cost": "Cost", "cost": "Cost",
"spent": "Used", "spent": "Used",

View File

@@ -263,6 +263,7 @@
"title": "Advancements", "title": "Advancements",
"title_new": "New advancement", "title_new": "New advancement",
"school_rank": "School rank", "school_rank": "School rank",
"school_rank_0": "Bg",
"total": "Total", "total": "Total",
"cost": "Cost", "cost": "Cost",
"spent": "Usada", "spent": "Usada",

View File

@@ -263,6 +263,7 @@
"title": "Progressions", "title": "Progressions",
"title_new": "Nouvelle progression", "title_new": "Nouvelle progression",
"school_rank": "Rang d'école", "school_rank": "Rang d'école",
"school_rank_0": "Bg",
"total": "Totale", "total": "Totale",
"cost": "Coût", "cost": "Coût",
"spent": "Dépensée", "spent": "Dépensée",

View File

@@ -11,7 +11,7 @@ export class BaseSheetL5r5e extends ActorSheet {
// template: CONFIG.l5r5e.paths.templates + "actors/character-sheet.html", // template: CONFIG.l5r5e.paths.templates + "actors/character-sheet.html",
width: 600, width: 600,
height: 800, height: 800,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }], tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "skills" }],
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }], dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
}); });
} }
@@ -162,7 +162,7 @@ export class BaseSheetL5r5e extends ActorSheet {
tgt.hasClass("toggle-active") ? tgt.removeClass("toggle-active") : tgt.addClass("toggle-active"); tgt.hasClass("toggle-active") ? tgt.removeClass("toggle-active") : tgt.addClass("toggle-active");
}); });
// *** Items : add, edit, delete, curriculum *** // *** Items : add, edit, delete ***
html.find(".item-add").on("click", (event) => { html.find(".item-add").on("click", (event) => {
this._addSubItem(event); this._addSubItem(event);
}); });
@@ -172,21 +172,6 @@ export class BaseSheetL5r5e extends ActorSheet {
html.find(`.item-delete`).on("click", (event) => { html.find(`.item-delete`).on("click", (event) => {
this._deleteSubItem(event); this._deleteSubItem(event);
}); });
html.find(`.item-curriculum`).on("click", (event) => {
this._switchSubItemCurriculum(event);
});
html.find(`button[name=validate-curriculum]`).on("click", (event) => {
this.actor.data.data.identity.school_rank = this.actor.data.data.identity.school_rank + 1;
// Update actor
this.actor.update({
data: {
identity: {
school_rank: this.actor.data.data.identity.school_rank,
},
},
});
this.render(false);
});
} }
/** /**

View File

@@ -9,6 +9,10 @@ export class CharacterSheetL5r5e extends BaseSheetL5r5e {
return mergeObject(super.defaultOptions, { return mergeObject(super.defaultOptions, {
classes: ["l5r5e", "sheet", "actor"], classes: ["l5r5e", "sheet", "actor"],
template: CONFIG.l5r5e.paths.templates + "actors/character-sheet.html", template: CONFIG.l5r5e.paths.templates + "actors/character-sheet.html",
tabs: [
{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "skills" },
{ navSelector: ".advancements-tabs", contentSelector: ".advancements-body", initial: "last" },
],
}); });
} }
@@ -57,6 +61,42 @@ export class CharacterSheetL5r5e extends BaseSheetL5r5e {
return sheetData; return sheetData;
} }
/**
* Subscribe to events from the sheet.
* @param html HTML content of the sheet.
*/
activateListeners(html) {
super.activateListeners(html);
// *** Everything below here is only needed if the sheet is editable ***
if (!this.options.editable) {
return;
}
// *** Items : curriculum management ***
html.find(`.item-curriculum`).on("click", (event) => {
this._switchSubItemCurriculum(event);
});
html.find(`button[name=validate-curriculum]`).on("click", (event) => {
this.actor.data.data.identity.school_rank = this.actor.data.data.identity.school_rank + 1;
// Update actor
this.actor.update({
data: {
identity: {
school_rank: this.actor.data.data.identity.school_rank,
},
},
});
this.render(false);
});
// Advancements Tab to current rank onload
// TODO class "Active" Bug on load, dunno why :/
this._tabs
.find((e) => e._navSelector === ".advancements-tabs")
.activate("advancement_rank_" + (this.actor.data.data.identity.school_rank || 0));
}
/** /**
* Return the total xp spent and the current total xp spent for this rank * Return the total xp spent and the current total xp spent for this rank
*/ */
@@ -77,10 +117,6 @@ export class CharacterSheetL5r5e extends BaseSheetL5r5e {
} }
const rank = Math.max(0, item.data.bought_at_rank); const rank = Math.max(0, item.data.bought_at_rank);
if (rank < 1) {
// Ignore starting comp/items
return;
}
if (!adv[rank]) { if (!adv[rank]) {
adv[rank] = { adv[rank] = {
rank: rank, rank: rank,

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,7 @@
// -- Nav // -- Nav
nav { nav {
&.sheet-tabs { &.sheet-tabs,
&.advancements-tabs {
height: 3rem; height: 3rem;
line-height: 3rem; line-height: 3rem;
font-family: $font-tertiary; font-family: $font-tertiary;

View File

@@ -39,6 +39,9 @@
box-shadow: none; box-shadow: none;
} }
} }
.advancements-tab {
min-width: 60px;
}
} }
&.item, &.item,
.technique, .technique,

View File

@@ -1,4 +1,4 @@
<tr class="flexrow row advancement"> <tr data-group="advancements" data-tab="advancement_rank_{{rank}}" class="flexrow row advancement tab">
<td class="curriculum" name="curriculum">{{#if advancement.data.in_curriculum}}<i class="fas fa-graduation-cap"></i> {{/if}}</td> <td class="curriculum" name="curriculum">{{#if advancement.data.in_curriculum}}<i class="fas fa-graduation-cap"></i> {{/if}}</td>
<td class="name" name="advancement.name"><img src="{{ advancement.img }}" title="{{ advancement.name }}"> {{ advancement.name }}</td> <td class="name" name="advancement.name"><img src="{{ advancement.img }}" title="{{ advancement.name }}"> {{ advancement.name }}</td>
<td class="xp" name="advancement.xp">{{ advancement.data.xp_used }}</td> <td class="xp" name="advancement.xp">{{ advancement.data.xp_used }}</td>

View File

@@ -13,8 +13,16 @@
<input class="centered-input select-on-focus" type="number" name="data.xp_saved" value="{{ data.xp_saved }}" data-dtype="Number" min="0" placeholder="0" disabled/> <input class="centered-input select-on-focus" type="number" name="data.xp_saved" value="{{ data.xp_saved }}" data-dtype="Number" min="0" placeholder="0" disabled/>
</label> </label>
</fieldset> </fieldset>
<fieldset class="advancement"> <fieldset class="advancement advancements-body">
<legend class="tools">{{ localize 'l5r5e.advancements.title'}} <a data-item-type="advancement" class="advancement-control item-add" title="{{ localize 'l5r5e.global.add'}}"><i class="fas fa-plus"></i></a></legend> <legend class="tools">{{ localize 'l5r5e.advancements.title'}} <a data-item-type="advancement" class="advancement-control item-add" title="{{ localize 'l5r5e.global.add'}}"><i class="fas fa-plus"></i></a></legend>
<nav class="advancements-tabs tabs" data-group="advancements">
<a class="item advancements-tab" data-tab="advancement_rank_0">{{localize 'l5r5e.advancements.school_rank_0'}}</a>
{{#each advancementsListByRank as |rankObject|}}
{{#ifCond rank '>' 0}}
<a class="item advancements-tab" data-tab="advancement_rank_{{rank}}" title="{{localize 'l5r5e.advancements.school_rank'}} {{rankObject.rank}}">{{rankObject.rank}}</a>
{{/ifCond}}
{{/each}}
</nav>
<table> <table>
<thead class="flex"> <thead class="flex">
<tr class="flexrow row"> <tr class="flexrow row">
@@ -29,19 +37,19 @@
</thead> </thead>
<tbody class="flex"> <tbody class="flex">
{{#each advancementsListByRank as |rankObject|}} {{#each advancementsListByRank as |rankObject|}}
<tr class="flexrow row">
<th>{{localize 'l5r5e.advancements.school_rank'}} {{rankObject.rank}}</th>
</tr>
{{#each rankObject.list as |advancement advancementId|}} {{#each rankObject.list as |advancement advancementId|}}
{{> 'systems/l5r5e/templates/actors/character/advancement.html' advancement=advancement editable=../../editable }} {{> 'systems/l5r5e/templates/actors/character/advancement.html' advancement=advancement rank=rankObject.rank editable=../../editable }}
{{/each}} {{/each}}
<tr class="flexrow row"> {{#ifCond rankObject.rank '>' 0}}
<tr data-group="advancements" data-tab="advancement_rank_{{rankObject.rank}}" class="flexrow row tab">
<th class=""> <th class="">
{{#ifCond ../data.identity.school_rank '<' 6}}
{{#ifCond (ifCond ../data.identity.school_rank '==' rankObject.rank) '&&' (ifCond rankObject.spent '>=' rankObject.goal)}} {{#ifCond (ifCond ../data.identity.school_rank '==' rankObject.rank) '&&' (ifCond rankObject.spent '>=' rankObject.goal)}}
<button type="button" name="validate-curriculum"> <button type="button" name="validate-curriculum">
<i class='fas fa-check-square'></i> {{ localize 'l5r5e.advancements.curriculum_validate' }} <i class='fas fa-check-square'></i> {{ localize 'l5r5e.advancements.curriculum_validate' }}
</button> </button>
{{/ifCond}} {{/ifCond}}
{{/ifCond}}
</th> </th>
<th class=""> <th class="">
{{ localize 'l5r5e.advancements.total_xp_rank' }} : {{ localize 'l5r5e.advancements.total_xp_rank' }} :
@@ -49,6 +57,7 @@
{{#if rankObject.goal}}/{{rankObject.goal}}{{/if}} {{#if rankObject.goal}}/{{rankObject.goal}}{{/if}}
</th> </th>
</tr> </tr>
{{/ifCond}}
{{/each}} {{/each}}
</tbody> </tbody>
</table> </table>