foundry-dsa41-game/src/module/sheets/specialAbilitySheet.mjs

89 lines
2.5 KiB
JavaScript

const {DocumentSheetV2, HandlebarsApplicationMixin} = foundry.applications.api
export class SpecialAbilitySheet extends HandlebarsApplicationMixin(DocumentSheetV2) {
/** @inheritDoc */
static DEFAULT_OPTIONS = {
position: {width: 520, height: 600},
classes: ['dsa41', 'sheet', 'item', 'specialability'],
tag: 'form',
form: {
submitOnChange: true,
closeOnSubmit: false,
handler: SpecialAbilitySheet.#onSubmitForm
},
}
static TABS = {
sheet: {
tabs: [
{id: 'specialability', group: 'sheet', label: 'Sonderfertigkeit'},
],
initial: 'specialability'
}
}
/** @inheritDoc */
static PARTS = {
form: {
template: `systems/DSA_4-1/templates/item/specialability/main-sheet.hbs`
},
specialability: {
template: `systems/DSA_4-1/templates/item/specialability/tab-specialability.hbs`
},
}
_configureRenderOptions(options) {
super._configureRenderOptions(options)
if (options.window) {
options.window.title = this.document.name
}
return options
}
/**
* Handle form submission
* @this {EquipmentSheet}
* @param {SubmitEvent} event
* @param {HTMLFormElement} form
* @param {FormDataExtended} formData
*/
static async #onSubmitForm(event, form, formData) {
event.preventDefault()
await this.document.update(formData.object) // Note: formData.object
}
/** @override */
async _prepareContext(options) {
const context = await super._prepareContext(options);
const specialabilityData = context.document;
context.system = specialabilityData.system;
context.flags = specialabilityData.flags;
context.text = specialabilityData.system.text;
context.aktionsText = specialabilityData.system.aktionsText;
context.hasChoices = context.system.auswahl.length > 0;
context.choices = {}
context.value = context.system.value
context.system.auswahl.forEach(a => {
context.choices[a.name] = a.name
})
context.isActive = this.document.system.isActive()?.passes
context.mod = this.document.system.getActiveMod()?.map(mod => {
return {
name: mod.name,
value: mod.value > 0 ? "+" + mod.value : mod.value,
}
})
context.hasModality = context.system.value != null
return context;
}
}