L.ui.view.extend({ title: L.tr('Interface Overview'), pendingRestart: [ ], pendingShutdown: [ ], setUp: L.rpc.declare({ object: 'luci2.network', method: 'ifup', params: [ 'data' ], expect: { '': { code: -1 } } }), setDown: L.rpc.declare({ object: 'luci2.network', method: 'ifdown', params: [ 'data' ], expect: { '': { code: -1 } } }), renderDeviceIcon: function(dev, up) { var icon = dev ? dev.icon(up) : L.globals.resource + '/icons/ethernet_disabled.png'; var desc = dev ? '%s (%s)'.format(dev.description(), dev.name()) : L.tr('Network interface not present'); return $('') .attr('title', desc) .attr('src', icon); }, renderNetworkBadge: function(network, div) { var dest = div || $('#network-badge-%s'.format(network.name())); var device = network.getDevice(); //network.device || { type: 'Network device', device: '?' }; var subdevs = network.getSubdevices(); if (div) { var h = $('
') .addClass('ifacebox-head') .text(network.name()); if (network.zone) h.css('background-color', network.zone.color).attr('title', L.trc('Interface status', 'Part of zone "%s"').format(network.zone.name)); else h.css('background-color', '#cccccc').attr('title', L.trc('Interface status', 'Not part of any zone')); dest.append(h); } else { dest.children('div.ifacebox-body').remove(); } var b = $('
') .addClass('ifacebox-body'); b.append(this.renderDeviceIcon(device, network.isUp())); if (subdevs.length) { b.append('('); for (var i = 0; i < subdevs.length; i++) b.append(this.renderDeviceIcon(subdevs[i], subdevs[i].isUp())); b.append(')'); } b.append($('
')).append($('').text(device ? device.name() : '?')); return dest.append(b); }, renderNetworkStatus: function(network, div) { var rv = ''; if (network.isUp()) { rv += '%s: %t
'.format( L.tr('Uptime'), network.getUptime() ); } else { rv += '%s: %s
'.format( L.tr('Uptime'), L.tr('Interface is down') ); } var v4 = network.getIPv4Addrs(); if (v4.length) rv += '%s: %s
'.format( L.trc('Interface status', 'IPv4'), v4.join(', ') ); var v6 = network.getIPv6Addrs(); if (v6.length) rv += '%s: %s
'.format( L.trc('Interface status', 'IPv6'), v6.join(', ') ); return (div || $('#network-status-%s'.format(network.name()))) .empty() .append(rv); }, renderNetworkChart: function(network, div) { var dest = (div || $('#network-chart-%s'.format(network.name()))); dest.empty(); dest.append($('
') .addClass('traffic-chart') .append($('') .attr('id', 'network-chart-tx-%s'.format(network.name())) .hide()) .append($('