diff --git a/src/octoprint/plugins/netconnectd/__init__.py b/src/octoprint/plugins/netconnectd/__init__.py index a7c473c2..a6ac89c8 100644 --- a/src/octoprint/plugins/netconnectd/__init__.py +++ b/src/octoprint/plugins/netconnectd/__init__.py @@ -16,8 +16,6 @@ import octoprint.plugin default_settings = { "socket": "/var/run/netconnectd.sock" } - - s = octoprint.plugin.plugin_settings("netconnectd", defaults=default_settings) @@ -129,11 +127,7 @@ class NetconnectdSettingsPlugin(octoprint.plugin.SettingsPlugin, if not flag: raise RuntimeError("Error while querying status: " + content) - return dict( - ap=content["ap"], - link=content["link"], - wifi_available=content["wifi_available"] - ) + return content def _configure_and_select_wifi(self, ssid, psk, force=False): payload = dict( diff --git a/src/octoprint/plugins/netconnectd/static/css/netconnectd.css b/src/octoprint/plugins/netconnectd/static/css/netconnectd.css index 74db0912..e881b03c 100644 --- a/src/octoprint/plugins/netconnectd/static/css/netconnectd.css +++ b/src/octoprint/plugins/netconnectd/static/css/netconnectd.css @@ -1 +1,25 @@ -table th.settings_plugin_netconnectd_wifis_name,table td.settings_plugin_netconnectd_wifis_name{text-overflow:ellipsis;text-align:left}table th.settings_plugin_netconnectd_wifis_quality,table td.settings_plugin_netconnectd_wifis_quality{text-align:right;width:70px}table th.settings_plugin_netconnectd_wifis_action,table td.settings_plugin_netconnectd_wifis_action{text-align:center;width:70px}table th.settings_plugin_netconnectd_wifis_action a,table td.settings_plugin_netconnectd_wifis_action a{text-decoration:none;color:#000}table th.settings_plugin_netconnectd_wifis_action a.disabled,table td.settings_plugin_netconnectd_wifis_action a.disabled{color:#ccc;cursor:default} \ No newline at end of file +table th.settings_plugin_netconnectd_wifis_name, +table td.settings_plugin_netconnectd_wifis_name { + text-overflow: ellipsis; + text-align: left; +} +table th.settings_plugin_netconnectd_wifis_quality, +table td.settings_plugin_netconnectd_wifis_quality { + text-align: right; + width: 70px; +} +table th.settings_plugin_netconnectd_wifis_action, +table td.settings_plugin_netconnectd_wifis_action { + text-align: center; + width: 100px; +} +table th.settings_plugin_netconnectd_wifis_action a, +table td.settings_plugin_netconnectd_wifis_action a { + text-decoration: none; + color: #000; +} +table th.settings_plugin_netconnectd_wifis_action a.disabled, +table td.settings_plugin_netconnectd_wifis_action a.disabled { + color: #ccc; + cursor: default; +} diff --git a/src/octoprint/plugins/netconnectd/static/js/netconnectd.js b/src/octoprint/plugins/netconnectd/static/js/netconnectd.js index 3ec652bf..ba69fb5e 100644 --- a/src/octoprint/plugins/netconnectd/static/js/netconnectd.js +++ b/src/octoprint/plugins/netconnectd/static/js/netconnectd.js @@ -10,34 +10,52 @@ $(function() { self.enableQualitySorting = ko.observable(false); - self.statusAp = ko.observable(); - self.statusLink = ko.observable(); - self.statusWifiAvailable = ko.observable(); + self.status = { + link: ko.observable(), + connections: { + ap: ko.observable(), + wifi: ko.observable(), + wired: ko.observable() + }, + wifi: { + current_ssid: ko.observable(), + current_address: ko.observable() + } + }; + self.statusCurrentWifi = ko.observable(); self.editorWifi = undefined; self.editorWifiSsid = ko.observable(); self.editorWifiPassphrase1 = ko.observable(); self.editorWifiPassphrase2 = ko.observable(); - - self.working = ko.observable(false); - self.editorWifiPassphraseMismatch = ko.computed(function() { return self.editorWifiPassphrase1() != self.editorWifiPassphrase2(); }); + + self.working = ko.observable(false); self.error = ko.observable(false); + self.connectionStateText = ko.computed(function() { if (self.error()) { - return gettext("Error while talking to netconnectd, is the service running?") - } else if (self.statusAp() && !self.statusWifiAvailable()) { - return gettext("Access Point is active, wifi configured but not available"); - } else if (self.statusAp() && self.statusWifiAvailable()) { - return gettext("Access Point is active, wifi configured"); - } else if (self.statusLink()) { - return gettext("Connected"); + return gettext("Error while talking to netconnectd, is the service running?"); + } else if (self.status.link()) { + if (self.status.connections.ap()) { + return gettext("Acting as access point"); + } else if (self.status.connections.wired()) { + return gettext("Connected via wire"); + } else if (self.status.connections.wifi()) { + if (self.status.wifi.current_ssid()) { + return _.sprintf(gettext("Connected via wifi (SSID \"%(ssid)s\")"), {ssid: self.status.wifi.current_ssid()}); + } else { + return gettext("Connected via wifi (unknown SSID)") + } + } else { + return gettext("Connected (unknown connection)"); + } + } else { + return gettext("Not connected to network"); } - - return gettext("Unknown connection state"); }); // initialize list helper @@ -65,7 +83,7 @@ $(function() { 10 ); - self.getEntryId = function(ssid) { + self.getEntryId = function(data) { return "settings_plugin_netconnectd_connectbutton_" + md5(data.ssid); }; @@ -81,9 +99,22 @@ $(function() { self.error(false); } - self.statusAp(response.status.ap); - self.statusLink(response.status.link); - self.statusWifiAvailable(response.status.wifi_available); + self.status.link(response.status.link); + self.status.connections.ap(response.status.connections.ap); + self.status.connections.wifi(response.status.connections.wifi); + self.status.connections.wired(response.status.connections.wired); + self.status.wifi.current_ssid(response.status.wifi.current_ssid); + self.status.wifi.current_address(response.status.wifi.current_address); + + + self.statusCurrentWifi(undefined); + if (response.status.wifi.current_ssid && response.status.wifi.current_address) { + _.each(response.wifis, function(wifi) { + if (wifi.ssid == response.status.wifi.current_ssid && wifi.address.toLowerCase() == response.status.wifi.current_address.toLowerCase()) { + self.statusCurrentWifi(self.getEntryId(wifi)); + } + }); + } var enableQualitySorting = false; _.each(response.wifis, function(wifi) { @@ -93,7 +124,27 @@ $(function() { }); self.enableQualitySorting(enableQualitySorting); - self.listHelper.updateItems(response.wifis); + var wifis = []; + _.each(response.wifis, function(wifi) { + var qualityInt = parseInt(wifi.quality); + var quality = undefined; + if (!isNaN(qualityInt)) { + if (qualityInt <= 0) { + qualityInt = (-1) * qualityInt; + } + quality = qualityInt; + } + + wifis.push({ + ssid: wifi.ssid, + address: wifi.address, + encrypted: wifi.encrypted, + quality: quality, + qualityText: (quality != undefined) ? "" + quality + "%" : undefined + }); + }); + + self.listHelper.updateItems(wifis); if (!enableQualitySorting) { self.listHelper.changeSorting("ssid"); } diff --git a/src/octoprint/plugins/netconnectd/static/less/netconnectd.less b/src/octoprint/plugins/netconnectd/static/less/netconnectd.less index 318e5faf..666dae01 100644 --- a/src/octoprint/plugins/netconnectd/static/less/netconnectd.less +++ b/src/octoprint/plugins/netconnectd/static/less/netconnectd.less @@ -13,7 +13,7 @@ table { &.settings_plugin_netconnectd_wifis_action { text-align: center; - width: 70px; + width: 100px; a { text-decoration: none; diff --git a/src/octoprint/plugins/netconnectd/templates/netconnectd_settings_dialog.jinja2 b/src/octoprint/plugins/netconnectd/templates/netconnectd_settings_dialog.jinja2 index 3d30315b..cf02ccf4 100644 --- a/src/octoprint/plugins/netconnectd/templates/netconnectd_settings_dialog.jinja2 +++ b/src/octoprint/plugins/netconnectd/templates/netconnectd_settings_dialog.jinja2 @@ -5,7 +5,7 @@
| - | + | ({{ _('Address') }}: ) | +- + |