Skip to content

Instantly share code, notes, and snippets.

@sTiLL-iLL
Last active August 29, 2015 14:07
Show Gist options
  • Save sTiLL-iLL/cbf5b7c6803d4ded32e3 to your computer and use it in GitHub Desktop.
Save sTiLL-iLL/cbf5b7c6803d4ded32e3 to your computer and use it in GitHub Desktop.
brioWIFImodule.js
define(['knockout', 'jquery'], function (ko, $) {
return function (wifiInfo, wifiNetworks, SSIDList) {
var slf = this, SKT = skt || io.connect(), WifiInfo = wifiInfo || {},
wirelessCollection = ko.observableArray(wifiNetworks) || ko.observableArray([]),
ssidCollection = ko.observableArray(SSIDList) || ko.observableArray([]), Abstract = {
isConnected: false,
BrioSSID: ko.observable(),
BrioPassword: ko.observable(),
BrioSecurityType: ko.observable(999),
BrioWifiType: ko.observable("none"),
};
this.initializeService = function (wifiInfo) {
if (wifiInfo) {
CurrentNetwork = {
BrioSSID: ko.observable(wifiInfo.ssid),
BrioPassword: ko.observable(wifiInfo.password),
BrioNetworkType: ko.observable(wifiInfo.networkType),
BrioEncryption: ko.observable(wifiInfo.encryption),
BrioAuthentication: ko.observable(wifiInfo.authentication),
BrioSecurityType: ko.observable(wifiInfo.securityType),
BrioWifiType: ko.observable(wifiInfo.wifiType),
populateSSIDList: function () {
slf.populateNetworkList(SSIDList);
return CurrentNetwork;
},
populateNetworkList: function () {
slf.updateWirelessCollection(wifiNetworks);
return CurrentNetwork;
},
revealControls: function () {
slf.invokeControlSet();
return CurrentNetwork;
},
refresh: function () {
slf.doRefresh();
return CurrentNetwork;
},
wasWifiModified: function () {
return slf.hasWifiValueChanged();
},
connectNetwork: function (CBAK) {
var cbk = CBAK || {};
if (!cbk) {
cbk = function (rspns) {
return rspns;
}
}
slf.connect(function (rspns) {
cbk(rspns);
});
return CurrentNetwork;
},
disconnectNetwork: function (CBAK) {
var cbk = CBAK || {};
if (!cbk) {
cbk = function (rspns) {
return rspns;
}
}
slf.disconnect(function (rspns) {
cbk(rspns);
});
return CurrentNetwork;
},
isConnected: ko.computed({
read: function () {
return slf.isWifiConnected();
},
write: function (newValue) {
if (newValue !== slf.isWifiReady()) {
slf.isWifiConnected(newValue);
}
},
owner: this
}),
};
}
else {
return false;
}
return CurrentNetwork;
};
// private scope stuff....
var isWifiConnected = ko.computed(false),
IsWifiOnline = ko.computed({
read: function () {
return slf.isWifiConnected();
},
write: function (newValue) {
if (newValue !== slf.isWifiConnected()) {
slf.isWifiConnected(newValue);
$("#networkForm").trigger("wifiConnected", CurrentNetwork);
}
},
owner: this
}),
updateWirelessCollection = function () {
slf.wirelessCollection.removeAll();
slf.wirelessCollection(wifiNetworks);
$("#networkForm").trigger("wifiListChange", slf.wifiNetworks);
return CurrentNetwork;
},
doRefresh = function (skt, cbak) {
var CBK = cbak || {};
if (!CBK) {
CBK = function (wifiNetworks) {
slf.updateWirelessCollection(wifiNetworks)
};
}
SKT.emit("GetWirelessNetworks", function (wifiNetworks) {
CBK(wifiNetworks);
});
return CurrentNetwork;
},
populateNetworkList = function (ssids) {
slf.ssidCollection(ssids);
if (ssids) {
if ($('#ssidLst').children().length != ssids.length && ssids.length > 0) {
$("#ssidLst").children().remove();
$.each(ssids, function (idx, val) {
if (CurrentNetwork.BrioSSID() == val) {
$('#ssidLst').append(new Option(val, val, false, true));
}
else {
$('#ssidLst').append(new Option(val, val));
}
});
return CurrentNetwork;
}
else {
//nothing changed, redraw if necessary
slf.invokeControlSet();
}
$("#networkForm").trigger("ssidListChange", slf.ssidCollection);
}
else {
slf.invokeControlSet();
return CurrentNetwork;
}
},
disableFormControlSet = function () {
var inpts = $("#networkForm :input").isNot("[type='radio']").get();
inpts.each(function (itm) {
$(itm).prop("disabled", "disabled");
});
return slf;
},
hideFormControlSet = function () {
var inpts = $("#networkForm :input").isNot("[type='radio']").get();
inpts.each(function (itm) {
$(itm).hide();
});
return CurrentNetwork;
},
invokeControlSet = function (ssid, networkTypeId, encryptionTypeId) {
var wifiTypeId = networkTypeId || $("input[name='wapStateType']:checked, #networkForm").val(),
encID = encryptionTypeId || 999,
SSID = ssid || $("#ssidLst").val();
if ($chkdId == "rdoWap") {
}
else if ($chkdId == "rdoClientWap") {
}
else {
$("#networkForm :input").prop("disabled", "disabled");
}
},
connect = function (func) {
var wInfo = {
ssid: CurrentNetwork.BrioSSID(),
password: CurrentNetwork.BrioPassword(),
networkType: CurrentNetwork.BrioNetworkType(),
authentication: CurrentNetwork.BrioAuthentication(),
encryption: CurrentNetwork.BrioEncryption(),
securityType: CurrentNetwork.BrioSecurityType(),
};
SKT.emit("ConnectToWirelessNetwork", wInfo, wifiTypeId, function (err, rspns) {
if (!err) {
CurrentNetwork.IsConnected(true);
func(rspns);
}
else {
CurrentNetwork.IsConnected(false);
func(err);
}
});
$("#networkForm").trigger("WifiConnected", CurrentNetwork);
return CurrentNetwork;
},
disconnect = function (func) {
SKT.emit("DisconnectWirelessNetwork", function (err, rspns) {
func(rspns);
});
CurrentNetwork.isWifiConnected(false);
$("#networkForm").trigger("WifiDisconnected", CurrentNetwork);
return CurrentNetwork;
},
hasWifiChanged = ko.observable(false),
hasWifiValueChanged = ko.computed({
write: function (newValue) {
if (newValue.ssid !== CurreNetwork.BrioSSID() || newValue.password !== CurrentNetwork.BrioPassword() || newValue.securityType !== CurrentNetwork.BrioSecurityType()) {
CurrentNetwork.BrioEncryption(newValue.encryption);
CurrentNetwork.BrioNetworkType(newValue.networkType);
CurrentNetwork.BrioPassword(newValue.password);
CurrentNetwork.BrioSSID(newValue.ssid);
$("#networkForm").trigger("currentNetworkChange", CurrentNetwork);
slf.hasWifiChanged(true);
}
else {
slf.hasWifiChanged(false);
}
},
read: function () {
return slf.hasWifiChanged();
},
owner: this
});
BrioNetworkType.subscribe(function (newValue) {
if (newValue.networkType !== CurrentNetwork.BrioNetworkType()) {
slf.hasWifiValueChanged(true);
}
else {
slf.hasWifiValueChanged(false);
}
CurrentNetwork.invokeControlSet(newValue);
$("#networkForm").trigger("currentNetworkChange", CurrentNetwork);
return CurrentNetwork;
});
BrioEncryption.subscribe(function (newValue) {
if (newValue.encryption !== CurrentNetwork.BrioEncryption()) {
slf.hasWifiValueChanged(true);
}
else {
slf.hasWifiValueChanged(false);
}
CurrentNetwork.invokeControlSet(newValue);
$("#networkForm").trigger("currentNetworkChange", CurrentNetwork);
return CurrentNetwork;
});
};
return {
WifiObj_Interface: CurrentNetwork,
WifiObj_QueryChanged: hasWifiValueChanged,
WifiObj_CommandDispose: function (SSID) {
CurrentNetwork.disconnect();
CurrentNetwork = null;
return (this = (slf = null));
},
};
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment