From 96ed5e6583a7f03d4ea7fa0512e66fffb656cc6e Mon Sep 17 00:00:00 2001 From: Zero~Informatique Date: Sat, 12 Sep 2020 06:34:58 +0200 Subject: viewer: make default sort order configurable github: resolves #239 --- viewer/src/store/uiStore.ts | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'viewer/src/store') diff --git a/viewer/src/store/uiStore.ts b/viewer/src/store/uiStore.ts index 2d583fc..04f14a0 100644 --- a/viewer/src/store/uiStore.ts +++ b/viewer/src/store/uiStore.ts @@ -18,20 +18,18 @@ */ import { createModule, mutation, action } from "vuex-class-component"; -import ItemSortFn from "@/services/itemSortFn"; +import ItemComparators, { ItemComparator } from "@/services/itemComparators"; const VuexModule = createModule({ namespaced: "uiStore", strict: true, }); -type TItemSortFn = (left: Gallery.Item, right: Gallery.Item) => number; - export default class UIStore extends VuexModule { fullscreen: boolean = false; fullWidth: boolean = window.innerWidth < Number(process.env.VUE_APP_FULLWIDTH_LIMIT); searchMode: boolean = false; - sortFn: TItemSortFn = ItemSortFn.sortByNameAsc; + sortFn: ItemComparator = ItemComparators.sortByNameAsc; // --- @@ -47,7 +45,20 @@ export default class UIStore extends VuexModule { this.searchMode = value ?? !this.searchMode; } - @mutation setSortFn(sortFn: TItemSortFn) { + @mutation setSortFn(sortFn: ItemComparator) { this.sortFn = sortFn; } + + @action async initFromConfig(config: Gallery.Config) { + switch (config.initialSort ?? "") { + case "date_desc": + this.setSortFn(ItemComparators.sortByDateDesc); + break; + case "name_asc": + case "": + break; + default: + throw new Error("Unknown sort type: " + config.initialSort); + } + } } -- cgit v1.2.3