diff --git a/common/db.js b/common/db.js index 1e795a30bbb803435a1809d45fc93dc15d7944e0..138ae129e5eb27f572125c38f6d7fe0ff6fd415c 100644 --- a/common/db.js +++ b/common/db.js @@ -123,6 +123,42 @@ class KaraDatabase { return __getRecords(this.m_db); } + /* List all the next karas in the queue. + * => a promize, callback with [(id: Int, string, cat, type, language, + * author, title, source, position: Int)] */ + queueAll() { + var __ret = []; + let __sqlQuery = `WITH content AS ( + SELECT kara.id AS id, string, + category AS cat, + (song_type || song_number) AS type, + language, author_name AS author, + song_name AS title, source_name AS source, + position + FROM queue + JOIN kara ON kara_id = kara.id + GROUP BY position ORDER BY position ASC, priority DESC) + SELECT id, string, position, cat, type, language, author, source, title + FROM content;`; + + function __getRecords(db) { + return new Promise(resolv => { + db.all(__sqlQuery, [], (err, rows) => { + if (err) { + logger.error('db', err); + throw err; + } + rows.forEach(row => { + __ret.push(row); + }); + resolv(__ret); + }); + }); + } + + return __getRecords(this.m_db); + } + /* List all the next karas in the queue. * - first: Integer => the first kara to consider being in the queue (the * current one, starts ad 0) diff --git a/instance/main.js b/instance/main.js index 14b697536d9171f7ecfa072e4e6614528413940a..c0f47c35292fe83fdeb8b3eb2370aac0601ec9cf 100644 --- a/instance/main.js +++ b/instance/main.js @@ -94,8 +94,9 @@ window.onload = () => { $('#filterInput').on('keypress', e => { /* On 'Return'. */ if (e.which != 13) return; + logger.debug('instance', `Send filter for: ${$('#filterInput').val()}`); ipcRenderer.send('reload-db-request', { - search: $('#filterInput').val(), + search: `${$('#filterInput').val()}`, }); }); @@ -188,9 +189,7 @@ ipcRenderer.on('reload-db-responce', (event, arg) => { arg.forEach(kara => { ejs.renderFile(__dirname + '/views/karaDBListItem.ejs', { kara: kara }, (err, data) => { if (err) logger.error('instance', err); - document.getElementById('panelLeft').innerHTML = ` - ${document.getElementById('panelLeft').innerHTML} - ${data}`; + $('#panelLeft').append(data); }); }); [].forEach.call(document.querySelectorAll('#panelLeft .karaCard'), addDBKaraEventHandlers); @@ -205,9 +204,7 @@ ipcRenderer.on('reload-queue-responce', (event, arg) => { countKaraInQueue++; ejs.renderFile(__dirname + '/views/karaQueueListItem.ejs', { kara: kara }, (err, data) => { if (err) logger.error('instance', err); - document.getElementById('panelRight').innerHTML = ` - ${document.getElementById('panelRight').innerHTML} - ${data}`; + $('#panelRight').append(data); }); }); [].forEach.call(document.querySelectorAll('#panelRight .karaCard'), addQueueKaraEventHandlers); diff --git a/main.js b/main.js index a6966b581e9d585a6894d3eb07a833fb74af5209..563c60680b6816f13559e8424d03fef14dfd8aee 100644 --- a/main.js +++ b/main.js @@ -197,6 +197,9 @@ ipcMain.on('toggle-client-view', (event, arg) => { * Messages from the main window * *********************************/ +var songTimeData = { elapsed: 0, total: 100, state: 'stop', song: '0' }; +var counterTime = 0; + ipcMain.on('cmd-play', (event, arg) => { lkt.commandPlay().then(arg => { logger.debug('main', 'Returned from cmd-play'); @@ -220,20 +223,20 @@ ipcMain.on('reload-db-request', (event, arg) => { var callback = karas => { event.reply('reload-db-responce', karas); }; - if (arg && arg.search) { + if (arg && (arg.search || arg.search == '')) { __lastFilter = arg.search; logger.debug('main', `Reload DB with search '${arg}'`); - db.search(__lastFilter, 0, 15).then(callback); + db.search(__lastFilter, 0, 100).then(callback); } else { logger.debug('main', `Reload DB with last filter '${__lastFilter}'`); - db.search(__lastFilter, 0, 15).then(callback); + db.search(__lastFilter, 0, 100).then(callback); } }); /* Send the queue to the webpage when asked to */ ipcMain.on('reload-queue-request', (event, arg) => { logger.info('main', 'Reloading next karas in queue'); - db.queue(0, 100).then(karas => { + db.queueAll().then(karas => { event.reply('reload-queue-responce', karas); }); }); @@ -241,7 +244,7 @@ ipcMain.on('reload-queue-request', (event, arg) => { ipcMain.on('verify-queue-reloaded-request', (event, arg) => { if (lkt.isQueueUpdated()) { lkt.setQueueUpdated(false); - db.queue(0, 100).then(karas => { + db.queueAll().then(karas => { event.reply('reload-queue-responce', karas); }); } @@ -273,8 +276,6 @@ ipcMain.on('add-kara-queue-pos', (event, addparams) => { lkt.commandQueueAddId(addparams.id).then(() => lkt.commandMove(addparams.queueSize + 1, addparams.position)); }); -var songTimeData = { elapsed: 0, total: 100, state: 'stop', song: '0' }; -var counterTime = 0; ipcMain.on('get-song-time-data', (event, arg) => { var newSongTimeData = lkt.getSongTimeData(); if (newSongTimeData.elapsed != songTimeData.elapsed || newSongTimeData.song != songTimeData.song) {