From 9b70f7e285b8cc71b24bc2890d1259da775798cd Mon Sep 17 00:00:00 2001 From: Christoph Stahl <christoph.stahl@tu-dortmund.de> Date: Fri, 23 May 2025 15:47:06 +0200 Subject: [PATCH] Add button to send a song to the waiting room --- src/App.vue | 7 +++++++ src/components/DesktopLayout.vue | 3 ++- src/components/Entry.vue | 8 +++++++- src/components/MobileLayout.vue | 3 ++- src/components/QueueDesktop.vue | 3 ++- src/components/QueueInner.vue | 3 ++- src/components/QueueTab.vue | 3 ++- src/main.js | 3 ++- 8 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/App.vue b/src/App.vue index 995146a..ba4f34f 100644 --- a/src/App.vue +++ b/src/App.vue @@ -94,6 +94,11 @@ function waitingRoomToQueue(uuid) { state.socket.emit("waiting-room-to-queue", {"uuid": uuid}) } +function queueToWaitingRoom(uuid) { + console.log(uuid) + state.socket.emit("queue-to-waiting-room", {"uuid": uuid}) +} + function append(entry) { checked_append_with_name(entry, state.value.name) } @@ -295,6 +300,7 @@ function joinRoom() { @moveUp="moveUp" @moveTo="moveTo" @waitingRoomToQueue="waitingRoomToQueue" + @queueToWaitingRoom="queueToWaitingRoom" /> <DesktopLayout v-show="!state.is_small" @@ -307,6 +313,7 @@ function joinRoom() { @moveUp="moveUp" @moveTo="moveTo" @waitingRoomToQueue="waitingRoomToQueue" + @queueToWaitingRoom="queueToWaitingRoom" /> <WelcomeReveal v-if="!state.joined" diff --git a/src/components/DesktopLayout.vue b/src/components/DesktopLayout.vue index cd53998..5e14372 100644 --- a/src/components/DesktopLayout.vue +++ b/src/components/DesktopLayout.vue @@ -4,7 +4,7 @@ import QueueDesktop from './QueueDesktop.vue' import RecentDesktop from './RecentDesktop.vue' const props = defineProps(['state']); -const emit = defineEmits(['update:searchTerm', 'search', 'append', 'skip', 'skipCurrent', 'moveUp', 'waitingRoomToQueue', 'moveTo']) +const emit = defineEmits(['update:searchTerm', 'search', 'append', 'skip', 'skipCurrent', 'moveUp', 'waitingRoomToQueue', 'queueToWaitingRoom', 'moveTo']) </script> @@ -21,6 +21,7 @@ const emit = defineEmits(['update:searchTerm', 'search', 'append', 'skip', 'skip @moveTo="(data) => $emit('moveTo', data)" @skipCurrent="$emit('skipCurrent')" @waitingRoomToQueue="(uuid) => $emit('waitingRoomToQueue', uuid)" + @queueToWaitingRoom="(uuid) => $emit('queueToWaitingRoom', uuid)" /> <RecentDesktop :recent="state.recent" :admin="state.admin" /> </div> diff --git a/src/components/Entry.vue b/src/components/Entry.vue index c3ee5bf..368397b 100644 --- a/src/components/Entry.vue +++ b/src/components/Entry.vue @@ -1,7 +1,7 @@ <script setup> import { computed } from 'vue' const props = defineProps(['admin', 'entry', 'current', 'firstStartedAt', 'offset', 'currentTime', 'waitingRoom']) -const emits = defineEmits(['skip', 'skipCurrent', 'moveUp', 'waitingRoomToQueue', 'moveTo']) +const emits = defineEmits(['skip', 'skipCurrent', 'moveUp', 'waitingRoomToQueue', 'queueToWaitingRoom', 'moveTo']) function skip() { if(props.current) { @@ -88,6 +88,12 @@ const dragleave = (e) => { <button v-if="!waitingRoom" class="button alert fright" @click="skip"> <font-awesome-icon icon="fa-solid fa-times" /> </button> + <button + class="button success fright" + v-if="!waitingRoom && !current" + @click="$emit('queueToWaitingRoom', entry.uuid)" > + <font-awesome-icon icon="fa-solid fa-arrows-down-to-line" /> + </button> <button class="button success fright" v-if="waitingRoom" diff --git a/src/components/MobileLayout.vue b/src/components/MobileLayout.vue index 4a9d1bb..1ccedfe 100644 --- a/src/components/MobileLayout.vue +++ b/src/components/MobileLayout.vue @@ -5,7 +5,7 @@ import RecentTab from './RecentTab.vue' import TabHeader from './TabHeader.vue' const props = defineProps(['state']); -const emit = defineEmits(['update:searchTerm', 'search', 'append', 'skip', 'skipCurrent', 'moveUp', 'waitingRoomToQueue', 'moveTo']) +const emit = defineEmits(['update:searchTerm', 'search', 'append', 'skip', 'skipCurrent', 'moveUp', 'waitingRoomToQueue', 'queueToWaitingRoom', 'moveTo']) </script> @@ -29,6 +29,7 @@ const emit = defineEmits(['update:searchTerm', 'search', 'append', 'skip', 'skip @moveTo="(data) => $emit('moveTo', data)" @skipCurrent="$emit('skipCurrent')" @waitingRoomToQueue="(uuid) => $emit('waitingRoomToQueue', uuid)" + @queueToWaitingRoom="(uuid) => $emit('queueToWaitingRoom', uuid)" /> <RecentTab :recent="state.recent" :admin="state.admin" /> </div> diff --git a/src/components/QueueDesktop.vue b/src/components/QueueDesktop.vue index 61f8d1f..9759f0b 100644 --- a/src/components/QueueDesktop.vue +++ b/src/components/QueueDesktop.vue @@ -2,7 +2,7 @@ import QueueInner from './QueueInner.vue' const props = defineProps(['queue', 'waiting_room', 'admin', 'waiting_room_policy']); -const emits = defineEmits(['skip', 'skipCurrent', 'moveUp', 'waitingRoomToQueue', 'moveTo']) +const emits = defineEmits(['skip', 'skipCurrent', 'moveUp', 'waitingRoomToQueue', 'queueToWaitingRoom', 'moveTo']) </script> <template> @@ -18,6 +18,7 @@ const emits = defineEmits(['skip', 'skipCurrent', 'moveUp', 'waitingRoomToQueue' @moveTo="(data) => $emit('moveTo', data)" @skipCurrent="$emit('skipCurrent')" @waitingRoomToQueue="(uuid) => $emit('waitingRoomToQueue', uuid)" + @queueToWaitingRoom="(uuid) => $emit('queueToWaitingRoom', uuid)" /> </div> </template> diff --git a/src/components/QueueInner.vue b/src/components/QueueInner.vue index 88142ca..45ac754 100644 --- a/src/components/QueueInner.vue +++ b/src/components/QueueInner.vue @@ -3,7 +3,7 @@ import { onMounted, reactive } from 'vue' import Entry from './Entry.vue' const props = defineProps(['queue', 'waiting_room', 'admin', 'waiting_room_policy']); -const emits = defineEmits(['skip', 'skipCurrent', 'moveUp', 'waitingRoomToQueue', 'moveTo']) +const emits = defineEmits(['skip', 'skipCurrent', 'moveUp', 'waitingRoomToQueue', 'queueToWaitingRoom', 'moveTo']) let currentTime = reactive({time: Date.now()}) @@ -44,6 +44,7 @@ function offset(index) { @skipCurrent="$emit('skipCurrent')" @moveUp="(uuid) => $emit('moveUp', uuid)" @moveTo="(data) => $emit('moveTo', data)" + @queueToWaitingRoom="(uuid) => $emit('queueToWaitingRoom', uuid)" /> </ul> <div v-show="waiting_room_policy" class="header">Waiting room</div> diff --git a/src/components/QueueTab.vue b/src/components/QueueTab.vue index 5a782f7..46b2f52 100644 --- a/src/components/QueueTab.vue +++ b/src/components/QueueTab.vue @@ -2,7 +2,7 @@ import QueueInner from './QueueInner.vue' const props = defineProps(['queue', 'waiting_room', 'admin', 'waiting_room_policy']); -const emits = defineEmits(['skip', 'skipCurrent', 'moveUp', 'waitingRoomToQueue', 'moveTo']) +const emits = defineEmits(['skip', 'skipCurrent', 'moveUp', 'waitingRoomToQueue', 'queueToWaitingRoom', 'moveTo']) </script> <template> @@ -16,6 +16,7 @@ const emits = defineEmits(['skip', 'skipCurrent', 'moveUp', 'waitingRoomToQueue' @moveUp="(uuid) => $emit('moveUp', uuid)" @skipCurrent="$emit('skipCurrent')" @waitingRoomToQueue="(uuid) => $emit('waitingRoomToQueue', uuid)" + @queueToWaitingRoom="(uuid) => $emit('queueToWaitingRoom', uuid)" @moveTo="(data) => $emit('moveTo', data)" /> </div> diff --git a/src/main.js b/src/main.js index 44df7bf..caf3004 100644 --- a/src/main.js +++ b/src/main.js @@ -6,7 +6,7 @@ import App from './App.vue' import Main from './Main.vue' import { library } from '@fortawesome/fontawesome-svg-core' import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' -import { faMagnifyingGlass, faList, faChair, faArrowUp, faHistory, faPlus, faStepForward, faTimes, faArrowsUpToLine } from '@fortawesome/free-solid-svg-icons' +import { faMagnifyingGlass, faList, faChair, faArrowUp, faHistory, faPlus, faStepForward, faTimes, faArrowsUpToLine, faArrowsDownToLine } from '@fortawesome/free-solid-svg-icons' import { faYoutube } from '@fortawesome/free-brands-svg-icons' import 'foundation-sites/dist/css/foundation.min.css' @@ -21,6 +21,7 @@ library.add(faTimes) library.add(faArrowUp) library.add(faChair) library.add(faArrowsUpToLine) +library.add(faArrowsDownToLine) window.jQuery = jquery; window.$ = jquery; -- GitLab