From 6b3ba9ad6707e0331b1fffee39709906fc1c104d Mon Sep 17 00:00:00 2001 From: "ming.hong" Date: Wed, 20 Nov 2024 14:21:00 +0800 Subject: [PATCH] 2.0.7.69 --- Aida/airelay_init.html | 16 +- Aida/alarm.html | 144 ++++++++++-- Aida/alarm.js | 224 ++++++++++++++++--- Aida/alarm_on_airelay.html | 46 ++-- Aida/alarm_on_airelay.js | 87 +++----- Aida/alarm_on_nvr.html | 117 ++++++++-- Aida/codemirror.min.css | 435 +------------------------------------ Aida/cool_counter.js | 2 +- Aida/heatmap.js | 2 +- Aida/images/blank.gif | Bin 43 -> 0 bytes Aida/images/loading.gif | Bin 1737 -> 0 bytes Aida/index.html | 2 +- Aida/label_names.js | 16 +- Aida/lang.js | 10 +- Aida/lilin.png | Bin 19377 -> 6420 bytes Aida/menu_on_nvr.html | 2 +- Aida/ptz.js | 2 +- Aida/python.html | 74 ++----- Aida/python.min.js | 126 +---------- Aida/setting.html | 210 +++++++++--------- Aida/setting_on_nvr.html | 214 +++++++++--------- Aida/speed_index.js | 2 +- 22 files changed, 730 insertions(+), 1001 deletions(-) delete mode 100644 Aida/images/blank.gif delete mode 100644 Aida/images/loading.gif diff --git a/Aida/airelay_init.html b/Aida/airelay_init.html index 4f2fc04..1d90264 100644 --- a/Aida/airelay_init.html +++ b/Aida/airelay_init.html @@ -147,7 +147,8 @@ script.onload = function () { // console.log('[script ' + currentIndex + '] ' + src + ' has been successfully loaded'); index++; - setTimeout(loadNextScript, interval); // 加載下一個腳本之前等待一段時間 + // setTimeout(loadNextScript, interval); // 加載下一個腳本之前等待一段時間 + loadNextScript(); // 2024-11-05 被抱怨等太久,取消 setTimeout 機制 loadCount++; }; @@ -183,7 +184,7 @@ function preloadImagesWithDelay() { var imgIndex = 0; - var interval = 150; // 每次迭代之間的延遲時間,單位是毫秒 + var interval = 10; //150; // 每次迭代之間的延遲時間,單位是毫秒 function loadNextImage() { if (imgIndex < imagesToPreload.length) { @@ -197,7 +198,9 @@ link.onload = function () { // console.log('[img ' + imgIndex + '] ' + src + ' has been successfully preloaded'); imgIndex++; - setTimeout(loadNextImage, interval); // 加載下一個影像之前等待一段時間 + + // setTimeout(loadNextImage, interval); // 加載下一個影像之前等待一段時間 + loadNextImage(); // 2024-11-05 被抱怨等太久,取消 setTimeout 機制 }; link.onerror = function () { @@ -352,9 +355,8 @@ // -------------------------------------------------------------------------------- - var checkIntervalTime = 500; - var hideLoadPageDeferTime = 1500; - var preloadImgDisplayTime = 500; + var checkIntervalTime = 100; + var hideLoadPageDeferTime = 500;//1500; var intervalID = null; var checkPercentageStuckCounter = 0; var percentage = 0; @@ -599,7 +601,7 @@ localStorage.setItem('current_state_hide_or_open_label', 0); } else { - localStorage.setItem('current_state_hide_or_open_label', 1); + localStorage.setItem('current_state_hide_or_open_label', 0); } } diff --git a/Aida/alarm.html b/Aida/alarm.html index 473a058..f8fe276 100644 --- a/Aida/alarm.html +++ b/Aida/alarm.html @@ -1970,7 +1970,64 @@ } } } - click_canvas_all = count_zone; + + // 08-24 確認是否有設定警戒線的 Zone,額外再加上紅線物件 + var arrow_num = 0; + for (var index_zone = 0; index_zone < count_zone; index_zone++) { + // console.log(`[func_show_all_zone] check current_trigger[${index_zone}]: ${current_trigger[index_zone]}`); + + // 比照 func_listen_to_enable_or_disable_show_direction 開啟紅線物件可見性的條件 + if ( + current_trigger[index_zone] == 4 + || current_trigger[index_zone] == 17 + || current_trigger[index_zone] == 18 + || current_trigger[index_zone] == 19 + ) { + arrow_num++; + var arrow_obj = null; + // ------------------------------------------------------ + // 比照 clone 寫法位置會有問題,改仿照 Edit_Arrow 內部流程新增紅線物件 + // if (index_zone == 0) + // { + // arrow_obj = fabric.util.object.clone(canvasTripwire1.getObjects()[1]); + // } + // else if (index_zone == 1) + // { + // arrow_obj = fabric.util.object.clone(canvasTripwire2.getObjects()[1]); + // } + // else if (index_zone == 2) + // { + // arrow_obj = fabric.util.object.clone(canvasTripwire3.getObjects()[1]); + // } + // else if (index_zone == 3) + // { + // arrow_obj = fabric.util.object.clone(canvasTripwire4.getObjects()[1]); + // } + + // console.log("clone arrow_obj:"); + // console.log(arrow_obj); + // ------------------------------------------------------ + // 參照 Edit_Arrow + points_array = GetPointLocation(index_zone); + + var index_point = g_mydirection[g_zone_id] - 1; + var next_point = index_point + 1 >= 4 ? 0 : index_point + 1; + var start_x = points_array[next_point].x; + var start_y = points_array[next_point].y; + var end_x = points_array[index_point].x; + var end_y = points_array[index_point].y; + + arrow_obj = AddArrowObject(start_x, start_y, end_x, end_y) + arrow_obj.visible = true; + // ------------------------------------------------------ + if (arrow_obj != null) { + canvasTripwire_all.add(arrow_obj); + } + } + } + + // click_canvas_all = count_zone; + click_canvas_all = count_zone + arrow_num; // 確保多新增的紅線物件不會馬上被 RefreshCanvasObject 保護物件數量參數給清除掉 canvasTripwire_all.requestRenderAll(); //document.getElementById('IDOK').disabled = true; @@ -4286,7 +4343,7 @@ disabelIteraction(canvasTripwire7.getObjects()[0]); Edit8(); } - + func_getbar(); show_tof_map(); } @@ -4455,28 +4512,35 @@ } function func_seteventsfile(json_data) { + waitSeconds(100); $.ajax({ url: "/seteventsfile", method: "POST", async: false, data: json_data, - contentType: false, + //contentType: false, processData: false, + timeout: 5000, + cache: false, + xhrFields: { + withCredentials: true // 設置為 true 如果需要帶上 Cookies 或其他認證 + }, + contentType: 'text/plain', // 傳送純文本 beforeSend: function (xmlHttp) { xmlHttp.setRequestHeader("If-Modified-Since", "0"); xmlHttp.setRequestHeader("Cache-Control", "no-cache"); //xmlHttp.setRequestHeader("Authorization", "Basic " + btoa("username:password")); }, - success: function () { + success: function (retdata) { //console.info(); }, - error: function () { - console.warn(); + error: function (retdata) { + console.warn(retdata); k_index++; if (k_index <= 94) { - waitSeconds(500); + waitSeconds(1000); func_seteventsfile(json_data); } } @@ -4485,27 +4549,34 @@ } function func_setconfigfile(json_data) { + waitSeconds(100); $.ajax({ url: "/setconfigfile", method: "POST", async: false, data: json_data, - contentType: false, + //contentType: false, processData: false, + timeout: 5000, + cache: false, + xhrFields: { + withCredentials: true // 設置為 true 如果需要帶上 Cookies 或其他認證 + }, + contentType: 'text/plain', // 傳送純文本 beforeSend: function (xmlHttp) { xmlHttp.setRequestHeader("If-Modified-Since", "0"); xmlHttp.setRequestHeader("Cache-Control", "no-cache"); //xmlHttp.setRequestHeader("Authorization", "Basic " + btoa("username:password")); }, - success: function () { + success: function (retdata) { //console.info(); }, - error: function () { - console.warn(); + error: function (retdata) { + console.warn(retdata); k_index++; if (k_index <= 94) { - waitSeconds(500); + waitSeconds(1000); func_setconfigfile(json_data); } } @@ -6814,8 +6885,11 @@ var json_data = '{"view_setting":{"camera01":{"obj_max_proportion": "' + obj_max_proportion; json_data += '","obj_min_proportion": "' + obj_min_proportion + '","enable_traffic": "' + enable_traffic + '","enable_unknown_object": "' + enable_unknown_object + '","enable_track": "' + enable_track; json_data += '","confidence2": "' + confidence_traffic + '","count_zone": ' + count_zone; - json_data += ',"detection_zone":['; + json_data += '}}}'; + func_setconfigfile(json_data); + json_data = '{"view_setting":{"camera01":{'; + json_data += '"detection_zone":['; json_data += '{"enable_direction1": "' + enable_direction[0]; json_data += '","direction1": "' + func_get_direction(0).toString(); json_data += '","enable_ivs_zone": "' + enable_ivs_zone[0]; @@ -6842,8 +6916,12 @@ json_data += ',"y5": ' + Math.round(points_array_0[4].y * tab_view_size[1] / image_height); json_data += ',"x6": ' + Math.round(points_array_0[5].x * tab_view_size[0] / image_width); json_data += ',"y6": ' + Math.round(points_array_0[5].y * tab_view_size[1] / image_height); - json_data += '},'; + json_data += '}]}}}'; + func_setconfigfile(json_data); + json_data = '{"view_setting":{"camera01":{'; + json_data += '"detection_zone":['; + json_data += '{},' json_data += '{"enable_direction1": "' + enable_direction[1]; json_data += '","direction1": "' + func_get_direction(1).toString(); json_data += '","enable_ivs_zone": "' + enable_ivs_zone[1]; @@ -6870,8 +6948,12 @@ json_data += ',"y5": ' + Math.round(points_array_1[4].y * tab_view_size[1] / image_height); json_data += ',"x6": ' + Math.round(points_array_1[5].x * tab_view_size[0] / image_width); json_data += ',"y6": ' + Math.round(points_array_1[5].y * tab_view_size[1] / image_height); - json_data += '},'; + json_data += '}]}}}'; + func_setconfigfile(json_data); + json_data = '{"view_setting":{"camera01":{'; + json_data += '"detection_zone":['; + json_data += '{},{},'; json_data += '{"enable_direction1": "' + enable_direction[2]; json_data += '","direction1": "' + func_get_direction(2).toString(); json_data += '","enable_ivs_zone": "' + enable_ivs_zone[2]; @@ -6898,8 +6980,12 @@ json_data += ',"y5": ' + Math.round(points_array_2[4].y * tab_view_size[1] / image_height); json_data += ',"x6": ' + Math.round(points_array_2[5].x * tab_view_size[0] / image_width); json_data += ',"y6": ' + Math.round(points_array_2[5].y * tab_view_size[1] / image_height); - json_data += '},'; + json_data += '}]}}}'; + func_setconfigfile(json_data); + json_data = '{"view_setting":{"camera01":{'; + json_data += '"detection_zone":['; + json_data += '{},{},{},'; json_data += '{"enable_direction1": "' + enable_direction[3]; json_data += '","direction1": "' + func_get_direction(3).toString(); json_data += '","enable_ivs_zone": "' + enable_ivs_zone[3]; @@ -6926,8 +7012,12 @@ json_data += ',"y5": ' + Math.round(points_array_3[4].y * tab_view_size[1] / image_height); json_data += ',"x6": ' + Math.round(points_array_3[5].x * tab_view_size[0] / image_width); json_data += ',"y6": ' + Math.round(points_array_3[5].y * tab_view_size[1] / image_height); - json_data += '},'; + json_data += '}]}}}'; + func_setconfigfile(json_data); + json_data = '{"view_setting":{"camera01":{'; + json_data += '"detection_zone":['; + json_data += '{},{},{},{},'; json_data += '{"enable_direction1": "' + enable_direction[4]; json_data += '","direction1": "' + func_get_direction(4).toString(); json_data += '","enable_ivs_zone": "' + enable_ivs_zone[4]; @@ -6954,8 +7044,12 @@ json_data += ',"y5": ' + Math.round(points_array_4[4].y * tab_view_size[1] / image_height); json_data += ',"x6": ' + Math.round(points_array_4[5].x * tab_view_size[0] / image_width); json_data += ',"y6": ' + Math.round(points_array_4[5].y * tab_view_size[1] / image_height); - json_data += '},'; + json_data += '}]}}}'; + func_setconfigfile(json_data); + json_data = '{"view_setting":{"camera01":{'; + json_data += '"detection_zone":['; + json_data += '{},{},{},{},{},'; json_data += '{"enable_direction1": "' + enable_direction[5]; json_data += '","direction1": "' + func_get_direction(5).toString(); json_data += '","enable_ivs_zone": "' + enable_ivs_zone[5]; @@ -6982,8 +7076,12 @@ json_data += ',"y5": ' + Math.round(points_array_5[4].y * tab_view_size[1] / image_height); json_data += ',"x6": ' + Math.round(points_array_5[5].x * tab_view_size[0] / image_width); json_data += ',"y6": ' + Math.round(points_array_5[5].y * tab_view_size[1] / image_height); - json_data += '},'; + json_data += '}]}}}'; + func_setconfigfile(json_data); + json_data = '{"view_setting":{"camera01":{'; + json_data += '"detection_zone":['; + json_data += '{},{},{},{},{},{},'; json_data += '{"enable_direction1": "' + enable_direction[6]; json_data += '","direction1": "' + func_get_direction(6).toString(); json_data += '","enable_ivs_zone": "' + enable_ivs_zone[6]; @@ -7010,8 +7108,12 @@ json_data += ',"y5": ' + Math.round(points_array_6[4].y * tab_view_size[1] / image_height); json_data += ',"x6": ' + Math.round(points_array_6[5].x * tab_view_size[0] / image_width); json_data += ',"y6": ' + Math.round(points_array_6[5].y * tab_view_size[1] / image_height); - json_data += '},'; + json_data += '}]}}}'; + func_setconfigfile(json_data); + json_data = '{"view_setting":{"camera01":{'; + json_data += '"detection_zone":['; + json_data += '{},{},{},{},{},{},{},'; json_data += '{"enable_direction1": "' + enable_direction[7]; json_data += '","direction1": "' + func_get_direction(7).toString(); json_data += '","enable_ivs_zone": "' + enable_ivs_zone[7]; @@ -7039,8 +7141,6 @@ json_data += ',"x6": ' + Math.round(points_array_7[5].x * tab_view_size[0] / image_width); json_data += ',"y6": ' + Math.round(points_array_7[5].y * tab_view_size[1] / image_height); json_data += '}]}}}'; - - //console.log(json_data); func_setconfigfile(json_data); var text_checked_trigger_events = new Array(MAX_DETECTION_ZONE); diff --git a/Aida/alarm.js b/Aida/alarm.js index d983cce..802af72 100644 --- a/Aida/alarm.js +++ b/Aida/alarm.js @@ -309,7 +309,7 @@ function insertTrafficLightRectangle(r_left, r_top, r_width, r_height, r_direct, if (r_name == "person") { color_type = '#FF8C00'; } - else { + else if(r_name == "car"){ color_type = '#800080'; } } @@ -3046,7 +3046,12 @@ function GetAlarm(alarm_data) { var complete_data = ""; var n1 = -1, n2 = -1, n2_temp = -1; + // console.log("[GetAlarm] localStorage fetchHttpGetalarm:", localStorage.getItem("fetchHttpGetalarm")); + // console.log("[GetAlarm] g_max_protected_objects:", g_max_protected_objects); + + var max_protected_objects = g_max_protected_objects; + if (g_enable_show_pixel === 1) { max_protected_objects = g_max_protected_objects + 2; } @@ -3059,6 +3064,8 @@ function GetAlarm(alarm_data) { n2 = complete_data.indexOf('}', n2_temp); + // console.log(`[GetAlarm] n1:${n1} , n2_temp:${n2_temp} , n2:${n2}`); + if (n1 > 0 && n2_temp > 0 && n2 > 0 && (n1 + 7) < n2_temp && n2_temp < n2) { wait_count = 0; clear_count = 0; @@ -3073,6 +3080,9 @@ function GetAlarm(alarm_data) { buffer_cam_time = ""; buffer_cam_time = datas[i].slice(); }*/ + + // console.log(`datas[${i}].length: ${datas[i].length}`); + if (datas[i].length > 12 && datas[i].substring(0, 12) == '{"AiEngine":' && datas[i].length < 8192 * 8) { //datas[i].replace(/\\'/g, "'"); //datas[i].replace('\"', '"'); @@ -3100,6 +3110,9 @@ function GetAlarm(alarm_data) { ai_json = JSON.parse(temp); //ai_json = validatingJSON(temp); + // console.log("ai_json:"); + // console.log(ai_json); + datas[i] = null; //check_cam_time = 1; @@ -3123,7 +3136,7 @@ function GetAlarm(alarm_data) { } }*/ - //console.log(ai_json); + // console.log(ai_json); if (localStorage.getItem("ToF_recognition") === "Yes"){ // console.log("ai_json.AIToF:"); @@ -3154,12 +3167,15 @@ function GetAlarm(alarm_data) { /*if (clear_count_2 >= 3) */ { //clear_count_2 = 0; - + // console.log("[WebSocket] max_protected_objects: ", max_protected_objects); RefreshCanvasObject(max_protected_objects); } //console.log("bbox_count: " + bbox_count.toString()); + // console.log("ai_json.counter_count:", ai_json.counter_count); + + if (ai_json != null && typeof ai_json.counter_count !== 'undefined') { counter_count_msg = ""; @@ -3233,12 +3249,15 @@ function GetAlarm(alarm_data) { insert_red_text = "FPS:" + AI_fps.toString() + ","; } - var insert_red_text_max = ""; var insert_red_text_min = ""; + + + if (current_state_hide_or_open_getalarmmotion == 1) { for (var i = 0; i < bbox_count /*&& i <= 10*/; i++) { + // console.log(ai_json.AiEngine[i]); if (ai_json.AiEngine[i]) { if (ai_json.AiEngine[i].parent_idx == -1) { @@ -3336,8 +3355,8 @@ function GetAlarm(alarm_data) { continue; } if (canvasTripwire_all && canvasTripwire && canvasTripwire1 && canvasTripwire2 && canvasTripwire3 && canvasTripwire4 && canvasTripwire5 && canvasTripwire6 && canvasTripwire7 && canvasTripwire8) { - var translate_name = func_translate_name(plate_name); + var behavior_id = ai_json.AiEngine[i].behavior_id; var detection_zone_id = ai_json.AiEngine[i].detection_zone_id; @@ -3583,6 +3602,13 @@ function GetAlarm(alarm_data) { canvasTripwire8.add(insertTrafficLightRectangle(x * 0.25, y * 0.3, w * 0.25, h * 0.3, 1, 1, plate_name, number_row)); } else { + // 11-01 + // console.log("trigger any events... , behavior_id: ", behavior_id); // 禁區 0 , 久留 4, 警戒線 8 + // console.log(ai_json.AiEngine[i]); // 沒有和 zone index 相關的資訊 + // console.log("detection_zone_id: ", detection_zone_id); // undefined + + func_checkTriggerZoneStatus(behavior_id); // 為了連動 zone polygon 變顏色 + canvasTripwire_all.add(insertTrafficLightRectangle_Red(x * 0.25, y * 0.3, w * 0.25, h * 0.3, 1, 1, plate_name)); canvasTripwire.add(insertTrafficLightRectangle_Red(x * 0.25, y * 0.3, w * 0.25, h * 0.3, 1, 1, plate_name)); canvasTripwire1.add(insertTrafficLightRectangle_Red(x * 0.25, y * 0.3, w * 0.25, h * 0.3, 1, 1, plate_name)); @@ -3647,7 +3673,7 @@ function GetAlarm(alarm_data) { } } } - + var bbox_count_short = 0; var bbox_count_long = 0; @@ -3923,6 +3949,9 @@ function GetAlarm(alarm_data) { canvasTripwire8.getObjects()[0].stroke = "#ff0000"; } + // 11-01 + func_checkZoneColor(); + if (canvasTripwire_all && canvasTripwire && canvasTripwire1 && canvasTripwire2 && canvasTripwire3 && canvasTripwire4 && canvasTripwire5 && canvasTripwire6 && canvasTripwire7 && canvasTripwire8) { for (var index_zone = 0; index_zone < count_zone; index_zone++) { if (parseInt(parking_space[index_zone], 10) >= 1 && parseInt(parking_line[index_zone], 10) >= 1) { @@ -4190,27 +4219,6 @@ function AssignPlateObject(ai_json,i_index,plate_name) { var h = parseInt(ai_json.AiEngine[i_index].h, 10); var text_y = parseInt((ai_json.AiEngine[i_index].y + ai_json.AiEngine[i_index].h), 10); //console.log(text_y); - /*if (x * 0.25 <= 20) { - x = 80; - } - else if (x * 0.25 >= 460) { - x = 1840; - } - - if (y * 0.3 <= 20) { - y = 66; - } - else if (y * 0.3 >= 300) { - y = 999; - } - - if (x * 0.25 + w * 0.25 >= 460) { - w = parseInt((460 - x * 0.25) * 4, 10); - } - - if (y * 0.3 + h * 0.3 >= 300) { - h = parseInt((300 - y * 0.3) * 3.33, 10); - }*/ text_y = y - 66; @@ -4394,16 +4402,22 @@ function RenderAllCanvas() { function RefreshCanvasObject(max_protected_objects) { if (typeof canvasTripwire !== 'undefined') { //Clear all objects + // console.log(canvasTripwire.getObjects()); while (canvasTripwire.getObjects().length > 0) { var items = canvasTripwire.getObjects(); if (items[canvasTripwire.getObjects().length - 1]) { canvasTripwire.remove(items[canvasTripwire.getObjects().length - 1]); } + // canvasTripwire.remove(items[canvasTripwire.getObjects().length - 1]); } + + // console.log(canvasTripwire.getObjects()); + // console.log("--------------------------"); } if (typeof canvasTripwire1 !== 'undefined') { //Clear all objects + // console.log(canvasTripwire1.getObjects()); while (canvasTripwire1.getObjects().length > max_protected_objects) { var items = canvasTripwire1.getObjects(); if (items[canvasTripwire1.getObjects().length - 1]) { @@ -4411,10 +4425,14 @@ function RefreshCanvasObject(max_protected_objects) { } } canvasTripwire1.getObjects()[0].stroke = "#ffff00"; + + // console.log(canvasTripwire1.getObjects()); + // console.log("--------------------------"); } if (typeof canvasTripwire2 !== 'undefined') { + // console.log(canvasTripwire2.getObjects()); //Clear all objects while (canvasTripwire2.getObjects().length > max_protected_objects) { var items = canvasTripwire2.getObjects(); @@ -4423,10 +4441,14 @@ function RefreshCanvasObject(max_protected_objects) { } } canvasTripwire2.getObjects()[0].stroke = "#ffff00"; + + // console.log(canvasTripwire2.getObjects()); + // console.log("--------------------------"); } if (typeof canvasTripwire3 !== 'undefined') { + // console.log(canvasTripwire3.getObjects()); //Clear all objects while (canvasTripwire3.getObjects().length > max_protected_objects) { var items = canvasTripwire3.getObjects(); @@ -4435,9 +4457,13 @@ function RefreshCanvasObject(max_protected_objects) { } } canvasTripwire3.getObjects()[0].stroke = "#ffff00"; + + // console.log(canvasTripwire3.getObjects()); + // console.log("--------------------------"); } if (typeof canvasTripwire4 !== 'undefined') { + // console.log(canvasTripwire4.getObjects()); //Clear all objects while (canvasTripwire4.getObjects().length > max_protected_objects) { var items = canvasTripwire4.getObjects(); @@ -4446,9 +4472,13 @@ function RefreshCanvasObject(max_protected_objects) { } } canvasTripwire4.getObjects()[0].stroke = "#ffff00"; + + // console.log(canvasTripwire4.getObjects()); + // console.log("--------------------------"); } if (typeof canvasTripwire5 !== 'undefined') { + // console.log(canvasTripwire5.getObjects()); //Clear all objects while (canvasTripwire5.getObjects().length > max_protected_objects) { var items = canvasTripwire5.getObjects(); @@ -4457,9 +4487,13 @@ function RefreshCanvasObject(max_protected_objects) { } } canvasTripwire5.getObjects()[0].stroke = "#ffff00"; + + // console.log(canvasTripwire5.getObjects()); + // console.log("--------------------------"); } if (typeof canvasTripwire6 !== 'undefined') { + // console.log(canvasTripwire6.getObjects()); //Clear all objects while (canvasTripwire6.getObjects().length > max_protected_objects) { var items = canvasTripwire6.getObjects(); @@ -4468,9 +4502,13 @@ function RefreshCanvasObject(max_protected_objects) { } } canvasTripwire6.getObjects()[0].stroke = "#ffff00"; + + // console.log(canvasTripwire6.getObjects()); + // console.log("--------------------------"); } if (typeof canvasTripwire7 !== 'undefined') { + // console.log(canvasTripwire7.getObjects()); //Clear all objects while (canvasTripwire7.getObjects().length > max_protected_objects) { var items = canvasTripwire7.getObjects(); @@ -4479,9 +4517,12 @@ function RefreshCanvasObject(max_protected_objects) { } } canvasTripwire7.getObjects()[0].stroke = "#ffff00"; + // console.log(canvasTripwire7.getObjects()); + // console.log("--------------------------"); } if (typeof canvasTripwire8 !== 'undefined') { + // console.log(canvasTripwire8.getObjects()); //Clear all objects while (canvasTripwire8.getObjects().length > max_protected_objects) { var items = canvasTripwire8.getObjects(); @@ -4490,20 +4531,27 @@ function RefreshCanvasObject(max_protected_objects) { } } canvasTripwire8.getObjects()[0].stroke = "#ffff00"; + // console.log(canvasTripwire8.getObjects()); + // console.log("--------------------------"); } if (typeof canvasTripwire_all !== 'undefined') { + // console.log("click_canvas_all:", click_canvas_all); + // console.log(canvasTripwire_all.getObjects()); //Clear all objects while (canvasTripwire_all.getObjects().length > click_canvas_all) { var items = canvasTripwire_all.getObjects(); if (items[canvasTripwire_all.getObjects().length - 1]) { canvasTripwire_all.remove(items[canvasTripwire_all.getObjects().length - 1]); } + // canvasTripwire_all.remove(items[canvasTripwire_all.getObjects().length - 1]); } for (var index_click = 0; index_click < click_canvas_all; index_click++) { canvasTripwire_all.getObjects()[index_click].stroke = "#ffff00"; } + // console.log(canvasTripwire_all.getObjects()); + // console.log("--------------------------"); } } @@ -4582,6 +4630,7 @@ function GetRequest_WebSocket() { //console.log("WebSocket is supported by your Browser!"); //console.log(navigator.userAgent); // Let us open a web socket + if ( navigator.userAgent.indexOf( "nvr_auth=" ) != -1 ) ws = new WebSocket("ws://" + window.location.hostname + ":" + GetUrlPort() + "/getalarmmotion?" + navigator.userAgent ); else @@ -4666,6 +4715,7 @@ function GetRequest_WebSocket() { //console.log("WebSocket NOT supported by your Browser!"); } } + /* function reConnect() { //console.log("socket 連線斷開,正在嘗試重新建立連線"); @@ -4720,6 +4770,8 @@ function GetRequest_Http() { } function func_set_coldobjects(object_x, object_y, object_w, object_h, object_name) { + //console.log(`[func_set_coldobjects] obj x:${object_x} , y:${object_y} , w:${object_w} , h:${object_h} , name:${object_name}`); + $.ajax({ url: "/setconfig?coldobjects&x=" + object_x + "&y=" + object_y + "&w=" + object_w + "&h=" + object_h + "&Object=" + object_name, method: "GET", @@ -4834,7 +4886,6 @@ function func_translate_name(translate_name) { var label_names_zh_tw = data_zh_tw[key]; var label_names_ja_jp = data_ja_jp[key]; var label_names_it_it = data_it_it[key]; - if (localStorage.getItem("events_default_version") != null && localStorage.getItem("events_default_version") == "4") { if (translate_name == "person") { if (G_LANG == "zh_tw") @@ -4873,7 +4924,6 @@ function func_translate_name(translate_name) { else if (G_LANG == "it_it") translate_name = label_names_it_it; } - break; } } @@ -5321,3 +5371,119 @@ function func_changeColorBarMinMax(tofInfo) { } } + +// 11-01 +var defaultPolygonColor = "#ffff00"; // 預設色號 亮黃色的 Zone +var alarmColor = "#ff0000"; // 觸發 禁區、違停、警戒線 事件時,顯示紅色的 Zone ( Polygon ) +var defaultZoneAlarmStatus = {'behavior_id': 0, 'red_zone': 0, 'time_stamp': 0}; +var g_zoneAlarmStatus = func_initZoneAlarmStatus(defaultZoneAlarmStatus); +var g_zoneAlarmColorDisplayTime = 2; // Unit : second + +function func_checkZoneColor() +{ + // console.log("g_zoneAlarmStatus: ", g_zoneAlarmStatus); + + var currentTimeDiff = null; + var zoneColor = defaultPolygonColor; + for (var zoneIndex = 0; zoneIndex < MAX_DETECTION_ZONE; zoneIndex++) + { + zoneColor = defaultPolygonColor; + + if (g_zoneAlarmStatus[zoneIndex]['time_stamp'] > 0) + { + currentTimeDiff = new Date().getTime() - g_zoneAlarmStatus[zoneIndex]['time_stamp']; + if (currentTimeDiff > (g_zoneAlarmColorDisplayTime * 1000)) + { + // console.log(`[func_checkZoneColor] reset g_zoneAlarmStatus[${zoneIndex}]`); + + g_zoneAlarmStatus[zoneIndex]['behavior_id'] = 0; + g_zoneAlarmStatus[zoneIndex]['red_zone'] = 0; + g_zoneAlarmStatus[zoneIndex]['time_stamp'] = 0; + } // else 的 zone 仍在顯示時間內,仰賴 red_zone 賦予警報顏色 + + if (g_zoneAlarmStatus[zoneIndex]['red_zone'] == 1) + { + zoneColor = alarmColor; + } // else 的 zone 應是剛被 reset 狀態值的,以預設顏色顯示 + + } // else 是 時間戳被歸零的 以預設顏色顯示 + + // console.log(`[func_checkZoneColor] check zone ${(zoneIndex+1)} color:${zoneColor}`); + + // check all zone + // console.log("check show_all_zone: ", show_all_zone); + if (show_all_zone == 0) + { + // check which canvas is active + try + { + window["canvasTripwire"+(zoneIndex+1)].getObjects()[0].stroke = zoneColor; + } + catch (error) + { + console.log(error); + } + + } + else + { + if (zoneIndex < count_zone) { + // console.log(`[func_checkZoneColor] activeZoneIndex: ${zoneIndex}`); + canvasTripwire_all.getObjects()[zoneIndex].stroke = zoneColor; + } + + + } + } + +} + + +function func_checkTriggerZoneStatus(behavior_id) +{ + // console.log("checked_trigger_events:"); + // console.log(checked_trigger_events); + + //var trigger_index = null; + + /*if (behavior_id == 1) // 禁區 + { + trigger_index = 0; + } + else if (behavior_id == 4) // 違停 + { + trigger_index = 1; + } + else if (behavior_id == 8) // 警戒線 + { + trigger_index = 4; + }*/ + + for (var zoneIndex = 0; zoneIndex < MAX_DETECTION_ZONE; zoneIndex++) { + for (var trigger_index = 0; trigger_index < MAX_SIZE_IDC_LIST_TRIGGER_EVENTS; trigger_index++) { + if (checked_trigger_events[zoneIndex][trigger_index] == 1) { + if (g_zoneAlarmStatus[zoneIndex]['time_stamp'] == 0) { + g_zoneAlarmStatus[zoneIndex]['behavior_id'] = behavior_id; + g_zoneAlarmStatus[zoneIndex]['time_stamp'] = new Date().getTime(); + // console.log(`[func_checkTriggerZoneStatus] init g_zoneAlarmStatus[${zoneIndex}]['time_stamp']:${g_zoneAlarmStatus[zoneIndex]['time_stamp']}`); + g_zoneAlarmStatus[zoneIndex]['red_zone'] = 1; + } + break; + } + } + } + + // console.log("[func_checkTriggerZoneStatus] check g_zoneAlarmStatus:"); + // console.log(g_zoneAlarmStatus); +} + +function func_initZoneAlarmStatus(defaultValue) +{ + var array = []; + for (var i = 0; i < MAX_DETECTION_ZONE; i++) + { + // 確保每個元素都是一個新的副本,避免不同 Zone 紀載不同行為時互相干擾狀態值 + array.push(JSON.parse(JSON.stringify(defaultValue))); + } + return array; +} \ No newline at end of file diff --git a/Aida/alarm_on_airelay.html b/Aida/alarm_on_airelay.html index 1e8a4cc..4ba35dc 100644 --- a/Aida/alarm_on_airelay.html +++ b/Aida/alarm_on_airelay.html @@ -5,7 +5,7 @@ + content="no-store, must-revalidate" /> + body, html { font-family: "Arial"; } @@ -384,8 +385,8 @@ var g_times_get_bar = 0; var g_check_if_run_setting = 0; - var DETECT_EVENT_ID_ARRAY = ["0x00000001", "0x00000004", "0x00200000", "0x00400000", "0x00000008", "0x00000010", "0x00000020", "0x10000000", "0x20000000", "0x00800000", "0x01000000", "0x02000000", "0x04000000", "0x40000000", "0x80000000", "0x00002000", "0x00004000", "0x00000400", "0x00000800", "0x00001000", "0x00008000", "0x00040000", "0x08000000"]; + var DETECT_EVENT_ID_ARRAY = ["0x00000001", "0x00000004", "0x00200000", "0x00400000", "0x00000008", "0x00000010", "0x00000020", "0x10000000", "0x20000000", "0x00800000", "0x01000000", "0x02000000", "0x04000000", "0x40000000", "0x80000000", "0x00002000", "0x00004000", "0x00000400", "0x00000800", "0x00001000", "0x00008000", "0x00040000", "0x08000000"]; function update_canvas() { clearInterval(g_Canvas_BackgroundImage); @@ -756,9 +757,9 @@ event_stream = create_canvas_stream1(); var checkH264StreamIntervalID = null; - var checkH264StreamIntervalTime = 200; + var checkH264StreamIntervalTime = 10; var checkStreamingCounter = 0; - var checkCounterThreshold = 12; + var checkCounterThreshold = 15; clearInterval(checkH264StreamIntervalID); checkH264StreamIntervalID = setInterval(function () { @@ -774,7 +775,6 @@ if (checkStreamingCounter > checkCounterThreshold) { localStorage.setItem("receivedH264", check_h264_received); clearInterval(checkH264StreamIntervalID); - // 08-15 TODO 嘗試確認 getalarmmotion fetch 連線是否中斷 } }, checkH264StreamIntervalTime) @@ -1047,16 +1047,13 @@ -
- -
@@ -1175,7 +1172,6 @@
-
@@ -2157,8 +2153,7 @@ // 08-24 確認是否有設定警戒線的 Zone,額外再加上紅線物件 var arrow_num = 0; - for (var index_zone = 0; index_zone < count_zone; index_zone++) - { + for (var index_zone = 0; index_zone < count_zone; index_zone++) { // console.log(`[func_show_all_zone] check current_trigger[${index_zone}]: ${current_trigger[index_zone]}`); // 比照 func_listen_to_enable_or_disable_show_direction 開啟紅線物件可見性的條件 @@ -2194,14 +2189,14 @@ // ------------------------------------------------------ // 參照 Edit_Arrow points_array = GetPointLocation(index_zone); - + var index_point = g_mydirection[g_zone_id] - 1; var next_point = index_point + 1 >= 4 ? 0 : index_point + 1; var start_x = points_array[next_point].x; var start_y = points_array[next_point].y; var end_x = points_array[index_point].x; var end_y = points_array[index_point].y; - + arrow_obj = AddArrowObject(start_x, start_y, end_x, end_y) arrow_obj.visible = true; // ------------------------------------------------------ @@ -2281,6 +2276,7 @@ } function func_listen_to_enable_or_disable_show_direction() { + if (current_trigger[get_current_index_zone()] == 4 || current_trigger[get_current_index_zone()] == 17 || current_trigger[get_current_index_zone()] == 18 || @@ -7155,7 +7151,7 @@ // console.log("set zone 2 config"); var json_data_zone_2 = '{"view_setting":{"camera01":{'; json_data_zone_2 += '"detection_zone":['; - json_data_zone_2 += '{},' // 補上index之前 空的 dict,確保次序對上既有格式 + json_data_zone_2 += '{},'; // 補上index之前 空的 dict,確保次序對上既有格式 json_data_zone_2 += '{"queuing_count": "' + queuing_count[1]; json_data_zone_2 += '","enable_ivs_zone": "' + enable_ivs_zone[1]; json_data_zone_2 += '","parking_line": "' + parking_line[1]; @@ -7180,7 +7176,7 @@ // console.log("set zone 3 config"); var json_data_zone_3 = '{"view_setting":{"camera01":{'; json_data_zone_3 += '"detection_zone":['; - json_data_zone_3 += '{},{},' // 補上index之前 空的 dict,確保次序對上既有格式 + json_data_zone_3 += '{},{},'; // 補上index之前 空的 dict,確保次序對上既有格式 json_data_zone_3 += '{"queuing_count": "' + queuing_count[2]; json_data_zone_3 += '","enable_ivs_zone": "' + enable_ivs_zone[2]; json_data_zone_3 += '","parking_line": "' + parking_line[2]; @@ -7201,12 +7197,11 @@ func_setconfigfile(json_data_zone_3); } - if (count_zone >= 4) { // console.log("set zone 4 config"); var json_data_zone_4 = '{"view_setting":{"camera01":{'; json_data_zone_4 += '"detection_zone":['; - json_data_zone_4 += '{},{},{},' // 補上index之前 空的 dict,確保次序對上既有格式 + json_data_zone_4 += '{},{},{},'; // 補上index之前 空的 dict,確保次序對上既有格式 json_data_zone_4 += '{"queuing_count": "' + queuing_count[3]; json_data_zone_4 += '","enable_ivs_zone": "' + enable_ivs_zone[3]; json_data_zone_4 += '","parking_line": "' + parking_line[3]; @@ -7231,7 +7226,7 @@ // console.log("set zone 5 config"); var json_data_zone_5 = '{"view_setting":{"camera01":{'; json_data_zone_5 += '"detection_zone":['; - json_data_zone_5 += '{},{},{},{},' // 補上index之前 空的 dict,確保次序對上既有格式 + json_data_zone_5 += '{},{},{},{},'; // 補上index之前 空的 dict,確保次序對上既有格式 json_data_zone_5 += '{"queuing_count": "' + queuing_count[4]; json_data_zone_5 += '","enable_ivs_zone": "' + enable_ivs_zone[4]; json_data_zone_5 += '","parking_line": "' + parking_line[4]; @@ -7252,12 +7247,11 @@ func_setconfigfile(json_data_zone_5); } - if (count_zone >= 6) { // console.log("set zone 6 config"); var json_data_zone_6 = '{"view_setting":{"camera01":{'; json_data_zone_6 += '"detection_zone":['; - json_data_zone_6 += '{},{},{},{},{},' // 補上index之前 空的 dict,確保次序對上既有格式 + json_data_zone_6 += '{},{},{},{},{},'; // 補上index之前 空的 dict,確保次序對上既有格式 json_data_zone_6 += '{"queuing_count": "' + queuing_count[5]; json_data_zone_6 += '","enable_ivs_zone": "' + enable_ivs_zone[5]; json_data_zone_6 += '","parking_line": "' + parking_line[5]; @@ -7277,13 +7271,12 @@ // console.log("------------------------------------------------"); func_setconfigfile(json_data_zone_6); } - - + if (count_zone >= 7) { // console.log("set zone 7 config"); var json_data_zone_7 = '{"view_setting":{"camera01":{'; json_data_zone_7 += '"detection_zone":['; - json_data_zone_7 += '{},{},{},{},{},{},' // 補上index之前 空的 dict,確保次序對上既有格式 + json_data_zone_7 += '{},{},{},{},{},{},'; // 補上index之前 空的 dict,確保次序對上既有格式 json_data_zone_7 += '{"queuing_count": "' + queuing_count[6]; json_data_zone_7 += '","enable_ivs_zone": "' + enable_ivs_zone[6]; json_data_zone_7 += '","parking_line": "' + parking_line[6]; @@ -7304,12 +7297,11 @@ func_setconfigfile(json_data_zone_7); } - if (count_zone >= 8) { // console.log("set zone 8 config"); var json_data_zone_8 = '{"view_setting":{"camera01":{'; json_data_zone_8 += '"detection_zone":['; - json_data_zone_8 += '{},{},{},{},{},{},{},' // 補上index之前 空的 dict,確保次序對上既有格式 + json_data_zone_8 += '{},{},{},{},{},{},{},'; // 補上index之前 空的 dict,確保次序對上既有格式 json_data_zone_8 += '{"queuing_count": "' + queuing_count[7]; json_data_zone_8 += '","enable_ivs_zone": "' + enable_ivs_zone[7]; json_data_zone_8 += '","parking_line": "' + parking_line[7]; @@ -7930,7 +7922,6 @@ } } - var json_data_trigger = '{"view_setting":{"camera01":{"detection_zone":['; for (var i = 0; i < count_zone; i++) { if (i == count_zone - 1) { @@ -8197,9 +8188,6 @@ } isMouseDown = false; - - - if (typeof canvasTripwire_all !== 'undefined') { console.log("[onMouseUp] #metadata_mouse_coldobjects val:", $('#metadata_mouse_coldobjects').val()); diff --git a/Aida/alarm_on_airelay.js b/Aida/alarm_on_airelay.js index 71b9265..a6a4a0f 100644 --- a/Aida/alarm_on_airelay.js +++ b/Aida/alarm_on_airelay.js @@ -704,7 +704,7 @@ function insertTrafficLightRectangle(r_left, r_top, r_width, r_height, r_direct, if (r_name == "person") { color_type = '#FF8C00'; } - else { + else if(r_name == "car"){ color_type = '#800080'; } } @@ -1616,7 +1616,6 @@ var red_light_zone6; var red_light_zone7; var red_light_zone8; - function createCanvasTrafficLight_alarm(mypoints1, mypoints2, mypoints3, mypoints4, mypoints5, mypoints6, mypoints7, mypoints8) { currentPointPosition1 = mypoints1; currentPointPosition2 = mypoints2; @@ -3970,6 +3969,7 @@ function GetAlarm(alarm_data) { else { label_word = color; } + //console.log(label_word); if (plate_name == "tof_point") { if ((ai_json.AiEngine[i].max_distance != 0 && ai_json.AiEngine[i].max_height != 0) || @@ -4021,7 +4021,7 @@ function GetAlarm(alarm_data) { // console.log("detection_zone_id: ", detection_zone_id); // undefined func_checkTriggerZoneStatus(behavior_id); // 為了連動 zone polygon 變顏色 - + canvasTripwire_all.add(insertTrafficLightRectangle_Red(x * G_CANVAS_WIDTH_RATIO, y * G_CANVAS_HEIGHT_RATIO, w * G_CANVAS_WIDTH_RATIO, h * G_CANVAS_HEIGHT_RATIO, 1, 1, plate_name)); canvasTripwire.add(insertTrafficLightRectangle_Red(x * G_CANVAS_WIDTH_RATIO, y * G_CANVAS_HEIGHT_RATIO, w * G_CANVAS_WIDTH_RATIO, h * G_CANVAS_HEIGHT_RATIO, 1, 1, plate_name)); canvasTripwire1.add(insertTrafficLightRectangle_Red(x * G_CANVAS_WIDTH_RATIO, y * G_CANVAS_HEIGHT_RATIO, w * G_CANVAS_WIDTH_RATIO, h * G_CANVAS_HEIGHT_RATIO, 1, 1, plate_name)); @@ -4594,7 +4594,8 @@ function GetAlarm(alarm_data) { } } } - } + } + RenderAllCanvas(); ai_json = null; } @@ -5967,44 +5968,6 @@ function func_changeColorBarMinMax(tofInfo) { } -// JVC version -// function create_canvas_stream(specifyProfileNo) { -// console.log("[create_canvas_stream] init H264 streaming"); -// //var g_profileno = GetCookie('profileno'); - -// var ui_width = G_VIEW_CANVAS_X; -// var ui_height = G_VIEW_CANVAS_Y; - -// var l_cgi = "/websocket?"; -// var l_token = ""; - -// //var event_uri = l_cgi + 'eventstream=' + g_profileno + l_token; -// var event_uri = l_cgi + 'eventstream=0' + l_token; - -// var g_event_para = new _codec_para(); -// g_event_para.worker_num = 1; - -// //g_event_para.vc[0] = { width: g_setup_PROFILE_Width[g_profileno], height: g_setup_PROFILE_Height[g_profileno], id: "video_container", frameszie: 4096000 }; -// g_event_para.vc[0] = { width: '1920', height: '1080', id: "CanvasBgContainer", frameszie: 4096000 }; - -// g_event_para.droplatencydecoded = true; - -// g_event_stream = new _codec(g_event_para); - -// g_event_stream.streamType = WS_WR; - -// var node = document.getElementById(g_event_para.vc[0].id); - -// node.appendChild(g_event_stream.get_vc_element(0)); - -// g_event_stream.set_vc_element_size(0, ui_width, ui_height); //display size - -// g_event_stream.init_event(0, 0, event_uri); - -// g_event_stream.DecodeInit('1', 5, '1920', '1080', '10', '8000', 16000); - -// console.log('[create_canvas_stream] start H264 streaming'); -// } var g_event_stream = null; @@ -6093,27 +6056,34 @@ function openIVSsettins() { var k_count = -1; function func_setconfigfile(json_data) { + waitSeconds(100); $.ajax({ url: '/' + g_tcp_tunnel_token + "/setconfigfile", method: "POST", async: false, data: json_data, - contentType: false, + //contentType: false, processData: false, + timeout: 5000, + cache: false, + xhrFields: { + withCredentials: true // 設置為 true 如果需要帶上 Cookies 或其他認證 + }, + contentType: 'text/plain', // 傳送純文本 beforeSend: function (xmlHttp) { xmlHttp.setRequestHeader("If-Modified-Since", "0"); xmlHttp.setRequestHeader("Cache-Control", "no-cache"); //xmlHttp.setRequestHeader("Authorization", "Basic " + btoa("username:password")); }, - success: function () { + success: function (retdata) { //console.info(); }, - error: function () { - console.warn(); + error: function (retdata) { + console.warn(retdata); k_count++; if (k_count <= 94) { - waitSeconds(500); + waitSeconds(1000); func_setconfigfile(json_data); } } @@ -6193,9 +6163,9 @@ function func_checkTriggerZoneStatus(behavior_id) // console.log("checked_trigger_events:"); // console.log(checked_trigger_events); - var trigger_index = null; + //var trigger_index = null; - if (behavior_id == 1) // 禁區 + /*if (behavior_id == 1) // 禁區 { trigger_index = 0; } @@ -6206,23 +6176,24 @@ function func_checkTriggerZoneStatus(behavior_id) else if (behavior_id == 8) // 警戒線 { trigger_index = 4; - } + }*/ for (var zoneIndex = 0; zoneIndex < MAX_DETECTION_ZONE; zoneIndex++) { - if (checked_trigger_events[zoneIndex][trigger_index] == 1) - { - if (g_zoneAlarmStatus[zoneIndex]['time_stamp'] == 0) { - g_zoneAlarmStatus[zoneIndex]['behavior_id'] = behavior_id; - g_zoneAlarmStatus[zoneIndex]['time_stamp'] = new Date().getTime(); - // console.log(`[func_checkTriggerZoneStatus] init g_zoneAlarmStatus[${zoneIndex}]['time_stamp']:${g_zoneAlarmStatus[zoneIndex]['time_stamp']}`); - g_zoneAlarmStatus[zoneIndex]['red_zone'] = 1; + for (var trigger_index = 0; trigger_index < MAX_SIZE_IDC_LIST_TRIGGER_EVENTS; trigger_index++) { + if (checked_trigger_events[zoneIndex][trigger_index] == 1) { + if (g_zoneAlarmStatus[zoneIndex]['time_stamp'] == 0) { + g_zoneAlarmStatus[zoneIndex]['behavior_id'] = behavior_id; + g_zoneAlarmStatus[zoneIndex]['time_stamp'] = new Date().getTime(); + // console.log(`[func_checkTriggerZoneStatus] init g_zoneAlarmStatus[${zoneIndex}]['time_stamp']:${g_zoneAlarmStatus[zoneIndex]['time_stamp']}`); + g_zoneAlarmStatus[zoneIndex]['red_zone'] = 1; + } + break; } } } // console.log("[func_checkTriggerZoneStatus] check g_zoneAlarmStatus:"); // console.log(g_zoneAlarmStatus); - } function func_initZoneAlarmStatus(defaultValue) diff --git a/Aida/alarm_on_nvr.html b/Aida/alarm_on_nvr.html index 78be6e4..651f400 100644 --- a/Aida/alarm_on_nvr.html +++ b/Aida/alarm_on_nvr.html @@ -278,8 +278,8 @@ var g_times_get_bar = 0; var g_check_if_run_setting = 0; - var DETECT_EVENT_ID_ARRAY = ["0x00000001", "0x00000004", "0x00200000", "0x00400000", "0x00000008", "0x00000010", "0x00000020", "0x10000000", "0x20000000", "0x00800000", "0x01000000", "0x02000000", "0x04000000", "0x40000000", "0x80000000", "0x00002000", "0x00004000", "0x00000400", "0x00000800", "0x00001000", "0x00008000", "0x00040000", "0x08000000"]; + var DETECT_EVENT_ID_ARRAY = ["0x00000001", "0x00000004", "0x00200000", "0x00400000", "0x00000008", "0x00000010", "0x00000020", "0x10000000", "0x20000000", "0x00800000", "0x01000000", "0x02000000", "0x04000000", "0x40000000", "0x80000000", "0x00002000", "0x00004000", "0x00000400", "0x00000800", "0x00001000", "0x00008000", "0x00040000", "0x08000000"]; function update_canvas() { clearInterval(g_Canvas_BackgroundImage); @@ -1390,7 +1390,7 @@ // reversed:true, // disabled:true, min: 0, - max: 100, + max: 30, // step:2.5, //提示格式函数 tipFormatter: function (value) { @@ -1967,7 +1967,64 @@ } } } - click_canvas_all = count_zone; + + // 08-24 確認是否有設定警戒線的 Zone,額外再加上紅線物件 + var arrow_num = 0; + for (var index_zone = 0; index_zone < count_zone; index_zone++) { + // console.log(`[func_show_all_zone] check current_trigger[${index_zone}]: ${current_trigger[index_zone]}`); + + // 比照 func_listen_to_enable_or_disable_show_direction 開啟紅線物件可見性的條件 + if ( + current_trigger[index_zone] == 4 + || current_trigger[index_zone] == 17 + || current_trigger[index_zone] == 18 + || current_trigger[index_zone] == 19 + ) { + arrow_num++; + var arrow_obj = null; + // ------------------------------------------------------ + // 比照 clone 寫法位置會有問題,改仿照 Edit_Arrow 內部流程新增紅線物件 + // if (index_zone == 0) + // { + // arrow_obj = fabric.util.object.clone(canvasTripwire1.getObjects()[1]); + // } + // else if (index_zone == 1) + // { + // arrow_obj = fabric.util.object.clone(canvasTripwire2.getObjects()[1]); + // } + // else if (index_zone == 2) + // { + // arrow_obj = fabric.util.object.clone(canvasTripwire3.getObjects()[1]); + // } + // else if (index_zone == 3) + // { + // arrow_obj = fabric.util.object.clone(canvasTripwire4.getObjects()[1]); + // } + + // console.log("clone arrow_obj:"); + // console.log(arrow_obj); + // ------------------------------------------------------ + // 參照 Edit_Arrow + points_array = GetPointLocation(index_zone); + + var index_point = g_mydirection[g_zone_id] - 1; + var next_point = index_point + 1 >= 4 ? 0 : index_point + 1; + var start_x = points_array[next_point].x; + var start_y = points_array[next_point].y; + var end_x = points_array[index_point].x; + var end_y = points_array[index_point].y; + + arrow_obj = AddArrowObject(start_x, start_y, end_x, end_y) + arrow_obj.visible = true; + // ------------------------------------------------------ + if (arrow_obj != null) { + canvasTripwire_all.add(arrow_obj); + } + } + } + + // click_canvas_all = count_zone; + click_canvas_all = count_zone + arrow_num; // 確保多新增的紅線物件不會馬上被 RefreshCanvasObject 保護物件數量參數給清除掉 canvasTripwire_all.requestRenderAll(); //document.getElementById('IDOK').disabled = true; @@ -4283,7 +4340,7 @@ disabelIteraction(canvasTripwire7.getObjects()[0]); Edit8(); } - + func_getbar(); show_tof_map(); } @@ -4410,6 +4467,7 @@ } } + function func_setAlarmData() { if (lock_IDOK == 1) { alert(IDC_STATIC_SHOW_ALL_ALERT); @@ -6773,8 +6831,11 @@ var json_data = '{"view_setting":{"camera01":{"obj_max_proportion": "' + obj_max_proportion; json_data += '","obj_min_proportion": "' + obj_min_proportion + '","enable_traffic": "' + enable_traffic + '","enable_unknown_object": "' + enable_unknown_object + '","enable_track": "' + enable_track; json_data += '","confidence2": "' + confidence_traffic + '","count_zone": ' + count_zone; - json_data += ',"detection_zone":['; + json_data += '}}}'; + func_setconfigfile(json_data); + json_data = '{"view_setting":{"camera01":{'; + json_data += '"detection_zone":['; json_data += '{"enable_direction1": "' + enable_direction[0]; json_data += '","direction1": "' + func_get_direction(0).toString(); json_data += '","enable_ivs_zone": "' + enable_ivs_zone[0]; @@ -6801,8 +6862,12 @@ json_data += ',"y5": ' + Math.round(points_array_0[4].y * tab_view_size[1] / image_height); json_data += ',"x6": ' + Math.round(points_array_0[5].x * tab_view_size[0] / image_width); json_data += ',"y6": ' + Math.round(points_array_0[5].y * tab_view_size[1] / image_height); - json_data += '},'; + json_data += '}]}}}'; + func_setconfigfile(json_data); + json_data = '{"view_setting":{"camera01":{'; + json_data += '"detection_zone":['; + json_data += '{},' json_data += '{"enable_direction1": "' + enable_direction[1]; json_data += '","direction1": "' + func_get_direction(1).toString(); json_data += '","enable_ivs_zone": "' + enable_ivs_zone[1]; @@ -6829,8 +6894,12 @@ json_data += ',"y5": ' + Math.round(points_array_1[4].y * tab_view_size[1] / image_height); json_data += ',"x6": ' + Math.round(points_array_1[5].x * tab_view_size[0] / image_width); json_data += ',"y6": ' + Math.round(points_array_1[5].y * tab_view_size[1] / image_height); - json_data += '},'; + json_data += '}]}}}'; + func_setconfigfile(json_data); + json_data = '{"view_setting":{"camera01":{'; + json_data += '"detection_zone":['; + json_data += '{},{},'; json_data += '{"enable_direction1": "' + enable_direction[2]; json_data += '","direction1": "' + func_get_direction(2).toString(); json_data += '","enable_ivs_zone": "' + enable_ivs_zone[2]; @@ -6857,8 +6926,12 @@ json_data += ',"y5": ' + Math.round(points_array_2[4].y * tab_view_size[1] / image_height); json_data += ',"x6": ' + Math.round(points_array_2[5].x * tab_view_size[0] / image_width); json_data += ',"y6": ' + Math.round(points_array_2[5].y * tab_view_size[1] / image_height); - json_data += '},'; + json_data += '}]}}}'; + func_setconfigfile(json_data); + json_data = '{"view_setting":{"camera01":{'; + json_data += '"detection_zone":['; + json_data += '{},{},{},'; json_data += '{"enable_direction1": "' + enable_direction[3]; json_data += '","direction1": "' + func_get_direction(3).toString(); json_data += '","enable_ivs_zone": "' + enable_ivs_zone[3]; @@ -6885,8 +6958,12 @@ json_data += ',"y5": ' + Math.round(points_array_3[4].y * tab_view_size[1] / image_height); json_data += ',"x6": ' + Math.round(points_array_3[5].x * tab_view_size[0] / image_width); json_data += ',"y6": ' + Math.round(points_array_3[5].y * tab_view_size[1] / image_height); - json_data += '},'; + json_data += '}]}}}'; + func_setconfigfile(json_data); + json_data = '{"view_setting":{"camera01":{'; + json_data += '"detection_zone":['; + json_data += '{},{},{},{},'; json_data += '{"enable_direction1": "' + enable_direction[4]; json_data += '","direction1": "' + func_get_direction(4).toString(); json_data += '","enable_ivs_zone": "' + enable_ivs_zone[4]; @@ -6913,8 +6990,12 @@ json_data += ',"y5": ' + Math.round(points_array_4[4].y * tab_view_size[1] / image_height); json_data += ',"x6": ' + Math.round(points_array_4[5].x * tab_view_size[0] / image_width); json_data += ',"y6": ' + Math.round(points_array_4[5].y * tab_view_size[1] / image_height); - json_data += '},'; + json_data += '}]}}}'; + func_setconfigfile(json_data); + json_data = '{"view_setting":{"camera01":{'; + json_data += '"detection_zone":['; + json_data += '{},{},{},{},{},'; json_data += '{"enable_direction1": "' + enable_direction[5]; json_data += '","direction1": "' + func_get_direction(5).toString(); json_data += '","enable_ivs_zone": "' + enable_ivs_zone[5]; @@ -6941,8 +7022,12 @@ json_data += ',"y5": ' + Math.round(points_array_5[4].y * tab_view_size[1] / image_height); json_data += ',"x6": ' + Math.round(points_array_5[5].x * tab_view_size[0] / image_width); json_data += ',"y6": ' + Math.round(points_array_5[5].y * tab_view_size[1] / image_height); - json_data += '},'; + json_data += '}]}}}'; + func_setconfigfile(json_data); + json_data = '{"view_setting":{"camera01":{'; + json_data += '"detection_zone":['; + json_data += '{},{},{},{},{},{},'; json_data += '{"enable_direction1": "' + enable_direction[6]; json_data += '","direction1": "' + func_get_direction(6).toString(); json_data += '","enable_ivs_zone": "' + enable_ivs_zone[6]; @@ -6969,8 +7054,12 @@ json_data += ',"y5": ' + Math.round(points_array_6[4].y * tab_view_size[1] / image_height); json_data += ',"x6": ' + Math.round(points_array_6[5].x * tab_view_size[0] / image_width); json_data += ',"y6": ' + Math.round(points_array_6[5].y * tab_view_size[1] / image_height); - json_data += '},'; + json_data += '}]}}}'; + func_setconfigfile(json_data); + json_data = '{"view_setting":{"camera01":{'; + json_data += '"detection_zone":['; + json_data += '{},{},{},{},{},{},{},'; json_data += '{"enable_direction1": "' + enable_direction[7]; json_data += '","direction1": "' + func_get_direction(7).toString(); json_data += '","enable_ivs_zone": "' + enable_ivs_zone[7]; @@ -6998,8 +7087,6 @@ json_data += ',"x6": ' + Math.round(points_array_7[5].x * tab_view_size[0] / image_width); json_data += ',"y6": ' + Math.round(points_array_7[5].y * tab_view_size[1] / image_height); json_data += '}]}}}'; - - //console.log(json_data); func_setconfigfile(json_data); var text_checked_trigger_events = new Array(MAX_DETECTION_ZONE); @@ -7274,7 +7361,7 @@ //k_index = 95; } else if (k_index == 100) { - func_run_osd_server(); + //func_run_osd_server(); $(".progress-bar").css("visibility", "hidden"); //$(".progress-bar").css("width", "0%").text("0 %"); diff --git a/Aida/codemirror.min.css b/Aida/codemirror.min.css index 60c4ea2..2ef25ea 100644 --- a/Aida/codemirror.min.css +++ b/Aida/codemirror.min.css @@ -1,434 +1 @@ -.CodeMirror { - font-family: monospace; - height: 300px; - color: #000; - direction: ltr; - position: relative; - overflow: hidden; - background: #fff; -} - -.CodeMirror-lines { - padding: 4px 0; -} - -.CodeMirror pre.CodeMirror-line, -.CodeMirror pre.CodeMirror-line-like { - padding: 0 4px; -} - -.CodeMirror-gutter-filler, -.CodeMirror-scrollbar-filler { - background-color: #fff; -} - -.CodeMirror-gutters { - border-right: 1px solid #ddd; - background-color: #f7f7f7; - white-space: nowrap; -} - -.CodeMirror-linenumber { - padding: 0 3px 0 5px; - min-width: 20px; - text-align: right; - color: #999; - white-space: nowrap; -} - -.CodeMirror-guttermarker { - color: #000; -} - -.CodeMirror-guttermarker-subtle { - color: #999; -} - -.CodeMirror-cursor { - border-left: 1px solid #000; - border-right: none; - width: 0; -} - -div.CodeMirror-secondarycursor { - border-left: 1px solid silver; -} - -.cm-fat-cursor .CodeMirror-cursor { - width: auto; - border: 0 !important; - background: #7e7; -} - -.cm-fat-cursor div.CodeMirror-cursors { - z-index: 1; -} - -.cm-fat-cursor .CodeMirror-line::selection, -.cm-fat-cursor .CodeMirror-line > span::selection, -.cm-fat-cursor .CodeMirror-line > span > span::selection { - background: transparent; -} - -.cm-fat-cursor .CodeMirror-line::-moz-selection, -.cm-fat-cursor .CodeMirror-line > span::-moz-selection, -.cm-fat-cursor .CodeMirror-line > span > span::-moz-selection { - background: transparent; -} - -.cm-fat-cursor { - caret-color: transparent; -} - -@-moz-keyframes blink { - 50% { - background-color: transparent; - } -} - -@-webkit-keyframes blink { - 50% { - background-color: transparent; - } -} - -@keyframes blink { - 50% { - background-color: transparent; - } -} - -.cm-tab { - display: inline-block; - text-decoration: inherit; -} - -.CodeMirror-rulers { - position: absolute; - left: 0; - right: 0; - top: -50px; - bottom: 0; - overflow: hidden; -} - -.CodeMirror-ruler { - border-left: 1px solid #ccc; - top: 0; - bottom: 0; - position: absolute; -} - -.cm-s-default .cm-header { - color: #00f; -} - -.cm-s-default .cm-quote { - color: #090; -} - -.cm-negative { - color: #d44; -} - -.cm-positive { - color: #292; -} - -.cm-header, -.cm-strong { - font-weight: 700; -} - -.cm-em { - font-style: italic; -} - -.cm-link { - text-decoration: underline; -} - -.cm-strikethrough { - text-decoration: line-through; -} - -.cm-s-default .cm-keyword { - color: #708; -} - -.cm-s-default .cm-atom { - color: #219; -} - -.cm-s-default .cm-number { - color: #164; -} - -.cm-s-default .cm-def { - color: #00f; -} - -.cm-s-default .cm-variable-2 { - color: #05a; -} - -.cm-s-default .cm-type, -.cm-s-default .cm-variable-3 { - color: #085; -} - -.cm-s-default .cm-comment { - color: #a50; -} - -.cm-s-default .cm-string { - color: #a11; -} - -.cm-s-default .cm-string-2 { - color: #f50; -} - -.cm-s-default .cm-meta, -.cm-s-default .cm-qualifier { - color: #555; -} - -.cm-s-default .cm-builtin { - color: #30a; -} - -.cm-s-default .cm-bracket { - color: #997; -} - -.cm-s-default .cm-tag { - color: #170; -} - -.cm-s-default .cm-attribute, -.cm-s-default .cm-link { - color: #00c; -} - -.cm-s-default .cm-hr { - color: #999; -} - -.cm-s-default .cm-error, -.cm-invalidchar { - color: red; -} - -.CodeMirror-composing { - border-bottom: 2px solid; -} - -div.CodeMirror span.CodeMirror-matchingbracket { - color: #0b0; -} - -div.CodeMirror span.CodeMirror-nonmatchingbracket { - color: #a22; -} - -.CodeMirror-matchingtag { - background: rgba(255, 150, 0, 0.3); -} - -.CodeMirror-activeline-background { - background: #e8f2ff; -} - -.CodeMirror-scroll { - overflow: scroll !important; - margin-bottom: -50px; - margin-right: -50px; - padding-bottom: 50px; - height: 100%; - outline: 0; - position: relative; - z-index: 0; -} - -.CodeMirror-sizer { - position: relative; - border-right: 50px solid transparent; -} - -.CodeMirror-gutter-filler, -.CodeMirror-hscrollbar, -.CodeMirror-scrollbar-filler, -.CodeMirror-vscrollbar { - position: absolute; - z-index: 6; - display: none; - outline: 0; -} - -.CodeMirror-vscrollbar { - right: 0; - top: 0; - overflow-x: hidden; - overflow-y: scroll; -} - -.CodeMirror-hscrollbar { - bottom: 0; - left: 0; - overflow-y: hidden; - overflow-x: scroll; -} - -.CodeMirror-scrollbar-filler { - right: 0; - bottom: 0; -} - -.CodeMirror-gutter-filler { - left: 0; - bottom: 0; -} - -.CodeMirror-gutters { - position: absolute; - left: 0; - top: 0; - min-height: 100%; - z-index: 3; -} - -.CodeMirror-gutter { - white-space: normal; - height: 100%; - display: inline-block; - vertical-align: top; - margin-bottom: -50px; -} - -.CodeMirror-gutter-wrapper { - position: absolute; - z-index: 4; - background: transparent !important; - border: none !important; -} - -.CodeMirror-gutter-background { - position: absolute; - top: 0; - bottom: 0; - z-index: 4; -} - -.CodeMirror-gutter-elt { - position: absolute; - cursor: default; - z-index: 4; -} - -.CodeMirror-gutter-wrapper ::selection, -.CodeMirror-gutter-wrapper ::-moz-selection { - background-color: transparent; -} - -.CodeMirror-lines { - cursor: text; - min-height: 1px; -} - -.CodeMirror pre.CodeMirror-line, -.CodeMirror pre.CodeMirror-line-like { - border-radius: 0; - border-width: 0; - background: transparent; - font-family: inherit; - font-size: inherit; - margin: 0; - white-space: pre; - word-wrap: normal; - line-height: inherit; - color: inherit; - z-index: 2; - position: relative; - overflow: visible; - -webkit-tap-highlight-color: transparent; - -webkit-font-variant-ligatures: contextual; - font-variant-ligatures: contextual; -} - -.CodeMirror-wrap pre.CodeMirror-line, -.CodeMirror-wrap pre.CodeMirror-line-like { - word-wrap: break-word; - white-space: pre-wrap; - word-break: normal; -} - -.CodeMirror-linebackground { - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - z-index: 0; -} - -.CodeMirror-linewidget { - position: relative; - z-index: 2; - padding: 0.1px; -} - -.CodeMirror-rtl pre { - direction: rtl; -} - -.CodeMirror-code { - outline: 0; -} - -.CodeMirror-selected { - background: #d9d9d9; -} - -.CodeMirror-focused .CodeMirror-selected { - background: #d7d4f0; -} - -.CodeMirror-crosshair { - cursor: crosshair; -} - -.CodeMirror-line::selection, -.CodeMirror-line > span::selection, -.CodeMirror-line > span > span::selection { - background: #d7d4f0; -} - -.CodeMirror-line::-moz-selection, -.CodeMirror-line > span::-moz-selection, -.CodeMirror-line > span > span::-moz-selection { - background: #d7d4f0; -} - -.cm-searching { - background-color: #ffa; - background-color: rgba(255, 255, 0, 0.4); -} - -.cm-force-border { - padding-right: 0.1px; -} - -@media print { - .CodeMirror div.CodeMirror-cursors { - visibility: hidden; - } -} - -.cm-tab-wrap-hack:after { - content: ''; -} - -span.CodeMirror-selectedtext { - background: transparent; -} +.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:0 0}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:0 0}.cm-fat-cursor{caret-color:transparent}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:red}.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:0;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none;outline:0}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0 0!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0 0} \ No newline at end of file diff --git a/Aida/cool_counter.js b/Aida/cool_counter.js index eedf620..0f9d602 100644 --- a/Aida/cool_counter.js +++ b/Aida/cool_counter.js @@ -70,7 +70,7 @@ function insertTrafficLightRectangle(r_left, r_top, r_width, r_height, r_direct, if (r_name == "person") { color_type = '#FF8C00'; } - else { + else if (r_name == "car") { color_type = '#800080'; } } diff --git a/Aida/heatmap.js b/Aida/heatmap.js index 06b2dda..685ea88 100644 --- a/Aida/heatmap.js +++ b/Aida/heatmap.js @@ -230,7 +230,7 @@ function insertTrafficLightRectangle(r_left, r_top, r_width, r_height, r_direct, if (r_name == "person") { color_type = '#FF8C00'; } - else { + else if (r_name == "car") { color_type = '#800080'; } } diff --git a/Aida/images/blank.gif b/Aida/images/blank.gif deleted file mode 100644 index 1d11fa9ada9e93505b3d736acb204083f45d5fbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 scmZ?wbhEHbWMp7uX!y@?;J^U}1_s5SEQ~;kK?g*DWEhy3To@Uw0n;G|I{*Lx diff --git a/Aida/images/loading.gif b/Aida/images/loading.gif deleted file mode 100644 index 68f01d04813c1f622810864a3aaa04b4a17ac8f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1737 zcmaKsX;2e)7>CzDa{xjjy99|1A!tC(kfocDi)<1$AxHpOQ4k^l!Vx1W6x7<&|FYXU zqO4jEiU-!VR1p+Xj1?4-iuI_J;!&?!+ghg|JJad3U)pMGzcKxNeCM6tJnuX+uPvX@ zZY|=AHdxt2Xr2y*)5|c6#FSEuyJ+Y3Z&l z2hJWo`9;lJ$6wzSoW60tqkB|d$oiO*d-^85^ojn{*NR{MP*%{@H*#gihZ8BKyB68E z-MIbjgNNV0y5khpJ^Jv`51aR%={<4jhaVq5e*9D5+*hL)XCHn4{^d%hPu@?KpKbc=eN!D=XUjDmH#n{YHNS zHCX6BV)yn2CuTNujhN~V+`RKpyXO6^ht92eqhIIlQLfz6eeCnH_C7`NPNrw9ks366 z4xX9(`s~z=+1uX^ocZ$2_fBs=JihPfWYufOIuD&AU-@`>>qn~cy$1)T7CU!5z2(U8 z)9Kt9)l`f6?NU41j6XbXfR{OHwm|T4}&24tIf+!C-g~6cQfY2^n$?AT&ZW zgqm`}3-jS2NS6n=k;sr5Hv(Q%%n)qW0X|neWVBd;Ko}d(=u%?{O0-a>kSI}shOd9n z5top}%gUCf=>?tg;*;#7!^HOL3k$fMxd=O-6Y4@%u8LS)C1D_a?27R6^vcC+6tttL z)GmTahbyJB!xmcHL#ya8ZXyfRl)a!N0BJE0y3BBfAV5;#=K&Z2VkaKZ)?9`1h5P_% znt*b}%j1|#j`b|aQDx@~wA#$PYRN2xE6UO;;vE(@$&xww-s8fZ5HmJ(eJ*rQrDbaawDbrfe_8F(wq{ge?)qQG`aXV;r(*6EM|ESje;52aFmrX!f=Pw^2oGQX$1|o4yts|b_5@w_kNwtl{wDP#JGMvIp#!SYX?Wq9S&`&_ZwkgGH5CLB7DEGJ6=R4J~p3Z4i^A}hs=-uZeD zs92l6u@**R$~L()G{5N8*7cE5-q$SCo`q4|NSVF*+A7&xZnypm$EdXgf)E%(VJHFD zSgi(H!D!(;9Zcc#GrCCJh=RlvXBQ-hv4Vodse`a32ZUFWgP5ZhM5LeV(#D^H8p@Lg ztra5R32z@1rQv{6u&RZL5%Z@Ye{q|t#6aM_1hIrpl@)oH6}os*cbAQywa{5<`ekzW O1il%9bk82&KlvLjD^%40 diff --git a/Aida/index.html b/Aida/index.html index 33ae955..b0b6874 100644 --- a/Aida/index.html +++ b/Aida/index.html @@ -1437,7 +1437,7 @@ localStorage.setItem('current_state_hide_or_open_label', 0); } else { - localStorage.setItem('current_state_hide_or_open_label', 1); + localStorage.setItem('current_state_hide_or_open_label', 0); } } diff --git a/Aida/label_names.js b/Aida/label_names.js index 8823b5c..f8d0f38 100644 --- a/Aida/label_names.js +++ b/Aida/label_names.js @@ -200,8 +200,8 @@ var LABEL_NAMES = '{' + '"LABEL_NAMES_161": "fishing",' + '"LABEL_NAMES_162": "carrier",' + '"LABEL_NAMES_163": "yacht",' + - '"LABEL_NAMES_164": "bridge_crane_up",' + - '"LABEL_NAMES_165": "bridge_crane_down"' + + '"LABEL_NAMES_164": "_s",' + //bridge_crane_up + '"LABEL_NAMES_165": "_s"' + //bridge_crane_down '}],' + '"AIFRONTBACK" : [{' + '"LABEL_NAMES_340": "dual_headlight",' + @@ -558,8 +558,8 @@ var LABEL_NAMES_zh_tw = '{' + '"LABEL_NAMES_161": "釣魚",' + '"LABEL_NAMES_162": "載體",' + '"LABEL_NAMES_163": "遊艇",' + - '"LABEL_NAMES_164": "橋式起重機運作中",' + - '"LABEL_NAMES_165": "橋式起重機停機"' + + '"LABEL_NAMES_164": "_s",' +//橋式起重機運作中 + '"LABEL_NAMES_165": "_s"' +//橋式起重機停機 '}],' + '"AIFRONTBACK" : [{' + '"LABEL_NAMES_340": "雙車燈",' + @@ -916,8 +916,8 @@ var LABEL_NAMES_ja_jp = '{' + '"LABEL_NAMES_161": "釣り",' + '"LABEL_NAMES_162": "キャリア",' + '"LABEL_NAMES_163": "ヨット",' + - '"LABEL_NAMES_164": "ブリッジクレーンアップ",' + - '"LABEL_NAMES_165": "ブリッジクレーンダウン"' + + '"LABEL_NAMES_164": "_s",' +//ブリッジクレーンアップ + '"LABEL_NAMES_165": "_s"' +//ブリッジクレーンダウン '}],' + '"AIFRONTBACK" : [{' + '"LABEL_NAMES_340": "ダブルヘッドライト",' + @@ -1274,8 +1274,8 @@ var LABEL_NAMES_it_it = '{' + '"LABEL_NAMES_161": "pesca",' + '"LABEL_NAMES_162": "vettore",' + '"LABEL_NAMES_163": "yacht",' + - '"LABEL_NAMES_164": "gru_a_ponte_su",' + - '"LABEL_NAMES_165": "gru_a_ponte_giù"' + + '"LABEL_NAMES_164": "_s",' +//gru_a_ponte_su + '"LABEL_NAMES_165": "_s"' +//gru_a_ponte_giù '}],' + '"AIFRONTBACK" : [{' + '"LABEL_NAMES_340": "doppio_faro",' + diff --git a/Aida/lang.js b/Aida/lang.js index 46e467f..d651460 100644 --- a/Aida/lang.js +++ b/Aida/lang.js @@ -1041,8 +1041,8 @@ var LANGUAGE = '{'+ '"IDC_STATIC_FPS": "FPS",' + '"IDC_STATIC_SETTING_PORT": "通信埠 / Port #",' + '"IDC_STATIC_ENABLE_SYSTEM_LOGS": "開啟紀錄",' + - '"IDC_STATIC_ENABLE_PYTHON": "開啟 python",' + - '"IDC_STATIC_ENABLE_PYTHON_FILE": "啟動 python 檔案",' + + '"IDC_STATIC_ENABLE_PYTHON": "開啟python",' + + '"IDC_STATIC_ENABLE_PYTHON_FILE": "Python狀態",' + '"HTTP_TITLE01": "車牌辨識",'+ '"HTTP_TITLE02": "車牌辨識清單",'+ '"HTTP_TITLE03": "車牌轉換表",'+ @@ -1796,7 +1796,7 @@ var LANGUAGE = '{'+ '"IDC_STATIC_SETTING_PORT": "ポート / Port #",' + '"IDC_STATIC_ENABLE_SYSTEM_LOGS": "ログを有効にする",' + '"IDC_STATIC_ENABLE_PYTHON": "Pythonを有効にする",' + - '"IDC_STATIC_ENABLE_PYTHON_FILE": "Python アーカイブを有効にする",'+ + '"IDC_STATIC_ENABLE_PYTHON_FILE": "Python像",'+ '"HTTP_TITLE01": "ナンバープレート",'+ '"HTTP_TITLE02": "LPR リスト",'+ '"HTTP_TITLE03": "リンクデータベース",'+ @@ -2536,8 +2536,8 @@ var LANGUAGE = '{'+ '"IDC_STATIC_FPS": "FPS",' + '"IDC_STATIC_SETTING_PORT": "Porta #",' + '"IDC_STATIC_ENABLE_SYSTEM_LOGS": "Abilita i log",' + - '"IDC_STATIC_ENABLE_PYTHON": "Abilita Python",' + - '"IDC_STATIC_ENABLE_PYTHON_FILE": "Abilita gli archivi Python",' + + '"IDC_STATIC_ENABLE_PYTHON": "Abilita python",' + + '"IDC_STATIC_ENABLE_PYTHON_FILE": "Stato",' + '"HTTP_TITLE01": "LPR",'+ '"HTTP_TITLE02": "LPR LISTA",'+ '"HTTP_TITLE03": "MAPPING",'+ diff --git a/Aida/lilin.png b/Aida/lilin.png index 1bd6d070475843072187c59f66906be5c86a1736..6a9a121fb549e5f38be0fffdde5c47857c45584b 100644 GIT binary patch literal 6420 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

+f-` zD%uARWJ5=|^+=k|e*1cC3}-K0FYs6T^wYKuJ;$;;O*Wf@OILx8^S%(TmA7-CGJX;Z z79OkD2UwDphK)8Zi{?rnBn&*1^}KF8>B+5LF5I!9#r>GVK2pDO>7cx`0XY1;^RV_) ziTbgqSLRIM3A$2##c#23JFd;|>Spg|JK&jEA?dPxjD*evg(f_6(KiGXgTUbHGQJ@> z8{*VkKNRFGV|}q;&yz87S5cxi1u~9Xk@DGY=r{Wa{Y+;5Dk24QY3Rvq=@r3~r7TGH z>nMLM7<=cduJ93vSiMeIg?ChEC1|{p2grn{D4fqha6|#^em`hTm)^pO1bghbWmcDf zwhHd01#_tLL{ZbC-!Y8ltmYLd(@*ko$iF|1j?%-9wz^mAfm54$NZi2 zE3F@FsfL1}xE0~MDR{#CB|yS-J=sSNZ$C6(ZnX@x6b};65KvR*Y`9M?u)q4KQftN< zqa%T34s~Fc(8mv>22M}-I7Q#%^RURye{=LaUU3SKhzlYVEU8RijGDLu@ohD!gi4{P z5-sV5=%9;cDFONgTFI(BSQibaTc7SmRd{^SF0VaFfDv+n9zfzO6Qw#pRj-r<-_yqt zf&`$yFb8*@7(t>&V$?Se#okd0&Gnru|002`qcmrMWn0{+S@th?<9EDk_1NAA{c529 ziS}BcHnCfkGqalm^QQ2oaac&ruCt(KX2V}pR=8L8V7-rj5mslUv+%IVmA&O{!YTn5 zib-d@h!Bj3I}9hyzsvC9HLV?PENyCH`H&*6nv?4Sma{m(sc{ zT`)o}5RJ}Lf)asF@eV>BOMR6eUfKNbWh%EhlL{lP&Cb>c^rJ7UoMS0;InKV^@1~qi9wOPF&sND=0rNJE0+ah~!?@YtK#$CyX SKfye606=Ows+G#tA^!!0ol-6U literal 19377 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 - @@ -9,9 +8,6 @@ - - - @@ -19,22 +15,20 @@ - + - + - - -

