luci-mod-network: rework interface status info
authorPaul Donald <newtwen+github@gmail.com>
Tue, 5 Nov 2024 17:34:18 +0000 (18:34 +0100)
committerPaul Donald <newtwen+github@gmail.com>
Tue, 5 Nov 2024 17:34:18 +0000 (18:34 +0100)
Signed-off-by: Paul Donald <newtwen+github@gmail.com>
modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js

index 96dc72b99d4b47ca123a574e5a0c1ad522199dd4..6f9f2df9418d6e7b275e06caa58d808e1065be6f 100644 (file)
@@ -65,46 +65,31 @@ function render_status(node, ifc, with_device) {
                        null, E('em', _('Interface is marked for deletion'))
                ]);
 
-       var i18n = ifc.getI18n();
-       if (i18n)
-               desc = desc ? '%s (%s)'.format(desc, i18n) : i18n;
+       desc = desc ? '%s (%s)'.format(desc, ifc.getI18n()) : ifc.getI18n();
 
-       var changecount = with_device ? 0 : count_changes(ifc.getName()),
-           ipaddrs = changecount ? [] : ifc.getIPAddrs(),
-           ip6addrs = changecount ? [] : ifc.getIP6Addrs(),
-           errors = ifc.getErrors(),
-           maindev = ifc.getL3Device() || ifc.getDevice(),
-           macaddr = maindev ? maindev.getMAC() : null;
+       const changecount = with_device ? 0 : count_changes(ifc.getName());
+       const maindev = ifc.getL3Device() || ifc.getDevice();
+       const macaddr = maindev ? maindev.getMAC() : null;
+       const cond00 = !changecount && !ifc.isDynamic() && !ifc.isAlias();
+       const cond01 = cond00 && macaddr;
+       const cond02 = cond00 && maindev;
+
+       function addEntries(label, array) {
+               return Array.isArray(array) ? array.flatMap((item) => [label, item]) : [label, null];
+       }
 
        return L.itemlist(node, [
                _('Protocol'), with_device ? null : (desc || '?'),
-               _('Device'),   with_device ? (maindev ? maindev.getShortName() : E('em', _('Not present'))) : null,
-               _('Uptime'),   (!changecount && ifc.isUp()) ? '%t'.format(ifc.getUptime()) : null,
-               _('MAC'),      (!changecount && !ifc.isDynamic() && !ifc.isAlias() && macaddr) ? macaddr : null,
-               _('RX'),       (!changecount && !ifc.isDynamic() && !ifc.isAlias() && maindev) ? '%.2mB (%d %s)'.format(maindev.getRXBytes(), maindev.getRXPackets(), _('Pkts.')) : null,
-               _('TX'),       (!changecount && !ifc.isDynamic() && !ifc.isAlias() && maindev) ? '%.2mB (%d %s)'.format(maindev.getTXBytes(), maindev.getTXPackets(), _('Pkts.')) : null,
-               _('IPv4'),     ipaddrs[0],
-               _('IPv4'),     ipaddrs[1],
-               _('IPv4'),     ipaddrs[2],
-               _('IPv4'),     ipaddrs[3],
-               _('IPv4'),     ipaddrs[4],
-               _('IPv6'),     ip6addrs[0],
-               _('IPv6'),     ip6addrs[1],
-               _('IPv6'),     ip6addrs[2],
-               _('IPv6'),     ip6addrs[3],
-               _('IPv6'),     ip6addrs[4],
-               _('IPv6'),     ip6addrs[5],
-               _('IPv6'),     ip6addrs[6],
-               _('IPv6'),     ip6addrs[7],
-               _('IPv6'),     ip6addrs[8],
-               _('IPv6'),     ip6addrs[9],
-               _('IPv6-PD'),  changecount ? null : ifc.getIP6Prefix(),
+               _('Device'), with_device ? (maindev ? maindev.getShortName() : E('em', _('Not present'))) : null,
+               _('Uptime'), (!changecount && ifc.isUp()) ? '%t'.format(ifc.getUptime()) : null,
+               _('MAC'), (cond01) ? macaddr : null,
+               _('RX'), (cond02) ? '%.2mB (%d %s)'.format(maindev.getRXBytes(), maindev.getRXPackets(), _('Pkts.')) : null,
+               _('TX'), (cond02) ? '%.2mB (%d %s)'.format(maindev.getTXBytes(), maindev.getTXPackets(), _('Pkts.')) : null,
+               ...addEntries(_('IPv4'), changecount ? [] : ifc.getIPAddrs()),
+               ...addEntries(_('IPv6'), changecount ? [] : ifc.getIP6Addrs()),
+               ...addEntries(_('IPv6-PD'), changecount ? null : ifc.getIP6Prefixes?.()),
                _('Information'), with_device ? null : (ifc.get('auto') != '0' ? null : _('Not started on boot')),
-               _('Error'),    errors ? errors[0] : null,
-               _('Error'),    errors ? errors[1] : null,
-               _('Error'),    errors ? errors[2] : null,
-               _('Error'),    errors ? errors[3] : null,
-               _('Error'),    errors ? errors[4] : null,
+               ...addEntries(_('Error'), ifc.getErrors()),
                null, changecount ? E('a', {
                        href: '#',
                        click: L.bind(ui.changes.displayChanges, ui.changes)