Commit befdbf36 by 潘建波

太阳能相机文件提交到git上

0 parents
Showing 775 changed files with 3991 additions and 0 deletions
#
# appweb.conf -- Appweb configuration for ${UAPP} (esp-html-mvc)
#
ErrorLog stdout level=2 append stamp=1hr
Listen 80
LoadModulePath "../../${PLATFORM}/bin"
LoadModule espHandler libmod_esp
#LoadModule espHandler libTrafficSDK
#LoadModule espHandler libmxml
#LoadModule espHandler libSCOS
#LoadModule espHandler libiconv
#LoadModule espHandler libasound
#LoadModule espHandler libini
#LoadModule espHandler libSCVasNet
#LoadModule espHandler libSCVdo
#LoadModule espHandler libxml2
#LoadModule espHandler libz
Redirect permanent /web /
SessionTimeout 999999hour
AddHandler espHandler esp
AddHandler fileHandler ""
EspUpdate off
#
# SSL/TLS configuration
#
# LoadModule sslModule libmod_ssl
# ListenSecure 443
#
# SECURITY NOTE: you must generate the server.crt and server.key.pem.
# Use a decrypted key here so it won't prompt for the password.
#
# SSLCertificateFile "server.crt"
# SSLCertificateKeyFile "server.key.pem"
#
# Define the application
#
<EspApp name="TrafficClient" routes="esp-html-mvc">
#
# EspResource NAME
# EspResourceGroup
#
# <Route /upload-uri>
AddInputFilter uploadFilter
UploadDir /tmp
UploadAutoDelete on
LimitUpload 200MB
# </Route>
SessionCookie visible=false
</EspApp>
# LogRoutes
/*
Generated from client/settings/base/bitRate.esp
*/
#include "esp.h"
static void view_01bbef22dea19670a34ba4931f2f06e4(HttpConn *conn) {
espRenderBlock(conn, "<!DOCTYPE html>\r\n\
<html>\r\n\
\r\n\
<head>\r\n\
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\r\n\
<title></title>\r\n\
<link href=\"../../css/frame.css\" rel=\"stylesheet\" />\r\n\
<link href=\"../../scripts/easyui/themes/default/easyui.css\" rel=\"stylesheet\" />\r\n\
<link href=\"../../scripts/easyui/themes/icon.css\" rel=\"stylesheet\" />\r\n\
<style type=\"text/css\">\r\n\
#bitRateForm {\r\n\
padding: 8px;\r\n\
}\r\n\
\r\n\
.tdTitle {\r\n\
width: 80px;\r\n\
}\r\n\
\r\n\
.tdMiddleTitle {\r\n\
text-align: left;\r\n\
padding-left: 20px;\r\n\
}\r\n\
</style>\r\n\
</head>\r\n\
\r\n\
<body>\r\n\
<form id=\"bitRateForm\">\r\n\
<table class=\"settingsContainer\">\r\n\
<tr>\r\n\
<td class=\"tdMiddleTitle\" colspan=\"2\">\r\n\
主码流\r\n\
</td>\r\n\
<td class=\"tdMiddleTitle\" colspan=\"2\">\r\n\
子码流\r\n\
</td>\r\n\
</tr>\r\n\
<tr>\r\n\
<td class=\"tdTitle\">\r\n\
<label for=\"107\">编码格式</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<select id=\"107\" name=\"107\" class=\"settingParameter \" disabled=\"disabled\">\r\n\
<option value=\"0\">h264</option>\r\n\
</select>\r\n\
</td>\r\n\
<td class=\"tdTitle\">\r\n\
<label>编码格式</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<select id=\"112\" name=\"112\" class=\"settingParameter \" disabled=\"disabled\">\r\n\
<option value=\"0\">h264</option>\r\n\
</select>\r\n\
</td>\r\n\
</tr>\r\n\
<tr>\r\n\
<td class=\"tdTitle\">\r\n\
<label>码率类型</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<select id=\"108\" name=\"108\" class=\"settingParameter \" disabled=\"disabled\">\r\n\
<option value=\"0\">CBR</option>\r\n\
<option value=\"1\">VBR</option>\r\n\
</select>\r\n\
</td>\r\n\
<td class=\"tdTitle\">\r\n\
<label>码率类型</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<select id=\"113\" name=\"113\" class=\"settingParameter \" disabled=\"disabled\">\r\n\
<option value=\"0\">CBR</option>\r\n\
<option value=\"1\">VBR</option>\r\n\
</select>\r\n\
</td>\r\n\
</tr>\r\n\
<tr>\r\n\
<td class=\"tdTitle\">\r\n\
<label>分辨率</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<select id=\"109\" name=\"109\" class=\"settingParameter \" disabled=\"disabled\">\r\n\
<option value=\"0\">全分辨率</option>\r\n\
<option value=\"1\">1080P</option>\r\n\
<option value=\"2\">720P</option>\r\n\
<option value=\"3\">D1</option>\r\n\
<option value=\"4\">Cif</option>\r\n\
</select>\r\n\
</td>\r\n\
<td class=\"tdTitle\">\r\n\
<label>分辨率</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<select id=\"114\" name=\"114\" class=\"settingParameter \" disabled=\"disabled\">\r\n\
<option value=\"0\">全分辨率</option>\r\n\
<option value=\"1\">1080P</option>\r\n\
<option value=\"2\">720P</option>\r\n\
<option value=\"3\">D1</option>\r\n\
<option value=\"4\">Cif</option>\r\n\
</select>\r\n\
</td>\r\n\
</tr>\r\n\
<tr>\r\n\
<td class=\"tdTitle\">\r\n\
<label class=\"needRebootHint\" title=\"修改需重启生效\">码率</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input id=\"110\" name=\"110\" class=\"settingParameter needReboot\" type=\"text\" />\r\n\
</td>\r\n\
<td class=\"tdTitle\">\r\n\
<label class=\"needRebootHint\" title=\"修改需重启生效\">码率</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input id=\"115\" name=\"115\" class=\"settingParameter needReboot\" type=\"text\" />\r\n\
</td>\r\n\
</tr>\r\n\
<tr>\r\n\
<td class=\"tdTitle\">\r\n\
<label>I帧间隔</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input id=\"111\" name=\"111\" class=\"settingParameter \" type=\"text\" />\r\n\
</td>\r\n\
<td class=\"tdTitle\">\r\n\
<label>I帧间隔</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input id=\"116\" name=\"116\" class=\"settingParameter \" type=\"text\" />\r\n\
</td>\r\n\
</tr>\r\n\
<tr>\r\n\
<td colspan=\"4\">\r\n\
<a class=\"settingBtn\" id=\"btnSave\" href=\"#\">保存</a>\r\n\
", 5182);
inputSecurityToken(); espRenderBlock(conn, "\r\n\
</td>\r\n\
</tr>\r\n\
</table>\r\n\
</form>\r\n\
<script src=\"../../scripts/easyui/jquery.min.js\"></script>\r\n\
<script src=\"../../scripts/easyui/jquery.easyui.min.js\"></script>\r\n\
<script src=\"../../scripts/easyui/locale/easyui-lang-zh_CN.js\"></script>\r\n\
<script src=\"../../scripts/utilities.js\"></script>\r\n\
<script src=\"../../scripts/jquery.validate.min.js\"></script>\r\n\
<script src=\"../../scripts/jquery.validate.extend.js\"></script>\r\n\
<script type=\"text/javascript\">\r\n\
var parameterAdaptor = new ParameterAdaptor();\r\n\
\r\n\
$().ready(function () {\r\n\
loadBitRateInfo();\r\n\
//保存参数\r\n\
$(\"#btnSave\").click(saveParametersToServer);\r\n\
\r\n\
//验证\r\n\
var rules = {};\r\n\
rules[110] = {\r\n\
range: [1, 10000],\r\n\
digits: true,\r\n\
required: true\r\n\
};\r\n\
rules[115] = {\r\n\
range: [1, 3000],\r\n\
digits: true,\r\n\
required: true\r\n\
};\r\n\
rules[111] = rules[116] = {\r\n\
range: [0, 100],\r\n\
digits: true,\r\n\
required: true\r\n\
};\r\n\
$(\"#bitRateForm\").validate({\r\n\
rules: rules\r\n\
});\r\n\
});\r\n\
\r\n\
//加载数据\r\n\
function loadBitRateInfo() {\r\n\
var RefererInfo = \"bitRate\";\r\n\
parameterAdaptor.getParameters(RefererInfo, function (data) {\r\n\
$(\"#bitRateForm\").form(\"load\", data.feedback);\r\n\
});\r\n\
};\r\n\
\r\n\
//保存参数\r\n\
function saveParametersToServer() {\r\n\
var formObj = $(\"#bitRateForm\");\r\n\
if (!formObj.valid()) {\r\n\
$.messager.alert(\"提示\", \"参数验证有误,请修改后再提交!\", \"error\");\r\n\
return;\r\n\
}\r\n\
parameterAdaptor.saveParameters(formObj);\r\n\
}\r\n\
</script>\r\n\
</body>\r\n\
\r\n\
</html>", 1989);
}
ESP_EXPORT int esp_view_01bbef22dea19670a34ba4931f2f06e4(HttpRoute *route, MprModule *module) {
espDefineView(route, "client/settings/base/bitRate.esp", view_01bbef22dea19670a34ba4931f2f06e4);
return 0;
}
/*
Generated from client/settings/function/plateRecognizing.esp
*/
#include "esp.h"
static void view_082f01c0e5ec3a9d7ddce08aff317d37(HttpConn *conn) {
espRenderBlock(conn, "<!DOCTYPE html>\r\n\
<html>\r\n\
<head>\r\n\
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\r\n\
<title></title>\r\n\
<link href=\"../../css/frame.css\" rel=\"stylesheet\" />\r\n\
<link href=\"../../scripts/easyui/themes/default/easyui.css\" rel=\"stylesheet\" />\r\n\
<link href=\"../../scripts/easyui/themes/icon.css\" rel=\"stylesheet\" />\r\n\
<style type=\"text/css\">\r\n\
.plateWidthCalManual {\r\n\
display: none;\r\n\
}\r\n\
</style>\r\n\
</head>\r\n\
<body>\r\n\
<div style=\"padding:8px;\">\r\n\
<form id=\"plateForm\">\r\n\
<table class=\"settingsContainer\">\r\n\
<tr>\r\n\
<td class=\"tdTitle\">车牌识别宽度</td>\r\n\
<td class=\"tdContent\">\r\n\
<select name=\"701\" id=\"701\" class=\"settingParameter\">\r\n\
<option value=\"0\">手动指定</option>\r\n\
<option value=\"1\">自动计算</option>\r\n\
</select>\r\n\
</td>\r\n\
</tr>\r\n\
<tr class=\"plateWidthCalManual\">\r\n\
<td class=\"tdTitle\">\r\n\
车牌最小宽度\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input type=\"text\" id=\"702\" name=\"702\" class=\"settingParameter\"/>\r\n\
</td>\r\n\
</tr>\r\n\
<tr class=\"plateWidthCalManual\">\r\n\
<td class=\"tdTitle\">\r\n\
车牌最大宽度\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input type=\"text\" id=\"703\" name=\"703\" class=\"settingParameter\"/>\r\n\
</td>\r\n\
</tr>\r\n\
<tr>\r\n\
<td class=\"tdTitle\">车牌置信度阈值</td>\r\n\
<td class=\"tdContent\">\r\n\
<input type=\"text\" name=\"704\" id=\"704\" class=\"settingParameter\" />\r\n\
</td>\r\n\
</tr>\r\n\
<tr>\r\n\
<td class=\"tdTitle\">本地车牌</td>\r\n\
<td class=\"tdContent\">\r\n\
<select name=\"705\" id=\"705\" class=\"settingParameter\">\r\n\
<option value='0'>京</option>\r\n\
<option value='1'>沪</option>\r\n\
<option value='2'>津</option>\r\n\
<option value='3'>渝</option>\r\n\
<option value='4'>冀</option>\r\n\
<option value='5'>晋</option>\r\n\
<option value='6'>蒙</option>\r\n\
<option value='7'>辽</option>\r\n\
<option value='8'>吉</option>\r\n\
<option value='9'>黑</option>\r\n\
<option value='10'>苏</option>\r\n\
<option value='11'>浙</option>\r\n\
<option value='12'>皖</option>\r\n\
<option value='13'>闽</option>\r\n\
<option value='14'>赣</option>\r\n\
<option value='15'>鲁</option>\r\n\
<option value='16'>豫</option>\r\n\
<option value='17'>鄂</option>\r\n\
<option value='18'>湘</option>\r\n\
<option value='19'>粤</option>\r\n\
<option value='20'>桂</option>\r\n\
<option value='21'>琼</option>\r\n\
<option value='22'>川</option>\r\n\
<option value='23'>贵</option>\r\n\
<option value='24'>云</option>\r\n\
<option value='25'>藏</option>\r\n\
<option value='26'>陕</option>\r\n\
<option value='27'>甘</option>\r\n\
<option value='28'>青</option>\r\n\
<option value='29'>宁</option>\r\n\
<option value='30'>新</option>\r\n\
</select>\r\n\
</td>\r\n\
</tr> \r\n\
<tr>\r\n\
<td colspan=\"2\">\r\n\
<a href=\"#\" class=\"settingBtn\" id=\"btnSave\">保存</a>\r\n\
</td>\r\n\
</tr>\r\n\
</table>\r\n\
", 4729);
inputSecurityToken(); espRenderBlock(conn, "\r\n\
</form>\r\n\
</div>\r\n\
<script src=\"../../scripts/easyui/jquery.min.js\"></script>\r\n\
<script src=\"../../scripts/easyui/jquery.easyui.min.js\"></script>\r\n\
<script src=\"../../scripts/easyui/locale/easyui-lang-zh_CN.js\"></script>\r\n\
<script src=\"../../scripts/utilities.js\"></script>\r\n\
<script src=\"../../scripts/jquery.validate.min.js\"></script>\r\n\
<script src=\"../../scripts/jquery.validate.extend.js\"></script>\r\n\
<script type=\"text/javascript\">\r\n\
var parameterAdaptor = new ParameterAdaptor();\r\n\
\r\n\
$().ready(function() {\r\n\
loadInfo();\r\n\
\r\n\
$(\"#btnSave\").click(saveParametersToServer);\r\n\
\r\n\
//车牌宽度自动识别\r\n\
$(\"#701\").change(showOrHiddenPlateWidthParameter);\r\n\
\r\n\
$(\"#plateForm\").validate({\r\n\
rules: {\r\n\
702: {\r\n\
required:true,\r\n\
range: [70, 230],\r\n\
digits:true\r\n\
},\r\n\
703: {\r\n\
required:true,\r\n\
range: [70, 230],\r\n\
digits:true,\r\n\
ge:[\"#702\",\"车牌最小宽度\"]\r\n\
},\r\n\
704: {\r\n\
required:true,\r\n\
range: [0, 101],\r\n\
digits: true\r\n\
}\r\n\
}\r\n\
});\r\n\
});\r\n\
\r\n\
//更新车牌识别选项\r\n\
function showOrHiddenPlateWidthParameter() {\r\n\
var selectedValue = $(\"#701\").val();\r\n\
if (selectedValue == \"1\") {\r\n\
$(\".plateWidthCalManual\").hide();\r\n\
} else {\r\n\
$(\".plateWidthCalManual\").show();\r\n\
}\r\n\
}\r\n\
\r\n\
//加载参数\r\n\
function loadInfo() {\r\n\
var key = \"PlateRecognizeSettings\";\r\n\
\r\n\
parameterAdaptor.getParameters(key, function(data) {\r\n\
$(\"#plateForm\").form(\"load\", data.feedback);\r\n\
//更新UI\r\n\
updateUI();\r\n\
});\r\n\
}\r\n\
\r\n\
//更新UI,比如一些根据值变更布局的地方\r\n\
function updateUI() {\r\n\
//更新车牌识别选项\r\n\
showOrHiddenPlateWidthParameter();\r\n\
}\r\n\
\r\n\
//保存参数\r\n\
function saveParametersToServer() {\r\n\
var formObj = $(\"#plateForm\");\r\n\
if (!formObj.valid()) {\r\n\
$.messager.alert(\"提示\", \"参数验证有误,请修改后再提交!\", \"error\");\r\n\
return;\r\n\
}\r\n\
parameterAdaptor.saveParameters(formObj);\r\n\
}\r\n\
</script>\r\n\
</body>\r\n\
</html>\r\n\
", 2969);
}
ESP_EXPORT int esp_view_082f01c0e5ec3a9d7ddce08aff317d37(HttpRoute *route, MprModule *module) {
espDefineView(route, "client/settings/function/plateRecognizing.esp", view_082f01c0e5ec3a9d7ddce08aff317d37);
return 0;
}
/*
Generated from client/index.esp
*/
#include "esp.h"
static void view_1df554c156e28d17a2c570a2e3e3d9b6(HttpConn *conn) {
espRenderBlock(conn, "<!DOCTYPE html>\n\
<html>\n\
\n\
<head>\n\
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\
<title></title>\n\
<link href=\"scripts/easyui/themes/default/easyui.css\" rel=\"stylesheet\" />\n\
<link href=\"scripts/easyui/themes/icon.css\" rel=\"stylesheet\" />\n\
<link href=\"css/frame.css\" rel=\"stylesheet\" />\n\
<link href=\"css/index.css\" rel=\"stylesheet\" />\n\
</head>\n\
\n\
<body class=\"easyui-layout mainContainer\" data-options=\"fit:true\" id=\"mainLayout\">\n\
<!-- 后端验证用户是否登录的逻辑,不需要修改 -->\n\
", 543);
cchar* loginedUser = getSessionVar("loginedUser");
if(loginedUser == NULL)
{
redirect("login.html");
}
else
{
puts("+++++++++++++*****************--------------");
printf("loginedUser: %s\n", loginedUser);
puts("+++++++++++++*****************--------------");
}
espRenderBlock(conn, "\n\
<div data-options=\"region:'north',border:false\" class=\"main-north\">\n\
<div class=\"log\">\n\
\n\
</div>\n\
<div class=\"navMenu\" data-bind=\" with: menuData\">\n\
<ul class=\"menus_lv1\" data-bind=\"foreach:menus\">\n\
<li class=\"menu_level1\" data-bind=\"click: $root.selectMenuLv1, css: { disabled: $root.isLv1MenuDisabled($data) }\">\n\
<div class=\"menu_level1_icon\" data-bind=\"attr:{style:getMenuIcon(id)}\"></div>\n\
<span class=\"menu_level1_text\" data-bind=\"text:name\"></span>\n\
</li>\n\
</ul>\n\
</div>\n\
<div class=\"userInfo\">\n\
<div class=\"userInfoContainer\">\n\
<span id=\"loginedUser\">\n\
<span class=\"i18n-item\" data-i18n-key=\"current_user\"></span>:\n\
<!-- 显示已登录的用户名 -->\n\
", 941);
espRenderSafeString(conn, getSessionVar("loginedUser"));
espRenderBlock(conn, "\n\
</span>&nbsp;&nbsp;\n\
<a href=\"#\" onclick=\"loginout()\">\n\
<span class=\"i18n-item\" data-i18n-key=\"log_out\"></span>\n\
</a>\n\
</div>\n\
</div>\n\
<div class=\"clear\"></div>\n\
</div>\n\
<div data-options=\"region:'west',border:false,collapsible:false,closeDuration:0\" class=\"left_menu\">\n\
<ul class=\"lv2MenuContainer\" data-bind=\"foreach:selectedMenuItems\">\n\
<!--当有可用的子菜单时才显示二级菜单-->\n\
<li class=\"menuLv2Item\" data-bind=\"click:$root.selectMenuLv2,clickBubble: false,css:{disabled:!$root.isLevel2MenuValid(url,children)}\">\n\
<div class=\"menuLv2Title\">\n\
<span class=\"menuName\" data-bind=\"text:name\"></span>\n\
<span class=\"menuLv2Icon\"></span>\n\
</div>\n\
<ul class=\"lv3MenuContainer\" data-bind=\"foreach:children\">\n\
<li class=\"menuLv3Item\" data-bind=\"text:name,css:{disabled:$root.isLv3MenuDisabled($data)},click:$root.selectMenuLv3,clickBubble: false\"></li>\n\
</ul>\n\
</li>\n\
</ul>\n\
</div>\n\
<div data-options=\"region:'center',border:false\" class=\"main-center\">\n\
<iframe id=\"mainPageFrame\" frameborder=\"0\" src=\"\"></iframe>\n\
</div>\n\
<!-- 消息控件,用来向浏览器抛出事件,发送抓拍图片,抓拍信息,流量信息 -->\n\
<object id=\"infoOcxObj\" classid=\"clsid:09614DB3-38D7-4C11-8C02-4D1BA8675153\" style=\"height: 0; width: 0;\"></object>\n\
<!-- 需要的js文件 -->\n\
<script src=\"scripts/console-polyfill.js\"></script>\n\
<script src=\"scripts/core-js/core.min.js\"></script>\n\
<script src=\"scripts/easyui/jquery.min.js\"></script>\n\
<script src=\"scripts/i18n/jquery.i18n.properties.js\"></script>\n\
<script src=\"scripts/easyui/easyloader.js\"></script>\n\
<script src=\"scripts/knockout-3.2.0.js\"></script>\n\
<script src=\"scripts/utilities.js\"></script>\n\
<script src=\"scripts/i18n/i18nHelper.js\"></script>\n\
<script src=\"index.js\"></script>\n\
\n\
<!-- 下面的script标签,是用来响应Ocx控件的事件, for指向ocx的Id, event指向要响应的事件及参数 -->\n\
<script type=\"text/javascript\" for=\"infoOcxObj\" event=\"ResultRecved(jsonStr)\">\n\
var data = $.parseJSON(jsonStr);\n\
var mainPageViewModel = window.frames[\"mainPageFrame\"].mainPageViewModel;\n\
if (mainPageViewModel) {\n\
mainPageViewModel.processInfo(data);\n\
}\n\
</script>\n\
<script type=\"text/javascript\" for=\"infoOcxObj\" event=\"AlarmRecved(jsonStr)\">\n\
var alarmJsonData = $.parseJSON(jsonStr);\n\
var mainPageViewModel = window.frames[\"mainPageFrame\"].mainPageViewModel;\n\
if (mainPageViewModel) {\n\
mainPageViewModel.processAlarmInfo(alarmJsonData);\n\
}\n\
</script>\n\
<script type=\"text/javascript\" for=\"infoOcxObj\" event=\"FlowRecved(jsonStr)\">\n\
var flowJsonData = $.parseJSON(jsonStr);\n\
var mainPageViewModel = window.frames[\"mainPageFrame\"].mainPageViewModel;\n\
if (mainPageViewModel) {\n\
mainPageViewModel.processFlowInfo(flowJsonData);\n\
}\n\
</script>\n\
<script type=\"text/javascript\" for=\"infoOcxObj\" event=\"LightStatusRecved(jsonStr)\">\n\
var flowJsonData = $.parseJSON(jsonStr);\n\
var mainPageViewModel = window.frames[\"mainPageFrame\"].mainPageViewModel;\n\
if (mainPageViewModel) {\n\
mainPageViewModel.signalLight(flowJsonData);\n\
}\n\
</script>\n\
</body>\n\
\n\
</html>\n\
", 3778);
}
ESP_EXPORT int esp_view_1df554c156e28d17a2c570a2e3e3d9b6(HttpRoute *route, MprModule *module) {
espDefineView(route, "client/index.esp", view_1df554c156e28d17a2c570a2e3e3d9b6);
return 0;
}
/*
Generated from client/settings/base/deviceSettingsInfo.esp
*/
#include "esp.h"
static void view_39df51a513b14995232abf8eb845cd9a(HttpConn *conn) {
espRenderBlock(conn, "<!DOCTYPE html>\r\n\
<html>\r\n\
\r\n\
<head>\r\n\
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\r\n\
<title></title>\r\n\
<link href=\"../../css/frame.css\" rel=\"stylesheet\" />\r\n\
<link href=\"../../scripts/easyui/themes/default/easyui.css\" rel=\"stylesheet\" />\r\n\
<link href=\"../../scripts/easyui/themes/icon.css\" rel=\"stylesheet\" />\r\n\
<style type=\"text/css\">\r\n\
#deviceInfoForm {\r\n\
padding: 8px;\r\n\
}\r\n\
\r\n\
.tdTitle {\r\n\
width: 80px;\r\n\
}\r\n\
\r\n\
.settingBtn {\r\n\
margin-left: 10px;\r\n\
}\r\n\
</style>\r\n\
</head>\r\n\
\r\n\
<body>\r\n\
<form id=\"deviceInfoForm\">\r\n\
<table class=\"settingsContainer\">\r\n\
<tr>\r\n\
<td class=\"tdTitle\">\r\n\
<label>设备编号</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input name=\"45\" id=\"45\" class=\"settingParameter \" type=\"text\" />\r\n\
</td>\r\n\
<td class=\"tdTitle\">\r\n\
<label>设备名称</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input id=\"46\" name=\"46\" class=\"settingParameter \" type=\"text\" />\r\n\
</td>\r\n\
</tr>\r\n\
<tr>\r\n\
<td class=\"tdTitle\">\r\n\
<label>地点编号</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input id=\"47\" name=\"47\" class=\"settingParameter \" type=\"text\" />\r\n\
</td>\r\n\
<td class=\"tdTitle\">\r\n\
<label>地点名称</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input id=\"48\" name=\"48\" class=\"settingParameter \" type=\"text\" />\r\n\
</td>\r\n\
</tr>\r\n\
<tr>\r\n\
<td class=\"tdTitle\">\r\n\
<label>方向编号</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input id=\"49\" name=\"49\" class=\"settingParameter \" type=\"text\" />\r\n\
</td>\r\n\
<td class=\"tdTitle\">\r\n\
<label>方向名称</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input id=\"50\" name=\"50\" class=\"settingParameter \" type=\"text\" />\r\n\
</td>\r\n\
</tr>\r\n\
<tr>\r\n\
<td class=\"tdTitle\">\r\n\
<label>扩展信息1</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input id=\"51\" name=\"51\" class=\"settingParameter \" type=\"text\" />\r\n\
</td>\r\n\
<td class=\"tdTitle\">\r\n\
<label>扩展信息2</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input id=\"52\" name=\"52\" class=\"settingParameter \" type=\"text\" />\r\n\
</td>\r\n\
</tr>\r\n\
<tr>\r\n\
<td class=\"tdTitle\">\r\n\
<label>扩展信息3</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input id=\"53\" name=\"53\" class=\"settingParameter \" type=\"text\" />\r\n\
</td>\r\n\
<td class=\"tdTitle\">\r\n\
<label>扩展信息4</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input id=\"54\" name=\"54\" class=\"settingParameter \" type=\"text\" />\r\n\
</td>\r\n\
</tr>\r\n\
<tr>\r\n\
<td class=\"tdTitle\">\r\n\
<label>扩展信息5</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input id=\"55\" name=\"55\" class=\"settingParameter \" type=\"text\" />\r\n\
</td>\r\n\
<td class=\"tdTitle\">\r\n\
<label>扩展信息6</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input id=\"56\" name=\"56\" class=\"settingParameter \" type=\"text\" />\r\n\
</td>\r\n\
</tr>\r\n\
<tr>\r\n\
<td colspan=\"4\" style=\"padding-top:6px;\">\r\n\
<a href=\"#\" class=\"settingBtn\" id=\"btnSave\">保存</a>\r\n\
", 4199);
inputSecurityToken(); espRenderBlock(conn, "\r\n\
</td>\r\n\
</tr>\r\n\
</table>\r\n\
</form>\r\n\
<script src=\"../../scripts/easyui/jquery.min.js\"></script>\r\n\
<script src=\"../../scripts/easyui/jquery.easyui.min.js\"></script>\r\n\
<script src=\"../../scripts/easyui/locale/easyui-lang-zh_CN.js\"></script>\r\n\
<script src=\"../../scripts/utilities.js\"></script>\r\n\
<script src=\"../../scripts/jquery.validate.min.js\"></script>\r\n\
<script src=\"../../scripts/jquery.validate.extend.js\"></script>\r\n\
<script type=\"text/javascript\">\r\n\
//参数适配器\r\n\
var parameterAdaptor = new ParameterAdaptor();\r\n\
\r\n\
$().ready(function () {\r\n\
loadDeviceInfo();\r\n\
$(\"#btnSave\").click(saveParametersToServer);\r\n\
\r\n\
var rules = {};\r\n\
for (var i = 45; i <= 56; i++) {\r\n\
if (i == 47) {\r\n\
rules[i] = {\r\n\
maxByteLength: 30\r\n\
};\r\n\
} else {\r\n\
rules[i] = {\r\n\
maxByteLength: 60\r\n\
};\r\n\
}\r\n\
}\r\n\
$(\"#deviceInfoForm\").validate({\r\n\
rules: rules\r\n\
});\r\n\
});\r\n\
\r\n\
//加载设备信息\r\n\
function loadDeviceInfo() {\r\n\
var RefererInfo = \"deviceSettingsInfo\";\r\n\
parameterAdaptor.getParameters(RefererInfo, onLoadSuccess);\r\n\
}\r\n\
\r\n\
//加载表单数据\r\n\
function onLoadSuccess(data) {\r\n\
$(\"#deviceInfoForm\").form(\"load\", data.feedback);\r\n\
}\r\n\
\r\n\
//保存参数到服务器\r\n\
function saveParametersToServer() {\r\n\
var formObj = $(\"#deviceInfoForm\");\r\n\
if (!formObj.valid()) {\r\n\
$.messager.alert(\"提示\", \"参数验证有误,请修改后再提交!\", \"error\");\r\n\
return;\r\n\
}\r\n\
parameterAdaptor.saveParameters(formObj);\r\n\
}\r\n\
</script>\r\n\
</body>\r\n\
\r\n\
</html>", 1934);
}
ESP_EXPORT int esp_view_39df51a513b14995232abf8eb845cd9a(HttpRoute *route, MprModule *module) {
espDefineView(route, "client/settings/base/deviceSettingsInfo.esp", view_39df51a513b14995232abf8eb845cd9a);
return 0;
}
/*
Generated from client/settings/advanced/network.esp
*/
#include "esp.h"
static void view_5fa28f9e09af84a1ed967ce49cb64dca(HttpConn *conn) {
espRenderBlock(conn, "<!DOCTYPE html>\r\n\
<html>\r\n\
<head>\r\n\
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\r\n\
<title></title>\r\n\
<link href=\"../../css/frame.css\" rel=\"stylesheet\" />\r\n\
<link href=\"../../scripts/easyui/themes/default/easyui.css\" rel=\"stylesheet\" />\r\n\
<link href=\"../../css/reboot.css\" rel=\"stylesheet\" />\r\n\
<style type=\"text/css\">\r\n\
#form_network {\r\n\
padding: 8px;\r\n\
}\r\n\
\r\n\
.disabled {\r\n\
display: none;\r\n\
}\r\n\
</style>\r\n\
</head>\r\n\
<body>\r\n\
<form id=\"form_network\">\r\n\
<table class=\"settingsContainer\">\r\n\
<tr>\r\n\
<td class=\"tdTitle\">\r\n\
<label class=\"needRebootHint\" title=\"修改需重启生效\">MAC</label>\r\n\
</td>\r\n\
<td class=\"tdContent\">\r\n\
<input id=\"920\" name=\"920\" class=\"settingParameter needReboot\" type=\"text\" />\r\n\
</td>\r\n\
</tr>\r\n\
<tr class=\"disabled\">\r\n\
<td class=\"tdTitle\">MTU</td>\r\n\
<td class=\"tdContent\">\r\n\
<input id=\"921\" name=\"921\" disabled=\"disabled\" class=\"settingParameter\" type=\"text\" />\r\n\
</td>\r\n\
</tr>\r\n\
<tr class=\"disabled\">\r\n\
<td class=\"tdTitle\">DNS</td>\r\n\
<td class=\"tdContent\">\r\n\
<input id=\"922\" name=\"922\" disabled=\"disabled\" class=\"settingParameter\" type=\"text\" />\r\n\
</td>\r\n\
</tr>\r\n\
<tr>\r\n\
<td colspan=\"2\">\r\n\
<a href=\"#\" class=\"settingBtn\" id=\"btnSave\">保存</a>\r\n\
</td>\r\n\
</tr>\r\n\
</table>\r\n\
", 1798);
inputSecurityToken(); espRenderBlock(conn, "\r\n\
</form>\r\n\
<script src=\"../../scripts/easyui/jquery.min.js\"></script>\r\n\
<script src=\"../../scripts/easyui/jquery.easyui.min.js\"></script>\r\n\
<script src=\"../../scripts/easyui/locale/easyui-lang-zh_CN.js\"></script>\r\n\
<script src=\"../../scripts/utilities.js\"></script>\r\n\
<script src=\"../../scripts/jquery.validate.min.js\"></script>\r\n\
<script src=\"../../scripts/jquery.validate.extend.js\"></script>\r\n\
<script type=\"text/javascript\">\r\n\
var parameterAdaptor = new ParameterAdaptor();\r\n\
var rebootManager = new RebootManager();\r\n\
$().ready(function() {\r\n\
loadNetworkInfo();\r\n\
\r\n\
$(\"#btnSave\").click(saveParametersToServer);\r\n\
\r\n\
$(\"#form_network\").validate({\r\n\
rules: {\r\n\
920: {\r\n\
mac: true,\r\n\
required:true\r\n\
}\r\n\
}\r\n\
});\r\n\
});\r\n\
\r\n\
//加载高级网络参数\r\n\
function loadNetworkInfo() {\r\n\
var refererInfo = \"advancedNetwork\";\r\n\
parameterAdaptor.getParameters(refererInfo, function(data) {\r\n\
$(\"#form_network\").form(\"load\", data.feedback);\r\n\
//加载完参数,立即验证\r\n\
$(\"#form_network\").valid();\r\n\
});\r\n\
}\r\n\
\r\n\
//保存参数到服务器\r\n\
function saveParametersToServer() {\r\n\
var formObj = $(\"#form_network\");\r\n\
if (!formObj.valid()) {\r\n\
$.messager.alert(\"提示\", \"参数验证有误,请修改后再提交!\", \"error\");\r\n\
return;\r\n\
}\r\n\
parameterAdaptor.saveParameters(formObj, function(response) {\r\n\
if (response.error) {\r\n\
rebootManager.sendRebootCmd(\"Mac地址重启后生效,现在是否重启?\");\r\n\
}\r\n\
});\r\n\
}\r\n\
</script>\r\n\
</body>\r\n\
</html>", 2097);
}
ESP_EXPORT int esp_view_5fa28f9e09af84a1ed967ce49cb64dca(HttpRoute *route, MprModule *module) {
espDefineView(route, "client/settings/advanced/network.esp", view_5fa28f9e09af84a1ed967ce49cb64dca);
return 0;
}
/*
Generated from client/settings/function/captureSettings.esp
*/
#include "esp.h"
static void view_b783ea478f96d3317fdff50750f5cc39(HttpConn *conn) {
espRenderBlock(conn, "<!DOCTYPE html>\r\n\
<html>\r\n\
\r\n\
<head>\r\n\
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\r\n\
<title>抓拍参数设置</title>\r\n\
<link href=\"../../css/frame.css\" rel=\"stylesheet\" />\r\n\
<link href=\"../../scripts/easyui/themes/default/easyui.css\" rel=\"stylesheet\" />\r\n\
<link href=\"../../scripts/easyui/themes/icon.css\" rel=\"stylesheet\" />\r\n\
<link href=\"../../css/reboot.css\" rel=\"stylesheet\" />\r\n\
<style type=\"text/css\">\r\n\
#childPageIframe {\r\n\
width: 100%;\r\n\
height: 100%;\r\n\
border: 0;\r\n\
padding: 0;\r\n\
margin: 0;\r\n\
}\r\n\
\r\n\
#captureModeForm {\r\n\
display: inline;\r\n\
}\r\n\
</style>\r\n\
</head>\r\n\
\r\n\
<body>\r\n\
<div class=\"easyui-layout\" data-options=\"fit:true\">\r\n\
<div data-options=\"region:'north',border:false\" style=\"height: 40px;padding:8px 0 8px 7px;background-color: #F3F5F6;\">\r\n\
<span>抓拍模式</span>\r\n\
<form id=\"captureModeForm\">\r\n\
<select id=\"captureMode\" name=\"220\">\r\n\
</select>\r\n\
", 1089);
inputSecurityToken(); espRenderBlock(conn, "\r\n\
</form>\r\n\
</div>\r\n\
<div data-options=\"region:'center',border:false\" style=\"overflow: hidden;\">\r\n\
<iframe src=\"\" id=\"childPageIframe\" frameborder=\"0\"></iframe>\r\n\
</div>\r\n\
</div>\r\n\
\r\n\
<script src=\"../../scripts/easyui/jquery.min.js\"></script>\r\n\
<script src=\"../../scripts/easyui/jquery.easyui.min.js\"></script>\r\n\
<script src=\"../../scripts/easyui/locale/easyui-lang-zh_CN.js\"></script>\r\n\
<script src=\"../../scripts/utilities.js\"></script>\r\n\
<script type=\"text/javascript\">\r\n\
var parameterAdaptor = new ParameterAdaptor();\r\n\
var rebootManager = new RebootManager();\r\n\
\r\n\
// 仅供开发时测试使用\r\n\
var isDebug = false;\r\n\
\r\n\
$().ready(function () {\r\n\
// 加载所有抓拍模式\r\n\
loadAllCaptureModes();\r\n\
// 跳转子页面\r\n\
$(\"#captureMode\").change(confirmCaptureModeChange);\r\n\
\r\n\
if (isDebug) {\r\n\
$(\"#childPageIframe\").attr(\"src\", \"capture/noMotorVehicleViolation.esp\");\r\n\
}\r\n\
});\r\n\
\r\n\
// 加载相机抓拍模式,首先加载所有可用的模式,然后再加载当前的模式,并显示对应的页面\r\n\
function loadAllCaptureModes() {\r\n\
var url = \"/do/trafficController/configVal?t=\" + new Date().getTime();\r\n\
if (isDebug) {\r\n\
url = \"../advanced/xml/VasconfigInfo.xml\";\r\n\
}\r\n\
$.get(url, null, function (xmlData) {\r\n\
var xmlDoc = null;\r\n\
try {\r\n\
var xmlDoc = $.parseXML(xmlData);\r\n\
\r\n\
} catch (error) {\r\n\
$.messager.alert(\"错误\", \"解释参数XML错误!(XML格式不正确)\", \"error\");\r\n\
if (window.console) {\r\n\
console.error(\"解析参数XML失败!\");\r\n\
}\r\n\
return;\r\n\
}\r\n\
// 从中解析出抓拍参数\r\n\
var captureModePath = \"root>功能配置>抓拍参数配置>抓拍模式>AttribRange\";\r\n\
var modeTextObjs = $(xmlDoc).find(captureModePath);\r\n\
if (modeTextObjs.length === 0) {\r\n\
$.messager.alert(\"错误\", \"获取相机抓拍模式失败!\", \"error\");\r\n\
if (window.console) {\r\n\
console.error(\"从xml中未能解析到节点:/root/功能配置/抓拍参数配置/抓拍模式/AttribRange\");\r\n\
}\r\n\
return;\r\n\
}\r\n\
var allModes = modeTextObjs[0].textContent ? modeTextObjs[0].textContent : modeTextObjs[0].text;\r\n\
var comboboxData = getComboboxData(allModes);\r\n\
// 填充到下拉框\r\n\
$(\"#captureMode\").html(\"\");\r\n\
var options = [];\r\n\
for (var index = 0; index < comboboxData.length; index++) {\r\n\
var element = comboboxData[index];\r\n\
options.push(\"<option value='\" + element.id + \"'>\" + element.text + \"</option>\");\r\n\
}\r\n\
$(\"#captureMode\").html(options.join(\"\"));\r\n\
// 调用加载当前相机模式的方法\r\n\
loadActiveCaptureMode();\r\n\
}, \"text\");\r\n\
}\r\n\
\r\n\
function getComboboxData(pRangeString) {\r\n\
var enumRegex = /(-?\\d+)-(([0-9a-zA-Z\\u4e00-\\u9faf]+)(&amp;)?)?/g;//枚举类型的正则表达式\r\n\
var comboboxData = [];\r\n\
var match = enumRegex.exec(pRangeString);\r\n\
while (match != null) {\r\n\
comboboxData.push({\r\n\
id: match[1],\r\n\
text: match.length >= 4 ? match[3] : \"\"\r\n\
});\r\n\
match = enumRegex.exec(pRangeString);\r\n\
}\r\n\
return comboboxData;\r\n\
}\r\n\
\r\n\
//加载抓拍模式\r\n\
function loadActiveCaptureMode() {\r\n\
var refererInfo = \"cameraSettings\";\r\n\
parameterAdaptor.getParameters(refererInfo, function (data) {\r\n\
if (data && data.feedback) {\r\n\
$(\"#captureModeForm\").form(\"load\", data.feedback);\r\n\
}\r\n\
//显示对应的页面\r\n\
showChildPage();\r\n\
});\r\n\
}\r\n\
\r\n\
//显示对应的子页面\r\n\
function showChildPage() {\r\n\
// 获取模式下拉框的值\r\n\
var modeValue = $(\"#captureMode\").find(\"option:selected\").val();\r\n\
var pageUrl = \"\";\r\n\
switch (modeValue) {\r\n\
//路口电警\r\n\
case \"0\":\r\n\
pageUrl = \"capture/intersection.esp\";\r\n\
break;\r\n\
// 路段电警,视频卡口\r\n\
case \"1\":\r\n\
case \"2\":\r\n\
pageUrl = \"capture/videoBayonet.esp\";\r\n\
break;\r\n\
// 移动公交\r\n\
case \"3\":\r\n\
pageUrl = \"capture/busSetting.esp\";\r\n\
break;\r\n\
// 非机动车违法\r\n\
case \"4\":\r\n\
pageUrl = \"capture/noMotorVehicleViolation.esp\";\r\n\
break;\r\n\
default:\r\n\
}\r\n\
if (pageUrl) {\r\n\
$(\"#childPageIframe\").attr(\"src\", pageUrl);\r\n\
}\r\n\
}\r\n\
\r\n\
//向用户确认抓拍模式变更,保存参数并重启相机\r\n\
function confirmCaptureModeChange() {\r\n\
var captureMode = $(\"#captureMode\").find(\"option:selected\").val();\r\n\
// debug模式 直接显示对应的页面\r\n\
if (isDebug) {\r\n\
showChildPage();\r\n\
return;\r\n\
}\r\n\
//隐藏ROIOcx\r\n\
hideRoiOcx();\r\n\
\r\n\
$.messager.confirm(\"提示\", \"变更抓拍模式需要重启相机,确认变更吗?\", function (isConfirm) {\r\n\
if (isConfirm) {\r\n\
//确认变更,保存参数\r\n\
var formObj = $(\"#captureModeForm\");\r\n\
parameterAdaptor.saveParameters(formObj, function (data) {\r\n\
if (data.error) {\r\n\
$(\"#childPageIframe\").hide();\r\n\
rebootManager.sendRebootCmd();\r\n\
} else {\r\n\
$.messager.alert(\"提示\", \"切换抓拍模式失败!\", \"error\");\r\n\
}\r\n\
}, \"GET\");\r\n\
}\r\n\
//显示RoiOcx\r\n\
showRoiOcx();\r\n\
});\r\n\
}\r\n\
\r\n\
function hideRoiOcx() {\r\n\
var ocx = childPageIframe.document.getElementById(\"roiOcxObject\");\r\n\
if (ocx) {\r\n\
ocx.style.display = \"none\";\r\n\
}\r\n\
}\r\n\
\r\n\
function showRoiOcx() {\r\n\
var ocx = childPageIframe.document.getElementById(\"roiOcxObject\");\r\n\
if (ocx) {\r\n\
ocx.style.display = \"block\";\r\n\
}\r\n\
}\r\n\
\r\n\
</script>\r\n\
</body>\r\n\
\r\n\
</html>", 7028);
}
ESP_EXPORT int esp_view_b783ea478f96d3317fdff50750f5cc39(HttpRoute *route, MprModule *module) {
espDefineView(route, "client/settings/function/captureSettings.esp", view_b783ea478f96d3317fdff50750f5cc39);
return 0;
}
/*
Generated from client/settings/advanced/dynamicParameters.esp
*/
#include "esp.h"
static void view_d4f7e93e71a93ce1254a9da965f0b3d8(HttpConn *conn) {
espRenderBlock(conn, "<!DOCTYPE html>\r\n\
<html>\r\n\
\r\n\
<head>\r\n\
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\r\n\
<title>动态参数</title>\r\n\
<link href=\"../../css/frame.css\" rel=\"stylesheet\" />\r\n\
<link href=\"../../scripts/easyui/themes/default/easyui.css\" rel=\"stylesheet\" />\r\n\
<style type=\"text/css\">\r\n\
.textbox-addon-right {\r\n\
float: right;\r\n\
}\r\n\
</style>\r\n\
</head>\r\n\
\r\n\
<body>\r\n\
<div class=\"easyui-layout\" data-options=\"fit:true\">\r\n\
<div data-options=\"region:'west',title:'参数树',split:true\" style=\"width:400px;\">\r\n\
<div id=\"ptree\" class=\"easyui-tree\" data-options=\"fit:true,lines:true,onClick:clickTreeNode\">\r\n\
</div>\r\n\
</div>\r\n\
<div data-options=\"region:'center',title:'参数设置'\" style=\"padding:5px;background:#eee;\">\r\n\
<div id=\"pgrid\" class=\"easyui-propertygrid\" data-options=\"showGroup:false,fit:true,fitColumns:true,\r\n\
columns:myColumns,onAfterEdit:onEndEditParameter,onClickRow:onClickPropertyRow\">\r\n\
</div>\r\n\
</div>\r\n\
<div data-options=\"region:'south',border:false\" style=\"height: 40px;padding:8px;\">\r\n\
<a href=\"#\" id=\"saveAllChanged\" class=\"settingBtn\">保存</a>\r\n\
</div>\r\n\
</div>\r\n\
", 1266);
inputSecurityToken(); espRenderBlock(conn, "\r\n\
<script src=\"../../scripts/console-polyfill/index.js\"></script>\r\n\
<script src=\"../../scripts/easyui/jquery.min.js\"></script>\r\n\
<script src=\"../../scripts/easyui/jquery.easyui.min.js\"></script>\r\n\
<script src=\"../../scripts/easyui/jquery.easyui.extension.js\"></script>\r\n\
<script src=\"../../scripts/My97DatePicker/WdatePicker.js\"></script>\r\n\
<script src=\"dynamicParameterTree.js\"></script>\r\n\
</body>\r\n\
\r\n\
</html>", 451);
}
ESP_EXPORT int esp_view_d4f7e93e71a93ce1254a9da965f0b3d8(HttpRoute *route, MprModule *module) {
espDefineView(route, "client/settings/advanced/dynamicParameters.esp", view_d4f7e93e71a93ce1254a9da965f0b3d8);
return 0;
}
/*
Generated from client/settings/function/cameraSetup.esp
*/
#include "esp.h"
static void view_f5950e43d649170e76544f7fcc05285c(HttpConn *conn) {
espRenderBlock(conn, "<!DOCTYPE html>\r\n\
<html>\r\n\
<head>\r\n\
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\r\n\
<title>相机架设</title>\r\n\
<link href=\"../../css/frame.css\" rel=\"stylesheet\" />\r\n\
<link href=\"../../scripts/easyui/themes/default/easyui.css\" rel=\"stylesheet\" />\r\n\
<link href=\"../../scripts/easyui/themes/icon.css\" rel=\"stylesheet\" />\r\n\
<style type=\"text/css\">\r\n\
.mainContainer {\r\n\
width: 90%;\r\n\
height: 400px;\r\n\
padding: 8px;\r\n\
}\r\n\
.tdTitle {\r\n\
width: 110px;\r\n\
}\r\n\
.picExample {\r\n\
height: 276px;\r\n\
width: 322px;\r\n\
background: url(../../images/cameraSetup.png) no-repeat 0 0;\r\n\
}\r\n\
</style>\r\n\
</head>\r\n\
<body>\r\n\
<div class=\"mainContainer\">\r\n\
<form id=\"cameraSetupForm\">\r\n\
<table class=\"settingsContainer\">\r\n\
<tr>\r\n\
<td class=\"tdTitle\">杆高(1-10米)</td>\r\n\
<td class=\"tdContent\">\r\n\
<input type=\"text\" name=\"210\" id=\"210\" class=\"settingParameter\" />\r\n\
</td>\r\n\
</tr>\r\n\
<tr>\r\n\
<td class=\"tdTitle\">焦距(5-50毫米)</td>\r\n\
<td class=\"tdContent\">\r\n\
<input type=\"text\" name=\"211\" id=\"211\" class=\"settingParameter\">\r\n\
</td>\r\n\
</tr>\r\n\
<tr>\r\n\
<td colspan=\"2\">\r\n\
<div class=\"picExample\">\r\n\
\r\n\
</div>\r\n\
</td>\r\n\
</tr>\r\n\
<tr>\r\n\
<td colspan=\"2\">\r\n\
", 1695);
inputSecurityToken(); espRenderBlock(conn, "\r\n\
<a href=\"#\" id=\"btnSave\" class=\"settingBtn\">保存</a>\r\n\
</td>\r\n\
</tr>\r\n\
</table>\r\n\
</form>\r\n\
</div>\r\n\
<script src=\"../../scripts/easyui/jquery.min.js\"></script>\r\n\
<script src=\"../../scripts/easyui/jquery.easyui.min.js\"></script>\r\n\
<script src=\"../../scripts/easyui/locale/easyui-lang-zh_CN.js\"></script>\r\n\
<script src=\"../../scripts/utilities.js\"></script>\r\n\
<script src=\"../../scripts/jquery.validate.min.js\"></script>\r\n\
<script src=\"../../scripts/jquery.validate.extend.js\"></script>\r\n\
<script type=\"text/javascript\">\r\n\
var parameterAdaptor = new ParameterAdaptor();\r\n\
var rebootManager = new RebootManager();\r\n\
\r\n\
$().ready(function() {\r\n\
loadCameraSetupInfo();\r\n\
setTimeout(loadAttributeInfo, 200);\r\n\
$(\"#btnSave\").click(saveParametersToServer);\r\n\
\r\n\
//表单验证\r\n\
$(\"#cameraSetupForm\").validate({\r\n\
rules: {\r\n\
210: {\r\n\
required:true,\r\n\
range:[1,10]\r\n\
},\r\n\
211: {\r\n\
required:true,\r\n\
range:[5,50]\r\n\
}\r\n\
}\r\n\
});\r\n\
});\r\n\
\r\n\
//加载相机设置参数\r\n\
function loadCameraSetupInfo() {\r\n\
var RefererInfo = \"cameraSetup\";\r\n\
parameterAdaptor.getParameters(RefererInfo, function(data) {\r\n\
$(\"#cameraSetupForm\").form(\"load\", data.feedback);\r\n\
});\r\n\
}\r\n\
\r\n\
function loadAttributeInfo() {\r\n\
var RefererInfo = \"cameraSetup\";\r\n\
parameterAdaptor.getAttribute(RefererInfo, function(data){\r\n\
for(var pId in data){\r\n\
if(document.getElementById(pId) != null)\r\n\
document.getElementById(pId).setAttribute( \"title\", data[pId]);\r\n\
} \r\n\
});\r\n\
}\r\n\
\r\n\
//保存参数到服务器\r\n\
function saveParametersToServer() {\r\n\
var formObj = $(\"#cameraSetupForm\");\r\n\
if (!formObj.valid()) {\r\n\
$.messager.alert(\"提示\", \"参数验证有误,请修改后再提交!\", \"error\");\r\n\
return;\r\n\
}\r\n\
parameterAdaptor.saveParameters(formObj, function(response) {\r\n\
if (response.error) {\r\n\
$.messager.show({\r\n\
title:'结果',\r\n\
msg:'修改成功!',\r\n\
timeout:3000,\r\n\
showType:'slide'\r\n\
});\r\n\
}\r\n\
});\r\n\
\r\n\
}\r\n\
</script>\r\n\
</body>\r\n\
</html>\r\n\
", 2594);
}
ESP_EXPORT int esp_view_f5950e43d649170e76544f7fcc05285c(HttpRoute *route, MprModule *module) {
espDefineView(route, "client/settings/function/cameraSetup.esp", view_f5950e43d649170e76544f7fcc05285c);
return 0;
}
# http://editorconfig.org
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
# Use 4 spaces for the Python files
[*.py]
indent_size = 4
max_line_length = 80
# The JSON files contain newlines inconsistently
[*.json]
insert_final_newline = ignore
# Minified JavaScript files shouldn't be changed
[**.min.js]
indent_style = ignore
insert_final_newline = ignore
# Makefiles always use tabs for indentation
[Makefile]
indent_style = tab
# Batch files use tabs for indentation
[*.bat]
indent_style = tab
[*.md]
trim_trailing_whitespace = false
[*.html]
max_line_length = 120
<?xml version="1.0" encoding="GBK"?>
<roi><version>0.0.0.1</version><lane_line><line_count>6</line_count><line><line_seq>1</line_seq><line_type>0</line_type><line_seq_in_same_type>1</line_seq_in_same_type><points><point_count>2</point_count><point><point_seq>1</point_seq><x>0.277662</x><y>0.950570</y></point><point><point_seq>2</point_seq><x>0.340292</x><y>0.684411</y></point></points></line><line><line_seq>2</line_seq><line_type>0</line_type><line_seq_in_same_type>2</line_seq_in_same_type><points><point_count>2</point_count><point><point_seq>1</point_seq><x>0.498956</x><y>0.927757</y></point><point><point_seq>2</point_seq><x>0.505219</x><y>0.657795</y></point></points></line><line><line_seq>3</line_seq><line_type>2</line_type><line_seq_in_same_type>1</line_seq_in_same_type><points><point_count>2</point_count><point><point_seq>1</point_seq><x>0.338205</x><y>0.676806</y></point><point><point_seq>2</point_seq><x>0.498956</x><y>0.650190</y></point></points></line><line><line_seq>4</line_seq><line_type>4</line_type><line_seq_in_same_type>1</line_seq_in_same_type><points><point_count>2</point_count><point><point_seq>1</point_seq><x>0.517745</x><y>0.346008</y></point><point><point_seq>2</point_seq><x>0.640919</x><y>0.463878</y></point></points></line><line><line_seq>5</line_seq><line_type>10</line_type><line_seq_in_same_type>1</line_seq_in_same_type><points><point_count>2</point_count><point><point_seq>1</point_seq><x>0.283925</x><y>0.904943</y></point><point><point_seq>2</point_seq><x>0.331942</x><y>0.688213</y></point></points></line><line><line_seq>6</line_seq><line_type>10</line_type><line_seq_in_same_type>2</line_seq_in_same_type><points><point_count>2</point_count><point><point_seq>1</point_seq><x>0.505219</x><y>0.908745</y></point><point><point_seq>2</point_seq><x>0.507307</x><y>0.676806</y></point></points></line></lane_line><lanes><lane_count>1</lane_count><lane><lane_seq>1</lane_seq><lane_guiding_type>0</lane_guiding_type><lane_use_type>0</lane_use_type><lane_user_id>1</lane_user_id><lane_directions><lane_direction_count>2</lane_direction_count><lane_direction><lane_direction_type>0</lane_direction_type><lane_direction_time>00:00:00-00:00:00</lane_direction_time></lane_direction><lane_direction><lane_direction_type>0</lane_direction_type><lane_direction_time>00:00:00-00:00:00</lane_direction_time></lane_direction></lane_directions><lane_middle_line><point1><x>0.388309</x><y>0.950570</y></point1><point2><x>0.422447</x><y>0.684411</y></point2></lane_middle_line><lane_polygon><polygon_point_count>4</polygon_point_count><point><point_seq>1</point_seq><x>0.277662</x><y>0.950570</y></point><point><point_seq>2</point_seq><x>0.340292</x><y>0.684411</y></point><point><point_seq>3</point_seq><x>0.505219</x><y>0.657795</y></point><point><point_seq>4</point_seq><x>0.498956</x><y>0.927757</y></point></lane_polygon></lane></lanes><plate_detect_region><detect_polygon><polygon_point_count>4</polygon_point_count><point><point_seq>1</point_seq><x>0.302714</x><y>0.878327</y></point><point><point_seq>2</point_seq><x>0.302714</x><y>0.798479</y></point><point><point_seq>3</point_seq><x>0.511482</x><y>0.798479</y></point><point><point_seq>4</point_seq><x>0.511482</x><y>0.878327</y></point></detect_polygon></plate_detect_region></roi>
<?xml version="1.0" encoding="GBK"?><root><基础配置><日志管理><是否允许日志写flash><AttribType>4</AttribType><AttribInfo>总开关(选择否且无SD卡时永不写日志)</AttribInfo><AttribDefault>1</AttribDefault><AttribRange /></是否允许日志写flash><是否记录重启日志><AttribType>4</AttribType><AttribInfo>是否记录重启日志</AttribInfo><AttribDefault>1</AttribDefault><AttribRange /></是否记录重启日志><IVE日志><存储Debug日志><AttribType>4</AttribType><AttribInfo>是否存储Debug日志</AttribInfo><AttribDefault>0</AttribDefault><AttribRange /></存储Debug日志><存储Info日志><AttribType>4</AttribType><AttribInfo>是否存储Info日志</AttribInfo><AttribDefault>0</AttribDefault><AttribRange /></存储Info日志><存储Warning日志><AttribType>4</AttribType><AttribInfo>是否存储Warning日志</AttribInfo><AttribDefault>0</AttribDefault><AttribRange /></存储Warning日志><存储Error日志><AttribType>4</AttribType><AttribInfo>是否存储Error日志</AttribInfo><AttribDefault>0</AttribDefault><AttribRange /></存储Error日志><存储Fatal日志><AttribType>4</AttribType><AttribInfo>是否存储Fatal日志</AttribInfo><AttribDefault>0</AttribDefault><AttribRange /></存储Fatal日志><发送Debug日志到网络><AttribType>4</AttribType><AttribInfo>是否发送Debug日志</AttribInfo><AttribDefault>0</AttribDefault><AttribRange /></发送Debug日志到网络><发送Info日志到网络><AttribType>4</AttribType><AttribInfo>是否发送Info日志</AttribInfo><AttribDefault>0</AttribDefault><AttribRange /></发送Info日志到网络><发送Warning日志到网络><AttribType>4</AttribType><AttribInfo>是否发送Warning日志</AttribInfo><AttribDefault>1</AttribDefault><AttribRange /></发送Warning日志到网络><发送Error日志到网络><AttribType>4</AttribType><AttribInfo>是否发送Error日志</AttribInfo><AttribDefault>1</AttribDefault><AttribRange /></发送Error日志到网络><发送Fatal日志到网络><AttribType>4</AttribType><AttribInfo>是否发送Fatal日志</AttribInfo><AttribDefault>1</AttribDefault><AttribRange /></发送Fatal日志到网络></IVE日志></日志管理><成像参数设置><图像调节><目标亮度><AttribType>0</AttribType><AttribInfo>亮度</AttribInfo><AttribDefault>50</AttribDefault><AttribRange>0-100</AttribRange></目标亮度><锐度><AttribType>0</AttribType><AttribInfo>锐度</AttribInfo><AttribDefault>50</AttribDefault><AttribRange>0-100</AttribRange></锐度><色度><AttribType>0</AttribType><AttribInfo>色度</AttribInfo><AttribDefault>50</AttribDefault><AttribRange>0-100</AttribRange></色度><对比度><AttribType>0</AttribType><AttribInfo>对比度</AttribInfo><AttribDefault>60</AttribDefault><AttribRange>0-100</AttribRange></对比度><饱和度><AttribType>0</AttribType><AttribInfo>饱和度</AttribInfo><AttribDefault>60</AttribDefault><AttribRange>0-100</AttribRange></饱和度></图像调节><曝光设置><曝光模式><AttribType>3</AttribType><AttribInfo>曝光模式</AttribInfo><AttribDefault>0</AttribDefault><AttribRange>2:0-自动&amp;1-手动</AttribRange></曝光模式><自动><最大曝光时间><AttribType>0</AttribType><AttribInfo>自动最大曝光时间</AttribInfo><AttribDefault>4200</AttribDefault><AttribRange>0-10000</AttribRange></最大曝光时间></自动><手动><手动曝光时间><AttribType>0</AttribType><AttribInfo>手动曝光时间</AttribInfo><AttribDefault>4000</AttribDefault><AttribRange>10-30000</AttribRange></手动曝光时间><手动增益><AttribType>1</AttribType><AttribInfo>手动增益</AttribInfo><AttribDefault>10.000000</AttribDefault><AttribRange>0.000000-36.000000</AttribRange></手动增益><手动触发曝光时间><AttribType>0</AttribType><AttribInfo>触发曝光时间</AttribInfo><AttribDefault>3000</AttribDefault><AttribRange>0-30000</AttribRange></手动触发曝光时间><手动触发增益><AttribType>0</AttribType><AttribInfo>触发增益</AttribInfo><AttribDefault>10</AttribDefault><AttribRange>0-36</AttribRange></手动触发增益></手动></曝光设置><降噪设置><降噪模式><AttribType>0</AttribType><AttribInfo>降噪模式</AttribInfo><AttribDefault>50</AttribDefault><AttribRange>0-100</AttribRange></降噪模式><降噪等级><AttribType>0</AttribType><AttribInfo>降噪等级</AttribInfo><AttribDefault>50</AttribDefault><AttribRange>0-100</AttribRange></降噪等级></降噪设置><外设设置><同步电源开关><AttribType>3</AttribType><AttribInfo>同步电源开关</AttribInfo><AttribDefault>0</AttribDefault><AttribRange>2:0-开启&amp;1-关闭</AttribRange></同步电源开关><同步相位><AttribType>0</AttribType><AttribInfo>同步相位</AttribInfo><AttribDefault>4000</AttribDefault><AttribRange>0-19999</AttribRange></同步相位><信号频率><AttribType>0</AttribType><AttribInfo>信号频率</AttribInfo><AttribDefault>50</AttribDefault><AttribRange>0-100</AttribRange></信号频率><频闪灯开关><AttribType>3</AttribType><AttribInfo>频闪灯开关</AttribInfo><AttribDefault>2</AttribDefault><AttribRange>4:0-不启用&amp;1-一直启用&amp;2-按亮度启用&amp;3-按时间启用</AttribRange></频闪灯开关><频闪灯相位><AttribType>0</AttribType><AttribInfo>频闪灯相位</AttribInfo><AttribDefault>4000</AttribDefault><AttribRange>1-9999</AttribRange></频闪灯相位><频闪灯脉宽><AttribType>0</AttribType><AttribInfo>频闪灯脉宽</AttribInfo><AttribDefault>4000</AttribDefault><AttribRange>1-9999</AttribRange></频闪灯脉宽><频闪灯极性><AttribType>3</AttribType><AttribInfo>频闪灯极性</AttribInfo><AttribDefault>1</AttribDefault><AttribRange>2:0-高电平&amp;1-低电平</AttribRange></频闪灯极性><频闪灯倍频><AttribType>3</AttribType><AttribInfo>频闪灯倍频</AttribInfo><AttribDefault>100</AttribDefault><AttribRange>4:25-二十五倍频&amp;50-五十倍频&amp;75-七十五倍频&amp;100-一百倍频</AttribRange></频闪灯倍频><频闪灯亮度阈值><AttribType>0</AttribType><AttribInfo>频闪灯亮度阈值</AttribInfo><AttribDefault>50</AttribDefault><AttribRange>0-100</AttribRange></频闪灯亮度阈值><频闪灯开启时间><AttribType>5</AttribType><AttribInfo>频闪灯开启时间</AttribInfo><AttribDefault>Time:00_00_00</AttribDefault><AttribRange>MaxTime:23_59_59-MinTime:00_00_00</AttribRange></频闪灯开启时间><频闪灯关闭时间><AttribType>5</AttribType><AttribInfo>频闪灯关闭时间</AttribInfo><AttribDefault>Time:00_00_00</AttribDefault><AttribRange>MaxTime:23_59_59-MinTime:00_00_00</AttribRange></频闪灯关闭时间><偏振片开关><AttribType>3</AttribType><AttribInfo>偏振片开关</AttribInfo><AttribDefault>2</AttribDefault><AttribRange>4:0-不启用&amp;1-一直启用&amp;2-按亮度启用&amp;3-按时间启用</AttribRange></偏振片开关><偏振片开启快门><AttribType>0</AttribType><AttribInfo>偏振片开启快门</AttribInfo><AttribDefault>50</AttribDefault><AttribRange>0-100</AttribRange></偏振片开启快门><偏振片开启时间><AttribType>5</AttribType><AttribInfo>偏振片开启时间</AttribInfo><AttribDefault>Time:00_00_00</AttribDefault><AttribRange>MaxTime:23_59_59-MinTime:00_00_00</AttribRange></偏振片开启时间><偏振片关闭时间><AttribType>5</AttribType><AttribInfo>偏振片关闭时间</AttribInfo><AttribDefault>Time:00_00_00</AttribDefault><AttribRange>MaxTime:23_59_59-MinTime:00_00_00</AttribRange></偏振片关闭时间><T1开关><AttribType>3</AttribType><AttribInfo>是否开启T1口</AttribInfo><AttribDefault>0</AttribDefault><AttribRange>2:0-关闭&amp;1-开启</AttribRange></T1开关><T3开关><AttribType>3</AttribType><AttribInfo>是否开启T3口</AttribInfo><AttribDefault>0</AttribDefault><AttribRange>2:0-关闭&amp;1-开启</AttribRange></T3开关><白昼切换><AttribType>3</AttribType><AttribInfo>白昼切换</AttribInfo><AttribDefault>2</AttribDefault><AttribRange>3:0-白天模式&amp;1-夜间模式&amp;2-调光控制</AttribRange></白昼切换></外设设置></成像参数设置><码流设置><主码流><码率><AttribType>0</AttribType><AttribInfo>码率</AttribInfo><AttribDefault>3000</AttribDefault><AttribRange>200-10000</AttribRange></码率><I帧间隔><AttribType>0</AttribType><AttribInfo>I帧间隔</AttribInfo><AttribDefault>25</AttribDefault><AttribRange>0-100</AttribRange></I帧间隔><编码格式><AttribType>3</AttribType><AttribInfo>编码格式</AttribInfo><AttribDefault>0</AttribDefault><AttribRange>1:0-h264</AttribRange></编码格式><码流类型><AttribType>3</AttribType><AttribInfo>码流类型</AttribInfo><AttribDefault>0</AttribDefault><AttribRange>2:0-CBR&amp;1-VBR</AttribRange></码流类型><分辨率><AttribType>3</AttribType><AttribInfo>分辨率重启生效</AttribInfo><AttribDefault>1</AttribDefault><AttribRange>2:0-全分辨率&amp;1-P1080</AttribRange></分辨率></主码流><子码流><码率><AttribType>0</AttribType><AttribInfo>码率</AttribInfo><AttribDefault>512</AttribDefault><AttribRange>0-5000</AttribRange></码率><I帧间隔><AttribType>0</AttribType><AttribInfo>I帧间隔</AttribInfo><AttribDefault>25</AttribDefault><AttribRange>0-100</AttribRange></I帧间隔><编码格式><AttribType>3</AttribType><AttribInfo>编码格式</AttribInfo><AttribDefault>0</AttribDefault><AttribRange>1:0-h264</AttribRange></编码格式><码流类型><AttribType>3</AttribType><AttribInfo>码流类型</AttribInfo><AttribDefault>0</AttribDefault><AttribRange>2:0-CBR&amp;1-VBR</AttribRange></码流类型><分辨率><AttribType>3</AttribType><AttribInfo>分辨率</AttribInfo><AttribDefault>4</AttribDefault><AttribRange>1:4-Cif</AttribRange></分辨率></子码流><传输模式><AttribType>3</AttribType><AttribInfo>码流传输模式</AttribInfo><AttribDefault>0</AttribDefault><AttribRange>2:0-流畅&amp;1-实时</AttribRange></传输模式></码流设置></基础配置><高级配置><调试参数><JPEG压缩比><AttribType>0</AttribType><AttribInfo>JPEG压缩比-重启生效</AttribInfo><AttribDefault>70</AttribDefault><AttribRange>1-80</AttribRange></JPEG压缩比><HD-SDI><启用HD-SDI><AttribType>4</AttribType><AttribInfo>设置HD-SDI需要重启生效</AttribInfo><AttribDefault>0</AttribDefault><AttribRange /></启用HD-SDI></HD-SDI><开启BSP_CTRL_UI><AttribType>4</AttribType><AttribInfo>BSP_CTRL_UI的功能开启项-重启生效</AttribInfo><AttribDefault>0</AttribDefault><AttribRange /></开启BSP_CTRL_UI></调试参数></高级配置></root>
<?xml version="1.0" encoding="GBK"?><root><功能配置><抓拍参数配置><视频卡口><白天是否触发闪光灯>0</白天是否触发闪光灯><夜间是否触发闪光灯>0</夜间是否触发闪光灯></视频卡口><路口电警><卡口><输出卡口图片>0</输出卡口图片></卡口><异常停车><启用>0</启用><停车时长>5</停车时长></异常停车><压导流带><启用算法>0</启用算法></压导流带><闯红灯><右转闯红灯><启用>0</启用></右转闯红灯><直行闯红灯><启用>0</启用></直行闯红灯><左转闯红灯><启用>0</启用></左转闯红灯></闯红灯><压线><启用>0</启用><取图规则与闯红灯相同>0</取图规则与闯红灯相同></压线><行人检测><启用>0</启用></行人检测><逆行><启用>1</启用></逆行><流量统计><启用>0</启用></流量统计><占用紧急车道><启用算法>0</启用算法></占用紧急车道></路口电警><抓拍模式>0</抓拍模式></抓拍参数配置></功能配置><基础配置><成像参数设置><曝光设置><自动><最大增益>23</最大增益><最大曝光时间>10000</最大曝光时间></自动></曝光设置><图像调节><锐度>61</锐度></图像调节></成像参数设置><日志管理><IVE日志><存储Info日志>1</存储Info日志><存储Warning日志>1</存储Warning日志><存储Debug日志>1</存储Debug日志><发送Error日志到网络>0</发送Error日志到网络><存储Fatal日志>1</存储Fatal日志><发送Warning日志到网络>0</发送Warning日志到网络><发送Fatal日志到网络>0</发送Fatal日志到网络><存储Error日志>1</存储Error日志></IVE日志></日志管理><设备管理><校时模式>0</校时模式></设备管理><网络设置><数据服务器><IP地址 /><端口>0</端口></数据服务器></网络设置></基础配置><高级配置><调试参数><SD卡缓存>1</SD卡缓存><SDcard卡口存储>0</SDcard卡口存储><自动删除>1</自动删除></调试参数></高级配置><算法参数设置><车牌宽度范围设定方法>0</车牌宽度范围设定方法><车牌识别><车牌最小宽度>70</车牌最小宽度><车牌最大宽度>140</车牌最大宽度></车牌识别><车辆跟踪最远纵向距离>80.000000</车辆跟踪最远纵向距离></算法参数设置></root>
\ No newline at end of file
# 项目整体说明
## appweb及esp页面说明
1. 后端使用appweb嵌入式web,使用c语言开发,由李云深负责。[webapp服务器文档](https://www.embedthis.com/appweb/doc/)
2. esp页面为 appweb支持的开发框架的一部分,文档请参考:[esp框架文档](https://www.embedthis.com/esp/doc/),本项目中你可以简单的把esp作为 html页面来编辑。esp页面可以理解为 html页面中添加了部分C语言代码,类似于Php, jsp,asp.net等服务端动态页面技术。
## 页面实现细节
1. 主体页面为 `index.esp`,主要职能是页面的布局(使用jquery easyui layout),消息OCX响应事件处理。
2. 首页为 `mainPage.html`,主要功能是首页Ocx播放,处理消息控件发送的事件,显示图片,及表格数据等。处理数据及显示的逻辑,使用了knockoutjs框架,具体使用方法请参考: [knockoutjs文档](http://knockoutjs.com/documentation/introduction.html)
3. 所有的js文件放在`scripts`目录下。
4. 国际化使用 `jquery i18n properties`来实现,请参数`i18n`目录下的说明及s2相机客户端交接项目中的国际化方案文档。
5. 菜单数据在 i18n目录下,已经初步国际化,请参考: `menu_en.json``menu_zh_CN.json`文件,菜单展示相关逻辑在 `mainPage.js`文件中。
6. 页面上大量使用了`jquery easyui`组件,具体使用方法自行查看网络上的相关文档。
7. 页面参数验证使用的是`jquery validate`组件,具体方法自行查看文档,或参考之前的页面。
## 修改页面的步骤
1. 确定要修改的页面,要修改或添加的参数。与`李云深`确定获取参数的类别的名称及成员参数是否改变(一般李云深会发一个xml文件,里面定义的是类别名称与成员参数的映射关系,具体格式请求李云深)。
2. 根据该文档说明,结合`scripts\utilities.js`中获取参数的注释说明,参考之前的页面代码照着写就行。
3. 页面大部分逻辑已经封装成函数,需要处理的一般是参数验证(使用 jquery validate组件),及UI展示的处理,获取,保存参数等方法直接调用现成的。
## 修改前注意事项
为了防止出现重复代码,各页面实现不一致等问题,修改前请检查以下各条规则是否成立
1. utilities.js文件中封装了很多通用方法,首先看一下是否有需要的方法,尽量重用之前的。
2. 一些功能的使用使用了对应的组件(参考`页面实现细节`),尽量使用原有方案,保证各个页面的统一。
## 可能出现的兼容性问题
该项目需要兼容IE8,使用`console`对象打印日志时要注意,IE8,IE9不打开`开发者工具`是没有console对象的,直接使用会报错。解决方法如下:
1. 引入console-polyfill.js
2. 使用前先判断console对象是否存在,参考 utilities.js中打印日志的方法。
No preview for this file type
No preview for this file type
thead {
background-color: #dbdfe5;
border-bottom: 1px solid #99a1ad;
border-top: 1px solid #99a1ad;
}
.doubleTable thead tr th {
width: 300px;
}
.doubleTable tr {
height: 35px;
}
.doubleTable tbody tr thead {
background-color: #dbdfe5;
}
.doubleTable {
width: 100%;
border-left: 1px solid #99a1ad;
border-top: 1px solid #99a1ad;
border-bottom: 1px solid #99a1ad;
table-layout: fixed;
}
.doubleTable a {
display: inline-block;
margin-left: 10px;
}
.childTable {
width: 100%;
}
.doubleTable tr td,
.doubleTable tr th {
text-align: center;
border-right: 1px solid #99a1ad;
}
.doubleTable tr td {
border-top: 1px solid #99a1ad;
}
.doubleTable tr {
border-top: 1px solid #99a1ad;
}
.doubleTable tbody tr {
background-color: #fff;
}
.childTable tr td,
.childTable tr th {
border-right: 0px;
border-left: 1px solid #99a1ad;
}
.childTable tr td:first-child,
.childTable tr th:first-child {
border-left: 0px;
}
.childTable tr th:first-child {
width: 50px;
}
.childTable tbody tr:hover {
background-color: #9ca5b5;
}
.childTable tbody tr:nth-child(even) {
background-color: #ebedf1;
}
.childTable tbody tr:nth-child(odd) {
background-color: #fff;
}
#gridForm {
padding-left: 10px;
padding-right: 10px;
}
.dialogDiv {
padding-left: 70px;
padding-top: 40px;
}
.roadDetail {
height: 245px;
width: 600px;
position: absolute;
display: none;
background-color: #fff;
}
.roadDetail .tdTitle {
width: 120px;
}
.roadDetail .tdContent {
width: 200px;
}
.roadDetail table {
border-right: 1px solid #9ca5b5;
border-bottom: 1px solid #9ca5b5;
}
.roadDetail table tr td {
height: 40px;
border-top: 1px solid #9ca5b5;
border-left: 1px solid #9ca5b5;
}
.roadDetail table tr td.tdContent {
background-color: #fff;
}
.roadDetail table tr td.tdTitle {
background-color: #ebedf1;
}
html {
padding: 0;
margin: 0;
border: 0;
}
body {
font-family: Microsoft Yahei;
font-size: 14px;
color: #000000;
background-color: white;
padding: 0;
margin: 0;
border: 0;
}
/* Logo 字体 */
@font-face {
font-family: "iconfont logo";
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
}
.logo {
font-family: "iconfont logo";
font-size: 160px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* tabs */
.nav-tabs {
position: relative;
}
.nav-tabs .nav-more {
position: absolute;
right: 0;
bottom: 0;
height: 42px;
line-height: 42px;
color: #666;
}
#tabs {
border-bottom: 1px solid #eee;
}
#tabs li {
cursor: pointer;
width: 100px;
height: 40px;
line-height: 40px;
text-align: center;
font-size: 16px;
border-bottom: 2px solid transparent;
position: relative;
z-index: 1;
margin-bottom: -1px;
color: #666;
}
#tabs .active {
border-bottom-color: #f00;
color: #222;
}
.tab-container .content {
display: none;
}
/* 页面布局 */
.main {
padding: 30px 100px;
width: 960px;
margin: 0 auto;
}
.main .logo {
color: #333;
text-align: left;
margin-bottom: 30px;
line-height: 1;
height: 110px;
margin-top: -50px;
overflow: hidden;
*zoom: 1;
}
.main .logo a {
font-size: 160px;
color: #333;
}
.helps {
margin-top: 40px;
}
.helps pre {
padding: 20px;
margin: 10px 0;
border: solid 1px #e7e1cd;
background-color: #fffdef;
overflow: auto;
}
.icon_lists {
width: 100% !important;
overflow: hidden;
*zoom: 1;
}
.icon_lists li {
width: 100px;
margin-bottom: 10px;
margin-right: 20px;
text-align: center;
list-style: none !important;
cursor: default;
}
.icon_lists li .code-name {
line-height: 1.2;
}
.icon_lists .icon {
display: block;
height: 100px;
line-height: 100px;
font-size: 42px;
margin: 10px auto;
color: #333;
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
-moz-transition: font-size 0.25s linear, width 0.25s linear;
transition: font-size 0.25s linear, width 0.25s linear;
}
.icon_lists .icon:hover {
font-size: 100px;
}
.icon_lists .svg-icon {
/* 通过设置 font-size 来改变图标大小 */
width: 1em;
/* 图标和文字相邻时,垂直对齐 */
vertical-align: -0.15em;
/* 通过设置 color 来改变 SVG 的颜色/fill */
fill: currentColor;
/* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
normalize.css 中也包含这行 */
overflow: hidden;
}
.icon_lists li .name,
.icon_lists li .code-name {
color: #666;
}
/* markdown 样式 */
.markdown {
color: #666;
font-size: 14px;
line-height: 1.8;
}
.highlight {
line-height: 1.5;
}
.markdown img {
vertical-align: middle;
max-width: 100%;
}
.markdown h1 {
color: #404040;
font-weight: 500;
line-height: 40px;
margin-bottom: 24px;
}
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
color: #404040;
margin: 1.6em 0 0.6em 0;
font-weight: 500;
clear: both;
}
.markdown h1 {
font-size: 28px;
}
.markdown h2 {
font-size: 22px;
}
.markdown h3 {
font-size: 16px;
}
.markdown h4 {
font-size: 14px;
}
.markdown h5 {
font-size: 12px;
}
.markdown h6 {
font-size: 12px;
}
.markdown hr {
height: 1px;
border: 0;
background: #e9e9e9;
margin: 16px 0;
clear: both;
}
.markdown p {
margin: 1em 0;
}
.markdown>p,
.markdown>blockquote,
.markdown>.highlight,
.markdown>ol,
.markdown>ul {
width: 80%;
}
.markdown ul>li {
list-style: circle;
}
.markdown>ul li,
.markdown blockquote ul>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown>ul li p,
.markdown>ol li p {
margin: 0.6em 0;
}
.markdown ol>li {
list-style: decimal;
}
.markdown>ol li,
.markdown blockquote ol>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown code {
margin: 0 3px;
padding: 0 5px;
background: #eee;
border-radius: 3px;
}
.markdown strong,
.markdown b {
font-weight: 600;
}
.markdown>table {
border-collapse: collapse;
border-spacing: 0px;
empty-cells: show;
border: 1px solid #e9e9e9;
width: 95%;
margin-bottom: 24px;
}
.markdown>table th {
white-space: nowrap;
color: #333;
font-weight: 600;
}
.markdown>table th,
.markdown>table td {
border: 1px solid #e9e9e9;
padding: 8px 16px;
text-align: left;
}
.markdown>table th {
background: #F7F7F7;
}
.markdown blockquote {
font-size: 90%;
color: #999;
border-left: 4px solid #e9e9e9;
padding-left: 0.8em;
margin: 1em 0;
}
.markdown blockquote p {
margin: 0;
}
.markdown .anchor {
opacity: 0;
transition: opacity 0.3s ease;
margin-left: 8px;
}
.markdown .waiting {
color: #ccc;
}
.markdown h1:hover .anchor,
.markdown h2:hover .anchor,
.markdown h3:hover .anchor,
.markdown h4:hover .anchor,
.markdown h5:hover .anchor,
.markdown h6:hover .anchor {
opacity: 1;
display: inline-block;
}
.markdown>br,
.markdown>p>br {
clear: both;
}
.hljs {
display: block;
background: white;
padding: 0.5em;
color: #333333;
overflow-x: auto;
}
.hljs-comment,
.hljs-meta {
color: #969896;
}
.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-strong,
.hljs-emphasis,
.hljs-quote {
color: #df5000;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-type {
color: #a71d5d;
}
.hljs-literal,
.hljs-symbol,
.hljs-bullet,
.hljs-attribute {
color: #0086b3;
}
.hljs-section,
.hljs-name {
color: #63a35c;
}
.hljs-tag {
color: #333333;
}
.hljs-title,
.hljs-attr,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #795da3;
}
.hljs-addition {
color: #55a532;
background-color: #eaffea;
}
.hljs-deletion {
color: #bd2c00;
background-color: #ffecec;
}
.hljs-link {
text-decoration: underline;
}
/* 代码高亮 */
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre)>code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre)>code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
/*公用框架的样式*/
* {
margin: 0;
padding: 0;
list-style: none;
text-decoration: none;
outline: none;
font: 14px "微软雅黑";
}
html,
body {
height: 100%;
width: 100%;
border: 0;
}
body {
background: url(../images/body_bg.png) no-repeat fixed right bottom;
background-color: #f3f5f6;
}
.clear {
clear: both;
width: 0;
height: 0;
}
/*-------使用Table做为布局--------*/
table.settingsContainer {
border: 0;
border-collapse: collapse;
position: relative;
}
table.settingsContainer tr td {
height: 28px;
padding-top: 1px;
padding-bottom: 1px;
}
.tdTitle {
text-align: right;
padding-right: 10px;
}
.tdContent {
text-align: left;
padding-left: 10px;
}
.settingParameter {
width: 150px;
border: 1px solid gray;
height: 21px;
line-height: 21px;
}
.settingParameter.timePicker,
.Wdate.timePicker {
background: url(../images/timePicker.png) no-repeat 101% -1px;
}
select.settingParameter {
height: 23px;
width: 152px;
line-height: 23px;
}
.fileInput {
width: 250px;
}
.fake_input {
border: 1px solid gray;
width: 250px;
}
input[type="file"]::-ms-browse {
border: 1px solid gray;
cursor: pointer;
}
input[type="file"]::-ms-value {
border: 1px solid gray;
}
select::-ms-expand {
border: 0;
}
/*修正checkbox与后面元素对不齐*/
.checkboxAlign {
vertical-align: -1px;
margin-right: 5px;
}
/*通用的保存按钮样式*/
a.settingBtn {
display: block;
height: 23px;
line-height: 23px;
width: 98px;
border: 0;
background: url(../images/btn_bg.png) no-repeat 0 0;
margin-right: 0;
text-align: center;
cursor: pointer;
color: black;
outline: none;
}
a.settingBtn:link,
a.settingBtn:visited,
a.settingBtn:hover {
color: black;
}
a.settingBtn:active {
background-position: 0 -23px;
}
/*保存失败的输入框错误样式*/
.save-failed {
border-color: red;
}
/*------------自定义(Tabs)标签页样式-----------*/
.tab_header {
padding: 8px 5px;
}
.tab_header .tab_title {
float: left;
display: block;
width: 88px;
height: 28px;
margin-left: 1px;
background-color: black;
color: white;
line-height: 28px;
text-align: center;
cursor: pointer;
}
.tab_header .tab_title.selected {
background-color: #bd0000;
}
.tableTitle {
text-align: center;
font-weight: bold;
}
.tab_content {
padding: 0 5px;
/*height: 500px;*/
width: 900px;
}
.tab_content .content_group {
background-color: #dcdfe2;
margin-bottom: 20px;
padding-left: 20px;
padding-bottom: 10px;
}
/*验证的Css样式*/
input.error {
border-color: red;
background-color: #efb0a7;
}
.error {
color: red;
margin-left: 5px;
}
label.disabled {
color: gray;
/*background-color: #F0F0F0;*/
}
.needRebootHint {
color: #bd0000;
}
@font-face {font-family: "iconfont";
src: url('iconfont.eot?t=1589947057361'); /* IE9 */
src: url('iconfont.eot?t=1589947057361#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAhoAAsAAAAAD9wAAAgbAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCFJgqOWIwtATYCJANMCygABCAFhG0HgiIbvw2jooqTQ/aPxdhWA1sJ2iVqtZ2C0lqIZTvF+xE8rb3O2729j5AyOkZZVVUdVWNAETlR1RpfH7aJvvnHTfuBaqgptdQM3TrrXuGo6RapGG0TioZCqDEJpww2Pzo1S+FMJMx/2s/VHe5RD28LZaEiLUzsbNtDxRoRIiES0n1EpI0IaSHjrRJCJ6QGhMhmvTAT3FKmr3I7ga4jikBPKutREKTi0mDQG61GDYIqeaqB0NC21R2nVuNYrminD+kB4Fvy/rFDFkEkJXMPfblaMQAUa9BnH/hsw3odFXh/vhIslMi4BKgW4m+n4w9Y7ML5uiMrn7EUIU+p1/KnrU/3BJ8NP5ufuXzrw///sxagXTTQODGX2xKWhB5KRqnuOf/IA9o6uqYiRAqTDISsUtRaRvp6RA3Wdzw326fAWgQZtFlLoAPPgC68hUHLdwFj+B4ZTID1XgZD1gcZJNaHVJPPAQE/Acjwk4AKfgpQ4KcBNfwMoAW/DBjBbwH68A+M0QOz6JQzgAtAWgJ5xBW/E5berTM8lj47qMvyQP904lhyZAjfPXrQ39cN7HTqTsl1XepU0pc6OEmJSI6KiJgRwmPHJ3bFoK+vza64wMFeL77unOtMwuQk5vYRmMC9G3LEWSbi8Ind2ZjPR3S1rDnjOgdperi40oqdaydVw3b3pHsoYDkF6WH3uOKoBxzs8hofhy9GAFwcYYeIu0IcHU5vDXXvZffAIa59jv2EXms3ddE9hg5jt76T1g+Z7RarfY+rYHif47I737aX7WZ41kuOwpH97otsB8ehHCY+XHjdR/h8GM9q4bk49AZnd6SCECy+7bmvL/SeDmsVwB2nYBfX3Eag7U8405ISimMhN63Y0XqzwudrakcFevw0xxrjYex4pg9vtRxBOKyj7aEpGLC72CSBQ32oVqlHADD8XqUXJYlTVtkHdY/RHdPEV8VmfVD3XgB6R4CBsnYfBMEPt1gggMIr28NcFxL81l7MDt99GfJ3XMLDdlwAfuzFnhJ4YqIhXS0Id3sA6EHrLulLEB+a2HOGV7NO7NPJvg6HuWxC4sM9LmZXbfP1ad4XTnifedMe1W544HqUytVv5J5wJVfQk1fZK1Mmlacnn04mP8Q2P3Y/TPE1bfI99029Tpy61nvLm7HdV3VzMn0LN4vN7VxEXD95ocXpDC+us1MiVUNbT/I9EFVKQfzjH355kK/e3jK9ticsMDQ4yF/+77wPW7tc7XRkd5jRtlb3goN+wy7GPw5Rs4aj/DxbTvZB0k5JfUAUc+tiLyMAwmh67kSZ0Vg2Mbe62LEDgh7krs15F4CaF0VVc1crDAbF6l2KCYNxddncdqVNhqJSm8PXxsU2qQMttTKbQ1YZLrsdERG9NmdddDRsX85e8HxuIeHJgPzDr+zPn9uBVhlq0zJwNbbi77lYkrefGFEHZFfQRDb1h1BViaqzS14yOkNdjpjqUndVibNkSlcnf9NICfjl36ZS/Y743szFvBUPnML/x8nqDDzlZGIHP5C+SF8KDlwXpgwZp0RgVjorXu+HFjeB4yXrFOtsb/chpMdDpW1L7F6+J2ukEPeUetaHidAqdpswf/qKucWLSqQE8WJLaq9zaXfm5mgGmW1uBIvly/ZkFjVB4JvtRzQKhKLSlCs+juRtNMwQ89DEuusNjvrstW80/PjJYUqZRlKIsiFJdn2Vgofy6hIPbwT878lDaUqKVCDfXuVBq3D5zZd+wnj1wuPLNEcRpYZSIkB27YFfmgDC44rGJaUUVbqkUVU4PvTjj+ezRrMeyIj4sUJV49JSstW6wdeKNpc0oLNN4qYmkXFctLLeJB6rdJ+1MNIZheHhiCxnJI5FOTPROR5ZdwPTeQtUwqhgVXDkctXydKFKmOG9kioI9+btZfcFq4L2Bz85H3Qw/2BwJMhTBJ8zXz8wdjPhXvzvyQX+C8cTlY6o7B81E7g+YQMPXI5QBIpeCJy96o/YH57da753TRHBflSROl8IRK2IB8UHmg9cim1B/SWKiGtz1TNvs+Rh0YGhOZKKCj4/EJJEGSxsPgA08/kX00dmZ2f+gW8GgHwpHTA5v58ui3cag/aKzR/Zynu/+bfZUOIyS/MoH8syibuWL+XZ5D9BRIsne7MCcrVreRklV/IVjH+fdvP24xvPesJL99qCf1mN/7fvH3V05/eYX6ct9ZUHf42mlBnNv5Tl0uzmz6rtwgP9GeY9ZDhzwkwNuC2hW0z7m1Q19d71xUJt/EMoFgVOWg7jrO0Uqjwv4aLnCq613cddF1Xt1DNjwRdV56dVvAIOY4dxMvQPZ2MPUeX5Li6WvsW1cfBx16uIvmTPmdDCKgupZsgBpG8M0fbTJsovZOB08BxSYzOoLWVzEouTFqu2EZGKJPXOKtJEWs5xhHVYI2MYCqEstBGpNHcjDQYaMVtoHdnPiAYZxjxTLKa6jhT100YAe8yCpMZEqQcg+oypa/WjmVAbM+DG289B0rAxULMMzLpTx5EsrLRbR0iJSBSoiplUs97LSKthGjKMlFCQYKIFzQhRKSUkg9dGQ5i7d9Ih9WOIDE5oMZtJLKtRWia6vjC+/YU34hzu7zgLXuSookQdrWhHJ7rRi34MYhijGEdkREV0xOCvSqcEWm30qFZNh1gH1SaNTqs2MbQtfNxGVzON0TYUqrMw79i4vZkZo9ZII7lXcT9tHoP7DbSVLO4z0AOCEbWpvSRYYxMyFNrhbKTU36LVDDIBVLV1QB0xpB3b06SxkoOk1n56za9PPTrAOkiOD2oBAA==') format('woff2'),
url('iconfont.woff?t=1589947057361') format('woff'),
url('iconfont.ttf?t=1589947057361') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
url('iconfont.svg?t=1589947057361#iconfont') format('svg'); /* iOS 4.1- */
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-f14:before {
content: "\e614";
}
.icon-suoxiao:before {
content: "\e60d";
}
.icon-shangjiantou:before {
content: "\e622";
}
.icon-zuoshangjiantou:before {
content: "\e623";
}
.icon-youshangjiantou:before {
content: "\e624";
}
.icon-youxiajiantou:before {
content: "\e625";
}
.icon-zuoxiajiantou:before {
content: "\e626";
}
.icon-shangjiantou1:before {
content: "\e501";
}
.icon-shangjiantou-copy:before {
content: "\e502";
}
.icon-close-blod:before {
content: "\e503";
}
.icon-wanjiantou-:before {
content: "\e689";
}
.icon-guangquan:before {
content: "\e63a";
}
.icon-guangquan1:before {
content: "\e60e";
}
.icon-right:before {
content: "\e60b";
}
.icon-fangda:before {
content: "\e62d";
}
.icon-qianjingseheise-:before {
content: "\e5f4";
}
.icon-qianjingsebaise-:before {
content: "\e5f5";
}
.icon-shezhi:before {
content: "\e507";
}
No preview for this file type
{
"id": "",
"name": "",
"font_family": "iconfont",
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "24972",
"name": "刷新",
"font_class": "f14",
"unicode": "e614",
"unicode_decimal": 58900
},
{
"icon_id": "779201",
"name": "缩小",
"font_class": "suoxiao",
"unicode": "e60d",
"unicode_decimal": 58893
},
{
"icon_id": "6630956",
"name": "上箭头",
"font_class": "shangjiantou",
"unicode": "e622",
"unicode_decimal": 58914
},
{
"icon_id": "6630957",
"name": "左上箭头",
"font_class": "zuoshangjiantou",
"unicode": "e623",
"unicode_decimal": 58915
},
{
"icon_id": "6630958",
"name": "右上箭头",
"font_class": "youshangjiantou",
"unicode": "e624",
"unicode_decimal": 58916
},
{
"icon_id": "6630959",
"name": "右下箭头",
"font_class": "youxiajiantou",
"unicode": "e625",
"unicode_decimal": 58917
},
{
"icon_id": "6630960",
"name": "左下箭头",
"font_class": "zuoxiajiantou",
"unicode": "e626",
"unicode_decimal": 58918
},
{
"icon_id": "6641649",
"name": "上箭头",
"font_class": "shangjiantou1",
"unicode": "e501",
"unicode_decimal": 58625
},
{
"icon_id": "6641800",
"name": "上箭头",
"font_class": "shangjiantou-copy",
"unicode": "e502",
"unicode_decimal": 58626
},
{
"icon_id": "6901805",
"name": "叉",
"font_class": "close-blod",
"unicode": "e503",
"unicode_decimal": 58627
},
{
"icon_id": "7020941",
"name": "弯箭头-3",
"font_class": "wanjiantou-",
"unicode": "e689",
"unicode_decimal": 59017
},
{
"icon_id": "7866922",
"name": "光圈",
"font_class": "guangquan",
"unicode": "e63a",
"unicode_decimal": 58938
},
{
"icon_id": "8020050",
"name": "光圈",
"font_class": "guangquan1",
"unicode": "e60e",
"unicode_decimal": 58894
},
{
"icon_id": "8540983",
"name": "上箭头",
"font_class": "right",
"unicode": "e60b",
"unicode_decimal": 58891
},
{
"icon_id": "9718067",
"name": "放大",
"font_class": "fangda",
"unicode": "e62d",
"unicode_decimal": 58925
},
{
"icon_id": "11504585",
"name": "前景色黑色-01",
"font_class": "qianjingseheise-",
"unicode": "e5f4",
"unicode_decimal": 58868
},
{
"icon_id": "11504586",
"name": "前景色白色-01",
"font_class": "qianjingsebaise-",
"unicode": "e5f5",
"unicode_decimal": 58869
},
{
"icon_id": "13260889",
"name": "设 置",
"font_class": "shezhi",
"unicode": "e507",
"unicode_decimal": 58631
}
]
}
No preview for this file type
No preview for this file type
No preview for this file type
/*.pageTitle {
line-height: 30px;
font-size: 16px;
font-weight: bold;
}*/
/*-------------图像设置-----------*/
.imageSettings {
top: 50%;
left: 50%;
margin-left: -170px;
margin-top: -60px;
}
.leftCell {
width: 80px;
text-align: center;
}
.leftTitle {
width: 20px;
text-align: left;
}
.rightTitle {
width: 30px;
text-align: right;
}
.centerCell {
width: 150px;
}
.rightCell {
width: 60px;
text-align: center;
}
.txtImgSetting {
width: 30px;
border: 1px solid gray;
}
/*------------曝光设置-----------*/
.settingParameter {
width: 150px;
border: 1px solid gray;
}
.functionSelector {
width: 350px;
}
.setting_exposure_auto {
width: 350px;
}
.setting_exposure_manual {
display: none;
height: 135px;
width: 350px;
}
/*-------------白平衡设置------------*/
.setting_whiteBalance_manual,
.setting_whiteBalance_day,
.setting_whiteBalance_night {
display: none;
}
/*底部区域样式*/
.settingsArea {
width: 24.8%;
float: left;
}
/*--------------频闪灯----------------*/
.strobe_lignt_value,
.strobe_light_time {
display: none;
}
/*--------------偏振镜---------------*/
.polarizer_shutter,
.polarizer_time {
display: none;
}
/*--------------闪光灯---------------*/
.flashlight_light,
.flashlight_time {
display: none;
}
/*------------右侧手风琴样式------------*/
.accordion {
border: 0;
border-top: 1px solid #7b7a7b;
}
.accordion .accordion-header {
background: url(../../images/accordion_bg.png) repeat-x 0 0;
border: 1px solid #7b7a7b;
border-top: 0;
}
.accordion .accordion-header.header-f {
border-top: 1px;
}
.accordion-expand,
.accordion-collapse {
background-image: none;
}
.accordion .accordion-header-selected {
background: #bd0000;
border-color: #bd0000;
border-bottom: 0;
}
.accordion .accordion-body {
border: 1px solid #bd0000;
}
/*---------------slider样式---------------*/
.slider-inner {
background-color: #5aa9e1;
border: 1px solid #125ca2;
height: 3px;
top: 9px;
}
.slider-handle {
background-image: url(../images/slider-handle.png);
}
/**/
.tdTitle {
width: 115px;
}
body.mainContainer {
/*min-height: 700px;*/
/*-moz-min-width: 1024px;
-ms-min-width: 1024px;
-o-min-width: 1024px;
-webkit-min-width: 1024px;*/
/*min-width: 1024px;*/
/*width: expression_r(document.body.clientWidth <1024 ? "1024px": "auto" );
height: expression_r(document.body.clientHeight <700 ? "700px": "auto" );*/
/*overflow: auto;*/
}
.main-north {
height: 47px;
background: url("../images/index/bg.png") repeat-x 0 0;
z-index: 10;
position: relative;
overflow: hidden;
}
.main-north .log,
.main-north .navMenu,
.main-north .userInfo {
height: 100%;
}
.main-north .log {
width: 205px;
background-image: url(../images/index/logo.png);
z-index: 12;
}
.main-north .navMenu {
width: 600px;
height: 100%;
z-index: 12;
position: absolute;
left: 205px;
top: 0;
}
.main-north .navMenu .menus_lv1 {
height: 100%;
width: 100%;
}
.main-north .navMenu .menu_level1 {
float: left;
margin-left: 20px;
font-weight: bold;
cursor: pointer;
}
.menu_level1_icon {
width: 39px;
height: 47px;
border: 0;
float: left;
}
.selectedMenuLevel1 {
background-position: 0 47px;
}
.menu_level1_text {
display: block;
float: left;
height: 47px;
line-height: 47px;
padding-left: 5px;
color: white;
font-size: 14px;
}
/* 左侧菜单 */
.lv2MenuContainer {
width: 178px;
height: 100%;
overflow-y: auto;
border-right: 1px solid #c0c2d1;
background-color: #dadee2;
font-size: 14px;
text-align: center;
}
.lv2MenuContainer .menuLv2Item {
cursor: pointer;
border: 0;
}
.lv2MenuContainer .menuLv2Item .menuLv2Title {
height: 39px;
line-height: 39px;
background: url(../images/index/menu_bg.png) repeat-x 0 0;
color: black;
}
.lv2MenuContainer .menuLv2Item .menuLv2Title .menuName {
display: block;
height: 100%;
width: 150px;
line-height: 39px;
float: left;
}
.lv2MenuContainer .menuLv2Item .menuLv2Title .menuLv2Icon {
display: block;
width: 9px;
height: 6px;
background: url(../images/index/open.png) no-repeat;
position: relative;
top: 50%;
margin-top: -3px;
float: left;
}
/*二级菜单选中的样式*/
.lv2MenuContainer .menuLv2Item.selected .menuLv2Title {
background: url(../images/index/menu_bg_s.png) repeat-x;
}
.lv2MenuContainer .menuLv2Item.selected .menuLv2Title .menuLv2Icon {
background: url(../images/index/close.png) no-repeat;
}
/*三级菜单*/
.lv3MenuContainer {
width: 100%;
height: auto;
overflow: hidden;
display: none;
background-color: white;
font-weight: normal;
}
.lv3MenuContainer .menuLv3Item {
height: 30px;
line-height: 30px;
background-color: #dadee2;
}
.lv3MenuContainer .menuLv3Item.disabled {
display: none;
}
.lv3MenuContainer .menuLv3Item.selected {
background-color: #ffffff;
color: #640104;
}
/*选中二级菜单中,三级菜单的样式*/
.lv2MenuContainer .menuLv2Item.selected .lv3MenuContainer {
display: block;
}
/*用户信息区域样式*/
.main-north .userInfo {
width: 774px;
height: 100%;
background-image: url(../images/index/bg_r.png);
position: absolute;
top: 0;
right: 0;
z-index: 11;
}
.userInfoContainer {
height: 30px;
/* width: 180px; */
float: right;
line-height: 30px;
position: relative;
top: 15px;
color: white;
padding-right: 10px;
}
.left_menu {
width: 180px;
height: 100%;
}
.main-center {
overflow: hidden;
}
#mainPageFrame {
width: 100%;
height: 100%;
}
.disabled {
display: none;
}
* {
margin: 0;
padding: 0;
font-family: "微软雅黑";
color: #576477;
list-style: none;
}
img {
border: 0;
display: block;
}
a {
outline: none;
color: #fff;
text-decoration: none;
}
br {
clear: both;
font-size: 0;
line-height: 0;
}
html {
-webkit-text-size-adjust: none;
}
html,
body {
min-width: 1024px;
height: 100%;
overflow: visible;
background: #ecf8ff;
}
#wrap {
width: 100%;
background: url(../images/login/wrap_bg.jpg) no-repeat center top;
}
#main {
width: 100%;
height: 360px;
background: url(../images/login/main_bg.png) repeat-x left bottom;
padding: 10% 0 0 0;
}
#main_inner {
height: 360px;
background: url(../images/login/main_inner_bg.png) no-repeat center 0;
}
.login_box {
width: 400px;
margin: 0 0 0 15%;
}
.login_box .title {
height: 150px;
background: url(../images/login/title.png) no-repeat 0 0;
}
.login_box .entry {
margin: 40px 0;
}
.loginLayout {
border-collapse: collapse;
}
.loginLayout tr {
height: 40px;
}
.loginLog {
background: url(../images/login/entry_logo.png) no-repeat 0 0;
height: 80px;
width: 80px;
margin: -5px 5px 0 0;
}
/** 登录按钮 */
#btnLogin {
display: inline-block;
height: 32px;
width: 108px;
background: url(../images/login/login.png) no-repeat 0 0;
line-height: 32px;
text-align: center;
cursor: pointer;
}
#btnLogin .login_btn_text {
font-size: 20px;
height: 20px;
line-height: 20px;
color: white;
vertical-align: baseline;
}
/** 自定义的textbox组件 */
.custom-textbox {
display: inline-block;
position: relative;
}
.custom-textbox .custom-textbox__icon {
height: 36px;
width: 36px;
display: inline-block;
position: absolute;
top: -1px;
left: 1px;
}
.custom-textbox .custom-textbox__text {
padding-left: 2px;
width: 220px;
height: 34px;
line-height: 34px;
margin-left: 36px;
border-width: 0;
}
.icon_user {
background: url(../images/login/number.png) no-repeat 0 0;
}
.icon_password {
background: url(../images/login/password.png) no-repeat 0 0;
}
#footer {
width: 100%;
height: 30px;
position: fixed;
bottom: 0;
left: 0;
}
#footer p {
text-align: center;
font-size: 100%;
}
/* 主页的样式设计 */
.upperDisplay {
overflow: hidden;
}
.OcxDiv,
.picShowArea {
height: 100%;
width: 50%;
float: left;
}
.picShowArea {
padding-left: 3px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
#videoOcxObject {
height: 100%;
width: 100%;
}
.picContainer {
width: 100%;
height: 100%;
border: 1px solid black;
border-collapse: collapse;
}
.picContainer tr td {
border: 1px solid black;
}
.picContainer .tdBig {
width: 66.6%;
height: 100%;
}
.picContainer .tdSmall {
height: 33.2%;
}
.normalPic {
height: 100%;
width: 100%;
}
/*---------信息条------------*/
.toolBar {
background: url(../images/main/toolBar_bg.png) repeat-x;
border: 1px solid #2a2c2e;
overflow: hidden;
}
.toolsTable {
height: 100%;
border: 0;
border-collapse: collapse;
color: white;
}
.toolsTable .toolsTitle {
font-size: 16px;
width: 100px;
text-align: right;
padding-right: 5px;
}
.toolsTable .toolsContent {
font-size: 20px;
text-align: left;
padding-left: 10px;
}
.main-south {
height: 24px;
background-color: #aaaaaa;
}
/* 底部状态条*/
.main-south ul {
height: 100%;
width: 100%;
}
.main-south ul li {
float: left;
height: 100%;
line-height: 24px;
font-weight: bold;
font-size: 14px;
}
.alarmContainer {
width: 32px;
height: 24px;
}
.alarmIcon {
display: block;
width: 16px;
height: 24px;
margin: 0 auto;
background: url(../images/main/alarm.png) no-repeat 0 0;
}
.hasAlarm {
background-image: url(../images/main/alarm_s.gif);
}
/*---------选择标签的样式-----------*/
.tabSelector {
width: 30px;
height: 86px;
margin-bottom: 5px;
float: right;
background: url(../images/main/tab_bg.png) no-repeat -30px 0;
text-align: center;
line-height: 30px;
color: white;
cursor: pointer;
}
.tabSelectorTitle {
margin: 0 auto;
position: relative;
writing-mode: vertical-lr;
-ms-writing-mode: tb-rl;
top: 10px;
left: 5px;
text-align: center;
}
.tabSelectorTitle.title1 {
margin-top: -40px;
}
.tabSelectorTitle.title2 {
margin-top: -20px;
}
.tabSelector.tabSelected {
background-position: 0 0;
color: white;
}
.datagridContainer {
height: 100%;
width: 100%;
position: relative;
}
.datagridContainer.up {
top: -100%;
}
/*报警弹出窗口*/
.alarmPopup {
height: 250px;
width: 600px;
position: absolute;
bottom: -250px;
right: 0;
}
.alarmPopup .closeBtn {
height: 22px;
line-height: 22px;
width: 58px;
position: absolute;
top: 0px;
right: 2px;
background-color: #5a5a5a;
text-align: center;
color: white;
cursor: pointer;
}
.alarmPopup .alarmItems {
position: absolute;
border: 2px solid #600000;
background-color: #c3c3a5;
top: 22px;
left: 2px;
right: 2px;
bottom: 2px;
overflow-y: auto;
}
.alarmPopup .alarmItems li {
border-bottom: 1px dashed gray;
color: #600000;
font-size: 14px;
padding-left: 5px;
}
.alarmPopup .alarmItems li.title {
border-bottom: 1px solid #c65704;
}
span.a_1,
span.a_2 {
width: 40px;
}
span.a_3 {
width: 120px;
}
span.a_4 {
width: 60px;
}
span.a_5 {
width: 260px;
}
span.title {
height: 22px;
line-height: 22px;
font-weight: bold;
}
span.title,
span.content {
display: inline-block;
text-align: center;
}
.downPic {
height: 24px;
width: 24px;
}
/*底部版本号绑定信息*/
.version ul li {
display: block;
float: left;
padding: 0 5px;
}
#pic0 {
position: relative;
overflow: hidden;
}
#featurePic {
position: absolute;
}
/*重启进度条的样式*/
/*--重启进度条--*/
.rebootCutdown {
height: 100%;
width: 100%;
background-color: white;
position: absolute;
top: 0;
left: 0;
}
.rebootCutdown .rebootProgressBar {
width: 98%;
margin: 20px auto;
}
.progressbar-inner-text {
height: 25px;
width: 100%;
}
.progressbar-inner {
width: 100%;
height: 10px;
background-color: #dadee2;
}
.progressbar-inner-value {
width: 0;
height: 100%;
background-color: #bd0000;
}
.timeSpans {
background: url(../../../images/timePicker.png) no-repeat 101% -1px white;
/*background-color: #DBDFE5;*/
}
/*时间段选择窗口样式*/
.timeSelector {
min-height: 120px;
width: 236px;
padding: 8px;
position: absolute;
top: 0;
left: 0;
display: none;
background-color: white;
border: 1px solid #7c8895;
z-index: 99;
}
.timeSelector .Wdate {
width: 96px;
}
.timeSelector .btnDelete {
display: block;
float: right;
margin-top: 3px;
width: 16px;
height: 16px;
background: url(../../../images/btnDelete.png) no-repeat 0 0;
}
.timeSelector a.settingBtn {
float: left;
margin-right: 14px;
}
.timeSpanContainer li {
margin-bottom: 5px;
}
{
"Protocol": "1",
"Time": {
"Year": "2015",
"Month": "03",
"Day": "06",
"Hour": "14",
"Minute": "55",
"Second": "38",
"Millisecond": "100"
},
"BaseInfo": {
"Ip": "192.168.3.7",
"Mode": "电警模式"
},
"Item": [
{
"Type": "FlowInfo",
"FlowVerison": "0.0.0.",
"TimePeroid": "30",
"StartTime": "0000-00-00 00:00:00 000",
"EndTime": "0000-00-00 00:00:00 000",
"Content": [
{
"LaneNo": "0", //车道
"FlowCount": "100", //流量
"Velocity": "50.0", //平均速度
"OccupationRate": "0", //占有率
"DistanceOfHead": "0", //时距
"FlowRate": "0",
"AvgOccupationRate": "0",
"OccupationRateUsingPoints": "0",
"QueueLength": "0" //排队长度
},
{
"LaneNo": "1",
"FlowCount": "100",
"Velocity": "50.0",
"OccupationRate": "0",
"DistanceOfHead": "0",
"FlowRate": "0",
"AvgOccupationRate": "0",
"OccupationRateUsingPoints": "0",
"QueueLength": "0"
}
]
},
{
"Type": "LightInfo",
"Content": { "Left": "R", "Straight": "G", "Right": "Y" }
},
{
"Type": "ResultInfo",
"Content": {
"URL": {
"PictureUrl": {
"PicUrl0": "../images/demo/feature.png",
"PicUrl1": "../images/demo/1.png",
"PicUrl2": "../images/demo/1.png",
"PicUrl3": "../images/demo/1.png"
},
"VideoUrl": "短时录像的url"
},
"LineNo": "1",
"PlateText": "京A12345",
"PlateType": "小型车",
"PlateColor": "蓝",
"PlateWidth": "80",
"ViolationType": "正常",
"Velocity": "43",
"CarColor": "黄",
"PictureTime": "2015-03-12 12:00:34"
}
},
{
"Type": "ErrorInfo",
"Content": { "ErrorState": "错误信息" }
}
]
}
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>日志查询</title>
<link href="../css/frame.css" rel="stylesheet" />
<link href="../scripts/easyui/themes/default/easyui.css" rel="stylesheet" />
<style type="text/css">
.title {
width: 70px;
text-align: right;
padding-right: 5px;
}
.content {
width: 120px;
text-align: left;
padding-left: 5px;
}
</style>
</head>
<body class="easyui-layout">
<div data-options="region:'north',border:false,split:false" style="height: 45px;padding:8px;">
<table>
<tr>
<td class="title">开始时间:</td>
<td class="content">
<input id="beginTime" type="text" name="beginTime" value="1-1" class="Wdate" readonly="true" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',maxDate:'#F{$dp.$D(\'endTime\')}',minDate:'#F{$dp.$D(\'endTime\',{d:-7})}'})" style="width: 100px;" />
</td>
<td class="title">
结束时间:
</td>
<td class="content">
<input id="endTime" type="text" name="endTime" value="12-31" class="Wdate" readonly="true" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',minDate:'#F{$dp.$D(\'beginTime\')}',maxDate:'#F{$dp.$D(\'beginTime\',{d:7})}'})" style="width: 100px;" />
</td>
<td>
<a id="btnExport" class="settingBtn" data-options="iconCls: 'icon-export'" style="width:100px;margin-right:3px">导出</a>
</td>
</tr>
</table>
</div>
<script src="../scripts/easyui/jquery.min.js"></script>
<script src="../scripts/easyui/jquery.easyui.min.js"></script>
<script src="../scripts/easyui/locale/easyui-lang-zh_CN.js"></script>
<script src="../scripts/utilities.js"></script>
<script src="../scripts/My97DatePicker/WdatePicker.js"></script>
<script src="../scripts/dateTimeExtension.js"></script>
<script type="text/javascript">
$().ready(function () {
//获取最新的日期
var now = new Date();
var yestoday = new Date(now - 86400000);
$("#beginTime").val(yestoday.format("yyyy-MM-dd"));
$("#endTime").val(now.format("yyyy-MM-dd"));
$("#btnExport").click(exportLog);
});
//导出日志
function exportLog() {
var beginTime = $("#beginTime").val();
var endTime = $("#endTime").val();
if (!beginTime || !endTime) {
$.messager.alert("提示", "请选择开始时间及结束时间!", "warning");
return;
}else if (beginTime > endTime) {
$.messager.alert("提示", "开始时间不能大开结束时间!", "warning");
return;
}
//
var beginTimeParts = beginTime.split("-");
var endTimeParts = endTime.split("-");
var url = "/do/trafficController/downloadLog";
//显示假的进度条
$.messager.progress({
title: "导出",
msg: "导出中,请稍候...",
text: "",
interval:1000
});
$.ajax({
type: "GET",
url: url,
data: {
startYear: beginTimeParts[0],
startMonth: beginTimeParts[1],
startDay: beginTimeParts[2],
endYear: endTimeParts[0],
endMonth: endTimeParts[1],
endDay : endTimeParts[2]
},
dataType: "json",
error: function(jqXHR, textStatus, error) {
$.messager.progress("close");
$.messager.alert("出错", "请求出错,信息: "+error, "error");
},
success: function (data, textStatus, jqXHR) {
$.messager.progress("close");
//下载日志文件
if (data.error == 1) {
//alert(data.feedback.Msg);
var fileUrl = "/do/trafficController/downloadFile?FilePath=" + data.feedback.FilePath;
downloadByIframe(fileUrl);
} else {
$.messager.alert("出错", data.feedback.Msg, "info");
}
}
});
}
</script>
</body>
</html>
# login
copyright_text= english copy right
login_text=log in
# index
current_user=current user
log_out=log out
\ No newline at end of file
text_info=info
text_error=error
text_close=close
# EasyUI
# login
copyright_text= english copy right
login_text=Login
login_title=Smart Camera Client
user_text=User Name
user_password=Password
user_text_empty= Please Input UserName
password_text_empty= Please Input Password
login_error= Login failed
# index frame
current_user=current user
log_out=Logout
init_plugin_error=Init ActiveX plugin error!
# main page
main_plugin_newVersion=new plugin version:{0} is found,update?(current version is {1})
columns_line_no= Line no.
columns_plate_text= Plate text
columns_plate_color= Plate color
columns_plate_width= Plate width
columns_violation_type= Status
columns_velocity= Speed
columns_picture_time= Capture time
columns_lane_no= Lane no
columns_flow_count= Flow count
columns_average_velocity= Average speed
columns_occupation_rate= Occupancy rate
columns_distance_of_head= Time distance
columns_queue_length= Queue length
text_model=Model
text_soft_version=Soft version
text_algorithm_version=Algorithm version
text_capture_result=Result
text_flow=Flow
text_feature_pic=Feature picture
text_pic=Picture
alarm_level=Level
alarm_section=Section
alarm_source=Source
alarm_target=Target
alarm_content=Content
text_plugin_download=Plugin download
text_camera_plugin=Smart camera browser plugin
text_camera_plugin_install_guid=Please click and download the plugin,after installed close this window.
text_info=提示
text_error=错误
text_close=关闭
# EasyUI
# login
copyright_text=版权所有:北京文安智能技术股份有限公司 京ICP备12023019号
login_text=登录
login_title=智能相客户端
user_text=用户名
user_password=密码
user_text_empty= 请输入用户名
password_text_empty= 请输入密码
login_error= 登录失败!
# 主页框架
current_user=当前用户
log_out=退出
init_plugin_error=初始化控件出错
# 首页
main_plugin_newVersion=发现新版本:{0},升级吗?(当前版本:{1})
columns_line_no= 车道
columns_plate_text= 车牌号码
columns_plate_color= 车牌颜色
columns_plate_width= 车牌宽度
columns_violation_type= 状态
columns_velocity= 速度
columns_picture_time= 时间
columns_lane_no= 车道
columns_flow_count= 流量
columns_average_velocity= 平均速度
columns_occupation_rate= 占有率
columns_distance_of_head= 时距
columns_queue_length= 排队长度
text_model=型号
text_soft_version=软件版本
text_algorithm_version=算法版本
text_capture_result=抓拍结果
text_flow=流量
text_feature_pic=特写图
text_pic=图片
alarm_level=级别
alarm_section=
alarm_source=来源
alarm_target=目标
alarm_content=内容
text_plugin_download=插件下载
text_camera_plugin=智能相机插件
text_camera_plugin_install_guid=请下载安装以上插件,安装完成后关闭浏览器重新打开即可正常使用。
\ No newline at end of file
{
"languages": [
"en",
"zh_CN"
]
}
\ No newline at end of file
{
"menus": [{
"id": "index",
"name": "Home",
"icon": "index",
"url": "mainPage.html",
"children": null
},
{
"id": "settings",
"name": "Settings",
"icon": "settings",
"url": null,
"children": [{
"id": "baseInfo",
"name": "Base Settings",
"icon": null,
"url": null,
"children": [{
"id": "deviceInfo",
"name": "Device Info",
"icon": null,
"url": "settings/base/deviceInfo.html",
"disabled": false,
"children": null
},
{
"id": "network",
"name": "Network Settings",
"icon": null,
"url": "settings/base/network.esp",
"disabled": false,
"children": null
},
{
"id": "device",
"name": "Device Management",
"icon": null,
"url": "settings/base/deviceManage.esp",
"disabled": false,
"children": null
},
{
"id": "deviceSettingsInfo",
"name": "Device Settings",
"icon": null,
"url": "settings/base/deviceSettingsInfo.esp",
"disabled": false,
"children": null
},
{
"id": "videoSettings",
"name": "Video Settings",
"icon": null,
"url": "settings/base/imagingSettings.esp",
"disabled": false,
"children": null
},
{
"id": "bitRate",
"name": "Video Bite Rate",
"icon": null,
"url": "settings/base/bitRate.esp",
"disabled": false,
"children": null
},
{
"id": "storageSettings",
"name": "Storage Settings",
"icon": null,
"url": "settings/base/storage.esp",
"disabled": false,
"children": null
},
{
"id": "OSDSettings",
"name": "OSD Settings",
"icon": null,
"url": "settings/base/OSDSettings.esp",
"disabled": false,
"children": null
}
]
},
{
"id": "function",
"name": "功能设置",
"icon": null,
"url": null,
"children": [{
"id": "cameraSetup",
"name": "相机架设",
"icon": null,
"url": "settings/function/cameraSetup.esp",
"disabled": false,
"children": null
},
{
"id": "captureSettings",
"name": "抓拍参数配置",
"icon": null,
"url": "settings/function/captureSettings.esp",
"disabled": false,
"children": null
},
{
"id": "roadList",
"name": "线路编辑",
"icon": null,
"url": "settings/bus/roadList.esp",
"disabled": false,
"children": null
},
{
"id": "plate",
"name": "车牌识别配置",
"icon": null,
"url": "settings/function/plateRecognizing.esp",
"disabled": false,
"children": null
}
]
},
{
"id": "advanced",
"name": "高级配置",
"icon": null,
"url": null,
"children": [{
"id": "advancedNetwork",
"name": "高级网络配置",
"icon": null,
"url": "settings/advanced/network.esp",
"disabled": false,
"children": null
},
{
"id": "ftpService",
"name": "Ftp服务配置",
"icon": null,
"url": "settings/advanced/ftpServer.html",
"disabled": true,
"children": null
},
{
"id": "what",
"name": "违法优先级",
"icon": null,
"url": "settings/advanced/otherParameter.html",
"disabled": true,
"children": null
},
{
"id": "deployAndControl",
"name": "布控",
"icon": null,
"url": "settings/advanced/deployAndControl",
"disabled": true,
"children": null
},
{
"id": "debug",
"name": "调试参数",
"icon": null,
"url": "settings/advanced/dynamicParameters.esp",
"disabled": false,
"children": null
}
]
},
{
"id": "clientSettings",
"name": "客户端配置",
"icon": null,
"url": null,
"children": [{
"id": "storage",
"name": "存储配置",
"icon": null,
"url": "settings/client/storage.html",
"disabled": false,
"children": null
}]
}
]
},
{
"id": "maintain",
"name": "运行维护",
"icon": "yunwei",
"url": "",
"children": null
},
{
"id": "search",
"name": "Data",
"icon": "search",
"url": null,
"children": [{
"id": "loginfo",
"name": "查看日志",
"icon": null,
"url": "dataQuery/logInfo.html",
"children": null
}]
},
{
"id": "help",
"name": "Help",
"icon": "help",
"url": null,
"children": null
},
{
"id": "userManage",
"name": "User Management",
"icon": "userManage",
"url": "settings/user/userList.html",
"disabled": true,
"children": null
}
]
}
{
"menus": [
{
"id": "index",
"name": "首页",
"icon": "index",
"url": "mainPage.html",
"children": null
},
{
"id": "settings",
"name": "系统配置",
"icon": "settings",
"url": null,
"children": [
{
"id": "baseInfo",
"name": "基础配置",
"icon": null,
"url": null,
"children": [
{
"id": "deviceInfo",
"name": "设备基本信息",
"icon": null,
"url": "settings/base/deviceInfo.html",
"disabled": false,
"children": null
},
{
"id": "network",
"name": "网络设置",
"icon": null,
"url": "settings/base/network.esp",
"disabled": false,
"children": null
},
{
"id": "device",
"name": "设备管理",
"icon": null,
"url": "settings/base/deviceManage.esp",
"disabled": false,
"children": null
},
{
"id": "deviceSettingsInfo",
"name": "设备配置信息",
"icon": null,
"url": "settings/base/deviceSettingsInfo.esp",
"disabled": false,
"children": null
},
{
"id": "videoSettings",
"name": "成像参数设置",
"icon": null,
"url": "settings/base/imagingSettings.esp",
"disabled": false,
"children": null
},
{
"id": "bitRate",
"name": "码流设置",
"icon": null,
"url": "settings/base/bitRate.esp",
"disabled": false,
"children": null
},
{
"id": "storageSettings",
"name": "存储设置",
"icon": null,
"url": "settings/base/storage.esp",
"disabled": false,
"children": null
},
{
"id": "OSDSettings",
"name": "OSD设置",
"icon": null,
"url": "settings/base/OSDSettings.esp",
"disabled": false,
"children": null
}
]
},
{
"id": "function",
"name": "功能设置",
"icon": null,
"url": null,
"children": [
{
"id": "cameraScene",
"name": "场景关联",
"icon": null,
"url": "settings/function/control.html",
"disabled": false,
"children": null
},
{
"id": "cameraSetup",
"name": "相机架设",
"icon": null,
"url": "settings/function/cameraSetup.esp",
"disabled": false,
"children": null
},
{
"id": "captureSettings",
"name": "抓拍参数配置",
"icon": null,
"url": "settings/function/captureSettings.esp",
"disabled": false,
"children": null
},
{
"id": "roadList",
"name": "线路编辑",
"icon": null,
"url": "settings/bus/roadList.esp",
"disabled": false,
"children": null
},
{
"id": "plate",
"name": "车牌识别配置",
"icon": null,
"url": "settings/function/plateRecognizing.esp",
"disabled": false,
"children": null
}
]
},
{
"id": "advanced",
"name": "高级配置",
"icon": null,
"url": null,
"children": [
{
"id": "advancedNetwork",
"name": "高级网络配置",
"icon": null,
"url": "settings/advanced/network.esp",
"disabled": false,
"children": null
},
{
"id": "ftpService",
"name": "Ftp服务配置",
"icon": null,
"url": "settings/advanced/ftpServer.html",
"disabled": true,
"children": null
},
{
"id": "what",
"name": "违法优先级",
"icon": null,
"url": "settings/advanced/otherParameter.html",
"disabled": true,
"children": null
},
{
"id": "deployAndControl",
"name": "布控",
"icon": null,
"url": "settings/advanced/deployAndControl",
"disabled": true,
"children": null
},
{
"id": "debug",
"name": "调试参数",
"icon": null,
"url": "settings/advanced/dynamicParameters.esp",
"disabled": false,
"children": null
}
]
},
{
"id": "clientSettings",
"name": "客户端配置",
"icon": null,
"url": null,
"children": [
{
"id": "storage",
"name": "存储配置",
"icon": null,
"url": "settings/client/storage.html",
"disabled": false,
"children": null
}
]
}
]
},
{
"id": "maintain",
"name": "运行维护",
"icon": "yunwei",
"url": "",
"children": null
},
{
"id": "search",
"name": "数据检索",
"icon": "search",
"url": null,
"children": [
{
"id": "loginfo",
"name": "查看日志",
"icon": null,
"url": "dataQuery/logInfo.html",
"children": null
}
]
},
{
"id": "help",
"name": "帮助",
"icon": "help",
"url": null,
"children": null
},
{
"id": "userManage",
"name": "用户管理",
"icon": "userManage",
"url": "settings/user/userList.html",
"disabled": true,
"children": null
}
]
}
该目录保存的是国际化相关的资源,包括所有页面的中文 ,英文,默认语言的字符串。
及中文及英文的菜单数据。
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!