Add start of library scan scheduling and cron expression builder

This commit is contained in:
advplyr 2022-08-16 18:24:47 -05:00
parent 01333b6401
commit 9a57fcad40
4 changed files with 255 additions and 3 deletions

View file

@ -47,6 +47,11 @@ export default {
title: 'Settings',
component: 'modals-libraries-library-settings'
}
// {
// id: 'schedule',
// title: 'Schedule',
// component: 'modals-libraries-schedule-scan'
// }
],
libraryCopy: null
}
@ -84,6 +89,7 @@ export default {
},
updateLibrary(library) {
this.mapLibraryToCopy(library)
console.log('Updated library', this.libraryCopy)
},
getNewLibraryData() {
return {
@ -93,9 +99,11 @@ export default {
icon: 'database',
mediaType: 'book',
settings: {
coverAspectRatio: this.$constants.BookCoverAspectRatio.SQUARE,
disableWatcher: false,
skipMatchingMediaWithAsin: false,
skipMatchingMediaWithIsbn: false
skipMatchingMediaWithIsbn: false,
autoScanCronExpression: null
}
}
},
@ -112,7 +120,9 @@ export default {
if (key === 'folders') {
this.libraryCopy.folders = library.folders.map((f) => ({ ...f }))
} else if (key === 'settings') {
this.libraryCopy.settings = { ...library.settings }
for (const settingKey in library.settings) {
this.libraryCopy.settings[settingKey] = library.settings[settingKey]
}
} else {
this.libraryCopy[key] = library[key]
}

View file

@ -0,0 +1,47 @@
<template>
<div class="w-full h-full px-4 py-1 mb-4">
<div class="flex items-center justify-between mb-4">
<p class="text-lg">Schedule Automatic Library Scans</p>
<ui-checkbox v-model="enableAutoScan" @input="toggleEnableAutoScan" label="Enable" checkbox-bg="bg" label-class="pl-2 text-base" />
</div>
<widgets-cron-expression-builder v-if="enableAutoScan" v-model="cronExpression" @input="updatedCron" />
</div>
</template>
<script>
export default {
props: {
library: {
type: Object,
default: () => null
},
processing: Boolean
},
data() {
return {
cronExpression: null,
enableAutoScan: false
}
},
computed: {},
methods: {
toggleEnableAutoScan(v) {
if (!v) this.updatedCron(null)
},
updatedCron(expression) {
this.$emit('update', {
settings: {
autoScanCronExpression: expression
}
})
},
init() {
this.cronExpression = this.library.settings.autoScanCronExpression
this.enableAutoScan = !!this.cronExpression
}
},
mounted() {
this.init()
}
}
</script>