From 527929cf95ea9d2d16b9bd01dbace3a569af850d Mon Sep 17 00:00:00 2001 From: Yong <130093586+yonghuang28@users.noreply.github.com> Date: Sat, 8 Jul 2023 19:42:15 -0400 Subject: [PATCH 1/9] Add blinking effects for .battery.warn and .battery.alert Add blinking effects for .battery.warn and .battery.alert --- main.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main.css b/main.css index 7b2c23d..5e0bcd4 100644 --- a/main.css +++ b/main.css @@ -933,7 +933,7 @@ hr { font-size: 1.5em; z-index: 2; cursor: help; - display:none; + display:block; } .battery-charging{ @@ -5445,4 +5445,4 @@ button.toggleSettings, } #sharefilebutton{ display:none!important; -} \ No newline at end of file +} From 50a86c31f7991fe044061df17488825cf56b4379 Mon Sep 17 00:00:00 2001 From: Yong <130093586+yonghuang28@users.noreply.github.com> Date: Sat, 8 Jul 2023 19:46:02 -0400 Subject: [PATCH 2/9] Add blinking effects for .battery.warn and .battery.alert Add blinking effects for .battery.warn and .battery.alert --- main.css | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/main.css b/main.css index 5e0bcd4..e591596 100644 --- a/main.css +++ b/main.css @@ -945,14 +945,27 @@ hr { display: none; } -.battery[data-plugged="1"] > .battery-charging { - display:block; +.battery[data-plugged="1"] { + display:none; +} + +@keyframes blink-warn { + 0% { opacity: 0; } + 50% { opacity: 1; } + 100% { opacity: 0; } +} +@keyframes blink-alert { + 0% { opacity: 0; } + 50% { opacity: 1; } + 100% { opacity: 0; } } .battery.warn { border: 3px solid #EFAF13; + animation: blink-warn 2s infinite; } .battery.alert { border: 3px solid #e81309; + animation: blink-alert 1s infinite; } .battery-level { background: #30b455; From 75469d9e3f69ad45e215cc0a6bdb4764ec9bfd45 Mon Sep 17 00:00:00 2001 From: Yong <130093586+yonghuang28@users.noreply.github.com> Date: Sat, 8 Jul 2023 19:48:30 -0400 Subject: [PATCH 3/9] add a new urlParams &batterymeter add a new urlParams &batterymeter --- main.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/main.js b/main.js index eac5a92..7ceba85 100644 --- a/main.js +++ b/main.js @@ -657,11 +657,13 @@ async function main(){ // main asyncronous thread; mostly initializes the user s } session.meterStyle = 1; session.signalMeter = true; + session.batteryMeter = true; } else if (filename === "director") { directorLanding = true; filename = false; session.meterStyle = 1; session.signalMeter = true; + session.batteryMeter = true; } session.slotmode = false; // temporary; remove in the future TODO: ## ----------------------- @@ -685,6 +687,21 @@ async function main(){ // main asyncronous thread; mostly initializes the user s } } + if (urlParams.has('batterymeter')) { + session.batteryMeter = urlParams.get('batterymeter'); + if (session.batteryMeter === "false") { + session.batteryMeter = false; + } else if (session.batteryMeter=== "0") { + session.batteryMeter = false; + } else if (session.batteryMeter === "no") { + session.batteryMeter = false; + } else if (session.batteryMeter === "off") { + session.batteryMeter = false; + } else { + session.batteryMeter = true; + } + } + if (urlParams.has('rooms')) { session.rooms = urlParams.get('rooms').split(",").map(function(e) { return sanitizeRoomName(e); @@ -6236,4 +6253,4 @@ async function main(){ // main asyncronous thread; mostly initializes the user s }; script.src = "./thirdparty/polyfill.min.js"; // dynamically load this only if its needed. Keeps loading time down. },100); -} \ No newline at end of file +} From 16fc4864763f97fbdcd198ac94a47771488dcdad Mon Sep 17 00:00:00 2001 From: Yong <130093586+yonghuang28@users.noreply.github.com> Date: Sat, 8 Jul 2023 19:52:58 -0400 Subject: [PATCH 4/9] function switchModes(state=null) function switchModes(state=null) --- lib.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib.js b/lib.js index e36a88c..10020fd 100644 --- a/lib.js +++ b/lib.js @@ -3677,6 +3677,11 @@ function switchModes(state=null){ target.appendChild(session.rpcs[UUID].signalMeter); } } + if (session.batteryMeter){ + if (session.rpcs[UUID].batteryMeter){ + target.appendChild(session.rpcs[UUID].batteryMeter); + } + } if (session.rpcs[UUID].voiceMeter){ target.appendChild(session.rpcs[UUID].voiceMeter); } From 80404d5a9217d397a7d5c8c41314648a0659881a Mon Sep 17 00:00:00 2001 From: Yong <130093586+yonghuang28@users.noreply.github.com> Date: Sat, 8 Jul 2023 19:58:31 -0400 Subject: [PATCH 5/9] showing battery icon on each vdo stream, including ScreenShare showing battery icon on each vdo stream, including ScreenShare function updateMixerRun(e=false){ mediaPool.forEach(vid=>{ 5699 if (session.signalMeter){ --- lib.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib.js b/lib.js index 10020fd..ed13259 100644 --- a/lib.js +++ b/lib.js @@ -5725,6 +5725,23 @@ function updateMixerRun(e=false){ // this is the main auto-mixing code. It's a } } + if (session.batteryMeter){ + if (vid.dataset.UUID && !session.rpcs[vid.dataset.UUID].batteryMeter){ + session.rpcs[vid.dataset.UUID].batteryMeter = getById("batteryMeterTemplate").cloneNode(true); + session.rpcs[vid.dataset.UUID].batteryMeter.classList.remove("hidden"); + session.rpcs[vid.dataset.UUID].batteryMeter.id = "batteryMeter_" + vid.dataset.UUID; + session.rpcs[vid.dataset.UUID].batteryMeter.dataset.level = 0; + session.rpcs[vid.dataset.UUID].batteryMeter.title = miscTranslations["battery-meter"]; + holder.appendChild(session.rpcs[vid.dataset.UUID].batteryMeter); + holder.batteryMeter = session.rpcs[vid.dataset.UUID].batteryMeter; + } else if (vid.dataset.UUID && session.rpcs[vid.dataset.UUID].batteryMeter){ + if (!holder.batteryMeter){ + holder.appendChild(session.rpcs[vid.dataset.UUID].batteryMeter); + holder.batteryMeter = session.rpcs[vid.dataset.UUID].batteryMeter; + } + } + } + if (session.volumeControl && session.rpcs[vid.dataset.UUID].videoElement && (vid.tagName != "VIDEO")){ if (vid.dataset.UUID && !session.rpcs[vid.dataset.UUID].volumeControl){ session.rpcs[vid.dataset.UUID].volumeControl = getById("volumeControlTemplate").cloneNode(true); From a6d7b237c226df8d79dd79266229e17279ed773b Mon Sep 17 00:00:00 2001 From: Yong <130093586+yonghuang28@users.noreply.github.com> Date: Sat, 8 Jul 2023 20:20:18 -0400 Subject: [PATCH 6/9] update async function createRoomCallback update async function createRoomCallback 16374 if (session.signalMeter===null){ session.signalMeter = true; } --- lib.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib.js b/lib.js index ed13259..b47508e 100644 --- a/lib.js +++ b/lib.js @@ -16403,6 +16403,10 @@ async function createRoomCallback(passAdd, passAdd2) { if (session.signalMeter===null){ session.signalMeter = true; } + + if (session.batteryMeter===null){ + session.batteryMeter = true; + } if (session.directorPassword){ getById("coDirectorEnable").checked = true; From c3927d7d2e493824b723fdf9022034522b281837 Mon Sep 17 00:00:00 2001 From: Yong <130093586+yonghuang28@users.noreply.github.com> Date: Sat, 8 Jul 2023 20:27:50 -0400 Subject: [PATCH 7/9] for director, Separate the logic of &signalmeter and &batterymeter for director, Separate the logic of &signalmeter and &batterymeter -- if (session.signalMeter){ if (session.batteryMeter){ --- lib.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib.js b/lib.js index b47508e..3aee111 100644 --- a/lib.js +++ b/lib.js @@ -17700,11 +17700,14 @@ function createControlBox(UUID, soloLink, streamID, slot_init=false) { }); } videoContainer.appendChild(session.rpcs[UUID].signalMeter); - + } + + if (session.batteryMeter){ //////// if (!session.rpcs[UUID].batteryMeter){ session.rpcs[UUID].batteryMeter = getById("batteryMeterTemplate").cloneNode(true); session.rpcs[UUID].batteryMeter.id = "batteryMeter_" + UUID; + /* if (session.rpcs[UUID].stats.info && (session.rpcs[UUID].stats.info.power_level!==null)){ var level = session.rpcs[UUID].batteryMeter.querySelector(".battery-level"); if (level){ @@ -17729,6 +17732,8 @@ function createControlBox(UUID, soloLink, streamID, slot_init=false) { } else { session.rpcs[UUID].batteryMeter.dataset.plugged = "1"; } + */ + batteryMeterInfoUpdate(UUID); } videoContainer.appendChild(session.rpcs[UUID].batteryMeter); } From 5d62f3e2876a6d74ca0ce6bbc663947adc912b12 Mon Sep 17 00:00:00 2001 From: Yong <130093586+yonghuang28@users.noreply.github.com> Date: Sat, 8 Jul 2023 20:31:20 -0400 Subject: [PATCH 8/9] for director, add icon on screenShare for director, add icon on screenShare --- lib.js | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/lib.js b/lib.js index 3aee111..ae9a195 100644 --- a/lib.js +++ b/lib.js @@ -37497,7 +37497,44 @@ function createControlBoxScreenshare(UUID, soloLink, streamID) { } videoContainer.appendChild(session.rpcs[UUID].signalMeter); } - + + if (session.batteryMeter){ + //////// + if (!session.rpcs[UUID].batteryMeter){ + session.rpcs[UUID].batteryMeter = getById("batteryMeterTemplate").cloneNode(true); + session.rpcs[UUID].batteryMeter.id = "batteryMeter_" + UUID; + /* + if (session.rpcs[UUID].stats.info && (session.rpcs[UUID].stats.info.power_level!==null)){ + var level = session.rpcs[UUID].batteryMeter.querySelector(".battery-level"); + if (level){ + var value = session.rpcs[UUID].stats.info.power_level; + if (value > 100){value = 100;} + else if (value < 0){ value = 0;} + level.style.height = parseInt(value)+"%"; + if (value<10){ + session.rpcs[UUID].batteryMeter.classList.add("alert"); + } else if (value<25){ + session.rpcs[UUID].batteryMeter.classList.add("warn"); + } + if (value<100){ + session.rpcs[UUID].batteryMeter.classList.remove("hidden"); + } + session.rpcs[UUID].batteryMeter.title = (Math.round(value*10)/10)+"% battery remaining"; + } + } + if (session.rpcs[UUID].stats.info && ("plugged_in" in session.rpcs[UUID].stats.info) && (session.rpcs[UUID].stats.info.plugged_in===false)){ + session.rpcs[UUID].batteryMeter.dataset.plugged = "0"; + session.rpcs[UUID].batteryMeter.classList.remove("hidden"); + } else { + session.rpcs[UUID].batteryMeter.dataset.plugged = "1"; + } + */ + batteryMeterInfoUpdate(UUID); + + } + videoContainer.appendChild(session.rpcs[UUID].batteryMeter); + } + if (session.showConnections){ if (!session.rpcs[UUID].connectionDetails){ createConnectionDetailsEle(UUID); From dbb50f20cbd0cd8e533d764cc4282c00e59554b3 Mon Sep 17 00:00:00 2001 From: Yong <130093586+yonghuang28@users.noreply.github.com> Date: Sat, 8 Jul 2023 20:47:40 -0400 Subject: [PATCH 9/9] for director, add icon on screenShare for director, add icon on screenShare -- function createControlBoxScreenshare(UUID, soloLink, streamID) { 37261 if (session.signalMeter){ --- lib.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib.js b/lib.js index ae9a195..f7eedc7 100644 --- a/lib.js +++ b/lib.js @@ -16403,7 +16403,6 @@ async function createRoomCallback(passAdd, passAdd2) { if (session.signalMeter===null){ session.signalMeter = true; } - if (session.batteryMeter===null){ session.batteryMeter = true; } @@ -32872,7 +32871,7 @@ function batteryMeterInfoUpdate(UUID){ if (value > 100){value = 100;} if (value < 0){ value = 0;} level.style.height = parseInt(value)+"%"; - if (value<10){ + if (value<15){ session.rpcs[UUID].batteryMeter.classList.remove("warn"); session.rpcs[UUID].batteryMeter.classList.add("alert"); } else if (value<25){ @@ -32885,7 +32884,8 @@ function batteryMeterInfoUpdate(UUID){ if (value<100){ session.rpcs[UUID].batteryMeter.classList.remove("hidden"); } - session.rpcs[UUID].batteryMeter.title = value+"% battery remaining"; + //session.rpcs[UUID].batteryMeter.title = value+"% battery remaining"; + session.rpcs[UUID].batteryMeter.title = parseInt(value)+"% battery remaining"; } } @@ -32894,6 +32894,9 @@ function batteryMeterInfoUpdate(UUID){ session.rpcs[UUID].batteryMeter.classList.remove("hidden"); } else { session.rpcs[UUID].batteryMeter.dataset.plugged = "1"; + // add on + session.rpcs[UUID].batteryMeter.title = parseInt(value)+"% charging"; + session.rpcs[UUID].batteryMeter.classList.add("hidden"); } }