blob: ea9e627214e6879100116f72dde5e63f97490377 [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 }
500 function deleteApn() {
501 return stuffMake(arguments, {}, prepare, deal, null, true);
502 function prepare(values, isPost) {
503 var valueReq = {
504 apn_action: "delete",
505 apn_mode: "manual",
506 index: values.index
507 };
508 valueReq.goformId = "APN_PROC_EX";
509 return valueReq;
510 }
511 function deal(paramD) {
512 if (paramD.result == "success") {
513 return {
514 result: true
515 };
516 } else {
517 return {
518 result: false
519 };
520 }
521 }
522 }
523 function setDefaultApn() {
524 return stuffMake(arguments, {}, prepare, deal, null, true);
525 function prepare(values, isPost) {
526 var requestParam = {
527 goformId: "APN_PROC_EX",
528 apn_mode: values.apnMode
529 };
530 if (values.apnMode == 'manual') {
531 requestParam.apn_action = "set_default";
532 requestParam.set_default_flag = "1";
533 requestParam.pdp_type = values.pdpType;
534 requestParam.index = values.index;
535 }
536 return requestParam;
537 }
538 function deal(paramD) {
539 if (paramD.result == "success") {
540 return {
541 result: true
542 };
543 } else {
544 return {
545 result: false
546 };
547 }
548 }
549 }
550 function addOrEditApn() {
551 return stuffMake(arguments, {}, prepare, deal, null, true);
552 function prepare(values, isPost) {
553 var valueReq = {
554 goformId: "APN_PROC_EX",
555 apn_action: "save",
556 apn_mode: "manual",
557 profile_name: values.profileName,
558 wan_dial: '*99#',
559 pdp_type: values.pdpType,
560 pdp_select: 'auto',
561 index: values.index
562 };
563 if (values.pdpType == "IP") {
564 $.extend(valueReq, {
565 wan_apn: values.wanApn,
566 ppp_auth_mode: values.authMode,
567 ppp_username: values.username,
568 ppp_passtmp: values.password,
569 });
570 } else if (values.pdpType == "IPv6") {
571 $.extend(valueReq, {
572 ipv6_wan_apn: values.wanApnV6,
573 ipv6_ppp_auth_mode: values.authModeV6,
574 ipv6_ppp_username: values.usernameV6,
575 ipv6_ppp_passtmp: values.passwordV6
576 });
577 } else {
578 $.extend(valueReq, {
579 wan_apn: values.wanApn,
580 ppp_auth_mode: values.authMode,
581 ppp_username: values.username,
582 ppp_passtmp: values.password,
583 dns_mode: values.dnsMode,
584 prefer_dns_manual: values.dns1,
585 standby_dns_manual: values.dns2,
586 ipv6_wan_apn: values.wanApnV6,
587 ipv6_ppp_auth_mode: values.authModeV6,
588 ipv6_ppp_username: values.usernameV6,
589 ipv6_ppp_passtmp: values.passwordV6
590 });
591 }
592 return valueReq;
593 }
594 function deal(paramD) {
595 if (paramD.result == "success") {
596 return {
597 result: true
598 };
599 } else {
600 return {
601 result: false
602 };
603 }
604 }
605 }
606 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"];
607 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'];
608 if (config.HAS_SMS) {
609 $.merge(loginTimerQueryString, ["sms_received_flag", "sts_received_flag", 'sms_unread_num']);
610 }
611 var timerCallbackStack = [];
612 var timerCallbacks = [timerUpdateStatus];
613 function timerUpdater() {
614 if (!updateTimerFlag) {
615 setTimeout(function () {
616 timerUpdater();
617 }, 1000);
618 return;
619 }
620 var queryParams = checkTimerUpdaterParameters();
621 reqAsync(queryParams, function (paramD) {
622 for (var i = 0; i < timerCallbacks.length; i++) {
623 if (typeof timerCallbacks[i] === "function") {
624 timerCallbacks[i](paramD);
625 }
626 }
627 $.merge(timerCallbacks, timerCallbackStack);
628 timerCallbackStack = [];
629 setTimeout(function () {
630 timerUpdater();
631 }, 1000);
632 }, function () {
633 timerUpdaterErrorCallback();
634 setTimeout(function () {
635 timerUpdater();
636 }, 1000);
637 }, false);
638 }
639 function checkTimerUpdaterParameters() {
640 var queryParams = {
641 multi_data: 1,
642 };
643 if (window.location.hash && window.location.hash != '#entry' && informationAll.isLoggedIn) {
644 if (config.HAS_SMS) {
645 queryParams.sms_received_flag_flag = 0;
646 queryParams.sts_received_flag_flag = 0;
647 }
648 if (loginTimerQueryString.length > 0 && _.indexOf(timerQueryString, loginTimerQueryString[0]) == -1) {
649 $.each(loginTimerQueryString, function (i, n) {
650 timerQueryString.push(n);
651 });
652 }
653 } else {
654 if (loginTimerQueryString.length > 0 && _.indexOf(timerQueryString, loginTimerQueryString[0]) != -1) {
655 timerQueryString = _.without(timerQueryString, loginTimerQueryString);
656 }
657 }
658 queryParams.cmd = timerQueryString.join(",");
659 return queryParams;
660 }
661 function addCallback(cb) {
662 if (_.indexOf(timerCallbackStack, cb) == -1) {
663 timerCallbackStack.push(cb);
664 }
665 }
666 function removeCallback(cb) {
667 timerCallbacks = _.without(timerCallbacks, cb);
668 if (timerCallbacks.length == 0) {
669 timerCallbacks.push(timerUpdateStatus);
670 }
671 return timerCallbackStack;
672 }
673 function addQueryString(query) {
674 if (_.indexOf(timerQueryString, query) == -1) {
675 timerQueryString.push(query);
676 }
677 }
678 function removeQueryString(query) {
679 timerQueryString = _.without(timerQueryString, query);
680 return timerQueryString;
681 }
682 function timerUpdateStatus(paramD) {
683 informationAll.defaultWanName = paramD.default_wan_name;
684 informationAll.signalImg = typeof paramD.signalbar == 'undefined' ? '0' : paramD.signalbar;
685 informationAll.networkType = paramD.sub_network_type ? paramD.sub_network_type : (paramD.network_type ? paramD.network_type : '');
686 if (informationAll.networkType.toLowerCase().indexOf("limited_service") != -1 || informationAll.networkType.toLowerCase().indexOf("limited service") != -1) {
687 informationAll.networkType = "limited_service";
688 } else if (informationAll.networkType.toLowerCase().indexOf("no_service") != -1 || informationAll.networkType.toLowerCase().indexOf("no service") != -1) {
689 informationAll.networkType = "no_service";
690 }
691 informationAll.networkOperator = paramD.network_provider ? paramD.network_provider : '';
692 informationAll.spn_b1_flag = paramD.spn_b1_flag;
693 informationAll.spn_b2_flag = paramD.spn_b2_flag;
694 informationAll.spn_name_data = paramD.spn_name_data;
695 informationAll.connectStatus = typeof paramD.ppp_status == 'undefined' ? 'ppp_disconnected' : paramD.ppp_status;
696 informationAll.rj45ConnectStatus = (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state;
697 informationAll.ethWanMode = paramD.ethwan_mode;
698 informationAll.ssid1AttachedNum = paramD.sta_count == "" ? 0 : parseInt(paramD.sta_count, 10);
699 informationAll.ssid2AttachedNum = paramD.m_sta_count == "" ? 0 : parseInt(paramD.m_sta_count, 10);
700 informationAll.roamingStatus = getRoamStatus(informationAll.networkType, paramD.modem_main_state, paramD.simcard_roam);
701 informationAll.wifiStatus = paramD.wifi_cur_state == "1";
702 informationAll.simStatus = paramD.modem_main_state;
703 informationAll.pinStatus = paramD.pin_status;
704 var needMinutes = 3 * 60 * 60;
705 var batteryLevel = (paramD.battery_vol_percent && paramD.battery_vol_percent.length > 0) ? paramD.battery_vol_percent : 100;
706 informationAll.batteryPers = paramD.battery_pers;
707 var remainMinutes = Math.round(needMinutes * (1 - batteryLevel / 100));
708 informationAll.batteryStatus = (typeof paramD.battery_charging == 'undefined') ? '0' : paramD.battery_charging;
709 informationAll.batteryLevel = batteryLevel;
710 informationAll.batteryTime = remainMinutes.toString();
711 informationAll.data_counter = {
712 uploadRate: paramD.realtime_tx_thrpt == '' ? 0 : paramD.realtime_tx_thrpt,
713 downloadRate: paramD.realtime_rx_thrpt == '' ? 0 : paramD.realtime_rx_thrpt,
714 currentSent: paramD.realtime_tx_bytes == '' ? 0 : paramD.realtime_tx_bytes,
715 currentReceived: paramD.realtime_rx_bytes == '' ? 0 : paramD.realtime_rx_bytes,
716 currentConnectedTime: paramD.realtime_time == '' ? 0 : paramD.realtime_time,
717 monthlySent: paramD.monthly_tx_bytes == '' ? 0 : paramD.monthly_tx_bytes,
718 monthlyReceived: paramD.monthly_rx_bytes == '' ? 0 : paramD.monthly_rx_bytes,
719 traffic_alined_delta: paramD.traffic_alined_delta == '' ? 0 : paramD.traffic_alined_delta,
720 monthlyConnectedTime: paramD.monthly_time == '' ? 0 : paramD.monthly_time,
721 month: paramD.date_month == '' ? 1 : paramD.date_month
722 };
723 informationAll.ssid = paramD.SSID1;
724 informationAll.authMode = paramD.AuthMode;
725 informationAll.isLoggedIn = config.HAS_LOGIN ? paramD.loginfo == "ok" : true;
726 if (config.HAS_SMS) {
727 if (!informationAll.newSmsReceived) {
728 informationAll.newSmsReceived = paramD.sms_received_flag > 0;
729 }
730 if (!informationAll.smsReportReceived) {
731 informationAll.smsReportReceived = paramD.sts_received_flag > 0;
732 }
733 if (typeof paramD.sms_dev_unread_num != "undefined") {
734 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);
735 } else {
736 informationAll.smsUnreadCount = parseInt(paramD.sms_unread_num | 0, 10)
737 }
738 }
739 if (paramD.data_volume_limit_switch == '1') {
740 informationAll.limitVolumeEnable = true;
741 informationAll.limitVolumeType = paramD.data_volume_limit_unit == 'data' ? '1' : '0';
742 informationAll.limitVolumePercent = paramD.data_volume_alert_percent;
743 if (paramD.data_volume_limit_unit == 'data') {
744 var limitMonth = paramD.data_volume_limit_size.split("_");
745 informationAll.limitVolumeSize = limitMonth[0] * limitMonth[1] * 1024 * 1024;
746 } else {
747 informationAll.limitVolumeSize = paramD.data_volume_limit_size * 60 * 60;
748 }
749 } else {
750 informationAll.limitVolumeEnable = false;
751 informationAll.limitVolumeType = '1';
752 informationAll.limitVolumePercent = '100';
753 informationAll.limitVolumeSize = '0';
754 }
755 informationAll.connectWifiProfile = paramD.EX_wifi_profile;
756 informationAll.connectWifiSSID = paramD.EX_SSID1;
757 informationAll.connectWifiStatus = paramD.sta_ip_status;
758 informationAll.multi_ssid_enable = paramD.m_ssid_enable;
759 informationAll.roamMode = paramD.roam_setting_option;
760 if (paramD.blc_wan_mode == "AUTO") {
761 informationAll.blc_wan_mode = paramD.blc_wan_auto_mode ? paramD.blc_wan_auto_mode : 'AUTO_PPP';
762 } else {
763 informationAll.blc_wan_mode = paramD.blc_wan_mode ? paramD.blc_wan_mode : 'PPP';
764 }
765 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";
766 informationAll.current_upgrade_state = paramD.fota_current_upgrade_state;
767 if (informationAll.current_upgrade_state == "verify_failed") {
768 informationAll.current_upgrade_state = "upgrade_pack_error";
769 }
770 informationAll.fota_user_selector = paramD.fota_upgrade_selector;
771 informationAll.is_mandatory = paramD.is_mandatory == "1" || paramD.fota_new_version_state == "has_critical";
772 informationAll.allowRoamingUpdate = paramD.upg_roam_switch;
773 informationAll.dialMode = paramD.dial_mode;
774 informationAll.fota_package_already_download = paramD.fota_package_already_download;
775 }
776 function timerUpdaterErrorCallback() {
777 informationAll.batteryStatus = '0';
778 }
779 function getRoamStatus(networkType, modemState, simcardRoam) {
780 if (("" == $.trim(networkType)) || "no_service" == networkType.toLowerCase() || "limited_service" == networkType.toLowerCase() || "modem_sim_undetected" == modemState || "modem_waitpin" == modemState || "modem_waitpuk" == modemState) {
781 return false;
782 }
783 if ("Internal" == simcardRoam || "International" == simcardRoam) {
784 return true;
785 } else {
786 return false;
787 }
788 }
789 $(document).ready(function () {
790 setTimeout(function () {
791 timerUpdater();
792 }, 0);
793 });
794 function setNetwork(strNetworkNumber, nRat, nSubAct, callback) {
795 if ((typeof(strNetworkNumber) !== "string") || (strNetworkNumber === "") || (typeof(nRat) !== "number") || (isNaN(nRat))) {
796 if (typeof(callback) === "function") {
797 callback(false);
798 return;
799 }
800 }
801 var nRat1 = -1;
802 if (nRat === 0) {
803 nRat1 = 0;
804 } else if (nRat === 2) {
805 nRat1 = 2;
806 } else if (nRat == 7) {
807 nRat1 = 7;
808 } else {
809 nRat1 = -1;
810 }
811 if (-1 === nRat1) {
812 if (typeof(callback) === "function") {
813 callback(false);
814 return;
815 }
816 }
817 var SubAct;
818 if (nSubAct.toString() == "NaN") {
819 SubAct = "";
820 } else {
821 SubAct = nSubAct;
822 }
823 reqAsync({
824 goformId: "SET_NETWORK",
825 NetworkNumber: strNetworkNumber,
826 Rat: nRat,
827 nSubrat: SubAct
828 }, function (paramD) {
829 if (paramD && paramD.result == "success") {
830 var flag;
831 var counter = 0;
832 var timer = setInterval(function () {
833 var obj = reqSync({
834 cmd: 'm_netselect_result',
835 }, false);
836 if (!obj) {
837 callback(false);
838 return;
839 }
840 if (obj.m_netselect_result == "manual_success") {
841 flag = "1";
842 window.clearInterval(timer);
843 callback(true);
844 } else if (obj.m_netselect_result == "manual_fail") {
845 flag = "0";
846 window.clearInterval(timer);
847 callback(false);
848 } else if (counter < 120) {
849 counter++;
850 } else {
851 window.clearInterval(timer);
852 callback(false);
853 }
854 }, 1000);
855 } else {
856 callback(false);
857 }
858 }, function (paramD) {
859 callback(false);
860 }, true);
861 }
862 function savePhoneBook() {
863 var callback = arguments[1];
864 return stuffMake(arguments, {}, prepare, deal, null, true);
865 function prepare(values, isPost) {
866 var valueReq = {};
867 valueReq.notCallback = true;
868 valueReq.goformId = "PBM_CONTACT_ADD";
869 valueReq.location = values.location;
870 valueReq.name = encodeMessage(values.name);
871 valueReq.mobilephone_num = values.mobile_phone_number;
872 if (valueReq.location == 1) {
873 valueReq.add_index_pc = values.index;
874 valueReq.homephone_num = values.home_phone_number;
875 valueReq.officephone_num = values.office_phone_number;
876 valueReq.email = encodeMessage(values.mail);
877 valueReq.groupchoose = values.group;
878 if (!valueReq.groupchoose) {
879 valueReq.groupchoose = "common";
880 }
881 } else {
882 valueReq.edit_index = values.index;
883 }
884 if (values.delId != undefined) {
885 valueReq.delId = values.delId;
886 }
887 return valueReq;
888 }
889 function deal(paramD) {
890 if (paramD && paramD.result == "success") {
891 addTimerSomething("pbm_write_flag", checkSavePhoneBook);
892 } else {
893 callback(paramD);
894 }
895 }
896 function checkSavePhoneBook(paramD) {
897 checkPbmWriteFlag(paramD, callback, checkSavePhoneBook);
898 }
899 }
900 function checkPbmWriteFlag(paramD, callback, fn) {
901 if (paramD.pbm_write_flag == "0") {
902 removeTimerSomething("pbm_write_flag", fn);
903 callback({
904 result: "success"
905 });
906 } 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") {
907 removeTimerSomething("pbm_write_flag", fn);
908 callback({
909 result: "fail"
910 });
911 } else {}
912 }
913 function deletePhoneBooks() {
914 var callback = arguments[1];
915 return stuffMake(arguments, {}, prepare, deal, null, true);
916 function prepare(values, isPost) {
917 var valueReq = {};
918 valueReq.notCallback = true;
919 valueReq.goformId = "PBM_CONTACT_DEL";
920 valueReq.del_option = "delete_num";
921 valueReq.delete_id = values.indexs.join(",");
922 return valueReq;
923 }
924 function deal(paramD) {
925 if (paramD && paramD.result == "success") {
926 addTimerSomething("pbm_write_flag", checkDeletePhoneBooks);
927 } else {
928 callback(paramD);
929 }
930 }
931 function checkDeletePhoneBooks(paramD) {
932 checkPbmWriteFlag(paramD, callback, checkDeletePhoneBooks);
933 }
934 }
935 function deleteAllPhoneBooks() {
936 var callback = arguments[1];
937 return stuffMake(arguments, {}, prepare, deal, null, true);
938 function prepare(values, isPost) {
939 var valueReq = {};
940 valueReq.notCallback = true;
941 valueReq.goformId = "PBM_CONTACT_DEL";
942 valueReq.del_option = "delete_all";
943 valueReq.del_all_location = values.location;
944 return valueReq;
945 }
946 function deal(paramD) {
947 if (paramD && paramD.result == "success") {
948 addTimerSomething("pbm_write_flag", checkDeleteAllPhoneBooks);
949 } else {
950 callback(paramD);
951 }
952 }
953 function checkDeleteAllPhoneBooks(paramD) {
954 checkPbmWriteFlag(paramD, callback, checkDeleteAllPhoneBooks);
955 }
956 }
957 function deleteAllPhoneBooksByGroup() {
958 var callback = arguments[1];
959 return stuffMake(arguments, {}, prepare, deal, null, true);
960 function prepare(values, isPost) {
961 var valueReq = {};
962 valueReq.notCallback = true;
963 valueReq.goformId = "PBM_CONTACT_DEL";
964 valueReq.del_option = "delete_all_by_group";
965 valueReq.del_all_location = 3;
966 valueReq.del_group = values.group;
967 return valueReq;
968 }
969 function deal(paramD) {
970 if (paramD && paramD.result == "success") {
971 addTimerSomething("pbm_write_flag", checkDeleteAllPhoneBooksByGroup);
972 } else {
973 callback(paramD);
974 }
975 }
976 function checkDeleteAllPhoneBooksByGroup(paramD) {
977 checkPbmWriteFlag(paramD, callback, checkDeleteAllPhoneBooksByGroup);
978 }
979 }
980 function setConnectionMode() {
981 return stuffMake(arguments, {}, prepare, deal, null, true);
982 function prepare(values, isPost) {
983 var valueReq = {};
984 valueReq.goformId = "SET_CONNECTION_MODE";
985 valueReq.ConnectionMode = values.connectionMode;
986 valueReq.roam_setting_option = values.isAllowedRoaming;
987 return valueReq;
988 }
989 function deal(paramD) {
990 if (paramD) {
991 return paramD;
992 } else {
993 callback(paramD);
994 }
995 }
996 }
997 function getConnectionMode() {
998 return stuffMake(arguments, {}, prepare, deal, null, false);
999 function prepare(values, isPost) {
1000 var valueReq = {};
1001 valueReq.cmd = "ConnectionMode";
1002 return valueReq;
1003 }
1004 function deal(paramD) {
1005 if (paramD) {
1006 var result = {};
1007 result.connectionMode = paramD.connectionMode;
1008 result.isAllowedRoaming = paramD.autoConnectWhenRoaming;
1009 return result;
1010 } else {
1011 return errUnknownObj;
1012 }
1013 }
1014 }
1015 function _getPhoneBooks(array, location) {
1016 if (array[0].data_per_page == 0) {
1017 return {
1018 "pbm_data": []
1019 };
1020 }
1021 return stuffMake(array, {}, prepare, deal, null, false);
1022 function prepare(values, isPost) {
1023 var valueReq = {};
1024 valueReq.mem_store = location;
1025 if (location == 2) {
1026 valueReq.cmd = "pbm_data_total";
1027 } else {
1028 valueReq.cmd = "pbm_data_info";
1029 }
1030 valueReq.page = values.page;
1031 valueReq.data_per_page = values.data_per_page;
1032 valueReq.orderBy = values.orderBy;
1033 valueReq.isAsc = values.isAsc;
1034 return valueReq;
1035 }
1036 function deal(paramD) {
1037 if (paramD && paramD.pbm_data) {
1038 var books = [];
1039 $.each(paramD.pbm_data, function (i) {
1040 books.push({
1041 pbm_id: paramD.pbm_data[i].pbm_id,
1042 pbm_location: paramD.pbm_data[i].pbm_location,
1043 pbm_number: paramD.pbm_data[i].pbm_number,
1044 pbm_anr: paramD.pbm_data[i].pbm_anr,
1045 pbm_anr1: paramD.pbm_data[i].pbm_anr1,
1046 pbm_group: paramD.pbm_data[i].pbm_group,
1047 pbm_name: decodeMessage(paramD.pbm_data[i].pbm_name),
1048 pbm_email: decodeMessage(paramD.pbm_data[i].pbm_email)
1049 });
1050 });
1051 return {
1052 pbm_data: books
1053 };
1054 } else {
1055 return errUnknownObj;
1056 }
1057 }
1058 }
1059 function getPhoneBooksByGroup() {
1060 if (arguments[0].data_per_page == 0) {
1061 return {
1062 "pbm_data": []
1063 };
1064 }
1065 return stuffMake(arguments, {}, prepare, deal, null, false);
1066 function prepare(values, isPost) {
1067 var valueReq = {};
1068 valueReq.cmd = "pbm_data_total";
1069 valueReq.mem_store = 3;
1070 valueReq.pbm_group = values.group;
1071 valueReq.page = values.page;
1072 valueReq.data_per_page = values.data_per_page;
1073 valueReq.orderBy = values.orderBy;
1074 valueReq.isAsc = values.isAsc;
1075 return valueReq;
1076 }
1077 function deal(paramD) {
1078 if (paramD && paramD.pbm_data) {
1079 var books = [];
1080 $.each(paramD.pbm_data, function (i) {
1081 books.push({
1082 pbm_id: paramD.pbm_data[i].pbm_id,
1083 pbm_location: paramD.pbm_data[i].pbm_location,
1084 pbm_number: paramD.pbm_data[i].pbm_number,
1085 pbm_anr: paramD.pbm_data[i].pbm_anr,
1086 pbm_anr1: paramD.pbm_data[i].pbm_anr1,
1087 pbm_group: paramD.pbm_data[i].pbm_group,
1088 pbm_name: decodeMessage(paramD.pbm_data[i].pbm_name),
1089 pbm_email: decodeMessage(paramD.pbm_data[i].pbm_email)
1090 });
1091 });
1092 return {
1093 pbm_data: books
1094 };
1095 } else {
1096 return errUnknownObj;
1097 }
1098 }
1099 }
1100 function getDevicePhoneBooks() {
1101 return _getPhoneBooks(arguments, 1);
1102 }
1103 function getSIMPhoneBooks() {
1104 return _getPhoneBooks(arguments, 0);
1105 }
1106 function getPhoneBooks() {
1107 return _getPhoneBooks(arguments, 2);
1108 }
1109 function getPhoneBookReady() {
1110 return stuffMake(arguments, {}, prepare, deal, null, false);
1111 function prepare(values, isPost) {
1112 var valueReq = {};
1113 valueReq.cmd = "pbm_init_flag";
1114 return valueReq;
1115 }
1116 function deal(paramD) {
1117 if (paramD) {
1118 return paramD;
1119 } else {
1120 return errUnknownObj;
1121 }
1122 }
1123 }
1124 function getPhoneBookCapacity(array, isSIM) {
1125 return stuffMake(array, {}, prepare, deal, null, false);
1126 function prepare(values, isPost) {
1127 var valueReq = {};
1128 valueReq.cmd = "pbm_capacity_info";
1129 if (isSIM) {
1130 valueReq.pbm_location = "pbm_sim";
1131 } else {
1132 valueReq.pbm_location = "pbm_native";
1133 }
1134 return valueReq;
1135 }
1136 function deal(paramD) {
1137 if (paramD) {
1138 return paramD;
1139 } else {
1140 return errUnknownObj;
1141 }
1142 }
1143 }
1144 function getSIMPhoneBookCapacity() {
1145 var paramD = getPhoneBookCapacity(arguments, true);
1146 return {
1147 simPbmTotalCapacity: parseInt(paramD.pbm_sim_max_record_num),
1148 simPbmUsedCapacity: parseInt(paramD.pbm_sim_used_record_num),
1149 simType: paramD.pbm_sim_type,
1150 maxNameLen: parseInt(paramD.pbm_sim_max_name_len),
1151 maxNumberLen: parseInt(paramD.pbm_sim_max_number_len) > 40 ? 40 : parseInt(paramD.pbm_sim_max_number_len)
1152 };
1153 }
1154 function getDevicePhoneBookCapacity() {
1155 var paramD = getPhoneBookCapacity(arguments, false);
1156 return {
1157 pcPbmTotalCapacity: parseInt(paramD.pbm_dev_max_record_num),
1158 pcPbmUsedCapacity: parseInt(paramD.pbm_dev_used_record_num)
1159 };
1160 }
1161 function getAttachedCableDevices() {
1162 return stuffMake(arguments, {}, prepare, deal, null, false);
1163 function prepare(values, isPost) {
1164 var obj = {
1165 cmd: "lan_station_list"
1166 };
1167 return obj;
1168 }
1169 function deal(paramD) {
1170 var deviceArr = [];
1171 var attachedDevices = paramD.lan_station_list || paramD.station_list;
1172 for (var i = 0; attachedDevices && i < attachedDevices.length; i++) {
1173 var obj = {};
1174 obj.macAddress = attachedDevices[i].mac_addr;
1175 var hostname = attachedDevices[i].hostname;
1176 obj.hostName = hostname == "" ? $.i18n.prop("unknown") : hostname;
1177 obj.ipAddress = attachedDevices[i].ip_addr;
1178 deviceArr.push(obj);
1179 }
1180 return {
1181 attachedDevices: deviceArr
1182 };
1183 }
1184 }
1185 function getCurrentlyAttachedDevicesInfo() {
1186 return stuffMake(arguments, {}, prepare, deal, null, false);
1187 function prepare(values, isPost) {
1188 var obj = {
1189 cmd: "station_list"
1190 };
1191 return obj;
1192 }
1193 function deal(paramD) {
1194 var deviceArr = [];
1195 var attachedDevices = paramD.station_list;
1196 for (var i = 0; attachedDevices && i < attachedDevices.length; i++) {
1197 var obj = {};
1198 obj.macAddress = attachedDevices[i].mac_addr;
1199 var hostname = attachedDevices[i].hostname;
1200 obj.hostName = hostname == "" ? $.i18n.prop("unknown") : hostname;
1201 obj.ipAddress = attachedDevices[i].ip_addr;
1202 deviceArr.push(obj);
1203 }
1204 return {
1205 attachedDevices: deviceArr
1206 };
1207 }
1208 }
1209
1210 function setLanguage() {
1211 return stuffMake(arguments, {}, prepare, deal, null, true);
1212 function prepare(values, isPost) {
1213 var valueReq = {};
1214 valueReq.goformId = "SET_WEB_LANGUAGE";
1215 valueReq.Language = values.Language;
1216 return valueReq;
1217 }
1218 function deal(paramD) {
1219 if (paramD) {
1220 return paramD;
1221 } else {
1222 return errUnknownObj;
1223 }
1224 }
1225 }
1226 function getLanguage() {
1227 return stuffMake(arguments, {}, prepare, deal, null, false);
1228 function prepare(values, isPost) {
1229 var valueReq = {};
1230 valueReq.cmd = "Language";
1231 valueReq.multi_data = 1;
1232 return valueReq;
1233 }
1234 function deal(paramD) {
1235 if (paramD) {
1236 var result = {};
1237 result.Language = (paramD && paramD.Language) ? paramD.Language : "en";
1238 return result;
1239 } else {
1240 return errUnknownObj;
1241 }
1242 }
1243 }
1244
1245 function setBearerPreference() {
1246 return stuffMake(arguments, {}, prepare, deal, null, true);
1247 function prepare(values, isPost) {
1248 var valueReq = {};
1249 valueReq.goformId = "SET_BEARER_PREFERENCE";
1250 valueReq.BearerPreference = values.strBearerPreference;
1251 return valueReq;
1252 }
1253 function deal(paramD) {
1254 if (paramD) {
1255 return paramD;
1256 } else {
1257 return errUnknownObj;
1258 }
1259 }
1260 }
1261 function scanForNetwork(callback) {
1262 $.post("/reqproc/proc_post", {
1263 goformId: "SCAN_NETWORK"
1264 }, function (paramD) {
1265 if (paramD.result == "success") {
1266 checkScanStatus();
1267 } else {
1268 callback(false, []);
1269 }
1270 }, "json").error(function () {
1271 callback(false, []);
1272 });
1273 function checkScanStatus() {
1274 $.getJSON("/reqproc/proc_get", {
1275 cmd: "m_netselect_status",
1276 "_": new Date().getTime()
1277 }, function (paramD) {
1278 if (paramD.m_netselect_status == "manual_selecting") {
1279 setTimeout(checkScanStatus, 1000);
1280 } else {
1281 $.getJSON("/reqproc/proc_get", {
1282 cmd: "m_netselect_contents",
1283 "_": new Date().getTime()
1284 }, function (paramD2) {
1285 if (trim(paramD2.m_netselect_contents) != "") {
1286 parseScanResult(paramD2.m_netselect_contents);
1287 } else {
1288 callback(false, []);
1289 }
1290 }).error(function () {
1291 callback(false, []);
1292 });
1293 }
1294 }).error(function () {
1295 callback(false, []);
1296 });
1297 }
1298 function parseScanResult(result) {
1299 var pattern = /([^,;]*),([^,]*),([^,]*),([^,]*),([^,;]*)/g;
1300 var listNetwork = [];
1301 var mts;
1302 var unit = result.split(";");
1303 var unitString = "";
1304 for (i = 0; i < unit.length; i++) {
1305 var unitLength = unit[i].split(",").length;
1306 if (unitLength == 4) {
1307 unitString += unit[i] + ",NON;";
1308 } else {
1309 unitString += unit[i] + ";";
1310 }
1311 }
1312 while (mts = pattern.exec(unitString)) {
1313 if (mts != null) {
1314 listNetwork.push({
1315 strShortName: mts[2].replace(/\"/g, ''),
1316 strNumeric: mts[3].replace(/\D/g, ''),
1317 nRat: parseInt(mts[4], 10),
1318 nState: parseInt(mts[1], 10),
1319 SubAct: parseInt(mts[5], 10)
1320 });
1321 }
1322 }
1323 callback(true, listNetwork);
1324 }
1325 }
1326 function getNetSelectInfo() {
1327 return stuffMake(arguments, {}, prepare, deal, null, false);
1328 function prepare(values, isPost) {
1329 var valueReq = {};
1330 valueReq.cmd = "current_network_mode,m_netselect_save,net_select_mode,m_netselect_contents,net_select,ppp_status,modem_main_state";
1331 valueReq.multi_data = 1;
1332 return valueReq;
1333 }
1334 function deal(paramD) {
1335 if (paramD) {
1336 var result = {};
1337 result.current_network_mode = paramD.current_network_mode;
1338 result.net_select_mode = paramD.net_select_mode;
1339 result.m_netselect_save = paramD.m_netselect_save;
1340 result.m_netselect_contents = paramD.m_netselect_contents;
1341 result.net_select = paramD.net_select;
1342 result.ppp_status = paramD.ppp_status;
1343 result.modem_main_state = paramD.modem_main_state;
1344 return result;
1345 } else {
1346 return errUnknownObj;
1347 }
1348 }
1349 }
mj.qu19ac6692024-08-21 19:18:36 -07001350
zw.wangcfae4372024-08-12 16:41:12 +08001351 function getSMSMessages() {
1352 return stuffMake(arguments, {}, prepare, deal, {}, false);
1353 function prepare(values, isPost) {
1354 var obj = {
1355 cmd: "sms_data_total",
1356 page: values.page,
1357 data_per_page: config.SMS_DATABASE_SORT_SUPPORT ? values.smsCount : 500,
1358 mem_store: values.nMessageStoreType,
1359 tags: values.tags,
1360 order_by: values.orderBy
1361 };
1362 return obj;
1363 }
1364 function deal(paramD) {
1365 if (paramD && paramD.messages && paramD.messages.length > 0) {
1366 return {
1367 messages: parseMessages(paramD.messages)
1368 };
1369 } else {
1370 return {
1371 messages: []
1372 };
1373 }
1374 }
1375 }
1376 function parseMessages(messages, isReport) {
1377 var result = [];
1378 for (var i = 0; i < messages.length; i++) {
1379 if (!config.SHOW_UN_COMPLETE_CONCAT_SMS && typeof messages[i].received_all_concat_sms != "undefined" && messages[i].received_all_concat_sms == '0') {
1380 continue;
1381 }
1382 var oneMessage = {};
1383 oneMessage.id = messages[i].id;
1384 oneMessage.number = messages[i].number;
1385 oneMessage.content = isReport ? messages[i].content : decodeMessageContent(messages[i].content);
1386 oneMessage.time = transTime('20' + messages[i].date);
1387 oneMessage.isNew = messages[i].tag == "1";
1388 oneMessage.groupId = messages[i].draft_group_id;
1389 oneMessage.tag = messages[i].tag;
1390 oneMessage.receivedAll = messages[i].received_all_concat_sms == '1';
1391 result.push(oneMessage);
1392 }
1393 if (!config.SMS_DATABASE_SORT_SUPPORT) {
1394 var ids = [];
1395 var tmpResult = [];
1396 for (var i = result.length; i--; ) {
1397 var n = result[i];
1398 var idx = $.inArray(n.id, ids);
1399 if (idx == -1) {
1400 ids.push(n.id);
1401 tmpResult.push(n);
1402 } else {
1403 if (n.content.length > tmpResult[idx].content.length) {
1404 tmpResult[idx] = n;
1405 }
1406 }
1407 }
1408 return _.sortBy(tmpResult, function (n) {
1409 return 0 - n.id;
1410 });
1411 } else {
1412 return result;
1413 }
1414 }
1415 function decodeMessageContent(msgContent) {
1416 return decodeMessage(escapeMessage(msgContent));
1417 }
1418 function sendSMS() {
1419 var callback = arguments[1];
1420 var errorCabllback = arguments[2] ? arguments[2] : callback;
1421 return stuffMake(arguments, {}, prepare, deal, null, true);
1422 function prepare(values, isPost) {
1423 var obj = {
1424 goformId: "SEND_SMS",
1425 notCallback: true,
1426 Number: values.number,
1427 sms_time: getCurrentTimeString(),
1428 MessageBody: escapeMessage(encodeMessage(values.message)),
1429 ID: values.id,
1430 encode_type: getEncodeType(values.message).encodeType
1431 };
1432 return obj;
1433 }
1434 function deal(paramD) {
1435 if (!paramD) {
1436 errorCabllback($.extend(errUnknownObj, {
1437 errorType: "sendFail",
1438 errorText: "send_fail_try_again"
1439 }));
1440 return;
1441 }
1442 if (paramD.result == "success") {
1443 setTimeout(function () {
1444 getSmsStatusInfo({
1445 smsCmd: 4,
1446 errorType: "sendFail",
1447 errorText: "send_fail_try_again"
1448 }, callback, errorCabllback);
1449 }, 1000);
1450 } else {
1451 errorCabllback($.extend(errUnknownObj, {
1452 errorType: "sendFail",
1453 errorText: "send_fail_try_again"
1454 }));
1455 }
1456 }
1457 }
1458 function saveSMS() {
1459 var callback = arguments[1];
1460 var errorCabllback = arguments[2] ? arguments[2] : callback;
1461 return stuffMake(arguments, {}, prepare, deal, null, true);
1462 function prepare(values, isPost) {
1463 var obj = {
1464 notCallback: true,
1465 goformId: "SAVE_SMS",
1466 SMSMessage: escapeMessage(encodeMessage(values.message)),
1467 SMSNumber: values.numbers.join(";") + ";",
1468 Index: values.index,
1469 encode_type: getEncodeType(values.message).encodeType,
1470 sms_time: values.currentTimeString,
1471 draft_group_id: values.groupId
1472 };
1473 return obj;
1474 }
1475 function deal(paramD) {
1476 if (!paramD) {
1477 errorCabllback($.extend(errUnknownObj, {
1478 errorType: "saveFail",
1479 errorText: "save_fail"
1480 }));
1481 return;
1482 }
1483 if (paramD.result == "success") {
1484 getSmsStatusInfo({
1485 smsCmd: 5,
1486 errorType: "saveFail",
1487 errorText: "save_fail"
1488 }, callback, errorCabllback);
1489 } else {
1490 errorCabllback($.extend(errUnknownObj, {
1491 errorType: "saveFail",
1492 errorText: "save_fail"
1493 }));
1494 }
1495 }
1496 }
1497 function deleteAllMessages() {
1498 var callback = arguments[1];
1499 var errorCabllback = arguments[2] ? arguments[2] : callback;
1500 return stuffMake(arguments, {}, prepare, deal, null, true);
1501 function prepare(values, isPost) {
1502 var obj = {
1503 goformId: "ALL_DELETE_SMS",
1504 notCallback: true,
1505 which_cgi: values.location
1506 };
1507 return obj;
1508 }
1509 function deal(paramD) {
1510 if (!paramD) {
1511 errorCabllback($.extend(errUnknownObj, {
1512 errorType: "deleteFail",
1513 errorText: "delete_fail_try_again"
1514 }));
1515 return;
1516 }
1517 if (paramD.result == "success") {
1518 addTimerSomething("sms_cmd_status_info", checkDeleteStatus);
1519 } else {
1520 errorCabllback($.extend(errUnknownObj, {
1521 errorType: "deleteFail",
1522 errorText: "delete_fail_try_again"
1523 }));
1524 }
1525 }
1526 function checkDeleteStatus(paramD) {
1527 var status = paramD.sms_cmd_status_info;
1528 if (status == "2") {
1529 removeTimerSomething("sms_cmd_status_info", checkDeleteStatus);
1530 errorCabllback($.extend(errUnknownObj, {
1531 errorType: "deleteFail",
1532 errorText: "delete_fail_try_again"
1533 }));
1534 } else if (status == "3") {
1535 removeTimerSomething("sms_cmd_status_info", checkDeleteStatus);
1536 callback({
1537 result: true
1538 });
1539 }
1540 }
1541 }
1542 function deleteMessage() {
1543 var callback = arguments[1];
1544 var errorCabllback = arguments[2] ? arguments[2] : callback;
1545 return stuffMake(arguments, {}, prepare, deal, null, true);
1546 function prepare(values, isPost) {
1547 var msgIds = values.ids.join(";") + ";";
1548 var obj = {
1549 goformId: "DELETE_SMS",
1550 msg_id: msgIds,
1551 notCallback: true
1552 };
1553 return obj;
1554 }
1555 function deal(paramD) {
1556 if (!paramD) {
1557 errorCabllback($.extend(errUnknownObj, {
1558 errorType: "deleteFail",
1559 errorText: "delete_fail_try_again"
1560 }));
1561 return;
1562 }
1563 if (paramD.result == "success") {
1564 getSmsStatusInfo({
1565 smsCmd: 6,
1566 errorType: "deleteFail",
1567 errorText: "delete_fail_try_again"
1568 }, callback, errorCabllback);
1569 } else {
1570 errorCabllback($.extend(errUnknownObj, {
1571 errorType: "deleteFail",
1572 errorText: "delete_fail_try_again"
1573 }));
1574 }
1575 }
1576 }
1577 function getSmsStatusInfo(obj, callback, errorCabllback) {
1578 reqAsync({
1579 cmd: "sms_cmd_status_info",
1580 sms_cmd: obj.smsCmd,
1581 }, function (paramD) {
1582 if (paramD) {
1583 var status = paramD.sms_cmd_status_result;
1584 if (status == "2") {
1585 errorCabllback($.extend(errUnknownObj, {
1586 errorType: obj.errorType,
1587 errorText: obj.errorText
1588 }));
1589 } else if (status == "3") {
1590 callback({
1591 result: "success"
1592 });
1593 } else {
1594 window.setTimeout(function () {
1595 getSmsStatusInfo(obj, callback, errorCabllback);
1596 }, 1000);
1597 }
1598 } else {
1599 errorCabllback($.extend(errUnknownObj, {
1600 errorType: obj.errorType,
1601 errorText: obj.errorText
1602 }));
1603 }
1604 }, function (paramD) {
1605 errorCabllback($.extend(errUnknownObj, {
1606 errorType: obj.errorType,
1607 errorText: obj.errorText
1608 }));
1609 }, false);
1610 }
1611 function getSMSReady() {
1612 if (config.smsIsReady) {
1613 var callback = arguments[1];
1614 if (callback) {
1615 return callback({
1616 "sms_cmd": "1",
1617 "sms_cmd_status_result": "3"
1618 });
1619 } else {
1620 return {
1621 "sms_cmd": "1",
1622 "sms_cmd_status_result": "3"
1623 };
1624 }
1625 } else {
1626 return stuffMake(arguments, {}, prepare, deal, null, false);
1627 }
1628 function prepare(values, isPost) {
1629 var valueReq = {};
1630 valueReq.cmd = "sms_cmd_status_info";
1631 valueReq.sms_cmd = 1;
1632 return valueReq;
1633 }
1634 function deal(paramD) {
1635 if (paramD) {
1636 if (paramD.sms_cmd_status_result == "3") {
1637 config.smsIsReady = true;
1638 }
1639 return paramD;
1640 } else {
1641 return errUnknownObj;
1642 }
1643 }
1644 }
1645 function setSmsRead() {
1646 return stuffMake(arguments, {}, prepare, deal, null, true);
1647 function prepare(values, isPost) {
1648 var msgIds = values.ids.join(";");
1649 if (values.ids.length > 0) {
1650 msgIds += ";";
1651 }
1652 var obj = {
1653 goformId: "SET_MSG_READ",
1654 msg_id: msgIds,
1655 tag: 0
1656 };
1657 return obj;
1658 }
1659 function deal(paramD) {
1660 if (paramD.result == "success") {
1661 return {
1662 result: true
1663 };
1664 } else {
1665 return {
1666 result: false
1667 };
1668 }
1669 }
1670 }
1671 function getSMSDeliveryReport() {
1672 return stuffMake(arguments, {}, prepare, deal, {}, false);
1673 function prepare(values, isPost) {
1674 var obj = {
1675 cmd: "sms_status_rpt_data",
1676 page: values.page,
1677 data_per_page: values.smsCount
1678 };
1679 return obj;
1680 }
1681 function deal(paramD) {
1682 if (paramD) {
1683 return {
1684 messages: parseMessages(paramD.messages, true)
1685 };
1686 } else {
1687 return errUnknownObj;
1688 }
1689 }
1690 }
1691 function logout() {
1692 return stuffMake(arguments, {}, prepare, deal, null, true);
1693 function prepare(values, isPost) {
1694 var obj = $.extend({}, values);
1695 obj.goformId = "LOGOUT";
1696 return obj;
1697 }
1698 function deal(paramD) {
1699 if (paramD && paramD.result == "success") {
1700 informationAll.isLoggedIn = false;
1701 return {
1702 result: true
1703 };
1704 } else {
1705 return $.extend(errUnknownObj, {
1706 errorType: "loggedOutError"
1707 });
1708 }
1709 }
1710 }
1711 function changeManageInfo() {
1712 return stuffMake(arguments, {}, prepare, deal, null, true);
1713 function prepare(values, isPost) {
1714 var obj = {};
1715 obj.newPassword = config.PASSWORD_ENCODE ? Base64.encode(values.newValue) : values.newValue;
1716 obj.oldPassword = config.PASSWORD_ENCODE ? Base64.encode(values.oldValue) : values.oldValue;
1717 obj.goformId = "CHANGE_PASSWORD";
1718 return obj;
1719 }
1720 function deal(paramD) {
1721 if (paramD && paramD.result === "success") {
1722 return {
1723 result: true
1724 };
1725 } else {
1726 return $.extend(errUnknownObj, {
1727 errorType: "badPassword"
1728 });
1729 }
1730 }
1731 }
1732 function getPinData() {
1733 return stuffMake(arguments, {}, prepare, deal, null, false);
1734 function prepare(values, isPost) {
1735 var valueReq = {};
1736 valueReq.cmd = "pinnumber,pin_status,puknumber";
1737 valueReq.multi_data = 1;
1738 return valueReq;
1739 }
1740 function deal(paramD) {
1741 if (paramD) {
1742 return paramD;
1743 } else {
1744 return errUnknownObj;
1745 }
1746 }
1747 }
1748 function enablePin() {
1749 return stuffMake(arguments, {}, prepare, deal, null, true);
1750 function prepare(values, isPost) {
1751 var obj = {};
1752 obj.goformId = "ENABLE_PIN";
1753 obj.OldPinNumber = values.oldPin;
1754 return obj;
1755 }
1756 function deal(paramD) {
1757 if (paramD && paramD.result === "success") {
1758 return {
1759 result: true
1760 };
1761 } else {
1762 return {
1763 result: false
1764 };
1765 }
1766 }
1767 }
1768 function disablePin() {
1769 return stuffMake(arguments, {}, prepare, deal, null, true);
1770 function prepare(values, isPost) {
1771 var obj = {};
1772 obj.goformId = "DISABLE_PIN";
1773 obj.OldPinNumber = values.oldPin;
1774 return obj;
1775 }
1776 function deal(paramD) {
1777 if (paramD && paramD.result === "success") {
1778 return {
1779 result: true
1780 };
1781 } else {
1782 return {
1783 result: false
1784 };
1785 }
1786 }
1787 }
1788 function changePin() {
1789 return stuffMake(arguments, {}, prepare, deal, null, true);
1790 function prepare(values, isPost) {
1791 var obj = {};
1792 obj.goformId = "ENABLE_PIN";
1793 obj.OldPinNumber = values.oldPin;
1794 obj.NewPinNumber = values.newPin;
1795 return obj;
1796 }
1797 function deal(paramD) {
1798 if (paramD && paramD.result === "success") {
1799 return {
1800 result: true
1801 };
1802 } else {
1803 return {
1804 result: false
1805 };
1806 }
1807 }
1808 }
1809 function getLanInfo() {
1810 return stuffMake(arguments, {}, prepare, deal, null, false);
1811 function prepare(values, isPost) {
1812 var valueReq = {};
1813 valueReq.cmd = "lan_ipaddr,lan_netmask,mac_address,dhcpEnabled,dhcpStart,dhcpEnd,dhcpLease_hour";
1814 valueReq.multi_data = 1;
1815 return valueReq;
1816 }
1817 function deal(paramD) {
1818 if (paramD) {
1819 var result = {};
1820 result.ipAddress = paramD.lan_ipaddr;
1821 result.subnetMask = paramD.lan_netmask;
1822 result.macAddress = paramD.mac_address;
1823 result.dhcpServer = paramD.dhcpEnabled;
1824 result.dhcpStart = paramD.dhcpStart;
1825 result.dhcpEnd = paramD.dhcpEnd;
1826 result.dhcpLease = parseInt(paramD.dhcpLease_hour, 10);
1827 return result;
1828 } else {
1829 return errUnknownObj;
1830 }
1831 }
1832 }
1833 function setLanInfo() {
1834 return stuffMake(arguments, {}, prepare, deal, null, true);
1835 function prepare(values, isPost) {
1836 var valueReq = {};
1837 valueReq.goformId = "DHCP_SETTING";
1838 valueReq.lanIp = values.ipAddress;
1839 valueReq.lanNetmask = values.subnetMask;
1840 valueReq.lanDhcpType = values.dhcpServer == "1" ? "SERVER" : "DISABLE";
1841 if (valueReq.lanDhcpType == "SERVER") {
1842 valueReq.dhcpStart = values.dhcpStart;
1843 valueReq.dhcpEnd = values.dhcpEnd;
1844 valueReq.dhcpLease = values.dhcpLease;
1845 }
1846 valueReq.dhcp_reboot_flag = 1;
1847 return valueReq;
1848 }
1849 function deal(paramD) {
1850 if (paramD) {
1851 return paramD;
1852 } else {
1853 return errUnknownObj;
1854 }
1855 }
1856 }
1857 function getSmsSetting() {
1858 return stuffMake(arguments, {}, prepare, deal, null, false);
1859 function prepare(values, isPost) {
1860 var valueReq = {};
1861 valueReq.cmd = "sms_parameter_info";
1862 return valueReq;
1863 }
1864 function deal(paramD) {
1865 if (paramD) {
1866 var result = {};
1867 result.centerNumber = paramD.sms_para_sca;
1868 result.memStroe = paramD.sms_para_mem_store;
1869 result.deliveryReport = paramD.sms_para_status_report;
1870 switch (parseInt(paramD.sms_para_validity_period, 10)) {
1871 case 143:
1872 result.validity = "twelve_hours";
1873 break;
1874 case 167:
1875 result.validity = "one_day";
1876 break;
1877 case 173:
1878 result.validity = "one_week";
1879 break;
1880 case 244:
1881 result.validity = "largest";
1882 break;
1883 case 255:
1884 result.validity = "largest";
1885 break;
1886 default:
1887 result.validity = "twelve_hours";
1888 break;
1889 }
1890 return result;
1891 } else {
1892 return errUnknownObj;
1893 }
1894 }
1895 }
1896 function setSmsSetting() {
1897 var callback = arguments[1];
1898 var errorCabllback = arguments[2] ? arguments[2] : callback;
1899 return stuffMake(arguments, {}, prepare, deal, null, true);
1900 function prepare(values, isPost) {
1901 var valueReq = {};
1902 valueReq.goformId = "SET_MESSAGE_CENTER";
1903 valueReq.save_time = values.validity;
1904 valueReq.MessageCenter = values.centerNumber;
1905 valueReq.status_save = values.deliveryReport;
1906 valueReq.save_location = 'native';
1907 valueReq.notCallback = true;
1908 return valueReq;
1909 }
1910 function deal(paramD) {
1911 if (!paramD) {
1912 errorCabllback($.extend(errUnknownObj, {
1913 errorType: "smsSettingFail",
1914 errorText: "error_info"
1915 }));
1916 return;
1917 }
1918 if (paramD.result == "success") {
1919 getSmsStatusInfo({
1920 smsCmd: 3,
1921 errorType: "smsSettingFail",
1922 errorText: "error_info"
1923 }, callback, errorCabllback);
1924 } else {
1925 errorCabllback($.extend(errUnknownObj, {
1926 errorType: "deleteFail",
1927 errorText: "delete_fail_try_again"
1928 }));
1929 }
1930 }
1931 }
1932 function restoreFactorySettings() {
1933 var preErrorObj = {};
1934 if (config.HAS_PARENTAL_CONTROL && config.currentUserInChildGroup != false) {
1935 preErrorObj = {
1936 errorType: 'no_auth'
1937 };
1938 }
1939 return stuffMake(arguments, preErrorObj, prepare, deal, null, true);
1940 function prepare(values, isPost) {
1941 var valueReq = {};
1942 valueReq.goformId = "RESTORE_FACTORY_SETTINGS";
1943 return valueReq;
1944 }
1945 function deal(paramD) {
1946 if (paramD) {
1947 return paramD;
1948 } else {
1949 return errUnknownObj;
1950 }
1951 }
1952 }
1953 function checkRestoreStatus(successCallback) {
1954 var valueReq = {};
1955 valueReq.cmd = "restore_flag";
1956 valueReq.multi_data = 1;
1957 reqAsync(valueReq, function (paramD) {
1958 if (paramD && paramD.restore_flag === "1") {
1959 successCallback();
1960 } else {
1961 setTimeout(function () {
1962 checkRestoreStatus(successCallback);
1963 }, 5000);
1964 }
1965 }, function () {
1966 setTimeout(function () {
1967 checkRestoreStatus(successCallback);
1968 }, 5000);
1969 }, false);
1970 }
1971 function getWpsInfo() {
1972 return stuffMake(arguments, {}, prepare, deal, null, false);
1973 function prepare(values, isPost) {
1974 var valueReq = {};
1975 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";
1976 valueReq.multi_data = 1;
1977 return valueReq;
1978 }
1979 function deal(paramD) {
1980 if (paramD) {
1981 var result = {};
1982 result.wpsFlag = paramD.WscModeOption;
1983 result.authMode = paramD.AuthMode;
1984 result.wpsType = paramD.wps_mode;
1985 result.radioFlag = paramD.wifi_cur_state == "1" ? "1" : "0";
1986 result.encrypType = paramD.EncrypType;
1987 result.wpsSSID = paramD.WPS_SSID;
1988 result.ssidEnable = paramD.m_ssid_enable;
1989 result.ssid = paramD.SSID1;
1990 result.multiSSID = paramD.m_SSID;
1991 result.m_encrypType = paramD.m_EncrypType;
1992 result.wifi_wps_index = paramD.wifi_wps_index;
1993 result.AuthMode = paramD.AuthMode;
1994 result.m_AuthMode = paramD.m_AuthMode;
1995 result.ap_station_enable = paramD.wifi_sta_connection;
1996 return result;
1997 } else {
1998 return errUnknownObj;
1999 }
2000 }
2001 }
2002 function openWps() {
2003 return stuffMake(arguments, {}, prepare, deal, null, true);
2004 function prepare(values, isPost) {
2005 var valueReq = {};
2006 valueReq.goformId = "WIFI_WPS_SET";
2007 valueReq.WPS_SSID = values.wpsSSID;
2008 valueReq.wps_mode = values.wpsType;
2009 valueReq.wifi_wps_index = values.wpsIndex;
2010 if (valueReq.wps_mode == 'PIN') {
2011 valueReq.wps_pin = values.wpsPin;
2012 }
2013 return valueReq;
2014 }
2015 function deal(paramD) {
2016 if (paramD) {
2017 return paramD;
2018 } else {
2019 return errUnknownObj;
2020 }
2021 }
2022 }
2023 function openWps_5g() {
2024 return stuffMake(arguments, {}, prepare, deal, null, true);
2025 function prepare(values, isPost) {
2026 var valueReq = {};
2027 valueReq.goformId = "WIFI_M_WPS_SET";
2028 valueReq.m_WPS_SSID = values.wpsSSID;
2029 valueReq.m_wps_mode = values.wpsType;
2030 valueReq.m_wifi_wps_index = values.wpsIndex;
2031 if (valueReq.m_wps_mode == 'PIN') {
2032 valueReq.m_wps_pin = values.wpsPin;
2033 }
2034 return valueReq;
2035 }
2036 function deal(paramD) {
2037 if (paramD) {
2038 return paramD;
2039 } else {
2040 return errUnknownObj;
2041 }
2042 }
2043 }
2044 function getSleepMode() {
2045 return stuffMake(arguments, {}, prepare, deal, null, false);
2046 function prepare(values, isPost) {
2047 var valueReq = {};
mj.qu19ac6692024-08-21 19:18:36 -07002048 valueReq.cmd = "wifi_sleep_mode,Sleep_interval";
2049 valueReq.multi_data = 1;
zw.wangcfae4372024-08-12 16:41:12 +08002050 return valueReq;
2051 }
2052 function deal(paramD) {
2053 if (paramD) {
2054 var result = {};
mj.qu19ac6692024-08-21 19:18:36 -07002055 result.wifiSleepMode = paramD.wifi_sleep_mode;
zw.wangcfae4372024-08-12 16:41:12 +08002056 result.sleepMode = paramD.Sleep_interval;
2057 return result;
2058 } else {
2059 return errUnknownObj;
2060 }
2061 }
2062 }
2063 function setSleepMode() {
2064 return stuffMake(arguments, {}, prepare, deal, null, true);
2065 function prepare(values, isPost) {
2066 var valueReq = {};
2067 valueReq.goformId = "SET_WIFI_SLEEP_INFO";
mj.qu19ac6692024-08-21 19:18:36 -07002068 valueReq.sysWifiSleepMode = values.wifiSleepMode;
zw.wangcfae4372024-08-12 16:41:12 +08002069 valueReq.sysIdleTimeToSleep = values.sleepMode;
2070 return valueReq;
2071 }
2072 function deal(paramD) {
2073 if (paramD) {
2074 return paramD;
2075 } else {
2076 return errUnknownObj;
2077 }
2078 }
2079 }
2080 function getSysSecurity() {
2081 return stuffMake(arguments, {}, prepare, deal, null, false);
2082 function prepare(values, isPost) {
2083 var valueReq = {};
2084 valueReq.cmd = "RemoteManagement,WANPingFilter";
2085 valueReq.multi_data = 1;
2086 return valueReq;
2087 }
2088 function deal(paramD) {
2089 if (paramD) {
2090 var result = {};
2091 result.remoteFlag = paramD.RemoteManagement == "1" ? "1" : "0";
2092 result.pingFlag = paramD.WANPingFilter == "1" ? "1" : "0";
2093 return result;
2094 } else {
2095 return errUnknownObj;
2096 }
2097 }
2098 }
2099 function setSysSecurity() {
2100 return stuffMake(arguments, {}, prepare, deal, null, true);
2101 function prepare(values, isPost) {
2102 var valueReq = {};
2103 valueReq.goformId = "FW_SYS";
2104 valueReq.remoteManagementEnabled = values.remoteFlag;
2105 valueReq.pingFrmWANFilterEnabled = values.pingFlag;
2106 return valueReq;
2107 }
2108 function deal(paramD) {
2109 if (paramD) {
2110 return paramD;
2111 } else {
2112 return errUnknownObj;
2113 }
2114 }
2115 }
2116 function getPortForward() {
2117 return stuffMake(arguments, {}, prepare, deal, null, false);
2118 function prepare(values, isPost) {
2119 var valueReq = {};
2120 valueReq.cmd = "PortForwardEnable,PortForwardRules_0,PortForwardRules_1,PortForwardRules_2,PortForwardRules_3,PortForwardRules_4,PortForwardRules_5,PortForwardRules_6,PortForwardRules_7,PortForwardRules_8,PortForwardRules_9";
2121 valueReq.multi_data = 1;
2122 return valueReq;
2123 }
2124 function deal(paramD) {
2125 if (paramD) {
2126 var result = {};
2127 result.portForwardEnable = paramD.PortForwardEnable;
2128 var rules = [];
2129 if (paramD.PortForwardRules_0 != "") {
2130 rules.push([0, paramD.PortForwardRules_0]);
2131 }
2132 if (paramD.PortForwardRules_1 != "") {
2133 rules.push([1, paramD.PortForwardRules_1]);
2134 }
2135 if (paramD.PortForwardRules_2 != "") {
2136 rules.push([2, paramD.PortForwardRules_2]);
2137 }
2138 if (paramD.PortForwardRules_3 != "") {
2139 rules.push([3, paramD.PortForwardRules_3]);
2140 }
2141 if (paramD.PortForwardRules_4 != "") {
2142 rules.push([4, paramD.PortForwardRules_4]);
2143 }
2144 if (paramD.PortForwardRules_5 != "") {
2145 rules.push([5, paramD.PortForwardRules_5]);
2146 }
2147 if (paramD.PortForwardRules_6 != "") {
2148 rules.push([6, paramD.PortForwardRules_6]);
2149 }
2150 if (paramD.PortForwardRules_7 != "") {
2151 rules.push([7, paramD.PortForwardRules_7]);
2152 }
2153 if (paramD.PortForwardRules_8 != "") {
2154 rules.push([8, paramD.PortForwardRules_8]);
2155 }
2156 if (paramD.PortForwardRules_9 != "") {
2157 rules.push([9, paramD.PortForwardRules_9]);
2158 }
2159 result.portForwardRules = parsePortForwardRules(rules);
2160 return result;
2161 } else {
2162 return errUnknownObj;
2163 }
2164 }
2165 function parsePortForwardRules(paramD) {
2166 var rules = [];
2167 if (paramD && paramD.length > 0) {
2168 for (var i = 0; i < paramD.length; i++) {
2169 var aRule = {};
2170 var elements = paramD[i][1].split(",");
2171 aRule.index = paramD[i][0];
2172 aRule.ipAddress = elements[0];
2173 aRule.portRange = elements[1] + ' - ' + elements[2];
2174 aRule.protocol = transProtocol(elements[3]);
2175 aRule.comment = elements[4];
2176 rules.push(aRule);
2177 }
2178 }
2179 return rules;
2180 }
2181 }
2182 function setPortForward() {
2183 return stuffMake(arguments, {}, prepare, deal, null, true);
2184 function prepare(values, isPost) {
2185 var valueReq = {};
2186 valueReq.goformId = "FW_FORWARD_ADD";
2187 valueReq.ipAddress = values.ipAddress;
2188 valueReq.portStart = values.portStart;
2189 valueReq.portEnd = values.portEnd;
2190 valueReq.protocol = values.protocol;
2191 valueReq.comment = values.comment;
2192 return valueReq;
2193 }
2194 function deal(paramD) {
2195 if (paramD) {
2196 return paramD;
2197 } else {
2198 return errUnknownObj;
2199 }
2200 }
2201 }
2202 function deleteForwardRules() {
2203 return stuffMake(arguments, {}, prepare, deal, null, true);
2204 function prepare(values, isPost) {
2205 var valueReq = {};
2206 valueReq.goformId = "FW_FORWARD_DEL";
2207 valueReq.delete_id = values.indexs.join(';') + ";";
2208 return valueReq;
2209 }
2210 function deal(paramD) {
2211 if (paramD) {
2212 return paramD;
2213 } else {
2214 return errUnknownObj;
2215 }
2216 }
2217 }
2218 function enableVirtualServer() {
2219 return stuffMake(arguments, {}, prepare, deal, null, true);
2220 function prepare(values, isPost) {
2221 var valueReq = {};
2222 valueReq.goformId = "VIRTUAL_SERVER";
2223 valueReq.PortForwardEnable = values.portForwardEnable;
2224 return valueReq;
2225 }
2226 function deal(paramD) {
2227 if (paramD) {
2228 return paramD;
2229 } else {
2230 return errUnknownObj;
2231 }
2232 }
2233 }
2234 function wifiDecode(fact1,fact2,encode_aes) {//wifiDecode(paramD.rnum_js,paramD.imei,paramD.WPAPSK1_enaes,paramD.m_WPAPSK1_enaes);
2235 var kstr = fact1 + fact2 + "FFFFFFFFFFFFFFFFFFFFFFFF";
2236 var kstr_final;
2237 var kiv_final;
2238
2239 kstr_final = kstr.substring(0, 24);
2240 kiv_final = kstr.substring(0, 16);
2241
2242 var tkey = CryptoJS.enc.Latin1.parse(kstr_final);
2243 var tiv = CryptoJS.enc.Latin1.parse(kiv_final);
2244 var decdata = CryptoJS.AES.decrypt(encode_aes, tkey, {
2245 iv: tiv,
2246 mode: CryptoJS.mode.CBC,
2247 padding: CryptoJS.pad.ZeroPadding
2248 }).toString(CryptoJS.enc.Utf8);
2249
2250 return decdata;
2251 }
2252 function getQuickSettingInfo() {
2253 return stuffMake(arguments, {}, prepare, deal, null, false);
2254 function prepare(values, isPost) {
2255 var valueReq = {};
2256 var wpask = config.PASSWORD_ENCODE ? ",WPAPSK1_encode" : ",imei,rnum_js,WPAPSK1_enaes";
2257 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";
2258 valueReq.multi_data = 1;
2259 return valueReq;
2260 }
2261 function deal(paramD) {
2262 if (paramD) {
2263 if (config.PASSWORD_ENCODE) {
2264 paramD.WPAPSK1 = Base64.decode(paramD.WPAPSK1_encode);
2265 } else {
2266 paramD.WPAPSK1 = wifiDecode(paramD.rnum_js,paramD.imei,paramD.WPAPSK1_enaes);
2267 }
2268 return paramD;
2269 } else {
2270 return errUnknownObj;
2271 }
2272 }
2273 }
2274 function setQuickSetting4IPv6() {
2275 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
2276 function prepare(values) {
2277 var valueReq = {
2278 goformId: "QUICK_SETUP_EX",
2279 index: values.apn_index,
2280 pdp_type: values.pdp_type,
2281 apn_mode: values.apnMode,
2282 profile_name: values.profile_name,
2283 wan_apn: values.wan_apn,
2284 ppp_auth_mode: values.ppp_auth_mode,
2285 ppp_username: values.ppp_username,
2286 ppp_passtmp: values.ppp_passtmp,
2287 ipv6_wan_apn: values.ipv6_wan_apn,
2288 ipv6_ppp_auth_mode: values.ipv6_ppp_auth_mode,
2289 ipv6_ppp_username: values.ipv6_ppp_username,
2290 ipv6_ppp_passtmp: values.ipv6_ppp_passtmp,
2291 SSID_name: values.SSID_name,
2292 SSID_Broadcast: values.SSID_Broadcast,
2293 Encryption_Mode_hid: values.Encryption_Mode_hid,
2294 security_shared_mode: values.security_shared_mode,
2295 WPA_PreShared_Key: config.PASSWORD_ENCODE ? Base64.encode(values.WPA_PreShared_Key) : values.WPA_PreShared_Key,
2296 wep_default_key: values.wep_default_key,
2297 WPA_ENCRYPTION_hid: values.WPA_ENCRYPTION_hid
2298 }
2299 valueReq.wep_key_1 = values.wep_key_1;
2300 valueReq.wep_key_2 = values.wep_key_2;
2301 valueReq.wep_key_3 = values.wep_key_3;
2302 valueReq.wep_key_4 = values.wep_key_4;
2303 if (values.wep_default_key == '1') {
2304 valueReq.WEP2Select = values.WEP2Select;
2305 } else if (values.wep_default_key == '2') {
2306 valueReq.WEP3Select = values.WEP3Select;
2307 } else if (values.wep_default_key == '3') {
2308 valueReq.WEP4Select = values.WEP4Select;
2309 } else {
2310 valueReq.WEP1Select = values.WEP1Select;
2311 }
2312 return valueReq;
2313 }
2314 function deal(paramD) {
2315 if (paramD) {
2316 return paramD;
2317 } else {
2318 return $.extend(errUnknownObj, {
2319 errorType: "SetSetUpError"
2320 });
2321 }
2322 }
2323 }
2324 function stuffMakeAndCheckServerIsOnline(arg, prepare, deal) {
2325 var isServerOnline = false;
2326 var isCallbackExecuted = false;
2327 var values = prepare(arg[0]);
2328 var callback = arg[1];
2329 var successCallback = function (paramD) {
2330 isServerOnline = true;
2331 if (!isCallbackExecuted && callback) {
2332 callback(deal(paramD));
2333 }
2334 isCallbackExecuted = true;
2335 };
2336 var errorMethod = arg[2];
2337 var errorCallback = function () {
2338 isServerOnline = true;
2339 if (errorMethod) {
2340 errorMethod();
2341 }
2342 };
2343 reqAsync(values, successCallback, errorCallback, true);
2344 addTimeout(function () {
2345 if (isServerOnline == false) {
2346 var timer = addInterval(function () {
2347 if (isServerOnline == false) {
2348 getLanguage({}, function (paramD) {
2349 window.clearInterval(timer);
2350 successCallback({
2351 result: "success"
2352 });
2353 });
2354 }
2355 }, 1000);
2356 }
2357 }, 5000);
2358 }
2359 function getSDConfiguration() {
2360 return stuffMake(arguments, {}, prepare, deal, null, false);
2361 function prepare(values, isPost) {
2362 var valueReq = {
2363 cmd: "sdcard_mode_option,sd_card_state,HTTP_SHARE_STATUS,HTTP_SHARE_WR_AUTH,HTTP_SHARE_FILE",
2364 multi_data: 1
2365 };
2366 return valueReq;
2367 }
2368 function deal(paramD) {
2369 if (paramD) {
2370 var fileToShare;
2371 if ("mmc2" == paramD.HTTP_SHARE_FILE || "/mmc2" == paramD.HTTP_SHARE_FILE || "/mmc2/" == paramD.HTTP_SHARE_FILE) {
2372 fileToShare = "1";
2373 } else {
2374 fileToShare = "0";
2375 }
2376 var result = {
2377 sd_mode: paramD.sdcard_mode_option == "1" ? "0" : "1",
2378 sd_status: paramD.sd_card_state,
2379 share_status: paramD.HTTP_SHARE_STATUS == "Enabled" ? "1" : "0",
2380 share_auth: paramD.HTTP_SHARE_WR_AUTH == "readOnly" ? "0" : "1",
2381 file_to_share: fileToShare,
2382 share_file: paramD.HTTP_SHARE_FILE
2383 };
2384 return result;
2385 } else {
2386 return errUnknownObj;
2387 }
2388 }
2389 }
2390 function setSdCardMode() {
2391 return stuffMake(arguments, {}, prepare, deal, null, true);
2392 function prepare(values, isPost) {
2393 var valueReq = {
2394 goformId: "HTTPSHARE_MODE_SET",
2395 mode_set: values.mode == "0" ? "http_share_mode" : "usb_mode"
2396 };
2397 return valueReq;
2398 }
2399 function deal(paramD) {
2400 if (paramD && paramD.result == 'success') {
2401 return {
2402 result: 'success'
2403 };
2404 } else if (paramD && paramD.result == 'processing') {
2405 return {
2406 result: 'processing'
2407 };
2408 } else {
2409 return {
2410 result: false
2411 };
2412 }
2413 }
2414 }
2415 function checkFileExists() {
2416 return stuffMake(arguments, {}, prepare, deal, null, true);
2417 function prepare(values, isPost) {
2418 var valueReq = {
2419 goformId: "GOFORM_HTTPSHARE_CHECK_FILE",
2420 path_SD_CARD: values.path
2421 };
2422 return valueReq;
2423 }
2424 function deal(paramD) {
2425 if (paramD) {
2426 if (paramD.result == "no_sdcard") {
2427 return {
2428 status: "no_sdcard"
2429 };
2430 } else if (paramD.result == "noexist") {
2431 return {
2432 status: "noexist"
2433 };
2434 } else if (paramD.result == "processing") {
2435 return {
2436 status: "processing"
2437 };
2438 } else {
2439 return {
2440 status: "exist"
2441 };
2442 }
2443 } else {
2444 return errUnknownObj;
2445 }
2446 }
2447 }
2448 function getFileList() {
2449 return stuffMake(arguments, {}, prepare, deal, null, true);
2450 function prepare(values, isPost) {
2451 var valueReq = {
2452 goformId: "HTTPSHARE_ENTERFOLD",
2453 path_SD_CARD: values.path,
2454 indexPage: values.index
2455 };
2456 return valueReq;
2457 }
2458 function deal(paramD) {
2459 if (paramD) {
2460 if (paramD.result == 'failure') {
2461 return $.extend(errUnknownObj, {
2462 errorType: "get_file_list_failure"
2463 });
2464 } else if (paramD.result == "no_sdcard") {
2465 return $.extend(errUnknownObj, {
2466 errorType: "no_sdcard"
2467 });
2468 } else {
2469 return parseSdCardFile(paramD.result);
2470 }
2471 } else {
2472 return errUnknownObj;
2473 }
2474 }
2475 function parseSdCardFile(result) {
2476 var fileInfo = {};
2477 fileInfo.totalRecord = result.totalRecord;
2478 var fileArr = [];
2479 var details = result.fileInfo;
2480 for (var i = 0; details && i < details.length; i++) {
2481 if (details[i].fileName == "") {
2482 continue;
2483 }
2484 var obj = {};
2485 obj.fileName = details[i].fileName;
2486 obj.attribute = details[i].attribute;
2487 obj.size = details[i].size;
2488 obj.lastUpdateTime = details[i].lastUpdateTime;
2489 fileArr.push(obj);
2490 }
2491 fileInfo.details = fileArr;
2492 return fileInfo;
2493 }
2494 }
2495 function fileRename() {
2496 return stuffMake(arguments, {}, prepare, deal, null, true);
2497 function prepare(values, isPost) {
2498 var d = new Date();
2499 var currentTime = d.getTime();
2500 var zoneOffsetSeconds = d.getTimezoneOffset() * 60;
2501 return {
2502 goformId: "HTTPSHARE_FILE_RENAME",
2503 path_SD_CARD: values.path,
2504 OLD_NAME_SD_CARD: values.oldPath,
2505 NEW_NAME_SD_CARD: values.newPath,
2506 path_SD_CARD_time: transUnixTime(currentTime),
2507 path_SD_CARD_time_unix: Math.round((currentTime - zoneOffsetSeconds * 1000) / 1e3)
2508 };
2509 }
2510 function deal(paramD) {
2511 if (paramD) {
2512 if (paramD.result == "success") {
2513 return {
2514 result: true
2515 };
2516 } else if (paramD.result == "no_sdcard") {
2517 return $.extend(errUnknownObj, {
2518 errorType: "no_sdcard"
2519 });
2520 } else if (paramD.result == "noexist") {
2521 return $.extend(errUnknownObj, {
2522 errorType: "no_exist"
2523 });
2524 } else if (paramD.result == "processing") {
2525 return $.extend(errUnknownObj, {
2526 errorType: "sd_file_processing_cant_rename"
2527 });
2528 } else {
2529 return {
2530 result: false
2531 };
2532 }
2533 } else {
2534 return errUnknownObj;
2535 }
2536 }
2537 }
2538 function getSdMemorySizes() {
2539 return stuffMake(arguments, {}, prepare, deal, null, false);
2540 function prepare(values, isPost) {
2541 var valueReq = {
2542 cmd: "HTTPSHARE_GETCARD_VALUE"
2543 };
2544 return valueReq;
2545 }
2546 function deal(paramD) {
2547 if (!paramD || (paramD.result && paramD.result == "no_sdcard")) {
2548 return $.extend(errUnknownObj, {
2549 errorType: "no_sdcard"
2550 });
2551 } else {
2552 return {
2553 totalMemorySize: paramD.sd_card_total_size == "" ? 0 : paramD.sd_card_total_size * 32 * 1024,
2554 availableMemorySize: paramD.sd_card_avi_space == "" ? 0 : paramD.sd_card_avi_space * 32 * 1024
2555 };
2556 }
2557 }
2558 }
2559 function deleteFilesAndFolders() {
2560 return stuffMake(arguments, {}, prepare, deal, null, true);
2561 function prepare(values, isPost) {
2562 var currentTime = new Date().getTime();
2563 var valueReq = {
2564 goformId: "HTTPSHARE_DEL",
2565 path_SD_CARD: values.path,
2566 name_SD_CARD: values.names,
2567 path_SD_CARD_time: transUnixTime(currentTime),
2568 path_SD_CARD_time_unix: Math.round(currentTime / 1e3)
2569 };
2570 return valueReq;
2571 }
2572 function deal(paramD) {
2573 if (paramD.result && paramD.result == "failure") {
2574 return {
2575 status: "failure"
2576 };
2577 } else if (paramD.result && paramD.result == "no_sdcard") {
2578 return {
2579 status: "no_sdcard"
2580 };
2581 } else if (paramD.result && paramD.result == "processing") {
2582 return {
2583 status: "processing"
2584 };
2585 } else if (paramD.result && paramD.result == "success") {
2586 return {
2587 status: "success"
2588 };
2589 } else {
2590 return errUnknownObj;
2591 }
2592 }
2593 }
2594 function createFolder() {
2595 return stuffMake(arguments, {}, prepare, deal, null, true);
2596 function prepare(values, isPost) {
2597 var d = new Date();
2598 var currentTime = d.getTime();
2599 var zoneOffsetSeconds = d.getTimezoneOffset() * 60;
2600 return {
2601 goformId: "HTTPSHARE_NEW",
2602 path_SD_CARD: values.path,
2603 path_SD_CARD_time: transUnixTime(currentTime),
2604 path_SD_CARD_time_unix: Math.round((currentTime - zoneOffsetSeconds * 1000) / 1e3)
2605 };
2606 }
2607 function deal(paramD) {
2608 if (paramD.result && paramD.result == "failure") {
2609 return $.extend(errUnknownObj, {
2610 errorType: "create_folder_failure"
2611 });
2612 } else if (paramD.result && paramD.result == "no_sdcard") {
2613 return $.extend(errUnknownObj, {
2614 errorType: "no_sdcard"
2615 });
2616 } else if (paramD.result && paramD.result == "success") {
2617 return {
2618 result: true
2619 };
2620 } else {
2621 return errUnknownObj;
2622 }
2623 }
2624 }
2625 function setSdCardSharing() {
2626 return stuffMake(arguments, {}, prepare, deal, null, true);
2627 function prepare(values, isPost) {
2628 var valueReq = {
2629 goformId: "HTTPSHARE_AUTH_SET",
2630 HTTP_SHARE_STATUS: values.share_status == "1" ? "Enabled" : "Disabled",
2631 HTTP_SHARE_WR_AUTH: values.share_auth == "1" ? "readWrite" : "readOnly",
2632 HTTP_SHARE_FILE: values.share_file
2633 };
2634 return valueReq;
2635 }
2636 function deal(paramD) {
2637 if (paramD) {
2638 if (paramD.result == "no_sdcard") {
2639 return $.extend(errUnknownObj, {
2640 errorType: "no_sdcard"
2641 });
2642 } else {
2643 return {
2644 result: true
2645 };
2646 }
2647 } else {
2648 return errUnknownObj;
2649 }
2650 }
2651 }
2652 function getPortFilter() {
2653 return stuffMake(arguments, {}, prepare, deal, null, false);
2654 function prepare(values, isPost) {
2655 var valueReq = {};
2656 valueReq.cmd = "IPPortFilterEnable,DefaultFirewallPolicy,IPPortFilterRules_0,IPPortFilterRules_1,IPPortFilterRules_2,IPPortFilterRules_3,IPPortFilterRules_4,IPPortFilterRules_5,IPPortFilterRules_6,IPPortFilterRules_7,IPPortFilterRules_8,IPPortFilterRules_9";
2657 valueReq.cmd += ",IPPortFilterRulesv6_0,IPPortFilterRulesv6_1,IPPortFilterRulesv6_2,IPPortFilterRulesv6_3,IPPortFilterRulesv6_4,IPPortFilterRulesv6_5,IPPortFilterRulesv6_6,IPPortFilterRulesv6_7,IPPortFilterRulesv6_8,IPPortFilterRulesv6_9";
2658 valueReq.multi_data = 1;
2659 return valueReq;
2660 }
2661 function deal(paramD) {
2662 if (paramD) {
2663 var result = {};
2664 result.portFilterEnable = paramD.IPPortFilterEnable;
2665 result.defaultPolicy = paramD.DefaultFirewallPolicy;
2666 var rules = [];
2667 if (paramD.IPPortFilterRules_0 != "") {
2668 rules.push([0, paramD.IPPortFilterRules_0]);
2669 }
2670 if (paramD.IPPortFilterRules_1 != "") {
2671 rules.push([1, paramD.IPPortFilterRules_1]);
2672 }
2673 if (paramD.IPPortFilterRules_2 != "") {
2674 rules.push([2, paramD.IPPortFilterRules_2]);
2675 }
2676 if (paramD.IPPortFilterRules_3 != "") {
2677 rules.push([3, paramD.IPPortFilterRules_3]);
2678 }
2679 if (paramD.IPPortFilterRules_4 != "") {
2680 rules.push([4, paramD.IPPortFilterRules_4]);
2681 }
2682 if (paramD.IPPortFilterRules_5 != "") {
2683 rules.push([5, paramD.IPPortFilterRules_5]);
2684 }
2685 if (paramD.IPPortFilterRules_6 != "") {
2686 rules.push([6, paramD.IPPortFilterRules_6]);
2687 }
2688 if (paramD.IPPortFilterRules_7 != "") {
2689 rules.push([7, paramD.IPPortFilterRules_7]);
2690 }
2691 if (paramD.IPPortFilterRules_8 != "") {
2692 rules.push([8, paramD.IPPortFilterRules_8]);
2693 }
2694 if (paramD.IPPortFilterRules_9 != "") {
2695 rules.push([9, paramD.IPPortFilterRules_9]);
2696 }
2697 result.portFilterRules = parsePortFilterRules(rules, "IPv4");
2698 var v6Rules = [];
2699 if (paramD.IPPortFilterRulesv6_0 != "") {
2700 v6Rules.push([10, paramD.IPPortFilterRulesv6_0]);
2701 }
2702 if (paramD.IPPortFilterRulesv6_1 != "") {
2703 v6Rules.push([11, paramD.IPPortFilterRulesv6_1]);
2704 }
2705 if (paramD.IPPortFilterRulesv6_2 != "") {
2706 v6Rules.push([12, paramD.IPPortFilterRulesv6_2]);
2707 }
2708 if (paramD.IPPortFilterRulesv6_3 != "") {
2709 v6Rules.push([13, paramD.IPPortFilterRulesv6_3]);
2710 }
2711 if (paramD.IPPortFilterRulesv6_4 != "") {
2712 v6Rules.push([14, paramD.IPPortFilterRulesv6_4]);
2713 }
2714 if (paramD.IPPortFilterRulesv6_5 != "") {
2715 v6Rules.push([15, paramD.IPPortFilterRulesv6_5]);
2716 }
2717 if (paramD.IPPortFilterRulesv6_6 != "") {
2718 v6Rules.push([16, paramD.IPPortFilterRulesv6_6]);
2719 }
2720 if (paramD.IPPortFilterRulesv6_7 != "") {
2721 v6Rules.push([17, paramD.IPPortFilterRulesv6_7]);
2722 }
2723 if (paramD.IPPortFilterRulesv6_8 != "") {
2724 v6Rules.push([18, paramD.IPPortFilterRulesv6_8]);
2725 }
2726 if (paramD.IPPortFilterRulesv6_9 != "") {
2727 v6Rules.push([19, paramD.IPPortFilterRulesv6_9]);
2728 }
2729 result.portFilterRules = _.union(result.portFilterRules, parsePortFilterRules(v6Rules, "IPv6"));
2730 return result;
2731 } else {
2732 return errUnknownObj;
2733 }
2734 }
2735 function parsePortFilterRules(paramD, ipTypeTmp) {
2736 var rules = [];
2737 if (paramD && paramD.length > 0) {
2738 for (var i = 0; i < paramD.length; i++) {
2739 var aRule = {};
2740 var elements = paramD[i][1].split(",");
2741 aRule.index = paramD[i][0];
2742 aRule.macAddress = elements[11];
2743 aRule.destIpAddress = elements[4] == "any/0" ? "" : elements[4];
2744 aRule.sourceIpAddress = elements[0] == "any/0" ? "" : elements[0];
2745 aRule.destPortRange = elements[6] == '0' ? '' : elements[6] + " - " + elements[7];
2746 aRule.sourcePortRange = elements[2] == '0' ? '' : elements[2] + " - " + elements[3];
2747 aRule.action = elements[9] == 1 ? "filter_accept" : "filter_drop";
2748 aRule.protocol = transProtocol(elements[8]);
2749 aRule.comment = elements[10];
2750 aRule.ipType = ipTypeTmp;
2751 rules.push(aRule);
2752 }
2753 }
2754 return rules;
2755 }
2756 }
2757 function setPortFilterBasic() {
2758 return stuffMake(arguments, {}, prepare, deal, null, true);
2759 function prepare(values, isPost) {
2760 var valueReq = {};
2761 valueReq.goformId = "BASIC_SETTING";
2762 valueReq.portFilterEnabled = values.portFilterEnable;
2763 valueReq.defaultFirewallPolicy = values.defaultPolicy;
2764 return valueReq;
2765 }
2766 function deal(paramD) {
2767 if (paramD) {
2768 return paramD;
2769 } else {
2770 return errUnknownObj;
2771 }
2772 }
2773 }
2774 function setPortFilter() {
2775 return stuffMake(arguments, {}, prepare, deal, null, true);
2776 function prepare(values, isPost) {
2777 var valueReq = {};
2778 valueReq.goformId = "ADD_IP_PORT_FILETER_V4V6";
2779 valueReq.ip_version = values.ipType;
2780 valueReq.mac_address = values.macAddress;
2781 valueReq.dip_address = values.destIpAddress;
2782 valueReq.sip_address = values.sourceIpAddress;
2783 valueReq.dFromPort = values.destPortStart;
2784 valueReq.dToPort = values.destPortEnd;
2785 valueReq.sFromPort = values.sourcePortStart;
2786 valueReq.sToPort = values.sourcePortEnd;
2787 valueReq.action = values.action;
2788 valueReq.protocol = values.protocol;
2789 valueReq.comment = values.comment;
2790 return valueReq;
2791 }
2792 function deal(paramD) {
2793 if (paramD) {
2794 return paramD;
2795 } else {
2796 return errUnknownObj;
2797 }
2798 }
2799 }
2800 function deleteFilterRules() {
2801 return stuffMake(arguments, {}, prepare, deal, null, true);
2802 function prepare(values, isPost) {
2803 var valueReq = {};
2804 var deleteIds = _.filter(values.indexs, function (item) {
2805 return item.length == 1;
2806 });
2807 valueReq.goformId = "DEL_IP_PORT_FILETER_V4V6";
2808 var deletev6Ids = [];
2809 _.each(values.indexs, function (item) {
2810 if (item.length == 2) {
2811 deletev6Ids.push(item.substring(1));
2812 }
2813 });
2814 valueReq.delete_id_v6 = deletev6Ids.length > 0 ? deletev6Ids.join(';') + ";" : "";
2815 valueReq.delete_id = deleteIds.length > 0 ? deleteIds.join(';') + ";" : "";
2816 return valueReq;
2817 }
2818 function deal(paramD) {
2819 if (paramD) {
2820 return paramD;
2821 } else {
2822 return errUnknownObj;
2823 }
2824 }
2825 }
2826 function getWifiAdvance() {
2827 return stuffMake(arguments, {}, prepare, deal, null, false);
2828 function prepare(values, isPost) {
2829 var valueReq = {};
2830 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";
2831 valueReq.multi_data = 1;
2832 return valueReq;
2833 }
2834 function deal(paramD) {
2835 if (paramD) {
2836 var result = {
2837 mode: paramD.WirelessMode,
2838 countryCode: paramD.CountryCode,
2839 channel: paramD.Channel,
2840 rate: paramD.HT_MCS,
2841 wifiBand: paramD.wifi_band == 'a' ? 'a' : 'b',
2842 bandwidth: paramD.wifi_11n_cap,
2843 MAX_Station_num: $.isNumeric(paramD.MAX_Station_num) ? paramD.MAX_Station_num : config.MAX_STATION_NUMBER,
2844 MAX_Access_num: paramD.MAX_Access_num,
2845 m_MAX_Access_num: paramD.m_MAX_Access_num,
2846 ap_station_enable: paramD.wifi_sta_connection
2847 };
2848 return result;
2849 } else {
2850 return errUnknownObj;
2851 }
2852 }
2853 }
2854 function setWifiAdvance() {
2855 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
2856 function prepare(values) {
2857 var valueReq = {
2858 goformId: "SET_WIFI_INFO",
2859 wifiMode: values.mode,
2860 countryCode: values.countryCode,
2861 MAX_Access_num: values.station,
2862 m_MAX_Access_num: values.m_station
2863 };
2864 if (config.WIFI_BAND_SUPPORT) {
2865 valueReq.wifi_band = values.wifiBand;
2866 }
2867 if (config.WIFI_BAND_SUPPORT && values.wifiBand == 'a') {
2868 valueReq.selectedChannel = 'auto';
2869 } else {
2870 valueReq.selectedChannel = values.channel;
2871 valueReq.abg_rate = values.rate;
2872 }
2873 if (config.WIFI_BANDWIDTH_SUPPORT) {
2874 valueReq.wifi_11n_cap = values.bandwidth;
2875 }
2876 return valueReq;
2877 }
2878 function deal(paramD) {
2879 if (paramD) {
2880 return paramD;
2881 } else {
2882 return errUnknownObj;
2883 }
2884 }
2885 }
2886 function getDeviceInfo() {
2887 return stuffMake(arguments, {}, prepare, deal, null, false);
2888 function prepare(values, isPost) {
2889 var wpask = config.PASSWORD_ENCODE ? "WPAPSK1_encode,m_WPAPSK1_encode," : "rnum_js,WPAPSK1_enaes,m_WPAPSK1_enaes,";
2890 var valueReq = {
2891 cmd: "wifi_coverage,m_ssid_enable,imei,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",
2892 multi_data: 1
2893 };
2894 return valueReq;
2895 }
2896 function deal(paramD) {
2897 if (paramD) {
2898 return {
2899 ssid: paramD.SSID1,
2900 authMode: paramD.AuthMode,
2901 passPhrase: config.PASSWORD_ENCODE ? Base64.decode(paramD.WPAPSK1_encode) : wifiDecode(paramD.rnum_js,paramD.imei,paramD.WPAPSK1_enaes),
2902 m_ssid: paramD.m_SSID,
2903 m_AuthMode: paramD.m_AuthMode,
2904 m_passPhrase: config.PASSWORD_ENCODE ? Base64.decode(paramD.m_WPAPSK1_encode) : wifiDecode(paramD.rnum_js,paramD.imei,paramD.m_WPAPSK1_enaes),
2905 m_max_access_num: paramD.m_MAX_Access_num,
2906 multi_ssid_enable: paramD.m_ssid_enable,
2907 ipAddress: paramD.lan_ipaddr,
2908 wanIpAddress: paramD.wan_ipaddr,
2909 staticWanIpAddress: paramD.static_wan_ipaddr,
2910 ipv6WanIpAddress: paramD.ipv6_wan_ipaddr,
2911 ipv6PdpType: paramD.ipv6_pdp_type,
2912 macAddress: paramD.mac_address,
2913 simSerialNumber: paramD.msisdn,
2914 lanDomain: paramD.LocalDomain,
2915 imei: paramD.imei,
2916 signal: convertSignal(paramD),
2917 imsi: paramD.imsi || paramD.sim_imsi,
2918 sw_version: paramD.cr_version,
2919 hw_version: paramD.hw_version,
2920 max_access_num: paramD.MAX_Access_num,
2921 wifiRange: paramD.wifi_coverage,
2922 pdpType: paramD.pdp_type,
2923 rj45ConnectStatus: (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state,
2924 blc_wan_mode: informationAll.blc_wan_mode,
2925 connectStatus: paramD.ppp_status,
2926 wifiConStatus: paramD.sta_ip_status,
2927 ethwan_mode: paramD.ethwan_mode.toUpperCase()
2928 };
2929 } else {
2930 return errUnknownObj;
2931 }
2932 }
2933 }
2934 function getDeviceInfoLow() {
2935 return stuffMake(arguments, {}, prepare, deal, null, false);
2936 function prepare(values, isPost) {
2937 var valueReq = {
2938 cmd: "imei,rnum_js",
2939 multi_data: 1
2940 };
2941 return valueReq;
2942 }
2943 function deal(paramD) {
2944 if (paramD) {
2945 var kstr = paramD.rnum_js + paramD.imei + "FFFFFFFFFFFFFFFFFFFFFFFF";
2946 var kstr_final;
2947 var kiv_final;
2948
2949 kstr_final = kstr.substring(0, 24);
2950 kiv_final = kstr.substring(0, 16);
2951
2952 return {
2953 skey: kstr_final,
2954 siv: kiv_final
2955 };
2956 } else {
mj.qu19ac6692024-08-21 19:18:36 -07002957
zw.wangcfae4372024-08-12 16:41:12 +08002958 return {
2959 skey: "FFFFFFFFFFFFFFFFFFFFFFFF",
2960 siv: "FFFFFFFFFFFFFFFF"
2961 };
2962 }
2963 }
2964 }
2965 function getWifiRange() {
2966 return stuffMake(arguments, {}, prepare, deal, null, false);
2967 function prepare(values, isPost) {
2968 var valueReq = {};
2969 valueReq.cmd = "wifi_coverage";
2970 return valueReq;
2971 }
2972 function deal(paramD) {
2973 if (paramD) {
2974 var result = {};
2975 result.wifiRangeMode = paramD.wifi_coverage;
2976 return result;
2977 } else {
2978 return errUnknownObj;
2979 }
2980 }
2981 }
2982 function setWifiRange() {
2983 return stuffMake(arguments, {}, prepare, deal, null, true);
2984 function prepare(values, isPost) {
2985 var valueReq = {};
2986 valueReq.goformId = "SET_WIFI_COVERAGE";
2987 valueReq.wifi_coverage = values.wifiRangeMode;
2988 return valueReq;
2989 }
2990 function deal(paramD) {
2991 if (paramD) {
2992 return paramD;
2993 } else {
2994 return errUnknownObj;
2995 }
2996 }
2997 }
2998 function getUpnpSetting() {
2999 return stuffMake(arguments, {}, prepare, deal, null, false);
3000 function prepare(values, isPost) {
3001 var valueReq = {};
3002 valueReq.cmd = "upnpEnabled";
3003 valueReq.multi_data = 1;
3004 return valueReq;
3005 }
3006 function deal(paramD) {
3007 if (paramD) {
3008 var result = {};
3009 result.upnpSetting = paramD.upnpEnabled == "1" ? "1" : "0";
3010 return result;
3011 } else {
3012 return errUnknownObj;
3013 }
3014 }
3015 }
3016 function setUpnpSetting() {
3017 return stuffMake(arguments, {}, prepare, deal, null, true);
3018 function prepare(values, isPost) {
3019 var valueReq = {};
3020 valueReq.goformId = "UPNP_SETTING";
3021 valueReq.upnp_setting_option = values.upnpSetting;
3022 return valueReq;
3023 }
3024 function deal(paramD) {
3025 if (paramD) {
3026 return paramD;
3027 } else {
3028 return errUnknownObj;
3029 }
3030 }
3031 }
3032 function getDmzSetting() {
3033 return stuffMake(arguments, {}, prepare, deal, null, false);
3034 function prepare(values, isPost) {
3035 var valueReq = {};
3036 valueReq.cmd = "DMZEnable,DMZIPAddress";
3037 valueReq.multi_data = 1;
3038 return valueReq;
3039 }
3040 function deal(paramD) {
3041 if (paramD) {
3042 var result = {};
3043 result.dmzSetting = paramD.DMZEnable == "1" ? "1" : "0";
3044 result.ipAddress = paramD.DMZIPAddress;
3045 return result;
3046 } else {
3047 return errUnknownObj;
3048 }
3049 }
3050 }
3051 function setDmzSetting() {
3052 return stuffMake(arguments, {}, prepare, deal, null, true);
3053 function prepare(values, isPost) {
3054 var valueReq = {};
3055 valueReq.goformId = "DMZ_SETTING";
3056 valueReq.DMZEnabled = values.dmzSetting;
3057 if (valueReq.DMZEnabled == '1') {
3058 valueReq.DMZIPAddress = values.ipAddress;
3059 }
3060 return valueReq;
3061 }
3062 function deal(paramD) {
3063 if (paramD) {
3064 return paramD;
3065 } else {
3066 return errUnknownObj;
3067 }
3068 }
3069 }
3070 function getPortMap() {
3071 return stuffMake(arguments, {}, prepare, deal, null, false);
3072 function prepare(values, isPost) {
3073 var valueReq = {};
3074 valueReq.cmd = "PortMapEnable,PortMapRules_0,PortMapRules_1,PortMapRules_2,PortMapRules_3,PortMapRules_4,PortMapRules_5,PortMapRules_6,PortMapRules_7,PortMapRules_8,PortMapRules_9",
3075 valueReq.multi_data = 1;
3076 return valueReq;
3077 }
3078 function deal(paramD) {
3079 if (paramD) {
3080 var result = {};
3081 result.portMapEnable = paramD.PortMapEnable;
3082 var rules = [];
3083 if (paramD.PortMapRules_0 != "") {
3084 rules.push([0, paramD.PortMapRules_0]);
3085 }
3086 if (paramD.PortMapRules_1 != "") {
3087 rules.push([1, paramD.PortMapRules_1]);
3088 }
3089 if (paramD.PortMapRules_2 != "") {
3090 rules.push([2, paramD.PortMapRules_2]);
3091 }
3092 if (paramD.PortMapRules_3 != "") {
3093 rules.push([3, paramD.PortMapRules_3]);
3094 }
3095 if (paramD.PortMapRules_4 != "") {
3096 rules.push([4, paramD.PortMapRules_4]);
3097 }
3098 if (paramD.PortMapRules_5 != "") {
3099 rules.push([5, paramD.PortMapRules_5]);
3100 }
3101 if (paramD.PortMapRules_6 != "") {
3102 rules.push([6, paramD.PortMapRules_6]);
3103 }
3104 if (paramD.PortMapRules_7 != "") {
3105 rules.push([7, paramD.PortMapRules_7]);
3106 }
3107 if (paramD.PortMapRules_8 != "") {
3108 rules.push([8, paramD.PortMapRules_8]);
3109 }
3110 if (paramD.PortMapRules_9 != "") {
3111 rules.push([9, paramD.PortMapRules_9]);
3112 }
3113 result.portMapRules = parsePortMapRules(rules);
3114 return result;
3115 } else {
3116 return errUnknownObj;
3117 }
3118 }
3119 function parsePortMapRules(paramD) {
3120 var rules = [];
3121 if (paramD && paramD.length > 0) {
3122 for (var i = 0; i < paramD.length; i++) {
3123 var aRule = {};
3124 var elements = paramD[i][1].split(",");
3125 aRule.index = paramD[i][0];
3126 aRule.sourcePort = elements[1];
3127 aRule.destIpAddress = elements[0];
3128 aRule.destPort = elements[2];
3129 aRule.protocol = transProtocol(elements[3]);
3130 aRule.comment = elements[4];
3131 rules.push(aRule);
3132 }
3133 }
3134 return rules;
3135 }
3136 }
3137 function setPortMap() {
3138 return stuffMake(arguments, {}, prepare, deal, null, true);
3139 function prepare(values, isPost) {
3140 var valueReq = {};
3141 valueReq.goformId = "ADD_PORT_MAP";
3142 valueReq.portMapEnabled = values.portMapEnable;
3143 valueReq.fromPort = values.sourcePort;
3144 valueReq.ip_address = values.destIpAddress;
3145 valueReq.toPort = values.destPort;
3146 valueReq.protocol = values.protocol;
3147 valueReq.comment = values.comment;
3148 return valueReq;
3149 }
3150 function deal(paramD) {
3151 if (paramD) {
3152 return paramD;
3153 } else {
3154 return errUnknownObj;
3155 }
3156 }
3157 }
3158 function enablePortMap() {
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 return valueReq;
3165 }
3166 function deal(paramD) {
3167 if (paramD) {
3168 return paramD;
3169 } else {
3170 return errUnknownObj;
3171 }
3172 }
3173 }
3174 function deleteMapRules() {
3175 return stuffMake(arguments, {}, prepare, deal, null, true);
3176 function prepare(values, isPost) {
3177 var valueReq = {};
3178 valueReq.goformId = "DEL_PORT_MAP";
3179 valueReq.delete_id = values.indexs.join(';') + ";";
3180 return valueReq;
3181 }
3182 function deal(paramD) {
3183 if (paramD) {
3184 return paramD;
3185 } else {
3186 return errUnknownObj;
3187 }
3188 }
3189 }
3190 function getTrafficAlertInfo() {
3191 return stuffMake(arguments, {}, prepare, deal, null, false);
3192 function prepare(values, isPost) {
3193 return {
3194 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",
3195 multi_data: 1
3196 };
3197 }
3198 function deal(paramD) {
3199 if (paramD) {
3200 var isData = paramD.data_volume_limit_unit == 'data';
3201 var result = {
3202 dataLimitChecked: paramD.data_volume_limit_switch,
3203 dataLimitTypeChecked: isData ? '1' : '0',
3204 limitDataMonth: isData ? paramD.data_volume_limit_size : '0',
3205 alertDataReach: isData ? paramD.data_volume_alert_percent : '0',
3206 limitTimeMonth: isData ? '0' : paramD.data_volume_limit_size,
3207 alertTimeReach: isData ? '0' : paramD.data_volume_alert_percent,
3208 monthlySent: paramD.monthly_tx_bytes == '' ? 0 : paramD.monthly_tx_bytes,
3209 monthlyReceived: paramD.monthly_rx_bytes == '' ? 0 : paramD.monthly_rx_bytes,
3210 monthlyConnectedTime: paramD.monthly_time == '' ? 0 : paramD.monthly_time,
3211 traffic_alined_delta: paramD.traffic_alined_delta == '' ? 0 : paramD.traffic_alined_delta
3212 };
3213 return result;
3214 } else {
3215 return errUnknownObj;
3216 }
3217 }
3218 }
3219 function setTrafficAlertInfo() {
3220 return stuffMake(arguments, {}, prepare, deal, null, true);
3221 function prepare(values, isPost) {
3222 var isData = values.dataLimitTypeChecked == '1';
3223 var valueReq = {
3224 goformId: "DATA_LIMIT_SETTING",
3225 data_volume_limit_switch: values.dataLimitChecked
3226 };
3227 if (values.dataLimitChecked == '1') {
3228 valueReq.data_volume_limit_unit = isData ? 'data' : 'time';
3229 valueReq.data_volume_limit_size = isData ? values.limitDataMonth : values.limitTimeMonth;
3230 valueReq.data_volume_alert_percent = isData ? values.alertDataReach : values.alertTimeReach;
3231 }
3232 return valueReq;
3233 }
3234 function deal(paramD) {
3235 if (paramD) {
3236 return paramD;
3237 } else {
3238 return errUnknownObj;
3239 }
3240 }
3241 }
3242 function getUSSDResponse() {
3243 var callback = arguments[1];
3244 return stuffMake(arguments, {}, prepare, deal, null, true);
3245 function prepare(values, isPost) {
3246 if (values.sendOrReply == "send") {
3247 return {
3248 goformId: "USSD_PROCESS",
3249 USSD_operator: values.operator,
3250 USSD_send_number: values.strUSSDCommand,
3251 notCallback: true
3252 };
3253 } else if (values.sendOrReply == "reply") {
3254 return {
3255 goformId: "USSD_PROCESS",
3256 USSD_operator: values.operator,
3257 USSD_reply_number: values.strUSSDCommand,
3258 notCallback: true
3259 };
3260 }
3261 }
3262 function deal(paramD) {
3263 if (!paramD) {
3264 callback(false, "ussd_fail");
3265 return;
3266 }
3267 if (paramD.result == "success") {
3268 callbackTemp = callback;
3269 getResponse();
3270 } else {
3271 callback(false, "ussd_fail");
3272 }
3273 }
3274 }
3275 function getResponse() {
3276 $.ajax({
3277 url: "/reqproc/proc_get",
3278 data: {
3279 cmd: "ussd_write_flag"
3280 },
3281 cache: false,
3282 async: true,
3283 dataType: "json",
3284 success: function (result) {
3285 if (result.ussd_write_flag == "1") {
3286 callbackTemp(false, "ussd_no_service");
3287 } else if (result.ussd_write_flag == "4" || result.ussd_write_flag == "unknown" || result.ussd_write_flag == "3") {
3288 callbackTemp(false, "ussd_timeout");
3289 } else if (result.ussd_write_flag == "15") {
3290 setTimeout(getResponse, 1000);
3291 } else if (result.ussd_write_flag == "10") {
3292 callbackTemp(false, "ussd_retry");
3293 } else if (result.ussd_write_flag == "99") {
3294 callbackTemp(false, "ussd_unsupport");
3295 } else if (result.ussd_write_flag == "41") {
3296 callbackTemp(false, "operation_not_supported");
3297 } else if (result.ussd_write_flag == "2") {
3298 callbackTemp(false, "network_terminated");
3299 } else if (result.ussd_write_flag == "16") {
3300 $.ajax({
3301 url: "/reqproc/proc_get",
3302 data: {
3303 cmd: "ussd_data_info"
3304 },
3305 dataType: "json",
3306 async: true,
3307 cache: false,
3308 success: function (paramD) {
3309 var content = {};
3310 content.data = paramD.ussd_data;
3311 content.ussd_action = paramD.ussd_action;
3312 content.ussd_dcs = paramD.ussd_dcs;
3313 callbackTemp(true, content);
3314 },
3315 error: function () {
3316 callbackTemp(false, "ussd_info_error");
3317 }
3318 });
3319 } else {
3320 callbackTemp(false, "ussd_fail");
3321 }
3322 },
3323 error: function () {
3324 callbackTemp(false, "ussd_fail");
3325 }
3326 });
3327 }
3328 function USSDReplyCancel(callback) {
3329 $.ajax({
3330 url: "/reqproc/proc_post",
3331 data: {
3332 goformId: "USSD_PROCESS",
3333 USSD_operator: "ussd_cancel"
3334 },
3335 cache: false,
3336 dataType: "json",
3337 success: function (paramD) {
3338 if (paramD.result == "success") {
3339 getCancelResponse();
3340 } else {
3341 callback(false);
3342 }
3343 }
3344 });
3345 function getCancelResponse() {
3346 $.ajax({
3347 url: "/reqproc/proc_get",
3348 data: {
3349 cmd: "ussd_write_flag"
3350 },
3351 cache: false,
3352 async: true,
3353 dataType: "json",
3354 success: function (result) {
3355 if (result.ussd_write_flag == "15") {
3356 setTimeout(getCancelResponse, 1000);
3357 } else if (result.ussd_write_flag == "13") {
3358 callback(true);
3359 } else {
3360 callback(false);
3361 }
3362 },
3363 error: function () {
3364 callback(false);
3365 }
3366 });
3367 }
3368 }
3369 function unlockNetwork() {
3370 var callback = arguments[1];
3371 var checkPoint = 0;
3372 return stuffMake(arguments, {}, prepare, deal, null, true);
3373 function prepare(values) {
3374 return {
3375 goformId: "UNLOCK_NETWORK",
3376 notCallback: true,
3377 unlock_network_code: values.unlock_network_code
3378 };
3379 }
3380 function deal(paramD) {
3381 if (paramD && paramD.result == "success") {
3382 addCallback(checkUnlockNetworkStatus);
3383 } else {
3384 callback({
3385 result: 'fail'
3386 });
3387 }
3388 }
3389 function checkUnlockNetworkStatus() {
3390 if (checkPoint > 5) {
3391 removeCallback(checkUnlockNetworkStatus);
3392 callback({
3393 result: 'fail'
3394 });
3395 } else if (informationAll.simStatus != 'modem_imsi_waitnck') {
3396 removeCallback(checkUnlockNetworkStatus);
3397 callback({
3398 result: 'success'
3399 });
3400 }
3401 checkPoint++;
3402 }
3403 }
3404 function getNetworkUnlockTimes() {
3405 return stuffMake(arguments, {}, prepare, deal, null, false);
3406 function prepare(values, isPost) {
3407 return {
3408 cmd: "unlock_nck_time"
3409 };
3410 }
3411 function deal(paramD) {
3412 if (paramD) {
3413 return paramD;
3414 } else {
3415 return errUnknownObj;
3416 }
3417 }
3418 }
3419 function setUpdateInfoWarning() {
3420 var callback = arguments[1];
3421 return stuffMake(arguments, {}, prepare, deal, null, true);
3422 function prepare(values) {
3423 return {
3424 goformId: "SET_UPGRADE_NOTICE",
3425 upgrade_notice_flag: values.upgrade_notice_flag,
3426 notCallback: true
3427 };
3428 }
3429 function deal(paramD) {
3430 if (paramD.result == "success") {
3431 callback(true);
3432 } else {
3433 callback(false);
3434 }
3435 }
3436 }
3437 function getUpdateInfoWarning() {
3438 return stuffMake(arguments, {}, prepare, deal, null, false);
3439 function prepare(values, isPost) {
3440 return {
3441 cmd: "upgrade_notice_flag"
3442 };
3443 }
3444 function deal(paramD) {
3445 if (paramD) {
3446 return paramD;
3447 } else {
3448 return errUnknownObj;
3449 }
3450 }
3451 }
3452 function getAPStationBasic() {
3453 return stuffMake(arguments, {}, prepare, deal, null, false);
3454 function prepare(values, isPost) {
3455 return {
3456 multi_data: 1,
3457 cmd: "wifi_sta_connection,pswan_priority,wifiwan_priority,ethwan_priority"
3458 };
3459 }
3460 function deal(paramD) {
3461 if (paramD) {
3462 return {
3463 ap_station_enable: paramD.wifi_sta_connection,
3464 ap_station_mode: parseInt(paramD.wifiwan_priority, 10) > parseInt(paramD.pswan_priority, 10) ? "wifi_pref" : "dial_pref"
3465 }
3466 } else {
3467 return errUnknownObj;
3468 }
3469 }
3470 }
3471 function setAPStationBasic() {
3472 var tmp = arguments[0];
3473 return stuffMake(arguments, {}, prepare, deal, null, true);
3474 function prepare(values) {
3475 return {
3476 goformId: "WIFI_STA_CONTROL",
3477 wifi_sta_connection: values.ap_station_enable
3478 };
3479 }
3480 function deal(paramD) {
3481 if (paramD && paramD.result == "success") {
3482 informationAll.ap_station_enable = tmp.ap_station_enable == 1;
3483 return paramD;
3484 } else {
3485 return errUnknownObj;
3486 }
3487 }
3488 }
3489 function refreshAPStationStatus() {
3490 return getAPStationBasic({}, function (paramD) {
3491 informationAll.ap_station_enable = paramD.ap_station_enable == 1;
3492 informationAll.ap_station_mode = paramD.ap_station_mode;
3493 });
3494 }
3495 function getHotspotList() {
3496 return stuffMake(arguments, {}, prepare, deal, null, false);
3497 function prepare(values, isPost) {
3498 var cmdStr = "wifi_profile_num,wifi_profile";
3499 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3500 cmdStr = cmdStr + ",wifi_profile" + i;
3501 }
3502 return {
3503 multi_data: 1,
3504 cmd: cmdStr
3505 };
3506 }
3507 function deal(paramD) {
3508 if (paramD) {
3509 var wifiList = [];
3510 for (var i = 0; i < config.AP_STATION_LIST_LENGTH; i++) {
3511 var wifiStr = "";
3512 if (i == 0) {
3513 wifiStr = paramD.wifi_profile;
3514 } else {
3515 wifiStr = paramD["wifi_profile" + i];
3516 }
3517 var wifiArray = wifiStr.split(";");
3518 for (var j = 0; j < wifiArray.length; j++) {
3519 var item = wifiArray[j].split(",");
3520 if (!item[0]) {
3521 break;
3522 }
3523 var wifiJson = {
3524 profileName: item[0],
3525 fromProvider: item[1],
3526 connectStatus: item[2],
3527 signal: item[3],
3528 ssid: item[4],
3529 authMode: item[5],
3530 encryptType: item[6],
3531 password: item[7] == "0" ? "" : item[7],
3532 keyID: item[8],
3533 mac: item[9]
3534 };
3535 wifiList.push(wifiJson);
3536 }
3537 }
3538 return {
3539 hotspotList: wifiList
3540 };
3541 } else {
3542 return errUnknownObj;
3543 }
3544 }
3545 }
3546 function searchHotspot() {
3547 return stuffMake(arguments, {}, prepare, deal, null, true);
3548 function prepare(values) {
3549 return {
3550 goformId: "WLAN_SET_STA_REFRESH"
3551 };
3552 }
3553 function deal(paramD) {
3554 if (paramD) {
3555 return paramD;
3556 } else {
3557 return errUnknownObj;
3558 }
3559 }
3560 }
3561 function getSearchHotspotList() {
3562 return stuffMake(arguments, {}, prepare, deal, null, false);
3563 function prepare(values, isPost) {
3564 return {
3565 multi_data: 1,
3566 cmd: "scan_finish,EX_APLIST,EX_APLIST1"
3567 }
3568 }
3569 function deal(paramD) {
3570 if (paramD) {
3571 if (paramD.scan_finish == "0") {
3572 return {
3573 scan_finish: "0",
3574 hotspotList: []
3575 };
3576 }
3577 if (paramD.scan_finish == "2") {
3578 return {
3579 scan_finish: "2",
3580 hotspotList: []
3581 };
3582 }
3583 var wifiList = [];
3584 for (var i = 0; i <= 1; i++) {
3585 var wifiStr;
3586 if (i == 0) {
3587 wifiStr = paramD.EX_APLIST;
3588 } else {
3589 wifiStr = paramD.EX_APLIST1;
3590 }
3591 var wifiArray = wifiStr.split(";");
3592 for (var j = 0; j < wifiArray.length; j++) {
3593 var item = wifiArray[j].split(",");
3594 if (!item[0]) {
3595 break;
3596 }
3597 var wifiJson = {
3598 fromProvider: item[0],
3599 connectStatus: item[1],
3600 ssid: item[2],
3601 signal: item[3],
3602 channel: item[4],
3603 authMode: item[5],
3604 encryptType: item[6],
3605 mac: item[7]
3606 }
3607 wifiList.push(wifiJson);
3608 }
3609 }
3610 return {
3611 scan_finish: "1",
3612 hotspotList: wifiList
3613 };
3614 } else {
3615 return errUnknownObj;
3616 }
3617 }
3618 }
3619 function creatHotspotString(hotspot) {
3620 var tmp = [];
3621 tmp.push(hotspot.profileName);
3622 tmp.push(hotspot.fromProvider || "0");
3623 tmp.push(hotspot.connectStatus || "0");
3624 tmp.push(hotspot.signal);
3625 tmp.push(hotspot.ssid);
3626 tmp.push(hotspot.authMode);
3627 tmp.push(hotspot.encryptType);
3628 tmp.push(hotspot.password || "0");
3629 tmp.push(hotspot.keyID);
3630 tmp.push(hotspot.mac);
3631 return tmp.join(",");
3632 }
3633 function saveHotspot() {
3634 return stuffMake(arguments, {}, prepare, deal, null, true);
3635 function prepare(values) {
3636 var apList = values.apList;
3637 var action = "modify";
3638 if (values.profileName == "") {
3639 action = "add";
3640 var newName = (jQuery.fn.jquery + Math.random()).replace(/\D/g, "");
3641 values.profileName = newName;
3642 apList.push({
3643 profileName: newName,
3644 fromProvider: "0",
3645 connectStatus: "0",
3646 signal: values.signal,
3647 ssid: values.ssid,
3648 authMode: values.authMode,
3649 encryptType: values.encryptType,
3650 password: values.password || "0",
3651 keyID: values.keyID,
3652 mac: values.mac
3653 });
3654 }
3655 var wifi = {
3656 "profile0": []
3657 };
3658 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3659 wifi["profile" + i] = [];
3660 }
3661 var activeHotspotStr = "";
3662 for (var i = 0; i < apList.length; i++) {
3663 var hotspotStr = "";
3664 if (values.profileName == apList[i].profileName) {
3665 hotspotStr = creatHotspotString(values);
3666 activeHotspotStr = hotspotStr;
3667 } else {
3668 hotspotStr = creatHotspotString(apList[i]);
3669 }
3670 var index = parseInt(i % 10);
3671 wifi["profile" + index].push(hotspotStr);
3672 }
3673 var profileParams = {
3674 wifi_profile: wifi.profile0.join(";")
3675 };
3676 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3677 profileParams["wifi_profile" + i] = wifi["profile" + i].join(";");
3678 }
3679 var valueReq = $.extend({
3680 goformId: "WIFI_SPOT_PROFILE_UPDATE",
3681 wifi_profile_num: apList.length,
3682 wifi_update_profile: activeHotspotStr,
3683 action: action
3684 }, profileParams);
3685 return valueReq;
3686 }
3687 function deal(paramD) {
3688 if (paramD) {
3689 return paramD;
3690 } else {
3691 return errUnknownObj;
3692 }
3693 }
3694 }
3695 function deleteHotspot() {
3696 return stuffMake(arguments, {}, prepare, deal, null, true);
3697 function prepare(values) {
3698 var apList = values.apList;
3699 var wifi = {
3700 "profile0": []
3701 };
3702 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3703 wifi["profile" + i] = [];
3704 }
3705 var foundDelete = false;
3706 var activeHotspotStr = "";
3707 for (var i = 0; i < apList.length; i++) {
3708 var hotspotStr = creatHotspotString(apList[i]);
3709 if (apList[i].profileName == values.profileName) {
3710 foundDelete = true;
3711 activeHotspotStr = hotspotStr;
3712 continue;
3713 }
3714 var idIndex = i;
3715 if (foundDelete) {
3716 idIndex = i - 1;
3717 }
3718 var index = parseInt(idIndex % 10);
3719 wifi["profile" + index].push(hotspotStr);
3720 }
3721 var num = foundDelete ? apList.length - 1 : apList.length;
3722 var profileParams = {
3723 wifi_profile: wifi.profile0.join(";")
3724 };
3725 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3726 profileParams["wifi_profile" + i] = wifi["profile" + i].join(";");
3727 }
3728 var valueReq = $.extend({
3729 goformId: "WIFI_SPOT_PROFILE_UPDATE",
3730 wifi_profile_num: num,
3731 wifi_update_profile: activeHotspotStr,
3732 action: "delete"
3733 }, profileParams);
3734 return valueReq;
3735 }
3736 function deal(paramD) {
3737 if (paramD) {
3738 return paramD;
3739 } else {
3740 return errUnknownObj;
3741 }
3742 }
3743 }
3744 function connectHotspot() {
3745 return stuffMake(arguments, {}, prepare, deal, null, true);
3746 function prepare(values) {
3747 return {
3748 goformId: "WLAN_SET_STA_CON",
3749 EX_SSID1: values.EX_SSID1,
3750 EX_AuthMode: values.EX_AuthMode,
3751 EX_EncrypType: values.EX_EncrypType,
3752 EX_DefaultKeyID: values.EX_DefaultKeyID,
3753 EX_WEPKEY: values.EX_WEPKEY,
3754 EX_WPAPSK1: values.EX_WPAPSK1,
3755 EX_wifi_profile: values.EX_wifi_profile,
3756 EX_mac: values.EX_mac
3757 };
3758 }
3759 function deal(paramD) {
3760 if (paramD && (paramD.result == "success" || paramD.result == "processing")) {
3761 return paramD;
3762 } else {
3763 return errUnknownObj;
3764 }
3765 }
3766 }
3767 function disconnectHotspot() {
3768 return stuffMake(arguments, {}, prepare, deal, null, true);
3769 function prepare(values) {
3770 return {
3771 goformId: "WLAN_SET_STA_DISCON"
3772 };
3773 }
3774 function deal(paramD) {
3775 if (paramD && paramD.result == "success") {
3776 return paramD;
3777 } else {
3778 return errUnknownObj;
3779 }
3780 }
3781 }
3782 function getOpMode() {
3783 return stuffMake(arguments, {}, prepare, deal, null, false);
3784 function prepare(values, isPost) {
3785 return {
3786 multi_data: 1,
3787 cmd: "blc_wan_mode,blc_wan_auto_mode,loginfo,ppp_status,rj45_state,ethwan_mode"
3788 };
3789 }
3790 function deal(paramD) {
3791 if (paramD) {
3792 var result = {};
3793 if (paramD.blc_wan_mode == 'AUTO') {
3794 result.blc_wan_mode = paramD.blc_wan_auto_mode ? paramD.blc_wan_auto_mode : 'AUTO_PPP';
3795 } else {
3796 result.blc_wan_mode = paramD.blc_wan_mode ? paramD.blc_wan_mode : 'PPP';
3797 }
3798 result.loginfo = paramD.loginfo;
3799 result.ppp_status = paramD.ppp_status;
3800 result.rj45_state = (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state;
3801 result.ethwan_mode = paramD.ethwan_mode.toUpperCase();
3802 return result;
3803 } else {
3804 return errUnknownObj;
3805 }
3806 }
3807 }
3808 function getRj45PlugState() {
3809 return stuffMake(arguments, {}, prepare, deal, null, false);
3810 function prepare(values, isPost) {
3811 return {
3812 cmd: "rj45_plug"
3813 };
3814 }
3815 function deal(paramD) {
3816 if (paramD) {
3817 var result = {};
3818 result.rj45_plug = paramD.rj45_plug == "" ? "wan_lan_off" : paramD.rj45_plug;
3819 return result;
3820 } else {
3821 return errUnknownObj;
3822 }
3823 }
3824 }
3825 function checkOpMode(opmode, rj45state) {
3826 if (config.RJ45_SUPPORT) {
3827 if (rj45state == "dead" || rj45state == "") {
3828 return 'PPP';
3829 } else if (!opmode || opmode == "undefined") {
3830 if (rj45state == "working") {
3831 return 'PPPOE';
3832 } else {
3833 return 'PPP';
3834 }
3835 } else {
3836 return opmode;
3837 }
3838 } else {
3839 return 'PPP';
3840 }
3841 }
3842 function SetOperationMode(values, callback) {
3843 return stuffMake(arguments, {}, prepare, deal, null, true);
3844 function prepare(values) {
3845 var valueReq = $.extend({
3846 goformId: "OPERATION_MODE"
3847 }, values);
3848 return valueReq;
3849 }
3850 function deal(paramD) {
3851 if (paramD && paramD.result == "success") {
3852 return paramD;
3853 } else {
3854 return errUnknownObj;
3855 }
3856 }
3857 }
3858 function getPppoeParams() {
3859 return stuffMake(arguments, {}, prepare, deal, null, false);
3860 function prepare(values, isPost) {
3861 return {
3862 multi_data: 1,
3863 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"
3864 };
3865 }
3866 function deal(paramD) {
3867 if (paramD) {
3868 return {
3869 opms_wan_auto_mode: paramD.opms_wan_auto_mode,
3870 ethwan_mode: paramD.ethwan_mode.toUpperCase(),
3871 pppoe_username: paramD.pppoe_username,
3872 pppoe_cc: paramD.pppoe_cc,
3873 ethwan_dialmode: paramD.ethwan_dialmode == "manual" ? "manual_dial" : "auto_dial",
3874 ppp_status: paramD.ppp_status,
3875 static_wan_ipaddr: paramD.static_wan_ipaddr,
3876 static_wan_netmask: paramD.static_wan_netmask,
3877 static_wan_gateway: paramD.static_wan_gateway,
3878 static_wan_primary_dns: paramD.static_wan_primary_dns,
3879 static_wan_secondary_dns: paramD.static_wan_secondary_dns,
3880 rj45_state: (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state,
3881 lan_ipaddr: paramD.lan_ipaddr,
3882 lan_netmask: paramD.lan_netmask
3883 }
3884 } else {
3885 return errUnknownObj;
3886 }
3887 }
3888 }
3889 function setPppoeDialMode(values, callback) {
3890 return stuffMake(arguments, {}, prepare, deal, null, true);
3891 function prepare(values) {
3892 var valueReq = $.extend({
3893 notCallback: true
3894 }, values);
3895 return valueReq;
3896 }
3897 function deal(paramD) {
3898 if (paramD.result == "success") {
3899 callback({
3900 result: true
3901 });
3902 } else {
3903 callback({
3904 result: false
3905 });
3906 }
3907 }
3908 }
3909 function getSntpParams(values, callback) {
3910 return stuffMake(arguments, {}, prepare, deal, null, false);
3911 function prepare(values, isPost) {
3912 return {
3913 multi_data: 1,
3914 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"
3915 };
3916 }
3917 function deal(paramD) {
3918 if (paramD) {
3919 var sntp_servers = getSntpServers(paramD);
3920 return {
3921 sntp_year: paramD.sntp_year,
3922 sntp_month: paramD.sntp_month,
3923 sntp_day: paramD.sntp_day,
3924 sntp_hour: paramD.sntp_hour,
3925 sntp_minute: paramD.sntp_minute,
3926 sntp_second: paramD.sntp_second,
3927 sntp_time_set_mode: paramD.sntp_time_set_mode,
3928 sntp_servers: sntp_servers,
3929 sntp_server0: paramD.sntp_server0,
3930 sntp_server1: paramD.sntp_server1,
3931 sntp_server2: paramD.sntp_server2,
3932 sntp_static_server0: paramD.sntp_static_server0,
3933 sntp_static_server1: paramD.sntp_static_server1,
3934 sntp_static_server2: paramD.sntp_static_server2,
3935 sntp_other_server0: paramD.sntp_other_server0,
3936 sntp_other_server1: paramD.sntp_other_server1,
3937 sntp_other_server2: paramD.sntp_other_server2,
3938 sntp_timezone: paramD.sntp_timezone,
3939 sntp_timezone_index: paramD.sntp_timezone_index ? paramD.sntp_timezone_index : "0",
3940 sntp_dst_enable: paramD.sntp_dst_enable,
3941 ppp_status: paramD.ppp_status,
3942 blc_wan_mode: informationAll.blc_wan_mode,
3943 sntp_process_result: paramD.sntp_process_result,
3944 rj45_state: (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state
3945 }
3946 } else {
3947 return errUnknownObj;
3948 }
3949 }
3950 function getSntpServers(paramD) {
3951 var serverArray = [];
3952 for (var i = 0; i < 3; i++) {
3953 var tmp = "sntp_static_server" + (i).toString();
3954 if (paramD[tmp] != "") {
3955 var obj = {};
3956 obj.name = paramD[tmp];
3957 obj.value = paramD[tmp];
3958 serverArray.push(obj);
3959 }
3960 }
3961 var otherArray = [{
3962 name: "Other",
3963 value: "Other"
3964 }, {
3965 name: "NONE",
3966 value: ""
3967 }
3968 ];
3969 for (var j = 0; j < 2; j++) {
3970 serverArray.push(otherArray[j]);
3971 }
3972 return serverArray;
3973 }
3974 }
3975 function setSNTPDate(values, callback) {
3976 return stuffMake(arguments, {}, prepare, deal, null, true);
3977 function prepare(values) {
3978 var valueReq = $.extend({}, values);
3979 return valueReq;
3980 }
3981 function deal(paramD) {
3982 if (paramD && paramD.result == "success") {
3983 return paramD;
3984 } else {
3985 return errUnknownObj;
3986 }
3987 }
3988 }
3989 function setSntpSetting(values, callback) {
3990 var valueReq = $.extend({}, values); {
3991 $.post("reqproc/proc_post", valueReq, function (paramD) {
3992 if (paramD && paramD.result == "success") {
3993 if (values.manualsettime == "auto") {
3994 setTimeout(checkSyncStatus, 2000);
3995 callback(paramD);
3996 } else {
3997 callback(true);
3998 }
3999 } else if (paramD && paramD.result == "processing") {
4000 callback(paramD);
4001 } else {
4002 callback(false);
4003 }
4004 }, "json");
4005 }
4006 function checkSyncStatus() {
4007 $.ajax({
4008 url: "reqproc/proc_get",
4009 dataType: "json",
4010 data: {
4011 cmd: "sntp_process_result"
4012 },
4013 cache: false,
4014 async: false,
4015 success: function (paramD) {
4016 if (paramD.sntp_process_result == "failure") {
4017 callback(false);
4018 } else if (paramD.sntp_process_result == "success") {
4019 callback(true);
4020 } else {
4021 setTimeout(checkSyncStatus, 2000);
4022 }
4023 },
4024 error: function () {
4025 callback(false);
4026 }
4027 });
4028 }
4029 }
4030 function addUrlFilterRule(values, callback) {
4031 return stuffMake(arguments, {}, prepare, deal, null, true);
4032 function prepare(values) {
4033 var valueReq = $.extend({}, values);
4034 return valueReq;
4035 }
4036 function deal(paramD) {
4037 if (paramD && paramD.result == "success") {
4038 return paramD;
4039 } else {
4040 return errUnknownObj;
4041 }
4042 }
4043 }
4044 function getUrlFilterList() {
4045 return stuffMake(arguments, {}, prepare, deal, null, false);
4046 function prepare(values, isPost) {
4047 return {
4048 cmd: "websURLFilters"
4049 };
4050 }
4051 function deal(paramD) {
4052 var urlFilterRules = [];
4053 if (paramD) {
4054 if (paramD.websURLFilters.length == 0) {
4055 return {
4056 urlFilterRules: []
4057 };
4058 } else {
4059 var tempArray = paramD.websURLFilters.split(";");
4060 for (var i = 0; i < tempArray.length; i++) {
4061 var aRule = {};
4062 aRule.index = i;
4063 aRule.url = tempArray[i];
4064 urlFilterRules.push(aRule);
4065 }
4066 return {
4067 urlFilterRules: urlFilterRules
4068 };
4069 }
4070 } else {
4071 return errUnknownObj;
4072 }
4073 }
4074 }
4075 function deleteSelectedRules(values, callback) {
4076 return stuffMake(arguments, {}, prepare, deal, null, true);
4077 function prepare(values) {
4078 var valueReq = $.extend({}, values);
4079 return valueReq;
4080 }
4081 function deal(paramD) {
4082 if (paramD && paramD.result == "success") {
4083 return paramD;
4084 } else {
4085 return errUnknownObj;
4086 }
4087 }
4088 }
4089 function getWdsInfo() {
4090 return stuffMake(arguments, {}, prepare, deal, null, false);
4091 function prepare(values, isPost) {
4092 return {
4093 multi_data: "1",
4094 cmd: "wifi_wds_mode,wifi_wds_ssid,wifi_wds_AuthMode,wifi_wds_EncrypType,wifi_wds_WPAPSK1,wifi_cur_state "
4095 };
4096 }
4097 function deal(paramD) {
4098 if (paramD) {
4099 return {
4100 currentMode: paramD.wifi_wds_mode,
4101 wdsSSID: paramD.wifi_wds_ssid,
4102 wdsAuthMode: paramD.wifi_wds_AuthMode,
4103 wdsEncrypType: paramD.wifi_wds_EncrypType,
4104 wdsWPAPSK1: paramD.wifi_wds_WPAPSK1,
4105 RadioOff: paramD.wifi_cur_state == "1" ? "1" : "0"
4106 };
4107 } else {
4108 return errUnknownObj;
4109 }
4110 }
4111 }
4112 function setWDS(values, callback) {
4113 return stuffMake(arguments, {}, prepare, deal, null, true);
4114 function prepare(values) {
4115 var valueReq = $.extend({}, values);
4116 return valueReq;
4117 }
4118 function deal(paramD) {
4119 if (paramD && paramD.result == "success") {
4120 return paramD;
4121 } else {
4122 return errUnknownObj;
4123 }
4124 }
4125 }
4126 function getSyslogInfo() {
4127 return stuffMake(arguments, {}, prepare, deal, null, false);
4128 function prepare(values, isPost) {
4129 return {
4130 multi_data: "1",
4131 cmd: "syslog_mode,debug_level"
4132 };
4133 }
4134 function deal(paramD) {
4135 if (paramD) {
4136 return {
4137 currentMode: paramD.syslog_mode,
4138 debugLevel: paramD.debug_level
4139 };
4140 } else {
4141 return errUnknownObj;
4142 }
4143 }
4144 }
4145 function setSysLog(values, callback) {
4146 return stuffMake(arguments, {}, prepare, deal, null, true);
4147 function prepare(values) {
4148 var valueReq = $.extend({}, values);
4149 return valueReq;
4150 }
4151 function deal(paramD) {
4152 if (paramD && paramD.result == "success") {
4153 return paramD;
4154 } else {
4155 return errUnknownObj;
4156 }
4157 }
4158 }
4159 function getMacFilterInfo() {
4160 return stuffMake(arguments, {}, prepare, deal, null, false);
4161 function prepare(values, isPost) {
4162 return {
4163 multi_data: "1",
4164 cmd: "ACL_mode,wifi_mac_black_list,wifi_hostname_black_list,wifi_cur_state,user_ip_addr,client_mac_address,wifi_mac_white_list"
4165 };
4166 }
4167 function deal(paramD) {
4168 if (paramD) {
4169 return {
4170 ACL_mode: paramD.ACL_mode,
4171 wifi_mac_black_list: paramD.wifi_mac_black_list,
4172 wifi_hostname_black_list: paramD.wifi_hostname_black_list,
4173 RadioOff: paramD.wifi_cur_state == "1" ? "1" : "0",
4174 user_ip_addr: paramD.user_ip_addr,
4175 client_mac_address: paramD.client_mac_address,
4176 wifi_mac_white_list: paramD.wifi_mac_white_list
4177 };
4178 } else {
4179 return errUnknownObj;
4180 }
4181 }
4182 }
4183 function setMacFilter() {
4184 return stuffMake(arguments, {}, prepare, deal, null, true);
4185 function prepare(values) {
4186 var valueReq = $.extend({
4187 goformId: 'WIFI_MAC_FILTER',
4188 }, values);
4189 return valueReq;
4190 }
4191 function deal(paramD) {
4192 if (paramD && paramD.result == "success") {
4193 return paramD;
4194 } else {
4195 return errUnknownObj;
4196 }
4197 }
4198 }
4199 function getFastbootSetting() {
4200 return stuffMake(arguments, {}, prepare, deal, null, false);
4201 function prepare(values) {
4202 return {
4203 cmd: "mgmt_quicken_power_on,need_hard_reboot,need_sim_pin",
4204 multi_data: 1
4205 };
4206 }
4207 function deal(paramD) {
4208 return {
4209 fastbootEnabled: paramD.mgmt_quicken_power_on == '1' ? '1' : '0',
4210 need_hard_reboot: paramD.need_hard_reboot,
4211 need_sim_pin: paramD.need_sim_pin == 'yes' ? 'yes' : 'no'
4212 };
4213 }
4214 }
4215 function setFastbootSetting() {
4216 return stuffMake(arguments, {}, prepare, deal, null, true);
4217 function prepare(values) {
4218 return {
4219 goformId: "MGMT_CONTROL_POWER_ON_SPEED",
4220 mgmt_quicken_power_on: values.fastbootEnabled
4221 };
4222 }
4223 function deal(paramD) {
4224 if (paramD && paramD.result == "success") {
4225 return paramD;
4226 } else {
4227 return errUnknownObj;
4228 }
4229 }
4230 }
4231 function turnOffDevice() {
4232 return stuffMake(arguments, {}, prepare, deal, null, true);
4233 function prepare(values, isPost) {
4234 var valueReq = {};
4235 valueReq.goformId = "TURN_OFF_DEVICE";
4236 return valueReq;
4237 }
4238 function deal(paramD) {
4239 if (paramD) {
4240 return paramD;
4241 } else {
4242 return errUnknownObj;
4243 }
4244 }
4245 }
4246 function restart() {
4247 return stuffMake(arguments, {}, prepare, deal, null, true);
4248 function prepare(values, isPost) {
4249 var valueReq = {};
4250 valueReq.goformId = "REBOOT_DEVICE";
4251 return valueReq;
4252 }
4253 function deal(paramD) {
4254 if (paramD) {
4255 return paramD;
4256 } else {
4257 return errUnknownObj;
4258 }
4259 }
4260 }
4261 function getScheduleSetting() {
4262 return stuffMake(arguments, {}, prepare, deal, null, false);
4263 function prepare(values, isPost) {
4264 var valueReq = {};
4265 valueReq.cmd = "schedule_restart_enable,schedule_restart_hour,schedule_restart_minute";
4266 valueReq.multi_data = 1;
4267 return valueReq;
4268 }
4269 function deal(paramD) {
4270 if (paramD) {
4271 var result = {};
4272 result.scheduleSetting = paramD.schedule_restart_enable == "1" ? "1" : "0";
4273 result.scheduleHour = paramD.schedule_restart_hour;
4274 result.scheduleMinute = paramD.schedule_restart_minute;
4275 return result;
4276 } else {
4277 return errUnknownObj;
4278 }
4279 }
4280 }
4281 function setScheduleSetting() {
4282 return stuffMake(arguments, {}, prepare, deal, null, true);
4283 function prepare(values, isPost) {
4284 var valueReq = {};
4285 valueReq.goformId = "SCHEDULE_SETTING";
4286 valueReq.scheduleEnabled = values.scheduleSetting;
4287 if (valueReq.scheduleEnabled == '1') {
4288 valueReq.scheduleHour = values.scheduleHour;
4289 valueReq.scheduleMinute = values.scheduleMinute;
4290 }
4291 return valueReq;
4292 }
4293 function deal(paramD) {
4294 if (paramD) {
4295 return paramD;
4296 } else {
4297 return errUnknownObj;
4298 }
4299 }
4300 }
4301 function getNewVersionState() {
4302 return stuffMake(arguments, {}, prepare, deal, null, false);
4303 function prepare(values, isPost) {
4304 var valueReq = {};
4305 valueReq.cmd = "fota_new_version_state,fota_current_upgrade_state,fota_package_already_download";
4306 valueReq.multi_data = 1;
4307 return valueReq;
4308 }
4309 function deal(paramD) {
4310 if (paramD) {
4311 var hasNewVersion = (paramD.fota_new_version_state == 'has_critical' || paramD.fota_new_version_state == 'has_optional' || paramD.fota_new_version_state == 'already_has_pkg');
4312 paramD.hasNewVersion = hasNewVersion;
4313 return paramD;
4314 } else {
4315 return errUnknownObj;
4316 }
4317 }
4318 }
4319 function getMandatory() {
4320 return stuffMake(arguments, {}, prepare, deal, null, false);
4321 function prepare(values, isPost) {
4322 var valueReq = {};
4323 if (config.UPGRADE_TYPE == "OTA") {
4324 valueReq.cmd = "is_mandatory";
4325 } else {
4326 valueReq.cmd = "fota_new_version_state";
4327 }
4328 return valueReq;
4329 }
4330 function deal(paramD) {
4331 if (paramD) {
4332 if (config.UPGRADE_TYPE == "OTA") {
4333 return {
4334 "is_mandatory": paramD.is_mandatory == "1"
4335 };
4336 } else {
4337 return {
4338 "is_mandatory": paramD.fota_new_version_state == "has_critical"
4339 };
4340 }
4341 } else {
4342 return errUnknownObj;
4343 }
4344 }
4345 }
4346 function getUpgradeResult() {
4347 return stuffMake(arguments, {}, prepare, deal, null, false);
4348 function prepare(values, isPost) {
4349 var valueReq = {};
4350 valueReq.cmd = "upgrade_result";
4351 return valueReq;
4352 }
4353 function deal(paramD) {
4354 if (paramD) {
4355 return paramD;
4356 } else {
4357 return errUnknownObj;
4358 }
4359 }
4360 }
4361 function getCurrentUpgradeState() {
4362 return stuffMake(arguments, {}, prepare, deal, null, false);
4363 function prepare(values, isPost) {
4364 var valueReq = {};
4365 valueReq.cmd = "fota_current_upgrade_state";
4366 return valueReq;
4367 }
4368 function deal(paramD) {
4369 if (paramD) {
4370 paramD.current_upgrade_state = paramD.fota_current_upgrade_state;
4371 return paramD;
4372 } else {
4373 return errUnknownObj;
4374 }
4375 }
4376 }
4377 function getPackSizeInfo() {
4378 return stuffMake(arguments, {}, prepare, deal, null, false);
4379 function prepare(values, isPost) {
4380 var valueReq = {};
4381 valueReq.cmd = "fota_pkg_total_size,fota_dl_pkg_size";
4382 valueReq.multi_data = 1;
4383 return valueReq;
4384 }
4385 function deal(paramD) {
4386 if (paramD) {
4387 return paramD;
4388 } else {
4389 return errUnknownObj;
4390 }
4391 }
4392 }
4393 function setUpgradeSelectOp() {
4394 return stuffMake(arguments, {}, prepare, deal, null, true);
4395 function prepare(values, isPost) {
4396 var valueReq = {};
4397 valueReq.goformId = "IF_UPGRADE";
4398 valueReq.select_op = values.selectOp;
4399 if (valueReq.select_op == 'check') {
4400 valueReq.ota_manual_check_roam_state = 1;
4401 }
4402 return valueReq;
4403 }
4404 function deal(paramD) {
4405 if (paramD) {
4406 return paramD;
4407 } else {
4408 return errUnknownObj;
4409 }
4410 }
4411 }
4412 function getOTAUpdateSetting() {
4413 return stuffMake(arguments, {}, prepare, deal, null, false);
4414 function prepare(values, isPost) {
4415 var valueReq = {};
4416 valueReq.cmd = "fota_updateMode,fota_updateIntervalDay,fota_allowRoamingUpdate";
4417 valueReq.multi_data = 1;
4418 return valueReq;
4419 }
4420 function deal(paramD) {
4421 if (paramD) {
4422 return {
4423 updateMode: paramD.fota_updateMode,
4424 updateIntervalDay: paramD.fota_updateIntervalDay,
4425 allowRoamingUpdate: paramD.fota_allowRoamingUpdate
4426 };
4427 } else {
4428 return errUnknownObj;
4429 }
4430 }
4431 }
4432 function setOTAUpdateSetting() {
4433 return stuffMake(arguments, {}, prepare, deal, null, true);
4434 function prepare(values, isPost) {
4435 var valueReq = {};
4436 valueReq.goformId = "SetUpgAutoSetting";
4437 valueReq.UpgMode = values.updateMode;
4438 valueReq.UpgIntervalDay = values.updateIntervalDay;
4439 valueReq.UpgRoamPermission = values.allowRoamingUpdate;
4440 return valueReq;
4441 }
4442 function deal(paramD) {
4443 if (paramD && paramD.result == "success") {
4444 return paramD;
4445 } else {
4446 return errUnknownObj;
4447 }
4448 }
4449 }
4450 function getOTAlastCheckTime() {
4451 return getParams({
4452 nv: ['dm_last_check_time']
4453 }, arguments[1], arguments[2]);
4454 }
4455 function getSignalStrength() {
4456 return getParams({
4457 nv: ['network_type', 'sub_network_type', 'rssi', 'rscp', 'lte_rsrp']
4458 }, arguments[1], arguments[2]);
4459 }
4460 function clearUpdateResult() {
4461 return stuffMake(arguments, {}, prepare, deal, null, true);
4462 function prepare(values, isPost) {
4463 var valueReq = {};
4464 valueReq.goformId = "RESULT_RESTORE";
4465 return valueReq;
4466 }
4467 function deal(paramD) {
4468 if (paramD && paramD.result == "success") {
4469 return paramD;
4470 } else {
4471 return errUnknownObj;
4472 }
4473 }
4474 }
4475 function childGroupList() {
4476 return stuffMake(arguments, {}, prepare, deal, null, false);
4477 function prepare(values, isPost) {
4478 var valueReq = {
4479 cmd: "childGroupList"
4480 };
4481 return valueReq;
4482 }
4483 function deal(paramD) {
4484 if (paramD && (paramD.childGroupList || paramD.devices)) {
4485 return paramD;
4486 } else {
4487 return {
4488 devices: []
4489 };
4490 }
4491 }
4492 }
4493 function addChildGroup() {
4494 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4495 : {
4496 errorType: 'no_auth'
4497 }, prepare, deal, null, true);
4498 function prepare(values, isPost) {
4499 var valueReq = {
4500 goformId: "ADD_DEVICE",
4501 mac: values.macAddress
4502 };
4503 return valueReq;
4504 }
4505 function deal(paramD) {
4506 if (paramD && paramD.result == 'success') {
4507 return paramD;
4508 } else {
4509 return errUnknownObj;
4510 }
4511 }
4512 }
4513 function removeChildGroup() {
4514 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4515 : {
4516 errorType: 'no_auth'
4517 }, prepare, deal, null, true);
4518 function prepare(values, isPost) {
4519 var valueReq = {
4520 goformId: "DEL_DEVICE",
4521 mac: values.mac
4522 };
4523 return valueReq;
4524 }
4525 function deal(paramD) {
4526 if (paramD && paramD.result == 'success') {
4527 return paramD;
4528 } else {
4529 return errUnknownObj;
4530 }
4531 }
4532 }
4533 function checkCurrentUserInChildGroup(devices) {
4534 if (typeof config.currentUserInChildGroup == "undefined") {
4535 var childGroupDevice = [];
4536 if (typeof devices != "undefined") {
4537 childGroupDevice = devices;
4538 } else {
4539 childGroupDevice = childGroupList({}).devices;
4540 }
4541 var userMacAddr = getUserMacAddr({}).get_user_mac_addr;
4542 var found = _.find(childGroupDevice, function (item) {
4543 return item.mac == userMacAddr;
4544 });
4545 config.currentUserInChildGroup = typeof found != 'undefined';
4546 return {
4547 result: typeof found != 'undefined'
4548 };
4549 }
4550 return {
4551 result: config.currentUserInChildGroup
4552 };
4553 }
4554 function getUserMacAddr() {
4555 return getParams({
4556 nv: 'get_user_mac_addr'
4557 }, arguments[1], arguments[2]);
4558 }
4559 function getHostNameList() {
4560 return stuffMake(arguments, {}, prepare, deal, null, false);
4561 function prepare(values, isPost) {
4562 var valueReq = {
4563 cmd: "hostNameList"
4564 };
4565 return valueReq;
4566 }
4567 function deal(paramD) {
4568 if (paramD && (paramD.hostNameList || paramD.devices)) {
4569 return paramD;
4570 } else {
4571 return {
4572 devices: []
4573 };
4574 }
4575 }
4576 }
4577 function editHostName() {
4578 return stuffMake(arguments, {}, prepare, deal, null, true);
4579 function prepare(values, isPost) {
4580 var valueReq = {
4581 goformId: "EDIT_HOSTNAME",
4582 mac: values.mac,
4583 hostname: values.hostname
4584 };
4585 return valueReq;
4586 }
4587 function deal(paramD) {
4588 if (paramD && paramD.result == 'success') {
4589 return paramD;
4590 } else {
4591 return errUnknownObj;
4592 }
4593 }
4594 }
4595 function getSiteWhiteList() {
4596 return stuffMake(arguments, {}, prepare, deal, null, false);
4597 function prepare(values, isPost) {
4598 var valueReq = {
4599 cmd: "site_white_list"
4600 };
4601 return valueReq;
4602 }
4603 function deal(paramD) {
4604 if (paramD && (paramD.site_white_list || paramD.siteList)) {
4605 return paramD;
4606 } else {
4607 return {
4608 siteList: []
4609 };
4610 }
4611 }
4612 }
4613 function removeSiteWhite() {
4614 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4615 : {
4616 errorType: 'no_auth'
4617 }, prepare, deal, null, true);
4618 function prepare(values, isPost) {
4619 var valueReq = {
4620 goformId: "REMOVE_WHITE_SITE",
4621 ids: values.ids.join(',')
4622 };
4623 return valueReq;
4624 }
4625 function deal(paramD) {
4626 if (paramD && paramD.result == 'success') {
4627 return paramD;
4628 } else {
4629 return errUnknownObj;
4630 }
4631 }
4632 }
4633 function saveSiteWhite() {
4634 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4635 : {
4636 errorType: 'no_auth'
4637 }, prepare, deal, null, true);
4638 function prepare(values, isPost) {
4639 var valueReq = {
4640 goformId: "ADD_WHITE_SITE",
4641 name: values.name,
4642 site: values.site
4643 };
4644 return valueReq;
4645 }
4646 function deal(paramD) {
4647 if (paramD && paramD.result == 'success') {
4648 return paramD;
4649 } else {
4650 return errUnknownObj;
4651 }
4652 }
4653 }
4654 function getTimeLimited() {
4655 var defaultResult = {
4656 '0': [],
4657 '1': [],
4658 '2': [],
4659 '3': [],
4660 '4': [],
4661 '5': [],
4662 '6': []
4663 };
4664 return stuffMake(arguments, {}, prepare, deal, null, false);
4665 function prepare(values, isPost) {
4666 var valueReq = {
4667 cmd: "time_limited"
4668 };
4669 return valueReq;
4670 }
4671 function deal(paramD) {
4672 if (paramD) {
4673 return parseTimeLimited(paramD);
4674 } else {
4675 return defaultResult;
4676 }
4677 }
4678 function parseTimeLimited(paramD) {
4679 if (paramD.time_limited == '') {
4680 return {
4681 time_limited: []
4682 };
4683 }
4684 var weeks = paramD.time_limited.split(';');
4685 _.each(weeks, function (week) {
4686 var weekTime = week.split('+');
4687 if (weekTime.length == 2) {
4688 defaultResult[weekTime[0]] = weekTime[1].split(',');
4689 }
4690 });
4691 return defaultResult;
4692 }
4693 }
4694 function saveTimeLimited() {
4695 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4696 : {
4697 errorType: 'no_auth'
4698 }, prepare, deal, null, true);
4699 function prepare(values, isPost) {
4700 var valueReq = {
4701 goformId: "SAVE_TIME_LIMITED",
4702 time_limited: values.time
4703 };
4704 return valueReq;
4705 }
4706 function deal(paramD) {
4707 if (paramD && paramD.result == 'success') {
4708 return paramD;
4709 } else {
4710 return errUnknownObj;
4711 }
4712 }
4713 }
4714 function getTsw() {
4715 return stuffMake(arguments, {}, prepare, deal, null, false);
4716 function prepare(values, isPost) {
4717 var valueReq = {
4718 cmd: "openEnable,closeEnable,openTime,closeTime",
4719 multi_data: '1'
4720 };
4721 return valueReq;
4722 }
4723 function deal(paramD) {
4724 if (paramD) {
4725 if (paramD.openTime.indexOf(':') != -1) {
4726 var open = paramD.openTime.split(':');
4727 paramD.openH = leftInsert(open[0], 2, '0');
4728 paramD.openM = leftInsert(open[1], 2, '0');
4729 } else {
4730 paramD.openH = '06';
4731 paramD.openM = '00';
4732 }
4733 if (paramD.closeTime.indexOf(':') != -1) {
4734 var close = paramD.closeTime.split(':');
4735 paramD.closeH = leftInsert(close[0], 2, '0');
4736 paramD.closeM = leftInsert(close[1], 2, '0');
4737 } else {
4738 paramD.closeH = '22';
4739 paramD.closeM = '00';
4740 }
4741 return paramD;
4742 } else {
4743 return errUnknownObj;
4744 }
4745 }
4746 }
4747 function saveTsw() {
4748 return stuffMake(arguments, {}, prepare, deal, null, true);
4749 function prepare(values, isPost) {
4750 var valueReq = {
4751 goformId: "SAVE_TSW",
4752 openEnable: values.openEnable,
4753 closeEnable: values.closeEnable
4754 };
4755 if (values.openEnable == '1') {
4756 valueReq.openTime = values.openTime;
4757 valueReq.closeTime = values.closeTime;
4758 }
4759 return valueReq;
4760 }
4761 function deal(paramD) {
4762 if (paramD && paramD.result == 'success') {
4763 return paramD;
4764 } else if (paramD && paramD.result == 'failure') {
4765 return paramD;
4766 } else {
4767 return errUnknownObj;
4768 }
4769 }
4770 }
4771 function trafficCalibration() {
4772 return stuffMake(arguments, {}, prepare, deal, null, true);
4773 function prepare(values, isPost) {
4774 var valueReq = {
4775 goformId: "FLOW_CALIBRATION_MANUAL",
4776 calibration_way: values.way,
4777 time: values.way == 'time' ? values.value : 0,
4778 data: values.way == 'data' ? values.value : 0
4779 };
4780 return valueReq;
4781 }
4782 function deal(paramD) {
4783 if (paramD && paramD.result == 'success') {
4784 return paramD;
4785 } else {
4786 return errUnknownObj;
4787 }
4788 }
4789 }
4790 function getParams() {
4791 return stuffMake(arguments, {}, prepare, deal, null, false);
4792 function prepare(values, isPost) {
4793 var valueReq = {};
4794 if (_.isArray(values.nv)) {
4795 valueReq.cmd = values.nv.join(',');
4796 valueReq.multi_data = 1;
4797 } else {
4798 valueReq.cmd = values.nv;
4799 }
4800 return valueReq;
4801 }
4802 function deal(paramD) {
4803 if (paramD) {
4804 return paramD;
4805 } else {
4806 return errUnknownObj;
4807 }
4808 }
4809 }
4810 function getRedirectData() {
4811 return stuffMake(arguments, {}, prepare, deal, null, false);
4812 function prepare(values, isPost) {
4813 var valueReq = {};
4814 valueReq.cmd = "vwim_mc_state,traffic_overrun,detect_new_version";
4815 valueReq.multi_data = 1;
4816 return valueReq;
4817 }
4818 function deal(paramD) {
4819 if (paramD) {
4820 var result = {};
4821 result.vwim_mc_state = paramD.vwim_mc_state;
4822 result.traffic_overrun = paramD.traffic_overrun;
4823 result.detect_new_version = paramD.detect_new_version;
4824 result.blc_wan_mode = informationAll.blc_wan_mode;
4825 return result;
4826 } else {
4827 return errUnknownObj;
4828 }
4829 }
4830 }
4831 function clearRedirectFlag() {
4832 return stuffMake(arguments, {}, prepare, deal, null, true);
4833 function prepare(values, isPost) {
4834 var valueReq = {};
4835 valueReq.goformId = "CLEAR_REDIRECT_FLAG";
4836 valueReq.flag_id = values.redirectFlags;
4837 return valueReq;
4838 }
4839 function deal(paramD) {
4840 if (paramD) {
4841 return paramD;
4842 } else {
4843 return errUnknownObj;
4844 }
4845 }
4846 }
4847 function getV4Switch() {
4848 return stuffMake(arguments, {}, prepare, deal, null, false);
4849 function prepare(values, isPost) {
4850 var valueReq = {};
4851 valueReq.cmd = "lock_zone_enable,pin_interlock_and_V4_lock";
4852 valueReq.multi_data = 1;
4853 return valueReq;
4854 }
4855 function deal(paramD) {
4856 if (paramD) {
4857 return paramD;
4858 } else {
4859 return errUnknownObj;
4860 }
4861 }
4862 }
4863 function setV4Switch() {
4864 return stuffMake(arguments, {}, prepare, deal, null, true);
4865 function prepare(values, isPost) {
4866 var valueReq = {};
4867 valueReq.goformId = "PIN_LOCK_V4_ENCODE";
4868 valueReq.pin_interlock_and_V4_lock = values.pin_interlock_and_V4_lock;
4869 valueReq.TspLock_key_data = values.TspLock_key_data;
4870 return valueReq;
4871 }
4872 function deal(paramD) {
4873 if (paramD && paramD.result == "success") {
4874 return paramD;
4875 } else {
4876 return errUnknownObj;
4877 }
4878 }
4879 }
4880 function getCellId() {
4881 return stuffMake(arguments, {}, prepare, deal, null, false);
4882 function prepare(values, isPost) {
4883 var valueReq = {};
4884 valueReq.cmd = "cell_id_list,global_cell_id,network_type,sub_network_type,cell_not_correct";
4885 valueReq.multi_data = 1;
4886 return valueReq;
4887 }
4888 function deal(paramD) {
4889 if (paramD) {
4890 return paramD;
4891 } else {
4892 return errUnknownObj;
4893 }
4894 }
4895 }
4896 function setCellIdSwitch() {
4897 return stuffMake(arguments, {}, prepare, deal, null, true);
4898 function prepare(values, isPost) {
4899 var valueReq = {};
4900 valueReq.goformId = "LOCK_ZONE";
4901 valueReq.lock_zone_enable = values.lock_zone_enable;
4902 return valueReq;
4903 }
4904 function deal(paramD) {
4905 if (paramD && paramD.result == "success") {
4906 return paramD;
4907 } else {
4908 return errUnknownObj;
4909 }
4910 }
4911 }
4912 function getUpdateType() {
4913 return stuffMake(arguments, {}, prepare, deal, null, false);
4914 function prepare(values, isPost) {
4915 var valueReq = {
4916 cmd: "update_type"
4917 };
4918 return valueReq;
4919 }
4920 function deal(paramD) {
4921 return {
4922 update_type: paramD.update_type ? paramD.update_type : "mifi_fota"
4923 }
4924 }
4925 }
4926 function getSecurityInfo() {
4927 return stuffMake(arguments, {}, prepare, deal, null, false);
4928 function prepare(values, isPost) {
4929 var valueReq = {};
4930 valueReq.cmd = "AuthMode,passPhrase";
4931 valueReq.multi_data = 1;
4932 return valueReq;
4933 }
4934 function deal(paramD) {
4935 if (paramD) {
4936 var result = {};
4937 result.AuthMode = paramD.AuthMode;
4938 result.passPhrase = config.PASSWORD_ENCODE ? Base64.decode(paramD.passPhrase) : paramD.passPhrase;
4939 return result;
4940 } else {
4941 return errUnknownObj;
4942 }
4943 }
4944 }
4945 //can delete
4946 function setSecurityInfo() {
4947 return stuffMake(arguments, {}, prepare, deal, null, true);
4948 function prepare(values, isPost) {
4949 var valueReq = {};
4950 valueReq.goformId = "SET_WIFI_SECURITY_INFO";
4951 valueReq.AuthMode = values.AuthMode;
4952 if (valueReq.AuthMode == "WPAPSKWPA2PSK") {
4953 valueReq.passPhrase = config.PASSWORD_ENCODE ? Base64.encode(values.passPhrase) : values.passPhrase;
4954 }
4955 return valueReq;
4956 }
4957 function deal(paramD) {
4958 if (paramD) {
4959 return paramD;
4960 } else {
4961 return errUnknownObj;
4962 }
4963 }
4964 }
4965 function setWifiBasic() {
4966 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
4967 function prepare(values) {
4968 var valueReq = {
4969 goformId: "SET_WIFI_SSID1_SETTINGS",
4970 ssid: values.SSID,
4971 broadcastSsidEnabled: values.broadcast,
4972 MAX_Access_num: values.station,
4973 security_mode: values.AuthMode,
4974 cipher: values.cipher,
4975 NoForwarding: values.NoForwarding,
4976 show_qrcode_flag: values.show_qrcode_flag
4977 };
4978 if (config.WIFI_WEP_SUPPORT) {
4979 valueReq.wep_default_key = values.wep_default_key;
4980 valueReq.wep_key_1 = values.wep_key_1;
4981 valueReq.wep_key_2 = values.wep_key_2;
4982 valueReq.wep_key_3 = values.wep_key_3;
4983 valueReq.wep_key_4 = values.wep_key_4;
4984 if (values.wep_default_key == '1') {
4985 valueReq.WEP2Select = values.WEP2Select;
4986 } else if (values.wep_default_key == '2') {
4987 valueReq.WEP3Select = values.WEP3Select;
4988 } else if (values.wep_default_key == '3') {
4989 valueReq.WEP4Select = values.WEP4Select;
4990 } else {
4991 valueReq.WEP1Select = values.WEP1Select;
4992 }
4993 }
4994 if (values.AuthMode == "WPAPSK" || values.AuthMode == "WPA2PSK" || values.AuthMode == "WPAPSKWPA2PSK" || values.AuthMode == "WPA3Personal" || values.AuthMode == "WPA2WPA3") {
4995 valueReq.security_shared_mode = values.cipher;
4996 valueReq.passphrase = config.PASSWORD_ENCODE ? Base64.encode(values.passPhrase) : values.passPhrase;
4997 } else if (values.AuthMode == "SHARED") {
4998 valueReq.security_shared_mode = "WEP";
4999 valueReq.security_mode = "SHARED";
5000 } else {
5001 if (values.encryptType == "WEP") {
5002 valueReq.security_shared_mode = "WEP";
5003 valueReq.security_mode = "OPEN";
5004 } else {
5005 valueReq.security_shared_mode = "NONE";
5006 }
5007 }
5008 return valueReq;
5009 }
5010 function deal(paramD) {
5011 if (paramD) {
5012 return paramD;
5013 } else {
5014 return errUnknownObj;
5015 }
5016 }
5017 }
5018 function setWifiBasic4SSID2() {
5019 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
5020 function prepare(values) {
5021 var valueReq = {
5022 goformId: "SET_WIFI_SSID2_SETTINGS",
5023 m_SSID: values.m_SSID,
5024 m_HideSSID: values.m_broadcast,
5025 m_MAX_Access_num: values.m_station,
5026 m_AuthMode: values.m_AuthMode,
5027 cipher: values.m_cipher,
5028 m_NoForwarding: values.m_NoForwarding,
5029 m_show_qrcode_flag: values.m_show_qrcode_flag
5030 };
5031 if (config.WIFI_WEP_SUPPORT) {
5032 valueReq.m_DefaultKeyID = values.m_wep_default_key;
5033 valueReq.m_Key1Str1 = values.m_wep_key_1;
5034 valueReq.m_Key2Str1 = values.m_wep_key_2;
5035 valueReq.m_Key3Str1 = values.m_wep_key_3;
5036 valueReq.m_Key4Str1 = values.m_wep_key_4;
5037 if (values.m_wep_default_key == '1') {
5038 valueReq.m_Key2Type = values.m_WEP2Select;
5039 } else if (values.m_wep_default_key == '2') {
5040 valueReq.m_Key3Type = values.m_WEP3Select;
5041 } else if (values.m_wep_default_key == '3') {
5042 valueReq.m_Key4Type = values.m_WEP4Select;
5043 } else {
5044 valueReq.m_Key1Type = values.m_WEP1Select;
5045 }
5046 }
5047 if (values.m_AuthMode == "WPAPSK" || values.m_AuthMode == "WPA2PSK" || values.m_AuthMode == "WPAPSKWPA2PSK" || values.m_AuthMode == "WPA3Personal" || values.m_AuthMode == "WPA2WPA3") {
5048 valueReq.m_EncrypType = values.m_cipher;
5049 valueReq.m_WPAPSK1 = config.PASSWORD_ENCODE ? Base64.encode(values.m_passPhrase) : values.m_passPhrase;
5050 } else if (values.m_AuthMode == "SHARED") {
5051 valueReq.m_EncrypType = "WEP";
5052 valueReq.m_security_mode = "SHARED";
5053 } else {
5054 if (values.m_encryptType == "WEP") {
5055 valueReq.m_EncrypType = "WEP";
5056 valueReq.m_security_mode = "OPEN";
5057 } else {
5058 valueReq.m_EncrypType = "NONE";
5059 }
5060 }
5061 return valueReq;
5062 }
5063 function deal(paramD) {
5064 if (paramD) {
5065 return paramD;
5066 } else {
5067 return errUnknownObj;
5068 }
5069 }
5070 }
5071 function getWifiBasic() {
5072 return stuffMake(arguments, {}, prepare, deal, null, false);
5073 function prepare(values, isPost) {
5074 var valueReq = {};
5075 var wpapsk = config.PASSWORD_ENCODE ? "WPAPSK1_encode,m_WPAPSK1_encode," : "imei,rnum_js,WPAPSK1_enaes,m_WPAPSK1_enaes,";
5076 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";
5077 valueReq.multi_data = 1;
5078 return valueReq;
5079 }
5080 function deal(paramD) {
5081 if (paramD) {
5082 var result = {
5083 wifi_enable: paramD.wifi_cur_state == "1" ? "1" : "0",
5084 multi_ssid_enable: paramD.m_ssid_enable,
5085 MAX_Station_num: $.isNumeric(paramD.MAX_Station_num) ? paramD.MAX_Station_num : config.MAX_STATION_NUMBER,
5086 AuthMode: paramD.AuthMode,
5087 SSID: paramD.SSID1,
5088 broadcast: paramD.HideSSID,
5089 apIsolation: paramD.NoForwarding,
5090 passPhrase: config.PASSWORD_ENCODE ? Base64.decode(paramD.WPAPSK1_encode) : wifiDecode(paramD.rnum_js,paramD.imei,paramD.WPAPSK1_enaes),
5091 MAX_Access_num: paramD.MAX_Access_num,
5092 cipher: paramD.EncrypType == "TKIP" ? "0" : paramD.EncrypType == "AES" ? 1 : 2,
5093 encryptType: paramD.EncrypType,
5094 show_qrcode_flag: paramD.show_qrcode_flag == "1" ? true : false,
5095 keyID: paramD.DefaultKeyID,
5096 Key1Str1: paramD.Key1Str1,
5097 Key2Str1: paramD.Key2Str1,
5098 Key3Str1: paramD.Key3Str1,
5099 Key4Str1: paramD.Key4Str1,
5100 m_SSID: paramD.m_SSID,
5101 m_broadcast: paramD.m_HideSSID,
5102 m_apIsolation: paramD.m_NoForwarding,
5103 m_MAX_Access_num: paramD.m_MAX_Access_num,
5104 m_AuthMode: paramD.m_AuthMode,
5105 m_passPhrase: config.PASSWORD_ENCODE ? Base64.decode(paramD.m_WPAPSK1_encode) : wifiDecode(paramD.rnum_js,paramD.imei,paramD.m_WPAPSK1_enaes),
5106 m_cipher: paramD.m_EncrypType == "TKIP" ? "0" : paramD.m_EncrypType == "AES" ? 1 : 2,
5107 m_show_qrcode_flag: paramD.m_show_qrcode_flag == "1" ? true : false,
5108 m_encryptType: paramD.m_EncrypType,
5109 m_keyID: paramD.m_DefaultKeyID,
5110 m_Key1Str1: paramD.m_Key1Str1,
5111 m_Key2Str1: paramD.m_Key2Str1,
5112 m_Key3Str1: paramD.m_Key3Str1,
5113 m_Key4Str1: paramD.m_Key4Str1,
5114 rotationFlag: paramD.rotationFlag,
5115 ap_station_enable: paramD.wifi_sta_connection
5116 };
5117 return result;
5118 } else {
5119 return errUnknownObj;
5120 }
5121 }
5122 }
5123 function setWifiBasicMultiSSIDSwitch() {
5124 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
5125 function prepare(values) {
5126 var paraTemp = values;
5127 if (values.wifiEnabled == '0') {
5128 paraTemp = {
5129 wifiEnabled: values.wifiEnabled
5130 }
5131 }
5132 var valueReq = $.extend({
5133 goformId: "SET_WIFI_INFO",
5134 }, paraTemp);
5135 return valueReq;
5136 }
5137 function deal(paramD) {
5138 if (paramD) {
5139 return paramD;
5140 } else {
5141 return errUnknownObj;
5142 }
5143 }
5144 }
5145 function stuffMake(array, result, prepare, dealMethod, errorObject, isPost) {
5146 var values = array[0],
5147 callback = array[1],
5148 errorCallback = array[2];
5149 var objectToReturn;
5150 if (result && typeof result.errorType === 'string') {
5151 objectToReturn = $.extend(errUnknownObj, result);
5152 if (!callback) {
5153 return objectToReturn;
5154 }
5155 doCallback(objectToReturn, callback, errorCallback);
5156 } else {
5157 objectToReturn = $.extend({}, result);
5158 var valueReq;
5159 if (prepare) {
5160 valueReq = prepare(values, isPost);
5161 } else {
5162 valueReq = values;
5163 }
5164 if (!callback) {
5165 if (valueReq && (valueReq.cmd || valueReq.goformId)) {
5166 var r = reqSync(valueReq, isPost);
5167 if (dealMethod) {
5168 objectToReturn = $.extend({}, dealMethod(r));
5169 } else {
5170 objectToReturn = r;
5171 }
5172 }
5173 return objectToReturn;
5174 } else {
5175 if (valueReq && (valueReq.cmd || valueReq.goformId)) {
5176 reqAsync(valueReq, function (paramD) {
5177 if (dealMethod) {
5178 objectToReturn = $.extend({}, dealMethod(paramD));
5179 } else {
5180 objectToReturn = $.extend({}, paramD);
5181 }
5182 if (!valueReq.notCallback) {
5183 doCallback(objectToReturn, callback, errorCallback);
5184 }
5185 }, function () {
5186 if (errorObject) {
5187 objectToReturn = $.extend(errUnknownObj, errorObject);
5188 } else {
5189 objectToReturn = $.extend(errUnknownObj, {
5190 errorType: 'Unknown'
5191 });
5192 }
5193 doCallback(objectToReturn, callback, errorCallback);
5194 }, isPost);
5195 } else {
5196 doCallback(objectToReturn, callback, errorCallback);
5197 }
5198 }
5199 }
5200 function doCallback(resultToReturn, callback, errorCallback) {
5201 errorCallback = errorCallback ? errorCallback : callback;
5202 if (isErrorObject(resultToReturn)) {
5203 switch (resultToReturn.errorType) {
5204 case 'cellularNetworkError':
5205 case 'deviceError':
5206 case 'wifiConnectionError':
5207 window.receivedNonSpecificError(resultToReturn);
5208 break;
5209 default:
5210 errorCallback(resultToReturn);
5211 }
5212 } else {
5213 callback(resultToReturn);
5214 }
5215 }
5216 }
5217 function reqSync(values, isPost) {
5218 return reqAJAX(values, null, null, false, isPost);
5219 }
5220 function reqAsync(values, successCallback, errorCallback, isPost) {
5221 reqAJAX(values, successCallback, errorCallback, true, isPost);
5222 }
5223 function getString(values){
5224 var regexp = /^[A-z0-9]+$/;
5225 var matches = values.match(regexp);
5226 if (matches == null){
5227 return "error";
5228 } else {
5229 return values;
5230 }
5231 }
5232 function reqAJAX(values, successCallback, errorCallback, async, isPost) {
5233 var result = null;
5234 $.ajax({
5235 type: !!isPost ? "POST" : "GET",
5236 url: isPost ? "/reqproc/proc_post" : values.cmd ? "/reqproc/proc_get" : "/reqproc/proc_post",
5237 data: values,
5238 dataType: "json",
5239 async: !!async,
5240 cache: false,
5241 error: function (paramD) {
5242 if (async) {
5243 errorCallback(paramD);
5244 } else if (paramD.status == 200) {
5245 result = jQuery.parseJSON('(' + getString(paramD.responseText) + ')');
5246 }
5247 },
5248 success: function (paramD) {
5249 if (async) {
5250 successCallback(paramD);
5251 } else {
5252 result = paramD;
5253 }
5254 }
5255 });
5256 if (!async) {
5257 return result;
5258 }
5259 }
5260 var informationAll = {
5261 networkType: "",
5262 signalImg: "0",
5263 spn_b1_flag: "1",
5264 spn_name_data: "",
5265 spn_b2_flag: "1",
5266 networkOperator: "China Mobile",
5267 connectStatus: "ppp_disconnected",
5268 rj45ConnectStatus: "rj45_dead",
5269 attachedDevices: [],
5270 ssid1AttachedNum: 0,
5271 ssid2AttachedNum: 0,
5272 data_counter: {
5273 uploadRate: 0,
5274 downloadRate: 0,
5275 totalSent: 0,
5276 totalReceived: 0,
5277 totalConnectedTime: 0,
5278 currentSent: 0,
5279 currentReceived: 0,
5280 currentConnectedTime: 0,
5281 monthlySent: 0,
5282 monthlyReceived: 0,
5283 monthlyConnectedTime: 0,
5284 month: ''
5285 },
5286 newSmsReceived: false,
5287 smsReportReceived: false,
5288 smsUnreadCount: "0",
5289 isLoggedIn: undefined,
5290 limitVolumeEnable: false,
5291 limitVolumeType: '1',
5292 limitVolumePercent: "100",
5293 limitVolumeSize: "0",
5294 allowRoamingUpdate: "0",
5295 blc_wan_mode: "",
5296 ap_station_enable: undefined,
5297 ap_station_mode: undefined,
5298 dialMode: '',
5299 ethWanMode: 'AUTO',
5300 fota_user_selector: '',
5301 defaultWanName: ""
5302 };
5303 var errUnknownObj = {
5304 errorType: 'UnknownError',
5305 errorId: '123',
5306 errorText: 'UnknownError'
5307 };
5308 var updateTimerFlag = true;
5309 return {
5310 clearRedirectFlag: clearRedirectFlag,
5311 connect: connect,
5312 disconnect: disconnect,
5313 getSIMPhoneBookCapacity: getSIMPhoneBookCapacity,
5314 getDevicePhoneBookCapacity: getDevicePhoneBookCapacity,
5315 getDevicePhoneBooks: getDevicePhoneBooks,
5316 getSIMPhoneBooks: getSIMPhoneBooks,
5317 getPhoneBooks: getPhoneBooks,
5318 getPhoneBookReady: getPhoneBookReady,
5319 getPhoneBooksByGroup: getPhoneBooksByGroup,
5320 deletePhoneBooks: deletePhoneBooks,
5321 deleteAllPhoneBooks: deleteAllPhoneBooks,
5322 deleteAllPhoneBooksByGroup: deleteAllPhoneBooksByGroup,
5323 savePhoneBook: savePhoneBook,
5324 deleteAllMessages: deleteAllMessages,
5325 deleteMessage: deleteMessage,
5326 setSmsRead: setSmsRead,
5327 sendSMS: sendSMS,
5328 saveSMS: saveSMS,
5329 getSMSReady: getSMSReady,
5330 getSMSMessages: getSMSMessages,
5331 getSMSDeliveryReport: getSMSDeliveryReport,
5332 getSmsCapability: getSmsCapability,
5333 resetNewSmsReceivedVar: resetNewSmsReceivedVar,
5334 resetSmsReportReceivedVar: resetSmsReportReceivedVar,
5335 getSmsSetting: getSmsSetting,
5336 setSmsSetting: setSmsSetting,
5337 getAttachedCableDevices: getAttachedCableDevices,
5338 getCurrentlyAttachedDevicesInfo: getCurrentlyAttachedDevicesInfo,
5339 getConnectionInfo: getConnectionInfo,
5340 getRedirectData: getRedirectData,
5341 getLanguage: getLanguage,
5342 setLanguage: setLanguage,
5343 getNetSelectInfo: getNetSelectInfo,
5344 getSecurityInfo: getSecurityInfo,
5345 setSecurityInfo: setSecurityInfo,
5346 getStatusInfo: getStatusInfo,
5347 getConnectionMode: getConnectionMode,
5348 setConnectionMode: setConnectionMode,
5349 getWifiBasic: getWifiBasic,
5350 setWifiBasic: setWifiBasic,
5351 setWifiBasic4SSID2: setWifiBasic4SSID2,
5352 setWifiBasicMultiSSIDSwitch: setWifiBasicMultiSSIDSwitch,
5353 getWpsInfo: getWpsInfo,
5354 openWps: openWps,
5355 getSleepMode: getSleepMode,
5356 setSleepMode: setSleepMode,
5357 getWifiAdvance: getWifiAdvance,
5358 setWifiAdvance: setWifiAdvance,
5359 getWifiRange: getWifiRange,
5360 setWifiRange: setWifiRange,
mj.qu19ac6692024-08-21 19:18:36 -07005361
zw.wangcfae4372024-08-12 16:41:12 +08005362 getLoginStatus: getLoginStatus,
5363 getLoginData: getLoginData,
5364 login: login,
5365 logout: logout,
5366 changeManageInfo: changeManageInfo,
5367 getPinData: getPinData,
5368 enablePin: enablePin,
5369 disablePin: disablePin,
5370 changePin: changePin,
5371 enterPIN: enterPIN,
5372 enterPUK: enterPUK,
5373 getLanInfo: getLanInfo,
5374 setLanInfo: setLanInfo,
5375 getApnSettings: getApnSettings,
5376 deleteApn: deleteApn,
5377 setDefaultApn: setDefaultApn,
5378 addOrEditApn: addOrEditApn,
5379 getQuickSettingInfo: getQuickSettingInfo,
5380 setQuickSetting4IPv6: setQuickSetting4IPv6,
5381 scanForNetwork: scanForNetwork,
5382 setBearerPreference: setBearerPreference,
5383 editHostName: editHostName,
5384 getSiteWhiteList: getSiteWhiteList,
5385 removeSiteWhite: removeSiteWhite,
5386 saveSiteWhite: saveSiteWhite,
5387 setNetwork: setNetwork,
5388 getUpnpSetting: getUpnpSetting,
5389 setUpnpSetting: setUpnpSetting,
5390 getDmzSetting: getDmzSetting,
5391 setDmzSetting: setDmzSetting,
5392 getDeviceInfo: getDeviceInfo,
5393 getDeviceInfoLow: getDeviceInfoLow,
5394 getPortForward: getPortForward,
5395 setPortForward: setPortForward,
5396 getPortFilter: getPortFilter,
5397 setPortFilterBasic: setPortFilterBasic,
5398 setPortFilter: setPortFilter,
5399 deleteFilterRules: deleteFilterRules,
5400 getPortMap: getPortMap,
5401 setPortMap: setPortMap,
5402 enablePortMap: enablePortMap,
5403 deleteMapRules: deleteMapRules,
5404 getTrafficAlertInfo: getTrafficAlertInfo,
5405 setTrafficAlertInfo: setTrafficAlertInfo,
5406 getCurrentUpgradeState: getCurrentUpgradeState,
5407 setUpgradeSelectOp: setUpgradeSelectOp,
5408 addTimerThings: addTimerSomething,
5409 removeTimerThings: removeTimerSomething,
5410 getPackSizeInfo: getPackSizeInfo,
5411 getMandatory: getMandatory,
5412 getOTAUpdateSetting: getOTAUpdateSetting,
5413 setOTAUpdateSetting: setOTAUpdateSetting,
5414 getSignalStrength: getSignalStrength,
5415 getOTAlastCheckTime: getOTAlastCheckTime,
5416 clearUpdateResult: clearUpdateResult,
5417 refreshAPStationStatus: refreshAPStationStatus,
5418 getSntpParams: getSntpParams,
5419 setSntpSetting: setSntpSetting,
5420 setSNTPDate: setSNTPDate,
5421 restoreFactorySettings: restoreFactorySettings,
5422 checkRestoreStatus: checkRestoreStatus,
5423 getSysSecurity: getSysSecurity,
5424 setSysSecurity: setSysSecurity,
5425 deleteForwardRules: deleteForwardRules,
5426 enableVirtualServer: enableVirtualServer,
5427 getSDConfiguration: getSDConfiguration,
5428 setSdCardMode: setSdCardMode,
5429 checkFileExists: checkFileExists,
5430 getFileList: getFileList,
5431 fileRename: fileRename,
5432 getSdMemorySizes: getSdMemorySizes,
5433 deleteFilesAndFolders: deleteFilesAndFolders,
5434 createFolder: createFolder,
5435 setSdCardSharing: setSdCardSharing,
5436 setUpdateInfoWarning: setUpdateInfoWarning,
5437 getUpdateInfoWarning: getUpdateInfoWarning,
5438 getAPStationBasic: getAPStationBasic,
5439 setAPStationBasic: setAPStationBasic,
5440 getWdsInfo: getWdsInfo,
5441 setWDS: setWDS,
5442 addUrlFilterRule: addUrlFilterRule,
5443 getUrlFilterList: getUrlFilterList,
5444 deleteSelectedRules: deleteSelectedRules,
5445 getMacFilterInfo: getMacFilterInfo,
5446 setMacFilter: setMacFilter,
5447 getFastbootSetting: getFastbootSetting,
5448 setFastbootSetting: setFastbootSetting,
5449 turnOffDevice: turnOffDevice,
5450 restart: restart,
5451 getScheduleSetting: getScheduleSetting,
5452 setScheduleSetting: setScheduleSetting,
5453 updateTimerFlag: updateTimerFlag,
5454 childGroupList: childGroupList,
5455 addChildGroup: addChildGroup,
5456 removeChildGroup: removeChildGroup,
5457 checkCurrentUserInChildGroup: checkCurrentUserInChildGroup,
5458 getTimeLimited: getTimeLimited,
5459 saveTimeLimited: saveTimeLimited,
5460 getHostNameList: getHostNameList,
5461 getHotspotList: getHotspotList,
5462 searchHotspot: searchHotspot,
5463 getSearchHotspotList: getSearchHotspotList,
5464 saveHotspot: saveHotspot,
5465 deleteHotspot: deleteHotspot,
5466 connectHotspot: connectHotspot,
5467 disconnectHotspot: disconnectHotspot,
5468 getOpMode: getOpMode,
5469 getRj45PlugState: getRj45PlugState,
5470 SetOperationMode: SetOperationMode,
5471 getPppoeParams: getPppoeParams,
5472 setPppoeDialMode: setPppoeDialMode,
5473 getTsw: getTsw,
5474 saveTsw: saveTsw,
5475 trafficCalibration: trafficCalibration,
5476 getParams: getParams,
5477 getNewVersionState: getNewVersionState,
5478 getUpgradeResult: getUpgradeResult,
5479 getV4Switch: getV4Switch,
5480 setV4Switch: setV4Switch,
5481 getCellId: getCellId,
5482 setCellIdSwitch: setCellIdSwitch,
5483 getDdnsParams: getDdnsParams,
5484 setDDNSForward: setDDNSForward,
5485 getUpdateType: getUpdateType,
5486 getCurretnMAC: getCurretnMAC,
5487 getUSSDResponse: getUSSDResponse,
5488 USSDReplyCancel: USSDReplyCancel,
5489 getNetworkUnlockTimes: getNetworkUnlockTimes,
5490 unlockNetwork: unlockNetwork,
5491 getSyslogInfo: getSyslogInfo,
5492 setSysLog: setSysLog,
5493 };
5494});
5495
mj.qu19ac6692024-08-21 19:18:36 -07005496 // Router����
zw.wangcfae4372024-08-12 16:41:12 +08005497
5498define("adm_lan","jquery knockout set service".split(" "),
5499
5500 function ($, ko, config, service) {
mj.qu19ac6692024-08-21 19:18:36 -07005501
zw.wangcfae4372024-08-12 16:41:12 +08005502 var originfrmLan = "";
mj.qu19ac6692024-08-21 19:18:36 -07005503
5504 // ��ȡ·������������Ϣ
zw.wangcfae4372024-08-12 16:41:12 +08005505 function getLanInfo() {
5506 return service.getLanInfo();
5507 }
mj.qu19ac6692024-08-21 19:18:36 -07005508
zw.wangcfae4372024-08-12 16:41:12 +08005509 function hex(val) {
5510 var h = (val - 0).toString(16);
5511 if (h.length == 1)
5512 h = '0' + h;
5513 return h.toUpperCase();
5514 }
mj.qu19ac6692024-08-21 19:18:36 -07005515
zw.wangcfae4372024-08-12 16:41:12 +08005516 function LanViewModel() {
5517 var target = this;
5518
5519 var info = getLanInfo();
5520
5521 target.dhcpStart = ko.observable(info.dhcpStart);
5522 target.dhcpEnd = ko.observable(info.dhcpEnd);
5523 target.dhcpLease = ko.observable(info.dhcpLease);
mj.qu19ac6692024-08-21 19:18:36 -07005524
zw.wangcfae4372024-08-12 16:41:12 +08005525 target.ipAddress = ko.observable(info.ipAddress);
5526 target.subnetMask = ko.observable(info.subnetMask);
5527 target.dhcpServer = ko.observable(info.dhcpServer);
5528
5529 target.macAddress = ko.observable(info.macAddress);
5530 target.showMacAddress = ko.observable(config.SHOW_MAC_ADDRESS);
mj.qu19ac6692024-08-21 19:18:36 -07005531
zw.wangcfae4372024-08-12 16:41:12 +08005532 target.hasWifi = ko.observable(config.HAS_WIFI);
5533 target.hasUssd = config.HAS_USSD;
5534 target.hasDdns = config.DDNS_SUPPORT;
mj.qu19ac6692024-08-21 19:18:36 -07005535
zw.wangcfae4372024-08-12 16:41:12 +08005536 target.hasUpdateCheck = config.HAS_UPDATE_CHECK;
mj.qu19ac6692024-08-21 19:18:36 -07005537
zw.wangcfae4372024-08-12 16:41:12 +08005538 target.clear = function () {
5539 clearTimer();
5540 init();
5541 clearValidateMsg();
5542 };
mj.qu19ac6692024-08-21 19:18:36 -07005543
zw.wangcfae4372024-08-12 16:41:12 +08005544 target.refreshStatus = function () {
5545 var connInfo = service.getConnectionInfo();
5546 if (connInfo.connectStatus == 'ppp_disconnected') {
5547 $('input', '#frmLan').each(function () {
5548 $(this).attr("disabled", false);
5549 });
5550 } else {
5551 $('input', '#frmLan').each(function () {
5552 $(this).attr("disabled", true);
5553 });
5554
5555 clearValidateMsg();
5556 }
5557 };
5558
mj.qu19ac6692024-08-21 19:18:36 -07005559 // ������Ӧ�������������ñ���
zw.wangcfae4372024-08-12 16:41:12 +08005560 target.saveAct = function () {
5561 showLoading();
5562 var params = {
5563 ipAddress: target.ipAddress(),
5564 subnetMask: target.subnetMask(),
5565 dhcpServer: target.dhcpServer(),
5566 dhcpStart: target.dhcpStart(),
5567 dhcpEnd: target.dhcpEnd(),
5568 dhcpLease: target.dhcpLease()
5569 };
mj.qu19ac6692024-08-21 19:18:36 -07005570
zw.wangcfae4372024-08-12 16:41:12 +08005571 service.setLanInfo(params, function (result) {
5572 if (result.result == "success") {
5573 successOverlay();
5574 target.clear();
5575 } else {
5576 errorOverlay();
5577 }
5578 });
5579 };
5580
mj.qu19ac6692024-08-21 19:18:36 -07005581 // ������Ӧ�������������ñ���
zw.wangcfae4372024-08-12 16:41:12 +08005582 target.save = function () {
5583 var frmLanObj = $('#frmLan').serialize();
5584 if (frmLanObj == originfrmLan) {
5585 showAlert("setting_no_change");
5586 return false;
5587 }
5588 if (config.RJ45_SUPPORT) {
5589 var pppObj = service.getPppoeParams();
5590 if (sf_isValidate_StaticIP(pppObj.static_wan_ipaddr, target.ipAddress(), target.subnetMask())) {
5591 showAlert("lan_tip_staticip_notsame");
5592 return false;
5593 }
5594 }
5595 showConfirm("lan_confirm_reopen", function () {
5596 target.saveAct();
5597 });
5598 };
5599
5600 target.refreshStatus();
mj.qu19ac6692024-08-21 19:18:36 -07005601 // dhcpServer�л���Ӧ����
zw.wangcfae4372024-08-12 16:41:12 +08005602 target.dhcpServerHandler = function () {
5603 $("#txtIpAddress").parent().find(".error").hide();
5604 $("#txtIpAddress").show();
5605 return true;
5606 };
5607 addTimeout(function () {
5608 originfrmLan = $('#frmLan').serialize();
5609 }, 500);
5610 }
5611
mj.qu19ac6692024-08-21 19:18:36 -07005612
zw.wangcfae4372024-08-12 16:41:12 +08005613 function sf_opAnd4Byte(i_v1, i_v2) {
5614 var index;
5615 var var1 = [];
5616 var var2 = [];
5617 var result='0x';
5618
5619 for (index=2,index_tmp=0; index<10; index+=2,index_tmp++) {
5620 var1[index_tmp]='0x'+i_v1.substring(index,index+2);
5621 var2[index_tmp]='0x'+i_v2.substring(index,index+2);
5622 }
5623
5624 for (index=0; index<4; index++) {
5625 result = result + hex(var1[index]&var2[index]);
5626 }
5627
5628 return result - 0;
5629 }
5630
mj.qu19ac6692024-08-21 19:18:36 -07005631 // �������ر���У������
zw.wangcfae4372024-08-12 16:41:12 +08005632 $.validator.addMethod("dhcp_check", function (i_value, i_element, i_parameter) {
5633 var dhcpIp = i_parameter == "start" ? $('#txtDhcpIpPoolStart').val() : $('#txtDhcpIpPoolEnd').val();
5634 var result = sf_isValidate_Gateway($('#txtIpAddress').val(), $('#txtSubnetMask').val(), dhcpIp);
5635 return this.optional(i_element) || result;
5636 });
5637
5638 $.validator.addMethod("dhcpCompare", function (i_value, i_element, i_parameter) {
5639 var result;
5640 if(i_parameter == "#txtDhcpIpPoolStart") {
5641 result = sf_isValidate_StartEndIp($('#txtIpAddress').val(), $('#txtSubnetMask').val(), $(i_parameter).val(), i_value);
5642 }
5643 else {
5644 result = sf_isValidate_StartEndIp($('#txtIpAddress').val(), $('#txtSubnetMask').val(), i_value, $(i_parameter).val());
5645 }
5646 return result != 1;
5647 });
5648
5649 $.validator.addMethod("ipRange", function (i_value, i_element, i_parameter) {
5650 var DHCP_flag = false;
5651 if($('#dhcpEnable').is(':checked')){
5652 DHCP_flag = true;
5653 }
5654 var result = sf_isValidate_StartEndIp(i_value, $('#txtSubnetMask').val(), $('#txtDhcpIpPoolStart').val(), $('#txtDhcpIpPoolEnd').val(), DHCP_flag);
5655 return result != 2;
5656 });
mj.qu19ac6692024-08-21 19:18:36 -07005657
zw.wangcfae4372024-08-12 16:41:12 +08005658 $.validator.addMethod("subnetmask_check", function (i_value, i_element, i_parameter) {
5659 var result = sf_isValidate_Netmask(i_value);
5660 return this.optional(i_element) || result;
5661 });
zw.wangcfae4372024-08-12 16:41:12 +08005662
mj.qu19ac6692024-08-21 19:18:36 -07005663
5664 // ��̬��ЧIPУ�麯��
zw.wangcfae4372024-08-12 16:41:12 +08005665 function sf_isValidate_StaticIP(i_ip, i_lanIp, i_lanMask){
mj.qu19ac6692024-08-21 19:18:36 -07005666 if(!i_ip || !i_lanIp || !i_lanMask){//������������
zw.wangcfae4372024-08-12 16:41:12 +08005667 return false;
5668 }
mj.qu19ac6692024-08-21 19:18:36 -07005669
5670 //������IP����
zw.wangcfae4372024-08-12 16:41:12 +08005671 if (i_ip == i_lanIp) {
5672 return true;
5673 }
mj.qu19ac6692024-08-21 19:18:36 -07005674
zw.wangcfae4372024-08-12 16:41:12 +08005675 var res1 = [];
5676 var res2 = [];
mj.qu19ac6692024-08-21 19:18:36 -07005677
zw.wangcfae4372024-08-12 16:41:12 +08005678 var mask_array = [];
mj.qu19ac6692024-08-21 19:18:36 -07005679
zw.wangcfae4372024-08-12 16:41:12 +08005680 ip_array = i_ip.split(".");
5681 lanIp_array = i_lanIp.split(".");
5682 mask_array = i_lanMask.split(".");
5683 for(var index = 0; index < ip_array.length; index += 1){
5684 res1.push(parseInt(mask_array[index]) & parseInt(ip_array[index]));
5685 res2.push(parseInt(mask_array[index]) & parseInt(lanIp_array[index]));
5686 }
mj.qu19ac6692024-08-21 19:18:36 -07005687 if(res2.join(".") != res1.join(".")){//�ڲ�ͬ����
zw.wangcfae4372024-08-12 16:41:12 +08005688 return false;
mj.qu19ac6692024-08-21 19:18:36 -07005689 }else{//��ͬһ����
zw.wangcfae4372024-08-12 16:41:12 +08005690 return true;
5691 }
5692 }
mj.qu19ac6692024-08-21 19:18:36 -07005693
zw.wangcfae4372024-08-12 16:41:12 +08005694
5695 function sf_isValidate_NetmaskIP(i_ip) {
5696 return (i_ip == 255
5697 || i_ip == 254
5698 || i_ip == 252
5699 || i_ip == 248
5700 || i_ip == 240
5701 || i_ip == 224
5702 || i_ip == 192
5703 || i_ip == 128
5704 || i_ip == 0);
5705 }
mj.qu19ac6692024-08-21 19:18:36 -07005706
zw.wangcfae4372024-08-12 16:41:12 +08005707 function sf_convertIpToString(i_ip)
5708 {
5709 var s_i1 = i_ip.indexOf('.');
5710 var s_i2 = i_ip.indexOf('.', (s_i1 + 1));
5711 var s_i3 = i_ip.indexOf('.', (s_i2 + 1));
5712 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));
5713 o_ip = '0x' + o_ip;
5714
5715 return o_ip;
5716 }
mj.qu19ac6692024-08-21 19:18:36 -07005717
zw.wangcfae4372024-08-12 16:41:12 +08005718 function sf_getIpString_3(i_ip)
5719 {
5720 var i1 = i_ip.indexOf('.');
5721 var i2 = i_ip.indexOf('.', (i1 + 1));
5722 var i3 = i_ip.indexOf('.', (i2 + 1));
5723 var i4 = i_ip.substring((i3+1),i_ip.length)-0;
5724
5725 return i4;
5726 }
5727
mj.qu19ac6692024-08-21 19:18:36 -07005728
5729 // ����У�麯��
zw.wangcfae4372024-08-12 16:41:12 +08005730 function sf_isValidate_Gateway(i_wanIp, i_netmaskIp, i_gatewayIp) {
5731 var s_wanIp = sf_convertIpToString(i_wanIp);
5732 var lan4 = sf_getIpString_3(i_wanIp);
mj.qu19ac6692024-08-21 19:18:36 -07005733
zw.wangcfae4372024-08-12 16:41:12 +08005734 var s_netmaskIp = sf_convertIpToString(i_netmaskIp);
5735 var mask4 = sf_getIpString_3(i_netmaskIp);
mj.qu19ac6692024-08-21 19:18:36 -07005736
zw.wangcfae4372024-08-12 16:41:12 +08005737 var s_gatewayIp = sf_convertIpToString(i_gatewayIp);
5738 var pool4 = sf_getIpString_3(i_gatewayIp);
mj.qu19ac6692024-08-21 19:18:36 -07005739
zw.wangcfae4372024-08-12 16:41:12 +08005740 var net_no;
5741 var lo_broadcast;
5742
5743 if (sf_opAnd4Byte(s_wanIp, s_netmaskIp) != sf_opAnd4Byte(s_gatewayIp, s_netmaskIp)) {
5744 return false;
5745 }
5746
5747 net_no = (lan4 & mask4);
5748 lo_broadcast = (lan4 & mask4) + (255-mask4);
5749
5750 return !(pool4==net_no || pool4==lo_broadcast);
mj.qu19ac6692024-08-21 19:18:36 -07005751
zw.wangcfae4372024-08-12 16:41:12 +08005752 }
5753
mj.qu19ac6692024-08-21 19:18:36 -07005754 // ��������У�麯��
zw.wangcfae4372024-08-12 16:41:12 +08005755 function sf_isValidate_Netmask(i_netmask) {
5756 var addr = i_netmask.split(".");
mj.qu19ac6692024-08-21 19:18:36 -07005757
zw.wangcfae4372024-08-12 16:41:12 +08005758 if ("0.0.0.0" == i_netmask || "255.255.255.255" == i_netmask) {
5759 return false;
5760 }
5761
5762 if (addr.length != 4) {
5763 return false;
5764 }
5765
5766 addr[0] = parseInt(addr[0]);
5767 addr[1] = parseInt(addr[1]);
5768 addr[2] = parseInt(addr[2]);
5769 addr[3] = parseInt(addr[3]);
5770
5771 if (addr[3] != 0) {
5772 if (addr[0] != 255 || addr[1] != 255 || addr[2] != 255) {
5773 return false;
5774 } else {
5775 if (!sf_isValidate_NetmaskIP(addr[3])) {
5776 return false;
5777 }
5778 }
5779 }
5780
5781 if (addr[2] != 0) {
5782 if (addr[0] != 255 || addr[1] != 255) {
5783 return false;
5784 } else {
5785 if (!sf_isValidate_NetmaskIP(addr[2])) {
5786 return false;
5787 }
5788 }
5789 }
5790
5791 if (addr[1] != 0) {
5792 if (addr[0] != 255) {
5793 return false;
5794 } else {
5795 if (!sf_isValidate_NetmaskIP(addr[1])) {
5796 return false;
5797 }
5798 }
5799 }
mj.qu19ac6692024-08-21 19:18:36 -07005800
zw.wangcfae4372024-08-12 16:41:12 +08005801 if (addr[0] != 255) {
5802 return false;
5803 }
mj.qu19ac6692024-08-21 19:18:36 -07005804
zw.wangcfae4372024-08-12 16:41:12 +08005805 return true;
5806 }
mj.qu19ac6692024-08-21 19:18:36 -07005807
5808 // DHCP IP��У�麯��
zw.wangcfae4372024-08-12 16:41:12 +08005809 function sf_isValidate_StartEndIp(i_lanIpaddr, i_netIp, i_startIp, i_endIp, i_DHCPFlag) {
5810 s_startIp = sf_convertIpToString(i_startIp);
5811 s_endIp = sf_convertIpToString(i_endIp);
5812 s_lanIp = sf_convertIpToString(i_lanIpaddr);
5813
5814 if(s_startIp>s_endIp) {
5815 return 1;
5816 }
mj.qu19ac6692024-08-21 19:18:36 -07005817
zw.wangcfae4372024-08-12 16:41:12 +08005818 if(s_lanIp >= s_startIp && s_lanIp <= s_endIp) {
5819 return 2;
5820 }
5821
5822 return 0;
5823 }
5824
5825
5826 function init() {
5827 var container = $('#container');
5828 ko.cleanNode(container[0]);
5829 var fwVm = new LanViewModel();
5830 ko.applyBindings(fwVm, container[0]);
5831
5832 addInterval(fwVm.refreshStatus, 1000);
5833
5834 $('#frmLan').validate({
5835 submitHandler:function () {
5836 fwVm.save();
5837 },
mj.qu19ac6692024-08-21 19:18:36 -07005838
zw.wangcfae4372024-08-12 16:41:12 +08005839 rules:{
5840 txtIpAddress: {
5841 lanip_check: true,
5842 ipRange: true
5843 },
5844 txtSubnetMask: {
5845 ipv4: true,
5846 subnetmask_check: true
5847 },
5848 txtDhcpIpPoolStart: {
5849 lanip_check: true,
5850 dhcp_check: "start",
5851 dhcpCompare: "#txtDhcpIpPoolEnd"
5852 },
5853 txtDhcpIpPoolEnd: {
5854 lanip_check: true,
5855 dhcp_check: "end",
5856 dhcpCompare: "#txtDhcpIpPoolStart"
5857 },
5858 txtDhcpLease: {
5859 range: [1, 65535],
5860 digits: true
5861 }
5862 },
mj.qu19ac6692024-08-21 19:18:36 -07005863
zw.wangcfae4372024-08-12 16:41:12 +08005864 groups: {
5865 lanip_check: "txtDhcpIpPoolStart txtDhcpIpPoolEnd"
5866 },
mj.qu19ac6692024-08-21 19:18:36 -07005867
zw.wangcfae4372024-08-12 16:41:12 +08005868 errorPlacement: function (error, element) {
5869 if (element.attr("name") == "txtDhcpLease") {
5870 error.insertAfter("#errorHolder");
5871 } else if (element.attr("name") == "txtDhcpIpPoolStart") {
5872 error.insertAfter("#txtDhcpIpPoolEnd");
5873 } else {
5874 error.insertAfter(element);
5875 }
5876 }
5877 });
5878
5879 }
mj.qu19ac6692024-08-21 19:18:36 -07005880
5881
zw.wangcfae4372024-08-12 16:41:12 +08005882 return {
5883 init:init
5884 }
5885});
5886
mj.qu19ac6692024-08-21 19:18:36 -07005887// others �����:Fast Boot Settings��Restart and Reset��SNTP��Turn Off Device��PIN Management
zw.wangcfae4372024-08-12 16:41:12 +08005888define("adm_others","jquery knockout set service underscore".split(" "),
5889
5890 function ($, ko, config, service, _) {
mj.qu19ac6692024-08-21 19:18:36 -07005891
zw.wangcfae4372024-08-12 16:41:12 +08005892 var timeSetModes = _.map(config.sntpTimeSetMode, function(item) {
5893 return new Option(item.name, item.value);
5894 });
mj.qu19ac6692024-08-21 19:18:36 -07005895
zw.wangcfae4372024-08-12 16:41:12 +08005896 var timeZones = _.map(config.timeZone, function(item){
5897 return new Option(item.name, item.value);
5898 });
mj.qu19ac6692024-08-21 19:18:36 -07005899
zw.wangcfae4372024-08-12 16:41:12 +08005900 var daylightSave = _.map(config.daylightSave, function(item){
5901 return new Option(item.name, item.value);
5902 });
mj.qu19ac6692024-08-21 19:18:36 -07005903
zw.wangcfae4372024-08-12 16:41:12 +08005904 var sv_sntpYears = [];
5905 var sv_sntpMonths = [];
mj.qu19ac6692024-08-21 19:18:36 -07005906 var sv_sntpDates = []; //���ݴ�С����������
zw.wangcfae4372024-08-12 16:41:12 +08005907 var sv_sntpHours = [];
5908 var sv_sntpMinutes = [];
5909 var sc_startpHours = [];
5910 var sc_startMinutes = [];
mj.qu19ac6692024-08-21 19:18:36 -07005911
zw.wangcfae4372024-08-12 16:41:12 +08005912 var sf_bigMonth = [1, 3, 5, 7, 8, 10, 12];
5913 var sf_smallMonth = [4, 6, 9, 11];
mj.qu19ac6692024-08-21 19:18:36 -07005914
zw.wangcfae4372024-08-12 16:41:12 +08005915 function sf_produceArray(start, end, arryName) {
5916 var item = {};
5917 for(var i = start; i <= end; i++) {
5918 item.name = i;
5919 item.value = i;
5920 arryName.push(new Option(item.name, item.value));
5921 }
5922 }
mj.qu19ac6692024-08-21 19:18:36 -07005923
5924 //�����ꡢ�¡�ʱ���ֵ�����
zw.wangcfae4372024-08-12 16:41:12 +08005925 sf_produceArray(2000, 2030, sv_sntpYears);
5926 sf_produceArray(1, 12, sv_sntpMonths);
5927 sf_produceArray(0, 23, sv_sntpHours);
5928 sf_produceArray(0, 59, sv_sntpMinutes);
5929 sf_produceArray(0, 23, sc_startpHours);
5930 sf_produceArray(0, 59, sc_startMinutes);
mj.qu19ac6692024-08-21 19:18:36 -07005931
zw.wangcfae4372024-08-12 16:41:12 +08005932 function othersViewModel() {
5933 var target = this;
mj.qu19ac6692024-08-21 19:18:36 -07005934
zw.wangcfae4372024-08-12 16:41:12 +08005935 var inChildGroup = false;
5936 var scheduleInfo = service.getScheduleSetting();
mj.qu19ac6692024-08-21 19:18:36 -07005937
zw.wangcfae4372024-08-12 16:41:12 +08005938 target.fastbootSupport = config.FAST_BOOT_SUPPORT;
5939 target.turnOffSupport = config.TURN_OFF_SUPPORT;
5940 target.SNTPSupport = config.HAS_SNTP;
5941 target.hasUssd = config.HAS_USSD;
5942 target.hasDdns = config.DDNS_SUPPORT;
5943 target.hasUpdateCheck = config.HAS_UPDATE_CHECK;
5944 target.scheduleSetting = ko.observable(scheduleInfo.scheduleSetting);
5945 target.scheduleHour = ko.observable(parseInt(scheduleInfo.scheduleHour));
5946 target.scheduleMinute = ko.observable(parseInt(scheduleInfo.scheduleMinute));
5947 target.scr_hours = ko.observableArray(sc_startpHours);
5948 target.scr_minutes = ko.observableArray(sc_startMinutes);
5949
mj.qu19ac6692024-08-21 19:18:36 -07005950
zw.wangcfae4372024-08-12 16:41:12 +08005951 if (config.HAS_PARENTAL_CONTROL) {
5952 inChildGroup = service.checkCurrentUserInChildGroup().result;
5953 }
5954 target.currentUserInChildGroup = ko.observable(inChildGroup);
5955
5956 var sv_fastbootInfo = service.getFastbootSetting();
5957 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");
5958 target.fastbootSetting = ko.observable(sv_fastbootInfo.fastbootEnabled);
5959
5960
5961 // @method addInterval
5962 addInterval(function(){
5963 target.fastbootEnableFlag(config.RJ45_SUPPORT ? (sv_fastbootInfo.need_sim_pin != "yes" && service.getRj45PlugState().rj45_plug == "wan_lan_off") : sv_fastbootInfo.need_sim_pin != "yes");
5964 }, 1000);
5965
mj.qu19ac6692024-08-21 19:18:36 -07005966 // �ָ���������
zw.wangcfae4372024-08-12 16:41:12 +08005967 // @event restore
5968 target.restore = function () {
5969 showConfirm("restore_confirm", function () {
5970 showLoading("restoring");
5971 service.restoreFactorySettings({}, function (info) {
5972 if (info && info.result == "success") {
5973 successOverlay();
5974 } else {
5975 errorOverlay();
5976 }
5977 }, function (result) {
5978 if (isErrorObject(result) && result.errorType == 'no_auth') {
5979 errorOverlay();
5980 }
5981 });
5982 });
5983 };
5984
5985 target.restart = function () {
5986 showConfirm("restart_confirm", function () {
5987 restartDevice(service);
5988 });
5989 };
mj.qu19ac6692024-08-21 19:18:36 -07005990
zw.wangcfae4372024-08-12 16:41:12 +08005991 target.scheduleRestart = function () {
5992 showLoading();
5993 var params = {};
5994 params.scheduleSetting = target.scheduleSetting();
5995 params.scheduleHour = target.scheduleHour();
5996 params.scheduleMinute = target.scheduleMinute();
5997 service.setScheduleSetting(params, function (result) {
5998 if (result.result != "success") {
5999 errorOverlay();
6000 } else {
6001 successOverlay();
6002 }
6003 });
6004 };
mj.qu19ac6692024-08-21 19:18:36 -07006005
6006 // ���ٿ��ػ�����
zw.wangcfae4372024-08-12 16:41:12 +08006007 target.saveFastBoot = function() {
6008 showLoading();
6009 var params = {
6010 fastbootEnabled: target.fastbootSetting(),
6011 need_hard_reboot: sv_fastbootInfo.need_hard_reboot
6012 };
6013 service.setFastbootSetting(params, function(result) {
6014 if (result.result == "success") {
6015 successOverlay();
6016 } else {
6017 errorOverlay();
6018 }
6019 });
6020 };
mj.qu19ac6692024-08-21 19:18:36 -07006021
6022 // �ػ�
zw.wangcfae4372024-08-12 16:41:12 +08006023 target.turnoff = function () {
6024 showConfirm("turnoff_confirm", function () {
6025 showLoading("turnoff");
6026 service.turnOffDevice({}, function (info) {
6027 if (info && info.result == "success") {
6028 successOverlay();
6029 } else {
6030 errorOverlay();
6031 }
6032 }, $.noop);
6033 });
6034 };
mj.qu19ac6692024-08-21 19:18:36 -07006035
6036 //SNTP����serverУ׼ʱ��
zw.wangcfae4372024-08-12 16:41:12 +08006037 service.setSNTPDate({
6038 goformId: "SNTP_Getdatastatic"
6039 });
mj.qu19ac6692024-08-21 19:18:36 -07006040
zw.wangcfae4372024-08-12 16:41:12 +08006041 var target = this;
6042 var sntpInfo = service.getSntpParams();
mj.qu19ac6692024-08-21 19:18:36 -07006043
zw.wangcfae4372024-08-12 16:41:12 +08006044 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));
6045
6046 target.day = ko.observable();
6047 target.localTime = ko.observable();
mj.qu19ac6692024-08-21 19:18:36 -07006048
6049 //��ʼ����ǰ����ʱ��
zw.wangcfae4372024-08-12 16:41:12 +08006050 //target.updateCurrentTime; cov_2
6051 target.timeSetModes = ko.observableArray(timeSetModes);
6052 target.isManualSetTime = ko.observable(false);
6053 target.isAutoSntpTime = ko.observable(false);
mj.qu19ac6692024-08-21 19:18:36 -07006054
zw.wangcfae4372024-08-12 16:41:12 +08006055 target.currentMode = ko.observable(sntpInfo.sntp_time_set_mode);
mj.qu19ac6692024-08-21 19:18:36 -07006056
zw.wangcfae4372024-08-12 16:41:12 +08006057 changeSetTimeMode();
6058 target.changeSetTimeMode = function(){
6059 changeSetTimeMode();
6060 };
mj.qu19ac6692024-08-21 19:18:36 -07006061
zw.wangcfae4372024-08-12 16:41:12 +08006062 target.currentYear = ko.observable(parseInt(sntpInfo.sntp_year, 10));
6063 target.currentMonth = ko.observable(parseInt(sntpInfo.sntp_month, 10));
6064 target.currentDate = ko.observable(parseInt(sntpInfo.sntp_day, 10));
6065 target.currentHour = ko.observable(parseInt(sntpInfo.sntp_hour, 10));
6066 target.currentMinute = ko.observable(parseInt(sntpInfo.sntp_minute, 10));
zw.wangcfae4372024-08-12 16:41:12 +08006067
mj.qu19ac6692024-08-21 19:18:36 -07006068
6069 // ��Ҫ��������ˢ�������б����ݣ�ע��˳��
zw.wangcfae4372024-08-12 16:41:12 +08006070
6071 target.years = ko.observableArray(sv_sntpYears);
6072 target.months = ko.observableArray(sv_sntpMonths);
mj.qu19ac6692024-08-21 19:18:36 -07006073 //���û�ѡ���·ݵ�ʱ���ı�����ѡ������ѡ��
zw.wangcfae4372024-08-12 16:41:12 +08006074 target.initDateList = function(){
6075 initDateList();
6076 target.dates(sv_sntpDates);
6077 }
mj.qu19ac6692024-08-21 19:18:36 -07006078
6079 //��ʼ�������б�
zw.wangcfae4372024-08-12 16:41:12 +08006080 initDateList();
6081 target.dates = ko.observableArray(sv_sntpDates);
6082 target.hours = ko.observableArray(sv_sntpHours);
6083 target.minutes = ko.observableArray(sv_sntpMinutes);
mj.qu19ac6692024-08-21 19:18:36 -07006084
6085 //�Զ�SNTP��ȡʱ�����ݰ󶨴���
zw.wangcfae4372024-08-12 16:41:12 +08006086 var serverArray = _.map(sntpInfo.sntp_servers, function(item) {
6087 return new Option(item.name, item.value)
6088 });
mj.qu19ac6692024-08-21 19:18:36 -07006089
zw.wangcfae4372024-08-12 16:41:12 +08006090 target.serverList = ko.observableArray(serverArray);
6091
mj.qu19ac6692024-08-21 19:18:36 -07006092 // �������ֲ����޸ģ��޸��޷�ˢ����ҳ
zw.wangcfae4372024-08-12 16:41:12 +08006093
6094 target.currentServer0 = ko.observable(sntpInfo.sntp_server0);
6095 target.currentServer1 = ko.observable(sntpInfo.sntp_server1);
6096 target.currentServer2 = ko.observable(sntpInfo.sntp_server2);
6097 target.customServer0 = ko.observable(sntpInfo.sntp_other_server0);
6098 target.customServer1 = ko.observable(sntpInfo.sntp_other_server1);
6099 target.customServer2 = ko.observable(sntpInfo.sntp_other_server2);
6100 target.isOther0 = ko.observable(false);
6101 target.isOther1 = ko.observable(false);
6102 target.isOther2 = ko.observable(false);
mj.qu19ac6692024-08-21 19:18:36 -07006103
zw.wangcfae4372024-08-12 16:41:12 +08006104 initOtherServer();
6105
6106 target.changeServerSelect = function(){
6107 initOtherServer();
6108 }
mj.qu19ac6692024-08-21 19:18:36 -07006109
zw.wangcfae4372024-08-12 16:41:12 +08006110 target.timeZones = ko.observableArray(timeZones);
6111 target.currentTimeZone = ko.observable(sntpInfo.sntp_timezone + "_" + sntpInfo.sntp_timezone_index);
6112 target.daylightSaves = ko.observableArray(daylightSave);
6113 target.currentDaylightSave = ko.observable(sntpInfo.sntp_dst_enable);
mj.qu19ac6692024-08-21 19:18:36 -07006114
6115 //���µ�ǰ��ʾʱ��
zw.wangcfae4372024-08-12 16:41:12 +08006116 target.updateCurrentTime = function() {
6117 var globalDay = globalTime.getDay();
mj.qu19ac6692024-08-21 19:18:36 -07006118
zw.wangcfae4372024-08-12 16:41:12 +08006119 switch(globalDay){
6120 case 6:
6121 target.day($.i18n.prop("saturday"));
6122 break;
6123 case 5:
6124 target.day($.i18n.prop("friday"));
6125 break;
6126 case 4:
6127 target.day($.i18n.prop("thursday"));
6128 break;
6129 case 3:
6130 target.day($.i18n.prop("wednesday"));
6131 break;
6132 case 2:
6133 target.day($.i18n.prop("tuesday"));
6134 break;
6135 case 1:
6136 target.day($.i18n.prop("monday"));
6137 break;
6138 case 0:
6139 target.day($.i18n.prop("sunday"));
6140 break;
6141 default:
6142 break;
6143 }
mj.qu19ac6692024-08-21 19:18:36 -07006144
zw.wangcfae4372024-08-12 16:41:12 +08006145 var localCurrentTime = globalTime.getFullYear() + "-" + getTwoDigit(globalTime.getMonth()+1) + "-" + getTwoDigit(globalTime.getDate()) + " " + getTwoDigit(globalTime.getHours()) + ":" + getTwoDigit(globalTime.getMinutes()) + ":" + getTwoDigit(globalTime.getSeconds());
6146 target.localTime(localCurrentTime);
6147 globalTime.setTime(globalTime.getTime()+1000);
6148 };
mj.qu19ac6692024-08-21 19:18:36 -07006149
6150 // SNTP����
zw.wangcfae4372024-08-12 16:41:12 +08006151 target.apply = function(){
6152 var tmpArray = [];
6153 for(var i=0; i< sntpInfo.sntp_servers.length; i++){
6154 tmpArray.push(sntpInfo.sntp_servers[i].value);
6155 }
6156 var staInfo = service.getStatusInfo();
6157 if(!checkConnectedStatus(staInfo.connectStatus, staInfo.rj45ConnectStatus, staInfo.connectWifiStatus) && target.currentMode() == "auto"){
6158 showAlert("sntp_syn_time_wan_connected");
6159 return;
6160 }
mj.qu19ac6692024-08-21 19:18:36 -07006161
zw.wangcfae4372024-08-12 16:41:12 +08006162 showLoading("");
6163 var requestParams = {
6164 goformId: "SNTP",
6165 manualsettime : target.currentMode(),
6166 sntp_server1_ip : target.currentServer0(),
6167 sntp_server2_ip : target.currentServer1(),
6168 sntp_server3_ip : target.currentServer2(),
6169 sntp_other_server0 : target.customServer0(),
6170 sntp_other_server1 : target.customServer1(),
6171 sntp_other_server2 : target.customServer2(),
6172 timezone : target.currentTimeZone().split("_")[0],
6173 sntp_timezone_index : target.currentTimeZone().split("_")[1],
6174 DaylightEnabled : target.currentDaylightSave(),
6175 time_year : target.currentYear(),
6176 time_month : target.currentMonth(),
6177 time_day : target.currentDate(),
6178 time_hour : target.currentHour(),
6179 time_minute : target.currentMinute()
6180 };
mj.qu19ac6692024-08-21 19:18:36 -07006181
zw.wangcfae4372024-08-12 16:41:12 +08006182 service.setSntpSetting(requestParams, function(data2){
6183 if(data2) {
6184 if(data2.result == "success" && target.currentMode() == "auto"){
6185 successOverlay("sntp_req_success");
6186 //hideLoading();
6187 }else if(data2.result == "processing" && target.currentMode() == "auto"){
6188 successOverlay("sntp_processing");
6189 }else{
mj.qu19ac6692024-08-21 19:18:36 -07006190 //����serverУ׼ʱ��
zw.wangcfae4372024-08-12 16:41:12 +08006191 service.setSNTPDate({
6192 goformId: "SNTP_Getdatastatic"
6193 }, function(result){
6194 var sntpInfo = service.getSntpParams();
6195 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 successOverlay();
6197 });
6198 }
6199 } else {
6200 errorOverlay();
6201 }
6202 });
6203 }
mj.qu19ac6692024-08-21 19:18:36 -07006204
6205 // �ֶ�/�Զ��л���Ӧ����
zw.wangcfae4372024-08-12 16:41:12 +08006206 function changeSetTimeMode() {
6207 if(target.currentMode() == "manual") {
6208 target.isManualSetTime(true);
6209 target.isAutoSntpTime(false);
6210 } else {
6211 target.isManualSetTime(false);
6212 target.isAutoSntpTime(true);
6213 }
6214 return true;
6215 }
mj.qu19ac6692024-08-21 19:18:36 -07006216
6217 // ��ʼ��ʱ��
zw.wangcfae4372024-08-12 16:41:12 +08006218 function initDateList(){
6219 sv_sntpDates = [];
6220 if($.inArray(parseInt(target.currentMonth(), 10), sf_smallMonth) != -1) {
6221 sf_produceArray(1, 30, sv_sntpDates);
6222 } else if($.inArray(parseInt(target.currentMonth(), 10), sf_bigMonth) != -1) {
6223 sf_produceArray(1, 31, sv_sntpDates);
6224 } else if(parseInt(target.currentYear(), 10)%4 == 0) {
6225 sf_produceArray(1, 29, sv_sntpDates);
6226 } else {
6227 sf_produceArray(1, 28, sv_sntpDates);
6228 }
6229 }
mj.qu19ac6692024-08-21 19:18:36 -07006230
6231 // ��ʼ������������
zw.wangcfae4372024-08-12 16:41:12 +08006232 function initOtherServer(){
6233 target.isOther0(target.currentServer0() == "Other");
6234 target.isOther1(target.currentServer1() == "Other");
6235 target.isOther2(target.currentServer2() == "Other");
6236 !target.isOther0() && $("#sntp_server0").find(".error").hide();
6237 !target.isOther1() && $("#sntp_server1").find(".error").hide();
6238 !target.isOther2() && $("#sntp_server2").find(".error").hide();
6239 }
6240
mj.qu19ac6692024-08-21 19:18:36 -07006241
zw.wangcfae4372024-08-12 16:41:12 +08006242 }
6243
mj.qu19ac6692024-08-21 19:18:36 -07006244 // ��ʼ�� ViewModel����������ͼ����
zw.wangcfae4372024-08-12 16:41:12 +08006245 function init() {
6246 var fwVm = new othersViewModel();
6247 var container = $('#container')[0];
6248 ko.cleanNode(container);
6249 ko.applyBindings(fwVm, container);
6250 fwVm.updateCurrentTime();
mj.qu19ac6692024-08-21 19:18:36 -07006251
zw.wangcfae4372024-08-12 16:41:12 +08006252 addInterval(function(){
6253 fwVm.updateCurrentTime();
6254 }, 1000);
mj.qu19ac6692024-08-21 19:18:36 -07006255
zw.wangcfae4372024-08-12 16:41:12 +08006256 $("#sntpForm").validate({
6257 submitHandler: function(){
6258 fwVm.apply();
6259 },
6260 rules: {
6261 sntp_other_server0 : "sntp_invalid_server_name",
6262 sntp_other_server1 : "sntp_invalid_server_name",
6263 sntp_other_server2 : "sntp_invalid_server_name"
6264 }
6265 });
6266 }
6267
6268 return {
6269 init:init
6270 }
6271 });
mj.qu19ac6692024-08-21 19:18:36 -07006272// �������� �
zw.wangcfae4372024-08-12 16:41:12 +08006273
6274define("adm_management","jquery knockout set service underscore CryptoJS".split(" "),
6275
6276 function ($, ko, config, service, _, CryptoJS) {
6277
6278 function manageViewModel() {
6279 var target = this;
mj.qu19ac6692024-08-21 19:18:36 -07006280
zw.wangcfae4372024-08-12 16:41:12 +08006281 target.currentValue = ko.observable();
6282 target.newValue = ko.observable();
6283 target.confirmValue = ko.observable();
mj.qu19ac6692024-08-21 19:18:36 -07006284
zw.wangcfae4372024-08-12 16:41:12 +08006285 function sf_changeValue() {
6286 var sv_manageInfo = {};
6287 if (config.PASSWORD_ENCODE) {
6288 sv_manageInfo.oldValue = target.currentValue();
6289 sv_manageInfo.newValue = target.newValue();
6290 } else {
6291 var pwdRegex = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,32}');
mj.qu19ac6692024-08-21 19:18:36 -07006292
zw.wangcfae4372024-08-12 16:41:12 +08006293 if (!pwdRegex.test(target.newValue())) {
6294 showConfirm("password_note_too_low", function () {
6295
6296 var kparam = service.getDeviceInfoLow();
6297 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
6298 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
6299 var cipherold = CryptoJS.AES.encrypt(target.currentValue(), tkey, {
6300 iv: tiv,
6301 mode: CryptoJS.mode.CBC,
6302 padding: CryptoJS.pad.ZeroPadding
6303 }).toString();
6304 var ciphernew = CryptoJS.AES.encrypt(target.newValue(), tkey, {
6305 iv: tiv,
6306 mode: CryptoJS.mode.CBC,
6307 padding: CryptoJS.pad.ZeroPadding
6308 }).toString();
6309
6310 sv_manageInfo.oldValue = cipherold;
6311 sv_manageInfo.newValue = ciphernew;
mj.qu19ac6692024-08-21 19:18:36 -07006312
zw.wangcfae4372024-08-12 16:41:12 +08006313 showLoading();
mj.qu19ac6692024-08-21 19:18:36 -07006314
zw.wangcfae4372024-08-12 16:41:12 +08006315 service.changeManageInfo(sv_manageInfo, function (resultInfo) {
6316 target.cancel();
6317 if (resultInfo && resultInfo.result == true) {
6318 successOverlay();
6319 } else {
6320 if (resultInfo && resultInfo.errorType == "badPassword") {
6321 hideLoading();
6322 showAlert("current_password_error",function(){
6323 $("#txtCurrent").focus();
6324 });
6325 } else {
6326 errorOverlay();
6327 }
6328 }
6329 });
6330 });
6331 return;
6332 }
6333 var kparam = service.getDeviceInfoLow();
6334 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
6335 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
6336 var cipherold = CryptoJS.AES.encrypt(target.currentValue(), tkey, {
6337 iv: tiv,
6338 mode: CryptoJS.mode.CBC,
6339 padding: CryptoJS.pad.ZeroPadding
6340 }).toString();
6341 var ciphernew = CryptoJS.AES.encrypt(target.newValue(), tkey, {
6342 iv: tiv,
6343 mode: CryptoJS.mode.CBC,
6344 padding: CryptoJS.pad.ZeroPadding
6345 }).toString();
6346
6347 sv_manageInfo.oldValue = cipherold;
6348 sv_manageInfo.newValue = ciphernew;
6349 }
6350
6351 showLoading();
mj.qu19ac6692024-08-21 19:18:36 -07006352
zw.wangcfae4372024-08-12 16:41:12 +08006353 service.changeManageInfo(sv_manageInfo, function (resultInfo) {
6354 target.cancel();
6355 if (resultInfo && resultInfo.result == true) {
6356 successOverlay();
6357 } else {
6358 if (resultInfo && resultInfo.errorType == "badPassword") {
6359 hideLoading();
6360 showAlert("current_password_error",function(){
6361 $("#txtCurrent").focus();
6362 });
6363 } else {
6364 errorOverlay();
6365 }
6366 }
6367 });
6368 }
mj.qu19ac6692024-08-21 19:18:36 -07006369
6370 // ��������������
zw.wangcfae4372024-08-12 16:41:12 +08006371 function sf_cancel() {
6372 target.currentValue("");
6373 target.newValue("");
6374 target.confirmValue("");
6375 }
mj.qu19ac6692024-08-21 19:18:36 -07006376
zw.wangcfae4372024-08-12 16:41:12 +08006377 target.cancel = sf_cancel;
mj.qu19ac6692024-08-21 19:18:36 -07006378
6379 // �޸�����
zw.wangcfae4372024-08-12 16:41:12 +08006380 target.changeValue = sf_changeValue;
6381 }
6382
6383 function init() {
6384 var container = $('#container');
6385 ko.cleanNode(container[0]);
6386 var fwVm = new manageViewModel();
6387 ko.applyBindings(fwVm, container[0]);
mj.qu19ac6692024-08-21 19:18:36 -07006388
zw.wangcfae4372024-08-12 16:41:12 +08006389 $('#frmPassword').validate({
6390 submitHandler:function () {
6391 fwVm.changeValue();
6392 },
6393 rules:{
6394 txtCurrent:"manage_info_check",
6395 txtNew:"manage_info_check",
6396 txtConfirm:{ equalTo:"#txtNew"}
6397 }
6398 });
6399 }
6400
6401 return {
6402 init:init
6403 }
6404 }
6405);
mj.qu19ac6692024-08-21 19:18:36 -07006406// PIN�����
zw.wangcfae4372024-08-12 16:41:12 +08006407
6408define("adm_pin","jquery knockout set service".split(" "),
6409
6410 function ($, ko, config, service) {
6411 var pageState = {common:0, requirePin:1, modifyPin:2, requirePuk:3, destroyed:4};
6412 var pinStatus = {enable:"1", disable:"0"};
6413
6414
6415 function pinViewModel() {
6416 var target = this;
6417 var sv_currentPinData = service.getPinData();
mj.qu19ac6692024-08-21 19:18:36 -07006418
zw.wangcfae4372024-08-12 16:41:12 +08006419 target.isDataCard = config.PRODUCT_TYPE == 'DATACARD';
6420 target.originPinStatus = ko.observable(sv_currentPinData.pin_status);
mj.qu19ac6692024-08-21 19:18:36 -07006421
zw.wangcfae4372024-08-12 16:41:12 +08006422 target.pinStatus = ko.observable(sv_currentPinData.pin_status);
6423 target.pinNumber = ko.observable(sv_currentPinData.pinnumber);
6424 target.pukNumber = ko.observable(sv_currentPinData.puknumber);
mj.qu19ac6692024-08-21 19:18:36 -07006425
zw.wangcfae4372024-08-12 16:41:12 +08006426 target.currentPin = ko.observable();
6427 target.newPin = ko.observable();
6428 target.confirmPin = ko.observable();
mj.qu19ac6692024-08-21 19:18:36 -07006429
zw.wangcfae4372024-08-12 16:41:12 +08006430 target.puk = ko.observable();
mj.qu19ac6692024-08-21 19:18:36 -07006431
zw.wangcfae4372024-08-12 16:41:12 +08006432 target.pageState = ko.observable();
mj.qu19ac6692024-08-21 19:18:36 -07006433 // �����������ɹ���־λ
zw.wangcfae4372024-08-12 16:41:12 +08006434 target.operateSuccessFlag = true;
mj.qu19ac6692024-08-21 19:18:36 -07006435
zw.wangcfae4372024-08-12 16:41:12 +08006436 target.callback = sf_callback;
mj.qu19ac6692024-08-21 19:18:36 -07006437
zw.wangcfae4372024-08-12 16:41:12 +08006438 function sf_callback(info) {
6439 if (info && info.result == true) {
6440 target.operateSuccessFlag = true;
6441 successOverlay();
6442 } else {
6443 target.operateSuccessFlag = false;
mj.qu19ac6692024-08-21 19:18:36 -07006444
6445 // ����һ��ǰҪ������ʾ
zw.wangcfae4372024-08-12 16:41:12 +08006446 if(target.pinNumber() == 2){
6447 showAlert("last_enter_pin");
6448 } else if(target.pukNumber() == 2){
6449 showAlert("last_enter_puk");
6450 }
6451 else{
6452 errorOverlay();
6453 }
6454 }
6455 init(target);
6456 }
zw.wangcfae4372024-08-12 16:41:12 +08006457
mj.qu19ac6692024-08-21 19:18:36 -07006458
6459 // ȷ����ť�¼������������޸�PIN������PUK����PIN������PIN��ʹ��״̬
6460
zw.wangcfae4372024-08-12 16:41:12 +08006461 function sf_changePin() {
6462 if (target.isConnectedNetWork()) {
6463 showAlert("cannot_operate_when_connected");
6464 return;
6465 }
6466
6467 if (target.pageState() == pageState.common) {
6468 return;
6469 }
6470
6471 var sv_pinPara = {
6472 oldPin:target.currentPin(),
6473 newPin:target.newPin()
6474 };
6475 showLoading();
6476
6477 if (target.pageState() == pageState.modifyPin) {
6478 service.changePin(sv_pinPara, target.callback);
6479 } else if (target.pageState() == pageState.requirePuk) {
6480 sv_pinPara = {
6481 PinNumber:target.newPin(),
6482 PUKNumber:target.puk()
6483 };
6484 service.enterPUK(sv_pinPara, target.callback);
6485 } else {
6486 if (target.pinStatus() == pinStatus.enable) {
6487 service.enablePin(sv_pinPara, target.callback);
6488 } else {
6489 service.disablePin(sv_pinPara, target.callback);
6490 }
6491 }
6492 }
zw.wangcfae4372024-08-12 16:41:12 +08006493
mj.qu19ac6692024-08-21 19:18:36 -07006494
6495 // ȡ���¼�����
zw.wangcfae4372024-08-12 16:41:12 +08006496 function sf_cancel() {
6497 target.pageState(pageState.common);
6498 target.pinStatus(target.originPinStatus());
6499 target.clear();
6500 }
6501
mj.qu19ac6692024-08-21 19:18:36 -07006502 // ����ҳ�������ͼ�����Ϣ
zw.wangcfae4372024-08-12 16:41:12 +08006503 function sf_clear() {
6504 target.confirmPin("");
6505 target.currentPin("");
6506 target.newPin("");
6507 target.puk("");
6508 clearValidateMsg();
6509 }
6510
mj.qu19ac6692024-08-21 19:18:36 -07006511 // �������ݣ����õ�ǰ��ҳ��״̬
zw.wangcfae4372024-08-12 16:41:12 +08006512 function sf_computePageState(i_pinData) {
6513 if (i_pinData.pinnumber > 0) {
mj.qu19ac6692024-08-21 19:18:36 -07006514 //�����ɹ�ҳ���ص���ʼ״̬������ʧ�ܲ���pinnumber>0,ҳ�治��ת
zw.wangcfae4372024-08-12 16:41:12 +08006515 if (target.operateSuccessFlag) {
6516 target.cancel();
6517 } else {
6518 target.clear();
6519 }
6520 } else {
6521 target.clear();
6522 if (i_pinData.puknumber > 0) {
6523 target.pageState(pageState.requirePuk);
6524 } else {
6525 target.pageState(pageState.destroyed);
6526 }
6527 }
6528 }
mj.qu19ac6692024-08-21 19:18:36 -07006529
6530 // ����PIN�޸�״̬�¼�����
zw.wangcfae4372024-08-12 16:41:12 +08006531 function sf_displayModifyPinPage() {
6532 if (target.isConnectedNetWork()) {
6533 showAlert("cannot_operate_when_connected");
6534 return;
6535 }
6536 target.pinStatus(target.originPinStatus());
6537 target.pageState(pageState.modifyPin);
6538 target.clear();
6539 }
mj.qu19ac6692024-08-21 19:18:36 -07006540
6541 // ����ҳ��Ԫ�ص�ʹ��״̬
zw.wangcfae4372024-08-12 16:41:12 +08006542 function sf_fixPageEnable() {
6543 if (target.isConnectedNetWork()) {
6544 $('#frmPin :input').each(function () {
6545 disableBtn($(this));
6546 });
6547 clearValidateMsg();
6548 } else {
6549 $('#frmPin :input').each(function () {
6550 if (this.id == "txtPin" || this.id == "btnPinApply") {
6551 if (target.pageState() == pageState.common) {
6552 disableBtn($(this));
6553 return;
6554 }
6555 }
6556 if (this.id == "btnModifyPin") {
6557 if (target.originPinStatus() != pinStatus.enable) {
6558 disableBtn($(this));
6559 return;
6560 }
6561 }
6562 if (this.id == "pinEnable" || this.id == "pinDisable") {
6563 if (target.pageState() == pageState.modifyPin) {
6564 disableBtn($(this));
6565 return;
6566 }
6567 }
6568 enableBtn($(this));
6569 });
6570
6571 }
6572 }
mj.qu19ac6692024-08-21 19:18:36 -07006573
6574 // �Ƿ�������
zw.wangcfae4372024-08-12 16:41:12 +08006575 function sf_isConnectedNetWork() {
6576 var info = service.getConnectionInfo();
6577 return info.connectStatus == "ppp_connected";
6578 }
mj.qu19ac6692024-08-21 19:18:36 -07006579
6580 // PINʹ�ܸı�ʱ�¼�����
zw.wangcfae4372024-08-12 16:41:12 +08006581 function sf_pinStatusChangeEvent() {
6582 if (target.pinStatus() == target.originPinStatus()) {
6583 target.pageState(pageState.common);
6584 } else {
6585 target.pageState(pageState.requirePin);
6586 }
6587 target.clear();
6588 }
mj.qu19ac6692024-08-21 19:18:36 -07006589
zw.wangcfae4372024-08-12 16:41:12 +08006590 target.changePin = sf_changePin;
6591 target.cancel = sf_cancel;
6592 target.clear = sf_clear;
6593 target.computePageState = sf_computePageState;
mj.qu19ac6692024-08-21 19:18:36 -07006594
zw.wangcfae4372024-08-12 16:41:12 +08006595 target.computePageState(sv_currentPinData);
mj.qu19ac6692024-08-21 19:18:36 -07006596
zw.wangcfae4372024-08-12 16:41:12 +08006597 target.displayModifyPinPage = sf_displayModifyPinPage;
6598 target.fixPageEnable = sf_fixPageEnable;
6599 target.isConnectedNetWork = sf_isConnectedNetWork;
mj.qu19ac6692024-08-21 19:18:36 -07006600
zw.wangcfae4372024-08-12 16:41:12 +08006601 target.pinStatusChangeEvent = ko.dependentObservable(sf_pinStatusChangeEvent, this);
6602 }
6603
6604 function init(oldViewModel) {
mj.qu19ac6692024-08-21 19:18:36 -07006605
zw.wangcfae4372024-08-12 16:41:12 +08006606 var fwVm = oldViewModel;
mj.qu19ac6692024-08-21 19:18:36 -07006607
zw.wangcfae4372024-08-12 16:41:12 +08006608 if (fwVm) {
6609 var sv_currentPinData = service.getPinData();
6610 fwVm.originPinStatus(sv_currentPinData.pin_status);
6611 fwVm.pinNumber(sv_currentPinData.pinnumber);
6612 fwVm.pukNumber(sv_currentPinData.puknumber);
6613 fwVm.computePageState(sv_currentPinData);
6614 } else {
6615 fwVm = new pinViewModel();
6616 addInterval(function () {
6617 fwVm.fixPageEnable();
6618 }, 1000);
6619 }
mj.qu19ac6692024-08-21 19:18:36 -07006620
zw.wangcfae4372024-08-12 16:41:12 +08006621 var container = $('#container')[0];
6622 ko.cleanNode(container);
6623 ko.applyBindings(fwVm, container);
6624 fwVm.fixPageEnable();
6625
6626 $('#frmPin').validate({
6627 submitHandler:function () {
6628 fwVm.changePin();
6629 },
6630 rules:{
6631 txtPuk:"puk_check",
6632 txtPin:"pin_check",
6633 txtNewPin:"pin_check",
6634 txtConfirmPin:{equalToPin:"#txtNewPin"}
6635 }
6636 });
6637 }
6638
6639 return {
6640 init:init
6641 }
6642 }
6643);
6644
mj.qu19ac6692024-08-21 19:18:36 -07006645// ��������
zw.wangcfae4372024-08-12 16:41:12 +08006646define("adm_quick_set","jquery knockout set service underscore CryptoJS".split(" "),
6647
6648 function ($, ko, config, service, _, CryptoJS) {
6649
6650 var sv_wifiState = {ok:0, wps_on:1, wifi_off:2};
6651 var sv_apnMode = {auto:"auto", manual:"manual"};
6652 var sv_minStep = 1;
6653 var sv_maxStep = 5;
6654
mj.qu19ac6692024-08-21 19:18:36 -07006655 // ��ȡ��Ȩ��ʽ
zw.wangcfae4372024-08-12 16:41:12 +08006656 function sf_fetchAuthenticationModes() {
6657 return _.map(config.APN_AUTH_MODES, function (item) {
6658 return new Option(item.name, item.value);
6659 });
6660 }
mj.qu19ac6692024-08-21 19:18:36 -07006661
6662 // WIFI��ȫģʽѡ��
zw.wangcfae4372024-08-12 16:41:12 +08006663 var sv_securityModes = _.map(config.WIFI_WEP_SUPPORT ? config.AUTH_MODES_WEP : config.AUTH_MODES, function (item) {
6664 return new Option(item.name, item.value);
6665 });
6666
6667
6668 function quickSettingViewModel() {
6669 var target = this;
mj.qu19ac6692024-08-21 19:18:36 -07006670
zw.wangcfae4372024-08-12 16:41:12 +08006671 var sv_quickSettingInfo = service.getQuickSettingInfo();
6672
6673 target.currentStep = ko.observable(sv_minStep);
6674 target.ipType = ko.observable(sv_quickSettingInfo.pdp_type == "IP" ? "IP" : sv_quickSettingInfo.ipv6_pdp_type);
6675 target.supportIPv6 = config.IPV6_SUPPORT;
6676 target.supportIpv4AndIpv6 = config.IPV4_AND_V6_SUPPORT;
6677
6678 target.wpsFlag = ko.observable(sv_quickSettingInfo.WscModeOption);
6679
6680 function sf_apnDisabled() {
6681 return (sv_quickSettingInfo.apn_index < config.defaultApnSize || sv_quickSettingInfo.ppp_status == "ppp_connected" || sv_quickSettingInfo.ppp_status == "ppp_connecting");
6682 }
6683
6684 function sf_apnModeDisabled() {
mj.qu19ac6692024-08-21 19:18:36 -07006685 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 +08006686 }
6687
6688 function sf_currAPN() {
6689 var sv_APNText = sv_quickSettingInfo["APN_configtmp" + sv_quickSettingInfo.apn_index];
6690 var strIPv6APN = sv_quickSettingInfo["ipv6_APN_configtmp" + sv_quickSettingInfo.apn_index];
mj.qu19ac6692024-08-21 19:18:36 -07006691
zw.wangcfae4372024-08-12 16:41:12 +08006692 var sv_apn = [];
6693 var sv_ipv6APNItems = [];
mj.qu19ac6692024-08-21 19:18:36 -07006694
zw.wangcfae4372024-08-12 16:41:12 +08006695 if (sv_APNText) {
6696 sv_apn = sv_APNText.split("($)");
6697 }
6698
6699 if (strIPv6APN) {
6700 sv_ipv6APNItems = strIPv6APN.split("($)");
6701 }
6702
6703 return {
6704 m_profile_name:sv_apn[0],
6705 wan_apn:sv_apn[1],
6706 ppp_auth_mode: sv_apn[4] == "" || typeof(sv_apn[4]) == "undefined" ? "" : sv_apn[4].toLowerCase(),
6707 ppp_username:sv_apn[5],
6708 ppp_passtmp:sv_apn[6],
6709 pdp_type: sv_apn[7],
6710 ipv6_wan_apn:sv_ipv6APNItems[1],
6711 ipv6_ppp_auth_mode:typeof(sv_ipv6APNItems[4]) == "undefined" || sv_ipv6APNItems[4] == ""? "" : sv_ipv6APNItems[4].toLowerCase(),
6712 ipv6_ppp_username:sv_ipv6APNItems[5],
6713 ipv6_ppp_passtmp:sv_ipv6APNItems[6],
6714 ipv6_pdp_type:sv_ipv6APNItems[7]
6715 }
6716 }
mj.qu19ac6692024-08-21 19:18:36 -07006717
6718 // ��ǰAPN����
zw.wangcfae4372024-08-12 16:41:12 +08006719 target.currAPN = ko.computed(sf_currAPN);
mj.qu19ac6692024-08-21 19:18:36 -07006720
zw.wangcfae4372024-08-12 16:41:12 +08006721 target.apn = ko.observable(target.currAPN().wan_apn);
6722 target.ipv6_apn = ko.observable(target.currAPN().ipv6_wan_apn);
6723 target.ipv6_selectedAuthMode = ko.observable(target.currAPN().ipv6_ppp_auth_mode);
6724 target.ipv6_username = ko.observable(target.currAPN().ipv6_ppp_username);
6725 target.ipv6_password = ko.observable(target.currAPN().ipv6_ppp_passtmp);
6726 target.profileName = ko.observable(target.currAPN().m_profile_name);
6727 target.selectedAuthMode = ko.observable(target.currAPN().ppp_auth_mode);
6728 target.username = ko.observable(target.currAPN().ppp_username);
6729 target.password = ko.observable(target.currAPN().ppp_passtmp);
6730
6731 target.transAPN = ko.observable("apn_ipv4_apn");
6732 target.transAPNIPv6 = ko.observable("apn_ipv6_apn");
6733 target.transAuthMode = ko.observable("apn_authentication_ipv4");
6734 target.transAuthModeIPv6 = ko.observable("apn_authentication_ipv6");
6735 target.transUserName = ko.observable("apn_user_name_ipv4");
6736 target.transPassword = ko.observable("apn_password_ipv4");
6737 target.transUserNameIPv6 = ko.observable("apn_user_name_ipv6");
6738 target.transPasswordIPv6 = ko.observable("apn_password_ipv6");
6739
mj.qu19ac6692024-08-21 19:18:36 -07006740
6741
zw.wangcfae4372024-08-12 16:41:12 +08006742 target.apnDisabled = ko.computed(sf_apnDisabled);
6743 target.apnMode = ko.observable(sv_quickSettingInfo.apn_mode);
6744 target.apnModeDisabled = ko.computed(sf_apnModeDisabled);
6745 target.authModes = ko.observableArray(sf_fetchAuthenticationModes());
mj.qu19ac6692024-08-21 19:18:36 -07006746
zw.wangcfae4372024-08-12 16:41:12 +08006747 if (target.ipType() == "IPv6") {
6748 target.showIPv4 = false;
6749 target.showIPv6 = true;
6750 target.transAPNIPv6("apn");
6751 target.transAuthModeIPv6("apn_authentication");
6752 target.transUserNameIPv6("apn_user_name");
6753 target.transPasswordIPv6("apn_password");
6754 } else if (config.IPV4_AND_V6_SUPPORT && target.ipType() == "IPv4v6") {
6755 target.showIPv4 = true;
6756 target.showIPv6 = true;
mj.qu19ac6692024-08-21 19:18:36 -07006757 //ʹ��Ĭ��
zw.wangcfae4372024-08-12 16:41:12 +08006758 } else if (target.ipType() == "IP" || target.ipType() == "IPv4") {
6759 target.showIPv4 = true;
6760 target.showIPv6 = false;
6761 target.transAPN("apn");
6762 target.transAuthMode("apn_authentication");
6763 target.transUserName("apn_user_name");
6764 target.transPassword("apn_password");
6765 } else { //pdp_type == "IPv4v6" && config.IPV4V6_SUPPORT
6766 target.showIPv4 = true;
6767 target.showIPv6 = false;
6768 target.transAPN("apn");
6769 target.transAuthMode("apn_authentication");
6770 target.transUserName("apn_user_name");
6771 target.transPassword("apn_password");
6772 }
6773
6774 target.wifiDisabled = (sv_quickSettingInfo.wifi_cur_state != "1");
6775 target.ssid = ko.observable(sv_quickSettingInfo.SSID1);
6776 target.broadcast = ko.observable(sv_quickSettingInfo.HideSSID);
6777 target.hasWifiWep = config.WIFI_WEP_SUPPORT;
6778 target.hasWifiWpa3 = config.WIFI_WAP3_SUPPORT;
6779 target.hasWifiWpa23 = config.WIFI_WPA2_WAP3_SUPPORT;
6780
6781 target.securityModes = ko.observableArray(sv_securityModes);
6782 target.selectedSecurityMode = ko.observable(sv_quickSettingInfo.AuthMode);
6783 target.WPAKey = ko.observable(sv_quickSettingInfo.WPAPSK1);
6784
6785 target.apnMode_display = ko.observable("");
mj.qu19ac6692024-08-21 19:18:36 -07006786
zw.wangcfae4372024-08-12 16:41:12 +08006787 target.apnMode_trans = ko.computed(sf_apnMode_trans);
6788 target.selectedAuthMode_display = ko.computed(sf_selectedAuthMode_display);
6789 target.ipv6_selectedAuthMode_display = ko.computed(sf_ipv6_selectedAuthMode_display);
6790
6791 target.showWifiPassword = ko.observable(false);
6792 target.showWifiPasswordHandler = sf_showWifiPasswordHandler;
mj.qu19ac6692024-08-21 19:18:36 -07006793
6794 //�ж��Ƿ���802 n only��
zw.wangcfae4372024-08-12 16:41:12 +08006795 var sv_adInfo = service.getWifiAdvance();
6796 target.adBand = ko.observable(sv_adInfo.wifiBand);
6797 target.adMode = ko.observable(sv_adInfo.mode);
mj.qu19ac6692024-08-21 19:18:36 -07006798
zw.wangcfae4372024-08-12 16:41:12 +08006799 target.encryptType = ko.observable(sv_quickSettingInfo.EncrypType);
6800 target.keyID = ko.observable(sv_quickSettingInfo.DefaultKeyID);
6801 target.wepPassword = ko.observable("");
mj.qu19ac6692024-08-21 19:18:36 -07006802
zw.wangcfae4372024-08-12 16:41:12 +08006803 target.getWepPassword = sf_getWepPassword;
6804 target.wepPassword(target.getWepPassword());
6805 target.profileChangeHandler = sf_profileChangeHandler;
mj.qu19ac6692024-08-21 19:18:36 -07006806
zw.wangcfae4372024-08-12 16:41:12 +08006807 target.broadcast_display = ko.observable("");
6808 target.broadcast_trans = ko.computed(sf_broadcast_trans);
6809
6810 target.selectedSecurityMode_display = ko.observable();
6811 target.selectedSecurityMode_trans = ko.computed(sf_selectedSecurityMode_trans);
mj.qu19ac6692024-08-21 19:18:36 -07006812
zw.wangcfae4372024-08-12 16:41:12 +08006813
6814 target.callback = sf_callback;
6815 target.next = sf_button_next;
6816 target.previous = sf_button_previous;
6817 target.save = sf_button_save;
6818
6819 function sf_apnMode_trans() {
6820 if (sv_apnMode.auto == target.apnMode()) {
6821 target.apnMode_display($.i18n.prop("apn_auto_apn"));
6822 return "apn_auto_apn";
6823 } else {
6824 target.apnMode_display($.i18n.prop("apn_manual_apn"));
6825 return "apn_manual_apn";
6826 }
6827 }
mj.qu19ac6692024-08-21 19:18:36 -07006828
zw.wangcfae4372024-08-12 16:41:12 +08006829 function sf_broadcast_trans() {
6830 if ("0" == target.broadcast()) {
6831 target.broadcast_display($.i18n.prop("enable"));
6832 return "enable";
6833 } else {
6834 target.broadcast_display($.i18n.prop("disable"));
6835 return "disable";
6836 }
6837 }
mj.qu19ac6692024-08-21 19:18:36 -07006838
zw.wangcfae4372024-08-12 16:41:12 +08006839 function sf_button_next() {
6840 var currentStep = target.currentStep();
6841 var toStep = target.currentStep() + 1;
6842 sf_changeStep(toStep);
mj.qu19ac6692024-08-21 19:18:36 -07006843
zw.wangcfae4372024-08-12 16:41:12 +08006844 if (currentStep == 1 && target.apnMode() == sv_apnMode.auto) {
6845 toStep = target.currentStep() + 1;
6846 sf_changeStep(toStep);
6847 }
6848 }
mj.qu19ac6692024-08-21 19:18:36 -07006849
zw.wangcfae4372024-08-12 16:41:12 +08006850 function sf_button_previous() {
mj.qu19ac6692024-08-21 19:18:36 -07006851
zw.wangcfae4372024-08-12 16:41:12 +08006852 var currentStep = target.currentStep();
6853 var toStep = target.currentStep() - 1;
mj.qu19ac6692024-08-21 19:18:36 -07006854
zw.wangcfae4372024-08-12 16:41:12 +08006855 sf_changeStep(toStep);
mj.qu19ac6692024-08-21 19:18:36 -07006856
zw.wangcfae4372024-08-12 16:41:12 +08006857 if (currentStep == 3 && target.apnMode() == sv_apnMode.auto) {
6858 toStep = target.currentStep() - 1;
6859 sf_changeStep(toStep);
6860 }
6861 }
6862 function sf_button_save() {
6863 var submit = function () {
6864 sf_quickSetting4IPv6();
6865 };
6866 var result = sf_isDisabled_Wifi();
6867 if(result == sv_wifiState.wifi_off){
6868 showConfirm("quick_setting_wifi_disable_confirm", submit);
6869 } else if (result == sv_wifiState.wps_on) {
6870 showAlert("wps_on_info");
6871 } else{
6872 showConfirm("quick_setting_param_changed_confirm", submit);//submit();
6873 }
6874 }
mj.qu19ac6692024-08-21 19:18:36 -07006875 // ���������ύ���Ļص�����
zw.wangcfae4372024-08-12 16:41:12 +08006876 function sf_callback(data) {
6877 if (data.result == "success") {
6878 successOverlay();
6879 location.hash = "#network_choose";
6880 }
6881 else {
6882 errorOverlay();
6883 }
6884 }
6885
mj.qu19ac6692024-08-21 19:18:36 -07006886 // �任����ʱ����
zw.wangcfae4372024-08-12 16:41:12 +08006887 function sf_changeStep(i_step) {
6888 if (i_step > sv_maxStep) {
6889 i_step = sv_maxStep;
6890 } else if (i_step < sv_minStep) {
6891 i_step = sv_minStep;
6892 }
mj.qu19ac6692024-08-21 19:18:36 -07006893
zw.wangcfae4372024-08-12 16:41:12 +08006894 target.currentStep(i_step);
6895 return true;
6896 }
mj.qu19ac6692024-08-21 19:18:36 -07006897
zw.wangcfae4372024-08-12 16:41:12 +08006898 function sf_ipv6_selectedAuthMode_display() {
6899 var mode = target.ipv6_selectedAuthMode();
6900 return sf_getAuthModeNameByValue(mode);
6901 }
mj.qu19ac6692024-08-21 19:18:36 -07006902 // ���ݼ�Ȩģʽ��ֵ��������
zw.wangcfae4372024-08-12 16:41:12 +08006903 function sf_getAuthModeNameByValue(authMode) {
6904 for (var i = 0; i < config.APN_AUTH_MODES.length; i++) {
6905 if (authMode == config.APN_AUTH_MODES[i].value) {
6906 return config.APN_AUTH_MODES[i].name;
6907 }
6908 }
6909 }
mj.qu19ac6692024-08-21 19:18:36 -07006910
zw.wangcfae4372024-08-12 16:41:12 +08006911 function sf_getWepPassword(){
6912 return target.keyID() == '3' ? sv_quickSettingInfo.Key4Str1 : (target.keyID() == '2' ? sv_quickSettingInfo.Key3Str1 : target.keyID() == '1' ? sv_quickSettingInfo.Key2Str1 : sv_quickSettingInfo.Key1Str1);
6913 }
mj.qu19ac6692024-08-21 19:18:36 -07006914
zw.wangcfae4372024-08-12 16:41:12 +08006915 function sf_isDisabled_Wifi() {
6916 var s_wpsInfo = service.getWpsInfo();
6917 if(s_wpsInfo.radioFlag == "0"){
6918 return sv_wifiState.wifi_off;
6919 }else if (s_wpsInfo.wpsFlag == '1') {
6920 return sv_wifiState.wps_on;
6921 }
6922 return sv_wifiState.ok;
6923 }
6924 function sf_profileChangeHandler(i_data, i_event) {
6925 $("#pwdWepKey").parent().find("label[class='error']").hide();
6926 target.wepPassword(target.getWepPassword());
6927 return true;
6928 }
mj.qu19ac6692024-08-21 19:18:36 -07006929
6930 // ���������ύ(֧��IPv6��
zw.wangcfae4372024-08-12 16:41:12 +08006931 function sf_quickSetting4IPv6() {
6932 showLoading();
6933 var useIPv4ForV6 = config.IPV4V6_SUPPORT && target.currAPN().pdp_type == "IPv4v6";
6934
6935 var ciphertext = "";
6936 if (config.PASSWORD_ENCODE) {
6937 ciphertext = target.WPAKey();
6938 } else {
6939 var kparam = service.getDeviceInfoLow();
6940 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
6941 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
6942 ciphertext = CryptoJS.AES.encrypt(target.WPAKey(), tkey, {
6943 iv: tiv,
6944 mode: CryptoJS.mode.CBC,
6945 padding: CryptoJS.pad.ZeroPadding
6946 }).toString();
6947 }
mj.qu19ac6692024-08-21 19:18:36 -07006948
zw.wangcfae4372024-08-12 16:41:12 +08006949 var s_quickSettingParameters = {
6950 apn_index: sv_quickSettingInfo.apn_index,
6951 apnMode: target.apnMode(),
6952 Encryption_Mode_hid: target.selectedSecurityMode(),
6953 ipv6_ppp_auth_mode: useIPv4ForV6 ? target.selectedAuthMode() : target.ipv6_selectedAuthMode(),
6954 ipv6_ppp_username: useIPv4ForV6 ? target.username() : target.ipv6_username(),
6955 ipv6_ppp_passtmp: useIPv4ForV6 ? target.password() : target.ipv6_password(),
6956 ipv6_wan_apn: useIPv4ForV6 ? target.apn() : target.ipv6_apn(),
6957 pdp_type: target.ipType(),
6958 ppp_auth_mode: target.selectedAuthMode(),
6959 ppp_username: target.username(),
6960 ppp_passtmp: target.password(),
6961 profile_name: target.profileName(),
mj.qu19ac6692024-08-21 19:18:36 -07006962 //Ŀǰ����ģʽֻ��2�֣�����3������Ϊ�̶�ֵ
6963 //������Ҫ����Ϊ5�֣�����ֵ��Ҫ����
zw.wangcfae4372024-08-12 16:41:12 +08006964 security_shared_mode: "NONE",
6965 SSID_Broadcast: target.broadcast(),
6966 SSID_name: target.ssid(),
6967 wan_apn: target.apn(),
6968 wep_default_key: 0,
6969 WPA_ENCRYPTION_hid: target.selectedSecurityMode() == "OPEN" ? "NONE" : target.selectedSecurityMode() == "WPA2PSK" ? 1 : 2,
6970 WPA_PreShared_Key: ciphertext
6971 }
mj.qu19ac6692024-08-21 19:18:36 -07006972
zw.wangcfae4372024-08-12 16:41:12 +08006973 s_quickSettingParameters.wep_default_key = target.keyID();
mj.qu19ac6692024-08-21 19:18:36 -07006974
zw.wangcfae4372024-08-12 16:41:12 +08006975 if(target.encryptType() == "SHARED" || target.selectedSecurityMode() == "WEP") {
mj.qu19ac6692024-08-21 19:18:36 -07006976
zw.wangcfae4372024-08-12 16:41:12 +08006977 s_quickSettingParameters.security_shared_mode = "WEP";
mj.qu19ac6692024-08-21 19:18:36 -07006978
zw.wangcfae4372024-08-12 16:41:12 +08006979 s_quickSettingParameters.wep_key_1 = sv_quickSettingInfo.Key1Str1;
6980 s_quickSettingParameters.wep_key_2 = sv_quickSettingInfo.Key2Str1;
6981 s_quickSettingParameters.wep_key_3 = sv_quickSettingInfo.Key3Str1;
6982 s_quickSettingParameters.wep_key_4 = sv_quickSettingInfo.Key4Str1;
mj.qu19ac6692024-08-21 19:18:36 -07006983
zw.wangcfae4372024-08-12 16:41:12 +08006984 var WEPSelectTmp = '0';
mj.qu19ac6692024-08-21 19:18:36 -07006985
zw.wangcfae4372024-08-12 16:41:12 +08006986 if(target.wepPassword().length =='5' ||target.wepPassword().length =='13'){
6987 WEPSelectTmp = '1';
6988 }else{
6989 WEPSelectTmp = '0';
6990 }
mj.qu19ac6692024-08-21 19:18:36 -07006991
zw.wangcfae4372024-08-12 16:41:12 +08006992 if(target.keyID() =='3'){
6993 s_quickSettingParameters.wep_key_4 = target.wepPassword();
6994 s_quickSettingParameters.WEP4Select = WEPSelectTmp;
6995 }else if(target.keyID() =='2'){
6996 s_quickSettingParameters.wep_key_3 = target.wepPassword();
6997 s_quickSettingParameters.WEP3Select = WEPSelectTmp;
6998 }else if(target.keyID() =='1'){
6999 s_quickSettingParameters.wep_key_2 = target.wepPassword();
7000 s_quickSettingParameters.WEP2Select = WEPSelectTmp;
7001 }else{
7002 s_quickSettingParameters.wep_key_1 = target.wepPassword();
7003 s_quickSettingParameters.WEP1Select = WEPSelectTmp;
7004 }
7005 }else if(target.encryptType() == "WPAPSKWPA2PSK") {
7006 s_quickSettingParameters.security_shared_mode = "NONE";
7007 }else {
7008 s_quickSettingParameters.security_shared_mode = "NONE";
7009 }
mj.qu19ac6692024-08-21 19:18:36 -07007010
zw.wangcfae4372024-08-12 16:41:12 +08007011 service.setQuickSetting4IPv6(s_quickSettingParameters, target.callback);
7012 }
mj.qu19ac6692024-08-21 19:18:36 -07007013
zw.wangcfae4372024-08-12 16:41:12 +08007014 function sf_selectedAuthMode_display() {
7015 var mode = target.selectedAuthMode();
7016 return sf_getAuthModeNameByValue(mode);
7017 }
mj.qu19ac6692024-08-21 19:18:36 -07007018
zw.wangcfae4372024-08-12 16:41:12 +08007019 function sf_selectedSecurityMode_trans() {
7020 var mode = target.selectedSecurityMode();
7021 var modesOption = config.WIFI_WEP_SUPPORT ? config.AUTH_MODES_WEP : config.AUTH_MODES;
7022 for (var i = 0; i < modesOption.length; i++) {
7023 if (mode == modesOption[i].value) {
7024 target.selectedSecurityMode_display($.i18n.prop("security_mode_" + modesOption[i].value));
7025 return "security_mode_" + modesOption[i].value;
7026 }
7027 }
7028 }
mj.qu19ac6692024-08-21 19:18:36 -07007029
zw.wangcfae4372024-08-12 16:41:12 +08007030 function sf_showWifiPasswordHandler(){
7031 $("#pwdWepKey").parent().find(".error").hide();
7032 $("#codeWPAKey").parent().find(".error").hide();
7033 var checkbox = $("#showWifiPassword:checked");
7034 if(checkbox && checkbox.length == 0){
7035 target.showWifiPassword(true);
7036 }else{
7037 target.showWifiPassword(false);
7038 }
7039 }
mj.qu19ac6692024-08-21 19:18:36 -07007040
zw.wangcfae4372024-08-12 16:41:12 +08007041 }
7042
7043 function init() {
7044 var container = $('#container');
7045 ko.cleanNode(container[0]);
7046 var fwVm = new quickSettingViewModel();
7047 ko.applyBindings(fwVm, container[0]);
mj.qu19ac6692024-08-21 19:18:36 -07007048
zw.wangcfae4372024-08-12 16:41:12 +08007049 $('#quickSettingForm').validate({
7050 submitHandler:function () {
7051 if (fwVm.currentStep() < 5) {
7052 fwVm.next();
7053 } else {
7054 fwVm.save();
7055 }
7056 },
7057 rules:{
7058 txtAPN:"apn_check",
7059 txtIPv6APN:"apn_check",
7060 txtSSID:'ssid',
7061 pwdWepKey:{wifi_wep_password_check:true,wifi_password_check: true},
7062 txtWepKey:{wifi_wep_password_check:true,wifi_password_check: true},
7063 txtWPAKey:'wifi_password_check',
7064 codeWPAKey:'wifi_password_check',
7065 txtUserName:'ppp_username_check',
7066 txtIPv6UserName:'ppp_username_check',
7067 txtSecretCode:"ppp_secretcode_check",
7068 txtIPv6SecretCode:"ppp_secretcode_check"
7069 },
7070 errorPlacement:function (error, element) {
7071 var id = element.attr("id");
7072 if (id == "pwdWepKey" || id == "txtWepKey"){
7073 error.insertAfter("#lblShowWepPassword");
7074 } else if (id == "txtWPAKey" || id == "codeWPAKey") {
7075 error.insertAfter("#lblShowWifiPassword");
7076 } else {
7077 error.insertAfter(element);
7078 }
7079 }
7080 });
7081 }
7082
7083 return {
7084 init:init
7085 };
7086 }
7087);
7088
7089define("main","set service knockout underscore jquery statusBar echarts".split(" "), function (set, fnc, libko, libus, libjq, barStat, echarts) {
7090
7091 var chartOptions = {
7092 color: ['red', 'red', 'red', 'red', 'red'],
7093 series: [{
mj.qu19ac6692024-08-21 19:18:36 -07007094 name: '��������',
zw.wangcfae4372024-08-12 16:41:12 +08007095 type: 'pie',
7096 radius: ['0', '72'],
7097 itemStyle: {
7098 normal: {
7099 label: {
7100 show: false
7101 },
7102 labelLine: {
7103 show: false
7104 }
7105 }
7106 },
7107 data: [],
7108 selectedOffset: 3
7109 }
7110 ],
7111 animation: false,
7112 title: {
7113 text: '',
7114 x: 'center',
7115 y: 'center',
7116 itemGap: 0,
7117 textStyle: {
7118 color: '#FFF',
mj.qu19ac6692024-08-21 19:18:36 -07007119 fontFamily: '΢���ź�',
zw.wangcfae4372024-08-12 16:41:12 +08007120 fontSize: 20,
7121 fontWeight: 'bolder'
7122 },
7123 subtextStyle: {
7124 color: '#FFF',
mj.qu19ac6692024-08-21 19:18:36 -07007125 fontFamily: '΢���ź�',
zw.wangcfae4372024-08-12 16:41:12 +08007126 fontSize: 16,
7127 fontWeight: 'bolder'
7128 }
7129 },
7130 tooltip: {
7131 formatter: "{b}"
7132 },
7133 };
7134 var languageOld = window.language;
7135 var num_refresh = 0;
7136 var traffic_graphic_chart = null;
7137 var connStat = {
7138 CONNECTED: 1,
7139 DISCONNECTED: 2,
7140 CONNECTING: 3,
7141 DISCONNECTING: 4
7142 };
7143 function init() {
7144 num_refresh = 0;
7145 homeUtil.oldUsedData = null;
7146 homeUtil.oldAlarmData = null;
7147 traffic_graphic_chart = echarts.init(libjq("#traffic_graphic")[0]);
7148 var container = libjq('#container')[0];
7149 libko.cleanNode(container);
7150 var tmp = new VmHome();
7151 libko.applyBindings(tmp, container);
7152 var data = fnc.getLoginData();
7153 var psw_flg = data.psw_changed;
7154 if (psw_flg != "1") {
7155 showConfirm("password_note_first_change", function () {
7156 window.location.hash = '#pwd_mode';
7157 });
7158 return;
7159 }
7160 }
mj.qu19ac6692024-08-21 19:18:36 -07007161
zw.wangcfae4372024-08-12 16:41:12 +08007162 var homeUtil = {
7163 initStatus: null,
7164 initShownStatus: function (data) {
7165 this.initStatus = {};
7166 var ipv6Mode = data.ipv6PdpType.toLowerCase().indexOf("v6") > 0;
7167 if (set.RJ45_SUPPORT) {
7168 var mode = checkCableMode(data.blc_wan_mode);
7169 if (mode) {
7170 this.initStatus.showIpv6WanIpAddr = false;
7171 this.initStatus.showIpv4WanIpAddr = true;
7172 } else if (set.IPV6_SUPPORT) {
7173 if (data.pdpType == "IP") {
7174 this.initStatus.showIpv6WanIpAddr = false;
7175 this.initStatus.showIpv4WanIpAddr = true;
7176 } else if (ipv6Mode) {
7177 if (data.ipv6PdpType == "IPv6") {
7178 this.initStatus.showIpv6WanIpAddr = true;
7179 this.initStatus.showIpv4WanIpAddr = false;
7180 } else {
7181 this.initStatus.showIpv6WanIpAddr = true;
7182 this.initStatus.showIpv4WanIpAddr = true;
7183 }
7184 }
7185 } else {
7186 this.initStatus.showIpv6WanIpAddr = false;
7187 this.initStatus.showIpv4WanIpAddr = true;
7188 }
7189 } else {
7190 if (set.IPV6_SUPPORT) {
7191 if (data.pdpType == "IP") {
7192 this.initStatus.showIpv6WanIpAddr = false;
7193 this.initStatus.showIpv4WanIpAddr = true;
7194 } else if (ipv6Mode) {
7195 if (data.ipv6PdpType == "IPv6") {
7196 this.initStatus.showIpv6WanIpAddr = true;
7197 this.initStatus.showIpv4WanIpAddr = false;
7198 } else {
7199 this.initStatus.showIpv6WanIpAddr = true;
7200 this.initStatus.showIpv4WanIpAddr = true;
7201 }
7202 }
7203 } else {
7204 this.initStatus.showIpv6WanIpAddr = false;
7205 this.initStatus.showIpv4WanIpAddr = true;
7206 }
7207 }
7208 },
7209 wanIpGet: function (data) {
7210 var addrInfo = {
7211 wanIpAddress: '',
7212 ipv6WanIpAddress: ''
7213 };
7214 addrInfo.wanIpAddress = verifyDeviceInfo(data.wanIpAddress);
7215 addrInfo.ipv6WanIpAddress = verifyDeviceInfo(data.ipv6WanIpAddress);
7216 return addrInfo;
7217 },
7218 cachedAPStationBasic: null,
7219 cachedConnectionMode: null,
7220 getCanConnectNetWork: function (param) {
7221 var status = fnc.getStatusInfo();
7222 if (status.simStatus != "modem_init_complete") {
7223 return false;
7224 }
7225 var typeNetworkTmp = status.networkType.toLowerCase();
7226 if (typeNetworkTmp == 'searching') {
7227 return false;
7228 }
7229 if (typeNetworkTmp == '' || typeNetworkTmp == 'limited service') {
7230 typeNetworkTmp = 'limited_service';
7231 }
7232 if (typeNetworkTmp == 'no service') {
7233 typeNetworkTmp = 'no_service';
7234 }
7235 if (typeNetworkTmp == 'limited_service' || typeNetworkTmp == 'no_service') {
7236 if (param.cStatus() != connStat.CONNECTED) {
7237 return false;
7238 }
7239 }
7240 if (set.AP_STATION_SUPPORT) {
7241 if (status.connectWifiStatus == "connect") {
7242 if (status.ap_station_mode == "wifi_pref") {
7243 return false;
7244 }
7245 }
7246 }
7247 return true;
7248 },
7249 doConnect: function () {
7250 showLoading('connecting');
7251 fnc.connect({}, function (data) {
7252 if (data.result) {
7253 successOverlay();
7254 } else {
7255 errorOverlay();
7256 }
7257 });
7258 },
7259 refreshHomeData: function (param) {
7260 var info = fnc.getConnectionInfo();
7261 param.connectStatus(info.connectStatus);
7262 param.canConnect(this.getCanConnectNetWork(param));
7263 param.networkType(homeUtil.getNetworkType(info.networkType));
7264 if (info.connectStatus == "ppp_connected") {
7265 param.current_Flux(transUnit(parseInt(info.data_counter.currentReceived, 10) + parseInt(info.data_counter.currentSent, 10), false));
7266 param.connected_Time(transSecond2Time(info.data_counter.currentConnectedTime));
7267 param.up_Speed(transUnit(info.data_counter.uploadRate, true));
7268 param.down_Speed(transUnit(info.data_counter.downloadRate, true));
7269 } else {
7270 param.current_Flux(transUnit(0, false));
7271 param.connected_Time(transSecond2Time(0));
7272 param.up_Speed(transUnit(0, true));
7273 param.down_Speed(transUnit(0, true));
7274 }
7275 param.trafficAlertEnable(info.limitVolumeEnable);
7276 if (info.limitVolumeEnable) {
7277 if (info.limitVolumeType == '1') {
7278 param.trafficUsed(transUnit(parseInt(info.data_counter.monthlySent, 10) + parseInt(info.data_counter.monthlyReceived, 10), false));
7279 param.trafficLimited(transUnit(info.limitDataMonth, false));
7280 } else {
7281 param.trafficUsed(transSecond2Time(info.data_counter.monthlyConnectedTime));
7282 param.trafficLimited(transSecond2Time(info.limitTimeMonth));
7283 }
7284 }
7285 if (languageOld != window.language) {
7286 languageOld = window.language;
7287 num_refresh = 1;
7288 }
7289 if (param.showTraffic()) {
7290 homeUtil.updateEcharts(info);
7291 } else {
7292 homeUtil.allFreeEcharts();
7293 }
7294 homeUtil.refreshStationInfo(param);
7295 },
7296 allFreeEcharts: function () {
7297 var usedData = homeUtil.data.free;
7298 usedData.value = 1;
7299 usedData.selected = false;
7300 usedData.name = libjq.i18n.prop("echarts_no");
7301 chartOptions.series[0].data = [usedData];
7302 chartOptions.title.text = '';
7303 homeUtil.setEcharts(chartOptions, libjq.i18n.prop("echarts_no"));
7304 },
7305 getNetworkType: function (networkType) {
7306 var typeNetworkTmp = networkType.toLowerCase();
7307 if (typeNetworkTmp == '' || typeNetworkTmp == 'limited service') {
7308 typeNetworkTmp = 'limited_service';
7309 }
7310 if (typeNetworkTmp == 'no service') {
7311 typeNetworkTmp = 'no_service';
7312 }
7313 if (typeNetworkTmp == 'limited_service' || typeNetworkTmp == 'no_service') {
7314 return libjq.i18n.prop("network_type_" + typeNetworkTmp);
7315 } else {
7316 return networkType;
7317 }
7318 },
7319 data: {
7320 full: {
7321 value: 30,
mj.qu19ac6692024-08-21 19:18:36 -07007322 name: '��������',
zw.wangcfae4372024-08-12 16:41:12 +08007323 itemStyle: {
7324 normal: {
7325 color: '#DF4313'
7326 }
7327 }
7328 },
7329 used: {
7330 value: 30,
mj.qu19ac6692024-08-21 19:18:36 -07007331 name: '��ʹ��',
zw.wangcfae4372024-08-12 16:41:12 +08007332 itemStyle: {
7333 normal: {
7334 color: '#8CC916'
7335 }
7336 }
7337 },
7338 left1: {
7339 value: 50,
mj.qu19ac6692024-08-21 19:18:36 -07007340 name: '����ֵ��δʹ��',
zw.wangcfae4372024-08-12 16:41:12 +08007341 itemStyle: {
7342 normal: {
7343 color: '#D8D8D8'
7344 }
7345 }
7346 },
7347 free: {
7348 value: 50,
mj.qu19ac6692024-08-21 19:18:36 -07007349 name: 'δʹ��',
zw.wangcfae4372024-08-12 16:41:12 +08007350 itemStyle: {
7351 normal: {
7352 color: '#D8D8D8'
7353 }
7354 }
7355 },
7356 alert: {
7357 value: 1,
mj.qu19ac6692024-08-21 19:18:36 -07007358 name: '����ֵ',
zw.wangcfae4372024-08-12 16:41:12 +08007359 itemStyle: {
7360 normal: {
7361 color: '#FF5500'
7362 }
7363 }
7364 },
7365 alarm: {
7366 value: 19.7,
mj.qu19ac6692024-08-21 19:18:36 -07007367 name: '������',
zw.wangcfae4372024-08-12 16:41:12 +08007368 itemStyle: {
7369 normal: {
7370 color: '#8CC916'
7371 }
7372 }
7373 },
7374 start: {
7375 value: 50,
mj.qu19ac6692024-08-21 19:18:36 -07007376 name: '����ֵ��δʹ��',
zw.wangcfae4372024-08-12 16:41:12 +08007377 itemStyle: {
7378 normal: {
7379 color: '#D8D8D8'
7380 }
7381 }
7382 },
7383 },
7384 getDataInfo: function (value) {
7385 return {
7386 data: /\d+(.\d+)?/.exec(value)[0],
7387 unit: /[A-Z]{1,2}/.exec(value)[0]
7388 }
7389 },
7390 oldAlarmData: null,
7391 oldUsedData: null,
7392 updateEcharts: function (info) {
7393 var startName = libjq.i18n.prop("echarts_no");
7394 num_refresh++;
7395 if (num_refresh % 10 != 2) {
7396 return false;
7397 }
7398 var total = 0,
7399 used = 0,
7400 reach = 0,
7401 left = 0,
7402 alarm = 0,
7403 left1 = 0;
7404 if (info.limitVolumeEnable) {
7405 startName = libjq.i18n.prop("echarts_used");
7406 chartOptions.series[0].data = [];
7407 if (info.limitVolumeType == '1') {
7408 var limitedDataFormatted = transUnit(info.limitDataMonth, false);
7409 chartOptions.series[0].data = [];
7410 if (info.limitDataMonth == 0) {
7411 var usedData = homeUtil.data.used;
7412 usedData.value = 1;
7413 usedData.selected = false;
7414 usedData.name = libjq.i18n.prop("echarts_used");
7415 chartOptions.series[0].data.push(usedData);
7416 } else {
7417 var dataInfo = homeUtil.getDataInfo(limitedDataFormatted);
7418 total = dataInfo.data * homeUtil.getUnitValue(dataInfo.unit) * 1048576;
7419 used = parseInt(info.data_counter.monthlySent, 10) + parseInt(info.data_counter.monthlyReceived, 10);
7420 reach = total * info.limitVolumePercent / 100;
7421 if (used >= total) {
7422 var fullData = homeUtil.data.full;
7423 fullData.value = 100;
7424 fullData.name = libjq.i18n.prop("echarts_full");
7425 chartOptions.series[0].data.push(fullData);
7426 startName = libjq.i18n.prop("echarts_full");
7427 } else {
7428 if (reach - used > 0) {
7429 left1 = reach - used;
7430 left = total - reach;
7431 } else {
7432 alarm = used - reach;
7433 left = total - used;
7434 }
7435 var usedData = homeUtil.data.used;
7436 if (reach - used > 0) {
7437 usedData.value = used;
7438 } else {
7439 usedData.value = reach;
7440 }
7441 usedData.name = libjq.i18n.prop("echarts_used");
7442 chartOptions.series[0].data.push(usedData);
7443 if (left1 > 0) {
7444 var left1Data = homeUtil.data.left1;
7445 left1Data.value = left1;
7446 left1Data.name = libjq.i18n.prop("echarts_left1");
7447 chartOptions.series[0].data.push(left1Data);
7448 }
7449 var alertData = homeUtil.data.alert;
7450 alertData.value = total / 200;
7451 alertData.name = libjq.i18n.prop("echarts_alert");
7452 chartOptions.series[0].data.push(alertData);
7453 if (alarm > 0) {
7454 var alarmData = homeUtil.data.alarm;
7455 alarmData.value = alarm;
7456 alarmData.name = libjq.i18n.prop("echarts_alarm");
7457 chartOptions.series[0].data.push(alarmData);
7458 }
7459 var freeData = homeUtil.data.free;
7460 freeData.value = left;
7461 freeData.name = libjq.i18n.prop("echarts_free");
7462 chartOptions.series[0].data.push(freeData);
7463 }
7464 }
7465 } else {
7466 chartOptions.series[0].data = [];
7467 if (info.limitTimeMonth == 0) {
7468 var usedData = homeUtil.data.used;
7469 usedData.value = 1;
7470 usedData.selected = false;
7471 usedData.name = libjq.i18n.prop("echarts_used");
7472 chartOptions.series[0].data.push(usedData);
7473 } else {
7474 total = info.limitTimeMonth;
7475 used = info.data_counter.monthlyConnectedTime;
7476 reach = total * info.limitVolumePercent / 100;
7477 if (used >= total) {
7478 var fullTime = homeUtil.data.full;
7479 fullTime.value = 100;
7480 fullTime.name = libjq.i18n.prop("echarts_full");
7481 chartOptions.series[0].data.push(fullTime);
7482 startName = libjq.i18n.prop("echarts_full");
7483 } else {
7484 if (reach - used > 0) {
7485 left1 = reach - used;
7486 left = total - reach;
7487 } else {
7488 alarm = used - reach;
7489 left = total - used;
7490 }
7491 var usedTime = homeUtil.data.used;
7492 if (reach - used > 0) {
7493 usedTime.value = used;
7494 } else {
7495 usedTime.value = reach;
7496 }
7497 usedTime.name = libjq.i18n.prop("echarts_used");
7498 chartOptions.series[0].data.push(usedTime);
7499 if (left1 > 0) {
7500 var left1Time = homeUtil.data.left1;
7501 left1Time.value = left1;
7502 left1Time.name = libjq.i18n.prop("echarts_left1");
7503 chartOptions.series[0].data.push(left1Time);
7504 }
7505 var alertTime = homeUtil.data.alert;
7506 alertTime.value = total / 200;
7507 alertTime.name = libjq.i18n.prop("echarts_alert");
7508 chartOptions.series[0].data.push(alertTime);
7509 if (alarm > 0) {
7510 var alarmTime = homeUtil.data.alarm;
7511 alarmTime.value = alarm;
7512 alarmTime.name = libjq.i18n.prop("echarts_alarm");
7513 chartOptions.series[0].data.push(alarmTime);
7514 }
7515 var freeTime = homeUtil.data.free;
7516 freeTime.value = left;
7517 freeTime.name = libjq.i18n.prop("echarts_free");
7518 chartOptions.series[0].data.push(freeTime);
7519 }
7520 }
7521 }
7522 } else {
7523 var usedData = homeUtil.data.used;
7524 usedData.value = 1;
7525 usedData.selected = false;
7526 usedData.name = libjq.i18n.prop("echarts_no");
7527 chartOptions.series[0].data = [usedData];
7528 chartOptions.title.text = '';
7529 }
7530 var firstEle = libus.find(chartOptions.series[0].data, function (n) {
7531 return n.name == libjq.i18n.prop("echarts_used");
7532 });
7533 var alarmEle = libus.find(chartOptions.series[0].data, function (n) {
7534 return n.name == libjq.i18n.prop("echarts_alarm");
7535 });
7536 if (!alarmEle) {
7537 alarmEle = {
7538 value: 0
7539 };
7540 }
7541 if (typeof firstEle == "undefined") {
7542 homeUtil.setEcharts(chartOptions, startName);
7543 } else if (homeUtil.oldUsedData != firstEle.value || homeUtil.oldAlarmData != alarmEle.value) {
7544 homeUtil.oldUsedData = firstEle.value;
7545 homeUtil.oldAlarmData = alarmEle.value;
7546 homeUtil.setEcharts(chartOptions, startName);
7547 }
7548 },
7549 getUnitValue: function (unit) {
7550 unit = unit.toUpperCase();
7551 if (unit == 'GB') {
7552 return '1024';
7553 } else if (unit == 'TB') {
7554 return '1048576';
7555 } else {
7556 return '1';
7557 }
7558 },
7559 setEcharts: function (options, startName) {
7560 var startPart = homeUtil.data.start;
7561 startPart.value = 0;
7562 startPart.name = startName;
7563 startPart.selected = false;
7564 var arr = [startPart].concat(options.series[0].data);
7565 options.series[0].data = arr;
7566 traffic_graphic_chart.setOption(options, true);
7567 addTimeout(function () {
7568 traffic_graphic_chart.resize();
7569 }, 1000);
7570 },
7571 refreshStationInfo: function (param) {
7572 param.wirelessDeviceNum(fnc.getStatusInfo().wirelessDeviceNum);
7573 if (num_refresh % 10 == 2) {
7574 fnc.getAttachedCableDevices({}, function (data) {
7575 param.wireDeviceNum(data.attachedDevices.length);
7576 });
7577 }
7578 },
7579 getUnit: function (val) {
7580 if (val == '1024') {
7581 return 'GB';
7582 } else if (val == '1048576') {
7583 return 'TB';
7584 } else {
7585 return 'MB';
7586 }
7587 },
7588 refreshOpmodeInfo: function (param) {
7589 var obj = fnc.getOpMode();
7590 param.isLoggedIn(obj.loginfo == "ok");
7591 var currentMode = checkCableMode(obj.blc_wan_mode);
7592 if (param.opCurMode() && !currentMode) {
7593 var data = fnc.getLoginData();
7594 var state = data.modem_main_state;
7595 if (state == "modem_sim_undetected" || state == "modem_undetected" || state == "modem_sim_destroy" || state == "modem_waitpin" || state == "modem_waitpuk" || state == "modem_imsi_waitnck") {
7596 window.location.reload();
7597 return;
7598 }
7599 }
7600 param.opCurMode(currentMode);
7601 if (currentMode && obj.ethwan_mode == "DHCP") {
7602 param.enableFlag(false);
7603 } else if ((!currentMode && obj.ppp_status != "ppp_disconnected") || (currentMode && obj.rj45_state != "idle" && obj.rj45_state != "dead")) {
7604 param.enableFlag(true);
7605 } else {
7606 param.enableFlag(false);
7607 }
7608 var mode = (obj.blc_wan_mode == "AUTO_PPP" || obj.blc_wan_mode == "AUTO_PPPOE") ? "AUTO" : obj.blc_wan_mode;
7609 var currentOpMode = "";
7610 switch (mode) {
7611 case "AUTO":
7612 currentOpMode = "opmode_auto";
7613 break;
7614 case "PPPOE":
7615 currentOpMode = "opmode_cable";
7616 break;
7617 case "PPP":
7618 currentOpMode = "opmode_gateway";
7619 break;
7620 default:
7621 break;
7622 }
7623 libjq("#opmode").attr("data-trans", currentOpMode).text(libjq.i18n.prop(currentOpMode));
7624 param.isShowHomeConnect(!currentMode);
7625 param.showTraffic(set.TRAFFIC_SUPPORT && !currentMode);
7626 param.isSupportQuicksetting(set.HAS_QUICK_SETTING && !currentMode);
7627 }
7628 };
7629 function VmHome() {
7630 var target = this;
7631 target.hasSms = set.HAS_SMS;
7632 target.hasPhonebook = set.HAS_PHONEBOOK;
7633 target.isSupportSD = set.SD_CARD_SUPPORT;
7634 target.isCPE = set.PRODUCT_TYPE == 'CPE';
7635 target.hasRj45 = set.RJ45_SUPPORT;
7636 target.notDataCard = set.PRODUCT_TYPE != 'DATACARD';
7637 target.hasParentalControl = set.HAS_PARENTAL_CONTROL;
7638 var wifiInfo = fnc.getWifiBasic();
7639 if (set.WIFI_SUPPORT_QR_SWITCH) {
7640 target.showQRCode = set.WIFI_SUPPORT_QR_CODE && wifiInfo.show_qrcode_flag;
7641 } else {
7642 target.showQRCode = set.WIFI_SUPPORT_QR_CODE;
7643 }
7644 if(set.WIFI_SUPPORT_QR_CODE){
7645 target.qrcodeSrc = './pic/qrcode_ssid_wifikey.png?_=' + libjq.now();
7646 } else {
7647 target.qrcodeSrc = './pic/res_blacktrans.png';
7648 }
7649 if (target.hasRj45) {
7650 var opModeObj = checkCableMode(fnc.getOpMode().blc_wan_mode);
7651 target.opCurMode = libko.observable(opModeObj);
7652 target.isShowHomeConnect = libko.observable(!opModeObj);
7653 target.showTraffic = libko.observable(set.TRAFFIC_SUPPORT && !opModeObj);
7654 target.isSupportQuicksetting = libko.observable(set.HAS_QUICK_SETTING && !opModeObj);
7655 } else {
7656 target.isShowHomeConnect = libko.observable(true);
7657 target.showTraffic = libko.observable(set.TRAFFIC_SUPPORT);
7658 target.isSupportQuicksetting = libko.observable(set.HAS_QUICK_SETTING);
7659 }
7660 if (set.PRODUCT_TYPE == 'DATACARD') {
7661 libjq('#home_image').addClass('data-card');
7662 }
7663 var info = fnc.getConnectionInfo();
7664 target.networkType = libko.observable(homeUtil.getNetworkType(info.networkType));
7665 target.connectStatus = libko.observable(info.connectStatus);
7666 target.canConnect = libko.observable(false);
7667 target.cStatus = libko.computed(function () {
7668 if (target.connectStatus().indexOf('_connected') != -1) {
7669 return connStat.CONNECTED;
7670 } else if (target.connectStatus().indexOf('_disconnecting') != -1) {
7671 return connStat.DISCONNECTING;
7672 } else if (target.connectStatus().indexOf('_connecting') != -1) {
7673 return connStat.CONNECTING;
7674 } else {
7675 return connStat.DISCONNECTED;
7676 }
7677 });
7678 target.current_Flux = libko.observable(transUnit(0, false));
7679 target.connected_Time = libko.observable(transSecond2Time(0));
7680 target.up_Speed = libko.observable(transUnit(0, true));
7681 target.down_Speed = libko.observable(transUnit(0, true));
7682 target.isLoggedIn = libko.observable(false);
7683 target.enableFlag = libko.observable(true);
7684 target.simSerialNumber = libko.observable('');
7685 target.imei = libko.observable('');
7686 target.imsi = libko.observable('');
7687 target.ssid = libko.observable('');
7688 target.hasWifi = set.HAS_WIFI;
7689 target.showMultiSsid = libko.observable(set.HAS_MULTI_SSID && wifiInfo.multi_ssid_enable == "1");
7690 target.trafficAlertEnable = libko.observable(false);
7691 target.trafficUsed = libko.observable('');
7692 target.trafficLimited = libko.observable('');
7693 target.wireDeviceNum = libko.observable(fnc.getAttachedCableDevices().attachedDevices.length);
7694 target.wirelessDeviceNum = libko.observable(fnc.getStatusInfo().wirelessDeviceNum);
7695 target.showOpModeWindow = function () {
7696 if (target.enableFlag()) {
7697 return;
7698 }
7699 showSettingWindow("change_mode", "opmode_popup", "opmode_popup", 400, 300, function () {});
7700 };
7701 target.currentOpMode = libko.observable("0");
7702 var popoverShown = false;
7703 libjq('#showDetailInfo').popover({
7704 html: true,
7705 placement: 'top',
7706 trigger: 'focus',
7707 title: function () {
7708 return libjq.i18n.prop('device_info')
7709 },
7710 content: function () {
7711 return getDetailInfoContent();
7712 }
7713 }).on('shown.bs.popover', function () {
7714 popoverShown = true;
7715 }).on('hidden.bs.popover', function () {
7716 popoverShown = false;
7717 });
7718 function fetchDeviceInfo() {
7719 var data = fnc.getDeviceInfo();
7720 target.simSerialNumber(verifyDeviceInfo(data.simSerialNumber));
7721 target.imei(verifyDeviceInfo(data.imei));
7722 target.imsi(verifyDeviceInfo(data.imsi));
7723 target.ssid(verifyDeviceInfo(data.ssid));
7724 target.showMultiSsid(set.HAS_MULTI_SSID && data.multi_ssid_enable == "1");
7725 return data;
7726 }
7727 fetchDeviceInfo();
7728 function getDetailInfoContent() {
7729 var data = fetchDeviceInfo();
7730 homeUtil.initShownStatus(data);
7731 var addrInfo = homeUtil.wanIpGet(data);
7732 var compiled = libus.template(libjq("#detailInfoTmpl").html());
7733 var tmpl = compiled({
7734 simSerialNumber: verifyDeviceInfo(data.simSerialNumber),
7735 imei: verifyDeviceInfo(data.imei),
7736 imsi: verifyDeviceInfo(data.imsi),
7737 signal: signalFormat(data.signal),
7738 hasWifi: set.HAS_WIFI,
7739 isCPE: set.PRODUCT_TYPE == 'CPE',
7740 hasRj45: set.RJ45_SUPPORT,
7741 showMultiSsid: set.HAS_MULTI_SSID && data.multi_ssid_enable == "1",
7742 ssid: verifyDeviceInfo(data.ssid),
7743 max_access_num: verifyDeviceInfo(data.max_access_num),
7744 m_ssid: verifyDeviceInfo(data.m_ssid),
7745 m_max_access_num: verifyDeviceInfo(data.m_max_access_num),
7746 wifi_long_mode: "wifi_des_" + data.wifiRange,
7747 lanDomain: verifyDeviceInfo(data.lanDomain),
7748 ipAddress: verifyDeviceInfo(data.ipAddress),
7749 showMacAddress: set.SHOW_MAC_ADDRESS,
7750 macAddress: verifyDeviceInfo(data.macAddress),
7751 showIpv4WanIpAddr: homeUtil.initStatus.showIpv4WanIpAddr,
7752 wanIpAddress: addrInfo.wanIpAddress,
7753 showIpv6WanIpAddr: homeUtil.initStatus.showIpv6WanIpAddr,
7754 ipv6WanIpAddress: addrInfo.ipv6WanIpAddress,
7755 sw_version: verifyDeviceInfo(data.sw_version),
7756 hw_version: verifyDeviceInfo(data.hw_version)
7757 });
7758 return libjq(tmpl).translate();
7759 }
7760 target.connectHandler = function () {
7761 if (target.connectStatus() == "ppp_connected") {
7762 showLoading('disconnecting');
7763 fnc.disconnect({}, function (data) {
7764 if (data.result) {
7765 successOverlay();
7766 } else {
7767 errorOverlay();
7768 }
7769 });
7770 } else {
7771 if (fnc.getStatusInfo().roamingStatus) {
7772 showConfirm('dial_roaming_connect', function () {
7773 target.connect();
7774 });
7775 } else {
7776 target.connect();
7777 }
7778 }
7779 };
7780 target.connect = function () {
7781 var statusInfo = fnc.getStatusInfo();
7782 var trafficResult = barStat.getTrafficResult(statusInfo);
7783 if (statusInfo.limitVolumeEnable && trafficResult.showConfirm) {
7784 var confirmMsg = null;
7785 if (trafficResult.usedPercent > 100) {
7786 confirmMsg = {
7787 msg: 'traffic_beyond_connect_msg'
7788 };
7789 barStat.setTrafficAlertPopuped(true);
7790 } else {
7791 confirmMsg = {
7792 msg: 'traffic_limit_connect_msg',
7793 params: [trafficResult.limitPercent]
7794 };
7795 barStat.setTrafficAlert100Popuped(false);
7796 }
7797 showConfirm(confirmMsg, function () {
7798 homeUtil.doConnect();
7799 });
7800 } else {
7801 homeUtil.doConnect();
7802 }
7803 };
7804 fnc.getSignalStrength({}, function (data) {
7805 var signalTxt = signalFormat(convertSignal(data));
7806 libjq("#fresh_signal_strength").text(signalTxt);
7807 if (popoverShown) {
7808 libjq("#popoverSignalTxt").text(signalTxt);
7809 }
7810 });
7811 homeUtil.refreshHomeData(target);
7812 addInterval(function () {
7813 fnc.getSignalStrength({}, function (data) {
7814 var signalTxt = signalFormat(convertSignal(data));
7815 libjq("#fresh_signal_strength").text(signalTxt);
7816 if (popoverShown) {
7817 libjq("#popoverSignalTxt").text(signalTxt);
7818 }
7819 });
7820 homeUtil.refreshHomeData(target);
7821 }, 1000);
7822 if (target.hasRj45) {
7823 homeUtil.refreshOpmodeInfo(target);
7824 addInterval(function () {
7825 homeUtil.refreshOpmodeInfo(target);
7826 }, 1000);
7827 }
7828 target.showNetworkSettingsWindow = function () {
7829 if (target.hasRj45) {
7830 fnc.getOpMode({}, function (data) {
7831 var mode = checkCableMode(data.blc_wan_mode);
7832 if (mode) {
7833 window.location.hash = '#network_set';
7834 } else {
7835 window.location.hash = '#conn_set';
7836 }
7837 });
7838 } else {
7839 window.location.hash = '#conn_set';
7840 }
7841 }
7842 };
7843 return {
7844 init: init
7845 };
7846});
7847
7848
7849define("language","knockout service jquery set underscore".split(" "),
7850 function(ko, service, $, config, _) {
7851
mj.qu19ac6692024-08-21 19:18:36 -07007852 // ��ȡ��ǰ������
zw.wangcfae4372024-08-12 16:41:12 +08007853 function getCurrentLanguage() {
7854 return service.getLanguage();
7855 }
7856
mj.qu19ac6692024-08-21 19:18:36 -07007857 // ��������������������Դ������ҳ���ϵ�body����
7858 // @param {String} current ������:zh-cn
zw.wangcfae4372024-08-12 16:41:12 +08007859 function loadLanguageAndRefresh(current){
7860 window.CURRENT_LANGUAGE = current;
7861 $("body").attr('lang', current);
7862 $.i18n.properties({
7863 name:'Messages',
7864 path:'i18n/',
7865 mode:'map',
7866 cache: true,
7867 language:current,
7868 callback: function() {
7869 jQuery.validator.messages = $.i18n.map;
7870 $('body').translate();
7871 }
7872 });
7873 }
mj.qu19ac6692024-08-21 19:18:36 -07007874
zw.wangcfae4372024-08-12 16:41:12 +08007875 window.language = null;
mj.qu19ac6692024-08-21 19:18:36 -07007876
zw.wangcfae4372024-08-12 16:41:12 +08007877
7878 function LanguageViewModel() {
7879 var target = this;
7880 var currentLan = getCurrentLanguage();
7881 var languages = _.map(config.LANGUAGES, function(item) {
7882 return new Option(item.name, item.value);
7883 });
7884
7885 document.title = config.WEBUI_TITLE;
7886 if($('#webui_title')[0]) {
7887 $('#webui_title').html(config.WEBUI_TITLE);
7888 }
7889
7890 target.languages = ko.observableArray(languages);
7891 target.currentLan = ko.observable(currentLan.Language);
7892 window.language = target.currentLan();
7893
mj.qu19ac6692024-08-21 19:18:36 -07007894 // �л������¼�����
zw.wangcfae4372024-08-12 16:41:12 +08007895 // @event langChangeHandler
7896 target.langChangeHandler = function(info, event) {
7897 clearValidateMsg();
7898
7899 service.setLanguage({Language: target.currentLan()}, function() {
7900 loadLanguageAndRefresh(target.currentLan());
7901 window.language = target.currentLan();
7902 });
7903 };
7904
mj.qu19ac6692024-08-21 19:18:36 -07007905 // ���������б���ˢ�½���
zw.wangcfae4372024-08-12 16:41:12 +08007906 loadLanguageAndRefresh(target.currentLan());
7907 }
7908
mj.qu19ac6692024-08-21 19:18:36 -07007909 // ��ʼ������VM������
zw.wangcfae4372024-08-12 16:41:12 +08007910 function init() {
7911 ko.applyBindings(new LanguageViewModel(), $('#language')[0]);
7912 }
7913
7914 return {
7915 init: init
7916 };
7917});
7918
7919
mj.qu19ac6692024-08-21 19:18:36 -07007920// ��½ ģ��
zw.wangcfae4372024-08-12 16:41:12 +08007921define("entry","jquery knockout set service underscore menu logout CryptoJS".split(" "),
7922 function($, ko,config, service, _, menu, logout, CryptoJS) {
mj.qu19ac6692024-08-21 19:18:36 -07007923
zw.wangcfae4372024-08-12 16:41:12 +08007924
7925 var pageState = {LOGIN:0, WAIT_PIN:1, WAIT_PUK:2, PUK_LOCKED:3, LOGGEDIN:4, LOADING:5};
7926 var timer = loginStatusCheckingTimer();
7927 var loginLockTimer = 0;
7928 var lastLoginStatus = "0";
mj.qu19ac6692024-08-21 19:18:36 -07007929
zw.wangcfae4372024-08-12 16:41:12 +08007930 function loginViewModel() {
7931 var target = this;
7932 var data = service.getLoginData();
7933 var loginStatus = service.getLoginStatus();
7934
7935 target.confirmPIN = ko.observable();
7936 target.leftSeconds = ko.observable(0);
7937 target.loginCount = ko.observable(0);
7938 target.loginSecuritySupport = ko.observable(config.LOGIN_SECURITY_SUPPORT);
7939 target.newPIN = ko.observable();
7940 target.password = ko.observable();
7941 target.PIN = ko.observable();
7942 target.pinNumber = ko.observable(data.pinnumber);
7943 target.PUK = ko.observable();
7944 target.pukNumber = ko.observable(data.puknumber);
7945 target.showEntrance = ko.observable(false);
7946 target.sharePathInvalid = ko.observable(false);
7947 target.uiLoginTimer = ko.observable(300);
7948
mj.qu19ac6692024-08-21 19:18:36 -07007949 // ע��˳�򣬵���ǰ�����޷�ˢ�³�����
zw.wangcfae4372024-08-12 16:41:12 +08007950 target.accountLocked = ko.computed(function () {
7951 return target.loginCount() == config.MAX_LOGIN_COUNT && target.leftSeconds() != '-1';
7952 });
mj.qu19ac6692024-08-21 19:18:36 -07007953
zw.wangcfae4372024-08-12 16:41:12 +08007954 target.leftUnlockTime = ko.computed(function () {
7955 target.leftSeconds();
7956 var formatted = transSecond2Time(target.uiLoginTimer());
7957 return formatted.substring(formatted.indexOf(':') + 1, formatted.length);
7958 });
7959
7960
7961 if(config.SD_CARD_SUPPORT){
7962 service.getSDConfiguration({}, function (data) {
7963 target.showEntrance(data.sd_status == "1" && data.share_status == "1" && data.sd_mode == "0");
7964 if(target.showEntrance()){
7965 service.checkFileExists({
7966 path: data.share_file
7967 }, function (data1) {
7968 if (data1.status == 'exist' || data1.status == 'processing') {
7969 target.sharePathInvalid(false);
7970 } else {
7971 target.sharePathInvalid(true);
7972 }
7973 });
7974 }
7975 });
7976 }
7977
7978 var state = computePageState(loginStatus, data);
7979 target.pageState = ko.observable(state);
7980 if (state == pageState.LOADING) {
7981 addTimeout(refreshPage, 500);
7982 }
7983 setFocus();
7984
mj.qu19ac6692024-08-21 19:18:36 -07007985
7986 // login �¼�����
7987
zw.wangcfae4372024-08-12 16:41:12 +08007988 target.login = function () {
7989 if(config.LOGIN_SECURITY_SUPPORT && target.accountLocked()){
7990 showAlert("password_error_account_lock_time", function () {
7991 setFocus();
7992 });
7993 return false;
7994 }
7995 target.pageState(pageState.LOADING);
7996 window.clearInterval(timer);
7997 var ciphertext = "";
7998 if (config.PASSWORD_ENCODE) {
7999 ciphertext = target.password();
8000 } else {
8001 var kparam = service.getDeviceInfoLow();
8002 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
8003 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
8004 ciphertext = CryptoJS.AES.encrypt(target.password(), tkey, {
8005 iv: tiv,
8006 mode: CryptoJS.mode.CBC,
8007 padding: CryptoJS.pad.ZeroPadding
8008 }).toString();
8009 }
8010 service.login({
8011 password:ciphertext
8012 }, function (info) {
8013 setTimeout(function () {
8014 timer = loginStatusCheckingTimer();
8015 }, 1300);
8016 if (info.result) {
8017 target.pageState(pageState.LOGGEDIN);
8018 if(config.LOGIN_SECURITY_SUPPORT){
8019 target.loginCount(0);
8020 target.uiLoginTimer(300);
8021 clearInterval(loginLockTimer);
8022 }
8023 $("#container").empty();
8024 window.location.hash = "#main";
8025 logout.init();
8026 } else {
8027 target.password("");
8028 if(config.LOGIN_SECURITY_SUPPORT){
8029 target.checkLoginData(function(){
8030 if (target.loginCount() == config.MAX_LOGIN_COUNT) {
8031 showAlert("password_error_five_times", function () {
8032 setFocus();
8033 });
8034 target.startLoginLockInterval();
8035 } else {
8036 showAlert({msg: 'password_error_left', params: [config.MAX_LOGIN_COUNT - target.loginCount()]}, function () {
8037 setFocus();
8038 });
8039 }
8040 });
8041 }else {
8042 showAlert("password_error", function () {
8043 setFocus();
8044 });
8045 }
8046 target.pageState(pageState.LOGIN);
8047 }
8048 });
8049 };
8050
zw.wangcfae4372024-08-12 16:41:12 +08008051
mj.qu19ac6692024-08-21 19:18:36 -07008052
8053
8054 // ��ȡ��¼������Ϣ
zw.wangcfae4372024-08-12 16:41:12 +08008055 target.checkLoginData = function(cb){
8056 service.getLoginData({}, function(r){
8057 var failTimes = parseInt(r.psw_fail_num_str, 10);
8058 target.loginCount(config.MAX_LOGIN_COUNT - failTimes);
8059 target.leftSeconds(r.login_lock_time);
8060 target.uiLoginTimer(r.login_lock_time);
8061 if($.isFunction(cb)){
8062 cb();
8063 } else if (target.loginCount() == config.MAX_LOGIN_COUNT) {
8064 target.startLoginLockInterval();
8065 }
8066 });
8067 };
mj.qu19ac6692024-08-21 19:18:36 -07008068
8069 // ��������ʱ��ʱ����
zw.wangcfae4372024-08-12 16:41:12 +08008070 target.startLoginLockInterval = function () {
8071 loginLockTimer = setInterval(function () {
8072 service.getLoginData({}, function (data) {
8073 if (data.login_lock_time <= 0 || data.psw_fail_num_str == 5) {
8074 target.loginCount(0);
8075 clearInterval(loginLockTimer);
8076 }
8077 if(target.leftSeconds() != data.login_lock_time){
8078 target.leftSeconds(data.login_lock_time);
8079 target.uiLoginTimer(data.login_lock_time);
8080 } else {
8081 target.uiLoginTimer(target.uiLoginTimer() > 0 ? target.uiLoginTimer() - 1 : 0);
8082 }
8083 });
8084 }, 1000);
8085 };
8086
8087 target.checkLoginData();
8088
8089
mj.qu19ac6692024-08-21 19:18:36 -07008090
8091 // ��֤����PIN�¼�����
zw.wangcfae4372024-08-12 16:41:12 +08008092 target.enterPIN = function () {
8093 target.pageState(pageState.LOADING);
8094 var pin = target.PIN();
8095 service.enterPIN({
8096 PinNumber:pin
8097 }, function (data) {
8098 if (!data.result) {
8099 showAlert("pin_error", function () {
8100 refreshPage();
8101 });
8102 target.PIN('');
8103 } else {
8104 refreshPage();
8105 }
8106 });
8107 };
8108
8109 function setFocus(){
8110 setTimeout(function () {
8111 var txtAdmin = $('#txtAdmin:visible');
8112 var txtPIN = $('#txtPIN:visible');
8113 var txtPUK = $('#txtPUK:visible');
8114 if (txtAdmin.length > 0) {
8115 txtAdmin.focus();
8116 } else if (txtPIN.length > 0) {
8117 txtPIN.focus();
8118 } else if (txtPUK.length > 0) {
8119 txtPUK.focus();
8120 }
8121 }, 100);
8122 }
8123
mj.qu19ac6692024-08-21 19:18:36 -07008124
8125 // ˢ��ҳ��״̬
zw.wangcfae4372024-08-12 16:41:12 +08008126 function refreshPage() {
8127 var data = service.getLoginData();
8128 var loginStatus = service.getLoginStatus();
8129 var state = computePageState(loginStatus, data);
8130 if (state == pageState.LOADING) {
8131 addTimeout(refreshPage, 500);
8132 } else {
8133 target.pageState(state);
8134 target.pinNumber(data.pinnumber);
8135 target.pukNumber(data.puknumber);
8136 }
8137 setFocus();
8138 }
8139
mj.qu19ac6692024-08-21 19:18:36 -07008140 // ����PUK������PIN�¼�����
zw.wangcfae4372024-08-12 16:41:12 +08008141 target.enterPUK = function () {
8142 target.pageState(pageState.LOADING);
8143 var newPIN = target.newPIN();
8144 var confirmPIN = target.confirmPIN();
8145 var params = {};
8146 params.PinNumber = newPIN;
8147 params.PUKNumber = target.PUK();
8148 service.enterPUK(params, function (data) {
8149 if (!data.result) {
8150 showAlert("puk_error", function () {
8151 refreshPage();
8152 });
8153 target.PUK('');
8154 target.newPIN('');
8155 target.confirmPIN('');
8156 } else {
8157 refreshPage();
8158 }
8159 });
8160 };
8161
8162
8163
mj.qu19ac6692024-08-21 19:18:36 -07008164 // ���ݵ�¼״̬��SIM��״̬����ҳ��״̬
zw.wangcfae4372024-08-12 16:41:12 +08008165 function checkPinAfterLogin(loginStatus, data) {
8166 if (loginStatus.status == "loggedIn") {
8167 var currentState = data.modem_main_state; // cov_2
8168 if (currentState == "modem_waitpin") {
8169 return pageState.WAIT_PIN;
8170 } else if ((currentState == "modem_waitpuk" || data.pinnumber == 0) && (data.puknumber != 0)) {
8171 return pageState.WAIT_PUK;
8172 } else if ((data.puknumber == 0 || currentState == "modem_sim_destroy")
8173 && currentState != "modem_sim_undetected" && currentState != "modem_undetected") {
8174 return pageState.PUK_LOCKED;
8175 } else {
8176 return pageState.LOGGEDIN;
8177 }
8178 } else {
8179 var currentState = data.modem_main_state;
8180 if ($.inArray(currentState, config.TEMPORARY_MODEM_MAIN_STATE) != -1) {
8181 return pageState.LOADING;
8182 } else {
8183 return pageState.LOGIN;
8184 }
8185 }
8186 }
mj.qu19ac6692024-08-21 19:18:36 -07008187
8188 // ���ݵ�¼״̬��SIM��״̬����ҳ��״̬
zw.wangcfae4372024-08-12 16:41:12 +08008189 function computePageState(loginStatus, data) {
mj.qu19ac6692024-08-21 19:18:36 -07008190 //PX-880 �ȵ�¼�ٽ���PIN��֤������router����ԭ�򣬵�¼����PIN��֤���ڵ�¼ҳ�����У������ݿ�����֤����һ�¡�
zw.wangcfae4372024-08-12 16:41:12 +08008191 if (config.LOGIN_THEN_CHECK_PIN) {
8192 return checkPinAfterLogin(loginStatus, data);
8193 } else {
8194 return loginAfterCheckPin(loginStatus, data);
8195 }
8196 }
mj.qu19ac6692024-08-21 19:18:36 -07008197
8198 // ���ݵ�¼״̬��SIM��״̬����ҳ��״̬
zw.wangcfae4372024-08-12 16:41:12 +08008199 function loginAfterCheckPin(loginStatus, data) {
8200 if (loginStatus.status == "loggedIn") {
8201 return pageState.LOGGEDIN;
8202 } else {
8203 var currentState = data.modem_main_state;
8204 if ($.inArray(currentState, config.TEMPORARY_MODEM_MAIN_STATE) != -1) {
8205 return pageState.LOADING;
8206 } else if (currentState == "modem_waitpin") {
8207 return pageState.WAIT_PIN;
8208 } else if ((currentState == "modem_waitpuk" || parseInt(data.pinnumber) === 0) && (parseInt(data.puknumber) != 0)) {
8209 return pageState.WAIT_PUK;
8210 } else if ((parseInt(data.puknumber) === 0 || currentState == "modem_sim_destroy") && currentState != "modem_sim_undetected" && currentState != "modem_undetected") {
8211 return pageState.PUK_LOCKED;
8212 } else {
8213 return pageState.LOGIN;
8214 }
8215 }
8216 }
8217 }
mj.qu19ac6692024-08-21 19:18:36 -07008218
8219
8220 // ���鵱ǰwindow.location.hash���쳣����ת��index.html
zw.wangcfae4372024-08-12 16:41:12 +08008221 function gotoLogin() {
8222 if (window.location.hash != config.defaultRoute && _.indexOf(config.GUEST_HASH, window.location.hash) == -1) {
8223 if (!manualLogout && lastLoginStatus == "1") {
8224 manualLogout = false;
8225 lastLoginStatus = 'UNREAL';
8226 showAlert('need_login_again', function () {
8227 window.location = "index.html";
8228 });
8229 } else if (lastLoginStatus == 'UNREAL') {
8230 //do nothing, only popup need_login_again alert one time
8231 return;
8232 } else {
8233 window.location = "index.html";
8234 }
8235 }
8236 }
mj.qu19ac6692024-08-21 19:18:36 -07008237
8238 // ��ʱ������¼״̬
zw.wangcfae4372024-08-12 16:41:12 +08008239 function loginStatusCheckingTimer() {
8240 return setInterval(function () {
8241 var info = service.getStatusInfo();
8242 if (!info.isLoggedIn) {
8243 gotoLogin();
8244 return;
8245 }
8246 lastLoginStatus = service.getStatusInfo().isLoggedIn ? "1" : "0";
8247 }, 1000);
8248 }
mj.qu19ac6692024-08-21 19:18:36 -07008249
zw.wangcfae4372024-08-12 16:41:12 +08008250 function init() {
8251 var info = service.getStatusInfo();
8252 if (info.isLoggedIn) {
8253 window.location.hash = '#main';
8254 return;
8255 }
8256
8257 var container = $('#container')[0];
8258 ko.cleanNode(container);
8259 var fwVm = new loginViewModel();
8260 ko.applyBindings(fwVm, container);
8261
8262 $('#frmLogin').validate({
8263 submitHandler:function () {
8264 fwVm.login();
8265 },
8266 rules: {
8267 txtAdmin: 'login_password_length_check'
8268 }
8269 });
8270 $('#frmPIN').validate({
8271 submitHandler:function () {
8272 fwVm.enterPIN();
8273 },
8274 rules:{
8275 txtPIN:"pin_check"
8276 }
8277 });
8278 $('#frmPUK').validate({
8279 submitHandler:function () {
8280 fwVm.enterPUK();
8281 },
8282 rules:{
8283 txtNewPIN:"pin_check",
8284 txtConfirmPIN:{equalToPin:"#txtNewPIN"},
8285 txtPUK:"puk_check"
8286 }
8287 });
8288 }
mj.qu19ac6692024-08-21 19:18:36 -07008289
8290
zw.wangcfae4372024-08-12 16:41:12 +08008291 return {
8292 init:init,
8293 gotoLogin:gotoLogin
8294 };
8295 });
zw.wangcfae4372024-08-12 16:41:12 +08008296
mj.qu19ac6692024-08-21 19:18:36 -07008297
8298// Logout �
zw.wangcfae4372024-08-12 16:41:12 +08008299define("logout","set service knockout underscore jquery".split(" "),
8300 function (config, service, ko, _, $) {
8301
8302 function logoutViewModel() {
8303 var target = this;
mj.qu19ac6692024-08-21 19:18:36 -07008304 // ��ȡ�Ƿ���¼
zw.wangcfae4372024-08-12 16:41:12 +08008305 var loginFlag = function () {
8306 var loginInfo = service.getLoginStatus();
8307 return (loginInfo.status == "loggedIn");
8308 }
8309 ();
8310 target.loggedIn = ko.observable(loginFlag);
8311
mj.qu19ac6692024-08-21 19:18:36 -07008312 // �˳�ϵͳ
zw.wangcfae4372024-08-12 16:41:12 +08008313 target.logout = function () {
8314 showConfirm("confirm_logout", function () {
8315 manualLogout = true;
8316 service.logout({}, setLocation());
8317 });
8318 };
8319
mj.qu19ac6692024-08-21 19:18:36 -07008320 // �Ƿ���ʾ�˳���ť
zw.wangcfae4372024-08-12 16:41:12 +08008321 target.showLogout = function () {
8322 if (config.HAS_LOGIN) {
8323 return target.loggedIn();
8324 } else {
8325 return false;
8326 }
8327 };
8328 }
8329 function setLocation() {
8330 window.location = 'index.html';
8331 }
8332 function initialize() {
8333 var fwVm = new logoutViewModel();
8334 bindContainer(fwVm);
8335 }
8336 function bindContainer(fwVm) {
8337 var con = $('#logout')[0];
8338 ko.cleanNode(con);
8339 ko.applyBindings(fwVm, con);
8340 }
8341 return {
8342 init: initialize
8343 };
8344});
8345
mj.qu19ac6692024-08-21 19:18:36 -07008346// operation mode �
zw.wangcfae4372024-08-12 16:41:12 +08008347define("opmode","knockout service jquery set underscore".split(" "),
8348
8349 function (ko, service, $, config, _) {
8350
8351 function currentOperationModeViewMode(){
8352 var target = this;
8353 target.isLoggedIn = ko.observable(false);
8354 target.enableFlag = ko.observable(false);
8355
8356 target.showOpModeWindow = function () {
8357 showSettingWindow("change_mode", "opmode_popup", "opmode_popup", 400, 300, function () {
8358 });
8359 };
8360 target.currentOpMode = ko.observable("0");
mj.qu19ac6692024-08-21 19:18:36 -07008361
zw.wangcfae4372024-08-12 16:41:12 +08008362 service.getOpMode({}, function(info){
8363 target.isLoggedIn(info.loginfo == "ok");
8364 if (info.opms_wan_mode != "PPP" && info.rj45_state != "idle" && info.rj45_state != "dead") {
8365 target.enableFlag(false);
8366 } else if (info.opms_wan_mode == "PPP" && info.ppp_status != "ppp_disconnected") {
8367 target.enableFlag(false);
8368 } else if(info.opms_wan_mode == "DHCP"){
8369 target.enableFlag(true);
8370 } else {
8371 target.enableFlag(true);
8372 }
mj.qu19ac6692024-08-21 19:18:36 -07008373
zw.wangcfae4372024-08-12 16:41:12 +08008374 var opmsWanMode = (info.opms_wan_mode == "DHCP" || info.opms_wan_mode == "STATIC") ? "PPPOE" : info.opms_wan_mode;
mj.qu19ac6692024-08-21 19:18:36 -07008375
zw.wangcfae4372024-08-12 16:41:12 +08008376 var currentOperationMode = "";
8377 switch(opmsWanMode){
8378 case "BRIDGE":
8379 currentOperationMode = "opmode_bridge";
8380 break;
8381 case "PPP":
8382 currentOperationMode = "opmode_gateway";
8383 break;
8384 case "PPPOE":
8385 currentOperationMode = "opmode_cable";
8386 break;
8387 default:
8388 break;
8389 }
8390 $("#opmode").attr("data-trans", currentOperationMode).text($.i18n.prop(currentOperationMode));
8391 });
mj.qu19ac6692024-08-21 19:18:36 -07008392 // ��ʱ��ѯ����ģʽ����״̬�����ý���״̬
zw.wangcfae4372024-08-12 16:41:12 +08008393 setInterval(function(){
8394 var object = service.getConnectionInfo();
8395 if(object.opms_wan_mode == "DHCP") {
8396 target.enableFlag(true);
8397 } 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")) {
8398 target.enableFlag(false);
8399 } else {
8400 target.enableFlag(true);
8401 }
8402 }, 1000);
8403 }
8404
8405 function init() {
8406 var container = $('#currentOpMode')[0];
8407 ko.cleanNode(container);
8408 var fwVm = new currentOperationModeViewMode();
8409 ko.applyBindings(fwVm, container);
8410 }
8411
8412 return {
8413 init:init
8414 };
8415});
8416
mj.qu19ac6692024-08-21 19:18:36 -07008417// operation mode popup�
zw.wangcfae4372024-08-12 16:41:12 +08008418
8419define("opmode_popup","knockout service jquery set underscore".split(" "),
8420
8421 function (ko, service, $, config, _) {
mj.qu19ac6692024-08-21 19:18:36 -07008422
zw.wangcfae4372024-08-12 16:41:12 +08008423 function operationModeViewMode() {
8424 var target = this;
8425 var currentSelectedOperationMode = "";
8426 target.selectedMode = ko.observable("0");
mj.qu19ac6692024-08-21 19:18:36 -07008427
8428 // ��ʼ������ģʽ��ʾ
zw.wangcfae4372024-08-12 16:41:12 +08008429 service.getOpMode({}, function(info){
8430 if(info.blc_wan_mode == "AUTO_PPP"){
8431 currentSelectedOperationMode = "AUTO";
8432 }else if(info.blc_wan_mode == "AUTO_PPPOE"){
8433 currentSelectedOperationMode = "AUTO";
8434 }else if(info.blc_wan_mode == "PPPOE"){
8435 currentSelectedOperationMode = "PPPOE";
8436 }else{
8437 currentSelectedOperationMode = info.blc_wan_mode;
8438 }
8439 target.selectedMode(currentSelectedOperationMode);
8440 });
mj.qu19ac6692024-08-21 19:18:36 -07008441
8442 // ģʽ����/�л�
zw.wangcfae4372024-08-12 16:41:12 +08008443 target.changeOpMode = function(){
8444 var userSelectedOperationMode = $('input:radio[name="opMode"]:checked').val();
8445 var messageText = "";
8446 if(userSelectedOperationMode == currentSelectedOperationMode) {
8447 hidePopupSettingWindow();
8448 return;
8449 }
8450 if(userSelectedOperationMode == "LTE_BRIDGE"){
8451 messageText = "opmode_msg3";
8452 }else{
8453 messageText = "opmode_msg2";
8454 }
8455 showConfirm(messageText, function(){
8456 showLoading();
8457 service.SetOperationMode({
8458 opMode: userSelectedOperationMode
8459 },function(info){
8460 if (info && info.result == "success") {
8461 var currentOperationMode = "";
8462 switch(userSelectedOperationMode){
8463 case "AUTO":
8464 currentOperationMode = "opmode_auto"
8465 break;
8466 case "PPP":
8467 currentOperationMode = "opmode_gateway";
8468 break;
8469 case "PPPOE":
8470 currentOperationMode = "opmode_cable";
8471 break;
8472 default:
8473 break;
8474 }
8475 $("#opmode").attr("data-trans", currentOperationMode).text($.i18n.prop(currentOperationMode));
8476 successOverlay();
8477 } else {
8478 errorOverlay();
8479 }
8480 });
8481 });
mj.qu19ac6692024-08-21 19:18:36 -07008482
zw.wangcfae4372024-08-12 16:41:12 +08008483 }
mj.qu19ac6692024-08-21 19:18:36 -07008484
zw.wangcfae4372024-08-12 16:41:12 +08008485 }
8486
8487 function init() {
8488 var fwVm = new operationModeViewMode();
8489 ko.applyBindings(fwVm, $('#popupSettingWindow')[0]);
mj.qu19ac6692024-08-21 19:18:36 -07008490
zw.wangcfae4372024-08-12 16:41:12 +08008491 $("#opmode_form").validate({
8492 submitHandler: function(){
8493 fwVm.changeOpMode();
8494 }
8495 });
8496 }
8497
8498 return {
8499 init:init
8500 };
8501});
8502
8503define("router","underscore jquery menu set service".split(" "),
8504 function (_, $, menu, config, service) {
8505 var currentHash = '';
8506 var container = $('#container');
8507
mj.qu19ac6692024-08-21 19:18:36 -07008508 //�뿪����ʱ�����Ƿ��������޸ģ�����������ʾ
zw.wangcfae4372024-08-12 16:41:12 +08008509 checkFormContentModify = function (href) {
8510 if (config.CONTENT_MODIFIED.modified && window.location.hash != href) {
8511 if (config.CONTENT_MODIFIED.message == 'sms_to_save_draft') {
8512 config.CONTENT_MODIFIED.callback.ok(config.CONTENT_MODIFIED.data);
8513 config.resetContentModifyValue();
8514 window.location.hash = href;
8515 } else {
8516 showConfirm(config.CONTENT_MODIFIED.message, {
8517 ok: function () {
8518 config.CONTENT_MODIFIED.callback.ok(config.CONTENT_MODIFIED.data);
8519 config.resetContentModifyValue();
8520 window.location.hash = href;
8521 },
8522 no: function () {
8523 var result = config.CONTENT_MODIFIED.callback.no(config.CONTENT_MODIFIED.data);
8524 if (!result) {
8525 window.location.hash = href;
8526 config.resetContentModifyValue();
8527 }
8528 }
8529 });
8530 }
8531 return false;
8532 } else {
8533 return true;
8534 }
8535 };
8536
mj.qu19ac6692024-08-21 19:18:36 -07008537 //��ʱ�鿴SIM����״̬������ǰSIM��״̬��Ϊ����״̬��δ��ʾnosimcardҳ�棬����ʾnosimcardҳ��,�Ա��ⲻ�ر�webui�����²����豸�󣬲����ж�SIM��״̬������
zw.wangcfae4372024-08-12 16:41:12 +08008538 function checkSimCardStatus() {
8539 setInterval(function () {
8540 var data = service.getStatusInfo();
8541 var match = menu.findMenu();
8542 if (match.length == 0) {
8543 return false;
8544 }
8545 var requirePinHash = ["phonebook", "sms_list"];
8546 var isRequirePin = ($.inArray(match[0].path, requirePinHash) != -1);
8547 if (match[0].checkSIMStatus === true) {
8548 var simstatus = data.simStatus == "modem_sim_undetected"
8549 || data.simStatus == "modem_sim_destroy" || data.simStatus == "modem_waitpin"
8550 || data.simStatus == "modem_waitpuk";
8551 var netlockstatus = data.simStatus == "modem_imsi_waitnck";
8552 if (data.isLoggedIn && (
8553 ($('#div-nosimcard')[0] == undefined && simstatus)
8554 || ($('#div-network-lock')[0] == undefined && netlockstatus)
8555 || (($('#div-nosimcard')[0] != undefined || $('#div-network-lock')[0] != undefined) && data.simStatus == "modem_init_complete"))) {
8556 fixedLoadResources(match[0], data.simStatus, isRequirePin);
8557 }
8558 }
8559 }, 1000);
8560 }
8561
mj.qu19ac6692024-08-21 19:18:36 -07008562 //������¼ҳ�汳��
zw.wangcfae4372024-08-12 16:41:12 +08008563 function checkLoginPageBg() {
8564 var h = window.location.hash;
8565 if (h == '#entry' || _.indexOf(config.GUEST_HASH, h) != -1) {
8566 $("#manageContainer").attr("style", "margin-top:-36px;");
8567 } else {
8568 $("#manageContainer").attr("style", "margin-top:0px;");
8569 }
8570
8571 if (window.location.hash == '#entry') {
8572 $("#mainContainer").addClass('loginBackgroundBlue');
8573 } else {
8574 var mainContainer = $("#mainContainer");
8575 if (mainContainer.hasClass('loginBackgroundBlue')) {
8576 $("#container").css({
8577 margin: 0
8578 });
8579 mainContainer.removeClass('loginBackgroundBlue').height('auto');
8580 }
8581 }
8582 }
mj.qu19ac6692024-08-21 19:18:36 -07008583
zw.wangcfae4372024-08-12 16:41:12 +08008584 function fixedLoadResources(menuItem, simStatus, isRequirePin) {
8585 var item = {};
8586 $.extend(item, menuItem);
mj.qu19ac6692024-08-21 19:18:36 -07008587 //û��SIM��ʱ������homeҳ�治��������
8588 //���类��ʱ��homeҳ����ʾ����ҳ��
zw.wangcfae4372024-08-12 16:41:12 +08008589 if (simStatus == "modem_sim_undetected" || simStatus == "modem_sim_destroy") {
8590 if (!isRequirePin) {
8591 item.path = "sim_abnormal";
8592 }
8593 } else if (simStatus == "modem_waitpin" || simStatus == "modem_waitpuk") {
8594 item.path = "sim_abnormal";
8595 } else if (simStatus == "modem_imsi_waitnck") {
8596 item.path = "locknet";
8597 }
8598 //load tmpl and controller js
8599 loadResources(item);
8600 }
8601
mj.qu19ac6692024-08-21 19:18:36 -07008602 //���ݲ˵�����item���ض�Ӧ����Դ
zw.wangcfae4372024-08-12 16:41:12 +08008603 function loadResources(item) {
8604 var pId = item.path.replace(/\//g, '_');
8605 var $body = $('body').removeClass();
8606 if (pId != 'entry' && pId != 'main') {
8607 $body.addClass('beautiful_bg page_' + pId);
8608 } else {
8609 $body.addClass('page_' + pId);
8610 }
8611 clearTimer();
8612 hideLoading();
8613 var tmplPath = 'text!tmpl/' + item.path + '.html';
8614 //TODO: prevent first menu click cover the second menu content, need test with device
8615 require([tmplPath, item.path], function (tmpl, viewModel) {
8616 container.stop(true, true);
8617 container.hide();
8618 container.html(tmpl);
8619 viewModel.init();
8620 //support backward/forward
8621 menu.refreshMenu();
8622 $('#container').translate();
8623 menu.activeSubMenu();
8624
8625 $("form").attr("autocomplete", "off");
8626 container.fadeIn();
8627 });
8628 }
mj.qu19ac6692024-08-21 19:18:36 -07008629 //�ȶ�hash״̬, �����仯�������µ�hashƥ���˵�����,ƥ�䲻��ʱ��ת��homeҳ��, ƥ����ʱ��¼hashֵ����̬���ض�Ӧ����Դ�ļ�
zw.wangcfae4372024-08-12 16:41:12 +08008630 function hashCheck() {
8631 if (window.location.hash != currentHash) {
mj.qu19ac6692024-08-21 19:18:36 -07008632 //������½����������, ��½�û����ʷǵ�¼�û�ʱҳ�治��ת
zw.wangcfae4372024-08-12 16:41:12 +08008633 var info = service.getStatusInfo();
8634 if (window.location.hash == config.defaultRoute || _.indexOf(config.GUEST_HASH, window.location.hash) != -1) {
8635 if (info.isLoggedIn) {
8636 window.location.hash = currentHash == "" ? "#main" : currentHash;
8637 return;
8638 }
8639 }
8640
8641 var match = menu.findMenu();
8642
8643 if (match.length == 0) {
8644 window.location.hash = config.defaultRoute;
8645 } else {
mj.qu19ac6692024-08-21 19:18:36 -07008646 //��¼ʱ���鹤��ģʽ������ģʽ������������Ҫ����SIM��״̬�����¼���,����ģʽ�������治��Ҫ����SIM��״̬�����¼���
zw.wangcfae4372024-08-12 16:41:12 +08008647 if (config.RJ45_SUPPORT && window.location.hash == "#main") {
8648 if ((match[0].checkSIMStatus && checkCableMode(info.blc_wan_mode)) || (!match[0].checkSIMStatus && !checkCableMode(info.blc_wan_mode))) {
8649 window.location.reload();
8650 return;
8651 }
8652 }
mj.qu19ac6692024-08-21 19:18:36 -07008653 //TODO: �����˵�����Ӧ�����˵���һ����л�ʱ�����¼�������, ��TODO: click the same menu ʵ�ַ�ʽ����
zw.wangcfae4372024-08-12 16:41:12 +08008654 var oldMenu = menu.findMenu(currentHash);
8655 currentHash = match[0].hash;
8656 if (currentHash == "#entry") {
8657 $('#indexContainer').addClass('login-page-bg');
8658 menu.rebuild();
8659 } else {
8660 $('#indexContainer').removeClass('login-page-bg');
8661 }
8662
8663 if (oldMenu.length != 0 && match[0].path == oldMenu[0].path && match[0].level != oldMenu[0].level && match[0].level != '1' && oldMenu[0].level != '1') {
8664 return;
8665 }
8666
8667 checkLoginPageBg();
8668 var requirePinHash = ["phonebook", "sms_list"];
8669 var isRequirePin = ($.inArray(match[0].path, requirePinHash) != -1);
8670 if (match[0].checkSIMStatus === true || isRequirePin) {
8671 //simStatus is undefined when refreshing page
8672 if (info.simStatus == undefined) {
8673 showLoading('waiting');
8674 function checkSIM() {
8675 var data = service.getStatusInfo();
8676 if (data.simStatus == undefined || $.inArray(data.simStatus, config.TEMPORARY_MODEM_MAIN_STATE) != -1) {
8677 addTimeout(checkSIM, 500);
8678 } else {
8679 fixedLoadResources(match[0], data.simStatus, isRequirePin);
8680 hideLoading();
8681 }
8682 }
8683 checkSIM();
8684 } else {
8685 fixedLoadResources(match[0], info.simStatus, isRequirePin);
8686 }
8687 } else {
8688 loadResources(match[0]);
8689 }
8690 }
8691 }
8692 }
mj.qu19ac6692024-08-21 19:18:36 -07008693
8694 //Ĭ������ҳ��Ϊ#main, ��ʱ����hash״̬
zw.wangcfae4372024-08-12 16:41:12 +08008695 function init() {
8696 checkSimCardStatus();
8697 window.location.hash = window.location.hash || "#main";
8698 //if support onhashchange then use. If ie8 in ie7 mode, it doesn't trigger onhashchange.
8699 if (('onhashchange' in window) && ((typeof document.documentMode === 'undefined') || document.documentMode == 8)) {
8700 window.onhashchange = hashCheck;
8701 hashCheck();
8702 } else {
8703 setInterval(hashCheck, 200);
8704 }
8705
mj.qu19ac6692024-08-21 19:18:36 -07008706 //�����޸���ҳ������, �뿪ʱ������ʾ
zw.wangcfae4372024-08-12 16:41:12 +08008707 $("a[href^='#']").die('click').live('click', function () {
8708 var $this = $(this);
8709 config.CONTENT_MODIFIED.checkChangMethod();
8710 return checkFormContentModify($this.attr('href'));
8711 });
8712 }
mj.qu19ac6692024-08-21 19:18:36 -07008713
zw.wangcfae4372024-08-12 16:41:12 +08008714 return {
8715 init: init
8716 };
8717});
8718
mj.qu19ac6692024-08-21 19:18:36 -07008719// statusBar �
zw.wangcfae4372024-08-12 16:41:12 +08008720
8721define("statusBar", "knockout jquery underscore service set menu tooltip".split(" "),
8722
8723 function (ko, $, _, service, config, menu, tooltip) {
mj.qu19ac6692024-08-21 19:18:36 -07008724
zw.wangcfae4372024-08-12 16:41:12 +08008725 var sv__hasCheckedSMSCapacity = false;
8726 var sv__initSMSCompleted = false;
8727 var sv_newSMSMessageInDealing = false;
8728 var sv_fotaUpdateCancel = null;
8729 var sv_batteryCheckTimer = 0;
8730 var sv_dbMessageIds = [];
8731 var sv_fotaResultAlertPopuped = false;
8732 var sv_isFirstLoadNewMessage = true;
8733 var isLoggedIn = true;
8734 var sv_messagePopStack = {};
8735 var sv_newMessagePopTemplate = null;
8736 var sv_resetTrafficAlertPopuped = false;
8737 var sv_simMessageListTemplate = null;
8738 var sv_smsListTemplate = null;
8739 var sv_trafficAlertPopuped_100 = false;
8740 var sv_trafficAlertPopuped = false;
8741 var sv_timer = 0;
8742
mj.qu19ac6692024-08-21 19:18:36 -07008743 // ��ȡ״̬��Ϣ�������硢SIM��WIFI��
zw.wangcfae4372024-08-12 16:41:12 +08008744 var getCurrentStatusInfo = function () {
8745 return service.getStatusInfo();
8746 };
8747
8748 function statusViewModel() {
8749 var target = this;
8750 var info = getCurrentStatusInfo();
8751 var roamStatus = info.roamingStatus ? true : false;
8752 var $langLogoBar = $("#langLogoBar");
mj.qu19ac6692024-08-21 19:18:36 -07008753
8754
8755 // �������������¼�����
zw.wangcfae4372024-08-12 16:41:12 +08008756 function sf_connect() {
8757 showLoading("connecting");
8758 service.connect({}, function (data) {
8759 if (data.result) {
8760 refreshWifiConnectStatus(target, data.status);
8761 }
8762 successOverlay();
8763 }, function (data) {
8764 errorOverlay();
8765 });
8766 }
mj.qu19ac6692024-08-21 19:18:36 -07008767 // �Ͽ������¼�����
zw.wangcfae4372024-08-12 16:41:12 +08008768 function sf_disconnect() {
8769 showLoading("disconnecting");
8770 service.disconnect({}, function (data) {
8771 if (data.result) {
8772 refreshWifiConnectStatus(target, data.status);
8773 }
8774 successOverlay();
8775 }, function (data) {
8776 errorOverlay();
8777 });
8778 }
mj.qu19ac6692024-08-21 19:18:36 -07008779
zw.wangcfae4372024-08-12 16:41:12 +08008780 if(info.isLoggedIn){
8781 if(!$langLogoBar.hasClass("langborderBg")){
8782 $langLogoBar.addClass("langborderBg");
8783 }
8784 $("#statusBar:hidden").show();
8785 } else {
8786 if($langLogoBar.hasClass("langborderBg")){
8787 $langLogoBar.removeClass("langborderBg");
8788 }
8789 $("#statusBar:visible").hide();
8790 }
mj.qu19ac6692024-08-21 19:18:36 -07008791
8792
zw.wangcfae4372024-08-12 16:41:12 +08008793 //target.attachedDevices = ko.observable(info.attachedDevices);
8794 target.batteryLevel = ko.observable(info.batteryLevel + '%');
8795 target.batteryPers = ko.observable(sf_getBatteryLevelImage(info.batteryPers, info.batteryStatus));
8796 target.batteryStatus = ko.observable(info.batteryStatus);
8797 target.connectionCssClass = ko.observable("");
8798 target.connectStatus = ko.observable(info.connectStatus);
8799 target.connectStatusText = ko.observable();
8800 target.connectStatusTrans = ko.observable();
8801 target.hasWifi = ko.observable(config.HAS_WIFI);
8802 target.hasBattery = ko.observable(config.HAS_BATTERY);
8803 target.isLoggedIn = ko.observable(info.isLoggedIn);
8804 target.isShowConnectionIcon = ko.observable(false);
8805 target.isShowFotaNewversionIcon = ko.observable(info.new_version_state && info.fota_package_already_download != "yes" && !config.isShowFotaIcon);
8806 target.isShowRj45ConnectionIcon = ko.observable(false);
8807 target.networkOperator = ko.observable(sf_getNetWorkProvider(info.spn_b1_flag,info.spn_name_data,info.spn_b2_flag,info.networkOperator,roamStatus));
8808 target.networkType = ko.observable(getNetworkType(info.networkType));
8809 target.pinStatus = ko.observable(info.pinStatus);
8810 target.pinStatusText = ko.observable();
8811 target.rj45ConnectionCssClass = ko.observable("");
8812 target.roamingStatus = ko.observable(info.roamingStatus ? "R" : "");
8813 target.showAttachedDevices = ko.observable(info.wifiStatus);
8814 target.showSmsDeleteConfirm = ko.observable(false);
8815 target.smsUnreadCount = ko.observable(0);
8816 target.simStatus = ko.observable(sf_convertSimStatusToImage(info.simStatus));
8817 target.signalCssClass = ko.observable(sf_getSignalCssClass(info.signalImg, info.networkType, info.simStatus));
8818 target.updateType = ko.observable(service.getUpdateType().update_type);
8819 target.wifiStatusCssClass = ko.observable(sf_getWifiStatusCssClass(info.wifiStatus, info.wirelessDeviceNum));
8820 target.wifiStatusImg = ko.observable(sf_getWifiStatusImage(info.wifiStatus, info.wirelessDeviceNum));
mj.qu19ac6692024-08-21 19:18:36 -07008821
zw.wangcfae4372024-08-12 16:41:12 +08008822 sf_getConnectionCssClass(target, info.connectStatus, info.data_counter, info.connectWifiSSID, info.connectWifiStatus, info.rj45ConnectStatus);
mj.qu19ac6692024-08-21 19:18:36 -07008823
zw.wangcfae4372024-08-12 16:41:12 +08008824 target.connect = sf_connect;
8825 target.disconnect = sf_disconnect;
8826 }
mj.qu19ac6692024-08-21 19:18:36 -07008827
zw.wangcfae4372024-08-12 16:41:12 +08008828 function sf_gotoSmsList(){
8829 var s_href = '#msg_main';
8830 if(window.location.hash == '#msg_main'){
8831 s_href = '#msg_list';
8832 }
8833 config.CONTENT_MODIFIED.checkChangMethod();
8834 if(checkFormContentModify(s_href)){
8835 window.location.hash = s_href;
8836 }
8837 }
mj.qu19ac6692024-08-21 19:18:36 -07008838
zw.wangcfae4372024-08-12 16:41:12 +08008839 gotoSmsList = sf_gotoSmsList;
8840
8841 function sf_getNetWorkProvider(i_spnB1Flag, i_spnNameData, i_spnB2Flag, i_networkProvider, i_roamStatus) {
8842 if (i_spnNameData == "") {
8843 return i_networkProvider;
8844 } else {
8845 i_spnNameData = decodeMessage(i_spnNameData);
8846 if (i_spnB1Flag == "0" && i_spnB2Flag == "0") {
mj.qu19ac6692024-08-21 19:18:36 -07008847 if (i_roamStatus) {//����
zw.wangcfae4372024-08-12 16:41:12 +08008848 return i_spnNameData == i_networkProvider ? i_networkProvider : (i_spnNameData + ' ' + i_networkProvider);
mj.qu19ac6692024-08-21 19:18:36 -07008849 } else {//������
zw.wangcfae4372024-08-12 16:41:12 +08008850 return i_spnNameData;
8851 }
8852 }else if (i_spnB1Flag == "1" && i_spnB2Flag == "1") {
mj.qu19ac6692024-08-21 19:18:36 -07008853 if (i_roamStatus) {//����
zw.wangcfae4372024-08-12 16:41:12 +08008854 return i_networkProvider;
mj.qu19ac6692024-08-21 19:18:36 -07008855 } else {//������
zw.wangcfae4372024-08-12 16:41:12 +08008856 return i_spnNameData == i_networkProvider ? i_networkProvider : (i_spnNameData + ' ' + i_networkProvider);
8857 }
8858 } else if (i_spnB1Flag == "1") {
8859 return i_spnNameData == i_networkProvider ? i_networkProvider : (i_spnNameData + ' ' + i_networkProvider);
8860 } else if (i_spnB2Flag == "1") {
mj.qu19ac6692024-08-21 19:18:36 -07008861 if (i_roamStatus) {//����
zw.wangcfae4372024-08-12 16:41:12 +08008862 return i_networkProvider;
mj.qu19ac6692024-08-21 19:18:36 -07008863 } else {//������
zw.wangcfae4372024-08-12 16:41:12 +08008864 return i_spnNameData;
8865 }
8866 }
8867 return "";
8868 }
8869 }
mj.qu19ac6692024-08-21 19:18:36 -07008870
8871 // �����¶���Ϣ��ʾ����������������
zw.wangcfae4372024-08-12 16:41:12 +08008872 function sf_addNewMessage(i_message, i_isUpdate, i_type){
8873 config.smsMaxId = i_message.id;
8874 var now = $.now();
8875 sv_messagePopStack["m" + now] = now;
8876 var name = i_message.number;
8877 if(sv_isFirstLoadNewMessage && config.phonebook && config.phonebook.length == 0){
8878 sv_isFirstLoadNewMessage = false;
8879 if(config.HAS_PHONEBOOK){
8880 sf_getPhoneBooks();
8881 }else{
8882 config.phonebook = [];
8883 }
8884 }
8885 for(i in config.phonebook){
8886 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
8887 name = config.phonebook[i].pbm_name;
8888 break;
8889 }
8890 }
8891 var s_newMsg = {
8892 mark : "m" + now,
8893 name: name,
8894 title: $.i18n.prop("sms"),
8895 titleTrans: "sms",
8896 tag: i_message.tag,
8897 content : i_message.content,
8898 datetime : i_message.time
8899 };
8900 if(sv_newMessagePopTemplate == null){
8901 sv_newMessagePopTemplate = $.template("newMessagePopTmpl", $("#newMessagePopTmpl"));
8902 }
8903 $(".bubbleItem:not(.report)", "#buttom-bubble").remove();
8904 $.tmpl("newMessagePopTmpl", s_newMsg).appendTo("#buttom-bubble");
8905 if((window.location.hash == "#msg_main" || window.location.hash == "#msg_list") && i_type == "1"){
8906 //sf_dealChosenNumber(s_newMsg.name, i_message.number);
8907 var s_inChating = config.currentChatObject && config.currentChatObject == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH);
8908 var s_itemId = getLastNumber(i_message.number, config.SMS_MATCH_LENGTH);
8909 var item = $("#smslist-item-" + s_itemId);
8910 if(item && item.length > 0){
mj.qu19ac6692024-08-21 19:18:36 -07008911 // �Ѵ������ݣ��������ݵ���˳��
zw.wangcfae4372024-08-12 16:41:12 +08008912 for(var i = 0; config.listMsgs && i < config.listMsgs.length; i++){
8913 if(getLastNumber(config.listMsgs[i].number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
8914 config.listMsgs[i].id = i_message.id;
8915 config.listMsgs[i].latestId = i_message.id;
8916 config.listMsgs[i].latestSms = i_message.content;
8917 config.listMsgs[i].latestTime = i_message.time;
8918 if(!i_isUpdate){
8919 config.listMsgs[i].newCount++;
8920 config.listMsgs[i].totalCount++;
8921 }
8922 break;
8923 }
8924 }
8925 item.find(".smslist-item-checkbox p.checkbox").attr("id", i_message.id);
8926 item.find(".smslist-item-checkbox input:checkbox").val(i_message.id).attr("id", "checkbox" + i_message.id);
8927 if(!i_isUpdate){
8928 var s_itemCount = item.find(".smslist-item-total-count").text();
8929 s_itemCount = Number(s_itemCount.substring(1, s_itemCount.length - 1));
8930 item.find(".smslist-item-total-count").text("(" + (s_itemCount + 1) + ")");
8931 if(!config.currentChatObject || config.currentChatObject != getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
8932 var s_newNum = item.find(".smslist-item-new-count").removeClass("hide");
8933 if(s_newNum && s_newNum.text().length > 0){
8934 s_newNum.text(Number(s_newNum.text()) + 1);
8935 }else{
8936 s_newNum.text(1);
8937 }
8938 }
8939 }
8940 if(item.find(".smslist-item-draft-flag").length > 0){
8941 if (config.currentChatObject && config.currentChatObject == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)) {
8942 item.find(" td:nth-child(2)").removeClass("font-weight-bold");
8943 } else {
8944 item.find(" td:nth-child(2)").addClass("font-weight-bold");
8945 }
8946 }else{
8947 var msgContent = item.find(".smslist-item-msg").text(i_message.content);
8948 msgContent.closest('td').prop('title', i_message.content);
8949 item.find("span.clock-time").text(i_message.time);
8950 if (config.currentChatObject && config.currentChatObject == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)) {
8951 msgContent.closest('tr').removeClass("font-weight-bold");
8952 } else {
8953 msgContent.closest('tr').addClass("font-weight-bold");
8954 }
8955 }
8956 item.find(".smslist-item-repeat span").die().click(function() {
8957 forwardClickHandler(i_message.id);
8958 });
mj.qu19ac6692024-08-21 19:18:36 -07008959
zw.wangcfae4372024-08-12 16:41:12 +08008960 var s_tmpItem = item;
8961 item.hide().remove();
8962 $("#smslist-table").prepend(s_tmpItem.show());
8963 } else {
mj.qu19ac6692024-08-21 19:18:36 -07008964 // ���������б��в�������Ӧ����ϵ�˶�Ϣ��Ӧ�ڶ����б�����������
zw.wangcfae4372024-08-12 16:41:12 +08008965 var s_theName = "";
8966 if(config.phonebook && config.phonebook.length > 0) {
8967 for(i in config.phonebook){
8968 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
8969 s_theName = config.phonebook[i].pbm_name;
8970 break;
8971 }
8972 }
8973 }
8974 var s_theNewMessage = {
8975 id : i_message.id,
8976 name : s_theName,
8977 number : i_message.number,
8978 latestId :i_message.id,
8979 totalCount : 1,
8980 newCount : s_inChating ? 0 : 1,
8981 latestSms : i_message.content,
8982 latestTime : i_message.time,
8983 checked : false,
8984 hasDraft : false,
8985 itemId : getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)
8986 };
8987 if(sv_smsListTemplate == null){
8988 sv_smsListTemplate = $.template("smsTableTmpl", $("#smsTableTmpl"));
8989 }
8990 $.tmpl("smsTableTmpl", {data: [s_theNewMessage]}).prependTo("#smslist-table");
8991 }
8992 if(config.HAS_PHONEBOOK){
8993 $(".sms-add-contact-icon").removeClass("hide");
8994 }else{
8995 $(".sms-add-contact-icon").addClass("hide");
8996 }
8997 if(s_inChating){
8998 var talkItem = $("#talk-item-" + i_message.id, "#chatlist");
mj.qu19ac6692024-08-21 19:18:36 -07008999 if (talkItem && talkItem.length > 0) {// ���¼�����������
zw.wangcfae4372024-08-12 16:41:12 +08009000 $(".J_content pre", talkItem).html(dealContent(i_message.content));
9001 $(".time .smslist-item-time", talkItem).text(i_message.time);
9002 $(".smslist-item-repeat", talkItem).die().click(
9003 function() {
9004 forwardClickHandler(i_message.id);
9005 });
9006 $(".smslist-item-delete", talkItem).die().click(
9007 function() {
9008 deleteSingleItemClickHandler(i_message.id);
9009 });
mj.qu19ac6692024-08-21 19:18:36 -07009010 } else {// �����µĻظ�����
zw.wangcfae4372024-08-12 16:41:12 +08009011 $("#smsOtherTmpl").tmpl(i_message).appendTo("#chatlist");
9012 $(".clear-container", "#chatpanel").animate({
9013 scrollTop : $("#chatlist").height()
9014 });
9015 }
9016 if (!config.SMS_SET_READ_WHEN_COMPLETE) {
9017 service.setSmsRead({ids: [i_message.id]}, $.noop);
9018 } else if (config.SMS_SET_READ_WHEN_COMPLETE && i_message.receivedAll) {
9019 service.setSmsRead({ids: [i_message.id]}, $.noop);
9020 }
9021 }
9022 enableCheckbox($("#smslist-checkAll"));
9023 }
9024 if(window.location.hash == "#msg_sim" && i_type == "0"){
mj.qu19ac6692024-08-21 19:18:36 -07009025 // ���������б��в�������Ӧ����ϵ�˶�Ϣ��Ӧ�ڶ����б�����������
zw.wangcfae4372024-08-12 16:41:12 +08009026 var s_theName = "";
9027 if(config.phonebook && config.phonebook.length > 0) {
9028 for(i in config.phonebook){
9029 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
9030 s_theName = config.phonebook[i].pbm_name;
9031 break;
9032 }
9033 }
9034 }
9035 var s_theNewMessage = {
9036 id : i_message.id,
9037 name : s_theName,
9038 number : i_message.number,
9039 content : i_message.content,
9040 time : i_message.time,
9041 tag: i_message.tag,
9042 checked : false,
9043 itemId : getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)
9044 };
9045 if(i_isUpdate){
9046 var s_item = $(".simMsgList-item-class-" + s_theNewMessage.id);
9047 s_item.hide().remove();
9048 }
9049 if(sv_simMessageListTemplate == null){
9050 sv_simMessageListTemplate = $.template("ssimMessageListTemplate", $("#simMessageListTemplate"));
9051 }
9052 $.tmpl("simMessageListTemplate", {data: [s_theNewMessage]}).prependTo("#simMsgList_container");
9053 }
9054 }
mj.qu19ac6692024-08-21 19:18:36 -07009055
zw.wangcfae4372024-08-12 16:41:12 +08009056 function sf_checkBatteryStatusForFota(){
9057 var s_state = service.getCurrentUpgradeState();
9058 if(s_state.current_upgrade_state == 'low_battery'){
9059 showInfo('ota_low_battery');
9060 clearInterval(sv_batteryCheckTimer);
9061 }
9062 }
mj.qu19ac6692024-08-21 19:18:36 -07009063
9064 // ��SIM��״̬ת��Ϊ��Ӧ����������
zw.wangcfae4372024-08-12 16:41:12 +08009065 function sf_convertSimStatusToImage(i_status) {
9066 var s_image;
9067 switch (i_status) {
9068 case "modem_destroy":
9069 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_destroy");
9070 break;
9071 case "modem_imsi_waitnck":
9072 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_waitnck");
9073 break;
9074 case "modem_init_complete":
9075 s_image = "./pic/simcard_detected.png";//$.i18n.prop("sim_status_ready");
9076 break;
9077 case "modem_sim_destroy":
9078 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_destroy");
9079 break;
9080 case "modem_sim_undetected":
9081 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_undetected");
9082 break;
9083 case "modem_undetected":
9084 s_image = "./pic/simcard_undetected.png";
9085 break;
9086 case "modem_waitpin":
9087 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_waitpin");
9088 break;
9089 case "modem_waitpuk":
9090 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_waitpuk");
9091 break;
9092
9093 default:
9094 s_image = "./pic/simcard_detected.png";//$.i18n.prop("sim_status_ready");
9095 break;
9096 }
9097 return s_image;
9098 }
mj.qu19ac6692024-08-21 19:18:36 -07009099
zw.wangcfae4372024-08-12 16:41:12 +08009100 function sf_dealChosenNumber(i_choosenName, i_choosenNum) {
9101 setTimeout(function () {
9102 var s_choosen = $("#chosenUserSelect");
9103 var s_options = $("option", s_choosen);
9104 for (var index = 0; index < s_options.length; index++) {
9105 if (getLastNumber(i_choosenNum, config.SMS_MATCH_LENGTH) == s_options[index].value) {
mj.qu19ac6692024-08-21 19:18:36 -07009106
zw.wangcfae4372024-08-12 16:41:12 +08009107 s_options[index].text = i_choosenName + '/' + i_choosenNum;
9108 s_options[index].value = i_choosenNum;
mj.qu19ac6692024-08-21 19:18:36 -07009109
zw.wangcfae4372024-08-12 16:41:12 +08009110 break;
9111 }
9112 }
9113 s_choosen.trigger("liszt:updated");
9114 }, 0);
9115 }
mj.qu19ac6692024-08-21 19:18:36 -07009116
9117 // ˫�첽��ȡ�豸����sim�����ö���Ϣ���������ϲ�
zw.wangcfae4372024-08-12 16:41:12 +08009118 function sf_dealPhoneBooksResult(i_books){
9119 if($.isArray(i_books.pbm_data) && i_books.pbm_data.length > 0){
9120 config.phonebook = i_books.pbm_data;
9121 }
9122 }
mj.qu19ac6692024-08-21 19:18:36 -07009123
9124 // �������µ�5������Ϣ����δ���ӵ������б��еĵ�����ʾ
zw.wangcfae4372024-08-12 16:41:12 +08009125 function sf_filterNewMessage(i_messages, i_type){
9126 if(!config.dbMsgs){
9127 config.dbMsgs = [];
9128 }
9129 if(sv_dbMessageIds.length == 0){
9130 $.each(config.dbMsgs, function(index_1, i_element){
9131 sv_dbMessageIds.push(i_element.id);
9132 });
9133 }
9134 $.each(i_messages, function(index_2, i_element){
mj.qu19ac6692024-08-21 19:18:36 -07009135 if($.inArray(i_element.id, sv_dbMessageIds) == -1){//�����¶���
zw.wangcfae4372024-08-12 16:41:12 +08009136 sv_dbMessageIds.push(i_element.id);
9137 config.dbMsgs.push(i_element);
9138 if(i_element.tag == '1'){
9139 sf_addNewMessage(i_element, false, i_type);
9140 }
9141 }else{
mj.qu19ac6692024-08-21 19:18:36 -07009142 for(var index = 0; index < config.dbMsgs.length; index++){//���¼�������
zw.wangcfae4372024-08-12 16:41:12 +08009143 if(config.dbMsgs[index].id == i_element.id && config.dbMsgs[index].content != i_element.content && i_element.tag == '1'){
9144 config.dbMsgs[index].content = i_element.content;
9145 sf_addNewMessage(i_element, true, i_type);
9146 break;
9147 }
9148 }
9149 }
9150 });
9151 }
mj.qu19ac6692024-08-21 19:18:36 -07009152
9153 // ������ת��Ϊ��ӦͼƬ
zw.wangcfae4372024-08-12 16:41:12 +08009154 function sf_getBatteryLevelImage(pers, i_status) {
9155 var s_Image = null;
9156 if ("0" == i_status) {
9157 if ("1" == pers) {
9158 s_Image = "pic/power_one.png";
9159 } else if ("2" == pers) {
9160 s_Image = "pic/power_two.png";
9161 } else if ("3" == pers) {
9162 s_Image = "pic/power_three.png";
9163 } else if ("4" == pers) {
9164 s_Image = "pic/power_full.png";
9165 } else { //"5" == pers || "0" == pers
9166 s_Image = "pic/power_out.png";
9167 }
9168 } else {
9169 s_Image = "pic/power_charging.gif";
9170 }
9171 return s_Image;
9172 }
9173
mj.qu19ac6692024-08-21 19:18:36 -07009174 // ��ȡ����״̬��CSS��ʽ
zw.wangcfae4372024-08-12 16:41:12 +08009175 function sf_getConnectionCssClass(i_fwVm, i_status, i_data_counter, i_wifiSSID, i_wifiStatus, i_rj45Status) {
9176
9177 var s_rj45ConnectionStatus = "icon_connection ";
9178 var s_connectionStatus = "icon_connection ";
9179
9180 if(i_rj45Status == "connect"){
9181 s_rj45ConnectionStatus += "connecting";
9182 }else if(i_rj45Status == "working"){
9183 s_rj45ConnectionStatus += "rj45_connected";
9184 }else{
9185 s_rj45ConnectionStatus += "disconnect";
9186 }
9187
9188 if (i_status == "ppp_connecting" || i_status == "wifi_connecting") {
9189 s_connectionStatus += "connecting";
mj.qu19ac6692024-08-21 19:18:36 -07009190 } else if(i_status == "ppp_connected") {//CPE ppp_statusΪnone ready��ֵ
zw.wangcfae4372024-08-12 16:41:12 +08009191 if (i_data_counter.uploadRate != '0' && i_data_counter.downloadRate != '0') {
9192 s_connectionStatus += "connectionBoth";
9193 } else if (i_data_counter.uploadRate != '0' && i_data_counter.downloadRate == '0') {
9194 s_connectionStatus += "connectionUp";
9195 } else if (i_data_counter.uploadRate == '0' && i_data_counter.downloadRate != '0') {
9196 s_connectionStatus += "connectionDown";
9197 } else {
9198 s_connectionStatus += "connectionNone";
9199 }
9200 } else if (i_status == "ppp_disconnected") {
9201 if (i_wifiSSID && i_wifiStatus == "connect") {
9202 service.getHotspotList({}, function (data) {
9203 var s_cssName = "icon_connection ";
9204 var s_css = "connecting ";
9205 for (var i = 0, len = data.hotspotList.length; i < len; i++) {
9206 if (data.hotspotList[i].connectStatus == "1") {
9207 s_css = "wifi_connected";
9208 break;
9209 }
9210 }
9211 s_cssName += s_css;
9212 i_fwVm.connectionCssClass(s_cssName);
9213 });
9214 i_fwVm.rj45ConnectionCssClass(s_rj45ConnectionStatus);
9215 return;
9216 } else if (i_wifiSSID && (i_wifiStatus == "connecting" || i_wifiStatus =="dhcping")) {
9217 s_connectionStatus += "connecting";
9218 } else {
9219 s_connectionStatus += "disconnect";
9220 }
9221 } else {
9222 s_connectionStatus += "disconnect";
9223 }
9224
9225 i_fwVm.connectionCssClass(s_connectionStatus);
9226 i_fwVm.rj45ConnectionCssClass(s_rj45ConnectionStatus);
9227 }
mj.qu19ac6692024-08-21 19:18:36 -07009228
9229 // ��ȡ�绰����Ϣ
zw.wangcfae4372024-08-12 16:41:12 +08009230 function sf_getPhoneBooks() {
9231 var s_books = service.getPhoneBooks({
9232 page : 0,
9233 data_per_page : 2000,
9234 orderBy : "id",
9235 isAsc : false
9236 });
9237 sf_dealPhoneBooksResult(s_books);
9238 }
9239
mj.qu19ac6692024-08-21 19:18:36 -07009240 // ��ȡ�ź�����CSS��ʽ
zw.wangcfae4372024-08-12 16:41:12 +08009241 function sf_getSignalCssClass(siganl, networkType, simStatus) {
9242 networkType = networkType.toLowerCase();
9243 simStatus = simStatus ? simStatus.toLowerCase() : '';
9244 if(networkType == '' || networkType == 'limited_service' || networkType == 'no_service' || networkType == 'limited service' || networkType == 'no service'
9245 || simStatus != 'modem_init_complete'){
9246 siganl = '_none';
9247 }
9248 return "signal signal" + siganl;
9249 }
mj.qu19ac6692024-08-21 19:18:36 -07009250
zw.wangcfae4372024-08-12 16:41:12 +08009251 function sf_getWifiStatusCssClass(i_status, i_deviceSize) {
9252 if (i_status) {
9253 if (i_deviceSize == 0) {
9254 return "wifi_status0";
9255 } else {
9256 return "wifi_status" + i_deviceSize;
9257 }
9258 } else {
9259 return "wifi_status_off";
9260 }
9261 }
mj.qu19ac6692024-08-21 19:18:36 -07009262
9263 // ����wifi״̬��ȡwifi��ͼƬ��Դ
zw.wangcfae4372024-08-12 16:41:12 +08009264 function sf_getWifiStatusImage(i_status, i_deviceSize) {
9265 if (i_status) {
9266 if (i_deviceSize == 0) {
9267 return "./pic/wlan0.png";
9268 } else {
9269 return "./pic/wlan" + i_deviceSize + ".png";
9270 }
9271 } else {
9272 return "./pic/wlan_off.png";
9273 }
9274 }
9275
mj.qu19ac6692024-08-21 19:18:36 -07009276 // ��ȡ��������������С���������ؽ���
zw.wangcfae4372024-08-12 16:41:12 +08009277 function sf_refreshFotaDownloadProgress(){
9278 service.getPackSizeInfo({}, function (data) {
9279 var percents;
9280 if (parseInt(data.fota_pkg_total_size) == 0) {
9281 percents = 0;
9282 } else {
9283 percents = parseInt(parseInt(data.fota_dl_pkg_size) * 100 / parseInt(data.fota_pkg_total_size));
9284 }
9285 if (percents > 100) {
9286 percents = 100;
9287 }
9288 if (percents >= 0) {
9289 if (percents > 95) {
9290 showProgressBar("ota_update", "<br/>" + $.i18n.prop("ota_update_warning"));
9291 }
9292 setProgressBar(percents);
9293 }
9294 });
9295 }
mj.qu19ac6692024-08-21 19:18:36 -07009296
9297 // �������ŷ��ͱ���
zw.wangcfae4372024-08-12 16:41:12 +08009298 function sf_responseSmsReport(){
9299 if(sv_isFirstLoadNewMessage && config.phonebook && config.phonebook.length == 0){
mj.qu19ac6692024-08-21 19:18:36 -07009300
zw.wangcfae4372024-08-12 16:41:12 +08009301 sv_isFirstLoadNewMessage = false;
mj.qu19ac6692024-08-21 19:18:36 -07009302
zw.wangcfae4372024-08-12 16:41:12 +08009303 if(config.HAS_PHONEBOOK){
9304 sf_getPhoneBooks();
9305 }else{
9306 config.phonebook = [];
9307 }
9308 }
9309 service.getSMSDeliveryReport({
9310 page: 0,
9311 smsCount: 10
9312 }, function(data){
9313 var s_messages = data.messages;
9314 var s_nums = [];
9315 $.each(s_messages, function(i, i_message){
9316 if($.inArray(i_message.number, s_nums) == -1){
9317 s_nums.push(i_message.number);
9318 window.setTimeout(function(){
9319 var s_now = $.now();
9320 sv_messagePopStack["m" + s_now] = s_now;
9321 i_message.name = i_message.number;
9322 for(i in config.phonebook){
9323 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
9324 i_message.name = config.phonebook[i].pbm_name;
9325 break;
9326 }
9327 }
9328 var s_msgContent = $.i18n.prop("sms_delivery_report_" + i_message.content);
mj.qu19ac6692024-08-21 19:18:36 -07009329
zw.wangcfae4372024-08-12 16:41:12 +08009330 var s_newMsg = {
9331 mark : "m" + s_now,
9332 name: i_message.name,
9333 title: $.i18n.prop("sms_report"),
9334 titleTrans: "sms_report",
9335 content : s_msgContent,
9336 datetime : i_message.time,
9337 report : 'report'
9338 };
mj.qu19ac6692024-08-21 19:18:36 -07009339
zw.wangcfae4372024-08-12 16:41:12 +08009340 if(sv_newMessagePopTemplate == null){
9341 sv_newMessagePopTemplate = $.template("newMessagePopTmpl", $("#newMessagePopTmpl"));
9342 }
mj.qu19ac6692024-08-21 19:18:36 -07009343
zw.wangcfae4372024-08-12 16:41:12 +08009344 $(".report", "#buttom-bubble").remove();
9345 $.tmpl("newMessagePopTmpl", s_newMsg).appendTo("#buttom-bubble");
9346 }, 100);
9347 }
9348 });
9349 }, function(){
9350 //No Deal
9351 });
9352 }
mj.qu19ac6692024-08-21 19:18:36 -07009353
zw.wangcfae4372024-08-12 16:41:12 +08009354 function sf_simStatusInvalid(simStatus){
9355 return simStatus == 'modem_sim_undetected' || simStatus == 'modem_undetected' || simStatus == 'modem_sim_destroy'
9356 || simStatus == 'modem_waitpin' || simStatus == 'modem_waitpuk' || simStatus == 'modem_imsi_waitnck';
9357 }
mj.qu19ac6692024-08-21 19:18:36 -07009358
9359 // ��ʾFOTA������ǰ״̬
zw.wangcfae4372024-08-12 16:41:12 +08009360 function sf_showFotaCurrentStatus() {
9361 sv_fotaUpdateCancel = true;
9362 var r = service.getNewVersionState();
mj.qu19ac6692024-08-21 19:18:36 -07009363
zw.wangcfae4372024-08-12 16:41:12 +08009364 function showProgress() {
9365 var upgradingState = ["downloading"];
9366 var info = service.getCurrentUpgradeState();
9367 if(info.current_upgrade_state.toLowerCase() == "idle") {
9368 addTimeout(showProgress, 1000);
9369 } else if(($.inArray(info.current_upgrade_state, upgradingState) != -1)&&(r.fota_new_version_state != "already_has_pkg")) {
9370 hideLoading();
9371 sf_showFotaUpgradeStatus();
9372 }
9373 }
9374 if (!($("#progress").is(":visible"))) {
9375 showProgress();
9376 }
9377 var times = 0;
9378 var getOTAUpgradeState = function () {
9379 var data = null;
9380 if (times <= 3) {
9381 times = times + 1;
9382 data = service.getCurrentUpgradeState();
9383 } else {
9384 data = getCurrentStatusInfo();
9385 }
9386 var state = data.current_upgrade_state;
9387 if(sv_fotaUpdateCancel && isLoggedIn == true){
9388
9389 if(r.fota_new_version_state == "already_has_pkg"){
9390 if(state == 'low_battery'){
9391 hideProgressBar();
9392 sv_fotaUpdateCancel = false;
9393 service.removeTimerThings('fota_current_upgrade_state',function(){});
9394 showInfo('ota_pkg_low_battery');
9395 window.clearTimeout(sv_timer);
9396 return;
9397 }else if(state == 'prepare_install'){
9398 hideProgressBar();
9399 sv_fotaUpdateCancel = false;
9400 service.removeTimerThings('fota_current_upgrade_state',function(){});
9401 showInfo('ota_pkg_download_success');
9402 window.clearTimeout(sv_timer);
9403 sv_batteryCheckTimer = setInterval(function () {
9404 sf_checkBatteryStatusForFota();
9405 }, 1000);
9406 return;
9407 }
9408 }else if(state == 'downloading') {
9409 sf_refreshFotaDownloadProgress();
9410 }else if(state == 'download_failed') {
9411 hideProgressBar();
9412 sv_fotaUpdateCancel = false;
9413 showAlert('ota_download_failed');
9414 window.clearTimeout(sv_timer);
9415 return;
9416 }else if(state == 'low_battery'){
9417 hideProgressBar();
9418 sv_fotaUpdateCancel = false;
9419 service.removeTimerThings('fota_current_upgrade_state',function(){});
9420 showInfo('ota_low_battery');
9421 window.clearTimeout(sv_timer);
9422 return;
9423 }else if(state == 'prepare_install'){
9424 hideProgressBar();
9425 sv_fotaUpdateCancel = false;
9426 service.removeTimerThings('fota_current_upgrade_state',function(){});
9427 showInfo('ota_download_success');
9428 window.clearTimeout(sv_timer);
9429 sv_batteryCheckTimer = setInterval(function () {
9430 sf_checkBatteryStatusForFota();
9431 }, 1000);
9432 return;
9433 }else{
9434 sv_fotaUpdateCancel = false;
9435 hideProgressBar();
9436 window.clearTimeout(sv_timer);
9437 return;
9438 }
9439 sv_timer = window.setTimeout(getOTAUpgradeState , 1000);
9440 }
9441 };
9442
9443 if(sv_fotaUpdateCancel && isLoggedIn == true){
9444 sv_timer = window.setTimeout(getOTAUpgradeState , 100);
9445 }else{
9446 window.clearTimeout(sv_timer);
9447 }
9448 }
mj.qu19ac6692024-08-21 19:18:36 -07009449
9450 // ��ʾFota��������
zw.wangcfae4372024-08-12 16:41:12 +08009451 function sf_showFotaUpdateResult(i_otaResult) {
9452 if ((!($("#loading").is(":visible"))) && (!($("#confirm").is(":visible")))) {
9453 var s_message = i_otaResult ? "ota_update_success" : "ota_update_failed";
9454 sv_fotaResultAlertPopuped = true;
9455 showAlert(s_message, function () {
9456 sv_fotaResultAlertPopuped = false;
9457 if (config.UPGRADE_TYPE == "OTA") {
9458 service.clearUpdateResult({}, $.noop());
9459 }
9460 });
9461 } else {
9462 window.setTimeout(function () {
9463 sf_showFotaUpdateResult(i_otaResult)
9464 }, 1000);
9465 }
9466 }
mj.qu19ac6692024-08-21 19:18:36 -07009467
9468 // ��ʾ��ǰ����״̬
zw.wangcfae4372024-08-12 16:41:12 +08009469 function sf_showFotaUpgradeStatus() {
9470 var s_data = service.getMandatory();
9471 var s_isMandatory = s_data.is_mandatory;
9472 var s_sizeInfo =service.getPackSizeInfo();
9473 var s_percents;
mj.qu19ac6692024-08-21 19:18:36 -07009474
zw.wangcfae4372024-08-12 16:41:12 +08009475 if (parseInt(s_sizeInfo.fota_pkg_total_size) == 0) {
9476 s_percents = 0;
9477 } else {
9478 s_percents = parseInt(parseInt(s_sizeInfo.fota_dl_pkg_size) * 100 / parseInt(s_sizeInfo.fota_pkg_total_size));
9479 }
9480 if (s_percents > 100) {
9481 s_percents = 100;
9482 }
mj.qu19ac6692024-08-21 19:18:36 -07009483
zw.wangcfae4372024-08-12 16:41:12 +08009484 if (s_isMandatory) {
9485 showProgressBar("ota_update", "<br/>" + $.i18n.prop("ota_update_warning"));
9486 } else {
9487 var cancelHtml = "";
9488 if (config.UPGRADE_TYPE == "OTA") {
9489 cancelHtml = "<br/><br/><button id='btnStopUpgrade' onclick='stopOTAUpgrade();' class='btn-1 btn-primary'>" + $.i18n.prop("cancel") + "</button>";
9490 }
9491 showProgressBar("ota_update", "<br/>" + $.i18n.prop("ota_update_warning") + cancelHtml);
9492 }
mj.qu19ac6692024-08-21 19:18:36 -07009493
zw.wangcfae4372024-08-12 16:41:12 +08009494 //setProgressBar(0);
9495 if (s_percents >= 0) {
9496 setProgressBar(s_percents);
9497 }
9498 }
mj.qu19ac6692024-08-21 19:18:36 -07009499
zw.wangcfae4372024-08-12 16:41:12 +08009500
9501
9502
9503
9504 function sf_startFotaUpgrade(){
9505 service.setUpgradeSelectOp({selectOp:'1'},function(result){
9506 if (result.result == "success"){
9507 sf_showFotaCurrentStatus();
9508 }});
9509 }
9510
9511 function cancelFotaUpgrade(){
9512 service.setUpgradeSelectOp({selectOp:'0'},function(result){ });
9513 }
mj.qu19ac6692024-08-21 19:18:36 -07009514
9515
zw.wangcfae4372024-08-12 16:41:12 +08009516 function refreshFotaStatusForUserSelector(choice){
9517 var info = getCurrentStatusInfo();
9518 if(choice){
9519 var modeData = service.getOpMode();
9520 if (!checkConnectedStatus(info.connectStatus, modeData.rj45_state, info.connectWifiStatus)) {
9521 showAlert("ota_network_disconnected");
9522 return;
9523 }
9524
9525 if(info.fota_user_selector == 'none'){
9526 sf_startFotaUpgrade();
9527 }else if(info.fota_user_selector == 'accept'){
9528 sf_showFotaCurrentStatus();
9529 }else if(info.fota_user_selector == 'cancel'){
9530 showAlert("ota_have_cancel");
9531 }else if(info.fota_user_selector == 'downloading_cancel'){
9532 showAlert("ota_have_cancel");
9533 }
9534 }else{
9535 if(info.fota_user_selector == 'none'){
9536 cancelFotaUpgrade();
9537 }else if(info.fota_user_selector == 'accept'){
9538 sf_showFotaCurrentStatus();
9539 }else if(info.fota_user_selector == 'cancel'){
9540 // todo:
9541 }else if(info.fota_user_selector == 'downloading_cancel'){
9542 // todo:
9543 }
9544 }
9545 }
9546
9547
mj.qu19ac6692024-08-21 19:18:36 -07009548 // ��ʾ���°汾�������ж��Ƿ�������ʾ
zw.wangcfae4372024-08-12 16:41:12 +08009549 function showFotaStatusForUserToConfirm(upgradeState) {
9550 var upgState = upgradeState.current_upgrade_state;
9551 if (upgState == 'upgrade_pack_redownload') {
9552 showConfirm("ota_interrupted", {ok: function () {
9553 refreshFotaStatusForUserSelector(1);
9554 }, no: function () {
9555 refreshFotaStatusForUserSelector(0);
9556 }});
9557 } else {
9558 var upgradingState = ["prepare_install", "low_battery",
9559 "connecting_server", "connect_server_success", "downloading", "accept"];
9560 if ($.inArray(upgState, upgradingState) != -1) {
9561 sf_showFotaCurrentStatus();
9562 } else {
mj.qu19ac6692024-08-21 19:18:36 -07009563
zw.wangcfae4372024-08-12 16:41:12 +08009564 showConfirm($.i18n.prop('ota_new_version'), {ok: function () {
9565 refreshFotaStatusForUserSelector(1);
9566 config.ISNOW_NOTICE = false;
9567 }, no: function () {
9568 refreshFotaStatusForUserSelector(0);
9569 config.ISNOW_NOTICE = false;
9570 }});
9571 }
9572 }
9573 }
9574
9575 showOTAAlert = function () {
9576 config.ISNOW_NOTICE = true;
9577 var is_mandatory = service.getMandatory().is_mandatory;
9578 if (is_mandatory) {
9579 sf_showFotaCurrentStatus();
9580 } else {
9581 var upgradeState = {};
9582 upgradeState = service.getCurrentUpgradeState();
9583 showFotaStatusForUserToConfirm(upgradeState);
9584 }
9585 };
9586
mj.qu19ac6692024-08-21 19:18:36 -07009587 // ��ֹFota����
zw.wangcfae4372024-08-12 16:41:12 +08009588 stopOTAUpgrade = function () {
9589 service.setUpgradeSelectOp({selectOp:'2'},function(result){ });
9590 sv_fotaUpdateCancel = false;
9591 window.clearTimeout(sv_timer);
9592 hideLoading();
9593 showAlert('ota_cancel');
9594 };
9595
mj.qu19ac6692024-08-21 19:18:36 -07009596 // �������������Ƿ����ѹ�
zw.wangcfae4372024-08-12 16:41:12 +08009597 function setTrafficAlertPopuped(val){
9598 sv_trafficAlertPopuped = !!val;
9599 sv_trafficAlertPopuped_100 = !!val;
9600 if(!val){
9601 sv_resetTrafficAlertPopuped = true;
9602 }
9603 }
9604
9605 function setTrafficAlert100Popuped(val){
9606 sv_trafficAlertPopuped_100 = !!val;
9607 if(!val){
9608 sv_resetTrafficAlertPopuped = true;
9609 }
9610 }
9611
mj.qu19ac6692024-08-21 19:18:36 -07009612 // ���������ṹ
zw.wangcfae4372024-08-12 16:41:12 +08009613 function getTrafficResult(info){
9614 var s_trafficResult = {
9615 showConfirm : false,
9616 limitPercent : info.limitVolumePercent
9617 };
9618 if(info.limitVolumeType == '1'){
9619 var monthlyTraffic = parseInt(info.data_counter.monthlySent, 10) + parseInt(info.data_counter.monthlyReceived, 10);
9620 s_trafficResult.usedPercent = monthlyTraffic / info.limitVolumeSize * 100;
9621 if(s_trafficResult.usedPercent > s_trafficResult.limitPercent){
9622 s_trafficResult.showConfirm = true;
9623 s_trafficResult.type = 'data';
9624 }
9625 }else{
9626 s_trafficResult.usedPercent = info.data_counter.monthlyConnectedTime / info.limitVolumeSize * 100;
9627 if(s_trafficResult.usedPercent > s_trafficResult.limitPercent){
9628 s_trafficResult.showConfirm = true;
9629 s_trafficResult.type = 'time';
9630 }
9631 }
9632 return s_trafficResult;
9633 }
9634
mj.qu19ac6692024-08-21 19:18:36 -07009635 // ��ʼ�� ViewModel����������ͼ����
zw.wangcfae4372024-08-12 16:41:12 +08009636 function init() {
9637 if(config.PRODUCT_TYPE == 'DATACARD') {
9638 $('#statusBar').addClass('padding-right-90');
9639 $('#language').addClass('data-card-language');
9640 }
9641 //preload img
9642 var imgAlert = $('<img />').attr('src', 'pic/res_alert.png');
9643 var imgConfirm = $('<img />').attr('src', 'pic/res_confirm.png');
9644 var imgInfo = $('<img />').attr('src', 'pic/res_info.png');
mj.qu19ac6692024-08-21 19:18:36 -07009645
zw.wangcfae4372024-08-12 16:41:12 +08009646 window.setTimeout(function () {
mj.qu19ac6692024-08-21 19:18:36 -07009647
zw.wangcfae4372024-08-12 16:41:12 +08009648 var fwVm = new statusViewModel();
mj.qu19ac6692024-08-21 19:18:36 -07009649
zw.wangcfae4372024-08-12 16:41:12 +08009650 ko.applyBindings(fwVm, $('#statusBar')[0]);
mj.qu19ac6692024-08-21 19:18:36 -07009651
zw.wangcfae4372024-08-12 16:41:12 +08009652 window.setInterval(function () {
9653 var info = getCurrentStatusInfo();
9654 var s_roamStatus = info.roamingStatus ? true : false;
9655 var $langLogoBar = $("#langLogoBar");
9656 isLoggedIn = info.isLoggedIn;
mj.qu19ac6692024-08-21 19:18:36 -07009657
9658
zw.wangcfae4372024-08-12 16:41:12 +08009659 //fwVm.attachedDevices(info.attachedDevices);
9660 fwVm.batteryLevel(info.batteryLevel + '%');
9661 fwVm.batteryPers(sf_getBatteryLevelImage(info.batteryPers, info.batteryStatus));
9662 fwVm.batteryStatus(info.batteryStatus);
9663 fwVm.isShowFotaNewversionIcon(info.new_version_state && info.fota_user_selector && info.fota_package_already_download != "yes" && config.ISNOW_NOTICE && fwVm.updateType() == 'mifi_fota');
9664 fwVm.isShowRj45ConnectionIcon(config.RJ45_SUPPORT);
9665 fwVm.networkOperator(sf_getNetWorkProvider(info.spn_b1_flag,info.spn_name_data,info.spn_b2_flag,info.networkOperator,s_roamStatus));
9666 fwVm.networkType(getNetworkType(info.networkType));
9667 fwVm.pinStatus(info.pinStatus);
9668 fwVm.roamingStatus(info.roamingStatus ? "R" : "");
9669 fwVm.showAttachedDevices(info.wifiStatus);
9670 fwVm.simStatus(sf_convertSimStatusToImage(info.simStatus));
9671 fwVm.signalCssClass(sf_getSignalCssClass(info.signalImg, info.networkType, info.simStatus));
9672 fwVm.isLoggedIn(info.isLoggedIn);
9673 fwVm.wifiStatusCssClass(sf_getWifiStatusCssClass(info.wifiStatus, info.wirelessDeviceNum));
9674 fwVm.wifiStatusImg(sf_getWifiStatusImage(info.wifiStatus, info.wirelessDeviceNum));
mj.qu19ac6692024-08-21 19:18:36 -07009675
zw.wangcfae4372024-08-12 16:41:12 +08009676 if(config.HAS_SMS ){
9677 if(!sv__hasCheckedSMSCapacity && info.isLoggedIn){
9678 checkSMSCapacity(info.smsUnreadCount);
9679 } else {
9680 fwVm.smsUnreadCount(info.smsUnreadCount);
9681 }
9682 }
mj.qu19ac6692024-08-21 19:18:36 -07009683
zw.wangcfae4372024-08-12 16:41:12 +08009684 sf_getConnectionCssClass(fwVm, info.connectStatus, info.data_counter, info.connectWifiSSID, info.connectWifiStatus, info.rj45ConnectStatus);
9685 refreshWifiConnectStatus(fwVm, info.connectStatus,info.connectWifiSSID,info.connectWifiStatus);
9686 checkTrafficLimitAlert(fwVm, info);
9687 updateStatusBarTrans({simStatus: info.simStatus, wifiStatus: info.wifiStatus, deviceSize: info.wirelessDeviceNum, networkType: info.networkType});
mj.qu19ac6692024-08-21 19:18:36 -07009688
zw.wangcfae4372024-08-12 16:41:12 +08009689 if(info.isLoggedIn){
9690 $("#statusBar:hidden").show();
9691 } else {
9692 $("#statusBar:visible").hide();
9693 }
9694 }, 500);
9695
9696 if(config.HAS_SMS){
9697 window.setInterval(function(){
9698 if(fwVm.isLoggedIn()){
9699 checkSMSCapacity();
9700 }
9701 }, 10000);
9702 checkSmsModelReady();
9703 }
9704
9705 window.setInterval(function() {
9706 var data = getCurrentStatusInfo();
9707 var upgradingState = ["prepare_install", "low_battery", "download_success","downloading"];
mj.qu19ac6692024-08-21 19:18:36 -07009708
zw.wangcfae4372024-08-12 16:41:12 +08009709 if (fwVm.isLoggedIn() == true && !($("#progress").is(":visible")) && data.defaultWanName != ""){
9710 if ($.inArray(data.current_upgrade_state, upgradingState) != -1){
9711 if(null == sv_fotaUpdateCancel){
9712 if(!data.is_mandatory){
9713 $.modal.close();
9714 }
9715 sf_showFotaCurrentStatus();
9716 }else if(false == sv_fotaUpdateCancel){
9717 sv_fotaUpdateCancel = null;
9718 }
9719 }
9720 }
9721 }, 1000);
9722
9723 var checkFotaUpgradeResult = function () {
9724 var info = service.getStatusInfo();
9725 if (info.isLoggedIn) {
9726 service.getUpgradeResult({}, function (data) {
9727 if (data.upgrade_result == "success") {
9728 sf_showFotaUpdateResult(true);
9729 } else if (data.upgrade_result == "fail") {
9730 sf_showFotaUpdateResult(false);
9731 } else {
9732 window.setTimeout(checkFotaUpgradeResult, 1000);
9733 }
9734 }, function () {
9735 window.setTimeout(checkFotaUpgradeResult, 1000);
9736 });
9737 } else {
9738 window.setTimeout(checkFotaUpgradeResult, 1000);
9739 }
9740 };
9741 if(fwVm.updateType() == "mifi_fota"){
9742 checkFotaUpgradeResult();
9743 window.setInterval(function () {
9744 var info = getCurrentStatusInfo();
9745 if (info.isLoggedIn && info.defaultWanName != "") {
9746 if(info.new_version_state && info.fota_package_already_download != "yes" && !config.ALREADY_NOTICE){
9747 service.getUpgradeResult({}, function (data) {
9748 if (data.upgrade_result == "success") {
9749 sf_showFotaUpdateResult(true);
9750 } else if (data.upgrade_result == "fail") {
9751 sf_showFotaUpdateResult(false);
9752 } else {
9753 if(sv_fotaResultAlertPopuped == false){
9754 config.ALREADY_NOTICE = true;
9755 showOTAAlert();
9756 }
9757 }
9758 });
9759 }
9760 }
9761 }, 1000);
9762 }
9763 function checkSMSCapacity(unreadCount){
9764 service.getSmsCapability({}, function(info){
9765 var showSmsConfirm = false;
9766 if(info.nvTotal != 0 && info.nvUsed >= info.nvTotal){
9767 $("#sms_unread_count").attr("tipTitle", "sms_capacity_is_full");
9768 showSmsConfirm = true;
9769 } else if(info.nvTotal != 0 && info.nvUsed + 5 >= info.nvTotal) {
9770 $("#sms_unread_count").attr("tipTitle", "sms_capacity_will_full");
9771 showSmsConfirm = true;
9772 } else {
9773 $("#sms_unread_count").attr("tipTitle", "sms_unread_count");
9774 }
9775 fwVm.showSmsDeleteConfirm(showSmsConfirm);
9776 if(typeof unreadCount != "undefined"){
9777 fwVm.smsUnreadCount(unreadCount);
9778 }
9779 sv__hasCheckedSMSCapacity = true;
9780 });
9781 }
9782 }, 1200);
mj.qu19ac6692024-08-21 19:18:36 -07009783
zw.wangcfae4372024-08-12 16:41:12 +08009784 tooltip.init();
mj.qu19ac6692024-08-21 19:18:36 -07009785
9786 // ������Ϣģ����ʼ��״̬
zw.wangcfae4372024-08-12 16:41:12 +08009787 function checkSmsModelReady(){
9788 var info = getCurrentStatusInfo();
9789 if(info.isLoggedIn){
9790 service.getSMSReady({}, function (data) {
9791 if (data.sms_cmd_status_result == "1") {
9792 window.setTimeout(function(){checkSmsModelReady();}, 1000);
9793 } else {
9794 sv__initSMSCompleted = true;
9795 }
9796 });
9797 } else {
9798 window.setTimeout(function(){checkSmsModelReady();}, 1000);
9799 }
9800 }
mj.qu19ac6692024-08-21 19:18:36 -07009801
9802 // ������������״̬
zw.wangcfae4372024-08-12 16:41:12 +08009803 checkTrafficLimitAlert = function(fwVm, info){
9804 if(window.location.hash == '#entry'){
9805 return false;
9806 }
9807 var APStationEnabled = config.AP_STATION_SUPPORT ? service.getStatusInfo().ap_station_enable : 'undefined';
9808 var trafficResult = getTrafficResult(info);
9809 var inShow = $("#confirm-container:visible").length > 0;
9810 var notPPP = (config.PRODUCT_TYPE == 'CPE' && checkCableMode(info.blc_wan_mode)) ? true : false;
mj.qu19ac6692024-08-21 19:18:36 -07009811
9812 // ��ȡAp Stationʹ��״̬���������ѷ�ʽ
zw.wangcfae4372024-08-12 16:41:12 +08009813 if (config.AP_STATION_SUPPORT && (typeof APStationEnabled == "undefined" || APStationEnabled === '')) {
9814 service.refreshAPStationStatus({}, $.noop());
9815 return false;
9816 }
9817 APStationEnabled = APStationEnabled == 1;
9818
9819 if (!info.isLoggedIn || inShow || (sv_trafficAlertPopuped && sv_trafficAlertPopuped_100) || !info.limitVolumeEnable || (!APStationEnabled && !(info.connectStatus == "ppp_connected")) || notPPP) {
9820 return false;
9821 }
mj.qu19ac6692024-08-21 19:18:36 -07009822
zw.wangcfae4372024-08-12 16:41:12 +08009823 if(sv_resetTrafficAlertPopuped){
9824 window.setTimeout(function () {
9825 sv_resetTrafficAlertPopuped = false;
9826 }, 2000);
9827 return false;
9828 }
9829
9830 if(trafficResult.showConfirm){
mj.qu19ac6692024-08-21 19:18:36 -07009831
zw.wangcfae4372024-08-12 16:41:12 +08009832 var confirmMessage = null;
mj.qu19ac6692024-08-21 19:18:36 -07009833
zw.wangcfae4372024-08-12 16:41:12 +08009834 if(trafficResult.usedPercent > 100 && !sv_trafficAlertPopuped_100){
mj.qu19ac6692024-08-21 19:18:36 -07009835
zw.wangcfae4372024-08-12 16:41:12 +08009836 sv_trafficAlertPopuped = true;
9837 sv_trafficAlertPopuped_100 = true;
mj.qu19ac6692024-08-21 19:18:36 -07009838
zw.wangcfae4372024-08-12 16:41:12 +08009839 confirmMessage = {msg: APStationEnabled ? 'traffic_beyond_msg' : 'traffic_beyond_disconnect_msg'};
mj.qu19ac6692024-08-21 19:18:36 -07009840
zw.wangcfae4372024-08-12 16:41:12 +08009841 } else if (!sv_trafficAlertPopuped) {
mj.qu19ac6692024-08-21 19:18:36 -07009842
zw.wangcfae4372024-08-12 16:41:12 +08009843 sv_trafficAlertPopuped = true;
9844 sv_trafficAlertPopuped_100 = false;
9845 confirmMessage = {msg: APStationEnabled ? 'traffic_limit_msg' : 'traffic_limit_disconnect_msg',
9846 params: [trafficResult.limitPercent]};
9847 }
mj.qu19ac6692024-08-21 19:18:36 -07009848
zw.wangcfae4372024-08-12 16:41:12 +08009849 if (confirmMessage != null) {
9850 if (APStationEnabled) {
9851 showAlert(confirmMessage);
9852 } else {
9853 showConfirm(confirmMessage, function () {
9854 showLoading("disconnecting");
9855 service.disconnect({}, function (data) {
9856 if (data.result) {
9857 successOverlay();
9858 } else {
9859 errorOverlay();
9860 }
9861 });
9862 });
9863 }
9864 }
9865 }
9866 return true;
9867 };
mj.qu19ac6692024-08-21 19:18:36 -07009868
9869 // ����״̬�е�tooltip
zw.wangcfae4372024-08-12 16:41:12 +08009870 function updateStatusBarTrans(status){
9871 $("#statusItemSimStatus").attr("tipTitle", "sim_status_" + status.simStatus);
9872 if (status.wifiStatus) {
9873 if (status.deviceSize == 0) {
9874 $("#wifi_status").attr("tipTitle","wifi_status_on");
9875 } else {
9876 $("#wifi_status").attr("tipTitle","wifi_status" + status.deviceSize);
9877 }
9878 } else {
9879 $("#wifi_status").attr("tipTitle","wifi_status_off");
9880 }
9881 }
9882
9883
mj.qu19ac6692024-08-21 19:18:36 -07009884 // ˢ��wifi��������״̬
zw.wangcfae4372024-08-12 16:41:12 +08009885 function refreshWifiConnectStatus(fwVm, status, wifiSSID, wifiStatus) {
9886 fwVm.connectStatus(status);
9887 if (status == "ppp_disconnecting") {
9888 fwVm.connectStatusTrans("disconnecting");
9889 fwVm.connectStatusText($.i18n.prop("disconnecting"));
9890 } else if (status == "ppp_connecting") {
9891 fwVm.connectStatusTrans("connecting");
9892 fwVm.connectStatusText($.i18n.prop("connecting"));
9893 } else if (status == "ppp_connected") {
9894 fwVm.connectStatusTrans("connected");
9895 fwVm.connectStatusText($.i18n.prop("connected"));
9896 } else if(wifiSSID){
9897 if(wifiStatus =="dhcping" || wifiStatus =="connecting"){
9898 fwVm.connectStatus("wifi_connecting");
9899 fwVm.connectStatusTrans("connecting");
9900 fwVm.connectStatusText($.i18n.prop("connecting"));
9901 }else if(wifiStatus =="connect"){
9902 fwVm.connectStatus("wifi_connect");
9903 fwVm.connectStatusTrans("connected");
9904 fwVm.connectStatusText($.i18n.prop("connected"));
9905 }else{
9906 fwVm.connectStatus("ppp_disconnected");
9907 fwVm.connectStatusTrans("disconnected");
9908 fwVm.connectStatusText($.i18n.prop("disconnected"));
9909 }
9910 }else{
9911 fwVm.connectStatusTrans("disconnected");
9912 fwVm.connectStatusText($.i18n.prop("disconnected"));
9913 }
9914 }
mj.qu19ac6692024-08-21 19:18:36 -07009915
9916 // ��ȡ��ǰ����״̬
zw.wangcfae4372024-08-12 16:41:12 +08009917 getNetworkType = function(networkType) {
9918 var networkTypeTmp = networkType.toLowerCase();
9919 if (networkTypeTmp == '' || networkTypeTmp == 'limited service') {
9920 networkTypeTmp = 'limited_service';
9921 }
9922 if(networkTypeTmp == 'no service') {
9923 networkTypeTmp = 'no_service';
9924 }
9925 if (networkTypeTmp == 'limited_service' || networkTypeTmp == 'no_service') {
9926 $("#networkType", "#statusBar").attr("data-trans", "network_type_" + networkTypeTmp);
9927 return $.i18n.prop("network_type_" + networkTypeTmp);
9928 } else {
9929 $("#networkType", "#statusBar").removeAttr("data-trans");
9930 return networkType;
9931 }
9932 };
mj.qu19ac6692024-08-21 19:18:36 -07009933
zw.wangcfae4372024-08-12 16:41:12 +08009934 if(config.HAS_SMS && menu.checkIsMenuExist("sms_list")){
9935 window.setInterval(function () {
9936 var info = getCurrentStatusInfo();
9937 if(window.location.hash == "#entry" || sf_simStatusInvalid(info.simStatus)){
9938 return;
9939 }
9940 for(key in sv_messagePopStack){
9941 var val = sv_messagePopStack[key];
9942 if($.now() - val > 5000){
9943 delete(sv_messagePopStack["m" + val]);
9944 var node = $(".bubbleItem#m" + val, "#buttom-bubble");
9945 node.fadeOut(1000, function(){
9946 $(this).remove();
9947 });
9948 }
9949 }
9950 if(info.isLoggedIn){
9951 if(info.newSmsReceived && !sv_newSMSMessageInDealing){
9952 sv_newSMSMessageInDealing = true;
9953 service.resetNewSmsReceivedVar();
9954 sf_checkNewMessages();
9955 }
9956 if(info.smsReportReceived){
9957 service.resetSmsReportReceivedVar();
9958 sf_responseSmsReport();
9959 }
9960 }
9961 }, 1000);
9962
9963 if(config.SMS_DATABASE_SORT_SUPPORT){
9964 window.setInterval(function(){
9965 if(menu.checkIsMenuExist("sms_list")){
9966 var info = getCurrentStatusInfo();
9967 if(info.isLoggedIn && sv__initSMSCompleted && !sv_newSMSMessageInDealing && !sf_simStatusInvalid(info.simStatus)){
9968 sv_newSMSMessageInDealing = true;
9969 sf_checkNewMessages();
9970 }
9971 }
9972 }, 20001);
9973 }
9974 }
9975
9976 function sf_checkNewMessages(){
mj.qu19ac6692024-08-21 19:18:36 -07009977
zw.wangcfae4372024-08-12 16:41:12 +08009978 var s_tags = 1;
9979 var s_smsCount = 5;
9980
9981 if(!config.dbMsgs || config.dbMsgs.length == 0){
9982 s_smsCount = 500;
9983 s_tags = 10;
9984 }
9985 service.getSMSMessages({
9986 page : 0,
9987 smsCount : s_smsCount,
9988 nMessageStoreType : 0,
9989 tags : s_tags,
9990 orderBy : "order by id desc"
9991 }, function(data){
9992 if(data && data.messages){
9993 sf_filterNewMessage(data.messages, 0);
9994 }
9995 sv_newSMSMessageInDealing = false;
9996 });
9997 service.getSMSMessages({
9998 page : 0,
9999 smsCount : s_smsCount,
10000 nMessageStoreType : 1,
10001 tags : s_tags,
10002 orderBy : "order by id desc"
10003 }, function(data){
10004 if(data && data.messages){
10005 sf_filterNewMessage(data.messages, 1);
10006 }
10007 sv_newSMSMessageInDealing = false;
10008 });
10009 }
10010
10011 if(config.HAS_SMS){
10012 $(".bubbleItem", "#buttom-bubble").live("mouseover", function(){
10013 var $this = $(this);
10014 delete(sv_messagePopStack[$this.attr("id")]);
10015 }).live("mouseout", function(){
10016 var $this = $(this);
10017 var now = $.now();
10018 sv_messagePopStack["m" + now] = now;
10019 $this.attr("id", "m" + now);
10020 $(".bubbleItem h3 a.bubbleCloseBtn", "#buttom-bubble").data("targetid", "m" + now);
10021 });
10022
10023 $(".bubbleItem h3 a.bubbleCloseBtn", "#buttom-bubble").die().live("click", function(){
10024 var id = $(this).data("targetid");
10025 delete(sv_messagePopStack[id]);
10026 var node = $(".bubbleItem#" + id, "#buttom-bubble");
10027 node.fadeOut(1000, function(){
10028 $(this).remove();
10029 });
10030 });
10031 }
10032 }
mj.qu19ac6692024-08-21 19:18:36 -070010033
10034
zw.wangcfae4372024-08-12 16:41:12 +080010035 return {
10036 init:init,
10037 setTrafficAlertPopuped: setTrafficAlertPopuped,
10038 setTrafficAlert100Popuped: setTrafficAlert100Popuped,
10039 getTrafficResult: getTrafficResult,
10040 showOTAAlert:showOTAAlert
10041 };
10042});
10043
mj.qu19ac6692024-08-21 19:18:36 -070010044// ����ͳ������ģ��
zw.wangcfae4372024-08-12 16:41:12 +080010045define("status_traffic_alert","jquery knockout service statusBar echarts".split(" "),
10046
10047 function ($, ko, service, status, echarts) {
mj.qu19ac6692024-08-21 19:18:36 -070010048
zw.wangcfae4372024-08-12 16:41:12 +080010049 var sv_trafficGraph = null;
10050 var sv_sourceData = null;
10051 var sv_usedDataModified = false;
10052 var sv_usedTimeModified = false;
10053
10054 var sv_trafficStaticalInfo = {
mj.qu19ac6692024-08-21 19:18:36 -070010055 // ����ͼ��ʼֵ
zw.wangcfae4372024-08-12 16:41:12 +080010056 data: {
10057 alarm: {
mj.qu19ac6692024-08-21 19:18:36 -070010058
zw.wangcfae4372024-08-12 16:41:12 +080010059 itemStyle: {
10060 normal: {
10061 color: '#8CC916'
10062 }
10063 },
mj.qu19ac6692024-08-21 19:18:36 -070010064 name: '������',
zw.wangcfae4372024-08-12 16:41:12 +080010065 value: 19.7
10066 },
10067 alert: {
mj.qu19ac6692024-08-21 19:18:36 -070010068
zw.wangcfae4372024-08-12 16:41:12 +080010069 itemStyle: {
10070 normal: {
10071 color: '#FF5500'
10072 }
10073 },
mj.qu19ac6692024-08-21 19:18:36 -070010074 name: '����ֵ',
zw.wangcfae4372024-08-12 16:41:12 +080010075 value: 1
10076 },
10077 free: {
mj.qu19ac6692024-08-21 19:18:36 -070010078
zw.wangcfae4372024-08-12 16:41:12 +080010079 itemStyle: {
10080 normal: {
10081 color: '#D8D8D8'
10082 }
10083 },
mj.qu19ac6692024-08-21 19:18:36 -070010084 name: 'δʹ��',
zw.wangcfae4372024-08-12 16:41:12 +080010085 value: 50
10086 },
10087 full: {
mj.qu19ac6692024-08-21 19:18:36 -070010088
10089
zw.wangcfae4372024-08-12 16:41:12 +080010090 itemStyle: {
10091 normal: {
10092 color: '#DF4313'
10093 }
10094 },
mj.qu19ac6692024-08-21 19:18:36 -070010095 name: '��������',
zw.wangcfae4372024-08-12 16:41:12 +080010096 value: 30
10097 },
10098 left1: {
mj.qu19ac6692024-08-21 19:18:36 -070010099
zw.wangcfae4372024-08-12 16:41:12 +080010100 itemStyle: {
10101 normal: {
10102 color: '#D8D8D8'
10103 }
10104 },
mj.qu19ac6692024-08-21 19:18:36 -070010105 name: '����ֵ��δʹ��',
zw.wangcfae4372024-08-12 16:41:12 +080010106 value: 50,
10107 },
10108 start: {
mj.qu19ac6692024-08-21 19:18:36 -070010109
zw.wangcfae4372024-08-12 16:41:12 +080010110 itemStyle: {
10111 normal: {
10112 color: '#D8D8D8'
10113 }
10114 },
mj.qu19ac6692024-08-21 19:18:36 -070010115 name: '����ֵ��δʹ��',
zw.wangcfae4372024-08-12 16:41:12 +080010116 value: 50
10117 },
10118 used: {
mj.qu19ac6692024-08-21 19:18:36 -070010119
zw.wangcfae4372024-08-12 16:41:12 +080010120 itemStyle: {
10121 normal: {
10122 color: '#8CC916'
10123 }
10124 },
mj.qu19ac6692024-08-21 19:18:36 -070010125 name: '��ʹ��',
zw.wangcfae4372024-08-12 16:41:12 +080010126 value: 30
10127 }
10128 },
10129 cacheEle: {},
mj.qu19ac6692024-08-21 19:18:36 -070010130 // Ԫ�ػ�ȡ
zw.wangcfae4372024-08-12 16:41:12 +080010131 getEle: function (i_elementId) {
10132 if (this.cacheEle.hasOwnProperty('id')) {
10133 return this.cacheEle[i_elementId];
10134 } else {
10135 this.cacheEle[i_elementId] = $("#" + i_elementId);
10136 return this.cacheEle[i_elementId];
10137 }
10138 },
mj.qu19ac6692024-08-21 19:18:36 -070010139 // ��ȡ�����澯״ֵ̬
zw.wangcfae4372024-08-12 16:41:12 +080010140 fetchTrafficAlertInfo: function(){
10141 sv_sourceData = getTrafficAlertInfo();
10142 return sv_sourceData;
10143 },
mj.qu19ac6692024-08-21 19:18:36 -070010144 // ��ȡ����ֵ�Ͷ�Ӧ��λֵ
zw.wangcfae4372024-08-12 16:41:12 +080010145 getTrafficStatisticalDatalnfo: function (i_valueInfo) {
10146 return {
10147 data: /\d+(.\d+)?/.exec(i_valueInfo)[0],
10148 unit: /[A-Z]{1,2}/.exec(i_valueInfo)[0]
10149 }
10150 },
mj.qu19ac6692024-08-21 19:18:36 -070010151
10152 // ��ȡʱ��ʱ���֡���
zw.wangcfae4372024-08-12 16:41:12 +080010153 getTrafficTimeHours: function (i_time) {
10154 var s_timeArray = i_time.split(':');
10155 return {
10156 h: parseInt(s_timeArray[0], 10),
10157 m: parseInt(s_timeArray[1], 10),
10158 s: parseInt(s_timeArray[2], 10)
10159 }
10160 },
mj.qu19ac6692024-08-21 19:18:36 -070010161 // ��ȡͳ��ʱ���Ͷ�Ӧ��λֵ
zw.wangcfae4372024-08-12 16:41:12 +080010162 getTrafficTimeInfo: function (i_valueInfo) {
10163 return {
10164 data: /\d+(.\d+)?/.exec(i_valueInfo)[0],
10165 unit: /[a-z]{4,6}/.exec(i_valueInfo)[0]
10166 }
10167 },
mj.qu19ac6692024-08-21 19:18:36 -070010168 // ʱ�任����S
zw.wangcfae4372024-08-12 16:41:12 +080010169 getTrafficTimeToSeconds: function (i_time) {
10170 var s_FormattedTime = this.getTrafficTimeHours(i_time);
10171 return s_FormattedTime.h * 3600 + s_FormattedTime.m * 60 + s_FormattedTime.s;
10172 },
mj.qu19ac6692024-08-21 19:18:36 -070010173 // ͨ�����ƻ�ȡ������λ
zw.wangcfae4372024-08-12 16:41:12 +080010174 getTrafficUnitByScale: function (i_scale) {
10175 if (i_scale == '1024') {
10176 return 'GB';
10177 } else if (i_scale == '1048576') {
10178 return 'TB';
10179 } else {
10180 return 'MB';
10181 }
10182 },
mj.qu19ac6692024-08-21 19:18:36 -070010183 // ��λ��Ӧֵ��ȡ
zw.wangcfae4372024-08-12 16:41:12 +080010184 getTrafficValueByStatisticalUnit: function (i_unit) {
10185 i_unit = i_unit.toLowerCase();
10186 if(i_unit == 'minute'){
10187 return '60';
10188 } else if (i_unit == 'gb') {
10189 return '1024';
10190 } else if(i_unit == 'hour'){
10191 return '3600';
10192 } else if (i_unit == 'tb') {
10193 return '1048576';
10194 } else {
10195 return '1';
10196 }
10197 },
10198
mj.qu19ac6692024-08-21 19:18:36 -070010199 // ���������Ƿ��ɱ༭
zw.wangcfae4372024-08-12 16:41:12 +080010200 isFormEditable: function (fwVm) {
10201 var s_dataPageEditState = fwVm.dataLimitTypeChecked() == '1' && (fwVm.viewEditUsedData() || fwVm.viewEditAlertData() || fwVm.viewEditTotalData());
10202 var s_timePageEditState = fwVm.dataLimitTypeChecked() == '0' && (fwVm.viewEditUsedTime() || fwVm.viewEditAlertTime() || fwVm.viewEditTotalTime());
10203 if (s_dataPageEditState || s_timePageEditState) {
10204 $('.border-color-transition:visible').addClass('attention-focus');
10205 addTimeout(function () {
10206 $('.border-color-transition:visible').removeClass('attention-focus');
10207 }, 1500);
10208 return true;
10209 } else {
10210 var s_result = false;
10211 if (fwVm.dataLimitTypeChecked() == 1) {
10212 if (fwVm.alertDataReach() == '0') {
10213 fwVm.editAlertDataHandler();
10214 s_result = true;
10215 }
10216 if (fwVm.limitDataMonth() == '0') {
10217 fwVm.editTotalDataHandler();
10218 s_result = true;
10219 }
10220 } else {
10221 if (fwVm.alertTimeReach() == '0') {
10222 fwVm.editAlertTimeHandler();
10223 s_result = true;
10224 }
10225 if (fwVm.limitTimeMonth() == '0') {
10226 fwVm.editTotalTimeHandler();
10227 s_result = true;
10228 }
10229 }
mj.qu19ac6692024-08-21 19:18:36 -070010230
zw.wangcfae4372024-08-12 16:41:12 +080010231 if (s_result) {
10232 $('.border-color-transition:visible').addClass('attention-focus');
10233 addTimeout(function () {
10234 $('.border-color-transition:visible').removeClass('attention-focus');
10235 }, 1500);
10236 }
10237 return s_result;
10238 }
10239 },
mj.qu19ac6692024-08-21 19:18:36 -070010240
10241 // ˢ������ͼ��Ϣ������������ֵ����ʾ����
zw.wangcfae4372024-08-12 16:41:12 +080010242
10243 refreshFlowDiagramInfo: function (fwVm) {
10244 var s_alarm = 0;
10245 var s_left = 0;
10246 var s_left1 = 0;
10247 var s_reach = 0;
10248 var s_total = 0;
10249 var s_used = 0;
10250
10251
10252 var s_startName = $.i18n.prop("echarts_no");
10253
mj.qu19ac6692024-08-21 19:18:36 -070010254 if (sv_sourceData.dataLimitChecked == '1') { //if (fwVm.dataLimitChecked() == '1') { //����
zw.wangcfae4372024-08-12 16:41:12 +080010255 s_startName = $.i18n.prop("echarts_used");
10256 sv_trafficGraphOptions.series[0].data = [];
mj.qu19ac6692024-08-21 19:18:36 -070010257
10258 if (fwVm.dataLimitTypeChecked() == '1') { // ����
zw.wangcfae4372024-08-12 16:41:12 +080010259 sv_trafficGraphOptions.title.text = "";
10260 sv_trafficGraphOptions.series[0].data = [];
mj.qu19ac6692024-08-21 19:18:36 -070010261
zw.wangcfae4372024-08-12 16:41:12 +080010262 if (fwVm.limitDataMonth() == 0) {
10263 var s_usedData = sv_trafficStaticalInfo.data.used;
10264 s_usedData.value = 1;
10265 s_usedData.name = $.i18n.prop("echarts_used");
10266 s_usedData.selected = false;
10267 sv_trafficGraphOptions.series[0].data.push(s_usedData);
10268 } else {
10269 s_total = fwVm.limitDataMonth() * fwVm.selectedDataUnit() * 1048576;
10270 s_used = parseInt(sv_sourceData.monthlySent, 10) + parseInt(sv_sourceData.monthlyReceived, 10);
10271 s_reach = s_total * fwVm.alertDataReach() / 100;
10272
10273 if (s_used >= s_total) {
10274 var s_fullData = sv_trafficStaticalInfo.data.full;
10275 s_fullData.value = 100;
10276 s_fullData.name = $.i18n.prop("echarts_full");
10277 sv_trafficGraphOptions.series[0].data.push(s_fullData);
10278 s_startName = $.i18n.prop("echarts_full");
10279 } else {
10280 if (s_reach > s_used) {
10281 s_left1 = s_reach - s_used;
10282 s_left = s_total - s_reach;
10283 } else {
10284 s_alarm = s_used - s_reach;
10285 s_left = s_total - s_used;
10286 }
10287
10288 var s_usedData = sv_trafficStaticalInfo.data.used;
10289 if (s_reach - s_used > 0) {
10290 s_usedData.value = s_used;
10291 } else {
10292 s_usedData.value = s_reach;
10293 }
10294 s_usedData.name = $.i18n.prop("echarts_used");
10295 sv_trafficGraphOptions.series[0].data.push(s_usedData);
10296
10297 if (s_left1 > 0) {
10298 var s_left1Data = sv_trafficStaticalInfo.data.left1;
10299 s_left1Data.value = s_left1;
10300 s_left1Data.name = $.i18n.prop("echarts_left1");
10301 sv_trafficGraphOptions.series[0].data.push(s_left1Data);
10302 }
10303
10304 var s_alertData = sv_trafficStaticalInfo.data.alert;
10305 s_alertData.value = s_total / 200;
10306 s_alertData.name = $.i18n.prop("echarts_alert");
10307 sv_trafficGraphOptions.series[0].data.push(s_alertData);
10308
10309 if (s_alarm > 0) {
10310 var s_alarmData = sv_trafficStaticalInfo.data.alarm;
10311 s_alarmData.value = s_alarm;
10312 s_alarmData.name = $.i18n.prop("echarts_alarm");
10313 sv_trafficGraphOptions.series[0].data.push(s_alarmData);
10314 }
10315
10316 var s_freeData = sv_trafficStaticalInfo.data.free;
10317 s_freeData.value = s_left;
10318 s_freeData.name = $.i18n.prop("echarts_free");
10319 sv_trafficGraphOptions.series[0].data.push(s_freeData);
10320 }
10321 }
mj.qu19ac6692024-08-21 19:18:36 -070010322
10323 }else{// ʱ��
10324
zw.wangcfae4372024-08-12 16:41:12 +080010325 sv_trafficGraphOptions.series[0].data = [];
mj.qu19ac6692024-08-21 19:18:36 -070010326
zw.wangcfae4372024-08-12 16:41:12 +080010327 if (fwVm.limitTimeMonth() == 0) {
10328 var s_usedData = sv_trafficStaticalInfo.data.used;
10329 s_usedData.value = 1;
10330 s_usedData.selected = false;
10331 s_usedData.name = $.i18n.prop("echarts_used");
10332 sv_trafficGraphOptions.series[0].data.push(s_usedData);
10333 } else {
10334 s_total = fwVm.limitTimeMonth() * fwVm.selectedTimeUnit();
10335 s_used = sv_sourceData.monthlyConnectedTime;
10336 s_reach = s_total * fwVm.alertTimeReach() / 100;
mj.qu19ac6692024-08-21 19:18:36 -070010337
zw.wangcfae4372024-08-12 16:41:12 +080010338 if (s_used >= s_total) {
10339 var fullTime = sv_trafficStaticalInfo.data.full;
10340 fullTime.value = 100;
10341 fullTime.name = $.i18n.prop("echarts_full");
10342 sv_trafficGraphOptions.series[0].data.push(fullTime);
10343 s_startName = $.i18n.prop("echarts_full");
10344 } else {
10345 if (s_reach - s_used > 0) {
10346 s_left1 = s_reach - s_used;
10347 s_left = s_total - s_reach;
10348 } else {
10349 s_alarm = s_used - s_reach;
10350 s_left = s_total - s_used;
10351 }
10352
10353 var s_usedTime = sv_trafficStaticalInfo.data.used;
10354 if (s_reach - s_used > 0) {
10355 s_usedTime.value = s_used;
10356 } else {
10357 s_usedTime.value = s_reach;
10358 }
10359 s_usedTime.name = $.i18n.prop("echarts_used");
10360 sv_trafficGraphOptions.series[0].data.push(s_usedTime);
10361
10362 if (s_left1 > 0) {
10363 var s_left1Time = sv_trafficStaticalInfo.data.left1;
10364 s_left1Time.value = s_left1;
10365 s_left1Time.name = $.i18n.prop("echarts_left1");
10366 sv_trafficGraphOptions.series[0].data.push(s_left1Time);
10367 }
10368
10369 var s_alertTime = sv_trafficStaticalInfo.data.alert;
10370 s_alertTime.value = s_total / 200;
10371 s_alertTime.name = $.i18n.prop("echarts_alert");
10372 sv_trafficGraphOptions.series[0].data.push(s_alertTime);
10373
10374 if (s_alarm > 0) {
10375 var s_alarmTime = sv_trafficStaticalInfo.data.alarm;
10376 s_alarmTime.value = s_alarm;
10377 s_alarmTime.name = $.i18n.prop("echarts_alarm");
10378 sv_trafficGraphOptions.series[0].data.push(s_alarmTime);
10379 }
10380
10381 var s_freeTime = sv_trafficStaticalInfo.data.free;
10382 s_freeTime.value = s_left;
10383 s_freeTime.name = $.i18n.prop("echarts_free");
10384 sv_trafficGraphOptions.series[0].data.push(s_freeTime);
10385 }
10386 }
10387 }
10388 } else {
10389 var s_usedData = sv_trafficStaticalInfo.data.used;
10390 s_usedData.value = 1;
10391 s_usedData.selected = false;
10392 s_usedData.name = $.i18n.prop("echarts_no");
mj.qu19ac6692024-08-21 19:18:36 -070010393
zw.wangcfae4372024-08-12 16:41:12 +080010394 sv_trafficGraphOptions.series[0].data = [s_usedData];
10395 sv_trafficGraphOptions.title.text = '';
10396 }
10397 sv_trafficStaticalInfo.setFlowDiagramInfo(sv_trafficGraphOptions, s_startName);
10398 },
10399
mj.qu19ac6692024-08-21 19:18:36 -070010400
10401 // �ػ�����ͼ
zw.wangcfae4372024-08-12 16:41:12 +080010402 setFlowDiagramInfo: function (i_options, i_startName) {
10403 var s_startPart = sv_trafficStaticalInfo.data.start;
10404
10405 s_startPart.name = i_startName;
10406 s_startPart.selected = false;
10407 s_startPart.value = 0;
mj.qu19ac6692024-08-21 19:18:36 -070010408
zw.wangcfae4372024-08-12 16:41:12 +080010409 var s_arr = [s_startPart].concat(i_options.series[0].data);
10410 i_options.series[0].data = s_arr;
10411 sv_trafficGraph.setOption(i_options, true);
mj.qu19ac6692024-08-21 19:18:36 -070010412
zw.wangcfae4372024-08-12 16:41:12 +080010413 addTimeout(function () {
10414 sv_trafficGraph.resize();
10415 }, 1000);
10416 }
10417 };
10418
10419
mj.qu19ac6692024-08-21 19:18:36 -070010420 // ����ͼ��������
zw.wangcfae4372024-08-12 16:41:12 +080010421 var sv_trafficGraphOptions = {
10422 animation: false,
10423 color: ['red', 'red', 'red', 'red', 'red'],
10424 series: [
10425 {
mj.qu19ac6692024-08-21 19:18:36 -070010426 name: '��������',
zw.wangcfae4372024-08-12 16:41:12 +080010427 radius: ['0', '75'],
10428 selectedOffset: 3,
10429 type: 'pie',
10430 data: [
10431
10432 ],
10433 itemStyle: {
10434 normal: {
10435 labelLine: {
10436 show: false
10437 },
10438 label: {
10439 show: false
10440 }
10441 }
10442 }
10443 }
10444 ],
10445 title: {
10446 itemGap: 0,
10447 text: '',
10448 subtextStyle: {
10449 color: '#FFF',
mj.qu19ac6692024-08-21 19:18:36 -070010450 fontFamily: '΢���ź�',
zw.wangcfae4372024-08-12 16:41:12 +080010451 fontSize: 16,
10452 fontWeight: 'bolder'
10453 },
10454 textStyle: {
10455 color: '#FFF',
mj.qu19ac6692024-08-21 19:18:36 -070010456 fontFamily: '΢���ź�',
zw.wangcfae4372024-08-12 16:41:12 +080010457 fontSize: 20,
10458 fontWeight: 'bolder'
10459 },
10460 x: 'center',
10461 y: 'center'
10462 },
10463 tooltip: {
10464 formatter: "{b}"
10465 }
10466 };
10467
10468
mj.qu19ac6692024-08-21 19:18:36 -070010469 // ��ȡ������������
zw.wangcfae4372024-08-12 16:41:12 +080010470 function getTrafficAlertInfo() {
10471 return service.getTrafficAlertInfo();
10472 }
10473
10474
mj.qu19ac6692024-08-21 19:18:36 -070010475
10476 // ��������ViewModel
zw.wangcfae4372024-08-12 16:41:12 +080010477
10478 function trafficViewModel() {
10479
10480 var target = this;
mj.qu19ac6692024-08-21 19:18:36 -070010481
zw.wangcfae4372024-08-12 16:41:12 +080010482 var info = sv_trafficStaticalInfo.fetchTrafficAlertInfo();
10483 var dataMonth = info.limitDataMonth.split("_");
mj.qu19ac6692024-08-21 19:18:36 -070010484
zw.wangcfae4372024-08-12 16:41:12 +080010485 sv_usedDataModified = false;
10486 sv_usedTimeModified = false;
10487
10488 target.alertDataReach = ko.observable(info.alertDataReach || 0);
10489 target.alertTimeReach = ko.observable(info.alertTimeReach || 0);
10490 target.dataLimitChecked = ko.observable(info.dataLimitChecked == '0' ? '0' : '1');
10491 target.dataLimitTypeChecked = ko.observable(info.dataLimitTypeChecked == '0' ? '0' : '1');
10492 target.limitTimeMonth = ko.observable(info.limitTimeMonth || 0);
10493
mj.qu19ac6692024-08-21 19:18:36 -070010494
10495 // ע��˳��
zw.wangcfae4372024-08-12 16:41:12 +080010496 target.usedDataText = ko.observable(transUnit(parseInt(info.monthlySent, 10) + parseInt(info.monthlyReceived, 10), false));
10497 var sv_staticalDataInfo = sv_trafficStaticalInfo.getTrafficStatisticalDatalnfo(target.usedDataText());
10498 var sv_staticalInfoData = sv_staticalDataInfo.data;
10499 target.dataUsed = ko.observable(sv_staticalInfoData);
10500 var sv_staticalInfoUnit = sv_staticalDataInfo.unit;
10501 target.selectedDataUsedUnit = ko.observable(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(sv_staticalInfoUnit));
10502 target.usedDataTextDescData = ko.observable("");
mj.qu19ac6692024-08-21 19:18:36 -070010503
zw.wangcfae4372024-08-12 16:41:12 +080010504 target.limitDataMonth = ko.observable(dataMonth[0] || 0);
10505 target.selectedDataUnit = ko.observable(dataMonth[1] || 1);
10506
10507 var limitDataMonthTmp = transUnit(target.limitDataMonth() * target.selectedDataUnit() * 1024 * 1024, false);
10508 var limitDataMonthUnitTmp = limitDataMonthTmp.substring(limitDataMonthTmp.length-2);
10509 target.limitDataMonth(limitDataMonthTmp.substring(0, limitDataMonthTmp.length-2));
10510 target.selectedDataUnit(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(limitDataMonthUnitTmp));
mj.qu19ac6692024-08-21 19:18:36 -070010511
zw.wangcfae4372024-08-12 16:41:12 +080010512 target.usedDataTextDesc = ko.computed(sf_usedDataTextDesc);
10513 target.limitDataMonthDescData = ko.observable("");
10514 target.limitDataMonthDesc = ko.computed(sf_limitDataMonthDesc);
10515 target.alertDataReachDescData = ko.observable("");
10516 target.alertDataReachDesc = ko.computed(sf_alertDataReachDesc);
10517 target.leftDataDescData = ko.observable("");
10518 target.leftDataDesc = ko.computed(sf_leftDataDesc);
10519 target.monthlyConnectedTime = ko.observable(transSecond2Time(info.monthlyConnectedTime));
mj.qu19ac6692024-08-21 19:18:36 -070010520
zw.wangcfae4372024-08-12 16:41:12 +080010521 var sv_timeInfo1 = sv_trafficStaticalInfo.getTrafficTimeInfo(transTimeUnit(info.monthlyConnectedTime));
10522 target.usedTime = ko.observable(sv_timeInfo1.data);
10523 target.selectedTimeUsedUnit = ko.observable(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(sv_timeInfo1.unit));
mj.qu19ac6692024-08-21 19:18:36 -070010524
zw.wangcfae4372024-08-12 16:41:12 +080010525 target.usedTimeTextDescData = ko.observable("");
10526 target.usedTimeTextDesc = ko.computed(sf_usedTimeTextDesc);
mj.qu19ac6692024-08-21 19:18:36 -070010527
zw.wangcfae4372024-08-12 16:41:12 +080010528 var sv_timeInfoNew = sv_trafficStaticalInfo.getTrafficTimeInfo(transTimeUnit(parseFloat(target.limitTimeMonth()) * 3600));
10529 target.selectedTimeUnit = ko.observable(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(sv_timeInfoNew.unit));
10530 target.limitTimeMonth(sv_timeInfoNew.data);
mj.qu19ac6692024-08-21 19:18:36 -070010531
10532
zw.wangcfae4372024-08-12 16:41:12 +080010533 target.limitTimeMonthDescData = ko.observable("");
10534 target.limitTimeMonthDescText = ko.observable("traffic_limit_time_h");
10535 target.limitTimeMonthDesc = ko.computed(sf_limitTimeMonthDesc);
10536 target.alertTimeReachDescData = ko.observable("");
10537 target.alertTimeReachDesc = ko.computed(sf_alertTimeReachDesc);
10538 target.leftTimeDescData = ko.observable("");
10539 target.leftTimeDesc = ko.computed(sf_leftTimeDesc);
10540 target.save = sf_save;
10541 target.viewEditUsedData = ko.observable(false);
10542 target.editUsedDataHandler = sf_editUsedDataHandler;
10543 target.editUsedDataSaveHandler = sf_editUsedDataSaveHandler;
10544 target.saveUsedData = sf_saveUsedData;
10545 target.editUsedDataCancelHandler = sf_editUsedDataCancelHandler;
10546 target.viewEditTotalData = ko.observable(false);
10547 target.editTotalDataHandler = sf_editTotalDataHandler;
10548 target.editTotalDataSaveHandler = sf_editTotalDataSaveHandler;
10549 target.editTotalDataCancelHandler = sf_editTotalDataCancelHandler;
10550 target.viewEditAlertData = ko.observable(false);
10551 target.editAlertDataHandler = sf_editAlertDataHandler;
10552 target.editAlertDataSaveHandler = sf_editAlertDataSaveHandler;
10553 target.editAlertDataCancelHandler = sf_editAlertDataCancelHandler;
10554 target.viewEditUsedTime = ko.observable(false);
10555 target.editUsedTimeHandler = sf_editUsedTimeHandler;
10556 target.saveUsedTime = sf_saveUsedTime;
10557 target.editUsedTimeSaveHandler = sf_editUsedTimeSaveHandler;
10558 target.editUsedTimeCancelHandler = sf_editUsedTimeCancelHandler;
10559 target.viewEditTotalTime = ko.observable(false);
10560 target.editTotalTimeHandler = sf_editTotalTimeHandler ;
10561 target.editTotalTimeSaveHandler = sf_editTotalTimeSaveHandler;
10562 target.editTotalTimeCancelHandler = sf_editTotalTimeCancelHandler;
10563 target.viewEditAlertTime = ko.observable(false);
10564 target.editAlertTimeHandler = sf_editAlertTimeHandler;
10565 target.editAlertTimeSaveHandler = sf_editAlertTimeSaveHandler;
10566 target.editAlertTimeCancelHandler = sf_editAlertTimeCancelHandler;
10567 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
zw.wangcfae4372024-08-12 16:41:12 +080010568
mj.qu19ac6692024-08-21 19:18:36 -070010569
10570 // ��������������
zw.wangcfae4372024-08-12 16:41:12 +080010571 function sf_alertDataReachDesc() {
10572 if(isNaN(target.limitDataMonth() * target.selectedDataUnit() * target.alertDataReach())) {
10573 target.alertDataReachDescData(target.alertDataReach() + ', ');
10574 return $.i18n.prop('traffic_alert_reach_text', target.alertDataReach(), ' ');
10575 }
10576
10577 var s_value = transUnit(target.limitDataMonth() * target.selectedDataUnit() * target.alertDataReach() * 1048576 / 100, false);
10578 target.alertDataReachDescData(target.alertDataReach() + ',' + s_value);
10579 return $.i18n.prop('traffic_alert_reach_text', target.alertDataReach(), s_value);
10580 }
mj.qu19ac6692024-08-21 19:18:36 -070010581 // ʱ������������
zw.wangcfae4372024-08-12 16:41:12 +080010582 function sf_alertTimeReachDesc() {
10583 if(isNaN(target.limitTimeMonth() * target.alertTimeReach())) {
10584 target.alertTimeReachDescData(target.alertTimeReach() + ', ');
10585 return $.i18n.prop('traffic_alert_reach_text', target.alertTimeReach(), ' ');
10586 }
10587 var s_value = transSecond2Time(target.limitTimeMonth() * target.selectedTimeUnit() * target.alertTimeReach() / 100);
10588 target.alertTimeReachDescData(target.alertTimeReach() + ',' + s_value);
10589 return $.i18n.prop('traffic_alert_reach_text', target.alertTimeReach(), s_value);
10590 }
mj.qu19ac6692024-08-21 19:18:36 -070010591
10592
10593 // ��������ֵȡ���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010594 function sf_editAlertDataCancelHandler() {
10595 target.alertDataReach(sv_trafficStaticalInfo.getEle('editAlertData').data('oldValue'));
10596 target.viewEditAlertData(false);
10597 }
mj.qu19ac6692024-08-21 19:18:36 -070010598
10599 // ��������ֵ�༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010600 function sf_editAlertDataHandler() {
10601 sv_trafficStaticalInfo.getEle('editAlertData').data('oldValue', target.alertDataReach());
10602 target.viewEditAlertData(true);
10603 }
mj.qu19ac6692024-08-21 19:18:36 -070010604
10605 // ��������ֵ�����༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010606 function sf_editAlertDataSaveHandler() {
10607 if (sv_trafficStaticalInfo.getEle('alertDataReach').valid()) {
10608 target.viewEditAlertData(false);
10609 }
10610 }
mj.qu19ac6692024-08-21 19:18:36 -070010611
10612 // ʱ������ֵȡ���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010613 function sf_editAlertTimeCancelHandler() {
10614 target.alertTimeReach(sv_trafficStaticalInfo.getEle('editAlertTime').data('oldValue'));
10615 target.viewEditAlertTime(false);
10616 }
mj.qu19ac6692024-08-21 19:18:36 -070010617 // ʱ������ֵ�༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010618 function sf_editAlertTimeHandler() {
10619 sv_trafficStaticalInfo.getEle('editAlertTime').data('oldValue', target.alertTimeReach());
10620 target.viewEditAlertTime(true);
10621 }
mj.qu19ac6692024-08-21 19:18:36 -070010622 // ʱ������ֵ�����༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010623 function sf_editAlertTimeSaveHandler() {
10624 if (sv_trafficStaticalInfo.getEle('alertTimeReach').valid()) {
10625 target.viewEditAlertTime(false);
10626 }
10627 }
mj.qu19ac6692024-08-21 19:18:36 -070010628
10629 // �ײ������༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010630 function sf_editTotalDataHandler() {
10631 sv_trafficStaticalInfo.getEle('editTotalData').data('oldValue', target.limitDataMonth());
10632 sv_trafficStaticalInfo.getEle('selectedDataUnit').data('oldValue', target.selectedDataUnit());
10633 target.viewEditTotalData(true);
10634 }
mj.qu19ac6692024-08-21 19:18:36 -070010635
10636 // �ײ����������༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010637 function sf_editTotalDataSaveHandler() {
10638 if (sv_trafficStaticalInfo.getEle('limitDataMonth').valid()) {
10639 target.usedDataText(transUnit(target.limitDataMonth() * target.selectedDataUnit() * 1048576, false));
10640 target.viewEditTotalData(false);
10641 }
10642 }
mj.qu19ac6692024-08-21 19:18:36 -070010643
10644 // �ײ�����ȡ���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010645 function sf_editTotalDataCancelHandler() {
10646 target.limitDataMonth(sv_trafficStaticalInfo.getEle('editTotalData').data('oldValue'));
10647 target.selectedDataUnit(sv_trafficStaticalInfo.getEle('selectedDataUnit').data('oldValue'));
10648 target.viewEditTotalData(false);
10649 }
mj.qu19ac6692024-08-21 19:18:36 -070010650 // �ײ�ʱ��ȡ���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010651 function sf_editTotalTimeCancelHandler() {
10652 target.limitTimeMonth(sv_trafficStaticalInfo.getEle('editTotalTime').data('oldValue'));
10653 target.viewEditTotalTime(false);
10654 }
mj.qu19ac6692024-08-21 19:18:36 -070010655 // �ײ�ʱ���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010656 function sf_editTotalTimeHandler() {
10657 sv_trafficStaticalInfo.getEle('editTotalTime').data('oldValue', target.limitTimeMonth());
10658 target.viewEditTotalTime(true);
10659 }
mj.qu19ac6692024-08-21 19:18:36 -070010660 // �ײ�ʱ�䱣���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010661 function sf_editTotalTimeSaveHandler() {
10662 if (sv_trafficStaticalInfo.getEle('limitTimeMonth').valid()) {
10663 target.viewEditTotalTime(false);
10664 }
10665 }
10666
mj.qu19ac6692024-08-21 19:18:36 -070010667 // ��������ȡ���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010668 function sf_editUsedDataCancelHandler() {
10669 target.dataUsed(sv_trafficStaticalInfo.getEle('editUsedData').data('oldValue'));
10670 target.selectedDataUsedUnit(sv_trafficStaticalInfo.getEle('selectedDataUsedUnit').data('oldValue'));
10671 sv_trafficStaticalInfo.getEle('editUsedDataCancel').siblings('label.error').hide();
10672 target.viewEditUsedData(false);
10673 }
mj.qu19ac6692024-08-21 19:18:36 -070010674 // ���������༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010675 function sf_editUsedDataHandler() {
10676 sv_trafficStaticalInfo.getEle('editUsedData').data('oldValue', target.dataUsed());
10677 sv_trafficStaticalInfo.getEle('selectedDataUsedUnit').data('oldValue', target.selectedDataUsedUnit());
10678 target.dataUsed(target.dataUsed());
10679 target.viewEditUsedData(true);
10680 }
mj.qu19ac6692024-08-21 19:18:36 -070010681 // �����������水ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010682 function sf_editUsedDataSaveHandler() {
10683 if (sv_trafficStaticalInfo.getEle('dataUsed').valid()) {
10684 sv_usedDataModified = true;
10685 target.viewEditUsedData(false);
10686 }
10687 }
mj.qu19ac6692024-08-21 19:18:36 -070010688 // ����ʱ��ȡ���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010689 function sf_editUsedTimeCancelHandler() {
10690 target.usedTime(sv_trafficStaticalInfo.getEle('editUsedTime').data('oldValue'));
10691 target.viewEditUsedTime(false);
10692 }
mj.qu19ac6692024-08-21 19:18:36 -070010693 // ����ʱ���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010694 function sf_editUsedTimeHandler() {
10695 sv_trafficStaticalInfo.getEle('editUsedTime').data('oldValue', target.usedTime());
10696 target.viewEditUsedTime(true);
10697 }
10698
mj.qu19ac6692024-08-21 19:18:36 -070010699 // ����ʱ�䱣���༭��ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010700 function sf_editUsedTimeSaveHandler() {
10701 if (sv_trafficStaticalInfo.getEle('usedTime').valid()) {
10702 target.monthlyConnectedTime(transSecond2Time(parseFloat(target.usedTime()) * target.selectedTimeUsedUnit()));
10703 target.viewEditUsedTime(false);
10704 sv_usedTimeModified = true;
10705 }
10706 }
10707
mj.qu19ac6692024-08-21 19:18:36 -070010708 // ʣ������������
zw.wangcfae4372024-08-12 16:41:12 +080010709 function sf_leftDataDesc() {
10710 var s_left = (target.limitDataMonth() * target.selectedDataUnit() - target.dataUsed() * target.selectedDataUsedUnit()) * 1048576;
10711 if(s_left < 0) {
10712 s_left = 0;
10713 }
10714
10715 if(isNaN(s_left)) {
10716 target.leftDataDescData('');
10717 return $.i18n.prop('traffic_data_left_text', ' ');
10718 }
10719
10720 target.leftDataDescData(transUnit(s_left, false));
10721 return $.i18n.prop('traffic_data_left_text', transUnit(s_left, false));
10722 }
mj.qu19ac6692024-08-21 19:18:36 -070010723 //ʣ��ʱ��������
zw.wangcfae4372024-08-12 16:41:12 +080010724 function sf_leftTimeDesc() {
10725 var s_surplus = target.limitTimeMonth() * target.selectedTimeUnit() - sv_trafficStaticalInfo.getTrafficTimeToSeconds(target.monthlyConnectedTime());
10726 if(s_surplus < 0) {
10727 s_surplus = 0;
10728 }
10729
10730 if(isNaN(s_surplus)) {
10731 target.leftTimeDescData(' ');
10732 return $.i18n.prop('traffic_data_left_text', ' ');
10733 }
10734 target.leftTimeDescData(transSecond2Time(s_surplus));
10735 return $.i18n.prop('traffic_data_left_text', transSecond2Time(s_surplus));
10736 }
mj.qu19ac6692024-08-21 19:18:36 -070010737 // �ײ�����������
zw.wangcfae4372024-08-12 16:41:12 +080010738 function sf_limitDataMonthDesc() {
10739 if(isNaN(target.limitDataMonth())) {
10740 target.limitDataMonthDescData("");
10741 return $.i18n.prop('traffic_limit_data_text', ' ');
10742 }else{
10743 // todo
10744 }
mj.qu19ac6692024-08-21 19:18:36 -070010745
zw.wangcfae4372024-08-12 16:41:12 +080010746 target.limitDataMonthDescData(target.limitDataMonth() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUnit()));
10747 return $.i18n.prop('traffic_limit_data_text', target.limitDataMonth() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUnit()));
10748 }
mj.qu19ac6692024-08-21 19:18:36 -070010749 // �ײ�ʱ��������
zw.wangcfae4372024-08-12 16:41:12 +080010750 function sf_limitTimeMonthDesc() {
10751 if(isNaN(target.limitTimeMonth())) {
10752 target.limitTimeMonthDescData(' ');
10753 target.limitTimeMonthDescText('traffic_limit_time_h');
10754 return $.i18n.prop('traffic_limit_time_h', ' ');
10755 }else{
10756 // todo:
10757 }
mj.qu19ac6692024-08-21 19:18:36 -070010758
zw.wangcfae4372024-08-12 16:41:12 +080010759 target.limitTimeMonthDescData(target.limitTimeMonth());
mj.qu19ac6692024-08-21 19:18:36 -070010760
zw.wangcfae4372024-08-12 16:41:12 +080010761 if(target.selectedTimeUnit() == "60"){
10762 target.limitTimeMonthDescText('traffic_limit_time_m');
10763 return $.i18n.prop('traffic_limit_time_m', target.limitTimeMonth());
10764 }else{
10765 target.limitTimeMonthDescText('traffic_limit_time_h');
10766 return $.i18n.prop('traffic_limit_time_h', target.limitTimeMonth());
10767 }
10768 }
mj.qu19ac6692024-08-21 19:18:36 -070010769
10770 // Ӧ�ð�ť�¼�
zw.wangcfae4372024-08-12 16:41:12 +080010771 function sf_save() {
10772 if (sv_trafficStaticalInfo.isFormEditable(target) && target.dataLimitChecked() == '1') {
10773 return false;
10774 }
mj.qu19ac6692024-08-21 19:18:36 -070010775
zw.wangcfae4372024-08-12 16:41:12 +080010776 if (target.selectedDataUnit() == '1' && target.selectedDataUsedUnit() == '1048576' && target.dataLimitTypeChecked() == "1" && target.dataLimitChecked() == '1' && !(parseInt(target.dataUsed(), 10) < parseInt('4096', 10)) ) {
10777 showAlert('traffic_over_note');
10778 return false;
10779 }
mj.qu19ac6692024-08-21 19:18:36 -070010780
zw.wangcfae4372024-08-12 16:41:12 +080010781 showLoading();
10782 service.setTrafficAlertInfo({
10783 alertDataReach: parseInt(target.alertDataReach(), 10),
10784 alertTimeReach: parseInt(target.alertTimeReach(), 10),
10785 dataLimitChecked: target.dataLimitChecked(),
10786 dataLimitTypeChecked: target.dataLimitTypeChecked(),
10787 limitDataMonth: target.limitDataMonth() + "_" + target.selectedDataUnit(),
10788 limitTimeMonth: target.selectedTimeUnit() == "60" ? target.limitTimeMonth()/60 : target.limitTimeMonth()//save by hours
10789 }, function (data) {
10790 if (data.result == 'success') {
10791 if(target.dataLimitTypeChecked() == "1" && sv_usedDataModified) {
10792 target.saveUsedData();
10793 } else if(target.dataLimitTypeChecked() == "0" && sv_usedTimeModified) {
10794 target.saveUsedTime();
10795 } else {
10796 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
10797 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
10798 status.setTrafficAlertPopuped(false);
10799 successOverlay();
10800 }
10801 } else {
10802 errorOverlay();
10803 }
10804 }, function () {
10805 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
10806 errorOverlay();
10807 });
10808 }
mj.qu19ac6692024-08-21 19:18:36 -070010809
10810 // ����������������
zw.wangcfae4372024-08-12 16:41:12 +080010811 function sf_saveUsedData() {
10812 var val = target.dataUsed() * target.selectedDataUsedUnit();
10813 service.trafficCalibration({
10814 way: 'data',
10815 value: val
10816 }, function(){
10817 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
10818 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
10819 successOverlay();
10820 target.viewEditUsedData(false);
10821 status.setTrafficAlertPopuped(false);
10822 sv_usedDataModified = false;
10823 }, function(){
10824 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
10825 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
10826 errorOverlay();
10827 });
10828 }
10829
10830
mj.qu19ac6692024-08-21 19:18:36 -070010831
zw.wangcfae4372024-08-12 16:41:12 +080010832 function sf_saveUsedTime() {
10833 service.trafficCalibration({
10834 way: 'time',
10835 value: target.selectedTimeUsedUnit() == "60" ? parseFloat(target.usedTime())/60 : target.usedTime()
10836 }, function(){
10837 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
10838 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
10839 successOverlay();
10840 target.monthlyConnectedTime(transSecond2Time(parseFloat(target.usedTime()) * target.selectedTimeUsedUnit()));
10841 target.viewEditUsedTime(false);
10842 status.setTrafficAlertPopuped(false);
10843 sv_usedTimeModified = false;
10844 }, function(){
10845 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
10846 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
10847 errorOverlay();
10848 });
10849 }
10850
mj.qu19ac6692024-08-21 19:18:36 -070010851
10852 // ��������������
zw.wangcfae4372024-08-12 16:41:12 +080010853 function sf_usedDataTextDesc() {
10854 if(isNaN(target.dataUsed())) {
10855 target.usedDataTextDescData("");
10856 return $.i18n.prop('traffic_used_text', ' ');
10857 }
10858 target.usedDataTextDescData(target.dataUsed() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUsedUnit()));
10859 return $.i18n.prop('traffic_used_text', target.dataUsed() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUsedUnit()));
10860 }
mj.qu19ac6692024-08-21 19:18:36 -070010861 // ����ʱ��������
zw.wangcfae4372024-08-12 16:41:12 +080010862 function sf_usedTimeTextDesc() {
10863 target.usedTimeTextDescData(target.monthlyConnectedTime());
10864 return $.i18n.prop('traffic_used_text', target.monthlyConnectedTime());
10865 }
10866
mj.qu19ac6692024-08-21 19:18:36 -070010867
zw.wangcfae4372024-08-12 16:41:12 +080010868 }
mj.qu19ac6692024-08-21 19:18:36 -070010869
zw.wangcfae4372024-08-12 16:41:12 +080010870 function init() {
10871 sv_trafficGraph = echarts.init($("#traffic_graphic")[0]);
10872 window.onresize = sv_trafficGraph.resize;
10873 var s_container = $('#container');
10874 ko.cleanNode(s_container[0]);
10875 var fwVm = new trafficViewModel();
10876 ko.applyBindings(fwVm, s_container[0]);
10877 $('#trafficAlertForm').validate({
10878 submitHandler: function () {
10879 fwVm.save();
10880 },
mj.qu19ac6692024-08-21 19:18:36 -070010881
10882
zw.wangcfae4372024-08-12 16:41:12 +080010883 errorPlacement: function (error, para) {
10884 if (para.attr("name") == "alertDataReach") {
10885 error.insertAfter("#editAlertDataDiv");
10886 } else if (para.attr("name") == "alertTimeReach") {
10887 error.insertAfter("#editAlertTimeDiv");
10888 } else if (para.attr("name") == "dataUsed") {
10889 error.insertAfter("#editUsedDataDiv");
10890 } else if (para.attr("name") == "limitDataMonth") {
10891 error.insertAfter("#editTotalDataDiv");
10892 } else if (para.attr("name") == "limitTimeMonth") {
10893 error.insertAfter("#editTotalTimeDiv");
10894 } else if (para.attr("name") == "usedTime") {
10895 error.insertAfter("#editUsedTimeDiv");
10896 } else {
10897 error.insertAfter(para);
10898 }
10899 },
10900
10901 rules: {
10902 alertDataReach: {
10903 range: [ 1, 100 ],
10904 digits: true
10905 },
10906 alertTimeReach: {
10907 range: [ 1, 100 ],
10908 digits: true
10909 },
10910 dataUsed: {
10911 range : [ 0, 9999 ],
10912 decimalRange : true
10913 },
10914 limitDataMonth: {
10915 range : [ 1, 9999 ],
10916 decimalRange : true
10917 },
10918 limitTimeMonth: {
10919 range : [ 1, 9999 ],
10920 decimalRange : true
10921 },
10922 usedTime: {
10923 range : [ 0, 9999 ],
10924 decimalRange : true
10925 }
10926 }
mj.qu19ac6692024-08-21 19:18:36 -070010927
zw.wangcfae4372024-08-12 16:41:12 +080010928 });
mj.qu19ac6692024-08-21 19:18:36 -070010929
zw.wangcfae4372024-08-12 16:41:12 +080010930 var sv_originalLan = window.language;
10931 window.setInterval(function(){
10932 if(sv_originalLan != window.language){
10933 sv_originalLan = window.language;
10934 sv_trafficStaticalInfo.refreshFlowDiagramInfo(fwVm);
10935 }
10936 }, 1000);
10937
10938 }
10939
10940 return {
10941 init: init
10942 };
10943});
10944
mj.qu19ac6692024-08-21 19:18:36 -070010945// ״̬����ʾ��ʵ��
zw.wangcfae4372024-08-12 16:41:12 +080010946define("tooltip",[ "jquery" ],
mj.qu19ac6692024-08-21 19:18:36 -070010947
zw.wangcfae4372024-08-12 16:41:12 +080010948 function($) {
10949
10950
mj.qu19ac6692024-08-21 19:18:36 -070010951 // ����Ԫ��λ����Ϣ
zw.wangcfae4372024-08-12 16:41:12 +080010952 // @method calculatePositionInfo
mj.qu19ac6692024-08-21 19:18:36 -070010953 // @param trigger Ԫ��
10954 // @param tooltip ״̬��
10955 // @param {JSON} config �����
10956
zw.wangcfae4372024-08-12 16:41:12 +080010957 function calculatePositionInfo(trigger, tooltip, config) {
10958 var top = trigger.offset().top;
10959 var left = trigger.offset().left;
10960 var position = config.position[0];
10961 var height = tooltip.outerHeight() + trigger.outerHeight();
10962 var width = tooltip.outerWidth() + trigger.outerWidth();
10963
10964 top -= tooltip.outerHeight() - config.offset[0];
10965 left += trigger.outerWidth() + config.offset[1];
10966
10967 if (/iPad/i.test(navigator.userAgent)) {
10968 top -= $(window).scrollTop();
10969 }
10970
10971 if (position == 'center') {
10972 top += height / 2;
10973 }
10974 if (position == 'bottom') {
10975 top += height;
10976 }
10977 position = config.position[1];
10978 if (position == 'center') {
10979 left -= width / 2;
10980 }else if (position == 'left') {
10981 left -= width;
10982 }
mj.qu19ac6692024-08-21 19:18:36 -070010983
zw.wangcfae4372024-08-12 16:41:12 +080010984 return {
10985 top : top,
10986 left : left
10987 };
10988 }
mj.qu19ac6692024-08-21 19:18:36 -070010989
10990 // ״̬����ʼ��
zw.wangcfae4372024-08-12 16:41:12 +080010991 function init() {
10992
10993 $(".statusItem", "#statusBar").each(function(i, n){
10994 var $this = $(this);
10995 $this.attr("tipTitle", $this.attr("title")).removeAttr("title");
10996 }).hover(
10997 function() {
10998 var $this = $(this);
10999 var title = $this.attr("tipTitle");
11000 var tooltip = $("<div>").addClass("tooltip in").appendTo(document.body).hide()
11001 .append($this.attr("i18n") ? $.i18n.prop(title) : title);
11002 if ($this.attr("i18n")) {
11003 tooltip.attr("data-trans", title).attr("id", "tooltip_" + $this.attr("id"));
11004 }
11005 var pos = calculatePositionInfo($this, tooltip, {
11006 position : [ 'bottom', 'center' ],
11007 offset : [ 0, 0 ]
11008 });
11009 tooltip.css({
11010 position : 'absolute',
11011 top : pos.top,
11012 left : pos.left
11013 }).show();
11014 }, function() {
11015 $(".tooltip").hide().remove();
11016 });
11017 }
mj.qu19ac6692024-08-21 19:18:36 -070011018
zw.wangcfae4372024-08-12 16:41:12 +080011019 return {
11020 init : init
11021 };
11022 });
11023
11024define("menu","set service knockout underscore jquery".split(" "),
11025 function (set, fnc, libko, libus, libjq) {
11026 var displayMenuWhenLogout = false;
11027 var vmMenu;
11028 var menu = [];
11029 var menuResource = "";
11030
11031 function menuExistCheck(path) {
11032 for (var i = 0; i < menu.length; i++) {
11033 if (menu[i].path == path) {
11034 return true;
11035 }
11036 }
11037 return false;
11038 }
11039
11040 function getIsLoggedin() {
11041 var loginStatus = fnc.getLoginStatus();
11042 return (loginStatus.status == "loggedIn");
11043 }
11044
11045 function buildNew() {
11046 var loggedIn = getIsLoggedin();
11047 var menuMain = libus.filter(menu, function (param) {
11048 return (param.level == '1' && ((param.requireLogin && loggedIn) || !param.requireLogin) && param.hash != "#entry");
11049 });
11050 vmMenu.menuMain(menuMain);
11051 vmMenu.loggedIn(loggedIn);
11052
11053 getMainWth(vmMenu.menuMain().length);
11054 vmMenu.showMenu(loggedIn || displayMenuWhenLogout);
11055 libjq("#nav").translate();
11056 }
11057
11058 function getMainWth(len) {
11059 var width = 100 / len;
11060 libjq('ul#list-nav li').each(function () {
11061 libjq(this).css('width', width + '%');
11062 });
11063 }
11064
11065 function menuRefresh() {
11066 var currentHash = window.location.hash;
11067 var itmRoot = libus.find(menu, function (param) {
11068 return param.hash == currentHash;
11069 });
11070 while (itmRoot.parent) {
11071 itmRoot = libus.find(menu, function (param) {
11072 return param.hash == itmRoot.parent;
11073 });
11074 }
11075 if (!itmRoot.parent) {
11076 libjq("#list-nav li").removeClass("active");
11077 var mid = itmRoot.hash.substring(1, itmRoot.hash.length);
11078 libjq("#list-nav li[mid=" + mid + "]").addClass("active");
11079 }
11080 vmMenu.changeMenu(itmRoot);
11081 }
11082
11083 function menuSearch(hashVal) {
11084 hashVal = hashVal || window.location.hash;
11085 var loggedIn = getIsLoggedin();
11086 return libus.filter(menu, function (param) {
11087 return (hashVal == param.hash && ((param.requireLogin && loggedIn) || !param.requireLogin));
11088 });
11089 }
11090
11091 function menuRenderSub(level, baseItem) {
11092 var levelItem = libus.find(menu, function (param) {
11093 return param.parent == baseItem.hash && param.path == baseItem.path;
11094 });
11095 libjq(".menu-" + level + "-level").removeClass("active");
11096 if (levelItem) {
11097 if (level == "two") {
11098 menuRenderSub("three", levelItem);
11099 //forward/backward support
11100 clickMenuTrig(levelItem.hash, level);
11101 }
11102 libjq(".menu-" + level + "-level." + levelItem.hash.substring(1)).addClass("active");
11103 }
11104 }
11105
11106 function menuActSub() {
11107 var currentHash = window.location.hash;
11108 var itmRoot = libus.find(menu, function (param) {
11109 return param.hash == currentHash;
11110 });
11111 if (itmRoot.level == 1) {
11112 menuRenderSub("two", itmRoot);
11113 }
11114 if (itmRoot.level == 2) {
11115 menuRenderSub("three", itmRoot);
11116 //forward/backward support
11117 clickMenuTrig(itmRoot.hash, itmRoot.level);
11118 }
11119 if (itmRoot.level == 3) {
11120 //forward/backward support
11121 clickMenuTrig(itmRoot.parent, itmRoot.level);
11122 libjq(".menu-three-level").removeClass("active");
11123 libjq(".menu-three-level." + itmRoot.hash.substring(1)).addClass("active");
11124 }
11125 }
11126
11127 function clickMenuTrig(hash, level) {
11128 libjqobj = libjq(".menu-two-level." + hash.substring(1));
11129 var levelArr = ['3', 'three', '2', 'two'];
11130 if (libus.indexOf(levelArr, level) != -1 && libjqobj.hasClass('active')) {
11131 return;
11132 }
11133
11134 libjqobj.siblings().removeClass('active');
11135 libjqobj.addClass('active');
11136
11137 libjqobj.siblings().not('.menu-two-level').slideUp();
11138 libjqobj.next().has('ul li').slideDown();
11139 }
11140
11141 set.blc_wan_mode = fnc.getOpMode().blc_wan_mode;
11142 if (!set.RJ45_SUPPORT) {
11143 menuResource = "menu";
11144 } else {
11145 switch (set.blc_wan_mode) {
11146 case "PPPOE":
11147 case "AUTO_PPPOE":
11148 menuResource = "menu_pppoe";
11149 break;
11150 default:
11151 menuResource = "menu";
11152 break;
11153 }
11154 }
11155
11156 require([set.DEVICE + '/' + menuResource], function (otherMenu) {
11157 menu = otherMenu;
11158 if (set.SD_CARD_SUPPORT) {
11159 menu = menu.concat([{ hash: '#httpshare_guest', path: 'sd_httpshare', level: '', requireLogin: false, checkSIMStatus: false},
11160 { hash: '#sdcard', path: 'sd', level: '', requireLogin: true, checkSIMStatus: false},
11161 { hash: '#httpshare', path: 'sd_httpshare', level: '', requireLogin: true, checkSIMStatus: false}]);
11162 }
11163 });
11164
11165 function initialize() {
11166 vmMenu = new Menu_vm();
11167 }
11168
11169 function Menu_vm() {
11170 var loginState = getIsLoggedin();
11171 var target = this;
11172 target.loggedIn = libko.observable(loginState);
11173
11174 target.showMenu = libko.observable(loginState || displayMenuWhenLogout);
11175
11176 var menuMain = libus.filter(menu, function (param) {
11177 return (param.level == '1' && ((param.requireLogin && target.loggedIn()) || !param.requireLogin) && param.hash != "#entry");
11178 });
11179
11180 target.menuMain = libko.observableArray(menuMain);
11181 target.secondMenu = libko.observableArray([]);
11182 //target.curThirdMenu; cov_2
11183 target.changeMenu = function (data) {
11184 var secondMenu = getSubMenu(data);
11185 if (secondMenu.length == 0) {
11186 libjq("#container").addClass("fixContainerWidth");
11187 } else {
11188 libjq("#container").removeClass("fixContainerWidth");
11189 }
11190
11191 target.secondMenu(secondMenu);
11192 return true;
11193 };
11194 target.thirdMenu = function () {
11195 return target.curThirdMenu;
11196 };
11197 target.getThirdMenu = function (data) {
11198 target.curThirdMenu = getSubMenu(data);
11199 };
11200 function getSubMenu(data) {
11201 return libus.filter(menu, function (param) {
11202 return ((param.parent && param.parent == data.hash) && ((param.requireLogin && target.loggedIn()) || !param.requireLogin));
11203 });
11204 }
11205 }
11206
11207 return {
11208 activeSubMenu: menuActSub,
11209 checkIsMenuExist: menuExistCheck,
11210 findMenu: menuSearch,
11211 rebuild: buildNew,
11212 refreshMenu: menuRefresh,
11213 init: initialize
11214 };
11215});