diff --git a/src/App.svelte b/src/App.svelte index 729aae4..ca63c52 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -2,8 +2,27 @@ import Card from './Card.svelte'; import CardInput from './CardInput.svelte'; + import { writable } from 'svelte/store'; import LZString from 'lz-string'; + const NO_CARD_MAGIC_STRING = "---"; + let saved_cards = {}; + let saved_cards_keys = [NO_CARD_MAGIC_STRING]; + let selected_saved_card = NO_CARD_MAGIC_STRING; + const saved_cards_store = writable(JSON.parse(localStorage.getItem("saved_cards")) || {} ); + saved_cards_store.subscribe(v => { + if (Object.keys(v).length > 0) { + saved_cards = v; + saved_cards_keys = Object.keys(v).sort(); + } else { + saved_cards = {}; + saved_cards_keys = [NO_CARD_MAGIC_STRING] + } + selected_saved_card = saved_cards_keys[0]; + }) + saved_cards_store.update(n => n); // Dummy update + saved_cards_store.subscribe((value) => localStorage.setItem("saved_cards", JSON.stringify(value))); + const MAX_CARDS = 9; let cards = []; let mhp = { @@ -66,12 +85,44 @@ } } } + + function save_card() { + saved_cards_store.update(n => { + let to_save = {}; + for (let key in selected_card) { + if (key !== "id") { + to_save[key] = selected_card[key]; + } + } + n[to_save["name"]] = to_save; + return n; + }); + } + + function load_card() { + if (selected_saved_card !== NO_CARD_MAGIC_STRING) { + let new_card = saved_cards[selected_saved_card]; + selected_card.name = new_card.name; + selected_card.type = new_card.type; + selected_card.tags = new_card.tags; + selected_card.attributes = new_card.attributes; + selected_card.description = new_card.description; + cards = cards; + } + } + + function delete_card() { + saved_cards_store.update(n => { + delete n[selected_saved_card]; + return n; + }) + }

PF2e card generator

- +
{#each pages as page}
diff --git a/src/CardInput.svelte b/src/CardInput.svelte index f9f0887..0942a9a 100644 --- a/src/CardInput.svelte +++ b/src/CardInput.svelte @@ -42,7 +42,7 @@ }, }; - export let name, type, tags, attributes, description; + export let name, type, tags, attributes, description, saved_cards, selected_saved_card; const dispatch = createEventDispatcher(); @@ -76,8 +76,18 @@
Description:
+
+ +
+ + +