diff options
Diffstat (limited to 'viewer/src/views/Gallery.vue')
-rw-r--r-- | viewer/src/views/Gallery.vue | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/viewer/src/views/Gallery.vue b/viewer/src/views/Gallery.vue index 4deb937..a53df3d 100644 --- a/viewer/src/views/Gallery.vue +++ b/viewer/src/views/Gallery.vue | |||
@@ -1,32 +1,41 @@ | |||
1 | <template> | 1 | <template> |
2 | <div> | 2 | <div> |
3 | <gallery-search v-if="$uiStore.isModeSearch" :items="currentSearch" /> | 3 | <gallery-search v-if="$uiStore.isModeSearch" :items="currentSearch" /> |
4 | <gallery-directory v-else-if="isDirectory" :directory="currentItem" /> | 4 | <gallery-directory v-else-if="isDirectory" :directory="$galleryStore.currentItem" /> |
5 | <gallery-image v-else-if="isImage" :image="currentItem" /> | 5 | <gallery-picture v-else-if="isPicture" :picture="$galleryStore.currentItem" /> |
6 | <div v-else>Unknown type</div> | 6 | <div v-else>{{$t("gallery.unknowntype")}}</div> |
7 | </div> | 7 | </div> |
8 | </template> | 8 | </template> |
9 | 9 | ||
10 | <script lang="ts"> | 10 | <script lang="ts"> |
11 | import { Component, Vue, Prop } from "vue-property-decorator"; | 11 | import { Component, Vue, Prop, Watch } from "vue-property-decorator"; |
12 | import { Operation } from '@/@types/tag/Operation'; | 12 | import { Operation } from '@/@types/tag/Operation'; |
13 | import GallerySearch from "./GallerySearch.vue"; | 13 | import GallerySearch from "./GallerySearch.vue"; |
14 | import GalleryDirectory from "./GalleryDirectory.vue"; | 14 | import GalleryDirectory from "./GalleryDirectory.vue"; |
15 | import GalleryImage from "./GalleryImage.vue"; | 15 | import GalleryPicture from "./GalleryPicture.vue"; |
16 | import GalleryStore from "../store/galleryStore"; | ||
17 | 16 | ||
18 | @Component({ | 17 | @Component({ |
19 | components: { GallerySearch, GalleryDirectory, GalleryImage }, | 18 | components: { GallerySearch, GalleryDirectory, GalleryPicture }, |
20 | }) | 19 | }) |
21 | export default class Gallery extends Vue { | 20 | export default class Gallery extends Vue { |
22 | @Prop(String) readonly pathMatch!: string; | 21 | @Prop(String) readonly pathMatch!: string; |
23 | 22 | ||
23 | mounted() { | ||
24 | this.pathChanged() | ||
25 | } | ||
26 | |||
27 | @Watch("pathMatch") | ||
28 | pathChanged() { | ||
29 | console.log("Path: ", this.pathMatch); | ||
30 | this.$galleryStore.setCurrentPath(this.pathMatch); | ||
31 | } | ||
32 | |||
24 | get isDirectory(): boolean { | 33 | get isDirectory(): boolean { |
25 | return this.checkType("directory"); | 34 | return this.checkType("directory"); |
26 | } | 35 | } |
27 | 36 | ||
28 | get isImage(): boolean { | 37 | get isPicture(): boolean { |
29 | return this.checkType("image"); | 38 | return this.checkType("picture"); |
30 | } | 39 | } |
31 | 40 | ||
32 | // Results of the search (by tags) | 41 | // Results of the search (by tags) |
@@ -37,17 +46,10 @@ export default class Gallery extends Vue { | |||
37 | return this.aggregateAll(byOperation, intersection, substraction); | 46 | return this.aggregateAll(byOperation, intersection, substraction); |
38 | } | 47 | } |
39 | 48 | ||
40 | // Item pointed by the URL (navigation) | ||
41 | get currentItem(): Gallery.Item | null { | ||
42 | const galleryItemsRoot = this.$galleryStore.galleryItemsRoot; | ||
43 | if (galleryItemsRoot) return GalleryStore.searchCurrentItem(galleryItemsRoot, this.pathMatch); | ||
44 | return null; | ||
45 | } | ||
46 | |||
47 | // --- | 49 | // --- |
48 | 50 | ||
49 | private checkType(type: string): boolean { | 51 | private checkType(type: string): boolean { |
50 | return this.currentItem?.properties.type === type ?? false; | 52 | return this.$galleryStore.currentItem?.properties.type === type ?? false; |
51 | } | 53 | } |
52 | 54 | ||
53 | private extractTagsByOperation(currentTags: Tag.Search[]): Tag.SearchByOperation { | 55 | private extractTagsByOperation(currentTags: Tag.Search[]): Tag.SearchByOperation { |