import { SYSTEM_RDD } from "../constants.js" import { Misc } from "../misc.js" export const EXPORT_CSV_SCRIPTARIUM = 'export-csv-scriptarium' const OPTIONS_AVANCEES = [ { group: 'Menus', name: EXPORT_CSV_SCRIPTARIUM, descr: "Proposer le menu d'export csv Scriptarium" }, ] export class OptionsAvancees extends FormApplication { static init() { for (const regle of OPTIONS_AVANCEES) { const name = regle.name const id = OptionsAvancees._getId(name) game.settings.register(SYSTEM_RDD, id, { name: id, scope: regle.scope ?? "world", config: false, default: regle.default == undefined ? true : regle.default, type: Boolean }) } game.settings.registerMenu(SYSTEM_RDD, "rdd-options-avancees", { name: "Configurer les options avancées", label: "Options avancées", hint: "Ouvre la fenêtre de configuration des options avancées", icon: "fas fa-bars", type: OptionsAvancees }) } constructor(...args) { super(...args) } static _getId(name) { return `rdd-advanced-${name}` } static get defaultOptions() { return foundry.utils.mergeObject(super.defaultOptions, { id: "options-avancees", template: "systems/foundryvtt-reve-de-dragon/templates/settings/options-avancees.hbs", height: 650, width: 550, minimizable: false, closeOnSubmit: true, title: "Options avancées" }, { inplace: false }) } getData() { let formData = super.getData() const regles = OPTIONS_AVANCEES.filter(it => game.user.isGM || it.scope == "client") .map(it => { it = foundry.utils.duplicate(it) it.id = OptionsAvancees._getId(it.name) it.active = OptionsAvancees.isSet(it.name) return it }) formData.regles = regles formData.groups = Misc.classify(regles, it => it.group) return formData } static getSettingKey(name){ return `${SYSTEM_RDD}.${this._getId(name)}` } static isUsing(name) { return OptionsAvancees.isSet(name) } static isSet(name) { return game.settings.get(SYSTEM_RDD, OptionsAvancees._getId(name)) } static set(name, value) { return game.settings.set(SYSTEM_RDD, OptionsAvancees._getId(name), value ? true : false) } activateListeners(html) { html.find(".select-option").click((event) => { if (event.currentTarget.attributes.name) { let id = event.currentTarget.attributes.name.value let isChecked = event.currentTarget.checked game.settings.set(SYSTEM_RDD, id, isChecked) } }) } async _updateObject(event, formData) { this.close() } }