luci-base: refactor network devices enumeration
authorLuca Barbato <lu_zero@gentoo.org>
Mon, 3 Jun 2024 09:08:02 +0000 (11:08 +0200)
committerPaul Donald <newtwen+github@gmail.com>
Sat, 14 Sep 2024 20:25:57 +0000 (22:25 +0200)
And make sure to return an empty list if getDevices() returns null.

It happens with batadv.

modules/luci-base/htdocs/luci-static/resources/tools/widgets.js

index 14948bbf0f8f9764f286e086ad9d7ad3b1a5b4be..d946d0e0936834f31b4156278d7b1018c265060d 100644 (file)
@@ -17,6 +17,15 @@ function getGroups() {
     });
 }
 
+function getDevices(network) {
+    if (network.isBridge()) {
+        var devices = network.getDevices();
+        return devices ? devices : [];
+    } else {
+        return L.toArray(network.getDevice());
+    }
+}
+
 var CBIZoneSelect = form.ListValue.extend({
        __name__: 'CBI.ZoneSelect',
 
@@ -105,7 +114,7 @@ var CBIZoneSelect = form.ListValue.extend({
                                        'class': 'ifacebadge' + (network.getName() == this.network ? ' ifacebadge-active' : '')
                                }, network.getName() + ': ');
 
-                               var devices = network.isBridge() ? network.getDevices() : L.toArray(network.getDevice());
+                               var devices = getDevices(network);
 
                                for (var k = 0; k < devices.length; k++) {
                                        span.appendChild(E('img', {
@@ -246,7 +255,7 @@ var CBIZoneForwards = form.DummyValue.extend({
                                'class': 'ifacebadge' + (network.getName() == this.network ? ' ifacebadge-active' : '')
                        }, network.getName() + ': ');
 
-                       var subdevs = network.isBridge() ? network.getDevices() : L.toArray(network.getDevice());
+                       var subdevs = getDevices(network);
 
                        for (var k = 0; k < subdevs.length && subdevs[k]; k++) {
                                span.appendChild(E('img', {
@@ -339,7 +348,7 @@ var CBINetworkSelect = form.ListValue.extend({
 
        renderIfaceBadge: function(network) {
                var span = E('span', { 'class': 'ifacebadge' }, network.getName() + ': '),
-                   devices = network.isBridge() ? network.getDevices() : L.toArray(network.getDevice());
+                   devices = getDevices(network);
 
                for (var j = 0; j < devices.length && devices[j]; j++) {
                        span.appendChild(E('img', {