Files
roll20-character-sheets/5eShaped/precompiled/scripts/ImportData.js
T

63 lines
1.8 KiB
JavaScript

/* global on:false, generateRowID:false */
import { Initialize } from './Initialize';
const initialize = new Initialize();
import { getSetItems } from './utilities';
export class ImportData {
import() {
getSetItems('importData.import', {
collectionArray: ['import_data', 'version'],
callback: (v, finalSetAttrs) => {
if (v.import_data) {
const importObject = JSON.parse(v.import_data);
if (importObject.npc) {
if (!v.version) {
initialize.sheetOpened();
}
for (const prop in importObject.npc) {
if (importObject.npc.hasOwnProperty(prop)) {
finalSetAttrs[prop] = importObject.npc[prop];
}
}
}
if (importObject.spells) {
importObject.spells.forEach(spell => {
const repeatingString = `repeating_spell_${generateRowID()}_`;
for (const prop in spell) {
if (spell.hasOwnProperty(prop)) {
finalSetAttrs[`${repeatingString}${prop}`] = spell[prop];
}
}
});
}
finalSetAttrs.import_data = '';
finalSetAttrs.import_data_present = 'off';
}
},
});
}
delete() {
getSetItems('importData.delete', {
collectionArray: ['import_data', 'version'],
callback: (v, finalSetAttrs) => {
const importObject = JSON.parse(v.import_data);
if (importObject.npc && !v.version) {
initialize.sheetOpened(); // NPC import will have wiped all the existing attributes
}
finalSetAttrs.import_data = '';
finalSetAttrs.import_data_present = 'off';
},
});
}
setup() {
on('change:accept_import', () => {
this.import();
});
on('change:reject_import', () => {
this.delete();
});
}
}