From 4e26f5e563780e04ea9f1064073a1fb216f40ffc Mon Sep 17 00:00:00 2001 From: deurstann <tristan.derouet@gmail.com> Date: Tue, 2 Feb 2021 23:10:40 +0100 Subject: [PATCH] Added working button for karas in Queue and DB and Drag and Drop from DB to Queue --- instance/main.js | 83 ++++++++++++++----- instance/views/karaDBListItem.ejs | 18 ++++ ...karaListItem.ejs => karaQueueListItem.ejs} | 4 +- main.js | 26 +++++- 4 files changed, 104 insertions(+), 27 deletions(-) create mode 100644 instance/views/karaDBListItem.ejs rename instance/views/{karaListItem.ejs => karaQueueListItem.ejs} (80%) diff --git a/instance/main.js b/instance/main.js index d3ad286..0311905 100644 --- a/instance/main.js +++ b/instance/main.js @@ -130,7 +130,7 @@ ipcRenderer.on('reload-db-responce', (event, arg) => { document.getElementById('panelLeft').innerHTML = ''; arg.forEach(kara => { ejs.renderFile( - __dirname + '/views/karaListItem.ejs', + __dirname + '/views/karaDBListItem.ejs', { kara: kara }, (err, data) => { if (err) logger.error('instance', err); @@ -140,16 +140,22 @@ ipcRenderer.on('reload-db-responce', (event, arg) => { } ); }); - [].forEach.call(document.querySelectorAll('#panelLeft .karaCard'), a); + [].forEach.call( + document.querySelectorAll('#panelLeft .karaCard'), + addDBKaraEventHandlers + ); }); +var countKaraInQueue = 0; /* Create the right panel: the queue */ ipcRenderer.on('reload-queue-responce', (event, arg) => { logger.debug('instance', `Web page got reload-queue`); + countKaraInQueue = 0; document.getElementById('panelRight').innerHTML = ''; arg.forEach(kara => { + countKaraInQueue++; ejs.renderFile( - __dirname + '/views/karaListItem.ejs', + __dirname + '/views/karaQueueListItem.ejs', { kara: kara }, (err, data) => { if (err) logger.error('instance', err); @@ -159,39 +165,64 @@ ipcRenderer.on('reload-queue-responce', (event, arg) => { } ); }); - logger.info('Time', new Date().getTime() - time); [].forEach.call( document.querySelectorAll('#panelRight .karaCard'), - addQueueDragAndDropHandlers + addQueueKaraEventHandlers ); }); -ipcRenderer.on('queue-moved-responce', (event, arg) => { +/*ipcRenderer.on('queue-moved-responce', (event, arg) => { logger.info('Time', new Date().getTime() - time); ipcRenderer.send('reload-queue-request'); -}); +});*/ -var isDnDFromDB = false; -var date = new Date(); -var time = 0; -function addDBDragAndDropHandlers(element) { - isDnDFromDB = true; +function addDBKaraEventHandlers(element) { + element.addEventListener('dragstart', onDragStartDB, false); + element.addEventListener('dragend', onDragEnd, false); + element.getElementsByClassName('karaAddBtn')[0] + .addEventListener('click',()=>ipcRenderer.send('add-kara-queue-id', { + id:element.getElementsByClassName('karaID')[0].innerText + })); + element.getElementsByClassName('karaInsertBtn')[0] + .addEventListener('click',()=>ipcRenderer.send('insert-kara-queue-id', { + id:element.getElementsByClassName('karaID')[0].innerText + })); } -function addQueueDragAndDropHandlers(element) { - element.addEventListener('dragstart', onDragStart, false); +function addQueueKaraEventHandlers(element) { + element.addEventListener('dragstart', onDragStartQueue, false); element.addEventListener('dragenter', onDragEnter, false); element.addEventListener('dragover', onDragOver, false); element.addEventListener('dragleave', ondragLeave, false); element.addEventListener('drop', onDrop, false); element.addEventListener('dragend', onDragEnd, false); + element.getElementsByClassName('karaDeleteBtn')[0] + .addEventListener('click',()=>ipcRenderer.send('delete-kara-queue-pos', { + position:element.getElementsByClassName('karaPosition')[0].innerText + })); + element.getElementsByClassName('karaPlayBtn')[0] + .addEventListener('click',()=>ipcRenderer.send('play-kara-queue-pos', { + position:element.getElementsByClassName('karaPosition')[0].innerText + })); } var dragCounter = 0; var leavedElement; +var isDnDFromDB = false; + +function onDragStartDB(event) { + isDnDFromDB = true; + event.dataTransfer.effectAllowed = 'move'; + event.currentTarget.style.opacity = 0.4; + //logger.debug(event.currentTarget.childElementCount+"\n"); + event.dataTransfer.setData( + 'text/plain', + event.currentTarget.getElementsByClassName('karaID')[0].innerText + ); +} -function onDragStart(event) { +function onDragStartQueue(event) { event.dataTransfer.effectAllowed = 'move'; event.currentTarget.style.opacity = 0.4; //logger.debug(event.currentTarget.childElementCount+"\n"); @@ -228,12 +259,22 @@ function ondragLeave(event) { function onDrop(event) { //logger.debug("salut", "salut"); event.currentTarget.style.borderTop = ''; - time = new Date().getTime(); - ipcRenderer.send('queue-moved-kara', { - from: event.dataTransfer.getData('text/plain'), - to: event.currentTarget.getElementsByClassName('karaPosition')[0] - .innerText, - }); + if(isDnDFromDB) { + ipcRenderer.send('add-kara-queue-pos', { + id: event.dataTransfer.getData('text/plain'), + position: event.currentTarget.getElementsByClassName('karaPosition')[0] + .innerText, + queueSize: countKaraInQueue, + }); + } + else { + ipcRenderer.send('queue-moved-kara', { + from: event.dataTransfer.getData('text/plain'), + to: event.currentTarget.getElementsByClassName('karaPosition')[0] + .innerText, + }); + } + isDnDFromDB = false; return false; } diff --git a/instance/views/karaDBListItem.ejs b/instance/views/karaDBListItem.ejs new file mode 100644 index 0000000..8f29e2c --- /dev/null +++ b/instance/views/karaDBListItem.ejs @@ -0,0 +1,18 @@ +<%# vim: ts=4 syntax=html + The template for the kara card in lists %> +<li class="card p-2 bd-highlight shadow-none d-flex flex-row bd-highlight mb-3 karaCard" draggable="true"> + <span hidden class = "karaID"><%= kara.id %></span> + <span class="karaElement text-uppercase p-2 bd-highlight badge badge-light"><b><%= kara.language %></b></span> + <span class="karaElement text-uppercase p-2 bd-highlight badge badge-light"><b><%= kara.cat %></b></span> + <span class="karaElement text-uppercase p-2 bd-highlight badge badge-light"><b><%= kara.type %></b></span> + <span class="karaElement p-2 bd-highlight mr-auto"><b><%= kara.source %><br> <%= kara.title %></b> <i>[<%= kara.author %>]</i></span> + <% if (kara.hasOwnProperty('position')) { %> + <span class="karaElement p-3 bd-highlight karaPosition"><b><%= kara.position %></b></span> + <% } %> + <div class="karaElement p-2 bd-highlight"> + <div class="d-flex flex-row bd-highlight mb-3 btn-group karaActionBtnGroup" role="group"> + <button class="btn btn-outline-light karaActionBtn karaAddBtn" title="Add"><i class="fas fa-plus"></i></button> + <button class="btn btn-outline-light karaActionBtn karaInsertBtn" title="Insert"><i class="fas fa-level-up-alt"></i></button> + </div> + </div> +</li> diff --git a/instance/views/karaListItem.ejs b/instance/views/karaQueueListItem.ejs similarity index 80% rename from instance/views/karaListItem.ejs rename to instance/views/karaQueueListItem.ejs index 85bced1..dea8ed8 100644 --- a/instance/views/karaListItem.ejs +++ b/instance/views/karaQueueListItem.ejs @@ -11,8 +11,8 @@ <% } %> <div class="karaElement p-2 bd-highlight"> <div class="d-flex flex-row bd-highlight mb-3 btn-group karaActionBtnGroup" role="group"> - <button class="btn btn-outline-light karaActionBtn"><i class="fas fa-plus"></i></button> - <button class="btn btn-outline-light karaActionBtn"><i class="fas fa-level-up-alt"></i></button> + <button class="btn btn-outline-light karaActionBtn karaPlayBtn" title="Play"><i class="fas fa-play"></i></button> + <button class="btn btn-outline-light karaActionBtn karaDeleteBtn" title="Delete"><i class="fas fa-times"></i></button> </div> </div> </li> diff --git a/main.js b/main.js index 56ff2da..551b9be 100644 --- a/main.js +++ b/main.js @@ -216,10 +216,28 @@ ipcMain.on('verify-queue-reloaded-request', (event, arg) => { }); ipcMain.on('queue-moved-kara', (event, movement) => { - logger.debug('bonjour', 'bonjour'); if (movement.to != movement.from) { - lkt.commandMove(movement.from, movement.to).then(arg => { - event.reply('queue-moved-responce'); - }); + lkt.commandMove(movement.from, movement.to); } }); + +ipcMain.on('play-kara-queue-pos', (event, arg) => { + lkt.commandPlayPos(arg.position); +}); + +ipcMain.on('add-kara-queue-id', (event, arg) => { + lkt.commandQueueAddId(arg.id); +}); + +ipcMain.on('insert-kara-queue-id', (event, arg) => { + lkt.commandQueueInsertId(arg.id); +}); + +ipcMain.on('delete-kara-queue-pos', (event, arg) => { + logger.info("cc"); + lkt.commandQueueDelPos(arg.position); +}); + +ipcMain.on('add-kara-queue-pos', (event,addparams) => { + lkt.commandQueueAddId(addparams.id).then(() => lkt.commandMove(addparams.queueSize+1,addparams.position)); +}) \ No newline at end of file -- GitLab