'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)); } });