aboutsummaryrefslogtreecommitdiff
path: root/viewer/src
diff options
context:
space:
mode:
authorpacien2020-05-19 21:11:07 +0200
committerNotkea2020-05-22 01:02:18 +0200
commit9adf35eef92ee0842a080a6462ba13d4a17eb5e3 (patch)
tree5aa812a63a5553ee2d71ab0085117bb60bd83db7 /viewer/src
parentbc640b96052d657d22e0afbc05dc1ab4d0289bfb (diff)
downloadldgallery-9adf35eef92ee0842a080a6462ba13d4a17eb5e3.tar.gz
viewer/LdAudioViewer: add audio viewer
GitHub: closes #158
Diffstat (limited to 'viewer/src')
-rw-r--r--viewer/src/components/LdAudioViewer.vue56
-rw-r--r--viewer/src/views/GalleryNavigation.vue1
2 files changed, 57 insertions, 0 deletions
diff --git a/viewer/src/components/LdAudioViewer.vue b/viewer/src/components/LdAudioViewer.vue
new file mode 100644
index 0000000..d115a34
--- /dev/null
+++ b/viewer/src/components/LdAudioViewer.vue
@@ -0,0 +1,56 @@
1<!--
2-- ldgallery - A static generator which turns a collection of tagged
3-- pictures into a searchable web gallery.
4--
5-- Copyright (C) 2020 Pacien TRAN-GIRARD
6--
7-- This program is free software: you can redistribute it and/or modify
8-- it under the terms of the GNU Affero General Public License as
9-- published by the Free Software Foundation, either version 3 of the
10-- License, or (at your option) any later version.
11--
12-- This program is distributed in the hope that it will be useful,
13-- but WITHOUT ANY WARRANTY; without even the implied warranty of
14-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15-- GNU Affero General Public License for more details.
16--
17-- You should have received a copy of the GNU Affero General Public License
18-- along with this program. If not, see <https://www.gnu.org/licenses/>.
19-->
20
21<template>
22 <div class="flex-column container-vh-centering">
23 <ld-thumbnail :item="audioItem" />
24 <audio :class="$style.player" :src="itemResourceUrl()" preload="auto" controls>
25 <a :download="itemFileName()" :href="itemResourceUrl()">
26 {{ $t("download.download-file-fmt", [itemFileName()]) }}
27 </a>
28 </audio>
29 </div>
30</template>
31
32<script lang="ts">
33import { Component, Prop, Vue } from "vue-property-decorator";
34import Navigation from "@/services/navigation";
35
36@Component export default class LdAudioViewer extends Vue {
37 @Prop({ required: true }) readonly audioItem!: Gallery.Audio;
38
39 itemResourceUrl(): string {
40 return this.$galleryStore.resourceRoot + this.audioItem.properties.resource;
41 }
42
43 itemFileName(): string {
44 return Navigation.getFileName(this.audioItem);
45 }
46}
47</script>
48
49<style lang="scss" module>
50.player {
51 width: 100%;
52 max-width: 500px;
53 margin-top: 1em;
54 text-align: center; // for fallback download link
55}
56</style>
diff --git a/viewer/src/views/GalleryNavigation.vue b/viewer/src/views/GalleryNavigation.vue
index df738b8..9fc40e1 100644
--- a/viewer/src/views/GalleryNavigation.vue
+++ b/viewer/src/views/GalleryNavigation.vue
@@ -27,6 +27,7 @@
27 <ld-plain-text-viewer v-else-if="checkType('plaintext')" :plain-text-item="$galleryStore.currentItem" /> 27 <ld-plain-text-viewer v-else-if="checkType('plaintext')" :plain-text-item="$galleryStore.currentItem" />
28 <ld-pdf-viewer v-else-if="checkType('pdf')" :pdf-item="$galleryStore.currentItem" /> 28 <ld-pdf-viewer v-else-if="checkType('pdf')" :pdf-item="$galleryStore.currentItem" />
29 <ld-video-viewer v-else-if="checkType('video')" :video-item="$galleryStore.currentItem" /> 29 <ld-video-viewer v-else-if="checkType('video')" :video-item="$galleryStore.currentItem" />
30 <ld-audio-viewer v-else-if="checkType('audio')" :audio-item="$galleryStore.currentItem" />
30 <ld-download v-else :item="$galleryStore.currentItem" /> 31 <ld-download v-else :item="$galleryStore.currentItem" />
31 </div> 32 </div>
32</template> 33</template>