summaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
authorLuciano Iam <lucianito@gmail.com>2020-04-11 17:43:39 +0200
committerRobin Gareus <robin@gareus.org>2020-04-11 22:30:41 +0200
commitece0bcde8b15016136c00e9cd7c2ec6f65487f0b (patch)
treef16d4e9de892c405dc1a9c1e66d0d9a90c0f1121 /share
parent40a03e4cf5ab30a3c50d68ffa50542963c4faeb1 (diff)
WebSockets: make mixer-demo use ardour lib and remove duplicated code
Diffstat (limited to 'share')
-rw-r--r--share/web_surfaces/builtin/mixer-demo/index.html4
-rw-r--r--share/web_surfaces/builtin/mixer-demo/js/connection.js77
-rw-r--r--share/web_surfaces/builtin/mixer-demo/js/main.js16
-rw-r--r--share/web_surfaces/builtin/mixer-demo/js/widget.js18
4 files changed, 21 insertions, 94 deletions
diff --git a/share/web_surfaces/builtin/mixer-demo/index.html b/share/web_surfaces/builtin/mixer-demo/index.html
index 947d017397..247eba97e5 100644
--- a/share/web_surfaces/builtin/mixer-demo/index.html
+++ b/share/web_surfaces/builtin/mixer-demo/index.html
@@ -11,8 +11,6 @@
<div id="strips"></div>
<div id="log"></div>
</div>
- <script src="js/connection.js"></script>
- <script src="js/widget.js"></script>
- <script src="js/main.js"></script>
+ <script type="module" src="js/main.js"></script>
</body>
</html>
diff --git a/share/web_surfaces/builtin/mixer-demo/js/connection.js b/share/web_surfaces/builtin/mixer-demo/js/connection.js
deleted file mode 100644
index 077799b48b..0000000000
--- a/share/web_surfaces/builtin/mixer-demo/js/connection.js
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2020 Luciano Iam <lucianito@gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-const JSON_INF = 1.0e+128;
-
-class Connection {
-
- // https://developer.mozilla.org/en-US/docs/Web/API/URL/host
-
- constructor (host) {
- this.socket = new WebSocket(`ws://${host}`);
- this.socket.onopen = () => this.openCallback();
- this.socket.onclose = () => this.closeCallback();
- this.socket.onerror = (error) => this.errorCallback(error);
- this.socket.onmessage = (event) => this._onMessage(event);
- }
-
- openCallback () {
- // empty
- }
-
- closeCallback () {
- // empty
- }
-
- errorCallback (error) {
- // empty
- }
-
- messageCallback (node, addr, val) {
- // empty
- }
-
- send (node, addr, val) {
- for (const i in val) {
- if (val[i] == Infinity) {
- val[i] = JSON_INF;
- } else if (val[i] == -Infinity) {
- val[i] = -JSON_INF;
- }
- }
-
- const json = JSON.stringify({node: node, addr: addr, val: val});
-
- this.socket.send(json);
- }
-
- _onMessage (event) {
- const msg = JSON.parse(event.data);
-
- for (const i in msg.val) {
- if (msg.val[i] >= JSON_INF) {
- msg.val[i] = Infinity;
- } else if (msg.val[i] <= -JSON_INF) {
- msg.val[i] = -Infinity;
- }
- }
-
- this.messageCallback(msg.node, msg.addr || [], msg.val);
- }
-
-}
diff --git a/share/web_surfaces/builtin/mixer-demo/js/main.js b/share/web_surfaces/builtin/mixer-demo/js/main.js
index 931371979a..11d8ecfc6e 100644
--- a/share/web_surfaces/builtin/mixer-demo/js/main.js
+++ b/share/web_surfaces/builtin/mixer-demo/js/main.js
@@ -16,16 +16,20 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
+import { Channel } from '/shared/channel.js';
+import { Switch, DiscreteSlider, ContinuousSlider, LogarithmicSlider,
+ StripPanSlider, StripGainSlider, StripMeter } from './widget.js';
+
(() => {
const MAX_LOG_LINES = 1000;
const FEEDBACK_NODES = ['strip_gain', 'strip_pan', 'strip_meter', 'strip_plugin_enable',
'strip_plugin_param_value'];
- const conn = new Connection(location.host);
+ const channel = new Channel(location.host);
const widgets = {};
- conn.messageCallback = (node, addr, val) => {
+ channel.messageCallback = (node, addr, val) => {
log(`↙ ${node} (${addr}) = ${val}`, 'message-in');
if (node == 'strip_desc') {
@@ -41,14 +45,16 @@
}
};
- conn.closeCallback = () => {
+ channel.closeCallback = () => {
log('Connection dropped', 'error');
};
- conn.errorCallback = () => {
+ channel.errorCallback = () => {
log('Connection error', 'error');
};
+ channel.open();
+
function createStrip (addr, name) {
const id = `strip-${addr[0]}`;
const strips = document.getElementById('strips');
@@ -118,7 +124,7 @@
function send (widget) {
const val = widget.value;
log(`↗ ${widget.node} (${widget.addr}) = ${val}`, 'message-out');
- conn.send(widget.node, widget.addr, [val]);
+ channel.send(widget.node, widget.addr, [val]);
}
function createElem (html, parent) {
diff --git a/share/web_surfaces/builtin/mixer-demo/js/widget.js b/share/web_surfaces/builtin/mixer-demo/js/widget.js
index 7bab5b1b1a..1d5cab22b9 100644
--- a/share/web_surfaces/builtin/mixer-demo/js/widget.js
+++ b/share/web_surfaces/builtin/mixer-demo/js/widget.js
@@ -16,7 +16,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-class Widget {
+export class Widget {
constructor (node, addr, html) {
this.node = node;
@@ -44,7 +44,7 @@ class Widget {
}
-class Switch extends Widget {
+export class Switch extends Widget {
constructor (node, addr) {
super (node, addr, `<input type="checkbox" class="widget-switch">`);
@@ -61,7 +61,7 @@ class Switch extends Widget {
}
-class Slider extends Widget {
+export class Slider extends Widget {
constructor (node, addr, min, max, step) {
const html = `<input type="range" class="widget-slider"
@@ -82,7 +82,7 @@ class Slider extends Widget {
}
-class DiscreteSlider extends Slider {
+export class DiscreteSlider extends Slider {
constructor (node, addr, min, max) {
super(node, addr, min, max, 1);
@@ -90,7 +90,7 @@ class DiscreteSlider extends Slider {
}
-class ContinuousSlider extends Slider {
+export class ContinuousSlider extends Slider {
constructor (node, addr, min, max) {
super(node, addr, min, max, 0.001);
@@ -98,7 +98,7 @@ class ContinuousSlider extends Slider {
}
-class LogarithmicSlider extends ContinuousSlider {
+export class LogarithmicSlider extends ContinuousSlider {
constructor (node, addr, min, max) {
super(node, addr, 0, 1.0);
@@ -117,7 +117,7 @@ class LogarithmicSlider extends ContinuousSlider {
}
-class StripPanSlider extends ContinuousSlider {
+export class StripPanSlider extends ContinuousSlider {
constructor (node, addr) {
super(node, addr, -1.0, 1.0);
@@ -125,7 +125,7 @@ class StripPanSlider extends ContinuousSlider {
}
-class StripGainSlider extends ContinuousSlider {
+export class StripGainSlider extends ContinuousSlider {
constructor (node, addr) {
super(node, addr, 0, 1.0)
@@ -144,7 +144,7 @@ class StripGainSlider extends ContinuousSlider {
}
-class StripMeter extends Widget {
+export class StripMeter extends Widget {
constructor (node, addr) {
super(node, addr, `<label></label>`);