From a03d83785980afe3b45f5bce55681e16482af5b8 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Thu, 11 Feb 2021 10:38:20 +0100 Subject: [PATCH] Basic config file generation / parsing --- common/config.js | 23 +++++++++-- common/lkt.js | 26 ++++++++++--- common/logger.js | 4 +- instance/index.html | 14 ++++--- instance/main.js | 94 +++++++++++++++++++++++++++------------------ main.js | 69 +++++++++++++++++++++++---------- 6 files changed, 155 insertions(+), 75 deletions(-) diff --git a/common/config.js b/common/config.js index 1e30028..c5e2523 100644 --- a/common/config.js +++ b/common/config.js @@ -1,4 +1,21 @@ -const ini = require('ini'); -const fs = require('fs'); +const ini = require('ini'), + os = require('os'), + fs = require('fs'); -module.exports = 'toto'; +const __configFile = `${os.homedir()}/.amadeus.ini`; + +var config = { + database: '/home/kara/kara.db', + reload: () => { + var fd = fs.openSync(__configFile, 'w'); + fs.close(fd, err => {}); + var __config = ini.parse(fs.readFileSync(__configFile, 'utf-8')); + + __config.database_path = __config.database_path || '/home/kara/kara.db'; + + fs.writeFileSync(__configFile, ini.stringify(__config)) + }, +}; + +config.reload(); +module.exports = global.config = module.exports = config; diff --git a/common/lkt.js b/common/lkt.js index ade5ce7..229c1d6 100644 --- a/common/lkt.js +++ b/common/lkt.js @@ -167,13 +167,22 @@ class LktClient { function __getResult(client) { return new Promise(resolv => { client.m_socket.setTimeout(0); - setInterval(()=>client.m_socket.write(`status\n`),100); + setInterval(() => client.m_socket.write(`status\n`), 100); client.m_socket.on('data', data => { dataObj = __mpdToObject(data); - if(dataObj.elapsed && dataObj.duration && dataObj.state && dataObj.song) { - LktClient.setSongTimeData(parseInt(dataObj.elapsed,10), parseInt(dataObj.duration,10), dataObj.state, parseInt(dataObj.song,10)); + if ( + dataObj.elapsed && + dataObj.duration && + dataObj.state && + dataObj.song + ) { + LktClient.setSongTimeData( + parseInt(dataObj.elapsed, 10), + parseInt(dataObj.duration, 10), + dataObj.state, + parseInt(dataObj.song, 10) + ); } - }); }); } @@ -249,14 +258,19 @@ class LktClient { return this.queue_updated; } - static timeData = {elapsed:0, total:100, state:'stop', song:0}; + static timeData = { elapsed: 0, total: 100, state: 'stop', song: 0 }; static setPlayState(state) { this.timeData.state = state; } static setSongTimeData(elapsed, total, state, song) { - this.timeData = {elapsed:elapsed, total:total, state:state, song:song}; + this.timeData = { + elapsed: elapsed, + total: total, + state: state, + song: song, + }; } static getSongTimeData() { return this.timeData; diff --git a/common/logger.js b/common/logger.js index bb1a6ab..c054dbd 100644 --- a/common/logger.js +++ b/common/logger.js @@ -31,7 +31,9 @@ const __loggerCustomLevels = { }; const __logFile = `${require('os').tmpdir()}/amadeus.log`; -fs.open(__logFile, 'w', function (err, file) { if (err) throw err; }); +fs.open(__logFile, 'w', function (err, file) { + if (err) throw err; +}); var __logger = winston.createLogger({ transports: [ diff --git a/instance/index.html b/instance/index.html index b7db80f..b404a01 100644 --- a/instance/index.html +++ b/instance/index.html @@ -25,7 +25,7 @@ <script></script> </head> <body> - <div id="mainFrame" class="container-fluid" > + <div id="mainFrame" class="container-fluid"> <div id="buttonPanelListLeft" class="d-flex flex-row bd-highlight mb-3 row card" @@ -56,11 +56,13 @@ class="progress-bar" id="progressBar" role="progressbar" - style="-webkit-transition: none; - -moz-transition: none; - -ms-transition: none; - -o-transition: none; - transition: none;" + style=" + -webkit-transition: none; + -moz-transition: none; + -ms-transition: none; + -o-transition: none; + transition: none; + " ></div> </div> </div> diff --git a/instance/main.js b/instance/main.js index b04bc42..9212ba6 100644 --- a/instance/main.js +++ b/instance/main.js @@ -52,7 +52,7 @@ window.onload = () => { setTimeout(() => ipcRenderer.send('reload-queue-request'), 1000); setInterval(() => ipcRenderer.send('verify-queue-reloaded-request'), 50); - setInterval(() => ipcRenderer.send('get-song-time-data'),50); + setInterval(() => ipcRenderer.send('get-song-time-data'), 50); logger.debug('instance', 'Window loaded'); $('#filterInput').on('keypress', e => { @@ -145,7 +145,7 @@ ipcRenderer.on('reload-db-responce', (event, arg) => { ); }); [].forEach.call( - document.querySelectorAll('#panelLeft .karaCard'), + document.querySelectorAll('#panelLeft .karaCard'), addDBKaraEventHandlers ); }); @@ -175,36 +175,46 @@ ipcRenderer.on('reload-queue-responce', (event, arg) => { ); }); -var currentSong=0; -ipcRenderer.on('send-song-time-data', (event,timeData) => { - document.getElementById('progressBar').style.width= - `${timeData.elapsed/timeData.total*document.documentElement.clientWidth}px`; - if(timeData.state == 'play' || timeData.state == 'pause') - { - if(currentSong !=timeData.song) { - document.getElementsByClassName('karaQueue')[currentSong].style.background = '#4e5d6c'; +var currentSong = 0; +ipcRenderer.on('send-song-time-data', (event, timeData) => { + document.getElementById('progressBar').style.width = `${ + (timeData.elapsed / timeData.total) * + document.documentElement.clientWidth + }px`; + if (timeData.state == 'play' || timeData.state == 'pause') { + if (currentSong != timeData.song) { + document.getElementsByClassName('karaQueue')[ + currentSong + ].style.background = '#4e5d6c'; currentSong = timeData.song; } - document.getElementsByClassName('karaQueue')[timeData.song].style.background = '#6b7d8e'; + document.getElementsByClassName('karaQueue')[ + timeData.song + ].style.background = '#6b7d8e'; + } else { + document.getElementsByClassName('karaQueue')[ + timeData.song + ].style.background = '#4e5d6c'; } - else { - document.getElementsByClassName('karaQueue')[timeData.song].style.background = '#4e5d6c'; - } - }); - 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 - })); + 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 addQueueKaraEventHandlers(element) { @@ -214,14 +224,22 @@ function addQueueKaraEventHandlers(element) { 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 - })); + 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; @@ -248,7 +266,7 @@ function onDragStartQueue(event) { } function onDragEnter(event) { - if(event.currentTarget) { + if (event.currentTarget) { if (leavedElement != event.currentTarget) { leavedElement.style.borderTop = ''; } @@ -274,15 +292,15 @@ function ondragLeave(event) { function onDrop(event) { event.currentTarget.style.borderTop = ''; - if(isDnDFromDB) { + if (isDnDFromDB) { ipcRenderer.send('add-kara-queue-pos', { id: event.dataTransfer.getData('text/plain'), - position: event.currentTarget.getElementsByClassName('karaPosition')[0] - .innerText, + position: event.currentTarget.getElementsByClassName( + 'karaPosition' + )[0].innerText, queueSize: countKaraInQueue, }); - } - else { + } else { ipcRenderer.send('queue-moved-kara', { from: event.dataTransfer.getData('text/plain'), to: event.currentTarget.getElementsByClassName('karaPosition')[0] diff --git a/main.js b/main.js index 1a02677..9090174 100644 --- a/main.js +++ b/main.js @@ -6,14 +6,12 @@ const logger = require.main.require('./common/logger.js'), db = require.main.require('./common/db.js'), lkt = require.main.require('./common/lkt.js'); +var config = require('./common/config.js'); var tail = require('tail').Tail; var client; /* Sub process for the express server */ var lektor; /* Sub process, the lektord player */ var lektor_closed = false; /* Is lektord closed? */ -/* TODO: Use the config */ -var myDb = new db('/home/kara/kara.db'); - var win = null; /* The main window */ /********************** @@ -26,6 +24,17 @@ tail.on('line', function (data) { console.log(data); }); +/********************* + * Create the config * + *********************/ + +function createConfig() { + return { + database: new db(config.database), + }; +} +const cfg = createConfig(); + /*************************************************************** * Creates the main window and process for the admin interface * ***************************************************************/ @@ -99,7 +108,7 @@ app.on('ready', () => { } logger.info('main', 'Reloading DB'); let contents = win.webContents; - myDb.all().then(karas => { + cfg.database.all().then(karas => { contents.send('reload-db-responce', karas); }); }); @@ -150,7 +159,7 @@ app.on('ready', () => { setTimeout(() => { lkt.idleActualisation(); }, 1000); - setTimeout(()=> { + setTimeout(() => { lkt.statusActualisation(); }, 1500); lektor.on('close', code => { @@ -198,16 +207,16 @@ ipcMain.on('reload-db-request', (event, arg) => { }; if (arg) { logger.debug('main', `Reload DB with search '${arg}'`); - myDb.search(arg, 0, 15).then(callback); + cfg.database.search(arg, 0, 15).then(callback); } else { - myDb.all(0, 15).then(callback); + cfg.database.all(0, 15).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'); - myDb.queue(0, 100).then(karas => { + cfg.database.queue(0, 100).then(karas => { event.reply('reload-queue-responce', karas); }); }); @@ -215,7 +224,7 @@ ipcMain.on('reload-queue-request', (event, arg) => { ipcMain.on('verify-queue-reloaded-request', (event, arg) => { if (lkt.isQueueUpdated()) { lkt.setQueueUpdated(false); - myDb.queue(0, 100).then(karas => { + cfg.database.queue(0, 100).then(karas => { event.reply('reload-queue-responce', karas); }); } @@ -243,24 +252,42 @@ ipcMain.on('delete-kara-queue-pos', (event, arg) => { lkt.commandQueueDelPos(arg.position); }); -ipcMain.on('add-kara-queue-pos', (event,addparams) => { - lkt.commandQueueAddId(addparams.id).then(() => lkt.commandMove(addparams.queueSize+1,addparams.position)); +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 songTimeData = { elapsed: 0, total: 100, state: 'stop', song: '0' }; var counterTime = 0; -ipcMain.on('get-song-time-data', (event,arg) => { +ipcMain.on('get-song-time-data', (event, arg) => { var newSongTimeData = lkt.getSongTimeData(); - if(newSongTimeData.elapsed != songTimeData.elapsed || newSongTimeData.song != songTimeData.song) { + if ( + newSongTimeData.elapsed != songTimeData.elapsed || + newSongTimeData.song != songTimeData.song + ) { songTimeData = newSongTimeData; - event.reply('send-song-time-data',{elapsed:songTimeData.elapsed, total:songTimeData.total, song:songTimeData.song,state:songTimeData.state}); + event.reply('send-song-time-data', { + elapsed: songTimeData.elapsed, + total: songTimeData.total, + song: songTimeData.song, + state: songTimeData.state, + }); counterTime = 0; - } - else if(newSongTimeData.state == 'play') { + } else if (newSongTimeData.state == 'play') { counterTime++; - event.reply('send-song-time-data',{elapsed:songTimeData.elapsed+(counterTime/20.0), total:songTimeData.total, song:songTimeData.song, state:songTimeData.state}); - } - else { - event.reply('send-song-time-data',{elapsed:songTimeData.elapsed+(counterTime/20.0), total:songTimeData.total, song:songTimeData.song, state:songTimeData.state}) + event.reply('send-song-time-data', { + elapsed: songTimeData.elapsed + counterTime / 20.0, + total: songTimeData.total, + song: songTimeData.song, + state: songTimeData.state, + }); + } else { + event.reply('send-song-time-data', { + elapsed: songTimeData.elapsed + counterTime / 20.0, + total: songTimeData.total, + song: songTimeData.song, + state: songTimeData.state, + }); } }); -- GitLab