Skip to content

Commit

Permalink
Merge pull request #2 from Gornius/dev
Browse files Browse the repository at this point in the history
Update
  • Loading branch information
Gornius authored Jan 20, 2024
2 parents 8ffe7b7 + 14f35d3 commit 998e92a
Show file tree
Hide file tree
Showing 11 changed files with 351 additions and 35 deletions.
2 changes: 1 addition & 1 deletion assets/css/tailwind.css
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
--primary: 262.1 83.3% 57.8%;
--primary-foreground: 210 20% 98%;

--secondary: 220 14.3% 95.9%;
--secondary: 100 14.3% 95.9%;
--secondary-foreground: 220.9 39.3% 11%;

--muted: 220 14.3% 95.9%;
Expand Down
237 changes: 237 additions & 0 deletions assets/regularVerbs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,237 @@
words:
Ir:
Participio:
all: ido
Indicativo Pretérito Perfecto:
p1: he ido
p2: has ido
p3: ha ido
m1: hemos ido
m2: habéis ido
m3: han ido
Indicativo Pretérito Plusquamperfecto:
p1: había ido
p2: habías ido
p3: había ido
m1: habíamos ido
m2: habíais ido
m3: habían ido
Indicativo Futuro:
p1: iré
p2: irás
p3: irá
m1: iremos
m2: iréis
m3: irán
Indicativo Futuro Perfecto:
p1: habré ido
p2: habrás ido
p3: habrá ido
m1: habremos ido
m2: habréis ido
m3: habrán ido
Condicional:
p1: iría
p2: irías
p3: iría
m1: iríamos
m2: irías
m3: irían
Subjuntivo Pretérito Plusquamperfecto:
p1: hubiera ido
p2: hubieras ido
p3: hubiera ido
m1: hubiéramos ido
m2: hubierais ido
m3: hubieran ido
Poner:
Gerundio:
all: poniendo
Indicativo Pretérito Imperfecto:
p1: ponía
p2: ponías
p3: ponía
m1: poníamos
m2: poníais
m3: ponían
Tener:
Gerundio:
all: teniendo
Participio:
all: tenido
Indicativo Pretérito Perfecto:
p1: he tenido
p2: has tenido
p3: ha tenido tenido
m1: hemos tenido
m2: habéis tenido
m3: han tenido
Indicativo Pretérito Imperfecto:
p1: tennía
p2: tenías
p3: tenía
m1: teníamos
m2: teníais
m3: tenían
Indicativo Pretérito Plusquamperfecto:
p1: había tenido
p2: habías tenido
p3: había tenido
m1: habíamos tenido
m2: habíais tenido
m3: habían tenido
Indicativo Futuro Perfecto:
p1: habré tenido
p2: habrás tenido
p3: habrá tenido
m1: habremos tenido
m2: habréis tenido
m3: habrán tenido
Subjuntivo Pretérito Plusquamperfecto:
p1: hubiera tenido
p2: hubieras tenido
p3: hubiera tenido
m1: hubiéramos tenido
m2: hubierais tenido
m3: hubieran tenido
Ser:
Gerundio:
all: siendo
Participio:
all: sido
Indicativo Pretérito Perfecto:
p1: he sido
p2: has sido
p3: ha sido
m1: hemos sido
m2: habéis sido
m3: han sido
Indicativo Pretérito Plusquamperfecto:
p1: había sido
p2: habías sido
p3: había sido
m1: habíamos sido
m2: habíais sido
m3: habían sido
Indicativo Futuro:
p1: seré
p2: serás
p3: será
m1: seremos
m2: seréis
m3: serán
Indicativo Futuro Perfecto:
p1: habré sido
p2: habrás sido
p3: habrá sido
m1: habremos sido
m2: habréis sido
m3: habrán sido
Condicional:
p1: sería
p2: serías
p3: sería
m1: seríamos
m2: seríais
m3: serían
Subjuntivo Pretérito Plusquamperfecto:
p1: hubiera sido
p2: hubieras sido
p3: hubiera sido
m1: hubiéramos sido
m2: hubierais sido
m3: hubieran sido
Estar:
Gerundio:
all: estando
Participio:
all: estado
Indicativo Pretérito Perfecto:
p1: he estado
p2: has estado
p3: ha estado
m1: hemos estado
m2: habéis estado
m3: han estado
Indicativo Pretérito Imperfecto:
p1: estaba
p2: estabas
p3: estaba
m1: estábamos
m2: estabais
m3: estaban
Indicativo Pretérito Plusquamperfecto:
p1: había estado
p2: habías estado
p3: había estado
m1: habíamos estado
m2: habíais estado
m3: habían estado
Indicativo Futuro:
p1: estaré
p2: estarás
p3: estará
m1: estaremos
m2: estaréis
m3: estarán
Indicativo Futuro Perfecto:
p1: habré estado
p2: habrás estado
p3: habrá estado
m1: habremos estado
m2: habréis estado
m3: habrán estado
Condicional:
p1: estaría
p2: estarías
p3: estaría
m1: estaríamos
m2: estaríais
m3: estarían
Subjuntivo Pretérito Plusquamperfecto:
p1: hubiera estado
p2: hubieras estado
p3: hubiera estado
m1: hubiéramos estado
m2: hubierais estado
m3: hubieran estado
Saber:
Gerundio:
all: sabiendo
Participio:
all: sabido
Indicativo Pretérito Perfecto:
p1: he sabido
p2: has sabido
p3: ha sabido
m1: hemos sabido
m2: habéis sabido
m3: han sabido
Indicativo Pretérito Imperfecto:
p1: sabía
p2: sabías
p3: sabía
m1: sabíamos
m2: sabíais
m3: sabían
Indicativo Pretérito Plusquamperfecto:
p1: había sabido
p2: habías sabido
p3: había sabido
m1: habíamos sabido
m2: habíais sabido
m3: habían sabido
Indicativo Futuro Perfecto:
p1: habré sabido
p2: habrás sabido
p3: habrá sabido
m1: habremos sabido
m2: habréis sabido
m3: habrán sabido
Subjuntivo Pretérito Plusquamperfecto:
p1: hubiera sabido
p2: hubieras sabido
p3: hubiera sabido
m1: hubiéramos sabido
m2: hubierais sabido
m3: hubieran sabido
8 changes: 6 additions & 2 deletions components/View/ViewQuiz.vue
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@
const quizStore = useStoreQuiz();
function handleAnswerGiven(answer: string) {
if (!answer) {
if (!quizStore.currentVerb) {
return;
}
if (!answer) {
answer = "-";
}
quizStore.addAnswer({ answer: answer, verb: quizStore.currentVerb });
quizStore.getNextVerb();
}
Expand All @@ -13,7 +16,8 @@ function handleAnswerGiven(answer: string) {

<template>
<div class="space-y-4">
<QuestionCard @answer-given="handleAnswerGiven" :verb="quizStore.currentVerb" />
<QuestionCard v-if="quizStore.currentVerb" @answer-given="handleAnswerGiven" :verb="quizStore.currentVerb" />
<Card class="text-center text-xl p-4" v-else>Picked Time, Person and List criteria did not match any verbs</Card>
<div v-auto-animate class="flex flex-col-reverse gap-2">
<AnsweredQuestionCard v-for="answer in quizStore.previousAnswers" :key="answer.verb.word" :answer="answer" />
</div>
Expand Down
1 change: 1 addition & 0 deletions components/widget/PersonPicker.vue
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ const storeSettings = useStoreSettings();
<div class="flex-grow"></div>
<div><Switch :checked="person.checked" @update:checked="(checked) => person.checked = checked" /></div>
</div>
<Button type="button" variant="secondary" @click="storeSettings.checkUncheckAllPersons">Check/Uncheck all</Button>
</div>
</DialogContent>
</Dialog>
Expand Down
2 changes: 1 addition & 1 deletion components/widget/Settings.vue
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const toggleDarkMode = useToggle(darkMode);
</DialogTrigger>
<DialogContent>
<DialogHeader>
Ustawienia
Settings
</DialogHeader>
<div class="flex flex-row gap-4">
<label>Dark mode</label>
Expand Down
1 change: 1 addition & 0 deletions components/widget/TimePicker.vue
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ const storeSettings = useStoreSettings();
<div class="flex-grow"></div>
<div><Switch :checked="time.checked" @update:checked="(checked) => time.checked = checked" /></div>
</div>
<Button type="button" variant="secondary" @click="storeSettings.checkUncheckAllTimes">Check/Uncheck all</Button>
</div>
</DialogContent>
</Dialog>
Expand Down
28 changes: 28 additions & 0 deletions components/widget/TypePicker.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<script setup lang="ts">
import { Icon } from '@iconify/vue';
const storeSettings = useStoreSettings();
</script>

<template>
<Dialog>
<DialogTrigger>
<div class="text-3xl p-2 bg-primary text-primary-foreground rounded-md">
<Icon icon="material-symbols:list" />
</div>
</DialogTrigger>
<DialogContent>
<DialogHeader>
Pick a type
</DialogHeader>
<div class="flex flex-col gap-1">
<div class="flex flex-row" v-for="type in storeSettings.pickedVerbsTypes">
<div>{{ type.name }}</div>
<div class="flex-grow"></div>
<div><Switch :checked="type.checked" @update:checked="(checked) => type.checked = checked" /></div>
</div>
<Button type="button" variant="secondary" @click="storeSettings.checkUncheckAllPersons">Check/Uncheck all</Button>
</div>
</DialogContent>
</Dialog>
</template>
37 changes: 22 additions & 15 deletions composables/useWordsDictionary.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import irregularVerbsFile from '~/assets/irregularVerbs.yaml?raw';
import irregularVerbsYaml from '~/assets/irregularVerbs.yaml?raw';
import regularVerbsYaml from '~/assets/regularVerbs.yaml?raw';
import YAML from 'yaml';
import { type Verb } from '~/models/Verb';
import { type DictionaryEntry } from '~/models/DictionaryEntry';
Expand All @@ -20,32 +21,38 @@ export function useWordsDictionary() {
return personDictionary[verb.person];
}

const irregularVerbs = Object.entries(YAML.parse(irregularVerbsFile).words) as [string, DictionaryEntry][];
const irregularVerbsList = [] as Verb[];
irregularVerbs.forEach(([base, times]) => {
return Object.entries(times).forEach(([time, persons]) => {
return Object.entries(persons).forEach(([person, word]) => {
irregularVerbsList.push({
base: base,
time: time,
person: person as Verb['person'],
word: word,
function getVerbsListFromYaml(yamlFileContent: string) {
const verbs = Object.entries(YAML.parse(yamlFileContent).words) as [string, DictionaryEntry][];
const verbsList = [] as Verb[];
verbs.forEach(([base, times]) => {
return Object.entries(times).forEach(([time, persons]) => {
return Object.entries(persons).forEach(([person, word]) => {
verbsList.push({
base: base,
time: time,
person: person as Verb['person'],
word: word,
});
});
});
});
});
return verbsList;
}

const irregularVerbsList = getVerbsListFromYaml(irregularVerbsYaml);
const regularVerbsList = getVerbsListFromYaml(regularVerbsYaml);

function getAvailableTimes() {
function getAvailableTimes(verbsList: Verb[]) {
return [...new Set(irregularVerbsList.map((verb) => verb.time))];
}

function getAvailablePersons() {
function getAvailablePersons(verbsList: Verb[]) {
return [...new Set(irregularVerbsList.map((verb) => verb.person))];
}

return {
irregularVerbs,
irregularVerbsList,
regularVerbsList,
getPerson,
getAvailableTimes,
getAvailablePersons,
Expand Down
1 change: 1 addition & 0 deletions layouts/default.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<template>
<div class="flex flex-row gap-2 sticky top-2 m-2 justify-end">
<WidgetTypePicker />
<WidgetPersonPicker />
<WidgetTimePicker />
<WidgetSettings />
Expand Down
Loading

0 comments on commit 998e92a

Please sign in to comment.