From 4393f8f25025ea600dae30be2d6ad9067496ba40 Mon Sep 17 00:00:00 2001 From: Zero~Informatique Date: Sat, 20 Jun 2020 06:04:39 +0200 Subject: viewer: component dispatch (no functional change) a cleaner way to add new components to LdGallery --- .../src/components/item_handlers/LdAudioViewer.vue | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 viewer/src/components/item_handlers/LdAudioViewer.vue (limited to 'viewer/src/components/item_handlers/LdAudioViewer.vue') diff --git a/viewer/src/components/item_handlers/LdAudioViewer.vue b/viewer/src/components/item_handlers/LdAudioViewer.vue new file mode 100644 index 0000000..8c8ce2b --- /dev/null +++ b/viewer/src/components/item_handlers/LdAudioViewer.vue @@ -0,0 +1,58 @@ +<!-- +-- ldgallery - A static generator which turns a collection of tagged +-- pictures into a searchable web gallery. +-- +-- Copyright (C) 2020 Pacien TRAN-GIRARD +-- +-- 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 <https://www.gnu.org/licenses/>. +--> + +<template> + <div class="flex-column container-vh-centering"> + <ld-thumbnail :item="item" /> + <audio :class="$style.player" :src="itemResourceUrl" preload="auto" controls> + <a + :download="itemFileName" + :href="itemResourceUrl" + >{{ $t("download.download-file-fmt", [itemFileName]) }}</a> + </audio> + </div> +</template> + +<script lang="ts"> +import { Component, Prop, Vue } from "vue-property-decorator"; +import Navigation from "@/services/navigation"; + +@Component +export default class LdAudioViewer extends Vue { + @Prop({ required: true }) readonly item!: Gallery.Audio; + + get itemResourceUrl(): string { + return this.$galleryStore.resourceRoot + this.item.properties.resource; + } + + get itemFileName(): string { + return Navigation.getFileName(this.item); + } +} +</script> + +<style lang="scss" module> +.player { + width: 100%; + max-width: 500px; + margin-top: 1em; + text-align: center; // for fallback download link +} +</style> -- cgit v1.2.3