From 505b276f01949b4e642dd9b839786398ed564510 Mon Sep 17 00:00:00 2001 From: wise-bit Date: Mon, 31 Mar 2025 02:14:18 -0400 Subject: [PATCH 1/3] progress; dice is good, board looks okay --- src/routes/+page.svelte | 7 +- src/routes/non-trivial-pursuit/+page.svelte | 345 ++++++++++++++++++ .../{jeopardy => not-jeopardy}/+page.svelte | 0 static/favicon.png | Bin 8652 -> 11343 bytes .../trials-trivial-pursuit-sample.json | 160 ++++++++ 5 files changed, 511 insertions(+), 1 deletion(-) create mode 100644 src/routes/non-trivial-pursuit/+page.svelte rename src/routes/{jeopardy => not-jeopardy}/+page.svelte (100%) create mode 100644 static/samples/trials-trivial-pursuit-sample.json diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 20dab61..1471fc5 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -5,7 +5,12 @@ { title: 'not jeopardy', description: 'a game of not jeopardy', - link: '/jeopardy', + link: '/not-jeopardy', + }, + { + title: 'non-trivial pursuit', + description: 'a game of non trivial pursuit', + link: '/non-trivial-pursuit', }, { title: 'coming soon', diff --git a/src/routes/non-trivial-pursuit/+page.svelte b/src/routes/non-trivial-pursuit/+page.svelte new file mode 100644 index 0000000..012e436 --- /dev/null +++ b/src/routes/non-trivial-pursuit/+page.svelte @@ -0,0 +1,345 @@ + + + + +{#if false} +
+

welcome to non-trivial-pursuit

+

upload your custom game json

+
+ +
+
+ +
+
+{/if} + +{#if true} +
+
+ +
+

{boardTitle}

+
{}} + on:click={switchRoll} + > + {currentFace} +
+
+ {#if rolling} + rolling... + {:else} + Rolled a {currentFace} ! + {/if} +
+
+ + +
+
+ {#each board as row} + {#each row as cell} +
+ {cell.active ? `${cell.row},${cell.col}` : ''} +
+ {/each} + {/each} +
+
+
+ +
asd
+
+{/if} + + diff --git a/src/routes/jeopardy/+page.svelte b/src/routes/not-jeopardy/+page.svelte similarity index 100% rename from src/routes/jeopardy/+page.svelte rename to src/routes/not-jeopardy/+page.svelte diff --git a/static/favicon.png b/static/favicon.png index 5191eab5a27aa6157b3b4a25f958c5b9bcef144c..8b1892e4567e410b2092f57bf9d075c34a1b5e94 100644 GIT binary patch literal 11343 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 Tle1zj00000NkvXXu0mjfPz9<6 diff --git a/static/samples/trials-trivial-pursuit-sample.json b/static/samples/trials-trivial-pursuit-sample.json new file mode 100644 index 0000000..15c3844 --- /dev/null +++ b/static/samples/trials-trivial-pursuit-sample.json @@ -0,0 +1,160 @@ +{ + "jeopardy title": [ + { + "category1": [ + { + "points": "100", + "question": "question1", + "answer": "answer1" + }, + { + "points": "200", + "question": "question2", + "answer": "answer2" + }, + { + "points": "300", + "question": "question3", + "answer": "answer3" + }, + { + "points": "400", + "question": "question4", + "answer": "answer4" + }, + { + "points": "500", + "question": "question5", + "answer": "answer5" + } + ] + }, + { + "category2": [ + { + "points": "100", + "question": "question1", + "answer": "answer1" + }, + { + "points": "200", + "question": "question2", + "answer": "answer2" + }, + { + "points": "300", + "question": "question3", + "answer": "answer3" + }, + { + "points": "400", + "question": "question4", + "answer": "answer4" + }, + { + "points": "500", + "question": "question5", + "answer": "answer5" + } + ] + }, + { + "category3": [ + { + "points": "100", + "question": "question1", + "answer": "answer1" + }, + { + "points": "200", + "question": "question2", + "answer": "answer2" + }, + { + "points": "300", + "question": "question3", + "answer": "answer3" + }, + { + "points": "400", + "question": "question4", + "answer": "answer4" + }, + { + "points": "500", + "question": "question5", + "answer": "answer5" + } + ] + }, + { + "category4": [ + { + "points": "100", + "question": "question1", + "answer": "answer1" + }, + { + "points": "200", + "question": "question2", + "answer": "answer2" + }, + { + "points": "300", + "question": "question3", + "answer": "answer3" + }, + { + "points": "400", + "question": "question4", + "answer": "answer4" + }, + { + "points": "500", + "question": "question5", + "answer": "answer5" + } + ] + }, + { + "category5": [ + { + "points": "100", + "question": "question1", + "answer": "answer1" + }, + { + "points": "200", + "question": "question2", + "answer": "answer2" + }, + { + "points": "300", + "question": "question3", + "answer": "answer3" + }, + { + "points": "400", + "question": "question4", + "answer": "answer4" + }, + { + "points": "500", + "question": "question5", + "answer": "answer5" + } + ] + } + ], + "final-jeopardy-title-dont-change": [ + { + "default-category-dont-change": [ + { + "points": "-1-dont-change", + "question": "final question", + "answer": "final answer" + } + ] + } + ] +} From 199cbeef5449453fb94ffe9f67d48fef990256fe Mon Sep 17 00:00:00 2001 From: wise-bit Date: Tue, 1 Apr 2025 03:05:25 -0400 Subject: [PATCH 2/3] wip --- src/routes/non-trivial-pursuit/+page.svelte | 197 ++++++++++++++++---- src/routes/not-jeopardy/+page.svelte | 2 +- 2 files changed, 166 insertions(+), 33 deletions(-) diff --git a/src/routes/non-trivial-pursuit/+page.svelte b/src/routes/non-trivial-pursuit/+page.svelte index 012e436..964519f 100644 --- a/src/routes/non-trivial-pursuit/+page.svelte +++ b/src/routes/non-trivial-pursuit/+page.svelte @@ -3,6 +3,7 @@ import { onMount } from 'svelte'; interface Question { + index: number; points: string; question: string; answer: string; @@ -23,7 +24,12 @@ let categories: string[] = []; let questions: Question[][] = []; + let currentFace = 1; + let rolling = false; + let rollInterval: string | number | NodeJS.Timeout | undefined; + const defaultQuestion: Question = { + index: 0, points: '', question: '', answer: '', @@ -33,7 +39,6 @@ const selectedQuestion = writable(defaultQuestion); const showModal = writable(false); - const showFinalJeopardy = writable(false); const handleFileUpload = async (event: Event) => { const input = event.target as HTMLInputElement; @@ -51,15 +56,18 @@ (categoryObject) => Object.keys(categoryObject)[0], ); - questions = data[boardTitle].map((categoryObject) => { + questions = data[boardTitle].map((categoryObject, categoryIndex) => { const categoryName = Object.keys(categoryObject)[0]; - return categoryObject[categoryName].map((question) => ({ - points: question.points, - question: question.question, - answer: question.answer, - visited: false, - showAnswer: false, - })); + return categoryObject[categoryName].map( + (question, questionIndex) => ({ + index: categoryIndex * 100 + questionIndex + 1, + points: question.points, + question: question.question, + answer: question.answer, + visited: false, + showAnswer: false, + }), + ); }); }; @@ -70,6 +78,9 @@ const selectQuestion = (question: Question, i: number, j: number) => { selectedQuestion.set(question); questions[i][j].visited = true; + }; + + const openModal = () => { showModal.set(true); }; @@ -87,7 +98,7 @@ function downloadSample() { const a = document.createElement('a'); - a.href = 'samples/trials-jeopardy-sample.json'; + a.href = 'samples/trials-pursuit-sample.json'; a.download = 'sample.json'; document.body.appendChild(a); @@ -97,15 +108,10 @@ // dice stuff - let currentFace = 1; - let rolling = false; - let rollInterval: string | number | NodeJS.Timeout | undefined; - const rollDice = () => { if (rolling) return; rolling = true; - rollInterval = setInterval(() => { currentFace = Math.floor(Math.random() * 6) + 1; }, 100); @@ -149,7 +155,7 @@ ); - + {#if false}
@@ -178,7 +184,7 @@

{boardTitle}

+ +
+ +
@@ -214,6 +226,43 @@
{/if} +{#if $showModal} + +{/if} + diff --git a/src/routes/not-jeopardy/+page.svelte b/src/routes/not-jeopardy/+page.svelte index 56b9c9b..9baede8 100644 --- a/src/routes/not-jeopardy/+page.svelte +++ b/src/routes/not-jeopardy/+page.svelte @@ -111,7 +111,7 @@ function downloadSample() { const a = document.createElement('a'); - a.href = 'samples/trials-jeopardy-sample.json'; + a.href = 'samples/trials-not-jeopardy-sample.json'; a.download = 'sample.json'; document.body.appendChild(a); From 1949b5b759c36c80d2d3d9ca28a780cf4f342d7c Mon Sep 17 00:00:00 2001 From: wise-bit Date: Wed, 2 Apr 2025 00:58:47 -0400 Subject: [PATCH 3/3] functional categories --- src/routes/non-trivial-pursuit/+page.svelte | 267 +++++++++++------- .../trials-non-trivial-pursuit-sample.json | 136 +++++++++ 2 files changed, 305 insertions(+), 98 deletions(-) create mode 100644 src/routes/non-trivial-pursuit/trials-non-trivial-pursuit-sample.json diff --git a/src/routes/non-trivial-pursuit/+page.svelte b/src/routes/non-trivial-pursuit/+page.svelte index 964519f..4186a2f 100644 --- a/src/routes/non-trivial-pursuit/+page.svelte +++ b/src/routes/non-trivial-pursuit/+page.svelte @@ -3,38 +3,44 @@ import { onMount } from 'svelte'; interface Question { - index: number; - points: string; + points: number; question: string; - answer: string; + options: string[]; + answerKey: number; visited: boolean; - showAnswer: boolean; } interface Category { [categoryName: string]: Question[]; } - interface JeopardyData { - [boardTitle: string]: Category[]; + interface NonTrivialPursuitData { + categories: Category[]; + } + + interface InputData { + title: string; + subtitle: string; + categories: Category[]; } let fileContent: string | null = null; - let boardTitle = 'dummy-board'; - let categories: string[] = []; - let questions: Question[][] = []; + let boardTitle: string = 'dummy-board'; + let boardSubtitle: string = 'dummy-subtitle'; + let triviaData: NonTrivialPursuitData = { categories: [] }; let currentFace = 1; let rolling = false; let rollInterval: string | number | NodeJS.Timeout | undefined; + let unansweredMatrix: number[][] = []; + const defaultQuestion: Question = { - index: 0, - points: '', + points: 100, question: '', - answer: '', + options: ['', '', ''], + answerKey: 0, visited: false, - showAnswer: false, }; const selectedQuestion = writable(defaultQuestion); @@ -48,40 +54,80 @@ reader.onload = (e) => { fileContent = e.target?.result as string; - const data: JeopardyData = JSON.parse(fileContent); - - boardTitle = Object.keys(data)[0]; - - categories = data[boardTitle].map( - (categoryObject) => Object.keys(categoryObject)[0], + const data: InputData = JSON.parse(fileContent); + + boardTitle = data.title; + boardSubtitle = data.subtitle; + + triviaData = { + categories: data.categories.map((categoryObject) => + Object.fromEntries( + Object.entries(categoryObject).map( + ([categoryName, questions], _categoryIndex) => [ + categoryName, + questions.map((question, _questionIndex) => ({ + // id: (categoryIndex + 1) * 100 + questionIndex + 1, + points: question.points, + question: question.question, + options: question.options, + answerKey: question.answerKey, + visited: false, + })), + ], + ), + ), + ), + }; + + unansweredMatrix = triviaData.categories.map((category) => + Array.from( + { length: category[Object.keys(category)[0]].length }, + (_, i) => i, + ), ); - - questions = data[boardTitle].map((categoryObject, categoryIndex) => { - const categoryName = Object.keys(categoryObject)[0]; - return categoryObject[categoryName].map( - (question, questionIndex) => ({ - index: categoryIndex * 100 + questionIndex + 1, - points: question.points, - question: question.question, - answer: question.answer, - visited: false, - showAnswer: false, - }), - ); - }); }; reader.readAsText(file); } }; - const selectQuestion = (question: Question, i: number, j: number) => { + // ---------------------------------- + // TODO: remove after + import jsonFile from './trials-non-trivial-pursuit-sample.json'; + onMount(() => { + const files = [ + new File([JSON.stringify(jsonFile)], 'dummy.json', { + type: 'application/json', + lastModified: 0, + }), + ]; + const mockEvent = new Event('change', { + bubbles: true, + cancelable: true, + }); + Object.defineProperty(mockEvent, 'target', { + value: { + files, + }, + }); + handleFileUpload(mockEvent); + }); + // ---------------------------------- + + const selectQuestion = ( + question: Question, + // categoryIndex: number, + // questionIndex: number, + ) => { selectedQuestion.set(question); - questions[i][j].visited = true; }; const openModal = () => { showModal.set(true); + + // TODO: remove after + console.log(triviaData); + console.log(unansweredMatrix); }; const closeModal = () => { @@ -90,10 +136,10 @@ }; const goBack = () => { - if (false) { - return; + const confirmBack = confirm('are you sure you want to go back to home?'); + if (confirmBack) { + location.href = '/'; } - location.href = '/'; }; function downloadSample() { @@ -151,11 +197,13 @@ col === 0 || row === gridSize - 1 || col === gridSize - 1, + categoryIndex: (row * gridSize + col) % 4, })), ); - + {#if false}
@@ -182,7 +230,10 @@
-

{boardTitle}

+
+

{boardTitle}

+

{boardSubtitle}

+
{#each board as row} {#each row as cell} -
- {cell.active ? `${cell.row},${cell.col}` : ''} +
+ {cell.active ? `${cell.categoryIndex}` : ''}
{/each} {/each} @@ -242,21 +295,26 @@ on:keydown|stopPropagation > {#if $selectedQuestion} -

[{$selectedQuestion.points} points]

+

[ {$selectedQuestion.points} points ]


{$selectedQuestion.question}

- {#if $selectedQuestion.showAnswer} + + + +
- - + --> +
{/if}
@@ -289,14 +347,14 @@ .back-button { font-family: 'Pixelify Sans', 'Comic Sans MS', 'Arial', sans-serif; position: absolute; - top: 2rem; - left: 2rem; - padding: 0.5rem 1rem; + top: 32px; + left: 32px; + padding: 8px 16px; background-color: #333; color: #f9f9f9; border: none; border-radius: 8px; - font-size: 1.4rem; + font-size: 22px; cursor: pointer; transition: background-color 0.3s; } @@ -315,7 +373,7 @@ width: 70%; height: 100%; background-color: #000; - border-right: 10px solid #0a0a0a; + border-right: 16px solid #0a0a0a; } .board-container > * { border-right: none; @@ -326,17 +384,25 @@ display: flex; flex-direction: column; align-items: center; - margin-bottom: 2rem; + margin-bottom: 32px; + } + + .dice-container > h1 { + font-size: 24px; + } + + .dice-container > h2 { + font-size: 24px; } .dice { - width: 100px; - height: 100px; + width: 120px; + height: 120px; display: flex; justify-content: center; align-items: center; - margin-top: 2rem; - font-size: 4rem; + margin-top: 32px; + font-size: 84px; border: 4px solid rgb(183, 170, 170); border-radius: 4px; user-select: none; @@ -358,30 +424,30 @@ } .dice-result { - margin-top: 1rem; - font-size: 2rem; + margin-top: 16px; + font-size: 32px; } /* board */ .board { display: grid; - grid-template-columns: repeat(5, 10rem); - grid-template-rows: repeat(5, 10rem); - gap: 1rem; + grid-template-columns: repeat(5, 160px); + grid-template-rows: repeat(5, 160px); + gap: 16px; margin: 20px auto; } .cell { - width: 10rem; - height: 10rem; + width: 160px; + height: 160px; display: flex; align-items: center; justify-content: center; background-color: #000000; border: 2px solid #000000; - border-radius: 1rem; - font-size: 2rem; + border-radius: 16px; + font-size: 48px; } .cell.active { @@ -390,15 +456,32 @@ font-weight: bold; } + .cell.active.cat-0 { + background-color: #ff8888; + } + + + .cell.active.cat-1 { + background-color: #88aeff; + } + + .cell.active.cat-2 { + background-color: #ff88e1; + } + + .cell.active.cat-3 { + background-color: #ffd988; + } + .show-question-btn { font-family: 'Pixelify Sans', 'Comic Sans MS', 'Arial', sans-serif; - margin-top: 2rem; - padding: 0.5rem 1rem; + margin-top: 32px; + padding: 8px 16px; background-color: #64355b; color: #fff; - border: 0.2rem solid #391f34; - border-radius: 0.3rem; - font-size: 1.5rem; + border: 4px solid #391f34; + border-radius: 4px; + font-size: 28px; cursor: pointer; font-weight: 500; transition: transform 0.2s; @@ -410,9 +493,10 @@ flex: 1; flex-basis: 30%; width: 30%; - background-color: #242e2b; - border-left: 10px solid #101212; - padding: 2rem; + font-size: 24px; + background-color: #4e3838; + border-left: 16px solid #101212; + padding: 32px; } /* modal */ @@ -431,15 +515,15 @@ .modal { background: #1a1a1a; - padding: 2rem; - border: 0.3rem solid white; - border-radius: 0.3rem; + padding: 32px; + border: 4px solid white; + border-radius: 4px; text-align: center; align-items: center; color: #f9f9f9; max-width: 500px; width: 80%; - font-size: 2rem; + font-size: 32px; } .button-set { @@ -447,31 +531,18 @@ flex-direction: row; align-items: center; justify-content: center; - gap: 2rem; - } - - .reveal-button { - font-family: 'Pixelify Sans', 'Comic Sans MS', 'Arial', sans-serif; - margin-top: 1rem; - padding: 0.5rem 1rem; - background-color: #465e4b; - color: #fff; - border: 0.3rem solid #1b291e; - border-radius: 8px; - font-size: 1.5rem; - cursor: pointer; - font-weight: 500; + gap: 32px; } .close-button { font-family: 'Pixelify Sans', 'Comic Sans MS', 'Arial', sans-serif; - margin-top: 1rem; - padding: 0.5rem 1rem; + margin-top: 16px; + padding: 8px 16px; background-color: #845454; color: #fff; - border: 0.3rem solid #463131; - border-radius: 8px; - font-size: 1.5rem; + border: 4px solid #463131; + border-radius: 4px; + font-size: 24px; cursor: pointer; font-weight: 500; } diff --git a/src/routes/non-trivial-pursuit/trials-non-trivial-pursuit-sample.json b/src/routes/non-trivial-pursuit/trials-non-trivial-pursuit-sample.json new file mode 100644 index 0000000..9b0ec95 --- /dev/null +++ b/src/routes/non-trivial-pursuit/trials-non-trivial-pursuit-sample.json @@ -0,0 +1,136 @@ +{ + "title": "Tooling Trials 3", + "subtitle": "The Tools Strike Back!", + "categories": [ + { + "category1": [ + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + }, + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + }, + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + }, + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + }, + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + } + ] + }, + { + "category1": [ + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + }, + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + }, + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + }, + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + }, + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + } + ] + }, + { + "category1": [ + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + }, + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + }, + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + }, + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + }, + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + } + ] + }, + { + "category1": [ + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + }, + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + }, + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + }, + { + "points": 100, + "question": "question1", + "options": ["option1", "option2", "option3"], + "answerKey": 1 + } + ] + } + ] +}