|
|
- export default class FlagsConfig extends FormApplication {
- constructor(obj) {
- super({}, {});
- if (obj instanceof Tile) {
- this.objectToFlag = obj.document;
- this.isTile = true;
- } else {
- this.objectToFlag = game.actors.get(obj.document.actorId) || obj.document;
- }
- }
-
- static get defaultOptions() {
- return mergeObject(super.defaultOptions, {
- id: 'token-variants-token-flags',
- classes: ['sheet'],
- template: 'modules/token-variants/templates/flagsConfig.html',
- resizable: true,
- minimizable: false,
- title: 'Flags',
- width: 500,
- });
- }
-
- async getData(options) {
- const data = super.getData(options);
- const popups = this.objectToFlag.getFlag('token-variants', 'popups');
- const disableNameSearch = this.objectToFlag.getFlag('token-variants', 'disableNameSearch');
- const directory = this.objectToFlag.getFlag('token-variants', 'directory') || {};
-
- return mergeObject(data, {
- popups: popups,
- popupsSetFlag: popups != null,
- disableNameSearch: disableNameSearch,
- disableNameSearchSetFlag: disableNameSearch != null,
- directory: directory.path,
- directorySource: directory.source,
- directorySetFlag: !isEmpty(directory),
- tile: this.isTile,
- });
- }
-
- /**
- * @param {JQuery} html
- */
- activateListeners(html) {
- super.activateListeners(html);
- html.find('.controlFlag').click((e) => {
- $(e.target).siblings('.flag').prop('disabled', !e.target.checked);
- });
- html.find('.directory-fp').click((event) => {
- new FilePicker({
- type: 'folder',
- activeSource: 'data',
- callback: (path, fp) => {
- html.find('[name="directory"]').val(fp.result.target);
- $(event.target)
- .closest('button')
- .attr('title', 'Directory: ' + fp.result.target);
- const sourceEl = html.find('[name="directorySource"]');
- if (fp.activeSource === 's3') {
- sourceEl.val(`s3:${fp.result.bucket}`);
- } else {
- sourceEl.val(fp.activeSource);
- }
- },
- }).render(true);
- });
- }
-
- /**
- * @param {Event} event
- * @param {Object} formData
- */
- async _updateObject(event, formData) {
- if ('directory' in formData) {
- formData.directory = { path: formData.directory, source: formData.directorySource };
- }
-
- ['popups', 'disableNameSearch', 'directory'].forEach((flag) => {
- if (flag in formData) {
- this.objectToFlag.setFlag('token-variants', flag, formData[flag]);
- } else {
- this.objectToFlag.unsetFlag('token-variants', flag);
- }
- });
- }
- }
|