🏡 index : github.com/captn3m0/RT-AX53U.git

<script>
var diagnosticApi = {
"db_map": {
"backhaul": "STAINFO",
"fronthaul": "WIFISYS2",
"ethinfo": "ETHINFO",
"portinfo": "PORTINFO"
},
"get_DB": function(_node_mac, _type, _callBack){
if(_node_mac == undefined || _node_mac == "" || _type == undefined || _type == "" || _callBack == undefined || _callBack == "")
return false;
$.ajax({
url: '/ajax_conn_diag.asp?event_name=' + diagnosticApi.db_map[_type] + '&node_mac=' + _node_mac + '&timestap='+Math.floor((($.now())/1000)-600)+'',
dataType: 'script',
error: function(xhr) {
setTimeout("diagnosticApi.get_DB(" + _node_mac + ", " + _type + ", " + _callBack + ");", 1000);
},
success: function(response){
var result = JSON_msg.replace(/\""/g,"\"");
var jsonObj = [$.parseJSON(result)];
_callBack(jsonObj[0]);
}
});
},
"get_backhaul_traffic": function(_node_mac, _sta_band, _sta_mac, _online, _dataArray){
var traffic = {
"phy":{"tx":0, "rx":0},
"data":{"tx":0, "rx":0, "avg_tx":0, "avg_rx":0}
};
if(_dataArray != undefined && _dataArray.length > 0 && _online == "1"){
var specific_data = _dataArray.filter(function(item, index, array){
return (item.node_mac == _node_mac && item.sta_mac == _sta_mac);
});
var specific_count_data = diagnosticApi.get_specific_count_data(10, specific_data);//get data from end
traffic = diagnosticApi.get_phy_rate(specific_count_data);
}
return traffic;
},
"get_fronthaul_traffic": function(_node_mac, _band, _online, _dataArray){
var traffic = {
"data":{"tx":0, "rx":0, "avg_tx":0, "avg_rx":0}
};
if(_dataArray != undefined && _dataArray.length > 0 && _online == "1"){
var specific_data = _dataArray.filter(function(item, index, array){
return (item.node_mac == _node_mac && item.band == _band);
});
var specific_count_data = diagnosticApi.get_specific_count_data(10, specific_data);//get data from end
traffic = diagnosticApi.get_data_rate(specific_count_data);
}
return traffic;
},
"get_ethinfo_traffic": function(_node_mac, _type, _online, _dataArray, _sta_band){
var traffic = {
"data":{"tx":0, "rx":0, "avg_tx":0, "avg_rx":0}
};
if(_sta_band != undefined && _sta_band == "plc")
traffic["phy"] = {"tx":0, "rx":0};
if(_dataArray != undefined && _dataArray.length > 0 && _online == "1"){
var specific_data = _dataArray.filter(function(item, index, array){
return (item.node_mac == _node_mac && item.type == _type);
});
var specific_count_data = diagnosticApi.get_specific_count_data(10, specific_data);//get data from end
traffic = diagnosticApi.get_data_rate(specific_count_data, _sta_band);
}
return traffic;
},
"transform_unit": function(_rate){
result = {"rate":0, "unit":"Kbps"};
if(_rate > 1000){
result.rate = Math.ceil((_rate/1024)*100)/100;
result.unit = "Mbps";
}
else{
result.rate = _rate
result.unit = "Kbps";
}
if(isNaN(result.rate))
result.rate = 0;
else if(result.rate < 0)
result.rate = 0;
return result;
},
"get_specific_count_data": function(_count, _array){
var time_data = [];
var result = [];
var length = _array.length - 1;
for(var i = length; i >= 0; i -= 1){
var last_time = time_data.slice(-1)[0];
if(last_time == undefined){
time_data.push(_array[i].time);
result.push(_array[i]);
}
else if(last_time == _array[i].time){
continue;
}
else{
time_data.push(_array[i].time);
result.push(_array[i]);
}
if(time_data.length == _count)
break;
}
return result;
},
"get_phy_rate" : function(_data_array){
var result = {
"phy":{"tx":0, "rx":0},
"data":{"tx":0, "rx":0, "avg_tx":0, "avg_rx":0}
};
var latest_time = 0;
var latest_tbyte = 0;
var latest_rbyte = 0;
_data_array.forEach(function(item, index, array){
if(index == 0){//latest data
latest_time = item.time;
result.phy.tx = item.sta_rx;
result.phy.rx = item.sta_tx;
latest_tbyte = result.data.tx = result.data.avg_tx = item.sta_rbyte;
latest_rbyte = result.data.rx = result.data.avg_rx = item.sta_tbyte;
}
else if(index == 1){//second latest data
var denominator = (parseInt(latest_time) - parseInt(item.time));
result.data.tx = result.data.avg_tx = Math.ceil(((parseFloat(latest_tbyte) - parseFloat(item.sta_rbyte))/denominator)*100)/100;
result.data.rx = result.data.avg_rx = Math.ceil(((parseFloat(latest_rbyte) - parseFloat(item.sta_tbyte))/denominator)*100)/100;
}
else if(array.length == (index + 1)){
var denominator = (parseInt(latest_time) - parseInt(item.time));
result.data.avg_tx = Math.ceil(((parseFloat(latest_tbyte) - parseFloat(item.sta_rbyte))/denominator)*100)/100;
result.data.avg_rx = Math.ceil(((parseFloat(latest_rbyte) - parseFloat(item.sta_tbyte))/denominator)*100)/100;
}
});
return result;
},
"get_data_rate" : function(_data_array, _sta_band){
var result = {
"data":{"tx":0, "rx":0, "avg_tx":0, "avg_rx":0}
};
if(_sta_band != undefined && _sta_band == "plc")
result["phy"] = {"tx":0, "rx":0};
var latest_time = 0;
var latest_tbyte = 0;
var latest_rbyte = 0;
_data_array.forEach(function(item, index, array){
if(index == 0){//latest data
latest_time = item.time;
latest_tbyte = result.data.tx = result.data.avg_tx = item.tx_byte;
latest_rbyte = result.data.rx = result.data.avg_rx = item.rx_byte;
if(_sta_band != undefined && _sta_band == "plc"){
result.phy.tx = item.tx_rate;
result.phy.rx = item.rx_rate;
}
}
else if(index == 1){//second latest data
var denominator = (parseInt(latest_time) - parseInt(item.time));
result.data.tx = result.data.avg_tx = Math.ceil(((parseFloat(latest_tbyte) - parseFloat(item.tx_byte))/denominator)*100)/100;
result.data.rx = result.data.avg_rx = Math.ceil(((parseFloat(latest_rbyte) - parseFloat(item.rx_byte))/denominator)*100)/100;
}
else if(array.length == (index + 1)){
var denominator = (parseInt(latest_time) - parseInt(item.time));
result.data.avg_tx = Math.ceil(((parseFloat(latest_tbyte) - parseFloat(item.tx_byte))/denominator)*100)/100;
result.data.avg_rx = Math.ceil(((parseFloat(latest_rbyte) - parseFloat(item.rx_byte))/denominator)*100)/100;
}
});
return result;
}
};
var faq_href1 = "https://nw-dlcdnet.asus.com/support/forward.html?model=&type=Faq&lang="+ui_lang+"&kw=&num=137";
var faq_href2 = "https://nw-dlcdnet.asus.com/support/forward.html?model=&type=Faq&lang="+ui_lang+"&kw=&num=138";
var aimesh_data = {
cfg_clientlist : "", wired_clientlist : "", wireless_clientlist : "", sta_binding_list_json : {}
}
var multi_model_icon_array = "";
$.getJSON("https://nw-dlcdnet.asus.com/plugin/js/extend_model_icon.json", {_: new Date().getTime()},
function(data){
multi_model_icon_array = data;
var specific_node_data = aimesh_data.cfg_clientlist.filter(function(item, index, _array){
return (item.mac == current_click_mac);
})[0];
if(specific_node_data != undefined){
set_change_model_icon(specific_node_data);
}
}
);
var aimesh_node_client_upload_icon = new Array();
function control_category_block(_category){
current_click_tab = _category;
$(".category_bg").removeClass("clicked");
$(".category_bg").find("." + _category + "").parent().addClass("clicked");
$(".category_block").hide();
$("#" + _category + "_block").show();
switch(_category){
case "client" :
display_client_block();
break;
case "network" :
display_network_block();
break;
case "manage" :
display_manage_block();
break;
}
}
function gen_custom_select(_location){
$(".custom_select .custom_select_selected").remove();
$(".custom_select .custom_select_items").remove();
$(".custom_select #sel_location").find("option").remove();
$(".location_info_bg .location_hint").hide();
for(var i = 0; i < aimesh_location_arr.length; i += 1) {
$("#sel_location").append($('<option>', {
value: aimesh_location_arr[i].value,
text: aimesh_location_arr[i].text,
}));
}
var location_text = "<#1092#>";
var location_active = "Home";
var specific_location = aimesh_location_arr.filter(function(item, index, _array){
return (item.value == _location);
})[0];
if(specific_location != undefined){
$("#sel_location").val(specific_location.value);
location_active = $("#sel_location").val().replace(/\s/g,'_');
location_text = specific_location.text;
}
else{
$("#sel_location").val("Custom");
location_active = "Custom";
location_text = _location;
}
var $inputObj = $(".primary_info_bg .custom_select #input_location");
$inputObj.off("blur keypress");
$inputObj.blur(function(e) {
e = e || event;
e.stopPropagation();
var validAiMeshLocation = function($obj) {
var valid_hint = "";
var node_location_text = $.trim($obj.val());
$obj.val(node_location_text);
var show_valid_hint = function(_hint){
$(".location_info_bg .location_hint").show();
$(".location_info_bg .location_hint").html(_hint);
};
if(node_location_text.length == 0){
show_valid_hint("<#332#>");
return false;
}
var block_chars_array = ["\""];
var block_chars_hint = "";
for(var i = 0; i < block_chars_array.length; i++) {
if(node_location_text.indexOf(block_chars_array[i]) >= 0)
block_chars_hint = block_chars_array[i] + " <#2519#>";
}
if(block_chars_hint != "") {
show_valid_hint(block_chars_hint);
return false;
}
if(utf8_ssid_support){
var len = validator.lengthInUtf8(node_location_text);
if(len > 32){
show_valid_hint("The field cannot be greater than 32 characters.");/* untranslated */
return false;
}
}
else if(!parent.validator.haveFullWidthChar($obj[0])) {
show_valid_hint("<#345#>");
return false;
}
$(".location_info_bg .location_hint").hide();
$(".location_info_bg .location_hint").html("");
return true;
};
if(validAiMeshLocation($(this))) {
var isReNode = (current_click_mac != cap_mac) ? true : false;
if(isReNode){
var data = new Object();
data.cfg_alias = $(this).val();
manage_set_config(data, current_click_mac);
}
else
set_cap_alias($(this).val());
set_custom_select_value($(this).val());
}
});
$inputObj.keypress(function(e) {
if(e.keyCode == 13) {
e = e || event;
e.stopPropagation();
e.preventDefault();
$(this).blur();
}
});
$inputObj.val(location_text);
$inputObj.attr("title", location_text);
if(location_active == "Custom")
$inputObj.attr("disabled", false);
else
$inputObj.attr("disabled", true);
var $selected = $("<div>");
$selected.addClass("custom_select_selected location_dropdown_icon selected " + location_active + "");
$selected.appendTo($(".custom_select"));
$selected.click(
function(e){
closeAllPopup();
e = e || event;
e.stopPropagation();
$(this).siblings(".custom_select_items").toggleClass("custom_select_hide");
$(this).toggleClass("custom_select_arrow_active");
}
);
var $pure_text = $("<div>");//for Cap, display default location, can not change.
$pure_text.addClass("custom_pure_text location_dropdown_icon selected " + location_active + "");
$pure_text.appendTo($(".custom_select"));
var $selectListHide = $("<div>");
$selectListHide.addClass("custom_select_items custom_select_hide");
$selectListHide.appendTo($(".custom_select"));
aimesh_location_arr.forEach(function(item) {
var each_location = item;
var $selectItem = $("<div>");
var each_css = each_location.value.replace(/\s/g,'_');
$selectItem.addClass("location_dropdown_icon " + each_css + "");
$selectItem.attr("value", each_location.value);
$selectItem.attr("title", each_location.text);
if(_location == each_location.value)
$selectItem.addClass("custom_select_same_as_selected selected");
$selectItem.html(htmlEnDeCode.htmlEncode(each_location.text));
$selectItem.click(
function(){
if($(this).attr("value") != "Custom"){
$inputObj.attr("disabled", true);
set_custom_select_value($(this).attr("value"));
if(current_click_mac != ""){
var isReNode = (current_click_mac != cap_mac) ? true : false;
if(isReNode){
var data = new Object();
data.cfg_alias = $(this).attr("value");
manage_set_config(data, current_click_mac);
}
else
set_cap_alias($(this).attr("value"));
}
}
else{
$inputObj.attr("disabled", false);
$inputObj.focus();
$inputObj.select();
$inputObj.val("");
if(getBrowser_info().ie != undefined || getBrowser_info().ie != null){
setTimeout(function () {
$inputObj.focus();
$inputObj.select();
}, 10);
}
}
$selected.click();
}
);
$selectItem.appendTo($selectListHide);
});
}
function closeAllSelect(e) {
$(".primary_info_bg").find(".custom_select_selected").removeClass("custom_select_arrow_active");
$(".primary_info_bg").find(".custom_select_items").addClass("custom_select_hide");
}
function closeAllPopup(e) {
if($(e).length > 0){
if($(e.target).closest(".popup_hint_bg").length == 0){
$("#aimesh_hint_msg").hide();
clearTimeout(client_reconnect_timeout);
clearTimeout(client_bind_timeout);
}
}
else{
$("#aimesh_hint_msg").hide();
clearTimeout(client_reconnect_timeout);
clearTimeout(client_bind_timeout);
}
}
function set_custom_select_value(_location){
if($(".primary_info_bg .custom_select #input_location").is(":focus"))
return;
if(_location == "" || _location == undefined)
_location = "Home";
var location_text = "<#1092#>";
var location_active = "Home";
var specific_location = aimesh_location_arr.filter(function(item, index, _array){
return (item.value == _location);
})[0];
if(specific_location != undefined){
$(".primary_info_bg").find("#sel_location").val(specific_location.value);
location_active = $(".primary_info_bg").find("#sel_location").val().replace(/\s/g,'_');
location_text = specific_location.text;
}
else{
$(".primary_info_bg").find("#sel_location").val("Custom");
location_active = "Custom";
location_text = _location;
}
$(".primary_info_bg").find(".custom_select .custom_select_selected").removeClass().addClass("custom_select_selected location_dropdown_icon selected " + location_active + "");
$(".primary_info_bg").find(".custom_select .custom_pure_text").removeClass().addClass("custom_pure_text location_dropdown_icon selected " + location_active + "");
if(!$(".primary_info_bg").find(".custom_select_items").hasClass("custom_select_hide"))
$(".primary_info_bg").find(".custom_select .custom_select_selected").toggleClass("custom_select_arrow_active");
$(".primary_info_bg").find(".custom_select #input_location").attr("title", location_text);
$(".primary_info_bg").find(".custom_select #input_location").val(location_text);
$(".primary_info_bg").find(".custom_select .custom_select_items").children().removeClass("custom_select_same_as_selected selected");
if(location_active == "Custom"){
$(".primary_info_bg").find(".custom_select .custom_select_items").children("[value='Custom']").addClass("custom_select_same_as_selected selected");
$(".primary_info_bg").find(".custom_select #input_location").attr("disabled", false);
}
else{
$(".primary_info_bg").find(".custom_select .custom_select_items").children("[value='" + specific_location.value + "']").addClass("custom_select_same_as_selected selected");
$(".primary_info_bg").find(".custom_select #input_location").attr("disabled", true);
}
$(".primary_info_bg").find(".location_info_bg .location_hint").hide();
$(".primary_info_bg").find(".translucent_bg").removeClass().addClass("translucent_bg " + location_active + "");
}
var interval_client_update = false;
function display_client_block(){
client_set_tab(current_client_click_type);
}
function client_get_client_date(){
aimesh_data.wired_clientlist = httpApi.hookGet("get_wiredclientlist", true);
aimesh_data.wireless_clientlist = httpApi.hookGet("get_wclientlist", true);
aimesh_data.cfg_clientlist = httpApi.hookGet("get_cfg_clientlist", true);
originData.fromNetworkmapd[0] = httpApi.hookGet("get_clientlist", true);
originData.nmpClient[0] = httpApi.hookGet("get_clientlist_from_json_database", true);
genClientList();
aimesh_data.sta_binding_list_json = gen_sta_binding_list_json();
}
function client_set_tab(_type){
current_client_click_type = _type;
$("#client_block").find(".client_tab_bg div").removeClass("clicked");
$("#client_block").find(".client_tab_bg div." + _type + "").addClass("clicked");
var node_client_list = ciient_get_specific_client_list(_type, current_click_mac);
var specific_node_data = aimesh_data.cfg_clientlist.filter(function(item, index, _array){
return (item.mac == current_click_mac);
})[0];
var $component = client_gen_client_component(node_client_list, specific_node_data);
$(".card_block_bg .client_list_bg").empty();
$(".card_block_bg .client_list_bg").append($component);
if(_type == "all")
online_client = $(".card_block_bg .client_list_bg .each_client_bg").length - node_client_list.offline;
else
online_client = $(".card_block_bg .client_list_bg .each_client_bg").length;
$(".card_block_bg .client_num_bg #client_num").html(online_client);
}
function ciient_get_specific_client_list(_type, _mac){
var specific_client_array = {"data":[], "online":0, "offline":0, "bind_notice":false};
var specific_client_array_temp = [];
var node_client_mac = "";
var specific_wired_data = aimesh_data.wired_clientlist[_mac];
var specific_wireless_data = aimesh_data.wireless_clientlist[_mac];
if(_type == "all" || _type == "wired"){
if(specific_wired_data != undefined) {
for(var i = 0; i < specific_wired_data.length; i += 1) {
node_client_mac = specific_wired_data[i];
if(clientList[node_client_mac] != undefined) {
if(clientList[node_client_mac].isOnline && clientList[node_client_mac].amesh_papMac == _mac){
specific_client_array_temp.push(clientList[node_client_mac]);
specific_client_array.online++;
if(clientList[node_client_mac].amesh_bind_mac != "" && clientList[node_client_mac].amesh_bind_mac != _mac)
specific_client_array.bind_notice = true;
}
}
}
}
}
if(_type == "all" || _type == "wireless"){
for(var idx in specific_wireless_data) {
if(specific_wireless_data.hasOwnProperty(idx)) {
for(var i = 0; i < specific_wireless_data[idx].length; i += 1) {
node_client_mac = specific_wireless_data[idx][i];
if(clientList[node_client_mac] != undefined) {
if(clientList[node_client_mac].isOnline && clientList[node_client_mac].amesh_papMac == _mac){
specific_client_array_temp.push(clientList[node_client_mac]);
specific_client_array.online++;
if(clientList[node_client_mac].amesh_bind_mac != "" && clientList[node_client_mac].amesh_bind_mac != _mac)
specific_client_array.bind_notice = true;
}
}
}
}
}
}
var get_specific_client_and_sort = function(_array, _isWL){
var result = [];
result = _array.filter(function(item, index, _array){
return (item.isWL == _isWL);
});
if(result.length > 1){
result = result.sort(function (a, b) {
return (a["name"].toLowerCase() > b["name"].toLowerCase()) ? 1 : ((a["name"].toLowerCase() < b["name"].toLowerCase()) ? -1 : 0);
});
}
return result;
};
$.each(isWL_map, function( index, value ) {
var temp_array = get_specific_client_and_sort(specific_client_array_temp, index);
if(temp_array.length > 0){
$.each(temp_array, function( index, value ) {
specific_client_array.data.push(value);
});
}
});
if(_type == "all"){
var offline_client = originData.nmpClient[0];
if(Object.keys(offline_client).length > 0) {
for(var i=0; i<offline_client.maclist.length; i++){
var thisClient = offline_client[offline_client.maclist[i]];
if(clientList[thisClient.mac] != undefined && !(clientList[thisClient.mac].isOnline) && clientList[thisClient.mac].amesh_bind_mac != "" && clientList[thisClient.mac].amesh_bind_mac == _mac){
genClientList();
specific_client_array.data.push(clientList[thisClient.mac]);
specific_client_array.offline++;
}
}
}
if(aimesh_data.sta_binding_list_json[_mac] != undefined){
var client_bind_list = aimesh_data.sta_binding_list_json[_mac].client;
for(var client_mac in client_bind_list){
if(clientList[client_mac] == undefined){
clientList[client_mac] = new setClientAttr();
clientList[client_mac].amesh_bind_mac = _mac
clientList[client_mac].name = clientList[client_mac].mac = client_mac;
clientList[client_mac].from = "sta_binding_list";
specific_client_array.data.push(clientList[client_mac]);
specific_client_array.offline++;
}
else if(clientList[client_mac] != undefined && clientList[client_mac].from == "sta_binding_list" && clientList[client_mac].amesh_bind_mac == _mac){
specific_client_array.data.push(clientList[client_mac]);
specific_client_array.offline++;
}
}
}
}
return specific_client_array;
}
function client_gen_client_component(_dataArray, _node_info){
if(_dataArray.data.length == 0){
var $noClient = $("<div>");
$noClient.addClass("no_client_hint");
$noClient.html("<#63#>");
return $noClient;
}
else {
var $clientListBg = $("<div>");
for(var i = 0; i < _dataArray.data.length; i += 1) {
var nodeClientObj = _dataArray.data[i];
if(nodeClientObj == undefined) //if client list no this mac.
continue;
var $eachClientContentBg = $("<div>");
var $eachClientBg = $("<div>");
$eachClientBg.addClass("each_client_bg");
$eachClientBg.appendTo($eachClientContentBg);
var $clientIconBg = $("<div>");
$clientIconBg.appendTo($eachClientBg);
$clientIconBg.addClass("client_icon_bg");
var userIconBase64 = "NoIcon";
var deviceTitle = (nodeClientObj.dpiDevice == "") ? nodeClientObj.vendor : nodeClientObj.dpiDevice;
if(usericon_support) {
if(aimesh_node_client_upload_icon[nodeClientObj.mac] == undefined) {
var clientMac = nodeClientObj.mac.replace(/\:/g, "");
userIconBase64 = getUploadIcon(clientMac);
aimesh_node_client_upload_icon[nodeClientObj.mac] = userIconBase64;
}
else
userIconBase64 = aimesh_node_client_upload_icon[nodeClientObj.mac];
}
if(userIconBase64 != "NoIcon") {
$clientIconBg.addClass("user_icon");
$clientIconBg.css("background-image", "url(" + userIconBase64 + ")");
}
else if(nodeClientObj.type != "0" || nodeClientObj.vendor == "") {
var icon_type = "type" + nodeClientObj.type;
$clientIconBg.addClass("default_icon " + icon_type + "");
if(nodeClientObj.type == "36"){
$flashObj = $("<div>");
$flashObj.addClass("flash");
$flashObj.appendTo($clientIconBg);
}
}
else if(nodeClientObj.vendor != "") {
var venderIconClassName = getVenderIconClassName(nodeClientObj.vendor.toLowerCase());
if(venderIconClassName != "" && !downsize_4m_support) {
$clientIconBg.addClass("vender_icon " + venderIconClassName + "");
}
else {
var icon_type = "type" + nodeClientObj.type;
$clientIconBg.addClass("default_icon " + icon_type + "");
}
}
var $clientContentBg = $("<div>");
$clientContentBg.appendTo($eachClientBg);
$clientContentBg.addClass("client_content_bg");
var $clientNameBg = $("<div>");
$clientNameBg.appendTo($clientContentBg);
$clientNameBg.addClass("client_content_name");
if(!nodeClientObj.isOnline)
$clientNameBg.addClass("offline");
var client_name = (nodeClientObj.nickName == "") ? nodeClientObj.name : nodeClientObj.nickName;
var $client_name = $("<div>");
$client_name.attr("title", client_name);
$client_name.addClass("client_name");
$client_name.html(client_name);
$client_name.appendTo($clientNameBg);
var $clientMACIPBg = $("<div>");
$clientMACIPBg.appendTo($clientContentBg);
$clientMACIPBg.addClass("client_content_mac_ip");
if(!nodeClientObj.isOnline)
$clientMACIPBg.addClass("offline");
var $clientConnect = $("<div>");
if(nodeClientObj.isOnline){
$clientConnect.addClass("client_connect_icon");
switch(nodeClientObj.isWL){
case 0:
$clientConnect.addClass("wired");
break;
case 1:
$clientConnect.addClass("wl_2g");
break;
case 2:
$clientConnect.addClass("wl_5g");
break;
case 3:
$clientConnect.addClass("wl_5g_2");
break;
case 4:
$clientConnect.addClass("wl_6g");
break;
}
$clientConnect.appendTo($clientMACIPBg);
}
var $clientMAC = $("<div>");
$clientMAC.appendTo($clientMACIPBg);
$clientMAC.html(nodeClientObj.mac);
var $clientIP = $("<div>");
$clientIP.appendTo($clientMACIPBg);
var nodeIP = (nodeClientObj.ip == "offline") ? "<#1561#>" : nodeClientObj.ip;
$clientIP.html(nodeIP);
$eachClientContentBg.appendTo($clientListBg);
var clientListEventData = {"mac" : nodeClientObj.mac, "name" : client_name, "ip" : nodeIP, "callBack" : "AiMesh", "obj" : $(".aimesh_bg.info_right")[0]};
clientListEventData["adjust_panel_block_top"] = 10;
if(sw_mode == "1" && !nodeClientObj.amesh_isRe)
clientListEventData["adv_setting"] = true;
$eachClientBg.unbind("click");
if(nodeClientObj.isOnline)
$eachClientBg.click(clientListEventData, popClientListEditTable);
if(isSupport("force_roaming") && (nodeClientObj.isWL != 0 || !(nodeClientObj.isOnline))){
var isReNode = (_node_info.mac != cap_mac) ? true : false;
var $client_action_bg = $("<div>");
$client_action_bg.addClass("client_action_bg");
$client_action_bg.appendTo($clientNameBg);
var reconnect_control = client_get_reconnect_control(select_node_capability, isReNode);
var gen_bind_element = function() {
var $client_bind = $("<span>");
$client_bind.addClass("bind");
$client_bind.attr("title", "<#1189#>");
if(nodeClientObj.amesh_bind_mac != ""){
$client_bind.addClass("unbind");
$client_bind.attr("title", "<#1190#>");
}
$client_bind.prependTo($client_action_bg);
var parm_node = _node_info;
if(nodeClientObj.amesh_papMac != "" && nodeClientObj.amesh_bind_mac != "" && nodeClientObj.amesh_papMac != nodeClientObj.amesh_bind_mac){
var $client_bind_notice = $("<span>");
$client_bind_notice.addClass("bind_notice");
$client_bind_notice.prependTo($client_action_bg);
$client_bind_notice.parent().find(".hover_pop_hint_bg").remove();
$client_bind_notice.unbind("click").click(function(e){
e = e || event;
e.stopPropagation();
});
var specific_node_data = aimesh_data.cfg_clientlist.filter(function(item, index, _array){
return (item.mac == nodeClientObj.amesh_bind_mac);
})[0];
var hint = "";
if(specific_node_data != undefined){
var node_location_info = transform_location(specific_node_data.mac, specific_node_data);
var node_name_location = handle_ui_model_name(specific_node_data.model_name, specific_node_data.ui_model_name) + "(" + node_location_info.location_text + ")";
hint += "<#1155#>".replace("#MODELNAME", node_name_location);
parm_node = specific_node_data;
}
else
hint += "<#1155#>".replace("#MODELNAME", nodeClientObj.amesh_bind_mac);
hint += "<#1156#>";
var hint_parm = {
"text": hint,
"css": "bind_notice"
};
$client_bind_notice.removeClass("hover_pop_hint").addClass("hover_pop_hint");
$client_bind_notice.after(gen_hint_component(hint_parm));
}
var parm = {"client" : clientListEventData, "node" : parm_node};
$client_bind.click(parm, client_bind);
};
if(reconnect_control){
if(nodeClientObj.isOnline){
var $client_reconn = $("<span>");
$client_reconn.addClass("reconn");
$client_reconn.attr("title", "<#1161#>");
$client_reconn.appendTo($client_action_bg);
var parm = {"client" : clientListEventData, "node" : _node_info};
$client_reconn.click(parm, client_reconnect);
}
var bind_control = manage_get_bind_control(select_node_capability, isReNode);
if(bind_control)
gen_bind_element();
}
else if(nodeClientObj.amesh_papMac != "" && nodeClientObj.amesh_bind_mac != "" && nodeClientObj.amesh_papMac != nodeClientObj.amesh_bind_mac)
gen_bind_element();
}
var client_action_num = $clientNameBg.find(".client_action_bg > span").length;
switch(client_action_num){
case 1:
$client_name.css("width", "90%");
break;
case 2:
$client_name.css("width", "80%");
break;
case 3:
$client_name.css("width", "67%");
break;
}
}
return $clientListBg;
}
}
var client_reconnect_timeout = false;
function client_reconnect(parm){
closeAllPopup();
var e = event;
event.stopPropagation();
var node_info = parm.data.node;
var client_info = parm.data.client;
httpApi.nvramSet({
"device_list" : (node_info.mac).toUpperCase(),
"client_mac" : (client_info.mac).toUpperCase(),
"action_mode": "force_roaming"
});
$("#aimesh_hint_msg").empty();
$("#aimesh_hint_msg").append(popup_hint_api.get_component_text());
$("#aimesh_hint_msg .hint_text").append(popup_hint_api.get_component_loading());
$("#aimesh_hint_msg .hint_text").append($("<div>").addClass("client_reconnect_loading_text").html(htmlEnDeCode.htmlEncode("<#1178#>".replace("#CLIENTNAME", client_info.name))));
$("#aimesh_hint_msg").show();
adjust_panel_block_top("aimesh_hint_msg", 100);
client_reconnect_timeout = setTimeout(function(){
jstree_refresh();
$("#aimesh_hint_msg").empty();
$("#aimesh_hint_msg").append(popup_hint_api.get_component_text());
$("#aimesh_hint_msg").append(popup_hint_api.get_component_action());
var specific_client = clientList[client_info.mac];
if(specific_client.isOnline){
var specific_node_data = aimesh_data.cfg_clientlist.filter(function(item, index, _array){
return (item.mac == specific_client.amesh_papMac);
})[0];
if(specific_node_data != undefined){
var node_location_info = transform_location(specific_client.amesh_papMac, specific_node_data);
var hint = "<#1179#>".replace("#CLIENTNAME", client_info.name).replace("#MODELNAME", handle_ui_model_name(specific_node_data.model_name, specific_node_data.ui_model_name)).replace("#LOCATION", node_location_info.location_text);
$("#aimesh_hint_msg .hint_text").append($("<div>").addClass("notice_text").html(htmlEnDeCode.htmlEncode(hint)));
}
else
$("#aimesh_hint_msg .hint_text").append($("<div>").addClass("notice_text").html("<#1562#> " + client_info.name));
}
else
$("#aimesh_hint_msg .hint_text").append($("<div>").addClass("notice_text").html("<#1562#> " + client_info.name));
$("#aimesh_hint_msg #action_canacl").hide();
$("#aimesh_hint_msg #action_ok").unbind("click");
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").hide();
if(specific_node_data != undefined){
$("#jstree").jstree("deselect_all");
var id = "topo_" + specific_node_data.mac.replace(/:/g, '-');
$('#jstree').jstree('select_node', id);
}
jstree_refresh();
});
}, 1000*7);
}
var client_bind_timeout = false;
function client_bind(parm){
var refresh_and_select_node = function(_target_mac){
jstree_refresh();
$("#jstree").jstree("deselect_all");
var id = "topo_" + _target_mac.replace(/:/g, '-');
$('#jstree').jstree('select_node', id);
};
var display_bind_node_list = function(){
remove_mask();
remove_action_other();
$("#aimesh_hint_msg .hint_text").empty();
$("#aimesh_hint_msg .hint_text").append($("<div>").addClass("notice_text").html(htmlEnDeCode.htmlEncode("<#1180#>".replace("#CLIENTNAME", client_info.name))));
$("#aimesh_hint_msg .hint_text").append($("<div>").attr("id","not_support_bind_hint").addClass("notice_text hint").html("* <#1152#> <#1153#>"));
var gen_bind_node_component = function(_bind_support, _each_node_info){
var node_location_info = transform_location(_each_node_info.mac, _each_node_info);
var $model_info = $("<div>");
$model_info.addClass("notice_text horizontal_line")
if(_bind_support)
$model_info.css("cursor", "pointer");
$model_info.unbind("click");
if(_bind_support){
$model_info.click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg .hint_text .custom_radio_label").removeClass("checked");
$(this).find(".custom_radio_label").addClass("checked");
});
}
var $model_name = $("<span>").addClass("notice_text_blue model_info").html(handle_ui_model_name(_each_node_info.model_name, _each_node_info.ui_model_name));
if(!_bind_support)
$model_name.addClass("gray");
$model_info.append($model_name);
$model_info.append("<br>");
var $model_location = $("<span>").addClass("notice_text_location model_info").html(node_location_info.location_text);
if(!_bind_support)
$model_location.addClass("gray");
$model_info.append($model_location);
if(_bind_support){
var $model_check = $("<div>").addClass("custom_radio_bg").append($("<span>").addClass("custom_radio_label"));
var id = "client_bind_" + _each_node_info.mac.replace(/:/g, '-');
$model_check.attr({"id":id, "band_num":_each_node_info.band_num,"online":_each_node_info.online});
$model_info.append($model_check);
if(click_node_info.mac == _each_node_info.mac)
$model_check.find(".custom_radio_label").addClass("checked");
}
else
$model_info.append($("<span>").addClass("not_support_hint gray").html("(<#1154#>)"));
$("#aimesh_hint_msg .hint_text").append($model_info);
}
var not_support_bind_node = [];
aimesh_data.cfg_clientlist.forEach(function(item, index, array){
var isReNode = (item.mac != cap_mac) ? true : false;
var node_capability = httpApi.aimesh_get_node_capability(item);
var bind_support = manage_get_bind_control(node_capability, isReNode);
if(!bind_support){
not_support_bind_node.push(item);
return;
}
gen_bind_node_component(true, item);
});
not_support_bind_node.forEach(function(item, index, array){
gen_bind_node_component(false, item);
});
if(not_support_bind_node.length > 0)
$("#aimesh_hint_msg .hint_text").find("#not_support_bind_hint").show();
else
$("#aimesh_hint_msg .hint_text").find("#not_support_bind_hint").hide();
$("#aimesh_hint_msg #action_canacl").show();
$("#aimesh_hint_msg #action_canacl").unbind("click");
$("#aimesh_hint_msg #action_canacl").click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").hide();
});
$("#aimesh_hint_msg #action_ok").show();
$("#aimesh_hint_msg #action_ok").unbind("click");
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
gen_mask();
var current_node_mac = (click_node_info.mac).toUpperCase();
var target_mac = $("#aimesh_hint_msg .hint_text .custom_radio_label.checked").parent().attr('id').replace("client_bind_", "").replace(/-/g, ':').toUpperCase();
var client_mac = (client_info.mac).toUpperCase();
var target_online = $("#aimesh_hint_msg .hint_text .custom_radio_label.checked").parent().attr('online');
var target_band_num = $("#aimesh_hint_msg .hint_text .custom_radio_label.checked").parent().attr('band_num');
var transfer_parm = {"current_node_mac":current_node_mac, "target_mac":target_mac, "target_online":target_online, "target_band_num":target_band_num, "client_mac":client_mac};
if(current_node_mac == target_mac){//binding current node
client_bind_timeout = setTimeout(function(){
remove_mask();
display_bind_result("success", transfer_parm);
}, 1000*3);
}
else if(target_online == "0"){//target node is offline
client_bind_timeout = setTimeout(function(){
remove_mask();
remove_action_other();
display_bind_result("fail", transfer_parm);
}, 1000*3);
}
else{//do roaming
do_client_roaming(transfer_parm);
}
});
};
var display_bind_result = function(_step, _parm){
switch(_step){
case "success":
var specific_client = clientList[_parm.client_mac];
var specific_target_data = aimesh_data.cfg_clientlist.filter(function(item, index, _array){
return (item.mac == _parm.target_mac);
})[0];
var node_location_info = transform_location(_parm.target_mac, specific_target_data);
var result_text = "<#1181#>".replace("#CLIENTNAME", specific_client.name).replace("#MODELNAME", handle_ui_model_name(specific_target_data.model_name, specific_target_data.ui_model_name)).replace("#LOCATION", node_location_info.location_text);
$("#aimesh_hint_msg .hint_text").empty();
$("#aimesh_hint_msg .hint_text").append($("<div>").addClass("notice_text").html(htmlEnDeCode.htmlEncode(result_text)));
remove_sta_binding_list_json(_parm.client_mac);
handle_sta_binding_list_json(_parm.target_mac, _parm.target_online, _parm.target_band_num, _parm.client_mac);
httpApi.nvramSet({
"sta_binding_list" : transform_sta_bind_json_to_string(aimesh_data.sta_binding_list_json),
"rc_service": "update_sta_binding",
"action_mode": "apply"
});
$("#aimesh_hint_msg #action_canacl").hide();
$("#aimesh_hint_msg #action_ok").show();
$("#aimesh_hint_msg #action_ok").unbind("click");
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
refresh_and_select_node(_parm.target_mac);
$("#aimesh_hint_msg").hide();
});
break;
case "fail":
var specific_client = clientList[_parm.client_mac];
var specific_target_data = aimesh_data.cfg_clientlist.filter(function(item, index, _array){
return (item.mac == _parm.target_mac);
})[0];
var node_location_info = transform_location(_parm.target_mac, specific_target_data);
$("#aimesh_hint_msg .hint_text").empty();
var result_text = "";
result_text += htmlEnDeCode.htmlEncode("<#1182#>".replace("#CLIENTNAME", specific_client.name).replace("#MODELNAME", handle_ui_model_name(specific_target_data.model_name, specific_target_data.ui_model_name)));
result_text += "<br>";
result_text += htmlEnDeCode.htmlEncode("<#1183#>".replace("#CLIENTNAME", specific_client.name));
result_text += htmlEnDeCode.htmlEncode("<#1184#>");
$("#aimesh_hint_msg .hint_text").append($("<div>").addClass("notice_text").html(result_text));
$("#aimesh_hint_msg #action_ok").unbind("click");
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
remove_sta_binding_list_json(_parm.client_mac);
handle_sta_binding_list_json(_parm.target_mac, _parm.target_online, _parm.target_band_num, _parm.client_mac);
httpApi.nvramSet({
"sta_binding_list" : transform_sta_bind_json_to_string(aimesh_data.sta_binding_list_json),
"rc_service": "update_sta_binding",
"action_mode": "apply"
});
refresh_and_select_node(_parm.target_mac);
$("#aimesh_hint_msg").hide();
});
var $action_more_bg = $("<div>");
$action_more_bg.addClass("action_more_bg");
$retry = $("<span>").html("<#1185#>");
$retry.unbind("click");
$retry.click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").find(".action_more_bg").remove();
$("#aimesh_hint_msg .hint_text").empty();
var hint = "";
hint += htmlEnDeCode.htmlEncode("<#1186#>".replace("#CLIENTNAME", specific_client.name).replace("#MODELNAME", handle_ui_model_name(specific_target_data.model_name, specific_target_data.ui_model_name)));
hint += "<br>";
hint += htmlEnDeCode.htmlEncode('<#1187#>');
$("#aimesh_hint_msg .hint_text").html(hint);
$("#aimesh_hint_msg #action_ok").unbind("click");
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
gen_mask();
if(specific_target_data.online != "0"){
client_bind_timeout = setTimeout(function(){
remove_mask();
remove_action_other();
display_bind_result("fail", _parm);
}, 1000*3);
}
else
do_client_roaming(_parm);
});
});
$action_more_bg.append($retry);
$("#aimesh_hint_msg").append($action_more_bg);
break;
}
};
var do_client_roaming = function(_parm){
httpApi.nvramSet({
"device_list" : _parm.current_node_mac,
"client_mac" : _parm.client_mac,
"target_ap": _parm.target_mac,
"block_time": 20,
"action_mode": "force_roaming"
});
var count = 0;
var timer = 7;
var client_has_offline = false;
var roaming_result = false;
var interval_client_check = setInterval(function(){
client_list_refresh();
var specific_client = clientList[client_info.mac];
if(specific_client != undefined && specific_client.isOnline && specific_client.amesh_papMac == _parm.target_mac)
roaming_result = true;
else if(count >= timer)
roaming_result = true;
if(roaming_result){
if($("#aimesh_hint_msg").css("display") != "none"){
remove_mask();
remove_action_other();
if(specific_client != undefined && specific_client.amesh_papMac == _parm.target_mac)//roaming success
display_bind_result("success", _parm);
else//roaming fail
display_bind_result("fail", _parm);
}
clearInterval(interval_client_check);
}
count++;
},3000);
}
var remove_sta_binding_list_json = function(_remove_client_mac){
var sta_bind_json = aimesh_data.sta_binding_list_json;
for(var node_mac in sta_bind_json) {
var client_bind_list = sta_bind_json[node_mac].client;
for(var client_mac in client_bind_list){
if(client_mac == _remove_client_mac)
delete aimesh_data.sta_binding_list_json[node_mac]["client"][client_mac];
}
}
};
var handle_sta_binding_list_json = function(_target_mac, _target_online, _target_band_num, _client_mac){
if(aimesh_data.sta_binding_list_json.hasOwnProperty(_target_mac)){
aimesh_data.sta_binding_list_json[_target_mac]["enable"] = _target_online;
if(aimesh_data.sta_binding_list_json[_target_mac]["client"].hasOwnProperty(_client_mac)){
aimesh_data.sta_binding_list_json[_target_mac]["client"][_client_mac]["band_index"] = transform_band_index(_target_band_num);
}
else{
aimesh_data.sta_binding_list_json[_target_mac]["client"][_client_mac] = new setSTAClientBindAttr();
aimesh_data.sta_binding_list_json[_target_mac]["client"][_client_mac]["band_index"] = transform_band_index(_target_band_num);
}
}
else{
aimesh_data.sta_binding_list_json[_target_mac] = new setSTABindAttr();
aimesh_data.sta_binding_list_json[_target_mac]["enable"] = _target_online;
aimesh_data.sta_binding_list_json[_target_mac]["client"][_client_mac] = new setSTAClientBindAttr();
aimesh_data.sta_binding_list_json[_target_mac]["client"][_client_mac]["band_index"] = transform_band_index(_target_band_num);
}
};
var gen_mask = function(){
var $mask_bg = popup_hint_api.get_component_mask();
$mask_bg.append(popup_hint_api.get_component_loading());
$mask_bg.find(".cssload-bellContainer").addClass("center");
$("#aimesh_hint_msg").append($mask_bg);
};
var remove_mask = function(){
$("#aimesh_hint_msg .mask_bg").remove();
}
var remove_action_other = function(){
$("#aimesh_hint_msg .action_more_bg").remove();
};
closeAllPopup();
var e = event;
event.stopPropagation();
var click_node_info = parm.data.node;
var client_info = parm.data.client;
$("#aimesh_hint_msg").empty();
$("#aimesh_hint_msg").append(popup_hint_api.get_component_text());
$("#aimesh_hint_msg").append(popup_hint_api.get_component_action());
if(clientList[client_info.mac].amesh_bind_mac != ""){
var client_name = (clientList[client_info.mac].nickName == "") ? clientList[client_info.mac].name : clientList[client_info.mac].nickName;
var specific_node_data = aimesh_data.cfg_clientlist.filter(function(item, index, _array){
return (item.mac == clientList[client_info.mac].amesh_bind_mac);
})[0];
var hint = "";
if(specific_node_data != undefined){
var node_location_info = transform_location(clientList[client_info.mac].amesh_bind_mac, specific_node_data);
hint = "<#1188#> <#1014#>".replace("#CLIENTNAME", client_name).replace("#MODELNAME", handle_ui_model_name(click_node_info.model_name, click_node_info.ui_model_name)).replace("#LOCATION", node_location_info.location_text);
}
else
hint = "<#1188#> <#1014#>".replace("#CLIENTNAME", client_name).replace("#MODELNAME", clientList[client_info.mac].amesh_bind_mac).replace("(#LOCATION)", "");
$("#aimesh_hint_msg .hint_text").html(htmlEnDeCode.htmlEncode(hint));
$("#aimesh_hint_msg #action_canacl").show();
$("#aimesh_hint_msg #action_canacl").click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").hide();
});
$("#aimesh_hint_msg #action_ok").show();
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
gen_mask();
remove_sta_binding_list_json(client_info.mac);
httpApi.nvramSet({
"sta_binding_list" : transform_sta_bind_json_to_string(aimesh_data.sta_binding_list_json),
"rc_service": "update_sta_binding",
"action_mode": "apply"
});
setTimeout(function(){
$("#aimesh_hint_msg").hide();
jstree_refresh();
}, 1000*3);
});
}
else{
var acl_and_client_bind_count = function(){
var status = {"acl_max_count":0, "acl_all_allow":true, "client_bind_count":0, "client_bind_allow_maximum":64, "acl_and_client_bind_allow_maximum":64};
if(isSupport("acl96"))
status.acl_and_client_bind_allow_maximum = 96;
else{
var cfg_re_maxnum = httpApi.hookGet("get_onboardingstatus").cfg_re_maxnum;
status.acl_and_client_bind_allow_maximum = 64 - (cfg_re_maxnum * 2);
}
var sta_binding_list = decodeURIComponent(httpApi.nvramCharToAscii(["sta_binding_list"], true).sta_binding_list);
var each_node_rule = sta_binding_list.split("<");
$.each(each_node_rule, function(index, value){
if(value != ""){
var node_client_rule = value.split(">");
var node_mac = "";
$.each(node_client_rule, function(index, value){
switch(index){
case 2://client list
var each_client = value.split("|");
$.each(each_client, function(index, value){
status.client_bind_count++;
});
break;
}
});
}
});
for(var i = 0; i < wl_info.wl_if_total; i += 1){
var wl_maclist_x = httpApi.nvramGet(["wl" + i + "_maclist_x"], true)["wl" + i + "_maclist_x"];
var wl_macmode = httpApi.nvramGet(["wl" + i + "_macmode"], true)["wl" + i + "_macmode"];
if(wl_macmode == "deny")
status.acl_all_allow = false;
if((isSupport("acl96") && wl_macmode == "deny") || !isSupport("acl96")){
if(wl_maclist_x != ""){
var temp_count = (wl_maclist_x.split('&#60').length) - 1;
status.acl_max_count = Math.max(temp_count, status.acl_max_count);
}
}
}
return status;
};
var rule_status = acl_and_client_bind_count();
if(isSupport("acl96") && rule_status.client_bind_count >= rule_status.client_bind_allow_maximum){
$("#aimesh_hint_msg .hint_text").append($("<div>").html("<#1157#>"));
$("#aimesh_hint_msg .hint_text").append($("<div>").html("<#1160#>"));
$("#aimesh_hint_msg .hint_text").append($("<div>").css("color", "#FC0").html("- AiMesh client binding rule"));/* untranslated */
$("#aimesh_hint_msg #action_canacl").hide();
$("#aimesh_hint_msg #action_ok").show();
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").hide();
});
}
else if((isSupport("acl96") && !rule_status.acl_all_allow && rule_status.client_bind_count + rule_status.acl_max_count >= rule_status.acl_and_client_bind_allow_maximum) ||
(!isSupport("acl96") && rule_status.client_bind_count + rule_status.acl_max_count >= rule_status.acl_and_client_bind_allow_maximum)){
$("#aimesh_hint_msg .hint_text").append($("<div>").html("<#1157#>"));
$("#aimesh_hint_msg .hint_text").append($("<div>").html("<#1160#>"));
if(rule_status.client_bind_count != 0)
$("#aimesh_hint_msg .hint_text").append($("<div>").css("color", "#FC0").html("- AiMesh client binding rule"));
if(rule_status.acl_max_count != 0)
$("#aimesh_hint_msg .hint_text").append($("<div>").css("color", "#FC0").html("- <#2094#>"));
$("#aimesh_hint_msg #action_canacl").hide();
$("#aimesh_hint_msg #action_ok").show();
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").hide();
});
}
else{
if(aimesh_data.cfg_clientlist != undefined && aimesh_data.cfg_clientlist != "")
display_bind_node_list();
else{
$("#aimesh_hint_msg .hint_text").append($("<div>").addClass("notice_text").html("Topology Error."));/* untranslated */
$("#aimesh_hint_msg #action_canacl").hide();
$("#aimesh_hint_msg #action_ok").show();
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").hide();
});
}
}
}
$("#aimesh_hint_msg").show();
adjust_panel_block_top("aimesh_hint_msg", 100);
}
function client_remove_client_upload_icon(_clientMac){
delete aimesh_node_client_upload_icon[_clientMac];
}
function client_get_reconnect_control(_node_capability, _isReNode){
var result = false;
if(_isReNode) {
if(_node_capability.manual_force_roaming != undefined)
result = (_node_capability.manual_force_roaming == undefined) ? false: _node_capability.manual_force_roaming;
}
else {
if(isSupport("force_roaming"))
result = true;
}
return result;
}
function display_network_block(){
var specific_node_data = aimesh_data.cfg_clientlist.filter(function(item, index, _array){
return (item.mac == current_click_mac);
})[0];
if(specific_node_data != undefined){
$("#network_block").show();
var isReNode = (current_click_mac != cap_mac) ? true : false;
if(isReNode){
$("#network_block .wan_info").hide();
var _signal_quality = get_connect_quality(specific_node_data);
$("#network_block .uplink_info").show();
network_set_uplink_info(specific_node_data, _signal_quality);
$("#network_block .backhaul_info").show();
network_set_backhaul_info(specific_node_data, _signal_quality);
$("#network_block .fronthaul_info").show();
network_set_fronthaul_info(specific_node_data);
}
else{
$("#network_block .wan_info").show();
network_set_wan_info();
$("#network_block .uplink_info").hide();
$("#network_block .backhaul_info").hide();
$("#network_block .fronthaul_info").show();
network_set_fronthaul_info(specific_node_data);
}
$("#network_block .fronthaul_info .separation_line").unbind("click");
$("#network_block .fronthaul_info .separation_line").click(function(e){
e = e || event;
e.stopPropagation();
var content_status = $(this).next().css("display");
if(content_status == "none"){
$(this).next().slideDown();
$(this).find("p").removeClass("hide");
}
else{
$(this).next().slideUp();
$(this).find("p").removeClass("hide").addClass("hide");
}
});
}
else
$("#network_block").hide();
}
function network_set_wan_info(){
$("#network_block .wan_status_bg.wan1").hide();
var connect_attr = function(){
this.status = "disconnected";
this.status_title = "<#226#>";
this.ip = "- -. - -. - -. - -";
this.ip_title = "<#3775#>";
this.proto_title = "- -";
this.wan_title = "<#74#>";
};
var set_wan_connect_info = function(_connect_info, _index){
var $wan_info_bg = $("#network_block .wan_status_bg.wan" + _index + "");
$wan_info_bg.find("#wan_connect_status").removeClass().addClass("connect_status");
$wan_info_bg.find(".connect_icon_bg").removeClass().addClass("connect_icon_bg");
$wan_info_bg.find(".connect_title").html(_connect_info.wan_title);
$wan_info_bg.find("#wan_connect_status").html(_connect_info.status_title);
$wan_info_bg.find("#wan_connect_status").addClass(_connect_info.status);
$wan_info_bg.find(".connect_icon_bg").addClass(_connect_info.status);
$wan_info_bg.find("#wan_connect_ip_title").html(_connect_info.ip_title);
$wan_info_bg.find("#wan_connect_ip").html(_connect_info.ip);
$wan_info_bg.find("#wan_connect_type").html(_connect_info.proto_title);
}
if(isSwMode("rt")){
var wan_array = [0];
if(dualwan_enabled){
wan_array.push(1);
$("#network_block .wan_status_bg.wan1").show();
}
$.each(wan_array, function(index, value){
var connect_info =new connect_attr();
var wan_index = value;
var wanInfo = httpApi.getWanInfo(wan_index);
if(dualwan_enabled)
connect_info.wan_title = (value == 0) ? "<#1881#>" : "<#1888#>";
else
connect_info.wan_title = "<#74#>";
connect_info.status = wanInfo.status;
connect_info.status_title = wanInfo.status_text;
if(wanInfo.status == "connected"){
connect_info.ip = wanInfo.ipaddr;
connect_info.proto_title = wanInfo.proto_text;
}
set_wan_connect_info(connect_info, value);
});
}
else if(isSwMode("ap")){
var connect_proto_array = {"dhcp":"<#174#>", "static": "<#175#>", "pppoe": "PPPoE","pptp": "PPTP","l2tp": "L2TP"};
var connect_info = new connect_attr();
connect_info.status = "connect";
connect_info.status_title = "<#3956#>";
connect_info.ip = httpApi.nvramGet(["lan_ipaddr"], true).lan_ipaddr;
connect_info.ip_title = "<#2545#>";
var lan_proto = httpApi.nvramGet(["lan_proto"], true).lan_proto;
if(lan_proto != "")
connect_info.proto_title = connect_proto_array[lan_proto];
set_wan_connect_info(connect_info, 0);
}
}
function network_set_uplink_info(_node_info, _signal_quality){
$("#network_block .uplink_info #uplink_connect_type").removeClass().addClass("uplink_type_title " + _signal_quality.type + " " + _signal_quality.css + "");
$("#network_block .uplink_info #uplink_connect_type").html(_signal_quality.type_text);
$("#network_block .uplink_info #uplink_connect_ip").html(_node_info.ip);
$("#network_block .uplink_info .uplink_icon_bg").children().removeClass().addClass("uplink_type_icon " + _signal_quality.type + " " + _signal_quality.css + "");
$("#network_block #uplink_type_mode_bg").hide();
if(_signal_quality.type == "plc" && _signal_quality.type_mode != ""){
$("#network_block #uplink_type_mode_bg").show();
$("#network_block #uplink_type_mode_bg #uplink_type_mode").removeClass().addClass("uplink_type_title " + _signal_quality.css + "");
$("#network_block #uplink_type_mode_bg #uplink_type_mode").html(_signal_quality.type_mode);
}
}
function get_connect_quality(_node_info){
var _re_online = _node_info.online;
var _re_path = handle_re_path(_node_info.re_path);
var _quality_info = "";
var result = {"type":"wired", "quality":0, "css":"wired disconnected", "type_text":"<#3771#>", "quality_text":"<#226#>", "type_mode":""};
if(_re_path <= 0 && _re_online == "1")
return result;
else{
if(_re_path == "1" || _re_path == "16" || _re_path == "32" || _re_path == "64"){
var real_port_type = gen_real_port_type(_node_info);
if(real_port_type.type == "eth"){
result.type = "wired";
result.type_text = "<#3771#>";
}
else if(real_port_type.type == "plc"){
result.type = "plc";
result.type_text = "<#4326#>";
}
_quality_info = _node_info.wired_port;
if(_re_online == "1"){
if(real_port_type.type == "eth"){
result.quality = 3;
result.css = "wired great G";
result.quality_text = "<#66#>";
var wired_map = {"T":3,"F":3,"Q":3,"G":3,"M":1,"X":0};
if(_quality_info != undefined){
if("wan_port" in _quality_info) {
if("WAN 0" in _quality_info.wan_port) {
if("link_rate" in _quality_info.wan_port["WAN 0"]) {
var link_rate = _quality_info.wan_port["WAN 0"].link_rate;
if(link_rate != ""){
result.css = "wired " + link_rate;
result.quality = wired_map[link_rate];
if(result.quality == 3){
result.css += " great";
result.quality_text = "<#66#>";
}
else if(result.quality == 1){
result.css += " weak";
result.quality_text = "<#69#>";
}
}
}
}
}
}
}
else if(real_port_type.type == "plc"){
result.quality = 3;
result.css = "plc great";
result.quality_text = "<#66#>";
if("plc_status" in _node_info) {
var _mode = _node_info.plc_status.mode;
var _link_rate = parseInt(_node_info.plc_status.link_rate);
if(_mode != undefined && _mode != "" && _link_rate != undefined && _link_rate != NaN){
result.type_mode = _mode;
if(_link_rate < 100){
result.quality = 1;
result.css = "plc weak";
result.quality_text = "<#67#>";
}
else{
if(_mode == "MIMO"){
if(_link_rate >= 800)
result.quality_text = "<#66#>";
else if(_link_rate < 800 && _link_rate >= 400)
result.quality_text = "<#68#>";
else if(_link_rate < 400 && _link_rate >= 100)
result.quality_text = "<#69#>";
}
else if(_mode == "SISO"){
if(_link_rate < 800 && _link_rate >= 100)
result.quality_text = "<#69#>";
}
}
}
}
}
}
else{
result.quality = 0;
if(real_port_type.type == "eth")
result.css = "wired disconnected";
else if(real_port_type.type == "plc")
result.css = "plc disconnected";
result.quality_text = "<#226#>";
}
}
else if(_re_path == "2"){
_quality_info = _node_info.rssi2g
result.type = "wireless";
result.type_text = "<#396#> - 2.4GHz";
if(_re_online == "1"){
result.quality = 1;
result.css = "wl_2g weak";
result.quality_text = "<#67#>";
}
else{
result.quality = 0;
result.css = "disconnected";
result.quality_text = "<#226#>";
}
}
else if(_re_path == "128"){
_quality_info = _node_info.rssi6g
result.type = "wireless";
result.type_text = "<#396#> - 6GHz";
if(_re_online == "1"){
var rssi = parseInt(_quality_info);
var css = "weak";
result.quality = 1;
result.css = "wl_6g " + css;
result.quality_text = "<#67#>";
if(!isNaN(rssi)){
if(rssi > -70){
result.quality = 3;
css = "great";
result.quality_text = "<#66#>";
}
else if(rssi <= -70 && rssi >= -80){
result.quality = 2;
css = "ok";
result.quality_text = "<#68#>";
}
else if(rssi < -80){
result.quality = 1;
css = "weak";
result.quality_text = "<#67#>";
}
result.css = "wl_6g " + css;
}
}
else{
result.quality = 0;
result.css = "disconnected";
result.quality_text = "<#226#>";
}
}
else{
_quality_info = _node_info.rssi5g
result.type = "wireless";
result.type_text = "<#396#> - 5GHz";
if(_re_online == "1"){
var rssi = parseInt(_quality_info);
var css = "weak";
result.quality = 1;
result.css = "wl_5g " + css;
result.quality_text = "<#67#>";
if(!isNaN(rssi)){
if(rssi > -70){
result.quality = 3;
css = "great";
result.quality_text = "<#66#>";
}
else if(rssi <= -70 && rssi >= -80){
result.quality = 2;
css = "ok";
result.quality_text = "<#68#>";
}
else if(rssi < -80){
result.quality = 1;
css = "weak";
result.quality_text = "<#67#>";
}
}
if(_re_path == "4" || _re_path == "6"){
result.type_text = "<#396#> - 5GHz";
result.css = "wl_5g " + css;
}
else if(_re_path == "8" || _re_path == "10"){
/*result.type_text = "<#396#> - 5GHz-2";
result.css = "wl_5g_2 " + css;*/
result.type_text = "<#396#> - 5GHz";
result.css = "wl_5g " + css;
}
else{
result.type_text = "<#396#> - 5GHz";
result.css = "wl_5g " + css;
}
}
else{
result.quality = 0;
result.css = "disconnected";
result.quality_text = "<#226#>";
}
}
return result;
}
}
function gen_real_port_type(_node_info){
var result = {type:"eth", speed:"G"};
var interface_mapping = [{value:"1", type:"eth"}, {value:"2", type:"wifi"}, {value:"3", type:"plc"}];//Type
var eth_rate_mapping = [{value:"1", type:"M"}, {value:"2", type:"M"}, {value:"3", type:"G"}, {value:"4", type:"F"}, {value:"5", type:"Q"},
{value:"6", type:"T"}, {value:"7", type:"T"}];//SubType
var eth_re_path_sequence = {"1":1, "16":2, "32":3, "64":4};
var eth_mapping_idx = ((eth_re_path_sequence[_node_info.re_path] == undefined) ? 0 : (eth_re_path_sequence[_node_info.re_path]));
var eth_current_idx = 1;
if(_node_info.re_path == "1" || _node_info.re_path == "16" || _node_info.re_path == "32" || _node_info.re_path == "64"){
if("capability" in _node_info){
if("21" in _node_info.capability) {
var multiple_uplink_port = _node_info.capability["21"];
if(multiple_uplink_port["Ports"] != undefined) {
$.each(multiple_uplink_port["Ports"], function( index, value ){
var conn_type = "";
var port_obj = value;
var if_type = interface_mapping.filter(function(item, index, _array){
return (item.value == port_obj.Type);
})[0];
if(if_type != undefined){
var rate_type = "";
switch(if_type.value){
case "1":
if(eth_current_idx == eth_mapping_idx){
result.type = "eth";
rate_type = eth_rate_mapping.filter(function(item, index, _array){
return (item.value == port_obj.SubType);
})[0];
if(rate_type != undefined && rate_type != "")
result.speed = rate_type.type;
return false;
}
eth_current_idx++;
break;
case "3":
if(eth_current_idx == eth_mapping_idx){
result.type = "plc";
return false;
}
eth_current_idx++;
break;
}
}
});
}
}
}
}
return result;
}
function network_set_backhaul_info(_node_info, _signal_quality){
var re_path = handle_re_path(_node_info.re_path);
var backhaul_parm = {"css":"wired", "band_text":"<#3771#>", "mac":"", "ssid":"", "band":""};
backhaul_parm.mac = cap_mac;
if(re_path == "1" || re_path == "16" || re_path == "32" || re_path == "64"){
backhaul_parm.css = "wired";
backhaul_parm.band_text = "<#3771#>";
var wired_mac = _node_info.mac;
var papObj = aimesh_data.cfg_clientlist.filter(function(item, index, array){
return ($.inArray(wired_mac, item.wired_mac) != -1)
});
var lastPapObj = papObj[papObj.length - 1];
if(lastPapObj != undefined)
backhaul_parm.mac = lastPapObj.mac;
backhaul_parm.band = "wired";
backhaul_parm.sta_mac = _node_info.mac;
if(_signal_quality.type == "plc"){
backhaul_parm.band_text = "<#4326#>";
backhaul_parm.band = "plc";
}
}
else if(re_path == "2"){
backhaul_parm.css = "wl_2g";
backhaul_parm.band_text = "<#396#> - 2.4GHz";
var papObj = aimesh_data.cfg_clientlist.filter(function(item, index, array){
return (item.ap2g == _node_info.pap2g);
})[0];
if(papObj != undefined)
backhaul_parm.mac = papObj.mac;
if(_node_info.pap2g_ssid != undefined)
backhaul_parm.ssid = _node_info.pap2g_ssid;
backhaul_parm.band = "2G";
backhaul_parm.sta_mac = _node_info.sta2g;
}
else if(re_path == "128"){
backhaul_parm.css = "wl_6g";
backhaul_parm.band_text = "<#396#> - 6GHz";
var papObj = aimesh_data.cfg_clientlist.filter(function(item, index, array){
return (item.ap6g == _node_info.pap6g);
})[0];
if(papObj != undefined)
backhaul_parm.mac = papObj.mac;
if(_node_info.pap6g_ssid != undefined)
backhaul_parm.ssid = _node_info.pap6g_ssid;
backhaul_parm.band = "6G";
backhaul_parm.sta_mac = _node_info.sta6g;
}
else if(re_path <= 0){
backhaul_parm.css = "wired";
backhaul_parm.band_text = "<#3771#>";
backhaul_parm.band = "wired";
backhaul_parm.mac = cap_mac;
backhaul_parm.sta_mac = _node_info.mac;
}
else{
backhaul_parm.css = "wl_5g";
backhaul_parm.band_text = "<#396#> - 5GHz";
var papObj = aimesh_data.cfg_clientlist.filter(function(item, index, array){
return (item.ap5g == _node_info.pap5g || item.ap5g1 == _node_info.pap5g);
})[0];
if(papObj != undefined)
backhaul_parm.mac = papObj.mac;
if(_node_info.pap5g_ssid != undefined)
backhaul_parm.ssid = _node_info.pap5g_ssid;
backhaul_parm.band = "5G";
if(_node_info.band_num != undefined && _node_info.band_num == "3" && re_path == "8")//for triband(band_num) and 5G-2(re_path=8)
backhaul_parm.band = "5G1";
backhaul_parm.sta_mac = _node_info.sta5g;
}
var set_backhaul_data = function(_obj){
_obj.find("#backhaul_connect_title").removeClass().addClass("connect_title horizontal_line");
_obj.find("#backhaul_connect_title").html(backhaul_parm.band_text);
_obj.find("#backhaul_mac").html(backhaul_parm.mac);
if(re_path == "1" || re_path == "16" || re_path == "32" || re_path == "64" || re_path <= 0){
_obj.find(".wired_hide").hide();
_obj.find("#backhaul_mac_title").html("<#381#>");
}
else{
_obj.find(".wired_hide").show();
_obj.find("#backhaul_mac_title").html("MAC (BSSID)");
if(backhaul_parm.ssid != ""){
_obj.find("#backhaul_ssid").html(htmlEnDeCode.htmlEncode(backhaul_parm.ssid));
_obj.find(".bubble_icon").hide();
}
else{
_obj.find("#backhaul_ssid").html("N/A");
_obj.find(".bubble_icon").parent().find(".hover_pop_hint_bg").remove();
var hint_parm = {
"text": "<#64#>",
"css": "ssid_icon"
};
_obj.find(".bubble_icon").removeClass("hover_pop_hint").addClass("hover_pop_hint");
_obj.find(".bubble_icon").after(gen_hint_component(hint_parm));
_obj.find(".bubble_icon").css("display", "inline-block");
}
}
if(conndiag_support){
var set_backhaul_traffic = function(_data){
var traffic_data_rate = "";
_obj.find(".conndiag_data").show();
if(re_path == "1" || re_path == "16" || re_path == "32" || re_path == "64" || re_path <= 0){
traffic_data_rate = diagnosticApi.get_ethinfo_traffic(backhaul_parm.sta_mac, "BH", _node_info.online, _data, backhaul_parm.band);
if(backhaul_parm.band == "plc"){
_obj.find(".phy_rate_bg").show();
_obj.find("#phy_rate_tx").html(traffic_data_rate.phy.tx);
_obj.find("#phy_rate_rx").html(traffic_data_rate.phy.rx);
}
else
_obj.find(".phy_rate_bg").hide();
}
else{
traffic_data_rate = diagnosticApi.get_backhaul_traffic(backhaul_parm.mac, backhaul_parm.band, backhaul_parm.sta_mac, _node_info.online, _data);
_obj.find("#phy_rate_tx").html(traffic_data_rate.phy.tx);
_obj.find("#phy_rate_rx").html(traffic_data_rate.phy.rx);
}
var data_rate_cur_tx = diagnosticApi.transform_unit(traffic_data_rate.data.tx);
_obj.find("#data_rate_cur_tx").html(data_rate_cur_tx.rate);
_obj.find("#data_rate_cur_tx").next(".transmit_unit").html(data_rate_cur_tx.unit);
var data_rate_avg_tx = diagnosticApi.transform_unit(traffic_data_rate.data.avg_tx);
_obj.find("#data_rate_avg_tx").html(data_rate_avg_tx.rate);
_obj.find("#data_rate_avg_tx").next(".transmit_unit").html(data_rate_avg_tx.unit);
var data_rate_cur_rx = diagnosticApi.transform_unit(traffic_data_rate.data.rx);
_obj.find("#data_rate_cur_rx").html(data_rate_cur_rx.rate);
_obj.find("#data_rate_cur_rx").next(".transmit_unit").html(data_rate_cur_rx.unit);
var data_rate_avg_rx = diagnosticApi.transform_unit(traffic_data_rate.data.avg_rx);
_obj.find("#data_rate_avg_rx").html(data_rate_avg_rx.rate);
_obj.find("#data_rate_avg_rx").next(".transmit_unit").html(data_rate_avg_rx.unit);
};
if(re_path == "1" || re_path == "16" || re_path == "32" || re_path == "64" || re_path <= 0)
diagnosticApi.get_DB(backhaul_parm.sta_mac, "ethinfo", set_backhaul_traffic);
else
diagnosticApi.get_DB(backhaul_parm.mac, "backhaul", set_backhaul_traffic);
}
else
_obj.find(".conndiag_data").hide();
}
var $backhaul_obj = $("#network_block .backhaul_content .card_block_bg.backhaul");
if($backhaul_obj.length > 0)
set_backhaul_data($backhaul_obj);
else{
$("#network_block .backhaul_content").load("/aimesh/aimesh_backhaul.html", function(){
set_backhaul_data($(this));
});
}
}
function network_set_fronthaul_info(_node_info){
var set_fronthaul_data_wired = function(_obj){
_obj.find("#fronthaul_connect_title").removeClass().addClass("connect_title horizontal_line");
_obj.find("#fronthaul_connect_title").html("<#3771#>");
_obj.find(".wired_hide").hide();
_obj.find("#fronthaul_mac").html(_node_info.mac);
if(conndiag_support){
var set_fronthaul_traffic_wired = function(_data){
_obj.find(".conndiag_data").show();
_obj.find(".wired_hide").hide();
var traffic_data_rate = diagnosticApi.get_ethinfo_traffic(_node_info.mac, "FH", _node_info.online, _data);
var data_rate_cur_tx = diagnosticApi.transform_unit(traffic_data_rate.data.tx);
_obj.find("#data_rate_cur_tx").html(data_rate_cur_tx.rate);
_obj.find("#data_rate_cur_tx").next(".transmit_unit").html(data_rate_cur_tx.unit);
var data_rate_avg_tx = diagnosticApi.transform_unit(traffic_data_rate.data.avg_tx);
_obj.find("#data_rate_avg_tx").html(data_rate_avg_tx.rate);
_obj.find("#data_rate_avg_tx").next(".transmit_unit").html(data_rate_avg_tx.unit);
var data_rate_cur_rx = diagnosticApi.transform_unit(traffic_data_rate.data.rx);
_obj.find("#data_rate_cur_rx").html(data_rate_cur_rx.rate);
_obj.find("#data_rate_cur_rx").next(".transmit_unit").html(data_rate_cur_rx.unit);
var data_rate_avg_rx = diagnosticApi.transform_unit(traffic_data_rate.data.avg_rx);
_obj.find("#data_rate_avg_rx").html(data_rate_avg_rx.rate);
_obj.find("#data_rate_avg_rx").next(".transmit_unit").html(data_rate_avg_rx.unit);
};
diagnosticApi.get_DB(_node_info.mac, "ethinfo", set_fronthaul_traffic_wired);
}
else
_obj.find(".conndiag_data").hide();
};
var $fronthaul_wired_obj = $("#network_block .fronthaul_content #fronthaul_wired");
if($fronthaul_wired_obj.length > 0)
set_fronthaul_data_wired($fronthaul_wired_obj);
else{
var $fronthaulBg = $("<div>");
$fronthaulBg.addClass("fronthaul_bg");
$fronthaulBg.attr("id","fronthaul_wired");
$fronthaulBg.load("/aimesh/aimesh_fronthaul.html", function(){
set_fronthaul_data_wired($(this));
});
$("#network_block .fronthaul_content").append($fronthaulBg);
}
var cfg_clientlist_ap_list = ["ap2g", "ap5g", "ap5g1", "ap6g"];
var ap_info_list = [];
var ap_list_idx = 0;
var isReNode = (_node_info.mac != cap_mac) ? true : false;
var wifi_radio_control = [];
if(isReNode)
wifi_radio_control = manage_get_wifi_radio_control(_node_info, select_node_capability);
var band_info = "";
if(_node_info.band_info != undefined){
band_info = JSON.parse(JSON.stringify(_node_info.band_info));
$.each(band_info, function(index, item){
switch(index){
case "0":
item.ap_name = "ap2g";
break;
case "1":
item.ap_name = "ap5g";
break;
case "2":
item.ap_name = "ap5g";
break;
case "3":
item.ap_name = "ap5g1";
break;
case "4":
item.ap_name = "ap6g";
break;
}
});
}
cfg_clientlist_ap_list.forEach(function(item, index, array){
var specific_data = "";
if(wifi_radio_control.length > 0){
specific_data = wifi_radio_control.filter(function(wl_item){
return (wl_item.ap_name == item);
})[0];
}
else{
specific_data = _node_info[item];
}
if(specific_data == "" || specific_data == undefined)
$("#network_block .fronthaul_content").find("#fronthaul_wl_" + item + "").remove();
else{
var ap_info = {"name":"", "mac":"", "ssid":"", "type":"", "is_dwb":false, "radio_on":false};
ap_info["name"] = item;
ap_info["mac"] = function(){
var mac = "";
if(_node_info[item + "_fh"] != undefined && _node_info[item + "_fh"] != "")
mac = _node_info[item + "_fh"];
else
mac = _node_info[item];
return mac;
}();
ap_info["type"] = item.substr(2,2);
ap_info["ssid"] = function(){
var ssid = "";
if(_node_info[item + "_ssid_fh"] != undefined && _node_info[item + "_ssid_fh"] != "")
ssid = _node_info[item + "_ssid_fh"];
else if(_node_info[item + "_ssid"] != undefined && _node_info[item + "_ssid"] != "")
ssid = _node_info[item + "_ssid"];
return htmlEnDeCode.htmlEncode(ssid);
}();
ap_info["is_dwb"] = function(){
var result = false;
if(dwb_info.mode == "1"){
var cur_ap_unit = "";
$.each(band_info, function(band_idx, band_item){
if(band_item.ap_name == item){
cur_ap_unit = band_item.unit;
return false;
}
});
if(cur_ap_unit === ""){
cur_ap_unit = ap_list_idx;
}
if(cur_ap_unit == dwb_info.band){
var wl_closed = httpApi.nvramGet(["wl" + dwb_info.band + "_closed"])["wl" + dwb_info.band + "_closed"];
if(isSupport("amas_fronthaul_network")){
var fh_ap_enabled = httpApi.nvramGet(["fh_ap_enabled"]).fh_ap_enabled;
if(fh_ap_enabled == "0"){
if(wl_closed == "1")
result = true;
}
}
else{
if(wl_closed == "1")
result = true;
}
}
}
return result;
}();
ap_info["radio_on"] = function(){
if(specific_data.value != undefined)
return (specific_data.value == "1") ? true : false;
else
return true;
}();
ap_info_list.push(ap_info);
ap_list_idx++;
}
});
var ap_current_band_count = {};
var ap_band_total_count = {};
$.each(ap_info_list, function(index, value){
ap_band_total_count[value["type"]] = (ap_band_total_count[value["type"]] || 0) + 1;
});
var set_fronthaul_data_wl = function(_obj, _ap_info){
_obj.find("#fronthaul_connect_title").removeClass().addClass("connect_title horizontal_line");
var type = _ap_info.type;
var band_text = "<#396#> - " + ((type.substr(0,1) == "2") ? "2.4" : type.substr(0,1)) + " GHz";
ap_current_band_count[type] = (ap_current_band_count[type] || 0) + 1;
if(ap_band_total_count[type] > 1)
band_text += "-" + ap_current_band_count[type];
_obj.find("#fronthaul_connect_title").html(band_text);
if(_ap_info.radio_on){
_obj.find("#radio_info").hide();
_obj.find("#fronthaul_mac").html(_ap_info.mac);
if(_ap_info.ssid != ""){
_obj.find("#fronthaul_ssid").html(_ap_info.ssid);
_obj.find("#fronthaul_ssid").attr("title", _ap_info.ssid);
_obj.find(".bubble_icon").hide();
}
else{
_obj.find("#fronthaul_ssid").html("N/A");
_obj.find(".bubble_icon").parent().find(".hover_pop_hint_bg").remove();
var hint_parm = {
"text": "<#64#>",
"css": "ssid_icon"
};
_obj.find(".bubble_icon").removeClass("hover_pop_hint").addClass("hover_pop_hint");
_obj.find(".bubble_icon").after(gen_hint_component(hint_parm));
_obj.find(".bubble_icon").css("display", "inline-block");
}
if(_ap_info.is_dwb){
_obj.find("#bh_info").show();
_obj.find("#fh_info").hide();
var dwb_hint = "* "+ band_text + ' <#53#> <#54#>';
_obj.find("#bh_info #dwb_hint").html(dwb_hint);
_obj.find("#bh_info #dwb_hint").find(".faq-link").removeAttr("onclick").click(function(e){
e = e || event;
e.stopPropagation();
change_wl_unit_status(dwb_info.band);
});
}
else{
_obj.find("#bh_info").hide();
_obj.find("#fh_info").show();
}
if(!conndiag_support)
_obj.find(".conndiag_data").hide();
}
else{
_obj.find("#radio_info").show();
_obj.find("#radio_info .faq-link").unbind("click").click(function(e){
closeAllSelect();
e = e || event;
e.stopPropagation();
control_category_block('manage');
if($("#manage_block").find(".manage_switch_wifi #switch_wifi").hasClass("down"))
$("#manage_block").find(".manage_switch_wifi #switch_wifi").click();
});
_obj.find("#bh_info, #fh_info").hide();
}
};
$.each(ap_info_list, function(index, value){
var ap_info = value;
var $fronthaul_wl_obj = $("#network_block .fronthaul_content").find("#fronthaul_wl_" + ap_info.name + "");
if($fronthaul_wl_obj.length > 0)
set_fronthaul_data_wl($fronthaul_wl_obj, ap_info);
else{
var $fronthaulBg = $("<div>");
$fronthaulBg.addClass("fronthaul_bg");
$fronthaulBg.attr({"id":"fronthaul_wl_" + ap_info.name + ""});
$fronthaulBg.load("/aimesh/aimesh_fronthaul.html", function(){
set_fronthaul_data_wl($(this), ap_info);
});
$("#network_block .fronthaul_content").append($fronthaulBg);
}
});
if(conndiag_support){
var set_fronthaul_traffic_wl = function(_data){
cfg_clientlist_ap_list.forEach(function(item, index, array){
if(_node_info[item] != "" && _node_info[item] != undefined){
var band = item.substr(2).toUpperCase();
var traffic_data_rate = diagnosticApi.get_fronthaul_traffic(_node_info.mac, band, _node_info.online, _data);
var $fronthaulObj = $("#network_block .fronthaul_content").find("#fronthaul_wl_" + item + "");
$fronthaulObj.find(".conndiag_data").show();
var set_traffic_value = function(){
var data_rate_cur_tx = diagnosticApi.transform_unit(traffic_data_rate.data.tx);
$fronthaulObj.find("#data_rate_cur_tx").html(data_rate_cur_tx.rate);
$fronthaulObj.find("#data_rate_cur_tx").next(".transmit_unit").html(data_rate_cur_tx.unit);
var data_rate_avg_tx = diagnosticApi.transform_unit(traffic_data_rate.data.avg_tx);
$fronthaulObj.find("#data_rate_avg_tx").html(data_rate_avg_tx.rate);
$fronthaulObj.find("#data_rate_avg_tx").next(".transmit_unit").html(data_rate_avg_tx.unit);
var data_rate_cur_rx = diagnosticApi.transform_unit(traffic_data_rate.data.rx);
$fronthaulObj.find("#data_rate_cur_rx").html(data_rate_cur_rx.rate);
$fronthaulObj.find("#data_rate_cur_rx").next(".transmit_unit").html(data_rate_cur_rx.unit);
var data_rate_avg_rx = diagnosticApi.transform_unit(traffic_data_rate.data.avg_rx);
$fronthaulObj.find("#data_rate_avg_rx").html(data_rate_avg_rx.rate);
$fronthaulObj.find("#data_rate_avg_rx").next(".transmit_unit").html(data_rate_avg_rx.unit);
};
if($fronthaulObj.find(".conndiag_data").length != 0)
set_traffic_value();
else{
var count = 0;
var interval_check = setInterval(function(){
if($fronthaulObj.find(".conndiag_data").length != 0){
set_traffic_value();
clearInterval(interval_check);
}
else{
count++;
if(count == 10)
clearInterval(interval_check);
}
}, 50);
}
}
});
}
diagnosticApi.get_DB(_node_info.mac, "fronthaul", set_fronthaul_traffic_wl);
}
}
function display_manage_block(){
var remove_node_control = function(){
$("#manage_block").find(".manage_remove_node").show();
$("#manage_block").find(".manage_remove_node .trash_icon").unbind("click");
$("#manage_block").find(".manage_remove_node .trash_icon").click(function(e){
closeAllSelect();
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").empty();
$("#aimesh_hint_msg").append(popup_hint_api.get_component_text());
$("#aimesh_hint_msg").append(popup_hint_api.get_component_action());
var hint = "<#1088#>";
if(specific_node_data.online == "0"){
hint += "<br><br>";
hint += $("<span>").css("color", "#FC0").html("* <#1089#>")[0].outerHTML;
}
$("#aimesh_hint_msg .hint_text").html(hint);
$("#aimesh_hint_msg #action_canacl").show();
$("#aimesh_hint_msg #action_canacl").unbind("click");
$("#aimesh_hint_msg #action_canacl").click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").hide();
});
$("#aimesh_hint_msg #action_ok").show();
$("#aimesh_hint_msg #action_ok").unbind("click");
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
httpApi.nvramSet({
"slave_mac" : specific_node_data.mac,
"action_mode": "reset_default"
});
$("#aimesh_hint_msg").hide();
jstree_select_cap(specific_node_data.mac);
});
$("#aimesh_hint_msg").show();
adjust_panel_block_top("aimesh_hint_msg", 100);
});
};
var specific_node_data = aimesh_data.cfg_clientlist.filter(function(item, index, _array){
return (item.mac == current_click_mac);
})[0];
if(specific_node_data != undefined){
$("#manage_block").show();
var isReNode = (current_click_mac != cap_mac) ? true : false;
var online = (specific_node_data.online == "1") ? true : false;
var re_path = (handle_re_path(specific_node_data.re_path) > 0) ? true : false;
if(isReNode){
if(online && re_path){
$("#manage_block").find(".manage_disconnected").hide();
var connection_priority = manage_get_connection_priority(specific_node_data);
if(connection_priority.support){
$("#manage_block").find(".manage_conn_priority").show();
var $conn_priority_select_obj = $("#manage_block").find(".manage_conn_priority #conn_priority_select");
$conn_priority_select_obj.children().remove().end();
var eap_flag = false;
var support_eth_num = 0;
var conn_priority_hint_array = {
"auto": {
"title":"<#160#>",
"desc":"<#1066#>",
"support":false
},
"eth": {
"title":"<#1067#>",
"desc":"<#1079#> <#1080#>".replace(/#CONNTYPE/g, "<#3771#>"),
"support":false
},
"wifi": {
"title":"<#1074#>",
"desc":"<#1078#>",
"support":false
},
"plc": {
"title":"<#1073#>",
"desc":"<#1079#> <#1080#>".replace(/#CONNTYPE/g, "<#4326#>"),
"support":false
}
};
if(isSupport("amas_eap")){
var amas_eap_bhmode = httpApi.nvramGet(["amas_eap_bhmode"]).amas_eap_bhmode;
if(amas_eap_bhmode != "0" && amas_eap_bhmode != "")
eap_flag = true;
}
var option_array = gen_conn_priority_select_option(specific_node_data, eap_flag);
option_array.forEach(function(item, index, array) {
$conn_priority_select_obj.append($("<option/>").attr({"value": item.value, "conn_type": item.conn_type}).text(item.text));
if(item.conn_type != "auto" && item.conn_type != "wifi")
support_eth_num++;
conn_priority_hint_array[item.conn_type].support = true;
});
if($conn_priority_select_obj.children("option[value="+connection_priority.value+"]").length > 0)
$conn_priority_select_obj.val(connection_priority.value);
else if(connection_priority.value != "3"){
if($conn_priority_select_obj.children("option[value=41]").length > 0)
$conn_priority_select_obj.val("41");
}
if($conn_priority_select_obj.val() == null)//avoiding some value do not exist at select option
$conn_priority_select_obj.val(3);
$conn_priority_select_obj.unbind("change");
$conn_priority_select_obj.change(function() {
var data = new Object();
data.amas_ethernet = $conn_priority_select_obj.val();
manage_set_config(data, specific_node_data.mac);
});
if(!select_node_capability.wans_cap_wan){
$conn_priority_select_obj.children("option[conn_type='eth']").remove();
$conn_priority_select_obj.val(3);
conn_priority_hint_array["eth"]["support"] = false;
}
$("#manage_block").find(".manage_conn_priority").find(".hover_pop_hint_bg").remove();
var conn_priority_hint = "";
$.each(conn_priority_hint_array, function( index, value ) {
if(value["support"]){
if(conn_priority_hint != "")
conn_priority_hint += "<div class='height_space'></div>";
conn_priority_hint += $("<span>").addClass("conn_priority_title").html(value["title"])[0].outerHTML;
conn_priority_hint += "<br>";
conn_priority_hint += $("<span>").addClass("conn_priority_content").html(value["desc"])[0].outerHTML;
}
});
conn_priority_hint += "<div class='height_space'></div>";
conn_priority_hint += $("<span>").addClass("conn_priority_content text_yellow").html("* <#1075#> <#1076#>")[0].outerHTML;
if(eap_flag) {
conn_priority_hint += "<div class='height_space'></div>";
conn_priority_hint += $("<span>").addClass("conn_priority_content text_yellow").html("* <#1069#> <#1070#>")[0].outerHTML;
if(support_eth_num <= "1") {//only one eth
$conn_priority_select_obj.attr("disabled", true);
$conn_priority_select_obj.children("option").removeAttr("selected").filter("[conn_type=eth]:first").prop("selected", true);
}
else
$conn_priority_select_obj.attr("disabled", false);
}
var hint_parm = {
"text": conn_priority_hint,
"css": "conn_priority_icon"
};
$("#manage_block").find(".manage_conn_priority #conn_priority_icon").removeClass("hover_pop_hint").addClass("hover_pop_hint conn_priority_icon");
$("#manage_block").find(".manage_conn_priority #conn_priority_icon").after(gen_hint_component(hint_parm));
}
else{
$("#manage_block").find(".manage_conn_priority #conn_priority_icon").removeClass("hover_pop_hint");
$("#manage_block").find(".manage_conn_priority").find(".hover_pop_hint_bg").remove();
$("#manage_block").find(".manage_conn_priority").hide();
}
if(select_node_capability.preferable_backhaul){
var preferable_backhaul_info = manage_get_preferable_backhaul(specific_node_data);
$(".preferable_backhaul_text").html(preferable_backhaul_info.text);
$("#manage_block").find(".manage_preferable_backhaul").show();
$("#manage_block").find(".manage_preferable_backhaul .preferable_backhaul_icon").unbind("click");
$("#manage_block").find(".manage_preferable_backhaul .preferable_backhaul_icon").click(function(e){
closeAllSelect();
e = e || event;
e.stopPropagation();
manage_set_preferable_backhaul(specific_node_data, preferable_backhaul_info);
});
$("#manage_block").find(".manage_preferable_backhaul").find(".hover_pop_hint_bg").remove();
var prefer_ap_hint = "";
prefer_ap_hint += $("<span>").addClass("prefer_ap_content").html("<#1170#>")[0].outerHTML;
prefer_ap_hint += "<div class='height_space'></div>";
prefer_ap_hint += $("<span>").addClass("prefer_ap_content").html("* <#1171#> <#1172#>")[0].outerHTML;
prefer_ap_hint += "<div class='height_space'></div>";
prefer_ap_hint += "<ul class='list_item'>";
prefer_ap_hint += "<li><#1173#></li>";
prefer_ap_hint += "<li><#1174#> <#1175#></li>";
prefer_ap_hint += "</ul>";
prefer_ap_hint += "<div class='height_space'></div>";
prefer_ap_hint += $("<span>").addClass("prefer_ap_content").html("<#1176#>")[0].outerHTML;
var hint_parm = {
"text": prefer_ap_hint,
"css": "prefer_ap_icon"
};
$("#manage_block").find(".manage_preferable_backhaul #prefer_ap_icon").removeClass("hover_pop_hint").addClass("hover_pop_hint prefer_ap_icon");
$("#manage_block").find(".manage_preferable_backhaul #prefer_ap_icon").after(gen_hint_component(hint_parm));
}
else{
$("#manage_block").find(".manage_preferable_backhaul #prefer_ap_icon").removeClass("hover_pop_hint");
$("#manage_block").find(".manage_preferable_backhaul").find(".hover_pop_hint_bg").remove();
$("#manage_block").find(".manage_preferable_backhaul").hide();
}
var lacp = manage_get_lacp(specific_node_data, select_node_capability);
if(lacp.support){
$("#manage_block").find(".manage_lacp").show();
$("#manage_block").find(".manage_lacp #lacp_select").val(lacp.value);
$("#manage_block").find(".manage_lacp #lacp_select").unbind("change");
$("#manage_block").find(".manage_lacp #lacp_select").change(function() {
var data = new Object();
data.lacp_enabled = $(this).val();
manage_set_config(data, specific_node_data.mac);
if($(this).val() == "1")
$("#manage_block").find(".manage_lacp #lacp_icon").show();
else
$("#manage_block").find(".manage_lacp #lacp_icon").hide();
});
$("#manage_block").find(".manage_lacp").find(".hover_pop_hint_bg").remove();
var hint_parm = {
"text": "<#2829#>",
"css": "lacp_icon"
};
$("#manage_block").find(".manage_lacp #lacp_icon").removeClass("hover_pop_hint").addClass("hover_pop_hint");
$("#manage_block").find(".manage_lacp #lacp_icon").after(gen_hint_component(hint_parm));
if(lacp.value == "1")
$("#manage_block").find(".manage_lacp #lacp_icon").show();
else
$("#manage_block").find(".manage_lacp #lacp_icon").hide();
}
else{
$("#manage_block").find(".manage_lacp #lacp_icon").removeClass("hover_pop_hint");
$("#manage_block").find(".manage_lacp").find(".hover_pop_hint_bg").remove();
$("#manage_block").find(".manage_lacp").hide();
}
if(select_node_capability.usb){
$("#manage_block").find(".manage_usb_app").show();
$("#manage_block").find(".manage_usb_app #usb_app").unbind("click");
$("#manage_block").find(".manage_usb_app #usb_app").click(function(e){
closeAllSelect();
e = e || event;
e.stopPropagation();
var url = httpApi.aimesh_get_win_open_url(specific_node_data, "APP_Installation.asp");
var window_width = 780;
var window_height = 650;
var window_top = screen.availHeight / 2 - window_height / 2;
var window_left = screen.availWidth / 2 - window_width / 2;
window.open(url, '_new' ,'width=' + window_width + ',height=' + window_height + ', top=' + window_top + ',left=' + window_left + ',menubar=no,scrollbars=yes,toolbar=no,resizable=no,status=no,location=no');
});
}
else
$("#manage_block").find(".manage_usb_app").hide();
if(select_node_capability.switchctrl){
$("#manage_block").find(".manage_switch_ctrl").show();
$("#manage_block").find(".manage_switch_ctrl #switch_ctrl").unbind("click");
$("#manage_block").find(".manage_switch_ctrl #switch_ctrl").click(function(e){
closeAllSelect();
e = e || event;
e.stopPropagation();
var url = httpApi.aimesh_get_win_open_url(specific_node_data, "Advanced_SwitchCtrl_Content.asp");
var window_width = 780;
var window_height = 440;
var window_top = screen.availHeight / 2 - window_height / 2;
var window_left = screen.availWidth / 2 - window_width / 2;
window.open(url, '_new' ,'width=' + window_width + ',height=' + window_height + ', top=' + window_top + ',left=' + window_left + ',menubar=no,scrollbars=yes,toolbar=no,resizable=no,status=no,location=no');
});
}
else
$("#manage_block").find(".manage_switch_ctrl").hide();
if(select_node_capability.manual_reconn){
$("#manage_block").find(".manage_reconnect_node").show();
$("#manage_block").find(".manage_reconnect_node .reconnect_icon").unbind("click");
$("#manage_block").find(".manage_reconnect_node .reconnect_icon").click(function(e){
closeAllSelect();
e = e || event;
e.stopPropagation();
manage_set_reconnect_control(specific_node_data);
});
}
else
$("#manage_block").find(".manage_reconnect_node").hide();
if(select_node_capability.manual_reboot){
$("#manage_block").find(".manage_reboot_node").show();
$("#manage_block").find(".manage_reboot_node .reboot_icon").unbind("click");
$("#manage_block").find(".manage_reboot_node .reboot_icon").click(function(e){
closeAllSelect();
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").empty();
$("#aimesh_hint_msg").append(popup_hint_api.get_component_text());
$("#aimesh_hint_msg").append(popup_hint_api.get_component_action());
$("#aimesh_hint_msg .hint_text").html("<#65#>");
$("#aimesh_hint_msg #action_canacl").show();
$("#aimesh_hint_msg #action_canacl").unbind("click");
$("#aimesh_hint_msg #action_canacl").click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").hide();
});
$("#aimesh_hint_msg #action_ok").show();
$("#aimesh_hint_msg #action_ok").unbind("click");
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
httpApi.nvramSet({
"device_list" : (specific_node_data.mac).toUpperCase(),
"action_mode": "device_reboot"
});
$("#aimesh_hint_msg").hide();
});
$("#aimesh_hint_msg").show();
adjust_panel_block_top("aimesh_hint_msg", 100);
});
}
else
$("#manage_block").find(".manage_reboot_node").hide();
remove_node_control();
var led_control = manage_get_led_control(specific_node_data, select_node_capability);
$("#manage_block").find(".manage_switch_led").hide();
$("#manage_block").find(".manage_slider_led").hide();
switch(led_control.support){
case "central_led":
var color_table = ["#c6dafc", "#7baaf7", "#4285f4", "#3367d6"];
$("#manage_block").find("#led_slider").slider({
orientation: "horizontal",
range: "min",
min: 1,
max: 4,
value: (led_control.value + 1),
slide: function(event, ui) {
$("#manage_block").find("#led_slider").find(".ui-slider-range").css("background-color", color_table[ui.value-1]);
},
stop: function(event, ui) {
var data = new Object();
data.bc_ledLv = (ui.value - 1);
manage_set_config(data, specific_node_data.mac);
}
});
$("#manage_block").find(".manage_slider_led").show();
break;
case "lp55xx_led":
case "ctrl_led":
var led_status = "off";
if(led_control.support == "lp55xx_led")
led_status = (led_control.value == 0) ? "on" : "off";
else if(led_control.support == "ctrl_led")
led_status = (led_control.value == 1) ? "on" : "off";
$("#manage_block").find(".manage_switch_led .switch").removeClass().addClass("switch");
$("#manage_block").find(".manage_switch_led .switch").addClass(led_status);
$("#manage_block").find(".manage_switch_led .switch").unbind("click");
$("#manage_block").find(".manage_switch_led .switch").click(function(){
$("#manage_block").find(".manage_switch_led .switch").toggleClass('off on');
var switch_status = $("#manage_block").find(".manage_switch_led .switch").hasClass("on");
if(switch_status){
var data = new Object();
if(led_control.support == "lp55xx_led"){
data.lp55xx_lp5523_user_enable = 0;
data.lp55xx_lp5523_user_col = 0;
data.lp55xx_lp5523_user_beh = 0;
}
else if(led_control.support == "ctrl_led")
data.led_val = 1;
manage_set_config(data, specific_node_data.mac);
}
else{
var data = new Object();
if(led_control.support == "lp55xx_led"){
data.lp55xx_lp5523_user_enable = 1;
data.lp55xx_lp5523_user_col = 101;
data.lp55xx_lp5523_user_beh = 300;
}
else if(led_control.support == "ctrl_led")
data.led_val = 0;
manage_set_config(data, specific_node_data.mac);
}
});
$("#manage_block").find(".manage_switch_led").show();
break;
}
var wifi_radio_control = manage_get_wifi_radio_control(specific_node_data, select_node_capability);
if(wifi_radio_control.length == 0)
$("#manage_block").find(".manage_switch_wifi").hide();
else {
if($("#manage_block").find(".manage_switch_wifi .manage_sub_item_bg").attr("current_mac") != current_click_mac){
$("#manage_block").find(".manage_switch_wifi .manage_sub_item_bg").hide();
$("#manage_block").find(".manage_switch_wifi #switch_wifi").unbind("click").removeClass("down up").addClass("down");
$("#manage_block").find(".manage_switch_wifi #switch_wifi").click(function(){
$("#manage_block").find(".manage_switch_wifi .manage_sub_item_bg").slideToggle();
$("#manage_block").find(".manage_switch_wifi #switch_wifi").toggleClass("down up");
});
}
$("#manage_block").find(".manage_switch_wifi").show();
$("#manage_block").find(".manage_switch_wifi .manage_sub_item_bg").empty().removeClass("loading").attr("current_mac", current_click_mac);
var wl_radio_enable_count = 0;
$.each(wifi_radio_control, function( index, value ) {
var item = value;
wl_radio_enable_count += ((item.value == 1) ? 1 : 0);
var $wifi_item_bg = $("<div>");
var $title = $("<div>");
$title.appendTo($wifi_item_bg);
$title.addClass("manage_common_title manage_common_separate_bg left").html($("<span>").addClass("wifi_title").html(item.text)[0].outerHTML);
var $setting_bg = $("<div>");
$setting_bg.appendTo($wifi_item_bg);
$setting_bg.addClass("manage_common_separate_bg right");
var $switch_ctl = $("<div>");
$switch_ctl.appendTo($setting_bg);
$switch_ctl.addClass("switch");
$("#manage_block").find(".manage_switch_wifi .manage_sub_item_bg").append($wifi_item_bg);
$switch_ctl.addClass(((item.value == 1) ? "on" : "off"));
$switch_ctl.unbind("click");
$switch_ctl.click(function(e){
closeAllSelect();
e = e || event;
e.stopPropagation();
var apply_rule = function(){
$switch_ctl.toggleClass('off on');
var data = new Object();
data["wl" + item.idx + "_radio"] = ($switch_ctl.hasClass("on") ? 1 : 0);
manage_set_config(data, specific_node_data.mac);
$title.find(".wifi_title").addClass("loading");
$("#manage_block").find(".manage_switch_wifi .manage_sub_item_bg").addClass("loading");
};
var switch_status = $switch_ctl.hasClass("on");
if(switch_status){
$("#aimesh_hint_msg").empty();
$("#aimesh_hint_msg").append(popup_hint_api.get_component_text());
$("#aimesh_hint_msg").append(popup_hint_api.get_component_action());
var hint = "<#1205#>";
if(wl_radio_enable_count == 1){
hint += "<br><br>";
hint += $("<span>").css("color", "#FC0").html("<#1206#>")[0].outerHTML;
hint += "<br>";
hint += "<#1130#>";
}
hint += "<br><br>";
hint += "<#3178#>";
$("#aimesh_hint_msg .hint_text").html(hint);
$("#aimesh_hint_msg #action_canacl").show();
$("#aimesh_hint_msg #action_canacl").unbind("click");
$("#aimesh_hint_msg #action_canacl").click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").hide();
});
$("#aimesh_hint_msg #action_ok").show();
$("#aimesh_hint_msg #action_ok").unbind("click");
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
apply_rule();
$("#aimesh_hint_msg").hide();
});
$("#aimesh_hint_msg").show();
adjust_panel_block_top("aimesh_hint_msg", 100);
}
else
apply_rule();
});
});
}
}
else{
$("#manage_block").find(".manage_disconnected").show();
$("#manage_block").find(".manage_function_item").hide();
remove_node_control();
}
}
else{
$("#manage_block").find(".manage_disconnected, .manage_function_item").hide();
if(isSupport("led_ctrl_cap")){
$("#manage_block").find(".manage_switch_led").show();
var led_status = (httpApi.nvramGet(["led_val"]).led_val == 1) ? "on" : "off";
$("#manage_block").find(".manage_switch_led .switch").removeClass().addClass("switch " + led_status + "")
.unbind("click").click(function(){
$("#manage_block").find(".manage_switch_led .switch").toggleClass('off on');
var switch_status = ($(this).hasClass("on")) ? "1" : "0";
httpApi.nvramSet({
"led_val" : switch_status,
"rc_service": "ctrl_led",
"action_mode": "apply"
}, function(){
httpApi.nvramGet(["led_val"], true);
});
});
}
}
}
else
$("#manage_block").hide();
}
function manage_get_led_control(_node_info, _node_capability){
var result = {"support": 0, "value": 0};
if(_node_capability.central_led) {
result.support = "central_led";
if("config" in _node_info) {//led value
if("central_led" in _node_info.config) {
if("bc_ledLv" in _node_info.config.central_led)
result.value = parseInt(_node_info.config.central_led.bc_ledLv);
}
}
}
else if(_node_capability.lp55xx_led) {
result.support = "lp55xx_led";
if("lp55xx_led" in _node_info.config) {
if("lp55xx_lp5523_user_enable" in _node_info.config.lp55xx_led)
result.value = parseInt(_node_info.config.lp55xx_led.lp55xx_lp5523_user_enable);
}
}
else if(_node_capability.led_on_off) {
result.support = "ctrl_led";
if("ctrl_led" in _node_info.config) {
if("led_val" in _node_info.config.ctrl_led)
result.value = parseInt(_node_info.config.ctrl_led.led_val);
}
}
if(isNaN(result.value))
result.value = 0;
return result;
}
function manage_get_connection_priority(_node_info){
var result = {"support": 0, "value": 3};//3:auto,2:eth
if("config" in _node_info) {
if("backhalctrl" in _node_info.config) {
if("amas_ethernet" in _node_info.config.backhalctrl) {
result.support = 1;
result.value = _node_info.config.backhalctrl.amas_ethernet;
}
}
}
return result;
}
function manage_get_wifi_radio_control(_node_info, _node_capability){
var wifi_radio_attr = function(){
this.text = "";
this.value = 0;
this.idx = 0;
this.ap_name = "";
};
var result = [];
if(_node_info.band_info){
$.each(_node_info.band_info, function(index, value){
var wifi_radio_ctl_idx = "";
var wl_real_unit = value["unit"];
var wl_band_text = "";
var ap_name = "";
switch(index){
case "0":
wifi_radio_ctl_idx = "0";
wl_band_text = "2.4 GHz";
ap_name = "ap2g";
break;
case "1":
wifi_radio_ctl_idx = "1";
wl_band_text = "5 GHz";
ap_name = "ap5g";
break;
case "2":
wifi_radio_ctl_idx = "1";
wl_band_text = "5 GHz-1";
ap_name = "ap5g";
break;
case "3":
wifi_radio_ctl_idx = "2";
wl_band_text = "5 GHz-2";
ap_name = "ap5g1";
break;
case "4":
wifi_radio_ctl_idx = "3";
wl_band_text = "6 GHz";
ap_name = "ap6g";
break;
}
if(_node_capability["wifi_radio_" + wifi_radio_ctl_idx + ""]) {
if("wireless" in _node_info.config) {
if("wl" + wl_real_unit + "_radio" in _node_info.config.wireless) {
var wl_radio = parseInt(_node_info.config.wireless["wl" + wl_real_unit + "_radio"]);
if(isNaN(wl_radio))
wl_radio = 0;
var wifi_radio_obj = new wifi_radio_attr();
wifi_radio_obj.value = wl_radio;
wifi_radio_obj.idx = wl_real_unit;
wifi_radio_obj.text = wl_band_text;
wifi_radio_obj.ap_name = ap_name;
result.push(JSON.parse(JSON.stringify(wifi_radio_obj)));
}
}
}
});
}
else{
var cfg_clientlist_ap_list = ["ap2g", "ap5g", "ap5g1", "ap6g"];
var wl_if = [0, 1, 2, 3];
if(_node_capability.wifi_radio) {
var set_wl_if_obj = function(_wl_if){
if(_node_capability["wifi_radio_" + _wl_if + ""]) {
if("wireless" in _node_info.config) {
if("wl" + _wl_if + "_radio" in _node_info.config.wireless) {
var wl_radio = parseInt(_node_info.config.wireless["wl" + _wl_if + "_radio"]);
if(isNaN(wl_radio))
wl_radio = 0;
var wifi_radio_obj = new wifi_radio_attr();
wifi_radio_obj.value = wl_radio;
wifi_radio_obj.idx = _wl_if;
wifi_radio_obj.ap_name = cfg_clientlist_ap_list[_wl_if];
result.push(JSON.parse(JSON.stringify(wifi_radio_obj)));
}
}
}
};
$.each(wl_if, function( index, value ) {
set_wl_if_obj(value);
});
}
var ap_band_total_count = {};
var ap_info_list = [];
cfg_clientlist_ap_list.forEach(function(item, index, array){
if(_node_capability["wifi_radio_" + index + ""]){
var ap_info = {"type":""};
ap_info["type"] = item.substr(2,2);
ap_info_list.push(ap_info);
}
else if(_node_capability["wifi_radio_" + index + ""] == undefined){//if no capability 22
if(_node_info[item] != "" && _node_info[item] != undefined){
var ap_info = {"type":""};
ap_info["type"] = item.substr(2,2);
ap_info_list.push(ap_info);
}
}
});
$.each(ap_info_list, function(index, value){
ap_band_total_count[value["type"]] = (ap_band_total_count[value["type"]] || 0) + 1;
});
if(result.length > 0){
var wl_idx = 0;
$.each(ap_band_total_count, function(index, value){
var band = index;
var band_text = ((band.substr(0,1) == "2") ? "2.4" : band.substr(0,1)) + " GHz";
if(ap_band_total_count[band] > 1){
for(var i = 0; i < ap_band_total_count[band]; i += 1){
var band_idx = (i + 1);
if(result[wl_idx] != undefined)
result[wl_idx]["text"] = band_text + "-" + band_idx;
wl_idx++;
}
}
else{
if(result[wl_idx] != undefined)
result[wl_idx]["text"] = band_text;
wl_idx++;
}
});
}
}
return result;
}
var interval_reconnect = false;
var re_reconnect_flag = "";
function manage_set_reconnect_control(_node_info){
re_reconnect_flag = "";
clearInterval(interval_reconnect);
var nvramSet_obj = {"action_mode": "re_reconnect"};
var check_format = false;
var never_ask = false;
var re_reconnect_mode = "";
var timeout = 5;
var count = 10;
var show_eth_backhaul_hint = false;
var show_hint = function(_hint){
$("#aimesh_hint_msg").empty();
$("#aimesh_hint_msg").append(popup_hint_api.get_component_text());
$("#aimesh_hint_msg").append(popup_hint_api.get_component_action());
$("#aimesh_hint_msg .hint_text").html(_hint);
$("#aimesh_hint_msg #action_canacl").hide();
$("#aimesh_hint_msg #action_ok").show();
$("#aimesh_hint_msg #action_ok").unbind("click");
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").hide();
});
$("#aimesh_hint_msg").show();
adjust_panel_block_top("aimesh_hint_msg", 100);
};
if(aimesh_data.cfg_clientlist.length == "1"){
var hint = "<#1167#>";
show_hint(hint);
return false;
}
if(_node_info == "all"){
re_reconnect_flag = "all";
re_reconnect_mode = "all";
check_format = true;
if(cookie.get("AiMesh_never_ask_optimization") == "1")
never_ask = true;
show_eth_backhaul_hint = all_node_is_eth_backhaul;
}
else if(validator.mac_addr(_node_info.mac)){
re_reconnect_flag = _node_info.mac;
re_reconnect_mode = "node";
check_format = true;
nvramSet_obj.device_list = _node_info.mac.toUpperCase();
never_ask = true;
if(_node_info.re_path == "1" || _node_info.re_path == "16" || _node_info.re_path == "32" || _node_info.re_path == "64")
show_eth_backhaul_hint = true;
}
if(show_eth_backhaul_hint){
var hint = "Currently your AiMesh system is built with hardwired connection. This function helps to optimize your network only when using a wireless connection.";/* untranslated */
show_hint(hint);
re_reconnect_flag = "";
return false;
}
if(check_format){
var apply_and_loading = function(_second){
httpApi.nvramSet(nvramSet_obj);
showLoading();
var hint = "<#1164#> <#1165#> <#513#>";
if(re_reconnect_mode == "node")
hint = "<#1166#> <#513#>".replace("#MODELNAME", _node_info.ui_model_name);
$("#proceeding_main_txt").html(hint);
setTimeout(hideLoading, 1000*_second);
var time = 0;
setTimeout(function(){
jstree_refresh();
interval_reconnect = setInterval(function(){
if(time >= count){
re_reconnect_flag = "";
clearInterval(interval_reconnect);
}
jstree_refresh();
time++;
},5000);
}, 1000*_second);
};
if(never_ask)
apply_and_loading(timeout);
else{
$("#aimesh_hint_msg").empty();
$("#aimesh_hint_msg").append(popup_hint_api.get_component_text());
$("#aimesh_hint_msg").append(popup_hint_api.get_component_action());
var hint = "<#1162#> <#1163#> <#1014#>";
if(re_reconnect_mode == "node")
hint = "Your " + _node_info.ui_model_name + " is going to reconnect to your AiMesh system.";/* untranslated */
$("#aimesh_hint_msg .hint_text").append($("<div>").css("margin-bottom", "10px").html(hint));
var $never_ask_element = $("<div>");
$never_ask_element.append($("<input/>").attr({"type":"checkbox", "id":"never_ask_reconnect"}));
$never_ask_element.append($("<label>").attr({"for":"never_ask_reconnect"}).css({"top":"-2px", "position":"relative","font-size":"14px"}).html("<#1177#>"));
$("#aimesh_hint_msg .hint_text").append($never_ask_element);
$("#aimesh_hint_msg #action_canacl").show();
$("#aimesh_hint_msg #action_canacl").unbind("click");
$("#aimesh_hint_msg #action_canacl").click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").hide();
re_reconnect_flag = "";
});
$("#aimesh_hint_msg #action_ok").show();
$("#aimesh_hint_msg #action_ok").unbind("click");
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
if($("#aimesh_hint_msg").find("#never_ask_reconnect").prop("checked")){
if(re_reconnect_mode == "all")
cookie.set("AiMesh_never_ask_optimization", 1, 365);
else if(re_reconnect_mode == "node")
cookie.set("AiMesh_never_ask_reconnect_node", 1, 365);
}
apply_and_loading(timeout);
$("#aimesh_hint_msg").hide();
});
$("#aimesh_hint_msg").show();
adjust_panel_block_top("aimesh_hint_msg", 100);
}
}
}
function manage_get_bind_control(_node_capability, _isReNode){
var result = false;
if(_isReNode) {
if(_node_capability.manual_sta_binding != undefined)
result = (_node_capability.manual_sta_binding == undefined) ? false: _node_capability.manual_sta_binding;
}
else {
if(isSupport("sta_ap_bind"))
result = true;
}
return result;
}
function manage_get_lacp(_node_info, _node_capability){
var result = {"support": false, "value": 0};
var lacp = _node_capability.lacp;
if(lacp)
result.support = true;
if("config" in _node_info) {
if("link_aggregation" in _node_info.config) {
if("lacp_enabled" in _node_info.config.link_aggregation) {
result.value = parseInt(_node_info.config.link_aggregation.lacp_enabled);
}
}
}
if(isNaN(result.value))
result.value = 0;
return result;
}
function manage_set_config(_data, _nodeMac) {
httpApi.nvramSet({
"config" : JSON.stringify(_data),
"re_mac" : _nodeMac,
"action_mode": "config_changed"
}, function(){
setTimeout(function(){
jstree_refresh();
},1000);
}());
}
function manage_get_preferable_backhaul(_node_info){
var result = {"text": "<#160#>", "pref_mac": "", "pref_node_exist":false};
if("config" in _node_info) {
if("prefer_ap" in _node_info.config) {
if("amas_wlc_target_bssid" in _node_info.config.prefer_ap) {
result.pref_mac = _node_info.config.prefer_ap.amas_wlc_target_bssid.replace("<", "");
var specific_node_data = aimesh_data.cfg_clientlist.filter(function(item, index, _array){
return (item.mac == result.pref_mac);
})[0];
if(specific_node_data != undefined){
result.text = handle_ui_model_name(specific_node_data.model_name, specific_node_data.ui_model_name);
result.pref_node_exist = true;
}
}
}
}
return result;
}
function manage_set_preferable_backhaul(_node_info, _pref_info){
closeAllPopup();
$("#aimesh_hint_msg").empty();
$("#aimesh_hint_msg").append(popup_hint_api.get_component_text());
$("#aimesh_hint_msg").append(popup_hint_api.get_component_action());
var node_location_info = transform_location(_node_info.mac, _node_info);
var node_name_location = handle_ui_model_name(_node_info.model_name, _node_info.ui_model_name) + " (" + node_location_info.location_text + ")";
if(isSupport("amas_eap")){
var amas_eap_bhmode = httpApi.nvramGet(["amas_eap_bhmode"]).amas_eap_bhmode;
if(amas_eap_bhmode != "0" && amas_eap_bhmode != ""){
var hint = "<#1197#>".replace("#MODELNAME", node_name_location) + "<br><#1198#><#1199#>";
$("#aimesh_hint_msg .hint_text").append($("<div>").addClass("notice_text").html(hint));
$("#aimesh_hint_msg").show();
$("#aimesh_hint_msg #action_canacl").hide();
$("#aimesh_hint_msg #action_ok").show();
$("#aimesh_hint_msg #action_ok").unbind("click");
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").hide();
});
adjust_panel_block_top("aimesh_hint_msg", 100);
return;
}
}
var hint = "<#1169#>".replace("#MODELNAME", node_name_location);
$("#aimesh_hint_msg .hint_text").append($("<div>").addClass("notice_text").html(hint));
if(_pref_info.pref_mac != "" && !_pref_info.pref_node_exist)
$("#aimesh_hint_msg .hint_text").append($("<div>").addClass("notice_text hint").html("* <#1193#>"));
var $auto_info = $("<div>");
$auto_info.addClass("notice_text horizontal_line")
$auto_info.css("cursor", "pointer");
$auto_info.unbind("click");
$auto_info.click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg .hint_text .custom_radio_label").removeClass("checked");
$(this).find(".custom_radio_label").addClass("checked");
});
$auto_info.append( $("<span>").addClass("notice_text_blue model_info no_location").html("<#160#>"));
var $auto_check = $("<div>").addClass("custom_radio_bg no_location").append($("<span>").addClass("custom_radio_label"));
$auto_check.attr({"id":"auto"});
$auto_info.append($auto_check);
if(!_pref_info.pref_node_exist)
$auto_check.find(".custom_radio_label").addClass("checked");
$("#aimesh_hint_msg .hint_text").append($auto_info);
var gen_node_component = function(_each_node_info, _each_node_pref_info){
var node_location_info = transform_location(_each_node_info.mac, _each_node_info);
var $model_info = $("<div>");
$model_info.addClass("notice_text horizontal_line")
$model_info.css("cursor", "pointer");
$model_info.unbind("click");
$model_info.click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg .hint_text .custom_radio_label").removeClass("checked");
$(this).find(".custom_radio_label").addClass("checked");
});
var $model_name = $("<span>").addClass("notice_text_blue model_info").html(handle_ui_model_name(_each_node_info.model_name, _each_node_info.ui_model_name));
if(_each_node_info.online == "0")
$model_name.append($("<span>").addClass("model_info offline").html("(<#1561#>)"));
$model_info.append($model_name);
$model_info.append("<br>");
var $model_location = $("<span>").addClass("notice_text_location model_info").html(node_location_info.location_text);
$model_info.append($model_location);
var $model_check = $("<div>").addClass("custom_radio_bg").append($("<span>").addClass("custom_radio_label"));
var id = "node_id_" + _each_node_info.mac.replace(/:/g, '-');
$model_check.attr({"id":id, "mac":_each_node_info.mac, "ap2g":_each_node_info.ap2g,"ap5g":_each_node_info.ap5g,"ap5g1":_each_node_info.ap5g1});
$model_info.append($model_check);
if(_each_node_pref_info.pref_node_exist && _each_node_pref_info.pref_mac == _each_node_info.mac)
$model_check.find(".custom_radio_label").addClass("checked");
$("#aimesh_hint_msg .hint_text").append($model_info);
};
var offline_node = [];
aimesh_data.cfg_clientlist.forEach(function(item, index, array){
if(item.mac == _node_info.mac)
return;
if(item.online == "0"){
offline_node.push(item);
return;
}
gen_node_component(item, _pref_info);
});
offline_node.forEach(function(item, index, array){
gen_node_component(item, _pref_info);
});
$("#aimesh_hint_msg #action_canacl").show();
$("#aimesh_hint_msg #action_canacl").unbind("click");
$("#aimesh_hint_msg #action_canacl").click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").hide();
});
$("#aimesh_hint_msg #action_ok").show();
$("#aimesh_hint_msg #action_ok").unbind("click");
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
var $mask_bg = popup_hint_api.get_component_mask();
$mask_bg.append(popup_hint_api.get_component_loading());
$mask_bg.find(".cssload-bellContainer").addClass("center");
$("#aimesh_hint_msg").append($mask_bg);
var current_node_mac = (_node_info.mac).toUpperCase();
var target_mac = $("#aimesh_hint_msg .hint_text .custom_radio_label.checked").parent().attr('id').replace("node_id_", "").replace(/-/g, ':').toUpperCase();
var target_ap2g = "";
var target_ap5g = "";
var target_ap5g1 = "";
if(target_mac == "AUTO")
target_mac = "";
else{
target_ap2g = $("#aimesh_hint_msg .hint_text .custom_radio_label.checked").parent().attr('ap2g').toUpperCase();
target_ap5g = $("#aimesh_hint_msg .hint_text .custom_radio_label.checked").parent().attr('ap5g').toUpperCase();
target_ap5g1 = $("#aimesh_hint_msg .hint_text .custom_radio_label.checked").parent().attr('ap5g1').toUpperCase();
}
if(select_node_capability.prefer_node_apply){
httpApi.nvramSet({
"target_bssid" : target_mac,
"re_mac" : current_node_mac,
"action_mode": "prefer_node_apply"
}, function(){
setTimeout(function(){
jstree_refresh();
},1000);
}());
}
else{
var data = new Object();
data.amas_wlc_target_bssid = ((target_mac == "") ? "" : ("<" + target_mac));
data.amas_wlc0_target_bssid = ((target_ap2g == "") ? "" : ("<" + target_ap2g));
data.amas_wlc1_target_bssid = ((target_ap5g == "") ? "" : ("<" + target_ap5g));
data.amas_wlc2_target_bssid = ((target_ap5g1 == "") ? "" : ("<" + target_ap5g1));
manage_set_config(data, current_node_mac);
}
setTimeout(function(){
if($("#aimesh_hint_msg").css("display") == "none")
return false;
$("#aimesh_hint_msg").empty();
$("#aimesh_hint_msg").append(popup_hint_api.get_component_text());
$("#aimesh_hint_msg").append(popup_hint_api.get_component_action());
$("#aimesh_hint_msg .hint_text").append($("<div>").html("<#384#>!"));
if(target_mac == "")
$("#aimesh_hint_msg .hint_text").append($("<div>").html("<#1194#>"));
else{
var re = /#MODELNAME/g;
var str = "Your #MODELNAME and its end devices will lose connection temporarily. <#1195#> <#1196#>";/* untranslated */
var hint = str.replace(re, node_name_location);
$("#aimesh_hint_msg .hint_text").append($("<div>").html(hint));
}
$("#aimesh_hint_msg #action_canacl").hide();
$("#aimesh_hint_msg #action_ok").show();
$("#aimesh_hint_msg #action_ok").unbind("click");
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").hide();
});
}, 1000);
});
$("#aimesh_hint_msg").show();
adjust_panel_block_top("aimesh_hint_msg", 100);
}
var cloudRouterIconCheckCache = new Array();
function cloud_router_icon_set(_image_url){
$(".primary_info_bg").find(".model_icon").removeClass("web");
if(_image_url != ""){
$(".primary_info_bg").find(".model_icon").addClass("web");
$(".primary_info_bg").find(".model_icon").css("background-image", "url(" + _image_url + ")");
}
else
$(".primary_info_bg").find(".model_icon").css("background-image", "");
}
function cloud_router_icon_get(_model_info) {
var cloudModelName = "";
if(_model_info.cloudModelName != undefined && _model_info.cloudModelName != "")
cloudModelName = _model_info.cloudModelName;
else
cloudModelName = httpApi.transformCloudModelName(_model_info);
if(!cloudRouterIconCheckCache[cloudModelName]) {
httpApi.checkCloudModelIcon(
_model_info,
function(src){
cloudRouterIconCheckCache[cloudModelName] = src;
cloud_router_icon_set(src);
},
function(){
cloudRouterIconCheckCache[cloudModelName] = false;
cloud_router_icon_set("");
}
);
}
}
function set_primary_info(_node_info){
var model_name = _node_info.model_name;
var ui_model_name = _node_info.ui_model_name;
var mac = _node_info.mac;
var node_location_text = "Home";
var fwver = _node_info.fwver;
var newfwver = _node_info.newfwver;
var re_path = _node_info.re_path;
var alias = _node_info.alias;
var tcode = _node_info.tcode;
var $model_name = $("<span>");
$model_name.html(handle_ui_model_name(model_name, ui_model_name));
$(".primary_info_bg").find("#model_name").html($model_name);
if(node_not_support_feature[mac].length > 0) {
$model_name.addClass("node_feature_notice");
var hint = "<#1148#> <#1149#> <#1150#>";
hint += "<ul class='list_item'>";
$.each(node_not_support_feature[mac], function( index, value ) {
hint += "<li>" + value + "</li>";
});
hint += "</ul>";
var hint_parm = {
"text": hint,
"css": "node_feature_notice"
};
$model_name.removeClass("hover_pop_hint").addClass("hover_pop_hint");
$model_name.after(gen_hint_component(hint_parm));
}
$(".primary_info_bg").find("#mac").html(mac);
$(".primary_info_bg").find(".fw_version_text").empty();
var $fw_version = $("<span>");
$fw_version.html(fwver.split('-')[0]);
$(".primary_info_bg").find(".fw_version_text").append($fw_version);
$fw_version.unbind("click");
$fw_version.click(function(){
parent.window.location.href = "/Advanced_FirmwareUpgrade_Content.asp";
});
if(newfwver != "" && fwver != newfwver){
var $fw_icon = $("<span>");
$fw_icon.addClass("bubble_icon warn_grey fw_icon hover_pop_hint");
$fw_icon.unbind("click");
$fw_icon.click(function(e){
e = e || event;
e.stopPropagation();
});
$(".primary_info_bg").find(".fw_version_text").append($fw_icon);
$(".primary_info_bg").find(".fw_version_text_bg").find(".hover_pop_hint_bg").remove();
var hint_parm = {
"text": "<#2174#>",
"css": "fw_icon"
};
$(".primary_info_bg").find(".fw_version_text_bg .fw_icon").after(gen_hint_component(hint_parm));
}
else
$(".primary_info_bg").find(".fw_version_text_bg").find(".hover_pop_hint_bg").remove();
var isReNode = (mac != cap_mac) ? true : false;
if(isReNode){
$(".primary_info_bg").find(".item_bg.signal").show();
var _signal_quality = get_connect_quality(_node_info);
var signal_quality_hint = "";
$(".primary_info_bg #signal_quality").html(_signal_quality.quality_text);
$(".primary_info_bg #signal_quality").attr("title", _signal_quality.quality_text);
$(".primary_info_bg #signal_quality").removeClass().addClass("signal_text_bg signal " + _signal_quality.css + "");
if(_signal_quality.quality == 0 || _signal_quality.quality == 1){
switch(_signal_quality.quality){
case 0 :
signal_quality_hint = "<#61#>";
break;
case 1 :
if(_signal_quality.type == "wireless")
signal_quality_hint = "<#60#><br><#62#>";
else
signal_quality_hint = "<#62#>";
signal_quality_hint += "<br>";
signal_quality_hint += "<a id='signal_quality_faq' href='' target='_blank' style='text-decoration:underline;'>FAQ.</a>";
break;
}
$(".primary_info_bg .signal_icon").unbind("click");
$(".primary_info_bg .signal_icon").click(function(e){
closeAllSelect();
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").empty();
$("#aimesh_hint_msg").append(popup_hint_api.get_component_text());
$("#aimesh_hint_msg").append(popup_hint_api.get_component_action());
$("#aimesh_hint_msg .hint_text").html(signal_quality_hint).promise().done(function(){
$("#aimesh_hint_msg .hint_text #signal_quality_faq").attr("href", faq_href1);
});
$("#aimesh_hint_msg #action_canacl").hide();
$("#aimesh_hint_msg #action_ok").show();
$("#aimesh_hint_msg #action_ok").unbind("click");
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").hide();
});
$("#aimesh_hint_msg").show();
adjust_panel_block_top("aimesh_hint_msg", 100);
});
$(".primary_info_bg .signal_hint_text .signal_icon").show();
}
else
$(".primary_info_bg .signal_hint_text .signal_icon").hide();
$(".primary_info_bg").find(".custom_select").show();
if("config" in _node_info) {
if("misc" in _node_info.config) {
if("cfg_alias" in _node_info.config.misc) {
if(_node_info.config.misc.cfg_alias != "")
node_location_text = _node_info.config.misc.cfg_alias;
}
}
}
set_custom_select_value(node_location_text);
}
else{
$(".primary_info_bg").find(".item_bg.signal").hide();
if(alias != mac)
node_location_text = alias;
set_custom_select_value(node_location_text);
}
if(_node_info.online == "1"){
$(".primary_info_bg").find(".custom_select .custom_select_selected").show();
$(".primary_info_bg").find(".custom_select .custom_pure_text").hide();
}
else{
$(".primary_info_bg").find(".custom_select .custom_select_selected").hide();
$(".primary_info_bg").find(".custom_select .custom_pure_text").show();
$(".primary_info_bg").find(".custom_select #input_location").attr("disabled", true);
}
}
function set_change_model_icon(_node_info){
var model_name = _node_info.model_name;
var $model_icon = $(".primary_info_bg").find(".model_icon");
if(multi_model_icon_array.hasOwnProperty(model_name)){
var mac = _node_info.mac;
var tcode = _node_info.tcode;
var cobrand = httpApi.aimesh_get_misc_info(_node_info).cobrand;
var model_icon_list = multi_model_icon_array[model_name];
$model_icon.attr("idx", 0);
var current_model_icon = _node_info.icon_model_name;
$.each(model_icon_list, function(index, value){
if(current_model_icon == value){
$model_icon.attr("idx", index);
return false;
}
});
$model_icon.find(".model_icon_exchange").show();
$model_icon.find(".model_icon_exchange").unbind("click").click(function(e){
e = e || event;
e.stopPropagation();
var next_idx = parseInt($model_icon.attr("idx")) + 1;
if(next_idx == model_icon_list.length)
next_idx = 0;
$.each(model_icon_list, function(index, value){
if(next_idx == index){
if(cloudRouterIconCheckCache[value] == undefined)
cloudRouterIconCheckCache[value] = false;
if(cloudRouterIconCheckCache[value])
cloud_router_icon_set(cloudRouterIconCheckCache[value]);
else{
var model_info = {"model_name": value, "tcode": tcode, "cobrand": cobrand, "icon_model_name": value};
model_info.cloudModelName = value;
cloud_router_icon_get(model_info);
}
$model_icon.attr("idx", index);
model_name = value;
return false;
}
});
var custom_clientlist = decodeURIComponent(httpApi.nvramCharToAscii(["custom_clientlist"]).custom_clientlist);
var originalCustomListArray = new Array();
var onEditClient = new Array();
originalCustomListArray = custom_clientlist.split('<');
onEditClient[0] = model_name;
onEditClient[1] = mac.toUpperCase();
onEditClient[2] = 0;
onEditClient[3] = 0;
onEditClient[4] = "";
onEditClient[5] = "";
for(var i = 0; i < originalCustomListArray.length; i += 1) {
if(originalCustomListArray[i].split('>')[1] != undefined) {
if(originalCustomListArray[i].split('>')[1].toUpperCase() == onEditClient[1].toUpperCase()){
onEditClient[4] = originalCustomListArray[i].split('>')[4]; // set back callback for ROG device
onEditClient[5] = originalCustomListArray[i].split('>')[5]; // set back keeparp for ROG device
var app_group_tag = originalCustomListArray[i].split('>')[6]; // for app group tag
if(typeof app_group_tag != "undefined") onEditClient[6] = app_group_tag;
var app_age_tag = originalCustomListArray[i].split('>')[7]; // for app age tag
if(typeof app_age_tag != "undefined") onEditClient[7] = app_age_tag;
originalCustomListArray.splice(i, 1); // remove the selected client from original list
}
}
}
originalCustomListArray.push(onEditClient.join('>'));
custom_clientlist = originalCustomListArray.join('<');
httpApi.nvramSet({
"custom_clientlist" : custom_clientlist,
"action_mode": "apply"
}, function(){
setTimeout(function(){
jstree_refresh();
},1000);
}());
});
}
else{
$model_icon.removeAttr("idx");
$model_icon.find(".model_icon_exchange").hide();
}
}
function update_model_icon(_node_info){
var model_name = _node_info.model_name;
var tcode = _node_info.tcode;
var cobrand = httpApi.aimesh_get_misc_info(_node_info).cobrand;
var icon_model_name = "";
if(_node_info.icon_model_name != undefined && _node_info.icon_model_name != "")
icon_model_name = _node_info.icon_model_name;
var model_info = {"model_name": model_name, "tcode": tcode, "cobrand": cobrand, "icon_model_name": icon_model_name};
var cloudModelName = httpApi.transformCloudModelName(model_info);
model_info.cloudModelName = cloudModelName;
if(cloudRouterIconCheckCache[cloudModelName] == undefined)
cloudRouterIconCheckCache[cloudModelName] = false;
if(cloudRouterIconCheckCache[cloudModelName])
cloud_router_icon_set(cloudRouterIconCheckCache[cloudModelName]);
else{
cloud_router_icon_set("");
setTimeout(function(){cloud_router_icon_get(model_info);}, 1000);
}
set_change_model_icon(_node_info);
}
var transform_band_index = function(_bandNum){
return ((Math.pow(2,_bandNum)) - 1).toString();
}
var transform_sta_bind_json_to_string = function(_sta_bind_json){
var result = "";
for(var node_mac in _sta_bind_json) {
var client_bind_list = _sta_bind_json[node_mac].client;
if(Object.keys(client_bind_list).length > 0){
result += "<";
result += node_mac;
result += ">";
result += _sta_bind_json[node_mac]["enable"];
result += ">";
var count = 0;
for(var client in client_bind_list){
if(count != 0)
result += "|";
result += client;
result += ",";
result += client_bind_list[client]["band_index"];
count++;
}
}
}
return result;
};
function set_cap_alias(_alias) {
httpApi.nvramSet({
"cfg_alias" : _alias,
"action_mode": "apply"
}, function(){
setTimeout(function(){
jstree_refresh();
},1000);
}());
}
function get_topology_data(){
var treeTopology = [];
if(aimesh_data.cfg_clientlist != undefined && aimesh_data.cfg_clientlist != ""){
aimesh_data.cfg_clientlist.forEach(function(item, index, array){
var id = "topo_" + item.mac.replace(/:/g, '-');
var parent = "";
var re_path = handle_re_path(item.re_path);
parent = (function(){
if(index == 0)
return "#";
else{
if(re_path <= 0)
return parent;
else if(re_path == 1 || re_path == 16 || re_path == 32 || re_path == 64){
var wired_mac = item.mac;
var papObj = aimesh_data.cfg_clientlist.filter(function(item, index, array){
return ($.inArray(wired_mac, item.wired_mac) != -1)
});
var lastPapObj = papObj[papObj.length - 1];
if(lastPapObj != undefined)
return lastPapObj.mac;
}
else if(re_path == 2){
var pap2g = item.pap2g;
var papObj = aimesh_data.cfg_clientlist.filter(function(item, index, array){
return item.ap2g == pap2g;
})[0];
if(papObj != undefined)
return papObj.mac;
}
else if(re_path == 128){
var pap6g = item.pap6g;
var papObj = aimesh_data.cfg_clientlist.filter(function(item, index, array){
return (item.ap6g == pap6g);
})[0];
if(papObj != undefined)
return papObj.mac;
}
else{
var pap5g = item.pap5g;
var papObj = aimesh_data.cfg_clientlist.filter(function(item, index, array){
return (item.ap5g == pap5g || item.ap5g1 == pap5g);
})[0];
if(papObj != undefined)
return papObj.mac;
}
}
})();
if(parent == undefined || parent == "")
parent = cap_mac;
if(parent != "#")
parent = "topo_" + parent.replace(/:/g, '-');;
var node_data = { "id" : id, "parent" : parent };
treeTopology.push(node_data);
});
}
return treeTopology;
}
function change_node(_node_info){
var isReNode = (_node_info.mac != cap_mac) ? true : false;
var hide_manage = true;
if(isReNode || isSupport("led_ctrl_cap"))
hide_manage = false;
if(hide_manage){
$("#manage").hide();
$(".category_bg").css({"width": "50%"});
}
else{
$("#manage").show();
$(".category_bg").css({"width": "33.3%"});
}
select_node_capability = httpApi.aimesh_get_node_capability(_node_info);
set_primary_info(_node_info);
if(hide_manage && (current_click_tab == "manage"))
current_click_tab = "client";
control_category_block(current_click_tab);
}
function jstree_re_draw_connect_line(){
var $jstree_leaves = $('#jstree').find(".jstree-node");
$jstree_leaves.each(function(index){
var $pre_node = $(this).prev();
if($pre_node.length > 0){
$pre_node.addClass($(this).attr("custom_connect_quality"));
$pre_node.addClass($(this).attr("custom_connect_type"));
}
});
}
function aimesh_introduction_control(){
var all_node = $('#jstree').jstree(true).get_json("#", {flat:true});
$(".aimesh_introduction").hide();
if(all_node.length < 2)
$(".aimesh_introduction").show();
}
function client_list_refresh(){
originData.fromNetworkmapd[0] = httpApi.hookGet("get_clientlist", true);
genClientList();
}
function jstree_refresh(){
all_node_is_eth_backhaul = true;
client_get_client_date();
$('#jstree').jstree(true).settings.core.data = get_topology_data();
$('#jstree').jstree(true).refresh();
$("#jstree").jstree("open_all");
jstree_re_draw_connect_line();
aimesh_introduction_control();
}
function jstree_select_cap(_reset_mac){
var count = 0;
var interval_check = setInterval(function(){
var get_cfg_clientlist = httpApi.hookGet("get_cfg_clientlist", true);
var specific_node_data = get_cfg_clientlist.filter(function(item, index, _array){
return (item.mac == _reset_mac);
})[0];
if(specific_node_data == undefined){
$("#jstree").jstree("deselect_all");
$('#jstree').jstree('select_node', "topo_" + cap_mac.replace(/:/g, '-'));
jstree_refresh();
clearInterval(interval_check);
}
else{
count++;
if(count == 10)
clearInterval(interval_check);
}
}, 1000);
}
var interval_tree_update = false;
var interval_tree_update_time = 1000*10;
var interval_tree_update_count = 0;
var interval_tree_update_maxi = 150;
var current_click_mac = "";
var current_click_tab = "client";
var current_client_click_type = "all";
var cap_mac = "";
var select_node_capability = {};
var node_not_support_feature = [];
var all_node_is_eth_backhaul = true;
var jstree_load_ready = false;
function initial_AiMesh(){
clearInterval(interval_tree_update);
aimesh_data.cfg_clientlist = httpApi.hookGet("get_cfg_clientlist");
var cap_obj = aimesh_data.cfg_clientlist[0];//cap
if(cap_obj != undefined){
gen_custom_select("Home");
current_click_mac = cap_obj.mac;
cap_mac = cap_obj.mac;
}
else
$(".aimesh_bg").hide();
$("body").unbind("click");
$("body").click(function() {
closeAllSelect(event);
closeAllPopup(event);
});
$("#jstree").jstree({
"core" : {'data' : get_topology_data()},
"plugins" : [ "noclose", "wholerow", "node_customize", "sort"],
'sort' : function(a, b) {// sort order online(wired/5G/2G), offline
var get_node_order = function(_node_id){
var node_mac = _node_id.replace("topo_", "").replace(/-/g, ':');
var specific_node_data = aimesh_data.cfg_clientlist.filter(function(item, index, _array){
return (item.mac == node_mac);
})[0];
var num = 0;//online+1, 2.4G+1, 5G+2, 6G+3, wired+4
var node_online = specific_node_data.online;
var re_path = handle_re_path(specific_node_data.re_path);
if((node_mac != cap_mac) && re_path <= 0)
node_online = "0";
if(specific_node_data != undefined){
if(node_online == "1"){//online
num += 1;
if(re_path <= 0)//not connect
num += 0;
else if(re_path == "1" || re_path == "16" || re_path == "32" || re_path == "64")//wired
num += 4;
else if(re_path == "2")//2.4G
num += 1;
else if(re_path == "128")//6G
num += 3;
else//5G
num += 2;
}
}
return num;
};
return (get_node_order(b) > get_node_order(a)) ? 1 : ((get_node_order(b) < get_node_order(a)) ? -1 : 0);
},
node_customize: {
default: function(el, node) {
var node_mac = node.id.replace("topo_", "").replace(/-/g, ':');
node_not_support_feature[node_mac] = [];
var specific_node_data = aimesh_data.cfg_clientlist.filter(function(item, index, _array){
return (item.mac == node_mac);
})[0];
var node_online = specific_node_data.online;
var re_path = handle_re_path(specific_node_data.re_path);
if((node_mac != cap_mac) && re_path <= 0)
node_online = "0";
var $node_icon = $(el).find(".jstree-icon.jstree-themeicon").eq(0);
$node_icon.removeClass().addClass("jstree-icon jstree-themeicon");
var $node_connect_type = $(el).find(".jstree-anchor").eq(0);
$node_connect_type.removeClass().addClass("jstree-anchor");
var _signal_quality = "";
if(node_online == "0"){
$node_icon.addClass("offline");//node circle icon
$node_connect_type.addClass("disconnected");//node connect line
$(el).attr("custom_connect_quality", "disconnected");//add custom attr for quality, used at re_draw_connect_line()
}
else{
_signal_quality = get_connect_quality(specific_node_data);
var quality_css = "great";
if(_signal_quality.quality > 1)
quality_css = "great";
else if(_signal_quality.quality == 1)
quality_css = "weak";
else
quality_css = "disconnected";
$node_connect_type.addClass(quality_css);//node connect line
$(el).attr("custom_connect_quality", quality_css);//add custom attr for quality, used at re_draw_connect_line()
}
if(re_path == "1" || re_path == "16" || re_path == "32" || re_path == "64"){//node connect type
$node_connect_type.addClass(_signal_quality.type);
$(el).attr("custom_connect_type", (_signal_quality.type));
}
else if(re_path == "2"){
$node_connect_type.addClass("wireless wl_2g");
$(el).attr("custom_connect_type", "wireless");
if(node.parent != "#")
all_node_is_eth_backhaul = false;
}
else if(re_path == "128"){
$node_connect_type.addClass("wireless wl_6g");
$(el).attr("custom_connect_type", "wireless");
if(node.parent != "#")
all_node_is_eth_backhaul = false;
}
else{
$node_connect_type.addClass("wireless wl_5g");
$(el).attr("custom_connect_type", "wireless");
if(node.parent != "#")
all_node_is_eth_backhaul = false;
}
var node_location_info = transform_location(node_mac, specific_node_data);
$node_icon.addClass("topology_icon");
$node_icon.addClass(node_location_info.location_active_css);//node location icon
if(node.parent != "#" && re_reconnect_flag != "" && node_online == "0" && (re_reconnect_flag == "all" || re_reconnect_flag == node_mac)){
$node_icon.append(popup_hint_api.get_component_loading());
$node_icon.find(".cssload-bellContainer").addClass("topology_node");
$node_icon.find(".cssload-bell").addClass("topology_node");
}
else
$node_icon.find(".cssload-bellContainer").empty();
$node_connect_type.css("margin-left", ( (($(el).find("[aria-level]").attr("aria-level")-1)*60) + "px") );//node margin-left
$(el).addClass("level_" + $(el).find("[aria-level]").attr("aria-level") + "");
if(node.parent == "#"){//cap
$node_connect_type.addClass("without-before-element");
$node_connect_type.addClass("without-after-element");
}
$(el).find(".jstree-default .jstree-node:before").css("left", ($(el).find(".jstree-anchor").css("margin-left") - 10));
var $node_info_bg = $("<div>");
$node_info_bg.addClass("topology_node_info");
var $model_name_bg = $("<div>");
$model_name_bg.appendTo($node_info_bg);
var $model_name = $("<span>");
$model_name.appendTo($model_name_bg);
$model_name.html(handle_ui_model_name(specific_node_data.model_name, specific_node_data.ui_model_name));
if(isSupport("WL_SCHED_V2") || isSupport("WL_SCHED_V3")) {
var node_capability = httpApi.aimesh_get_node_capability(specific_node_data);
if(!node_capability.sched_v2) {
var show_notice = false;
for(var i = 0; i < wl_info.wl_if_total; i += 1) {
var wl_timesched = httpApi.nvramGet(["wl" + i + "_timesched"])["wl" + i + "_timesched"];
if(wl_timesched == "1") {
show_notice = true;
break;
}
}
if(show_notice) {
node_not_support_feature[node_mac].push("Wireless scheduler");
$model_name.addClass("node_feature_notice");
}
}
}
if(isSupport("amas_eap")) {
var amas_eap_bhmode = httpApi.nvramGet(["amas_eap_bhmode"]).amas_eap_bhmode;
if(amas_eap_bhmode != "0" && amas_eap_bhmode != "") {
var node_capability = httpApi.aimesh_get_node_capability(specific_node_data);
if(!node_capability.ethernet_backhaul_mode) {
node_not_support_feature[node_mac].push("<#1128#>");
$model_name.addClass("node_feature_notice");
}
}
}
var $location_bg = $("<div>");
$location_bg.appendTo($node_info_bg);
$location_bg.html(htmlEnDeCode.htmlEncode(node_location_info.location_text));
if($(el).attr('aria-level') > 3)
$location_bg.css("width", "120px");
var $client_num_bg = $("<div>");
$client_num_bg.appendTo($node_info_bg);
var $client_title = $("<span>");
$client_title.appendTo($client_num_bg);
$client_title.html("<#2152#>");
var $client_num = $("<span>");
var node_client_list = ciient_get_specific_client_list("all", specific_node_data.mac);
$client_num.html(node_client_list.online);
if(node_client_list.bind_notice)
$client_num.addClass("bind_notice");
$client_num.appendTo($client_num_bg);
$node_icon.after($node_info_bg);
}
}
});
$('#jstree').on("select_node.jstree", function (e, data) {
var node_mac = data.node.id.replace("topo_", "").replace(/-/g, ':');
current_click_mac = node_mac;
var specific_node_data = aimesh_data.cfg_clientlist.filter(function(item, index, _array){
return (item.mac == current_click_mac);
})[0];
if(specific_node_data != undefined){
change_node(specific_node_data);
if(jstree_load_ready){
update_model_icon(specific_node_data);
}
}
});
$('#jstree').on("ready.jstree", function(e, data) {
$("#jstree").jstree("open_all");
jstree_re_draw_connect_line();
aimesh_introduction_control();
jstree_load_ready = true;
$('#jstree').jstree('select_node', "topo_" + current_click_mac.replace(/:/g, '-'));
setTimeout(function() {
client_get_client_date();
$('#jstree').jstree().refresh();
}, 150);
setTimeout(function() {
httpApi.nvramSet({"action_mode": "firmware_check"});
}, 5000);
});
$(".connect_line_info_icon").unbind("click");
$(".connect_line_info_icon").click(function(e){
closeAllSelect();
e = e || event;
e.stopPropagation();
var $connect_line_info_bg = $("<div>");
$connect_line_info_bg.addClass("connect_line_info_bg");
var gen_line_info = function(_type, _quality, _text){
var $content_bg = $("<div>");
var $icon = $("<div>");
$icon.addClass("connect_line").addClass(_type).addClass(_quality);
$content_bg.append($icon);
var $text = $("<div>");
$text.html(_text);
$content_bg.append($text);
return $content_bg;
};
$connect_line_info_bg.append(gen_line_info("wired", "great", "<#100#>"));
$connect_line_info_bg.append(gen_line_info("wired", "weak", "<#101#>"));
$connect_line_info_bg.append(gen_line_info("wireless", "great", "<#98#>"));
$connect_line_info_bg.append(gen_line_info("wireless", "weak", "<#99#>"));
$connect_line_info_bg.append(gen_line_info("plc", "great", "<#96#>"));
$connect_line_info_bg.append(gen_line_info("plc", "weak", "<#97#>"));
$connect_line_info_bg.append(gen_line_info("", "disconnected", "<#226#>"));
var $faq = $("<div>");
$faq.addClass("faq_bg");
var faq_text = "<#102#>";
faq_text += "<br>";
faq_text += "<a id='connect_line_info_faq' href='' target='_blank' style='text-decoration:underline;'>FAQ.</a>";
$faq.html(faq_text);
$connect_line_info_bg.append($faq);
$("#aimesh_hint_msg").empty().append(popup_hint_api.get_component_text()).append(popup_hint_api.get_component_action());
$("#aimesh_hint_msg .hint_text").html($connect_line_info_bg).promise().done(function(){
$("#aimesh_hint_msg .hint_text #connect_line_info_faq").attr("href", faq_href2);
});
$("#aimesh_hint_msg #action_canacl").hide();
$("#aimesh_hint_msg #action_ok").show().unbind("click").click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").hide();
});
$("#aimesh_hint_msg").show();
adjust_panel_block_top("aimesh_hint_msg", 100);
});
interval_tree_update = setInterval(function(){
interval_tree_update_count++;
if(interval_tree_update_count >= interval_tree_update_maxi)//release the memory of browser
location.reload(true);
if(re_reconnect_flag == "")
jstree_refresh();
}, interval_tree_update_time);
if(isSupport("re_reconnect"))
$("#optimization_btn").show();
else
$("#optimization_btn").hide();
}
var pop_win;
function add_node(){
var popup_onboarding = function(){
var cfg_re_maxnum = parseInt(get_onboardingstatus.cfg_re_maxnum);
var cfg_recount = parseInt(get_onboardingstatus.cfg_recount);
if(cfg_recount >= cfg_re_maxnum){
event.stopPropagation();
$("#aimesh_hint_msg").empty();
$("#aimesh_hint_msg").append(popup_hint_api.get_component_text());
$("#aimesh_hint_msg").append(popup_hint_api.get_component_action());
var hint = "";
hint += "<#1200#>";
hint += "<br>";
hint += "<#1201#> <#1202#>".replace("#RE_MAXNUM", cfg_re_maxnum);
hint += "<br>";
hint += "<#1203#>";
$("#aimesh_hint_msg .hint_text").html(hint);
$("#aimesh_hint_msg #action_canacl").hide();
$("#aimesh_hint_msg #action_ok").show();
$("#aimesh_hint_msg #action_ok").click(function(e){
e = e || event;
e.stopPropagation();
$("#aimesh_hint_msg").hide();
});
$("#aimesh_hint_msg").show();
adjust_panel_block_top("aimesh_hint_msg", 100);
}
else{
if(get_onboardingstatus.cfg_obstatus == "1")
httpApi.nvramSet({"action_mode": "onboarding"});
if(based_modelid == "DSL-AC68U" || based_modelid == "DSL-AX82U")
location.href = "/cfg_onboarding.cgi?flag=AMesh";
else{
pop_win = window.open("/QIS_wizard.htm?flag=amas_addNode", "_new", "toolbar=no,location=no,menubar=no,status=no,scrollbars=yes,resizable=yes");
pop_win.moveTo(0, 0);
pop_win.resizeTo(screen.width, screen.height);
}
}
};
var get_onboardingstatus = httpApi.hookGet("get_onboardingstatus", true);
if(get_onboardingstatus.cfg_ready != "1"){
alert("<#3556#>");
return false;
}
popup_onboarding();
}
function child_window_callback(){
pop_win.close();
jstree_refresh();
}
function gen_hint_component(_parm){
var $hint_bg = $("<div>");
$hint_bg.addClass("hover_pop_hint_bg");
$hint_bg.addClass(_parm.css);
$hint_bg.html(_parm.text);
return $hint_bg ;
}
function handle_ui_model_name(_model_name, _ui_model_name){
var result = "";
if(_ui_model_name == undefined || _ui_model_name == "")
result = _model_name;
else
result = _ui_model_name;
return result;
}
function optimization_node(){
var e = event;
event.stopPropagation();
manage_set_reconnect_control("all");
}
function transform_location(_nodeMac, _node_info){
var result = {"location_text":"<#1092#>", "location_active_css":"Home"};
var node_location_text = "Home";
var isReNode = (_nodeMac != cap_mac) ? true : false;
if(isReNode){
if("config" in _node_info) {
if("misc" in _node_info.config) {
if("cfg_alias" in _node_info.config.misc) {
if(_node_info.config.misc.cfg_alias != "")
node_location_text = _node_info.config.misc.cfg_alias;
}
}
}
}
else{
var alias = _node_info.alias;
if(alias != _nodeMac)
node_location_text = alias;
}
var specific_location = aimesh_location_arr.filter(function(item, index, _array){
return (item.value == node_location_text);
})[0];
if(specific_location != undefined){
result.location_active_css = specific_location.value.replace(/\s/g,'_');
result.location_text = specific_location.text;
}
else{
result.location_active_css = "Custom";
result.location_text = node_location_text;
}
return result;
}
var setSTABindAttr = function(){
this.enable = "0";
this.client = {};
};
var setSTAClientBindAttr = function(){
this.band_index = "0";
};
function gen_sta_binding_list_json(){
var sta_bind_json = {};
if(isSupport("force_roaming") && isSupport("sta_ap_bind")){
var sta_binding_list = decodeURIComponent(httpApi.nvramCharToAscii(["sta_binding_list"], true).sta_binding_list);
var each_node_rule = sta_binding_list.split("<");
$.each(each_node_rule, function(index, value){
if(value != ""){
var node_client_rule = value.split(">");
var node_mac = "";
$.each(node_client_rule, function(index, value){
switch(index){
case 0://mac
node_mac = value;
sta_bind_json[node_mac] = new setSTABindAttr();
break;
case 1://enable
sta_bind_json[node_mac]["enable"] = value;
break;
case 2://client list
var each_client = value.split("|");
$.each(each_client, function(index, value){
var client_rule = value.split(",");
var client_mac = client_rule[0];
var band_index = client_rule[1];
sta_bind_json[node_mac]["client"][client_mac] = new setSTAClientBindAttr();
sta_bind_json[node_mac]["client"][client_mac]["band_index"] = band_index;
});
break;
}
});
}
});
}
return sta_bind_json;
}
function gen_conn_priority_select_option(_node_info, _eap_flag){
var option_array = [];
var option_attr = function(){
this.text = "";
this.value = "";
this.conn_type = "";
};
var gen_option_attr = function(_value, _text, _conn_type) {
var option = new option_attr();
option.value = _value;
option.text = _text;
option.conn_type = _conn_type;
return JSON.parse(JSON.stringify(option));
};
option_array.push(gen_option_attr("3", ((_eap_flag) ? "<#160#> (<#1072#>)" : "<#160#>"), "auto"));
var port_mapping = [{value:"1", text:"WAN"}, {value:"2", text:"LAN"}];//Def
var interface_mapping = [{value:"1", text:"Ethernet"}, {value:"2", text:"WiFi"}, {value:"3", text:"Powerline"}];//Type
var eth_rate_mapping = [{value:"1", text:"10M"}, {value:"2", text:"100M"}, {value:"3", text:"1G"}, {value:"4", text:"2.5G"}, {value:"5", text:"5G"},
{value:"6", text:"10G base-T"}, {value:"7", text:"10G SFP+"}];//SubType
var wifi_rate_mapping = [{value:"1", text:"2.4GHz"}, {value:"2", text:"5GHz"}, {value:"3", text:"6GHz"}];//SubType
if("capability" in _node_info){
if("21" in _node_info.capability) {
var multiple_uplink_port = _node_info.capability["21"];
if(multiple_uplink_port["Ports"] != undefined) {
$.each(multiple_uplink_port["Ports"], function( index, value ){
var if_text = "";
var rate_text = "";
var conn_type = "";
var port_obj = value;
var port_idx = parseInt(port_obj.index);
var if_type = interface_mapping.filter(function(item, index, _array){
return (item.value == port_obj.Type);
})[0];
if(if_type != undefined){
var rate_type = "";
switch(if_type.value){
case "1":
var port_type = port_mapping.filter(function(item, index, _array){
return (item.value == port_obj.Def);
})[0];
if(port_type != undefined)
if_text = port_type.text;
rate_type = eth_rate_mapping.filter(function(item, index, _array){
return (item.value == port_obj.SubType);
})[0];
conn_type = "eth";
break;
case "2":
if_text = if_type.text;
rate_type = wifi_rate_mapping.filter(function(item, index, _array){
return (item.value == port_obj.SubType);
})[0];
conn_type = "wifi";
break;
case "3":
if_text = if_type.text;
conn_type = "plc";
break;
}
if(rate_type != undefined && rate_type != "")
rate_text = rate_type.text;
}
var option_value = port_obj.amas_ethernet;
var conn_prio_type = rate_text;
if(conn_type == "wifi"){
if(port_idx >= 1){
conn_prio_type += "-" + (port_idx + 1);
}
else if(port_idx == 0){
if(rate_type.value == "2"){//5G
if(_node_info.capability["22"] != undefined){
var support_5G2 = (_node_info.capability["22"] & (1 << 2)) ? true : false;
if(support_5G2)
conn_prio_type += "-" + (port_idx + 1);//if support 5G-2, 5G need show 5G-1
}
}
}
conn_prio_type += " " + if_text;
}
else{
conn_prio_type += " " + if_text;
if(port_idx >= 1)
conn_prio_type += port_idx;
}
var option_text = (_eap_flag) ? "<#1082#>" : "<#1081#>";
option_text = option_text.replace("#CONNPRIOTYPE", conn_prio_type);
var option_conn_type = conn_type;
if(_eap_flag && conn_type == "wifi")
return true;
option_array.push(gen_option_attr(option_value, option_text, option_conn_type));
});
}
}
}
if(option_array.length == 1)
option_array.push(gen_option_attr("2", ((_eap_flag) ? "<#1071#>" : "<#1067#>"), "eth"));
return option_array;
}
function handle_re_path(_re_path){
var result = parseInt(_re_path);
return ((isNaN(result)) ? 0 : result);
}
var popup_hint_api = {
"get_component_text": function(){
return $("<div>").addClass("hint_text");
},
"get_component_action": function(){
var $action_bg = $("<div>").addClass("action_bg");
var $action_canacl = $("<input/>").attr({"id":"action_canacl", "type":"button", "value":"<#206#>"}).addClass("button_gen");
var $action_ok = $("<input/>").attr({"id":"action_ok", "type":"button", "value":"<#1687#>"}).addClass("button_gen");
$action_bg.append($action_canacl).append($action_ok);
return $action_bg;
},
"get_component_loading": function(){
var loadContainer = $("<div>").addClass("cssload-bell");
for(var i=0; i<5; i++){
$("<div>")
.addClass("cssload-circle")
.append($("<div>").addClass("cssload-inner"))
.appendTo(loadContainer);
}
return $("<div>").addClass("cssload-bellContainer").append(loadContainer);
},
"get_component_mask": function(){
return $("<div>").addClass("mask_bg");
}
};
$(document).ready(initial_AiMesh);
</script>
<div class="aimesh_bg info_left">
<div class="node_btn_control">
<div onclick="add_node();"><span class="add_icon"><#71#></span></div>
<div id="optimization_btn" onclick="optimization_node();"><span class="refresh_icon"><#1161#></span></div>
</div>
<div id="jstree"></div>
<div class="connect_info_bg">
<div class="connect_line_info_icon"></div>
<div class="aimesh_introduction">
<div class="aimesh_intro_text">
<div>ASUS AiMesh WiFi System</div>
<div><#26#></div>
</div>
</div>
</div>
</div>
<div class="aimesh_bg info_right">
<div class="card_block_bg primary_info_bg">
<div class="icon_bg">
<div class="translucent_bg">
<div class="model_info_bg">
<div id="model_name" class="model_name"></div>
<div class="mac_info"><span>MAC</span><span id="mac"></span></div>
</div>
<div class="model_icon"><div title="<#1667#>" class="model_icon_exchange"></div></div>
</div>
</div>
<div class="item_space"></div>
<div class="item_bg location">
<div class="location_info_bg">
<div class="custom_select">
<select id="sel_location"></select>
<input id='input_location' type='text' value='' maxlength='32' autocomplete='off' autocorrect='off' autocapitalize='off'>
</div>
<span class="location_hint"></span>
</div>
</div>
<div class="item_bg signal">
<div class="signal_hint_text">
<#70#><span class="bubble_icon warn_red signal_icon"></span>
</div>
<div id="signal_quality" class="signal_text_bg signal"></div>
</div>
<div class="item_bg fw_version">
<div class="fw_version_title_bg">
<div><#2161#></div>
</div>
<div class="fw_version_text_bg">
<div>
<div class="fw_version_text"></div>
</div>
</div>
</div>
<div class="item_bg category">
<div id="client" class="category_bg" onclick="control_category_block('client')">
<div class="client"></div>
<div><#2152#></div>
</div>
<div id="network" class="category_bg" onclick="control_category_block('network')">
<div class="network"></div>
<div><#2843#></div>
</div>
<div id="manage" class="category_bg" onclick="control_category_block('manage')">
<div class="manage"></div>
<div><#79#></div>
</div>
</div>
</div>
<div id="client_block" class="category_block">
<div class="card_block_bg">
<div class="client_num_bg">
<div class="left"><span><#1643#></span></div>
<div class="right"><span id="client_num"></span> <#1563#></div>
<div class="clearBoth"></div>
</div>
<div class="client_tab_bg">
<div id="all" class="all" onclick="client_set_tab('all');"><#1564#></div>
<div id="wired" class="wired" onclick="client_set_tab('wired');"><#3383#></div>
<div id="wireless" class="wireless" onclick="client_set_tab('wireless');"><#3384#></div>
<div class="clearBoth"></div>
</div>
<div class="client_list_bg"></div>
</div>
</div>
<div id="network_block" class="category_block">
<div class="wan_info">
<div class="separation_line">
<i></i>
<p><#73#></p>
</div>
<div class="card_block_bg wan_status_bg wan0">
<div>
<span class="connect_title horizontal_line"><#74#></span>
<div class="connect_icon_bg disconnected">
<div class="router"></div>
<div class="connect_line"></div>
<div class="internet"></div>
<div class="connect_status"></div>
</div>
</div>
<div>
<span id="wan_connect_status" class="connect_status disconnected"><#226#></span>
</div>
<div class="wan_connect_info">
<div>
<div id="wan_connect_ip_title" class="connect_info_title">
<#3775#>
</div>
<div id="wan_connect_ip" class="connect_info_text">
- -. - -. - -. - -
</div>
</div>
<div>
<div class="connect_info_title">
<#199#>
</div>
<div id="wan_connect_type" class="connect_info_text">
<#174#>
</div>
</div>
</div>
</div>
<div class="card_block_bg wan_status_bg wan1">
<div>
<span class="connect_title horizontal_line"><#74#></span>
<div class="connect_icon_bg disconnected">
<div class="router"></div>
<div class="connect_line"></div>
<div class="internet"></div>
<div class="connect_status"></div>
</div>
</div>
<div>
<span id="wan_connect_status" class="connect_status disconnected"><#226#></span>
</div>
<div class="wan_connect_info">
<div>
<div id="wan_connect_ip_title" class="connect_info_title">
<#3775#>
</div>
<div id="wan_connect_ip" class="connect_info_text">
- -. - -. - -. - -
</div>
</div>
<div>
<div class="connect_info_title">
<#199#>
</div>
<div id="wan_connect_type" class="connect_info_text">
<#174#>
</div>
</div>
</div>
</div>
</div>
<div class="uplink_info">
<div class="separation_line">
<i></i>
<p><#76#></p>
</div>
<div class="card_block_bg connect_type_status_bg uplink">
<div>
<span class="connect_title horizontal_line"><#77#></span>
</div>
<div class="uplink_type_bg">
<div class="uplink_connect_info_bg">
<div id="uplink_connect_type" class="uplink_type_title disconnected"><#396#> - 5GHz</div>
<div class="uplink_type_ip">IP : <span id="uplink_connect_ip">- - . - - . - - . - -</span></div>
</div>
<div class="uplink_icon_bg">
<div class="uplink_type_icon"></div>
</div>
</div>
<div id="uplink_type_mode_bg">
<span class="uplink_type_mode_title"><#4327#></span>
<br>
<span id="uplink_type_mode" class="uplink_type_title"></span>
</div>
</div>
</div>
<div class="backhaul_info">
<div class="separation_line">
<i></i>
<p><#78#></p>
</div>
<div class="backhaul_content"></div>
</div>
<div class="fronthaul_info">
<div class="separation_line">
<i></i>
<p><#75#></p>
</div>
<div class="fronthaul_content"></div>
</div>
</div>
<div id="manage_block" class="category_block">
<div class="manage_info">
<div class="card_block_bg manage_settings_bg manage">
<div class="manage_title">
<span class="connect_title horizontal_line"><#79#></span>
</div>
<div class="manage_disconnected"><#1204#></div>
<div class="manage_switch_led horizontal_line manage_function_item">
<div class="manage_common_title manage_common_separate_bg left">LED</div>
<div class="manage_common_separate_bg right">
<div class="switch"></div>
</div>
</div>
<div class="manage_slider_led horizontal_line manage_function_item">
<div class="manage_common_title manage_common_separate_bg left"><#4251#></div>
<div class="manage_common_separate_bg right">
<div id='led_slider' class='led_slider'></div>
</div>
</div>
<div class="manage_conn_priority horizontal_line dropdown_item_bg manage_function_item">
<div class="manage_common_title">
<div><#1077#></div>
<div id="conn_priority_icon" class="bubble_icon info"></div>
</div>
<div>
<select id="conn_priority_select" class="dropdown_select">
<option value="3"><#160#></option>
<option value="2"><#1067#></option>
</select>
</div>
</div>
<div class="manage_preferable_backhaul horizontal_line two_text_item_bg manage_function_item">
<div class="manage_common_title">
<div><#1168#></div>
<div id="prefer_ap_icon" class="bubble_icon info"></div>
</div>
<div>
<div class="managment_icon preferable_backhaul_icon"></div>
<span class="preferable_backhaul_text"><#160#></span>
</div>
</div>
<div class="manage_lacp horizontal_line dropdown_item_bg manage_function_item">
<div class="manage_common_title"><#2826#><span id="lacp_icon" class="bubble_icon info"></span></div>
<div>
<select id="lacp_select" class="dropdown_select">
<option value="1"><#3945#></option>
<option value="0"><#3946#></option>
</select>
</div>
</div>
<div class="manage_switch_wifi horizontal_line manage_function_item sub_item_bg">
<div>
<div class="manage_common_title manage_common_separate_bg left"><#4020#></div>
<div class="manage_common_separate_bg right">
<div id="switch_wifi" class="arrow_icon down"></div>
</div>
</div>
<div class="manage_sub_item_bg"></div>
</div>
<div class="manage_usb_app horizontal_line manage_function_item">
<div class="manage_common_title manage_common_separate_bg left"><#393#></div>
<div class="manage_common_separate_bg right">
<div id="usb_app" class="arrow_icon right"></div>
</div>
</div>
<div class="manage_switch_ctrl horizontal_line manage_function_item">
<div class="manage_common_title manage_common_separate_bg left"><#3307#></div>
<div class="manage_common_separate_bg right">
<div id="switch_ctrl" class="arrow_icon right"></div>
</div>
</div>
<div class="manage_reconnect_node horizontal_line manage_function_item">
<div class="manage_common_title manage_common_separate_bg left"><#1161#></div>
<div class="manage_common_separate_bg right">
<div class="managment_icon reconnect_icon"></div>
</div>
</div>
<div class="manage_reboot_node horizontal_line manage_function_item">
<div class="manage_common_title manage_common_separate_bg left"><#80#></div>
<div class="manage_common_separate_bg right">
<div class="managment_icon reboot_icon"></div>
</div>
</div>
<div class="manage_remove_node horizontal_line manage_function_item">
<div class="manage_common_title manage_common_separate_bg left"><#81#></div>
<div class="manage_common_separate_bg right">
<div class="managment_icon trash_icon"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="aimesh_hint_msg" class="popup_hint_bg" onselectstart="return false"></div>