luci-mod-network: rework signal badge disabled state
authorJo-Philipp Wich <jo@mein.io>
Thu, 2 Apr 2020 13:20:23 +0000 (15:20 +0200)
committerJo-Philipp Wich <jo@mein.io>
Thu, 2 Apr 2020 13:20:58 +0000 (15:20 +0200)
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js

index 09f921179035d10cc3d97392a15e8fcbc4e5a9f8..0bc15c26aabffea8e7a46f7b6816c801728c5f69 100644 (file)
@@ -29,7 +29,7 @@ function render_radio_badge(radioDev) {
        ]);
 }
 
-function render_signal_badge(signalPercent, signalValue, noiseValue, wrap) {
+function render_signal_badge(signalPercent, signalValue, noiseValue, wrap, mode) {
        var icon, title, value;
 
        if (signalPercent < 0)
@@ -45,20 +45,42 @@ function render_signal_badge(signalPercent, signalValue, noiseValue, wrap) {
        else
                icon = L.resource('icons/signal-75-100.png');
 
-       if (signalValue != null && signalValue != 0 && noiseValue != null && noiseValue != 0) {
-               value = '%d/%d\xa0%s'.format(signalValue, noiseValue, _('dBm'));
-               title = '%s: %d %s / %s: %d %s / %s %d'.format(
-                       _('Signal'), signalValue, _('dBm'),
-                       _('Noise'), noiseValue, _('dBm'),
-                       _('SNR'), signalValue - noiseValue);
-       }
-       else if (signalValue != null && signalValue != 0) {
-               value = '%d\xa0%s'.format(signalValue, _('dBm'));
-               title = '%s: %d %s'.format(_('Signal'), signalValue, _('dBm'));
+       if (signalValue != null && signalValue != 0) {
+               if (noiseValue != null && noiseValue != 0) {
+                       value = '%d/%d\xa0%s'.format(signalValue, noiseValue, _('dBm'));
+                       title = '%s: %d %s / %s: %d %s / %s %d'.format(
+                               _('Signal'), signalValue, _('dBm'),
+                               _('Noise'), noiseValue, _('dBm'),
+                               _('SNR'), signalValue - noiseValue);
+               }
+               else {
+                       value = '%d\xa0%s'.format(signalValue, _('dBm'));
+                       title = '%s: %d %s'.format(_('Signal'), signalValue, _('dBm'));
+               }
        }
        else if (signalPercent > -1) {
-               value = '\xa0---\xa0';
-               title = _('No signal');
+               switch (mode) {
+                       case 'ap':
+                               title = _('No client associated');
+                               break;
+
+                       case 'sta':
+                       case 'adhoc':
+                       case 'mesh':
+                               title = _('Not associated');
+                               break;
+
+                       default:
+                               title = _('No RX signal');
+               }
+
+               if (noiseValue != null && noiseValue != 0) {
+                       value = '---/%d\x0a%s'.format(noiseValue, _('dBm'));
+                       title = '%s / %s: %d %s'.format(title, _('Noise'), noiseValue, _('dBm'));
+               }
+               else {
+                       value = '---\xa0%s'.format(_('dBm'));
+               }
        }
        else {
                value = E('em', {}, E('small', {}, [ _('disabled') ]));
@@ -80,7 +102,9 @@ function render_signal_badge(signalPercent, signalValue, noiseValue, wrap) {
 }
 
 function render_network_badge(radioNet) {
-       return render_signal_badge(radioNet.isUp() ? radioNet.getSignalPercent() : -1,  radioNet.getSignal(), radioNet.getNoise());
+       return render_signal_badge(
+               radioNet.isUp() ? radioNet.getSignalPercent() : -1,
+               radioNet.getSignal(), radioNet.getNoise(), false, radioNet.getMode());
 }
 
 function render_radio_status(radioDev, wifiNets) {
@@ -143,7 +167,9 @@ function render_modal_status(node, radioNet) {
        if (node == null)
                node = E('span', { 'class': 'ifacebadge large', 'data-network': radioNet.getName() }, [ E('small'), E('span') ]);
 
-       L.dom.content(node.firstElementChild, render_signal_badge(disabled ? -1 : radioNet.getSignalPercent(), radioNet.getSignal(), noise, true));
+       L.dom.content(node.firstElementChild, render_signal_badge(
+               disabled ? -1 : radioNet.getSignalPercent(),
+               radioNet.getSignal(), noise, true, radioNet.getMode()));
 
        L.itemlist(node.lastElementChild, [
                _('Mode'),       mode,