Newer
Older
<b-container>
<template v-if="selectedShow">
<show-selector
ref="showSelector"
:title="$t('filePlaylistManager.title')"
:callback="showHasSwitched"
/>
<hr />
<jumbotron />
<!-- All the UI for uploading and editing files is only shown if the user

Richard Blechinger
committed
choose to edit files in the jumbotron above -->
<div v-if="mode === 'files'">
<files />
</div>
<!-- All the UI for creating and editing playlists is only shown if the user

Richard Blechinger
committed
choose to edit playlists in the jumbotron above -->
<div v-if="mode === 'playlists'">
<playlists />
</div>
</template>
<div
v-else-if="loaded.shows && !selectedShow"
class="tw-text-center"
v-html="$t('noAssignedShows', { adminUrl })"
/>
</b-container>
</template>
<script>
import { mapGetters } from 'vuex'
import showSelector from '../components/ShowSelector.vue'
import jumbotron from '../components/filemanager/Jumbotron.vue'
import files from '../components/filemanager/Files.vue'
import playlists from '../components/filemanager/Playlists.vue'
export default {
components: {
'show-selector': showSelector,
jumbotron: jumbotron,
files: files,
playlists: playlists,
},
// the data this component will be handling: mostly flags and local versions
// of the data fetched from the AuRa tank API
data() {
return {
adminUrl: `${import.meta.env.VUE_APP_BASEURI_STEERING}/admin`,
// for formatting the buttons - this way we could customize it later
button: {
files: 'info',
playlists: 'outline-info',
},
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
},
computed: {
...mapGetters({
selectedShow: 'shows/selectedShow',
mode: 'fileManagerMode',
}),
},
// Right after this component is set up, we want to fetch all available shows
// from the AuRa tank module. This works quite similar to the ShowManager.
// We also want to load the files and playlists as soon as the shows are
// loaded.
created() {
this.$store.dispatch('shows/fetchShows', {
callback: () => {
if (!this.selectedShow) {
return
}
this.$nextTick(() => {
this.showHasSwitched()
this.$refs.showSelector.updateInputSelector()
})
},
})
},
// Now for our hotchpotch of methods, mostly for fetching data from and
// posting/updating data to the AuRa tank API
methods: {
// This switches the UI elements to reflect another show and fetches all
// relevent data from the tank API.
showHasSwitched() {
this.$store.dispatch('files/fetchFiles', {
slug: this.selectedShow.slug,
})
this.$store.dispatch('playlists/fetch', {
slug: this.selectedShow.slug,
})
},
},
}
</script>
<style>
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
div.filelistbox {
border: 1px solid #e9ecef;
border-radius: 0.3rem;
padding: 1rem 2rem;
}
.stateNew {
color: red;
font-weight: bold;
}
.stateRunning {
color: darkgreen;
}
.stateUndefined {
color: orange;
font-weight: bold;
}
.upDownArrows {
font-size: 1.15rem;
}
.modalPlaylistRows {
padding: 0.2rem 0;
}