From 0697693934c700f50bcc45ad58ab0b8f0370561c Mon Sep 17 00:00:00 2001
From: Zero~Informatique
Date: Sun, 2 Feb 2020 05:01:17 +0100
Subject: viewer: adaptation to the thumbnail's new structure
---
viewer/src/@types/gallery.d.ts | 9 ++++++++-
viewer/src/components/LdPicture.vue | 18 +++++++++++-------
viewer/src/components/LdThumbnail.vue | 2 +-
3 files changed, 20 insertions(+), 9 deletions(-)
diff --git a/viewer/src/@types/gallery.d.ts b/viewer/src/@types/gallery.d.ts
index b112b6d..1987416 100644
--- a/viewer/src/@types/gallery.d.ts
+++ b/viewer/src/@types/gallery.d.ts
@@ -33,7 +33,7 @@ declare namespace Gallery {
description: string,
tags: RawTag[],
path: string,
- thumbnail?: string,
+ thumbnail?: Thumbnail
properties: OtherProperties | PictureProperties | DirectoryProperties,
}
interface OtherProperties {
@@ -47,6 +47,13 @@ declare namespace Gallery {
type: "directory",
items: Item[]
}
+ interface Thumbnail {
+ resource: string,
+ resolution: {
+ width: number,
+ height: number,
+ }
+ }
type RawTag = string;
type ItemType = "other" | "picture" | "directory";
}
\ No newline at end of file
diff --git a/viewer/src/components/LdPicture.vue b/viewer/src/components/LdPicture.vue
index 5425a00..154c4bd 100644
--- a/viewer/src/components/LdPicture.vue
+++ b/viewer/src/components/LdPicture.vue
@@ -29,9 +29,9 @@
:src="pictureSrc()"
:class="{'slow-loading': Boolean(slowLoadingStyle)}"
:style="slowLoadingStyle"
- @load="clearTimer"
+ @load="clearSlowLoading"
/>
-
+
@@ -46,20 +46,22 @@ export default class LdPicture extends Vue {
dragging: boolean = false;
slowLoadingStyle: string | null = null;
+ loader: boolean = false;
timer: NodeJS.Timeout | null = null;
mounted() {
- if (this.picture.thumbnail) this.timer = setTimeout(this.generateSlowLoadingStyle, this.SLOW_LOADING_TIMEOUT_MS);
+ this.timer = setTimeout(this.generateSlowLoadingStyle, this.SLOW_LOADING_TIMEOUT_MS);
}
destroyed() {
- this.clearTimer();
+ this.clearSlowLoading();
}
- clearTimer() {
+ clearSlowLoading() {
if (this.timer) clearTimeout(this.timer);
this.timer = null;
this.slowLoadingStyle = null;
+ this.loader = false;
}
pictureSrc() {
@@ -67,8 +69,10 @@ export default class LdPicture extends Vue {
}
generateSlowLoadingStyle() {
- this.clearTimer();
- this.slowLoadingStyle = `background-image: url('${process.env.VUE_APP_DATA_URL}${this.picture.thumbnail}');`;
+ this.clearSlowLoading();
+ this.loader = true;
+ if (this.picture.thumbnail)
+ this.slowLoadingStyle = `background-image: url('${process.env.VUE_APP_DATA_URL}${this.picture.thumbnail.resource}');`;
}
onClick() {
diff --git a/viewer/src/components/LdThumbnail.vue b/viewer/src/components/LdThumbnail.vue
index 44a4c00..d9343dd 100644
--- a/viewer/src/components/LdThumbnail.vue
+++ b/viewer/src/components/LdThumbnail.vue
@@ -45,7 +45,7 @@ export default class LdThumbnail extends Vue {
loading: boolean = false;
pictureSrc() {
- return `${process.env.VUE_APP_DATA_URL}${this.item.thumbnail}`;
+ if (this.item.thumbnail) return `${process.env.VUE_APP_DATA_URL}${this.item.thumbnail.resource}`;
}
getIcon() {
--
cgit v1.2.3