14 -webkit-transition: width .3s ease;
15 transition: width .3s ease;
21 border-bottom: 1px solid #666;
32 <span>0</span><span>-5</span><span>-10</span><span>-15</span><span>-20</span>
33 <span>-25</span><span>-30</span><span>-40</span><span>-50</span><span>-60</span>
35 <div class="meter"><span class="gauge"></span></div>
38 function get_appropriate_ws_url()
44 * We open the websocket encrypted if this page came on an
45 * https:// url itself, otherwise unencrypted
48 if (u.substring(0, 5) == "https") {
53 if (u.substring(0, 4) == "http")
63 function iec_scale(db) {
66 if (db < -70.0 || isNaN(db)) {
68 } else if (db < -60.0) {
69 def = (db + 70.0) * 0.25;
70 } else if (db < -50.0) {
71 def = (db + 60.0) * 0.5 + 2.5;
72 } else if (db < -40.0) {
73 def = (db + 50.0) * 0.75 + 7.5;
74 } else if (db < -30.0) {
75 def = (db + 40.0) * 1.5 + 15.0;
76 } else if (db < -20.0) {
77 def = (db + 30.0) * 2.0 + 30.0;
78 } else if (db < 0.0) {
79 def = (db + 20.0) * 2.5 + 50.0;
88 scale = document.getElementById('scale');
90 for (i=0; i<scale.children.length; i++) {
91 var span = scale.children[i];
92 span.style.left = iec_scale(parseFloat(span.textContent)) * 100 + '%';
95 var ws = new WebSocket(get_appropriate_ws_url(), 'jack-wsmeter-protocol');
96 ws.onmessage = function(event) {
97 var peaks = event.data.split(" ").slice(0, -1);
98 var gauges = document.getElementsByClassName('gauge');
99 var meters = document.getElementsByClassName('meter');
100 if (meters.length != peaks.length) {
101 for (i=meters.length; i>1; i--) {
102 meters[i-1].remove();
104 for (i=1; i<peaks.length; i++) {
105 document.body.appendChild(meters[0].cloneNode(true));
108 for (i=0; i<peaks.length; i++) {
109 gauges[i].style.width = iec_scale(parseFloat(peaks[i])) * 100 + '%';