From 07cbf4bda7f53ac67119f508c7ebf4e2d572728b Mon Sep 17 00:00:00 2001 From: sD Date: Sat, 11 Apr 2020 21:47:02 +0200 Subject: save showname to a cookie --- webAO/client.js | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'webAO/client.js') diff --git a/webAO/client.js b/webAO/client.js index b106b03..90561cc 100644 --- a/webAO/client.js +++ b/webAO/client.js @@ -1915,6 +1915,15 @@ function setCookie(cname, value) { document.cookie = cname + "=" + value; } +/** + * Triggered when the showname is changed + * @param {KeyboardEvent} event + */ +export function onShownameChange(event) { + setCookie("showname",document.getElementById("client_oocinputbox").value); +} +window.onShownameChange = onShownameChange; + /** * Triggered when the Return key is pressed on the out-of-character chat input box. * @param {KeyboardEvent} event -- cgit From 8c7a70d5b38a922bd9a18e7ea922c3e4e5fc6c57 Mon Sep 17 00:00:00 2001 From: sD Date: Sat, 11 Apr 2020 21:50:22 +0200 Subject: set the showname from the cookie --- webAO/client.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'webAO/client.js') diff --git a/webAO/client.js b/webAO/client.js index 90561cc..1385c08 100644 --- a/webAO/client.js +++ b/webAO/client.js @@ -387,6 +387,7 @@ class Client extends EventEmitter { // Read cookies and set the UI to its values document.getElementById("OOC_name").value = getCookie("OOC_name") || "web"+parseInt(Math.random()*100+10); + document.getElementById("ic_chat_name").value = getCookie("showname") || ""; // Read cookies and set the UI to its values var cookietheme = getCookie("theme") || "default"; @@ -1920,7 +1921,7 @@ function setCookie(cname, value) { * @param {KeyboardEvent} event */ export function onShownameChange(event) { - setCookie("showname",document.getElementById("client_oocinputbox").value); + setCookie("showname",document.getElementById("ic_chat_name").value); } window.onShownameChange = onShownameChange; -- cgit From 13df07b8d246c18de314e6b7f61c646214098746 Mon Sep 17 00:00:00 2001 From: sD Date: Sat, 11 Apr 2020 21:51:05 +0200 Subject: Revert "set the showname from the cookie" This reverts commit 8c7a70d5b38a922bd9a18e7ea922c3e4e5fc6c57. --- webAO/client.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'webAO/client.js') diff --git a/webAO/client.js b/webAO/client.js index 1385c08..90561cc 100644 --- a/webAO/client.js +++ b/webAO/client.js @@ -387,7 +387,6 @@ class Client extends EventEmitter { // Read cookies and set the UI to its values document.getElementById("OOC_name").value = getCookie("OOC_name") || "web"+parseInt(Math.random()*100+10); - document.getElementById("ic_chat_name").value = getCookie("showname") || ""; // Read cookies and set the UI to its values var cookietheme = getCookie("theme") || "default"; @@ -1921,7 +1920,7 @@ function setCookie(cname, value) { * @param {KeyboardEvent} event */ export function onShownameChange(event) { - setCookie("showname",document.getElementById("ic_chat_name").value); + setCookie("showname",document.getElementById("client_oocinputbox").value); } window.onShownameChange = onShownameChange; -- cgit From 9b4e487245f7fb6862dc3bba84f9425b18894cec Mon Sep 17 00:00:00 2001 From: sD Date: Sat, 11 Apr 2020 21:51:06 +0200 Subject: Revert "save showname to a cookie" This reverts commit 07cbf4bda7f53ac67119f508c7ebf4e2d572728b. --- webAO/client.js | 9 --------- 1 file changed, 9 deletions(-) (limited to 'webAO/client.js') diff --git a/webAO/client.js b/webAO/client.js index 90561cc..b106b03 100644 --- a/webAO/client.js +++ b/webAO/client.js @@ -1915,15 +1915,6 @@ function setCookie(cname, value) { document.cookie = cname + "=" + value; } -/** - * Triggered when the showname is changed - * @param {KeyboardEvent} event - */ -export function onShownameChange(event) { - setCookie("showname",document.getElementById("client_oocinputbox").value); -} -window.onShownameChange = onShownameChange; - /** * Triggered when the Return key is pressed on the out-of-character chat input box. * @param {KeyboardEvent} event -- cgit From c1d9176c5ecd353db6e995d401b6e4f2aa4eb303 Mon Sep 17 00:00:00 2001 From: sD Date: Mon, 13 Apr 2020 16:48:42 +0200 Subject: rename the musiclist html --- webAO/client.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'webAO/client.js') diff --git a/webAO/client.js b/webAO/client.js index b106b03..dcbc36c 100644 --- a/webAO/client.js +++ b/webAO/client.js @@ -773,8 +773,8 @@ class Client extends EventEmitter { } resetMusiclist() { - const hmusiclist = document.getElementById("client_musiclist"); - hmusiclist.innerHTML = ""; + const musiclist_element = document.getElementById("client_musiclist"); + musiclist_element.innerHTML = ""; this.areas = []; } @@ -789,13 +789,13 @@ class Client extends EventEmitter { this.resetMusiclist(); } this.sendServer("AM#" + ((args[1] / 10) + 1) + "#%"); - const hmusiclist = document.getElementById("client_musiclist"); + const musiclist_element = document.getElementById("client_musiclist"); for (let i = 2; i < args.length - 1; i++) { if (i % 2 === 0) { document.getElementById("client_loadingtext").innerHTML = `Loading Music ${i}/${this.music_list_length}`; const newentry = document.createElement("OPTION"); newentry.text = args[i]; - hmusiclist.options.add(newentry); + musiclist_element.options.add(newentry); } } } @@ -807,7 +807,7 @@ class Client extends EventEmitter { handleSM(args) { document.getElementById("client_loadingtext").innerHTML = "Loading Music "; this.resetMusiclist(); - const hmusiclist = document.getElementById("client_musiclist"); + const musiclist_element = document.getElementById("client_musiclist"); let flagAudio = false; for (let i = 1; i < args.length - 1; i++) { @@ -821,7 +821,7 @@ class Client extends EventEmitter { // After reached the audio put everything in the music list const newentry = document.createElement("OPTION"); newentry.text = args[i]; - hmusiclist.options.add(newentry); + musiclist_element.options.add(newentry); } else { this.areas[i] = { name: safe_tags(args[i]), @@ -853,7 +853,7 @@ class Client extends EventEmitter { if (area_box.lastChild.textContent.startsWith("=")) { const audio_title = document.createElement("OPTION"); audio_title.text = area_box.lastChild.textContent; - hmusiclist.insertBefore(audio_title, hmusiclist.firstChild); + musiclist_element.insertBefore(audio_title, musiclist_element.firstChild); area_box.removeChild(area_box.lastChild); } -- cgit From 3a8a9c7cb30d72e69ec87602cdecfcbc36866ea2 Mon Sep 17 00:00:00 2001 From: sD Date: Mon, 13 Apr 2020 16:58:13 +0200 Subject: save the musiclist to an array for later filtering --- webAO/client.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'webAO/client.js') diff --git a/webAO/client.js b/webAO/client.js index dcbc36c..bb0f3cf 100644 --- a/webAO/client.js +++ b/webAO/client.js @@ -120,6 +120,7 @@ class Client extends EventEmitter { this.emotes = []; this.evidences = []; this.areas = []; + this.musics = []; this.resources = { "holdit": { @@ -161,8 +162,6 @@ class Client extends EventEmitter { this.checkUpdater = null; - // Only used for RMC/'music' packets, not EM/SM/MC packets. - this.musicList = Object(); /** * Assign handlers for all commands * If you implement a new command, you need to add it here @@ -485,8 +484,7 @@ class Client extends EventEmitter { clearInterval(this.checkUpdater); // the connection got rekt, get rid of the old musiclist - document.getElementById("areas").innerHTML = ""; - document.getElementById("client_musiclist").innerHTML = ""; + this.resetMusiclist(); document.getElementById("client_chartable").innerHTML = ""; } @@ -773,9 +771,10 @@ class Client extends EventEmitter { } resetMusiclist() { - const musiclist_element = document.getElementById("client_musiclist"); - musiclist_element.innerHTML = ""; + this.musics = []; this.areas = []; + document.getElementById("client_musiclist").innerHTML = ""; + document.getElementById("areas").innerHTML = ""; } /** @@ -796,6 +795,7 @@ class Client extends EventEmitter { const newentry = document.createElement("OPTION"); newentry.text = args[i]; musiclist_element.options.add(newentry); + this.musics.push(args[i]); } } } @@ -822,6 +822,7 @@ class Client extends EventEmitter { const newentry = document.createElement("OPTION"); newentry.text = args[i]; musiclist_element.options.add(newentry); + this.musics.push(args[i]); } else { this.areas[i] = { name: safe_tags(args[i]), -- cgit From 0b66f20070e96c5d47a3a048c8355b6a3c930f5b Mon Sep 17 00:00:00 2001 From: sD Date: Mon, 13 Apr 2020 17:07:45 +0200 Subject: move music handler into own function --- webAO/client.js | 84 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 44 insertions(+), 40 deletions(-) (limited to 'webAO/client.js') diff --git a/webAO/client.js b/webAO/client.js index bb0f3cf..b28498b 100644 --- a/webAO/client.js +++ b/webAO/client.js @@ -777,6 +777,47 @@ class Client extends EventEmitter { document.getElementById("areas").innerHTML = ""; } + handleMusicInfo(trackindex,trackname) { + const musiclist_element = document.getElementById("client_musiclist"); + let flagAudio = false; + + if (/\.(?:wav|mp3|mp4|ogg|opus)$/i.test(trackname) && !flagAudio) { + flagAudio = true; + } + + if (flagAudio) { + // After reached the audio put everything in the music list + const newentry = document.createElement("OPTION"); + newentry.text = trackname; + musiclist_element.options.add(newentry); + this.musics.push(trackname); + } else { + const thisarea = { + name: trackname, + players: 0, + status: "IDLE", + cm: "", + locked: "FREE" + }; + + this.areas.push(thisarea); + + // Create area button + let newarea = document.createElement("SPAN"); + newarea.classList = "area-button area-default"; + newarea.id = "area" + trackindex; + newarea.innerText = thisarea.name; + newarea.title = "Players:
" + + "Status:
" + + "CM: "; + newarea.onclick = function () { + area_click(this); + }; + + document.getElementById("areas").appendChild(newarea); + } + } + /** * Handles incoming music information, containing multiple entries * per packet. @@ -788,14 +829,11 @@ class Client extends EventEmitter { this.resetMusiclist(); } this.sendServer("AM#" + ((args[1] / 10) + 1) + "#%"); - const musiclist_element = document.getElementById("client_musiclist"); + for (let i = 2; i < args.length - 1; i++) { if (i % 2 === 0) { document.getElementById("client_loadingtext").innerHTML = `Loading Music ${i}/${this.music_list_length}`; - const newentry = document.createElement("OPTION"); - newentry.text = args[i]; - musiclist_element.options.add(newentry); - this.musics.push(args[i]); + this.handleMusicInfo(i,safe_tags(args[i])); } } } @@ -807,45 +845,11 @@ class Client extends EventEmitter { handleSM(args) { document.getElementById("client_loadingtext").innerHTML = "Loading Music "; this.resetMusiclist(); - const musiclist_element = document.getElementById("client_musiclist"); - let flagAudio = false; for (let i = 1; i < args.length - 1; i++) { // Check when found the song for the first time document.getElementById("client_loadingtext").innerHTML = `Loading Music ${i}/${this.music_list_length}`; - if (/\.(?:wav|mp3|mp4|ogg|opus)$/i.test(args[i]) && !flagAudio) { - flagAudio = true; - } - - if (flagAudio) { - // After reached the audio put everything in the music list - const newentry = document.createElement("OPTION"); - newentry.text = args[i]; - musiclist_element.options.add(newentry); - this.musics.push(args[i]); - } else { - this.areas[i] = { - name: safe_tags(args[i]), - players: 0, - status: "IDLE", - cm: "", - locked: "FREE" - }; - - // Create area button - let newarea = document.createElement("SPAN"); - newarea.classList = "area-button area-default"; - newarea.id = "area" + i; - newarea.innerText = this.areas[i].name; - newarea.title = "Players:
" + - "Status:
" + - "CM: "; - newarea.onclick = function () { - area_click(this); - }; - - document.getElementById("areas").appendChild(newarea); - } + this.handleMusicInfo(i,safe_tags(args[i])); } // We need to check if the last area that we got was actually a category -- cgit From 6e5016945bbb8af7c30c03f56844ec7049903e34 Mon Sep 17 00:00:00 2001 From: sD Date: Mon, 13 Apr 2020 17:14:19 +0200 Subject: add filter to the search boxes onchange --- webAO/client.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'webAO/client.js') diff --git a/webAO/client.js b/webAO/client.js index b28498b..7e29c42 100644 --- a/webAO/client.js +++ b/webAO/client.js @@ -1984,6 +1984,18 @@ function resetICParams() { } } +/** + * Triggered when the music search bar is changed + * @param {MouseEvent} event + */ +export function musiclist_filter(_event) { + const musiclist_element = document.getElementById("client_musiclist"); + musiclist_element.innerHTML = ""; + + +} +window.musiclist_filter = musiclist_filter; + /** * Triggered when an item on the music list is clicked. * @param {MouseEvent} event -- cgit From 51f46e2fb1a68edd584a27b30937013301b94d23 Mon Sep 17 00:00:00 2001 From: sD Date: Mon, 13 Apr 2020 17:21:43 +0200 Subject: fix area and category header detection --- webAO/client.js | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) (limited to 'webAO/client.js') diff --git a/webAO/client.js b/webAO/client.js index 7e29c42..14fd35c 100644 --- a/webAO/client.js +++ b/webAO/client.js @@ -778,10 +778,9 @@ class Client extends EventEmitter { } handleMusicInfo(trackindex,trackname) { - const musiclist_element = document.getElementById("client_musiclist"); let flagAudio = false; - if (/\.(?:wav|mp3|mp4|ogg|opus)$/i.test(trackname) && !flagAudio) { + if (/\.(?:wav|mp3|mp4|ogg|opus)$/i.test(trackname) || trackname.startsWith("=")) { flagAudio = true; } @@ -789,7 +788,7 @@ class Client extends EventEmitter { // After reached the audio put everything in the music list const newentry = document.createElement("OPTION"); newentry.text = trackname; - musiclist_element.options.add(newentry); + document.getElementById("client_musiclist").options.add(newentry); this.musics.push(trackname); } else { const thisarea = { @@ -828,7 +827,6 @@ class Client extends EventEmitter { if(args[1] === "0") { this.resetMusiclist(); } - this.sendServer("AM#" + ((args[1] / 10) + 1) + "#%"); for (let i = 2; i < args.length - 1; i++) { if (i % 2 === 0) { @@ -836,6 +834,9 @@ class Client extends EventEmitter { this.handleMusicInfo(i,safe_tags(args[i])); } } + + // get the next batch of tracks + this.sendServer("AM#" + ((args[1] / 10) + 1) + "#%"); } /** @@ -852,16 +853,6 @@ class Client extends EventEmitter { this.handleMusicInfo(i,safe_tags(args[i])); } - // We need to check if the last area that we got was actually a category - // header for music. If it was, then move it over to the music list. - const area_box = document.getElementById("areas"); - if (area_box.lastChild.textContent.startsWith("=")) { - const audio_title = document.createElement("OPTION"); - audio_title.text = area_box.lastChild.textContent; - musiclist_element.insertBefore(audio_title, musiclist_element.firstChild); - area_box.removeChild(area_box.lastChild); - } - // Music done, carry on this.sendServer("RD#%"); } -- cgit From b126e7798d83a6617ea055e0f37d0167a0f65d06 Mon Sep 17 00:00:00 2001 From: sD Date: Mon, 13 Apr 2020 17:27:46 +0200 Subject: messed up the order --- webAO/client.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'webAO/client.js') diff --git a/webAO/client.js b/webAO/client.js index 14fd35c..5156ea3 100644 --- a/webAO/client.js +++ b/webAO/client.js @@ -850,7 +850,7 @@ class Client extends EventEmitter { for (let i = 1; i < args.length - 1; i++) { // Check when found the song for the first time document.getElementById("client_loadingtext").innerHTML = `Loading Music ${i}/${this.music_list_length}`; - this.handleMusicInfo(i,safe_tags(args[i])); + this.handleMusicInfo(i-1,safe_tags(args[i])); } // Music done, carry on -- cgit From 046feadf97a2faf6f62809df17c49cd29c112f93 Mon Sep 17 00:00:00 2001 From: sD Date: Mon, 13 Apr 2020 17:45:57 +0200 Subject: actually filter the list --- webAO/client.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'webAO/client.js') diff --git a/webAO/client.js b/webAO/client.js index 5156ea3..d2aedc1 100644 --- a/webAO/client.js +++ b/webAO/client.js @@ -1981,9 +1981,17 @@ function resetICParams() { */ export function musiclist_filter(_event) { const musiclist_element = document.getElementById("client_musiclist"); + const searchname = document.getElementById("client_musicsearch").value; + musiclist_element.innerHTML = ""; - + for (const trackname of client.musics){ + if (trackname.toLowerCase().indexOf(searchname.toLowerCase()) !== -1) { + const newentry = document.createElement("OPTION"); + newentry.text = trackname; + musiclist_element.options.add(newentry); + } + } } window.musiclist_filter = musiclist_filter; -- cgit From 63d9da0ce725392108bd65e3d790a067285fb9e4 Mon Sep 17 00:00:00 2001 From: sD Date: Mon, 13 Apr 2020 17:48:35 +0200 Subject: this broke songs with an & in them --- webAO/client.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'webAO/client.js') diff --git a/webAO/client.js b/webAO/client.js index d2aedc1..49203de 100644 --- a/webAO/client.js +++ b/webAO/client.js @@ -831,7 +831,7 @@ class Client extends EventEmitter { for (let i = 2; i < args.length - 1; i++) { if (i % 2 === 0) { document.getElementById("client_loadingtext").innerHTML = `Loading Music ${i}/${this.music_list_length}`; - this.handleMusicInfo(i,safe_tags(args[i])); + this.handleMusicInfo(i,args[i]); } } @@ -850,7 +850,7 @@ class Client extends EventEmitter { for (let i = 1; i < args.length - 1; i++) { // Check when found the song for the first time document.getElementById("client_loadingtext").innerHTML = `Loading Music ${i}/${this.music_list_length}`; - this.handleMusicInfo(i-1,safe_tags(args[i])); + this.handleMusicInfo(i-1,args[i]); } // Music done, carry on -- cgit From 9ccc3be8e021aeb6ddcd6b50b758bb8bec7060ef Mon Sep 17 00:00:00 2001 From: sD Date: Mon, 13 Apr 2020 17:54:45 +0200 Subject: Revert "this broke songs with an & in them" This reverts commit 63d9da0ce725392108bd65e3d790a067285fb9e4. --- webAO/client.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'webAO/client.js') diff --git a/webAO/client.js b/webAO/client.js index 49203de..d2aedc1 100644 --- a/webAO/client.js +++ b/webAO/client.js @@ -831,7 +831,7 @@ class Client extends EventEmitter { for (let i = 2; i < args.length - 1; i++) { if (i % 2 === 0) { document.getElementById("client_loadingtext").innerHTML = `Loading Music ${i}/${this.music_list_length}`; - this.handleMusicInfo(i,args[i]); + this.handleMusicInfo(i,safe_tags(args[i])); } } @@ -850,7 +850,7 @@ class Client extends EventEmitter { for (let i = 1; i < args.length - 1; i++) { // Check when found the song for the first time document.getElementById("client_loadingtext").innerHTML = `Loading Music ${i}/${this.music_list_length}`; - this.handleMusicInfo(i-1,args[i]); + this.handleMusicInfo(i-1,safe_tags(args[i])); } // Music done, carry on -- cgit From bd3194ccde09d0353e0a2d1ccbcc68f370c70926 Mon Sep 17 00:00:00 2001 From: sD Date: Mon, 13 Apr 2020 18:02:44 +0200 Subject: fix area index with old loading --- webAO/client.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'webAO/client.js') diff --git a/webAO/client.js b/webAO/client.js index d2aedc1..9390634 100644 --- a/webAO/client.js +++ b/webAO/client.js @@ -831,7 +831,7 @@ class Client extends EventEmitter { for (let i = 2; i < args.length - 1; i++) { if (i % 2 === 0) { document.getElementById("client_loadingtext").innerHTML = `Loading Music ${i}/${this.music_list_length}`; - this.handleMusicInfo(i,safe_tags(args[i])); + this.handleMusicInfo(args[i-1],safe_tags(args[i])); } } -- cgit From 97caca41dfa78158fb64a0229f173d5d6f45a409 Mon Sep 17 00:00:00 2001 From: sD Date: Mon, 13 Apr 2020 18:20:56 +0200 Subject: fix off-by-one in ARUP code --- webAO/client.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'webAO/client.js') diff --git a/webAO/client.js b/webAO/client.js index 9390634..9be4529 100644 --- a/webAO/client.js +++ b/webAO/client.js @@ -1029,23 +1029,23 @@ class Client extends EventEmitter { */ handleARUP(args) { args = args.slice(1); - for (let i = 1; i < args.length - 1; i++) { + for (let i = 0; i < args.length - 2; i++) { if (this.areas[i]) { // the server sends us ARUP before we even get the area list const thisarea = document.getElementById("area" + i); switch (Number(args[0])) { case 0: // playercount - this.areas[i].players = Number(args[i]); + this.areas[i].players = Number(args[i+1]); thisarea.innerText = `${this.areas[i].name} (${this.areas[i].players})`; break; case 1: // status - this.areas[i].status = safe_tags(args[i]); + this.areas[i].status = safe_tags(args[i+1]); thisarea.classList = "area-button area-" + this.areas[i].status.toLowerCase(); break; case 2: - this.areas[i].cm = safe_tags(args[i]); + this.areas[i].cm = safe_tags(args[i+1]); break; case 3: - this.areas[i].locked = safe_tags(args[i]); + this.areas[i].locked = safe_tags(args[i+1]); break; } -- cgit