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/@types/ItemType.ts | 29 -------- viewer/src/@types/Operation.ts | 24 ------- viewer/src/@types/gallery.d.ts | 125 -------------------------------- viewer/src/@types/gallery.ts | 129 ++++++++++++++++++++++++++++++++++ viewer/src/@types/itemType.ts | 29 ++++++++ viewer/src/@types/operation.ts | 24 +++++++ viewer/src/@types/scrollposition.d.ts | 20 ------ viewer/src/@types/splashscreen.d.ts | 25 ------- viewer/src/@types/splashscreen.ts | 25 +++++++ viewer/src/@types/tag.d.ts | 41 ----------- viewer/src/@types/tag.ts | 42 +++++++++++ viewer/src/@types/v-lazy-image.d.ts | 20 ------ viewer/src/@types/vue-dragscroll.d.ts | 20 ------ 13 files changed, 249 insertions(+), 304 deletions(-) delete mode 100644 viewer/src/@types/ItemType.ts delete mode 100644 viewer/src/@types/Operation.ts delete mode 100644 viewer/src/@types/gallery.d.ts create mode 100644 viewer/src/@types/gallery.ts create mode 100644 viewer/src/@types/itemType.ts create mode 100644 viewer/src/@types/operation.ts delete mode 100644 viewer/src/@types/scrollposition.d.ts delete mode 100644 viewer/src/@types/splashscreen.d.ts create mode 100644 viewer/src/@types/splashscreen.ts delete mode 100644 viewer/src/@types/tag.d.ts create mode 100644 viewer/src/@types/tag.ts delete mode 100644 viewer/src/@types/v-lazy-image.d.ts delete mode 100644 viewer/src/@types/vue-dragscroll.d.ts (limited to 'viewer/src/@types') diff --git a/viewer/src/@types/ItemType.ts b/viewer/src/@types/ItemType.ts deleted file mode 100644 index 5ef38d8..0000000 --- a/viewer/src/@types/ItemType.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* ldgallery - A static generator which turns a collection of tagged --- pictures into a searchable web gallery. --- --- Copyright (C) 2019-2021 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 . -*/ - -export enum ItemType { - OTHER = "other", - PICTURE = "picture", - PLAINTEXT = "plaintext", - MARKDOWN = "markdown", - PDF = "pdf", - VIDEO = "video", - AUDIO = "audio", - DIRECTORY = "directory", -} diff --git a/viewer/src/@types/Operation.ts b/viewer/src/@types/Operation.ts deleted file mode 100644 index e566f4b..0000000 --- a/viewer/src/@types/Operation.ts +++ /dev/null @@ -1,24 +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 . -*/ - -export enum Operation { - INTERSECTION = "", - ADDITION = "+", - SUBSTRACTION = "-", -} diff --git a/viewer/src/@types/gallery.d.ts b/viewer/src/@types/gallery.d.ts deleted file mode 100644 index 0b4cfc4..0000000 --- a/viewer/src/@types/gallery.d.ts +++ /dev/null @@ -1,125 +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 { ItemType } from "./ItemType"; -import { SplashScreenConfig } from "./splashscreen"; - -export type ItemSortStr = "title_asc" | "date_asc" | "date_desc"; - -export interface Config { - galleryRoot: string; - galleryIndex?: string; - initialItemSort?: ItemSortStr; - initialTagDisplayLimit?: number; - splashScreen?: SplashScreenConfig; -} - -export interface Properties { - galleryTitle: string; - tagCategories: RawTag[]; -} -export interface Index { - properties: Properties; - tree: DirectoryItem; -} - -export interface OtherItem extends Item { - properties: OtherProperties; -} -export interface PictureItem extends Item { - properties: PictureProperties; -} -export interface PlainTextItem extends Item { - properties: PlainTextProperties; -} -export interface MarkdownItem extends Item { - properties: MarkdownProperties; -} -export interface PDFItem extends Item { - properties: PDFProperties; -} -export interface VideoItem extends Item { - properties: VideoProperties; -} -export interface AudioItem extends Item { - properties: AudioProperties; -} -export interface DirectoryItem extends Item { - properties: DirectoryProperties; -} -export interface Item { - title: string; - datetime: string; - description: string; - tags: RawTag[]; - path: string; - thumbnail?: Thumbnail; - properties: - | OtherProperties - | PictureProperties - | PlainTextProperties - | MarkdownProperties - | PDFProperties - | VideoProperties - | AudioProperties - | DirectoryProperties; -} -export interface Resolution { - width: number; - height: number; -} -export interface OtherProperties { - type: ItemType.OTHER; - resource: string; -} -export interface PictureProperties { - type: ItemType.PICTURE; - resource: string; - resolution: Resolution; -} -export interface PlainTextProperties { - type: ItemType.PLAINTEXT; - resource: string; -} -export interface MarkdownProperties { - type: ItemType.MARKDOWN; - resource: string; -} -export interface PDFProperties { - type: ItemType.PDF; - resource: string; -} -export interface VideoProperties { - type: ItemType.VIDEO; - resource: string; -} -export interface AudioProperties { - type: ItemType.AUDIO; - resource: string; -} -export interface DirectoryProperties { - type: ItemType.DIRECTORY; - items: Item[]; -} - -export interface Thumbnail { - resource: string; - resolution: Resolution; -} -export type RawTag = string; diff --git a/viewer/src/@types/gallery.ts b/viewer/src/@types/gallery.ts new file mode 100644 index 0000000..8c0f177 --- /dev/null +++ b/viewer/src/@types/gallery.ts @@ -0,0 +1,129 @@ +/* ldgallery - A static generator which turns a collection of tagged +-- pictures into a searchable web gallery. +-- +-- Copyright (C) 2019-2022 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 { ItemType } from './itemType'; +import { SplashScreenConfig } from './splashscreen'; + +export type ItemSortStr = 'title_asc' | 'date_asc' | 'date_desc'; + +export interface Config { + galleryRoot: string; + galleryIndex?: string; + initialItemSort?: ItemSortStr; + initialTagDisplayLimit?: number; + splashScreen?: SplashScreenConfig; +} + +// --- + +export interface Resolution { + width: number; + height: number; +} +export interface Thumbnail { + resource: string; + resolution: Resolution; +} +export type RawTag = string; + +// --- + +export interface Downloadable { + resource: string; + type: ItemType; // unknown +} +export interface OtherProperties extends Downloadable { + type: ItemType.OTHER; +} +export interface PictureProperties extends Downloadable { + type: ItemType.PICTURE; + resolution: Resolution; +} +export interface PlainTextProperties extends Downloadable { + type: ItemType.PLAINTEXT; +} +export interface MarkdownProperties extends Downloadable { + type: ItemType.MARKDOWN; +} +export interface PDFProperties extends Downloadable { + type: ItemType.PDF; +} +export interface VideoProperties extends Downloadable { + type: ItemType.VIDEO; +} +export interface AudioProperties extends Downloadable { + type: ItemType.AUDIO; +} +export interface DirectoryProperties { + type: ItemType.DIRECTORY; + // eslint-disable-next-line no-use-before-define + items: Item[]; +} + +// --- + +export interface Item { + title: string; + datetime: string; + description: string; + tags: RawTag[]; + path: string; + thumbnail?: Thumbnail; + properties: + | Downloadable + | DirectoryProperties; +} +export interface DownloadableItem extends Item { // Special unknown item type + properties: Downloadable; +} +export interface OtherItem extends Item { + properties: OtherProperties; +} +export interface PictureItem extends Item { + properties: PictureProperties; +} +export interface PlainTextItem extends Item { + properties: PlainTextProperties; +} +export interface MarkdownItem extends Item { + properties: MarkdownProperties; +} +export interface PDFItem extends Item { + properties: PDFProperties; +} +export interface VideoItem extends Item { + properties: VideoProperties; +} +export interface AudioItem extends Item { + properties: AudioProperties; +} +export interface DirectoryItem extends Item { + properties: DirectoryProperties; +} + +// --- + +export interface IndexProperties { + galleryTitle: string; + tagCategories: RawTag[]; +} +export interface Index { + properties: IndexProperties; + tree: DirectoryItem; +} diff --git a/viewer/src/@types/itemType.ts b/viewer/src/@types/itemType.ts new file mode 100644 index 0000000..ecab05c --- /dev/null +++ b/viewer/src/@types/itemType.ts @@ -0,0 +1,29 @@ +/* ldgallery - A static generator which turns a collection of tagged +-- pictures into a searchable web gallery. +-- +-- Copyright (C) 2019-2021 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 . +*/ + +export enum ItemType { + OTHER = 'other', + PICTURE = 'picture', + PLAINTEXT = 'plaintext', + MARKDOWN = 'markdown', + PDF = 'pdf', + VIDEO = 'video', + AUDIO = 'audio', + DIRECTORY = 'directory', +} diff --git a/viewer/src/@types/operation.ts b/viewer/src/@types/operation.ts new file mode 100644 index 0000000..ec6a2d3 --- /dev/null +++ b/viewer/src/@types/operation.ts @@ -0,0 +1,24 @@ +/* ldgallery - A static generator which turns a collection of tagged +-- pictures into a searchable web gallery. +-- +-- Copyright (C) 2019-2022 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 . +*/ + +export enum Operation { + INTERSECTION = '', + ADDITION = '+', + SUBSTRACTION = '-', +} diff --git a/viewer/src/@types/scrollposition.d.ts b/viewer/src/@types/scrollposition.d.ts deleted file mode 100644 index 0102eab..0000000 --- a/viewer/src/@types/scrollposition.d.ts +++ /dev/null @@ -1,20 +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 . -*/ - -export type ScrollPosition = Record; diff --git a/viewer/src/@types/splashscreen.d.ts b/viewer/src/@types/splashscreen.d.ts deleted file mode 100644 index 4e03fa8..0000000 --- a/viewer/src/@types/splashscreen.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* ldgallery - A static generator which turns a collection of tagged --- pictures into a searchable web gallery. --- --- Copyright (C) 2019-2021 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 . -*/ - -export interface SplashScreenConfig { - resource?: string; - acknowledgmentKey?: string; - buttonAcknowledgeLabel?: string; - style?: any; -} diff --git a/viewer/src/@types/splashscreen.ts b/viewer/src/@types/splashscreen.ts new file mode 100644 index 0000000..ea2e331 --- /dev/null +++ b/viewer/src/@types/splashscreen.ts @@ -0,0 +1,25 @@ +/* ldgallery - A static generator which turns a collection of tagged +-- pictures into a searchable web gallery. +-- +-- Copyright (C) 2019-2021 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 . +*/ + +export interface SplashScreenConfig { + resource?: string; + acknowledgmentKey?: string; + buttonAcknowledgeLabel?: string; + style?: unknown; +} diff --git a/viewer/src/@types/tag.d.ts b/viewer/src/@types/tag.d.ts deleted file mode 100644 index 9ed2c04..0000000 --- a/viewer/src/@types/tag.d.ts +++ /dev/null @@ -1,41 +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, RawTag } from "./gallery"; - -export interface TagNode { - tag: RawTag; - tagfiltered: RawTag; - rootPart: boolean; - childPart: boolean; - items: Item[]; - children: TagIndex; -} -export interface TagSearch extends TagNode { - parent?: TagNode; - operation: string; // Enum Operation - display: string; -} -export type TagSearchByOperation = Record; -export type TagIndex = Record; - -export interface TagCategory { - tag: string; - index: TagIndex; -} diff --git a/viewer/src/@types/tag.ts b/viewer/src/@types/tag.ts new file mode 100644 index 0000000..4c909f2 --- /dev/null +++ b/viewer/src/@types/tag.ts @@ -0,0 +1,42 @@ +/* ldgallery - A static generator which turns a collection of tagged +-- pictures into a searchable web gallery. +-- +-- Copyright (C) 2019-2022 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, RawTag } from './gallery'; + +export interface TagNode { + tag: RawTag; + tagfiltered: RawTag; + rootPart: boolean; + childPart: boolean; + items: Item[]; + // eslint-disable-next-line no-use-before-define + children: TagIndex; +} +export interface TagSearch extends TagNode { + parent?: TagNode; + operation: string; // Enum Operation + display: string; +} +export type TagSearchByOperation = Record; +export type TagIndex = Record; + +export interface TagCategory { + tag: string; + index: TagIndex; +} diff --git a/viewer/src/@types/v-lazy-image.d.ts b/viewer/src/@types/v-lazy-image.d.ts deleted file mode 100644 index 2777921..0000000 --- a/viewer/src/@types/v-lazy-image.d.ts +++ /dev/null @@ -1,20 +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 . -*/ - -declare module "v-lazy-image"; diff --git a/viewer/src/@types/vue-dragscroll.d.ts b/viewer/src/@types/vue-dragscroll.d.ts deleted file mode 100644 index c07c7d8..0000000 --- a/viewer/src/@types/vue-dragscroll.d.ts +++ /dev/null @@ -1,20 +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 . -*/ - -declare module "vue-dragscroll"; -- cgit v1.2.3