hw-gs-player

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 4cf6dcd3b7f5e3ffe90b98416ef2f098203c585d
parent 05f4a82d09766ef293f4f26abff30ab9dc930a96
Author: Sunny <kajimalu10@gmail.com>
Date:   Fri, 28 Mar 2025 23:46:29 +0900

load queue dynamically

Diffstat:
Msrc/components/TrackList.vue | 30+++++++++++++++---------------
Msrc/queue.ts | 66++++++++++++++++++++++++++++++++++--------------------------------
2 files changed, 49 insertions(+), 47 deletions(-)

diff --git a/src/components/TrackList.vue b/src/components/TrackList.vue @@ -1,6 +1,8 @@ <script setup lang="ts"> +import { computed } from "vue"; import queue from '../queue'; -const queueTitleList = queue.get_queueTitleList(); + +const queueTitleList = computed(() => queue.get_queueTitleList()); </script> <template> @@ -8,12 +10,10 @@ const queueTitleList = queue.get_queueTitleList(); <h1>Tracklist</h1> <table> <tbody> - <div v-for="(Title,index) in queueTitleList"> - <tr> - <td>{{ index }}</td> - <td>{{ Title }}</td> - </tr> - </div> + <tr v-for="(Title, index) in queueTitleList" :key="index"> + <td>{{ index }}</td> + <td>{{ Title }}</td> + </tr> </tbody> </table> </div> @@ -25,13 +25,13 @@ const queueTitleList = queue.get_queueTitleList(); /* 2column style (PC) */ @media (min-aspect-ratio: 1/1) { .fstracklist-container .page { - position: block; - top: 0; - padding: 30px; - z-index: 30; - width: calc(50vw - 60px); - height: calc(100% - 60px); - background: #000000; -} + position: block; + top: 0; + padding: 30px; + z-index: 30; + width: calc(50vw - 60px); + height: calc(100% - 60px); + background: #000000; + } } </style> \ No newline at end of file diff --git a/src/queue.ts b/src/queue.ts @@ -2,39 +2,39 @@ This Script manages the queue for play. */ +import { ref } from "vue"; + export interface Queue { videoId: string; SongName: string; } -import { ref } from "vue"; - -let queue: Queue[] = []; -let albumTitle: string = "Unknown Album"; -let nextSong: string = ""; -let playerRenderKey = ref(0); -let isLoop = ref(false); -let isFavorite = ref(false); +const queue = ref<Queue[]>([]); +const albumTitle = ref<string>("Unknown Album"); +const nextSong = ref<string>(""); +const playerRenderKey = ref(0); +const isLoop = ref(false); +const isFavorite = ref(false); function get_albumTitle(): string { - return albumTitle; + return albumTitle.value; } function get_next(): string | null { console.log("get_next was called"); if (isLoop.value) { playerRenderKey.value += 1; - return queue[0]?.videoId || null; + return queue.value[0]?.videoId || null; } else { - if (queue.length === 1) { + if (queue.value.length === 1) { console.log("queue was ended"); return null; } else { - nextSong = queue[1].videoId; - queue.shift(); - console.log("i will play " + nextSong); + nextSong.value = queue.value[1].videoId; + queue.value.shift(); + console.log("i will play " + nextSong.value); playerRenderKey.value += 1; - return nextSong; + return nextSong.value; } } } @@ -42,25 +42,25 @@ function get_next(): string | null { function get_nowSong(): Queue { const favoriteList: Queue[] = JSON.parse(localStorage.getItem("favorite") || "[]"); for (let i = 0; i < favoriteList.length; i++) { - if (favoriteList[i].videoId === queue[0].videoId) { + if (favoriteList[i].videoId === queue.value[0]?.videoId) { isFavorite.value = true; break; } } console.log("isFavorite is " + isFavorite.value); - return queue.length > 0 ? queue[0] : { videoId: "", SongName: "" }; + return queue.value.length > 0 ? queue.value[0] : { videoId: "", SongName: "" }; } function add_album(Album: Queue[], AlbumTitle: string) { - queue = Album; - albumTitle = AlbumTitle; - console.log(queue.map((queue) => queue.SongName)); + queue.value = [...Album]; + albumTitle.value = AlbumTitle; + console.log(queue.value.map((queue) => queue.SongName)); playerRenderKey.value += 1; } function del_all() { - queue = []; - albumTitle = "Unknown Album"; + queue.value = []; + albumTitle.value = "Unknown Album"; } function get_playerRenderKey() { @@ -74,9 +74,10 @@ function onLoopButton() { function get_queueTitleList(): string[] { console.log("get_queueTitleList was called"); - console.log(queue.map((queue) => queue.SongName)); - return queue.map((map) => map.SongName); + console.log(queue.value.map((queue) => queue.SongName)); + return queue.value.map((map) => map.SongName); } + function event_favorite(song: Queue | undefined) { console.log("event_favorite was called"); if (song === undefined) { @@ -85,22 +86,21 @@ function event_favorite(song: Queue | undefined) { } if (!isFavorite.value) { - console.log("this sons is already favorite"); - if(localStorage.getItem("favorite") === null){ + console.log("this song is already favorite"); + if (localStorage.getItem("favorite") === null) { console.log("favorite is null"); localStorage.setItem("favorite", JSON.stringify([song])); - }else{ - console.log("favorite is "+ localStorage.getItem("favorite")); + } else { + console.log("favorite is " + localStorage.getItem("favorite")); let favoriteList = JSON.parse(localStorage.getItem("favorite") || "[]"); favoriteList.push(song); localStorage.setItem("favorite", JSON.stringify(favoriteList)); } isFavorite.value = true; - } - else { + } else { console.log("this song is not favorite"); let favoriteList: Queue[] = JSON.parse(localStorage.getItem("favorite") || "[]"); - for (let i = 0; i < JSON.parse(localStorage.getItem("favorite") || "[]").length; i++) { + for (let i = 0; i < favoriteList.length; i++) { if (favoriteList[i].videoId === song.videoId) { favoriteList.splice(i, 1); localStorage.setItem("favorite", JSON.stringify(favoriteList)); @@ -123,4 +123,5 @@ export default { event_favorite, isLoop, isFavorite, -}; + queue, +};+ \ No newline at end of file