import { importSettingsFromJSON, exportSettingsToJSON } from '../scripts/settings.js';
|
|
|
|
export default class ImportExport extends FormApplication {
|
|
static get defaultOptions() {
|
|
return mergeObject(super.defaultOptions, {
|
|
id: 'token-variants-import-export',
|
|
classes: ['sheet'],
|
|
template: 'modules/token-variants/templates/importExport.html',
|
|
resizable: false,
|
|
minimizable: false,
|
|
title: 'Import/Export',
|
|
width: 250,
|
|
});
|
|
}
|
|
|
|
/**
|
|
* @param {JQuery} html
|
|
*/
|
|
activateListeners(html) {
|
|
super.activateListeners(html);
|
|
html.find('.import').click(this._importFromJSONDialog.bind(this));
|
|
html.find('.export').click(() => {
|
|
exportSettingsToJSON();
|
|
this.close();
|
|
});
|
|
}
|
|
|
|
async _importFromJSONDialog() {
|
|
const content = await renderTemplate('templates/apps/import-data.html', {
|
|
entity: 'token-variants',
|
|
name: 'settings',
|
|
});
|
|
let dialog = new Promise((resolve, reject) => {
|
|
new Dialog(
|
|
{
|
|
title: game.i18n.localize('token-variants.settings.import-export.window.import-dialog'),
|
|
content: content,
|
|
buttons: {
|
|
import: {
|
|
icon: '<i class="fas fa-file-import"></i>',
|
|
label: game.i18n.localize('token-variants.common.import'),
|
|
callback: (html) => {
|
|
const form = html.find('form')[0];
|
|
if (!form.data.files.length)
|
|
return ui.notifications?.error('You did not upload a data file!');
|
|
readTextFromFile(form.data.files[0]).then((json) => {
|
|
importSettingsFromJSON(json);
|
|
resolve(true);
|
|
});
|
|
},
|
|
},
|
|
no: {
|
|
icon: '<i class="fas fa-times"></i>',
|
|
label: 'Cancel',
|
|
callback: (html) => resolve(false),
|
|
},
|
|
},
|
|
default: 'import',
|
|
},
|
|
{
|
|
width: 400,
|
|
}
|
|
).render(true);
|
|
});
|
|
this.close();
|
|
return await dialog;
|
|
}
|
|
}
|