mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-03-07 14:36:13 +01:00
101 lines
3.9 KiB
JavaScript
101 lines
3.9 KiB
JavaScript
export default class DhRollTableSheet extends foundry.applications.sheets.RollTableSheet {
|
|
static DEFAULT_OPTIONS = {
|
|
...super.DEFAULT_OPTIONS,
|
|
classes:['daggerheart', 'sheet', 'dh-style'],
|
|
actions: {
|
|
addAltFormula: DhRollTableSheet.#onAddAltFormula,
|
|
removeAltFormula: DhRollTableSheet.#onRemoveAltFormula
|
|
}
|
|
};
|
|
|
|
static buildParts() {
|
|
const { footer, ...parts } = super.PARTS;
|
|
const test = {
|
|
...parts,
|
|
summary: { template: 'systems/daggerheart/templates/sheets/rollTable/summary.hbs' },
|
|
footer
|
|
};
|
|
return test;
|
|
}
|
|
|
|
static PARTS = DhRollTableSheet.buildParts();
|
|
|
|
async _preparePartContext(partId, context, options) {
|
|
context = await super._preparePartContext(partId, context, options);
|
|
|
|
switch (partId) {
|
|
case 'summary':
|
|
context.flagFields = this.daggerheartFlag.schema.fields;
|
|
context.flagData = this.daggerheartFlag;
|
|
const formulas =[];
|
|
formulas.push({
|
|
index: 0,
|
|
key: this.daggerheartFlag.formulaName, //Stored in flags as discussed
|
|
formula: context.source.formula, //Settinng default formula as part of first element
|
|
formulaInputName: "formula",
|
|
keyInputName: "flags.daggerheart.formulaName"
|
|
});
|
|
this.daggerheartFlag.altFormula.forEach((alt,i) =>{
|
|
formulas.push({
|
|
index: i+1,
|
|
key: alt.key,
|
|
formula: alt.formula,
|
|
formulaInputName:`flags.daggerheart.altFormula.${i}.formula`,
|
|
keyInputName: `flags.daggerheart.altFormula.${i}.key`
|
|
});
|
|
});
|
|
context.formulaList=formulas;
|
|
context.isListView=formulas.length>1; //Condition to show list view only if more than one entry
|
|
break;
|
|
}
|
|
|
|
return context;
|
|
}
|
|
|
|
async _preRender(context, options) {
|
|
await super._preRender(context, options);
|
|
|
|
if (!options.internalReferesh)
|
|
this.daggerheartFlag = new game.system.api.data.DhRollTable(this.document.flags.daggerheart);
|
|
}
|
|
|
|
/** @override */
|
|
async _processSubmitData(event, form, submitData, options) {
|
|
//submitData.flags.daggerheart = this.daggerheartFlag.toObject(); caused render headaches
|
|
|
|
super._processSubmitData(event, form, submitData, options);
|
|
}
|
|
|
|
static async #onAddAltFormula(_event, target) {
|
|
const currentAltFormula=this.daggerheartFlag.altFormula;
|
|
await this.daggerheartFlag.updateSource({
|
|
altFormula:[...currentAltFormula,{key:"",formula:""}]
|
|
});
|
|
this.render({ internalRefresh: true });
|
|
}
|
|
|
|
static async #onRemoveAltFormula(_event, target) {
|
|
const visualIndex = parseInt(target.dataset.index);
|
|
const currentAltFormula=this.daggerheartFlag.altFormula;
|
|
if(visualIndex===0) {//If deleting formula at [0] index
|
|
if(currentAltFormula.length>0) {
|
|
const newCore = currentAltFormula[0];
|
|
const newAlt = currentAltFormula.slice(1);
|
|
await this.document.update({formula: newCore.formula});
|
|
await this.daggerheartFlag.updateSource({
|
|
formulaName:newCore.key,
|
|
altFormula:newAlt
|
|
});
|
|
} else {
|
|
await this.document.update({ formula: "" });
|
|
await this.daggerheartFlag.updateSource({ formulaName: "" });
|
|
}
|
|
} else {
|
|
const arrayIndex = visualIndex - 1;
|
|
await this.daggerheartFlag.updateSource({
|
|
altFormula: currentAltFormula.filter((_, i) => i !== arrayIndex)
|
|
});
|
|
}
|
|
this.render({ internalRefresh: true });
|
|
}
|
|
}
|