aboutsummaryrefslogtreecommitdiffstats
path: root/src/js/volume.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/volume.js')
-rw-r--r--src/js/volume.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/js/volume.js b/src/js/volume.js
new file mode 100644
index 0000000..0bbb481
--- /dev/null
+++ b/src/js/volume.js
@@ -0,0 +1,55 @@
+function getRootNode(node) {
+ while (!node.hasAttribute('slider-id') && node.parentNode) {
+ return getRootNode(node.parentNode);
+ }
+
+ if (node.hasAttribute('slider-id')) {
+ return node;
+ } else {
+ return false;
+ }
+}
+
+function getValue(node) {
+ node = getRootNode(node);
+ if (node) {
+ return parseInt(node.getAttribute('value'));
+ } else {
+ return false;
+ }
+}
+
+export function setValue(node, value) {
+ node = getRootNode(node);
+ if (node) {
+ value = Math.max(Math.min(value, 100), 0);
+ node.setAttribute('value', value);
+ node.getElementsByTagName('progress')[0].value = value;
+ node.getElementsByTagName('input')[0].value = value;
+ node.getElementsByClassName('value')[0].innerHTML = value+'%';
+ }
+}
+
+// TODO: right now there's only one PATHS
+// if it gets update to use multiple volume controls
+// all the below functions need to be update to use
+// the correct paths/elements
+export function increase(node) {
+ KUKSA.set(PATHS.volume, getValue(node)+5);
+}
+
+export function decrease(node) {
+ KUKSA.set(PATHS.volume, getValue(node)-5);
+}
+
+export function change(node) {
+ KUKSA.set(PATHS.volume, node.value);
+}
+
+export function update(path, value) {
+ setValue(document.getElementById('progress-MAIN'), value);
+}
+
+export function init() {
+ KUKSA.set(PATHS.volume, 20);
+}