generated from alphane/template
Big quaility of life changes
This commit is contained in:
@@ -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,14 +28,17 @@
|
|||||||
>
|
>
|
||||||
{{ deck.name }}
|
{{ deck.name }}
|
||||||
</span>
|
</span>
|
||||||
<FlashcardDeckKebab
|
<div
|
||||||
class="kebab-btn"
|
class="kebab-btn"
|
||||||
:flashcard-deck-id="deck.id"
|
|
||||||
@click.stop
|
@click.stop
|
||||||
@created="$emit('created', $event)"
|
>
|
||||||
@updated="$emit('updated', $event)"
|
<FlashcardDeckKebab
|
||||||
@deleted="$emit('deleted', $event)"
|
:flashcard-deck-id="deck.id"
|
||||||
/>
|
@created="$emit('created', $event)"
|
||||||
|
@updated="$emit('updated', $event)"
|
||||||
|
@deleted="$emit('deleted', $event)"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
|
|||||||
@@ -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)"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user