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/indexsearch.ts | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
(limited to 'viewer/src/services/indexsearch.ts')
diff --git a/viewer/src/services/indexsearch.ts b/viewer/src/services/indexsearch.ts
index 00f8cfc..eda1b27 100644
--- a/viewer/src/services/indexsearch.ts
+++ b/viewer/src/services/indexsearch.ts
@@ -17,11 +17,12 @@
-- along with this program. If not, see .
*/
+import { Item } from "@/@types/gallery";
import { Operation } from "@/@types/Operation";
export default class IndexSearch {
// Results of the search (by tags)
- public static search(searchTags: Tag.Search[]): Gallery.Item[] {
+ public static search(searchTags: Tag.Search[]): Item[] {
const byOperation = this.extractTagsByOperation(searchTags);
const intersection = this.extractIntersection(byOperation);
const substraction = this.extractSubstraction(byOperation);
@@ -36,8 +37,8 @@ export default class IndexSearch {
return byOperation;
}
- private static extractIntersection(byOperation: Tag.SearchByOperation): Set {
- const intersection = new Set();
+ private static extractIntersection(byOperation: Tag.SearchByOperation): Set- {
+ const intersection = new Set
- ();
if (byOperation[Operation.INTERSECTION].length > 0) {
byOperation[Operation.INTERSECTION]
.map(tag => tag.items)
@@ -48,8 +49,8 @@ export default class IndexSearch {
return intersection;
}
- private static extractSubstraction(byOperation: Tag.SearchByOperation): Set {
- const substraction = new Set();
+ private static extractSubstraction(byOperation: Tag.SearchByOperation): Set
- {
+ const substraction = new Set
- ();
if (byOperation[Operation.SUBSTRACTION].length > 0) {
byOperation[Operation.SUBSTRACTION].flatMap(tag => tag.items).forEach(item => substraction.add(item));
}
@@ -58,9 +59,9 @@ export default class IndexSearch {
private static aggregateAll(
byOperation: Tag.SearchByOperation,
- intersection: Set,
- substraction: Set
- ): Gallery.Item[] {
+ 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
From 92cb34b719b481faf417760f307241e8f6d777a9 Mon Sep 17 00:00:00 2001
From: Zero~Informatique
Date: Fri, 2 Jul 2021 22:59:56 +0200
Subject: viewer: types normalization - tag.d.ts
GitHub: closes #301
---
viewer/src/services/indexsearch.ts | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
(limited to 'viewer/src/services/indexsearch.ts')
diff --git a/viewer/src/services/indexsearch.ts b/viewer/src/services/indexsearch.ts
index eda1b27..57bd03c 100644
--- a/viewer/src/services/indexsearch.ts
+++ b/viewer/src/services/indexsearch.ts
@@ -19,25 +19,26 @@
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: Tag.Search[]): Item[] {
+ 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: Tag.Search[]): Tag.SearchByOperation {
- const byOperation: Tag.SearchByOperation = {};
+ 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: Tag.SearchByOperation): Set
- {
+ private static extractIntersection(byOperation: TagSearchByOperation): Set
- {
const intersection = new Set
- ();
if (byOperation[Operation.INTERSECTION].length > 0) {
byOperation[Operation.INTERSECTION]
@@ -49,7 +50,7 @@ export default class IndexSearch {
return intersection;
}
- private static extractSubstraction(byOperation: Tag.SearchByOperation): Set
- {
+ 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));
@@ -58,7 +59,7 @@ export default class IndexSearch {
}
private static aggregateAll(
- byOperation: Tag.SearchByOperation,
+ byOperation: TagSearchByOperation,
intersection: Set
- ,
substraction: Set
-
): Item[] {
--
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/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