diff --git a/Makefile b/Makefile index 77f8beffb9fff592803829c42a74cf8690cb54ca..dda44c347d060c48418e8d978f9173c1a59829ee 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # On debian, yarn is named yarnpkg YARN=yarnpkg -all: prepare run +all: prepare style run prepare: $(YARN) install diff --git a/client/routes/public.js b/client/routes/public.js index a73c5e0d2bc9116cff4201893df79786698b0609..f97e4f0d532fc081ab2f453c7b46c80ee48c1f18 100644 --- a/client/routes/public.js +++ b/client/routes/public.js @@ -1,12 +1,9 @@ var express = require('express'); var router = express.Router(); -// Simulate karaoke data -dummyKaras = require('../../test/dummyKara.json'); - /* GET on root. */ router.get('/', function (req, res, next) { - res.render('public', { karas: dummyKaras }); + res.render('public', { karas: [{}] }); }); module.exports = router; diff --git a/instance/main.js b/instance/main.js index b813530d9c0b3309991b577736a3b8a204af1427..7e317f3b03b5d49bdc46b2142f65418a390f5a95 100644 --- a/instance/main.js +++ b/instance/main.js @@ -3,45 +3,59 @@ const logger = require('../common/logger.js'); /* prettier-ignore */ const buttonList = [ - ['left', `<i class="fas fa-sync-alt"></i>`, 'reloadDb', 'Reload database' ], - ['left', `<i class="fas fa-play"></i>`, 'commandPlay', 'Play or pause Lektor' ], - ['left', `<i class="fas fa-stop"></i>`, 'commandStop', 'Stop lektor' ], - ['sleft', `<i class="fas fa-search"></i>`, 'selectAdvence', 'Advence search' ], - ['sleft', `<i class="fas fa-database"></i>`, 'selectDatabase', 'Database search' ], - ['sleft', `<i class="fas fa-list"></i>`, 'selectPlaylist', 'Playlist search' ], - ['sleft', `<i class="fas fa-bookmark"></i>`, 'selectPool', 'Pool search' ], - ['right', `<i class="fas fa-user-friends"></i>`, 'openUserView', 'Open client view' ], - ['right', `<i class="fas fa-sync-alt"></i>`, 'reloadQueue', 'Reload the queue' ], - ['right', `<i class="fas fa-window-close"></i>`, 'closeButton', 'Quit Lektor-App' ], + [ 'left', `<i class="fas fa-sync-alt"></i>`, 'reloadDb', 'Reload database' ], + [ 'left', `<i class="fas fa-play"></i>`, 'commandPlay', 'Play or pause Lektor' ], + [ 'left', `<i class="fas fa-stop"></i>`, 'commandStop', 'Stop lektor' ], + [ 'left', `<i class="fas fa-eraser"></i>`, 'commandClear', 'Clear the queue' ], + + [ 'sleft', `<i class="fas fa-search"></i>`, 'selectAdvence', 'Advence search' ], + [ 'sleft', `<i class="fas fa-database"></i>`, 'selectDatabase', 'Database search' ], + [ 'sleft', `<i class="fas fa-tag"></i>`, 'selectPlaylist', 'Playlist search' ], + [ 'sleft', `<i class="fas fa-bookmark"></i>`, 'selectPool', 'Pool search' ], + + [ 'right', `<i class="fas fa-user-friends"></i>`, 'openUserView', 'Open client view' ], + [ 'right', `<i class="fas fa-music"></i>`, 'openMdtView', 'Open metadata view' ], + [ 'right', `<i class="fas fa-sync-alt"></i>`, 'reloadQueue', 'Reload the queue' ], + [ 'right', `<i class="fas fa-window-close"></i>`, 'closeButton', 'Quit Lektor-App' ], ]; +function addIpcToButton(btnId, ipc) { + document.getElementById(btnId).addEventListener('click', () => { + ipc.forEach(ipc => { + ipcRenderer.send(ipc); + }); + }); +} + window.onload = () => { createButtonList(buttonList); - document.getElementById('closeButton').addEventListener('click', () => { - ipcRenderer.send('close-app'); - }); - document.getElementById('commandPlay').addEventListener('click', () => { - logger.debug('Command play !'); - ipcRenderer.send('cmd-play', null); - }); - document.getElementById('commandStop').addEventListener('click', () => { - logger.debug('Command stop !'); - ipcRenderer.send('cmd-stop', null); - }); - document.getElementById('reloadDb').addEventListener('click', () => { - ipcRenderer.send('reload-db-request', null); - ipcRenderer.send('reload-queue-request', null); - }); - document.getElementById('reloadQueue').addEventListener('click', () => { - ipcRenderer.send('reload-queue-request', null); - }); + addIpcToButton('closeButton', ['close-app']); + + addIpcToButton('commandPlay', ['cmd-play']); + addIpcToButton('commandStop', ['cmd-stop']); + addIpcToButton('commandClear', ['cmd-clear']); + + addIpcToButton('selectAdvence', ['select-advence']); + addIpcToButton('selectDatabase', ['select-database']); + addIpcToButton('selectPlaylist', ['select-playlist']); + addIpcToButton('selectPool', ['select-pool']); + addIpcToButton('openMdtView', ['select-mdt']); + + addIpcToButton('openUserView', ['toggle-client-view']); + addIpcToButton('reloadQueue', ['reload-queue-request']); + addIpcToButton('reloadDb', ['reload-db-request', 'reload-queue-request']); logger.debug('Window loaded'); }; /* Create the button list */ function createButtonList(list) { + function action(ipc, argument) { + logger.error( + 'The action function builder for control buttons is not implemented' + ); + } var renderHtmlLeft = ''; var renderHtmlRight = ''; var renderHtmlSLeft = ''; diff --git a/main.js b/main.js index b65ae9e6ad0b42902de2650f29bd48d0fe223296..76296c6161434db1cbdecac28673533d45d33483 100644 --- a/main.js +++ b/main.js @@ -94,17 +94,20 @@ app.on('ready', () => { var line = line.trim(); if (!line) return; switch (line[0]) { - case '.': - logger.info(line); - break; case '*': - logger.warn(line); + logger.warn(line.replace(/^\* (.*)$/g, '$1')); break; case '!': - logger.error(line); + logger.error(line.replace(/^! (.*)$/g, '$1')); break; + case '.': + if (line.length >= 2 && line[1] != '.') { + logger.info(line.replace(/^\. (.*)$/g, '$1')); + break; + } + /* Fallthrough case */ default: - logger.debug(line); + logger.debug(line.replace(/^\.\.\. (.*)$/g, '\t$1')); break; } }); @@ -130,6 +133,11 @@ ipcMain.on('cmd-stop', (event, arg) => { logger.debug('Returned from cmd-stop'); }); }); +ipcMain.on('cmd-clear', (event, arg) => { + lkt.commandClear().then(arg => { + logger.debug('Cleared queue with cmd-clear'); + }); +}); /* Fill the pannel with the content of the DB. * The `arg` is the HTML object of the pannel */ diff --git a/style/css/instance.css b/style/css/instance.css index dc3f78311c119c48dbc454662dc3a07c7ab40c71..b7b6a356bb2c5bbfaefbd99cb7009ac6ffabbf01 100644 --- a/style/css/instance.css +++ b/style/css/instance.css @@ -116,6 +116,11 @@ button { background-color: #df691a; } +.btn-primary:hover { + background-color: #4e5d6c !important; + color: #df691a !important; +} + .btn:focus, .btn:active { outline: none !important;