Files
l5rx-chiaroscuro/system/scripts/sheets/twenty-questions-dialog.js

121 lines
2.9 KiB
JavaScript

import { L5R5E } from "../l5r5e-config.js";
/**
* L5R Twenty Questions form
* @extends {FormApplication}
*/
export class TwentyQuestionsDialog extends FormApplication {
/**
* Assign the default options
* @override
*/
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
id: "l5r5e-twenty-questions-dialog",
classes: ["l5r5e", "twenty-questions-dialog"],
template: CONFIG.L5r5e.paths.templates + "sheets/twenty-questions-dialog.html",
title: "L5R Twenty Questions", // TODO Localize
width: 600,
height: 600,
resizable: true,
});
}
/**
* Create dialog
*/
constructor(options = null) {
super(options);
}
/**
* Construct and return the data object used to render the HTML template for this form application.
* @param options
* @return {Object}
*/
getData(options = null) {
return {
...super.getData(options),
elementsList: this._getElements(),
skillsList: this._getSkills(),
};
}
/**
* Render the dialog
* @param force
* @param options
* @returns {Application}
*/
render(force, options) {
options = {
...options,
};
if (force === undefined) {
force = true;
}
return super.render(force, options);
}
/**
* Listen to html elements
* @override
*/
activateListeners(html) {
super.activateListeners(html);
// html.find('input[name="approach"]').on("click", async (event) => {});
}
/**
* This method is called upon form submission after form data is validated
* @param event The initial triggering submission event
* @param formData The object of validated form data with which to update the object
* @returns A Promise which resolves once the update operation has completed
* @override
*/
async _updateObject(event, formData) {
// const ring = formData.ring || null;
// TODO
console.log(formData);
return;
// return this.close();
}
/**
* Load elements list (id, label)
* @private
*/
_getElements() {
return CONFIG.L5r5e.stances.map((e) => {
return {
id: e,
label: game.i18n.localize(`l5r5e.rings.${e}`),
};
});
}
/**
* Load Skills list (id, cat, label)
* @private
*/
_getSkills() {
const skills = {};
Array.from(L5R5E.skills).forEach(([id, cat]) => {
if (!skills[cat]) {
skills[cat] = [];
}
skills[cat].push({
id: id,
cat: cat,
label: game.i18n.localize(`l5r5e.skills.${cat}.${id}`),
});
});
console.log(skills);
return skills;
}
}