-
-
-
@@ -270,7 +262,6 @@
- - - + \ No newline at end of file diff --git a/Aida/python.min.js b/Aida/python.min.js index 0271d12..6a64e54 100644 --- a/Aida/python.min.js +++ b/Aida/python.min.js @@ -1,125 +1 @@ -(function (e) { - if (typeof exports === "object" && typeof module === "object") { - e(require("../../lib/codemirror")); - } else if (typeof define === "function" && define.amd) { - define(["../../lib/codemirror"], e); - } else { - e(CodeMirror); - } -})(function (x) { - "use strict"; - - function k(e) { - return new RegExp("^((" + e.join(")|(") + "))\\b"); - } - - var _ = k(["and", "or", "not", "is"]), - v = ["as", "assert", "break", "class", "continue", "def", "del", "elif", "else", "except", "finally", "for", "from", "global", "if", "import", "lambda", "pass", "raise", "return", "try", "while", "with", "yield", "in"], - z = ["abs", "all", "any", "bin", "bool", "bytearray", "callable", "chr", "classmethod", "compile", "complex", "delattr", "dict", "dir", "divmod", "enumerate", "eval", "filter", "float", "format", "frozenset", "getattr", "globals", "hasattr", "hash", "help", "hex", "id", "input", "int", "isinstance", "issubclass", "iter", "len", "list", "locals", "map", "max", "memoryview", "min", "next", "object", "oct", "open", "ord", "pow", "property", "range", "repr", "reversed", "round", "set", "setattr", "slice", "sorted", "staticmethod", "str", "sum", "super", "tuple", "type", "vars", "zip", "__import__", "NotImplemented", "Ellipsis", "__debug__"]; - - function w(e) { - return e.scopes[e.scopes.length - 1]; - } - - x.registerHelper("hintWords", "python", v.concat(z)); - x.defineMode("python", function (t, l) { - var s = "error", - o = l.delimiters || l.singleDelimiters || /^[\(\)\[\]\{\}@,:`=;\.\\]/, - a = [l.singleOperators, l.doubleOperators, l.doubleDelimiters, l.tripleDelimiters, l.operators || /^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/]; - - for (var e = 0; e < a.length; e++) { - if (!a[e]) a.splice(e--, 1); - } - - var c, u, f = l.hangingIndent || t.indentUnit, n = v, r = z; - var p = (l.extra_keywords && (n = n.concat(l.extra_keywords)), - l.extra_builtins && (r = r.concat(l.extra_builtins)), - !(l.version && Number(l.version) < 3)); - var d = p ? ( - c = l.identifiers || /^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*/, - n = n.concat(["nonlocal", "False", "True", "None", "async", "await"]), - r = r.concat(["ascii", "bytes", "exec", "print"]), - new RegExp("^(([rbuf]|(br)|(rb)|(fr)|(rf))?('{3}|\"{3}|['\"]))", "i") - ) : ( - c = l.identifiers || /^[_A-Za-z][_A-Za-z0-9]*/, - n = n.concat(["exec", "print"]), - r = r.concat(["apply", "basestring", "buffer", "cmp", "coerce", "execfile", "file", "intern", "long", "raw_input", "reduce", "reload", "unichr", "unicode", "xrange", "False", "True", "None"]), - new RegExp("^(([rubf]|(ur)|(br))?('{3}|\"{3}|['\"]))", "i") - ); - var kRegExp = k(n), m = k(r); - - function i(e, t) { - var n, r = e.sol() && "\\" !== t.lastToken; - if (r) { - t.indent = e.indentation(); - } - if (r && "py" === w(t).type) { - r = w(t).offset; - return e.eatSpace() ? (r < (n = e.indentation()) ? b(t) : (n < r && y(e, t) && "#" !== e.peek() && (t.errorToken = true), null)) : (n = h(e, t), r > 0 && y(e, t) && (n += " " + s), n); - } - return h(e, t); - } - - function h(e, t, n) { - if (e.eatSpace()) return null; - if (!n && e.match(/^#.*/)) return "comment"; - if (e.match(/^[0-9\.]/, false)) { - var r = false; - if (e.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i) && (r = true), e.match(/^[\d_]+\.\d*/)) { - return e.eat(/J/i), "number"; - } - } - if (e.match(u)) return s; - if (e.match(a)) return "operator"; - if (e.match(o)) return "punctuation"; - return e.match(c) ? ("def" === t.lastToken || "class" === t.lastToken ? "def" : "variable") : null; - } - - function b(e) { - while ("py" !== w(e).type) { - e.scopes.pop(); - } - e.scopes.push({ offset: w(e).offset + t.indentUnit, type: "py", align: null }); - } - - function y(e, t) { - for (var n = e.indentation(); 1 < t.scopes.length && w(t).offset > n;) { - if ("py" !== w(t).type) return true; - t.scopes.pop(); - } - return w(t).offset !== n; - } - - return { - startState: function (e) { - return { - tokenize: i, - scopes: [{ offset: e || 0, type: "py", align: null }], - indent: e || 0, - lastToken: null, - lambda: false, - dedent: 0 - }; - }, - token: function (e, t) { - var n = t.errorToken, r = g(e, t); - return n && (t.errorToken = false), r && "comment" !== r && (t.lastToken = "keyword" === r || "punctuation" === r ? e.current() : r), "punctuation" === r && (r = null), e.eol() && t.lambda && (t.lambda = false), n ? r + " " + s : r; - }, - indent: function (e, t) { - if (e.tokenize !== i) return e.tokenize.isString ? x.Pass : 0; - var n = w(e); - return n.type === t.charAt(0) || "py" === n.type && !e.dedent && /^(else:|elif |except |finally:)/.test(t) ? n.align - 1 : n.offset; - }, - electricInput: /^\s*([\}\]\)]|else:|elif |except |finally:)$/, - closeBrackets: { triples: "'\"" }, - lineComment: "#", - fold: "indent" - }; - }); - - x.defineMIME("text/x-python", "python"); - x.defineMIME("text/x-cython", { - name: "python", - extra_keywords: "by cdef cimport cpdef ctypedef enum except extern gil include nogil property public readonly struct union DEF IF ELIF ELSE".split(" ") - }); -}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(x){"use strict";function k(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}var _=k(["and","or","not","is"]),v=["as","assert","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","lambda","pass","raise","return","try","while","with","yield","in"],z=["abs","all","any","bin","bool","bytearray","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip","__import__","NotImplemented","Ellipsis","__debug__"];function w(e){return e.scopes[e.scopes.length-1]}x.registerHelper("hintWords","python",v.concat(z)),x.defineMode("python",function(t,l){for(var s="error",o=l.delimiters||l.singleDelimiters||/^[\(\)\[\]\{\}@,:`=;\.\\]/,a=[l.singleOperators,l.doubleOperators,l.doubleDelimiters,l.tripleDelimiters,l.operators||/^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/],e=0;en;){if("py"!=w(t).type)return 1;t.scopes.pop()}return w(t).offset!=n}function g(e,t){e.sol()&&(t.beginningOfLine=!0,t.dedent=!1);var n,r,i,o=t.tokenize(e,t),a=e.current();if(t.beginningOfLine&&"@"==a)return e.match(c,!1)?"meta":p?"operator":s;if(/\S/.test(a)&&(t.beginningOfLine=!1),"variable"!=o&&"builtin"!=o||"meta"!=t.lastToken||(o="meta"),"pass"!=a&&"return"!=a||(t.dedent=!0),"lambda"==a&&(t.lambda=!0),":"==a&&!t.lambda&&"py"==w(t).type&&e.match(/^\s*(?:#|$)/,!1)&&b(t),1==a.length&&!/string|comment/.test(o)){var l="[({".indexOf(a);if(-1!=l&&(n=e,r=t,i="])}".slice(l,l+1),n=n.match(/^[\s\[\{\(]*(?:#|$)/,!1)?null:n.column()+1,r.scopes.push({offset:r.indent+f,type:i,align:n})),-1!=(l="])}".indexOf(a))){if(w(t).type!=a)return s;t.indent=t.scopes.pop().offset-f}}return t.dedent&&e.eol()&&"py"==w(t).type&&1 + + +   + + + +   + + + + -->   @@ -233,25 +233,25 @@ + +   + + + +   + + + + + +   + + + +   + + + -->   @@ -454,70 +454,70 @@ + + +   + + + +   + + + + --> - + + +   + + + +   + + + + + +   + + + +   + + + + + +   + + + +   + + + + --> + @@ -1809,8 +1809,7 @@   - - + @@ -1977,13 +1976,13 @@ - +   - +   - + @@ -4819,10 +4818,9 @@ $('#enable_python').prop("checked", true); else $('#enable_python').prop("checked", false); - if (enable_python_file != null) // Ming 2024-10-01 - $('#enable_python_file').val(enable_python_file); - else - $('#enable_python_file').val("No python running."); + + $('#enable_python_file').val(enable_python_file); + if (enable_email_jpeg === 'Yes') $('#enable_email_jpeg').prop("checked", true); else @@ -5015,6 +5013,8 @@ else { enable_python = "No"; } + + enable_python_file = $('#enable_python_file').val(); if ($('#enable_email_jpeg').is(":checked")) { enable_email_jpeg = "Yes"; @@ -5102,12 +5102,6 @@ } ai_mirror_feature = $('#ai_mirror_feature').val(); - if ($('#enable_python').is(":checked")) { - enable_python = "Yes"; - } - else { - enable_python = "No"; - } if ($('#enable_post_only_if_both_detected').is(":checked")) { enable_post_only_if_both_detected = "Yes"; diff --git a/Aida/setting_on_nvr.html b/Aida/setting_on_nvr.html index 9a0ab59..8d0e3f1 100644 --- a/Aida/setting_on_nvr.html +++ b/Aida/setting_on_nvr.html @@ -212,17 +212,17 @@ + + +   + + + +   + + + + -->   @@ -257,25 +257,25 @@ + +   + + + +   + + + + + +   + + + +   + + + -->   @@ -338,10 +338,10 @@   @@ -398,7 +398,6 @@ -   @@ -479,70 +478,70 @@ - + + +   + + + +   + + + + --> + + +   + + + +   + + + + + +   + + + +   + + + + + +   + + + +   + + + + --> + @@ -2000,6 +1999,16 @@ + + +   + + + +   + + + @@ -2169,6 +2178,7 @@ document.getElementById("IDC_STATIC_ENABLE_SYSTEM_LOGS").innerHTML = IDC_STATIC_ENABLE_SYSTEM_LOGS; document.getElementById("IDC_STATIC_ENABLE_PYTHON").innerHTML = IDC_STATIC_ENABLE_PYTHON; + document.getElementById("IDC_STATIC_ENABLE_PYTHON_FILE").innerHTML = IDC_STATIC_ENABLE_PYTHON_FILE; document.getElementById("IDC_STATIC_RED_LIGHT_ZONE").innerHTML = IDC_STATIC_RED_LIGHT_ZONE; document.getElementById("IDC_STATIC_NO_GIVE_WAY_TOPIC").innerHTML = IDC_STATIC_NO_GIVE_WAY_TOPIC; @@ -2298,6 +2308,7 @@ var enable_email_notification = "No"; var enable_system_logs = "No"; var enable_python = "No"; + var enable_python_file = "No python running"; // Ming 2024-09-27 var enable_email_jpeg = "Yes"; var email_content = ""; var email_reset_time_interval = ""; @@ -4332,6 +4343,7 @@ enable_system_logs = jsonbuf["system_setting"]["enable_system_logs"]; enable_python = jsonbuf["system_setting"]["enable_python"]; + enable_python_file = jsonbuf["system_setting"]["enable_python_file"]; // Ming 2024-09-27 enable_email_jpeg = jsonbuf["system_setting"]["enable_email_jpeg"]; email_reset_time_interval = jsonbuf["system_setting"]["email_reset_time_interval"]; if (email_reset_time_interval.length == 0) { @@ -4635,6 +4647,7 @@ $('#nms_thres').slider('setValue', parseInt(nms_thres, 10)); $('#tracking_id_dwell').slider('setValue', parseInt(tracking_id_dwell, 10)); + $('#dwell_to_the_same_location').slider('setValue', parseInt(dwell_to_the_same_location, 10)); if (enable_cloud_v2 === 'Yes') @@ -4830,6 +4843,8 @@ else $('#enable_python').prop("checked", false); + $('#enable_python_file').val(enable_python_file); + if (enable_email_jpeg === 'Yes') $('#enable_email_jpeg').prop("checked", true); else @@ -4981,6 +4996,7 @@ nms_thres = $('#nms_thres').slider('getValue'); tracking_id_dwell = $('#tracking_id_dwell').slider('getValue'); + dwell_to_the_same_location = $('#dwell_to_the_same_location').slider('getValue'); if ($('#enable_cloud_v2').is(":checked")) { @@ -5021,6 +5037,8 @@ else { enable_python = "No"; } + + enable_python_file = $('#enable_python_file').val(); if ($('#enable_email_jpeg').is(":checked")) { enable_email_jpeg = "Yes"; diff --git a/Aida/speed_index.js b/Aida/speed_index.js index 0ff2570..fa57df3 100644 --- a/Aida/speed_index.js +++ b/Aida/speed_index.js @@ -145,7 +145,7 @@ function insertTrafficLightRectangle(r_left, r_top, r_width, r_height, r_direct, if (r_name == "person") { color_type = '#FF8C00'; } - else { + else if (r_name == "car") { color_type = '#800080'; } }