luci-mod-network, luci-mod-status: harmonize wifi signal indicators
authorJo-Philipp Wich <jo@mein.io>
Mon, 17 Feb 2020 08:49:34 +0000 (09:49 +0100)
committerJo-Philipp Wich <jo@mein.io>
Mon, 17 Feb 2020 08:50:36 +0000 (09:50 +0100)
Fixes: #3636
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js
modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js

index e3d2aa411837f08aa5f85502e6b32f99c0025078..4c75a2f0c951d5e489021ff99d0d56dd8d57c8cf 100644 (file)
@@ -30,7 +30,7 @@ function render_radio_badge(radioDev) {
 }
 
 function render_signal_badge(signalPercent, signalValue, noiseValue, wrap) {
-       var icon, title;
+       var icon, title, value;
 
        if (signalPercent < 0)
                icon = L.resource('icons/signal-none.png');
@@ -45,18 +45,24 @@ function render_signal_badge(signalPercent, signalValue, noiseValue, wrap) {
        else
                icon = L.resource('icons/signal-75-100.png');
 
-       if (signalValue != null && signalValue != 0) {
-               title = '%s %d %s'.format(_('Signal'), signalValue, _('dBm'));
-
-               if (noiseValue != null && noiseValue != 0)
-                       title += ' / %s: %d %s'.format(_('Noise'), noiseValue, _('dBm'));
+       if (signalValue != null && signalValue != 0 && noiseValue != null && noiseValue != 0) {
+               value = '%d / %d %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 %s'.format(signalValue, _('dBm'));
+               title = '%s: %d %s'.format(_('Signal'), signalValue, _('dBm'));
        }
        else {
+               value = E('em', {}, E('small', {}, [ _('disabled') ]));
                title = _('No signal');
        }
 
        return E('div', { 'class': wrap ? 'center' : 'ifacebadge', 'title': title },
-               [ E('img', { 'src': icon }), wrap ? E('br') : ' ', '%d%%'.format(Math.max(signalPercent, 0)) ]);
+               [ E('img', { 'src': icon }), wrap ? E('br') : ' ', value ]);
 }
 
 function render_network_badge(radioNet) {
index e73f57712b381d4f9d89918127474d8bd7db0d6e..86468c7188db6a2e85fab2f586bb00cacefbab8c 100644 (file)
@@ -139,14 +139,14 @@ return L.Class.extend({
                                    ipv6 = hosthints.getIP6AddrByMACAddr(bss.mac);
 
                                var icon;
-                               var q = (-1 * (bss.noise - bss.signal)) / 5;
-                               if (q < 1)
+                               var q = Math.min((bss.signal + 110) / 70 * 100, 100);
+                               if (q == 0)
                                        icon = L.resource('icons/signal-0.png');
-                               else if (q < 2)
+                               else if (q < 25)
                                        icon = L.resource('icons/signal-0-25.png');
-                               else if (q < 3)
+                               else if (q < 50)
                                        icon = L.resource('icons/signal-25-50.png');
-                               else if (q < 4)
+                               else if (q < 75)
                                        icon = L.resource('icons/signal-50-75.png');
                                else
                                        icon = L.resource('icons/signal-75-100.png');