'use strict'; 'require view'; 'require rpc'; 'require form'; return view.extend({ callHostHints: rpc.declare({ object: 'luci-rpc', method: 'getHostHints', expect: { '': {} } }), load: function() { return this.callHostHints(); }, render: function(hosts) { var m, s, o; m = new form.Map('dhcp', _('Hostnames')); s = m.section(form.GridSection, 'domain', _('Host entries')); s.addremove = true; s.anonymous = true; s.sortable = true; o = s.option(form.Value, 'name', _('Hostname')); o.datatype = 'hostname'; o.rmempty = true; o = s.option(form.Value, 'ip', _('IP address')); o.datatype = 'ipaddr'; o.rmempty = true; var ipaddrs = {}; Object.keys(hosts).forEach(function(mac) { var addrs = L.toArray(hosts[mac].ipaddrs || hosts[mac].ipv4); for (var i = 0; i < addrs.length; i++) ipaddrs[addrs[i]] = hosts[mac].name || mac; }); L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ipv4) { o.value(ipv4, '%s (%s)'.format(ipv4, ipaddrs[ipv4])); }); return m.render(); } });