92 lines
2.6 KiB
JavaScript
92 lines
2.6 KiB
JavaScript
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()
|
|
}
|
|
}
|
|
|