feat(webui): move all libraries action to 3-dots menu in sidebar

This commit is contained in:
Gauthier Roebroeck 2025-01-21 15:25:35 +08:00
parent 169c47e701
commit 8706048a71
2 changed files with 41 additions and 36 deletions

View file

@ -75,6 +75,26 @@
<v-icon>mdi-plus</v-icon>
</v-btn>
</v-list-item-action>
<v-list-item-action v-if="isAdmin" class="ma-0">
<v-menu offset-y>
<template v-slot:activator="{ on }">
<v-btn icon v-on="on" @click.prevent="">
<v-icon>mdi-dots-vertical</v-icon>
</v-btn>
</template>
<v-list dense>
<v-list-item @click="scanAllLibraries(false)">
<v-list-item-title>{{ $t('server.server_management.button_scan_libraries') }}</v-list-item-title>
</v-list-item>
<v-list-item @click="scanAllLibraries(true)" class="list-warning">
<v-list-item-title>{{ $t('server.server_management.button_scan_libraries_deep') }}</v-list-item-title>
</v-list-item>
<v-list-item @click="confirmEmptyTrash = true">
<v-list-item-title>{{ $t('server.server_management.button_empty_trash') }}</v-list-item-title>
</v-list-item>
</v-list>
</v-menu>
</v-list-item-action>
</v-list-item>
<v-list-item v-for="(l, index) in libraries"
@ -313,6 +333,14 @@
</template>
</v-navigation-drawer>
<confirmation-dialog
v-model="confirmEmptyTrash"
:title="$t('dialog.empty_trash.title')"
:body="$t('dialog.empty_trash.body')"
:button-confirm="$t('dialog.empty_trash.button_confirm')"
@confirm="emptyTrash"
/>
<v-main class="fill-height">
<reusable-dialogs/>
<toaster-notification/>
@ -332,10 +360,11 @@ import ToasterNotification from '@/components/ToasterNotification.vue'
import {MediaStatus} from '@/types/enum-books'
import {LibraryDto} from '@/types/komga-libraries'
import {BookSearch, SearchConditionAnyOfBook, SearchConditionMediaStatus, SearchOperatorIs} from '@/types/komga-search'
import ConfirmationDialog from '@/components/dialogs/ConfirmationDialog.vue'
export default Vue.extend({
name: 'HomeView',
components: {ToasterNotification, LibraryActionsMenu, SearchBox, ReusableDialogs},
components: {ConfirmationDialog, ToasterNotification, LibraryActionsMenu, SearchBox, ReusableDialogs},
data: function () {
return {
LIBRARIES_ALL,
@ -346,6 +375,7 @@ export default Vue.extend({
expandMediaManagement: false,
expandImport: false,
expandAccount: false,
confirmEmptyTrash: false,
}
},
async created() {
@ -442,6 +472,16 @@ export default Vue.extend({
addLibrary() {
this.$store.dispatch('dialogAddLibrary')
},
emptyTrash() {
this.libraries.forEach(library => {
this.$komgaLibraries.emptyTrash(library)
})
},
scanAllLibraries(scanDeep: boolean) {
this.libraries.forEach(library => {
this.$komgaLibraries.scanLibrary(library, scanDeep)
})
},
},
})
</script>

View file

@ -10,22 +10,6 @@
</v-btn>
</v-col>
</v-row>
<v-row>
<v-col cols="auto">
<v-btn @click="scanAllLibraries(false)">{{ $t('server.server_management.button_scan_libraries') }}</v-btn>
</v-col>
<v-col cols="auto">
<v-btn @click="scanAllLibraries(true)"
color="warning"
>{{ $t('server.server_management.button_scan_libraries_deep') }}
</v-btn>
</v-col>
</v-row>
<v-row>
<v-col cols="auto">
<v-btn @click="confirmEmptyTrash = true">{{ $t('server.server_management.button_empty_trash') }}</v-btn>
</v-col>
</v-row>
<v-row>
<v-col cols="auto">
<v-btn @click="cancelAllTasks"
@ -43,14 +27,6 @@
</v-col>
</v-row>
<confirmation-dialog
v-model="confirmEmptyTrash"
:title="$t('dialog.empty_trash.title')"
:body="$t('dialog.empty_trash.body')"
:button-confirm="$t('dialog.empty_trash.button_confirm')"
@confirm="emptyTrash"
/>
<confirmation-dialog
v-model="modalStopServer"
:title="$t('dialog.server_stop.dialog_title')"
@ -76,7 +52,6 @@ export default Vue.extend({
components: {ConfirmationDialog},
data: () => ({
modalStopServer: false,
confirmEmptyTrash: false,
}),
computed: {
libraries(): LibraryDto[] {
@ -84,16 +59,6 @@ export default Vue.extend({
},
},
methods: {
emptyTrash() {
this.libraries.forEach(library => {
this.$komgaLibraries.emptyTrash(library)
})
},
scanAllLibraries(scanDeep: boolean) {
this.libraries.forEach(library => {
this.$komgaLibraries.scanLibrary(library, scanDeep)
})
},
async cancelAllTasks() {
const count = await this.$komgaTasks.deleteAllTasks()
this.$eventHub.$emit(NOTIFICATION, {