From: Jo-Philipp Wich Date: Sat, 1 Feb 2014 18:25:50 +0000 (+0000) Subject: luci2: Initial network interface configuration view X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fluci2%2Fui.git;a=commitdiff_plain;h=639d2147af1293101ce10b4d67bde91a42da6926 luci2: Initial network interface configuration view --- diff --git a/luci2/htdocs/luci2/template/network.interfaces.htm b/luci2/htdocs/luci2/template/network.interfaces.htm new file mode 100644 index 0000000..ad19e7d --- /dev/null +++ b/luci2/htdocs/luci2/template/network.interfaces.htm @@ -0,0 +1 @@ +
diff --git a/luci2/htdocs/luci2/view/network.interfaces.js b/luci2/htdocs/luci2/view/network.interfaces.js new file mode 100644 index 0000000..a344327 --- /dev/null +++ b/luci2/htdocs/luci2/view/network.interfaces.js @@ -0,0 +1,361 @@ +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($('