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/indexsearch.ts | 70 -------------------------------------- 1 file changed, 70 deletions(-) delete mode 100644 viewer/src/services/indexsearch.ts (limited to 'viewer/src/services/indexsearch.ts') diff --git a/viewer/src/services/indexsearch.ts b/viewer/src/services/indexsearch.ts deleted file mode 100644 index 57bd03c..0000000 --- a/viewer/src/services/indexsearch.ts +++ /dev/null @@ -1,70 +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 } from "@/@types/gallery"; -import { Operation } from "@/@types/Operation"; -import { TagSearch, TagSearchByOperation } from "@/@types/tag"; - -export default class IndexSearch { - // Results of the search (by tags) - public static search(searchTags: TagSearch[]): Item[] { - const byOperation = this.extractTagsByOperation(searchTags); - const intersection = this.extractIntersection(byOperation); - const substraction = this.extractSubstraction(byOperation); - return this.aggregateAll(byOperation, intersection, substraction); - } - - private static extractTagsByOperation(searchTags: TagSearch[]): TagSearchByOperation { - const byOperation: TagSearchByOperation = {}; - Object.values(Operation).forEach( - operation => (byOperation[operation] = searchTags.filter(tag => tag.operation === operation)) - ); - return byOperation; - } - - private static extractIntersection(byOperation: TagSearchByOperation): Set { - const intersection = new Set(); - if (byOperation[Operation.INTERSECTION].length > 0) { - byOperation[Operation.INTERSECTION] - .map(tag => tag.items) - .reduce((a, b) => a.filter(c => b.includes(c))) - .flatMap(items => items) - .forEach(item => intersection.add(item)); - } - return intersection; - } - - private static extractSubstraction(byOperation: TagSearchByOperation): Set { - const substraction = new Set(); - if (byOperation[Operation.SUBSTRACTION].length > 0) { - byOperation[Operation.SUBSTRACTION].flatMap(tag => tag.items).forEach(item => substraction.add(item)); - } - return substraction; - } - - private static aggregateAll( - byOperation: TagSearchByOperation, - intersection: Set, - substraction: Set - ): Item[] { - byOperation[Operation.ADDITION].flatMap(tag => tag.items).forEach(item => intersection.add(item)); - substraction.forEach(item => intersection.delete(item)); - return [...intersection]; - } -} -- cgit v1.2.3