From 9165cc1efcf7791f78b61b2c51a9de651b1b09aa Mon Sep 17 00:00:00 2001 From: Zero~Informatique Date: Fri, 2 Jul 2021 22:53:16 +0200 Subject: viewer: types normalization - gallery.d.ts GitHub: closes #301 --- viewer/src/services/itemComparators.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'viewer/src/services/itemComparators.ts') diff --git a/viewer/src/services/itemComparators.ts b/viewer/src/services/itemComparators.ts index bd9accb..aceff79 100644 --- a/viewer/src/services/itemComparators.ts +++ b/viewer/src/services/itemComparators.ts @@ -16,14 +16,15 @@ -- You should have received a copy of the GNU Affero General Public License -- along with this program. If not, see . */ -import { TranslateResult } from "vue-i18n"; +import { Item, ItemSortStr } from "@/@types/gallery"; import i18n from "@/plugins/i18n"; +import { TranslateResult } from "vue-i18n"; -export type ItemComparator = (left: Gallery.Item, right: Gallery.Item) => number; +export type ItemComparator = (left: Item, right: Item) => number; export type ItemSort = { text: TranslateResult; fn: ItemComparator }; export default class ItemComparators { - static readonly ITEM_SORTS: Record = { + static readonly ITEM_SORTS: Record = { title_asc: { text: i18n.t("command.sort.byTitleAsc"), fn: ItemComparators.chain(ItemComparators.sortByTitleAsc, ItemComparators.sortByPathAsc), @@ -40,7 +41,7 @@ export default class ItemComparators { static readonly DEFAULT = ItemComparators.ITEM_SORTS.date_asc; - static sortByPathAsc(left: Gallery.Item, right: Gallery.Item): number { + static sortByPathAsc(left: Item, right: Item): number { return left.path.localeCompare(right.path, undefined, { sensitivity: "base", ignorePunctuation: true, @@ -48,7 +49,7 @@ export default class ItemComparators { }); } - static sortByTitleAsc(left: Gallery.Item, right: Gallery.Item): number { + static sortByTitleAsc(left: Item, right: Item): number { return left.title.localeCompare(right.title, undefined, { sensitivity: "base", ignorePunctuation: true, @@ -56,7 +57,7 @@ export default class ItemComparators { }); } - static sortByDateAsc(left: Gallery.Item, right: Gallery.Item): number { + static sortByDateAsc(left: Item, right: Item): number { return left.datetime.localeCompare(right.datetime); // TODO: handle timezones } -- cgit v1.2.3 From 00510820a2794efcadbc83f7f8b54318fe198ecb Mon Sep 17 00:00:00 2001 From: Zéro~Informatique Date: Tue, 26 Jul 2022 08:44:34 +0200 Subject: viewer: migrate to vue 3, general refactoring and cleanup Non-exhaustive list of fixes and improvements done at the same time: - html default background to grey (avoids white flash during init) - unified links behavior - added more theme variables - removed the flex-expand transition (it wasn't working) and replaced it with a slide - fixed LdLoading not centered on the content - title on removable tags - fixed an issue with encoded URI from vue-router - unified Item resource URLs - removed the iframe for PlainTextViewer (it wasn't working properly) and replaced it with a pre - fixed clear and search buttons tabindex - fixed the information panel bumping up during the fade animation of tag's dropdown - fixed some focus outlines not appearing correctly - moved CSS variables to the :root context - Code cleaning GitHub: closes #217 GitHub: closes #300 GitHub: closes #297 GitHub: closes #105 GitHub: closes #267 GitHub: closes #275 GitHub: closes #228 GitHub: closes #215 GitHub: closes #112 --- viewer/src/services/itemComparators.ts | 74 ---------------------------------- 1 file changed, 74 deletions(-) delete mode 100644 viewer/src/services/itemComparators.ts (limited to 'viewer/src/services/itemComparators.ts') diff --git a/viewer/src/services/itemComparators.ts b/viewer/src/services/itemComparators.ts deleted file mode 100644 index aceff79..0000000 --- a/viewer/src/services/itemComparators.ts +++ /dev/null @@ -1,74 +0,0 @@ -/* ldgallery - A static generator which turns a collection of tagged --- pictures into a searchable web gallery. --- --- Copyright (C) 2019-2020 Guillaume FOUET --- --- This program is free software: you can redistribute it and/or modify --- it under the terms of the GNU Affero General Public License as --- published by the Free Software Foundation, either version 3 of the --- License, or (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU Affero General Public License for more details. --- --- You should have received a copy of the GNU Affero General Public License --- along with this program. If not, see . -*/ -import { Item, ItemSortStr } from "@/@types/gallery"; -import i18n from "@/plugins/i18n"; -import { TranslateResult } from "vue-i18n"; - -export type ItemComparator = (left: Item, right: Item) => number; -export type ItemSort = { text: TranslateResult; fn: ItemComparator }; - -export default class ItemComparators { - static readonly ITEM_SORTS: Record = { - title_asc: { - text: i18n.t("command.sort.byTitleAsc"), - fn: ItemComparators.chain(ItemComparators.sortByTitleAsc, ItemComparators.sortByPathAsc), - }, - date_asc: { - text: i18n.t("command.sort.byDateAsc"), - fn: ItemComparators.chain(ItemComparators.sortByDateAsc, ItemComparators.sortByPathAsc), - }, - date_desc: { - text: i18n.t("command.sort.byDateDesc"), - fn: ItemComparators.reverse(ItemComparators.chain(ItemComparators.sortByDateAsc, ItemComparators.sortByPathAsc)), - }, - }; - - static readonly DEFAULT = ItemComparators.ITEM_SORTS.date_asc; - - static sortByPathAsc(left: Item, right: Item): number { - return left.path.localeCompare(right.path, undefined, { - sensitivity: "base", - ignorePunctuation: true, - numeric: true, - }); - } - - static sortByTitleAsc(left: Item, right: Item): number { - return left.title.localeCompare(right.title, undefined, { - sensitivity: "base", - ignorePunctuation: true, - numeric: true, - }); - } - - static sortByDateAsc(left: Item, right: Item): number { - return left.datetime.localeCompare(right.datetime); // TODO: handle timezones - } - - static reverse(fn: ItemComparator): ItemComparator { - return (l, r) => -fn(l, r); - } - - static chain(primary: ItemComparator, tieBreaker: ItemComparator): ItemComparator { - return (l, r) => { - const primaryComparison = primary(l, r); - return primaryComparison !== 0 ? primaryComparison : tieBreaker(l, r); - }; - } -} -- cgit v1.2.3