1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
'use strict';
'require baseclass';
'require network';
'require rpc';
var callDSLMetrics = rpc.declare({
object: 'dsl',
method: 'metrics',
expect: { '': {} }
});
function format_values(format, val1, val2) {
var val1Str = (val1 != null) ? format.format(val1) : '-';
var val2Str = (val2 != null) ? format.format(val2) : '-';
return val1Str + ' / ' + val2Str;
}
function renderbox(dsl) {
return E('div', { class: 'ifacebox' }, [
E('div', { class: 'ifacebox-head center ' + (dsl.up ? 'active' : '') },
E('strong', _('DSL Status'))),
E('div', { class: 'ifacebox-body left' }, [
L.itemlist(E('span'), [
_('Line State'), dsl.state || '-',
_('Line Mode'), dsl.mode || '-',
_('Line Uptime'), '%t'.format(dsl.uptime),
]),
L.itemlist(E('span'), [
_('Data Rate'), format_values('%1000.3mb/s', dsl.downstream.data_rate, dsl.upstream.data_rate),
_('Noise Margin'), format_values('%.1f dB', dsl.downstream.snr, dsl.upstream.snr),
])
])
]);
}
return baseclass.extend({
title: _('DSL'),
load: function() {
return network.getDSLModemType().then(function(type) {
if (!type)
return Promise.reject();
return L.resolveDefault(callDSLMetrics(), {});
});
},
render: function(dsl) {
if (!dsl.state)
return null;
return E('div', { 'id': 'dsl_status_table', 'class': 'network-status-table' }, renderbox(dsl));
}
});
|