blob: e76c72f5c8d613e430196650e572c71da2be6c4f [file] [log] [blame]
zw.wangcfae4372024-08-12 16:41:12 +08001
2define("service","underscore jquery set CryptoJS".split(" "), function (_, $, config, CryptoJS) {
3 function addTimerSomething(querys, cb) {
4 if (_.isArray(querys)) {
5 for (var i = 0; i < querys.length; i++) {
6 addQueryString(querys[i]);
7 }
8 } else {
9 addQueryString(querys);
10 }
11 addCallback(cb);
12 }
13 function removeTimerSomething(querys, cb) {
14 if (_.isArray(querys)) {
15 for (var i = 0; i < querys.length; i++) {
16 removeQueryString(querys[i]);
17 }
18 } else {
19 removeQueryString(querys);
20 }
21 removeCallback(cb);
22 }
23 function getCurretnMAC() {
24 return getUserMacAddr({}).get_user_mac_addr;
25 }
26 function getDdnsParams(values, callback) {
27 return stuffMake(arguments, {}, prepare, deal, null, false);
28 function prepare(values, isPost) {
29 return {
30 multi_data: 1,
31 cmd: "DDNS_Enable,DDNS_Mode,DDNSProvider,DDNSAccount,DDNSPassword,DDNS,DDNS_Hash_Value"
32 };
33 }
34 function deal(paramD) {
35 if (paramD) {
36 return {
37 DDNS_Enable: paramD.DDNS_Enable,
38 DDNS_Mode: paramD.DDNS_Mode,
39 DDNSProvider: paramD.DDNSProvider,
40 DDNSAccount: paramD.DDNSAccount,
41 DDNSPassword: paramD.DDNSPassword,
42 DDNS: paramD.DDNS,
43 DDNS_Hash_Value: paramD.DDNS_Hash_Value
44 }
45 } else {
46 return errUnknownObj;
47 }
48 }
49 }
50 function setDDNSForward() {
51 return stuffMake(arguments, {}, prepare, deal, null, true);
52 function prepare(values, isPost) {
53 var valueReq = $.extend({}, values);
54 return valueReq;
55 }
56 function deal(paramD) {
57 if (paramD) {
58 return paramD;
59 } else {
60 return errUnknownObj;
61 }
62 }
63 }
64 function getLoginData() {
65 return stuffMake(arguments, {}, prepare, deal, null, false);
66 function prepare(values, isPost) {
67 var valueReq = {};
68 valueReq.cmd = "modem_main_state,puknumber,pinnumber,blc_wan_mode,blc_wan_auto_mode,psw_fail_num_str,login_lock_time,psw_changed";
69 valueReq.multi_data = 1;
70 return valueReq;
71 }
72 function deal(paramD) {
73 if (paramD) {
74 if (paramD.blc_wan_mode == "AUTO") {
75 paramD.blc_wan_mode = paramD.blc_wan_auto_mode ? paramD.blc_wan_auto_mode : 'AUTO_PPP';
76 } else {
77 paramD.blc_wan_mode = paramD.blc_wan_mode ? paramD.blc_wan_mode : 'PPP';
78 }
79 paramD.psw_fail_num_str = paramD.psw_fail_num_str == '' ? config.MAX_LOGIN_COUNT : paramD.psw_fail_num_str;
80 paramD.login_lock_time = paramD.login_lock_time == '' ? '300' : paramD.login_lock_time;
81 return paramD;
82 } else {
83 return errUnknownObj;
84 }
85 }
86 }
87 function login() {
88 return stuffMake(arguments, {}, prepare, deal, {
89 errorType: 'badPassword'
90 }, true);
91 function prepare(values, isPost) {
92 var obj = {
93 goformId: "LOGIN",
94 password: config.PASSWORD_ENCODE ? Base64.encode(values.password) : values.password
95 };
96 return obj;
97 }
98 function deal(paramD) {
99 if (paramD && (paramD.result == "0" || paramD.result == "4")) {
100 informationAll.isLoggedIn = true;
101 return {
102 result: true
103 };
104 } else {
105 var loginError = {};
106 switch (paramD.result) {
107 case "1":
108 loginError = {
109 errorType: "Login Fail"
110 };
111 break;
112 case "2":
113 loginError = {
114 errorType: "duplicateUser"
115 };
116 break;
117 case "3":
118 loginError = {
119 errorType: "badPassword"
120 };
121 break;
122 default:
123 loginError = {
124 errorType: "Login Fail"
125 };
126 break;
127 }
128 informationAll.isLoggedIn = false;
129 return $.extend(errUnknownObj, loginError);
130 }
131 }
132 }
133 function getLoginStatus() {
134 if (informationAll.isLoggedIn != undefined) {
135 return stuffMake(arguments, {
136 status: informationAll.isLoggedIn ? 'loggedIn' : 'loggedOut'
137 });
138 } else {
139 var resultObject = {};
140 if (!config.HAS_LOGIN) {
141 resultObject.status = 'loggedIn';
142 resultObject.errorType = 'no_login';
143 informationAll.isLoggedIn = true;
144 }
145 return stuffMake(arguments, resultObject, prepare, deal, null, false);
146 }
147 function prepare(values, isPost) {
148 var valueReq = {};
149 valueReq.cmd = "loginfo";
150 valueReq.multi_data = 1;
151 return valueReq;
152 }
153 function deal(paramD) {
154 if (paramD && paramD.loginfo || paramD.loginfo == "") {
155 var loginStatus = {};
156 switch (paramD.loginfo) {
157 case "ok":
158 informationAll.isLoggedIn = true;
159 loginStatus.status = "loggedIn";
160 break;
161 default:
162 informationAll.isLoggedIn = false;
163 loginStatus.status = "loggedOut";
164 break;
165 }
166 return loginStatus;
167 } else {
168 informationAll.isLoggedIn = undefined;
169 return $.extend(errUnknownObj, {
170 errorType: "LoginStatusError"
171 });
172 }
173 }
174 }
175 function enterPIN() {
176 return stuffMake(arguments, {}, prepare, deal, {}, true);
177 function prepare(values, isPost) {
178 var obj = {};
179 obj.goformId = "ENTER_PIN";
180 obj.PinNumber = values.PinNumber;
181 return obj;
182 }
183 function deal(paramD) {
184 if (paramD && paramD.result === "success") {
185 return {
186 result: true
187 };
188 } else {
189 return {
190 result: false
191 };
192 }
193 }
194 }
195 function enterPUK() {
196 return stuffMake(arguments, {}, prepare, deal, {}, true);
197 function prepare(values, isPost) {
198 var obj = {};
199 obj.goformId = "ENTER_PUK";
200 obj.PUKNumber = values.PUKNumber;
201 obj.PinNumber = values.PinNumber;
202 return obj;
203 }
204 function deal(paramD) {
205 if (paramD && paramD.result === "success") {
206 return {
207 result: true
208 };
209 } else {
210 return {
211 result: false
212 };
213 }
214 }
215 }
216
217 function getStatusInfo() {
218 if (informationAll.isLoggedIn === undefined) {
219 var loginStatus = getLoginStatus();
220 return {
221 networkType: informationAll.networkType,
222 signalImg: informationAll.signalImg,
223 networkOperator: informationAll.networkOperator,
224 spn_b1_flag: informationAll.spn_b1_flag,
225 spn_name_data: informationAll.spn_name_data,
226 spn_b2_flag: informationAll.spn_b2_flag,
227 connectStatus: informationAll.connectStatus,
228 rj45ConnectStatus: informationAll.rj45ConnectStatus,
229 ssid1AttachedNum: informationAll.ssid1AttachedNum,
230 ssid2AttachedNum: informationAll.ssid2AttachedNum,
231 wirelessDeviceNum: informationAll.ssid1AttachedNum + informationAll.ssid2AttachedNum,
232 roamingStatus: informationAll.roamingStatus,
233 wifiStatus: informationAll.wifiStatus,
234 simStatus: informationAll.simStatus,
235 pinStatus: informationAll.pinStatus,
236 batteryStatus: informationAll.batteryStatus,
237 batteryLevel: informationAll.batteryLevel,
238 batteryPers: informationAll.batteryPers,
239 batteryTime: informationAll.batteryTime,
240 ssid: informationAll.ssid,
241 authMode: informationAll.authMode,
242 data_counter: informationAll.data_counter,
243 isLoggedIn: loginStatus.status == "loggedIn",
244 newSmsReceived: informationAll.newSmsReceived,
245 smsReportReceived: informationAll.smsReportReceived,
246 smsUnreadCount: informationAll.smsUnreadCount,
247 limitVolumeEnable: informationAll.limitVolumeEnable,
248 limitVolumeType: informationAll.limitVolumeType,
249 limitVolumePercent: informationAll.limitVolumePercent,
250 limitVolumeSize: informationAll.limitVolumeSize,
251 connectWifiProfile: informationAll.connectWifiProfile,
252 connectWifiSSID: informationAll.connectWifiSSID,
253 connectWifiStatus: informationAll.connectWifiStatus,
254 multi_ssid_enable: informationAll.multi_ssid_enable,
255 roamMode: informationAll.roamMode,
256 blc_wan_mode: informationAll.blc_wan_mode,
257 current_upgrade_state: informationAll.current_upgrade_state,
258 is_mandatory: informationAll.is_mandatory,
259 new_version_state: informationAll.new_version_state,
260 allowRoamingUpdate: informationAll.allowRoamingUpdate,
261 ap_station_enable: informationAll.ap_station_enable,
262 ap_station_mode: informationAll.ap_station_mode,
263 dialMode: informationAll.dialMode,
264 fota_package_already_download: informationAll.fota_package_already_download,
265 ethWanMode: informationAll.ethWanMode,
266 fota_user_selector: informationAll.fota_user_selector,
267 defaultWanName: informationAll.defaultWanName
268 };
269 }
270 return {
271 networkType: informationAll.networkType,
272 signalImg: informationAll.signalImg,
273 networkOperator: informationAll.networkOperator,
274 spn_b1_flag: informationAll.spn_b1_flag,
275 spn_name_data: informationAll.spn_name_data,
276 spn_b2_flag: informationAll.spn_b2_flag,
277 connectStatus: informationAll.connectStatus,
278 rj45ConnectStatus: informationAll.rj45ConnectStatus,
279 ssid1AttachedNum: informationAll.ssid1AttachedNum,
280 ssid2AttachedNum: informationAll.ssid2AttachedNum,
281 wirelessDeviceNum: informationAll.ssid1AttachedNum + informationAll.ssid2AttachedNum,
282 roamingStatus: informationAll.roamingStatus,
283 wifiStatus: informationAll.wifiStatus,
284 simStatus: informationAll.simStatus,
285 pinStatus: informationAll.pinStatus,
286 batteryStatus: informationAll.batteryStatus,
287 batteryLevel: informationAll.batteryLevel,
288 batteryPers: informationAll.batteryPers,
289 batteryTime: informationAll.batteryTime,
290 ssid: informationAll.ssid,
291 authMode: informationAll.authMode,
292 data_counter: informationAll.data_counter,
293 isLoggedIn: informationAll.isLoggedIn,
294 newSmsReceived: informationAll.newSmsReceived,
295 smsReportReceived: informationAll.smsReportReceived,
296 smsUnreadCount: informationAll.smsUnreadCount,
297 limitVolumeEnable: informationAll.limitVolumeEnable,
298 limitVolumeType: informationAll.limitVolumeType,
299 limitVolumePercent: informationAll.limitVolumePercent,
300 limitVolumeSize: informationAll.limitVolumeSize,
301 connectWifiProfile: informationAll.connectWifiProfile,
302 connectWifiSSID: informationAll.connectWifiSSID,
303 connectWifiStatus: informationAll.connectWifiStatus,
304 multi_ssid_enable: informationAll.multi_ssid_enable,
305 blc_wan_mode: informationAll.blc_wan_mode,
306 roamMode: informationAll.roamMode,
307 current_upgrade_state: informationAll.current_upgrade_state,
308 is_mandatory: informationAll.is_mandatory,
309 new_version_state: informationAll.new_version_state,
310 allowRoamingUpdate: informationAll.allowRoamingUpdate,
311 ap_station_enable: informationAll.ap_station_enable,
312 ap_station_mode: informationAll.ap_station_mode,
313 dialMode: informationAll.dialMode,
314 fota_package_already_download: informationAll.fota_package_already_download,
315 ethWanMode: informationAll.ethWanMode,
316 fota_user_selector: informationAll.fota_user_selector,
317 defaultWanName: informationAll.defaultWanName
318 };
319 }
320 function getConnectionInfo() {
321 var isData = informationAll.limitVolumeType == '1';
322 var result = {
323 data_counter: informationAll.data_counter,
324 connectStatus: informationAll.connectStatus,
325 rj45ConnectStatus: informationAll.rj45ConnectStatus,
326 limitVolumeEnable: informationAll.limitVolumeEnable,
327 limitVolumeType: informationAll.limitVolumeType,
328 limitVolumePercent: informationAll.limitVolumePercent,
329 networkType: informationAll.networkType
330 };
331 if (isData) {
332 result.limitDataMonth = informationAll.limitVolumeSize;
333 result.limitTimeMonth = 0;
334 } else {
335 result.limitTimeMonth = informationAll.limitVolumeSize;
336 result.limitDataMonth = 0;
337 }
338 result.blc_wan_mode = informationAll.blc_wan_mode;
339 return result;
340 }
341 function resetNewSmsReceivedVar() {
342 informationAll.newSmsReceived = false;
343 }
344 function resetSmsReportReceivedVar() {
345 informationAll.smsReportReceived = false;
346 }
347 function getSmsCapability() {
348 return stuffMake(arguments, {}, prepare, deal, null, false);
349 function prepare(values, isPost) {
350 var valueReq = {};
351 valueReq.cmd = "sms_capacity_info";
352 return valueReq;
353 }
354 function deal(paramD) {
355 return {
356 nvTotal: parseInt(paramD.sms_nv_total, 10),
357 nvUsed: parseInt(paramD.sms_nv_rev_total, 10) + parseInt(paramD.sms_nv_send_total, 10) + parseInt(paramD.sms_nv_draftbox_total, 10),
358 simTotal: parseInt(paramD.sms_sim_total, 10),
359 simUsed: parseInt(paramD.sms_sim_rev_total, 10) + parseInt(paramD.sms_sim_send_total, 10) + parseInt(paramD.sms_sim_draftbox_total, 10),
360 nvReceive: parseInt(paramD.sms_nv_rev_total, 10),
361 nvSend: parseInt(paramD.sms_nv_send_total, 10),
362 nvDraft: parseInt(paramD.sms_nv_draftbox_total, 10),
363 simReceive: parseInt(paramD.sms_sim_rev_total, 10),
364 simSend: parseInt(paramD.sms_sim_send_total, 10),
365 simDraft: parseInt(paramD.sms_sim_draftbox_total, 10)
366 };
367 }
368 }
369 function connect() {
370 var callback = arguments[1];
371 var checkPoint = 0;
372 return stuffMake(arguments, {}, prepare, deal, null, true);
373 function prepare(values, isPost) {
374 var valueReq = {};
375 valueReq.notCallback = true;
376 valueReq.goformId = "CONNECT_NETWORK";
377 return valueReq;
378 }
379 function deal(paramD) {
380 if (paramD.result == "success") {
381 checkPoint = new Date().getTime();
382 addCallback(checkConnectStatus);
383 } else {
384 callback({
385 result: false
386 });
387 }
388 }
389 function checkConnectStatus(paramD) {
390 if (paramD.ppp_status == "ppp_connecting") {
391 informationAll.connectStatus = "ppp_connecting";
392 } else if (paramD.ppp_status == "ppp_connected") {
393 removeCallback(checkConnectStatus);
394 informationAll.connectStatus = "ppp_connected";
395 callback({
396 result: true,
397 status: informationAll.connectStatus
398 });
399 } else if (new Date().getTime() - checkPoint < 1e4) {
400 informationAll.connectStatus = "ppp_connecting";
401 } else {
402 removeCallback(checkConnectStatus);
403 callback({
404 result: false
405 });
406 }
407 }
408 }
409 function disconnect() {
410 var callback = arguments[1];
411 var checkPoint = 0;
412 return stuffMake(arguments, {}, prepare, deal, null, true);
413 function prepare(values, isPost) {
414 var valueReq = {};
415 valueReq.notCallback = true;
416 valueReq.goformId = "DISCONNECT_NETWORK";
417 return valueReq;
418 }
419 function deal(paramD) {
420 if (paramD.result == "success") {
421 checkPoint = new Date().getTime();
422 addCallback(checkDisconnectStatus);
423 } else {
424 callback({
425 result: false
426 });
427 }
428 }
429 function checkDisconnectStatus(paramD) {
430 if (paramD.ppp_status == "ppp_disconnecting") {
431 informationAll.connectStatus = "ppp_disconnecting";
432 } else if (paramD.ppp_status == "ppp_disconnected") {
433 removeCallback(checkDisconnectStatus);
434 informationAll.connectStatus = "ppp_disconnected";
435 callback({
436 result: true,
437 status: informationAll.connectStatus
438 });
439 } else if (new Date().getTime() - checkPoint < 1e4) {
440 informationAll.connectStatus = "ppp_disconnecting";
441 } else {
442 removeCallback(checkDisconnectStatus);
443 callback({
444 result: false
445 });
446 }
447 }
448 }
449 function getApnSettings() {
450 return stuffMake(arguments, {}, prepare, deal, null, false);
451 function prepare(values, isPost) {
452 var valueReq = {};
453 valueReq.cmd = "APN_configtmp0,APN_configtmp1,APN_configtmp2,APN_configtmp3,APN_configtmp4,APN_configtmp5,APN_configtmp6,APN_configtmp7,APN_configtmp8,APN_configtmp9," + "APN_configtmp10,APN_configtmp11,APN_configtmp12,APN_configtmp13,APN_configtmp14,APN_configtmp15,APN_configtmp16,APN_configtmp17,APN_configtmp18,APN_configtmp19," + "ipv6_APN_configtmp0,ipv6_APN_configtmp1,ipv6_APN_configtmp2,ipv6_APN_configtmp3,ipv6_APN_configtmp4,ipv6_APN_configtmp5,ipv6_APN_configtmp6,ipv6_APN_configtmp7,ipv6_APN_configtmp8,ipv6_APN_configtmp9," + "ipv6_APN_configtmp10,ipv6_APN_configtmp11,ipv6_APN_configtmp12,ipv6_APN_configtmp13,ipv6_APN_configtmp14,ipv6_APN_configtmp15,ipv6_APN_configtmp16,ipv6_APN_configtmp17,ipv6_APN_configtmp18,ipv6_APN_configtmp19," + "m_profile_name,profile_name,wan_dial,pdp_type,pdp_select,index,Current_index,apn_auto_config,ipv6_apn_auto_config," + "apn_mode,wan_apn,ppp_auth_mode,ppp_username,ppp_passtmp," + "ipv6_wan_apn,ipv6_pdp_type,ipv6_ppp_auth_mode,ipv6_ppp_username,ipv6_ppp_passtmp,apn_num_preset";
454 valueReq.multi_data = 1;
455 return valueReq;
456 }
457 function deal(result) {
458 if (result) {
459 return {
460 APNs: result.APN_configtmp0 + "||" + result.APN_configtmp1 + "||" + result.APN_configtmp2 + "||" + result.APN_configtmp3 + "||" + result.APN_configtmp4 + "||"
461 +result.APN_configtmp5 + "||" + result.APN_configtmp6 + "||" + result.APN_configtmp7 + "||" + result.APN_configtmp8 + "||" + result.APN_configtmp9 + "||"
462 +result.APN_configtmp10 + "||" + result.APN_configtmp11 + "||" + result.APN_configtmp12 + "||" + result.APN_configtmp13 + "||" + result.APN_configtmp14 + "||"
463 +result.APN_configtmp15 + "||" + result.APN_configtmp16 + "||" + result.APN_configtmp17 + "||" + result.APN_configtmp18 + "||" + result.APN_configtmp19,
464 ipv6APNs: result.ipv6_APN_configtmp0 + "||" + result.ipv6_APN_configtmp1 + "||" + result.ipv6_APN_configtmp2 + "||" + result.ipv6_APN_configtmp3 + "||" + result.ipv6_APN_configtmp4 + "||"
465 +result.ipv6_APN_configtmp5 + "||" + result.ipv6_APN_configtmp6 + "||" + result.ipv6_APN_configtmp7 + "||" + result.ipv6_APN_configtmp8 + "||" + result.ipv6_APN_configtmp9 + "||"
466 +result.ipv6_APN_configtmp10 + "||" + result.ipv6_APN_configtmp11 + "||" + result.ipv6_APN_configtmp12 + "||" + result.ipv6_APN_configtmp13 + "||" + result.ipv6_APN_configtmp14 + "||"
467 +result.ipv6_APN_configtmp15 + "||" + result.ipv6_APN_configtmp16 + "||" + result.ipv6_APN_configtmp17 + "||" + result.ipv6_APN_configtmp18 + "||" + result.ipv6_APN_configtmp19,
468 apnMode: result.apn_mode,
469 profileName: result.m_profile_name || result.profile_name,
470 wanDial: result.wan_dial,
471 pdpType: result.pdp_type == 'IP' ? 'IP' : result.ipv6_pdp_type,
472 pdpSelect: result.pdp_select,
473 index: result.index,
474 currIndex: result.Current_index,
475 autoApns: result.apn_auto_config,
476 autoApnsV6: result.ipv6_apn_auto_config,
477 wanApn: result.wan_apn,
478 authMode: result.ppp_auth_mode.toLowerCase(),
479 username: result.ppp_username,
480 password: result.ppp_passtmp,
481 dnsMode: "",
482 dns1: "",
483 dns2: "",
484 wanApnV6: result.ipv6_wan_apn,
485 authModeV6: result.ipv6_ppp_auth_mode.toLowerCase(),
486 usernameV6: result.ipv6_ppp_username,
487 passwordV6: result.ipv6_ppp_passtmp,
488 dnsModeV6: "",
489 dns1V6: "",
490 dns2V6: "",
491 apnNumPreset: result.apn_num_preset
492 };
493 } else {
494 return {
495 result: false
496 };
497 }
498 }
499 }
mj.qua175b812025-04-03 03:52:28 -0700500 function getNetworkStatus() {
501 return stuffMake(arguments, {}, prepare, deal, null, false);
502 function prepare(values, isPost) {
503 var valueReq = {};
504 valueReq.cmd = "NETWORK_INFO";
505 return valueReq;
506 }
507 function deal(result) {
508 return {
509 sinr: result.lte_sinr,
510 rsrp: result.lte_rsrp,
511 rsrq: result.lte_rsrq,
512 plmn: result.lte_plmn,
513 pci: result.lte_pci,
514 cellid: result.lte_cellid,
515 band: result.lte_band
516 };
517 }
518 }
zw.wangcfae4372024-08-12 16:41:12 +0800519 function deleteApn() {
520 return stuffMake(arguments, {}, prepare, deal, null, true);
521 function prepare(values, isPost) {
522 var valueReq = {
523 apn_action: "delete",
524 apn_mode: "manual",
525 index: values.index
526 };
527 valueReq.goformId = "APN_PROC_EX";
528 return valueReq;
529 }
530 function deal(paramD) {
531 if (paramD.result == "success") {
532 return {
533 result: true
534 };
535 } else {
536 return {
537 result: false
538 };
539 }
540 }
541 }
542 function setDefaultApn() {
543 return stuffMake(arguments, {}, prepare, deal, null, true);
544 function prepare(values, isPost) {
545 var requestParam = {
546 goformId: "APN_PROC_EX",
547 apn_mode: values.apnMode
548 };
549 if (values.apnMode == 'manual') {
550 requestParam.apn_action = "set_default";
551 requestParam.set_default_flag = "1";
552 requestParam.pdp_type = values.pdpType;
553 requestParam.index = values.index;
554 }
555 return requestParam;
556 }
557 function deal(paramD) {
558 if (paramD.result == "success") {
559 return {
560 result: true
561 };
562 } else {
563 return {
564 result: false
565 };
566 }
567 }
568 }
569 function addOrEditApn() {
570 return stuffMake(arguments, {}, prepare, deal, null, true);
571 function prepare(values, isPost) {
572 var valueReq = {
573 goformId: "APN_PROC_EX",
574 apn_action: "save",
575 apn_mode: "manual",
576 profile_name: values.profileName,
577 wan_dial: '*99#',
578 pdp_type: values.pdpType,
579 pdp_select: 'auto',
580 index: values.index
581 };
582 if (values.pdpType == "IP") {
583 $.extend(valueReq, {
584 wan_apn: values.wanApn,
585 ppp_auth_mode: values.authMode,
586 ppp_username: values.username,
587 ppp_passtmp: values.password,
588 });
589 } else if (values.pdpType == "IPv6") {
590 $.extend(valueReq, {
591 ipv6_wan_apn: values.wanApnV6,
592 ipv6_ppp_auth_mode: values.authModeV6,
593 ipv6_ppp_username: values.usernameV6,
594 ipv6_ppp_passtmp: values.passwordV6
595 });
596 } else {
597 $.extend(valueReq, {
598 wan_apn: values.wanApn,
599 ppp_auth_mode: values.authMode,
600 ppp_username: values.username,
601 ppp_passtmp: values.password,
602 dns_mode: values.dnsMode,
603 prefer_dns_manual: values.dns1,
604 standby_dns_manual: values.dns2,
605 ipv6_wan_apn: values.wanApnV6,
606 ipv6_ppp_auth_mode: values.authModeV6,
607 ipv6_ppp_username: values.usernameV6,
608 ipv6_ppp_passtmp: values.passwordV6
609 });
610 }
611 return valueReq;
612 }
613 function deal(paramD) {
614 if (paramD.result == "success") {
615 return {
616 result: true
617 };
618 } else {
619 return {
620 result: false
621 };
622 }
623 }
624 }
625 var timerQueryString = ["modem_main_state", "pin_status", "blc_wan_mode", "blc_wan_auto_mode", "loginfo", "fota_new_version_state", "fota_current_upgrade_state", "fota_upgrade_selector", "network_provider", "is_mandatory", "sta_count", "m_sta_count"];
626 var loginTimerQueryString = ["signalbar", "network_type", "sub_network_type", "ppp_status", "rj45_state", "EX_SSID1", "sta_ip_status", "EX_wifi_profile", "m_ssid_enable", "wifi_cur_state", "SSID1", "simcard_roam", "lan_ipaddr", "battery_charging", "battery_vol_percent", "battery_pers", "spn_name_data", "spn_b1_flag", "spn_b2_flag", "realtime_tx_bytes", "realtime_rx_bytes", "realtime_time", "realtime_tx_thrpt", "realtime_rx_thrpt", "monthly_rx_bytes", "monthly_tx_bytes", "traffic_alined_delta", "monthly_time", "date_month", "data_volume_limit_switch", "data_volume_limit_size", "data_volume_alert_percent", "data_volume_limit_unit", "roam_setting_option", "upg_roam_switch", "fota_package_already_download", 'ssid', 'dial_mode', 'ethwan_mode', 'default_wan_name'];
627 if (config.HAS_SMS) {
628 $.merge(loginTimerQueryString, ["sms_received_flag", "sts_received_flag", 'sms_unread_num']);
629 }
630 var timerCallbackStack = [];
631 var timerCallbacks = [timerUpdateStatus];
632 function timerUpdater() {
633 if (!updateTimerFlag) {
634 setTimeout(function () {
635 timerUpdater();
636 }, 1000);
637 return;
638 }
639 var queryParams = checkTimerUpdaterParameters();
640 reqAsync(queryParams, function (paramD) {
641 for (var i = 0; i < timerCallbacks.length; i++) {
642 if (typeof timerCallbacks[i] === "function") {
643 timerCallbacks[i](paramD);
644 }
645 }
646 $.merge(timerCallbacks, timerCallbackStack);
647 timerCallbackStack = [];
648 setTimeout(function () {
649 timerUpdater();
650 }, 1000);
651 }, function () {
652 timerUpdaterErrorCallback();
653 setTimeout(function () {
654 timerUpdater();
655 }, 1000);
656 }, false);
657 }
658 function checkTimerUpdaterParameters() {
659 var queryParams = {
660 multi_data: 1,
661 };
662 if (window.location.hash && window.location.hash != '#entry' && informationAll.isLoggedIn) {
663 if (config.HAS_SMS) {
664 queryParams.sms_received_flag_flag = 0;
665 queryParams.sts_received_flag_flag = 0;
666 }
667 if (loginTimerQueryString.length > 0 && _.indexOf(timerQueryString, loginTimerQueryString[0]) == -1) {
668 $.each(loginTimerQueryString, function (i, n) {
669 timerQueryString.push(n);
670 });
671 }
672 } else {
673 if (loginTimerQueryString.length > 0 && _.indexOf(timerQueryString, loginTimerQueryString[0]) != -1) {
674 timerQueryString = _.without(timerQueryString, loginTimerQueryString);
675 }
676 }
677 queryParams.cmd = timerQueryString.join(",");
678 return queryParams;
679 }
680 function addCallback(cb) {
681 if (_.indexOf(timerCallbackStack, cb) == -1) {
682 timerCallbackStack.push(cb);
683 }
684 }
685 function removeCallback(cb) {
686 timerCallbacks = _.without(timerCallbacks, cb);
687 if (timerCallbacks.length == 0) {
688 timerCallbacks.push(timerUpdateStatus);
689 }
690 return timerCallbackStack;
691 }
692 function addQueryString(query) {
693 if (_.indexOf(timerQueryString, query) == -1) {
694 timerQueryString.push(query);
695 }
696 }
697 function removeQueryString(query) {
698 timerQueryString = _.without(timerQueryString, query);
699 return timerQueryString;
700 }
701 function timerUpdateStatus(paramD) {
702 informationAll.defaultWanName = paramD.default_wan_name;
703 informationAll.signalImg = typeof paramD.signalbar == 'undefined' ? '0' : paramD.signalbar;
704 informationAll.networkType = paramD.sub_network_type ? paramD.sub_network_type : (paramD.network_type ? paramD.network_type : '');
705 if (informationAll.networkType.toLowerCase().indexOf("limited_service") != -1 || informationAll.networkType.toLowerCase().indexOf("limited service") != -1) {
706 informationAll.networkType = "limited_service";
707 } else if (informationAll.networkType.toLowerCase().indexOf("no_service") != -1 || informationAll.networkType.toLowerCase().indexOf("no service") != -1) {
708 informationAll.networkType = "no_service";
709 }
710 informationAll.networkOperator = paramD.network_provider ? paramD.network_provider : '';
711 informationAll.spn_b1_flag = paramD.spn_b1_flag;
712 informationAll.spn_b2_flag = paramD.spn_b2_flag;
713 informationAll.spn_name_data = paramD.spn_name_data;
714 informationAll.connectStatus = typeof paramD.ppp_status == 'undefined' ? 'ppp_disconnected' : paramD.ppp_status;
715 informationAll.rj45ConnectStatus = (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state;
716 informationAll.ethWanMode = paramD.ethwan_mode;
717 informationAll.ssid1AttachedNum = paramD.sta_count == "" ? 0 : parseInt(paramD.sta_count, 10);
718 informationAll.ssid2AttachedNum = paramD.m_sta_count == "" ? 0 : parseInt(paramD.m_sta_count, 10);
719 informationAll.roamingStatus = getRoamStatus(informationAll.networkType, paramD.modem_main_state, paramD.simcard_roam);
720 informationAll.wifiStatus = paramD.wifi_cur_state == "1";
721 informationAll.simStatus = paramD.modem_main_state;
722 informationAll.pinStatus = paramD.pin_status;
723 var needMinutes = 3 * 60 * 60;
724 var batteryLevel = (paramD.battery_vol_percent && paramD.battery_vol_percent.length > 0) ? paramD.battery_vol_percent : 100;
725 informationAll.batteryPers = paramD.battery_pers;
726 var remainMinutes = Math.round(needMinutes * (1 - batteryLevel / 100));
727 informationAll.batteryStatus = (typeof paramD.battery_charging == 'undefined') ? '0' : paramD.battery_charging;
728 informationAll.batteryLevel = batteryLevel;
729 informationAll.batteryTime = remainMinutes.toString();
730 informationAll.data_counter = {
731 uploadRate: paramD.realtime_tx_thrpt == '' ? 0 : paramD.realtime_tx_thrpt,
732 downloadRate: paramD.realtime_rx_thrpt == '' ? 0 : paramD.realtime_rx_thrpt,
733 currentSent: paramD.realtime_tx_bytes == '' ? 0 : paramD.realtime_tx_bytes,
734 currentReceived: paramD.realtime_rx_bytes == '' ? 0 : paramD.realtime_rx_bytes,
735 currentConnectedTime: paramD.realtime_time == '' ? 0 : paramD.realtime_time,
736 monthlySent: paramD.monthly_tx_bytes == '' ? 0 : paramD.monthly_tx_bytes,
737 monthlyReceived: paramD.monthly_rx_bytes == '' ? 0 : paramD.monthly_rx_bytes,
738 traffic_alined_delta: paramD.traffic_alined_delta == '' ? 0 : paramD.traffic_alined_delta,
739 monthlyConnectedTime: paramD.monthly_time == '' ? 0 : paramD.monthly_time,
740 month: paramD.date_month == '' ? 1 : paramD.date_month
741 };
742 informationAll.ssid = paramD.SSID1;
743 informationAll.authMode = paramD.AuthMode;
744 informationAll.isLoggedIn = config.HAS_LOGIN ? paramD.loginfo == "ok" : true;
745 if (config.HAS_SMS) {
746 if (!informationAll.newSmsReceived) {
747 informationAll.newSmsReceived = paramD.sms_received_flag > 0;
748 }
749 if (!informationAll.smsReportReceived) {
750 informationAll.smsReportReceived = paramD.sts_received_flag > 0;
751 }
752 if (typeof paramD.sms_dev_unread_num != "undefined") {
753 informationAll.smsUnreadCount = config.SMS_UNREAD_NUM_INCLUDE_SIM ? parseInt(paramD.sms_dev_unread_num | 0, 10) + parseInt(paramD.sms_sim_unread_num | 0, 10) : parseInt(paramD.sms_dev_unread_num | 0, 10);
754 } else {
755 informationAll.smsUnreadCount = parseInt(paramD.sms_unread_num | 0, 10)
756 }
757 }
758 if (paramD.data_volume_limit_switch == '1') {
759 informationAll.limitVolumeEnable = true;
760 informationAll.limitVolumeType = paramD.data_volume_limit_unit == 'data' ? '1' : '0';
761 informationAll.limitVolumePercent = paramD.data_volume_alert_percent;
762 if (paramD.data_volume_limit_unit == 'data') {
763 var limitMonth = paramD.data_volume_limit_size.split("_");
764 informationAll.limitVolumeSize = limitMonth[0] * limitMonth[1] * 1024 * 1024;
765 } else {
766 informationAll.limitVolumeSize = paramD.data_volume_limit_size * 60 * 60;
767 }
768 } else {
769 informationAll.limitVolumeEnable = false;
770 informationAll.limitVolumeType = '1';
771 informationAll.limitVolumePercent = '100';
772 informationAll.limitVolumeSize = '0';
773 }
774 informationAll.connectWifiProfile = paramD.EX_wifi_profile;
775 informationAll.connectWifiSSID = paramD.EX_SSID1;
776 informationAll.connectWifiStatus = paramD.sta_ip_status;
777 informationAll.multi_ssid_enable = paramD.m_ssid_enable;
778 informationAll.roamMode = paramD.roam_setting_option;
779 if (paramD.blc_wan_mode == "AUTO") {
780 informationAll.blc_wan_mode = paramD.blc_wan_auto_mode ? paramD.blc_wan_auto_mode : 'AUTO_PPP';
781 } else {
782 informationAll.blc_wan_mode = paramD.blc_wan_mode ? paramD.blc_wan_mode : 'PPP';
783 }
784 informationAll.new_version_state = paramD.fota_new_version_state == "has_critical" || paramD.fota_new_version_state == "has_optional" || paramD.fota_new_version_state == "already_has_pkg";
785 informationAll.current_upgrade_state = paramD.fota_current_upgrade_state;
786 if (informationAll.current_upgrade_state == "verify_failed") {
787 informationAll.current_upgrade_state = "upgrade_pack_error";
788 }
789 informationAll.fota_user_selector = paramD.fota_upgrade_selector;
790 informationAll.is_mandatory = paramD.is_mandatory == "1" || paramD.fota_new_version_state == "has_critical";
791 informationAll.allowRoamingUpdate = paramD.upg_roam_switch;
792 informationAll.dialMode = paramD.dial_mode;
793 informationAll.fota_package_already_download = paramD.fota_package_already_download;
794 }
795 function timerUpdaterErrorCallback() {
796 informationAll.batteryStatus = '0';
797 }
798 function getRoamStatus(networkType, modemState, simcardRoam) {
799 if (("" == $.trim(networkType)) || "no_service" == networkType.toLowerCase() || "limited_service" == networkType.toLowerCase() || "modem_sim_undetected" == modemState || "modem_waitpin" == modemState || "modem_waitpuk" == modemState) {
800 return false;
801 }
802 if ("Internal" == simcardRoam || "International" == simcardRoam) {
803 return true;
804 } else {
805 return false;
806 }
807 }
808 $(document).ready(function () {
809 setTimeout(function () {
810 timerUpdater();
811 }, 0);
812 });
813 function setNetwork(strNetworkNumber, nRat, nSubAct, callback) {
814 if ((typeof(strNetworkNumber) !== "string") || (strNetworkNumber === "") || (typeof(nRat) !== "number") || (isNaN(nRat))) {
815 if (typeof(callback) === "function") {
816 callback(false);
817 return;
818 }
819 }
820 var nRat1 = -1;
821 if (nRat === 0) {
822 nRat1 = 0;
823 } else if (nRat === 2) {
824 nRat1 = 2;
825 } else if (nRat == 7) {
826 nRat1 = 7;
827 } else {
828 nRat1 = -1;
829 }
830 if (-1 === nRat1) {
831 if (typeof(callback) === "function") {
832 callback(false);
833 return;
834 }
835 }
836 var SubAct;
837 if (nSubAct.toString() == "NaN") {
838 SubAct = "";
839 } else {
840 SubAct = nSubAct;
841 }
842 reqAsync({
843 goformId: "SET_NETWORK",
844 NetworkNumber: strNetworkNumber,
845 Rat: nRat,
846 nSubrat: SubAct
847 }, function (paramD) {
848 if (paramD && paramD.result == "success") {
849 var flag;
850 var counter = 0;
851 var timer = setInterval(function () {
852 var obj = reqSync({
853 cmd: 'm_netselect_result',
854 }, false);
855 if (!obj) {
856 callback(false);
857 return;
858 }
859 if (obj.m_netselect_result == "manual_success") {
860 flag = "1";
861 window.clearInterval(timer);
862 callback(true);
863 } else if (obj.m_netselect_result == "manual_fail") {
864 flag = "0";
865 window.clearInterval(timer);
866 callback(false);
867 } else if (counter < 120) {
868 counter++;
869 } else {
870 window.clearInterval(timer);
871 callback(false);
872 }
873 }, 1000);
874 } else {
875 callback(false);
876 }
877 }, function (paramD) {
878 callback(false);
879 }, true);
880 }
881 function savePhoneBook() {
882 var callback = arguments[1];
883 return stuffMake(arguments, {}, prepare, deal, null, true);
884 function prepare(values, isPost) {
885 var valueReq = {};
886 valueReq.notCallback = true;
887 valueReq.goformId = "PBM_CONTACT_ADD";
888 valueReq.location = values.location;
889 valueReq.name = encodeMessage(values.name);
890 valueReq.mobilephone_num = values.mobile_phone_number;
891 if (valueReq.location == 1) {
892 valueReq.add_index_pc = values.index;
893 valueReq.homephone_num = values.home_phone_number;
894 valueReq.officephone_num = values.office_phone_number;
895 valueReq.email = encodeMessage(values.mail);
896 valueReq.groupchoose = values.group;
897 if (!valueReq.groupchoose) {
898 valueReq.groupchoose = "common";
899 }
900 } else {
901 valueReq.edit_index = values.index;
902 }
903 if (values.delId != undefined) {
904 valueReq.delId = values.delId;
905 }
906 return valueReq;
907 }
908 function deal(paramD) {
909 if (paramD && paramD.result == "success") {
910 addTimerSomething("pbm_write_flag", checkSavePhoneBook);
911 } else {
912 callback(paramD);
913 }
914 }
915 function checkSavePhoneBook(paramD) {
916 checkPbmWriteFlag(paramD, callback, checkSavePhoneBook);
917 }
918 }
919 function checkPbmWriteFlag(paramD, callback, fn) {
920 if (paramD.pbm_write_flag == "0") {
921 removeTimerSomething("pbm_write_flag", fn);
922 callback({
923 result: "success"
924 });
925 } else if (paramD.pbm_write_flag == "6" || paramD.pbm_write_flag == "7" || paramD.pbm_write_flag == "8" || paramD.pbm_write_flag == "9" || paramD.pbm_write_flag == "10" || paramD.pbm_write_flag == "11" || paramD.pbm_write_flag == "14") {
926 removeTimerSomething("pbm_write_flag", fn);
927 callback({
928 result: "fail"
929 });
930 } else {}
931 }
932 function deletePhoneBooks() {
933 var callback = arguments[1];
934 return stuffMake(arguments, {}, prepare, deal, null, true);
935 function prepare(values, isPost) {
936 var valueReq = {};
937 valueReq.notCallback = true;
938 valueReq.goformId = "PBM_CONTACT_DEL";
939 valueReq.del_option = "delete_num";
940 valueReq.delete_id = values.indexs.join(",");
941 return valueReq;
942 }
943 function deal(paramD) {
944 if (paramD && paramD.result == "success") {
945 addTimerSomething("pbm_write_flag", checkDeletePhoneBooks);
946 } else {
947 callback(paramD);
948 }
949 }
950 function checkDeletePhoneBooks(paramD) {
951 checkPbmWriteFlag(paramD, callback, checkDeletePhoneBooks);
952 }
953 }
954 function deleteAllPhoneBooks() {
955 var callback = arguments[1];
956 return stuffMake(arguments, {}, prepare, deal, null, true);
957 function prepare(values, isPost) {
958 var valueReq = {};
959 valueReq.notCallback = true;
960 valueReq.goformId = "PBM_CONTACT_DEL";
961 valueReq.del_option = "delete_all";
962 valueReq.del_all_location = values.location;
963 return valueReq;
964 }
965 function deal(paramD) {
966 if (paramD && paramD.result == "success") {
967 addTimerSomething("pbm_write_flag", checkDeleteAllPhoneBooks);
968 } else {
969 callback(paramD);
970 }
971 }
972 function checkDeleteAllPhoneBooks(paramD) {
973 checkPbmWriteFlag(paramD, callback, checkDeleteAllPhoneBooks);
974 }
975 }
976 function deleteAllPhoneBooksByGroup() {
977 var callback = arguments[1];
978 return stuffMake(arguments, {}, prepare, deal, null, true);
979 function prepare(values, isPost) {
980 var valueReq = {};
981 valueReq.notCallback = true;
982 valueReq.goformId = "PBM_CONTACT_DEL";
983 valueReq.del_option = "delete_all_by_group";
984 valueReq.del_all_location = 3;
985 valueReq.del_group = values.group;
986 return valueReq;
987 }
988 function deal(paramD) {
989 if (paramD && paramD.result == "success") {
990 addTimerSomething("pbm_write_flag", checkDeleteAllPhoneBooksByGroup);
991 } else {
992 callback(paramD);
993 }
994 }
995 function checkDeleteAllPhoneBooksByGroup(paramD) {
996 checkPbmWriteFlag(paramD, callback, checkDeleteAllPhoneBooksByGroup);
997 }
998 }
999 function setConnectionMode() {
1000 return stuffMake(arguments, {}, prepare, deal, null, true);
1001 function prepare(values, isPost) {
1002 var valueReq = {};
1003 valueReq.goformId = "SET_CONNECTION_MODE";
1004 valueReq.ConnectionMode = values.connectionMode;
1005 valueReq.roam_setting_option = values.isAllowedRoaming;
1006 return valueReq;
1007 }
1008 function deal(paramD) {
1009 if (paramD) {
1010 return paramD;
1011 } else {
1012 callback(paramD);
1013 }
1014 }
1015 }
1016 function getConnectionMode() {
1017 return stuffMake(arguments, {}, prepare, deal, null, false);
1018 function prepare(values, isPost) {
1019 var valueReq = {};
1020 valueReq.cmd = "ConnectionMode";
1021 return valueReq;
1022 }
1023 function deal(paramD) {
1024 if (paramD) {
1025 var result = {};
1026 result.connectionMode = paramD.connectionMode;
1027 result.isAllowedRoaming = paramD.autoConnectWhenRoaming;
1028 return result;
1029 } else {
1030 return errUnknownObj;
1031 }
1032 }
1033 }
1034 function _getPhoneBooks(array, location) {
1035 if (array[0].data_per_page == 0) {
1036 return {
1037 "pbm_data": []
1038 };
1039 }
1040 return stuffMake(array, {}, prepare, deal, null, false);
1041 function prepare(values, isPost) {
1042 var valueReq = {};
1043 valueReq.mem_store = location;
1044 if (location == 2) {
1045 valueReq.cmd = "pbm_data_total";
1046 } else {
1047 valueReq.cmd = "pbm_data_info";
1048 }
1049 valueReq.page = values.page;
1050 valueReq.data_per_page = values.data_per_page;
1051 valueReq.orderBy = values.orderBy;
1052 valueReq.isAsc = values.isAsc;
1053 return valueReq;
1054 }
1055 function deal(paramD) {
1056 if (paramD && paramD.pbm_data) {
1057 var books = [];
1058 $.each(paramD.pbm_data, function (i) {
1059 books.push({
1060 pbm_id: paramD.pbm_data[i].pbm_id,
1061 pbm_location: paramD.pbm_data[i].pbm_location,
1062 pbm_number: paramD.pbm_data[i].pbm_number,
1063 pbm_anr: paramD.pbm_data[i].pbm_anr,
1064 pbm_anr1: paramD.pbm_data[i].pbm_anr1,
1065 pbm_group: paramD.pbm_data[i].pbm_group,
1066 pbm_name: decodeMessage(paramD.pbm_data[i].pbm_name),
1067 pbm_email: decodeMessage(paramD.pbm_data[i].pbm_email)
1068 });
1069 });
1070 return {
1071 pbm_data: books
1072 };
1073 } else {
1074 return errUnknownObj;
1075 }
1076 }
1077 }
1078 function getPhoneBooksByGroup() {
1079 if (arguments[0].data_per_page == 0) {
1080 return {
1081 "pbm_data": []
1082 };
1083 }
1084 return stuffMake(arguments, {}, prepare, deal, null, false);
1085 function prepare(values, isPost) {
1086 var valueReq = {};
1087 valueReq.cmd = "pbm_data_total";
1088 valueReq.mem_store = 3;
1089 valueReq.pbm_group = values.group;
1090 valueReq.page = values.page;
1091 valueReq.data_per_page = values.data_per_page;
1092 valueReq.orderBy = values.orderBy;
1093 valueReq.isAsc = values.isAsc;
1094 return valueReq;
1095 }
1096 function deal(paramD) {
1097 if (paramD && paramD.pbm_data) {
1098 var books = [];
1099 $.each(paramD.pbm_data, function (i) {
1100 books.push({
1101 pbm_id: paramD.pbm_data[i].pbm_id,
1102 pbm_location: paramD.pbm_data[i].pbm_location,
1103 pbm_number: paramD.pbm_data[i].pbm_number,
1104 pbm_anr: paramD.pbm_data[i].pbm_anr,
1105 pbm_anr1: paramD.pbm_data[i].pbm_anr1,
1106 pbm_group: paramD.pbm_data[i].pbm_group,
1107 pbm_name: decodeMessage(paramD.pbm_data[i].pbm_name),
1108 pbm_email: decodeMessage(paramD.pbm_data[i].pbm_email)
1109 });
1110 });
1111 return {
1112 pbm_data: books
1113 };
1114 } else {
1115 return errUnknownObj;
1116 }
1117 }
1118 }
1119 function getDevicePhoneBooks() {
1120 return _getPhoneBooks(arguments, 1);
1121 }
1122 function getSIMPhoneBooks() {
1123 return _getPhoneBooks(arguments, 0);
1124 }
1125 function getPhoneBooks() {
1126 return _getPhoneBooks(arguments, 2);
1127 }
1128 function getPhoneBookReady() {
1129 return stuffMake(arguments, {}, prepare, deal, null, false);
1130 function prepare(values, isPost) {
1131 var valueReq = {};
1132 valueReq.cmd = "pbm_init_flag";
1133 return valueReq;
1134 }
1135 function deal(paramD) {
1136 if (paramD) {
1137 return paramD;
1138 } else {
1139 return errUnknownObj;
1140 }
1141 }
1142 }
1143 function getPhoneBookCapacity(array, isSIM) {
1144 return stuffMake(array, {}, prepare, deal, null, false);
1145 function prepare(values, isPost) {
1146 var valueReq = {};
1147 valueReq.cmd = "pbm_capacity_info";
1148 if (isSIM) {
1149 valueReq.pbm_location = "pbm_sim";
1150 } else {
1151 valueReq.pbm_location = "pbm_native";
1152 }
1153 return valueReq;
1154 }
1155 function deal(paramD) {
1156 if (paramD) {
1157 return paramD;
1158 } else {
1159 return errUnknownObj;
1160 }
1161 }
1162 }
1163 function getSIMPhoneBookCapacity() {
1164 var paramD = getPhoneBookCapacity(arguments, true);
1165 return {
1166 simPbmTotalCapacity: parseInt(paramD.pbm_sim_max_record_num),
1167 simPbmUsedCapacity: parseInt(paramD.pbm_sim_used_record_num),
1168 simType: paramD.pbm_sim_type,
1169 maxNameLen: parseInt(paramD.pbm_sim_max_name_len),
1170 maxNumberLen: parseInt(paramD.pbm_sim_max_number_len) > 40 ? 40 : parseInt(paramD.pbm_sim_max_number_len)
1171 };
1172 }
1173 function getDevicePhoneBookCapacity() {
1174 var paramD = getPhoneBookCapacity(arguments, false);
1175 return {
1176 pcPbmTotalCapacity: parseInt(paramD.pbm_dev_max_record_num),
1177 pcPbmUsedCapacity: parseInt(paramD.pbm_dev_used_record_num)
1178 };
1179 }
1180 function getAttachedCableDevices() {
1181 return stuffMake(arguments, {}, prepare, deal, null, false);
1182 function prepare(values, isPost) {
1183 var obj = {
1184 cmd: "lan_station_list"
1185 };
1186 return obj;
1187 }
1188 function deal(paramD) {
1189 var deviceArr = [];
1190 var attachedDevices = paramD.lan_station_list || paramD.station_list;
1191 for (var i = 0; attachedDevices && i < attachedDevices.length; i++) {
1192 var obj = {};
1193 obj.macAddress = attachedDevices[i].mac_addr;
1194 var hostname = attachedDevices[i].hostname;
1195 obj.hostName = hostname == "" ? $.i18n.prop("unknown") : hostname;
1196 obj.ipAddress = attachedDevices[i].ip_addr;
1197 deviceArr.push(obj);
1198 }
1199 return {
1200 attachedDevices: deviceArr
1201 };
1202 }
1203 }
1204 function getCurrentlyAttachedDevicesInfo() {
1205 return stuffMake(arguments, {}, prepare, deal, null, false);
1206 function prepare(values, isPost) {
1207 var obj = {
1208 cmd: "station_list"
1209 };
1210 return obj;
1211 }
1212 function deal(paramD) {
1213 var deviceArr = [];
1214 var attachedDevices = paramD.station_list;
1215 for (var i = 0; attachedDevices && i < attachedDevices.length; i++) {
1216 var obj = {};
1217 obj.macAddress = attachedDevices[i].mac_addr;
1218 var hostname = attachedDevices[i].hostname;
1219 obj.hostName = hostname == "" ? $.i18n.prop("unknown") : hostname;
1220 obj.ipAddress = attachedDevices[i].ip_addr;
1221 deviceArr.push(obj);
1222 }
1223 return {
1224 attachedDevices: deviceArr
1225 };
1226 }
1227 }
1228
1229 function setLanguage() {
1230 return stuffMake(arguments, {}, prepare, deal, null, true);
1231 function prepare(values, isPost) {
1232 var valueReq = {};
1233 valueReq.goformId = "SET_WEB_LANGUAGE";
1234 valueReq.Language = values.Language;
1235 return valueReq;
1236 }
1237 function deal(paramD) {
1238 if (paramD) {
1239 return paramD;
1240 } else {
1241 return errUnknownObj;
1242 }
1243 }
1244 }
1245 function getLanguage() {
1246 return stuffMake(arguments, {}, prepare, deal, null, false);
1247 function prepare(values, isPost) {
1248 var valueReq = {};
1249 valueReq.cmd = "Language";
1250 valueReq.multi_data = 1;
1251 return valueReq;
1252 }
1253 function deal(paramD) {
1254 if (paramD) {
1255 var result = {};
1256 result.Language = (paramD && paramD.Language) ? paramD.Language : "en";
1257 return result;
1258 } else {
1259 return errUnknownObj;
1260 }
1261 }
1262 }
1263
1264 function setBearerPreference() {
1265 return stuffMake(arguments, {}, prepare, deal, null, true);
1266 function prepare(values, isPost) {
1267 var valueReq = {};
1268 valueReq.goformId = "SET_BEARER_PREFERENCE";
1269 valueReq.BearerPreference = values.strBearerPreference;
1270 return valueReq;
1271 }
1272 function deal(paramD) {
1273 if (paramD) {
1274 return paramD;
1275 } else {
1276 return errUnknownObj;
1277 }
1278 }
1279 }
1280 function scanForNetwork(callback) {
1281 $.post("/reqproc/proc_post", {
1282 goformId: "SCAN_NETWORK"
1283 }, function (paramD) {
1284 if (paramD.result == "success") {
1285 checkScanStatus();
1286 } else {
1287 callback(false, []);
1288 }
1289 }, "json").error(function () {
1290 callback(false, []);
1291 });
1292 function checkScanStatus() {
1293 $.getJSON("/reqproc/proc_get", {
1294 cmd: "m_netselect_status",
1295 "_": new Date().getTime()
1296 }, function (paramD) {
1297 if (paramD.m_netselect_status == "manual_selecting") {
1298 setTimeout(checkScanStatus, 1000);
1299 } else {
1300 $.getJSON("/reqproc/proc_get", {
1301 cmd: "m_netselect_contents",
1302 "_": new Date().getTime()
1303 }, function (paramD2) {
1304 if (trim(paramD2.m_netselect_contents) != "") {
1305 parseScanResult(paramD2.m_netselect_contents);
1306 } else {
1307 callback(false, []);
1308 }
1309 }).error(function () {
1310 callback(false, []);
1311 });
1312 }
1313 }).error(function () {
1314 callback(false, []);
1315 });
1316 }
1317 function parseScanResult(result) {
1318 var pattern = /([^,;]*),([^,]*),([^,]*),([^,]*),([^,;]*)/g;
1319 var listNetwork = [];
1320 var mts;
1321 var unit = result.split(";");
1322 var unitString = "";
1323 for (i = 0; i < unit.length; i++) {
1324 var unitLength = unit[i].split(",").length;
1325 if (unitLength == 4) {
1326 unitString += unit[i] + ",NON;";
1327 } else {
1328 unitString += unit[i] + ";";
1329 }
1330 }
1331 while (mts = pattern.exec(unitString)) {
1332 if (mts != null) {
1333 listNetwork.push({
1334 strShortName: mts[2].replace(/\"/g, ''),
1335 strNumeric: mts[3].replace(/\D/g, ''),
1336 nRat: parseInt(mts[4], 10),
1337 nState: parseInt(mts[1], 10),
1338 SubAct: parseInt(mts[5], 10)
1339 });
1340 }
1341 }
1342 callback(true, listNetwork);
1343 }
1344 }
1345 function getNetSelectInfo() {
1346 return stuffMake(arguments, {}, prepare, deal, null, false);
1347 function prepare(values, isPost) {
1348 var valueReq = {};
1349 valueReq.cmd = "current_network_mode,m_netselect_save,net_select_mode,m_netselect_contents,net_select,ppp_status,modem_main_state";
1350 valueReq.multi_data = 1;
1351 return valueReq;
1352 }
1353 function deal(paramD) {
1354 if (paramD) {
1355 var result = {};
1356 result.current_network_mode = paramD.current_network_mode;
1357 result.net_select_mode = paramD.net_select_mode;
1358 result.m_netselect_save = paramD.m_netselect_save;
1359 result.m_netselect_contents = paramD.m_netselect_contents;
1360 result.net_select = paramD.net_select;
1361 result.ppp_status = paramD.ppp_status;
1362 result.modem_main_state = paramD.modem_main_state;
1363 return result;
1364 } else {
1365 return errUnknownObj;
1366 }
1367 }
1368 }
mj.qu19ac6692024-08-21 19:18:36 -07001369
zw.wangcfae4372024-08-12 16:41:12 +08001370 function getSMSMessages() {
1371 return stuffMake(arguments, {}, prepare, deal, {}, false);
1372 function prepare(values, isPost) {
1373 var obj = {
1374 cmd: "sms_data_total",
1375 page: values.page,
1376 data_per_page: config.SMS_DATABASE_SORT_SUPPORT ? values.smsCount : 500,
1377 mem_store: values.nMessageStoreType,
1378 tags: values.tags,
1379 order_by: values.orderBy
1380 };
1381 return obj;
1382 }
1383 function deal(paramD) {
1384 if (paramD && paramD.messages && paramD.messages.length > 0) {
1385 return {
1386 messages: parseMessages(paramD.messages)
1387 };
1388 } else {
1389 return {
1390 messages: []
1391 };
1392 }
1393 }
1394 }
1395 function parseMessages(messages, isReport) {
1396 var result = [];
1397 for (var i = 0; i < messages.length; i++) {
1398 if (!config.SHOW_UN_COMPLETE_CONCAT_SMS && typeof messages[i].received_all_concat_sms != "undefined" && messages[i].received_all_concat_sms == '0') {
1399 continue;
1400 }
1401 var oneMessage = {};
1402 oneMessage.id = messages[i].id;
1403 oneMessage.number = messages[i].number;
1404 oneMessage.content = isReport ? messages[i].content : decodeMessageContent(messages[i].content);
1405 oneMessage.time = transTime('20' + messages[i].date);
1406 oneMessage.isNew = messages[i].tag == "1";
1407 oneMessage.groupId = messages[i].draft_group_id;
1408 oneMessage.tag = messages[i].tag;
1409 oneMessage.receivedAll = messages[i].received_all_concat_sms == '1';
1410 result.push(oneMessage);
1411 }
1412 if (!config.SMS_DATABASE_SORT_SUPPORT) {
1413 var ids = [];
1414 var tmpResult = [];
1415 for (var i = result.length; i--; ) {
1416 var n = result[i];
1417 var idx = $.inArray(n.id, ids);
1418 if (idx == -1) {
1419 ids.push(n.id);
1420 tmpResult.push(n);
1421 } else {
1422 if (n.content.length > tmpResult[idx].content.length) {
1423 tmpResult[idx] = n;
1424 }
1425 }
1426 }
1427 return _.sortBy(tmpResult, function (n) {
1428 return 0 - n.id;
1429 });
1430 } else {
1431 return result;
1432 }
1433 }
1434 function decodeMessageContent(msgContent) {
1435 return decodeMessage(escapeMessage(msgContent));
1436 }
1437 function sendSMS() {
1438 var callback = arguments[1];
1439 var errorCabllback = arguments[2] ? arguments[2] : callback;
1440 return stuffMake(arguments, {}, prepare, deal, null, true);
1441 function prepare(values, isPost) {
1442 var obj = {
1443 goformId: "SEND_SMS",
1444 notCallback: true,
1445 Number: values.number,
1446 sms_time: getCurrentTimeString(),
1447 MessageBody: escapeMessage(encodeMessage(values.message)),
1448 ID: values.id,
1449 encode_type: getEncodeType(values.message).encodeType
1450 };
1451 return obj;
1452 }
1453 function deal(paramD) {
1454 if (!paramD) {
1455 errorCabllback($.extend(errUnknownObj, {
1456 errorType: "sendFail",
1457 errorText: "send_fail_try_again"
1458 }));
1459 return;
1460 }
1461 if (paramD.result == "success") {
1462 setTimeout(function () {
1463 getSmsStatusInfo({
1464 smsCmd: 4,
1465 errorType: "sendFail",
1466 errorText: "send_fail_try_again"
1467 }, callback, errorCabllback);
1468 }, 1000);
1469 } else {
1470 errorCabllback($.extend(errUnknownObj, {
1471 errorType: "sendFail",
1472 errorText: "send_fail_try_again"
1473 }));
1474 }
1475 }
1476 }
1477 function saveSMS() {
1478 var callback = arguments[1];
1479 var errorCabllback = arguments[2] ? arguments[2] : callback;
1480 return stuffMake(arguments, {}, prepare, deal, null, true);
1481 function prepare(values, isPost) {
1482 var obj = {
1483 notCallback: true,
1484 goformId: "SAVE_SMS",
1485 SMSMessage: escapeMessage(encodeMessage(values.message)),
1486 SMSNumber: values.numbers.join(";") + ";",
1487 Index: values.index,
1488 encode_type: getEncodeType(values.message).encodeType,
1489 sms_time: values.currentTimeString,
1490 draft_group_id: values.groupId
1491 };
1492 return obj;
1493 }
1494 function deal(paramD) {
1495 if (!paramD) {
1496 errorCabllback($.extend(errUnknownObj, {
1497 errorType: "saveFail",
1498 errorText: "save_fail"
1499 }));
1500 return;
1501 }
1502 if (paramD.result == "success") {
1503 getSmsStatusInfo({
1504 smsCmd: 5,
1505 errorType: "saveFail",
1506 errorText: "save_fail"
1507 }, callback, errorCabllback);
1508 } else {
1509 errorCabllback($.extend(errUnknownObj, {
1510 errorType: "saveFail",
1511 errorText: "save_fail"
1512 }));
1513 }
1514 }
1515 }
1516 function deleteAllMessages() {
1517 var callback = arguments[1];
1518 var errorCabllback = arguments[2] ? arguments[2] : callback;
1519 return stuffMake(arguments, {}, prepare, deal, null, true);
1520 function prepare(values, isPost) {
1521 var obj = {
1522 goformId: "ALL_DELETE_SMS",
1523 notCallback: true,
1524 which_cgi: values.location
1525 };
1526 return obj;
1527 }
1528 function deal(paramD) {
1529 if (!paramD) {
1530 errorCabllback($.extend(errUnknownObj, {
1531 errorType: "deleteFail",
1532 errorText: "delete_fail_try_again"
1533 }));
1534 return;
1535 }
1536 if (paramD.result == "success") {
1537 addTimerSomething("sms_cmd_status_info", checkDeleteStatus);
1538 } else {
1539 errorCabllback($.extend(errUnknownObj, {
1540 errorType: "deleteFail",
1541 errorText: "delete_fail_try_again"
1542 }));
1543 }
1544 }
1545 function checkDeleteStatus(paramD) {
1546 var status = paramD.sms_cmd_status_info;
1547 if (status == "2") {
1548 removeTimerSomething("sms_cmd_status_info", checkDeleteStatus);
1549 errorCabllback($.extend(errUnknownObj, {
1550 errorType: "deleteFail",
1551 errorText: "delete_fail_try_again"
1552 }));
1553 } else if (status == "3") {
1554 removeTimerSomething("sms_cmd_status_info", checkDeleteStatus);
1555 callback({
1556 result: true
1557 });
1558 }
1559 }
1560 }
1561 function deleteMessage() {
1562 var callback = arguments[1];
1563 var errorCabllback = arguments[2] ? arguments[2] : callback;
1564 return stuffMake(arguments, {}, prepare, deal, null, true);
1565 function prepare(values, isPost) {
1566 var msgIds = values.ids.join(";") + ";";
1567 var obj = {
1568 goformId: "DELETE_SMS",
1569 msg_id: msgIds,
1570 notCallback: true
1571 };
1572 return obj;
1573 }
1574 function deal(paramD) {
1575 if (!paramD) {
1576 errorCabllback($.extend(errUnknownObj, {
1577 errorType: "deleteFail",
1578 errorText: "delete_fail_try_again"
1579 }));
1580 return;
1581 }
1582 if (paramD.result == "success") {
1583 getSmsStatusInfo({
1584 smsCmd: 6,
1585 errorType: "deleteFail",
1586 errorText: "delete_fail_try_again"
1587 }, callback, errorCabllback);
1588 } else {
1589 errorCabllback($.extend(errUnknownObj, {
1590 errorType: "deleteFail",
1591 errorText: "delete_fail_try_again"
1592 }));
1593 }
1594 }
1595 }
1596 function getSmsStatusInfo(obj, callback, errorCabllback) {
1597 reqAsync({
1598 cmd: "sms_cmd_status_info",
1599 sms_cmd: obj.smsCmd,
1600 }, function (paramD) {
1601 if (paramD) {
1602 var status = paramD.sms_cmd_status_result;
1603 if (status == "2") {
1604 errorCabllback($.extend(errUnknownObj, {
1605 errorType: obj.errorType,
1606 errorText: obj.errorText
1607 }));
1608 } else if (status == "3") {
1609 callback({
1610 result: "success"
1611 });
1612 } else {
1613 window.setTimeout(function () {
1614 getSmsStatusInfo(obj, callback, errorCabllback);
1615 }, 1000);
1616 }
1617 } else {
1618 errorCabllback($.extend(errUnknownObj, {
1619 errorType: obj.errorType,
1620 errorText: obj.errorText
1621 }));
1622 }
1623 }, function (paramD) {
1624 errorCabllback($.extend(errUnknownObj, {
1625 errorType: obj.errorType,
1626 errorText: obj.errorText
1627 }));
1628 }, false);
1629 }
1630 function getSMSReady() {
1631 if (config.smsIsReady) {
1632 var callback = arguments[1];
1633 if (callback) {
1634 return callback({
1635 "sms_cmd": "1",
1636 "sms_cmd_status_result": "3"
1637 });
1638 } else {
1639 return {
1640 "sms_cmd": "1",
1641 "sms_cmd_status_result": "3"
1642 };
1643 }
1644 } else {
1645 return stuffMake(arguments, {}, prepare, deal, null, false);
1646 }
1647 function prepare(values, isPost) {
1648 var valueReq = {};
1649 valueReq.cmd = "sms_cmd_status_info";
1650 valueReq.sms_cmd = 1;
1651 return valueReq;
1652 }
1653 function deal(paramD) {
1654 if (paramD) {
1655 if (paramD.sms_cmd_status_result == "3") {
1656 config.smsIsReady = true;
1657 }
1658 return paramD;
1659 } else {
1660 return errUnknownObj;
1661 }
1662 }
1663 }
1664 function setSmsRead() {
1665 return stuffMake(arguments, {}, prepare, deal, null, true);
1666 function prepare(values, isPost) {
1667 var msgIds = values.ids.join(";");
1668 if (values.ids.length > 0) {
1669 msgIds += ";";
1670 }
1671 var obj = {
1672 goformId: "SET_MSG_READ",
1673 msg_id: msgIds,
1674 tag: 0
1675 };
1676 return obj;
1677 }
1678 function deal(paramD) {
1679 if (paramD.result == "success") {
1680 return {
1681 result: true
1682 };
1683 } else {
1684 return {
1685 result: false
1686 };
1687 }
1688 }
1689 }
1690 function getSMSDeliveryReport() {
1691 return stuffMake(arguments, {}, prepare, deal, {}, false);
1692 function prepare(values, isPost) {
1693 var obj = {
1694 cmd: "sms_status_rpt_data",
1695 page: values.page,
1696 data_per_page: values.smsCount
1697 };
1698 return obj;
1699 }
1700 function deal(paramD) {
1701 if (paramD) {
1702 return {
1703 messages: parseMessages(paramD.messages, true)
1704 };
1705 } else {
1706 return errUnknownObj;
1707 }
1708 }
1709 }
1710 function logout() {
1711 return stuffMake(arguments, {}, prepare, deal, null, true);
1712 function prepare(values, isPost) {
1713 var obj = $.extend({}, values);
1714 obj.goformId = "LOGOUT";
1715 return obj;
1716 }
1717 function deal(paramD) {
1718 if (paramD && paramD.result == "success") {
1719 informationAll.isLoggedIn = false;
1720 return {
1721 result: true
1722 };
1723 } else {
1724 return $.extend(errUnknownObj, {
1725 errorType: "loggedOutError"
1726 });
1727 }
1728 }
1729 }
1730 function changeManageInfo() {
1731 return stuffMake(arguments, {}, prepare, deal, null, true);
1732 function prepare(values, isPost) {
1733 var obj = {};
1734 obj.newPassword = config.PASSWORD_ENCODE ? Base64.encode(values.newValue) : values.newValue;
1735 obj.oldPassword = config.PASSWORD_ENCODE ? Base64.encode(values.oldValue) : values.oldValue;
1736 obj.goformId = "CHANGE_PASSWORD";
1737 return obj;
1738 }
1739 function deal(paramD) {
1740 if (paramD && paramD.result === "success") {
1741 return {
1742 result: true
1743 };
1744 } else {
1745 return $.extend(errUnknownObj, {
1746 errorType: "badPassword"
1747 });
1748 }
1749 }
1750 }
1751 function getPinData() {
1752 return stuffMake(arguments, {}, prepare, deal, null, false);
1753 function prepare(values, isPost) {
1754 var valueReq = {};
1755 valueReq.cmd = "pinnumber,pin_status,puknumber";
1756 valueReq.multi_data = 1;
1757 return valueReq;
1758 }
1759 function deal(paramD) {
1760 if (paramD) {
1761 return paramD;
1762 } else {
1763 return errUnknownObj;
1764 }
1765 }
1766 }
1767 function enablePin() {
1768 return stuffMake(arguments, {}, prepare, deal, null, true);
1769 function prepare(values, isPost) {
1770 var obj = {};
1771 obj.goformId = "ENABLE_PIN";
1772 obj.OldPinNumber = values.oldPin;
1773 return obj;
1774 }
1775 function deal(paramD) {
1776 if (paramD && paramD.result === "success") {
1777 return {
1778 result: true
1779 };
1780 } else {
1781 return {
1782 result: false
1783 };
1784 }
1785 }
1786 }
1787 function disablePin() {
1788 return stuffMake(arguments, {}, prepare, deal, null, true);
1789 function prepare(values, isPost) {
1790 var obj = {};
1791 obj.goformId = "DISABLE_PIN";
1792 obj.OldPinNumber = values.oldPin;
1793 return obj;
1794 }
1795 function deal(paramD) {
1796 if (paramD && paramD.result === "success") {
1797 return {
1798 result: true
1799 };
1800 } else {
1801 return {
1802 result: false
1803 };
1804 }
1805 }
1806 }
1807 function changePin() {
1808 return stuffMake(arguments, {}, prepare, deal, null, true);
1809 function prepare(values, isPost) {
1810 var obj = {};
1811 obj.goformId = "ENABLE_PIN";
1812 obj.OldPinNumber = values.oldPin;
1813 obj.NewPinNumber = values.newPin;
1814 return obj;
1815 }
1816 function deal(paramD) {
1817 if (paramD && paramD.result === "success") {
1818 return {
1819 result: true
1820 };
1821 } else {
1822 return {
1823 result: false
1824 };
1825 }
1826 }
1827 }
1828 function getLanInfo() {
1829 return stuffMake(arguments, {}, prepare, deal, null, false);
1830 function prepare(values, isPost) {
1831 var valueReq = {};
1832 valueReq.cmd = "lan_ipaddr,lan_netmask,mac_address,dhcpEnabled,dhcpStart,dhcpEnd,dhcpLease_hour";
1833 valueReq.multi_data = 1;
1834 return valueReq;
1835 }
1836 function deal(paramD) {
1837 if (paramD) {
1838 var result = {};
1839 result.ipAddress = paramD.lan_ipaddr;
1840 result.subnetMask = paramD.lan_netmask;
1841 result.macAddress = paramD.mac_address;
1842 result.dhcpServer = paramD.dhcpEnabled;
1843 result.dhcpStart = paramD.dhcpStart;
1844 result.dhcpEnd = paramD.dhcpEnd;
1845 result.dhcpLease = parseInt(paramD.dhcpLease_hour, 10);
1846 return result;
1847 } else {
1848 return errUnknownObj;
1849 }
1850 }
1851 }
1852 function setLanInfo() {
1853 return stuffMake(arguments, {}, prepare, deal, null, true);
1854 function prepare(values, isPost) {
1855 var valueReq = {};
1856 valueReq.goformId = "DHCP_SETTING";
1857 valueReq.lanIp = values.ipAddress;
1858 valueReq.lanNetmask = values.subnetMask;
1859 valueReq.lanDhcpType = values.dhcpServer == "1" ? "SERVER" : "DISABLE";
1860 if (valueReq.lanDhcpType == "SERVER") {
1861 valueReq.dhcpStart = values.dhcpStart;
1862 valueReq.dhcpEnd = values.dhcpEnd;
1863 valueReq.dhcpLease = values.dhcpLease;
1864 }
1865 valueReq.dhcp_reboot_flag = 1;
1866 return valueReq;
1867 }
1868 function deal(paramD) {
1869 if (paramD) {
1870 return paramD;
1871 } else {
1872 return errUnknownObj;
1873 }
1874 }
1875 }
1876 function getSmsSetting() {
1877 return stuffMake(arguments, {}, prepare, deal, null, false);
1878 function prepare(values, isPost) {
1879 var valueReq = {};
1880 valueReq.cmd = "sms_parameter_info";
1881 return valueReq;
1882 }
1883 function deal(paramD) {
1884 if (paramD) {
1885 var result = {};
1886 result.centerNumber = paramD.sms_para_sca;
1887 result.memStroe = paramD.sms_para_mem_store;
1888 result.deliveryReport = paramD.sms_para_status_report;
1889 switch (parseInt(paramD.sms_para_validity_period, 10)) {
1890 case 143:
1891 result.validity = "twelve_hours";
1892 break;
1893 case 167:
1894 result.validity = "one_day";
1895 break;
1896 case 173:
1897 result.validity = "one_week";
1898 break;
1899 case 244:
1900 result.validity = "largest";
1901 break;
1902 case 255:
1903 result.validity = "largest";
1904 break;
1905 default:
1906 result.validity = "twelve_hours";
1907 break;
1908 }
1909 return result;
1910 } else {
1911 return errUnknownObj;
1912 }
1913 }
1914 }
1915 function setSmsSetting() {
1916 var callback = arguments[1];
1917 var errorCabllback = arguments[2] ? arguments[2] : callback;
1918 return stuffMake(arguments, {}, prepare, deal, null, true);
1919 function prepare(values, isPost) {
1920 var valueReq = {};
1921 valueReq.goformId = "SET_MESSAGE_CENTER";
1922 valueReq.save_time = values.validity;
1923 valueReq.MessageCenter = values.centerNumber;
1924 valueReq.status_save = values.deliveryReport;
1925 valueReq.save_location = 'native';
1926 valueReq.notCallback = true;
1927 return valueReq;
1928 }
1929 function deal(paramD) {
1930 if (!paramD) {
1931 errorCabllback($.extend(errUnknownObj, {
1932 errorType: "smsSettingFail",
1933 errorText: "error_info"
1934 }));
1935 return;
1936 }
1937 if (paramD.result == "success") {
1938 getSmsStatusInfo({
1939 smsCmd: 3,
1940 errorType: "smsSettingFail",
1941 errorText: "error_info"
1942 }, callback, errorCabllback);
1943 } else {
1944 errorCabllback($.extend(errUnknownObj, {
1945 errorType: "deleteFail",
1946 errorText: "delete_fail_try_again"
1947 }));
1948 }
1949 }
1950 }
1951 function restoreFactorySettings() {
1952 var preErrorObj = {};
1953 if (config.HAS_PARENTAL_CONTROL && config.currentUserInChildGroup != false) {
1954 preErrorObj = {
1955 errorType: 'no_auth'
1956 };
1957 }
1958 return stuffMake(arguments, preErrorObj, prepare, deal, null, true);
1959 function prepare(values, isPost) {
1960 var valueReq = {};
1961 valueReq.goformId = "RESTORE_FACTORY_SETTINGS";
1962 return valueReq;
1963 }
1964 function deal(paramD) {
1965 if (paramD) {
1966 return paramD;
1967 } else {
1968 return errUnknownObj;
1969 }
1970 }
1971 }
1972 function checkRestoreStatus(successCallback) {
1973 var valueReq = {};
1974 valueReq.cmd = "restore_flag";
1975 valueReq.multi_data = 1;
1976 reqAsync(valueReq, function (paramD) {
1977 if (paramD && paramD.restore_flag === "1") {
1978 successCallback();
1979 } else {
1980 setTimeout(function () {
1981 checkRestoreStatus(successCallback);
1982 }, 5000);
1983 }
1984 }, function () {
1985 setTimeout(function () {
1986 checkRestoreStatus(successCallback);
1987 }, 5000);
1988 }, false);
1989 }
1990 function getWpsInfo() {
1991 return stuffMake(arguments, {}, prepare, deal, null, false);
1992 function prepare(values, isPost) {
1993 var valueReq = {};
1994 valueReq.cmd = "wifi_wps_index,WscModeOption,AuthMode,wifi_cur_state,EncrypType,wps_mode,WPS_SSID,m_ssid_enable,SSID1,m_SSID,m_EncrypType,m_AuthMode,wifi_sta_connection";
1995 valueReq.multi_data = 1;
1996 return valueReq;
1997 }
1998 function deal(paramD) {
1999 if (paramD) {
2000 var result = {};
2001 result.wpsFlag = paramD.WscModeOption;
2002 result.authMode = paramD.AuthMode;
2003 result.wpsType = paramD.wps_mode;
2004 result.radioFlag = paramD.wifi_cur_state == "1" ? "1" : "0";
2005 result.encrypType = paramD.EncrypType;
2006 result.wpsSSID = paramD.WPS_SSID;
2007 result.ssidEnable = paramD.m_ssid_enable;
2008 result.ssid = paramD.SSID1;
2009 result.multiSSID = paramD.m_SSID;
2010 result.m_encrypType = paramD.m_EncrypType;
2011 result.wifi_wps_index = paramD.wifi_wps_index;
2012 result.AuthMode = paramD.AuthMode;
2013 result.m_AuthMode = paramD.m_AuthMode;
2014 result.ap_station_enable = paramD.wifi_sta_connection;
2015 return result;
2016 } else {
2017 return errUnknownObj;
2018 }
2019 }
2020 }
2021 function openWps() {
2022 return stuffMake(arguments, {}, prepare, deal, null, true);
2023 function prepare(values, isPost) {
2024 var valueReq = {};
2025 valueReq.goformId = "WIFI_WPS_SET";
2026 valueReq.WPS_SSID = values.wpsSSID;
2027 valueReq.wps_mode = values.wpsType;
2028 valueReq.wifi_wps_index = values.wpsIndex;
2029 if (valueReq.wps_mode == 'PIN') {
2030 valueReq.wps_pin = values.wpsPin;
2031 }
2032 return valueReq;
2033 }
2034 function deal(paramD) {
2035 if (paramD) {
2036 return paramD;
2037 } else {
2038 return errUnknownObj;
2039 }
2040 }
2041 }
2042 function openWps_5g() {
2043 return stuffMake(arguments, {}, prepare, deal, null, true);
2044 function prepare(values, isPost) {
2045 var valueReq = {};
2046 valueReq.goformId = "WIFI_M_WPS_SET";
2047 valueReq.m_WPS_SSID = values.wpsSSID;
2048 valueReq.m_wps_mode = values.wpsType;
2049 valueReq.m_wifi_wps_index = values.wpsIndex;
2050 if (valueReq.m_wps_mode == 'PIN') {
2051 valueReq.m_wps_pin = values.wpsPin;
2052 }
2053 return valueReq;
2054 }
2055 function deal(paramD) {
2056 if (paramD) {
2057 return paramD;
2058 } else {
2059 return errUnknownObj;
2060 }
2061 }
2062 }
2063 function getSleepMode() {
2064 return stuffMake(arguments, {}, prepare, deal, null, false);
2065 function prepare(values, isPost) {
2066 var valueReq = {};
mj.qu19ac6692024-08-21 19:18:36 -07002067 valueReq.cmd = "wifi_sleep_mode,Sleep_interval";
2068 valueReq.multi_data = 1;
zw.wangcfae4372024-08-12 16:41:12 +08002069 return valueReq;
2070 }
2071 function deal(paramD) {
2072 if (paramD) {
2073 var result = {};
mj.qu19ac6692024-08-21 19:18:36 -07002074 result.wifiSleepMode = paramD.wifi_sleep_mode;
zw.wangcfae4372024-08-12 16:41:12 +08002075 result.sleepMode = paramD.Sleep_interval;
2076 return result;
2077 } else {
2078 return errUnknownObj;
2079 }
2080 }
2081 }
2082 function setSleepMode() {
2083 return stuffMake(arguments, {}, prepare, deal, null, true);
2084 function prepare(values, isPost) {
2085 var valueReq = {};
2086 valueReq.goformId = "SET_WIFI_SLEEP_INFO";
mj.qu19ac6692024-08-21 19:18:36 -07002087 valueReq.sysWifiSleepMode = values.wifiSleepMode;
zw.wangcfae4372024-08-12 16:41:12 +08002088 valueReq.sysIdleTimeToSleep = values.sleepMode;
2089 return valueReq;
2090 }
2091 function deal(paramD) {
2092 if (paramD) {
2093 return paramD;
2094 } else {
2095 return errUnknownObj;
2096 }
2097 }
2098 }
2099 function getSysSecurity() {
2100 return stuffMake(arguments, {}, prepare, deal, null, false);
2101 function prepare(values, isPost) {
2102 var valueReq = {};
2103 valueReq.cmd = "RemoteManagement,WANPingFilter";
2104 valueReq.multi_data = 1;
2105 return valueReq;
2106 }
2107 function deal(paramD) {
2108 if (paramD) {
2109 var result = {};
2110 result.remoteFlag = paramD.RemoteManagement == "1" ? "1" : "0";
2111 result.pingFlag = paramD.WANPingFilter == "1" ? "1" : "0";
2112 return result;
2113 } else {
2114 return errUnknownObj;
2115 }
2116 }
2117 }
2118 function setSysSecurity() {
2119 return stuffMake(arguments, {}, prepare, deal, null, true);
2120 function prepare(values, isPost) {
2121 var valueReq = {};
2122 valueReq.goformId = "FW_SYS";
2123 valueReq.remoteManagementEnabled = values.remoteFlag;
2124 valueReq.pingFrmWANFilterEnabled = values.pingFlag;
2125 return valueReq;
2126 }
2127 function deal(paramD) {
2128 if (paramD) {
2129 return paramD;
2130 } else {
2131 return errUnknownObj;
2132 }
2133 }
2134 }
2135 function getPortForward() {
2136 return stuffMake(arguments, {}, prepare, deal, null, false);
2137 function prepare(values, isPost) {
2138 var valueReq = {};
2139 valueReq.cmd = "PortForwardEnable,PortForwardRules_0,PortForwardRules_1,PortForwardRules_2,PortForwardRules_3,PortForwardRules_4,PortForwardRules_5,PortForwardRules_6,PortForwardRules_7,PortForwardRules_8,PortForwardRules_9";
2140 valueReq.multi_data = 1;
2141 return valueReq;
2142 }
2143 function deal(paramD) {
2144 if (paramD) {
2145 var result = {};
2146 result.portForwardEnable = paramD.PortForwardEnable;
2147 var rules = [];
2148 if (paramD.PortForwardRules_0 != "") {
2149 rules.push([0, paramD.PortForwardRules_0]);
2150 }
2151 if (paramD.PortForwardRules_1 != "") {
2152 rules.push([1, paramD.PortForwardRules_1]);
2153 }
2154 if (paramD.PortForwardRules_2 != "") {
2155 rules.push([2, paramD.PortForwardRules_2]);
2156 }
2157 if (paramD.PortForwardRules_3 != "") {
2158 rules.push([3, paramD.PortForwardRules_3]);
2159 }
2160 if (paramD.PortForwardRules_4 != "") {
2161 rules.push([4, paramD.PortForwardRules_4]);
2162 }
2163 if (paramD.PortForwardRules_5 != "") {
2164 rules.push([5, paramD.PortForwardRules_5]);
2165 }
2166 if (paramD.PortForwardRules_6 != "") {
2167 rules.push([6, paramD.PortForwardRules_6]);
2168 }
2169 if (paramD.PortForwardRules_7 != "") {
2170 rules.push([7, paramD.PortForwardRules_7]);
2171 }
2172 if (paramD.PortForwardRules_8 != "") {
2173 rules.push([8, paramD.PortForwardRules_8]);
2174 }
2175 if (paramD.PortForwardRules_9 != "") {
2176 rules.push([9, paramD.PortForwardRules_9]);
2177 }
2178 result.portForwardRules = parsePortForwardRules(rules);
2179 return result;
2180 } else {
2181 return errUnknownObj;
2182 }
2183 }
2184 function parsePortForwardRules(paramD) {
2185 var rules = [];
2186 if (paramD && paramD.length > 0) {
2187 for (var i = 0; i < paramD.length; i++) {
2188 var aRule = {};
2189 var elements = paramD[i][1].split(",");
2190 aRule.index = paramD[i][0];
2191 aRule.ipAddress = elements[0];
2192 aRule.portRange = elements[1] + ' - ' + elements[2];
2193 aRule.protocol = transProtocol(elements[3]);
2194 aRule.comment = elements[4];
2195 rules.push(aRule);
2196 }
2197 }
2198 return rules;
2199 }
2200 }
2201 function setPortForward() {
2202 return stuffMake(arguments, {}, prepare, deal, null, true);
2203 function prepare(values, isPost) {
2204 var valueReq = {};
2205 valueReq.goformId = "FW_FORWARD_ADD";
2206 valueReq.ipAddress = values.ipAddress;
2207 valueReq.portStart = values.portStart;
2208 valueReq.portEnd = values.portEnd;
2209 valueReq.protocol = values.protocol;
2210 valueReq.comment = values.comment;
2211 return valueReq;
2212 }
2213 function deal(paramD) {
2214 if (paramD) {
2215 return paramD;
2216 } else {
2217 return errUnknownObj;
2218 }
2219 }
2220 }
2221 function deleteForwardRules() {
2222 return stuffMake(arguments, {}, prepare, deal, null, true);
2223 function prepare(values, isPost) {
2224 var valueReq = {};
2225 valueReq.goformId = "FW_FORWARD_DEL";
2226 valueReq.delete_id = values.indexs.join(';') + ";";
2227 return valueReq;
2228 }
2229 function deal(paramD) {
2230 if (paramD) {
2231 return paramD;
2232 } else {
2233 return errUnknownObj;
2234 }
2235 }
2236 }
2237 function enableVirtualServer() {
2238 return stuffMake(arguments, {}, prepare, deal, null, true);
2239 function prepare(values, isPost) {
2240 var valueReq = {};
2241 valueReq.goformId = "VIRTUAL_SERVER";
2242 valueReq.PortForwardEnable = values.portForwardEnable;
2243 return valueReq;
2244 }
2245 function deal(paramD) {
2246 if (paramD) {
2247 return paramD;
2248 } else {
2249 return errUnknownObj;
2250 }
2251 }
2252 }
2253 function wifiDecode(fact1,fact2,encode_aes) {//wifiDecode(paramD.rnum_js,paramD.imei,paramD.WPAPSK1_enaes,paramD.m_WPAPSK1_enaes);
2254 var kstr = fact1 + fact2 + "FFFFFFFFFFFFFFFFFFFFFFFF";
2255 var kstr_final;
2256 var kiv_final;
2257
2258 kstr_final = kstr.substring(0, 24);
2259 kiv_final = kstr.substring(0, 16);
2260
2261 var tkey = CryptoJS.enc.Latin1.parse(kstr_final);
2262 var tiv = CryptoJS.enc.Latin1.parse(kiv_final);
2263 var decdata = CryptoJS.AES.decrypt(encode_aes, tkey, {
2264 iv: tiv,
2265 mode: CryptoJS.mode.CBC,
2266 padding: CryptoJS.pad.ZeroPadding
2267 }).toString(CryptoJS.enc.Utf8);
2268
2269 return decdata;
2270 }
2271 function getQuickSettingInfo() {
2272 return stuffMake(arguments, {}, prepare, deal, null, false);
2273 function prepare(values, isPost) {
2274 var valueReq = {};
2275 var wpask = config.PASSWORD_ENCODE ? ",WPAPSK1_encode" : ",imei,rnum_js,WPAPSK1_enaes";
2276 valueReq.cmd = "pdp_type,ipv6_pdp_type,wifi_cur_state,SSID1,HideSSID,AuthMode,WscModeOption,ppp_status,apn_index,ipv6_apn_index,ipv6_APN_index,m_profile_name,apn_mode,EncrypType,DefaultKeyID,Key1Str1,Key2Str1,Key3Str1,Key4Str1" + wpask + ",APN_configtmp0,APN_configtmp1,APN_configtmp2,APN_configtmp3,APN_configtmp4,APN_configtmp5,APN_configtmp6,APN_configtmp7,APN_configtmp8,APN_configtmp9,APN_configtmp10,APN_configtmp11,APN_configtmp12,APN_configtmp13,APN_configtmp14,APN_configtmp15,APN_configtmp16,APN_configtmp17,APN_configtmp18,APN_configtmp19" + ",ipv6_APN_configtmp0,ipv6_APN_configtmp1,ipv6_APN_configtmp2,ipv6_APN_configtmp3,ipv6_APN_configtmp4,ipv6_APN_configtmp5,ipv6_APN_configtmp6,ipv6_APN_configtmp7,ipv6_APN_configtmp8,ipv6_APN_configtmp9,ipv6_APN_configtmp10,ipv6_APN_configtmp11,ipv6_APN_configtmp12,ipv6_APN_configtmp13,ipv6_APN_configtmp14,ipv6_APN_configtmp15,ipv6_APN_configtmp16,ipv6_APN_configtmp17,ipv6_APN_configtmp18,ipv6_APN_configtmp19";
2277 valueReq.multi_data = 1;
2278 return valueReq;
2279 }
2280 function deal(paramD) {
2281 if (paramD) {
2282 if (config.PASSWORD_ENCODE) {
2283 paramD.WPAPSK1 = Base64.decode(paramD.WPAPSK1_encode);
2284 } else {
2285 paramD.WPAPSK1 = wifiDecode(paramD.rnum_js,paramD.imei,paramD.WPAPSK1_enaes);
2286 }
2287 return paramD;
2288 } else {
2289 return errUnknownObj;
2290 }
2291 }
2292 }
2293 function setQuickSetting4IPv6() {
2294 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
2295 function prepare(values) {
2296 var valueReq = {
2297 goformId: "QUICK_SETUP_EX",
2298 index: values.apn_index,
2299 pdp_type: values.pdp_type,
2300 apn_mode: values.apnMode,
2301 profile_name: values.profile_name,
2302 wan_apn: values.wan_apn,
2303 ppp_auth_mode: values.ppp_auth_mode,
2304 ppp_username: values.ppp_username,
2305 ppp_passtmp: values.ppp_passtmp,
2306 ipv6_wan_apn: values.ipv6_wan_apn,
2307 ipv6_ppp_auth_mode: values.ipv6_ppp_auth_mode,
2308 ipv6_ppp_username: values.ipv6_ppp_username,
2309 ipv6_ppp_passtmp: values.ipv6_ppp_passtmp,
2310 SSID_name: values.SSID_name,
2311 SSID_Broadcast: values.SSID_Broadcast,
2312 Encryption_Mode_hid: values.Encryption_Mode_hid,
2313 security_shared_mode: values.security_shared_mode,
2314 WPA_PreShared_Key: config.PASSWORD_ENCODE ? Base64.encode(values.WPA_PreShared_Key) : values.WPA_PreShared_Key,
2315 wep_default_key: values.wep_default_key,
2316 WPA_ENCRYPTION_hid: values.WPA_ENCRYPTION_hid
2317 }
2318 valueReq.wep_key_1 = values.wep_key_1;
2319 valueReq.wep_key_2 = values.wep_key_2;
2320 valueReq.wep_key_3 = values.wep_key_3;
2321 valueReq.wep_key_4 = values.wep_key_4;
2322 if (values.wep_default_key == '1') {
2323 valueReq.WEP2Select = values.WEP2Select;
2324 } else if (values.wep_default_key == '2') {
2325 valueReq.WEP3Select = values.WEP3Select;
2326 } else if (values.wep_default_key == '3') {
2327 valueReq.WEP4Select = values.WEP4Select;
2328 } else {
2329 valueReq.WEP1Select = values.WEP1Select;
2330 }
2331 return valueReq;
2332 }
2333 function deal(paramD) {
2334 if (paramD) {
2335 return paramD;
2336 } else {
2337 return $.extend(errUnknownObj, {
2338 errorType: "SetSetUpError"
2339 });
2340 }
2341 }
2342 }
2343 function stuffMakeAndCheckServerIsOnline(arg, prepare, deal) {
2344 var isServerOnline = false;
2345 var isCallbackExecuted = false;
2346 var values = prepare(arg[0]);
2347 var callback = arg[1];
2348 var successCallback = function (paramD) {
2349 isServerOnline = true;
2350 if (!isCallbackExecuted && callback) {
2351 callback(deal(paramD));
2352 }
2353 isCallbackExecuted = true;
2354 };
2355 var errorMethod = arg[2];
2356 var errorCallback = function () {
2357 isServerOnline = true;
2358 if (errorMethod) {
2359 errorMethod();
2360 }
2361 };
2362 reqAsync(values, successCallback, errorCallback, true);
2363 addTimeout(function () {
2364 if (isServerOnline == false) {
2365 var timer = addInterval(function () {
2366 if (isServerOnline == false) {
2367 getLanguage({}, function (paramD) {
2368 window.clearInterval(timer);
2369 successCallback({
2370 result: "success"
2371 });
2372 });
2373 }
2374 }, 1000);
2375 }
2376 }, 5000);
2377 }
2378 function getSDConfiguration() {
2379 return stuffMake(arguments, {}, prepare, deal, null, false);
2380 function prepare(values, isPost) {
2381 var valueReq = {
2382 cmd: "sdcard_mode_option,sd_card_state,HTTP_SHARE_STATUS,HTTP_SHARE_WR_AUTH,HTTP_SHARE_FILE",
2383 multi_data: 1
2384 };
2385 return valueReq;
2386 }
2387 function deal(paramD) {
2388 if (paramD) {
2389 var fileToShare;
2390 if ("mmc2" == paramD.HTTP_SHARE_FILE || "/mmc2" == paramD.HTTP_SHARE_FILE || "/mmc2/" == paramD.HTTP_SHARE_FILE) {
2391 fileToShare = "1";
2392 } else {
2393 fileToShare = "0";
2394 }
2395 var result = {
2396 sd_mode: paramD.sdcard_mode_option == "1" ? "0" : "1",
2397 sd_status: paramD.sd_card_state,
2398 share_status: paramD.HTTP_SHARE_STATUS == "Enabled" ? "1" : "0",
2399 share_auth: paramD.HTTP_SHARE_WR_AUTH == "readOnly" ? "0" : "1",
2400 file_to_share: fileToShare,
2401 share_file: paramD.HTTP_SHARE_FILE
2402 };
2403 return result;
2404 } else {
2405 return errUnknownObj;
2406 }
2407 }
2408 }
2409 function setSdCardMode() {
2410 return stuffMake(arguments, {}, prepare, deal, null, true);
2411 function prepare(values, isPost) {
2412 var valueReq = {
2413 goformId: "HTTPSHARE_MODE_SET",
2414 mode_set: values.mode == "0" ? "http_share_mode" : "usb_mode"
2415 };
2416 return valueReq;
2417 }
2418 function deal(paramD) {
2419 if (paramD && paramD.result == 'success') {
2420 return {
2421 result: 'success'
2422 };
2423 } else if (paramD && paramD.result == 'processing') {
2424 return {
2425 result: 'processing'
2426 };
2427 } else {
2428 return {
2429 result: false
2430 };
2431 }
2432 }
2433 }
2434 function checkFileExists() {
2435 return stuffMake(arguments, {}, prepare, deal, null, true);
2436 function prepare(values, isPost) {
2437 var valueReq = {
2438 goformId: "GOFORM_HTTPSHARE_CHECK_FILE",
2439 path_SD_CARD: values.path
2440 };
2441 return valueReq;
2442 }
2443 function deal(paramD) {
2444 if (paramD) {
2445 if (paramD.result == "no_sdcard") {
2446 return {
2447 status: "no_sdcard"
2448 };
2449 } else if (paramD.result == "noexist") {
2450 return {
2451 status: "noexist"
2452 };
2453 } else if (paramD.result == "processing") {
2454 return {
2455 status: "processing"
2456 };
2457 } else {
2458 return {
2459 status: "exist"
2460 };
2461 }
2462 } else {
2463 return errUnknownObj;
2464 }
2465 }
2466 }
2467 function getFileList() {
2468 return stuffMake(arguments, {}, prepare, deal, null, true);
2469 function prepare(values, isPost) {
2470 var valueReq = {
2471 goformId: "HTTPSHARE_ENTERFOLD",
2472 path_SD_CARD: values.path,
2473 indexPage: values.index
2474 };
2475 return valueReq;
2476 }
2477 function deal(paramD) {
2478 if (paramD) {
2479 if (paramD.result == 'failure') {
2480 return $.extend(errUnknownObj, {
2481 errorType: "get_file_list_failure"
2482 });
2483 } else if (paramD.result == "no_sdcard") {
2484 return $.extend(errUnknownObj, {
2485 errorType: "no_sdcard"
2486 });
2487 } else {
2488 return parseSdCardFile(paramD.result);
2489 }
2490 } else {
2491 return errUnknownObj;
2492 }
2493 }
2494 function parseSdCardFile(result) {
2495 var fileInfo = {};
2496 fileInfo.totalRecord = result.totalRecord;
2497 var fileArr = [];
2498 var details = result.fileInfo;
2499 for (var i = 0; details && i < details.length; i++) {
2500 if (details[i].fileName == "") {
2501 continue;
2502 }
2503 var obj = {};
2504 obj.fileName = details[i].fileName;
2505 obj.attribute = details[i].attribute;
2506 obj.size = details[i].size;
2507 obj.lastUpdateTime = details[i].lastUpdateTime;
2508 fileArr.push(obj);
2509 }
2510 fileInfo.details = fileArr;
2511 return fileInfo;
2512 }
2513 }
2514 function fileRename() {
2515 return stuffMake(arguments, {}, prepare, deal, null, true);
2516 function prepare(values, isPost) {
2517 var d = new Date();
2518 var currentTime = d.getTime();
2519 var zoneOffsetSeconds = d.getTimezoneOffset() * 60;
2520 return {
2521 goformId: "HTTPSHARE_FILE_RENAME",
2522 path_SD_CARD: values.path,
2523 OLD_NAME_SD_CARD: values.oldPath,
2524 NEW_NAME_SD_CARD: values.newPath,
2525 path_SD_CARD_time: transUnixTime(currentTime),
2526 path_SD_CARD_time_unix: Math.round((currentTime - zoneOffsetSeconds * 1000) / 1e3)
2527 };
2528 }
2529 function deal(paramD) {
2530 if (paramD) {
2531 if (paramD.result == "success") {
2532 return {
2533 result: true
2534 };
2535 } else if (paramD.result == "no_sdcard") {
2536 return $.extend(errUnknownObj, {
2537 errorType: "no_sdcard"
2538 });
2539 } else if (paramD.result == "noexist") {
2540 return $.extend(errUnknownObj, {
2541 errorType: "no_exist"
2542 });
2543 } else if (paramD.result == "processing") {
2544 return $.extend(errUnknownObj, {
2545 errorType: "sd_file_processing_cant_rename"
2546 });
2547 } else {
2548 return {
2549 result: false
2550 };
2551 }
2552 } else {
2553 return errUnknownObj;
2554 }
2555 }
2556 }
2557 function getSdMemorySizes() {
2558 return stuffMake(arguments, {}, prepare, deal, null, false);
2559 function prepare(values, isPost) {
2560 var valueReq = {
2561 cmd: "HTTPSHARE_GETCARD_VALUE"
2562 };
2563 return valueReq;
2564 }
2565 function deal(paramD) {
2566 if (!paramD || (paramD.result && paramD.result == "no_sdcard")) {
2567 return $.extend(errUnknownObj, {
2568 errorType: "no_sdcard"
2569 });
2570 } else {
2571 return {
2572 totalMemorySize: paramD.sd_card_total_size == "" ? 0 : paramD.sd_card_total_size * 32 * 1024,
2573 availableMemorySize: paramD.sd_card_avi_space == "" ? 0 : paramD.sd_card_avi_space * 32 * 1024
2574 };
2575 }
2576 }
2577 }
2578 function deleteFilesAndFolders() {
2579 return stuffMake(arguments, {}, prepare, deal, null, true);
2580 function prepare(values, isPost) {
2581 var currentTime = new Date().getTime();
2582 var valueReq = {
2583 goformId: "HTTPSHARE_DEL",
2584 path_SD_CARD: values.path,
2585 name_SD_CARD: values.names,
2586 path_SD_CARD_time: transUnixTime(currentTime),
2587 path_SD_CARD_time_unix: Math.round(currentTime / 1e3)
2588 };
2589 return valueReq;
2590 }
2591 function deal(paramD) {
2592 if (paramD.result && paramD.result == "failure") {
2593 return {
2594 status: "failure"
2595 };
2596 } else if (paramD.result && paramD.result == "no_sdcard") {
2597 return {
2598 status: "no_sdcard"
2599 };
2600 } else if (paramD.result && paramD.result == "processing") {
2601 return {
2602 status: "processing"
2603 };
2604 } else if (paramD.result && paramD.result == "success") {
2605 return {
2606 status: "success"
2607 };
2608 } else {
2609 return errUnknownObj;
2610 }
2611 }
2612 }
2613 function createFolder() {
2614 return stuffMake(arguments, {}, prepare, deal, null, true);
2615 function prepare(values, isPost) {
2616 var d = new Date();
2617 var currentTime = d.getTime();
2618 var zoneOffsetSeconds = d.getTimezoneOffset() * 60;
2619 return {
2620 goformId: "HTTPSHARE_NEW",
2621 path_SD_CARD: values.path,
2622 path_SD_CARD_time: transUnixTime(currentTime),
2623 path_SD_CARD_time_unix: Math.round((currentTime - zoneOffsetSeconds * 1000) / 1e3)
2624 };
2625 }
2626 function deal(paramD) {
2627 if (paramD.result && paramD.result == "failure") {
2628 return $.extend(errUnknownObj, {
2629 errorType: "create_folder_failure"
2630 });
2631 } else if (paramD.result && paramD.result == "no_sdcard") {
2632 return $.extend(errUnknownObj, {
2633 errorType: "no_sdcard"
2634 });
2635 } else if (paramD.result && paramD.result == "success") {
2636 return {
2637 result: true
2638 };
2639 } else {
2640 return errUnknownObj;
2641 }
2642 }
2643 }
2644 function setSdCardSharing() {
2645 return stuffMake(arguments, {}, prepare, deal, null, true);
2646 function prepare(values, isPost) {
2647 var valueReq = {
2648 goformId: "HTTPSHARE_AUTH_SET",
2649 HTTP_SHARE_STATUS: values.share_status == "1" ? "Enabled" : "Disabled",
2650 HTTP_SHARE_WR_AUTH: values.share_auth == "1" ? "readWrite" : "readOnly",
2651 HTTP_SHARE_FILE: values.share_file
2652 };
2653 return valueReq;
2654 }
2655 function deal(paramD) {
2656 if (paramD) {
2657 if (paramD.result == "no_sdcard") {
2658 return $.extend(errUnknownObj, {
2659 errorType: "no_sdcard"
2660 });
2661 } else {
2662 return {
2663 result: true
2664 };
2665 }
2666 } else {
2667 return errUnknownObj;
2668 }
2669 }
2670 }
2671 function getPortFilter() {
2672 return stuffMake(arguments, {}, prepare, deal, null, false);
2673 function prepare(values, isPost) {
2674 var valueReq = {};
2675 valueReq.cmd = "IPPortFilterEnable,DefaultFirewallPolicy,IPPortFilterRules_0,IPPortFilterRules_1,IPPortFilterRules_2,IPPortFilterRules_3,IPPortFilterRules_4,IPPortFilterRules_5,IPPortFilterRules_6,IPPortFilterRules_7,IPPortFilterRules_8,IPPortFilterRules_9";
2676 valueReq.cmd += ",IPPortFilterRulesv6_0,IPPortFilterRulesv6_1,IPPortFilterRulesv6_2,IPPortFilterRulesv6_3,IPPortFilterRulesv6_4,IPPortFilterRulesv6_5,IPPortFilterRulesv6_6,IPPortFilterRulesv6_7,IPPortFilterRulesv6_8,IPPortFilterRulesv6_9";
2677 valueReq.multi_data = 1;
2678 return valueReq;
2679 }
2680 function deal(paramD) {
2681 if (paramD) {
2682 var result = {};
2683 result.portFilterEnable = paramD.IPPortFilterEnable;
2684 result.defaultPolicy = paramD.DefaultFirewallPolicy;
2685 var rules = [];
2686 if (paramD.IPPortFilterRules_0 != "") {
2687 rules.push([0, paramD.IPPortFilterRules_0]);
2688 }
2689 if (paramD.IPPortFilterRules_1 != "") {
2690 rules.push([1, paramD.IPPortFilterRules_1]);
2691 }
2692 if (paramD.IPPortFilterRules_2 != "") {
2693 rules.push([2, paramD.IPPortFilterRules_2]);
2694 }
2695 if (paramD.IPPortFilterRules_3 != "") {
2696 rules.push([3, paramD.IPPortFilterRules_3]);
2697 }
2698 if (paramD.IPPortFilterRules_4 != "") {
2699 rules.push([4, paramD.IPPortFilterRules_4]);
2700 }
2701 if (paramD.IPPortFilterRules_5 != "") {
2702 rules.push([5, paramD.IPPortFilterRules_5]);
2703 }
2704 if (paramD.IPPortFilterRules_6 != "") {
2705 rules.push([6, paramD.IPPortFilterRules_6]);
2706 }
2707 if (paramD.IPPortFilterRules_7 != "") {
2708 rules.push([7, paramD.IPPortFilterRules_7]);
2709 }
2710 if (paramD.IPPortFilterRules_8 != "") {
2711 rules.push([8, paramD.IPPortFilterRules_8]);
2712 }
2713 if (paramD.IPPortFilterRules_9 != "") {
2714 rules.push([9, paramD.IPPortFilterRules_9]);
2715 }
2716 result.portFilterRules = parsePortFilterRules(rules, "IPv4");
2717 var v6Rules = [];
2718 if (paramD.IPPortFilterRulesv6_0 != "") {
2719 v6Rules.push([10, paramD.IPPortFilterRulesv6_0]);
2720 }
2721 if (paramD.IPPortFilterRulesv6_1 != "") {
2722 v6Rules.push([11, paramD.IPPortFilterRulesv6_1]);
2723 }
2724 if (paramD.IPPortFilterRulesv6_2 != "") {
2725 v6Rules.push([12, paramD.IPPortFilterRulesv6_2]);
2726 }
2727 if (paramD.IPPortFilterRulesv6_3 != "") {
2728 v6Rules.push([13, paramD.IPPortFilterRulesv6_3]);
2729 }
2730 if (paramD.IPPortFilterRulesv6_4 != "") {
2731 v6Rules.push([14, paramD.IPPortFilterRulesv6_4]);
2732 }
2733 if (paramD.IPPortFilterRulesv6_5 != "") {
2734 v6Rules.push([15, paramD.IPPortFilterRulesv6_5]);
2735 }
2736 if (paramD.IPPortFilterRulesv6_6 != "") {
2737 v6Rules.push([16, paramD.IPPortFilterRulesv6_6]);
2738 }
2739 if (paramD.IPPortFilterRulesv6_7 != "") {
2740 v6Rules.push([17, paramD.IPPortFilterRulesv6_7]);
2741 }
2742 if (paramD.IPPortFilterRulesv6_8 != "") {
2743 v6Rules.push([18, paramD.IPPortFilterRulesv6_8]);
2744 }
2745 if (paramD.IPPortFilterRulesv6_9 != "") {
2746 v6Rules.push([19, paramD.IPPortFilterRulesv6_9]);
2747 }
2748 result.portFilterRules = _.union(result.portFilterRules, parsePortFilterRules(v6Rules, "IPv6"));
2749 return result;
2750 } else {
2751 return errUnknownObj;
2752 }
2753 }
2754 function parsePortFilterRules(paramD, ipTypeTmp) {
2755 var rules = [];
2756 if (paramD && paramD.length > 0) {
2757 for (var i = 0; i < paramD.length; i++) {
2758 var aRule = {};
2759 var elements = paramD[i][1].split(",");
2760 aRule.index = paramD[i][0];
2761 aRule.macAddress = elements[11];
2762 aRule.destIpAddress = elements[4] == "any/0" ? "" : elements[4];
2763 aRule.sourceIpAddress = elements[0] == "any/0" ? "" : elements[0];
2764 aRule.destPortRange = elements[6] == '0' ? '' : elements[6] + " - " + elements[7];
2765 aRule.sourcePortRange = elements[2] == '0' ? '' : elements[2] + " - " + elements[3];
2766 aRule.action = elements[9] == 1 ? "filter_accept" : "filter_drop";
2767 aRule.protocol = transProtocol(elements[8]);
2768 aRule.comment = elements[10];
2769 aRule.ipType = ipTypeTmp;
2770 rules.push(aRule);
2771 }
2772 }
2773 return rules;
2774 }
2775 }
2776 function setPortFilterBasic() {
2777 return stuffMake(arguments, {}, prepare, deal, null, true);
2778 function prepare(values, isPost) {
2779 var valueReq = {};
2780 valueReq.goformId = "BASIC_SETTING";
2781 valueReq.portFilterEnabled = values.portFilterEnable;
2782 valueReq.defaultFirewallPolicy = values.defaultPolicy;
2783 return valueReq;
2784 }
2785 function deal(paramD) {
2786 if (paramD) {
2787 return paramD;
2788 } else {
2789 return errUnknownObj;
2790 }
2791 }
2792 }
2793 function setPortFilter() {
2794 return stuffMake(arguments, {}, prepare, deal, null, true);
2795 function prepare(values, isPost) {
2796 var valueReq = {};
2797 valueReq.goformId = "ADD_IP_PORT_FILETER_V4V6";
2798 valueReq.ip_version = values.ipType;
2799 valueReq.mac_address = values.macAddress;
2800 valueReq.dip_address = values.destIpAddress;
2801 valueReq.sip_address = values.sourceIpAddress;
2802 valueReq.dFromPort = values.destPortStart;
2803 valueReq.dToPort = values.destPortEnd;
2804 valueReq.sFromPort = values.sourcePortStart;
2805 valueReq.sToPort = values.sourcePortEnd;
2806 valueReq.action = values.action;
2807 valueReq.protocol = values.protocol;
2808 valueReq.comment = values.comment;
2809 return valueReq;
2810 }
2811 function deal(paramD) {
2812 if (paramD) {
2813 return paramD;
2814 } else {
2815 return errUnknownObj;
2816 }
2817 }
2818 }
2819 function deleteFilterRules() {
2820 return stuffMake(arguments, {}, prepare, deal, null, true);
2821 function prepare(values, isPost) {
2822 var valueReq = {};
2823 var deleteIds = _.filter(values.indexs, function (item) {
2824 return item.length == 1;
2825 });
2826 valueReq.goformId = "DEL_IP_PORT_FILETER_V4V6";
2827 var deletev6Ids = [];
2828 _.each(values.indexs, function (item) {
2829 if (item.length == 2) {
2830 deletev6Ids.push(item.substring(1));
2831 }
2832 });
2833 valueReq.delete_id_v6 = deletev6Ids.length > 0 ? deletev6Ids.join(';') + ";" : "";
2834 valueReq.delete_id = deleteIds.length > 0 ? deleteIds.join(';') + ";" : "";
2835 return valueReq;
2836 }
2837 function deal(paramD) {
2838 if (paramD) {
2839 return paramD;
2840 } else {
2841 return errUnknownObj;
2842 }
2843 }
2844 }
2845 function getWifiAdvance() {
2846 return stuffMake(arguments, {}, prepare, deal, null, false);
2847 function prepare(values, isPost) {
2848 var valueReq = {};
2849 valueReq.cmd = "WirelessMode,CountryCode,Channel,HT_MCS,wifi_band,wifi_11n_cap,MAX_Access_num,m_MAX_Access_num,MAX_Station_num,wifi_sta_connection";
2850 valueReq.multi_data = 1;
2851 return valueReq;
2852 }
2853 function deal(paramD) {
2854 if (paramD) {
2855 var result = {
2856 mode: paramD.WirelessMode,
2857 countryCode: paramD.CountryCode,
2858 channel: paramD.Channel,
2859 rate: paramD.HT_MCS,
2860 wifiBand: paramD.wifi_band == 'a' ? 'a' : 'b',
2861 bandwidth: paramD.wifi_11n_cap,
2862 MAX_Station_num: $.isNumeric(paramD.MAX_Station_num) ? paramD.MAX_Station_num : config.MAX_STATION_NUMBER,
2863 MAX_Access_num: paramD.MAX_Access_num,
2864 m_MAX_Access_num: paramD.m_MAX_Access_num,
2865 ap_station_enable: paramD.wifi_sta_connection
2866 };
2867 return result;
2868 } else {
2869 return errUnknownObj;
2870 }
2871 }
2872 }
2873 function setWifiAdvance() {
2874 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
2875 function prepare(values) {
2876 var valueReq = {
2877 goformId: "SET_WIFI_INFO",
2878 wifiMode: values.mode,
2879 countryCode: values.countryCode,
2880 MAX_Access_num: values.station,
2881 m_MAX_Access_num: values.m_station
2882 };
2883 if (config.WIFI_BAND_SUPPORT) {
2884 valueReq.wifi_band = values.wifiBand;
2885 }
2886 if (config.WIFI_BAND_SUPPORT && values.wifiBand == 'a') {
2887 valueReq.selectedChannel = 'auto';
2888 } else {
2889 valueReq.selectedChannel = values.channel;
2890 valueReq.abg_rate = values.rate;
2891 }
2892 if (config.WIFI_BANDWIDTH_SUPPORT) {
2893 valueReq.wifi_11n_cap = values.bandwidth;
2894 }
2895 return valueReq;
2896 }
2897 function deal(paramD) {
2898 if (paramD) {
2899 return paramD;
2900 } else {
2901 return errUnknownObj;
2902 }
2903 }
2904 }
2905 function getDeviceInfo() {
2906 return stuffMake(arguments, {}, prepare, deal, null, false);
2907 function prepare(values, isPost) {
2908 var wpask = config.PASSWORD_ENCODE ? "WPAPSK1_encode,m_WPAPSK1_encode," : "rnum_js,WPAPSK1_enaes,m_WPAPSK1_enaes,";
2909 var valueReq = {
mj.qua175b812025-04-03 03:52:28 -07002910 cmd: "wifi_coverage,m_ssid_enable,imei,ziccid,cell_id,network_type,sub_network_type,rssi,rscp,lte_rsrp,imsi,sim_imsi,cr_version,hw_version,MAX_Access_num," + wpask + "SSID1,AuthMode,m_SSID,m_AuthMode,m_HideSSID,m_MAX_Access_num,lan_ipaddr," + "mac_address,msisdn,LocalDomain,wan_ipaddr,static_wan_ipaddr,ipv6_wan_ipaddr,ipv6_pdp_type,pdp_type,ppp_status,sta_ip_status,rj45_state,ethwan_mode",
zw.wangcfae4372024-08-12 16:41:12 +08002911 multi_data: 1
2912 };
2913 return valueReq;
2914 }
2915 function deal(paramD) {
2916 if (paramD) {
2917 return {
2918 ssid: paramD.SSID1,
2919 authMode: paramD.AuthMode,
2920 passPhrase: config.PASSWORD_ENCODE ? Base64.decode(paramD.WPAPSK1_encode) : wifiDecode(paramD.rnum_js,paramD.imei,paramD.WPAPSK1_enaes),
2921 m_ssid: paramD.m_SSID,
2922 m_AuthMode: paramD.m_AuthMode,
2923 m_passPhrase: config.PASSWORD_ENCODE ? Base64.decode(paramD.m_WPAPSK1_encode) : wifiDecode(paramD.rnum_js,paramD.imei,paramD.m_WPAPSK1_enaes),
2924 m_max_access_num: paramD.m_MAX_Access_num,
2925 multi_ssid_enable: paramD.m_ssid_enable,
2926 ipAddress: paramD.lan_ipaddr,
2927 wanIpAddress: paramD.wan_ipaddr,
2928 staticWanIpAddress: paramD.static_wan_ipaddr,
2929 ipv6WanIpAddress: paramD.ipv6_wan_ipaddr,
2930 ipv6PdpType: paramD.ipv6_pdp_type,
2931 macAddress: paramD.mac_address,
2932 simSerialNumber: paramD.msisdn,
2933 lanDomain: paramD.LocalDomain,
2934 imei: paramD.imei,
2935 signal: convertSignal(paramD),
2936 imsi: paramD.imsi || paramD.sim_imsi,
mj.qua175b812025-04-03 03:52:28 -07002937 iccid: paramD.ziccid,
2938 cellid: paramD.cell_id,
zw.wangcfae4372024-08-12 16:41:12 +08002939 sw_version: paramD.cr_version,
2940 hw_version: paramD.hw_version,
2941 max_access_num: paramD.MAX_Access_num,
2942 wifiRange: paramD.wifi_coverage,
2943 pdpType: paramD.pdp_type,
2944 rj45ConnectStatus: (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state,
2945 blc_wan_mode: informationAll.blc_wan_mode,
2946 connectStatus: paramD.ppp_status,
2947 wifiConStatus: paramD.sta_ip_status,
2948 ethwan_mode: paramD.ethwan_mode.toUpperCase()
2949 };
2950 } else {
2951 return errUnknownObj;
2952 }
2953 }
2954 }
2955 function getDeviceInfoLow() {
2956 return stuffMake(arguments, {}, prepare, deal, null, false);
2957 function prepare(values, isPost) {
2958 var valueReq = {
2959 cmd: "imei,rnum_js",
2960 multi_data: 1
2961 };
2962 return valueReq;
2963 }
2964 function deal(paramD) {
2965 if (paramD) {
2966 var kstr = paramD.rnum_js + paramD.imei + "FFFFFFFFFFFFFFFFFFFFFFFF";
2967 var kstr_final;
2968 var kiv_final;
2969
2970 kstr_final = kstr.substring(0, 24);
2971 kiv_final = kstr.substring(0, 16);
2972
2973 return {
2974 skey: kstr_final,
2975 siv: kiv_final
2976 };
2977 } else {
mj.qu19ac6692024-08-21 19:18:36 -07002978
zw.wangcfae4372024-08-12 16:41:12 +08002979 return {
2980 skey: "FFFFFFFFFFFFFFFFFFFFFFFF",
2981 siv: "FFFFFFFFFFFFFFFF"
2982 };
2983 }
2984 }
2985 }
2986 function getWifiRange() {
2987 return stuffMake(arguments, {}, prepare, deal, null, false);
2988 function prepare(values, isPost) {
2989 var valueReq = {};
2990 valueReq.cmd = "wifi_coverage";
2991 return valueReq;
2992 }
2993 function deal(paramD) {
2994 if (paramD) {
2995 var result = {};
2996 result.wifiRangeMode = paramD.wifi_coverage;
2997 return result;
2998 } else {
2999 return errUnknownObj;
3000 }
3001 }
3002 }
3003 function setWifiRange() {
3004 return stuffMake(arguments, {}, prepare, deal, null, true);
3005 function prepare(values, isPost) {
3006 var valueReq = {};
3007 valueReq.goformId = "SET_WIFI_COVERAGE";
3008 valueReq.wifi_coverage = values.wifiRangeMode;
3009 return valueReq;
3010 }
3011 function deal(paramD) {
3012 if (paramD) {
3013 return paramD;
3014 } else {
3015 return errUnknownObj;
3016 }
3017 }
3018 }
3019 function getUpnpSetting() {
3020 return stuffMake(arguments, {}, prepare, deal, null, false);
3021 function prepare(values, isPost) {
3022 var valueReq = {};
3023 valueReq.cmd = "upnpEnabled";
3024 valueReq.multi_data = 1;
3025 return valueReq;
3026 }
3027 function deal(paramD) {
3028 if (paramD) {
3029 var result = {};
3030 result.upnpSetting = paramD.upnpEnabled == "1" ? "1" : "0";
3031 return result;
3032 } else {
3033 return errUnknownObj;
3034 }
3035 }
3036 }
3037 function setUpnpSetting() {
3038 return stuffMake(arguments, {}, prepare, deal, null, true);
3039 function prepare(values, isPost) {
3040 var valueReq = {};
3041 valueReq.goformId = "UPNP_SETTING";
3042 valueReq.upnp_setting_option = values.upnpSetting;
3043 return valueReq;
3044 }
3045 function deal(paramD) {
3046 if (paramD) {
3047 return paramD;
3048 } else {
3049 return errUnknownObj;
3050 }
3051 }
3052 }
3053 function getDmzSetting() {
3054 return stuffMake(arguments, {}, prepare, deal, null, false);
3055 function prepare(values, isPost) {
3056 var valueReq = {};
3057 valueReq.cmd = "DMZEnable,DMZIPAddress";
3058 valueReq.multi_data = 1;
3059 return valueReq;
3060 }
3061 function deal(paramD) {
3062 if (paramD) {
3063 var result = {};
3064 result.dmzSetting = paramD.DMZEnable == "1" ? "1" : "0";
3065 result.ipAddress = paramD.DMZIPAddress;
3066 return result;
3067 } else {
3068 return errUnknownObj;
3069 }
3070 }
3071 }
3072 function setDmzSetting() {
3073 return stuffMake(arguments, {}, prepare, deal, null, true);
3074 function prepare(values, isPost) {
3075 var valueReq = {};
3076 valueReq.goformId = "DMZ_SETTING";
3077 valueReq.DMZEnabled = values.dmzSetting;
3078 if (valueReq.DMZEnabled == '1') {
3079 valueReq.DMZIPAddress = values.ipAddress;
3080 }
3081 return valueReq;
3082 }
3083 function deal(paramD) {
3084 if (paramD) {
3085 return paramD;
3086 } else {
3087 return errUnknownObj;
3088 }
3089 }
3090 }
3091 function getPortMap() {
3092 return stuffMake(arguments, {}, prepare, deal, null, false);
3093 function prepare(values, isPost) {
3094 var valueReq = {};
3095 valueReq.cmd = "PortMapEnable,PortMapRules_0,PortMapRules_1,PortMapRules_2,PortMapRules_3,PortMapRules_4,PortMapRules_5,PortMapRules_6,PortMapRules_7,PortMapRules_8,PortMapRules_9",
3096 valueReq.multi_data = 1;
3097 return valueReq;
3098 }
3099 function deal(paramD) {
3100 if (paramD) {
3101 var result = {};
3102 result.portMapEnable = paramD.PortMapEnable;
3103 var rules = [];
3104 if (paramD.PortMapRules_0 != "") {
3105 rules.push([0, paramD.PortMapRules_0]);
3106 }
3107 if (paramD.PortMapRules_1 != "") {
3108 rules.push([1, paramD.PortMapRules_1]);
3109 }
3110 if (paramD.PortMapRules_2 != "") {
3111 rules.push([2, paramD.PortMapRules_2]);
3112 }
3113 if (paramD.PortMapRules_3 != "") {
3114 rules.push([3, paramD.PortMapRules_3]);
3115 }
3116 if (paramD.PortMapRules_4 != "") {
3117 rules.push([4, paramD.PortMapRules_4]);
3118 }
3119 if (paramD.PortMapRules_5 != "") {
3120 rules.push([5, paramD.PortMapRules_5]);
3121 }
3122 if (paramD.PortMapRules_6 != "") {
3123 rules.push([6, paramD.PortMapRules_6]);
3124 }
3125 if (paramD.PortMapRules_7 != "") {
3126 rules.push([7, paramD.PortMapRules_7]);
3127 }
3128 if (paramD.PortMapRules_8 != "") {
3129 rules.push([8, paramD.PortMapRules_8]);
3130 }
3131 if (paramD.PortMapRules_9 != "") {
3132 rules.push([9, paramD.PortMapRules_9]);
3133 }
3134 result.portMapRules = parsePortMapRules(rules);
3135 return result;
3136 } else {
3137 return errUnknownObj;
3138 }
3139 }
3140 function parsePortMapRules(paramD) {
3141 var rules = [];
3142 if (paramD && paramD.length > 0) {
3143 for (var i = 0; i < paramD.length; i++) {
3144 var aRule = {};
3145 var elements = paramD[i][1].split(",");
3146 aRule.index = paramD[i][0];
3147 aRule.sourcePort = elements[1];
3148 aRule.destIpAddress = elements[0];
3149 aRule.destPort = elements[2];
3150 aRule.protocol = transProtocol(elements[3]);
3151 aRule.comment = elements[4];
3152 rules.push(aRule);
3153 }
3154 }
3155 return rules;
3156 }
3157 }
3158 function setPortMap() {
3159 return stuffMake(arguments, {}, prepare, deal, null, true);
3160 function prepare(values, isPost) {
3161 var valueReq = {};
3162 valueReq.goformId = "ADD_PORT_MAP";
3163 valueReq.portMapEnabled = values.portMapEnable;
3164 valueReq.fromPort = values.sourcePort;
3165 valueReq.ip_address = values.destIpAddress;
3166 valueReq.toPort = values.destPort;
3167 valueReq.protocol = values.protocol;
3168 valueReq.comment = values.comment;
3169 return valueReq;
3170 }
3171 function deal(paramD) {
3172 if (paramD) {
3173 return paramD;
3174 } else {
3175 return errUnknownObj;
3176 }
3177 }
3178 }
3179 function enablePortMap() {
3180 return stuffMake(arguments, {}, prepare, deal, null, true);
3181 function prepare(values, isPost) {
3182 var valueReq = {};
3183 valueReq.goformId = "ADD_PORT_MAP";
3184 valueReq.portMapEnabled = values.portMapEnable;
3185 return valueReq;
3186 }
3187 function deal(paramD) {
3188 if (paramD) {
3189 return paramD;
3190 } else {
3191 return errUnknownObj;
3192 }
3193 }
3194 }
3195 function deleteMapRules() {
3196 return stuffMake(arguments, {}, prepare, deal, null, true);
3197 function prepare(values, isPost) {
3198 var valueReq = {};
3199 valueReq.goformId = "DEL_PORT_MAP";
3200 valueReq.delete_id = values.indexs.join(';') + ";";
3201 return valueReq;
3202 }
3203 function deal(paramD) {
3204 if (paramD) {
3205 return paramD;
3206 } else {
3207 return errUnknownObj;
3208 }
3209 }
3210 }
3211 function getTrafficAlertInfo() {
3212 return stuffMake(arguments, {}, prepare, deal, null, false);
3213 function prepare(values, isPost) {
3214 return {
3215 cmd: "data_volume_limit_switch,data_volume_limit_unit,data_volume_limit_size,data_volume_alert_percent,monthly_tx_bytes,monthly_rx_bytes,monthly_time,traffic_alined_delta",
3216 multi_data: 1
3217 };
3218 }
3219 function deal(paramD) {
3220 if (paramD) {
3221 var isData = paramD.data_volume_limit_unit == 'data';
3222 var result = {
3223 dataLimitChecked: paramD.data_volume_limit_switch,
3224 dataLimitTypeChecked: isData ? '1' : '0',
3225 limitDataMonth: isData ? paramD.data_volume_limit_size : '0',
3226 alertDataReach: isData ? paramD.data_volume_alert_percent : '0',
3227 limitTimeMonth: isData ? '0' : paramD.data_volume_limit_size,
3228 alertTimeReach: isData ? '0' : paramD.data_volume_alert_percent,
3229 monthlySent: paramD.monthly_tx_bytes == '' ? 0 : paramD.monthly_tx_bytes,
3230 monthlyReceived: paramD.monthly_rx_bytes == '' ? 0 : paramD.monthly_rx_bytes,
3231 monthlyConnectedTime: paramD.monthly_time == '' ? 0 : paramD.monthly_time,
3232 traffic_alined_delta: paramD.traffic_alined_delta == '' ? 0 : paramD.traffic_alined_delta
3233 };
3234 return result;
3235 } else {
3236 return errUnknownObj;
3237 }
3238 }
3239 }
3240 function setTrafficAlertInfo() {
3241 return stuffMake(arguments, {}, prepare, deal, null, true);
3242 function prepare(values, isPost) {
3243 var isData = values.dataLimitTypeChecked == '1';
3244 var valueReq = {
3245 goformId: "DATA_LIMIT_SETTING",
3246 data_volume_limit_switch: values.dataLimitChecked
3247 };
3248 if (values.dataLimitChecked == '1') {
3249 valueReq.data_volume_limit_unit = isData ? 'data' : 'time';
3250 valueReq.data_volume_limit_size = isData ? values.limitDataMonth : values.limitTimeMonth;
3251 valueReq.data_volume_alert_percent = isData ? values.alertDataReach : values.alertTimeReach;
3252 }
3253 return valueReq;
3254 }
3255 function deal(paramD) {
3256 if (paramD) {
3257 return paramD;
3258 } else {
3259 return errUnknownObj;
3260 }
3261 }
3262 }
3263 function getUSSDResponse() {
3264 var callback = arguments[1];
3265 return stuffMake(arguments, {}, prepare, deal, null, true);
3266 function prepare(values, isPost) {
3267 if (values.sendOrReply == "send") {
3268 return {
3269 goformId: "USSD_PROCESS",
3270 USSD_operator: values.operator,
3271 USSD_send_number: values.strUSSDCommand,
3272 notCallback: true
3273 };
3274 } else if (values.sendOrReply == "reply") {
3275 return {
3276 goformId: "USSD_PROCESS",
3277 USSD_operator: values.operator,
3278 USSD_reply_number: values.strUSSDCommand,
3279 notCallback: true
3280 };
3281 }
3282 }
3283 function deal(paramD) {
3284 if (!paramD) {
3285 callback(false, "ussd_fail");
3286 return;
3287 }
3288 if (paramD.result == "success") {
3289 callbackTemp = callback;
3290 getResponse();
3291 } else {
3292 callback(false, "ussd_fail");
3293 }
3294 }
3295 }
3296 function getResponse() {
3297 $.ajax({
3298 url: "/reqproc/proc_get",
3299 data: {
3300 cmd: "ussd_write_flag"
3301 },
3302 cache: false,
3303 async: true,
3304 dataType: "json",
3305 success: function (result) {
3306 if (result.ussd_write_flag == "1") {
3307 callbackTemp(false, "ussd_no_service");
3308 } else if (result.ussd_write_flag == "4" || result.ussd_write_flag == "unknown" || result.ussd_write_flag == "3") {
3309 callbackTemp(false, "ussd_timeout");
3310 } else if (result.ussd_write_flag == "15") {
3311 setTimeout(getResponse, 1000);
3312 } else if (result.ussd_write_flag == "10") {
3313 callbackTemp(false, "ussd_retry");
3314 } else if (result.ussd_write_flag == "99") {
3315 callbackTemp(false, "ussd_unsupport");
3316 } else if (result.ussd_write_flag == "41") {
3317 callbackTemp(false, "operation_not_supported");
3318 } else if (result.ussd_write_flag == "2") {
3319 callbackTemp(false, "network_terminated");
3320 } else if (result.ussd_write_flag == "16") {
3321 $.ajax({
3322 url: "/reqproc/proc_get",
3323 data: {
3324 cmd: "ussd_data_info"
3325 },
3326 dataType: "json",
3327 async: true,
3328 cache: false,
3329 success: function (paramD) {
3330 var content = {};
3331 content.data = paramD.ussd_data;
3332 content.ussd_action = paramD.ussd_action;
3333 content.ussd_dcs = paramD.ussd_dcs;
3334 callbackTemp(true, content);
3335 },
3336 error: function () {
3337 callbackTemp(false, "ussd_info_error");
3338 }
3339 });
3340 } else {
3341 callbackTemp(false, "ussd_fail");
3342 }
3343 },
3344 error: function () {
3345 callbackTemp(false, "ussd_fail");
3346 }
3347 });
3348 }
3349 function USSDReplyCancel(callback) {
3350 $.ajax({
3351 url: "/reqproc/proc_post",
3352 data: {
3353 goformId: "USSD_PROCESS",
3354 USSD_operator: "ussd_cancel"
3355 },
3356 cache: false,
3357 dataType: "json",
3358 success: function (paramD) {
3359 if (paramD.result == "success") {
3360 getCancelResponse();
3361 } else {
3362 callback(false);
3363 }
3364 }
3365 });
3366 function getCancelResponse() {
3367 $.ajax({
3368 url: "/reqproc/proc_get",
3369 data: {
3370 cmd: "ussd_write_flag"
3371 },
3372 cache: false,
3373 async: true,
3374 dataType: "json",
3375 success: function (result) {
3376 if (result.ussd_write_flag == "15") {
3377 setTimeout(getCancelResponse, 1000);
3378 } else if (result.ussd_write_flag == "13") {
3379 callback(true);
3380 } else {
3381 callback(false);
3382 }
3383 },
3384 error: function () {
3385 callback(false);
3386 }
3387 });
3388 }
3389 }
3390 function unlockNetwork() {
3391 var callback = arguments[1];
3392 var checkPoint = 0;
3393 return stuffMake(arguments, {}, prepare, deal, null, true);
3394 function prepare(values) {
3395 return {
3396 goformId: "UNLOCK_NETWORK",
3397 notCallback: true,
3398 unlock_network_code: values.unlock_network_code
3399 };
3400 }
3401 function deal(paramD) {
3402 if (paramD && paramD.result == "success") {
3403 addCallback(checkUnlockNetworkStatus);
3404 } else {
3405 callback({
3406 result: 'fail'
3407 });
3408 }
3409 }
3410 function checkUnlockNetworkStatus() {
3411 if (checkPoint > 5) {
3412 removeCallback(checkUnlockNetworkStatus);
3413 callback({
3414 result: 'fail'
3415 });
3416 } else if (informationAll.simStatus != 'modem_imsi_waitnck') {
3417 removeCallback(checkUnlockNetworkStatus);
3418 callback({
3419 result: 'success'
3420 });
3421 }
3422 checkPoint++;
3423 }
3424 }
3425 function getNetworkUnlockTimes() {
3426 return stuffMake(arguments, {}, prepare, deal, null, false);
3427 function prepare(values, isPost) {
3428 return {
3429 cmd: "unlock_nck_time"
3430 };
3431 }
3432 function deal(paramD) {
3433 if (paramD) {
3434 return paramD;
3435 } else {
3436 return errUnknownObj;
3437 }
3438 }
3439 }
3440 function setUpdateInfoWarning() {
3441 var callback = arguments[1];
3442 return stuffMake(arguments, {}, prepare, deal, null, true);
3443 function prepare(values) {
3444 return {
3445 goformId: "SET_UPGRADE_NOTICE",
3446 upgrade_notice_flag: values.upgrade_notice_flag,
3447 notCallback: true
3448 };
3449 }
3450 function deal(paramD) {
3451 if (paramD.result == "success") {
3452 callback(true);
3453 } else {
3454 callback(false);
3455 }
3456 }
3457 }
3458 function getUpdateInfoWarning() {
3459 return stuffMake(arguments, {}, prepare, deal, null, false);
3460 function prepare(values, isPost) {
3461 return {
3462 cmd: "upgrade_notice_flag"
3463 };
3464 }
3465 function deal(paramD) {
3466 if (paramD) {
3467 return paramD;
3468 } else {
3469 return errUnknownObj;
3470 }
3471 }
3472 }
3473 function getAPStationBasic() {
3474 return stuffMake(arguments, {}, prepare, deal, null, false);
3475 function prepare(values, isPost) {
3476 return {
3477 multi_data: 1,
3478 cmd: "wifi_sta_connection,pswan_priority,wifiwan_priority,ethwan_priority"
3479 };
3480 }
3481 function deal(paramD) {
3482 if (paramD) {
3483 return {
3484 ap_station_enable: paramD.wifi_sta_connection,
3485 ap_station_mode: parseInt(paramD.wifiwan_priority, 10) > parseInt(paramD.pswan_priority, 10) ? "wifi_pref" : "dial_pref"
3486 }
3487 } else {
3488 return errUnknownObj;
3489 }
3490 }
3491 }
3492 function setAPStationBasic() {
3493 var tmp = arguments[0];
3494 return stuffMake(arguments, {}, prepare, deal, null, true);
3495 function prepare(values) {
3496 return {
3497 goformId: "WIFI_STA_CONTROL",
3498 wifi_sta_connection: values.ap_station_enable
3499 };
3500 }
3501 function deal(paramD) {
3502 if (paramD && paramD.result == "success") {
3503 informationAll.ap_station_enable = tmp.ap_station_enable == 1;
3504 return paramD;
3505 } else {
3506 return errUnknownObj;
3507 }
3508 }
3509 }
3510 function refreshAPStationStatus() {
3511 return getAPStationBasic({}, function (paramD) {
3512 informationAll.ap_station_enable = paramD.ap_station_enable == 1;
3513 informationAll.ap_station_mode = paramD.ap_station_mode;
3514 });
3515 }
3516 function getHotspotList() {
3517 return stuffMake(arguments, {}, prepare, deal, null, false);
3518 function prepare(values, isPost) {
3519 var cmdStr = "wifi_profile_num,wifi_profile";
3520 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3521 cmdStr = cmdStr + ",wifi_profile" + i;
3522 }
3523 return {
3524 multi_data: 1,
3525 cmd: cmdStr
3526 };
3527 }
3528 function deal(paramD) {
3529 if (paramD) {
3530 var wifiList = [];
3531 for (var i = 0; i < config.AP_STATION_LIST_LENGTH; i++) {
3532 var wifiStr = "";
3533 if (i == 0) {
3534 wifiStr = paramD.wifi_profile;
3535 } else {
3536 wifiStr = paramD["wifi_profile" + i];
3537 }
3538 var wifiArray = wifiStr.split(";");
3539 for (var j = 0; j < wifiArray.length; j++) {
3540 var item = wifiArray[j].split(",");
3541 if (!item[0]) {
3542 break;
3543 }
3544 var wifiJson = {
3545 profileName: item[0],
3546 fromProvider: item[1],
3547 connectStatus: item[2],
3548 signal: item[3],
3549 ssid: item[4],
3550 authMode: item[5],
3551 encryptType: item[6],
3552 password: item[7] == "0" ? "" : item[7],
3553 keyID: item[8],
3554 mac: item[9]
3555 };
3556 wifiList.push(wifiJson);
3557 }
3558 }
3559 return {
3560 hotspotList: wifiList
3561 };
3562 } else {
3563 return errUnknownObj;
3564 }
3565 }
3566 }
3567 function searchHotspot() {
3568 return stuffMake(arguments, {}, prepare, deal, null, true);
3569 function prepare(values) {
3570 return {
3571 goformId: "WLAN_SET_STA_REFRESH"
3572 };
3573 }
3574 function deal(paramD) {
3575 if (paramD) {
3576 return paramD;
3577 } else {
3578 return errUnknownObj;
3579 }
3580 }
3581 }
3582 function getSearchHotspotList() {
3583 return stuffMake(arguments, {}, prepare, deal, null, false);
3584 function prepare(values, isPost) {
3585 return {
3586 multi_data: 1,
3587 cmd: "scan_finish,EX_APLIST,EX_APLIST1"
3588 }
3589 }
3590 function deal(paramD) {
3591 if (paramD) {
3592 if (paramD.scan_finish == "0") {
3593 return {
3594 scan_finish: "0",
3595 hotspotList: []
3596 };
3597 }
3598 if (paramD.scan_finish == "2") {
3599 return {
3600 scan_finish: "2",
3601 hotspotList: []
3602 };
3603 }
3604 var wifiList = [];
3605 for (var i = 0; i <= 1; i++) {
3606 var wifiStr;
3607 if (i == 0) {
3608 wifiStr = paramD.EX_APLIST;
3609 } else {
3610 wifiStr = paramD.EX_APLIST1;
3611 }
3612 var wifiArray = wifiStr.split(";");
3613 for (var j = 0; j < wifiArray.length; j++) {
3614 var item = wifiArray[j].split(",");
3615 if (!item[0]) {
3616 break;
3617 }
3618 var wifiJson = {
3619 fromProvider: item[0],
3620 connectStatus: item[1],
3621 ssid: item[2],
3622 signal: item[3],
3623 channel: item[4],
3624 authMode: item[5],
3625 encryptType: item[6],
3626 mac: item[7]
3627 }
3628 wifiList.push(wifiJson);
3629 }
3630 }
3631 return {
3632 scan_finish: "1",
3633 hotspotList: wifiList
3634 };
3635 } else {
3636 return errUnknownObj;
3637 }
3638 }
3639 }
3640 function creatHotspotString(hotspot) {
3641 var tmp = [];
3642 tmp.push(hotspot.profileName);
3643 tmp.push(hotspot.fromProvider || "0");
3644 tmp.push(hotspot.connectStatus || "0");
3645 tmp.push(hotspot.signal);
3646 tmp.push(hotspot.ssid);
3647 tmp.push(hotspot.authMode);
3648 tmp.push(hotspot.encryptType);
3649 tmp.push(hotspot.password || "0");
3650 tmp.push(hotspot.keyID);
3651 tmp.push(hotspot.mac);
3652 return tmp.join(",");
3653 }
3654 function saveHotspot() {
3655 return stuffMake(arguments, {}, prepare, deal, null, true);
3656 function prepare(values) {
3657 var apList = values.apList;
3658 var action = "modify";
3659 if (values.profileName == "") {
3660 action = "add";
3661 var newName = (jQuery.fn.jquery + Math.random()).replace(/\D/g, "");
3662 values.profileName = newName;
3663 apList.push({
3664 profileName: newName,
3665 fromProvider: "0",
3666 connectStatus: "0",
3667 signal: values.signal,
3668 ssid: values.ssid,
3669 authMode: values.authMode,
3670 encryptType: values.encryptType,
3671 password: values.password || "0",
3672 keyID: values.keyID,
3673 mac: values.mac
3674 });
3675 }
3676 var wifi = {
3677 "profile0": []
3678 };
3679 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3680 wifi["profile" + i] = [];
3681 }
3682 var activeHotspotStr = "";
3683 for (var i = 0; i < apList.length; i++) {
3684 var hotspotStr = "";
3685 if (values.profileName == apList[i].profileName) {
3686 hotspotStr = creatHotspotString(values);
3687 activeHotspotStr = hotspotStr;
3688 } else {
3689 hotspotStr = creatHotspotString(apList[i]);
3690 }
3691 var index = parseInt(i % 10);
3692 wifi["profile" + index].push(hotspotStr);
3693 }
3694 var profileParams = {
3695 wifi_profile: wifi.profile0.join(";")
3696 };
3697 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3698 profileParams["wifi_profile" + i] = wifi["profile" + i].join(";");
3699 }
3700 var valueReq = $.extend({
3701 goformId: "WIFI_SPOT_PROFILE_UPDATE",
3702 wifi_profile_num: apList.length,
3703 wifi_update_profile: activeHotspotStr,
3704 action: action
3705 }, profileParams);
3706 return valueReq;
3707 }
3708 function deal(paramD) {
3709 if (paramD) {
3710 return paramD;
3711 } else {
3712 return errUnknownObj;
3713 }
3714 }
3715 }
3716 function deleteHotspot() {
3717 return stuffMake(arguments, {}, prepare, deal, null, true);
3718 function prepare(values) {
3719 var apList = values.apList;
3720 var wifi = {
3721 "profile0": []
3722 };
3723 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3724 wifi["profile" + i] = [];
3725 }
3726 var foundDelete = false;
3727 var activeHotspotStr = "";
3728 for (var i = 0; i < apList.length; i++) {
3729 var hotspotStr = creatHotspotString(apList[i]);
3730 if (apList[i].profileName == values.profileName) {
3731 foundDelete = true;
3732 activeHotspotStr = hotspotStr;
3733 continue;
3734 }
3735 var idIndex = i;
3736 if (foundDelete) {
3737 idIndex = i - 1;
3738 }
3739 var index = parseInt(idIndex % 10);
3740 wifi["profile" + index].push(hotspotStr);
3741 }
3742 var num = foundDelete ? apList.length - 1 : apList.length;
3743 var profileParams = {
3744 wifi_profile: wifi.profile0.join(";")
3745 };
3746 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3747 profileParams["wifi_profile" + i] = wifi["profile" + i].join(";");
3748 }
3749 var valueReq = $.extend({
3750 goformId: "WIFI_SPOT_PROFILE_UPDATE",
3751 wifi_profile_num: num,
3752 wifi_update_profile: activeHotspotStr,
3753 action: "delete"
3754 }, profileParams);
3755 return valueReq;
3756 }
3757 function deal(paramD) {
3758 if (paramD) {
3759 return paramD;
3760 } else {
3761 return errUnknownObj;
3762 }
3763 }
3764 }
3765 function connectHotspot() {
3766 return stuffMake(arguments, {}, prepare, deal, null, true);
3767 function prepare(values) {
3768 return {
3769 goformId: "WLAN_SET_STA_CON",
3770 EX_SSID1: values.EX_SSID1,
3771 EX_AuthMode: values.EX_AuthMode,
3772 EX_EncrypType: values.EX_EncrypType,
3773 EX_DefaultKeyID: values.EX_DefaultKeyID,
3774 EX_WEPKEY: values.EX_WEPKEY,
3775 EX_WPAPSK1: values.EX_WPAPSK1,
3776 EX_wifi_profile: values.EX_wifi_profile,
3777 EX_mac: values.EX_mac
3778 };
3779 }
3780 function deal(paramD) {
3781 if (paramD && (paramD.result == "success" || paramD.result == "processing")) {
3782 return paramD;
3783 } else {
3784 return errUnknownObj;
3785 }
3786 }
3787 }
3788 function disconnectHotspot() {
3789 return stuffMake(arguments, {}, prepare, deal, null, true);
3790 function prepare(values) {
3791 return {
3792 goformId: "WLAN_SET_STA_DISCON"
3793 };
3794 }
3795 function deal(paramD) {
3796 if (paramD && paramD.result == "success") {
3797 return paramD;
3798 } else {
3799 return errUnknownObj;
3800 }
3801 }
3802 }
3803 function getOpMode() {
3804 return stuffMake(arguments, {}, prepare, deal, null, false);
3805 function prepare(values, isPost) {
3806 return {
3807 multi_data: 1,
3808 cmd: "blc_wan_mode,blc_wan_auto_mode,loginfo,ppp_status,rj45_state,ethwan_mode"
3809 };
3810 }
3811 function deal(paramD) {
3812 if (paramD) {
3813 var result = {};
3814 if (paramD.blc_wan_mode == 'AUTO') {
3815 result.blc_wan_mode = paramD.blc_wan_auto_mode ? paramD.blc_wan_auto_mode : 'AUTO_PPP';
3816 } else {
3817 result.blc_wan_mode = paramD.blc_wan_mode ? paramD.blc_wan_mode : 'PPP';
3818 }
3819 result.loginfo = paramD.loginfo;
3820 result.ppp_status = paramD.ppp_status;
3821 result.rj45_state = (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state;
3822 result.ethwan_mode = paramD.ethwan_mode.toUpperCase();
3823 return result;
3824 } else {
3825 return errUnknownObj;
3826 }
3827 }
3828 }
3829 function getRj45PlugState() {
3830 return stuffMake(arguments, {}, prepare, deal, null, false);
3831 function prepare(values, isPost) {
3832 return {
3833 cmd: "rj45_plug"
3834 };
3835 }
3836 function deal(paramD) {
3837 if (paramD) {
3838 var result = {};
3839 result.rj45_plug = paramD.rj45_plug == "" ? "wan_lan_off" : paramD.rj45_plug;
3840 return result;
3841 } else {
3842 return errUnknownObj;
3843 }
3844 }
3845 }
3846 function checkOpMode(opmode, rj45state) {
3847 if (config.RJ45_SUPPORT) {
3848 if (rj45state == "dead" || rj45state == "") {
3849 return 'PPP';
3850 } else if (!opmode || opmode == "undefined") {
3851 if (rj45state == "working") {
3852 return 'PPPOE';
3853 } else {
3854 return 'PPP';
3855 }
3856 } else {
3857 return opmode;
3858 }
3859 } else {
3860 return 'PPP';
3861 }
3862 }
3863 function SetOperationMode(values, callback) {
3864 return stuffMake(arguments, {}, prepare, deal, null, true);
3865 function prepare(values) {
3866 var valueReq = $.extend({
3867 goformId: "OPERATION_MODE"
3868 }, values);
3869 return valueReq;
3870 }
3871 function deal(paramD) {
3872 if (paramD && paramD.result == "success") {
3873 return paramD;
3874 } else {
3875 return errUnknownObj;
3876 }
3877 }
3878 }
3879 function getPppoeParams() {
3880 return stuffMake(arguments, {}, prepare, deal, null, false);
3881 function prepare(values, isPost) {
3882 return {
3883 multi_data: 1,
3884 cmd: "opms_wan_auto_mode,ethwan_mode,pppoe_username,pppoe_cc,ethwan_dialmode,ppp_status,static_wan_ipaddr,static_wan_netmask,static_wan_gateway,static_wan_primary_dns,static_wan_secondary_dns,rj45_state,lan_ipaddr,lan_netmask"
3885 };
3886 }
3887 function deal(paramD) {
3888 if (paramD) {
3889 return {
3890 opms_wan_auto_mode: paramD.opms_wan_auto_mode,
3891 ethwan_mode: paramD.ethwan_mode.toUpperCase(),
3892 pppoe_username: paramD.pppoe_username,
3893 pppoe_cc: paramD.pppoe_cc,
3894 ethwan_dialmode: paramD.ethwan_dialmode == "manual" ? "manual_dial" : "auto_dial",
3895 ppp_status: paramD.ppp_status,
3896 static_wan_ipaddr: paramD.static_wan_ipaddr,
3897 static_wan_netmask: paramD.static_wan_netmask,
3898 static_wan_gateway: paramD.static_wan_gateway,
3899 static_wan_primary_dns: paramD.static_wan_primary_dns,
3900 static_wan_secondary_dns: paramD.static_wan_secondary_dns,
3901 rj45_state: (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state,
3902 lan_ipaddr: paramD.lan_ipaddr,
3903 lan_netmask: paramD.lan_netmask
3904 }
3905 } else {
3906 return errUnknownObj;
3907 }
3908 }
3909 }
3910 function setPppoeDialMode(values, callback) {
3911 return stuffMake(arguments, {}, prepare, deal, null, true);
3912 function prepare(values) {
3913 var valueReq = $.extend({
3914 notCallback: true
3915 }, values);
3916 return valueReq;
3917 }
3918 function deal(paramD) {
3919 if (paramD.result == "success") {
3920 callback({
3921 result: true
3922 });
3923 } else {
3924 callback({
3925 result: false
3926 });
3927 }
3928 }
3929 }
3930 function getSntpParams(values, callback) {
3931 return stuffMake(arguments, {}, prepare, deal, null, false);
3932 function prepare(values, isPost) {
3933 return {
3934 multi_data: 1,
3935 cmd: "sntp_year,sntp_month,sntp_day,sntp_hour,sntp_minute,sntp_second,sntp_time_set_mode,sntp_static_server0,sntp_static_server1,sntp_static_server2,sntp_server0,sntp_server1,sntp_server2,sntp_server3,sntp_server4,sntp_server5,sntp_server6,sntp_server7,sntp_server8,sntp_server9,sntp_other_server0,sntp_other_server1,sntp_other_server2,sntp_timezone,sntp_timezone_index,sntp_dst_enable,ppp_status,sntp_process_result,rj45_state"
3936 };
3937 }
3938 function deal(paramD) {
3939 if (paramD) {
3940 var sntp_servers = getSntpServers(paramD);
3941 return {
3942 sntp_year: paramD.sntp_year,
3943 sntp_month: paramD.sntp_month,
3944 sntp_day: paramD.sntp_day,
3945 sntp_hour: paramD.sntp_hour,
3946 sntp_minute: paramD.sntp_minute,
3947 sntp_second: paramD.sntp_second,
3948 sntp_time_set_mode: paramD.sntp_time_set_mode,
3949 sntp_servers: sntp_servers,
3950 sntp_server0: paramD.sntp_server0,
3951 sntp_server1: paramD.sntp_server1,
3952 sntp_server2: paramD.sntp_server2,
3953 sntp_static_server0: paramD.sntp_static_server0,
3954 sntp_static_server1: paramD.sntp_static_server1,
3955 sntp_static_server2: paramD.sntp_static_server2,
3956 sntp_other_server0: paramD.sntp_other_server0,
3957 sntp_other_server1: paramD.sntp_other_server1,
3958 sntp_other_server2: paramD.sntp_other_server2,
3959 sntp_timezone: paramD.sntp_timezone,
3960 sntp_timezone_index: paramD.sntp_timezone_index ? paramD.sntp_timezone_index : "0",
3961 sntp_dst_enable: paramD.sntp_dst_enable,
3962 ppp_status: paramD.ppp_status,
3963 blc_wan_mode: informationAll.blc_wan_mode,
3964 sntp_process_result: paramD.sntp_process_result,
3965 rj45_state: (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state
3966 }
3967 } else {
3968 return errUnknownObj;
3969 }
3970 }
3971 function getSntpServers(paramD) {
3972 var serverArray = [];
3973 for (var i = 0; i < 3; i++) {
3974 var tmp = "sntp_static_server" + (i).toString();
3975 if (paramD[tmp] != "") {
3976 var obj = {};
3977 obj.name = paramD[tmp];
3978 obj.value = paramD[tmp];
3979 serverArray.push(obj);
3980 }
3981 }
3982 var otherArray = [{
3983 name: "Other",
3984 value: "Other"
3985 }, {
3986 name: "NONE",
3987 value: ""
3988 }
3989 ];
3990 for (var j = 0; j < 2; j++) {
3991 serverArray.push(otherArray[j]);
3992 }
3993 return serverArray;
3994 }
3995 }
3996 function setSNTPDate(values, callback) {
3997 return stuffMake(arguments, {}, prepare, deal, null, true);
3998 function prepare(values) {
3999 var valueReq = $.extend({}, values);
4000 return valueReq;
4001 }
4002 function deal(paramD) {
4003 if (paramD && paramD.result == "success") {
4004 return paramD;
4005 } else {
4006 return errUnknownObj;
4007 }
4008 }
4009 }
4010 function setSntpSetting(values, callback) {
4011 var valueReq = $.extend({}, values); {
4012 $.post("reqproc/proc_post", valueReq, function (paramD) {
4013 if (paramD && paramD.result == "success") {
4014 if (values.manualsettime == "auto") {
4015 setTimeout(checkSyncStatus, 2000);
4016 callback(paramD);
4017 } else {
4018 callback(true);
4019 }
4020 } else if (paramD && paramD.result == "processing") {
4021 callback(paramD);
4022 } else {
4023 callback(false);
4024 }
4025 }, "json");
4026 }
4027 function checkSyncStatus() {
4028 $.ajax({
4029 url: "reqproc/proc_get",
4030 dataType: "json",
4031 data: {
4032 cmd: "sntp_process_result"
4033 },
4034 cache: false,
4035 async: false,
4036 success: function (paramD) {
4037 if (paramD.sntp_process_result == "failure") {
4038 callback(false);
4039 } else if (paramD.sntp_process_result == "success") {
4040 callback(true);
4041 } else {
4042 setTimeout(checkSyncStatus, 2000);
4043 }
4044 },
4045 error: function () {
4046 callback(false);
4047 }
4048 });
4049 }
4050 }
4051 function addUrlFilterRule(values, callback) {
4052 return stuffMake(arguments, {}, prepare, deal, null, true);
4053 function prepare(values) {
4054 var valueReq = $.extend({}, values);
4055 return valueReq;
4056 }
4057 function deal(paramD) {
4058 if (paramD && paramD.result == "success") {
4059 return paramD;
4060 } else {
4061 return errUnknownObj;
4062 }
4063 }
4064 }
4065 function getUrlFilterList() {
4066 return stuffMake(arguments, {}, prepare, deal, null, false);
4067 function prepare(values, isPost) {
4068 return {
4069 cmd: "websURLFilters"
4070 };
4071 }
4072 function deal(paramD) {
4073 var urlFilterRules = [];
4074 if (paramD) {
4075 if (paramD.websURLFilters.length == 0) {
4076 return {
4077 urlFilterRules: []
4078 };
4079 } else {
4080 var tempArray = paramD.websURLFilters.split(";");
4081 for (var i = 0; i < tempArray.length; i++) {
4082 var aRule = {};
4083 aRule.index = i;
4084 aRule.url = tempArray[i];
4085 urlFilterRules.push(aRule);
4086 }
4087 return {
4088 urlFilterRules: urlFilterRules
4089 };
4090 }
4091 } else {
4092 return errUnknownObj;
4093 }
4094 }
4095 }
4096 function deleteSelectedRules(values, callback) {
4097 return stuffMake(arguments, {}, prepare, deal, null, true);
4098 function prepare(values) {
4099 var valueReq = $.extend({}, values);
4100 return valueReq;
4101 }
4102 function deal(paramD) {
4103 if (paramD && paramD.result == "success") {
4104 return paramD;
4105 } else {
4106 return errUnknownObj;
4107 }
4108 }
4109 }
4110 function getWdsInfo() {
4111 return stuffMake(arguments, {}, prepare, deal, null, false);
4112 function prepare(values, isPost) {
4113 return {
4114 multi_data: "1",
4115 cmd: "wifi_wds_mode,wifi_wds_ssid,wifi_wds_AuthMode,wifi_wds_EncrypType,wifi_wds_WPAPSK1,wifi_cur_state "
4116 };
4117 }
4118 function deal(paramD) {
4119 if (paramD) {
4120 return {
4121 currentMode: paramD.wifi_wds_mode,
4122 wdsSSID: paramD.wifi_wds_ssid,
4123 wdsAuthMode: paramD.wifi_wds_AuthMode,
4124 wdsEncrypType: paramD.wifi_wds_EncrypType,
4125 wdsWPAPSK1: paramD.wifi_wds_WPAPSK1,
4126 RadioOff: paramD.wifi_cur_state == "1" ? "1" : "0"
4127 };
4128 } else {
4129 return errUnknownObj;
4130 }
4131 }
4132 }
4133 function setWDS(values, callback) {
4134 return stuffMake(arguments, {}, prepare, deal, null, true);
4135 function prepare(values) {
4136 var valueReq = $.extend({}, values);
4137 return valueReq;
4138 }
4139 function deal(paramD) {
4140 if (paramD && paramD.result == "success") {
4141 return paramD;
4142 } else {
4143 return errUnknownObj;
4144 }
4145 }
4146 }
4147 function getSyslogInfo() {
4148 return stuffMake(arguments, {}, prepare, deal, null, false);
4149 function prepare(values, isPost) {
4150 return {
4151 multi_data: "1",
4152 cmd: "syslog_mode,debug_level"
4153 };
4154 }
4155 function deal(paramD) {
4156 if (paramD) {
4157 return {
4158 currentMode: paramD.syslog_mode,
4159 debugLevel: paramD.debug_level
4160 };
4161 } else {
4162 return errUnknownObj;
4163 }
4164 }
4165 }
4166 function setSysLog(values, callback) {
4167 return stuffMake(arguments, {}, prepare, deal, null, true);
4168 function prepare(values) {
4169 var valueReq = $.extend({}, values);
4170 return valueReq;
4171 }
4172 function deal(paramD) {
4173 if (paramD && paramD.result == "success") {
4174 return paramD;
4175 } else {
4176 return errUnknownObj;
4177 }
4178 }
4179 }
4180 function getMacFilterInfo() {
4181 return stuffMake(arguments, {}, prepare, deal, null, false);
4182 function prepare(values, isPost) {
4183 return {
4184 multi_data: "1",
4185 cmd: "ACL_mode,wifi_mac_black_list,wifi_hostname_black_list,wifi_cur_state,user_ip_addr,client_mac_address,wifi_mac_white_list"
4186 };
4187 }
4188 function deal(paramD) {
4189 if (paramD) {
4190 return {
4191 ACL_mode: paramD.ACL_mode,
4192 wifi_mac_black_list: paramD.wifi_mac_black_list,
4193 wifi_hostname_black_list: paramD.wifi_hostname_black_list,
4194 RadioOff: paramD.wifi_cur_state == "1" ? "1" : "0",
4195 user_ip_addr: paramD.user_ip_addr,
4196 client_mac_address: paramD.client_mac_address,
4197 wifi_mac_white_list: paramD.wifi_mac_white_list
4198 };
4199 } else {
4200 return errUnknownObj;
4201 }
4202 }
4203 }
4204 function setMacFilter() {
4205 return stuffMake(arguments, {}, prepare, deal, null, true);
4206 function prepare(values) {
4207 var valueReq = $.extend({
4208 goformId: 'WIFI_MAC_FILTER',
4209 }, values);
4210 return valueReq;
4211 }
4212 function deal(paramD) {
4213 if (paramD && paramD.result == "success") {
4214 return paramD;
4215 } else {
4216 return errUnknownObj;
4217 }
4218 }
4219 }
4220 function getFastbootSetting() {
4221 return stuffMake(arguments, {}, prepare, deal, null, false);
4222 function prepare(values) {
4223 return {
4224 cmd: "mgmt_quicken_power_on,need_hard_reboot,need_sim_pin",
4225 multi_data: 1
4226 };
4227 }
4228 function deal(paramD) {
4229 return {
4230 fastbootEnabled: paramD.mgmt_quicken_power_on == '1' ? '1' : '0',
4231 need_hard_reboot: paramD.need_hard_reboot,
4232 need_sim_pin: paramD.need_sim_pin == 'yes' ? 'yes' : 'no'
4233 };
4234 }
4235 }
4236 function setFastbootSetting() {
4237 return stuffMake(arguments, {}, prepare, deal, null, true);
4238 function prepare(values) {
4239 return {
4240 goformId: "MGMT_CONTROL_POWER_ON_SPEED",
4241 mgmt_quicken_power_on: values.fastbootEnabled
4242 };
4243 }
4244 function deal(paramD) {
4245 if (paramD && paramD.result == "success") {
4246 return paramD;
4247 } else {
4248 return errUnknownObj;
4249 }
4250 }
4251 }
4252 function turnOffDevice() {
4253 return stuffMake(arguments, {}, prepare, deal, null, true);
4254 function prepare(values, isPost) {
4255 var valueReq = {};
4256 valueReq.goformId = "TURN_OFF_DEVICE";
4257 return valueReq;
4258 }
4259 function deal(paramD) {
4260 if (paramD) {
4261 return paramD;
4262 } else {
4263 return errUnknownObj;
4264 }
4265 }
4266 }
4267 function restart() {
4268 return stuffMake(arguments, {}, prepare, deal, null, true);
4269 function prepare(values, isPost) {
4270 var valueReq = {};
4271 valueReq.goformId = "REBOOT_DEVICE";
4272 return valueReq;
4273 }
4274 function deal(paramD) {
4275 if (paramD) {
4276 return paramD;
4277 } else {
4278 return errUnknownObj;
4279 }
4280 }
4281 }
4282 function getScheduleSetting() {
4283 return stuffMake(arguments, {}, prepare, deal, null, false);
4284 function prepare(values, isPost) {
4285 var valueReq = {};
4286 valueReq.cmd = "schedule_restart_enable,schedule_restart_hour,schedule_restart_minute";
4287 valueReq.multi_data = 1;
4288 return valueReq;
4289 }
4290 function deal(paramD) {
4291 if (paramD) {
4292 var result = {};
4293 result.scheduleSetting = paramD.schedule_restart_enable == "1" ? "1" : "0";
4294 result.scheduleHour = paramD.schedule_restart_hour;
4295 result.scheduleMinute = paramD.schedule_restart_minute;
4296 return result;
4297 } else {
4298 return errUnknownObj;
4299 }
4300 }
4301 }
4302 function setScheduleSetting() {
4303 return stuffMake(arguments, {}, prepare, deal, null, true);
4304 function prepare(values, isPost) {
4305 var valueReq = {};
4306 valueReq.goformId = "SCHEDULE_SETTING";
4307 valueReq.scheduleEnabled = values.scheduleSetting;
4308 if (valueReq.scheduleEnabled == '1') {
4309 valueReq.scheduleHour = values.scheduleHour;
4310 valueReq.scheduleMinute = values.scheduleMinute;
4311 }
4312 return valueReq;
4313 }
4314 function deal(paramD) {
4315 if (paramD) {
4316 return paramD;
4317 } else {
4318 return errUnknownObj;
4319 }
4320 }
4321 }
mj.qucf65e412024-09-14 10:05:29 +08004322 function getPingResult() {
4323 return stuffMake(arguments, {}, prepare, deal, null, false);
4324 function prepare(values, isPost) {
4325 var valueReq = {};
4326 valueReq.cmd = "ping_result";
4327 return valueReq;
4328 }
4329 function deal(paramD) {
4330 if (paramD) {
4331 var result = {};
4332 result.pingResult = paramD.ping_result;
4333 return result;
4334 } else {
4335 return errUnknownObj;
4336 }
4337 }
4338 }
4339 function pingResultClear() {
4340 return stuffMake(arguments, {}, prepare, deal, null, true);
4341 function prepare(values, isPost) {
4342 var valueReq = {};
4343 valueReq.goformId = "PING_RESULT_CLEAR";
4344 return valueReq;
4345 }
4346 function deal(paramD) {
4347 if (paramD) {
4348 return paramD;
4349 } else {
4350 return errUnknownObj;
4351 }
4352 }
4353 }
4354 function getPingSetting() {
4355 return stuffMake(arguments, {}, prepare, deal, null, false);
4356 function prepare(values, isPost) {
4357 var valueReq = {};
4358 valueReq.cmd = "ping_repetition_count,ping_diag_addr";
4359 valueReq.multi_data = 1;
4360 return valueReq;
4361 }
4362 function deal(paramD) {
4363 if (paramD) {
4364 var result = {};
4365 result.pingTimes = paramD.ping_repetition_count;
4366 result.pingURL = paramD.ping_diag_addr;
4367 return result;
4368 } else {
4369 return errUnknownObj;
4370 }
4371 }
4372 }
4373 function setPingSettingStart() {
4374 return stuffMake(arguments, {}, prepare, deal, null, true);
4375 function prepare(values, isPost) {
4376 var valueReq = {};
4377 valueReq.goformId = "PINT_DIAGNOSTICS_START";
4378 valueReq.ping_repetition_count = values.pingTimes;
4379 valueReq.ping_diag_addr = values.pingURL;
4380 return valueReq;
4381 }
4382 function deal(paramD) {
4383 if (paramD) {
4384 return paramD;
4385 } else {
4386 return errUnknownObj;
4387 }
4388 }
4389 }
zw.wangcfae4372024-08-12 16:41:12 +08004390 function getNewVersionState() {
4391 return stuffMake(arguments, {}, prepare, deal, null, false);
4392 function prepare(values, isPost) {
4393 var valueReq = {};
4394 valueReq.cmd = "fota_new_version_state,fota_current_upgrade_state,fota_package_already_download";
4395 valueReq.multi_data = 1;
4396 return valueReq;
4397 }
4398 function deal(paramD) {
4399 if (paramD) {
4400 var hasNewVersion = (paramD.fota_new_version_state == 'has_critical' || paramD.fota_new_version_state == 'has_optional' || paramD.fota_new_version_state == 'already_has_pkg');
4401 paramD.hasNewVersion = hasNewVersion;
4402 return paramD;
4403 } else {
4404 return errUnknownObj;
4405 }
4406 }
4407 }
4408 function getMandatory() {
4409 return stuffMake(arguments, {}, prepare, deal, null, false);
4410 function prepare(values, isPost) {
4411 var valueReq = {};
4412 if (config.UPGRADE_TYPE == "OTA") {
4413 valueReq.cmd = "is_mandatory";
4414 } else {
4415 valueReq.cmd = "fota_new_version_state";
4416 }
4417 return valueReq;
4418 }
4419 function deal(paramD) {
4420 if (paramD) {
4421 if (config.UPGRADE_TYPE == "OTA") {
4422 return {
4423 "is_mandatory": paramD.is_mandatory == "1"
4424 };
4425 } else {
4426 return {
4427 "is_mandatory": paramD.fota_new_version_state == "has_critical"
4428 };
4429 }
4430 } else {
4431 return errUnknownObj;
4432 }
4433 }
4434 }
4435 function getUpgradeResult() {
4436 return stuffMake(arguments, {}, prepare, deal, null, false);
4437 function prepare(values, isPost) {
4438 var valueReq = {};
4439 valueReq.cmd = "upgrade_result";
4440 return valueReq;
4441 }
4442 function deal(paramD) {
4443 if (paramD) {
4444 return paramD;
4445 } else {
4446 return errUnknownObj;
4447 }
4448 }
4449 }
4450 function getCurrentUpgradeState() {
4451 return stuffMake(arguments, {}, prepare, deal, null, false);
4452 function prepare(values, isPost) {
4453 var valueReq = {};
4454 valueReq.cmd = "fota_current_upgrade_state";
4455 return valueReq;
4456 }
4457 function deal(paramD) {
4458 if (paramD) {
4459 paramD.current_upgrade_state = paramD.fota_current_upgrade_state;
4460 return paramD;
4461 } else {
4462 return errUnknownObj;
4463 }
4464 }
4465 }
4466 function getPackSizeInfo() {
4467 return stuffMake(arguments, {}, prepare, deal, null, false);
4468 function prepare(values, isPost) {
4469 var valueReq = {};
4470 valueReq.cmd = "fota_pkg_total_size,fota_dl_pkg_size";
4471 valueReq.multi_data = 1;
4472 return valueReq;
4473 }
4474 function deal(paramD) {
4475 if (paramD) {
4476 return paramD;
4477 } else {
4478 return errUnknownObj;
4479 }
4480 }
4481 }
4482 function setUpgradeSelectOp() {
4483 return stuffMake(arguments, {}, prepare, deal, null, true);
4484 function prepare(values, isPost) {
4485 var valueReq = {};
4486 valueReq.goformId = "IF_UPGRADE";
4487 valueReq.select_op = values.selectOp;
4488 if (valueReq.select_op == 'check') {
4489 valueReq.ota_manual_check_roam_state = 1;
4490 }
4491 return valueReq;
4492 }
4493 function deal(paramD) {
4494 if (paramD) {
4495 return paramD;
4496 } else {
4497 return errUnknownObj;
4498 }
4499 }
4500 }
4501 function getOTAUpdateSetting() {
4502 return stuffMake(arguments, {}, prepare, deal, null, false);
4503 function prepare(values, isPost) {
4504 var valueReq = {};
4505 valueReq.cmd = "fota_updateMode,fota_updateIntervalDay,fota_allowRoamingUpdate";
4506 valueReq.multi_data = 1;
4507 return valueReq;
4508 }
4509 function deal(paramD) {
4510 if (paramD) {
4511 return {
4512 updateMode: paramD.fota_updateMode,
4513 updateIntervalDay: paramD.fota_updateIntervalDay,
4514 allowRoamingUpdate: paramD.fota_allowRoamingUpdate
4515 };
4516 } else {
4517 return errUnknownObj;
4518 }
4519 }
4520 }
4521 function setOTAUpdateSetting() {
4522 return stuffMake(arguments, {}, prepare, deal, null, true);
4523 function prepare(values, isPost) {
4524 var valueReq = {};
4525 valueReq.goformId = "SetUpgAutoSetting";
4526 valueReq.UpgMode = values.updateMode;
4527 valueReq.UpgIntervalDay = values.updateIntervalDay;
4528 valueReq.UpgRoamPermission = values.allowRoamingUpdate;
4529 return valueReq;
4530 }
4531 function deal(paramD) {
4532 if (paramD && paramD.result == "success") {
4533 return paramD;
4534 } else {
4535 return errUnknownObj;
4536 }
4537 }
4538 }
4539 function getOTAlastCheckTime() {
4540 return getParams({
4541 nv: ['dm_last_check_time']
4542 }, arguments[1], arguments[2]);
4543 }
4544 function getSignalStrength() {
4545 return getParams({
4546 nv: ['network_type', 'sub_network_type', 'rssi', 'rscp', 'lte_rsrp']
4547 }, arguments[1], arguments[2]);
4548 }
4549 function clearUpdateResult() {
4550 return stuffMake(arguments, {}, prepare, deal, null, true);
4551 function prepare(values, isPost) {
4552 var valueReq = {};
4553 valueReq.goformId = "RESULT_RESTORE";
4554 return valueReq;
4555 }
4556 function deal(paramD) {
4557 if (paramD && paramD.result == "success") {
4558 return paramD;
4559 } else {
4560 return errUnknownObj;
4561 }
4562 }
4563 }
4564 function childGroupList() {
4565 return stuffMake(arguments, {}, prepare, deal, null, false);
4566 function prepare(values, isPost) {
4567 var valueReq = {
4568 cmd: "childGroupList"
4569 };
4570 return valueReq;
4571 }
4572 function deal(paramD) {
4573 if (paramD && (paramD.childGroupList || paramD.devices)) {
4574 return paramD;
4575 } else {
4576 return {
4577 devices: []
4578 };
4579 }
4580 }
4581 }
4582 function addChildGroup() {
4583 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4584 : {
4585 errorType: 'no_auth'
4586 }, prepare, deal, null, true);
4587 function prepare(values, isPost) {
4588 var valueReq = {
4589 goformId: "ADD_DEVICE",
4590 mac: values.macAddress
4591 };
4592 return valueReq;
4593 }
4594 function deal(paramD) {
4595 if (paramD && paramD.result == 'success') {
4596 return paramD;
4597 } else {
4598 return errUnknownObj;
4599 }
4600 }
4601 }
4602 function removeChildGroup() {
4603 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4604 : {
4605 errorType: 'no_auth'
4606 }, prepare, deal, null, true);
4607 function prepare(values, isPost) {
4608 var valueReq = {
4609 goformId: "DEL_DEVICE",
4610 mac: values.mac
4611 };
4612 return valueReq;
4613 }
4614 function deal(paramD) {
4615 if (paramD && paramD.result == 'success') {
4616 return paramD;
4617 } else {
4618 return errUnknownObj;
4619 }
4620 }
4621 }
4622 function checkCurrentUserInChildGroup(devices) {
4623 if (typeof config.currentUserInChildGroup == "undefined") {
4624 var childGroupDevice = [];
4625 if (typeof devices != "undefined") {
4626 childGroupDevice = devices;
4627 } else {
4628 childGroupDevice = childGroupList({}).devices;
4629 }
4630 var userMacAddr = getUserMacAddr({}).get_user_mac_addr;
4631 var found = _.find(childGroupDevice, function (item) {
4632 return item.mac == userMacAddr;
4633 });
4634 config.currentUserInChildGroup = typeof found != 'undefined';
4635 return {
4636 result: typeof found != 'undefined'
4637 };
4638 }
4639 return {
4640 result: config.currentUserInChildGroup
4641 };
4642 }
4643 function getUserMacAddr() {
4644 return getParams({
4645 nv: 'get_user_mac_addr'
4646 }, arguments[1], arguments[2]);
4647 }
4648 function getHostNameList() {
4649 return stuffMake(arguments, {}, prepare, deal, null, false);
4650 function prepare(values, isPost) {
4651 var valueReq = {
4652 cmd: "hostNameList"
4653 };
4654 return valueReq;
4655 }
4656 function deal(paramD) {
4657 if (paramD && (paramD.hostNameList || paramD.devices)) {
4658 return paramD;
4659 } else {
4660 return {
4661 devices: []
4662 };
4663 }
4664 }
4665 }
4666 function editHostName() {
4667 return stuffMake(arguments, {}, prepare, deal, null, true);
4668 function prepare(values, isPost) {
4669 var valueReq = {
4670 goformId: "EDIT_HOSTNAME",
4671 mac: values.mac,
4672 hostname: values.hostname
4673 };
4674 return valueReq;
4675 }
4676 function deal(paramD) {
4677 if (paramD && paramD.result == 'success') {
4678 return paramD;
4679 } else {
4680 return errUnknownObj;
4681 }
4682 }
4683 }
4684 function getSiteWhiteList() {
4685 return stuffMake(arguments, {}, prepare, deal, null, false);
4686 function prepare(values, isPost) {
4687 var valueReq = {
4688 cmd: "site_white_list"
4689 };
4690 return valueReq;
4691 }
4692 function deal(paramD) {
4693 if (paramD && (paramD.site_white_list || paramD.siteList)) {
4694 return paramD;
4695 } else {
4696 return {
4697 siteList: []
4698 };
4699 }
4700 }
4701 }
4702 function removeSiteWhite() {
4703 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4704 : {
4705 errorType: 'no_auth'
4706 }, prepare, deal, null, true);
4707 function prepare(values, isPost) {
4708 var valueReq = {
4709 goformId: "REMOVE_WHITE_SITE",
4710 ids: values.ids.join(',')
4711 };
4712 return valueReq;
4713 }
4714 function deal(paramD) {
4715 if (paramD && paramD.result == 'success') {
4716 return paramD;
4717 } else {
4718 return errUnknownObj;
4719 }
4720 }
4721 }
4722 function saveSiteWhite() {
4723 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4724 : {
4725 errorType: 'no_auth'
4726 }, prepare, deal, null, true);
4727 function prepare(values, isPost) {
4728 var valueReq = {
4729 goformId: "ADD_WHITE_SITE",
4730 name: values.name,
4731 site: values.site
4732 };
4733 return valueReq;
4734 }
4735 function deal(paramD) {
4736 if (paramD && paramD.result == 'success') {
4737 return paramD;
4738 } else {
4739 return errUnknownObj;
4740 }
4741 }
4742 }
4743 function getTimeLimited() {
4744 var defaultResult = {
4745 '0': [],
4746 '1': [],
4747 '2': [],
4748 '3': [],
4749 '4': [],
4750 '5': [],
4751 '6': []
4752 };
4753 return stuffMake(arguments, {}, prepare, deal, null, false);
4754 function prepare(values, isPost) {
4755 var valueReq = {
4756 cmd: "time_limited"
4757 };
4758 return valueReq;
4759 }
4760 function deal(paramD) {
4761 if (paramD) {
4762 return parseTimeLimited(paramD);
4763 } else {
4764 return defaultResult;
4765 }
4766 }
4767 function parseTimeLimited(paramD) {
4768 if (paramD.time_limited == '') {
4769 return {
4770 time_limited: []
4771 };
4772 }
4773 var weeks = paramD.time_limited.split(';');
4774 _.each(weeks, function (week) {
4775 var weekTime = week.split('+');
4776 if (weekTime.length == 2) {
4777 defaultResult[weekTime[0]] = weekTime[1].split(',');
4778 }
4779 });
4780 return defaultResult;
4781 }
4782 }
4783 function saveTimeLimited() {
4784 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4785 : {
4786 errorType: 'no_auth'
4787 }, prepare, deal, null, true);
4788 function prepare(values, isPost) {
4789 var valueReq = {
4790 goformId: "SAVE_TIME_LIMITED",
4791 time_limited: values.time
4792 };
4793 return valueReq;
4794 }
4795 function deal(paramD) {
4796 if (paramD && paramD.result == 'success') {
4797 return paramD;
4798 } else {
4799 return errUnknownObj;
4800 }
4801 }
4802 }
4803 function getTsw() {
4804 return stuffMake(arguments, {}, prepare, deal, null, false);
4805 function prepare(values, isPost) {
4806 var valueReq = {
4807 cmd: "openEnable,closeEnable,openTime,closeTime",
4808 multi_data: '1'
4809 };
4810 return valueReq;
4811 }
4812 function deal(paramD) {
4813 if (paramD) {
4814 if (paramD.openTime.indexOf(':') != -1) {
4815 var open = paramD.openTime.split(':');
4816 paramD.openH = leftInsert(open[0], 2, '0');
4817 paramD.openM = leftInsert(open[1], 2, '0');
4818 } else {
4819 paramD.openH = '06';
4820 paramD.openM = '00';
4821 }
4822 if (paramD.closeTime.indexOf(':') != -1) {
4823 var close = paramD.closeTime.split(':');
4824 paramD.closeH = leftInsert(close[0], 2, '0');
4825 paramD.closeM = leftInsert(close[1], 2, '0');
4826 } else {
4827 paramD.closeH = '22';
4828 paramD.closeM = '00';
4829 }
4830 return paramD;
4831 } else {
4832 return errUnknownObj;
4833 }
4834 }
4835 }
4836 function saveTsw() {
4837 return stuffMake(arguments, {}, prepare, deal, null, true);
4838 function prepare(values, isPost) {
4839 var valueReq = {
4840 goformId: "SAVE_TSW",
4841 openEnable: values.openEnable,
4842 closeEnable: values.closeEnable
4843 };
4844 if (values.openEnable == '1') {
4845 valueReq.openTime = values.openTime;
4846 valueReq.closeTime = values.closeTime;
4847 }
4848 return valueReq;
4849 }
4850 function deal(paramD) {
4851 if (paramD && paramD.result == 'success') {
4852 return paramD;
4853 } else if (paramD && paramD.result == 'failure') {
4854 return paramD;
4855 } else {
4856 return errUnknownObj;
4857 }
4858 }
4859 }
4860 function trafficCalibration() {
4861 return stuffMake(arguments, {}, prepare, deal, null, true);
4862 function prepare(values, isPost) {
4863 var valueReq = {
4864 goformId: "FLOW_CALIBRATION_MANUAL",
4865 calibration_way: values.way,
4866 time: values.way == 'time' ? values.value : 0,
4867 data: values.way == 'data' ? values.value : 0
4868 };
4869 return valueReq;
4870 }
4871 function deal(paramD) {
4872 if (paramD && paramD.result == 'success') {
4873 return paramD;
4874 } else {
4875 return errUnknownObj;
4876 }
4877 }
4878 }
4879 function getParams() {
4880 return stuffMake(arguments, {}, prepare, deal, null, false);
4881 function prepare(values, isPost) {
4882 var valueReq = {};
4883 if (_.isArray(values.nv)) {
4884 valueReq.cmd = values.nv.join(',');
4885 valueReq.multi_data = 1;
4886 } else {
4887 valueReq.cmd = values.nv;
4888 }
4889 return valueReq;
4890 }
4891 function deal(paramD) {
4892 if (paramD) {
4893 return paramD;
4894 } else {
4895 return errUnknownObj;
4896 }
4897 }
4898 }
4899 function getRedirectData() {
4900 return stuffMake(arguments, {}, prepare, deal, null, false);
4901 function prepare(values, isPost) {
4902 var valueReq = {};
4903 valueReq.cmd = "vwim_mc_state,traffic_overrun,detect_new_version";
4904 valueReq.multi_data = 1;
4905 return valueReq;
4906 }
4907 function deal(paramD) {
4908 if (paramD) {
4909 var result = {};
4910 result.vwim_mc_state = paramD.vwim_mc_state;
4911 result.traffic_overrun = paramD.traffic_overrun;
4912 result.detect_new_version = paramD.detect_new_version;
4913 result.blc_wan_mode = informationAll.blc_wan_mode;
4914 return result;
4915 } else {
4916 return errUnknownObj;
4917 }
4918 }
4919 }
4920 function clearRedirectFlag() {
4921 return stuffMake(arguments, {}, prepare, deal, null, true);
4922 function prepare(values, isPost) {
4923 var valueReq = {};
4924 valueReq.goformId = "CLEAR_REDIRECT_FLAG";
4925 valueReq.flag_id = values.redirectFlags;
4926 return valueReq;
4927 }
4928 function deal(paramD) {
4929 if (paramD) {
4930 return paramD;
4931 } else {
4932 return errUnknownObj;
4933 }
4934 }
4935 }
4936 function getV4Switch() {
4937 return stuffMake(arguments, {}, prepare, deal, null, false);
4938 function prepare(values, isPost) {
4939 var valueReq = {};
4940 valueReq.cmd = "lock_zone_enable,pin_interlock_and_V4_lock";
4941 valueReq.multi_data = 1;
4942 return valueReq;
4943 }
4944 function deal(paramD) {
4945 if (paramD) {
4946 return paramD;
4947 } else {
4948 return errUnknownObj;
4949 }
4950 }
4951 }
4952 function setV4Switch() {
4953 return stuffMake(arguments, {}, prepare, deal, null, true);
4954 function prepare(values, isPost) {
4955 var valueReq = {};
4956 valueReq.goformId = "PIN_LOCK_V4_ENCODE";
4957 valueReq.pin_interlock_and_V4_lock = values.pin_interlock_and_V4_lock;
4958 valueReq.TspLock_key_data = values.TspLock_key_data;
4959 return valueReq;
4960 }
4961 function deal(paramD) {
4962 if (paramD && paramD.result == "success") {
4963 return paramD;
4964 } else {
4965 return errUnknownObj;
4966 }
4967 }
4968 }
4969 function getCellId() {
4970 return stuffMake(arguments, {}, prepare, deal, null, false);
4971 function prepare(values, isPost) {
4972 var valueReq = {};
4973 valueReq.cmd = "cell_id_list,global_cell_id,network_type,sub_network_type,cell_not_correct";
4974 valueReq.multi_data = 1;
4975 return valueReq;
4976 }
4977 function deal(paramD) {
4978 if (paramD) {
4979 return paramD;
4980 } else {
4981 return errUnknownObj;
4982 }
4983 }
4984 }
4985 function setCellIdSwitch() {
4986 return stuffMake(arguments, {}, prepare, deal, null, true);
4987 function prepare(values, isPost) {
4988 var valueReq = {};
4989 valueReq.goformId = "LOCK_ZONE";
4990 valueReq.lock_zone_enable = values.lock_zone_enable;
4991 return valueReq;
4992 }
4993 function deal(paramD) {
4994 if (paramD && paramD.result == "success") {
4995 return paramD;
4996 } else {
4997 return errUnknownObj;
4998 }
4999 }
5000 }
5001 function getUpdateType() {
5002 return stuffMake(arguments, {}, prepare, deal, null, false);
5003 function prepare(values, isPost) {
5004 var valueReq = {
5005 cmd: "update_type"
5006 };
5007 return valueReq;
5008 }
5009 function deal(paramD) {
5010 return {
5011 update_type: paramD.update_type ? paramD.update_type : "mifi_fota"
5012 }
5013 }
5014 }
5015 function getSecurityInfo() {
5016 return stuffMake(arguments, {}, prepare, deal, null, false);
5017 function prepare(values, isPost) {
5018 var valueReq = {};
5019 valueReq.cmd = "AuthMode,passPhrase";
5020 valueReq.multi_data = 1;
5021 return valueReq;
5022 }
5023 function deal(paramD) {
5024 if (paramD) {
5025 var result = {};
5026 result.AuthMode = paramD.AuthMode;
5027 result.passPhrase = config.PASSWORD_ENCODE ? Base64.decode(paramD.passPhrase) : paramD.passPhrase;
5028 return result;
5029 } else {
5030 return errUnknownObj;
5031 }
5032 }
5033 }
5034 //can delete
5035 function setSecurityInfo() {
5036 return stuffMake(arguments, {}, prepare, deal, null, true);
5037 function prepare(values, isPost) {
5038 var valueReq = {};
5039 valueReq.goformId = "SET_WIFI_SECURITY_INFO";
5040 valueReq.AuthMode = values.AuthMode;
5041 if (valueReq.AuthMode == "WPAPSKWPA2PSK") {
5042 valueReq.passPhrase = config.PASSWORD_ENCODE ? Base64.encode(values.passPhrase) : values.passPhrase;
5043 }
5044 return valueReq;
5045 }
5046 function deal(paramD) {
5047 if (paramD) {
5048 return paramD;
5049 } else {
5050 return errUnknownObj;
5051 }
5052 }
5053 }
5054 function setWifiBasic() {
5055 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
5056 function prepare(values) {
5057 var valueReq = {
5058 goformId: "SET_WIFI_SSID1_SETTINGS",
5059 ssid: values.SSID,
5060 broadcastSsidEnabled: values.broadcast,
5061 MAX_Access_num: values.station,
5062 security_mode: values.AuthMode,
5063 cipher: values.cipher,
5064 NoForwarding: values.NoForwarding,
5065 show_qrcode_flag: values.show_qrcode_flag
5066 };
5067 if (config.WIFI_WEP_SUPPORT) {
5068 valueReq.wep_default_key = values.wep_default_key;
5069 valueReq.wep_key_1 = values.wep_key_1;
5070 valueReq.wep_key_2 = values.wep_key_2;
5071 valueReq.wep_key_3 = values.wep_key_3;
5072 valueReq.wep_key_4 = values.wep_key_4;
5073 if (values.wep_default_key == '1') {
5074 valueReq.WEP2Select = values.WEP2Select;
5075 } else if (values.wep_default_key == '2') {
5076 valueReq.WEP3Select = values.WEP3Select;
5077 } else if (values.wep_default_key == '3') {
5078 valueReq.WEP4Select = values.WEP4Select;
5079 } else {
5080 valueReq.WEP1Select = values.WEP1Select;
5081 }
5082 }
5083 if (values.AuthMode == "WPAPSK" || values.AuthMode == "WPA2PSK" || values.AuthMode == "WPAPSKWPA2PSK" || values.AuthMode == "WPA3Personal" || values.AuthMode == "WPA2WPA3") {
5084 valueReq.security_shared_mode = values.cipher;
5085 valueReq.passphrase = config.PASSWORD_ENCODE ? Base64.encode(values.passPhrase) : values.passPhrase;
5086 } else if (values.AuthMode == "SHARED") {
5087 valueReq.security_shared_mode = "WEP";
5088 valueReq.security_mode = "SHARED";
5089 } else {
5090 if (values.encryptType == "WEP") {
5091 valueReq.security_shared_mode = "WEP";
5092 valueReq.security_mode = "OPEN";
5093 } else {
5094 valueReq.security_shared_mode = "NONE";
5095 }
5096 }
5097 return valueReq;
5098 }
5099 function deal(paramD) {
5100 if (paramD) {
5101 return paramD;
5102 } else {
5103 return errUnknownObj;
5104 }
5105 }
5106 }
5107 function setWifiBasic4SSID2() {
5108 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
5109 function prepare(values) {
5110 var valueReq = {
5111 goformId: "SET_WIFI_SSID2_SETTINGS",
5112 m_SSID: values.m_SSID,
5113 m_HideSSID: values.m_broadcast,
5114 m_MAX_Access_num: values.m_station,
5115 m_AuthMode: values.m_AuthMode,
5116 cipher: values.m_cipher,
5117 m_NoForwarding: values.m_NoForwarding,
5118 m_show_qrcode_flag: values.m_show_qrcode_flag
5119 };
5120 if (config.WIFI_WEP_SUPPORT) {
5121 valueReq.m_DefaultKeyID = values.m_wep_default_key;
5122 valueReq.m_Key1Str1 = values.m_wep_key_1;
5123 valueReq.m_Key2Str1 = values.m_wep_key_2;
5124 valueReq.m_Key3Str1 = values.m_wep_key_3;
5125 valueReq.m_Key4Str1 = values.m_wep_key_4;
5126 if (values.m_wep_default_key == '1') {
5127 valueReq.m_Key2Type = values.m_WEP2Select;
5128 } else if (values.m_wep_default_key == '2') {
5129 valueReq.m_Key3Type = values.m_WEP3Select;
5130 } else if (values.m_wep_default_key == '3') {
5131 valueReq.m_Key4Type = values.m_WEP4Select;
5132 } else {
5133 valueReq.m_Key1Type = values.m_WEP1Select;
5134 }
5135 }
5136 if (values.m_AuthMode == "WPAPSK" || values.m_AuthMode == "WPA2PSK" || values.m_AuthMode == "WPAPSKWPA2PSK" || values.m_AuthMode == "WPA3Personal" || values.m_AuthMode == "WPA2WPA3") {
5137 valueReq.m_EncrypType = values.m_cipher;
5138 valueReq.m_WPAPSK1 = config.PASSWORD_ENCODE ? Base64.encode(values.m_passPhrase) : values.m_passPhrase;
5139 } else if (values.m_AuthMode == "SHARED") {
5140 valueReq.m_EncrypType = "WEP";
5141 valueReq.m_security_mode = "SHARED";
5142 } else {
5143 if (values.m_encryptType == "WEP") {
5144 valueReq.m_EncrypType = "WEP";
5145 valueReq.m_security_mode = "OPEN";
5146 } else {
5147 valueReq.m_EncrypType = "NONE";
5148 }
5149 }
5150 return valueReq;
5151 }
5152 function deal(paramD) {
5153 if (paramD) {
5154 return paramD;
5155 } else {
5156 return errUnknownObj;
5157 }
5158 }
5159 }
5160 function getWifiBasic() {
5161 return stuffMake(arguments, {}, prepare, deal, null, false);
5162 function prepare(values, isPost) {
5163 var valueReq = {};
5164 var wpapsk = config.PASSWORD_ENCODE ? "WPAPSK1_encode,m_WPAPSK1_encode," : "imei,rnum_js,WPAPSK1_enaes,m_WPAPSK1_enaes,";
5165 valueReq.cmd = "m_ssid_enable,wifi_cur_state,NoForwarding,m_NoForwarding," + wpapsk + "MAX_Station_num," + "SSID1,AuthMode,HideSSID,MAX_Access_num,show_qrcode_flag,EncrypType,Key1Str1,Key2Str1,Key3Str1,Key4Str1,DefaultKeyID," + "m_SSID,m_AuthMode,m_HideSSID,m_MAX_Access_num,m_EncrypType,m_show_qrcode_flag,m_DefaultKeyID,m_Key1Str1,m_Key2Str1,m_Key3Str1,m_Key4Str1,rotationFlag,wifi_sta_connection";
5166 valueReq.multi_data = 1;
5167 return valueReq;
5168 }
5169 function deal(paramD) {
5170 if (paramD) {
5171 var result = {
5172 wifi_enable: paramD.wifi_cur_state == "1" ? "1" : "0",
5173 multi_ssid_enable: paramD.m_ssid_enable,
5174 MAX_Station_num: $.isNumeric(paramD.MAX_Station_num) ? paramD.MAX_Station_num : config.MAX_STATION_NUMBER,
5175 AuthMode: paramD.AuthMode,
5176 SSID: paramD.SSID1,
5177 broadcast: paramD.HideSSID,
5178 apIsolation: paramD.NoForwarding,
5179 passPhrase: config.PASSWORD_ENCODE ? Base64.decode(paramD.WPAPSK1_encode) : wifiDecode(paramD.rnum_js,paramD.imei,paramD.WPAPSK1_enaes),
5180 MAX_Access_num: paramD.MAX_Access_num,
5181 cipher: paramD.EncrypType == "TKIP" ? "0" : paramD.EncrypType == "AES" ? 1 : 2,
5182 encryptType: paramD.EncrypType,
5183 show_qrcode_flag: paramD.show_qrcode_flag == "1" ? true : false,
5184 keyID: paramD.DefaultKeyID,
5185 Key1Str1: paramD.Key1Str1,
5186 Key2Str1: paramD.Key2Str1,
5187 Key3Str1: paramD.Key3Str1,
5188 Key4Str1: paramD.Key4Str1,
5189 m_SSID: paramD.m_SSID,
5190 m_broadcast: paramD.m_HideSSID,
5191 m_apIsolation: paramD.m_NoForwarding,
5192 m_MAX_Access_num: paramD.m_MAX_Access_num,
5193 m_AuthMode: paramD.m_AuthMode,
5194 m_passPhrase: config.PASSWORD_ENCODE ? Base64.decode(paramD.m_WPAPSK1_encode) : wifiDecode(paramD.rnum_js,paramD.imei,paramD.m_WPAPSK1_enaes),
5195 m_cipher: paramD.m_EncrypType == "TKIP" ? "0" : paramD.m_EncrypType == "AES" ? 1 : 2,
5196 m_show_qrcode_flag: paramD.m_show_qrcode_flag == "1" ? true : false,
5197 m_encryptType: paramD.m_EncrypType,
5198 m_keyID: paramD.m_DefaultKeyID,
5199 m_Key1Str1: paramD.m_Key1Str1,
5200 m_Key2Str1: paramD.m_Key2Str1,
5201 m_Key3Str1: paramD.m_Key3Str1,
5202 m_Key4Str1: paramD.m_Key4Str1,
5203 rotationFlag: paramD.rotationFlag,
5204 ap_station_enable: paramD.wifi_sta_connection
5205 };
5206 return result;
5207 } else {
5208 return errUnknownObj;
5209 }
5210 }
5211 }
5212 function setWifiBasicMultiSSIDSwitch() {
5213 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
5214 function prepare(values) {
5215 var paraTemp = values;
5216 if (values.wifiEnabled == '0') {
5217 paraTemp = {
5218 wifiEnabled: values.wifiEnabled
5219 }
5220 }
5221 var valueReq = $.extend({
5222 goformId: "SET_WIFI_INFO",
5223 }, paraTemp);
5224 return valueReq;
5225 }
5226 function deal(paramD) {
5227 if (paramD) {
5228 return paramD;
5229 } else {
5230 return errUnknownObj;
5231 }
5232 }
5233 }
5234 function stuffMake(array, result, prepare, dealMethod, errorObject, isPost) {
5235 var values = array[0],
5236 callback = array[1],
5237 errorCallback = array[2];
5238 var objectToReturn;
5239 if (result && typeof result.errorType === 'string') {
5240 objectToReturn = $.extend(errUnknownObj, result);
5241 if (!callback) {
5242 return objectToReturn;
5243 }
5244 doCallback(objectToReturn, callback, errorCallback);
5245 } else {
5246 objectToReturn = $.extend({}, result);
5247 var valueReq;
5248 if (prepare) {
5249 valueReq = prepare(values, isPost);
5250 } else {
5251 valueReq = values;
5252 }
5253 if (!callback) {
5254 if (valueReq && (valueReq.cmd || valueReq.goformId)) {
5255 var r = reqSync(valueReq, isPost);
5256 if (dealMethod) {
5257 objectToReturn = $.extend({}, dealMethod(r));
5258 } else {
5259 objectToReturn = r;
5260 }
5261 }
5262 return objectToReturn;
5263 } else {
5264 if (valueReq && (valueReq.cmd || valueReq.goformId)) {
5265 reqAsync(valueReq, function (paramD) {
5266 if (dealMethod) {
5267 objectToReturn = $.extend({}, dealMethod(paramD));
5268 } else {
5269 objectToReturn = $.extend({}, paramD);
5270 }
5271 if (!valueReq.notCallback) {
5272 doCallback(objectToReturn, callback, errorCallback);
5273 }
5274 }, function () {
5275 if (errorObject) {
5276 objectToReturn = $.extend(errUnknownObj, errorObject);
5277 } else {
5278 objectToReturn = $.extend(errUnknownObj, {
5279 errorType: 'Unknown'
5280 });
5281 }
5282 doCallback(objectToReturn, callback, errorCallback);
5283 }, isPost);
5284 } else {
5285 doCallback(objectToReturn, callback, errorCallback);
5286 }
5287 }
5288 }
5289 function doCallback(resultToReturn, callback, errorCallback) {
5290 errorCallback = errorCallback ? errorCallback : callback;
5291 if (isErrorObject(resultToReturn)) {
5292 switch (resultToReturn.errorType) {
5293 case 'cellularNetworkError':
5294 case 'deviceError':
5295 case 'wifiConnectionError':
5296 window.receivedNonSpecificError(resultToReturn);
5297 break;
5298 default:
5299 errorCallback(resultToReturn);
5300 }
5301 } else {
5302 callback(resultToReturn);
5303 }
5304 }
5305 }
5306 function reqSync(values, isPost) {
5307 return reqAJAX(values, null, null, false, isPost);
5308 }
5309 function reqAsync(values, successCallback, errorCallback, isPost) {
5310 reqAJAX(values, successCallback, errorCallback, true, isPost);
5311 }
5312 function getString(values){
5313 var regexp = /^[A-z0-9]+$/;
5314 var matches = values.match(regexp);
5315 if (matches == null){
5316 return "error";
5317 } else {
5318 return values;
5319 }
5320 }
5321 function reqAJAX(values, successCallback, errorCallback, async, isPost) {
5322 var result = null;
5323 $.ajax({
5324 type: !!isPost ? "POST" : "GET",
5325 url: isPost ? "/reqproc/proc_post" : values.cmd ? "/reqproc/proc_get" : "/reqproc/proc_post",
5326 data: values,
5327 dataType: "json",
5328 async: !!async,
5329 cache: false,
5330 error: function (paramD) {
5331 if (async) {
5332 errorCallback(paramD);
5333 } else if (paramD.status == 200) {
5334 result = jQuery.parseJSON('(' + getString(paramD.responseText) + ')');
5335 }
5336 },
5337 success: function (paramD) {
5338 if (async) {
5339 successCallback(paramD);
5340 } else {
5341 result = paramD;
5342 }
5343 }
5344 });
5345 if (!async) {
5346 return result;
5347 }
5348 }
5349 var informationAll = {
5350 networkType: "",
5351 signalImg: "0",
5352 spn_b1_flag: "1",
5353 spn_name_data: "",
5354 spn_b2_flag: "1",
5355 networkOperator: "China Mobile",
5356 connectStatus: "ppp_disconnected",
5357 rj45ConnectStatus: "rj45_dead",
5358 attachedDevices: [],
5359 ssid1AttachedNum: 0,
5360 ssid2AttachedNum: 0,
5361 data_counter: {
5362 uploadRate: 0,
5363 downloadRate: 0,
5364 totalSent: 0,
5365 totalReceived: 0,
5366 totalConnectedTime: 0,
5367 currentSent: 0,
5368 currentReceived: 0,
5369 currentConnectedTime: 0,
5370 monthlySent: 0,
5371 monthlyReceived: 0,
5372 monthlyConnectedTime: 0,
5373 month: ''
5374 },
5375 newSmsReceived: false,
5376 smsReportReceived: false,
5377 smsUnreadCount: "0",
5378 isLoggedIn: undefined,
5379 limitVolumeEnable: false,
5380 limitVolumeType: '1',
5381 limitVolumePercent: "100",
5382 limitVolumeSize: "0",
5383 allowRoamingUpdate: "0",
5384 blc_wan_mode: "",
5385 ap_station_enable: undefined,
5386 ap_station_mode: undefined,
5387 dialMode: '',
5388 ethWanMode: 'AUTO',
5389 fota_user_selector: '',
5390 defaultWanName: ""
5391 };
5392 var errUnknownObj = {
5393 errorType: 'UnknownError',
5394 errorId: '123',
5395 errorText: 'UnknownError'
5396 };
5397 var updateTimerFlag = true;
5398 return {
5399 clearRedirectFlag: clearRedirectFlag,
5400 connect: connect,
5401 disconnect: disconnect,
5402 getSIMPhoneBookCapacity: getSIMPhoneBookCapacity,
5403 getDevicePhoneBookCapacity: getDevicePhoneBookCapacity,
5404 getDevicePhoneBooks: getDevicePhoneBooks,
5405 getSIMPhoneBooks: getSIMPhoneBooks,
5406 getPhoneBooks: getPhoneBooks,
5407 getPhoneBookReady: getPhoneBookReady,
5408 getPhoneBooksByGroup: getPhoneBooksByGroup,
5409 deletePhoneBooks: deletePhoneBooks,
5410 deleteAllPhoneBooks: deleteAllPhoneBooks,
5411 deleteAllPhoneBooksByGroup: deleteAllPhoneBooksByGroup,
5412 savePhoneBook: savePhoneBook,
5413 deleteAllMessages: deleteAllMessages,
5414 deleteMessage: deleteMessage,
5415 setSmsRead: setSmsRead,
5416 sendSMS: sendSMS,
5417 saveSMS: saveSMS,
5418 getSMSReady: getSMSReady,
5419 getSMSMessages: getSMSMessages,
5420 getSMSDeliveryReport: getSMSDeliveryReport,
5421 getSmsCapability: getSmsCapability,
5422 resetNewSmsReceivedVar: resetNewSmsReceivedVar,
5423 resetSmsReportReceivedVar: resetSmsReportReceivedVar,
5424 getSmsSetting: getSmsSetting,
5425 setSmsSetting: setSmsSetting,
5426 getAttachedCableDevices: getAttachedCableDevices,
5427 getCurrentlyAttachedDevicesInfo: getCurrentlyAttachedDevicesInfo,
5428 getConnectionInfo: getConnectionInfo,
5429 getRedirectData: getRedirectData,
5430 getLanguage: getLanguage,
5431 setLanguage: setLanguage,
5432 getNetSelectInfo: getNetSelectInfo,
5433 getSecurityInfo: getSecurityInfo,
5434 setSecurityInfo: setSecurityInfo,
5435 getStatusInfo: getStatusInfo,
5436 getConnectionMode: getConnectionMode,
5437 setConnectionMode: setConnectionMode,
5438 getWifiBasic: getWifiBasic,
5439 setWifiBasic: setWifiBasic,
5440 setWifiBasic4SSID2: setWifiBasic4SSID2,
5441 setWifiBasicMultiSSIDSwitch: setWifiBasicMultiSSIDSwitch,
5442 getWpsInfo: getWpsInfo,
5443 openWps: openWps,
5444 getSleepMode: getSleepMode,
5445 setSleepMode: setSleepMode,
5446 getWifiAdvance: getWifiAdvance,
5447 setWifiAdvance: setWifiAdvance,
5448 getWifiRange: getWifiRange,
5449 setWifiRange: setWifiRange,
mj.qu19ac6692024-08-21 19:18:36 -07005450
zw.wangcfae4372024-08-12 16:41:12 +08005451 getLoginStatus: getLoginStatus,
5452 getLoginData: getLoginData,
5453 login: login,
5454 logout: logout,
5455 changeManageInfo: changeManageInfo,
5456 getPinData: getPinData,
5457 enablePin: enablePin,
5458 disablePin: disablePin,
5459 changePin: changePin,
5460 enterPIN: enterPIN,
5461 enterPUK: enterPUK,
5462 getLanInfo: getLanInfo,
5463 setLanInfo: setLanInfo,
5464 getApnSettings: getApnSettings,
mj.qua175b812025-04-03 03:52:28 -07005465 getNetworkStatus: getNetworkStatus,
zw.wangcfae4372024-08-12 16:41:12 +08005466 deleteApn: deleteApn,
5467 setDefaultApn: setDefaultApn,
5468 addOrEditApn: addOrEditApn,
5469 getQuickSettingInfo: getQuickSettingInfo,
5470 setQuickSetting4IPv6: setQuickSetting4IPv6,
5471 scanForNetwork: scanForNetwork,
5472 setBearerPreference: setBearerPreference,
5473 editHostName: editHostName,
5474 getSiteWhiteList: getSiteWhiteList,
5475 removeSiteWhite: removeSiteWhite,
5476 saveSiteWhite: saveSiteWhite,
5477 setNetwork: setNetwork,
5478 getUpnpSetting: getUpnpSetting,
5479 setUpnpSetting: setUpnpSetting,
5480 getDmzSetting: getDmzSetting,
5481 setDmzSetting: setDmzSetting,
5482 getDeviceInfo: getDeviceInfo,
5483 getDeviceInfoLow: getDeviceInfoLow,
5484 getPortForward: getPortForward,
5485 setPortForward: setPortForward,
5486 getPortFilter: getPortFilter,
5487 setPortFilterBasic: setPortFilterBasic,
5488 setPortFilter: setPortFilter,
5489 deleteFilterRules: deleteFilterRules,
5490 getPortMap: getPortMap,
5491 setPortMap: setPortMap,
5492 enablePortMap: enablePortMap,
5493 deleteMapRules: deleteMapRules,
5494 getTrafficAlertInfo: getTrafficAlertInfo,
5495 setTrafficAlertInfo: setTrafficAlertInfo,
5496 getCurrentUpgradeState: getCurrentUpgradeState,
5497 setUpgradeSelectOp: setUpgradeSelectOp,
5498 addTimerThings: addTimerSomething,
5499 removeTimerThings: removeTimerSomething,
5500 getPackSizeInfo: getPackSizeInfo,
5501 getMandatory: getMandatory,
5502 getOTAUpdateSetting: getOTAUpdateSetting,
5503 setOTAUpdateSetting: setOTAUpdateSetting,
5504 getSignalStrength: getSignalStrength,
5505 getOTAlastCheckTime: getOTAlastCheckTime,
5506 clearUpdateResult: clearUpdateResult,
5507 refreshAPStationStatus: refreshAPStationStatus,
5508 getSntpParams: getSntpParams,
5509 setSntpSetting: setSntpSetting,
5510 setSNTPDate: setSNTPDate,
5511 restoreFactorySettings: restoreFactorySettings,
5512 checkRestoreStatus: checkRestoreStatus,
5513 getSysSecurity: getSysSecurity,
5514 setSysSecurity: setSysSecurity,
5515 deleteForwardRules: deleteForwardRules,
5516 enableVirtualServer: enableVirtualServer,
5517 getSDConfiguration: getSDConfiguration,
5518 setSdCardMode: setSdCardMode,
5519 checkFileExists: checkFileExists,
5520 getFileList: getFileList,
5521 fileRename: fileRename,
5522 getSdMemorySizes: getSdMemorySizes,
5523 deleteFilesAndFolders: deleteFilesAndFolders,
5524 createFolder: createFolder,
5525 setSdCardSharing: setSdCardSharing,
5526 setUpdateInfoWarning: setUpdateInfoWarning,
5527 getUpdateInfoWarning: getUpdateInfoWarning,
5528 getAPStationBasic: getAPStationBasic,
5529 setAPStationBasic: setAPStationBasic,
5530 getWdsInfo: getWdsInfo,
5531 setWDS: setWDS,
5532 addUrlFilterRule: addUrlFilterRule,
5533 getUrlFilterList: getUrlFilterList,
5534 deleteSelectedRules: deleteSelectedRules,
5535 getMacFilterInfo: getMacFilterInfo,
5536 setMacFilter: setMacFilter,
5537 getFastbootSetting: getFastbootSetting,
5538 setFastbootSetting: setFastbootSetting,
5539 turnOffDevice: turnOffDevice,
5540 restart: restart,
5541 getScheduleSetting: getScheduleSetting,
5542 setScheduleSetting: setScheduleSetting,
mj.qucf65e412024-09-14 10:05:29 +08005543 getPingResult: getPingResult,
5544 pingResultClear: pingResultClear,
5545 getPingSetting: getPingSetting,
5546 setPingSettingStart: setPingSettingStart,
zw.wangcfae4372024-08-12 16:41:12 +08005547 updateTimerFlag: updateTimerFlag,
5548 childGroupList: childGroupList,
5549 addChildGroup: addChildGroup,
5550 removeChildGroup: removeChildGroup,
5551 checkCurrentUserInChildGroup: checkCurrentUserInChildGroup,
5552 getTimeLimited: getTimeLimited,
5553 saveTimeLimited: saveTimeLimited,
5554 getHostNameList: getHostNameList,
5555 getHotspotList: getHotspotList,
5556 searchHotspot: searchHotspot,
5557 getSearchHotspotList: getSearchHotspotList,
5558 saveHotspot: saveHotspot,
5559 deleteHotspot: deleteHotspot,
5560 connectHotspot: connectHotspot,
5561 disconnectHotspot: disconnectHotspot,
5562 getOpMode: getOpMode,
5563 getRj45PlugState: getRj45PlugState,
5564 SetOperationMode: SetOperationMode,
5565 getPppoeParams: getPppoeParams,
5566 setPppoeDialMode: setPppoeDialMode,
5567 getTsw: getTsw,
5568 saveTsw: saveTsw,
5569 trafficCalibration: trafficCalibration,
5570 getParams: getParams,
5571 getNewVersionState: getNewVersionState,
5572 getUpgradeResult: getUpgradeResult,
5573 getV4Switch: getV4Switch,
5574 setV4Switch: setV4Switch,
5575 getCellId: getCellId,
5576 setCellIdSwitch: setCellIdSwitch,
5577 getDdnsParams: getDdnsParams,
5578 setDDNSForward: setDDNSForward,
5579 getUpdateType: getUpdateType,
5580 getCurretnMAC: getCurretnMAC,
5581 getUSSDResponse: getUSSDResponse,
5582 USSDReplyCancel: USSDReplyCancel,
5583 getNetworkUnlockTimes: getNetworkUnlockTimes,
5584 unlockNetwork: unlockNetwork,
5585 getSyslogInfo: getSyslogInfo,
5586 setSysLog: setSysLog,
5587 };
5588});
5589
mj.qu19ac6692024-08-21 19:18:36 -07005590 // Router����
zw.wangcfae4372024-08-12 16:41:12 +08005591
5592define("adm_lan","jquery knockout set service".split(" "),
5593
5594 function ($, ko, config, service) {
mj.qu19ac6692024-08-21 19:18:36 -07005595
zw.wangcfae4372024-08-12 16:41:12 +08005596 var originfrmLan = "";
mj.qu19ac6692024-08-21 19:18:36 -07005597
5598 // ��ȡ·������������Ϣ
zw.wangcfae4372024-08-12 16:41:12 +08005599 function getLanInfo() {
5600 return service.getLanInfo();
5601 }
mj.qu19ac6692024-08-21 19:18:36 -07005602
zw.wangcfae4372024-08-12 16:41:12 +08005603 function hex(val) {
5604 var h = (val - 0).toString(16);
5605 if (h.length == 1)
5606 h = '0' + h;
5607 return h.toUpperCase();
5608 }
mj.qu19ac6692024-08-21 19:18:36 -07005609
zw.wangcfae4372024-08-12 16:41:12 +08005610 function LanViewModel() {
5611 var target = this;
5612
5613 var info = getLanInfo();
5614
5615 target.dhcpStart = ko.observable(info.dhcpStart);
5616 target.dhcpEnd = ko.observable(info.dhcpEnd);
5617 target.dhcpLease = ko.observable(info.dhcpLease);
mj.qu19ac6692024-08-21 19:18:36 -07005618
zw.wangcfae4372024-08-12 16:41:12 +08005619 target.ipAddress = ko.observable(info.ipAddress);
5620 target.subnetMask = ko.observable(info.subnetMask);
5621 target.dhcpServer = ko.observable(info.dhcpServer);
5622
5623 target.macAddress = ko.observable(info.macAddress);
5624 target.showMacAddress = ko.observable(config.SHOW_MAC_ADDRESS);
mj.qu19ac6692024-08-21 19:18:36 -07005625
zw.wangcfae4372024-08-12 16:41:12 +08005626 target.hasWifi = ko.observable(config.HAS_WIFI);
5627 target.hasUssd = config.HAS_USSD;
5628 target.hasDdns = config.DDNS_SUPPORT;
mj.qu19ac6692024-08-21 19:18:36 -07005629
zw.wangcfae4372024-08-12 16:41:12 +08005630 target.hasUpdateCheck = config.HAS_UPDATE_CHECK;
mj.qu19ac6692024-08-21 19:18:36 -07005631
zw.wangcfae4372024-08-12 16:41:12 +08005632 target.clear = function () {
5633 clearTimer();
5634 init();
5635 clearValidateMsg();
5636 };
mj.qu19ac6692024-08-21 19:18:36 -07005637
zw.wangcfae4372024-08-12 16:41:12 +08005638 target.refreshStatus = function () {
5639 var connInfo = service.getConnectionInfo();
5640 if (connInfo.connectStatus == 'ppp_disconnected') {
5641 $('input', '#frmLan').each(function () {
5642 $(this).attr("disabled", false);
5643 });
5644 } else {
5645 $('input', '#frmLan').each(function () {
5646 $(this).attr("disabled", true);
5647 });
5648
5649 clearValidateMsg();
5650 }
5651 };
5652
mj.qu19ac6692024-08-21 19:18:36 -07005653 // ������Ӧ�������������ñ���
zw.wangcfae4372024-08-12 16:41:12 +08005654 target.saveAct = function () {
5655 showLoading();
5656 var params = {
5657 ipAddress: target.ipAddress(),
5658 subnetMask: target.subnetMask(),
5659 dhcpServer: target.dhcpServer(),
5660 dhcpStart: target.dhcpStart(),
5661 dhcpEnd: target.dhcpEnd(),
5662 dhcpLease: target.dhcpLease()
5663 };
mj.qu19ac6692024-08-21 19:18:36 -07005664
zw.wangcfae4372024-08-12 16:41:12 +08005665 service.setLanInfo(params, function (result) {
5666 if (result.result == "success") {
5667 successOverlay();
5668 target.clear();
5669 } else {
5670 errorOverlay();
5671 }
5672 });
5673 };
5674
mj.qu19ac6692024-08-21 19:18:36 -07005675 // ������Ӧ�������������ñ���
zw.wangcfae4372024-08-12 16:41:12 +08005676 target.save = function () {
5677 var frmLanObj = $('#frmLan').serialize();
5678 if (frmLanObj == originfrmLan) {
5679 showAlert("setting_no_change");
5680 return false;
5681 }
5682 if (config.RJ45_SUPPORT) {
5683 var pppObj = service.getPppoeParams();
5684 if (sf_isValidate_StaticIP(pppObj.static_wan_ipaddr, target.ipAddress(), target.subnetMask())) {
5685 showAlert("lan_tip_staticip_notsame");
5686 return false;
5687 }
5688 }
5689 showConfirm("lan_confirm_reopen", function () {
5690 target.saveAct();
5691 });
5692 };
5693
5694 target.refreshStatus();
mj.qu19ac6692024-08-21 19:18:36 -07005695 // dhcpServer�л���Ӧ����
zw.wangcfae4372024-08-12 16:41:12 +08005696 target.dhcpServerHandler = function () {
5697 $("#txtIpAddress").parent().find(".error").hide();
5698 $("#txtIpAddress").show();
5699 return true;
5700 };
5701 addTimeout(function () {
5702 originfrmLan = $('#frmLan').serialize();
5703 }, 500);
5704 }
5705
mj.qu19ac6692024-08-21 19:18:36 -07005706
zw.wangcfae4372024-08-12 16:41:12 +08005707 function sf_opAnd4Byte(i_v1, i_v2) {
5708 var index;
5709 var var1 = [];
5710 var var2 = [];
5711 var result='0x';
5712
5713 for (index=2,index_tmp=0; index<10; index+=2,index_tmp++) {
5714 var1[index_tmp]='0x'+i_v1.substring(index,index+2);
5715 var2[index_tmp]='0x'+i_v2.substring(index,index+2);
5716 }
5717
5718 for (index=0; index<4; index++) {
5719 result = result + hex(var1[index]&var2[index]);
5720 }
5721
5722 return result - 0;
5723 }
5724
mj.qu19ac6692024-08-21 19:18:36 -07005725 // �������ر���У������
zw.wangcfae4372024-08-12 16:41:12 +08005726 $.validator.addMethod("dhcp_check", function (i_value, i_element, i_parameter) {
5727 var dhcpIp = i_parameter == "start" ? $('#txtDhcpIpPoolStart').val() : $('#txtDhcpIpPoolEnd').val();
5728 var result = sf_isValidate_Gateway($('#txtIpAddress').val(), $('#txtSubnetMask').val(), dhcpIp);
5729 return this.optional(i_element) || result;
5730 });
5731
5732 $.validator.addMethod("dhcpCompare", function (i_value, i_element, i_parameter) {
5733 var result;
5734 if(i_parameter == "#txtDhcpIpPoolStart") {
5735 result = sf_isValidate_StartEndIp($('#txtIpAddress').val(), $('#txtSubnetMask').val(), $(i_parameter).val(), i_value);
5736 }
5737 else {
5738 result = sf_isValidate_StartEndIp($('#txtIpAddress').val(), $('#txtSubnetMask').val(), i_value, $(i_parameter).val());
5739 }
5740 return result != 1;
5741 });
5742
5743 $.validator.addMethod("ipRange", function (i_value, i_element, i_parameter) {
5744 var DHCP_flag = false;
5745 if($('#dhcpEnable').is(':checked')){
5746 DHCP_flag = true;
5747 }
5748 var result = sf_isValidate_StartEndIp(i_value, $('#txtSubnetMask').val(), $('#txtDhcpIpPoolStart').val(), $('#txtDhcpIpPoolEnd').val(), DHCP_flag);
5749 return result != 2;
5750 });
mj.qu19ac6692024-08-21 19:18:36 -07005751
zw.wangcfae4372024-08-12 16:41:12 +08005752 $.validator.addMethod("subnetmask_check", function (i_value, i_element, i_parameter) {
5753 var result = sf_isValidate_Netmask(i_value);
5754 return this.optional(i_element) || result;
5755 });
zw.wangcfae4372024-08-12 16:41:12 +08005756
mj.qu19ac6692024-08-21 19:18:36 -07005757
5758 // ��̬��ЧIPУ�麯��
zw.wangcfae4372024-08-12 16:41:12 +08005759 function sf_isValidate_StaticIP(i_ip, i_lanIp, i_lanMask){
mj.qu19ac6692024-08-21 19:18:36 -07005760 if(!i_ip || !i_lanIp || !i_lanMask){//������������
zw.wangcfae4372024-08-12 16:41:12 +08005761 return false;
5762 }
mj.qu19ac6692024-08-21 19:18:36 -07005763
5764 //������IP����
zw.wangcfae4372024-08-12 16:41:12 +08005765 if (i_ip == i_lanIp) {
5766 return true;
5767 }
mj.qu19ac6692024-08-21 19:18:36 -07005768
zw.wangcfae4372024-08-12 16:41:12 +08005769 var res1 = [];
5770 var res2 = [];
mj.qu19ac6692024-08-21 19:18:36 -07005771
zw.wangcfae4372024-08-12 16:41:12 +08005772 var mask_array = [];
mj.qu19ac6692024-08-21 19:18:36 -07005773
zw.wangcfae4372024-08-12 16:41:12 +08005774 ip_array = i_ip.split(".");
5775 lanIp_array = i_lanIp.split(".");
5776 mask_array = i_lanMask.split(".");
5777 for(var index = 0; index < ip_array.length; index += 1){
5778 res1.push(parseInt(mask_array[index]) & parseInt(ip_array[index]));
5779 res2.push(parseInt(mask_array[index]) & parseInt(lanIp_array[index]));
5780 }
mj.qu19ac6692024-08-21 19:18:36 -07005781 if(res2.join(".") != res1.join(".")){//�ڲ�ͬ����
zw.wangcfae4372024-08-12 16:41:12 +08005782 return false;
mj.qu19ac6692024-08-21 19:18:36 -07005783 }else{//��ͬһ����
zw.wangcfae4372024-08-12 16:41:12 +08005784 return true;
5785 }
5786 }
mj.qu19ac6692024-08-21 19:18:36 -07005787
zw.wangcfae4372024-08-12 16:41:12 +08005788
5789 function sf_isValidate_NetmaskIP(i_ip) {
5790 return (i_ip == 255
5791 || i_ip == 254
5792 || i_ip == 252
5793 || i_ip == 248
5794 || i_ip == 240
5795 || i_ip == 224
5796 || i_ip == 192
5797 || i_ip == 128
5798 || i_ip == 0);
5799 }
mj.qu19ac6692024-08-21 19:18:36 -07005800
zw.wangcfae4372024-08-12 16:41:12 +08005801 function sf_convertIpToString(i_ip)
5802 {
5803 var s_i1 = i_ip.indexOf('.');
5804 var s_i2 = i_ip.indexOf('.', (s_i1 + 1));
5805 var s_i3 = i_ip.indexOf('.', (s_i2 + 1));
5806 o_ip = hex(i_ip.substring(0, s_i1)) + hex(i_ip.substring((s_i1 + 1), s_i2)) + hex(i_ip.substring((s_i2 + 1), s_i3)) + hex(i_ip.substring((s_i3 + 1), i_ip.length));
5807 o_ip = '0x' + o_ip;
5808
5809 return o_ip;
5810 }
mj.qu19ac6692024-08-21 19:18:36 -07005811
zw.wangcfae4372024-08-12 16:41:12 +08005812 function sf_getIpString_3(i_ip)
5813 {
5814 var i1 = i_ip.indexOf('.');
5815 var i2 = i_ip.indexOf('.', (i1 + 1));
5816 var i3 = i_ip.indexOf('.', (i2 + 1));
5817 var i4 = i_ip.substring((i3+1),i_ip.length)-0;
5818
5819 return i4;
5820 }
5821
mj.qu19ac6692024-08-21 19:18:36 -07005822
5823 // ����У�麯��
zw.wangcfae4372024-08-12 16:41:12 +08005824 function sf_isValidate_Gateway(i_wanIp, i_netmaskIp, i_gatewayIp) {
5825 var s_wanIp = sf_convertIpToString(i_wanIp);
5826 var lan4 = sf_getIpString_3(i_wanIp);
mj.qu19ac6692024-08-21 19:18:36 -07005827
zw.wangcfae4372024-08-12 16:41:12 +08005828 var s_netmaskIp = sf_convertIpToString(i_netmaskIp);
5829 var mask4 = sf_getIpString_3(i_netmaskIp);
mj.qu19ac6692024-08-21 19:18:36 -07005830
zw.wangcfae4372024-08-12 16:41:12 +08005831 var s_gatewayIp = sf_convertIpToString(i_gatewayIp);
5832 var pool4 = sf_getIpString_3(i_gatewayIp);
mj.qu19ac6692024-08-21 19:18:36 -07005833
zw.wangcfae4372024-08-12 16:41:12 +08005834 var net_no;
5835 var lo_broadcast;
5836
5837 if (sf_opAnd4Byte(s_wanIp, s_netmaskIp) != sf_opAnd4Byte(s_gatewayIp, s_netmaskIp)) {
5838 return false;
5839 }
5840
5841 net_no = (lan4 & mask4);
5842 lo_broadcast = (lan4 & mask4) + (255-mask4);
5843
5844 return !(pool4==net_no || pool4==lo_broadcast);
mj.qu19ac6692024-08-21 19:18:36 -07005845
zw.wangcfae4372024-08-12 16:41:12 +08005846 }
5847
mj.qu19ac6692024-08-21 19:18:36 -07005848 // ��������У�麯��
zw.wangcfae4372024-08-12 16:41:12 +08005849 function sf_isValidate_Netmask(i_netmask) {
5850 var addr = i_netmask.split(".");
mj.qu19ac6692024-08-21 19:18:36 -07005851
zw.wangcfae4372024-08-12 16:41:12 +08005852 if ("0.0.0.0" == i_netmask || "255.255.255.255" == i_netmask) {
5853 return false;
5854 }
5855
5856 if (addr.length != 4) {
5857 return false;
5858 }
5859
5860 addr[0] = parseInt(addr[0]);
5861 addr[1] = parseInt(addr[1]);
5862 addr[2] = parseInt(addr[2]);
5863 addr[3] = parseInt(addr[3]);
5864
5865 if (addr[3] != 0) {
5866 if (addr[0] != 255 || addr[1] != 255 || addr[2] != 255) {
5867 return false;
5868 } else {
5869 if (!sf_isValidate_NetmaskIP(addr[3])) {
5870 return false;
5871 }
5872 }
5873 }
5874
5875 if (addr[2] != 0) {
5876 if (addr[0] != 255 || addr[1] != 255) {
5877 return false;
5878 } else {
5879 if (!sf_isValidate_NetmaskIP(addr[2])) {
5880 return false;
5881 }
5882 }
5883 }
5884
5885 if (addr[1] != 0) {
5886 if (addr[0] != 255) {
5887 return false;
5888 } else {
5889 if (!sf_isValidate_NetmaskIP(addr[1])) {
5890 return false;
5891 }
5892 }
5893 }
mj.qu19ac6692024-08-21 19:18:36 -07005894
zw.wangcfae4372024-08-12 16:41:12 +08005895 if (addr[0] != 255) {
5896 return false;
5897 }
mj.qu19ac6692024-08-21 19:18:36 -07005898
zw.wangcfae4372024-08-12 16:41:12 +08005899 return true;
5900 }
mj.qu19ac6692024-08-21 19:18:36 -07005901
5902 // DHCP IP��У�麯��
zw.wangcfae4372024-08-12 16:41:12 +08005903 function sf_isValidate_StartEndIp(i_lanIpaddr, i_netIp, i_startIp, i_endIp, i_DHCPFlag) {
5904 s_startIp = sf_convertIpToString(i_startIp);
5905 s_endIp = sf_convertIpToString(i_endIp);
5906 s_lanIp = sf_convertIpToString(i_lanIpaddr);
5907
5908 if(s_startIp>s_endIp) {
5909 return 1;
5910 }
mj.qu19ac6692024-08-21 19:18:36 -07005911
zw.wangcfae4372024-08-12 16:41:12 +08005912 if(s_lanIp >= s_startIp && s_lanIp <= s_endIp) {
5913 return 2;
5914 }
5915
5916 return 0;
5917 }
5918
5919
5920 function init() {
5921 var container = $('#container');
5922 ko.cleanNode(container[0]);
5923 var fwVm = new LanViewModel();
5924 ko.applyBindings(fwVm, container[0]);
5925
5926 addInterval(fwVm.refreshStatus, 1000);
5927
5928 $('#frmLan').validate({
5929 submitHandler:function () {
5930 fwVm.save();
5931 },
mj.qu19ac6692024-08-21 19:18:36 -07005932
zw.wangcfae4372024-08-12 16:41:12 +08005933 rules:{
5934 txtIpAddress: {
5935 lanip_check: true,
5936 ipRange: true
5937 },
5938 txtSubnetMask: {
5939 ipv4: true,
5940 subnetmask_check: true
5941 },
5942 txtDhcpIpPoolStart: {
5943 lanip_check: true,
5944 dhcp_check: "start",
5945 dhcpCompare: "#txtDhcpIpPoolEnd"
5946 },
5947 txtDhcpIpPoolEnd: {
5948 lanip_check: true,
5949 dhcp_check: "end",
5950 dhcpCompare: "#txtDhcpIpPoolStart"
5951 },
5952 txtDhcpLease: {
5953 range: [1, 65535],
5954 digits: true
5955 }
5956 },
mj.qu19ac6692024-08-21 19:18:36 -07005957
zw.wangcfae4372024-08-12 16:41:12 +08005958 groups: {
5959 lanip_check: "txtDhcpIpPoolStart txtDhcpIpPoolEnd"
5960 },
mj.qu19ac6692024-08-21 19:18:36 -07005961
zw.wangcfae4372024-08-12 16:41:12 +08005962 errorPlacement: function (error, element) {
5963 if (element.attr("name") == "txtDhcpLease") {
5964 error.insertAfter("#errorHolder");
5965 } else if (element.attr("name") == "txtDhcpIpPoolStart") {
5966 error.insertAfter("#txtDhcpIpPoolEnd");
5967 } else {
5968 error.insertAfter(element);
5969 }
5970 }
5971 });
5972
5973 }
mj.qu19ac6692024-08-21 19:18:36 -07005974
5975
zw.wangcfae4372024-08-12 16:41:12 +08005976 return {
5977 init:init
5978 }
5979});
5980
mj.qu19ac6692024-08-21 19:18:36 -07005981// others �����:Fast Boot Settings��Restart and Reset��SNTP��Turn Off Device��PIN Management
zw.wangcfae4372024-08-12 16:41:12 +08005982define("adm_others","jquery knockout set service underscore".split(" "),
5983
5984 function ($, ko, config, service, _) {
mj.qu19ac6692024-08-21 19:18:36 -07005985
zw.wangcfae4372024-08-12 16:41:12 +08005986 var timeSetModes = _.map(config.sntpTimeSetMode, function(item) {
5987 return new Option(item.name, item.value);
5988 });
mj.qu19ac6692024-08-21 19:18:36 -07005989
zw.wangcfae4372024-08-12 16:41:12 +08005990 var timeZones = _.map(config.timeZone, function(item){
5991 return new Option(item.name, item.value);
5992 });
mj.qu19ac6692024-08-21 19:18:36 -07005993
zw.wangcfae4372024-08-12 16:41:12 +08005994 var daylightSave = _.map(config.daylightSave, function(item){
5995 return new Option(item.name, item.value);
5996 });
mj.qu19ac6692024-08-21 19:18:36 -07005997
zw.wangcfae4372024-08-12 16:41:12 +08005998 var sv_sntpYears = [];
5999 var sv_sntpMonths = [];
mj.qu19ac6692024-08-21 19:18:36 -07006000 var sv_sntpDates = []; //���ݴ�С����������
zw.wangcfae4372024-08-12 16:41:12 +08006001 var sv_sntpHours = [];
6002 var sv_sntpMinutes = [];
6003 var sc_startpHours = [];
6004 var sc_startMinutes = [];
mj.qucf65e412024-09-14 10:05:29 +08006005 var sc_pingTimes = [];
mj.qu19ac6692024-08-21 19:18:36 -07006006
zw.wangcfae4372024-08-12 16:41:12 +08006007 var sf_bigMonth = [1, 3, 5, 7, 8, 10, 12];
6008 var sf_smallMonth = [4, 6, 9, 11];
mj.qu19ac6692024-08-21 19:18:36 -07006009
zw.wangcfae4372024-08-12 16:41:12 +08006010 function sf_produceArray(start, end, arryName) {
6011 var item = {};
6012 for(var i = start; i <= end; i++) {
6013 item.name = i;
6014 item.value = i;
6015 arryName.push(new Option(item.name, item.value));
6016 }
6017 }
mj.qu19ac6692024-08-21 19:18:36 -07006018
6019 //�����ꡢ�¡�ʱ���ֵ�����
mj.qu2d3c2af2025-06-22 23:23:15 -07006020 sf_produceArray(2000, 2037, sv_sntpYears);
zw.wangcfae4372024-08-12 16:41:12 +08006021 sf_produceArray(1, 12, sv_sntpMonths);
6022 sf_produceArray(0, 23, sv_sntpHours);
6023 sf_produceArray(0, 59, sv_sntpMinutes);
6024 sf_produceArray(0, 23, sc_startpHours);
6025 sf_produceArray(0, 59, sc_startMinutes);
mj.qucf65e412024-09-14 10:05:29 +08006026 sf_produceArray(0, 59, sc_startMinutes);
6027 sf_produceArray(1, 10, sc_pingTimes);
mj.qu19ac6692024-08-21 19:18:36 -07006028
zw.wangcfae4372024-08-12 16:41:12 +08006029 function othersViewModel() {
6030 var target = this;
mj.qu19ac6692024-08-21 19:18:36 -07006031
zw.wangcfae4372024-08-12 16:41:12 +08006032 var inChildGroup = false;
6033 var scheduleInfo = service.getScheduleSetting();
mj.qucf65e412024-09-14 10:05:29 +08006034 var pingDiagInfo = service.getPingSetting();
mj.qu19ac6692024-08-21 19:18:36 -07006035
zw.wangcfae4372024-08-12 16:41:12 +08006036 target.fastbootSupport = config.FAST_BOOT_SUPPORT;
6037 target.turnOffSupport = config.TURN_OFF_SUPPORT;
6038 target.SNTPSupport = config.HAS_SNTP;
6039 target.hasUssd = config.HAS_USSD;
6040 target.hasDdns = config.DDNS_SUPPORT;
6041 target.hasUpdateCheck = config.HAS_UPDATE_CHECK;
6042 target.scheduleSetting = ko.observable(scheduleInfo.scheduleSetting);
6043 target.scheduleHour = ko.observable(parseInt(scheduleInfo.scheduleHour));
6044 target.scheduleMinute = ko.observable(parseInt(scheduleInfo.scheduleMinute));
6045 target.scr_hours = ko.observableArray(sc_startpHours);
6046 target.scr_minutes = ko.observableArray(sc_startMinutes);
mj.qucf65e412024-09-14 10:05:29 +08006047 target.src_times = ko.observableArray(sc_pingTimes);
6048 target.pingTimes = ko.observable(pingDiagInfo.pingTimes);
6049 target.pingURL = ko.observable(pingDiagInfo.pingURL);
zw.wangcfae4372024-08-12 16:41:12 +08006050
mj.qu19ac6692024-08-21 19:18:36 -07006051
zw.wangcfae4372024-08-12 16:41:12 +08006052 if (config.HAS_PARENTAL_CONTROL) {
6053 inChildGroup = service.checkCurrentUserInChildGroup().result;
6054 }
6055 target.currentUserInChildGroup = ko.observable(inChildGroup);
6056
6057 var sv_fastbootInfo = service.getFastbootSetting();
6058 target.fastbootEnableFlag = ko.observable(config.RJ45_SUPPORT ? (sv_fastbootInfo.need_sim_pin != "yes" && service.getRj45PlugState().rj45_plug == "wan_lan_off") : sv_fastbootInfo.need_sim_pin != "yes");
6059 target.fastbootSetting = ko.observable(sv_fastbootInfo.fastbootEnabled);
6060
6061
6062 // @method addInterval
6063 addInterval(function(){
6064 target.fastbootEnableFlag(config.RJ45_SUPPORT ? (sv_fastbootInfo.need_sim_pin != "yes" && service.getRj45PlugState().rj45_plug == "wan_lan_off") : sv_fastbootInfo.need_sim_pin != "yes");
6065 }, 1000);
6066
mj.qu19ac6692024-08-21 19:18:36 -07006067 // �ָ���������
zw.wangcfae4372024-08-12 16:41:12 +08006068 // @event restore
6069 target.restore = function () {
6070 showConfirm("restore_confirm", function () {
6071 showLoading("restoring");
6072 service.restoreFactorySettings({}, function (info) {
6073 if (info && info.result == "success") {
6074 successOverlay();
6075 } else {
6076 errorOverlay();
6077 }
6078 }, function (result) {
6079 if (isErrorObject(result) && result.errorType == 'no_auth') {
6080 errorOverlay();
6081 }
6082 });
6083 });
6084 };
6085
6086 target.restart = function () {
6087 showConfirm("restart_confirm", function () {
6088 restartDevice(service);
6089 });
6090 };
mj.qu19ac6692024-08-21 19:18:36 -07006091
zw.wangcfae4372024-08-12 16:41:12 +08006092 target.scheduleRestart = function () {
6093 showLoading();
6094 var params = {};
6095 params.scheduleSetting = target.scheduleSetting();
6096 params.scheduleHour = target.scheduleHour();
6097 params.scheduleMinute = target.scheduleMinute();
6098 service.setScheduleSetting(params, function (result) {
6099 if (result.result != "success") {
6100 errorOverlay();
6101 } else {
6102 successOverlay();
6103 }
6104 });
6105 };
mj.qu19ac6692024-08-21 19:18:36 -07006106
mj.qucf65e412024-09-14 10:05:29 +08006107 target.pingResult = ko.observable();
6108
6109 target.loadFileContent = function() {
6110 var newPingResInfo = service.getPingResult();
6111 if (newPingResInfo.pingResult !== target.pingResult()) {
6112 target.pingResult(newPingResInfo.pingResult);
6113 }
6114 };
6115
6116 function showinfo(msgObj, minHeight) {
6117 var option = {
6118 title: 'info',
6119 img: 'pic/res_info.png',
6120 msg: msgObj,
6121 minHeight: minHeight
6122 };
6123 popup(option);
6124
6125 $('#yesbtn, #nobtn, #okbtn').hide();
6126
6127 setTimeout(function() {
6128 $.modal.close();
6129 }, 1000);
6130 }
6131
6132 setInterval(target.loadFileContent, 1000);
6133
6134 target.pingStart = function () {
6135 showinfo('ping_starting');
6136 var params = {};
6137 params.pingTimes = target.pingTimes();
6138 params.pingURL = target.pingURL();
6139 service.setPingSettingStart(params, function (result) {
6140 if (result.result != "success") {
6141 errorOverlay();
6142 }
6143 });
6144 };
6145
6146 target.pingClear = function () {
6147 showLoading();
6148 service.pingResultClear({}, function (result) {
6149 if (result.result != "success") {
6150 errorOverlay();
6151 } else {
6152 successOverlay();
6153 }
6154 });
6155 };
6156
mj.qu19ac6692024-08-21 19:18:36 -07006157 // ���ٿ��ػ�����
zw.wangcfae4372024-08-12 16:41:12 +08006158 target.saveFastBoot = function() {
6159 showLoading();
6160 var params = {
6161 fastbootEnabled: target.fastbootSetting(),
6162 need_hard_reboot: sv_fastbootInfo.need_hard_reboot
6163 };
6164 service.setFastbootSetting(params, function(result) {
6165 if (result.result == "success") {
6166 successOverlay();
6167 } else {
6168 errorOverlay();
6169 }
6170 });
6171 };
mj.qu19ac6692024-08-21 19:18:36 -07006172
6173 // �ػ�
zw.wangcfae4372024-08-12 16:41:12 +08006174 target.turnoff = function () {
6175 showConfirm("turnoff_confirm", function () {
6176 showLoading("turnoff");
6177 service.turnOffDevice({}, function (info) {
6178 if (info && info.result == "success") {
6179 successOverlay();
6180 } else {
6181 errorOverlay();
6182 }
6183 }, $.noop);
6184 });
6185 };
mj.qu19ac6692024-08-21 19:18:36 -07006186
6187 //SNTP����serverУ׼ʱ��
zw.wangcfae4372024-08-12 16:41:12 +08006188 service.setSNTPDate({
6189 goformId: "SNTP_Getdatastatic"
6190 });
mj.qu19ac6692024-08-21 19:18:36 -07006191
zw.wangcfae4372024-08-12 16:41:12 +08006192 var target = this;
6193 var sntpInfo = service.getSntpParams();
mj.qu19ac6692024-08-21 19:18:36 -07006194
zw.wangcfae4372024-08-12 16:41:12 +08006195 globalTime = new Date(parseInt(sntpInfo.sntp_year, 10),parseInt(sntpInfo.sntp_month, 10)-1, parseInt(sntpInfo.sntp_day, 10), parseInt(sntpInfo.sntp_hour, 10), parseInt(sntpInfo.sntp_minute, 10), parseInt(sntpInfo.sntp_second, 10));
6196
6197 target.day = ko.observable();
6198 target.localTime = ko.observable();
mj.qu19ac6692024-08-21 19:18:36 -07006199
6200 //��ʼ����ǰ����ʱ��
zw.wangcfae4372024-08-12 16:41:12 +08006201 //target.updateCurrentTime; cov_2
6202 target.timeSetModes = ko.observableArray(timeSetModes);
6203 target.isManualSetTime = ko.observable(false);
6204 target.isAutoSntpTime = ko.observable(false);
mj.qu19ac6692024-08-21 19:18:36 -07006205
zw.wangcfae4372024-08-12 16:41:12 +08006206 target.currentMode = ko.observable(sntpInfo.sntp_time_set_mode);
mj.qu19ac6692024-08-21 19:18:36 -07006207
zw.wangcfae4372024-08-12 16:41:12 +08006208 changeSetTimeMode();
6209 target.changeSetTimeMode = function(){
6210 changeSetTimeMode();
6211 };
mj.qu19ac6692024-08-21 19:18:36 -07006212
zw.wangcfae4372024-08-12 16:41:12 +08006213 target.currentYear = ko.observable(parseInt(sntpInfo.sntp_year, 10));
6214 target.currentMonth = ko.observable(parseInt(sntpInfo.sntp_month, 10));
6215 target.currentDate = ko.observable(parseInt(sntpInfo.sntp_day, 10));
6216 target.currentHour = ko.observable(parseInt(sntpInfo.sntp_hour, 10));
6217 target.currentMinute = ko.observable(parseInt(sntpInfo.sntp_minute, 10));
zw.wangcfae4372024-08-12 16:41:12 +08006218
mj.qu19ac6692024-08-21 19:18:36 -07006219
6220 // ��Ҫ��������ˢ�������б����ݣ�ע��˳��
zw.wangcfae4372024-08-12 16:41:12 +08006221
6222 target.years = ko.observableArray(sv_sntpYears);
6223 target.months = ko.observableArray(sv_sntpMonths);
mj.qu19ac6692024-08-21 19:18:36 -07006224 //���û�ѡ���·ݵ�ʱ���ı�����ѡ������ѡ��
zw.wangcfae4372024-08-12 16:41:12 +08006225 target.initDateList = function(){
6226 initDateList();
6227 target.dates(sv_sntpDates);
6228 }
mj.qu19ac6692024-08-21 19:18:36 -07006229
6230 //��ʼ�������б�
zw.wangcfae4372024-08-12 16:41:12 +08006231 initDateList();
6232 target.dates = ko.observableArray(sv_sntpDates);
6233 target.hours = ko.observableArray(sv_sntpHours);
6234 target.minutes = ko.observableArray(sv_sntpMinutes);
mj.qu19ac6692024-08-21 19:18:36 -07006235
6236 //�Զ�SNTP��ȡʱ�����ݰ󶨴���
zw.wangcfae4372024-08-12 16:41:12 +08006237 var serverArray = _.map(sntpInfo.sntp_servers, function(item) {
6238 return new Option(item.name, item.value)
6239 });
mj.qu19ac6692024-08-21 19:18:36 -07006240
zw.wangcfae4372024-08-12 16:41:12 +08006241 target.serverList = ko.observableArray(serverArray);
6242
mj.qu19ac6692024-08-21 19:18:36 -07006243 // �������ֲ����޸ģ��޸��޷�ˢ����ҳ
zw.wangcfae4372024-08-12 16:41:12 +08006244
6245 target.currentServer0 = ko.observable(sntpInfo.sntp_server0);
6246 target.currentServer1 = ko.observable(sntpInfo.sntp_server1);
6247 target.currentServer2 = ko.observable(sntpInfo.sntp_server2);
6248 target.customServer0 = ko.observable(sntpInfo.sntp_other_server0);
6249 target.customServer1 = ko.observable(sntpInfo.sntp_other_server1);
6250 target.customServer2 = ko.observable(sntpInfo.sntp_other_server2);
6251 target.isOther0 = ko.observable(false);
6252 target.isOther1 = ko.observable(false);
6253 target.isOther2 = ko.observable(false);
mj.qu19ac6692024-08-21 19:18:36 -07006254
zw.wangcfae4372024-08-12 16:41:12 +08006255 initOtherServer();
6256
6257 target.changeServerSelect = function(){
6258 initOtherServer();
6259 }
mj.qu19ac6692024-08-21 19:18:36 -07006260
zw.wangcfae4372024-08-12 16:41:12 +08006261 target.timeZones = ko.observableArray(timeZones);
6262 target.currentTimeZone = ko.observable(sntpInfo.sntp_timezone + "_" + sntpInfo.sntp_timezone_index);
6263 target.daylightSaves = ko.observableArray(daylightSave);
6264 target.currentDaylightSave = ko.observable(sntpInfo.sntp_dst_enable);
mj.qu19ac6692024-08-21 19:18:36 -07006265
6266 //���µ�ǰ��ʾʱ��
zw.wangcfae4372024-08-12 16:41:12 +08006267 target.updateCurrentTime = function() {
6268 var globalDay = globalTime.getDay();
mj.qu19ac6692024-08-21 19:18:36 -07006269
zw.wangcfae4372024-08-12 16:41:12 +08006270 switch(globalDay){
6271 case 6:
6272 target.day($.i18n.prop("saturday"));
6273 break;
6274 case 5:
6275 target.day($.i18n.prop("friday"));
6276 break;
6277 case 4:
6278 target.day($.i18n.prop("thursday"));
6279 break;
6280 case 3:
6281 target.day($.i18n.prop("wednesday"));
6282 break;
6283 case 2:
6284 target.day($.i18n.prop("tuesday"));
6285 break;
6286 case 1:
6287 target.day($.i18n.prop("monday"));
6288 break;
6289 case 0:
6290 target.day($.i18n.prop("sunday"));
6291 break;
6292 default:
6293 break;
6294 }
mj.qu19ac6692024-08-21 19:18:36 -07006295
zw.wangcfae4372024-08-12 16:41:12 +08006296 var localCurrentTime = globalTime.getFullYear() + "-" + getTwoDigit(globalTime.getMonth()+1) + "-" + getTwoDigit(globalTime.getDate()) + " " + getTwoDigit(globalTime.getHours()) + ":" + getTwoDigit(globalTime.getMinutes()) + ":" + getTwoDigit(globalTime.getSeconds());
6297 target.localTime(localCurrentTime);
6298 globalTime.setTime(globalTime.getTime()+1000);
6299 };
mj.qu19ac6692024-08-21 19:18:36 -07006300
6301 // SNTP����
zw.wangcfae4372024-08-12 16:41:12 +08006302 target.apply = function(){
6303 var tmpArray = [];
6304 for(var i=0; i< sntpInfo.sntp_servers.length; i++){
6305 tmpArray.push(sntpInfo.sntp_servers[i].value);
6306 }
6307 var staInfo = service.getStatusInfo();
6308 if(!checkConnectedStatus(staInfo.connectStatus, staInfo.rj45ConnectStatus, staInfo.connectWifiStatus) && target.currentMode() == "auto"){
6309 showAlert("sntp_syn_time_wan_connected");
6310 return;
6311 }
mj.qu19ac6692024-08-21 19:18:36 -07006312
zw.wangcfae4372024-08-12 16:41:12 +08006313 showLoading("");
6314 var requestParams = {
6315 goformId: "SNTP",
6316 manualsettime : target.currentMode(),
6317 sntp_server1_ip : target.currentServer0(),
6318 sntp_server2_ip : target.currentServer1(),
6319 sntp_server3_ip : target.currentServer2(),
6320 sntp_other_server0 : target.customServer0(),
6321 sntp_other_server1 : target.customServer1(),
6322 sntp_other_server2 : target.customServer2(),
6323 timezone : target.currentTimeZone().split("_")[0],
6324 sntp_timezone_index : target.currentTimeZone().split("_")[1],
6325 DaylightEnabled : target.currentDaylightSave(),
6326 time_year : target.currentYear(),
6327 time_month : target.currentMonth(),
6328 time_day : target.currentDate(),
6329 time_hour : target.currentHour(),
6330 time_minute : target.currentMinute()
6331 };
mj.qu19ac6692024-08-21 19:18:36 -07006332
zw.wangcfae4372024-08-12 16:41:12 +08006333 service.setSntpSetting(requestParams, function(data2){
6334 if(data2) {
6335 if(data2.result == "success" && target.currentMode() == "auto"){
6336 successOverlay("sntp_req_success");
6337 //hideLoading();
6338 }else if(data2.result == "processing" && target.currentMode() == "auto"){
6339 successOverlay("sntp_processing");
6340 }else{
mj.qu19ac6692024-08-21 19:18:36 -07006341 //����serverУ׼ʱ��
zw.wangcfae4372024-08-12 16:41:12 +08006342 service.setSNTPDate({
6343 goformId: "SNTP_Getdatastatic"
6344 }, function(result){
6345 var sntpInfo = service.getSntpParams();
6346 globalTime = new Date(parseInt(sntpInfo.sntp_year, 10),parseInt(sntpInfo.sntp_month, 10)-1, parseInt(sntpInfo.sntp_day, 10), parseInt(sntpInfo.sntp_hour, 10), parseInt(sntpInfo.sntp_minute, 10), parseInt(sntpInfo.sntp_second, 10));
6347 successOverlay();
6348 });
6349 }
6350 } else {
6351 errorOverlay();
6352 }
6353 });
6354 }
mj.qu19ac6692024-08-21 19:18:36 -07006355
6356 // �ֶ�/�Զ��л���Ӧ����
zw.wangcfae4372024-08-12 16:41:12 +08006357 function changeSetTimeMode() {
6358 if(target.currentMode() == "manual") {
6359 target.isManualSetTime(true);
6360 target.isAutoSntpTime(false);
6361 } else {
6362 target.isManualSetTime(false);
6363 target.isAutoSntpTime(true);
6364 }
6365 return true;
6366 }
mj.qu19ac6692024-08-21 19:18:36 -07006367
6368 // ��ʼ��ʱ��
zw.wangcfae4372024-08-12 16:41:12 +08006369 function initDateList(){
6370 sv_sntpDates = [];
6371 if($.inArray(parseInt(target.currentMonth(), 10), sf_smallMonth) != -1) {
6372 sf_produceArray(1, 30, sv_sntpDates);
6373 } else if($.inArray(parseInt(target.currentMonth(), 10), sf_bigMonth) != -1) {
6374 sf_produceArray(1, 31, sv_sntpDates);
6375 } else if(parseInt(target.currentYear(), 10)%4 == 0) {
6376 sf_produceArray(1, 29, sv_sntpDates);
6377 } else {
6378 sf_produceArray(1, 28, sv_sntpDates);
6379 }
6380 }
mj.qu19ac6692024-08-21 19:18:36 -07006381
6382 // ��ʼ������������
zw.wangcfae4372024-08-12 16:41:12 +08006383 function initOtherServer(){
6384 target.isOther0(target.currentServer0() == "Other");
6385 target.isOther1(target.currentServer1() == "Other");
6386 target.isOther2(target.currentServer2() == "Other");
6387 !target.isOther0() && $("#sntp_server0").find(".error").hide();
6388 !target.isOther1() && $("#sntp_server1").find(".error").hide();
6389 !target.isOther2() && $("#sntp_server2").find(".error").hide();
6390 }
6391
mj.qu19ac6692024-08-21 19:18:36 -07006392
zw.wangcfae4372024-08-12 16:41:12 +08006393 }
6394
mj.qu19ac6692024-08-21 19:18:36 -07006395 // ��ʼ�� ViewModel����������ͼ����
zw.wangcfae4372024-08-12 16:41:12 +08006396 function init() {
6397 var fwVm = new othersViewModel();
6398 var container = $('#container')[0];
6399 ko.cleanNode(container);
6400 ko.applyBindings(fwVm, container);
6401 fwVm.updateCurrentTime();
mj.qu19ac6692024-08-21 19:18:36 -07006402
zw.wangcfae4372024-08-12 16:41:12 +08006403 addInterval(function(){
6404 fwVm.updateCurrentTime();
6405 }, 1000);
mj.qu19ac6692024-08-21 19:18:36 -07006406
zw.wangcfae4372024-08-12 16:41:12 +08006407 $("#sntpForm").validate({
6408 submitHandler: function(){
6409 fwVm.apply();
6410 },
6411 rules: {
6412 sntp_other_server0 : "sntp_invalid_server_name",
6413 sntp_other_server1 : "sntp_invalid_server_name",
6414 sntp_other_server2 : "sntp_invalid_server_name"
6415 }
6416 });
6417 }
6418
6419 return {
6420 init:init
6421 }
6422 });
w.denged536982025-07-21 10:24:31 +08006423
6424const errorMessages = {
6425 "en": {
6426 txtCurrent: {
6427 manage_info_check: "Please enter a valid password."
6428 },
6429 txtNew: {
6430 manage_info_check: "Please enter a valid password."
6431 },
6432 txtConfirm: {
6433 equalTo: "The new password and the confirmed password do not match or contain illegal characters."
6434 }
6435 },
6436 "zh": {
6437 txtCurrent: {
6438 manage_info_check: "请输入有效的密码"
6439 },
6440 txtNew: {
6441 manage_info_check: "请输入有效的密码"
6442 },
6443 txtConfirm: {
6444 equalTo: "新密码和确认密码不匹配或者包含非法字符"
6445 }
6446 }
6447};
6448
mj.qu19ac6692024-08-21 19:18:36 -07006449// �������� �
zw.wangcfae4372024-08-12 16:41:12 +08006450
6451define("adm_management","jquery knockout set service underscore CryptoJS".split(" "),
6452
6453 function ($, ko, config, service, _, CryptoJS) {
6454
6455 function manageViewModel() {
6456 var target = this;
mj.qu19ac6692024-08-21 19:18:36 -07006457
zw.wangcfae4372024-08-12 16:41:12 +08006458 target.currentValue = ko.observable();
6459 target.newValue = ko.observable();
6460 target.confirmValue = ko.observable();
mj.qu19ac6692024-08-21 19:18:36 -07006461
zw.wangcfae4372024-08-12 16:41:12 +08006462 function sf_changeValue() {
6463 var sv_manageInfo = {};
6464 if (config.PASSWORD_ENCODE) {
6465 sv_manageInfo.oldValue = target.currentValue();
6466 sv_manageInfo.newValue = target.newValue();
6467 } else {
6468 var pwdRegex = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,32}');
mj.qu19ac6692024-08-21 19:18:36 -07006469
zw.wangcfae4372024-08-12 16:41:12 +08006470 if (!pwdRegex.test(target.newValue())) {
6471 showConfirm("password_note_too_low", function () {
6472
6473 var kparam = service.getDeviceInfoLow();
6474 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
6475 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
6476 var cipherold = CryptoJS.AES.encrypt(target.currentValue(), tkey, {
6477 iv: tiv,
6478 mode: CryptoJS.mode.CBC,
6479 padding: CryptoJS.pad.ZeroPadding
6480 }).toString();
6481 var ciphernew = CryptoJS.AES.encrypt(target.newValue(), tkey, {
6482 iv: tiv,
6483 mode: CryptoJS.mode.CBC,
6484 padding: CryptoJS.pad.ZeroPadding
6485 }).toString();
6486
6487 sv_manageInfo.oldValue = cipherold;
6488 sv_manageInfo.newValue = ciphernew;
mj.qu19ac6692024-08-21 19:18:36 -07006489
zw.wangcfae4372024-08-12 16:41:12 +08006490 showLoading();
mj.qu19ac6692024-08-21 19:18:36 -07006491
zw.wangcfae4372024-08-12 16:41:12 +08006492 service.changeManageInfo(sv_manageInfo, function (resultInfo) {
6493 target.cancel();
6494 if (resultInfo && resultInfo.result == true) {
6495 successOverlay();
6496 } else {
6497 if (resultInfo && resultInfo.errorType == "badPassword") {
6498 hideLoading();
6499 showAlert("current_password_error",function(){
6500 $("#txtCurrent").focus();
6501 });
6502 } else {
6503 errorOverlay();
6504 }
6505 }
6506 });
6507 });
6508 return;
6509 }
6510 var kparam = service.getDeviceInfoLow();
6511 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
6512 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
6513 var cipherold = CryptoJS.AES.encrypt(target.currentValue(), tkey, {
6514 iv: tiv,
6515 mode: CryptoJS.mode.CBC,
6516 padding: CryptoJS.pad.ZeroPadding
6517 }).toString();
6518 var ciphernew = CryptoJS.AES.encrypt(target.newValue(), tkey, {
6519 iv: tiv,
6520 mode: CryptoJS.mode.CBC,
6521 padding: CryptoJS.pad.ZeroPadding
6522 }).toString();
6523
6524 sv_manageInfo.oldValue = cipherold;
6525 sv_manageInfo.newValue = ciphernew;
6526 }
6527
6528 showLoading();
mj.qu19ac6692024-08-21 19:18:36 -07006529
zw.wangcfae4372024-08-12 16:41:12 +08006530 service.changeManageInfo(sv_manageInfo, function (resultInfo) {
6531 target.cancel();
6532 if (resultInfo && resultInfo.result == true) {
6533 successOverlay();
6534 } else {
6535 if (resultInfo && resultInfo.errorType == "badPassword") {
6536 hideLoading();
6537 showAlert("current_password_error",function(){
6538 $("#txtCurrent").focus();
6539 });
6540 } else {
6541 errorOverlay();
6542 }
6543 }
6544 });
6545 }
mj.qu19ac6692024-08-21 19:18:36 -07006546
6547 // ��������������
zw.wangcfae4372024-08-12 16:41:12 +08006548 function sf_cancel() {
6549 target.currentValue("");
6550 target.newValue("");
6551 target.confirmValue("");
6552 }
mj.qu19ac6692024-08-21 19:18:36 -07006553
zw.wangcfae4372024-08-12 16:41:12 +08006554 target.cancel = sf_cancel;
mj.qu19ac6692024-08-21 19:18:36 -07006555
6556 // �޸�����
zw.wangcfae4372024-08-12 16:41:12 +08006557 target.changeValue = sf_changeValue;
6558 }
6559
6560 function init() {
6561 var container = $('#container');
6562 ko.cleanNode(container[0]);
6563 var fwVm = new manageViewModel();
6564 ko.applyBindings(fwVm, container[0]);
mj.qu19ac6692024-08-21 19:18:36 -07006565
w.denged536982025-07-21 10:24:31 +08006566 const userLanguage = navigator.language || navigator.userLanguage;
6567 // Extract language code,"en", "zh"
6568 const langCode = userLanguage.split('-')[0];
6569 // If there is no matching language, English is used by default
6570 const messages = errorMessages[langCode] || errorMessages["en"];
6571
zw.wangcfae4372024-08-12 16:41:12 +08006572 $('#frmPassword').validate({
6573 submitHandler:function () {
6574 fwVm.changeValue();
6575 },
6576 rules:{
6577 txtCurrent:"manage_info_check",
6578 txtNew:"manage_info_check",
6579 txtConfirm:{ equalTo:"#txtNew"}
w.denged536982025-07-21 10:24:31 +08006580 },
6581 messages: messages
zw.wangcfae4372024-08-12 16:41:12 +08006582 });
6583 }
6584
6585 return {
6586 init:init
6587 }
6588 }
6589);
mj.qu19ac6692024-08-21 19:18:36 -07006590// PIN�����
zw.wangcfae4372024-08-12 16:41:12 +08006591
6592define("adm_pin","jquery knockout set service".split(" "),
6593
6594 function ($, ko, config, service) {
6595 var pageState = {common:0, requirePin:1, modifyPin:2, requirePuk:3, destroyed:4};
6596 var pinStatus = {enable:"1", disable:"0"};
6597
6598
6599 function pinViewModel() {
6600 var target = this;
6601 var sv_currentPinData = service.getPinData();
mj.qu19ac6692024-08-21 19:18:36 -07006602
zw.wangcfae4372024-08-12 16:41:12 +08006603 target.isDataCard = config.PRODUCT_TYPE == 'DATACARD';
6604 target.originPinStatus = ko.observable(sv_currentPinData.pin_status);
mj.qu19ac6692024-08-21 19:18:36 -07006605
zw.wangcfae4372024-08-12 16:41:12 +08006606 target.pinStatus = ko.observable(sv_currentPinData.pin_status);
6607 target.pinNumber = ko.observable(sv_currentPinData.pinnumber);
6608 target.pukNumber = ko.observable(sv_currentPinData.puknumber);
mj.qu19ac6692024-08-21 19:18:36 -07006609
zw.wangcfae4372024-08-12 16:41:12 +08006610 target.currentPin = ko.observable();
6611 target.newPin = ko.observable();
6612 target.confirmPin = ko.observable();
mj.qu19ac6692024-08-21 19:18:36 -07006613
zw.wangcfae4372024-08-12 16:41:12 +08006614 target.puk = ko.observable();
mj.qu19ac6692024-08-21 19:18:36 -07006615
zw.wangcfae4372024-08-12 16:41:12 +08006616 target.pageState = ko.observable();
mj.qu19ac6692024-08-21 19:18:36 -07006617 // �����������ɹ���־λ
zw.wangcfae4372024-08-12 16:41:12 +08006618 target.operateSuccessFlag = true;
mj.qu19ac6692024-08-21 19:18:36 -07006619
zw.wangcfae4372024-08-12 16:41:12 +08006620 target.callback = sf_callback;
mj.qu19ac6692024-08-21 19:18:36 -07006621
zw.wangcfae4372024-08-12 16:41:12 +08006622 function sf_callback(info) {
6623 if (info && info.result == true) {
6624 target.operateSuccessFlag = true;
6625 successOverlay();
6626 } else {
6627 target.operateSuccessFlag = false;
mj.qu19ac6692024-08-21 19:18:36 -07006628
6629 // ����һ��ǰҪ������ʾ
zw.wangcfae4372024-08-12 16:41:12 +08006630 if(target.pinNumber() == 2){
6631 showAlert("last_enter_pin");
6632 } else if(target.pukNumber() == 2){
6633 showAlert("last_enter_puk");
6634 }
6635 else{
6636 errorOverlay();
6637 }
6638 }
6639 init(target);
6640 }
zw.wangcfae4372024-08-12 16:41:12 +08006641
mj.qu19ac6692024-08-21 19:18:36 -07006642
6643 // ȷ����ť�¼������������޸�PIN������PUK����PIN������PIN��ʹ��״̬
6644
zw.wangcfae4372024-08-12 16:41:12 +08006645 function sf_changePin() {
6646 if (target.isConnectedNetWork()) {
6647 showAlert("cannot_operate_when_connected");
6648 return;
6649 }
6650
6651 if (target.pageState() == pageState.common) {
6652 return;
6653 }
6654
6655 var sv_pinPara = {
6656 oldPin:target.currentPin(),
6657 newPin:target.newPin()
6658 };
6659 showLoading();
6660
6661 if (target.pageState() == pageState.modifyPin) {
6662 service.changePin(sv_pinPara, target.callback);
6663 } else if (target.pageState() == pageState.requirePuk) {
6664 sv_pinPara = {
6665 PinNumber:target.newPin(),
6666 PUKNumber:target.puk()
6667 };
6668 service.enterPUK(sv_pinPara, target.callback);
6669 } else {
6670 if (target.pinStatus() == pinStatus.enable) {
6671 service.enablePin(sv_pinPara, target.callback);
6672 } else {
6673 service.disablePin(sv_pinPara, target.callback);
6674 }
6675 }
6676 }
zw.wangcfae4372024-08-12 16:41:12 +08006677
mj.qu19ac6692024-08-21 19:18:36 -07006678
6679 // ȡ���¼�����
zw.wangcfae4372024-08-12 16:41:12 +08006680 function sf_cancel() {
6681 target.pageState(pageState.common);
6682 target.pinStatus(target.originPinStatus());
6683 target.clear();
6684 }
6685
mj.qu19ac6692024-08-21 19:18:36 -07006686 // ����ҳ�������ͼ�����Ϣ
zw.wangcfae4372024-08-12 16:41:12 +08006687 function sf_clear() {
6688 target.confirmPin("");
6689 target.currentPin("");
6690 target.newPin("");
6691 target.puk("");
6692 clearValidateMsg();
6693 }
6694
mj.qu19ac6692024-08-21 19:18:36 -07006695 // �������ݣ����õ�ǰ��ҳ��״̬
zw.wangcfae4372024-08-12 16:41:12 +08006696 function sf_computePageState(i_pinData) {
6697 if (i_pinData.pinnumber > 0) {
mj.qu19ac6692024-08-21 19:18:36 -07006698 //�����ɹ�ҳ���ص���ʼ״̬������ʧ�ܲ���pinnumber>0,ҳ�治��ת
zw.wangcfae4372024-08-12 16:41:12 +08006699 if (target.operateSuccessFlag) {
6700 target.cancel();
6701 } else {
6702 target.clear();
6703 }
6704 } else {
6705 target.clear();
6706 if (i_pinData.puknumber > 0) {
6707 target.pageState(pageState.requirePuk);
6708 } else {
6709 target.pageState(pageState.destroyed);
6710 }
6711 }
6712 }
mj.qu19ac6692024-08-21 19:18:36 -07006713
6714 // ����PIN�޸�״̬�¼�����
zw.wangcfae4372024-08-12 16:41:12 +08006715 function sf_displayModifyPinPage() {
6716 if (target.isConnectedNetWork()) {
6717 showAlert("cannot_operate_when_connected");
6718 return;
6719 }
6720 target.pinStatus(target.originPinStatus());
6721 target.pageState(pageState.modifyPin);
6722 target.clear();
6723 }
mj.qu19ac6692024-08-21 19:18:36 -07006724
6725 // ����ҳ��Ԫ�ص�ʹ��״̬
zw.wangcfae4372024-08-12 16:41:12 +08006726 function sf_fixPageEnable() {
6727 if (target.isConnectedNetWork()) {
6728 $('#frmPin :input').each(function () {
6729 disableBtn($(this));
6730 });
6731 clearValidateMsg();
6732 } else {
6733 $('#frmPin :input').each(function () {
6734 if (this.id == "txtPin" || this.id == "btnPinApply") {
6735 if (target.pageState() == pageState.common) {
6736 disableBtn($(this));
6737 return;
6738 }
6739 }
6740 if (this.id == "btnModifyPin") {
6741 if (target.originPinStatus() != pinStatus.enable) {
6742 disableBtn($(this));
6743 return;
6744 }
6745 }
6746 if (this.id == "pinEnable" || this.id == "pinDisable") {
6747 if (target.pageState() == pageState.modifyPin) {
6748 disableBtn($(this));
6749 return;
6750 }
6751 }
6752 enableBtn($(this));
6753 });
6754
6755 }
6756 }
mj.qu19ac6692024-08-21 19:18:36 -07006757
6758 // �Ƿ�������
zw.wangcfae4372024-08-12 16:41:12 +08006759 function sf_isConnectedNetWork() {
6760 var info = service.getConnectionInfo();
6761 return info.connectStatus == "ppp_connected";
6762 }
mj.qu19ac6692024-08-21 19:18:36 -07006763
6764 // PINʹ�ܸı�ʱ�¼�����
zw.wangcfae4372024-08-12 16:41:12 +08006765 function sf_pinStatusChangeEvent() {
6766 if (target.pinStatus() == target.originPinStatus()) {
6767 target.pageState(pageState.common);
6768 } else {
6769 target.pageState(pageState.requirePin);
6770 }
6771 target.clear();
6772 }
mj.qu19ac6692024-08-21 19:18:36 -07006773
zw.wangcfae4372024-08-12 16:41:12 +08006774 target.changePin = sf_changePin;
6775 target.cancel = sf_cancel;
6776 target.clear = sf_clear;
6777 target.computePageState = sf_computePageState;
mj.qu19ac6692024-08-21 19:18:36 -07006778
zw.wangcfae4372024-08-12 16:41:12 +08006779 target.computePageState(sv_currentPinData);
mj.qu19ac6692024-08-21 19:18:36 -07006780
zw.wangcfae4372024-08-12 16:41:12 +08006781 target.displayModifyPinPage = sf_displayModifyPinPage;
6782 target.fixPageEnable = sf_fixPageEnable;
6783 target.isConnectedNetWork = sf_isConnectedNetWork;
mj.qu19ac6692024-08-21 19:18:36 -07006784
zw.wangcfae4372024-08-12 16:41:12 +08006785 target.pinStatusChangeEvent = ko.dependentObservable(sf_pinStatusChangeEvent, this);
6786 }
6787
6788 function init(oldViewModel) {
mj.qu19ac6692024-08-21 19:18:36 -07006789
zw.wangcfae4372024-08-12 16:41:12 +08006790 var fwVm = oldViewModel;
mj.qu19ac6692024-08-21 19:18:36 -07006791
zw.wangcfae4372024-08-12 16:41:12 +08006792 if (fwVm) {
6793 var sv_currentPinData = service.getPinData();
6794 fwVm.originPinStatus(sv_currentPinData.pin_status);
6795 fwVm.pinNumber(sv_currentPinData.pinnumber);
6796 fwVm.pukNumber(sv_currentPinData.puknumber);
6797 fwVm.computePageState(sv_currentPinData);
6798 } else {
6799 fwVm = new pinViewModel();
6800 addInterval(function () {
6801 fwVm.fixPageEnable();
6802 }, 1000);
6803 }
mj.qu19ac6692024-08-21 19:18:36 -07006804
zw.wangcfae4372024-08-12 16:41:12 +08006805 var container = $('#container')[0];
6806 ko.cleanNode(container);
6807 ko.applyBindings(fwVm, container);
6808 fwVm.fixPageEnable();
6809
6810 $('#frmPin').validate({
6811 submitHandler:function () {
6812 fwVm.changePin();
6813 },
6814 rules:{
6815 txtPuk:"puk_check",
6816 txtPin:"pin_check",
6817 txtNewPin:"pin_check",
6818 txtConfirmPin:{equalToPin:"#txtNewPin"}
6819 }
6820 });
6821 }
6822
6823 return {
6824 init:init
6825 }
6826 }
6827);
6828
mj.qu19ac6692024-08-21 19:18:36 -07006829// ��������
zw.wangcfae4372024-08-12 16:41:12 +08006830define("adm_quick_set","jquery knockout set service underscore CryptoJS".split(" "),
6831
6832 function ($, ko, config, service, _, CryptoJS) {
6833
6834 var sv_wifiState = {ok:0, wps_on:1, wifi_off:2};
6835 var sv_apnMode = {auto:"auto", manual:"manual"};
6836 var sv_minStep = 1;
6837 var sv_maxStep = 5;
6838
mj.qu19ac6692024-08-21 19:18:36 -07006839 // ��ȡ��Ȩ��ʽ
zw.wangcfae4372024-08-12 16:41:12 +08006840 function sf_fetchAuthenticationModes() {
6841 return _.map(config.APN_AUTH_MODES, function (item) {
6842 return new Option(item.name, item.value);
6843 });
6844 }
mj.qu19ac6692024-08-21 19:18:36 -07006845
6846 // WIFI��ȫģʽѡ��
zw.wangcfae4372024-08-12 16:41:12 +08006847 var sv_securityModes = _.map(config.WIFI_WEP_SUPPORT ? config.AUTH_MODES_WEP : config.AUTH_MODES, function (item) {
6848 return new Option(item.name, item.value);
6849 });
6850
6851
6852 function quickSettingViewModel() {
6853 var target = this;
mj.qu19ac6692024-08-21 19:18:36 -07006854
zw.wangcfae4372024-08-12 16:41:12 +08006855 var sv_quickSettingInfo = service.getQuickSettingInfo();
6856
6857 target.currentStep = ko.observable(sv_minStep);
6858 target.ipType = ko.observable(sv_quickSettingInfo.pdp_type == "IP" ? "IP" : sv_quickSettingInfo.ipv6_pdp_type);
6859 target.supportIPv6 = config.IPV6_SUPPORT;
6860 target.supportIpv4AndIpv6 = config.IPV4_AND_V6_SUPPORT;
6861
6862 target.wpsFlag = ko.observable(sv_quickSettingInfo.WscModeOption);
6863
6864 function sf_apnDisabled() {
6865 return (sv_quickSettingInfo.apn_index < config.defaultApnSize || sv_quickSettingInfo.ppp_status == "ppp_connected" || sv_quickSettingInfo.ppp_status == "ppp_connecting");
6866 }
6867
6868 function sf_apnModeDisabled() {
mj.qu19ac6692024-08-21 19:18:36 -07006869 return (sv_quickSettingInfo.ppp_status == "ppp_connected" || sv_quickSettingInfo.ppp_status == "ppp_connecting" || (!target.profileName() && target.apnMode() == sv_apnMode.auto));//ѡ��Ϊ�ջ��������ӻ�������
zw.wangcfae4372024-08-12 16:41:12 +08006870 }
6871
6872 function sf_currAPN() {
6873 var sv_APNText = sv_quickSettingInfo["APN_configtmp" + sv_quickSettingInfo.apn_index];
6874 var strIPv6APN = sv_quickSettingInfo["ipv6_APN_configtmp" + sv_quickSettingInfo.apn_index];
mj.qu19ac6692024-08-21 19:18:36 -07006875
zw.wangcfae4372024-08-12 16:41:12 +08006876 var sv_apn = [];
6877 var sv_ipv6APNItems = [];
mj.qu19ac6692024-08-21 19:18:36 -07006878
zw.wangcfae4372024-08-12 16:41:12 +08006879 if (sv_APNText) {
6880 sv_apn = sv_APNText.split("($)");
6881 }
6882
6883 if (strIPv6APN) {
6884 sv_ipv6APNItems = strIPv6APN.split("($)");
6885 }
6886
6887 return {
6888 m_profile_name:sv_apn[0],
6889 wan_apn:sv_apn[1],
6890 ppp_auth_mode: sv_apn[4] == "" || typeof(sv_apn[4]) == "undefined" ? "" : sv_apn[4].toLowerCase(),
6891 ppp_username:sv_apn[5],
6892 ppp_passtmp:sv_apn[6],
mj.que145fd02025-06-05 00:13:13 -07006893 pdp_type: sv_apn[7] == "" || typeof(sv_apn[7]) == "undefined" ? sv_ipv6APNItems[7] : sv_apn[7],
zw.wangcfae4372024-08-12 16:41:12 +08006894 ipv6_wan_apn:sv_ipv6APNItems[1],
6895 ipv6_ppp_auth_mode:typeof(sv_ipv6APNItems[4]) == "undefined" || sv_ipv6APNItems[4] == ""? "" : sv_ipv6APNItems[4].toLowerCase(),
6896 ipv6_ppp_username:sv_ipv6APNItems[5],
6897 ipv6_ppp_passtmp:sv_ipv6APNItems[6],
6898 ipv6_pdp_type:sv_ipv6APNItems[7]
6899 }
6900 }
mj.qu19ac6692024-08-21 19:18:36 -07006901
6902 // ��ǰAPN����
zw.wangcfae4372024-08-12 16:41:12 +08006903 target.currAPN = ko.computed(sf_currAPN);
mj.qu19ac6692024-08-21 19:18:36 -07006904
zw.wangcfae4372024-08-12 16:41:12 +08006905 target.apn = ko.observable(target.currAPN().wan_apn);
mj.que145fd02025-06-05 00:13:13 -07006906 target.ipType = ko.observable(target.currAPN().pdp_type);
zw.wangcfae4372024-08-12 16:41:12 +08006907 target.ipv6_apn = ko.observable(target.currAPN().ipv6_wan_apn);
6908 target.ipv6_selectedAuthMode = ko.observable(target.currAPN().ipv6_ppp_auth_mode);
6909 target.ipv6_username = ko.observable(target.currAPN().ipv6_ppp_username);
6910 target.ipv6_password = ko.observable(target.currAPN().ipv6_ppp_passtmp);
6911 target.profileName = ko.observable(target.currAPN().m_profile_name);
6912 target.selectedAuthMode = ko.observable(target.currAPN().ppp_auth_mode);
6913 target.username = ko.observable(target.currAPN().ppp_username);
6914 target.password = ko.observable(target.currAPN().ppp_passtmp);
6915
6916 target.transAPN = ko.observable("apn_ipv4_apn");
6917 target.transAPNIPv6 = ko.observable("apn_ipv6_apn");
6918 target.transAuthMode = ko.observable("apn_authentication_ipv4");
6919 target.transAuthModeIPv6 = ko.observable("apn_authentication_ipv6");
6920 target.transUserName = ko.observable("apn_user_name_ipv4");
6921 target.transPassword = ko.observable("apn_password_ipv4");
6922 target.transUserNameIPv6 = ko.observable("apn_user_name_ipv6");
6923 target.transPasswordIPv6 = ko.observable("apn_password_ipv6");
6924
mj.qu19ac6692024-08-21 19:18:36 -07006925
6926
zw.wangcfae4372024-08-12 16:41:12 +08006927 target.apnDisabled = ko.computed(sf_apnDisabled);
6928 target.apnMode = ko.observable(sv_quickSettingInfo.apn_mode);
6929 target.apnModeDisabled = ko.computed(sf_apnModeDisabled);
6930 target.authModes = ko.observableArray(sf_fetchAuthenticationModes());
mj.qu19ac6692024-08-21 19:18:36 -07006931
zw.wangcfae4372024-08-12 16:41:12 +08006932 if (target.ipType() == "IPv6") {
6933 target.showIPv4 = false;
6934 target.showIPv6 = true;
6935 target.transAPNIPv6("apn");
6936 target.transAuthModeIPv6("apn_authentication");
6937 target.transUserNameIPv6("apn_user_name");
6938 target.transPasswordIPv6("apn_password");
6939 } else if (config.IPV4_AND_V6_SUPPORT && target.ipType() == "IPv4v6") {
6940 target.showIPv4 = true;
6941 target.showIPv6 = true;
mj.qu19ac6692024-08-21 19:18:36 -07006942 //ʹ��Ĭ��
zw.wangcfae4372024-08-12 16:41:12 +08006943 } else if (target.ipType() == "IP" || target.ipType() == "IPv4") {
6944 target.showIPv4 = true;
6945 target.showIPv6 = false;
6946 target.transAPN("apn");
6947 target.transAuthMode("apn_authentication");
6948 target.transUserName("apn_user_name");
6949 target.transPassword("apn_password");
6950 } else { //pdp_type == "IPv4v6" && config.IPV4V6_SUPPORT
6951 target.showIPv4 = true;
6952 target.showIPv6 = false;
6953 target.transAPN("apn");
6954 target.transAuthMode("apn_authentication");
6955 target.transUserName("apn_user_name");
6956 target.transPassword("apn_password");
6957 }
6958
6959 target.wifiDisabled = (sv_quickSettingInfo.wifi_cur_state != "1");
6960 target.ssid = ko.observable(sv_quickSettingInfo.SSID1);
6961 target.broadcast = ko.observable(sv_quickSettingInfo.HideSSID);
6962 target.hasWifiWep = config.WIFI_WEP_SUPPORT;
6963 target.hasWifiWpa3 = config.WIFI_WAP3_SUPPORT;
6964 target.hasWifiWpa23 = config.WIFI_WPA2_WAP3_SUPPORT;
6965
6966 target.securityModes = ko.observableArray(sv_securityModes);
6967 target.selectedSecurityMode = ko.observable(sv_quickSettingInfo.AuthMode);
6968 target.WPAKey = ko.observable(sv_quickSettingInfo.WPAPSK1);
6969
6970 target.apnMode_display = ko.observable("");
mj.qu19ac6692024-08-21 19:18:36 -07006971
zw.wangcfae4372024-08-12 16:41:12 +08006972 target.apnMode_trans = ko.computed(sf_apnMode_trans);
6973 target.selectedAuthMode_display = ko.computed(sf_selectedAuthMode_display);
6974 target.ipv6_selectedAuthMode_display = ko.computed(sf_ipv6_selectedAuthMode_display);
6975
6976 target.showWifiPassword = ko.observable(false);
6977 target.showWifiPasswordHandler = sf_showWifiPasswordHandler;
mj.qu19ac6692024-08-21 19:18:36 -07006978
6979 //�ж��Ƿ���802 n only��
zw.wangcfae4372024-08-12 16:41:12 +08006980 var sv_adInfo = service.getWifiAdvance();
6981 target.adBand = ko.observable(sv_adInfo.wifiBand);
6982 target.adMode = ko.observable(sv_adInfo.mode);
mj.qu19ac6692024-08-21 19:18:36 -07006983
zw.wangcfae4372024-08-12 16:41:12 +08006984 target.encryptType = ko.observable(sv_quickSettingInfo.EncrypType);
6985 target.keyID = ko.observable(sv_quickSettingInfo.DefaultKeyID);
6986 target.wepPassword = ko.observable("");
mj.qu19ac6692024-08-21 19:18:36 -07006987
zw.wangcfae4372024-08-12 16:41:12 +08006988 target.getWepPassword = sf_getWepPassword;
6989 target.wepPassword(target.getWepPassword());
6990 target.profileChangeHandler = sf_profileChangeHandler;
mj.qu19ac6692024-08-21 19:18:36 -07006991
zw.wangcfae4372024-08-12 16:41:12 +08006992 target.broadcast_display = ko.observable("");
6993 target.broadcast_trans = ko.computed(sf_broadcast_trans);
6994
6995 target.selectedSecurityMode_display = ko.observable();
6996 target.selectedSecurityMode_trans = ko.computed(sf_selectedSecurityMode_trans);
mj.qu19ac6692024-08-21 19:18:36 -07006997
zw.wangcfae4372024-08-12 16:41:12 +08006998
6999 target.callback = sf_callback;
7000 target.next = sf_button_next;
7001 target.previous = sf_button_previous;
7002 target.save = sf_button_save;
7003
7004 function sf_apnMode_trans() {
7005 if (sv_apnMode.auto == target.apnMode()) {
7006 target.apnMode_display($.i18n.prop("apn_auto_apn"));
7007 return "apn_auto_apn";
7008 } else {
7009 target.apnMode_display($.i18n.prop("apn_manual_apn"));
7010 return "apn_manual_apn";
7011 }
7012 }
mj.qu19ac6692024-08-21 19:18:36 -07007013
zw.wangcfae4372024-08-12 16:41:12 +08007014 function sf_broadcast_trans() {
7015 if ("0" == target.broadcast()) {
7016 target.broadcast_display($.i18n.prop("enable"));
7017 return "enable";
7018 } else {
7019 target.broadcast_display($.i18n.prop("disable"));
7020 return "disable";
7021 }
7022 }
mj.qu19ac6692024-08-21 19:18:36 -07007023
zw.wangcfae4372024-08-12 16:41:12 +08007024 function sf_button_next() {
7025 var currentStep = target.currentStep();
7026 var toStep = target.currentStep() + 1;
7027 sf_changeStep(toStep);
mj.qu19ac6692024-08-21 19:18:36 -07007028
zw.wangcfae4372024-08-12 16:41:12 +08007029 if (currentStep == 1 && target.apnMode() == sv_apnMode.auto) {
7030 toStep = target.currentStep() + 1;
7031 sf_changeStep(toStep);
7032 }
7033 }
mj.qu19ac6692024-08-21 19:18:36 -07007034
zw.wangcfae4372024-08-12 16:41:12 +08007035 function sf_button_previous() {
mj.qu19ac6692024-08-21 19:18:36 -07007036
zw.wangcfae4372024-08-12 16:41:12 +08007037 var currentStep = target.currentStep();
7038 var toStep = target.currentStep() - 1;
mj.qu19ac6692024-08-21 19:18:36 -07007039
zw.wangcfae4372024-08-12 16:41:12 +08007040 sf_changeStep(toStep);
mj.qu19ac6692024-08-21 19:18:36 -07007041
zw.wangcfae4372024-08-12 16:41:12 +08007042 if (currentStep == 3 && target.apnMode() == sv_apnMode.auto) {
7043 toStep = target.currentStep() - 1;
7044 sf_changeStep(toStep);
7045 }
7046 }
7047 function sf_button_save() {
7048 var submit = function () {
7049 sf_quickSetting4IPv6();
7050 };
7051 var result = sf_isDisabled_Wifi();
7052 if(result == sv_wifiState.wifi_off){
7053 showConfirm("quick_setting_wifi_disable_confirm", submit);
7054 } else if (result == sv_wifiState.wps_on) {
7055 showAlert("wps_on_info");
7056 } else{
7057 showConfirm("quick_setting_param_changed_confirm", submit);//submit();
7058 }
7059 }
mj.qu19ac6692024-08-21 19:18:36 -07007060 // ���������ύ���Ļص�����
zw.wangcfae4372024-08-12 16:41:12 +08007061 function sf_callback(data) {
7062 if (data.result == "success") {
7063 successOverlay();
mj.qu7b3dd3a2025-07-10 01:31:18 -07007064 location.hash = "#main";
zw.wangcfae4372024-08-12 16:41:12 +08007065 }
7066 else {
7067 errorOverlay();
7068 }
7069 }
7070
mj.qu19ac6692024-08-21 19:18:36 -07007071 // �任����ʱ����
zw.wangcfae4372024-08-12 16:41:12 +08007072 function sf_changeStep(i_step) {
7073 if (i_step > sv_maxStep) {
7074 i_step = sv_maxStep;
7075 } else if (i_step < sv_minStep) {
7076 i_step = sv_minStep;
7077 }
mj.qu19ac6692024-08-21 19:18:36 -07007078
zw.wangcfae4372024-08-12 16:41:12 +08007079 target.currentStep(i_step);
7080 return true;
7081 }
mj.qu19ac6692024-08-21 19:18:36 -07007082
zw.wangcfae4372024-08-12 16:41:12 +08007083 function sf_ipv6_selectedAuthMode_display() {
7084 var mode = target.ipv6_selectedAuthMode();
7085 return sf_getAuthModeNameByValue(mode);
7086 }
mj.qu19ac6692024-08-21 19:18:36 -07007087 // ���ݼ�Ȩģʽ��ֵ��������
zw.wangcfae4372024-08-12 16:41:12 +08007088 function sf_getAuthModeNameByValue(authMode) {
7089 for (var i = 0; i < config.APN_AUTH_MODES.length; i++) {
7090 if (authMode == config.APN_AUTH_MODES[i].value) {
7091 return config.APN_AUTH_MODES[i].name;
7092 }
7093 }
7094 }
mj.qu19ac6692024-08-21 19:18:36 -07007095
zw.wangcfae4372024-08-12 16:41:12 +08007096 function sf_getWepPassword(){
7097 return target.keyID() == '3' ? sv_quickSettingInfo.Key4Str1 : (target.keyID() == '2' ? sv_quickSettingInfo.Key3Str1 : target.keyID() == '1' ? sv_quickSettingInfo.Key2Str1 : sv_quickSettingInfo.Key1Str1);
7098 }
mj.qu19ac6692024-08-21 19:18:36 -07007099
zw.wangcfae4372024-08-12 16:41:12 +08007100 function sf_isDisabled_Wifi() {
7101 var s_wpsInfo = service.getWpsInfo();
7102 if(s_wpsInfo.radioFlag == "0"){
7103 return sv_wifiState.wifi_off;
7104 }else if (s_wpsInfo.wpsFlag == '1') {
7105 return sv_wifiState.wps_on;
7106 }
7107 return sv_wifiState.ok;
7108 }
7109 function sf_profileChangeHandler(i_data, i_event) {
7110 $("#pwdWepKey").parent().find("label[class='error']").hide();
7111 target.wepPassword(target.getWepPassword());
7112 return true;
7113 }
mj.qu19ac6692024-08-21 19:18:36 -07007114
7115 // ���������ύ(֧��IPv6��
zw.wangcfae4372024-08-12 16:41:12 +08007116 function sf_quickSetting4IPv6() {
7117 showLoading();
7118 var useIPv4ForV6 = config.IPV4V6_SUPPORT && target.currAPN().pdp_type == "IPv4v6";
7119
7120 var ciphertext = "";
7121 if (config.PASSWORD_ENCODE) {
7122 ciphertext = target.WPAKey();
7123 } else {
7124 var kparam = service.getDeviceInfoLow();
7125 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
7126 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
7127 ciphertext = CryptoJS.AES.encrypt(target.WPAKey(), tkey, {
7128 iv: tiv,
7129 mode: CryptoJS.mode.CBC,
7130 padding: CryptoJS.pad.ZeroPadding
7131 }).toString();
7132 }
mj.qu19ac6692024-08-21 19:18:36 -07007133
zw.wangcfae4372024-08-12 16:41:12 +08007134 var s_quickSettingParameters = {
7135 apn_index: sv_quickSettingInfo.apn_index,
7136 apnMode: target.apnMode(),
7137 Encryption_Mode_hid: target.selectedSecurityMode(),
7138 ipv6_ppp_auth_mode: useIPv4ForV6 ? target.selectedAuthMode() : target.ipv6_selectedAuthMode(),
7139 ipv6_ppp_username: useIPv4ForV6 ? target.username() : target.ipv6_username(),
7140 ipv6_ppp_passtmp: useIPv4ForV6 ? target.password() : target.ipv6_password(),
7141 ipv6_wan_apn: useIPv4ForV6 ? target.apn() : target.ipv6_apn(),
7142 pdp_type: target.ipType(),
7143 ppp_auth_mode: target.selectedAuthMode(),
7144 ppp_username: target.username(),
7145 ppp_passtmp: target.password(),
7146 profile_name: target.profileName(),
mj.qu19ac6692024-08-21 19:18:36 -07007147 //Ŀǰ����ģʽֻ��2�֣�����3������Ϊ�̶�ֵ
7148 //������Ҫ����Ϊ5�֣�����ֵ��Ҫ����
zw.wangcfae4372024-08-12 16:41:12 +08007149 security_shared_mode: "NONE",
7150 SSID_Broadcast: target.broadcast(),
7151 SSID_name: target.ssid(),
7152 wan_apn: target.apn(),
7153 wep_default_key: 0,
7154 WPA_ENCRYPTION_hid: target.selectedSecurityMode() == "OPEN" ? "NONE" : target.selectedSecurityMode() == "WPA2PSK" ? 1 : 2,
7155 WPA_PreShared_Key: ciphertext
7156 }
mj.qu19ac6692024-08-21 19:18:36 -07007157
zw.wangcfae4372024-08-12 16:41:12 +08007158 s_quickSettingParameters.wep_default_key = target.keyID();
mj.qu19ac6692024-08-21 19:18:36 -07007159
zw.wangcfae4372024-08-12 16:41:12 +08007160 if(target.encryptType() == "SHARED" || target.selectedSecurityMode() == "WEP") {
mj.qu19ac6692024-08-21 19:18:36 -07007161
zw.wangcfae4372024-08-12 16:41:12 +08007162 s_quickSettingParameters.security_shared_mode = "WEP";
mj.qu19ac6692024-08-21 19:18:36 -07007163
zw.wangcfae4372024-08-12 16:41:12 +08007164 s_quickSettingParameters.wep_key_1 = sv_quickSettingInfo.Key1Str1;
7165 s_quickSettingParameters.wep_key_2 = sv_quickSettingInfo.Key2Str1;
7166 s_quickSettingParameters.wep_key_3 = sv_quickSettingInfo.Key3Str1;
7167 s_quickSettingParameters.wep_key_4 = sv_quickSettingInfo.Key4Str1;
mj.qu19ac6692024-08-21 19:18:36 -07007168
zw.wangcfae4372024-08-12 16:41:12 +08007169 var WEPSelectTmp = '0';
mj.qu19ac6692024-08-21 19:18:36 -07007170
zw.wangcfae4372024-08-12 16:41:12 +08007171 if(target.wepPassword().length =='5' ||target.wepPassword().length =='13'){
7172 WEPSelectTmp = '1';
7173 }else{
7174 WEPSelectTmp = '0';
7175 }
mj.qu19ac6692024-08-21 19:18:36 -07007176
zw.wangcfae4372024-08-12 16:41:12 +08007177 if(target.keyID() =='3'){
7178 s_quickSettingParameters.wep_key_4 = target.wepPassword();
7179 s_quickSettingParameters.WEP4Select = WEPSelectTmp;
7180 }else if(target.keyID() =='2'){
7181 s_quickSettingParameters.wep_key_3 = target.wepPassword();
7182 s_quickSettingParameters.WEP3Select = WEPSelectTmp;
7183 }else if(target.keyID() =='1'){
7184 s_quickSettingParameters.wep_key_2 = target.wepPassword();
7185 s_quickSettingParameters.WEP2Select = WEPSelectTmp;
7186 }else{
7187 s_quickSettingParameters.wep_key_1 = target.wepPassword();
7188 s_quickSettingParameters.WEP1Select = WEPSelectTmp;
7189 }
7190 }else if(target.encryptType() == "WPAPSKWPA2PSK") {
7191 s_quickSettingParameters.security_shared_mode = "NONE";
7192 }else {
7193 s_quickSettingParameters.security_shared_mode = "NONE";
7194 }
mj.qu19ac6692024-08-21 19:18:36 -07007195
zw.wangcfae4372024-08-12 16:41:12 +08007196 service.setQuickSetting4IPv6(s_quickSettingParameters, target.callback);
7197 }
mj.qu19ac6692024-08-21 19:18:36 -07007198
zw.wangcfae4372024-08-12 16:41:12 +08007199 function sf_selectedAuthMode_display() {
7200 var mode = target.selectedAuthMode();
7201 return sf_getAuthModeNameByValue(mode);
7202 }
mj.qu19ac6692024-08-21 19:18:36 -07007203
zw.wangcfae4372024-08-12 16:41:12 +08007204 function sf_selectedSecurityMode_trans() {
7205 var mode = target.selectedSecurityMode();
7206 var modesOption = config.WIFI_WEP_SUPPORT ? config.AUTH_MODES_WEP : config.AUTH_MODES;
7207 for (var i = 0; i < modesOption.length; i++) {
7208 if (mode == modesOption[i].value) {
7209 target.selectedSecurityMode_display($.i18n.prop("security_mode_" + modesOption[i].value));
7210 return "security_mode_" + modesOption[i].value;
7211 }
7212 }
7213 }
mj.qu19ac6692024-08-21 19:18:36 -07007214
zw.wangcfae4372024-08-12 16:41:12 +08007215 function sf_showWifiPasswordHandler(){
7216 $("#pwdWepKey").parent().find(".error").hide();
7217 $("#codeWPAKey").parent().find(".error").hide();
7218 var checkbox = $("#showWifiPassword:checked");
7219 if(checkbox && checkbox.length == 0){
7220 target.showWifiPassword(true);
7221 }else{
7222 target.showWifiPassword(false);
7223 }
7224 }
mj.qu19ac6692024-08-21 19:18:36 -07007225
zw.wangcfae4372024-08-12 16:41:12 +08007226 }
7227
7228 function init() {
7229 var container = $('#container');
7230 ko.cleanNode(container[0]);
7231 var fwVm = new quickSettingViewModel();
7232 ko.applyBindings(fwVm, container[0]);
mj.qu19ac6692024-08-21 19:18:36 -07007233
zw.wangcfae4372024-08-12 16:41:12 +08007234 $('#quickSettingForm').validate({
7235 submitHandler:function () {
7236 if (fwVm.currentStep() < 5) {
7237 fwVm.next();
7238 } else {
7239 fwVm.save();
7240 }
7241 },
7242 rules:{
7243 txtAPN:"apn_check",
7244 txtIPv6APN:"apn_check",
7245 txtSSID:'ssid',
7246 pwdWepKey:{wifi_wep_password_check:true,wifi_password_check: true},
7247 txtWepKey:{wifi_wep_password_check:true,wifi_password_check: true},
7248 txtWPAKey:'wifi_password_check',
7249 codeWPAKey:'wifi_password_check',
7250 txtUserName:'ppp_username_check',
7251 txtIPv6UserName:'ppp_username_check',
7252 txtSecretCode:"ppp_secretcode_check",
7253 txtIPv6SecretCode:"ppp_secretcode_check"
7254 },
7255 errorPlacement:function (error, element) {
7256 var id = element.attr("id");
7257 if (id == "pwdWepKey" || id == "txtWepKey"){
7258 error.insertAfter("#lblShowWepPassword");
7259 } else if (id == "txtWPAKey" || id == "codeWPAKey") {
7260 error.insertAfter("#lblShowWifiPassword");
7261 } else {
7262 error.insertAfter(element);
7263 }
7264 }
7265 });
7266 }
7267
7268 return {
7269 init:init
7270 };
7271 }
7272);
7273
7274define("main","set service knockout underscore jquery statusBar echarts".split(" "), function (set, fnc, libko, libus, libjq, barStat, echarts) {
7275
7276 var chartOptions = {
7277 color: ['red', 'red', 'red', 'red', 'red'],
7278 series: [{
mj.qu19ac6692024-08-21 19:18:36 -07007279 name: '��������',
zw.wangcfae4372024-08-12 16:41:12 +08007280 type: 'pie',
7281 radius: ['0', '72'],
7282 itemStyle: {
7283 normal: {
7284 label: {
7285 show: false
7286 },
7287 labelLine: {
7288 show: false
7289 }
7290 }
7291 },
7292 data: [],
7293 selectedOffset: 3
7294 }
7295 ],
7296 animation: false,
7297 title: {
7298 text: '',
7299 x: 'center',
7300 y: 'center',
7301 itemGap: 0,
7302 textStyle: {
7303 color: '#FFF',
mj.qu19ac6692024-08-21 19:18:36 -07007304 fontFamily: '΢���ź�',
zw.wangcfae4372024-08-12 16:41:12 +08007305 fontSize: 20,
7306 fontWeight: 'bolder'
7307 },
7308 subtextStyle: {
7309 color: '#FFF',
mj.qu19ac6692024-08-21 19:18:36 -07007310 fontFamily: '΢���ź�',
zw.wangcfae4372024-08-12 16:41:12 +08007311 fontSize: 16,
7312 fontWeight: 'bolder'
7313 }
7314 },
7315 tooltip: {
7316 formatter: "{b}"
7317 },
7318 };
7319 var languageOld = window.language;
7320 var num_refresh = 0;
7321 var traffic_graphic_chart = null;
7322 var connStat = {
7323 CONNECTED: 1,
7324 DISCONNECTED: 2,
7325 CONNECTING: 3,
7326 DISCONNECTING: 4
7327 };
7328 function init() {
7329 num_refresh = 0;
7330 homeUtil.oldUsedData = null;
7331 homeUtil.oldAlarmData = null;
7332 traffic_graphic_chart = echarts.init(libjq("#traffic_graphic")[0]);
7333 var container = libjq('#container')[0];
7334 libko.cleanNode(container);
7335 var tmp = new VmHome();
7336 libko.applyBindings(tmp, container);
7337 var data = fnc.getLoginData();
7338 var psw_flg = data.psw_changed;
7339 if (psw_flg != "1") {
7340 showConfirm("password_note_first_change", function () {
7341 window.location.hash = '#pwd_mode';
7342 });
7343 return;
7344 }
7345 }
mj.qu19ac6692024-08-21 19:18:36 -07007346
zw.wangcfae4372024-08-12 16:41:12 +08007347 var homeUtil = {
7348 initStatus: null,
7349 initShownStatus: function (data) {
7350 this.initStatus = {};
7351 var ipv6Mode = data.ipv6PdpType.toLowerCase().indexOf("v6") > 0;
7352 if (set.RJ45_SUPPORT) {
7353 var mode = checkCableMode(data.blc_wan_mode);
7354 if (mode) {
7355 this.initStatus.showIpv6WanIpAddr = false;
7356 this.initStatus.showIpv4WanIpAddr = true;
7357 } else if (set.IPV6_SUPPORT) {
7358 if (data.pdpType == "IP") {
7359 this.initStatus.showIpv6WanIpAddr = false;
7360 this.initStatus.showIpv4WanIpAddr = true;
7361 } else if (ipv6Mode) {
7362 if (data.ipv6PdpType == "IPv6") {
7363 this.initStatus.showIpv6WanIpAddr = true;
7364 this.initStatus.showIpv4WanIpAddr = false;
7365 } else {
7366 this.initStatus.showIpv6WanIpAddr = true;
7367 this.initStatus.showIpv4WanIpAddr = true;
7368 }
7369 }
7370 } else {
7371 this.initStatus.showIpv6WanIpAddr = false;
7372 this.initStatus.showIpv4WanIpAddr = true;
7373 }
7374 } else {
7375 if (set.IPV6_SUPPORT) {
7376 if (data.pdpType == "IP") {
7377 this.initStatus.showIpv6WanIpAddr = false;
7378 this.initStatus.showIpv4WanIpAddr = true;
7379 } else if (ipv6Mode) {
7380 if (data.ipv6PdpType == "IPv6") {
7381 this.initStatus.showIpv6WanIpAddr = true;
7382 this.initStatus.showIpv4WanIpAddr = false;
7383 } else {
7384 this.initStatus.showIpv6WanIpAddr = true;
7385 this.initStatus.showIpv4WanIpAddr = true;
7386 }
7387 }
7388 } else {
7389 this.initStatus.showIpv6WanIpAddr = false;
7390 this.initStatus.showIpv4WanIpAddr = true;
7391 }
7392 }
7393 },
7394 wanIpGet: function (data) {
7395 var addrInfo = {
7396 wanIpAddress: '',
7397 ipv6WanIpAddress: ''
7398 };
7399 addrInfo.wanIpAddress = verifyDeviceInfo(data.wanIpAddress);
7400 addrInfo.ipv6WanIpAddress = verifyDeviceInfo(data.ipv6WanIpAddress);
7401 return addrInfo;
7402 },
7403 cachedAPStationBasic: null,
7404 cachedConnectionMode: null,
7405 getCanConnectNetWork: function (param) {
7406 var status = fnc.getStatusInfo();
7407 if (status.simStatus != "modem_init_complete") {
7408 return false;
7409 }
7410 var typeNetworkTmp = status.networkType.toLowerCase();
7411 if (typeNetworkTmp == 'searching') {
7412 return false;
7413 }
7414 if (typeNetworkTmp == '' || typeNetworkTmp == 'limited service') {
7415 typeNetworkTmp = 'limited_service';
7416 }
7417 if (typeNetworkTmp == 'no service') {
7418 typeNetworkTmp = 'no_service';
7419 }
7420 if (typeNetworkTmp == 'limited_service' || typeNetworkTmp == 'no_service') {
7421 if (param.cStatus() != connStat.CONNECTED) {
7422 return false;
7423 }
7424 }
7425 if (set.AP_STATION_SUPPORT) {
7426 if (status.connectWifiStatus == "connect") {
7427 if (status.ap_station_mode == "wifi_pref") {
7428 return false;
7429 }
7430 }
7431 }
7432 return true;
7433 },
7434 doConnect: function () {
7435 showLoading('connecting');
7436 fnc.connect({}, function (data) {
7437 if (data.result) {
7438 successOverlay();
7439 } else {
7440 errorOverlay();
7441 }
7442 });
7443 },
7444 refreshHomeData: function (param) {
7445 var info = fnc.getConnectionInfo();
7446 param.connectStatus(info.connectStatus);
7447 param.canConnect(this.getCanConnectNetWork(param));
7448 param.networkType(homeUtil.getNetworkType(info.networkType));
7449 if (info.connectStatus == "ppp_connected") {
7450 param.current_Flux(transUnit(parseInt(info.data_counter.currentReceived, 10) + parseInt(info.data_counter.currentSent, 10), false));
7451 param.connected_Time(transSecond2Time(info.data_counter.currentConnectedTime));
7452 param.up_Speed(transUnit(info.data_counter.uploadRate, true));
7453 param.down_Speed(transUnit(info.data_counter.downloadRate, true));
7454 } else {
7455 param.current_Flux(transUnit(0, false));
7456 param.connected_Time(transSecond2Time(0));
7457 param.up_Speed(transUnit(0, true));
7458 param.down_Speed(transUnit(0, true));
7459 }
7460 param.trafficAlertEnable(info.limitVolumeEnable);
7461 if (info.limitVolumeEnable) {
7462 if (info.limitVolumeType == '1') {
7463 param.trafficUsed(transUnit(parseInt(info.data_counter.monthlySent, 10) + parseInt(info.data_counter.monthlyReceived, 10), false));
7464 param.trafficLimited(transUnit(info.limitDataMonth, false));
7465 } else {
7466 param.trafficUsed(transSecond2Time(info.data_counter.monthlyConnectedTime));
7467 param.trafficLimited(transSecond2Time(info.limitTimeMonth));
7468 }
7469 }
7470 if (languageOld != window.language) {
7471 languageOld = window.language;
7472 num_refresh = 1;
7473 }
7474 if (param.showTraffic()) {
7475 homeUtil.updateEcharts(info);
7476 } else {
7477 homeUtil.allFreeEcharts();
7478 }
7479 homeUtil.refreshStationInfo(param);
7480 },
7481 allFreeEcharts: function () {
7482 var usedData = homeUtil.data.free;
7483 usedData.value = 1;
7484 usedData.selected = false;
7485 usedData.name = libjq.i18n.prop("echarts_no");
7486 chartOptions.series[0].data = [usedData];
7487 chartOptions.title.text = '';
7488 homeUtil.setEcharts(chartOptions, libjq.i18n.prop("echarts_no"));
7489 },
7490 getNetworkType: function (networkType) {
7491 var typeNetworkTmp = networkType.toLowerCase();
7492 if (typeNetworkTmp == '' || typeNetworkTmp == 'limited service') {
7493 typeNetworkTmp = 'limited_service';
7494 }
7495 if (typeNetworkTmp == 'no service') {
7496 typeNetworkTmp = 'no_service';
7497 }
7498 if (typeNetworkTmp == 'limited_service' || typeNetworkTmp == 'no_service') {
7499 return libjq.i18n.prop("network_type_" + typeNetworkTmp);
7500 } else {
7501 return networkType;
7502 }
7503 },
7504 data: {
7505 full: {
7506 value: 30,
mj.qu19ac6692024-08-21 19:18:36 -07007507 name: '��������',
zw.wangcfae4372024-08-12 16:41:12 +08007508 itemStyle: {
7509 normal: {
7510 color: '#DF4313'
7511 }
7512 }
7513 },
7514 used: {
7515 value: 30,
mj.qu19ac6692024-08-21 19:18:36 -07007516 name: '��ʹ��',
zw.wangcfae4372024-08-12 16:41:12 +08007517 itemStyle: {
7518 normal: {
7519 color: '#8CC916'
7520 }
7521 }
7522 },
7523 left1: {
7524 value: 50,
mj.qu19ac6692024-08-21 19:18:36 -07007525 name: '����ֵ��δʹ��',
zw.wangcfae4372024-08-12 16:41:12 +08007526 itemStyle: {
7527 normal: {
7528 color: '#D8D8D8'
7529 }
7530 }
7531 },
7532 free: {
7533 value: 50,
mj.qu19ac6692024-08-21 19:18:36 -07007534 name: 'δʹ��',
zw.wangcfae4372024-08-12 16:41:12 +08007535 itemStyle: {
7536 normal: {
7537 color: '#D8D8D8'
7538 }
7539 }
7540 },
7541 alert: {
7542 value: 1,
mj.qu19ac6692024-08-21 19:18:36 -07007543 name: '����ֵ',
zw.wangcfae4372024-08-12 16:41:12 +08007544 itemStyle: {
7545 normal: {
7546 color: '#FF5500'
7547 }
7548 }
7549 },
7550 alarm: {
7551 value: 19.7,
mj.qu19ac6692024-08-21 19:18:36 -07007552 name: '������',
zw.wangcfae4372024-08-12 16:41:12 +08007553 itemStyle: {
7554 normal: {
7555 color: '#8CC916'
7556 }
7557 }
7558 },
7559 start: {
7560 value: 50,
mj.qu19ac6692024-08-21 19:18:36 -07007561 name: '����ֵ��δʹ��',
zw.wangcfae4372024-08-12 16:41:12 +08007562 itemStyle: {
7563 normal: {
7564 color: '#D8D8D8'
7565 }
7566 }
7567 },
7568 },
7569 getDataInfo: function (value) {
7570 return {
7571 data: /\d+(.\d+)?/.exec(value)[0],
7572 unit: /[A-Z]{1,2}/.exec(value)[0]
7573 }
7574 },
7575 oldAlarmData: null,
7576 oldUsedData: null,
7577 updateEcharts: function (info) {
7578 var startName = libjq.i18n.prop("echarts_no");
7579 num_refresh++;
7580 if (num_refresh % 10 != 2) {
7581 return false;
7582 }
7583 var total = 0,
7584 used = 0,
7585 reach = 0,
7586 left = 0,
7587 alarm = 0,
7588 left1 = 0;
7589 if (info.limitVolumeEnable) {
7590 startName = libjq.i18n.prop("echarts_used");
7591 chartOptions.series[0].data = [];
7592 if (info.limitVolumeType == '1') {
7593 var limitedDataFormatted = transUnit(info.limitDataMonth, false);
7594 chartOptions.series[0].data = [];
7595 if (info.limitDataMonth == 0) {
7596 var usedData = homeUtil.data.used;
7597 usedData.value = 1;
7598 usedData.selected = false;
7599 usedData.name = libjq.i18n.prop("echarts_used");
7600 chartOptions.series[0].data.push(usedData);
7601 } else {
7602 var dataInfo = homeUtil.getDataInfo(limitedDataFormatted);
7603 total = dataInfo.data * homeUtil.getUnitValue(dataInfo.unit) * 1048576;
7604 used = parseInt(info.data_counter.monthlySent, 10) + parseInt(info.data_counter.monthlyReceived, 10);
7605 reach = total * info.limitVolumePercent / 100;
7606 if (used >= total) {
7607 var fullData = homeUtil.data.full;
7608 fullData.value = 100;
7609 fullData.name = libjq.i18n.prop("echarts_full");
7610 chartOptions.series[0].data.push(fullData);
7611 startName = libjq.i18n.prop("echarts_full");
7612 } else {
7613 if (reach - used > 0) {
7614 left1 = reach - used;
7615 left = total - reach;
7616 } else {
7617 alarm = used - reach;
7618 left = total - used;
7619 }
7620 var usedData = homeUtil.data.used;
7621 if (reach - used > 0) {
7622 usedData.value = used;
7623 } else {
7624 usedData.value = reach;
7625 }
7626 usedData.name = libjq.i18n.prop("echarts_used");
7627 chartOptions.series[0].data.push(usedData);
7628 if (left1 > 0) {
7629 var left1Data = homeUtil.data.left1;
7630 left1Data.value = left1;
7631 left1Data.name = libjq.i18n.prop("echarts_left1");
7632 chartOptions.series[0].data.push(left1Data);
7633 }
7634 var alertData = homeUtil.data.alert;
7635 alertData.value = total / 200;
7636 alertData.name = libjq.i18n.prop("echarts_alert");
7637 chartOptions.series[0].data.push(alertData);
7638 if (alarm > 0) {
7639 var alarmData = homeUtil.data.alarm;
7640 alarmData.value = alarm;
7641 alarmData.name = libjq.i18n.prop("echarts_alarm");
7642 chartOptions.series[0].data.push(alarmData);
7643 }
7644 var freeData = homeUtil.data.free;
7645 freeData.value = left;
7646 freeData.name = libjq.i18n.prop("echarts_free");
7647 chartOptions.series[0].data.push(freeData);
7648 }
7649 }
7650 } else {
7651 chartOptions.series[0].data = [];
7652 if (info.limitTimeMonth == 0) {
7653 var usedData = homeUtil.data.used;
7654 usedData.value = 1;
7655 usedData.selected = false;
7656 usedData.name = libjq.i18n.prop("echarts_used");
7657 chartOptions.series[0].data.push(usedData);
7658 } else {
7659 total = info.limitTimeMonth;
7660 used = info.data_counter.monthlyConnectedTime;
7661 reach = total * info.limitVolumePercent / 100;
7662 if (used >= total) {
7663 var fullTime = homeUtil.data.full;
7664 fullTime.value = 100;
7665 fullTime.name = libjq.i18n.prop("echarts_full");
7666 chartOptions.series[0].data.push(fullTime);
7667 startName = libjq.i18n.prop("echarts_full");
7668 } else {
7669 if (reach - used > 0) {
7670 left1 = reach - used;
7671 left = total - reach;
7672 } else {
7673 alarm = used - reach;
7674 left = total - used;
7675 }
7676 var usedTime = homeUtil.data.used;
7677 if (reach - used > 0) {
7678 usedTime.value = used;
7679 } else {
7680 usedTime.value = reach;
7681 }
7682 usedTime.name = libjq.i18n.prop("echarts_used");
7683 chartOptions.series[0].data.push(usedTime);
7684 if (left1 > 0) {
7685 var left1Time = homeUtil.data.left1;
7686 left1Time.value = left1;
7687 left1Time.name = libjq.i18n.prop("echarts_left1");
7688 chartOptions.series[0].data.push(left1Time);
7689 }
7690 var alertTime = homeUtil.data.alert;
7691 alertTime.value = total / 200;
7692 alertTime.name = libjq.i18n.prop("echarts_alert");
7693 chartOptions.series[0].data.push(alertTime);
7694 if (alarm > 0) {
7695 var alarmTime = homeUtil.data.alarm;
7696 alarmTime.value = alarm;
7697 alarmTime.name = libjq.i18n.prop("echarts_alarm");
7698 chartOptions.series[0].data.push(alarmTime);
7699 }
7700 var freeTime = homeUtil.data.free;
7701 freeTime.value = left;
7702 freeTime.name = libjq.i18n.prop("echarts_free");
7703 chartOptions.series[0].data.push(freeTime);
7704 }
7705 }
7706 }
7707 } else {
7708 var usedData = homeUtil.data.used;
7709 usedData.value = 1;
7710 usedData.selected = false;
7711 usedData.name = libjq.i18n.prop("echarts_no");
7712 chartOptions.series[0].data = [usedData];
7713 chartOptions.title.text = '';
7714 }
7715 var firstEle = libus.find(chartOptions.series[0].data, function (n) {
7716 return n.name == libjq.i18n.prop("echarts_used");
7717 });
7718 var alarmEle = libus.find(chartOptions.series[0].data, function (n) {
7719 return n.name == libjq.i18n.prop("echarts_alarm");
7720 });
7721 if (!alarmEle) {
7722 alarmEle = {
7723 value: 0
7724 };
7725 }
7726 if (typeof firstEle == "undefined") {
7727 homeUtil.setEcharts(chartOptions, startName);
7728 } else if (homeUtil.oldUsedData != firstEle.value || homeUtil.oldAlarmData != alarmEle.value) {
7729 homeUtil.oldUsedData = firstEle.value;
7730 homeUtil.oldAlarmData = alarmEle.value;
7731 homeUtil.setEcharts(chartOptions, startName);
7732 }
7733 },
7734 getUnitValue: function (unit) {
7735 unit = unit.toUpperCase();
7736 if (unit == 'GB') {
7737 return '1024';
7738 } else if (unit == 'TB') {
7739 return '1048576';
7740 } else {
7741 return '1';
7742 }
7743 },
7744 setEcharts: function (options, startName) {
7745 var startPart = homeUtil.data.start;
7746 startPart.value = 0;
7747 startPart.name = startName;
7748 startPart.selected = false;
7749 var arr = [startPart].concat(options.series[0].data);
7750 options.series[0].data = arr;
7751 traffic_graphic_chart.setOption(options, true);
7752 addTimeout(function () {
7753 traffic_graphic_chart.resize();
7754 }, 1000);
7755 },
7756 refreshStationInfo: function (param) {
7757 param.wirelessDeviceNum(fnc.getStatusInfo().wirelessDeviceNum);
7758 if (num_refresh % 10 == 2) {
7759 fnc.getAttachedCableDevices({}, function (data) {
7760 param.wireDeviceNum(data.attachedDevices.length);
7761 });
7762 }
7763 },
7764 getUnit: function (val) {
7765 if (val == '1024') {
7766 return 'GB';
7767 } else if (val == '1048576') {
7768 return 'TB';
7769 } else {
7770 return 'MB';
7771 }
7772 },
7773 refreshOpmodeInfo: function (param) {
7774 var obj = fnc.getOpMode();
7775 param.isLoggedIn(obj.loginfo == "ok");
7776 var currentMode = checkCableMode(obj.blc_wan_mode);
7777 if (param.opCurMode() && !currentMode) {
7778 var data = fnc.getLoginData();
7779 var state = data.modem_main_state;
7780 if (state == "modem_sim_undetected" || state == "modem_undetected" || state == "modem_sim_destroy" || state == "modem_waitpin" || state == "modem_waitpuk" || state == "modem_imsi_waitnck") {
7781 window.location.reload();
7782 return;
7783 }
7784 }
7785 param.opCurMode(currentMode);
7786 if (currentMode && obj.ethwan_mode == "DHCP") {
7787 param.enableFlag(false);
7788 } else if ((!currentMode && obj.ppp_status != "ppp_disconnected") || (currentMode && obj.rj45_state != "idle" && obj.rj45_state != "dead")) {
7789 param.enableFlag(true);
7790 } else {
7791 param.enableFlag(false);
7792 }
7793 var mode = (obj.blc_wan_mode == "AUTO_PPP" || obj.blc_wan_mode == "AUTO_PPPOE") ? "AUTO" : obj.blc_wan_mode;
7794 var currentOpMode = "";
7795 switch (mode) {
7796 case "AUTO":
7797 currentOpMode = "opmode_auto";
7798 break;
7799 case "PPPOE":
7800 currentOpMode = "opmode_cable";
7801 break;
7802 case "PPP":
7803 currentOpMode = "opmode_gateway";
7804 break;
7805 default:
7806 break;
7807 }
7808 libjq("#opmode").attr("data-trans", currentOpMode).text(libjq.i18n.prop(currentOpMode));
7809 param.isShowHomeConnect(!currentMode);
7810 param.showTraffic(set.TRAFFIC_SUPPORT && !currentMode);
7811 param.isSupportQuicksetting(set.HAS_QUICK_SETTING && !currentMode);
7812 }
7813 };
7814 function VmHome() {
7815 var target = this;
7816 target.hasSms = set.HAS_SMS;
7817 target.hasPhonebook = set.HAS_PHONEBOOK;
7818 target.isSupportSD = set.SD_CARD_SUPPORT;
7819 target.isCPE = set.PRODUCT_TYPE == 'CPE';
7820 target.hasRj45 = set.RJ45_SUPPORT;
7821 target.notDataCard = set.PRODUCT_TYPE != 'DATACARD';
7822 target.hasParentalControl = set.HAS_PARENTAL_CONTROL;
mj.qua175b812025-04-03 03:52:28 -07007823 target.hasUssd = set.HAS_USSD;
zw.wangcfae4372024-08-12 16:41:12 +08007824 var wifiInfo = fnc.getWifiBasic();
7825 if (set.WIFI_SUPPORT_QR_SWITCH) {
7826 target.showQRCode = set.WIFI_SUPPORT_QR_CODE && wifiInfo.show_qrcode_flag;
7827 } else {
7828 target.showQRCode = set.WIFI_SUPPORT_QR_CODE;
7829 }
7830 if(set.WIFI_SUPPORT_QR_CODE){
7831 target.qrcodeSrc = './pic/qrcode_ssid_wifikey.png?_=' + libjq.now();
7832 } else {
7833 target.qrcodeSrc = './pic/res_blacktrans.png';
7834 }
7835 if (target.hasRj45) {
7836 var opModeObj = checkCableMode(fnc.getOpMode().blc_wan_mode);
7837 target.opCurMode = libko.observable(opModeObj);
7838 target.isShowHomeConnect = libko.observable(!opModeObj);
7839 target.showTraffic = libko.observable(set.TRAFFIC_SUPPORT && !opModeObj);
7840 target.isSupportQuicksetting = libko.observable(set.HAS_QUICK_SETTING && !opModeObj);
7841 } else {
7842 target.isShowHomeConnect = libko.observable(true);
7843 target.showTraffic = libko.observable(set.TRAFFIC_SUPPORT);
7844 target.isSupportQuicksetting = libko.observable(set.HAS_QUICK_SETTING);
7845 }
7846 if (set.PRODUCT_TYPE == 'DATACARD') {
7847 libjq('#home_image').addClass('data-card');
7848 }
7849 var info = fnc.getConnectionInfo();
7850 target.networkType = libko.observable(homeUtil.getNetworkType(info.networkType));
7851 target.connectStatus = libko.observable(info.connectStatus);
7852 target.canConnect = libko.observable(false);
7853 target.cStatus = libko.computed(function () {
7854 if (target.connectStatus().indexOf('_connected') != -1) {
7855 return connStat.CONNECTED;
7856 } else if (target.connectStatus().indexOf('_disconnecting') != -1) {
7857 return connStat.DISCONNECTING;
7858 } else if (target.connectStatus().indexOf('_connecting') != -1) {
7859 return connStat.CONNECTING;
7860 } else {
7861 return connStat.DISCONNECTED;
7862 }
7863 });
7864 target.current_Flux = libko.observable(transUnit(0, false));
7865 target.connected_Time = libko.observable(transSecond2Time(0));
7866 target.up_Speed = libko.observable(transUnit(0, true));
7867 target.down_Speed = libko.observable(transUnit(0, true));
7868 target.isLoggedIn = libko.observable(false);
7869 target.enableFlag = libko.observable(true);
7870 target.simSerialNumber = libko.observable('');
7871 target.imei = libko.observable('');
7872 target.imsi = libko.observable('');
mj.qua175b812025-04-03 03:52:28 -07007873 target.iccid = libko.observable('');
7874 target.cellid = libko.observable('');
zw.wangcfae4372024-08-12 16:41:12 +08007875 target.ssid = libko.observable('');
7876 target.hasWifi = set.HAS_WIFI;
7877 target.showMultiSsid = libko.observable(set.HAS_MULTI_SSID && wifiInfo.multi_ssid_enable == "1");
7878 target.trafficAlertEnable = libko.observable(false);
7879 target.trafficUsed = libko.observable('');
7880 target.trafficLimited = libko.observable('');
7881 target.wireDeviceNum = libko.observable(fnc.getAttachedCableDevices().attachedDevices.length);
7882 target.wirelessDeviceNum = libko.observable(fnc.getStatusInfo().wirelessDeviceNum);
7883 target.showOpModeWindow = function () {
7884 if (target.enableFlag()) {
7885 return;
7886 }
7887 showSettingWindow("change_mode", "opmode_popup", "opmode_popup", 400, 300, function () {});
7888 };
7889 target.currentOpMode = libko.observable("0");
7890 var popoverShown = false;
7891 libjq('#showDetailInfo').popover({
7892 html: true,
7893 placement: 'top',
7894 trigger: 'focus',
7895 title: function () {
7896 return libjq.i18n.prop('device_info')
7897 },
7898 content: function () {
7899 return getDetailInfoContent();
7900 }
7901 }).on('shown.bs.popover', function () {
7902 popoverShown = true;
7903 }).on('hidden.bs.popover', function () {
7904 popoverShown = false;
7905 });
7906 function fetchDeviceInfo() {
7907 var data = fnc.getDeviceInfo();
7908 target.simSerialNumber(verifyDeviceInfo(data.simSerialNumber));
7909 target.imei(verifyDeviceInfo(data.imei));
7910 target.imsi(verifyDeviceInfo(data.imsi));
mj.qua175b812025-04-03 03:52:28 -07007911 target.iccid(verifyDeviceInfo(data.iccid));
7912 target.cellid(verifyDeviceInfo(data.cellid));
zw.wangcfae4372024-08-12 16:41:12 +08007913 target.ssid(verifyDeviceInfo(data.ssid));
7914 target.showMultiSsid(set.HAS_MULTI_SSID && data.multi_ssid_enable == "1");
7915 return data;
7916 }
7917 fetchDeviceInfo();
7918 function getDetailInfoContent() {
7919 var data = fetchDeviceInfo();
7920 homeUtil.initShownStatus(data);
7921 var addrInfo = homeUtil.wanIpGet(data);
7922 var compiled = libus.template(libjq("#detailInfoTmpl").html());
7923 var tmpl = compiled({
7924 simSerialNumber: verifyDeviceInfo(data.simSerialNumber),
7925 imei: verifyDeviceInfo(data.imei),
7926 imsi: verifyDeviceInfo(data.imsi),
mj.qua175b812025-04-03 03:52:28 -07007927 iccid : verifyDeviceInfo(data.iccid),
7928 cellid: verifyDeviceInfo(data.cellid),
zw.wangcfae4372024-08-12 16:41:12 +08007929 signal: signalFormat(data.signal),
7930 hasWifi: set.HAS_WIFI,
7931 isCPE: set.PRODUCT_TYPE == 'CPE',
7932 hasRj45: set.RJ45_SUPPORT,
7933 showMultiSsid: set.HAS_MULTI_SSID && data.multi_ssid_enable == "1",
7934 ssid: verifyDeviceInfo(data.ssid),
7935 max_access_num: verifyDeviceInfo(data.max_access_num),
7936 m_ssid: verifyDeviceInfo(data.m_ssid),
7937 m_max_access_num: verifyDeviceInfo(data.m_max_access_num),
7938 wifi_long_mode: "wifi_des_" + data.wifiRange,
7939 lanDomain: verifyDeviceInfo(data.lanDomain),
7940 ipAddress: verifyDeviceInfo(data.ipAddress),
7941 showMacAddress: set.SHOW_MAC_ADDRESS,
7942 macAddress: verifyDeviceInfo(data.macAddress),
7943 showIpv4WanIpAddr: homeUtil.initStatus.showIpv4WanIpAddr,
7944 wanIpAddress: addrInfo.wanIpAddress,
7945 showIpv6WanIpAddr: homeUtil.initStatus.showIpv6WanIpAddr,
7946 ipv6WanIpAddress: addrInfo.ipv6WanIpAddress,
7947 sw_version: verifyDeviceInfo(data.sw_version),
7948 hw_version: verifyDeviceInfo(data.hw_version)
7949 });
7950 return libjq(tmpl).translate();
7951 }
7952 target.connectHandler = function () {
7953 if (target.connectStatus() == "ppp_connected") {
7954 showLoading('disconnecting');
7955 fnc.disconnect({}, function (data) {
7956 if (data.result) {
7957 successOverlay();
7958 } else {
7959 errorOverlay();
7960 }
7961 });
7962 } else {
7963 if (fnc.getStatusInfo().roamingStatus) {
7964 showConfirm('dial_roaming_connect', function () {
7965 target.connect();
7966 });
7967 } else {
7968 target.connect();
7969 }
7970 }
7971 };
7972 target.connect = function () {
7973 var statusInfo = fnc.getStatusInfo();
7974 var trafficResult = barStat.getTrafficResult(statusInfo);
7975 if (statusInfo.limitVolumeEnable && trafficResult.showConfirm) {
7976 var confirmMsg = null;
7977 if (trafficResult.usedPercent > 100) {
7978 confirmMsg = {
7979 msg: 'traffic_beyond_connect_msg'
7980 };
7981 barStat.setTrafficAlertPopuped(true);
7982 } else {
7983 confirmMsg = {
7984 msg: 'traffic_limit_connect_msg',
7985 params: [trafficResult.limitPercent]
7986 };
7987 barStat.setTrafficAlert100Popuped(false);
7988 }
7989 showConfirm(confirmMsg, function () {
7990 homeUtil.doConnect();
7991 });
7992 } else {
7993 homeUtil.doConnect();
7994 }
7995 };
7996 fnc.getSignalStrength({}, function (data) {
7997 var signalTxt = signalFormat(convertSignal(data));
7998 libjq("#fresh_signal_strength").text(signalTxt);
7999 if (popoverShown) {
8000 libjq("#popoverSignalTxt").text(signalTxt);
8001 }
8002 });
8003 homeUtil.refreshHomeData(target);
8004 addInterval(function () {
8005 fnc.getSignalStrength({}, function (data) {
8006 var signalTxt = signalFormat(convertSignal(data));
8007 libjq("#fresh_signal_strength").text(signalTxt);
8008 if (popoverShown) {
8009 libjq("#popoverSignalTxt").text(signalTxt);
8010 }
8011 });
8012 homeUtil.refreshHomeData(target);
8013 }, 1000);
8014 if (target.hasRj45) {
8015 homeUtil.refreshOpmodeInfo(target);
8016 addInterval(function () {
8017 homeUtil.refreshOpmodeInfo(target);
8018 }, 1000);
8019 }
8020 target.showNetworkSettingsWindow = function () {
8021 if (target.hasRj45) {
8022 fnc.getOpMode({}, function (data) {
8023 var mode = checkCableMode(data.blc_wan_mode);
8024 if (mode) {
8025 window.location.hash = '#network_set';
8026 } else {
8027 window.location.hash = '#conn_set';
8028 }
8029 });
8030 } else {
8031 window.location.hash = '#conn_set';
8032 }
8033 }
8034 };
8035 return {
8036 init: init
8037 };
8038});
8039
8040
8041define("language","knockout service jquery set underscore".split(" "),
8042 function(ko, service, $, config, _) {
8043
mj.qu19ac6692024-08-21 19:18:36 -07008044 // ��ȡ��ǰ������
zw.wangcfae4372024-08-12 16:41:12 +08008045 function getCurrentLanguage() {
8046 return service.getLanguage();
8047 }
8048
mj.qu19ac6692024-08-21 19:18:36 -07008049 // ��������������������Դ������ҳ���ϵ�body����
8050 // @param {String} current ������:zh-cn
zw.wangcfae4372024-08-12 16:41:12 +08008051 function loadLanguageAndRefresh(current){
8052 window.CURRENT_LANGUAGE = current;
8053 $("body").attr('lang', current);
8054 $.i18n.properties({
8055 name:'Messages',
8056 path:'i18n/',
8057 mode:'map',
8058 cache: true,
8059 language:current,
8060 callback: function() {
8061 jQuery.validator.messages = $.i18n.map;
8062 $('body').translate();
8063 }
8064 });
8065 }
mj.qu19ac6692024-08-21 19:18:36 -07008066
zw.wangcfae4372024-08-12 16:41:12 +08008067 window.language = null;
mj.qu19ac6692024-08-21 19:18:36 -07008068
zw.wangcfae4372024-08-12 16:41:12 +08008069
8070 function LanguageViewModel() {
8071 var target = this;
8072 var currentLan = getCurrentLanguage();
8073 var languages = _.map(config.LANGUAGES, function(item) {
8074 return new Option(item.name, item.value);
8075 });
8076
8077 document.title = config.WEBUI_TITLE;
8078 if($('#webui_title')[0]) {
8079 $('#webui_title').html(config.WEBUI_TITLE);
8080 }
8081
8082 target.languages = ko.observableArray(languages);
8083 target.currentLan = ko.observable(currentLan.Language);
8084 window.language = target.currentLan();
8085
mj.qu19ac6692024-08-21 19:18:36 -07008086 // �л������¼�����
zw.wangcfae4372024-08-12 16:41:12 +08008087 // @event langChangeHandler
8088 target.langChangeHandler = function(info, event) {
8089 clearValidateMsg();
8090
8091 service.setLanguage({Language: target.currentLan()}, function() {
8092 loadLanguageAndRefresh(target.currentLan());
8093 window.language = target.currentLan();
8094 });
8095 };
8096
mj.qu19ac6692024-08-21 19:18:36 -07008097 // ���������б���ˢ�½���
zw.wangcfae4372024-08-12 16:41:12 +08008098 loadLanguageAndRefresh(target.currentLan());
8099 }
8100
mj.qu19ac6692024-08-21 19:18:36 -07008101 // ��ʼ������VM������
zw.wangcfae4372024-08-12 16:41:12 +08008102 function init() {
8103 ko.applyBindings(new LanguageViewModel(), $('#language')[0]);
8104 }
8105
8106 return {
8107 init: init
8108 };
8109});
8110
8111
mj.qu19ac6692024-08-21 19:18:36 -07008112// ��½ ģ��
zw.wangcfae4372024-08-12 16:41:12 +08008113define("entry","jquery knockout set service underscore menu logout CryptoJS".split(" "),
8114 function($, ko,config, service, _, menu, logout, CryptoJS) {
mj.qu19ac6692024-08-21 19:18:36 -07008115
zw.wangcfae4372024-08-12 16:41:12 +08008116
8117 var pageState = {LOGIN:0, WAIT_PIN:1, WAIT_PUK:2, PUK_LOCKED:3, LOGGEDIN:4, LOADING:5};
8118 var timer = loginStatusCheckingTimer();
8119 var loginLockTimer = 0;
8120 var lastLoginStatus = "0";
mj.qu19ac6692024-08-21 19:18:36 -07008121
zw.wangcfae4372024-08-12 16:41:12 +08008122 function loginViewModel() {
8123 var target = this;
8124 var data = service.getLoginData();
8125 var loginStatus = service.getLoginStatus();
8126
8127 target.confirmPIN = ko.observable();
8128 target.leftSeconds = ko.observable(0);
8129 target.loginCount = ko.observable(0);
8130 target.loginSecuritySupport = ko.observable(config.LOGIN_SECURITY_SUPPORT);
8131 target.newPIN = ko.observable();
8132 target.password = ko.observable();
8133 target.PIN = ko.observable();
8134 target.pinNumber = ko.observable(data.pinnumber);
8135 target.PUK = ko.observable();
8136 target.pukNumber = ko.observable(data.puknumber);
8137 target.showEntrance = ko.observable(false);
8138 target.sharePathInvalid = ko.observable(false);
8139 target.uiLoginTimer = ko.observable(300);
8140
mj.qu19ac6692024-08-21 19:18:36 -07008141 // ע��˳�򣬵���ǰ�����޷�ˢ�³�����
zw.wangcfae4372024-08-12 16:41:12 +08008142 target.accountLocked = ko.computed(function () {
8143 return target.loginCount() == config.MAX_LOGIN_COUNT && target.leftSeconds() != '-1';
8144 });
mj.qu19ac6692024-08-21 19:18:36 -07008145
zw.wangcfae4372024-08-12 16:41:12 +08008146 target.leftUnlockTime = ko.computed(function () {
8147 target.leftSeconds();
8148 var formatted = transSecond2Time(target.uiLoginTimer());
8149 return formatted.substring(formatted.indexOf(':') + 1, formatted.length);
8150 });
8151
8152
8153 if(config.SD_CARD_SUPPORT){
8154 service.getSDConfiguration({}, function (data) {
8155 target.showEntrance(data.sd_status == "1" && data.share_status == "1" && data.sd_mode == "0");
8156 if(target.showEntrance()){
8157 service.checkFileExists({
8158 path: data.share_file
8159 }, function (data1) {
8160 if (data1.status == 'exist' || data1.status == 'processing') {
8161 target.sharePathInvalid(false);
8162 } else {
8163 target.sharePathInvalid(true);
8164 }
8165 });
8166 }
8167 });
8168 }
8169
8170 var state = computePageState(loginStatus, data);
8171 target.pageState = ko.observable(state);
8172 if (state == pageState.LOADING) {
8173 addTimeout(refreshPage, 500);
8174 }
8175 setFocus();
8176
mj.qu19ac6692024-08-21 19:18:36 -07008177
8178 // login �¼�����
8179
zw.wangcfae4372024-08-12 16:41:12 +08008180 target.login = function () {
8181 if(config.LOGIN_SECURITY_SUPPORT && target.accountLocked()){
8182 showAlert("password_error_account_lock_time", function () {
8183 setFocus();
8184 });
8185 return false;
8186 }
8187 target.pageState(pageState.LOADING);
8188 window.clearInterval(timer);
8189 var ciphertext = "";
8190 if (config.PASSWORD_ENCODE) {
8191 ciphertext = target.password();
8192 } else {
8193 var kparam = service.getDeviceInfoLow();
8194 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
8195 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
8196 ciphertext = CryptoJS.AES.encrypt(target.password(), tkey, {
8197 iv: tiv,
8198 mode: CryptoJS.mode.CBC,
8199 padding: CryptoJS.pad.ZeroPadding
8200 }).toString();
8201 }
8202 service.login({
8203 password:ciphertext
8204 }, function (info) {
8205 setTimeout(function () {
8206 timer = loginStatusCheckingTimer();
8207 }, 1300);
8208 if (info.result) {
8209 target.pageState(pageState.LOGGEDIN);
8210 if(config.LOGIN_SECURITY_SUPPORT){
8211 target.loginCount(0);
8212 target.uiLoginTimer(300);
8213 clearInterval(loginLockTimer);
8214 }
8215 $("#container").empty();
8216 window.location.hash = "#main";
8217 logout.init();
8218 } else {
8219 target.password("");
8220 if(config.LOGIN_SECURITY_SUPPORT){
8221 target.checkLoginData(function(){
8222 if (target.loginCount() == config.MAX_LOGIN_COUNT) {
8223 showAlert("password_error_five_times", function () {
8224 setFocus();
8225 });
8226 target.startLoginLockInterval();
8227 } else {
8228 showAlert({msg: 'password_error_left', params: [config.MAX_LOGIN_COUNT - target.loginCount()]}, function () {
8229 setFocus();
8230 });
8231 }
8232 });
8233 }else {
8234 showAlert("password_error", function () {
8235 setFocus();
8236 });
8237 }
8238 target.pageState(pageState.LOGIN);
8239 }
8240 });
8241 };
8242
zw.wangcfae4372024-08-12 16:41:12 +08008243
mj.qu19ac6692024-08-21 19:18:36 -07008244
8245
8246 // ��ȡ��¼������Ϣ
zw.wangcfae4372024-08-12 16:41:12 +08008247 target.checkLoginData = function(cb){
8248 service.getLoginData({}, function(r){
8249 var failTimes = parseInt(r.psw_fail_num_str, 10);
8250 target.loginCount(config.MAX_LOGIN_COUNT - failTimes);
8251 target.leftSeconds(r.login_lock_time);
8252 target.uiLoginTimer(r.login_lock_time);
8253 if($.isFunction(cb)){
8254 cb();
8255 } else if (target.loginCount() == config.MAX_LOGIN_COUNT) {
8256 target.startLoginLockInterval();
8257 }
8258 });
8259 };
mj.qu19ac6692024-08-21 19:18:36 -07008260
8261 // ��������ʱ��ʱ����
zw.wangcfae4372024-08-12 16:41:12 +08008262 target.startLoginLockInterval = function () {
8263 loginLockTimer = setInterval(function () {
8264 service.getLoginData({}, function (data) {
8265 if (data.login_lock_time <= 0 || data.psw_fail_num_str == 5) {
8266 target.loginCount(0);
8267 clearInterval(loginLockTimer);
8268 }
8269 if(target.leftSeconds() != data.login_lock_time){
8270 target.leftSeconds(data.login_lock_time);
8271 target.uiLoginTimer(data.login_lock_time);
8272 } else {
8273 target.uiLoginTimer(target.uiLoginTimer() > 0 ? target.uiLoginTimer() - 1 : 0);
8274 }
8275 });
8276 }, 1000);
8277 };
8278
8279 target.checkLoginData();
8280
8281
mj.qu19ac6692024-08-21 19:18:36 -07008282
8283 // ��֤����PIN�¼�����
zw.wangcfae4372024-08-12 16:41:12 +08008284 target.enterPIN = function () {
8285 target.pageState(pageState.LOADING);
8286 var pin = target.PIN();
8287 service.enterPIN({
8288 PinNumber:pin
8289 }, function (data) {
8290 if (!data.result) {
8291 showAlert("pin_error", function () {
8292 refreshPage();
8293 });
8294 target.PIN('');
8295 } else {
8296 refreshPage();
8297 }
8298 });
8299 };
8300
8301 function setFocus(){
8302 setTimeout(function () {
8303 var txtAdmin = $('#txtAdmin:visible');
8304 var txtPIN = $('#txtPIN:visible');
8305 var txtPUK = $('#txtPUK:visible');
8306 if (txtAdmin.length > 0) {
8307 txtAdmin.focus();
8308 } else if (txtPIN.length > 0) {
8309 txtPIN.focus();
8310 } else if (txtPUK.length > 0) {
8311 txtPUK.focus();
8312 }
8313 }, 100);
8314 }
8315
mj.qu19ac6692024-08-21 19:18:36 -07008316
8317 // ˢ��ҳ��״̬
zw.wangcfae4372024-08-12 16:41:12 +08008318 function refreshPage() {
8319 var data = service.getLoginData();
8320 var loginStatus = service.getLoginStatus();
8321 var state = computePageState(loginStatus, data);
8322 if (state == pageState.LOADING) {
8323 addTimeout(refreshPage, 500);
8324 } else {
8325 target.pageState(state);
8326 target.pinNumber(data.pinnumber);
8327 target.pukNumber(data.puknumber);
8328 }
8329 setFocus();
8330 }
8331
mj.qu19ac6692024-08-21 19:18:36 -07008332 // ����PUK������PIN�¼�����
zw.wangcfae4372024-08-12 16:41:12 +08008333 target.enterPUK = function () {
8334 target.pageState(pageState.LOADING);
8335 var newPIN = target.newPIN();
8336 var confirmPIN = target.confirmPIN();
8337 var params = {};
8338 params.PinNumber = newPIN;
8339 params.PUKNumber = target.PUK();
8340 service.enterPUK(params, function (data) {
8341 if (!data.result) {
8342 showAlert("puk_error", function () {
8343 refreshPage();
8344 });
8345 target.PUK('');
8346 target.newPIN('');
8347 target.confirmPIN('');
8348 } else {
8349 refreshPage();
8350 }
8351 });
8352 };
8353
8354
8355
mj.qu19ac6692024-08-21 19:18:36 -07008356 // ���ݵ�¼״̬��SIM��״̬����ҳ��״̬
zw.wangcfae4372024-08-12 16:41:12 +08008357 function checkPinAfterLogin(loginStatus, data) {
8358 if (loginStatus.status == "loggedIn") {
8359 var currentState = data.modem_main_state; // cov_2
8360 if (currentState == "modem_waitpin") {
8361 return pageState.WAIT_PIN;
8362 } else if ((currentState == "modem_waitpuk" || data.pinnumber == 0) && (data.puknumber != 0)) {
8363 return pageState.WAIT_PUK;
8364 } else if ((data.puknumber == 0 || currentState == "modem_sim_destroy")
8365 && currentState != "modem_sim_undetected" && currentState != "modem_undetected") {
8366 return pageState.PUK_LOCKED;
8367 } else {
8368 return pageState.LOGGEDIN;
8369 }
8370 } else {
8371 var currentState = data.modem_main_state;
8372 if ($.inArray(currentState, config.TEMPORARY_MODEM_MAIN_STATE) != -1) {
8373 return pageState.LOADING;
8374 } else {
8375 return pageState.LOGIN;
8376 }
8377 }
8378 }
mj.qu19ac6692024-08-21 19:18:36 -07008379
8380 // ���ݵ�¼״̬��SIM��״̬����ҳ��״̬
zw.wangcfae4372024-08-12 16:41:12 +08008381 function computePageState(loginStatus, data) {
mj.qu19ac6692024-08-21 19:18:36 -07008382 //PX-880 �ȵ�¼�ٽ���PIN��֤������router����ԭ�򣬵�¼����PIN��֤���ڵ�¼ҳ�����У������ݿ�����֤����һ�¡�
zw.wangcfae4372024-08-12 16:41:12 +08008383 if (config.LOGIN_THEN_CHECK_PIN) {
8384 return checkPinAfterLogin(loginStatus, data);
8385 } else {
8386 return loginAfterCheckPin(loginStatus, data);
8387 }
8388 }
mj.qu19ac6692024-08-21 19:18:36 -07008389
8390 // ���ݵ�¼״̬��SIM��״̬����ҳ��״̬
zw.wangcfae4372024-08-12 16:41:12 +08008391 function loginAfterCheckPin(loginStatus, data) {
8392 if (loginStatus.status == "loggedIn") {
8393 return pageState.LOGGEDIN;
8394 } else {
8395 var currentState = data.modem_main_state;
8396 if ($.inArray(currentState, config.TEMPORARY_MODEM_MAIN_STATE) != -1) {
8397 return pageState.LOADING;
8398 } else if (currentState == "modem_waitpin") {
8399 return pageState.WAIT_PIN;
8400 } else if ((currentState == "modem_waitpuk" || parseInt(data.pinnumber) === 0) && (parseInt(data.puknumber) != 0)) {
8401 return pageState.WAIT_PUK;
8402 } else if ((parseInt(data.puknumber) === 0 || currentState == "modem_sim_destroy") && currentState != "modem_sim_undetected" && currentState != "modem_undetected") {
8403 return pageState.PUK_LOCKED;
8404 } else {
8405 return pageState.LOGIN;
8406 }
8407 }
8408 }
8409 }
mj.qu19ac6692024-08-21 19:18:36 -07008410
8411
8412 // ���鵱ǰwindow.location.hash���쳣����ת��index.html
zw.wangcfae4372024-08-12 16:41:12 +08008413 function gotoLogin() {
8414 if (window.location.hash != config.defaultRoute && _.indexOf(config.GUEST_HASH, window.location.hash) == -1) {
8415 if (!manualLogout && lastLoginStatus == "1") {
8416 manualLogout = false;
8417 lastLoginStatus = 'UNREAL';
8418 showAlert('need_login_again', function () {
8419 window.location = "index.html";
8420 });
8421 } else if (lastLoginStatus == 'UNREAL') {
8422 //do nothing, only popup need_login_again alert one time
8423 return;
8424 } else {
8425 window.location = "index.html";
8426 }
8427 }
8428 }
mj.qu19ac6692024-08-21 19:18:36 -07008429
8430 // ��ʱ������¼״̬
zw.wangcfae4372024-08-12 16:41:12 +08008431 function loginStatusCheckingTimer() {
8432 return setInterval(function () {
8433 var info = service.getStatusInfo();
8434 if (!info.isLoggedIn) {
8435 gotoLogin();
8436 return;
8437 }
8438 lastLoginStatus = service.getStatusInfo().isLoggedIn ? "1" : "0";
8439 }, 1000);
8440 }
mj.qu19ac6692024-08-21 19:18:36 -07008441
zw.wangcfae4372024-08-12 16:41:12 +08008442 function init() {
8443 var info = service.getStatusInfo();
8444 if (info.isLoggedIn) {
8445 window.location.hash = '#main';
8446 return;
8447 }
8448
8449 var container = $('#container')[0];
8450 ko.cleanNode(container);
8451 var fwVm = new loginViewModel();
8452 ko.applyBindings(fwVm, container);
8453
8454 $('#frmLogin').validate({
8455 submitHandler:function () {
8456 fwVm.login();
8457 },
8458 rules: {
8459 txtAdmin: 'login_password_length_check'
8460 }
8461 });
8462 $('#frmPIN').validate({
8463 submitHandler:function () {
8464 fwVm.enterPIN();
8465 },
8466 rules:{
8467 txtPIN:"pin_check"
8468 }
8469 });
8470 $('#frmPUK').validate({
8471 submitHandler:function () {
8472 fwVm.enterPUK();
8473 },
8474 rules:{
8475 txtNewPIN:"pin_check",
8476 txtConfirmPIN:{equalToPin:"#txtNewPIN"},
8477 txtPUK:"puk_check"
8478 }
8479 });
8480 }
mj.qu19ac6692024-08-21 19:18:36 -07008481
8482
zw.wangcfae4372024-08-12 16:41:12 +08008483 return {
8484 init:init,
8485 gotoLogin:gotoLogin
8486 };
8487 });
zw.wangcfae4372024-08-12 16:41:12 +08008488
mj.qu19ac6692024-08-21 19:18:36 -07008489
8490// Logout �
zw.wangcfae4372024-08-12 16:41:12 +08008491define("logout","set service knockout underscore jquery".split(" "),
8492 function (config, service, ko, _, $) {
8493
8494 function logoutViewModel() {
8495 var target = this;
mj.qu19ac6692024-08-21 19:18:36 -07008496 // ��ȡ�Ƿ���¼
zw.wangcfae4372024-08-12 16:41:12 +08008497 var loginFlag = function () {
8498 var loginInfo = service.getLoginStatus();
8499 return (loginInfo.status == "loggedIn");
8500 }
8501 ();
8502 target.loggedIn = ko.observable(loginFlag);
8503
mj.qu19ac6692024-08-21 19:18:36 -07008504 // �˳�ϵͳ
zw.wangcfae4372024-08-12 16:41:12 +08008505 target.logout = function () {
8506 showConfirm("confirm_logout", function () {
8507 manualLogout = true;
8508 service.logout({}, setLocation());
8509 });
8510 };
8511
mj.qu19ac6692024-08-21 19:18:36 -07008512 // �Ƿ���ʾ�˳���ť
zw.wangcfae4372024-08-12 16:41:12 +08008513 target.showLogout = function () {
8514 if (config.HAS_LOGIN) {
8515 return target.loggedIn();
8516 } else {
8517 return false;
8518 }
8519 };
8520 }
8521 function setLocation() {
8522 window.location = 'index.html';
8523 }
8524 function initialize() {
8525 var fwVm = new logoutViewModel();
8526 bindContainer(fwVm);
8527 }
8528 function bindContainer(fwVm) {
8529 var con = $('#logout')[0];
8530 ko.cleanNode(con);
8531 ko.applyBindings(fwVm, con);
8532 }
8533 return {
8534 init: initialize
8535 };
8536});
8537
mj.qu19ac6692024-08-21 19:18:36 -07008538// operation mode �
zw.wangcfae4372024-08-12 16:41:12 +08008539define("opmode","knockout service jquery set underscore".split(" "),
8540
8541 function (ko, service, $, config, _) {
8542
8543 function currentOperationModeViewMode(){
8544 var target = this;
8545 target.isLoggedIn = ko.observable(false);
8546 target.enableFlag = ko.observable(false);
8547
8548 target.showOpModeWindow = function () {
8549 showSettingWindow("change_mode", "opmode_popup", "opmode_popup", 400, 300, function () {
8550 });
8551 };
8552 target.currentOpMode = ko.observable("0");
mj.qu19ac6692024-08-21 19:18:36 -07008553
zw.wangcfae4372024-08-12 16:41:12 +08008554 service.getOpMode({}, function(info){
8555 target.isLoggedIn(info.loginfo == "ok");
8556 if (info.opms_wan_mode != "PPP" && info.rj45_state != "idle" && info.rj45_state != "dead") {
8557 target.enableFlag(false);
8558 } else if (info.opms_wan_mode == "PPP" && info.ppp_status != "ppp_disconnected") {
8559 target.enableFlag(false);
8560 } else if(info.opms_wan_mode == "DHCP"){
8561 target.enableFlag(true);
8562 } else {
8563 target.enableFlag(true);
8564 }
mj.qu19ac6692024-08-21 19:18:36 -07008565
zw.wangcfae4372024-08-12 16:41:12 +08008566 var opmsWanMode = (info.opms_wan_mode == "DHCP" || info.opms_wan_mode == "STATIC") ? "PPPOE" : info.opms_wan_mode;
mj.qu19ac6692024-08-21 19:18:36 -07008567
zw.wangcfae4372024-08-12 16:41:12 +08008568 var currentOperationMode = "";
8569 switch(opmsWanMode){
8570 case "BRIDGE":
8571 currentOperationMode = "opmode_bridge";
8572 break;
8573 case "PPP":
8574 currentOperationMode = "opmode_gateway";
8575 break;
8576 case "PPPOE":
8577 currentOperationMode = "opmode_cable";
8578 break;
8579 default:
8580 break;
8581 }
8582 $("#opmode").attr("data-trans", currentOperationMode).text($.i18n.prop(currentOperationMode));
8583 });
mj.qu19ac6692024-08-21 19:18:36 -07008584 // ��ʱ��ѯ����ģʽ����״̬�����ý���״̬
zw.wangcfae4372024-08-12 16:41:12 +08008585 setInterval(function(){
8586 var object = service.getConnectionInfo();
8587 if(object.opms_wan_mode == "DHCP") {
8588 target.enableFlag(true);
8589 } else if((object.opms_wan_mode == "PPP" && object.ppp_status != "ppp_disconnected") || (object.opms_wan_mode != "PPP" && object.rj45_state != "idle" && object.rj45_state != "dead")) {
8590 target.enableFlag(false);
8591 } else {
8592 target.enableFlag(true);
8593 }
8594 }, 1000);
8595 }
8596
8597 function init() {
8598 var container = $('#currentOpMode')[0];
8599 ko.cleanNode(container);
8600 var fwVm = new currentOperationModeViewMode();
8601 ko.applyBindings(fwVm, container);
8602 }
8603
8604 return {
8605 init:init
8606 };
8607});
8608
mj.qu19ac6692024-08-21 19:18:36 -07008609// operation mode popup�
zw.wangcfae4372024-08-12 16:41:12 +08008610
8611define("opmode_popup","knockout service jquery set underscore".split(" "),
8612
8613 function (ko, service, $, config, _) {
mj.qu19ac6692024-08-21 19:18:36 -07008614
zw.wangcfae4372024-08-12 16:41:12 +08008615 function operationModeViewMode() {
8616 var target = this;
8617 var currentSelectedOperationMode = "";
8618 target.selectedMode = ko.observable("0");
mj.qu19ac6692024-08-21 19:18:36 -07008619
8620 // ��ʼ������ģʽ��ʾ
zw.wangcfae4372024-08-12 16:41:12 +08008621 service.getOpMode({}, function(info){
8622 if(info.blc_wan_mode == "AUTO_PPP"){
8623 currentSelectedOperationMode = "AUTO";
8624 }else if(info.blc_wan_mode == "AUTO_PPPOE"){
8625 currentSelectedOperationMode = "AUTO";
8626 }else if(info.blc_wan_mode == "PPPOE"){
8627 currentSelectedOperationMode = "PPPOE";
8628 }else{
8629 currentSelectedOperationMode = info.blc_wan_mode;
8630 }
8631 target.selectedMode(currentSelectedOperationMode);
8632 });
mj.qu19ac6692024-08-21 19:18:36 -07008633
8634 // ģʽ����/�л�
zw.wangcfae4372024-08-12 16:41:12 +08008635 target.changeOpMode = function(){
8636 var userSelectedOperationMode = $('input:radio[name="opMode"]:checked').val();
8637 var messageText = "";
8638 if(userSelectedOperationMode == currentSelectedOperationMode) {
8639 hidePopupSettingWindow();
8640 return;
8641 }
8642 if(userSelectedOperationMode == "LTE_BRIDGE"){
8643 messageText = "opmode_msg3";
8644 }else{
8645 messageText = "opmode_msg2";
8646 }
8647 showConfirm(messageText, function(){
8648 showLoading();
8649 service.SetOperationMode({
8650 opMode: userSelectedOperationMode
8651 },function(info){
8652 if (info && info.result == "success") {
8653 var currentOperationMode = "";
8654 switch(userSelectedOperationMode){
8655 case "AUTO":
8656 currentOperationMode = "opmode_auto"
8657 break;
8658 case "PPP":
8659 currentOperationMode = "opmode_gateway";
8660 break;
8661 case "PPPOE":
8662 currentOperationMode = "opmode_cable";
8663 break;
8664 default:
8665 break;
8666 }
8667 $("#opmode").attr("data-trans", currentOperationMode).text($.i18n.prop(currentOperationMode));
8668 successOverlay();
8669 } else {
8670 errorOverlay();
8671 }
8672 });
8673 });
mj.qu19ac6692024-08-21 19:18:36 -07008674
zw.wangcfae4372024-08-12 16:41:12 +08008675 }
mj.qu19ac6692024-08-21 19:18:36 -07008676
zw.wangcfae4372024-08-12 16:41:12 +08008677 }
8678
8679 function init() {
8680 var fwVm = new operationModeViewMode();
8681 ko.applyBindings(fwVm, $('#popupSettingWindow')[0]);
mj.qu19ac6692024-08-21 19:18:36 -07008682
zw.wangcfae4372024-08-12 16:41:12 +08008683 $("#opmode_form").validate({
8684 submitHandler: function(){
8685 fwVm.changeOpMode();
8686 }
8687 });
8688 }
8689
8690 return {
8691 init:init
8692 };
8693});
8694
8695define("router","underscore jquery menu set service".split(" "),
8696 function (_, $, menu, config, service) {
8697 var currentHash = '';
8698 var container = $('#container');
8699
mj.qu19ac6692024-08-21 19:18:36 -07008700 //�뿪����ʱ�����Ƿ��������޸ģ�����������ʾ
zw.wangcfae4372024-08-12 16:41:12 +08008701 checkFormContentModify = function (href) {
8702 if (config.CONTENT_MODIFIED.modified && window.location.hash != href) {
8703 if (config.CONTENT_MODIFIED.message == 'sms_to_save_draft') {
8704 config.CONTENT_MODIFIED.callback.ok(config.CONTENT_MODIFIED.data);
8705 config.resetContentModifyValue();
8706 window.location.hash = href;
8707 } else {
8708 showConfirm(config.CONTENT_MODIFIED.message, {
8709 ok: function () {
8710 config.CONTENT_MODIFIED.callback.ok(config.CONTENT_MODIFIED.data);
8711 config.resetContentModifyValue();
8712 window.location.hash = href;
8713 },
8714 no: function () {
8715 var result = config.CONTENT_MODIFIED.callback.no(config.CONTENT_MODIFIED.data);
8716 if (!result) {
8717 window.location.hash = href;
8718 config.resetContentModifyValue();
8719 }
8720 }
8721 });
8722 }
8723 return false;
8724 } else {
8725 return true;
8726 }
8727 };
8728
mj.qu19ac6692024-08-21 19:18:36 -07008729 //��ʱ�鿴SIM����״̬������ǰSIM��״̬��Ϊ����״̬��δ��ʾnosimcardҳ�棬����ʾnosimcardҳ��,�Ա��ⲻ�ر�webui�����²����豸�󣬲����ж�SIM��״̬������
zw.wangcfae4372024-08-12 16:41:12 +08008730 function checkSimCardStatus() {
8731 setInterval(function () {
8732 var data = service.getStatusInfo();
8733 var match = menu.findMenu();
8734 if (match.length == 0) {
8735 return false;
8736 }
8737 var requirePinHash = ["phonebook", "sms_list"];
8738 var isRequirePin = ($.inArray(match[0].path, requirePinHash) != -1);
8739 if (match[0].checkSIMStatus === true) {
8740 var simstatus = data.simStatus == "modem_sim_undetected"
8741 || data.simStatus == "modem_sim_destroy" || data.simStatus == "modem_waitpin"
8742 || data.simStatus == "modem_waitpuk";
8743 var netlockstatus = data.simStatus == "modem_imsi_waitnck";
8744 if (data.isLoggedIn && (
8745 ($('#div-nosimcard')[0] == undefined && simstatus)
8746 || ($('#div-network-lock')[0] == undefined && netlockstatus)
8747 || (($('#div-nosimcard')[0] != undefined || $('#div-network-lock')[0] != undefined) && data.simStatus == "modem_init_complete"))) {
8748 fixedLoadResources(match[0], data.simStatus, isRequirePin);
8749 }
8750 }
8751 }, 1000);
8752 }
8753
mj.qu19ac6692024-08-21 19:18:36 -07008754 //������¼ҳ�汳��
zw.wangcfae4372024-08-12 16:41:12 +08008755 function checkLoginPageBg() {
8756 var h = window.location.hash;
8757 if (h == '#entry' || _.indexOf(config.GUEST_HASH, h) != -1) {
8758 $("#manageContainer").attr("style", "margin-top:-36px;");
8759 } else {
8760 $("#manageContainer").attr("style", "margin-top:0px;");
8761 }
8762
8763 if (window.location.hash == '#entry') {
8764 $("#mainContainer").addClass('loginBackgroundBlue');
8765 } else {
8766 var mainContainer = $("#mainContainer");
8767 if (mainContainer.hasClass('loginBackgroundBlue')) {
8768 $("#container").css({
8769 margin: 0
8770 });
8771 mainContainer.removeClass('loginBackgroundBlue').height('auto');
8772 }
8773 }
8774 }
mj.qu19ac6692024-08-21 19:18:36 -07008775
zw.wangcfae4372024-08-12 16:41:12 +08008776 function fixedLoadResources(menuItem, simStatus, isRequirePin) {
8777 var item = {};
8778 $.extend(item, menuItem);
mj.qu19ac6692024-08-21 19:18:36 -07008779 //û��SIM��ʱ������homeҳ�治��������
8780 //���类��ʱ��homeҳ����ʾ����ҳ��
zw.wangcfae4372024-08-12 16:41:12 +08008781 if (simStatus == "modem_sim_undetected" || simStatus == "modem_sim_destroy") {
8782 if (!isRequirePin) {
8783 item.path = "sim_abnormal";
8784 }
8785 } else if (simStatus == "modem_waitpin" || simStatus == "modem_waitpuk") {
8786 item.path = "sim_abnormal";
8787 } else if (simStatus == "modem_imsi_waitnck") {
8788 item.path = "locknet";
8789 }
8790 //load tmpl and controller js
8791 loadResources(item);
8792 }
8793
mj.qu19ac6692024-08-21 19:18:36 -07008794 //���ݲ˵�����item���ض�Ӧ����Դ
zw.wangcfae4372024-08-12 16:41:12 +08008795 function loadResources(item) {
8796 var pId = item.path.replace(/\//g, '_');
8797 var $body = $('body').removeClass();
8798 if (pId != 'entry' && pId != 'main') {
8799 $body.addClass('beautiful_bg page_' + pId);
8800 } else {
8801 $body.addClass('page_' + pId);
8802 }
8803 clearTimer();
8804 hideLoading();
8805 var tmplPath = 'text!tmpl/' + item.path + '.html';
8806 //TODO: prevent first menu click cover the second menu content, need test with device
8807 require([tmplPath, item.path], function (tmpl, viewModel) {
8808 container.stop(true, true);
8809 container.hide();
8810 container.html(tmpl);
8811 viewModel.init();
8812 //support backward/forward
8813 menu.refreshMenu();
8814 $('#container').translate();
8815 menu.activeSubMenu();
8816
8817 $("form").attr("autocomplete", "off");
8818 container.fadeIn();
8819 });
8820 }
mj.qu19ac6692024-08-21 19:18:36 -07008821 //�ȶ�hash״̬, �����仯�������µ�hashƥ���˵�����,ƥ�䲻��ʱ��ת��homeҳ��, ƥ����ʱ��¼hashֵ����̬���ض�Ӧ����Դ�ļ�
zw.wangcfae4372024-08-12 16:41:12 +08008822 function hashCheck() {
8823 if (window.location.hash != currentHash) {
mj.qu19ac6692024-08-21 19:18:36 -07008824 //������½����������, ��½�û����ʷǵ�¼�û�ʱҳ�治��ת
zw.wangcfae4372024-08-12 16:41:12 +08008825 var info = service.getStatusInfo();
8826 if (window.location.hash == config.defaultRoute || _.indexOf(config.GUEST_HASH, window.location.hash) != -1) {
8827 if (info.isLoggedIn) {
8828 window.location.hash = currentHash == "" ? "#main" : currentHash;
8829 return;
8830 }
8831 }
8832
8833 var match = menu.findMenu();
8834
8835 if (match.length == 0) {
8836 window.location.hash = config.defaultRoute;
8837 } else {
mj.qu19ac6692024-08-21 19:18:36 -07008838 //��¼ʱ���鹤��ģʽ������ģʽ������������Ҫ����SIM��״̬�����¼���,����ģʽ�������治��Ҫ����SIM��״̬�����¼���
zw.wangcfae4372024-08-12 16:41:12 +08008839 if (config.RJ45_SUPPORT && window.location.hash == "#main") {
8840 if ((match[0].checkSIMStatus && checkCableMode(info.blc_wan_mode)) || (!match[0].checkSIMStatus && !checkCableMode(info.blc_wan_mode))) {
8841 window.location.reload();
8842 return;
8843 }
8844 }
mj.qu19ac6692024-08-21 19:18:36 -07008845 //TODO: �����˵�����Ӧ�����˵���һ����л�ʱ�����¼�������, ��TODO: click the same menu ʵ�ַ�ʽ����
zw.wangcfae4372024-08-12 16:41:12 +08008846 var oldMenu = menu.findMenu(currentHash);
8847 currentHash = match[0].hash;
8848 if (currentHash == "#entry") {
8849 $('#indexContainer').addClass('login-page-bg');
8850 menu.rebuild();
8851 } else {
8852 $('#indexContainer').removeClass('login-page-bg');
8853 }
8854
8855 if (oldMenu.length != 0 && match[0].path == oldMenu[0].path && match[0].level != oldMenu[0].level && match[0].level != '1' && oldMenu[0].level != '1') {
8856 return;
8857 }
8858
8859 checkLoginPageBg();
8860 var requirePinHash = ["phonebook", "sms_list"];
8861 var isRequirePin = ($.inArray(match[0].path, requirePinHash) != -1);
8862 if (match[0].checkSIMStatus === true || isRequirePin) {
8863 //simStatus is undefined when refreshing page
8864 if (info.simStatus == undefined) {
8865 showLoading('waiting');
8866 function checkSIM() {
8867 var data = service.getStatusInfo();
8868 if (data.simStatus == undefined || $.inArray(data.simStatus, config.TEMPORARY_MODEM_MAIN_STATE) != -1) {
8869 addTimeout(checkSIM, 500);
8870 } else {
8871 fixedLoadResources(match[0], data.simStatus, isRequirePin);
8872 hideLoading();
8873 }
8874 }
8875 checkSIM();
8876 } else {
8877 fixedLoadResources(match[0], info.simStatus, isRequirePin);
8878 }
8879 } else {
8880 loadResources(match[0]);
8881 }
8882 }
8883 }
8884 }
mj.qu19ac6692024-08-21 19:18:36 -07008885
8886 //Ĭ������ҳ��Ϊ#main, ��ʱ����hash״̬
zw.wangcfae4372024-08-12 16:41:12 +08008887 function init() {
8888 checkSimCardStatus();
8889 window.location.hash = window.location.hash || "#main";
8890 //if support onhashchange then use. If ie8 in ie7 mode, it doesn't trigger onhashchange.
8891 if (('onhashchange' in window) && ((typeof document.documentMode === 'undefined') || document.documentMode == 8)) {
8892 window.onhashchange = hashCheck;
8893 hashCheck();
8894 } else {
8895 setInterval(hashCheck, 200);
8896 }
8897
mj.qu19ac6692024-08-21 19:18:36 -07008898 //�����޸���ҳ������, �뿪ʱ������ʾ
zw.wangcfae4372024-08-12 16:41:12 +08008899 $("a[href^='#']").die('click').live('click', function () {
8900 var $this = $(this);
8901 config.CONTENT_MODIFIED.checkChangMethod();
8902 return checkFormContentModify($this.attr('href'));
8903 });
8904 }
mj.qu19ac6692024-08-21 19:18:36 -07008905
zw.wangcfae4372024-08-12 16:41:12 +08008906 return {
8907 init: init
8908 };
8909});
8910
mj.qu19ac6692024-08-21 19:18:36 -07008911// statusBar �
zw.wangcfae4372024-08-12 16:41:12 +08008912
8913define("statusBar", "knockout jquery underscore service set menu tooltip".split(" "),
8914
8915 function (ko, $, _, service, config, menu, tooltip) {
mj.qu19ac6692024-08-21 19:18:36 -07008916
zw.wangcfae4372024-08-12 16:41:12 +08008917 var sv__hasCheckedSMSCapacity = false;
8918 var sv__initSMSCompleted = false;
8919 var sv_newSMSMessageInDealing = false;
8920 var sv_fotaUpdateCancel = null;
8921 var sv_batteryCheckTimer = 0;
8922 var sv_dbMessageIds = [];
8923 var sv_fotaResultAlertPopuped = false;
8924 var sv_isFirstLoadNewMessage = true;
8925 var isLoggedIn = true;
8926 var sv_messagePopStack = {};
8927 var sv_newMessagePopTemplate = null;
8928 var sv_resetTrafficAlertPopuped = false;
8929 var sv_simMessageListTemplate = null;
8930 var sv_smsListTemplate = null;
8931 var sv_trafficAlertPopuped_100 = false;
8932 var sv_trafficAlertPopuped = false;
8933 var sv_timer = 0;
8934
mj.qu19ac6692024-08-21 19:18:36 -07008935 // ��ȡ״̬��Ϣ�������硢SIM��WIFI��
zw.wangcfae4372024-08-12 16:41:12 +08008936 var getCurrentStatusInfo = function () {
8937 return service.getStatusInfo();
8938 };
8939
8940 function statusViewModel() {
8941 var target = this;
8942 var info = getCurrentStatusInfo();
8943 var roamStatus = info.roamingStatus ? true : false;
8944 var $langLogoBar = $("#langLogoBar");
mj.qu19ac6692024-08-21 19:18:36 -07008945
8946
8947 // �������������¼�����
zw.wangcfae4372024-08-12 16:41:12 +08008948 function sf_connect() {
8949 showLoading("connecting");
8950 service.connect({}, function (data) {
8951 if (data.result) {
8952 refreshWifiConnectStatus(target, data.status);
8953 }
8954 successOverlay();
8955 }, function (data) {
8956 errorOverlay();
8957 });
8958 }
mj.qu19ac6692024-08-21 19:18:36 -07008959 // �Ͽ������¼�����
zw.wangcfae4372024-08-12 16:41:12 +08008960 function sf_disconnect() {
8961 showLoading("disconnecting");
8962 service.disconnect({}, function (data) {
8963 if (data.result) {
8964 refreshWifiConnectStatus(target, data.status);
8965 }
8966 successOverlay();
8967 }, function (data) {
8968 errorOverlay();
8969 });
8970 }
mj.qu19ac6692024-08-21 19:18:36 -07008971
zw.wangcfae4372024-08-12 16:41:12 +08008972 if(info.isLoggedIn){
8973 if(!$langLogoBar.hasClass("langborderBg")){
8974 $langLogoBar.addClass("langborderBg");
8975 }
8976 $("#statusBar:hidden").show();
8977 } else {
8978 if($langLogoBar.hasClass("langborderBg")){
8979 $langLogoBar.removeClass("langborderBg");
8980 }
8981 $("#statusBar:visible").hide();
8982 }
mj.qu19ac6692024-08-21 19:18:36 -07008983
8984
zw.wangcfae4372024-08-12 16:41:12 +08008985 //target.attachedDevices = ko.observable(info.attachedDevices);
8986 target.batteryLevel = ko.observable(info.batteryLevel + '%');
8987 target.batteryPers = ko.observable(sf_getBatteryLevelImage(info.batteryPers, info.batteryStatus));
8988 target.batteryStatus = ko.observable(info.batteryStatus);
8989 target.connectionCssClass = ko.observable("");
8990 target.connectStatus = ko.observable(info.connectStatus);
8991 target.connectStatusText = ko.observable();
8992 target.connectStatusTrans = ko.observable();
8993 target.hasWifi = ko.observable(config.HAS_WIFI);
8994 target.hasBattery = ko.observable(config.HAS_BATTERY);
8995 target.isLoggedIn = ko.observable(info.isLoggedIn);
8996 target.isShowConnectionIcon = ko.observable(false);
8997 target.isShowFotaNewversionIcon = ko.observable(info.new_version_state && info.fota_package_already_download != "yes" && !config.isShowFotaIcon);
8998 target.isShowRj45ConnectionIcon = ko.observable(false);
8999 target.networkOperator = ko.observable(sf_getNetWorkProvider(info.spn_b1_flag,info.spn_name_data,info.spn_b2_flag,info.networkOperator,roamStatus));
9000 target.networkType = ko.observable(getNetworkType(info.networkType));
9001 target.pinStatus = ko.observable(info.pinStatus);
9002 target.pinStatusText = ko.observable();
9003 target.rj45ConnectionCssClass = ko.observable("");
9004 target.roamingStatus = ko.observable(info.roamingStatus ? "R" : "");
9005 target.showAttachedDevices = ko.observable(info.wifiStatus);
9006 target.showSmsDeleteConfirm = ko.observable(false);
9007 target.smsUnreadCount = ko.observable(0);
9008 target.simStatus = ko.observable(sf_convertSimStatusToImage(info.simStatus));
9009 target.signalCssClass = ko.observable(sf_getSignalCssClass(info.signalImg, info.networkType, info.simStatus));
9010 target.updateType = ko.observable(service.getUpdateType().update_type);
9011 target.wifiStatusCssClass = ko.observable(sf_getWifiStatusCssClass(info.wifiStatus, info.wirelessDeviceNum));
9012 target.wifiStatusImg = ko.observable(sf_getWifiStatusImage(info.wifiStatus, info.wirelessDeviceNum));
mj.qu19ac6692024-08-21 19:18:36 -07009013
zw.wangcfae4372024-08-12 16:41:12 +08009014 sf_getConnectionCssClass(target, info.connectStatus, info.data_counter, info.connectWifiSSID, info.connectWifiStatus, info.rj45ConnectStatus);
mj.qu19ac6692024-08-21 19:18:36 -07009015
zw.wangcfae4372024-08-12 16:41:12 +08009016 target.connect = sf_connect;
9017 target.disconnect = sf_disconnect;
9018 }
mj.qu19ac6692024-08-21 19:18:36 -07009019
zw.wangcfae4372024-08-12 16:41:12 +08009020 function sf_gotoSmsList(){
9021 var s_href = '#msg_main';
9022 if(window.location.hash == '#msg_main'){
9023 s_href = '#msg_list';
9024 }
9025 config.CONTENT_MODIFIED.checkChangMethod();
9026 if(checkFormContentModify(s_href)){
9027 window.location.hash = s_href;
9028 }
9029 }
mj.qu19ac6692024-08-21 19:18:36 -07009030
zw.wangcfae4372024-08-12 16:41:12 +08009031 gotoSmsList = sf_gotoSmsList;
9032
9033 function sf_getNetWorkProvider(i_spnB1Flag, i_spnNameData, i_spnB2Flag, i_networkProvider, i_roamStatus) {
9034 if (i_spnNameData == "") {
9035 return i_networkProvider;
9036 } else {
9037 i_spnNameData = decodeMessage(i_spnNameData);
9038 if (i_spnB1Flag == "0" && i_spnB2Flag == "0") {
mj.qu19ac6692024-08-21 19:18:36 -07009039 if (i_roamStatus) {//����
zw.wangcfae4372024-08-12 16:41:12 +08009040 return i_spnNameData == i_networkProvider ? i_networkProvider : (i_spnNameData + ' ' + i_networkProvider);
mj.qu19ac6692024-08-21 19:18:36 -07009041 } else {//������
zw.wangcfae4372024-08-12 16:41:12 +08009042 return i_spnNameData;
9043 }
9044 }else if (i_spnB1Flag == "1" && i_spnB2Flag == "1") {
mj.qu19ac6692024-08-21 19:18:36 -07009045 if (i_roamStatus) {//����
zw.wangcfae4372024-08-12 16:41:12 +08009046 return i_networkProvider;
mj.qu19ac6692024-08-21 19:18:36 -07009047 } else {//������
zw.wangcfae4372024-08-12 16:41:12 +08009048 return i_spnNameData == i_networkProvider ? i_networkProvider : (i_spnNameData + ' ' + i_networkProvider);
9049 }
9050 } else if (i_spnB1Flag == "1") {
9051 return i_spnNameData == i_networkProvider ? i_networkProvider : (i_spnNameData + ' ' + i_networkProvider);
9052 } else if (i_spnB2Flag == "1") {
mj.qu19ac6692024-08-21 19:18:36 -07009053 if (i_roamStatus) {//����
zw.wangcfae4372024-08-12 16:41:12 +08009054 return i_networkProvider;
mj.qu19ac6692024-08-21 19:18:36 -07009055 } else {//������
zw.wangcfae4372024-08-12 16:41:12 +08009056 return i_spnNameData;
9057 }
9058 }
9059 return "";
9060 }
9061 }
mj.qu19ac6692024-08-21 19:18:36 -07009062
9063 // �����¶���Ϣ��ʾ����������������
zw.wangcfae4372024-08-12 16:41:12 +08009064 function sf_addNewMessage(i_message, i_isUpdate, i_type){
9065 config.smsMaxId = i_message.id;
9066 var now = $.now();
9067 sv_messagePopStack["m" + now] = now;
9068 var name = i_message.number;
9069 if(sv_isFirstLoadNewMessage && config.phonebook && config.phonebook.length == 0){
9070 sv_isFirstLoadNewMessage = false;
9071 if(config.HAS_PHONEBOOK){
9072 sf_getPhoneBooks();
9073 }else{
9074 config.phonebook = [];
9075 }
9076 }
9077 for(i in config.phonebook){
9078 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
9079 name = config.phonebook[i].pbm_name;
9080 break;
9081 }
9082 }
9083 var s_newMsg = {
9084 mark : "m" + now,
9085 name: name,
9086 title: $.i18n.prop("sms"),
9087 titleTrans: "sms",
9088 tag: i_message.tag,
9089 content : i_message.content,
9090 datetime : i_message.time
9091 };
9092 if(sv_newMessagePopTemplate == null){
9093 sv_newMessagePopTemplate = $.template("newMessagePopTmpl", $("#newMessagePopTmpl"));
9094 }
9095 $(".bubbleItem:not(.report)", "#buttom-bubble").remove();
9096 $.tmpl("newMessagePopTmpl", s_newMsg).appendTo("#buttom-bubble");
9097 if((window.location.hash == "#msg_main" || window.location.hash == "#msg_list") && i_type == "1"){
9098 //sf_dealChosenNumber(s_newMsg.name, i_message.number);
9099 var s_inChating = config.currentChatObject && config.currentChatObject == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH);
9100 var s_itemId = getLastNumber(i_message.number, config.SMS_MATCH_LENGTH);
9101 var item = $("#smslist-item-" + s_itemId);
9102 if(item && item.length > 0){
mj.qu19ac6692024-08-21 19:18:36 -07009103 // �Ѵ������ݣ��������ݵ���˳��
zw.wangcfae4372024-08-12 16:41:12 +08009104 for(var i = 0; config.listMsgs && i < config.listMsgs.length; i++){
9105 if(getLastNumber(config.listMsgs[i].number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
9106 config.listMsgs[i].id = i_message.id;
9107 config.listMsgs[i].latestId = i_message.id;
9108 config.listMsgs[i].latestSms = i_message.content;
9109 config.listMsgs[i].latestTime = i_message.time;
9110 if(!i_isUpdate){
9111 config.listMsgs[i].newCount++;
9112 config.listMsgs[i].totalCount++;
9113 }
9114 break;
9115 }
9116 }
9117 item.find(".smslist-item-checkbox p.checkbox").attr("id", i_message.id);
9118 item.find(".smslist-item-checkbox input:checkbox").val(i_message.id).attr("id", "checkbox" + i_message.id);
9119 if(!i_isUpdate){
9120 var s_itemCount = item.find(".smslist-item-total-count").text();
9121 s_itemCount = Number(s_itemCount.substring(1, s_itemCount.length - 1));
9122 item.find(".smslist-item-total-count").text("(" + (s_itemCount + 1) + ")");
9123 if(!config.currentChatObject || config.currentChatObject != getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
9124 var s_newNum = item.find(".smslist-item-new-count").removeClass("hide");
9125 if(s_newNum && s_newNum.text().length > 0){
9126 s_newNum.text(Number(s_newNum.text()) + 1);
9127 }else{
9128 s_newNum.text(1);
9129 }
9130 }
9131 }
9132 if(item.find(".smslist-item-draft-flag").length > 0){
9133 if (config.currentChatObject && config.currentChatObject == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)) {
9134 item.find(" td:nth-child(2)").removeClass("font-weight-bold");
9135 } else {
9136 item.find(" td:nth-child(2)").addClass("font-weight-bold");
9137 }
9138 }else{
9139 var msgContent = item.find(".smslist-item-msg").text(i_message.content);
9140 msgContent.closest('td').prop('title', i_message.content);
9141 item.find("span.clock-time").text(i_message.time);
9142 if (config.currentChatObject && config.currentChatObject == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)) {
9143 msgContent.closest('tr').removeClass("font-weight-bold");
9144 } else {
9145 msgContent.closest('tr').addClass("font-weight-bold");
9146 }
9147 }
9148 item.find(".smslist-item-repeat span").die().click(function() {
9149 forwardClickHandler(i_message.id);
9150 });
mj.qu19ac6692024-08-21 19:18:36 -07009151
zw.wangcfae4372024-08-12 16:41:12 +08009152 var s_tmpItem = item;
9153 item.hide().remove();
9154 $("#smslist-table").prepend(s_tmpItem.show());
9155 } else {
mj.qu19ac6692024-08-21 19:18:36 -07009156 // ���������б��в�������Ӧ����ϵ�˶�Ϣ��Ӧ�ڶ����б�����������
zw.wangcfae4372024-08-12 16:41:12 +08009157 var s_theName = "";
9158 if(config.phonebook && config.phonebook.length > 0) {
9159 for(i in config.phonebook){
9160 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
9161 s_theName = config.phonebook[i].pbm_name;
9162 break;
9163 }
9164 }
9165 }
9166 var s_theNewMessage = {
9167 id : i_message.id,
9168 name : s_theName,
9169 number : i_message.number,
9170 latestId :i_message.id,
9171 totalCount : 1,
9172 newCount : s_inChating ? 0 : 1,
9173 latestSms : i_message.content,
9174 latestTime : i_message.time,
9175 checked : false,
9176 hasDraft : false,
9177 itemId : getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)
9178 };
9179 if(sv_smsListTemplate == null){
9180 sv_smsListTemplate = $.template("smsTableTmpl", $("#smsTableTmpl"));
9181 }
9182 $.tmpl("smsTableTmpl", {data: [s_theNewMessage]}).prependTo("#smslist-table");
9183 }
9184 if(config.HAS_PHONEBOOK){
9185 $(".sms-add-contact-icon").removeClass("hide");
9186 }else{
9187 $(".sms-add-contact-icon").addClass("hide");
9188 }
9189 if(s_inChating){
9190 var talkItem = $("#talk-item-" + i_message.id, "#chatlist");
mj.qu19ac6692024-08-21 19:18:36 -07009191 if (talkItem && talkItem.length > 0) {// ���¼�����������
zw.wangcfae4372024-08-12 16:41:12 +08009192 $(".J_content pre", talkItem).html(dealContent(i_message.content));
9193 $(".time .smslist-item-time", talkItem).text(i_message.time);
9194 $(".smslist-item-repeat", talkItem).die().click(
9195 function() {
9196 forwardClickHandler(i_message.id);
9197 });
9198 $(".smslist-item-delete", talkItem).die().click(
9199 function() {
9200 deleteSingleItemClickHandler(i_message.id);
9201 });
mj.qu19ac6692024-08-21 19:18:36 -07009202 } else {// �����µĻظ�����
zw.wangcfae4372024-08-12 16:41:12 +08009203 $("#smsOtherTmpl").tmpl(i_message).appendTo("#chatlist");
9204 $(".clear-container", "#chatpanel").animate({
9205 scrollTop : $("#chatlist").height()
9206 });
9207 }
9208 if (!config.SMS_SET_READ_WHEN_COMPLETE) {
9209 service.setSmsRead({ids: [i_message.id]}, $.noop);
9210 } else if (config.SMS_SET_READ_WHEN_COMPLETE && i_message.receivedAll) {
9211 service.setSmsRead({ids: [i_message.id]}, $.noop);
9212 }
9213 }
9214 enableCheckbox($("#smslist-checkAll"));
9215 }
9216 if(window.location.hash == "#msg_sim" && i_type == "0"){
mj.qu19ac6692024-08-21 19:18:36 -07009217 // ���������б��в�������Ӧ����ϵ�˶�Ϣ��Ӧ�ڶ����б�����������
zw.wangcfae4372024-08-12 16:41:12 +08009218 var s_theName = "";
9219 if(config.phonebook && config.phonebook.length > 0) {
9220 for(i in config.phonebook){
9221 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
9222 s_theName = config.phonebook[i].pbm_name;
9223 break;
9224 }
9225 }
9226 }
9227 var s_theNewMessage = {
9228 id : i_message.id,
9229 name : s_theName,
9230 number : i_message.number,
9231 content : i_message.content,
9232 time : i_message.time,
9233 tag: i_message.tag,
9234 checked : false,
9235 itemId : getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)
9236 };
9237 if(i_isUpdate){
9238 var s_item = $(".simMsgList-item-class-" + s_theNewMessage.id);
9239 s_item.hide().remove();
9240 }
9241 if(sv_simMessageListTemplate == null){
9242 sv_simMessageListTemplate = $.template("ssimMessageListTemplate", $("#simMessageListTemplate"));
9243 }
9244 $.tmpl("simMessageListTemplate", {data: [s_theNewMessage]}).prependTo("#simMsgList_container");
9245 }
9246 }
mj.qu19ac6692024-08-21 19:18:36 -07009247
zw.wangcfae4372024-08-12 16:41:12 +08009248 function sf_checkBatteryStatusForFota(){
9249 var s_state = service.getCurrentUpgradeState();
9250 if(s_state.current_upgrade_state == 'low_battery'){
9251 showInfo('ota_low_battery');
9252 clearInterval(sv_batteryCheckTimer);
9253 }
9254 }
mj.qu19ac6692024-08-21 19:18:36 -07009255
9256 // ��SIM��״̬ת��Ϊ��Ӧ����������
zw.wangcfae4372024-08-12 16:41:12 +08009257 function sf_convertSimStatusToImage(i_status) {
9258 var s_image;
9259 switch (i_status) {
9260 case "modem_destroy":
9261 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_destroy");
9262 break;
9263 case "modem_imsi_waitnck":
9264 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_waitnck");
9265 break;
9266 case "modem_init_complete":
9267 s_image = "./pic/simcard_detected.png";//$.i18n.prop("sim_status_ready");
9268 break;
9269 case "modem_sim_destroy":
9270 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_destroy");
9271 break;
9272 case "modem_sim_undetected":
9273 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_undetected");
9274 break;
9275 case "modem_undetected":
9276 s_image = "./pic/simcard_undetected.png";
9277 break;
9278 case "modem_waitpin":
9279 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_waitpin");
9280 break;
9281 case "modem_waitpuk":
9282 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_waitpuk");
9283 break;
9284
9285 default:
9286 s_image = "./pic/simcard_detected.png";//$.i18n.prop("sim_status_ready");
9287 break;
9288 }
9289 return s_image;
9290 }
mj.qu19ac6692024-08-21 19:18:36 -07009291
zw.wangcfae4372024-08-12 16:41:12 +08009292 function sf_dealChosenNumber(i_choosenName, i_choosenNum) {
9293 setTimeout(function () {
9294 var s_choosen = $("#chosenUserSelect");
9295 var s_options = $("option", s_choosen);
9296 for (var index = 0; index < s_options.length; index++) {
9297 if (getLastNumber(i_choosenNum, config.SMS_MATCH_LENGTH) == s_options[index].value) {
mj.qu19ac6692024-08-21 19:18:36 -07009298
zw.wangcfae4372024-08-12 16:41:12 +08009299 s_options[index].text = i_choosenName + '/' + i_choosenNum;
9300 s_options[index].value = i_choosenNum;
mj.qu19ac6692024-08-21 19:18:36 -07009301
zw.wangcfae4372024-08-12 16:41:12 +08009302 break;
9303 }
9304 }
9305 s_choosen.trigger("liszt:updated");
9306 }, 0);
9307 }
mj.qu19ac6692024-08-21 19:18:36 -07009308
9309 // ˫�첽��ȡ�豸����sim�����ö���Ϣ���������ϲ�
zw.wangcfae4372024-08-12 16:41:12 +08009310 function sf_dealPhoneBooksResult(i_books){
9311 if($.isArray(i_books.pbm_data) && i_books.pbm_data.length > 0){
9312 config.phonebook = i_books.pbm_data;
9313 }
9314 }
mj.qu19ac6692024-08-21 19:18:36 -07009315
9316 // �������µ�5������Ϣ����δ���ӵ������б��еĵ�����ʾ
zw.wangcfae4372024-08-12 16:41:12 +08009317 function sf_filterNewMessage(i_messages, i_type){
9318 if(!config.dbMsgs){
9319 config.dbMsgs = [];
9320 }
9321 if(sv_dbMessageIds.length == 0){
9322 $.each(config.dbMsgs, function(index_1, i_element){
9323 sv_dbMessageIds.push(i_element.id);
9324 });
9325 }
9326 $.each(i_messages, function(index_2, i_element){
mj.qu19ac6692024-08-21 19:18:36 -07009327 if($.inArray(i_element.id, sv_dbMessageIds) == -1){//�����¶���
zw.wangcfae4372024-08-12 16:41:12 +08009328 sv_dbMessageIds.push(i_element.id);
9329 config.dbMsgs.push(i_element);
9330 if(i_element.tag == '1'){
9331 sf_addNewMessage(i_element, false, i_type);
9332 }
9333 }else{
mj.qu19ac6692024-08-21 19:18:36 -07009334 for(var index = 0; index < config.dbMsgs.length; index++){//���¼�������
zw.wangcfae4372024-08-12 16:41:12 +08009335 if(config.dbMsgs[index].id == i_element.id && config.dbMsgs[index].content != i_element.content && i_element.tag == '1'){
9336 config.dbMsgs[index].content = i_element.content;
9337 sf_addNewMessage(i_element, true, i_type);
9338 break;
9339 }
9340 }
9341 }
9342 });
9343 }
mj.qu19ac6692024-08-21 19:18:36 -07009344
9345 // ������ת��Ϊ��ӦͼƬ
zw.wangcfae4372024-08-12 16:41:12 +08009346 function sf_getBatteryLevelImage(pers, i_status) {
9347 var s_Image = null;
9348 if ("0" == i_status) {
9349 if ("1" == pers) {
9350 s_Image = "pic/power_one.png";
9351 } else if ("2" == pers) {
9352 s_Image = "pic/power_two.png";
9353 } else if ("3" == pers) {
9354 s_Image = "pic/power_three.png";
9355 } else if ("4" == pers) {
9356 s_Image = "pic/power_full.png";
9357 } else { //"5" == pers || "0" == pers
9358 s_Image = "pic/power_out.png";
9359 }
9360 } else {
9361 s_Image = "pic/power_charging.gif";
9362 }
9363 return s_Image;
9364 }
9365
mj.qu19ac6692024-08-21 19:18:36 -07009366 // ��ȡ����״̬��CSS��ʽ
zw.wangcfae4372024-08-12 16:41:12 +08009367 function sf_getConnectionCssClass(i_fwVm, i_status, i_data_counter, i_wifiSSID, i_wifiStatus, i_rj45Status) {
9368
9369 var s_rj45ConnectionStatus = "icon_connection ";
9370 var s_connectionStatus = "icon_connection ";
9371
9372 if(i_rj45Status == "connect"){
9373 s_rj45ConnectionStatus += "connecting";
9374 }else if(i_rj45Status == "working"){
9375 s_rj45ConnectionStatus += "rj45_connected";
9376 }else{
9377 s_rj45ConnectionStatus += "disconnect";
9378 }
9379
9380 if (i_status == "ppp_connecting" || i_status == "wifi_connecting") {
9381 s_connectionStatus += "connecting";
mj.qu19ac6692024-08-21 19:18:36 -07009382 } else if(i_status == "ppp_connected") {//CPE ppp_statusΪnone ready��ֵ
zw.wangcfae4372024-08-12 16:41:12 +08009383 if (i_data_counter.uploadRate != '0' && i_data_counter.downloadRate != '0') {
9384 s_connectionStatus += "connectionBoth";
9385 } else if (i_data_counter.uploadRate != '0' && i_data_counter.downloadRate == '0') {
9386 s_connectionStatus += "connectionUp";
9387 } else if (i_data_counter.uploadRate == '0' && i_data_counter.downloadRate != '0') {
9388 s_connectionStatus += "connectionDown";
9389 } else {
9390 s_connectionStatus += "connectionNone";
9391 }
9392 } else if (i_status == "ppp_disconnected") {
9393 if (i_wifiSSID && i_wifiStatus == "connect") {
9394 service.getHotspotList({}, function (data) {
9395 var s_cssName = "icon_connection ";
9396 var s_css = "connecting ";
9397 for (var i = 0, len = data.hotspotList.length; i < len; i++) {
9398 if (data.hotspotList[i].connectStatus == "1") {
9399 s_css = "wifi_connected";
9400 break;
9401 }
9402 }
9403 s_cssName += s_css;
9404 i_fwVm.connectionCssClass(s_cssName);
9405 });
9406 i_fwVm.rj45ConnectionCssClass(s_rj45ConnectionStatus);
9407 return;
9408 } else if (i_wifiSSID && (i_wifiStatus == "connecting" || i_wifiStatus =="dhcping")) {
9409 s_connectionStatus += "connecting";
9410 } else {
9411 s_connectionStatus += "disconnect";
9412 }
9413 } else {
9414 s_connectionStatus += "disconnect";
9415 }
9416
9417 i_fwVm.connectionCssClass(s_connectionStatus);
9418 i_fwVm.rj45ConnectionCssClass(s_rj45ConnectionStatus);
9419 }
mj.qu19ac6692024-08-21 19:18:36 -07009420
9421 // ��ȡ�绰����Ϣ
zw.wangcfae4372024-08-12 16:41:12 +08009422 function sf_getPhoneBooks() {
9423 var s_books = service.getPhoneBooks({
9424 page : 0,
9425 data_per_page : 2000,
9426 orderBy : "id",
9427 isAsc : false
9428 });
9429 sf_dealPhoneBooksResult(s_books);
9430 }
9431
mj.qu19ac6692024-08-21 19:18:36 -07009432 // ��ȡ�ź�����CSS��ʽ
zw.wangcfae4372024-08-12 16:41:12 +08009433 function sf_getSignalCssClass(siganl, networkType, simStatus) {
9434 networkType = networkType.toLowerCase();
9435 simStatus = simStatus ? simStatus.toLowerCase() : '';
9436 if(networkType == '' || networkType == 'limited_service' || networkType == 'no_service' || networkType == 'limited service' || networkType == 'no service'
9437 || simStatus != 'modem_init_complete'){
9438 siganl = '_none';
9439 }
9440 return "signal signal" + siganl;
9441 }
mj.qu19ac6692024-08-21 19:18:36 -07009442
zw.wangcfae4372024-08-12 16:41:12 +08009443 function sf_getWifiStatusCssClass(i_status, i_deviceSize) {
9444 if (i_status) {
9445 if (i_deviceSize == 0) {
9446 return "wifi_status0";
9447 } else {
9448 return "wifi_status" + i_deviceSize;
9449 }
9450 } else {
9451 return "wifi_status_off";
9452 }
9453 }
mj.qu19ac6692024-08-21 19:18:36 -07009454
9455 // ����wifi״̬��ȡwifi��ͼƬ��Դ
zw.wangcfae4372024-08-12 16:41:12 +08009456 function sf_getWifiStatusImage(i_status, i_deviceSize) {
9457 if (i_status) {
9458 if (i_deviceSize == 0) {
9459 return "./pic/wlan0.png";
9460 } else {
9461 return "./pic/wlan" + i_deviceSize + ".png";
9462 }
9463 } else {
9464 return "./pic/wlan_off.png";
9465 }
9466 }
9467
mj.qu19ac6692024-08-21 19:18:36 -07009468 // ��ȡ��������������С���������ؽ���
zw.wangcfae4372024-08-12 16:41:12 +08009469 function sf_refreshFotaDownloadProgress(){
9470 service.getPackSizeInfo({}, function (data) {
9471 var percents;
9472 if (parseInt(data.fota_pkg_total_size) == 0) {
9473 percents = 0;
9474 } else {
9475 percents = parseInt(parseInt(data.fota_dl_pkg_size) * 100 / parseInt(data.fota_pkg_total_size));
9476 }
9477 if (percents > 100) {
9478 percents = 100;
9479 }
9480 if (percents >= 0) {
9481 if (percents > 95) {
9482 showProgressBar("ota_update", "<br/>" + $.i18n.prop("ota_update_warning"));
9483 }
9484 setProgressBar(percents);
9485 }
9486 });
9487 }
mj.qu19ac6692024-08-21 19:18:36 -07009488
9489 // �������ŷ��ͱ���
zw.wangcfae4372024-08-12 16:41:12 +08009490 function sf_responseSmsReport(){
9491 if(sv_isFirstLoadNewMessage && config.phonebook && config.phonebook.length == 0){
mj.qu19ac6692024-08-21 19:18:36 -07009492
zw.wangcfae4372024-08-12 16:41:12 +08009493 sv_isFirstLoadNewMessage = false;
mj.qu19ac6692024-08-21 19:18:36 -07009494
zw.wangcfae4372024-08-12 16:41:12 +08009495 if(config.HAS_PHONEBOOK){
9496 sf_getPhoneBooks();
9497 }else{
9498 config.phonebook = [];
9499 }
9500 }
9501 service.getSMSDeliveryReport({
9502 page: 0,
9503 smsCount: 10
9504 }, function(data){
9505 var s_messages = data.messages;
9506 var s_nums = [];
9507 $.each(s_messages, function(i, i_message){
9508 if($.inArray(i_message.number, s_nums) == -1){
9509 s_nums.push(i_message.number);
9510 window.setTimeout(function(){
9511 var s_now = $.now();
9512 sv_messagePopStack["m" + s_now] = s_now;
9513 i_message.name = i_message.number;
9514 for(i in config.phonebook){
9515 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
9516 i_message.name = config.phonebook[i].pbm_name;
9517 break;
9518 }
9519 }
9520 var s_msgContent = $.i18n.prop("sms_delivery_report_" + i_message.content);
mj.qu19ac6692024-08-21 19:18:36 -07009521
zw.wangcfae4372024-08-12 16:41:12 +08009522 var s_newMsg = {
9523 mark : "m" + s_now,
9524 name: i_message.name,
9525 title: $.i18n.prop("sms_report"),
9526 titleTrans: "sms_report",
9527 content : s_msgContent,
9528 datetime : i_message.time,
9529 report : 'report'
9530 };
mj.qu19ac6692024-08-21 19:18:36 -07009531
zw.wangcfae4372024-08-12 16:41:12 +08009532 if(sv_newMessagePopTemplate == null){
9533 sv_newMessagePopTemplate = $.template("newMessagePopTmpl", $("#newMessagePopTmpl"));
9534 }
mj.qu19ac6692024-08-21 19:18:36 -07009535
zw.wangcfae4372024-08-12 16:41:12 +08009536 $(".report", "#buttom-bubble").remove();
9537 $.tmpl("newMessagePopTmpl", s_newMsg).appendTo("#buttom-bubble");
9538 }, 100);
9539 }
9540 });
9541 }, function(){
9542 //No Deal
9543 });
9544 }
mj.qu19ac6692024-08-21 19:18:36 -07009545
zw.wangcfae4372024-08-12 16:41:12 +08009546 function sf_simStatusInvalid(simStatus){
9547 return simStatus == 'modem_sim_undetected' || simStatus == 'modem_undetected' || simStatus == 'modem_sim_destroy'
9548 || simStatus == 'modem_waitpin' || simStatus == 'modem_waitpuk' || simStatus == 'modem_imsi_waitnck';
9549 }
mj.qu19ac6692024-08-21 19:18:36 -07009550
9551 // ��ʾFOTA������ǰ״̬
zw.wangcfae4372024-08-12 16:41:12 +08009552 function sf_showFotaCurrentStatus() {
9553 sv_fotaUpdateCancel = true;
9554 var r = service.getNewVersionState();
mj.qu19ac6692024-08-21 19:18:36 -07009555
zw.wangcfae4372024-08-12 16:41:12 +08009556 function showProgress() {
9557 var upgradingState = ["downloading"];
9558 var info = service.getCurrentUpgradeState();
9559 if(info.current_upgrade_state.toLowerCase() == "idle") {
9560 addTimeout(showProgress, 1000);
9561 } else if(($.inArray(info.current_upgrade_state, upgradingState) != -1)&&(r.fota_new_version_state != "already_has_pkg")) {
9562 hideLoading();
9563 sf_showFotaUpgradeStatus();
9564 }
9565 }
9566 if (!($("#progress").is(":visible"))) {
9567 showProgress();
9568 }
9569 var times = 0;
9570 var getOTAUpgradeState = function () {
9571 var data = null;
9572 if (times <= 3) {
9573 times = times + 1;
9574 data = service.getCurrentUpgradeState();
9575 } else {
9576 data = getCurrentStatusInfo();
9577 }
9578 var state = data.current_upgrade_state;
9579 if(sv_fotaUpdateCancel && isLoggedIn == true){
9580
9581 if(r.fota_new_version_state == "already_has_pkg"){
9582 if(state == 'low_battery'){
9583 hideProgressBar();
9584 sv_fotaUpdateCancel = false;
9585 service.removeTimerThings('fota_current_upgrade_state',function(){});
9586 showInfo('ota_pkg_low_battery');
9587 window.clearTimeout(sv_timer);
9588 return;
9589 }else if(state == 'prepare_install'){
9590 hideProgressBar();
9591 sv_fotaUpdateCancel = false;
9592 service.removeTimerThings('fota_current_upgrade_state',function(){});
9593 showInfo('ota_pkg_download_success');
9594 window.clearTimeout(sv_timer);
9595 sv_batteryCheckTimer = setInterval(function () {
9596 sf_checkBatteryStatusForFota();
9597 }, 1000);
9598 return;
9599 }
9600 }else if(state == 'downloading') {
9601 sf_refreshFotaDownloadProgress();
9602 }else if(state == 'download_failed') {
9603 hideProgressBar();
9604 sv_fotaUpdateCancel = false;
9605 showAlert('ota_download_failed');
9606 window.clearTimeout(sv_timer);
9607 return;
9608 }else if(state == 'low_battery'){
9609 hideProgressBar();
9610 sv_fotaUpdateCancel = false;
9611 service.removeTimerThings('fota_current_upgrade_state',function(){});
9612 showInfo('ota_low_battery');
9613 window.clearTimeout(sv_timer);
9614 return;
9615 }else if(state == 'prepare_install'){
9616 hideProgressBar();
9617 sv_fotaUpdateCancel = false;
9618 service.removeTimerThings('fota_current_upgrade_state',function(){});
9619 showInfo('ota_download_success');
9620 window.clearTimeout(sv_timer);
9621 sv_batteryCheckTimer = setInterval(function () {
9622 sf_checkBatteryStatusForFota();
9623 }, 1000);
9624 return;
9625 }else{
9626 sv_fotaUpdateCancel = false;
9627 hideProgressBar();
9628 window.clearTimeout(sv_timer);
9629 return;
9630 }
9631 sv_timer = window.setTimeout(getOTAUpgradeState , 1000);
9632 }
9633 };
9634
9635 if(sv_fotaUpdateCancel && isLoggedIn == true){
9636 sv_timer = window.setTimeout(getOTAUpgradeState , 100);
9637 }else{
9638 window.clearTimeout(sv_timer);
9639 }
9640 }
mj.qu19ac6692024-08-21 19:18:36 -07009641
9642 // ��ʾFota��������
zw.wangcfae4372024-08-12 16:41:12 +08009643 function sf_showFotaUpdateResult(i_otaResult) {
9644 if ((!($("#loading").is(":visible"))) && (!($("#confirm").is(":visible")))) {
9645 var s_message = i_otaResult ? "ota_update_success" : "ota_update_failed";
9646 sv_fotaResultAlertPopuped = true;
9647 showAlert(s_message, function () {
9648 sv_fotaResultAlertPopuped = false;
9649 if (config.UPGRADE_TYPE == "OTA") {
9650 service.clearUpdateResult({}, $.noop());
9651 }
9652 });
9653 } else {
9654 window.setTimeout(function () {
9655 sf_showFotaUpdateResult(i_otaResult)
9656 }, 1000);
9657 }
9658 }
mj.qu19ac6692024-08-21 19:18:36 -07009659
9660 // ��ʾ��ǰ����״̬
zw.wangcfae4372024-08-12 16:41:12 +08009661 function sf_showFotaUpgradeStatus() {
9662 var s_data = service.getMandatory();
9663 var s_isMandatory = s_data.is_mandatory;
9664 var s_sizeInfo =service.getPackSizeInfo();
9665 var s_percents;
mj.qu19ac6692024-08-21 19:18:36 -07009666
zw.wangcfae4372024-08-12 16:41:12 +08009667 if (parseInt(s_sizeInfo.fota_pkg_total_size) == 0) {
9668 s_percents = 0;
9669 } else {
9670 s_percents = parseInt(parseInt(s_sizeInfo.fota_dl_pkg_size) * 100 / parseInt(s_sizeInfo.fota_pkg_total_size));
9671 }
9672 if (s_percents > 100) {
9673 s_percents = 100;
9674 }
mj.qu19ac6692024-08-21 19:18:36 -07009675
zw.wangcfae4372024-08-12 16:41:12 +08009676 if (s_isMandatory) {
9677 showProgressBar("ota_update", "<br/>" + $.i18n.prop("ota_update_warning"));
9678 } else {
9679 var cancelHtml = "";
9680 if (config.UPGRADE_TYPE == "OTA") {
9681 cancelHtml = "<br/><br/><button id='btnStopUpgrade' onclick='stopOTAUpgrade();' class='btn-1 btn-primary'>" + $.i18n.prop("cancel") + "</button>";
9682 }
9683 showProgressBar("ota_update", "<br/>" + $.i18n.prop("ota_update_warning") + cancelHtml);
9684 }
mj.qu19ac6692024-08-21 19:18:36 -07009685
zw.wangcfae4372024-08-12 16:41:12 +08009686 //setProgressBar(0);
9687 if (s_percents >= 0) {
9688 setProgressBar(s_percents);
9689 }
9690 }
mj.qu19ac6692024-08-21 19:18:36 -07009691
zw.wangcfae4372024-08-12 16:41:12 +08009692
9693
9694
9695
9696 function sf_startFotaUpgrade(){
9697 service.setUpgradeSelectOp({selectOp:'1'},function(result){
9698 if (result.result == "success"){
9699 sf_showFotaCurrentStatus();
9700 }});
9701 }
9702
9703 function cancelFotaUpgrade(){
9704 service.setUpgradeSelectOp({selectOp:'0'},function(result){ });
9705 }
mj.qu19ac6692024-08-21 19:18:36 -07009706
9707
zw.wangcfae4372024-08-12 16:41:12 +08009708 function refreshFotaStatusForUserSelector(choice){
9709 var info = getCurrentStatusInfo();
9710 if(choice){
9711 var modeData = service.getOpMode();
9712 if (!checkConnectedStatus(info.connectStatus, modeData.rj45_state, info.connectWifiStatus)) {
9713 showAlert("ota_network_disconnected");
9714 return;
9715 }
9716
9717 if(info.fota_user_selector == 'none'){
9718 sf_startFotaUpgrade();
9719 }else if(info.fota_user_selector == 'accept'){
9720 sf_showFotaCurrentStatus();
9721 }else if(info.fota_user_selector == 'cancel'){
9722 showAlert("ota_have_cancel");
9723 }else if(info.fota_user_selector == 'downloading_cancel'){
9724 showAlert("ota_have_cancel");
9725 }
9726 }else{
9727 if(info.fota_user_selector == 'none'){
9728 cancelFotaUpgrade();
9729 }else if(info.fota_user_selector == 'accept'){
9730 sf_showFotaCurrentStatus();
9731 }else if(info.fota_user_selector == 'cancel'){
9732 // todo:
9733 }else if(info.fota_user_selector == 'downloading_cancel'){
9734 // todo:
9735 }
9736 }
9737 }
9738
9739
mj.qu19ac6692024-08-21 19:18:36 -07009740 // ��ʾ���°汾�������ж��Ƿ�������ʾ
zw.wangcfae4372024-08-12 16:41:12 +08009741 function showFotaStatusForUserToConfirm(upgradeState) {
9742 var upgState = upgradeState.current_upgrade_state;
9743 if (upgState == 'upgrade_pack_redownload') {
9744 showConfirm("ota_interrupted", {ok: function () {
9745 refreshFotaStatusForUserSelector(1);
9746 }, no: function () {
9747 refreshFotaStatusForUserSelector(0);
9748 }});
9749 } else {
9750 var upgradingState = ["prepare_install", "low_battery",
9751 "connecting_server", "connect_server_success", "downloading", "accept"];
9752 if ($.inArray(upgState, upgradingState) != -1) {
9753 sf_showFotaCurrentStatus();
9754 } else {
mj.qu19ac6692024-08-21 19:18:36 -07009755
zw.wangcfae4372024-08-12 16:41:12 +08009756 showConfirm($.i18n.prop('ota_new_version'), {ok: function () {
9757 refreshFotaStatusForUserSelector(1);
9758 config.ISNOW_NOTICE = false;
9759 }, no: function () {
9760 refreshFotaStatusForUserSelector(0);
9761 config.ISNOW_NOTICE = false;
9762 }});
9763 }
9764 }
9765 }
9766
9767 showOTAAlert = function () {
9768 config.ISNOW_NOTICE = true;
9769 var is_mandatory = service.getMandatory().is_mandatory;
9770 if (is_mandatory) {
9771 sf_showFotaCurrentStatus();
9772 } else {
9773 var upgradeState = {};
9774 upgradeState = service.getCurrentUpgradeState();
9775 showFotaStatusForUserToConfirm(upgradeState);
9776 }
9777 };
9778
mj.qu19ac6692024-08-21 19:18:36 -07009779 // ��ֹFota����
zw.wangcfae4372024-08-12 16:41:12 +08009780 stopOTAUpgrade = function () {
9781 service.setUpgradeSelectOp({selectOp:'2'},function(result){ });
9782 sv_fotaUpdateCancel = false;
9783 window.clearTimeout(sv_timer);
9784 hideLoading();
9785 showAlert('ota_cancel');
9786 };
9787
mj.qu19ac6692024-08-21 19:18:36 -07009788 // �������������Ƿ����ѹ�
zw.wangcfae4372024-08-12 16:41:12 +08009789 function setTrafficAlertPopuped(val){
9790 sv_trafficAlertPopuped = !!val;
9791 sv_trafficAlertPopuped_100 = !!val;
9792 if(!val){
9793 sv_resetTrafficAlertPopuped = true;
9794 }
9795 }
9796
9797 function setTrafficAlert100Popuped(val){
9798 sv_trafficAlertPopuped_100 = !!val;
9799 if(!val){
9800 sv_resetTrafficAlertPopuped = true;
9801 }
9802 }
9803
mj.qu19ac6692024-08-21 19:18:36 -07009804 // ���������ṹ
zw.wangcfae4372024-08-12 16:41:12 +08009805 function getTrafficResult(info){
9806 var s_trafficResult = {
9807 showConfirm : false,
9808 limitPercent : info.limitVolumePercent
9809 };
9810 if(info.limitVolumeType == '1'){
9811 var monthlyTraffic = parseInt(info.data_counter.monthlySent, 10) + parseInt(info.data_counter.monthlyReceived, 10);
9812 s_trafficResult.usedPercent = monthlyTraffic / info.limitVolumeSize * 100;
9813 if(s_trafficResult.usedPercent > s_trafficResult.limitPercent){
9814 s_trafficResult.showConfirm = true;
9815 s_trafficResult.type = 'data';
9816 }
9817 }else{
9818 s_trafficResult.usedPercent = info.data_counter.monthlyConnectedTime / info.limitVolumeSize * 100;
9819 if(s_trafficResult.usedPercent > s_trafficResult.limitPercent){
9820 s_trafficResult.showConfirm = true;
9821 s_trafficResult.type = 'time';
9822 }
9823 }
9824 return s_trafficResult;
9825 }
9826
mj.qu19ac6692024-08-21 19:18:36 -07009827 // ��ʼ�� ViewModel����������ͼ����
zw.wangcfae4372024-08-12 16:41:12 +08009828 function init() {
9829 if(config.PRODUCT_TYPE == 'DATACARD') {
9830 $('#statusBar').addClass('padding-right-90');
9831 $('#language').addClass('data-card-language');
9832 }
9833 //preload img
9834 var imgAlert = $('<img />').attr('src', 'pic/res_alert.png');
9835 var imgConfirm = $('<img />').attr('src', 'pic/res_confirm.png');
9836 var imgInfo = $('<img />').attr('src', 'pic/res_info.png');
mj.qu19ac6692024-08-21 19:18:36 -07009837
zw.wangcfae4372024-08-12 16:41:12 +08009838 window.setTimeout(function () {
mj.qu19ac6692024-08-21 19:18:36 -07009839
zw.wangcfae4372024-08-12 16:41:12 +08009840 var fwVm = new statusViewModel();
mj.qu19ac6692024-08-21 19:18:36 -07009841
zw.wangcfae4372024-08-12 16:41:12 +08009842 ko.applyBindings(fwVm, $('#statusBar')[0]);
mj.qu19ac6692024-08-21 19:18:36 -07009843
zw.wangcfae4372024-08-12 16:41:12 +08009844 window.setInterval(function () {
9845 var info = getCurrentStatusInfo();
9846 var s_roamStatus = info.roamingStatus ? true : false;
9847 var $langLogoBar = $("#langLogoBar");
9848 isLoggedIn = info.isLoggedIn;
mj.qu19ac6692024-08-21 19:18:36 -07009849
9850
zw.wangcfae4372024-08-12 16:41:12 +08009851 //fwVm.attachedDevices(info.attachedDevices);
9852 fwVm.batteryLevel(info.batteryLevel + '%');
9853 fwVm.batteryPers(sf_getBatteryLevelImage(info.batteryPers, info.batteryStatus));
9854 fwVm.batteryStatus(info.batteryStatus);
9855 fwVm.isShowFotaNewversionIcon(info.new_version_state && info.fota_user_selector && info.fota_package_already_download != "yes" && config.ISNOW_NOTICE && fwVm.updateType() == 'mifi_fota');
9856 fwVm.isShowRj45ConnectionIcon(config.RJ45_SUPPORT);
9857 fwVm.networkOperator(sf_getNetWorkProvider(info.spn_b1_flag,info.spn_name_data,info.spn_b2_flag,info.networkOperator,s_roamStatus));
9858 fwVm.networkType(getNetworkType(info.networkType));
9859 fwVm.pinStatus(info.pinStatus);
9860 fwVm.roamingStatus(info.roamingStatus ? "R" : "");
9861 fwVm.showAttachedDevices(info.wifiStatus);
9862 fwVm.simStatus(sf_convertSimStatusToImage(info.simStatus));
9863 fwVm.signalCssClass(sf_getSignalCssClass(info.signalImg, info.networkType, info.simStatus));
9864 fwVm.isLoggedIn(info.isLoggedIn);
9865 fwVm.wifiStatusCssClass(sf_getWifiStatusCssClass(info.wifiStatus, info.wirelessDeviceNum));
9866 fwVm.wifiStatusImg(sf_getWifiStatusImage(info.wifiStatus, info.wirelessDeviceNum));
mj.qu19ac6692024-08-21 19:18:36 -07009867
zw.wangcfae4372024-08-12 16:41:12 +08009868 if(config.HAS_SMS ){
9869 if(!sv__hasCheckedSMSCapacity && info.isLoggedIn){
9870 checkSMSCapacity(info.smsUnreadCount);
9871 } else {
9872 fwVm.smsUnreadCount(info.smsUnreadCount);
9873 }
9874 }
mj.qu19ac6692024-08-21 19:18:36 -07009875
zw.wangcfae4372024-08-12 16:41:12 +08009876 sf_getConnectionCssClass(fwVm, info.connectStatus, info.data_counter, info.connectWifiSSID, info.connectWifiStatus, info.rj45ConnectStatus);
9877 refreshWifiConnectStatus(fwVm, info.connectStatus,info.connectWifiSSID,info.connectWifiStatus);
9878 checkTrafficLimitAlert(fwVm, info);
9879 updateStatusBarTrans({simStatus: info.simStatus, wifiStatus: info.wifiStatus, deviceSize: info.wirelessDeviceNum, networkType: info.networkType});
mj.qu19ac6692024-08-21 19:18:36 -07009880
zw.wangcfae4372024-08-12 16:41:12 +08009881 if(info.isLoggedIn){
9882 $("#statusBar:hidden").show();
9883 } else {
9884 $("#statusBar:visible").hide();
9885 }
9886 }, 500);
9887
9888 if(config.HAS_SMS){
9889 window.setInterval(function(){
9890 if(fwVm.isLoggedIn()){
9891 checkSMSCapacity();
9892 }
9893 }, 10000);
9894 checkSmsModelReady();
9895 }
9896
9897 window.setInterval(function() {
9898 var data = getCurrentStatusInfo();
9899 var upgradingState = ["prepare_install", "low_battery", "download_success","downloading"];
mj.qu19ac6692024-08-21 19:18:36 -07009900
zw.wangcfae4372024-08-12 16:41:12 +08009901 if (fwVm.isLoggedIn() == true && !($("#progress").is(":visible")) && data.defaultWanName != ""){
9902 if ($.inArray(data.current_upgrade_state, upgradingState) != -1){
9903 if(null == sv_fotaUpdateCancel){
9904 if(!data.is_mandatory){
9905 $.modal.close();
9906 }
9907 sf_showFotaCurrentStatus();
9908 }else if(false == sv_fotaUpdateCancel){
9909 sv_fotaUpdateCancel = null;
9910 }
9911 }
9912 }
9913 }, 1000);
9914
9915 var checkFotaUpgradeResult = function () {
9916 var info = service.getStatusInfo();
9917 if (info.isLoggedIn) {
9918 service.getUpgradeResult({}, function (data) {
9919 if (data.upgrade_result == "success") {
9920 sf_showFotaUpdateResult(true);
9921 } else if (data.upgrade_result == "fail") {
9922 sf_showFotaUpdateResult(false);
9923 } else {
9924 window.setTimeout(checkFotaUpgradeResult, 1000);
9925 }
9926 }, function () {
9927 window.setTimeout(checkFotaUpgradeResult, 1000);
9928 });
9929 } else {
9930 window.setTimeout(checkFotaUpgradeResult, 1000);
9931 }
9932 };
9933 if(fwVm.updateType() == "mifi_fota"){
9934 checkFotaUpgradeResult();
9935 window.setInterval(function () {
9936 var info = getCurrentStatusInfo();
9937 if (info.isLoggedIn && info.defaultWanName != "") {
9938 if(info.new_version_state && info.fota_package_already_download != "yes" && !config.ALREADY_NOTICE){
9939 service.getUpgradeResult({}, function (data) {
9940 if (data.upgrade_result == "success") {
9941 sf_showFotaUpdateResult(true);
9942 } else if (data.upgrade_result == "fail") {
9943 sf_showFotaUpdateResult(false);
9944 } else {
9945 if(sv_fotaResultAlertPopuped == false){
9946 config.ALREADY_NOTICE = true;
9947 showOTAAlert();
9948 }
9949 }
9950 });
9951 }
9952 }
9953 }, 1000);
9954 }
9955 function checkSMSCapacity(unreadCount){
9956 service.getSmsCapability({}, function(info){
9957 var showSmsConfirm = false;
9958 if(info.nvTotal != 0 && info.nvUsed >= info.nvTotal){
9959 $("#sms_unread_count").attr("tipTitle", "sms_capacity_is_full");
9960 showSmsConfirm = true;
9961 } else if(info.nvTotal != 0 && info.nvUsed + 5 >= info.nvTotal) {
9962 $("#sms_unread_count").attr("tipTitle", "sms_capacity_will_full");
9963 showSmsConfirm = true;
9964 } else {
9965 $("#sms_unread_count").attr("tipTitle", "sms_unread_count");
9966 }
9967 fwVm.showSmsDeleteConfirm(showSmsConfirm);
9968 if(typeof unreadCount != "undefined"){
9969 fwVm.smsUnreadCount(unreadCount);
9970 }
9971 sv__hasCheckedSMSCapacity = true;
9972 });
9973 }
9974 }, 1200);
mj.qu19ac6692024-08-21 19:18:36 -07009975
zw.wangcfae4372024-08-12 16:41:12 +08009976 tooltip.init();
mj.qu19ac6692024-08-21 19:18:36 -07009977
9978 // ������Ϣģ����ʼ��״̬
zw.wangcfae4372024-08-12 16:41:12 +08009979 function checkSmsModelReady(){
9980 var info = getCurrentStatusInfo();
9981 if(info.isLoggedIn){
9982 service.getSMSReady({}, function (data) {
9983 if (data.sms_cmd_status_result == "1") {
9984 window.setTimeout(function(){checkSmsModelReady();}, 1000);
9985 } else {
9986 sv__initSMSCompleted = true;
9987 }
9988 });
9989 } else {
9990 window.setTimeout(function(){checkSmsModelReady();}, 1000);
9991 }
9992 }
mj.qu19ac6692024-08-21 19:18:36 -07009993
9994 // ������������״̬
zw.wangcfae4372024-08-12 16:41:12 +08009995 checkTrafficLimitAlert = function(fwVm, info){
9996 if(window.location.hash == '#entry'){
9997 return false;
9998 }
9999 var APStationEnabled = config.AP_STATION_SUPPORT ? service.getStatusInfo().ap_station_enable : 'undefined';
10000 var trafficResult = getTrafficResult(info);
10001 var inShow = $("#confirm-container:visible").length > 0;
10002 var notPPP = (config.PRODUCT_TYPE == 'CPE' && checkCableMode(info.blc_wan_mode)) ? true : false;
mj.qu19ac6692024-08-21 19:18:36 -070010003
10004 // ��ȡAp Stationʹ��״̬���������ѷ�ʽ
zw.wangcfae4372024-08-12 16:41:12 +080010005 if (config.AP_STATION_SUPPORT && (typeof APStationEnabled == "undefined" || APStationEnabled === '')) {
10006 service.refreshAPStationStatus({}, $.noop());
10007 return false;
10008 }
10009 APStationEnabled = APStationEnabled == 1;
10010
10011 if (!info.isLoggedIn || inShow || (sv_trafficAlertPopuped && sv_trafficAlertPopuped_100) || !info.limitVolumeEnable || (!APStationEnabled && !(info.connectStatus == "ppp_connected")) || notPPP) {
10012 return false;
10013 }
mj.qu19ac6692024-08-21 19:18:36 -070010014
zw.wangcfae4372024-08-12 16:41:12 +080010015 if(sv_resetTrafficAlertPopuped){
10016 window.setTimeout(function () {
10017 sv_resetTrafficAlertPopuped = false;
10018 }, 2000);
10019 return false;
10020 }
10021
10022 if(trafficResult.showConfirm){
mj.qu19ac6692024-08-21 19:18:36 -070010023
zw.wangcfae4372024-08-12 16:41:12 +080010024 var confirmMessage = null;
mj.qu19ac6692024-08-21 19:18:36 -070010025
zw.wangcfae4372024-08-12 16:41:12 +080010026 if(trafficResult.usedPercent > 100 && !sv_trafficAlertPopuped_100){
mj.qu19ac6692024-08-21 19:18:36 -070010027
zw.wangcfae4372024-08-12 16:41:12 +080010028 sv_trafficAlertPopuped = true;
10029 sv_trafficAlertPopuped_100 = true;
mj.qu19ac6692024-08-21 19:18:36 -070010030
zw.wangcfae4372024-08-12 16:41:12 +080010031 confirmMessage = {msg: APStationEnabled ? 'traffic_beyond_msg' : 'traffic_beyond_disconnect_msg'};
mj.qu19ac6692024-08-21 19:18:36 -070010032
zw.wangcfae4372024-08-12 16:41:12 +080010033 } else if (!sv_trafficAlertPopuped) {
mj.qu19ac6692024-08-21 19:18:36 -070010034
zw.wangcfae4372024-08-12 16:41:12 +080010035 sv_trafficAlertPopuped = true;
10036 sv_trafficAlertPopuped_100 = false;
10037 confirmMessage = {msg: APStationEnabled ? 'traffic_limit_msg' : 'traffic_limit_disconnect_msg',
10038 params: [trafficResult.limitPercent]};
10039 }
mj.qu19ac6692024-08-21 19:18:36 -070010040
zw.wangcfae4372024-08-12 16:41:12 +080010041 if (confirmMessage != null) {
10042 if (APStationEnabled) {
10043 showAlert(confirmMessage);
10044 } else {
10045 showConfirm(confirmMessage, function () {
10046 showLoading("disconnecting");
10047 service.disconnect({}, function (data) {
10048 if (data.result) {
10049 successOverlay();
10050 } else {
10051 errorOverlay();
10052 }
10053 });
10054 });
10055 }
10056 }
10057 }
10058 return true;
10059 };
mj.qu19ac6692024-08-21 19:18:36 -070010060
10061 // ����״̬�е�tooltip
zw.wangcfae4372024-08-12 16:41:12 +080010062 function updateStatusBarTrans(status){
10063 $("#statusItemSimStatus").attr("tipTitle", "sim_status_" + status.simStatus);
10064 if (status.wifiStatus) {
10065 if (status.deviceSize == 0) {
10066 $("#wifi_status").attr("tipTitle","wifi_status_on");
10067 } else {
10068 $("#wifi_status").attr("tipTitle","wifi_status" + status.deviceSize);
10069 }
10070 } else {
10071 $("#wifi_status").attr("tipTitle","wifi_status_off");
10072 }
10073 }
10074
10075
mj.qu19ac6692024-08-21 19:18:36 -070010076 // ˢ��wifi��������״̬
zw.wangcfae4372024-08-12 16:41:12 +080010077 function refreshWifiConnectStatus(fwVm, status, wifiSSID, wifiStatus) {
10078 fwVm.connectStatus(status);
10079 if (status == "ppp_disconnecting") {
10080 fwVm.connectStatusTrans("disconnecting");
10081 fwVm.connectStatusText($.i18n.prop("disconnecting"));
10082 } else if (status == "ppp_connecting") {
10083 fwVm.connectStatusTrans("connecting");
10084 fwVm.connectStatusText($.i18n.prop("connecting"));
10085 } else if (status == "ppp_connected") {
10086 fwVm.connectStatusTrans("connected");
10087 fwVm.connectStatusText($.i18n.prop("connected"));
10088 } else if(wifiSSID){
10089 if(wifiStatus =="dhcping" || wifiStatus =="connecting"){
10090 fwVm.connectStatus("wifi_connecting");
10091 fwVm.connectStatusTrans("connecting");
10092 fwVm.connectStatusText($.i18n.prop("connecting"));
10093 }else if(wifiStatus =="connect"){
10094 fwVm.connectStatus("wifi_connect");
10095 fwVm.connectStatusTrans("connected");
10096 fwVm.connectStatusText($.i18n.prop("connected"));
10097 }else{
10098 fwVm.connectStatus("ppp_disconnected");
10099 fwVm.connectStatusTrans("disconnected");
10100 fwVm.connectStatusText($.i18n.prop("disconnected"));
10101 }
10102 }else{
10103 fwVm.connectStatusTrans("disconnected");
10104 fwVm.connectStatusText($.i18n.prop("disconnected"));
10105 }
10106 }
mj.qu19ac6692024-08-21 19:18:36 -070010107
10108 // ��ȡ��ǰ����״̬
zw.wangcfae4372024-08-12 16:41:12 +080010109 getNetworkType = function(networkType) {
10110 var networkTypeTmp = networkType.toLowerCase();
10111 if (networkTypeTmp == '' || networkTypeTmp == 'limited service') {
10112 networkTypeTmp = 'limited_service';
10113 }
10114 if(networkTypeTmp == 'no service') {
10115 networkTypeTmp = 'no_service';
10116 }
10117 if (networkTypeTmp == 'limited_service' || networkTypeTmp == 'no_service') {
10118 $("#networkType", "#statusBar").attr("data-trans", "network_type_" + networkTypeTmp);
10119 return $.i18n.prop("network_type_" + networkTypeTmp);
10120 } else {
10121 $("#networkType", "#statusBar").removeAttr("data-trans");
10122 return networkType;
10123 }
10124 };
mj.qu19ac6692024-08-21 19:18:36 -070010125
zw.wangcfae4372024-08-12 16:41:12 +080010126 if(config.HAS_SMS && menu.checkIsMenuExist("sms_list")){
10127 window.setInterval(function () {
10128 var info = getCurrentStatusInfo();
10129 if(window.location.hash == "#entry" || sf_simStatusInvalid(info.simStatus)){
10130 return;
10131 }
10132 for(key in sv_messagePopStack){
10133 var val = sv_messagePopStack[key];
10134 if($.now() - val > 5000){
10135 delete(sv_messagePopStack["m" + val]);
10136 var node = $(".bubbleItem#m" + val, "#buttom-bubble");
10137 node.fadeOut(1000, function(){
10138 $(this).remove();
10139 });
10140 }
10141 }
10142 if(info.isLoggedIn){
10143 if(info.newSmsReceived && !sv_newSMSMessageInDealing){
10144 sv_newSMSMessageInDealing = true;
10145 service.resetNewSmsReceivedVar();
10146 sf_checkNewMessages();
10147 }
10148 if(info.smsReportReceived){
10149 service.resetSmsReportReceivedVar();
10150 sf_responseSmsReport();
10151 }
10152 }
10153 }, 1000);
10154
10155 if(config.SMS_DATABASE_SORT_SUPPORT){
10156 window.setInterval(function(){
10157 if(menu.checkIsMenuExist("sms_list")){
10158 var info = getCurrentStatusInfo();
10159 if(info.isLoggedIn && sv__initSMSCompleted && !sv_newSMSMessageInDealing && !sf_simStatusInvalid(info.simStatus)){
10160 sv_newSMSMessageInDealing = true;
10161 sf_checkNewMessages();
10162 }
10163 }
10164 }, 20001);
10165 }
10166 }
10167
10168 function sf_checkNewMessages(){
mj.qu19ac6692024-08-21 19:18:36 -070010169
zw.wangcfae4372024-08-12 16:41:12 +080010170 var s_tags = 1;
10171 var s_smsCount = 5;
10172
10173 if(!config.dbMsgs || config.dbMsgs.length == 0){
10174 s_smsCount = 500;
10175 s_tags = 10;
10176 }
10177 service.getSMSMessages({
10178 page : 0,
10179 smsCount : s_smsCount,
10180 nMessageStoreType : 0,
10181 tags : s_tags,
10182 orderBy : "order by id desc"
10183 }, function(data){
10184 if(data && data.messages){
10185 sf_filterNewMessage(data.messages, 0);
10186 }
10187 sv_newSMSMessageInDealing = false;
10188 });
10189 service.getSMSMessages({
10190 page : 0,
10191 smsCount : s_smsCount,
10192 nMessageStoreType : 1,
10193 tags : s_tags,
10194 orderBy : "order by id desc"
10195 }, function(data){
10196 if(data && data.messages){
10197 sf_filterNewMessage(data.messages, 1);
10198 }
10199 sv_newSMSMessageInDealing = false;
10200 });
10201 }
10202
10203 if(config.HAS_SMS){
10204 $(".bubbleItem", "#buttom-bubble").live("mouseover", function(){
10205 var $this = $(this);
10206 delete(sv_messagePopStack[$this.attr("id")]);
10207 }).live("mouseout", function(){
10208 var $this = $(this);
10209 var now = $.now();
10210 sv_messagePopStack["m" + now] = now;
10211 $this.attr("id", "m" + now);
10212 $(".bubbleItem h3 a.bubbleCloseBtn", "#buttom-bubble").data("targetid", "m" + now);
10213 });
10214
10215 $(".bubbleItem h3 a.bubbleCloseBtn", "#buttom-bubble").die().live("click", function(){
10216 var id = $(this).data("targetid");
10217 delete(sv_messagePopStack[id]);
10218 var node = $(".bubbleItem#" + id, "#buttom-bubble");
10219 node.fadeOut(1000, function(){
10220 $(this).remove();
10221 });
10222 });
10223 }
10224 }
mj.qu19ac6692024-08-21 19:18:36 -070010225
10226
zw.wangcfae4372024-08-12 16:41:12 +080010227 return {
10228 init:init,
10229 setTrafficAlertPopuped: setTrafficAlertPopuped,
10230 setTrafficAlert100Popuped: setTrafficAlert100Popuped,
10231 getTrafficResult: getTrafficResult,
10232 showOTAAlert:showOTAAlert
10233 };
10234});
10235
mj.qu19ac6692024-08-21 19:18:36 -070010236// ����ͳ������ģ��
zw.wangcfae4372024-08-12 16:41:12 +080010237define("status_traffic_alert","jquery knockout service statusBar echarts".split(" "),
10238
10239 function ($, ko, service, status, echarts) {
mj.qu19ac6692024-08-21 19:18:36 -070010240
zw.wangcfae4372024-08-12 16:41:12 +080010241 var sv_trafficGraph = null;
10242 var sv_sourceData = null;
10243 var sv_usedDataModified = false;
10244 var sv_usedTimeModified = false;
10245
10246 var sv_trafficStaticalInfo = {
mj.qu19ac6692024-08-21 19:18:36 -070010247 // ����ͼ��ʼֵ
zw.wangcfae4372024-08-12 16:41:12 +080010248 data: {
10249 alarm: {
mj.qu19ac6692024-08-21 19:18:36 -070010250
zw.wangcfae4372024-08-12 16:41:12 +080010251 itemStyle: {
10252 normal: {
10253 color: '#8CC916'
10254 }
10255 },
mj.qu19ac6692024-08-21 19:18:36 -070010256 name: '������',
zw.wangcfae4372024-08-12 16:41:12 +080010257 value: 19.7
10258 },
10259 alert: {
mj.qu19ac6692024-08-21 19:18:36 -070010260
zw.wangcfae4372024-08-12 16:41:12 +080010261 itemStyle: {
10262 normal: {
10263 color: '#FF5500'
10264 }
10265 },
mj.qu19ac6692024-08-21 19:18:36 -070010266 name: '����ֵ',
zw.wangcfae4372024-08-12 16:41:12 +080010267 value: 1
10268 },
10269 free: {
mj.qu19ac6692024-08-21 19:18:36 -070010270
zw.wangcfae4372024-08-12 16:41:12 +080010271 itemStyle: {
10272 normal: {
10273 color: '#D8D8D8'
10274 }
10275 },
mj.qu19ac6692024-08-21 19:18:36 -070010276 name: 'δʹ��',
zw.wangcfae4372024-08-12 16:41:12 +080010277 value: 50
10278 },
10279 full: {
mj.qu19ac6692024-08-21 19:18:36 -070010280
10281
zw.wangcfae4372024-08-12 16:41:12 +080010282 itemStyle: {
10283 normal: {
10284 color: '#DF4313'
10285 }
10286 },
mj.qu19ac6692024-08-21 19:18:36 -070010287 name: '��������',
zw.wangcfae4372024-08-12 16:41:12 +080010288 value: 30
10289 },
10290 left1: {
mj.qu19ac6692024-08-21 19:18:36 -070010291
zw.wangcfae4372024-08-12 16:41:12 +080010292 itemStyle: {
10293 normal: {
10294 color: '#D8D8D8'
10295 }
10296 },
mj.qu19ac6692024-08-21 19:18:36 -070010297 name: '����ֵ��δʹ��',
zw.wangcfae4372024-08-12 16:41:12 +080010298 value: 50,
10299 },
10300 start: {
mj.qu19ac6692024-08-21 19:18:36 -070010301
zw.wangcfae4372024-08-12 16:41:12 +080010302 itemStyle: {
10303 normal: {
10304 color: '#D8D8D8'
10305 }
10306 },
mj.qu19ac6692024-08-21 19:18:36 -070010307 name: '����ֵ��δʹ��',
zw.wangcfae4372024-08-12 16:41:12 +080010308 value: 50
10309 },
10310 used: {
mj.qu19ac6692024-08-21 19:18:36 -070010311
zw.wangcfae4372024-08-12 16:41:12 +080010312 itemStyle: {
10313 normal: {
10314 color: '#8CC916'
10315 }
10316 },
mj.qu19ac6692024-08-21 19:18:36 -070010317 name: '��ʹ��',
zw.wangcfae4372024-08-12 16:41:12 +080010318 value: 30
10319 }
10320 },
10321 cacheEle: {},
mj.qu19ac6692024-08-21 19:18:36 -070010322 // Ԫ�ػ�ȡ
zw.wangcfae4372024-08-12 16:41:12 +080010323 getEle: function (i_elementId) {
10324 if (this.cacheEle.hasOwnProperty('id')) {
10325 return this.cacheEle[i_elementId];
10326 } else {
10327 this.cacheEle[i_elementId] = $("#" + i_elementId);
10328 return this.cacheEle[i_elementId];
10329 }
10330 },
mj.qu19ac6692024-08-21 19:18:36 -070010331 // ��ȡ�����澯״ֵ̬
zw.wangcfae4372024-08-12 16:41:12 +080010332 fetchTrafficAlertInfo: function(){
10333 sv_sourceData = getTrafficAlertInfo();
10334 return sv_sourceData;
10335 },
mj.qu19ac6692024-08-21 19:18:36 -070010336 // ��ȡ����ֵ�Ͷ�Ӧ��λֵ
zw.wangcfae4372024-08-12 16:41:12 +080010337 getTrafficStatisticalDatalnfo: function (i_valueInfo) {
10338 return {
10339 data: /\d+(.\d+)?/.exec(i_valueInfo)[0],
10340 unit: /[A-Z]{1,2}/.exec(i_valueInfo)[0]
10341 }
10342 },
mj.qu19ac6692024-08-21 19:18:36 -070010343
10344 // ��ȡʱ��ʱ���֡���
zw.wangcfae4372024-08-12 16:41:12 +080010345 getTrafficTimeHours: function (i_time) {
10346 var s_timeArray = i_time.split(':');
10347 return {
10348 h: parseInt(s_timeArray[0], 10),
10349 m: parseInt(s_timeArray[1], 10),
10350 s: parseInt(s_timeArray[2], 10)
10351 }
10352 },
mj.qu19ac6692024-08-21 19:18:36 -070010353 // ��ȡͳ��ʱ���Ͷ�Ӧ��λֵ
zw.wangcfae4372024-08-12 16:41:12 +080010354 getTrafficTimeInfo: function (i_valueInfo) {
10355 return {
10356 data: /\d+(.\d+)?/.exec(i_valueInfo)[0],
10357 unit: /[a-z]{4,6}/.exec(i_valueInfo)[0]
10358 }
10359 },
mj.qu19ac6692024-08-21 19:18:36 -070010360 // ʱ�任����S
zw.wangcfae4372024-08-12 16:41:12 +080010361 getTrafficTimeToSeconds: function (i_time) {
10362 var s_FormattedTime = this.getTrafficTimeHours(i_time);
10363 return s_FormattedTime.h * 3600 + s_FormattedTime.m * 60 + s_FormattedTime.s;
10364 },
mj.qu19ac6692024-08-21 19:18:36 -070010365 // ͨ�����ƻ�ȡ������λ
zw.wangcfae4372024-08-12 16:41:12 +080010366 getTrafficUnitByScale: function (i_scale) {
10367 if (i_scale == '1024') {
10368 return 'GB';
10369 } else if (i_scale == '1048576') {
10370 return 'TB';
10371 } else {
10372 return 'MB';
10373 }
10374 },
mj.qu19ac6692024-08-21 19:18:36 -070010375 // ��λ��Ӧֵ��ȡ
zw.wangcfae4372024-08-12 16:41:12 +080010376 getTrafficValueByStatisticalUnit: function (i_unit) {
10377 i_unit = i_unit.toLowerCase();
10378 if(i_unit == 'minute'){
10379 return '60';
10380 } else if (i_unit == 'gb') {
10381 return '1024';
10382 } else if(i_unit == 'hour'){
10383 return '3600';
10384 } else if (i_unit == 'tb') {
10385 return '1048576';
10386 } else {
10387 return '1';
10388 }
10389 },
10390
mj.qu19ac6692024-08-21 19:18:36 -070010391 // ���������Ƿ��ɱ༭
zw.wangcfae4372024-08-12 16:41:12 +080010392 isFormEditable: function (fwVm) {
10393 var s_dataPageEditState = fwVm.dataLimitTypeChecked() == '1' && (fwVm.viewEditUsedData() || fwVm.viewEditAlertData() || fwVm.viewEditTotalData());
10394 var s_timePageEditState = fwVm.dataLimitTypeChecked() == '0' && (fwVm.viewEditUsedTime() || fwVm.viewEditAlertTime() || fwVm.viewEditTotalTime());
10395 if (s_dataPageEditState || s_timePageEditState) {
10396 $('.border-color-transition:visible').addClass('attention-focus');
10397 addTimeout(function () {
10398 $('.border-color-transition:visible').removeClass('attention-focus');
10399 }, 1500);
10400 return true;
10401 } else {
10402 var s_result = false;
10403 if (fwVm.dataLimitTypeChecked() == 1) {
10404 if (fwVm.alertDataReach() == '0') {
10405 fwVm.editAlertDataHandler();
10406 s_result = true;
10407 }
10408 if (fwVm.limitDataMonth() == '0') {
10409 fwVm.editTotalDataHandler();
10410 s_result = true;
10411 }
10412 } else {
10413 if (fwVm.alertTimeReach() == '0') {
10414 fwVm.editAlertTimeHandler();
10415 s_result = true;
10416 }
10417 if (fwVm.limitTimeMonth() == '0') {
10418 fwVm.editTotalTimeHandler();
10419 s_result = true;
10420 }
10421 }
mj.qu19ac6692024-08-21 19:18:36 -070010422
zw.wangcfae4372024-08-12 16:41:12 +080010423 if (s_result) {
10424 $('.border-color-transition:visible').addClass('attention-focus');
10425 addTimeout(function () {
10426 $('.border-color-transition:visible').removeClass('attention-focus');
10427 }, 1500);
10428 }
10429 return s_result;
10430 }
10431 },
mj.qu19ac6692024-08-21 19:18:36 -070010432
10433 // ˢ������ͼ��Ϣ������������ֵ����ʾ����
zw.wangcfae4372024-08-12 16:41:12 +080010434
10435 refreshFlowDiagramInfo: function (fwVm) {
10436 var s_alarm = 0;
10437 var s_left = 0;
10438 var s_left1 = 0;
10439 var s_reach = 0;
10440 var s_total = 0;
10441 var s_used = 0;
10442
10443
10444 var s_startName = $.i18n.prop("echarts_no");
10445
mj.qu19ac6692024-08-21 19:18:36 -070010446 if (sv_sourceData.dataLimitChecked == '1') { //if (fwVm.dataLimitChecked() == '1') { //����
zw.wangcfae4372024-08-12 16:41:12 +080010447 s_startName = $.i18n.prop("echarts_used");
10448 sv_trafficGraphOptions.series[0].data = [];
mj.qu19ac6692024-08-21 19:18:36 -070010449
10450 if (fwVm.dataLimitTypeChecked() == '1') { // ����
zw.wangcfae4372024-08-12 16:41:12 +080010451 sv_trafficGraphOptions.title.text = "";
10452 sv_trafficGraphOptions.series[0].data = [];
mj.qu19ac6692024-08-21 19:18:36 -070010453
zw.wangcfae4372024-08-12 16:41:12 +080010454 if (fwVm.limitDataMonth() == 0) {
10455 var s_usedData = sv_trafficStaticalInfo.data.used;
10456 s_usedData.value = 1;
10457 s_usedData.name = $.i18n.prop("echarts_used");
10458 s_usedData.selected = false;
10459 sv_trafficGraphOptions.series[0].data.push(s_usedData);
10460 } else {
10461 s_total = fwVm.limitDataMonth() * fwVm.selectedDataUnit() * 1048576;
10462 s_used = parseInt(sv_sourceData.monthlySent, 10) + parseInt(sv_sourceData.monthlyReceived, 10);
10463 s_reach = s_total * fwVm.alertDataReach() / 100;
10464
10465 if (s_used >= s_total) {
10466 var s_fullData = sv_trafficStaticalInfo.data.full;
10467 s_fullData.value = 100;
10468 s_fullData.name = $.i18n.prop("echarts_full");
10469 sv_trafficGraphOptions.series[0].data.push(s_fullData);
10470 s_startName = $.i18n.prop("echarts_full");
10471 } else {
10472 if (s_reach > s_used) {
10473 s_left1 = s_reach - s_used;
10474 s_left = s_total - s_reach;
10475 } else {
10476 s_alarm = s_used - s_reach;
10477 s_left = s_total - s_used;
10478 }
10479
10480 var s_usedData = sv_trafficStaticalInfo.data.used;
10481 if (s_reach - s_used > 0) {
10482 s_usedData.value = s_used;
10483 } else {
10484 s_usedData.value = s_reach;
10485 }
10486 s_usedData.name = $.i18n.prop("echarts_used");
10487 sv_trafficGraphOptions.series[0].data.push(s_usedData);
10488
10489 if (s_left1 > 0) {
10490 var s_left1Data = sv_trafficStaticalInfo.data.left1;
10491 s_left1Data.value = s_left1;
10492 s_left1Data.name = $.i18n.prop("echarts_left1");
10493 sv_trafficGraphOptions.series[0].data.push(s_left1Data);
10494 }
10495
10496 var s_alertData = sv_trafficStaticalInfo.data.alert;
10497 s_alertData.value = s_total / 200;
10498 s_alertData.name = $.i18n.prop("echarts_alert");
10499 sv_trafficGraphOptions.series[0].data.push(s_alertData);
10500
10501 if (s_alarm > 0) {
10502 var s_alarmData = sv_trafficStaticalInfo.data.alarm;
10503 s_alarmData.value = s_alarm;
10504 s_alarmData.name = $.i18n.prop("echarts_alarm");
10505 sv_trafficGraphOptions.series[0].data.push(s_alarmData);
10506 }
10507
10508 var s_freeData = sv_trafficStaticalInfo.data.free;
10509 s_freeData.value = s_left;
10510 s_freeData.name = $.i18n.prop("echarts_free");
10511 sv_trafficGraphOptions.series[0].data.push(s_freeData);
10512 }
10513 }
mj.qu19ac6692024-08-21 19:18:36 -070010514
10515 }else{// ʱ��
10516
zw.wangcfae4372024-08-12 16:41:12 +080010517 sv_trafficGraphOptions.series[0].data = [];
mj.qu19ac6692024-08-21 19:18:36 -070010518
zw.wangcfae4372024-08-12 16:41:12 +080010519 if (fwVm.limitTimeMonth() == 0) {
10520 var s_usedData = sv_trafficStaticalInfo.data.used;
10521 s_usedData.value = 1;
10522 s_usedData.selected = false;
10523 s_usedData.name = $.i18n.prop("echarts_used");
10524 sv_trafficGraphOptions.series[0].data.push(s_usedData);
10525 } else {
10526 s_total = fwVm.limitTimeMonth() * fwVm.selectedTimeUnit();
10527 s_used = sv_sourceData.monthlyConnectedTime;
10528 s_reach = s_total * fwVm.alertTimeReach() / 100;
mj.qu19ac6692024-08-21 19:18:36 -070010529
zw.wangcfae4372024-08-12 16:41:12 +080010530 if (s_used >= s_total) {
10531 var fullTime = sv_trafficStaticalInfo.data.full;
10532 fullTime.value = 100;
10533 fullTime.name = $.i18n.prop("echarts_full");
10534 sv_trafficGraphOptions.series[0].data.push(fullTime);
10535 s_startName = $.i18n.prop("echarts_full");
10536 } else {
10537 if (s_reach - s_used > 0) {
10538 s_left1 = s_reach - s_used;
10539 s_left = s_total - s_reach;
10540 } else {
10541 s_alarm = s_used - s_reach;
10542 s_left = s_total - s_used;
10543 }
10544
10545 var s_usedTime = sv_trafficStaticalInfo.data.used;
10546 if (s_reach - s_used > 0) {
10547 s_usedTime.value = s_used;
10548 } else {
10549 s_usedTime.value = s_reach;
10550 }
10551 s_usedTime.name = $.i18n.prop("echarts_used");
10552 sv_trafficGraphOptions.series[0].data.push(s_usedTime);
10553
10554 if (s_left1 > 0) {
10555 var s_left1Time = sv_trafficStaticalInfo.data.left1;
10556 s_left1Time.value = s_left1;
10557 s_left1Time.name = $.i18n.prop("echarts_left1");
10558 sv_trafficGraphOptions.series[0].data.push(s_left1Time);
10559 }
10560
10561 var s_alertTime = sv_trafficStaticalInfo.data.alert;
10562 s_alertTime.value = s_total / 200;
10563 s_alertTime.name = $.i18n.prop("echarts_alert");
10564 sv_trafficGraphOptions.series[0].data.push(s_alertTime);
10565
10566 if (s_alarm > 0) {
10567 var s_alarmTime = sv_trafficStaticalInfo.data.alarm;
10568 s_alarmTime.value = s_alarm;
10569 s_alarmTime.name = $.i18n.prop("echarts_alarm");
10570 sv_trafficGraphOptions.series[0].data.push(s_alarmTime);
10571 }
10572
10573 var s_freeTime = sv_trafficStaticalInfo.data.free;
10574 s_freeTime.value = s_left;
10575 s_freeTime.name = $.i18n.prop("echarts_free");
10576 sv_trafficGraphOptions.series[0].data.push(s_freeTime);
10577 }
10578 }
10579 }
10580 } else {
10581 var s_usedData = sv_trafficStaticalInfo.data.used;
10582 s_usedData.value = 1;
10583 s_usedData.selected = false;
10584 s_usedData.name = $.i18n.prop("echarts_no");
mj.qu19ac6692024-08-21 19:18:36 -070010585
zw.wangcfae4372024-08-12 16:41:12 +080010586 sv_trafficGraphOptions.series[0].data = [s_usedData];
10587 sv_trafficGraphOptions.title.text = '';
10588 }
10589 sv_trafficStaticalInfo.setFlowDiagramInfo(sv_trafficGraphOptions, s_startName);
10590 },
10591
mj.qu19ac6692024-08-21 19:18:36 -070010592
10593 // �ػ�����ͼ
zw.wangcfae4372024-08-12 16:41:12 +080010594 setFlowDiagramInfo: function (i_options, i_startName) {
10595 var s_startPart = sv_trafficStaticalInfo.data.start;
10596
10597 s_startPart.name = i_startName;
10598 s_startPart.selected = false;
10599 s_startPart.value = 0;
mj.qu19ac6692024-08-21 19:18:36 -070010600
zw.wangcfae4372024-08-12 16:41:12 +080010601 var s_arr = [s_startPart].concat(i_options.series[0].data);
10602 i_options.series[0].data = s_arr;
10603 sv_trafficGraph.setOption(i_options, true);
mj.qu19ac6692024-08-21 19:18:36 -070010604
zw.wangcfae4372024-08-12 16:41:12 +080010605 addTimeout(function () {
10606 sv_trafficGraph.resize();
10607 }, 1000);
10608 }
10609 };
10610
10611
mj.qu19ac6692024-08-21 19:18:36 -070010612 // ����ͼ��������
zw.wangcfae4372024-08-12 16:41:12 +080010613 var sv_trafficGraphOptions = {
10614 animation: false,
10615 color: ['red', 'red', 'red', 'red', 'red'],
10616 series: [
10617 {
mj.qu19ac6692024-08-21 19:18:36 -070010618 name: '��������',
zw.wangcfae4372024-08-12 16:41:12 +080010619 radius: ['0', '75'],
10620 selectedOffset: 3,
10621 type: 'pie',
10622 data: [
10623
10624 ],
10625 itemStyle: {
10626 normal: {
10627 labelLine: {
10628 show: false
10629 },
10630 label: {
10631 show: false
10632 }
10633 }
10634 }
10635 }
10636 ],
10637 title: {
10638 itemGap: 0,
10639 text: '',
10640 subtextStyle: {
10641 color: '#FFF',
mj.qu19ac6692024-08-21 19:18:36 -070010642 fontFamily: '΢���ź�',
zw.wangcfae4372024-08-12 16:41:12 +080010643 fontSize: 16,
10644 fontWeight: 'bolder'
10645 },
10646 textStyle: {
10647 color: '#FFF',
mj.qu19ac6692024-08-21 19:18:36 -070010648 fontFamily: '΢���ź�',
zw.wangcfae4372024-08-12 16:41:12 +080010649 fontSize: 20,
10650 fontWeight: 'bolder'
10651 },
10652 x: 'center',
10653 y: 'center'
10654 },
10655 tooltip: {
10656 formatter: "{b}"
10657 }
10658 };
10659
10660
mj.qu19ac6692024-08-21 19:18:36 -070010661 // ��ȡ������������
zw.wangcfae4372024-08-12 16:41:12 +080010662 function getTrafficAlertInfo() {
10663 return service.getTrafficAlertInfo();
10664 }
10665
10666
mj.qu19ac6692024-08-21 19:18:36 -070010667
10668 // ��������ViewModel
zw.wangcfae4372024-08-12 16:41:12 +080010669
10670 function trafficViewModel() {
10671
10672 var target = this;
mj.qu19ac6692024-08-21 19:18:36 -070010673
zw.wangcfae4372024-08-12 16:41:12 +080010674 var info = sv_trafficStaticalInfo.fetchTrafficAlertInfo();
10675 var dataMonth = info.limitDataMonth.split("_");
mj.qu19ac6692024-08-21 19:18:36 -070010676
zw.wangcfae4372024-08-12 16:41:12 +080010677 sv_usedDataModified = false;
10678 sv_usedTimeModified = false;
10679
10680 target.alertDataReach = ko.observable(info.alertDataReach || 0);
10681 target.alertTimeReach = ko.observable(info.alertTimeReach || 0);
10682 target.dataLimitChecked = ko.observable(info.dataLimitChecked == '0' ? '0' : '1');
10683 target.dataLimitTypeChecked = ko.observable(info.dataLimitTypeChecked == '0' ? '0' : '1');
10684 target.limitTimeMonth = ko.observable(info.limitTimeMonth || 0);
10685
mj.qu19ac6692024-08-21 19:18:36 -070010686
10687 // ע��˳��
zw.wangcfae4372024-08-12 16:41:12 +080010688 target.usedDataText = ko.observable(transUnit(parseInt(info.monthlySent, 10) + parseInt(info.monthlyReceived, 10), false));
10689 var sv_staticalDataInfo = sv_trafficStaticalInfo.getTrafficStatisticalDatalnfo(target.usedDataText());
10690 var sv_staticalInfoData = sv_staticalDataInfo.data;
10691 target.dataUsed = ko.observable(sv_staticalInfoData);
10692 var sv_staticalInfoUnit = sv_staticalDataInfo.unit;
10693 target.selectedDataUsedUnit = ko.observable(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(sv_staticalInfoUnit));
10694 target.usedDataTextDescData = ko.observable("");
mj.qu19ac6692024-08-21 19:18:36 -070010695
zw.wangcfae4372024-08-12 16:41:12 +080010696 target.limitDataMonth = ko.observable(dataMonth[0] || 0);
10697 target.selectedDataUnit = ko.observable(dataMonth[1] || 1);
10698
10699 var limitDataMonthTmp = transUnit(target.limitDataMonth() * target.selectedDataUnit() * 1024 * 1024, false);
10700 var limitDataMonthUnitTmp = limitDataMonthTmp.substring(limitDataMonthTmp.length-2);
10701 target.limitDataMonth(limitDataMonthTmp.substring(0, limitDataMonthTmp.length-2));
10702 target.selectedDataUnit(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(limitDataMonthUnitTmp));
mj.qu19ac6692024-08-21 19:18:36 -070010703
zw.wangcfae4372024-08-12 16:41:12 +080010704 target.usedDataTextDesc = ko.computed(sf_usedDataTextDesc);
10705 target.limitDataMonthDescData = ko.observable("");
10706 target.limitDataMonthDesc = ko.computed(sf_limitDataMonthDesc);
10707 target.alertDataReachDescData = ko.observable("");
10708 target.alertDataReachDesc = ko.computed(sf_alertDataReachDesc);
10709 target.leftDataDescData = ko.observable("");
10710 target.leftDataDesc = ko.computed(sf_leftDataDesc);
10711 target.monthlyConnectedTime = ko.observable(transSecond2Time(info.monthlyConnectedTime));
mj.qu19ac6692024-08-21 19:18:36 -070010712
zw.wangcfae4372024-08-12 16:41:12 +080010713 var sv_timeInfo1 = sv_trafficStaticalInfo.getTrafficTimeInfo(transTimeUnit(info.monthlyConnectedTime));
10714 target.usedTime = ko.observable(sv_timeInfo1.data);
10715 target.selectedTimeUsedUnit = ko.observable(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(sv_timeInfo1.unit));
mj.qu19ac6692024-08-21 19:18:36 -070010716
zw.wangcfae4372024-08-12 16:41:12 +080010717 target.usedTimeTextDescData = ko.observable("");
10718 target.usedTimeTextDesc = ko.computed(sf_usedTimeTextDesc);
mj.qu19ac6692024-08-21 19:18:36 -070010719
zw.wangcfae4372024-08-12 16:41:12 +080010720 var sv_timeInfoNew = sv_trafficStaticalInfo.getTrafficTimeInfo(transTimeUnit(parseFloat(target.limitTimeMonth()) * 3600));
10721 target.selectedTimeUnit = ko.observable(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(sv_timeInfoNew.unit));
10722 target.limitTimeMonth(sv_timeInfoNew.data);
mj.qu19ac6692024-08-21 19:18:36 -070010723
10724
zw.wangcfae4372024-08-12 16:41:12 +080010725 target.limitTimeMonthDescData = ko.observable("");
10726 target.limitTimeMonthDescText = ko.observable("traffic_limit_time_h");
10727 target.limitTimeMonthDesc = ko.computed(sf_limitTimeMonthDesc);
10728 target.alertTimeReachDescData = ko.observable("");
10729 target.alertTimeReachDesc = ko.computed(sf_alertTimeReachDesc);
10730 target.leftTimeDescData = ko.observable("");
10731 target.leftTimeDesc = ko.computed(sf_leftTimeDesc);
10732 target.save = sf_save;
10733 target.viewEditUsedData = ko.observable(false);
10734 target.editUsedDataHandler = sf_editUsedDataHandler;
10735 target.editUsedDataSaveHandler = sf_editUsedDataSaveHandler;
10736 target.saveUsedData = sf_saveUsedData;
10737 target.editUsedDataCancelHandler = sf_editUsedDataCancelHandler;
10738 target.viewEditTotalData = ko.observable(false);
10739 target.editTotalDataHandler = sf_editTotalDataHandler;
10740 target.editTotalDataSaveHandler = sf_editTotalDataSaveHandler;
10741 target.editTotalDataCancelHandler = sf_editTotalDataCancelHandler;
10742 target.viewEditAlertData = ko.observable(false);
10743 target.editAlertDataHandler = sf_editAlertDataHandler;
10744 target.editAlertDataSaveHandler = sf_editAlertDataSaveHandler;
10745 target.editAlertDataCancelHandler = sf_editAlertDataCancelHandler;
10746 target.viewEditUsedTime = ko.observable(false);
10747 target.editUsedTimeHandler = sf_editUsedTimeHandler;
10748 target.saveUsedTime = sf_saveUsedTime;
10749 target.editUsedTimeSaveHandler = sf_editUsedTimeSaveHandler;
10750 target.editUsedTimeCancelHandler = sf_editUsedTimeCancelHandler;
10751 target.viewEditTotalTime = ko.observable(false);
10752 target.editTotalTimeHandler = sf_editTotalTimeHandler ;
10753 target.editTotalTimeSaveHandler = sf_editTotalTimeSaveHandler;
10754 target.editTotalTimeCancelHandler = sf_editTotalTimeCancelHandler;
10755 target.viewEditAlertTime = ko.observable(false);
10756 target.editAlertTimeHandler = sf_editAlertTimeHandler;
10757 target.editAlertTimeSaveHandler = sf_editAlertTimeSaveHandler;
10758 target.editAlertTimeCancelHandler = sf_editAlertTimeCancelHandler;
10759 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
zw.wangcfae4372024-08-12 16:41:12 +080010760
mj.qu19ac6692024-08-21 19:18:36 -070010761
10762 // ��������������
zw.wangcfae4372024-08-12 16:41:12 +080010763 function sf_alertDataReachDesc() {
10764 if(isNaN(target.limitDataMonth() * target.selectedDataUnit() * target.alertDataReach())) {
10765 target.alertDataReachDescData(target.alertDataReach() + ', ');
10766 return $.i18n.prop('traffic_alert_reach_text', target.alertDataReach(), ' ');
10767 }
10768
10769 var s_value = transUnit(target.limitDataMonth() * target.selectedDataUnit() * target.alertDataReach() * 1048576 / 100, false);
10770 target.alertDataReachDescData(target.alertDataReach() + ',' + s_value);
10771 return $.i18n.prop('traffic_alert_reach_text', target.alertDataReach(), s_value);
10772 }
mj.qu19ac6692024-08-21 19:18:36 -070010773 // ʱ������������
zw.wangcfae4372024-08-12 16:41:12 +080010774 function sf_alertTimeReachDesc() {
10775 if(isNaN(target.limitTimeMonth() * target.alertTimeReach())) {
10776 target.alertTimeReachDescData(target.alertTimeReach() + ', ');
10777 return $.i18n.prop('traffic_alert_reach_text', target.alertTimeReach(), ' ');
10778 }
10779 var s_value = transSecond2Time(target.limitTimeMonth() * target.selectedTimeUnit() * target.alertTimeReach() / 100);
10780 target.alertTimeReachDescData(target.alertTimeReach() + ',' + s_value);
10781 return $.i18n.prop('traffic_alert_reach_text', target.alertTimeReach(), s_value);
10782 }
mj.qu19ac6692024-08-21 19:18:36 -070010783
10784
10785 // ��������ֵȡ���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010786 function sf_editAlertDataCancelHandler() {
10787 target.alertDataReach(sv_trafficStaticalInfo.getEle('editAlertData').data('oldValue'));
10788 target.viewEditAlertData(false);
10789 }
mj.qu19ac6692024-08-21 19:18:36 -070010790
10791 // ��������ֵ�༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010792 function sf_editAlertDataHandler() {
10793 sv_trafficStaticalInfo.getEle('editAlertData').data('oldValue', target.alertDataReach());
10794 target.viewEditAlertData(true);
10795 }
mj.qu19ac6692024-08-21 19:18:36 -070010796
10797 // ��������ֵ�����༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010798 function sf_editAlertDataSaveHandler() {
10799 if (sv_trafficStaticalInfo.getEle('alertDataReach').valid()) {
10800 target.viewEditAlertData(false);
10801 }
10802 }
mj.qu19ac6692024-08-21 19:18:36 -070010803
10804 // ʱ������ֵȡ���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010805 function sf_editAlertTimeCancelHandler() {
10806 target.alertTimeReach(sv_trafficStaticalInfo.getEle('editAlertTime').data('oldValue'));
10807 target.viewEditAlertTime(false);
10808 }
mj.qu19ac6692024-08-21 19:18:36 -070010809 // ʱ������ֵ�༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010810 function sf_editAlertTimeHandler() {
10811 sv_trafficStaticalInfo.getEle('editAlertTime').data('oldValue', target.alertTimeReach());
10812 target.viewEditAlertTime(true);
10813 }
mj.qu19ac6692024-08-21 19:18:36 -070010814 // ʱ������ֵ�����༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010815 function sf_editAlertTimeSaveHandler() {
10816 if (sv_trafficStaticalInfo.getEle('alertTimeReach').valid()) {
10817 target.viewEditAlertTime(false);
10818 }
10819 }
mj.qu19ac6692024-08-21 19:18:36 -070010820
10821 // �ײ������༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010822 function sf_editTotalDataHandler() {
10823 sv_trafficStaticalInfo.getEle('editTotalData').data('oldValue', target.limitDataMonth());
10824 sv_trafficStaticalInfo.getEle('selectedDataUnit').data('oldValue', target.selectedDataUnit());
10825 target.viewEditTotalData(true);
10826 }
mj.qu19ac6692024-08-21 19:18:36 -070010827
10828 // �ײ����������༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010829 function sf_editTotalDataSaveHandler() {
10830 if (sv_trafficStaticalInfo.getEle('limitDataMonth').valid()) {
10831 target.usedDataText(transUnit(target.limitDataMonth() * target.selectedDataUnit() * 1048576, false));
10832 target.viewEditTotalData(false);
10833 }
10834 }
mj.qu19ac6692024-08-21 19:18:36 -070010835
10836 // �ײ�����ȡ���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010837 function sf_editTotalDataCancelHandler() {
10838 target.limitDataMonth(sv_trafficStaticalInfo.getEle('editTotalData').data('oldValue'));
10839 target.selectedDataUnit(sv_trafficStaticalInfo.getEle('selectedDataUnit').data('oldValue'));
10840 target.viewEditTotalData(false);
10841 }
mj.qu19ac6692024-08-21 19:18:36 -070010842 // �ײ�ʱ��ȡ���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010843 function sf_editTotalTimeCancelHandler() {
10844 target.limitTimeMonth(sv_trafficStaticalInfo.getEle('editTotalTime').data('oldValue'));
10845 target.viewEditTotalTime(false);
10846 }
mj.qu19ac6692024-08-21 19:18:36 -070010847 // �ײ�ʱ���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010848 function sf_editTotalTimeHandler() {
10849 sv_trafficStaticalInfo.getEle('editTotalTime').data('oldValue', target.limitTimeMonth());
10850 target.viewEditTotalTime(true);
10851 }
mj.qu19ac6692024-08-21 19:18:36 -070010852 // �ײ�ʱ�䱣���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010853 function sf_editTotalTimeSaveHandler() {
10854 if (sv_trafficStaticalInfo.getEle('limitTimeMonth').valid()) {
10855 target.viewEditTotalTime(false);
10856 }
10857 }
10858
mj.qu19ac6692024-08-21 19:18:36 -070010859 // ��������ȡ���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010860 function sf_editUsedDataCancelHandler() {
10861 target.dataUsed(sv_trafficStaticalInfo.getEle('editUsedData').data('oldValue'));
10862 target.selectedDataUsedUnit(sv_trafficStaticalInfo.getEle('selectedDataUsedUnit').data('oldValue'));
10863 sv_trafficStaticalInfo.getEle('editUsedDataCancel').siblings('label.error').hide();
10864 target.viewEditUsedData(false);
10865 }
mj.qu19ac6692024-08-21 19:18:36 -070010866 // ���������༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010867 function sf_editUsedDataHandler() {
10868 sv_trafficStaticalInfo.getEle('editUsedData').data('oldValue', target.dataUsed());
10869 sv_trafficStaticalInfo.getEle('selectedDataUsedUnit').data('oldValue', target.selectedDataUsedUnit());
10870 target.dataUsed(target.dataUsed());
10871 target.viewEditUsedData(true);
10872 }
mj.qu19ac6692024-08-21 19:18:36 -070010873 // �����������水ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010874 function sf_editUsedDataSaveHandler() {
10875 if (sv_trafficStaticalInfo.getEle('dataUsed').valid()) {
10876 sv_usedDataModified = true;
10877 target.viewEditUsedData(false);
10878 }
10879 }
mj.qu19ac6692024-08-21 19:18:36 -070010880 // ����ʱ��ȡ���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010881 function sf_editUsedTimeCancelHandler() {
10882 target.usedTime(sv_trafficStaticalInfo.getEle('editUsedTime').data('oldValue'));
10883 target.viewEditUsedTime(false);
10884 }
mj.qu19ac6692024-08-21 19:18:36 -070010885 // ����ʱ���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010886 function sf_editUsedTimeHandler() {
10887 sv_trafficStaticalInfo.getEle('editUsedTime').data('oldValue', target.usedTime());
10888 target.viewEditUsedTime(true);
10889 }
10890
mj.qu19ac6692024-08-21 19:18:36 -070010891 // ����ʱ�䱣���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010892 function sf_editUsedTimeSaveHandler() {
10893 if (sv_trafficStaticalInfo.getEle('usedTime').valid()) {
10894 target.monthlyConnectedTime(transSecond2Time(parseFloat(target.usedTime()) * target.selectedTimeUsedUnit()));
10895 target.viewEditUsedTime(false);
10896 sv_usedTimeModified = true;
10897 }
10898 }
10899
mj.qu19ac6692024-08-21 19:18:36 -070010900 // ʣ������������
zw.wangcfae4372024-08-12 16:41:12 +080010901 function sf_leftDataDesc() {
10902 var s_left = (target.limitDataMonth() * target.selectedDataUnit() - target.dataUsed() * target.selectedDataUsedUnit()) * 1048576;
10903 if(s_left < 0) {
10904 s_left = 0;
10905 }
10906
10907 if(isNaN(s_left)) {
10908 target.leftDataDescData('');
10909 return $.i18n.prop('traffic_data_left_text', ' ');
10910 }
10911
10912 target.leftDataDescData(transUnit(s_left, false));
10913 return $.i18n.prop('traffic_data_left_text', transUnit(s_left, false));
10914 }
mj.qu19ac6692024-08-21 19:18:36 -070010915 //ʣ��ʱ��������
zw.wangcfae4372024-08-12 16:41:12 +080010916 function sf_leftTimeDesc() {
10917 var s_surplus = target.limitTimeMonth() * target.selectedTimeUnit() - sv_trafficStaticalInfo.getTrafficTimeToSeconds(target.monthlyConnectedTime());
10918 if(s_surplus < 0) {
10919 s_surplus = 0;
10920 }
10921
10922 if(isNaN(s_surplus)) {
10923 target.leftTimeDescData(' ');
10924 return $.i18n.prop('traffic_data_left_text', ' ');
10925 }
10926 target.leftTimeDescData(transSecond2Time(s_surplus));
10927 return $.i18n.prop('traffic_data_left_text', transSecond2Time(s_surplus));
10928 }
mj.qu19ac6692024-08-21 19:18:36 -070010929 // �ײ�����������
zw.wangcfae4372024-08-12 16:41:12 +080010930 function sf_limitDataMonthDesc() {
10931 if(isNaN(target.limitDataMonth())) {
10932 target.limitDataMonthDescData("");
10933 return $.i18n.prop('traffic_limit_data_text', ' ');
10934 }else{
10935 // todo
10936 }
mj.qu19ac6692024-08-21 19:18:36 -070010937
zw.wangcfae4372024-08-12 16:41:12 +080010938 target.limitDataMonthDescData(target.limitDataMonth() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUnit()));
10939 return $.i18n.prop('traffic_limit_data_text', target.limitDataMonth() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUnit()));
10940 }
mj.qu19ac6692024-08-21 19:18:36 -070010941 // �ײ�ʱ��������
zw.wangcfae4372024-08-12 16:41:12 +080010942 function sf_limitTimeMonthDesc() {
10943 if(isNaN(target.limitTimeMonth())) {
10944 target.limitTimeMonthDescData(' ');
10945 target.limitTimeMonthDescText('traffic_limit_time_h');
10946 return $.i18n.prop('traffic_limit_time_h', ' ');
10947 }else{
10948 // todo:
10949 }
mj.qu19ac6692024-08-21 19:18:36 -070010950
zw.wangcfae4372024-08-12 16:41:12 +080010951 target.limitTimeMonthDescData(target.limitTimeMonth());
mj.qu19ac6692024-08-21 19:18:36 -070010952
zw.wangcfae4372024-08-12 16:41:12 +080010953 if(target.selectedTimeUnit() == "60"){
10954 target.limitTimeMonthDescText('traffic_limit_time_m');
10955 return $.i18n.prop('traffic_limit_time_m', target.limitTimeMonth());
10956 }else{
10957 target.limitTimeMonthDescText('traffic_limit_time_h');
10958 return $.i18n.prop('traffic_limit_time_h', target.limitTimeMonth());
10959 }
10960 }
mj.qu19ac6692024-08-21 19:18:36 -070010961
10962 // Ӧ�ð�ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010963 function sf_save() {
10964 if (sv_trafficStaticalInfo.isFormEditable(target) && target.dataLimitChecked() == '1') {
10965 return false;
10966 }
mj.qu19ac6692024-08-21 19:18:36 -070010967
zw.wangcfae4372024-08-12 16:41:12 +080010968 if (target.selectedDataUnit() == '1' && target.selectedDataUsedUnit() == '1048576' && target.dataLimitTypeChecked() == "1" && target.dataLimitChecked() == '1' && !(parseInt(target.dataUsed(), 10) < parseInt('4096', 10)) ) {
10969 showAlert('traffic_over_note');
10970 return false;
10971 }
mj.qu19ac6692024-08-21 19:18:36 -070010972
zw.wangcfae4372024-08-12 16:41:12 +080010973 showLoading();
10974 service.setTrafficAlertInfo({
10975 alertDataReach: parseInt(target.alertDataReach(), 10),
10976 alertTimeReach: parseInt(target.alertTimeReach(), 10),
10977 dataLimitChecked: target.dataLimitChecked(),
10978 dataLimitTypeChecked: target.dataLimitTypeChecked(),
10979 limitDataMonth: target.limitDataMonth() + "_" + target.selectedDataUnit(),
10980 limitTimeMonth: target.selectedTimeUnit() == "60" ? target.limitTimeMonth()/60 : target.limitTimeMonth()//save by hours
10981 }, function (data) {
10982 if (data.result == 'success') {
10983 if(target.dataLimitTypeChecked() == "1" && sv_usedDataModified) {
10984 target.saveUsedData();
10985 } else if(target.dataLimitTypeChecked() == "0" && sv_usedTimeModified) {
10986 target.saveUsedTime();
10987 } else {
10988 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
10989 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
10990 status.setTrafficAlertPopuped(false);
10991 successOverlay();
10992 }
10993 } else {
10994 errorOverlay();
10995 }
10996 }, function () {
10997 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
10998 errorOverlay();
10999 });
11000 }
mj.qu19ac6692024-08-21 19:18:36 -070011001
11002 // ����������������
zw.wangcfae4372024-08-12 16:41:12 +080011003 function sf_saveUsedData() {
11004 var val = target.dataUsed() * target.selectedDataUsedUnit();
11005 service.trafficCalibration({
11006 way: 'data',
11007 value: val
11008 }, function(){
11009 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
11010 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
11011 successOverlay();
11012 target.viewEditUsedData(false);
11013 status.setTrafficAlertPopuped(false);
11014 sv_usedDataModified = false;
11015 }, function(){
11016 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
11017 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
11018 errorOverlay();
11019 });
11020 }
11021
11022
mj.qu19ac6692024-08-21 19:18:36 -070011023
zw.wangcfae4372024-08-12 16:41:12 +080011024 function sf_saveUsedTime() {
11025 service.trafficCalibration({
11026 way: 'time',
11027 value: target.selectedTimeUsedUnit() == "60" ? parseFloat(target.usedTime())/60 : target.usedTime()
11028 }, function(){
11029 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
11030 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
11031 successOverlay();
11032 target.monthlyConnectedTime(transSecond2Time(parseFloat(target.usedTime()) * target.selectedTimeUsedUnit()));
11033 target.viewEditUsedTime(false);
11034 status.setTrafficAlertPopuped(false);
11035 sv_usedTimeModified = false;
11036 }, function(){
11037 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
11038 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
11039 errorOverlay();
11040 });
11041 }
11042
mj.qu19ac6692024-08-21 19:18:36 -070011043
11044 // ��������������
zw.wangcfae4372024-08-12 16:41:12 +080011045 function sf_usedDataTextDesc() {
11046 if(isNaN(target.dataUsed())) {
11047 target.usedDataTextDescData("");
11048 return $.i18n.prop('traffic_used_text', ' ');
11049 }
11050 target.usedDataTextDescData(target.dataUsed() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUsedUnit()));
11051 return $.i18n.prop('traffic_used_text', target.dataUsed() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUsedUnit()));
11052 }
mj.qu19ac6692024-08-21 19:18:36 -070011053 // ����ʱ��������
zw.wangcfae4372024-08-12 16:41:12 +080011054 function sf_usedTimeTextDesc() {
11055 target.usedTimeTextDescData(target.monthlyConnectedTime());
11056 return $.i18n.prop('traffic_used_text', target.monthlyConnectedTime());
11057 }
11058
mj.qu19ac6692024-08-21 19:18:36 -070011059
zw.wangcfae4372024-08-12 16:41:12 +080011060 }
mj.qu19ac6692024-08-21 19:18:36 -070011061
zw.wangcfae4372024-08-12 16:41:12 +080011062 function init() {
11063 sv_trafficGraph = echarts.init($("#traffic_graphic")[0]);
11064 window.onresize = sv_trafficGraph.resize;
11065 var s_container = $('#container');
11066 ko.cleanNode(s_container[0]);
11067 var fwVm = new trafficViewModel();
11068 ko.applyBindings(fwVm, s_container[0]);
11069 $('#trafficAlertForm').validate({
11070 submitHandler: function () {
11071 fwVm.save();
11072 },
mj.qu19ac6692024-08-21 19:18:36 -070011073
11074
zw.wangcfae4372024-08-12 16:41:12 +080011075 errorPlacement: function (error, para) {
11076 if (para.attr("name") == "alertDataReach") {
11077 error.insertAfter("#editAlertDataDiv");
11078 } else if (para.attr("name") == "alertTimeReach") {
11079 error.insertAfter("#editAlertTimeDiv");
11080 } else if (para.attr("name") == "dataUsed") {
11081 error.insertAfter("#editUsedDataDiv");
11082 } else if (para.attr("name") == "limitDataMonth") {
11083 error.insertAfter("#editTotalDataDiv");
11084 } else if (para.attr("name") == "limitTimeMonth") {
11085 error.insertAfter("#editTotalTimeDiv");
11086 } else if (para.attr("name") == "usedTime") {
11087 error.insertAfter("#editUsedTimeDiv");
11088 } else {
11089 error.insertAfter(para);
11090 }
11091 },
11092
11093 rules: {
11094 alertDataReach: {
11095 range: [ 1, 100 ],
11096 digits: true
11097 },
11098 alertTimeReach: {
11099 range: [ 1, 100 ],
11100 digits: true
11101 },
11102 dataUsed: {
11103 range : [ 0, 9999 ],
11104 decimalRange : true
11105 },
11106 limitDataMonth: {
11107 range : [ 1, 9999 ],
11108 decimalRange : true
11109 },
11110 limitTimeMonth: {
11111 range : [ 1, 9999 ],
11112 decimalRange : true
11113 },
11114 usedTime: {
11115 range : [ 0, 9999 ],
11116 decimalRange : true
11117 }
11118 }
mj.qu19ac6692024-08-21 19:18:36 -070011119
zw.wangcfae4372024-08-12 16:41:12 +080011120 });
mj.qu19ac6692024-08-21 19:18:36 -070011121
zw.wangcfae4372024-08-12 16:41:12 +080011122 var sv_originalLan = window.language;
11123 window.setInterval(function(){
11124 if(sv_originalLan != window.language){
11125 sv_originalLan = window.language;
11126 sv_trafficStaticalInfo.refreshFlowDiagramInfo(fwVm);
11127 }
11128 }, 1000);
11129
11130 }
11131
11132 return {
11133 init: init
11134 };
11135});
11136
mj.qu19ac6692024-08-21 19:18:36 -070011137// ״̬����ʾ��ʵ��
zw.wangcfae4372024-08-12 16:41:12 +080011138define("tooltip",[ "jquery" ],
mj.qu19ac6692024-08-21 19:18:36 -070011139
zw.wangcfae4372024-08-12 16:41:12 +080011140 function($) {
11141
11142
mj.qu19ac6692024-08-21 19:18:36 -070011143 // ����Ԫ��λ����Ϣ
zw.wangcfae4372024-08-12 16:41:12 +080011144 // @method calculatePositionInfo
mj.qu19ac6692024-08-21 19:18:36 -070011145 // @param trigger Ԫ��
11146 // @param tooltip ״̬��
11147 // @param {JSON} config �����
11148
zw.wangcfae4372024-08-12 16:41:12 +080011149 function calculatePositionInfo(trigger, tooltip, config) {
11150 var top = trigger.offset().top;
11151 var left = trigger.offset().left;
11152 var position = config.position[0];
11153 var height = tooltip.outerHeight() + trigger.outerHeight();
11154 var width = tooltip.outerWidth() + trigger.outerWidth();
11155
11156 top -= tooltip.outerHeight() - config.offset[0];
11157 left += trigger.outerWidth() + config.offset[1];
11158
11159 if (/iPad/i.test(navigator.userAgent)) {
11160 top -= $(window).scrollTop();
11161 }
11162
11163 if (position == 'center') {
11164 top += height / 2;
11165 }
11166 if (position == 'bottom') {
11167 top += height;
11168 }
11169 position = config.position[1];
11170 if (position == 'center') {
11171 left -= width / 2;
11172 }else if (position == 'left') {
11173 left -= width;
11174 }
mj.qu19ac6692024-08-21 19:18:36 -070011175
zw.wangcfae4372024-08-12 16:41:12 +080011176 return {
11177 top : top,
11178 left : left
11179 };
11180 }
mj.qu19ac6692024-08-21 19:18:36 -070011181
11182 // ״̬����ʼ��
zw.wangcfae4372024-08-12 16:41:12 +080011183 function init() {
11184
11185 $(".statusItem", "#statusBar").each(function(i, n){
11186 var $this = $(this);
11187 $this.attr("tipTitle", $this.attr("title")).removeAttr("title");
11188 }).hover(
11189 function() {
11190 var $this = $(this);
11191 var title = $this.attr("tipTitle");
11192 var tooltip = $("<div>").addClass("tooltip in").appendTo(document.body).hide()
11193 .append($this.attr("i18n") ? $.i18n.prop(title) : title);
11194 if ($this.attr("i18n")) {
11195 tooltip.attr("data-trans", title).attr("id", "tooltip_" + $this.attr("id"));
11196 }
11197 var pos = calculatePositionInfo($this, tooltip, {
11198 position : [ 'bottom', 'center' ],
11199 offset : [ 0, 0 ]
11200 });
11201 tooltip.css({
11202 position : 'absolute',
11203 top : pos.top,
11204 left : pos.left
11205 }).show();
11206 }, function() {
11207 $(".tooltip").hide().remove();
11208 });
11209 }
mj.qu19ac6692024-08-21 19:18:36 -070011210
zw.wangcfae4372024-08-12 16:41:12 +080011211 return {
11212 init : init
11213 };
11214 });
11215
11216define("menu","set service knockout underscore jquery".split(" "),
11217 function (set, fnc, libko, libus, libjq) {
11218 var displayMenuWhenLogout = false;
11219 var vmMenu;
11220 var menu = [];
11221 var menuResource = "";
11222
11223 function menuExistCheck(path) {
11224 for (var i = 0; i < menu.length; i++) {
11225 if (menu[i].path == path) {
11226 return true;
11227 }
11228 }
11229 return false;
11230 }
11231
11232 function getIsLoggedin() {
11233 var loginStatus = fnc.getLoginStatus();
11234 return (loginStatus.status == "loggedIn");
11235 }
11236
11237 function buildNew() {
11238 var loggedIn = getIsLoggedin();
11239 var menuMain = libus.filter(menu, function (param) {
11240 return (param.level == '1' && ((param.requireLogin && loggedIn) || !param.requireLogin) && param.hash != "#entry");
11241 });
11242 vmMenu.menuMain(menuMain);
11243 vmMenu.loggedIn(loggedIn);
11244
11245 getMainWth(vmMenu.menuMain().length);
11246 vmMenu.showMenu(loggedIn || displayMenuWhenLogout);
11247 libjq("#nav").translate();
11248 }
11249
11250 function getMainWth(len) {
11251 var width = 100 / len;
11252 libjq('ul#list-nav li').each(function () {
11253 libjq(this).css('width', width + '%');
11254 });
11255 }
11256
11257 function menuRefresh() {
11258 var currentHash = window.location.hash;
11259 var itmRoot = libus.find(menu, function (param) {
11260 return param.hash == currentHash;
11261 });
11262 while (itmRoot.parent) {
11263 itmRoot = libus.find(menu, function (param) {
11264 return param.hash == itmRoot.parent;
11265 });
11266 }
11267 if (!itmRoot.parent) {
11268 libjq("#list-nav li").removeClass("active");
11269 var mid = itmRoot.hash.substring(1, itmRoot.hash.length);
11270 libjq("#list-nav li[mid=" + mid + "]").addClass("active");
11271 }
11272 vmMenu.changeMenu(itmRoot);
11273 }
11274
11275 function menuSearch(hashVal) {
11276 hashVal = hashVal || window.location.hash;
11277 var loggedIn = getIsLoggedin();
11278 return libus.filter(menu, function (param) {
11279 return (hashVal == param.hash && ((param.requireLogin && loggedIn) || !param.requireLogin));
11280 });
11281 }
11282
11283 function menuRenderSub(level, baseItem) {
11284 var levelItem = libus.find(menu, function (param) {
11285 return param.parent == baseItem.hash && param.path == baseItem.path;
11286 });
11287 libjq(".menu-" + level + "-level").removeClass("active");
11288 if (levelItem) {
11289 if (level == "two") {
11290 menuRenderSub("three", levelItem);
11291 //forward/backward support
11292 clickMenuTrig(levelItem.hash, level);
11293 }
11294 libjq(".menu-" + level + "-level." + levelItem.hash.substring(1)).addClass("active");
11295 }
11296 }
11297
11298 function menuActSub() {
11299 var currentHash = window.location.hash;
11300 var itmRoot = libus.find(menu, function (param) {
11301 return param.hash == currentHash;
11302 });
11303 if (itmRoot.level == 1) {
11304 menuRenderSub("two", itmRoot);
11305 }
11306 if (itmRoot.level == 2) {
11307 menuRenderSub("three", itmRoot);
11308 //forward/backward support
11309 clickMenuTrig(itmRoot.hash, itmRoot.level);
11310 }
11311 if (itmRoot.level == 3) {
11312 //forward/backward support
11313 clickMenuTrig(itmRoot.parent, itmRoot.level);
11314 libjq(".menu-three-level").removeClass("active");
11315 libjq(".menu-three-level." + itmRoot.hash.substring(1)).addClass("active");
11316 }
11317 }
11318
11319 function clickMenuTrig(hash, level) {
11320 libjqobj = libjq(".menu-two-level." + hash.substring(1));
11321 var levelArr = ['3', 'three', '2', 'two'];
11322 if (libus.indexOf(levelArr, level) != -1 && libjqobj.hasClass('active')) {
11323 return;
11324 }
11325
11326 libjqobj.siblings().removeClass('active');
11327 libjqobj.addClass('active');
11328
11329 libjqobj.siblings().not('.menu-two-level').slideUp();
11330 libjqobj.next().has('ul li').slideDown();
11331 }
11332
11333 set.blc_wan_mode = fnc.getOpMode().blc_wan_mode;
11334 if (!set.RJ45_SUPPORT) {
11335 menuResource = "menu";
11336 } else {
11337 switch (set.blc_wan_mode) {
11338 case "PPPOE":
11339 case "AUTO_PPPOE":
11340 menuResource = "menu_pppoe";
11341 break;
11342 default:
11343 menuResource = "menu";
11344 break;
11345 }
11346 }
11347
11348 require([set.DEVICE + '/' + menuResource], function (otherMenu) {
11349 menu = otherMenu;
11350 if (set.SD_CARD_SUPPORT) {
11351 menu = menu.concat([{ hash: '#httpshare_guest', path: 'sd_httpshare', level: '', requireLogin: false, checkSIMStatus: false},
11352 { hash: '#sdcard', path: 'sd', level: '', requireLogin: true, checkSIMStatus: false},
11353 { hash: '#httpshare', path: 'sd_httpshare', level: '', requireLogin: true, checkSIMStatus: false}]);
11354 }
11355 });
11356
11357 function initialize() {
11358 vmMenu = new Menu_vm();
11359 }
11360
11361 function Menu_vm() {
11362 var loginState = getIsLoggedin();
11363 var target = this;
11364 target.loggedIn = libko.observable(loginState);
11365
11366 target.showMenu = libko.observable(loginState || displayMenuWhenLogout);
11367
11368 var menuMain = libus.filter(menu, function (param) {
11369 return (param.level == '1' && ((param.requireLogin && target.loggedIn()) || !param.requireLogin) && param.hash != "#entry");
11370 });
11371
11372 target.menuMain = libko.observableArray(menuMain);
11373 target.secondMenu = libko.observableArray([]);
11374 //target.curThirdMenu; cov_2
11375 target.changeMenu = function (data) {
11376 var secondMenu = getSubMenu(data);
11377 if (secondMenu.length == 0) {
11378 libjq("#container").addClass("fixContainerWidth");
11379 } else {
11380 libjq("#container").removeClass("fixContainerWidth");
11381 }
11382
11383 target.secondMenu(secondMenu);
11384 return true;
11385 };
11386 target.thirdMenu = function () {
11387 return target.curThirdMenu;
11388 };
11389 target.getThirdMenu = function (data) {
11390 target.curThirdMenu = getSubMenu(data);
11391 };
11392 function getSubMenu(data) {
11393 return libus.filter(menu, function (param) {
11394 return ((param.parent && param.parent == data.hash) && ((param.requireLogin && target.loggedIn()) || !param.requireLogin));
11395 });
11396 }
11397 }
11398
11399 return {
11400 activeSubMenu: menuActSub,
11401 checkIsMenuExist: menuExistCheck,
11402 findMenu: menuSearch,
11403 rebuild: buildNew,
11404 refreshMenu: menuRefresh,
11405 init: initialize
11406 };
11407});