Skip to content
Snippets Groups Projects
Commit 6362e869 authored by Daniel Müller's avatar Daniel Müller :speech_balloon:
Browse files

Improve stability + positioning

- Slider is now inserted into the top bar
- Fixed invalid positioning in breakout rooms
- Fixed vertical centering to ... menu
parent dea2bd55
No related branches found
No related tags found
No related merge requests found
// ==UserScript== // ==UserScript==
// @name BBB Volume Slider // @name BBB Volume Slider
// @website https://code.fbi.h-da.de/istddmue2/bbb-volume-slider-userscript // @website https://code.fbi.h-da.de/istddmue2/bbb-volume-slider-userscript
// @version 0.1 // @version 0.2
// @description Adds a volume slider // @description Adds a volume slider
// @author Daniel Müller // @author Daniel Müller
// @match https://*.h-da.de/html5client/join* // @match https://*.h-da.de/html5client/join*
// @grant none // @grant none
// ==/UserScript== // ==/UserScript==
(function() { async function sleep(ms) {
'use strict'; await new Promise(r => setTimeout(r, ms));
}
// Check if the volume slider exists function getTopRightContainer() {
if (document.getElementById("vs-container") != null) return; return document.querySelector("div[class^=top] div[class^=right]");
}
function remoteMedia() {
return document.getElementById("remote-media");
}
function createVSContainer() {
let vsc = document.createElement("div");
vsc.id = "vs-container";
vsc.style.verticalAlign = "middle";
vsc.style.marginRight = "20px";
// Create the container return vsc;
let vsc = document.createElement("div") }
vsc.id = "vs-container"
vsc.style.position = "absolute" function createVolumeSlider() {
vsc.style.top = "20px" let vs = document.createElement("input");
vsc.style.right = "75px" vs.style.verticalAlign = "middle";
vs.type = "range";
// Create the actual slider vs.min = 1;
let vs = document.createElement("input") vs.max = 100;
vs.type = "range" vs.value = 30;
vs.min = 1
vs.max = 100
vs.value = 30
// Set the audio volume to default value. This needs to be delayed due to BBB audio stream stuff
window.setTimeout(() => {
document.getElementById("remote-media").volume = Math.pow(vs.value / 100.0, 2)
}, 1000)
vs.oninput = function() { vs.oninput = function() {
document.getElementById("remote-media").volume = Math.pow(this.value / 100.0, 2) remoteMedia().volume = Math.pow(this.value / 100.0, 2);
}
return vs;
}
(async function() {
'use strict';
// Check if the volume already slider exists
if (document.getElementById("vs-container") != null) return;
// Wait until dynamic DOM content is ready
while (getTopRightContainer() == null) {
await sleep(500);
} }
vsc.append(vs) // Create container & slider
document.body.appendChild(vsc) let container = createVSContainer();
let slider = createVolumeSlider();
container.append(slider);
// Update audio volume to default slider value
slider.oninput();
// Insert the volume slider into the right side of the top bar
let targetContainer = getTopRightContainer();
targetContainer.insertBefore(container, targetContainer.firstChild);
})(); })();
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment