Big quaility of life changes

This commit is contained in:
2026-06-28 23:58:29 -07:00
parent 4347cb9c91
commit b7eaa2ad74
5 changed files with 43 additions and 12 deletions
@@ -12,6 +12,11 @@
</v-btn> </v-btn>
</template> </template>
<v-list density="compact"> <v-list density="compact">
<v-list-item
prepend-icon="mdi-book-open-blank-variant-outline"
title="Start Review"
@click="goToReviewPage"
/>
<v-list-item <v-list-item
prepend-icon="mdi-folder-plus-outline" prepend-icon="mdi-folder-plus-outline"
title="Add subdeck" title="Add subdeck"
@@ -134,6 +139,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from "vue" import { ref } from "vue"
import { VForm } from "vuetify/components" import { VForm } from "vuetify/components"
import { useRouter } from "vue-router"
import { required } from "@/utils/validators" import { required } from "@/utils/validators"
import flashcardDecksApi from "@/api/flashcard-decks-api" import flashcardDecksApi from "@/api/flashcard-decks-api"
@@ -152,6 +158,17 @@ const emit = defineEmits<{
const snack = useSnack() const snack = useSnack()
const isSubmitting = ref(false) const isSubmitting = ref(false)
const router = useRouter()
function goToReviewPage() {
router.push({
name: "FlashcardDeckReviewPage",
params: {
flashcardDeckId: props.flashcardDeckId,
},
})
}
// Add subdeck // Add subdeck
const showAddSubdeck = ref(false) const showAddSubdeck = ref(false)
const newDeckName = ref("") const newDeckName = ref("")
@@ -14,9 +14,7 @@
@click.stop="expanded = !expanded" @click.stop="expanded = !expanded"
> >
<v-icon size="default"> <v-icon size="default">
{{ {{ expanded ? "mdi-chevron-down" : "mdi-chevron-right" }}
hasChildren ? (expanded ? "mdi-chevron-down" : "mdi-chevron-right") : "mdi-circle-small"
}}
</v-icon> </v-icon>
</v-btn> </v-btn>
<v-icon <v-icon
@@ -30,15 +28,18 @@
> >
{{ deck.name }} {{ deck.name }}
</span> </span>
<FlashcardDeckKebab <div
class="kebab-btn" class="kebab-btn"
:flashcard-deck-id="deck.id"
@click.stop @click.stop
>
<FlashcardDeckKebab
:flashcard-deck-id="deck.id"
@created="$emit('created', $event)" @created="$emit('created', $event)"
@updated="$emit('updated', $event)" @updated="$emit('updated', $event)"
@deleted="$emit('deleted', $event)" @deleted="$emit('deleted', $event)"
/> />
</div> </div>
</div>
<div <div
v-show="expanded" v-show="expanded"
@@ -4,10 +4,12 @@
class="face-content text-h5 text-center" class="face-content text-h5 text-center"
v-html="renderMarkdown(flashcard.front)" v-html="renderMarkdown(flashcard.front)"
/> />
<div class="kebab-wrapper"> <div
class="kebab-wrapper"
@click.stop
>
<FlashcardKebab <FlashcardKebab
:flashcard="flashcard" :flashcard="flashcard"
@click.stop
@updated="$emit('updated', $event)" @updated="$emit('updated', $event)"
@deleted="$emit('deleted', $event)" @deleted="$emit('deleted', $event)"
/> />
+3 -1
View File
@@ -21,7 +21,9 @@
> >
<template v-if="selectedDeck"> <template v-if="selectedDeck">
<div class="d-flex align-center justify-space-between mb-4"> <div class="d-flex align-center justify-space-between mb-4">
<h2 class="text-h3">{{ selectedDeck.name }}</h2> <span class="text-h3">{{ selectedDeck.name }}</span>
<span class="ml-2">({{ totalCount }})</span>
<v-spacer /> <v-spacer />
<v-btn <v-btn
color="primary" color="primary"
@@ -7,6 +7,7 @@
variant="tonal" variant="tonal"
prepend-icon="mdi-shuffle" prepend-icon="mdi-shuffle"
text="Shuffle" text="Shuffle"
@click="shuffle"
/> />
</div> </div>
@@ -166,6 +167,14 @@ function markCurrentCardCorrect() {
function markCurrentCardIncorrect() { function markCurrentCardIncorrect() {
markCurrentCard("incorrect") markCurrentCard("incorrect")
} }
function shuffle() {
for (let i = queue.value.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1))
;[queue.value[i], queue.value[j]] = [queue.value[j], queue.value[i]]
}
currentIndex.value = 0
}
</script> </script>
<style scoped> <style scoped>