14 -webkit-transition: width
.3s ease;
15 transition: width
.3s ease;
21 border-bottom:
1px solid #
666;
27 border-right:
1px solid white;
34 <span>0</span><span>-
5</span><span>-
10</span><span>-
15</span><span>-
20</span>
35 <span>-
25</span><span>-
30</span><span>-
40</span><span>-
50</span><span>-
60</span>
37 <div class=
"meter"><span class=
"gauge"></span></div>
40 function get_appropriate_ws_url()
46 * We open the websocket encrypted if this page came on an
47 * https:// url itself, otherwise unencrypted
50 if (u
.substring(0, 5) == "https") {
55 if (u
.substring(0, 4) == "http")
61 if (!document
.location
.port
) {
62 return pcol
+ u
[0] + ':7681';
69 function iec_scale(db
) {
72 if (db
< -70.0 || isNaN(db
)) {
74 } else if (db
< -60.0) {
75 def
= (db
+ 70.0) * 0.25;
76 } else if (db
< -50.0) {
77 def
= (db
+ 60.0) * 0.5 + 2.5;
78 } else if (db
< -40.0) {
79 def
= (db
+ 50.0) * 0.75 + 7.5;
80 } else if (db
< -30.0) {
81 def
= (db
+ 40.0) * 1.5 + 15.0;
82 } else if (db
< -20.0) {
83 def
= (db
+ 30.0) * 2.0 + 30.0;
84 } else if (db
< 0.0) {
85 def
= (db
+ 20.0) * 2.5 + 50.0;
94 scale
= document
.getElementById('scale');
96 for (i
=0; i
<scale
.children
.length
; i
++) {
97 var span
= scale
.children
[i
];
98 span
.style
.right
= (100 - (iec_scale(parseFloat(span
.textContent
)) * 100)) + '%';
101 var ws
= new WebSocket(get_appropriate_ws_url(), 'jack-wsmeter-protocol');
102 ws
.onmessage = function(event
) {
103 var peaks
= event
.data
.split(" ");
104 var gauges
= document
.getElementsByClassName('gauge');
105 var meters
= document
.getElementsByClassName('meter');
106 if (meters
.length
!= peaks
.length
) {
107 for (i
=meters
.length
; i
>1; i
--) {
108 meters
[i
-1].remove();
110 for (i
=1; i
<peaks
.length
; i
++) {
111 document
.body
.appendChild(meters
[0].cloneNode(true));
114 for (i
=0; i
<peaks
.length
; i
++) {
115 gauges
[i
].style
.width
= iec_scale(parseFloat(peaks
[i
])) * 100 + '%';