Skip to content
Extraits de code Groupes Projets
Valider 44926c26 rédigé par Deurstann's avatar Deurstann
Parcourir les fichiers

Added compatibility with dry update and improved the addition of the search result

parent 7b103470
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!15Playlist system creation
......@@ -69,7 +69,7 @@ class KaraDatabase {
category AS cat,
(song_type || song_number) AS type,
language, author_name AS author,
song_name AS title, source_name AS source
song_name AS title, source_name AS source, available
FROM kara
WHERE string LIKE ? OR author_name COLLATE nocase = ?`;
if (offset != null && limit != null) __sqlQuery += ` LIMIT ${offset}, ${limit}`;
......@@ -102,7 +102,7 @@ class KaraDatabase {
category AS cat,
(song_type || song_number) AS type,
language, author_name AS author,
song_name AS title, source_name AS source
song_name AS title, source_name AS source, available
FROM kara`;
if (offset != null && limit != null) __sqlQuery += ` LIMIT ${offset}, ${limit}`;
......
......@@ -176,6 +176,9 @@ class LktClient {
if (String(data).includes('player')) {
LktClient.reloadState();
}
if(String(data).includes('database')) {
LktClient.setDBUpdated(true)
}
client.m_socket.write(`idle\n`);
return null;
});
......@@ -394,9 +397,16 @@ class LktClient {
static commandUpdateDatabase() {
return LktClient.__execSimple(`password hashire\nupdate`)
}
static commandDryUpdateDatabase(){
return LktClient.__execSimple('password hashire\n__dry_update')
}
static commandDownloadId(id){
logger.info(`password hashire\nupdate id://${id}`);
return LktClient.__execSimple(`password hashire\nupdate id://${id}`);
}
static commandQueueAddSearch(search) {
search = search.replace(/ /g,"%");
//search = search.replace(/ /g,"%");
return LktClient.__execSimple(`add query://%${search}%`);
}
......@@ -446,6 +456,7 @@ class LktClient {
return this.__current;
}
static getStatus() {
LktClient.status_updated = false;
return this.__status;
......@@ -463,6 +474,13 @@ class LktClient {
static getSongTimeData() {
return this.timeData;
}
static DBUpdated = false
static setDBUpdated(state){
this.DBUpdated = state
}
static isDBUpdated(){
return this.DBUpdated
}
static ping() {
var socket = new net.Socket();
......
......@@ -16,7 +16,6 @@ var currentPlaylist = "";
var isQueueView = true
var clearMenuQueue;
var clearMenuPlaylist;
var karaDBIDList = [];
function updatePlayPauseButton(state) {
logger.debug('instance', `State was ${state}`);
......@@ -99,6 +98,7 @@ window.onload = () => {
addIpcToButton('selectDatabase', ['select-database', 'reload-db-request']);
addIpcToButton('selectPlaylist', ['select-playlist']);
addIpcToButton('updateDB', ['update-database']);
addIpcToButton('dryUpdate',['dry-update-database']);
addIpcToButton('open-kurisu-view', ['toggle-kurisu']);
addIpcToButton('open-user-view', ['toggle-client-view']);
......@@ -252,20 +252,28 @@ window.onload = () => {
ipcRenderer.on('reload-db-responce', (event, arg) => {
logger.debug('instance', `Web page got reload-db`);
document.getElementById('panelLeft').innerHTML = '';
karaDBIDList = [];
arg.forEach(kara => {
karaDBIDList.push(kara.id);
ejs.renderFile(__dirname + '/views/karaDBListItem.ejs', { kara: kara }, (err, data) => {
if (err) logger.error('instance', err);
$('#panelLeft').append(data);
});
if(kara.available==1){
ejs.renderFile(__dirname + '/views/karaDBListItem.ejs', { kara: kara }, (err, data) => {
if (err) logger.error('instance', err);
$('#panelLeft').append(data);
});
}
else{
ejs.renderFile(__dirname + '/views/karaDBUnavailableListItem.ejs', { kara: kara }, (err, data) => {
if (err) logger.error('instance', err);
$('#panelLeft').append(data);
});
}
});
[].forEach.call(document.querySelectorAll('#panelLeft .karaCard'), addDBKaraEventHandlers);
if(!isQueueView) {
[].forEach.call(document.querySelectorAll('#panelLeft .karaCard'), (element)=>{
element.getElementsByClassName('karaAddBtn')[0].hidden = true;
element.getElementsByClassName('karaInsertBtn')[0].hidden = true;
element.getElementsByClassName('karaAddPlaylistBtn')[0].hidden = false;
if(element.getElementsByClassName('unavailable').length==0){
element.getElementsByClassName('karaAddBtn')[0].hidden = true;
element.getElementsByClassName('karaInsertBtn')[0].hidden = true;
element.getElementsByClassName('karaAddPlaylistBtn')[0].hidden = false;
}
});
}
});
......@@ -364,28 +372,41 @@ ipcRenderer.on('send-lektord-is-attached', (event, arg) => {
logger.debug('instance', `Lektord is in attached mode? ${arg}`);
});
ipcRenderer.on('check-db-updated',(event,arg) => {
ipcRenderer.send('reload-db-request')
});
/*
* Drag'n'drop functions
*/
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('karaAddPlaylistBtn')[0].addEventListener('click', () =>
ipcRenderer.send('add-kara-playlist-id', {
id: element.getElementsByClassName('karaID')[0].innerText,
})
);
if(element.getElementsByClassName('karaDownloadBtn').length==0){
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('karaAddPlaylistBtn')[0].addEventListener('click', () =>
ipcRenderer.send('add-kara-playlist-id', {
id: element.getElementsByClassName('karaID')[0].innerText,
})
);
}
else{
element.getElementsByClassName('karaDownloadBtn')[0].addEventListener('click', () =>
ipcRenderer.send('download-kara-id', {
id: element.getElementsByClassName('karaID')[0].innerText,
})
);
}
}
function addQueueKaraEventHandlers(element) {
......@@ -486,10 +507,11 @@ function switchQueuePlaylist() {
if(isQueueView){
switchQP.innerText = "View playlist";
[].forEach.call(document.querySelectorAll('#panelLeft .karaCard'), (element)=>{
element.getElementsByClassName('karaAddBtn')[0].hidden = false;
element.getElementsByClassName('karaInsertBtn')[0].hidden = false;
element.getElementsByClassName('karaAddPlaylistBtn')[0].hidden = true;
if(element.getElementsByClassName('unavailable').length==0){
element.getElementsByClassName('karaAddBtn')[0].hidden = false;
element.getElementsByClassName('karaInsertBtn')[0].hidden = false;
element.getElementsByClassName('karaAddPlaylistBtn')[0].hidden = true;
}
});
[].forEach.call(document.querySelectorAll('#panelRight .karaCard'), addQueueKaraEventHandlers);
clearMenuPlaylist();
......@@ -497,9 +519,11 @@ function switchQueuePlaylist() {
else {
switchQP.innerText = "View queue";
[].forEach.call(document.querySelectorAll('#panelLeft .karaCard'), (element)=>{
element.getElementsByClassName('karaAddBtn')[0].hidden = true;
element.getElementsByClassName('karaInsertBtn')[0].hidden = true;
element.getElementsByClassName('karaAddPlaylistBtn')[0].hidden = false;
if(element.getElementsByClassName('unavailable').length==0){
element.getElementsByClassName('karaAddBtn')[0].hidden = true;
element.getElementsByClassName('karaInsertBtn')[0].hidden = true;
element.getElementsByClassName('karaAddPlaylistBtn')[0].hidden = false;
}
});
[].forEach.call(document.querySelectorAll('#panelRight .karaCard'), addPlayListKaraEventHandlers);
clearMenuQueue();
......
<%# 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 bg-dark" draggable="false">
<%- include('kara.ejs'); %>
<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 karaDownloadBtn" title="Download"><i class="fas fa-upload"></i></button>
</div>
<div hidden class="unaivailable"></div>
</div>
</li>
......@@ -10,7 +10,8 @@
{id: 'selectAdvence', tooltip: 'Advence search', name: 'search'},
{id: 'selectDatabase', tooltip: 'Database search', name: 'database'},
{id: 'selectPlaylist', tooltip: 'Playlist search', name: 'tag'},
{id: 'updateDB', tooltip: "Update kara Database", name: 'arrow-circle-down'},
{id: 'dryUpdate', tooltip: "Update kara Database", name: 'sync'},
{id: 'updateDB', tooltip: "Update and download kara Database", name: 'arrow-circle-down'},
{id: 'addResearchToQueue', tooltip: "Add research result to queue", name: 'upload'},
]}); %></div>
<div class="p-1 bd-highlight mb-1 mr-auto ml-auto" style="width: 40%;-webkit-app-region: no-drag;">
......
......@@ -6,6 +6,6 @@
class="btn btn-<%= type %> p-2 bd-highlight"
data-toggle="tooltip" data-placement="bottom" title="<%= btn.tooltip %>"
style="-webkit-app-region: no-drag">
<i class="fas fa-<%= btn.name %>"></i>
<i class="fa fa-<%= btn.name %>"></i>
</button>
<% })%>
......@@ -236,6 +236,7 @@ ipcMain.on('cmd-shuffle', () => lkt.commandShuffle().then(arg => logger.debug('m
ipcMain.on('cmd-stop', () => lkt.commandStop().then(arg => logger.debug('main', 'Returned from cmd-stop')));
ipcMain.on('cmd-clear', () => lkt.commandClear().then(arg => logger.debug('main', 'Cleared queue with cmd-clear')));
ipcMain.on('update-database',()=>lkt.commandUpdateDatabase());
ipcMain.on('dry-update-database',()=>lkt.commandDryUpdateDatabase());
/* Fill the pannel with the content of the DB.
* The `arg` is the HTML object of the pannel */
......@@ -266,6 +267,9 @@ var currentPlaylist = "";
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('download-kara-id',(event, arg)=>{
logger.info("download","download");
lkt.commandDownloadId(arg.id)});
ipcMain.on('delete-kara-queue-pos', (event, arg) => lkt.commandQueueDelPos(arg.position));
ipcMain.on('add-kara-playlist-id', (event,arg) => {
if(currentPlaylist != "") {
......@@ -431,6 +435,10 @@ ipcMain.on('verify-lektord', (event, arg) => {
});
}
}
if(lkt.isDBUpdated()) {
lkt.setDBUpdated(false);
win.webContents.send('check-db-updated');
}
}, 50);
setInterval(() => {
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter