diff --git a/js/settings/NetworkPanel.js b/js/settings/NetworkPanel.js index 530bba1..f7b7c63 100644 --- a/js/settings/NetworkPanel.js +++ b/js/settings/NetworkPanel.js @@ -11,22 +11,8 @@ NetworkPanel.prototype = new FormPanel(); function NetworkPanel() { - // network client mode states - var CLIENT_MODE_STATE = { - NOT_CONNECTED: "not connected", // also used as first item in networks list - CONNECTED: "connected", - CONNECTING: "connecting", - CONNECTING_FAILED: "connecting failed" - }; - var _clientModeState = CLIENT_MODE_STATE.NOT_CONNECTED; + var NOT_CONNECTED = "not connected"; // used as first item in networks list - // network access point mode states - var AP_MODE_STATE = { - NO_AP: "no ap", // also used as first item in networks list - AP: "ap", - CREATING_AP: "creating ap" - }; - var _apModeState = AP_MODE_STATE.NO_AP; // network mode var NETWORK_MODE = { NEITHER: "neither", @@ -40,8 +26,8 @@ function NetworkPanel() { var _currentNetwork; // the ssid of the network the box is on var _selectedNetwork; // the ssid of the selected network in the client mode settings var _currentLocalIP = ""; - var _currentAP; + var _currentNetworkStatus; var _retryRetrieveStatusDelayTime = 1000; var _retryRetrieveStatusDelay; @@ -98,7 +84,6 @@ function NetworkPanel() { /* * Handlers */ - function showAPSettings() { _apFieldSet.show(); _clientFieldSet.hide(); @@ -132,7 +117,7 @@ function NetworkPanel() { // fill network selector _networkSelector.empty(); _networkSelector.append( - $("").val(CLIENT_MODE_STATE.NOT_CONNECTED).html(CLIENT_MODE_STATE.NOT_CONNECTED) + $("").val(NOT_CONNECTED).html(NOT_CONNECTED) ); $.each(data.networks, function(index,element) { if(element.ssid == _currentNetwork) { @@ -184,43 +169,21 @@ function NetworkPanel() { setNetworkMode(NETWORK_MODE.ACCESS_POINT); _currentNetwork = undefined; - _self.selectNetwork(CLIENT_MODE_STATE.NOT_CONNECTED); - _networkSelector.val(CLIENT_MODE_STATE.NOT_CONNECTED); + _self.selectNetwork(NOT_CONNECTED); + _networkSelector.val(NOT_CONNECTED); if(data.ssid && data.status == NetworkAPI.STATUS.CREATED) { _currentAP = data.ssid; } break; } - - // update status message - switch(data.status) { - case NetworkAPI.STATUS.CONNECTING_FAILED: - setClientModeState(CLIENT_MODE_STATE.CONNECTING_FAILED,data.statusMessage); - setAPModeState(AP_MODE_STATE.NO_AP,""); - break; - case NetworkAPI.STATUS.NOT_CONNECTED: - setClientModeState(CLIENT_MODE_STATE.NOT_CONNECTED,""); - setAPModeState(AP_MODE_STATE.NO_AP,""); - break; - case NetworkAPI.STATUS.CONNECTING: - setClientModeState(CLIENT_MODE_STATE.CONNECTING,""); - setAPModeState(AP_MODE_STATE.NO_AP,""); - break; - case NetworkAPI.STATUS.CONNECTED: - setClientModeState(CLIENT_MODE_STATE.CONNECTED,""); - setAPModeState(AP_MODE_STATE.NO_AP,""); - break; - case NetworkAPI.STATUS.CREATING: - setClientModeState(CLIENT_MODE_STATE.NOT_CONNECTED,""); - setAPModeState(AP_MODE_STATE.CREATING_AP,""); - break; - case NetworkAPI.STATUS.CREATED: - setClientModeState(CLIENT_MODE_STATE.NOT_CONNECTED,""); - setAPModeState(AP_MODE_STATE.AP,""); - break; - } + // update ui if status changed + if(data.status != _currentNetworkStatus) { + updateClientModeUI(data.status,data.statusMessage); + updateAPModeUI(data.status,""); + } + // Keep checking for updates? if(connecting) { switch(data.status) { @@ -231,6 +194,7 @@ function NetworkPanel() { break; } } + _currentNetworkStatus = data.status; }, function() { console.log("NetworkPanel:retrieveStatus failed"); clearTimeout(_retryRetrieveStatusDelay); @@ -265,40 +229,29 @@ function NetworkPanel() { console.log("NetworkPanel:selectNetwork: ",ssid); if(ssid == "") return; _selectedNetwork = ssid; - if(ssid == CLIENT_MODE_STATE.NOT_CONNECTED) { - hideWiFiPassword(); - } else { - var network = _networks[ssid]; - if(network === undefined) return; - if(network.encryption == "none") { - hideWiFiPassword(); - } else { - showWiFiPassword(); - } - _passwordField.val(""); - } - }; - function showWiFiPassword() { - _passwordLabel.show(); - _passwordField.show(); - }; - function hideWiFiPassword() { - _passwordLabel.hide(); - _passwordField.hide(); - }; - function setClientModeState(state,statusMessage) { - console.log("NetworkPanel:setClientModeState ",state,statusMessage); - //console.log(" CLIENT_MODE_STATE.CONNECTING: ",CLIENT_MODE_STATE.CONNECTING); + var network = _networks[ssid]; + if(network === undefined || network.encryption == "none") { + _passwordLabel.hide(); + _passwordField.hide(); + } else { + _passwordLabel.show(); + _passwordField.show(); + } + _passwordField.val(""); + }; + + function updateClientModeUI(state,statusMessage) { + //console.log("NetworkPanel:updateClientModeUI ",state,statusMessage); var msg = ""; switch(state) { - case CLIENT_MODE_STATE.NOT_CONNECTED: - //console.log("CLIENT_MODE_STATE.NOT_CONNECTED"); + case NetworkAPI.STATUS.NOT_CONNECTED: + case NetworkAPI.STATUS.CREATING: + case NetworkAPI.STATUS.CREATED: _btnConnect.removeAttr("disabled"); msg = "Not connected"; break; - case CLIENT_MODE_STATE.CONNECTED: - //console.log("CLIENT_MODE_STATE.CONNECTED"); + case NetworkAPI.STATUS.CONNECTED: _btnConnect.removeAttr("disabled"); msg = "Connected to: "+_currentNetwork+"."; @@ -307,41 +260,39 @@ function NetworkPanel() { msg += " (IP: "+a+")"; } break; - case CLIENT_MODE_STATE.CONNECTING: - //console.log("CLIENT_MODE_STATE.CONNECTING"); + case NetworkAPI.STATUS.CONNECTING: _btnConnect.attr("disabled", true); msg = "Connecting... Reconnect by connecting your device to "+_selectedNetwork+" and going to connect.doodle3d.com"; break; - case CLIENT_MODE_STATE.CONNECTING_FAILED: - //console.log("CLIENT_MODE_STATE.CONNECTING_FAILED"); + case NetworkAPI.STATUS.CONNECTING_FAILED: _btnConnect.removeAttr("disabled"); msg = statusMessage; break; } - console.log(" msg: ",msg); + console.log(" client display msg: ",msg); _clientStateDisplay.html(msg); - _clientModeState = state; }; - function setAPModeState(state,statusMessage) { - //console.log("NetworkPanel:setAPModeState ",state,statusMessage); + function updateAPModeUI(state,statusMessage) { var msg = ""; switch(state) { - case AP_MODE_STATE.NO_AP: - _btnCreate.removeAttr("disabled"); - msg = "Not currently a access point"; - break; - case AP_MODE_STATE.AP: - _btnCreate.removeAttr("disabled"); - msg = "Is access point: "+_currentAP+""; - break; - case AP_MODE_STATE.CREATING_AP: - _btnCreate.attr("disabled", true); - msg = "Creating access point... Reconnect by connecting your device to "+settings.substituted_ssid+" and going to draw.doodle3d.com"; - break; + case NetworkAPI.STATUS.CONNECTING_FAILED: + case NetworkAPI.STATUS.NOT_CONNECTED: + case NetworkAPI.STATUS.CONNECTING: + case NetworkAPI.STATUS.CONNECTED: + _btnCreate.removeAttr("disabled"); + msg = "Not currently a access point"; + break; + case NetworkAPI.STATUS.CREATED: + _btnCreate.removeAttr("disabled"); + msg = "Is access point: "+_currentAP+""; + break; + case NetworkAPI.STATUS.CREATING: + _btnCreate.attr("disabled", true); + msg = "Creating access point... Reconnect by connecting your device to "+settings.substituted_ssid+" and going to draw.doodle3d.com"; + break; } - //console.log(" msg: ",msg); + console.log(" ap display msg: ",msg); _apModeStateDisplay.html(msg); - _apModeState = state; }; this.connectToNetwork = function() { @@ -350,7 +301,7 @@ function NetworkPanel() { // save network related settings and on complete, connect to network _self.saveSettings(_self.readForm(),function(validated) { if(!validated) return; - setClientModeState(CLIENT_MODE_STATE.CONNECTING,""); + updateClientModeUI(NetworkAPI.STATUS.CONNECTING,""); _api.associate(_selectedNetwork,_passwordField.val(),true); // after switching wifi network or creating a access point we delay the status retrieval @@ -365,7 +316,7 @@ function NetworkPanel() { // save network related settings and on complete, create access point _self.saveSettings(_self.readForm(),function(success) { if(!success) return; - setAPModeState(AP_MODE_STATE.CREATING_AP,""); + updateAPModeUI(NetworkAPI.STATUS.CREATING,""); _api.openAP(); // after switching wifi network or creating a access point we delay the status retrieval