Skip to content

Commit

Permalink
feat: adds export as json option to Layouts
Browse files Browse the repository at this point in the history
  • Loading branch information
valentine195 committed Jan 20, 2022
1 parent ce14ef3 commit a2782f9
Showing 1 changed file with 37 additions and 15 deletions.
52 changes: 37 additions & 15 deletions src/settings/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -521,11 +521,17 @@ export default class StatblockSettingTab extends PluginSettingTab {
this.buildCustomLayouts(layoutContainer);
}
getDuplicate(layout: Layout) {
if (!this.plugin.settings.layouts.find((l) => l.name == layout.name))
if (
!this.plugin.settings.layouts.find((l) => l.name == layout.name) &&
layout.name != Layout5e.name
)
return layout;
const names = this.plugin.settings.layouts
.filter((l) => l.name.contains(`${layout.name} Copy`))
.map((l) => l.name);
const names = [
Layout5e.name,
...this.plugin.settings.layouts
.filter((l) => l.name.contains(`${layout.name} Copy`))
.map((l) => l.name)
];

let temp = `${layout.name} Copy`;

Expand Down Expand Up @@ -558,17 +564,6 @@ export default class StatblockSettingTab extends PluginSettingTab {
for (const layout of this.plugin.settings.layouts) {
new Setting(layoutContainer)
.setName(layout.name)
.addExtraButton((b) => {
b.setIcon("duplicate-glyph")
.setTooltip("Create Copy")
.onClick(async () => {
this.plugin.settings.layouts.push(
this.getDuplicate(layout)
);
await this.plugin.saveSettings();
this.buildCustomLayouts(layoutContainer);
});
})
.addExtraButton((b) => {
b.setIcon("pencil")
.setTooltip("Edit")
Expand All @@ -592,6 +587,33 @@ export default class StatblockSettingTab extends PluginSettingTab {
modal.open();
});
})
.addExtraButton((b) => {
b.setIcon("duplicate-glyph")
.setTooltip("Create Copy")
.onClick(async () => {
this.plugin.settings.layouts.push(
this.getDuplicate(layout)
);
await this.plugin.saveSettings();
this.buildCustomLayouts(layoutContainer);
});
})
.addExtraButton((b) => {
b.setIcon("import-glyph")
.setTooltip("Export as JSON")
.onClick(() => {
const link = createEl("a");
const file = new Blob([JSON.stringify(layout)], {
type: "json"
});
const url = URL.createObjectURL(file);
link.href = url;
link.download = `${layout.name}.json`;
link.click();
URL.revokeObjectURL(url);
});
})

.addExtraButton((b) => {
b.setIcon("trash")
.setTooltip("Delete")
Expand Down

0 comments on commit a2782f9

Please sign in to comment.