From 677176e0f9390c5b76db8ad924acb929966c6e90 Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Fri, 13 Jun 2025 16:12:51 +0530 Subject: [PATCH] made multi deck work! --- src/routes/flashcards/+page.svelte | 40 +++--------------------- src/routes/flashcards/editCards.svelte | 42 +++++++++++++++++--------- src/routes/flashcards/logic.svelte.js | 25 ++++++++------- 3 files changed, 47 insertions(+), 60 deletions(-) diff --git a/src/routes/flashcards/+page.svelte b/src/routes/flashcards/+page.svelte index 6ba50e1..4fd1731 100644 --- a/src/routes/flashcards/+page.svelte +++ b/src/routes/flashcards/+page.svelte @@ -3,60 +3,30 @@ import Card from "./card.svelte"; import StatsAndButtons from "./StatsAndButtons.svelte"; - import { stats, resetDeck, SetNewDeck } from "./logic.svelte.js"; + import { stats, SelectNewDeck, SetNewDeck, StorageDeck } from "./logic.svelte.js"; import { onMount } from "svelte"; import tempelateDeck from "./tempelateDeck.json"; onMount(() => { SetNewDeck(JSON.parse(localStorage.getItem("deck")) || tempelateDeck, true); }); - - let DemoDeck = [ - { - deckName: "Tech", - cards: [ - { Q: "What is Svelte?", a: "A modern JavaScript framework for building user interfaces." }, - { Q: "What is a component?", a: "A reusable piece of UI in Svelte." }, - { Q: "How do you create a reactive variable?", a: "$: variableName = value;" }, - ], - }, - { - deckName: "Math Basics", - cards: [ - { Q: "What is 2 + 2?", a: "4" }, - { Q: "What is the square root of 16?", a: "4" }, - { Q: "What is 5 * 6?", a: "30" }, - ], - }, - { - deckName: "Geography", - cards: [ - { Q: "What is the capital of France?", a: "Paris" }, - { Q: "Which continent is Egypt in?", a: "Africa" }, - { Q: "What is the largest ocean?", a: "Pacific Ocean" }, - ], - }, - ];
{#if stats.isDeckEmpty}
-

Choose a Deck To lean from!

+

Choose a Deck To learn from!

diff --git a/src/routes/flashcards/editCards.svelte b/src/routes/flashcards/editCards.svelte index 9830e5e..8a73dfc 100644 --- a/src/routes/flashcards/editCards.svelte +++ b/src/routes/flashcards/editCards.svelte @@ -1,24 +1,38 @@
+
+ + +
+
Question Answer - +
- {#each LocalDeck as card, i} + + {#each deck[CurrentlyEditingDeckId].cards as card, i}
@@ -26,20 +40,20 @@ aria-label="delete" onclick={() => { if (confirm("Are you sure you want to delete this card?")) { - LocalDeck.splice(i, 1); - toast.success("Card deleted successfully! To make it apply, please save the deck."); + deck[CurrentlyEditingDeckId].cards.splice(i, 1); } }} - class="btn dull"> + +
{/each}
diff --git a/src/routes/flashcards/logic.svelte.js b/src/routes/flashcards/logic.svelte.js index 132b9ba..3fbb82f 100644 --- a/src/routes/flashcards/logic.svelte.js +++ b/src/routes/flashcards/logic.svelte.js @@ -8,38 +8,41 @@ export let statusOfCard = $state({ entering: false, }); -export let deck = [ - { Q: "Best programer in the world?", a: "RezHackXYZ" }, - { Q: "Best coding community?", a: "HackClub" }, - { Q: "Will @Shub go totally bankrupt?", a: "yes!" }, -]; +export let StorageDeck = $state({ v: [] }); -export function SetNewDeck(newDeck, ThisIsOfPageLoad = false) { - deck = newDeck; +export let deck = $state({ v: [] }); + +export function SetNewDeck(newDeck, ThisIsOfPageLoad = true) { + StorageDeck.v = newDeck; resetDeck(); stats.isDeckEmpty = ThisIsOfPageLoad; } +export function SelectNewDeck(deckNumber) { + deck.v = StorageDeck.v[deckNumber].cards; + resetDeck(); +} + export let stats = $state({ isDeckEmpty: true, AnswerKnown: 0, AnswerNotKnown: 0, - AnswerNotChecked: deck.length, + AnswerNotChecked: deck.v.length, }); let CurrentDeck = { AnswersKnown: [], AnswersNotKnown: [], - AnswersNotChecked: $state.snapshot(deck), + AnswersNotChecked: $state.snapshot(deck).v, }; export function resetDeck() { CurrentDeck.AnswersKnown = []; CurrentDeck.AnswersNotKnown = []; - CurrentDeck.AnswersNotChecked = $state.snapshot(deck); + CurrentDeck.AnswersNotChecked = $state.snapshot(deck).v; stats.AnswerKnown = 0; stats.AnswerNotKnown = 0; - stats.AnswerNotChecked = deck.length; + stats.AnswerNotChecked = deck.v.length; stats.isDeckEmpty = false; SetNewCard(); }