feat(webui): configure number of task processing threads from server settings

This commit is contained in:
Gauthier Roebroeck 2023-10-20 16:50:39 +08:00
parent 9ef319b703
commit a837988108
3 changed files with 28 additions and 0 deletions

View file

@ -861,6 +861,7 @@
"label_delete_empty_collections": "Delete empty collections after scan",
"label_delete_empty_readlists": "Delete empty read lists after scan",
"label_rememberme_duration": "Remember me duration (in days)",
"label_task_pool_size": "Task threads",
"label_thumbnail_size": "Thumbnails size",
"requires_restart": "Requires restart to take effect",
"server_settings": "Server Settings"

View file

@ -3,6 +3,7 @@ export interface SettingsDto {
deleteEmptyReadLists: boolean,
rememberMeDurationDays: number,
thumbnailSize: ThumbnailSizeDto,
taskPoolSize: number,
}
export interface SettingsUpdateDto {
@ -11,6 +12,7 @@ export interface SettingsUpdateDto {
rememberMeDurationDays?: number,
renewRememberMeKey?: boolean,
thumbnailSize?: ThumbnailSizeDto,
taskPoolSize?: number,
}
export enum ThumbnailSizeDto {

View file

@ -36,6 +36,16 @@
min="1"
class="mt-4"
/>
<v-text-field
v-model="form.taskPoolSize"
@input="$v.form.taskPoolSize.$touch()"
@blur="$v.form.taskPoolSize.$touch()"
:error-messages="taskPoolSizeErrors"
:label="$t('server_settings.label_task_pool_size')"
type="number"
min="1"
class="mt-4"
/>
<v-checkbox
v-model="form.renewRememberMeKey"
@change="$v.form.renewRememberMeKey.$touch()"
@ -90,6 +100,7 @@ export default Vue.extend({
rememberMeDurationDays: 365,
renewRememberMeKey: false,
thumbnailSize: ThumbnailSizeDto.DEFAULT,
taskPoolSize: 8,
},
existingSettings: {
deleteEmptyCollections: false,
@ -97,6 +108,7 @@ export default Vue.extend({
rememberMeDurationDays: 365,
renewRememberMeKey: false,
thumbnailSize: ThumbnailSizeDto.DEFAULT,
taskPoolSize: 8,
},
dialogRegenerateThumbnails: false,
}),
@ -110,6 +122,10 @@ export default Vue.extend({
},
renewRememberMeKey: {},
thumbnailSize: {},
taskPoolSize: {
minValue: minValue(1),
required,
},
},
},
mounted() {
@ -129,6 +145,13 @@ export default Vue.extend({
!this.$v?.form?.rememberMeDurationDays?.required && errors.push(this.$t('common.required').toString())
return errors
},
taskPoolSizeErrors(): string[] {
const errors = [] as string[]
if (!this.$v.form?.taskPoolSize?.$dirty) return errors
!this.$v?.form?.taskPoolSize?.minValue && errors.push(this.$t('validation.one_or_more').toString())
!this.$v?.form?.taskPoolSize?.required && errors.push(this.$t('common.required').toString())
return errors
},
saveDisabled(): boolean {
return this.$v.form.$invalid || !this.$v.form.$anyDirty
},
@ -158,6 +181,8 @@ export default Vue.extend({
this.$_.merge(newSettings, {thumbnailSize: this.form.thumbnailSize})
thumbnailSizeHasChanged = this.existingSettings.thumbnailSize != this.form.thumbnailSize
}
if (this.$v.form?.taskPoolSize?.$dirty)
this.$_.merge(newSettings, {taskPoolSize: this.form.taskPoolSize})
await this.$komgaSettings.updateSettings(newSettings)
await this.refreshSettings()