From bebc654fc3b9982327609e6536b82551f1dd9d93 Mon Sep 17 00:00:00 2001 From: deurstann <tristan.derouet@gmail.com> Date: Sun, 21 Feb 2021 23:15:45 +0100 Subject: [PATCH] Creation of a playlist selector --- common/lkt.js | 6 +++--- instance/main.js | 40 +++++++++++++++++++++++---------------- instance/views/panels.ejs | 2 +- main.js | 17 +++++++++++++++-- 4 files changed, 43 insertions(+), 22 deletions(-) diff --git a/common/lkt.js b/common/lkt.js index a87d535..ab909b1 100644 --- a/common/lkt.js +++ b/common/lkt.js @@ -264,7 +264,7 @@ class LktClient { logger.error('Unable to access lektor status:' + error); } - static queue_updated = false; + static queue_updated = true; static setQueueUpdated(state) { this.queue_updated = state; @@ -274,13 +274,13 @@ class LktClient { return this.queue_updated; } - static playlists_updated = false; + static playlists_updated = true; static setPlaylistsUpdated(state) { this.playlists_updated = state; } - static isPlaulistsUpdated() { + static isPlaylistsUpdated() { return this.playlists_updated; } diff --git a/instance/main.js b/instance/main.js index 244ee5a..6a2e604 100644 --- a/instance/main.js +++ b/instance/main.js @@ -1,6 +1,6 @@ /* The main window instance */ -const { ipcRenderer } = require('electron'), +const { ipcRenderer, ipcMain } = require('electron'), logger = require('../common/logger.js'), ejs = require('ejs'), e = require('express'); @@ -90,7 +90,7 @@ window.onload = () => { setTimeout(() => ipcRenderer.send('reload-queue-request'), 1000); //setTimeout(() => ipcRenderer.send('reload-playlist-request'),1000); setInterval(() => ipcRenderer.send('verify-queue-reloaded-request'), 50); - //setInterval(() => ipcRenderer.send('verify-playlist-reloaded-request'),50); + setTimeout(()=>setInterval(() => ipcRenderer.send('verify-playlists-reloaded-request'),50),1500); setInterval(() => ipcRenderer.send('get-song-time-data'), 50); setInterval(() => ipcRenderer.send('get-runnings'), 10000); logger.debug('instance', 'Window loaded'); @@ -137,10 +137,11 @@ window.onload = () => { /* Autofill settings */ autoFillSettings(); + configureLeftPanel(); }; - +var currentPlaylist = ""; /* Create the button list */ -function createButtonList(list) { +function configureLeftPanel() { /* Setup queue/playlist tabls*/ var tabQueue = document.getElementById("queue-tab"); @@ -165,19 +166,11 @@ function createButtonList(list) { playlistPanel.classList.add("show","active"); queuePanel.classList.remove("show","active"); } - var playlistSelect = document.getElementById("playlist-select"); - if(playlistSelect) { - logger.info("cc","cc"); + var playlistSelect = document.getElementById("playlist-selector"); + + playlistSelect.onchange = () => { + currentPlaylist = playlistSelect.value; } - /*playlistSelect.onclick = ()=> {logger.info("cc");}; - playlistSelect.on("changed.bs.select", (e,clickedIndex, newValue, oldValue) => { - logger.info("cc","cc"); - });*/ - playlistSelect.on('changed.bs.select', (e, clickedIndex, newValue, oldValue) => { - logger.info("cc","cc"); - logger.info("cc",newValue); - logger.info("cc",oldValue); - }); } @@ -233,6 +226,21 @@ ipcRenderer.on('send-runnings', (event, arg) => { $('#running-klkt').prop('checked', arg.klkt); }); +ipcRenderer.on('playlists-updated', (event, playlists) => { + var selector = document.getElementById("playlist-selector") + selector.innerHTML = ''; + if(!selector.value) { + selector.innerHTML = '<option selected disabled hidden> Select a playlist</option>' + } + playlists.forEach(playlist => { + optionHtml = `<option value="${playlist}">${playlist}</option>` + selector.innerHTML = ` + ${selector.innerHTML} + ${optionHtml} + ` + }); +}); + function addDBKaraEventHandlers(element) { element.addEventListener('dragstart', onDragStartDB, false); element.addEventListener('dragend', onDragEnd, false); diff --git a/instance/views/panels.ejs b/instance/views/panels.ejs index 3c65259..c7fa4ec 100644 --- a/instance/views/panels.ejs +++ b/instance/views/panels.ejs @@ -20,7 +20,7 @@ </li> <li class="playlistChoice ml-4 mt-1"> <select class="form-control bd-highlight" id="playlist-selector" aria-label="Default select example"> - <option selected>Select a playlist</option> + <option selected disabled hidden>Select a playlist</option> <option value="1">One</option> <option value="2">Two</option> <option value="3">Three</option> diff --git a/main.js b/main.js index c87dab7..6a6e261 100644 --- a/main.js +++ b/main.js @@ -181,9 +181,9 @@ app.on('ready', () => { setTimeout(() => { lkt.statusActualisation(); }, 1500); - setTimeout(() => { + /*setTimeout(() => { lkt.commandPlaylistList(); - }, 1500); + }, 1500);*/ }); /*************** @@ -347,3 +347,16 @@ ipcMain.on('set-settings', (event, arg) => { config.flush(); }); + +ipcMain.on('verify-playlists-reloaded-request',(event,arg) => { + if(lkt.isPlaylistsUpdated()) { + lkt.setPlaylistsUpdated(false); + lkt.commandPlaylistList().then((playlists) => { + event.reply('playlists-updated', playlists); + }); + } +}); + +ipcMain.on('update-playlist-request', (event, arg) => { + +}); \ No newline at end of file -- GitLab