aboutsummaryrefslogtreecommitdiffstats
path: root/openo-portal/portal-performance/src/main/webapp/performance/js
diff options
context:
space:
mode:
Diffstat (limited to 'openo-portal/portal-performance/src/main/webapp/performance/js')
-rw-r--r--openo-portal/portal-performance/src/main/webapp/performance/js/alarmConds.js261
-rw-r--r--openo-portal/portal-performance/src/main/webapp/performance/js/alarmsServerPageTable.js514
-rw-r--r--openo-portal/portal-performance/src/main/webapp/performance/js/alarmsUtil.js1154
-rw-r--r--openo-portal/portal-performance/src/main/webapp/performance/js/commonUtil.js60
-rw-r--r--openo-portal/portal-performance/src/main/webapp/performance/js/curAlarmsController.js430
-rw-r--r--openo-portal/portal-performance/src/main/webapp/performance/js/performanceChart.js181
-rw-r--r--openo-portal/portal-performance/src/main/webapp/performance/js/performanceQueryController.js843
-rw-r--r--openo-portal/portal-performance/src/main/webapp/performance/js/pmUtil.js458
-rw-r--r--openo-portal/portal-performance/src/main/webapp/performance/js/serverPageTable.js217
9 files changed, 4118 insertions, 0 deletions
diff --git a/openo-portal/portal-performance/src/main/webapp/performance/js/alarmConds.js b/openo-portal/portal-performance/src/main/webapp/performance/js/alarmConds.js
new file mode 100644
index 00000000..ffda35af
--- /dev/null
+++ b/openo-portal/portal-performance/src/main/webapp/performance/js/alarmConds.js
@@ -0,0 +1,261 @@
+var AlarmConds = function () {
+
+ return {
+
+ parseActiveConds2JSon: function (conds) {
+ return this.parseConds2JSon(conds, 1);
+ },
+ parseHistoryConds2JSon: function (conds) {
+ return this.parseConds2JSon(conds, 2);
+ },
+
+ /**
+ * 传入的条件数组说明:
+ * 每个条件都是一个对象,包含2个属性:type和data。type表示条件的类型,data是一个数组,每项都表示一个条件。
+ * 下面是支持的所有条件的说明:
+ * 1)网元
+ * {
+ * type : 'Position',
+ * data : [{ //支持多个
+ * locationId : 'lId1',
+ * oid : 'oid1',
+ * isSelf : true //是否分组,true表示只包含自己,false表示分组
+ * }
+ * ]
+ * }
+ * 2)级别
+ * {
+ * type : 'Severity',
+ * data : [{ //支持多个
+ * severity : 1 //1表示严重,2表示主要,3表示次要,4表示警告
+ * }
+ * ]
+ * }
+ * 3)确认状态
+ * {
+ * type : 'AckState',
+ * data : [{ //支持多个
+ * ackState : 1 //1表示已确认,2表示未确认
+ * }
+ * ]
+ * }
+ * 4)可见性
+ * {
+ * type : 'FilterState',
+ * data : [{ //支持多个
+ * filterState : 1 //1表示可见,0表示不可见
+ * }
+ * ]
+ * }
+ * 5)告警类型
+ * {
+ * type : 'AlarmType',
+ * data : [{ //支持多个
+ * alarmType : 1 //0表示通信告警,1表示处理错误告警,2表示服务质量告警,3表示设备告警,4表示环境告警,5表示网管系统告警,6表示完整性告警,7表示可用性告警,8表示物理攻击告警,9表示安全攻击告警,10表示时限告警
+ * }
+ * ]
+ * }
+ * 6)告警码
+ * {
+ * type : 'ProbableCause',
+ * data : [{ //支持多个
+ * systemType : 6,
+ * code : 1001
+ * }
+ * ]
+ * }
+ * 7)发生时间
+ * {
+ * type : 'RaisedTime',
+ * data : [{ //支持一个
+ * mode : 0, //0表示区间,1表示最近
+ * start : 1399429229000, //mode为0时,表示开始时间,mode为1时,表示时间的毫秒值
+ * end : 1399515601000 //mode为0时,表示结束时间,mode为1时,表示时间的毫秒值
+ * }
+ * ]
+ * }
+ * 8)确认时间
+ * {
+ * type : 'AckTime',
+ * data : [{ //支持一个
+ * mode : 0, //0表示区间,1表示最近
+ * start : 1399429229000, //mode为0时,表示开始时间,mode为1时,表示时间的毫秒值
+ * end : 1399515601000 //mode为0时,表示结束时间,mode为1时,表示时间的毫秒值
+ * }
+ * ]
+ * }
+ * 9)清除时间
+ * {
+ * type : 'ClearedTime',
+ * data : [{ //支持一个
+ * mode : 0, //0表示区间,1表示最近
+ * start : 1399429229000, //mode为0时,表示开始时间,mode为1时,表示时间的毫秒值
+ * end : 1399515601000 //mode为0时,表示结束时间,mode为1时,表示时间的毫秒值
+ * }
+ * ]
+ * }
+ * 10)告警ID
+ * {
+ * type : 'AlarmId',
+ * data : [{ //支持一个
+ * id : 1412923648983
+ * }
+ * ]
+ * }
+ * 11)MOC
+ * {
+ * type : 'Moc',
+ * data : [{ //支持一个
+ * moc : 'moc' //支持前缀匹配,如:'moc%'
+ * }
+ * ]
+ * }
+ * 12)ip地址
+ * {
+ * type : 'NeIp',
+ * data : [{ //支持一个
+ * neIp : '10.74.165.57'
+ * }
+ * ]
+ * }
+ */
+ parseConds2JSon: function (conds, ruleType) {
+ var parser = {
+ Position: function (cond) {
+ var condStr = "";
+ if (cond.type === "Position" && cond.data.length > 0) {
+ condStr = "<NewPositionCond OwnerType='Position' value='" + cond.data[0].locationId + "#" + cond.data[0].oid + "#" + cond.data[0].isSelf;
+ for (var i = 1; i < cond.data.length; i++) {
+ condStr += "∷" + cond.data[i].locationId + "#" + cond.data[i].oid + "#" + cond.data[i].isSelf;
+ }
+ condStr += "' />";
+ }
+ return condStr;
+ },
+ Severity: function (cond) {
+ var condStr = "";
+ if (cond.type === "Severity" && cond.data.length > 0) {
+ condStr = "<PerceivedSeverity value='" + cond.data[0].severity;
+ for (var i = 1; i < cond.data.length; i++) {
+ condStr += "," + cond.data[i].severity;
+ }
+ condStr += "' />";
+ }
+ return condStr;
+ },
+ AckState: function (cond) {
+ var condStr = "";
+ if (cond.type === "AckState" && cond.data.length > 0) {
+ condStr = "<AckState value='" + cond.data[0].ackState;
+ for (var i = 1; i < cond.data.length; i++) {
+ condStr += "," + cond.data[i].ackState;
+ }
+ condStr += "' />";
+ }
+ return condStr;
+ },
+ FilterState: function (cond) {
+ var condStr = "";
+ if (cond.type === "FilterState" && cond.data.length > 0) {
+ condStr = "<FilterState value='" + cond.data[0].filterState;
+ for (var i = 1; i < cond.data.length; i++) {
+ condStr += "," + cond.data[i].filterState;
+ }
+ condStr += "' />";
+ }
+ return condStr;
+ },
+ AlarmType: function (cond) {
+ var condStr = "";
+ if (cond.type === "AlarmType" && cond.data.length > 0) {
+ condStr = "<AlarmType value='" + cond.data[0].alarmType;
+ for (var i = 1; i < cond.data.length; i++) {
+ condStr += "," + cond.data[i].alarmType;
+ }
+ condStr += "' />";
+ }
+ return condStr;
+ },
+ ProbableCause: function (cond) {
+ var condStr = "";
+ if (cond.type === "ProbableCause" && cond.data.length > 0) {
+ condStr = "<ProbableCause value='" + cond.data[0].systemType + "#" + cond.data[0].code;
+ for (var i = 1; i < cond.data.length; i++) {
+ condStr += "," + cond.data[i].systemType + "#" + cond.data[i].code;
+ }
+ condStr += "' />";
+ }
+ return condStr;
+ },
+ RaisedTime: function (cond) {
+ var condStr = "";
+ if (cond.type === "RaisedTime" && cond.data.length === 1) {
+ condStr = "<RaisedTime model='" + cond.data[0].mode + "' start='" + cond.data[0].start + "' end= '" + cond.data[0].end + "' queryTimeZone='' condTimeZone='' />";
+ }
+ return condStr;
+ },
+ AckTime: function (cond) {
+ var condStr = "";
+ if (cond.type === "AckTime" && cond.data.length === 1) {
+ condStr = "<AckTime model='" + cond.data[0].mode + "' start='" + cond.data[0].start + "' end= '" + cond.data[0].end + "' queryTimeZone='' condTimeZone='' />";
+ }
+ return condStr;
+ },
+ ClearedTime: function (cond) {
+ var condStr = "";
+ if (cond.type === "ClearedTime" && cond.data.length === 1) {
+ condStr = "<ClearedTime model='" + cond.data[0].mode + "' start='" + cond.data[0].start + "' end= '" + cond.data[0].end + "' queryTimeZone='' condTimeZone='' />";
+ }
+ return condStr;
+ },
+ AlarmId: function (cond) {
+ var condStr = "";
+ if (cond.type === "AlarmId" && cond.data.length === 1) {
+ condStr = "<IDString value='" + cond.data[0].id + "'/>";
+ }
+ return condStr;
+ },
+ Moc: function (cond) {
+ var condStr = "";
+ if (cond.type === "Moc" && cond.data.length === 1) {
+ condStr = "<Moc Moc='" + cond.data[0].moc + "' SELECT_MODEL='false' MocSelf='true' />";
+ }
+ return condStr;
+ },
+ NeIp: function (cond) {
+ var condStr = "";
+ if (cond.type === "NeIp" && cond.data.length === 1) {
+ condStr = "<NeIp value='" + cond.data[0].neIp + "' />";
+ }
+ return condStr;
+ }
+ };
+
+ var d = new Date();
+ var JSonObj = {
+ rule: {
+ ruleId: -1,
+ name: "Alarm",
+ creator: "admin",
+ createTime: d.getTime(),
+ modifier: "",
+ modifyTime: 0,
+ description: "",
+ state: true,
+ ruleType: ruleType,
+ ruleSort: 1,
+ owner: "",
+ attrs: "<Attrs/>"
+ }
+ };
+ var condStr = "<CompoundCond>";
+ for (var i = 0; i < conds.length; i++) {
+ condStr += parser[conds[i].type](conds[i]);
+ }
+ JSonObj.rule.ruleData = condStr + "</CompoundCond>";
+ //return JSON.stringify(JSonObj);
+ return JSonObj;
+ }
+
+ };
+}(); \ No newline at end of file
diff --git a/openo-portal/portal-performance/src/main/webapp/performance/js/alarmsServerPageTable.js b/openo-portal/portal-performance/src/main/webapp/performance/js/alarmsServerPageTable.js
new file mode 100644
index 00000000..d6ea7b88
--- /dev/null
+++ b/openo-portal/portal-performance/src/main/webapp/performance/js/alarmsServerPageTable.js
@@ -0,0 +1,514 @@
+var serverPageTable = {};
+var queryCacheId = null;
+var alarmCount;
+/* Bootstrap style full number pagination control */
+$.fn.dataTableExt.oApi.fnPagingInfo = function (oSettings) {
+ return {
+ "iEnd": oSettings.fnDisplayEnd(),
+ "iLength": oSettings._iDisplayLength,
+ "iTotal": oSettings.fnRecordsTotal(),
+ "iFilteredTotal": oSettings.fnRecordsDisplay(),
+ "iPage": Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength),
+ "iTotalPages": Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength)
+ };
+};
+
+$.extend($.fn.dataTableExt.oPagination, {
+ "bootstrap_extended": {
+ "fnInit": function (oSettings, nPaging, fnDraw) {
+ var oLang = oSettings.oLanguage.oPaginate;
+ var oPaging = oSettings.oInstance.fnPagingInfo();
+
+ var fnClickHandler = function (e) {
+ e.preventDefault();
+ if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) {
+ fnDraw(oSettings);
+ }
+ };
+
+ $(nPaging).append(
+ '<div class="pagination-panel"> ' + oLang.sPage + ' ' +
+ '<a href="#" class="btn btn-sm default prev disabled" title="' + oLang.sPrevious + '"><i class="fa fa-angle-left"></i></a>' +
+ '<input type="text" class="pagination-panel-input input-mini input-inline input-sm" maxlenght="5" style="text-align:center; margin: 0 4px; border: 1px solid rgb(169, 169, 169);height: 28px;">' +
+ '<a href="#" class="btn btn-sm default next disabled" title="' + oLang.sNext + '"><i class="fa fa-angle-right"></i></a> ' +
+ oLang.sPageOf + ' <span class="pagination-panel-total"></span>' +
+ '</div>'
+ );
+
+ var els = $('a', nPaging);
+
+ $(els[0]).bind('click.DT', {action: "previous"}, fnClickHandler);
+ $(els[1]).bind('click.DT', {action: "next"}, fnClickHandler);
+
+ $('.pagination-panel-input', nPaging).bind('change.DT', function (e) {
+ var oPaging = oSettings.oInstance.fnPagingInfo();
+ e.preventDefault();
+ var page = parseInt($(this).val());
+ if (page > 0 && page < oPaging.iTotalPages) {
+ if (oSettings.oApi._fnPageChange(oSettings, page - 1)) {
+ fnDraw(oSettings);
+ }
+ } else {
+ $(this).val(oPaging.iPage + 1);
+ }
+ });
+
+ $('.pagination-panel-input', nPaging).bind('keypress.DT', function (e) {
+ var oPaging = oSettings.oInstance.fnPagingInfo();
+ if (e.which == 13) {
+ var page = parseInt($(this).val());
+ if (page > 0 && page < oSettings.oInstance.fnPagingInfo().iTotalPages) {
+ if (oSettings.oApi._fnPageChange(oSettings, page - 1)) {
+ fnDraw(oSettings);
+ }
+ } else {
+ $(this).val(oPaging.iPage + 1);
+ }
+ e.preventDefault();
+ }
+ });
+ },
+
+ "fnUpdate": function (oSettings, fnDraw) {
+ var iListLength = 5;
+ var oPaging = oSettings.oInstance.fnPagingInfo();
+ var an = oSettings.aanFeatures.p;
+ var i, j, sClass, iStart, iEnd, iHalf = Math.floor(iListLength / 2);
+
+ if (oPaging.iTotalPages < iListLength) {
+ iStart = 1;
+ iEnd = oPaging.iTotalPages;
+ }
+ else if (oPaging.iPage <= iHalf) {
+ iStart = 1;
+ iEnd = iListLength;
+ } else if (oPaging.iPage >= (oPaging.iTotalPages - iHalf)) {
+ iStart = oPaging.iTotalPages - iListLength + 1;
+ iEnd = oPaging.iTotalPages;
+ } else {
+ iStart = oPaging.iPage - iHalf + 1;
+ iEnd = iStart + iListLength - 1;
+ }
+
+
+ for (i = 0, iLen = an.length; i < iLen; i++) {
+ var wrapper = $(an[i]).parents(".dataTables_wrapper");
+
+ if (oPaging.iTotalPages <= 0) {
+ $('.pagination-panel, .dataTables_length', wrapper).hide();
+ } else {
+ $('.pagination-panel, .dataTables_length', wrapper).show();
+ }
+
+ $('.pagination-panel-total', an[i]).html(oPaging.iTotalPages);
+ $('.pagination-panel-input', an[i]).val(oPaging.iPage + 1);
+
+ // Remove the middle elements
+ $('li:gt(1)', an[i]).filter(':not(.next)').remove();
+
+ // Add the new list items and their event handlers
+ for (j = iStart; j <= iEnd; j++) {
+ sClass = (j == oPaging.iPage + 1) ? 'class="active"' : '';
+ $('<li ' + sClass + '><a href="#">' + j + '</a></li>')
+ .insertBefore($('li.next:first', an[i])[0])
+ .bind('click', function (e) {
+ e.preventDefault();
+ oSettings._iDisplayStart = (parseInt($('a', this).text(), 10) - 1) * oPaging.iLength;
+ fnDraw(oSettings);
+ });
+ }
+
+ // Add / remove disabled classes from the static elements
+ if (oPaging.iPage === 0) {
+ $('a.prev', an[i]).addClass('disabled');
+ } else {
+ $('a.prev', an[i]).removeClass('disabled');
+ }
+
+ if (oPaging.iPage === oPaging.iTotalPages - 1 || oPaging.iTotalPages === 0) {
+ $('a.next', an[i]).addClass('disabled');
+ } else {
+ $('a.next', an[i]).removeClass('disabled');
+ }
+ }
+ }
+ }
+});
+
+//构造查询条件
+serverPageTable.getRestPara = function (cond, tableSetting) {
+
+ var conditions = {};
+ //告警级别
+ if (cond.severity != null && cond.severity != "undefined" && cond.severity.length > 0) {
+ var severity = '['+cond.severity+']';
+ var severityObj = window.JSON.parse(severity);
+ conditions.severities=severityObj;
+ }
+
+ //确认状态
+ if (cond.ackState != null && cond.ackState != "undefined" && cond.ackState.length > 0) {
+ var ackState = '[' + cond.ackState + ']';
+ var ackStateObj = window.JSON.parse(ackState)
+ conditions.ackStates=ackStateObj;
+ }
+
+ //可见性
+ if (cond.filterState != null && cond.filterState != "undefined" && cond.filterState.length > 0) {
+ var filterState = '[' + cond.filterState + ']';
+ var filterStateObj = window.JSON.parse(filterState);
+ conditions.isVisibles=filterStateObj;
+ }
+
+ //告警确认时间
+ if (cond.ackTimeMode != null && cond.ackTimeMode != "undefined") {
+ var ackTime;
+ if(cond.ackTimeMode === 1){
+ ackTime = '{"timeMode": '+cond.ackTimeMode+',"relativeTime": '+cond.ackRelativeTime+'}';
+ }else{
+ ackTime = '{"beginTime": '+cond.ackTimeStarTime+',"endTime": '+cond.ackTimeEndTime+',"timeMode": '+cond.ackTimeMode+'}';
+ }
+ var ackTimeObj = window.JSON.parse(ackTime);
+ conditions.ackTime = ackTimeObj;
+ }
+
+ //告警发生时间
+ if (cond.alarmRaisedTimeMode != null && cond.alarmRaisedTimeMode != "undefined") {
+ var alarmRaisedTime;
+ if(cond.alarmRaisedTimeMode === 1){
+ alarmRaisedTime = '{"timeMode": '+cond.alarmRaisedTimeMode+',"relativeTime": '+cond.alarmRaisedRelativeTime+'}';
+ }else{
+ alarmRaisedTime = '{"beginTime": '+cond.alarmRaisedStartTime+',"endTime": '+cond.alarmRaisedEndTime+',"timeMode": '+cond.alarmRaisedTimeMode+'}';
+ }
+ var alarmRaisedTimeObj = window.JSON.parse(alarmRaisedTime);
+ conditions.alarmRaisedTime = alarmRaisedTimeObj;
+ }
+
+ //告警清除时间
+ if (cond.clearedTimeMode != null && cond.clearedTimeMode != "undefined") {
+ var clearedTime;
+ if(cond.clearedTimeMode === 1){
+ clearedTime = '{"timeMode": '+cond.clearedTimeMode+',"relativeTime": '+cond.clearedTimeRelativeTime+'}';
+ }else{
+ clearedTime = '{"beginTime": '+cond.clearedTimeStartTime+',"endTime": '+cond.clearedTimeEndTime+',"timeMode": '+cond.clearedTimeMode+'}';
+ }
+ var clearedTimeTimeObj = window.JSON.parse(clearedTime);
+ conditions.alarmClearedTime = clearedTimeTimeObj;
+ }
+
+ //告警码
+ if (cond.probableCause != null && cond.probableCause != "undefined") {
+ //var probableCauseArr = cond.probableCause.split(',');
+ var str = "";
+ var arr="[";
+ for (var i = 0; i < cond.probableCause.length; i++) {
+ if(i === 0){
+ if(cond.probableCause[i].type === "1"){
+ arr+='{"systemType":'+cond.probableCause[i].codeid+',"codes":[]}';
+ }else{
+ arr+='{"systemType":'+cond.probableCause[i].parentid+',"codes":['+cond.probableCause[i].codeid+']}';
+ }
+ }else{
+ if(cond.probableCause[i].type === "1"){
+ arr+=',{"systemType":'+cond.probableCause[i].codeid+',"codes":[]}';
+ }else{
+ arr+=',{"systemType":'+cond.probableCause[i].parentid+',"codes":['+cond.probableCause[i].codeid+']}';
+ }
+ }
+ }
+ arr+="]";
+ var probableCausesObj = window.JSON.parse(arr);
+ conditions.probableCauses = probableCausesObj;
+ }
+
+ var requests={};
+ requests.condition=conditions;
+ requests.pageSize=tableSetting._iDisplayLength;
+ requests.pageNumber=tableSetting._iDisplayStart / tableSetting._iDisplayLength + 1;
+ if(cond.alarmType===2 && requests.pageNumber === 1){
+ requests.queryCacheId="";
+ }else if(cond.alarmType===2 && requests.pageNumber != 1){
+ requests.queryCacheId=queryCacheId;
+ }
+
+ var resStr = window.JSON.stringify(requests);
+ result={
+ request:resStr
+ };
+ return result;
+};
+
+
+serverPageTable.initDataTable = function (setting, cond, divId) {
+ //转换colomn
+ var column = setting.columns;
+ var setting;
+ //先把原来的表格清空
+ $('#' + divId).children().remove();
+ var tableId = setting.tableId;
+ var tableEleStr = '<table class="table table-striped table-bordered table-hover" id= ' + tableId + '>'
+ + '<thead>'
+ + '<tr role="row" class="heading" >'
+ + '</tr>'
+ + '</thead>'
+ + '<tbody>'
+ + '</tbody>'
+ + '</table>';
+ $('#' + divId).append(tableEleStr);
+ //$('#'+ tableId).append(' <thead><tr role="row" class="heading" ></tr></thead><tbody></tbody>');
+ var trEle = $('#' + tableId + ' > thead >tr');
+ //var dataTableColumn = [];
+ for (var one in column) {
+ if (one != "contains") {
+ var th = '<th>' + column[one].name + '</th>';
+ trEle.append(th);
+ }
+ }
+
+ var table = $("#" + tableId).dataTable({
+ //"sDom" : "tr<'row'<'col-md-6 col-sm-12'><'col-md-6 col-sm-12'pli>>", // datatable layout
+ // "sDom" : "<'row'<'col-md-12 col-sm-12'lip>r><'table-scrollable't>>",
+ "oLanguage": setting.language,//汉化
+ "bJQueryUI": true,
+ "bPaginate": true,// 分页按钮
+ "bFilter": false,// 搜索栏
+ "bAutoWidth": true,//自动设置列宽
+ "bLengthChange": true,// 每行显示记录数
+ "iDisplayLength": 10,// 每页显示行数
+ "bSort": false,// 排序
+ "bInfo": true,// Showing 1 to 10 of 23 entries 总记录数没也显示多少等信息
+ "bWidth": true,
+ "bScrollCollapse": false,
+ "sScrollY": "400px",
+ "sScrollX": "100%",
+ "sPaginationType": "bootstrap_extended", // 分页, bootstrap_extended 一共两种样式 另一种为two_button // 是datatables默认
+ "bProcessing": true,
+ "bServerSide": true,
+ "bDestroy": true,
+ "bSortCellsTop": true,
+ "sDom": '<"top"rt><"bottom"lip>',
+ "sAjaxSource": setting.restUrl,// ./js/testJson.json setting.restUrl
+ "aoColumns": setting.columns,
+ "bRetrieve": true,
+ "fnServerData": function (sSource, aoData, fnCallback, oSettings) {
+ oSettings.jqXHR = $.ajax({
+ "type": 'get',
+ "url": sSource,
+ "dataType": "json",
+ "data": serverPageTable.getRestPara(cond, oSettings),
+ "success": function (resp) {
+ oSettings.iDraw = oSettings.iDraw + 1;
+
+ var data = {};
+ if(cond.ruleType===1){
+ var logList = resp.alarms;
+ data.iTotalRecords = resp.totalCount;
+ data.iTotalDisplayRecords = resp.totalCount;
+
+ }else if(cond.ruleType===2){
+ var logList = resp.alarms;
+ if(resp.queryCacheId === ""){
+ data.iTotalRecords = alarmCount;
+ data.iTotalDisplayRecords = alarmCount;
+ }else{
+ alarmCount = resp.totalCount;
+ data.iTotalRecords = resp.totalCount;
+ data.iTotalDisplayRecords = resp.totalCount;
+ queryCacheId = resp.queryCacheId;
+ }
+
+ }
+
+ var pageInfo = null;
+ setting=oSettings;
+ if (pageInfo != null) {
+ vm.logInfo[vm.logType].pageInfo = pageInfo;
+ }
+
+ //添加序号
+ for(var i=0;i<logList.length;i++){
+ logList[i].order="<a>"+(i+1)+"</a>";
+ }
+ //组合告警码
+ for(var i=0;i<logList.length;i++){
+ logList[i].probableCauseCodeNameAndCode=logList[i].probableCauseCodeName+"("+logList[i].probableCauseCode+")";
+ }
+
+ data.aaData = logList;
+ data.sEcho = oSettings;
+ fnCallback(data);
+
+ $('#dataTableCheckBox').click(function () {
+ var checkArr = $('#' + divId + ' .details-check input[type="checkbox"]');//
+ for (var i = 0; i < checkArr.length; i++) {
+ if ($(checkArr).eq(i).attr('id') != 'dataTableCheckBox') {
+ if ($('#dataTableCheckBox').prop("checked")) {
+ $(checkArr).eq(i).removeClass('checked');
+ $(checkArr).eq(i).prop('checked',true);
+ } else {
+ $(checkArr).eq(i).addClass('checked');
+ $(checkArr).eq(i).prop('checked',false);
+ }
+ }
+ }
+ });
+ }
+
+ });
+ },
+ "fnDrawCallback": function( oSettings ) { // run some code on table redraw
+
+ var tableWrapper = $('div.dataTables_wrapper');
+ //自适应对齐表头
+ var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', tableWrapper);
+ var tbodyHead = $('tbody', $tableHead);
+ if(tbodyHead && tbodyHead.length >0){
+ $(tbodyHead).remove();
+ }
+
+ var $tableBody = $('table#' + tableId, tableWrapper);
+ var trIn = $('thead > tr:nth-child(1)', $tableHead);
+ var trBodyHead = $('thead > tr:nth-child(1)', $tableBody);
+ var tds = $(trIn).children();
+ var ths = $(trBodyHead).children();
+ for(var k=0;k<tds.length;k++){
+ $(ths.eq(k)).html('<div style="height: 0;overflow: hidden;">' + tds.eq(k).html() + '</div>');
+ }
+ var bodyRows = $('tbody > tr', $tableBody);
+ for(var i=0;i<bodyRows.length;i++){
+ var rowClone = $(bodyRows.eq(i)).clone();
+ var tds = $(rowClone).children();
+ for(var j=0;j<tds.length;j++){
+ $(tds.eq(j)).html('<div style="height: 0;overflow: hidden;">' + tds.eq(j).html() + '</div>');
+ $(tds.eq(j)).height('0px');
+ $(tds.eq(j)).css('padding-top','0px');
+ $(tds.eq(j)).css('padding-bottom','0px');
+ $(tds.eq(j)).css('border-top-width','0px');
+ $(tds.eq(j)).css('border-bottom-width','0px');
+ }
+ $(rowClone).height('0px');
+ $tableHead.append($(rowClone).prop("outerHTML"));
+ }
+
+ $('div.dataTables_scrollBody', tableWrapper).css('width','100%');
+ //$('div.dataTables_scrollHead', tableWrapper).css('width','98.5%');
+ $('div.dataTables_scrollHeadInner', tableWrapper).css('padding-right', 0);
+
+ //$("table.dataTable > thead > tr > th:nth-child(2)", $(".dataTables_scrollHeadInner")).click();
+
+ //设置表格本体高度
+ //$('div.dataTables_scrollBody', tableWrapper).css('height', "280px");
+ //填充表头右边界
+ /* $('div.dataTables_scrollHead', tableWrapper).css('display','inline-block');
+ $("div.dataTables_scrollHead", tableWrapper).after("<div id='divRightPadding' style='overflow: hidden; background:#eee; position: relative; float:right; border: 1px solid #ddd; height:" + 42 + "px; width: 1.4%;'></div>"); */
+ /* if($.browser.mozilla){
+ $('div#divRightPadding', tableWrapper).css('height', '40');
+ } */
+ }
+ });
+
+ $(window).bind('resize', function () {
+ //oTable.DataTable.models.oSettings.bAjaxDataGet = false;
+ table.fnAdjustColumnSizing(setting);
+ } );
+
+ function format_Detail(oTable, nTr) {
+ var aData = oTable.fnGetData(nTr);
+
+ var sOut = '<table class = "detailTable" width="100%">';
+ sOut += '<tr><td class = "detailTitleStyle" width = 160><span class = "label label-primary">' + column[3].name + '</span></td><td class = "detailCellStyle" width = 320>' + null2space(aData[column[3].mData]) + '</td>';
+ sOut += '<td class = "detailTitleStyle" width = 160><span class = "label label-primary">' + column[8].name + '</span></td><td class = "detailCellStyle" width = 320>' + null2space(vm.alTypes[aData[column[8].mData]]) + '</td></tr>';
+
+ sOut += '<tr><td class = "detailTitleStyle" width = 80><span class = "label label-primary">' + column[9].name + '</span></td><td class = "detailCellStyle" width = 160>' + null2space(aData[column[9].mData]) + '</td>';
+ sOut += '<td class = "detailTitleStyle" width = 80><span class = "label label-primary">' + column[7].name + '</span></td><td class = "detailCellStyle" width = 160>' + null2space(aData[column[7].mData]) + '</td></tr>';
+
+ sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + column[6].name + '</span></td><td class = "detailCellStyle">' + null2space(aData[column[6].mData]) + '</td>';
+ sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + column[11].name + '</span></td><td class = "detailCellStyle">' + null2space(aData[column[11].mData]) + '</td></tr>';
+
+ sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + column[10].name + '</span></td><td class = "detailCellStyle">' + null2space(aData[column[10].mData]) + '</td>';
+ sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + column[13].name + '</span></td><td class = "detailCellStyle">' + null2space(aData[column[13].mData]) + '</td></tr>';
+
+ sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + column[12].name + '</span></td><td class = "detailCellStyle">' + null2space(aData[column[12].mData]) + '</td>';
+ sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + column[5].name + '</span></td><td class = "detailCellStyle">' + null2space(aData[column[5].mData]) + '</td></tr>';
+
+ sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + column[23].name + '</span></td><td class = "detailCellStyle">' + null2space(aData[column[23].mData]) + '</td>';
+ sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + column[4].name + '</span></td><td class = "detailCellStyle">' + null2space(aData[column[4].mData]) + '</td></tr>';
+ // sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + column[5].name + '</span></td><td class = "detailCellStyle">' + aData[column[5].mData] + '</td></tr>';
+
+ // sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + column[4].name + '</span></td><td class = "detailCellStyle">' + aData[column[4].mData] + '</td>';
+ // sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + column[22].name + '</span></td><td class = "detailCellStyle">' + aData[column[22].mData] + '</td></tr>';
+ // sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + column[22].name + '</span></td><td class = "detailCellStyle">' + aData[column[22].mData] + '</td></tr>';
+
+ // sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + column[12].name + '</span></td><td class = "detailCellStyle">' + aData[column[12].mData] + '</td>';
+ // sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + column[17].name + '</span></td><td class = "detailCellStyle">' + aData[column[17].mData] + '</td></tr>';
+
+ sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + column[16].name + '</span></td><td class = "detailCellStyle" colspan = 3>' + null2space(aData.additionalText) + '</td></tr>';
+
+ return sOut;
+ }
+ function null2space(nullStr){
+ if(nullStr == null){
+ return "";
+ } else {
+ return nullStr;
+ }
+ }
+ $('#' + tableId + '>tbody').on('click', 'td.details-control', function () {
+ var tr = $(this).closest('tr');
+ //var nTr = $(this).parents('tr')[0];
+ //var row = table.row( tr );
+ if (table.fnIsOpen(tr[0])) {
+ table.fnClose(tr[0]);
+ //if ( row.child.isShown() ) {
+ // This row is already open - close it
+ //row.child.hide();
+ tr.removeClass('shown');
+ }
+ else {
+ // Open this row
+ table.fnOpen(tr[0], format_Detail(table, tr[0]), 'details');
+ //row.child( format_Detail(row.data()) ).show();
+ tr.addClass('shown');
+ }
+ });
+
+ // mod by chenhao 2015-10-26 注释掉
+ // // 所有td注册一个点击事件用来展示出详情。
+ // $('#ict_alarms_table >tbody').on('click', 'td', function () {
+
+ // var className= $(this).eq(0).attr('class');
+ // //当点击的是如下的table页的时候
+ // if(className &&(className.indexOf('relInfo')>-1 || className.indexOf('details-check')>-1 || className.indexOf('ackState')>-1 || className.indexOf('details-control')>-1)){
+ // $('#right-menu').fadeOut();
+ // }else{
+ // //填充table的数据
+ // var tbody=$('#ict_table_general >tbody');
+ // tbody.children().remove();
+ // var trHtml="";
+ // var tr = $(this).closest('tr');
+ // var aData = table.fnGetData(tr[0]);
+ // for (var i = 0; i < column.length; i++) {
+ // if( column[i].bVisible == false ){//如果列可见就继续遍历下一个
+ // trHtml += '<tr role="row"><td>'+column[i].name+':</td><td>' + aData[column[i].mData] + '</td></tr>';
+ // }
+ // }
+ // tbody.append(trHtml);
+ // if(!vm.alarmId ||vm.alarmId==aData.alarmId){
+ // $('#right-menu').fadeToggle();
+ // }else{
+ // $('#right-menu').fadeIn();
+ // }
+ // vm.alarmId=aData.alarmId;
+ // }
+ // });
+ //重新调节列宽以适应window resize
+ $(window).bind('resize', function () {
+ //oTable.fnAdjustColumnSizing();
+ $("table.dataTable > thead > tr > th:nth-child(2)", $(".dataTables_scrollHeadInner")).click();
+ } );
+
+};
+
+
+
+
diff --git a/openo-portal/portal-performance/src/main/webapp/performance/js/alarmsUtil.js b/openo-portal/portal-performance/src/main/webapp/performance/js/alarmsUtil.js
new file mode 100644
index 00000000..8ef58b8c
--- /dev/null
+++ b/openo-portal/portal-performance/src/main/webapp/performance/js/alarmsUtil.js
@@ -0,0 +1,1154 @@
+var alarmsUtil = {};
+var alarmTemp=[];
+
+alarmsUtil.timeRender = function (obj) {
+ if (obj.aData[obj.mDataProp] == -1 || obj.aData[obj.mDataProp] == 0) {
+ return "";
+ } else {
+ var date = new Date(obj.aData[obj.mDataProp]);
+ return commonUtil.parseDate(date, 'yyyy-MM-dd hh:mm:ss');
+ }
+};
+
+alarmsUtil.LinkRender = function (obj) {
+ return '<a href="">' + obj.aData[obj.mDataProp] + '</a>';
+};
+
+alarmsUtil.ackState = function (obj) {
+
+ var innerHtml = "";
+ var ackState = obj.aData.ackState;
+ var alarmId = obj.aData.id;
+ var alarmIdArr = [alarmId];
+ var tableId="\'" + obj.oSettings.sTableId + "\'";
+ var divId="\'" + obj.oSettings.nTableWrapper.parentElement.id + "\'";
+ if (ackState == "1" && vm.ruleType == 1) {
+ innerHtml = "<a class=\"label label-sm label-info\" onclick=\" alarmsUtil.unaffirm([" + alarmIdArr + "]," + tableId + "," + divId + ","+obj.iDataRow+") \">Acknowledge</a>";
+ } else if(ackState == "1" && vm.ruleType == 2){
+ innerHtml = "<div class=\"label label-sm label-info\">Acknowledge</div>";
+ } else if(ackState == "2" ){
+ innerHtml = "<a class=\"label label-sm acknow-purple\" onclick=\" alarmsUtil.affirm([" + alarmIdArr + "]," + tableId + "," + divId + ","+obj.iDataRow+")\">Unacknowledge</a>";
+ }
+ return innerHtml;
+};
+
+alarmsUtil.Severity = function (obj) {
+
+ var innerHtml = "";
+ var Severity = obj.aData.perceivedSeverity;
+ if (Severity == "1") {
+ innerHtml = "<span style=\"color:#E24949 \" class=\"ict-alarm \" ></span><sapn \">Critical</sapn>";
+ } else if (Severity == "2") {
+ innerHtml = "<span style=\"color:#E59313 \" class=\"ict-alarm\" ></span><sapn \">Major</sapn>";
+ } else if (Severity == "3") {
+ innerHtml = "<span style=\"color:#F7E51B \" class=\"ict-alarm\" ></span><sapn \">Minor</sapn>";
+ } else if (Severity == "4") {
+ innerHtml = "<span style=\"color:#61C2DE \" class=\"ict-alarm\" ></span><sapn \">Warning</sapn>";
+ }
+ return innerHtml;
+
+};
+
+alarmsUtil.operate = function (obj) {
+
+ var alarmId = obj.aData.alarmId;
+ return "<div class='row col-xs-12'><div><a href='#' class=\"btn-xs grey btn-editable\" onclick=\" alarmsUtil.congfirms('" + alarmId + "')\"><i class=\"ict-delete\"></i>清除</a></div></div>";
+
+};
+
+alarmsUtil.congfirms = function (alarmId) {
+
+ bootbox.confirm('你确定要删除该告警吗?', function (result) { //你确定要删除该用户吗?
+
+ if (result) {
+ var sSource = "/web/rest/web/fm/curalarms?data={\"alarmId\":" + alarmId + "}&_dataSource=isc_PageRestDataSource_0&isc_metaDataPrefix=_&isc_dataFormat=json&_operationType=remove&_componentId=isc_com_zte_ums_aos_fm_view_eventview_table_AlarmTable_0";
+ $.ajax({
+ dataType : "json",
+ type : "DELETE",
+ //数据格式:[tab标签id,tabItem的名字,图片路径,tabItem的描述,更多的LInk地址]
+ contentType : 'application/json; charset=utf-8',
+ url : sSource,
+ data : null,
+ async : false,
+ success : function (msg) {
+ setTimeout(function () {
+ refreshByCond();
+ }, 500);
+ }
+ });
+ }
+
+ });
+
+};
+
+alarmsUtil.allOperate = function (obj) {
+
+ var record = obj.aData;
+ var hasModify = commonUtil.hasRigth('uep.pfl.sm.updateuser');
+ var hasDel = commonUtil.hasRigth('uep.pfl.sm.deluser');
+ var selectUsername = new String(record.userName);
+ var innerHtml = "";
+
+ // 如果有权限,显示操作列
+ if (hasModify) {
+ if (hasDel && selectUsername != "admin") {
+ innerHtml = "<div class='row col-xs-12'><div class='col-xs-6 modify_user'><a class=\"btn-xs grey btn-editable\" href='#' onclick=\"vm.modifyUser('" + selectUsername + "')\"><i class=\"ict-modify\"></i>修改</a></div><div class='col-xs-6'><a href='#' class=\"btn-xs grey btn-editable\" onclick=\"smUtil.congfirms('" + selectUsername + "')\"><i class=\"ict-delete\"></i>删除</a></div></div>";
+ } else {
+ innerHtml = "<div class='row col-xs-12'><div class='col-xs-6 modify_user'><a class=\"btn-xs grey btn-editable\" href='#' onclick=\"vm.modifyUser('" + selectUsername + "')\"><i class=\"ict-modify\"></i>修改</a></div>";
+ }
+ }
+
+ return innerHtml;
+
+};
+
+alarmsUtil.refresh = function () {
+
+ refreshByCond();
+
+}
+
+/*
+
+1.确认
+
+2.反确认
+
+ */
+
+alarmsUtil.loopAffirm = function (type) {
+
+ var checkArr = $('#ict_alarms_table_div .details-check input[type="checkbox"]');
+ var aidArr = [];
+ for (var i = 0; i < checkArr.length; i++) {
+ if($(checkArr[i]).prop("checked")){
+ if ($(checkArr[i]).attr('alarmId') != 'undefined' && $(checkArr[i]).attr('alarmId') != null) {
+ aidArr.push($(checkArr[i]).attr('alarmId'));
+ }
+ }
+ }
+
+ if (type == "1" && aidArr.length > 0) {
+ alarmsUtil.affirm(aidArr);
+ } else if (type == "2" && aidArr.length > 0) {
+ alarmsUtil.unaffirm(aidArr);
+ }
+
+}
+
+/*
+
+
+
+ */
+
+alarmsUtil.loopDelAralms = function () {
+
+ var checkArr = $('#ict_alarms_table_div .details-check input[type="checkbox"]');
+ var aidArr = [];
+ for (var i = 0; i < checkArr.length; i++) {
+ if($(checkArr[i]).prop("checked")){
+ if ($(checkArr[i]).attr('alarmId') != 'undefined' && $(checkArr[i]).attr('alarmId') != null) {
+ aidArr.push($(checkArr[i]).attr('alarmId'));
+ }
+ }
+ }
+
+ if (aidArr.length > 0) {
+ bootbox.confirm('Are you sure to delete alarm(s)', function (result) {
+ if (result) {
+ var sSource = "/api/umcfm/v1/curalarms?request={\"ids\":["+ aidArr +"]}";
+ $.ajax({
+ type : "DELETE",
+ dataType : "json",
+ contentType : 'application/json; charset=utf-8',
+ url : sSource,
+ data : null,
+ async : false,
+ success : function (msg) {
+ setTimeout(function () {
+ refreshByCond()
+ }, 500);
+ }
+ });
+ }
+ });
+ }
+}
+
+alarmsUtil.affirm = function (alarmIdArr,tableId,divId) {
+
+ var getData = {};
+ var request = {};
+ request.ids=[];
+ for(i=0;i<alarmIdArr.length;i++){
+ request.ids.push(alarmIdArr[i]);
+ }
+ var url = "";
+ if (vm.ruleType == 1) { //当前告警
+ request.ackState=1;
+ getData.request = JSON.stringify(request);
+ url = "/api/umcfm/v1/curalarms";
+ } else { //历史告警
+ url = "/ngict/rest/fm/hisalarms"
+ }
+
+ $.ajax({
+ type : "PUT",
+ contentType : 'application/json; charset=utf-8',
+ url : url + "?" + "request=" + JSON.stringify(request),
+ async : false,
+ success : function (msg) {
+ setTimeout(function () {
+ refreshByCond(tableId,divId);
+ }, 100);
+ },
+ error : function(msg){
+ setTimeout(function () {
+ refreshByCond(tableId,divId);
+ }, 100);
+ }
+ });
+
+}
+
+alarmsUtil.unaffirm = function (alarmIdArr,tableId,divId) {
+
+ var getData = {};
+ var request = {};
+ request.ids=[];
+ for(i=0;i<alarmIdArr.length;i++){
+ request.ids.push(alarmIdArr[i]);
+ }
+ request.ackState=2;
+ getData.request = JSON.stringify(request);
+ var url = "";
+ if (vm.ruleType == 1) { //当前告警
+ url = "/api/umcfm/v1/curalarms";
+ $.ajax({
+ "type" : "PUT",
+ "contentType" : 'application/json; charset=utf-8',
+ "url" : url + "?request=" + JSON.stringify(request),
+ async : false,
+ success : function (msg) {
+ setTimeout(function () {
+ refreshByCond(tableId,divId);
+ }, 100);
+ },
+ error : function(msg){
+ setTimeout(function () {
+ refreshByCond(tableId,divId);
+ }, 100);
+ }
+ });
+ }
+
+
+
+}
+
+alarmsUtil.checkBox = function (obj) {
+
+ var alarmId = obj.aData.id;
+ var innerHtml = '<input type="checkbox" alarmId="' + alarmId + '"/> ';
+ return innerHtml;
+}
+
+//初始化告警码树
+alarmsUtil.initProbableCausesTree = function () {
+ //zTree设置
+ var setting = {
+ view : {
+ selectedMulti : false, //设置是否可以同时选中多个借点。
+ showIcon : true, //不显示图标
+ showLine : false, //是否显示节点之间的连线
+ },
+ data : {
+ simpleData : {
+ enable : true //如果设置为 true,请务必设置 setting.data.simpleData 内的其他参数: idKey / pIdKey / rootPId,并且让数据满足父子关系。
+ }
+ },
+ callback : {
+ onExpand : zTreeOnExpand, //每次节点展开后触发的事件。
+ onCollapse : zTreeOnCollapse,
+ //onClick: zTreeOnClick
+ }
+ };
+ var probableCausesNodes;
+
+ //获取告警码树数据
+ getProbableCausesTreeNodes("");
+ //创建告警码树
+ $.fn.zTree.init($("#probableCausesTree"), setting, probableCausesNodes);
+ //获取所有现有的tree节点
+ var treeObj = $.fn.zTree.getZTreeObj("probableCausesTree");
+ initDataAtTree();
+ function initDataAtTree(){
+ getAllNodesWithoutTypeEqual2("")
+ };
+
+ function getAllNodesWithoutTypeEqual2(parentId){
+ var treeNodes=treeObj.getNodesByParam("parentId", parentId, null);
+ for(var i=0;i<treeNodes.length;i++){
+ if(treeNodes[i].type===0){
+ getProbableCausesTreeNodes(treeNodes[i].id);
+ addNodesToTree(treeNodes[i],"probableCausesTree");
+ getAllNodesWithoutTypeEqual2(treeNodes[i].id);
+ }
+ }
+ }
+
+ function zTreeOnExpand(event, treeId, treeNode) {
+ var childrenNodes = treeNode.children;
+ if (!childrenNodes) { //当没有子节点的时候才加载,否则会重复加载。
+ getProbableCausesTreeNodes(treeNode.id);
+ addNodesToTree(treeNode,treeId);
+ }
+ };
+
+ function addNodesToTree(treeNode, treeId) {
+ var obj = $.fn.zTree.getZTreeObj(treeId);
+ var node=obj.getNodeByParam("id", treeNode.id, null)
+ obj.addNodes(node, probableCausesNodes);
+ };
+
+ function zTreeOnCollapse(event, treeId, treeNode) {};
+
+ //告警信息中的type为0、1是父节点,2为子节点
+ function isParentNode(type) {
+ if (type != 2)
+ return true;
+ else
+ return false;
+ };
+
+ function constructProblemCauseName(node){
+ if(node.type===0){
+ return node.desc;
+ }else{
+ return node.desc + "(" + node.value + ")";
+ }
+ }
+
+ function getProbableCausesTreeNodes(alarmCodeParentId) {
+ probableCausesNodes = new Array();
+ var getData = {};
+ var request = {};
+ request.parentId = alarmCodeParentId;
+ getData.request = JSON.stringify(request);
+ $.ajax({
+ async : false,
+ "dataType" : 'json',
+ "type" : "GET",
+ "url" : "/api/umcfm/v1/probablecausestree",
+ "data" : getData,
+ "contentType" : 'application/json; charset=utf-8',
+ "success" : function (res, textStatus, jqXHR) {
+ var nodes = res;
+ chkDisabled = false;
+ if (nodes) {
+ for (var i = 0; i < nodes.length; i++) {
+ probableCausesNodes.push({
+ id : nodes[i].id,
+ pId : nodes[i].parentId,
+ name : constructProblemCauseName(nodes[i]),
+ chkDisabled : false,
+ isParent : isParentNode(nodes[i].type),
+ parentId : alarmCodeParentId,//treenode节点
+ codeId : nodes[i].value,
+ type : nodes[i].type
+ });
+ }
+ }
+ },
+ "error" : function () {}
+ });
+ }
+}
+
+//初始化位置树
+alarmsUtil.initDeptTree = function () {
+ //zTree设置
+ var setting = {
+ view : {
+ selectedMulti : false, //设置是否可以同时选中多个借点。
+ showIcon : true, //不显示图标
+ showLine : false, //是否显示节点之间的连线
+ },
+ data : {
+ simpleData : {
+ enable : true //如果设置为 true,请务必设置 setting.data.simpleData 内的其他参数: idKey / pIdKey / rootPId,并且让数据满足父子关系。
+ }
+ },
+ callback : {
+ onExpand : zTreeOnExpand, //每次节点展开后触发的事件。
+ onCollapse : zTreeOnCollapse,
+ //onClick: zTreeOnClick
+ }
+ };
+ var zNodes = [];
+ initDeptTree();
+ function initDeptTree() {
+ zNodes.push({
+ id:"VDU",
+ name:"VDU",
+ isParent:true
+ },
+ {
+ id:"HOST",
+ name:"HOST",
+ isParent:true
+ });
+ $.fn.zTree.init($("#deptTree"), setting, zNodes);
+ zNodes=[];
+ }
+ function getDeptTreeNode(alarmCodeParentId) {
+ if(alarmCodeParentId === "VDU"){
+ url="/api/roc/v1/resource/vdus";
+ }else if(alarmCodeParentId === "HOST"){
+ url="/api/roc/v1/resource/hosts";
+ }
+ $.ajax({
+ async : false,
+ "dataType" : 'json',
+ "type" : "GET",
+ "url" : url,
+ "contentType" : 'application/json; charset=utf-8',
+ "success" : function (res, textStatus, jqXHR) {
+ var nodes = res.data;
+ if (nodes) {
+ for (var i = 0; i < nodes.length; i++) {
+ zNodes.push({
+ id : nodes[i].oid,
+ parentId : alarmCodeParentId,//treenode节点
+ name : nodes[i].name,
+ isParent : false,
+ oid:nodes[i].oid
+ });
+ }
+ }
+ },
+ "error" : function () {}
+ });
+ }
+ function zTreeOnExpand(event, treeId, treeNode) {
+ getDeptTreeNode(treeNode.id);
+ addNodesToTree(treeNode,treeId);
+ zNodes=[];
+ };
+ function addNodesToTree(treeNode, treeId) {
+ var obj = $.fn.zTree.getZTreeObj(treeId);
+ var node=obj.getNodeByParam("id", treeNode.id, null)
+ obj.addNodes(node, zNodes);
+ };
+ function zTreeOnCollapse(event, treeId, treeNode) {};
+}
+
+//初始化所有的树
+alarmsUtil.initTree = function () {
+ //初始化告警码树和告警位置树
+ alarmsUtil.initProbableCausesTree();
+ alarmsUtil.initDeptTree();
+
+ function initFormData(ruleType) {
+
+ $("#confirmAction").hide();
+ $("#filterType").hide();
+ $("#action").hide();
+ if (ruleType == "alarmFilter") {
+ $("#filterType").show();
+ } else if (ruleType == "ack") {
+ $("#confirmAction").show();
+ } else if (ruleType == "forward") {
+ $("#action").show();
+ }
+
+ }
+
+ function getNumbers(rule) {
+
+ for (var i = 0; i < textValues.length; i++) {
+ rule[textValues[i]] = $("input[name='" + textValues[i] + "']").val();
+ }
+
+ }
+
+ function getCheckboxs(rule) {
+
+ for (var i = 0; i < else_checkboxNames.length; i++) {
+ rule[else_checkboxNames[i]] = $("input[name='" + else_checkboxNames[i] + "']").parent().hasClass('checked');
+ }
+ for (var item in checkboxNames_pair_spinnerIds) {
+ rule[item] = $('#' + checkboxNames_pair_spinnerIds[item]).val();
+ }
+ }
+
+ function setCheckboxs(rule) {
+
+ for (var item in checkboxNames_pair_spinnerIds) {
+ var value = 0;
+ if (rule != "") {
+ value = rule[item];
+ }
+ $('#' + item).val(value);
+ setSpinnerIsEnable(item, value);
+ }
+ for (var i = 0; i < else_checkboxNames.length; i++) {
+ $("input[name='" + else_checkboxNames[i] + "']").parent().iCheck(rule[else_checkboxNames[i]] ? 'check' : 'uncheck');
+ }
+ }
+}
+
+alarmsUtil.moveNode = function (item) {
+ if (item.hasClass("ict-arrowRight")) {
+ alarmsUtil.rightNode(item);
+ } else if (item.hasClass("ict-arrowLeft")) {
+ alarmsUtil.leftNode(item);
+ } else {
+ alarmsUtil.removeAll(item);
+ }
+}
+
+/*树添加信息到右侧的功能*/
+
+alarmsUtil.rightNode = function (item) {
+
+ var selecedNodeIds = [];
+ var treeType = item.attr('treeType');
+ var obj = $.fn.zTree.getZTreeObj(treeType);
+ var treeNodes = obj.getSelectedNodes();
+ var $table;
+
+ if (treeType == "deptTree") {
+ var $tds = $("#selectedDeptTreeTable td");
+ $table = $("#selectedDeptTreeTable");
+ for (var i = 0; i < $tds.length; i++) {
+ selecedNodeIds.push($tds.eq(i).attr('nodeid'));
+ }
+ } else if (treeType == "probableCausesTree") {
+ var $tds = $("#selectedProbableCausesTreeTable td");
+ $table = $("#selectedProbableCausesTreeTable");
+ for (var i = 0; i < $tds.length; i++) {
+ var systemTypeAndProbableCause={};
+ systemTypeAndProbableCause.codeId=$tds.eq(i).attr('codeId');
+ systemTypeAndProbableCause.parentid=$tds.eq(i).attr('parentid');
+ systemTypeAndProbableCause.type=$tds.eq(i).attr('type');
+ selecedNodeIds.push(systemTypeAndProbableCause);
+ }
+ }
+
+ //树上被选中的元素
+ for (var i = 0; i < treeNodes.length; i++) {
+
+ var htmlStr = "";
+ var text = treeNodes[i].name;
+ var id = treeNodes[i].id;
+ var codeId = treeNodes[i].codeId;
+ var type;
+ var parentId;
+ if (treeType == "deptTree") {
+ var oid = treeNodes[i].oid;
+ htmlStr = "<tr><td nodeId=" + id + " oid=" + oid + " >" + text + "</td></tr>";
+ } else if (treeType == "probableCausesTree") {
+
+ parentId = treeNodes[i].parentId;
+ type = treeNodes[i].type;
+ htmlStr = "<tr><td codeId=" + codeId + " parentId=" + parentId + " type=" + type + " >" + text + "</td></tr>";
+ }
+
+ if(treeType == "probableCausesTree"){
+ if(treeNodes[i].type === 2){
+ for(i=0;i<selecedNodeIds.length;i++){
+ if(selecedNodeIds[i].codeId === codeId || selecedNodeIds[i].codeId === parentId){
+ bootbox.alert("此节点(子树)或其父子树已经被添加!", function () {});
+ return;
+ }
+ }
+ }else if(treeNodes[i].type === 1){
+ $('#selectedProbableCausesTreeTable [parentid='+codeId+']').remove();
+ for(i=0;i<selecedNodeIds.length;i++){
+ if(selecedNodeIds[i].codeId === codeId ){
+ bootbox.alert("此节点(子树)或其父子树已经被添加!", function () {});
+ return;
+ }
+ }
+ }else if(treeNodes[i].type === 0){
+ bootbox.alert("不支持添加MOC", function () {});
+ break;
+ }
+ }
+
+ $table.append(htmlStr);
+
+ }
+
+ $('#selectedDeptTreeTable td').on("click", function () {
+
+ //获得所有选择的td
+ var $tds = $('#selectedDeptTree td');
+ //遍历改变样式
+ for (var i = 0; i < $tds.length; i++) {
+ $tds.eq(i).removeClass('tallCellSelected');
+ $tds.eq(i).parent().removeClass('checked');
+ }
+ //当前td设为选中
+ $(this).addClass('tallCellSelected');
+ $(this).parent().addClass("checked"); //tr 添加一个 checked 样式。
+ });
+
+ $('#selectedProbableCausesTreeTable td').on("click", function () {
+
+ //获得所有选择的td
+ var $tds = $('#selectedProbableCausesTreeTable td');
+ //遍历改变样式
+ for (var i = 0; i < $tds.length; i++) {
+ $tds.eq(i).removeClass('tallCellSelected');
+ $tds.eq(i).parent().removeClass('checked');
+ }
+ //当前td设为选中
+ $(this).addClass('tallCellSelected');
+ $(this).parent().addClass("checked"); //tr 添加一个 checked 样式。
+ });
+
+}
+
+
+
+alarmsUtil.leftNode = function (item) {
+
+ var treeType = item.attr('treeType');
+ if (treeType == "deptTree") {
+ $('#selectedDeptTreeTable').children().children(".checked").remove();
+ } else if (treeType == "probableCausesTree") {
+ $('#selectedProbableCausesTreeTable').children().children(".checked").remove();
+ }
+
+}
+
+alarmsUtil.removeAll = function (item) {
+
+ var treeType = item.attr('treeType');
+ if (treeType == "deptTree") { //如果是资源树
+ $('#selectedDeptTreeTable').children().remove();
+ } else if (treeType == "probableCausesTree") {
+ $('#selectedProbableCausesTreeTable').children().remove();
+ }
+}
+
+
+
+
+
+//调用datarangepicker组件 datarange 初始化
+
+alarmsUtil.setDateRange = function (dataRangeId, vm) {
+
+ var open = 'right';
+ var optionSet1 = {
+ startDate : "2015-08-02",
+ endDate : "2015-08-03",
+ format : 'YYYY-MM-DD h:mm A',
+ dateLimit : {
+ days : 180
+ },
+ showWeekNumbers : false,
+ timePicker : true,
+ timePickerIncrement : 5,
+ opens : open,
+ separator : ' - ',
+ locale : {
+ applyLabel : $.i18n.prop('ngict_fm_iui_curalarm_ok'),
+ cancelLabel : $.i18n.prop('ngict_fm_iui_curalarm_cancel'),
+ fromLabel : $.i18n.prop('ngict_fm_iui_curalarm_from'),
+ toLabel : $.i18n.prop('ngict_fm_iui_curalarm_to'),
+ daysOfWeek : [
+ $.i18n.prop('ngict_fm_iui_curalarm_Sun'),
+ $.i18n.prop('ngict_fm_iui_curalarm_Mon'),
+ $.i18n.prop('ngict_fm_iui_curalarm_Tues'),
+ $.i18n.prop('ngict_fm_iui_curalarm_Wed'),
+ $.i18n.prop('ngict_fm_iui_curalarm_Thurs'),
+ $.i18n.prop('ngict_fm_iui_curalarm_Fri'),
+ $.i18n.prop('ngict_fm_iui_curalarm_Sat')
+ ],
+ monthNames : [$.i18n.prop('ngict_fm_iui_curalarm_January'), $.i18n.prop('ngict_fm_iui_curalarm_February'), $.i18n.prop('ngict_fm_iui_curalarm_March'), $.i18n.prop('ngict_fm_iui_curalarm_April'), $.i18n.prop('ngict_fm_iui_curalarm_May'), $.i18n.prop('ngict_fm_iui_curalarm_June'), $.i18n.prop('ngict_fm_iui_curalarm_July'), $.i18n.prop('ngict_fm_iui_curalarm_August'), $.i18n.prop('ngict_fm_iui_curalarm_September'), $.i18n.prop('ngict_fm_iui_curalarm_October'), $.i18n.prop('ngict_fm_iui_curalarm_November'), $.i18n.prop('ngict_fm_iui_curalarm_December')],
+ firstDay : 1
+ }
+ };
+
+ //datarangepicker确认
+ $('input[id="' + dataRangeId + '"]').bind('apply.daterangepicker', function () {
+ //获取时间范围,查询
+ // 都设置为0点
+ setTime($(this));
+ // 更新tooltip内容
+ $(this).attr("data-original-title", $(this).val());
+ });
+
+ $('input[id="' + dataRangeId + '"]').daterangepicker(optionSet1);
+
+};
+
+//关闭打开datarangepicker选择器
+alarmsUtil.dateRangeEnableDisable = function (customDateRangeId) {
+
+ $('#' + customDateRangeId).on('ifChecked', function () {
+
+ if (customDateRangeId == "customAckTime") {
+ vm.dataRangeLocationDisabled = false;
+ if(vm.fmConds.ackTimeStarTime!=null && vm.fmConds.ackTimeEndTime!=null){
+ vm.fmConds.ackTimeMode=0;
+ }
+ } else if (customDateRangeId == "customRaisedTime") {
+ vm.dataRangeTypeDisabled = false;
+ if(vm.fmConds.alarmRaisedStartTime!=null && vm.fmConds.alarmRaisedEndTime!=null){
+ vm.fmConds.alarmRaisedTimeMode=0;
+ }
+ } else if (customDateRangeId == "customClearTime"){
+ vm.dataRangeCodeDisabled = false;
+ if(vm.fmConds.clearedTimeStartTime!=null && vm.fmConds.clearedTimeEndTime!=null){
+ vm.fmConds.clearedTimeMode=0;
+ }
+ }
+ });
+ //setTime($('#' + dataRangeId));
+
+ $('#' + customDateRangeId).on('ifUnchecked', function () {
+
+ if (customDateRangeId == "customAckTime") {
+
+ vm.dataRangeLocationDisabled = true;
+ vm.fmConds.ackTimeMode=null;
+
+ } else if (customDateRangeId == "customRaisedTime") {
+
+ vm.dataRangeTypeDisabled = true;
+ vm.fmConds.alarmRaisedTimeMode=null;
+
+ } else if (customDateRangeId == "customClearTime"){
+
+ vm.dataRangeCodeDisabled = true;
+ vm.fmConds.clearedTimeMode=null;
+
+ }
+ });
+
+}
+
+//checkbox时间选择
+alarmsUtil.dateRangeCustom = function (vm) {
+
+ $("input[name=timeConfirm]").on("ifClicked", function () {
+ if ($(this).parent().hasClass("checked")) {
+ $(this).iCheck('uncheck');
+ }
+ });
+
+ $("input[name=timeOccur]").on("ifClicked", function () {
+ if ($(this).parent().hasClass("checked")) {
+ $(this).iCheck('uncheck');
+ }
+ });
+
+ $("input[name=timeClear]").on("ifClicked", function () {
+ if ($(this).parent().hasClass("checked")) {
+ $(this).iCheck('uncheck');
+ }
+ });
+
+ $("input[cond_id=time]").on('ifChecked', function () {
+
+ var nowTime = (new Date()).toLocaleDateString();
+ var condDate = $(this).attr("cond_value");
+
+ if ($(this).attr("name") == "timeConfirm") {
+ if (condDate == "1") {
+ vm.fmConds.ackRelativeTime = 1 * 24 * 60 * 60 * 1000;
+ vm.fmConds.ackTimeMode = 1;
+ } else if (condDate == "2") {
+ vm.fmConds.ackRelativeTime = 2 * 24 * 60 * 60 * 1000;
+ vm.fmConds.ackTimeMode = 1;
+ } else if (condDate == "7") {
+ vm.fmConds.ackRelativeTime = 7 * 24 * 60 * 60 * 1000;
+ vm.fmConds.ackTimeMode = 1;
+ }
+ }
+
+ if ($(this).attr("name") == "timeOccur") {
+ if (condDate == "1") {
+ vm.fmConds.alarmRaisedRelativeTime = 1 * 24 * 60 * 60 * 1000;
+ vm.fmConds.alarmRaisedTimeMode = 1;
+ } else if (condDate == "2") {
+ vm.fmConds.alarmRaisedRelativeTime = 2 * 24 * 60 * 60 * 1000;
+ vm.fmConds.alarmRaisedTimeMode = 1;
+ } else if (condDate == "7") {
+ vm.fmConds.alarmRaisedRelativeTime = 7 * 24 * 60 * 60 * 1000;
+ vm.fmConds.alarmRaisedTimeMode = 1;
+ }
+ }
+
+ if ($(this).attr("name") == "timeClear") {
+ if (condDate == "1") {
+ vm.fmConds.clearedTimeRelativeTime =1 * 24 * 60 * 60 * 1000;
+ vm.fmConds.clearedTimeMode = 1;
+ } else if (condDate == "2") {
+ vm.fmConds.clearedTimeRelativeTime =2 * 24 * 60 * 60 * 1000;
+ vm.fmConds.clearedTimeMode = 1;
+ } else if (condDate == "7") {
+ vm.fmConds.clearedTimeRelativeTime =7 * 24 * 60 * 60 * 1000;
+ vm.fmConds.clearedTimeMode = 1;
+ }
+ }
+
+ //refreshByCond();
+ });
+
+ $("input[cond_id=time]").on('ifUnchecked', function () {
+ if ($(this).attr("name") == "timeConfirm") {
+ vm.fmConds.ackRelativeTime = null;
+ vm.fmConds.ackTimeMode = null;
+ }else if ($(this).attr("name") == "timeOccur") {
+ vm.fmConds.alarmRaisedRelativeTime = null;
+ vm.fmConds.alarmRaisedTimeMode = null;
+ }else if ($(this).attr("name") == "timeClear") {
+ vm.fmConds.clearedTimeRelativeTime = null;
+ vm.fmConds.clearedTimeMode = null;
+ }
+ });
+
+}
+
+
+/*格式化日期*/
+Date.prototype.format = function (format) {
+
+ /*
+
+ * format="yyyy-MM-dd hh:mm:ss";
+
+ */
+ var o = {
+ "M+" : this.getMonth() + 1,
+ "d+" : this.getDate(),
+ "h+" : this.getHours(),
+ "m+" : this.getMinutes(),
+ "s+" : this.getSeconds(),
+ "q+" : Math.floor((this.getMonth() + 3) / 3),
+ "S" : this.getMilliseconds()
+ }
+ if (/(y+)/.test(format)) {
+ format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4
+ - RegExp.$1.length));
+ }
+ for (var k in o) {
+ if (new RegExp("(" + k + ")").test(format)) {
+ format = format.replace(RegExp.$1, RegExp.$1.length == 1
+ ? o[k]
+ : ("00" + o[k]).substr(("" + o[k]).length));
+ }
+ }
+ return format;
+
+}
+
+//daterangepicker设置时间
+function setTime($obj) {
+
+ var title = $obj.attr('dtitle');
+ var arr = $obj.val().split(' - ');
+ //排除日历组件空字符串的情况。
+ if (arr[0] != '') {
+ var starTime = new Date(arr[0].replace(/-/g, "/")).getTime();
+ var endTime = new Date(arr[1].replace(/-/g, "/")).getTime();
+ if (title == "ackTime") {
+ vm.fmConds.ackTimeStarTime = starTime;
+ vm.fmConds.ackTimeEndTime = endTime;
+ vm.fmConds.ackTimeMode=0;
+ } else if (title == "raisedTime") {
+ vm.fmConds.alarmRaisedStartTime = starTime;
+ vm.fmConds.alarmRaisedEndTime = endTime;
+ vm.fmConds.alarmRaisedTimeMode=0;
+ } else if (title == "clearTime") {
+ vm.fmConds.clearedTimeStartTime = starTime;
+ vm.fmConds.clearedTimeEndTime = endTime;
+ vm.fmConds.clearedTimeMode=0;
+ }
+ }
+}
+
+/*
+@param type 1 day 2 week 3 month 4 year
+ */
+function reduceDate(date, val, type) {
+
+ var d = new Date(date);
+ if (type == 'day') {
+ d.setDate(d.getDate() - val);
+ } else if (type == 'week') {
+ d.setDate(d.getDate() - val * 7);
+ } else if (type == 'month') {
+ d.setMonth(d.getMonth() - val);
+ } else if (type == 'year') {
+ d.setFullYear(d.getFullYear() - val);
+ }
+ var month = d.getMonth() + 1;
+ var day = d.getDate();
+ if (month < 10) {
+ month = "0" + month;
+ }
+ if (day < 10) {
+ day = "0" + day;
+ }
+ var val = d.getFullYear() + "-" + month + "-" + day;
+ return val;
+}
+
+alarmsUtil.condSave = function (cond, saveUrl, name) {
+
+ var conds = [];
+ if (cond.severity != null && cond.severity != "undefined" && cond.severity.length > 0) {
+ var severity = '{ "type": "Severity", "data": [{"severity": "' + cond.severity + '"}]}'; //级别
+ var severityObj = window.JSON.parse(severity)
+ conds.push(severityObj);
+ }
+ if (cond.ackState != null && cond.ackState != "undefined") {
+ var ackState = '{ "type": "AckState", "data": [{"ackState": "' + cond.ackState + '"}]}'; //级别
+ var ackStateObj = window.JSON.parse(ackState)
+ conds.push(ackStateObj);
+ }
+ if (cond.filterState != null && cond.filterState != "undefined") {
+ var filterState = '{ "type": "FilterState", "data": [{"filterState": "' + cond.filterState + '"}]}'; //级别
+ var filterStateObj = window.JSON.parse(filterState)
+ conds.push(filterStateObj);
+ }
+
+ if (cond.ackTimeStarTime != null && cond.ackTimeStarTime != "undefined") {
+ var ackTime = '{ "type": "AckTime", "data": [{"mode":"0","start":"' + cond.ackTimeStarTime + '","end":"' + cond.ackTimeEndTime + '" }]}'; //级别
+ var ackTimeObj = window.JSON.parse(ackTime)
+ conds.push(ackTimeObj);
+ }
+ if (cond.alarmRaisedStartTime != null && cond.alarmRaisedStartTime != "undefined") {
+ var alarmRaisedTime = '{ "type": "RaisedTime", "data": [{"mode":"0","start":"' + cond.alarmRaisedStartTime + '","end":"' + cond.alarmRaisedEndTime + '" }]}'; //级别
+ var alarmRaisedTimeObj = window.JSON.parse(alarmRaisedTime)
+ conds.push(alarmRaisedTimeObj);
+ }
+
+ if (cond.clearedTimeStarTime != null && cond.clearedTimeStarTime != "undefined") {
+ var clearedTime = '{ "type": "ClearedTime", "data": [{"mode":"0","start":"' + cond.clearedTimeStarTime + '","end":"' + cond.clearedTimeEndime + '" }]}'; //级别
+ var severityObj = window.JSON.parse(clearedTime)
+ conds.push(severityObj);
+ }
+ var resJsonObj = AlarmConds.parseActiveConds2JSon(conds);
+ resJsonObj.rule.name = name;
+ resJsonObj.rule.ruleType = vm.ruleType;
+ var resStr = window.JSON.stringify(resJsonObj);
+ var dataSource = "isc_AosRestDataSource_1";
+ var operationType = "add";
+ var data1 = {
+ dataSource : dataSource,
+ operationType : operationType,
+ data : resJsonObj,
+ oldValues : null
+ };
+ $.ajax({
+ dataType : "json",
+ type : "POST",
+ contentType : 'application/json; charset=utf-8',
+ url : saveUrl,
+ data : JSON.stringify(data1),
+ async : false,
+ success : function (msg) {
+ $('#saveModalCancle').trigger("click");
+ }
+ });
+
+}
+
+Array.prototype.contains = function (item) {
+ return RegExp("(^|,)" + item.toString() + "($|,)").test(this);
+};
+
+/*
+@param alarmsType 1当前告警 2历史告警
+@param condRuleId 查询条件的RuleId
+ */
+alarmsUtil.queryByParma = function (alarmsType, condRuleId) {
+
+ //1.判断是当前告警还是历史告警。
+
+ var sourceUrl;
+ if (alarmsType == 1) { //当前告警
+ sourceUrl = '/web/rest/web/fm/curqueryview?' + 'data={"ruleType":1,"ruleSort":1}&isc_flag=smartClient&_operationType=fetch&_startRow=0&_endRow=75&_textMatchStyle=exact&_componentId=condList&_dataSource=isc_RestDataSource_7&isc_metaDataPrefix=_&isc_dataFormat=json';
+ vm.ruleType = 1;
+ vm.$queryAlarmsInfoUrl = "/ngict/rest/fm/curalarms";
+ vm.curalarmsType = "curalarms";
+ vm.showClear = true; //清除按钮
+
+ } else if(alarmsType == 2){ //历史告警
+
+ sourceUrl = '/web/rest/web/fm/curqueryview?' + 'data={"ruleType":2,"ruleSort":1}&isc_flag=smartClient&_operationType=fetch&_startRow=0&_endRow=75&_textMatchStyle=exact&_componentId=condList&_dataSource=isc_RestDataSource_7&isc_metaDataPrefix=_&isc_dataFormat=json';
+ vm.ruleType = 2;
+ vm.$queryAlarmsInfoUrl = "/ngict/rest/fm/hisalarms";
+ vm.hisalarmsType = "hisalarms";
+ vm.showClear = false; //清除按钮
+ }else if(alarmsType == 3){ //通知
+ sourceUrl = '/web/rest/web/fm/curqueryview?' + 'data={"ruleType":2,"ruleSort":1}&isc_flag=smartClient&_operationType=fetch&_startRow=0&_endRow=75&_textMatchStyle=exact&_componentId=condList&_dataSource=isc_RestDataSource_7&isc_metaDataPrefix=_&isc_dataFormat=json';
+ vm.ruleType = 3;
+ vm.$queryAlarmsInfoUrl = "/ngict/rest/fm/notify";
+ vm.notificationType = "notification";
+ vm.showClear = false; //清除按钮
+ }
+
+ //如果没传condRuleId 直接返回
+ if (condRuleId == null || condRuleId == "undefined") {
+ return;
+ }
+
+ //2.取出告警规则的数据。
+
+ $.ajax({
+ type : "get",
+ data : null,
+ url : sourceUrl,
+ async : false,
+ success : function (msg) {
+ //1.遍历返回的条件数组确定是哪一个rule规则。
+ var ruleCondArr = msg.response.data;
+ var xmlData = "";
+ for (var i = 0; i < ruleCondArr.length; i++) {
+ if (ruleCondArr[i].ruleId == condRuleId) { //condRuleId
+ xmlData = "<xml>" + ruleCondArr[i].ruleData + "</xml>" //在jQuery裡,如果要直接将字串转成XML物件,记得前后方要加上<xml>及</xml>,才会被当成XML处理;
+ break;
+ }
+ };
+
+ //3.解析数据的xml联动页面的组件。
+ $(xmlData).find("CompoundCond").each(function () {
+ //1.级别
+ for (var i = 0; i < vm.severityTypes.length; i++) {
+ vm.severityTypes[i].value = false;
+ }
+ if ($(this).find("PerceivedSeverity").attr('value') != null && $(this).find("PerceivedSeverity ").attr('value') != 'undefined') {
+ var perceivedSeverityArr = $(this).find("PerceivedSeverity ").attr('value').split(',');
+ for (var i = 0; i < perceivedSeverityArr.length; i++) {
+ if (perceivedSeverityArr.contains(vm.severityTypes[i].id)) {
+ vm.severityTypes[i].value = true;
+ }
+ };
+ }
+
+ //2.确认状态
+ for (var i = 0; i < vm.ackStateTypes.length; i++) {
+ vm.ackStateTypes[i].value = false;
+ };
+ var ackStateV = $(this).find("AckState").attr('value');
+ if (ackStateV != null && ackStateV != "undefined") {
+ var ackStateArr = ackStateV.split(',');
+ for (var i = 0; i < vm.ackStateTypes.length; i++) {
+ if (ackStateArr.contains(vm.ackStateTypes[i].id)) {
+ vm.ackStateTypes[i].value = true;
+ }
+ };
+ }
+
+ //3.可见性
+ if(vm.ruleType === 1){
+ for (var i = 0; i < vm.filterStateTypes.length; i++) {
+ vm.filterStateTypes[i].value = false;
+ };
+ var filterStateV = $(this).find("FilterState").attr('value')
+ if (filterStateV != null && filterStateV != "undefined") {
+ var filterStateArr = filterStateV.split(',');
+ for (var i = 0; i < vm.filterStateTypes.length; i++) {
+ if (filterStateArr.contains(vm.filterStateTypes[i].id)) {
+ vm.filterStateTypes[i].value = true;
+ }
+ };
+ }
+ }
+ //4.确认时间
+
+ var dataRangeAck = $('input[dtitle="ackTime"]'); //日历组件
+ vm.fmConds.ackTimeStarTime = null;
+ vm.fmConds.ackTimeEndTime = null;
+ dataRangeAck.val('');
+ var ackTimeStartMs = $(this).find("AckTime").attr('start');
+ var ackTimeEndMs = $(this).find("AckTime").attr('end');
+ if (ackTimeStartMs != null && ackTimeStartMs != "undefined" && ackTimeEndMs != null && ackTimeEndMs != "undefined") {
+ vm.fmConds.ackTimeStarTime = ackTimeStartMs; //确认时间
+ vm.fmConds.ackTimeEndTime = ackTimeEndMs;
+ var ackTimeStarTime = new Date(parseInt(ackTimeStartMs)).format('yyyy-MM-dd');
+ var ackTimeEndTime = new Date(parseInt(ackTimeEndMs)).format('yyyy-MM-dd');
+ dataRangeAck.val(ackTimeStarTime + ' - ' + ackTimeEndTime);
+ }
+
+ //5.发生时间
+ vm.fmConds.alarmRaisedStartTime = null;
+ vm.fmConds.alarmRaisedEndTime = null;
+ var dataRangeRaised = $('input[dtitle="raisedTime"]'); //日历组件
+ dataRangeRaised.val('');
+ var raisedTimeStartMs = $(this).find("RaisedTime").attr('start');
+ var raisedTimeEndMs = $(this).find("RaisedTime").attr('end');
+ if (raisedTimeStartMs != null && raisedTimeStartMs != "undefined" && raisedTimeEndMs != null && raisedTimeEndMs != "undefined") {
+ vm.fmConds.alarmRaisedStartTime = raisedTimeStartMs; //发生时间
+ vm.fmConds.alarmRaisedEndTime = raisedTimeEndMs;
+ var raisedTimeStart = new Date(parseInt(raisedTimeStartMs)).format('yyyy-MM-dd');
+ var raisedTimeEnd = new Date(parseInt(raisedTimeEndMs)).format('yyyy-MM-dd');
+ dataRangeRaised.val(raisedTimeStart + ' - ' + raisedTimeEnd);
+ }
+
+ //6.清除时间
+
+
+ //7.告警码
+
+ vm.fmConds.probableCause = null;
+ var probableCauseArr = $(this).find("ProbableCause").attr('value');
+ if (probableCauseArr != null && probableCauseArr != "undefined") {
+ for (var i = 0; i < probableCauseArr.length; i++) {
+ vm.fmConds.probableCause = probableCauseArr;
+ // 联动
+ };
+ }
+
+ //8.告警位置
+ vm.fmConds.probableCause = null;
+ var newPositionCondArr = $(this).find("NewPositionCond").attr('value');
+ if (newPositionCondArr != null && newPositionCondArr != "undefined")
+ for (var i = 0; i < newPositionCondArr.length; i++) {
+ // 联动
+ };
+
+ //9.告警类型
+ vm.fmConds.alarmType = null;
+ var alarmTypeArr = $(this).find("AlarmType").attr('value');
+ if (alarmTypeArr != null && alarmTypeArr != "undefined") {
+ for (var i = 0; i < alarmTypeArr.length; i++) {
+ vm.fmConds.alarmType = alarmTypeArr;
+ };
+ }
+ });
+ }
+ });
+}
+
+
+/*
+ 获取系统类型中的告警码数量
+*/
+alarmsUtil.getProbableCauseCountBySystemType=function(systemType){
+
+ //"/ngict/rest/fm/probableCause?request={"systemTypes":[6,12]}"
+ var getData={};
+ var request={};
+ request.systemTypes=systemType;
+ getData.request = JSON.stringify(request);
+ $.ajax({
+ type : "get",
+ data : getData,
+ url : "/ngict/rest/fm/probableCause",
+ async : true,
+ success : function (msg) {
+ vm.alarmCodeSelectedCount+=msg.length;
+ }});
+} \ No newline at end of file
diff --git a/openo-portal/portal-performance/src/main/webapp/performance/js/commonUtil.js b/openo-portal/portal-performance/src/main/webapp/performance/js/commonUtil.js
new file mode 100644
index 00000000..be44cc7b
--- /dev/null
+++ b/openo-portal/portal-performance/src/main/webapp/performance/js/commonUtil.js
@@ -0,0 +1,60 @@
+var commonUtil = {};
+
+commonUtil.sendSynRequest = function(url){
+ var response;
+ $.ajax({
+ "type": 'get',
+ "url": url,
+ "dataType": "json",
+ "async": false,
+ success: function (resp) {
+ response = resp;
+ return response;
+ },
+ error: function(XMLHttpRequest, textStatus, errorThrown){
+ }
+ });
+};
+
+commonUtil.strToJson = function(str){
+ var json = eval('(' + str + ')');
+ return json;
+};
+
+commonUtil.arrayRemove = function(aryInstance, index){
+ if (aryInstance == undefined || aryInstance == null) {
+ return;
+ }
+ for (var i = 0, n = 0; i < aryInstance.length; i++) {
+ if (aryInstance[i] != aryInstance[dx]) {
+ aryInstance[n++] = aryInstance[i];
+ }
+ }
+ aryInstance.length -= 1;
+};
+
+// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
+// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
+commonUtil.parseDate = function(dateObj, format){
+ var o = {
+ "M+": dateObj.getMonth() + 1,
+ "d+": dateObj.getDate(),
+ "h+": dateObj.getHours(),
+ "m+": dateObj.getMinutes(),
+ "s+": dateObj.getSeconds(),
+ "q+": Math.floor((dateObj.getMonth() + 3) / 3),
+ "S": dateObj.getMilliseconds()
+ }
+ if (/(y+)/.test(format)) format = format.replace(RegExp.$1,
+ (dateObj.getFullYear() + "").substr(4 - RegExp.$1.length));
+ for (var k in o)
+ if (new RegExp("(" + k + ")").test(format))
+ format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] :
+ ("00" + o[k]).substr(("" + o[k]).length));
+ return format;
+};
+
+commonUtil.strToJson = function(str){
+ var json = eval('(' + str + ')');
+ return json;
+};
diff --git a/openo-portal/portal-performance/src/main/webapp/performance/js/curAlarmsController.js b/openo-portal/portal-performance/src/main/webapp/performance/js/curAlarmsController.js
new file mode 100644
index 00000000..1228d876
--- /dev/null
+++ b/openo-portal/portal-performance/src/main/webapp/performance/js/curAlarmsController.js
@@ -0,0 +1,430 @@
+var refreshByCond;
+var lang = 'en-US';
+
+avalon.config({
+ interpolate: ["<!--", "-->"]
+})
+
+refreshByCond = function(){
+ vm.$initTable();
+};
+
+var vm = avalon.define({
+ $id: "curAlarmsController",
+ logType: 'secLog',
+ severity: '',
+ ackState: '',
+ filterState: '',
+ ruleType: 1,
+ curalarmsType: 'curalarms',
+ moreCondBtn: false,
+ showClear: true,
+ dataRangeLocationDisabled:true,
+ dataRangeTypeDisabled:true,
+ dataRangeCodeDisabled:true,
+ alCodeTree_affirm:false,
+ alLocationTree_affirm:false,
+ alarmCodeSelectedCount: 0,
+ alarmLocationSelectedCount: 0,
+ alarmTypeSelectedCount: 0,
+ tempHide:false,
+ treeIcons: [
+ "ict-arrowRight",
+ "ict-arrowLeft",
+ "ict-selectLeft"
+ ],
+
+ severityTypes: [
+ {id: '1', name: $.i18n.prop("ngict_fm_iui_curalarm_critical"), value: true, type: "severityTypes", class: "alarm-serious"},
+ {id: '2', name: $.i18n.prop("ngict_fm_iui_curalarm_major"), value: true, type: "severityTypes", class: "alarm-important"},
+ {id: '3', name: $.i18n.prop("ngict_fm_iui_curalarm_minor"), value: true, type: "severityTypes", class: "alarm-secondary"},
+ {id: '4', name: $.i18n.prop("ngict_fm_iui_curalarm_warning"), value: true, type: "severityTypes", class: "alarm-slightly"}
+ ],
+
+ ackStateTypes: [
+ {id: '1', name: $.i18n.prop("ngict_fm_iui_curalarm_ackAlarm"), value: false, type: "ackStateTypes"},
+ {id: '2', name: $.i18n.prop("ngict_fm_iui_curalarm_unackAlarm"), value: true, type: "ackStateTypes"}
+ ],
+
+ filterStateTypes: [
+ {id: '1', name: $.i18n.prop("ngict_fm_iui_curalarm_visible"), value: true, type: "filterStateTypes"},
+ {id: '0', name: $.i18n.prop("ngict_fm_iui_curalarm_invisible"), value: false, type: "filterStateTypes"}
+ ],
+
+ alTypes:[
+ "Communications Alarm",
+ "Processing Error Alarm",
+ "Quality of Service Alarm",
+ "Equipment Alarm",
+ "Environmental Alarm",
+ "OMC Alarm",
+ "Integrity Violation",
+ "Operational Violation",
+ "Physical Violation",
+ "Security Violation",
+ "Time Domain Violation"
+ ],
+
+ $alarmsTableFields: {
+ curalarms: [
+ {"mData": null,name: "<input id='dataTableCheckBox' type='checkBox'/>","sClass": 'details-check',"sWidth": '5%',"fnRender": alarmsUtil.checkBox},
+ {"mData": "order", name: $.i18n.prop("ngict_fm_iui_curalarm_order"),"sClass": 'details-control', "sWidth": '6%'},
+ {"mData": "id", sWidth : "10%",name: $.i18n.prop("ngict_fm_iui_curalarm_id"),"bVisible": true},
+ {"mData": "position1DisplayName", sWidth : "10%",name:$.i18n.prop("ngict_fm_iui_curalarm_ne")},
+ {"mData": "mocName",sWidth : "14%", name: $.i18n.prop("ngict_fm_iui_curalarm_moc")},
+ {"mData": "probableCauseCodeNameAndCode", sWidth : "14%",name: $.i18n.prop("ngict_fm_iui_curalarm_probableCauseCode")},
+ {"mData": "alarmRaisedTime", sWidth : "15%",name: $.i18n.prop("ngict_fm_iui_curalarm_alarmRaisedTime"),"fnRender": alarmsUtil.timeRender},
+ {"mData": "perceivedSeverity",sWidth : "10%", name: $.i18n.prop("ngict_fm_iui_curalarm_perceivedSeverity"),fnRender:alarmsUtil.Severity},
+ {"mData": "alarmType",sWidth : "10%", name: $.i18n.prop("ngict_fm_iui_curalarm_alarmType"),"bVisible": false},
+ {"mData": "ackState",sClass:"ackState",sWidth : "10%", name: $.i18n.prop("ngict_fm_iui_curalarm_ackState"),"fnRender":alarmsUtil.ackState},
+ {"mData": "ackTime", sWidth : "13%",name: $.i18n.prop("ngict_fm_iui_curalarm_ackTime"),"fnRender": alarmsUtil.timeRender,"bVisible": false},
+ {"mData": "position1", name: $.i18n.prop("ngict_fm_iui_curalarm_position1"),"bVisible": false},
+ {"mData": "alarmChangedTime", name: $.i18n.prop("ngict_fm_iui_curalarm_alarmChangedTime"),"bVisible": false,"fnRender": alarmsUtil.timeRender},
+ {"mData": "ackUserId", name: $.i18n.prop("ngict_fm_iui_curalarm_ackUserId"),"bVisible": false},
+ {"mData": "ackSystemId", name: $.i18n.prop("ngict_fm_iui_curalarm_ackSystemId"),"bVisible": false},
+ {"mData": "alarmClearedTime", name: $.i18n.prop("ngict_fm_iui_curalarm_alarmClearedTime"),"bVisible": false,"fnRender": alarmsUtil.timeRender},
+ {"mData": "additionalText", name: $.i18n.prop("ngict_fm_iui_curalarm_additionalText"),"bVisible": false},
+ {"mData": "ackSystemId", name: $.i18n.prop("ngict_fm_iui_curalarm_ackSystem"),"bVisible": false},
+ {"mData": "clearUserId", name: $.i18n.prop("ngict_fm_iui_curalarm_clearUserId"),"bVisible": false},
+ {"mData": "clearSystemId", name: $.i18n.prop("ngict_fm_iui_curalarm_clearSystemId"),"bVisible": false},
+ {"mData": "clearType", name: $.i18n.prop("ngict_fm_iui_curalarm_clearType"),"bVisible": false},
+ {"mData": "probableCauseCode", name: $.i18n.prop("ngict_fm_iui_curalarm_probableCauseCode"),"bVisible": false},
+ {"mData": "specificProblem", name: $.i18n.prop("ngict_fm_iui_curalarm_specificProblem"),"bVisible": false},
+ {"mData": "neIp", name: $.i18n.prop("ngict_fm_iui_curalarm_neIp"),"bVisible": false},
+ {"mData": "pathIds", name: $.i18n.prop("ngict_fm_iui_curalarm_pathIds"),"bVisible": false},
+ {"mData": "pathName", name: $.i18n.prop("ngict_fm_iui_curalarm_pathName"),"bVisible": false}
+ ],
+ },
+
+ $language: {
+ "sProcessing": "<img src='../common/thirdparty/data-tables/images/loading-spinner-grey.gif'/><span>&nbsp;&nbsp;处理中...</span>",
+ "sLengthMenu": $.i18n.prop("ngict-fm-iui-table-sLengthMenu"),
+ "sZeroRecords": $.i18n.prop("ngict-fm-iui-table-sZeroRecords"),
+ "sInfo": "<span class='seperator'></span>" + $.i18n.prop("ngict-fm-iui-table-sInfo"),
+ "sInfoEmpty": $.i18n.prop("ngict-fm-iui-table-sInfoEmpty"),
+ "sGroupActions": $.i18n.prop("ngict-fm-iui-table-sGroupActions"),
+ "sAjaxRequestGeneralError": $.i18n.prop("ngict-fm-iui-table-sAjaxRequestGeneralError"),
+ "sEmptyTable": $.i18n.prop("ngict-fm-iui-table-sEmptyTable"),
+ "oPaginate": {
+ "sPrevious": $.i18n.prop("ngict-fm-iui-table-sPrevious"),
+ "sNext": $.i18n.prop("ngict-fm-iui-table-sNext"),
+ "sPage": $.i18n.prop("ngict-fm-iui-table-sPage"),
+ "sPageOf": $.i18n.prop("ngict-fm-iui-table-sPageOf")
+ }
+ },
+
+ $queryAlarmsInfoUrl: '/api/umcfm/v1/curalarms',
+ $saveCondUrl: '/web/rest/web/fm/rules?isc_dataFormat=json',
+ fmConds: {},
+ $sunburstSetting: {width: 450, height: 400},
+
+ $getLogCond: function(){
+ var cond = {};
+ var severitys = [];
+ var ackState = [];
+ var filterState = [];
+ for (var i = 0; i < vm.severityTypes.length; i++) {
+ vm.severityTypes[i].value ? severitys.push(vm.severityTypes[i].id) : null;
+ };
+ for (var i = 0; i < vm.ackStateTypes.length; i++) {
+ vm.ackStateTypes[i].value ? cond.ackState = ackState.push(vm.ackStateTypes[i].id) : null;
+ };
+ for (var i = 0; i < vm.filterStateTypes.length; i++) {
+ vm.filterStateTypes[i].value ? cond.filterState = filterState.push(vm.filterStateTypes[i].id) : null;
+ };
+ cond.severity = severitys;
+ cond.ackState = ackState;
+ cond.filterState = filterState;
+ cond.location=vm.fmConds.location;
+ cond.ackTimeStarTime = vm.fmConds.ackTimeStarTime;
+ cond.ackTimeEndTime = vm.fmConds.ackTimeEndTime;
+ cond.ackRelativeTime = vm.fmConds.ackRelativeTime;
+ cond.ackTimeMode = vm.fmConds.ackTimeMode;
+ cond.alarmRaisedStartTime = vm.fmConds.alarmRaisedStartTime;
+ cond.alarmRaisedEndTime = vm.fmConds.alarmRaisedEndTime;
+ cond.alarmRaisedRelativeTime = vm.fmConds.alarmRaisedRelativeTime;
+ cond.alarmRaisedTimeMode = vm.fmConds.alarmRaisedTimeMode;
+ cond.clearedTimeStarTime = vm.fmConds.clearedTimeStarTime;
+ cond.clearedTimeEndTime = vm.fmConds.clearedTimeEndTime;
+ cond.clearedTimeMode = vm.fmConds.clearedTimeMode;
+ cond.probableCause = vm.fmConds.probableCause;
+ cond.alarmType = vm.fmConds.alarmType;
+ cond.ruleType = vm.ruleType;
+ return cond;
+ },
+
+ $initRegister: function(){
+ $('#alCode .condSelect').click(function(){
+ $('#alCodeTree').modal('show');
+ });
+
+ $('#alCodeTree').on('hide.bs.modal', function(){
+ $table = $("#selectedProbableCausesTreeTable");
+ if(vm.alCodeTree_affirm===false){
+ $('#selectedProbableCausesTreeTable tbody').children().remove();
+ for(i=0;i<alarmTemp.length;i++){
+ $table.append(alarmTemp[i]);
+ }
+ }
+ vm.alCodeTree_affirm=false;
+ });
+
+ $('#alCodeTree').on('show.bs.modal', function(){
+ vm.alCodeTree_affirm=false;
+ alarmTemp=[];
+ var $trs=$("#selectedProbableCausesTreeTable tr");
+ if($trs.length!=0){
+ for(var i=0;i<$trs.length;i++){
+ alarmTemp.push($trs.eq(i)[0].outerHTML);
+ }
+ $('#selectedProbableCausesTreeTable td').on("click", function(){
+ var $tds = $('#selectedProbableCausesTreeTable td');
+ for (var i = 0; i < $tds.length; i++) {
+ $tds.eq(i).removeClass('tallCellSelected');
+ $tds.eq(i).parent().removeClass('checked');
+ }
+ $(this).addClass('tallCellSelected');
+ $(this).parent().addClass("checked");
+ });
+ }
+ })
+
+ $('#alType .condSelect').click(function(){
+ $('#alTypeTree').modal('show');
+ });
+
+ //告警位置初始化
+ $('#alLocation .condSelect').click(function(){
+ $('#alLocationTree').modal('show');
+ });
+
+ $('#alLocationTree').on('hide.bs.modal', function(){
+ $table = $("#selectedDeptTreeTable");
+ if(vm.alLocationTree_affirm===false){
+ $('#selectedDeptTreeTable tbody').children().remove();
+ for(i=0;i<alarmTemp.length;i++){
+ $table.append(alarmTemp[i]);
+ }
+ }
+ vm.alLocationTree_affirm=false;
+ });
+
+ $('#alLocationTree').on('show.bs.modal', function(){
+ vm.alLocationTree_affirm=false;
+ alarmTemp=[];
+ var $trs=$("#selectedDeptTreeTable tr");
+ if($trs.length!=0){
+ for(var i=0;i<$trs.length;i++){
+ alarmTemp.push($trs.eq(i)[0].outerHTML);
+ }
+ }
+ $('#selectedDeptTreeTable td').on("click", function(){
+ var $tds = $('#selectedDeptTreeTable td');
+ for (var i = 0; i < $tds.length; i++) {
+ $tds.eq(i).removeClass('tallCellSelected');
+ $tds.eq(i).parent().removeClass('checked');
+ }
+ $(this).addClass('tallCellSelected');
+ $(this).parent().addClass("checked");
+ });
+ })
+
+ $(document).on("click", function(e){
+ var target = $(e.target);
+ if(target.closest("#alLocationTree").length == 0 && target.closest("#alLocation .condSelect").length==0){
+ $("#alLocationTree").fadeOut();
+ }
+ if(target.closest("#alCodeTree").length == 0 && target.closest("#alCode .condSelect").length==0){
+ $('#alCodeTree').fadeOut();
+ }
+ if(target.closest("#alTypeTree").length == 0 && target.closest("#alType .condSelect").length==0){
+ $('#alTypeTree').fadeOut();
+ }
+ });
+
+ //主表格确认
+ $('#affirm').hover(function(){
+ $('#affirmTrip').show();
+ },function(){
+ $('#affirmTrip').hide();
+ });
+
+ //主表格反确认
+ $('#unAffirm').hover(function(){
+ $('#unAffirmTrip').show();
+ },function(){
+ $('#unAffirmTrip').hide();
+ });
+
+ //初始化 checkBox
+ $('.confirmTime input[type="radio"]').iCheck({
+ radioClass: 'iradio_square-aero',
+ increaseArea: '20%'
+ });
+
+ //告警类型树的选项被选中时
+ $('#selectedAlTypeTable input[type="checkBox"]').on("ifChecked", function(){
+ $(this).parent().parent().addClass('tallCellSelected');
+ });
+
+ //告警类型未被选中时
+ $('#selectedAlTypeTable input[type="checkBox"]').on("ifUnchecked", function(){
+ $(this).parent().parent().removeClass('tallCellSelected');
+ });
+ },
+
+ $initTable: function(){
+ var setting = {};
+ setting.language = vm.$language;
+ setting.columns = vm.$alarmsTableFields[vm.curalarmsType];
+ setting.restUrl = vm.$queryAlarmsInfoUrl;
+ setting.tableId = "ict_alarms_table";
+ serverPageTable.initDataTable(setting, vm.$getLogCond(), 'ict_alarms_table_div');
+ },
+
+ condChange: function(){
+ refreshByCond();
+ },
+
+ moreCondClicked: function(){
+ $('#moreCond').fadeToggle();
+ var icon = $(this).children('span').eq(0);
+ if ($(this).hasClass('blueactive')) {
+ vm.moreCondBtn = false;
+ icon.removeClass('borderBottom');
+ icon.addClass('borderBotTop');
+ $("div.fliterline").show();
+ } else {
+ vm.moreCondBtn = true;
+ icon.removeClass('borderTop');
+ icon.addClass('borderBottom');
+ $("div.fliterline").hide();
+ }
+ },
+
+ alarmsCondSave: function(){
+ if ($('#saveCondId').val() != null && $.trim($('#saveCondId').val()) != '') {
+ var name = $('#saveCondId').val();
+ alarmsUtil.condSave(vm.$getLogCond(), vm.$saveCondUrl, name);
+ }
+ },
+
+ saveModal: function(){
+ $('#myModal').modal('show');
+ },
+
+ searchModal: function(){
+ refreshByCond();
+ },
+
+ tabClicked: function(modelItem, item){
+ if (!modelItem.value) {
+ modelItem.value = true;
+ } else {
+ modelItem.value = false;
+ }
+ refreshByCond();
+ },
+
+ moveTreeNode: function(item){
+ alarmsUtil.moveNode(item);
+ },
+
+ //告警位置——确认
+ deptTreeAffirm: function(){
+ var selectName="";
+ var locationObj=[];
+ var $tds= $("#selectedDeptTreeTable td");
+ for (var i = 0; i < $tds.length; i++) {
+ var obj={};
+ obj.id=$tds.eq(i).attr('nodeid');
+ obj.oid=$tds.eq(i).attr('oid');
+ locationObj.push(obj);
+ if(i==0){
+ selectName+=$tds.eq(i).text();
+ }else{
+ selectName+=","+$tds.eq(i).text();
+ }
+ };
+ vm.fmConds.location=locationObj;
+ vm.alarmLocationSelectedCount=locationObj.length;
+ vm.alLocationTree_affirm=true;
+ $('#alLocationTree').modal('hide')
+ },
+
+ //告警码树 确认
+ probableCausesTreeAffirm: function(){
+ var selectName="";
+ var probableCause=[];
+ var $tds= $("#selectedProbableCausesTreeTable td");
+ var systemType=[];
+ for (var i = 0; i < $tds.length; i++) {
+ var obj={};
+ obj.codeid=$tds.eq(i).attr('codeid');
+ obj.parentid=$tds.eq(i).attr('parentid');
+ obj.type=$tds.eq(i).attr('type');
+ probableCause.push(obj);
+ };
+ vm.fmConds.probableCause=probableCause;
+ vm.alarmCodeSelectedCount = probableCause.length;
+ vm.alCodeTree_affirm=true;
+ $('#alCodeTree').modal('hide');
+ },
+
+ //告警类型 确认
+ alTypeTreeAffirm: function(){
+ var selectName="";
+ var alType=[];
+ var $tds=$("#selectedAlTypeTable td.tallCellSelected");
+ for (var i = 0; i < $tds.length; i++) {
+ var obj={};
+ alType.push(obj);
+ if(i==0){
+ selectName+=$tds.eq(i).text();
+ }else{
+ selectName+=","+$tds.eq(i).text();
+ }
+ };
+ vm.fmConds.alType=alType;
+ if(selectName!=""){
+ $('#alType .condSelect :selected').text(selectName);
+ }else{
+ $('#alType .condSelect :selected').text("请选择告警类型");
+ }
+ vm.alarmTypeSelectedCount = alType.length;
+ //$('#alTypeTree').fadeOut();
+ $('#alTypeTree').modal('hide')
+ }
+});
+
+//初始化 告警类型
+initAlTypeTable = function(){
+ var html = "";
+ for (var i = 0; i < vm.alTypes.length; i++) {
+ html += "<tr><td><input type='checkbox'>" + vm.alTypes[i] + "</td></tr>";
+ };
+ $('#selectedAlTypeTable').append(html);
+}
+
+initPage = function(){
+ bootbox.setDefaults({
+ locale: lang.replace("-", "_")
+ });
+ //自定义确认时间组件
+ alarmsUtil.setDateRange("daterangeConfirm", vm);
+ alarmsUtil.dateRangeEnableDisable("customAckTime");
+ //自定义发生时间组件
+ alarmsUtil.setDateRange("daterangeOccur", vm);
+ alarmsUtil.dateRangeEnableDisable("customRaisedTime");
+ //高级菜单界面中,对告警发生时间、确认时间、清除时间初始化
+ alarmsUtil.dateRangeCustom(vm);
+ //告警码树初始化
+ alarmsUtil.initTree();
+ //告警类型初始化
+ initAlTypeTable();
+ vm.$initRegister();
+ refreshByCond();
+ localStorage.setItem("curRuleDataId",0);
+}
+
+initPage();
diff --git a/openo-portal/portal-performance/src/main/webapp/performance/js/performanceChart.js b/openo-portal/portal-performance/src/main/webapp/performance/js/performanceChart.js
new file mode 100644
index 00000000..01aff1e1
--- /dev/null
+++ b/openo-portal/portal-performance/src/main/webapp/performance/js/performanceChart.js
@@ -0,0 +1,181 @@
+// draw the chart by performance datas
+function drawPerformanceChart() {
+ var chartType = "";
+ var titleText = document.getElementById("tableTitleText").innerHTML;
+ var subTitleText = "subTitleText";
+ var chartDataList = [];
+ var resourceNameList = [];
+ var timeList = [];
+
+ // get table datas
+ var tableObj = document.getElementById("ict_pm_data");
+ if (tableObj == null || tableObj.rows.length < 1) {
+ return;
+ }
+
+ // distinguish between chart types
+ var ratioType = tableObj.rows[0].cells[5].innerText;
+ if (ratioType.indexOf("CPU") > -1) {
+ chartType = "CPU";
+ subTitleText = "CPU USE RATIO";
+ } else if (ratioType.indexOf("RAM") > -1) {
+ chartType = "RAM";
+ subTitleText = "RAM USE RATIO";
+ } else if (ratioType.indexOf("VOLUME") > -1) {
+ chartType = "FILESYSTEM";
+ subTitleText = "LOGIC VOLUME FILESYSTEM USE RATIO";
+ } else if (ratioType.indexOf("NIC") > -1) {
+ chartType = "NIC";
+ subTitleText = "ERROR PACKET RATIO BY ONE COLLECT-PERIOD (SEND AND RECEIVED)";
+ } else {
+ return;
+ }
+
+ // collect datas for chart horizontal axis
+ for (var i = 1; i < tableObj.rows.length; i++) {
+ var strTime = tableObj.rows[i].cells[0].innerText;
+
+ if (timeList.length == 0) {
+ // push the first start time into the x-axis
+ timeList.push(strTime);
+ } else {
+ // push the start times into the x-axis and sort them
+ for (var j = 0; j < timeList.length; j++) {
+ if (timeList[j] == strTime) {
+ break;
+ } else if (timeList[j] > strTime) {
+ timeList.splice(j, 0, strTime);
+ break;
+ } else if (j + 1 == timeList.length && timeList[j] < strTime) {
+ timeList.push(strTime);
+ break;
+ }
+ }
+ }
+ }
+
+ // create chart resources
+ for (var i = 1; i < tableObj.rows.length; i++) {
+ var strTime = tableObj.rows[i].cells[0].innerText;
+ var ratioIndex = getListIndex(timeList, strTime);
+ var strName = "";
+ var strRatio = "";
+
+ if (chartType == "CPU" || chartType == "RAM") {
+ strName = tableObj.rows[i].cells[4].innerText;
+ strRatio = tableObj.rows[i].cells[5].innerText;
+ } else if (chartType == "FILESYSTEM") {
+ strName = tableObj.rows[i].cells[4].innerText + "(" + tableObj.rows[i].cells[6].innerText + ")";
+ strRatio = tableObj.rows[i].cells[9].innerText;
+ } else if (chartType == "NIC") {
+ strName = tableObj.rows[i].cells[4].innerText + "(" + tableObj.rows[i].cells[5].innerText + ")";
+ strRatio = parseFloat(tableObj.rows[i].cells[10].innerText) + parseFloat(tableObj.rows[i].cells[11].innerText);
+ }
+
+ if (chartDataList.length == 0) {
+ // create the first chart resource and push it into the chartlist
+ insertChartDataList(chartDataList, strName, strRatio, ratioIndex);
+ } else {
+ // update the chart resources which exist in chartlist
+ var existFlg = false;
+ for (var j = 0; j < chartDataList.length; j++) {
+ if (chartDataList[j].name == strName) {
+ chartDataList[j].data[ratioIndex] = strRatio;
+ existFlg = true;
+ break;
+ }
+ }
+
+ // create a new chart resource and push it into the chartlist
+ if (!existFlg) {
+ insertChartDataList(chartDataList, strName, strRatio, ratioIndex);
+ }
+ }
+ }
+
+ for (var i = 0; i < chartDataList.length; i++) {
+ // complete length of datalist for each chart resource
+ if (chartDataList[i].data.length < timeList.length) {
+ chartDataList[i].data[timeList.length - 1] = "";
+ }
+
+ // create the name list of chart resources
+ resourceNameList.push(chartDataList[i].name);
+ }
+
+ // initialize the chart
+ var dom = document.getElementById("chartCanvasDiv");
+ var myChart = echarts.init(dom);
+ option = null;
+
+ // set the chart by collected chart resources
+ option = {
+ title: {
+ text: titleText,
+ subtext: subTitleText,
+ x: 'center'
+ },
+ tooltip: {
+ trigger: 'axis'
+ },
+ legend: {
+ data:resourceNameList,
+ top: '10%'
+ },
+ grid: {
+ top: '20%'
+ },
+ toolbox: {
+ show: true,
+ feature: {
+ magicType: {type: ['line', 'bar']},
+ restore: {},
+ saveAsImage: {}
+ }
+ },
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ data : timeList.map(function (str) {
+ return str.replace(' ', '\n')
+ })
+ },
+ yAxis: {
+ name : 'percentage(%)',
+ type: 'value'
+ },
+ series: chartDataList
+ };
+
+ // draw the performance chart of all resources
+ if (option && typeof option === "object") {
+ myChart.setOption(option, true);
+ };
+};
+
+// define the struct of chart resource
+function chartData() {
+ this.name = "";
+ this.type = "line";
+ this.smooth = true;
+ this.data = [];
+};
+
+// create a new chart resource and push it into the chartlist
+function insertChartDataList(chartDataList, name, data, dataIndex) {
+ var cd = new chartData();
+ cd.name = name;
+ cd.data[dataIndex] = data;
+ chartDataList.push(cd);
+};
+
+// return the index of the specified element in the list
+function getListIndex(list, data) {
+ var dataIndex = 0;
+ for (var i = 0; i < list.length; i++) {
+ if (list[i] == data) {
+ return i;
+ }
+ }
+ return dataIndex;
+};
diff --git a/openo-portal/portal-performance/src/main/webapp/performance/js/performanceQueryController.js b/openo-portal/portal-performance/src/main/webapp/performance/js/performanceQueryController.js
new file mode 100644
index 00000000..9fd8489f
--- /dev/null
+++ b/openo-portal/portal-performance/src/main/webapp/performance/js/performanceQueryController.js
@@ -0,0 +1,843 @@
+var pm = {};
+pm.query = {};
+pm.query.vmPmQuery = avalon.define({
+ $id: "pmQueryController",
+ tableTitle:'',
+ pmDataVisable:true,
+ pmChartVisable:false,
+ tableIconVisable:false,
+ chartIconVisable:false,
+ queryRuleVisable:false,
+ boxVisible:true,
+ pmQueries:[],
+
+ $postData:{},
+
+ beginTime: "",
+ endTime: "",
+ granularity:"",
+
+ granularities: [
+ {id: '5', name: $.i18n.prop('com_zte_ums_ict_pm_query_5'), value: true},
+ {id: '15', name: $.i18n.prop('com_zte_ums_ict_pm_query_15'), value: false},
+ {id: '60', name: $.i18n.prop('com_zte_ums_ict_pm_query_60'), value: false}
+ ],
+
+ granularityClicked: function(modelItem, item){
+ if(modelItem.id =="5"){
+ pm.query.vmPmQuery.granularity = "5*60";
+ pm.query.vmPmQuery.granularities[0].value = true;
+ pm.query.vmPmQuery.granularities[1].value = false;
+ pm.query.vmPmQuery.granularities[2].value = false;
+ }else if(modelItem.id =="15"){
+ pm.query.vmPmQuery.granularity = "15*60";
+ pm.query.vmPmQuery.granularities[0].value = false;
+ pm.query.vmPmQuery.granularities[1].value = true;
+ pm.query.vmPmQuery.granularities[2].value = false;
+ }else{
+ pm.query.vmPmQuery.granularity = "60*60";
+ pm.query.vmPmQuery.granularities[0].value = false;
+ pm.query.vmPmQuery.granularities[1].value = false;
+ pm.query.vmPmQuery.granularities[2].value = true;
+ }
+ },
+
+ resources: [
+ /* {id: 'vnfInstance', name: $.i18n.prop('ngict-pm-iui-name-vnfInstance'), value: "SSS"},
+ {id: 'host', name: $.i18n.prop('ngict-pm-iui-name-host'), value: ""} */
+ ],
+
+ resourcesMap:{},
+
+ resourceSlected:[],
+
+ resourceSlectedObjs:[],
+
+ rmSelectedResource: function(modelItem, elem){
+ $(elem).parent().remove();
+ pm.query.vmPmQuery.resourceSlected.splice(pm.query.vmPmQuery.resourceSlected.indexOf(modelItem.id), 1);
+ },
+
+ initResources: function(resourceTypeId){
+ var that = this;
+ $.ajax({
+ async: false,
+ "dataType": 'json',
+ "type": "GET",
+ //"url": "/api/umcpm/v1/resources/" + resourceTypeId,
+ "url": "/api/umcpm/v1/resources/",
+ "contentType": 'application/json; charset=utf-8',
+ "success": function (res, textStatus, jqXHR) {
+ //var nodes = res.content;
+ var nodes = res;
+ that.resources = [];
+ for (var i = 0; i < nodes.length; i++) {
+ var resource = {
+ id: nodes[i].id,
+ name: nodes[i].name,
+ resType: nodes[i].resType
+ };
+ that.resources.push(resource);
+ //保存id和resource的映射关系
+ var resourceCopy = {
+ id: nodes[i].id,
+ name: nodes[i].name,
+ resType: nodes[i].resType
+ };
+ that.resourcesMap[nodes[i].id] = resourceCopy;
+ }
+ //过滤框注册
+ $("input[id=resourcesToFilter]").keyup(function(){
+ $("table#resources tbody tr").hide().filter(":contains('"+( $(this).val() )+"')").show();
+ });
+ },
+ "error": function () {
+ }
+ });
+ },
+
+ resTypeArray : [],
+ selectedResourceType : "",
+ selectedResourceTypeId : "",
+
+ moTypeArray:[],
+ selectedMoType:"",
+ selectedMoTypeId:"",
+
+ counterArray:[],
+ selectedCounter:[],
+
+ resTypeSelectAction:function(){
+ var resourceTypeId = getIdFromName(pm.query.vmPmQuery.selectedResourceType,pm.query.vmPmQuery.resTypeArray);
+ pm.query.vmPmQuery.selectedResourceTypeId = resourceTypeId;
+ getMoTypeArray(resourceTypeId);
+ pm.query.vmPmQuery.counterArray=[];
+ pm.query.vmPmQuery.initResources(resourceTypeId);
+ },
+ moTypeSelectAction:function(obj){
+ var resourceTypeId=getIdFromName(pm.query.vmPmQuery.selectedResourceType,pm.query.vmPmQuery.resTypeArray);
+ //var moTypeId=$(obj).val();
+ var moTypeId = getIdFromName(pm.query.vmPmQuery.selectedMoType, pm.query.vmPmQuery.moTypeArray);
+ pm.query.vmPmQuery.selectedMoTypeId = moTypeId;
+ getCounterArray(resourceTypeId,moTypeId);
+ },
+ /* counterSelectAction:function(obj){
+ var counterId=$(obj).val();
+ pm.query.vmPmQuery.selectedCounter=counterId;
+ pm.query.vmPmQuery.indexDescription+=pm.query.vmPmQuery.selectedCounter;
+ }, */
+ returnQueryPage: function(){
+ pm.query.vmPmQuery.pmDataVisable=true;
+ pm.query.vmPmQuery.pmChartVisable=false;
+ pm.query.vmPmQuery.tableIconVisable=false;
+ pm.query.vmPmQuery.chartIconVisable=true;
+ pm.query.vmPmQuery.queryRuleVisable=false;
+ pm.query.vmPmQuery.clickDisplayGraphAlink();
+ },
+
+ queryRuleView: function(event, el){
+ event.stopPropagation();
+
+ pm.query.vmPmQuery.tableTitle=$.i18n.prop('com_zte_ums_ict_pm_query_edit');
+
+ //取得测量任务详情
+ var elem = {};
+ $.ajax({
+ async: false,
+ "dataType": 'json',
+ "type": "GET",
+ "url": "/api/umcpm/v1/meatasks/" + el.id,
+ "data": null,
+ "contentType": 'application/json; charset=utf-8',
+ "success": function (res, textStatus, jqXHR) {
+ elem = res;
+ },
+ "error": function () {
+ }
+ });
+
+ pm.query.vmPmQuery.pmDataVisable=false;
+ pm.query.vmPmQuery.pmChartVisable=false;
+ pm.query.vmPmQuery.tableIconVisable=false;
+ pm.query.vmPmQuery.chartIconVisable=false;
+ pm.query.vmPmQuery.queryRuleVisable=true;
+
+ pm.query.vmPmQuery.beginTime = elem.beginTime;
+ pm.query.vmPmQuery.endTime = elem.endTime;
+
+ var timetext = pmUtil.formatTime(pm.query.vmPmQuery.beginTime) + " - " + pmUtil.formatTime(pm.query.vmPmQuery.endTime);
+ $("#queryTimeRange").val(timetext);
+
+ //选择粒度
+ pm.query.vmPmQuery.granularity = elem.granularity;
+ var granularity = pm.query.vmPmQuery.granularity / 60;
+ var granularities = pm.query.vmPmQuery.granularities;
+ for(var i=0;i<granularities.length;i++){
+ if(granularity == granularities[i].id){
+ granularities[i].value = true;
+ }else{
+ granularities[i].value = false;
+ }
+ }
+
+ //展开相关资源类型
+ pm.query.vmPmQuery.resTypeArray.push(elem.resourceType);
+ pm.query.vmPmQuery.selectedResourceTypeId = elem.resourceType.id;
+ pm.query.vmPmQuery.selectedResourceType = elem.resourceType.name;
+ //pm.query.vmPmQuery.resTypeSelectAction();
+ pm.query.vmPmQuery.moTypeArray.push(elem.moType);
+ pm.query.vmPmQuery.selectedMoTypeId = elem.moType.id;
+ pm.query.vmPmQuery.selectedMoType = elem.moType.name;
+ //pm.query.vmPmQuery.moTypeSelectAction();
+ getCounterArray(elem.moType.id);
+ pm.query.vmPmQuery.initResources(elem.resourceType.id);
+
+ $("select#resourceTypes").attr("disabled", true);
+ $("select#moTypes").attr("disabled", true);
+
+ //选中对象
+ pm.query.vmPmQuery.resourceSlected = [];
+ for(var j=0;j<elem.resources.length;j++){
+ pm.query.vmPmQuery.resourceSlected.push(elem.resources[j].id);
+ //pm.query.vmPmQuery.resourceSlected.push(elem.resources[j]);
+ }
+
+ //$("a#upArrow").click();
+ pm.query.vmPmQuery.clickDisplayGraphAlink();
+
+ $('.indexesAll').unbind().bind("change", function () {
+ var table = $("table#indexes");
+ var set = $('tbody > tr > td:nth-child(1) input[type="checkbox"]', table);
+ var checked = $(this).is(":checked");
+ $(set).each(function () {
+ //$(this).attr("checked", checked);
+ if(checked){
+ if(!$(this).is(":checked")){
+ $(this).click();
+ }
+ }else{
+ if($(this).is(":checked")){
+ $(this).click();
+ }
+ }
+ });
+ });
+
+ $('.resourceAll').unbind().bind("change", function () {
+ var table = $("table#resources");
+ var set = $('tbody > tr > td:nth-child(1) input[type="checkbox"]', table);
+ var checked = $(this).is(":checked");
+ $(set).each(function () {
+ //$(this).attr("checked", checked);
+ if(checked){
+ if(!$(this).is(":checked")){
+ $(this).click();
+ }
+ }else{
+ if($(this).is(":checked")){
+ $(this).click();
+ }
+ }
+ });
+ });
+ //国际化
+ var i18nItems = $("[name_i18n=com_zte_ums_ict_pm_query]");
+ for(var i=0;i<i18nItems.length;i++){
+ var $item = $(i18nItems.eq(i));
+ var itemId = $item.attr('id');
+ var itemValue = $.i18n.prop(itemId);
+ if(typeof($item.attr("title"))!="undefined"){
+ $item.attr("title", itemValue);
+ }else if(typeof($item.attr("placeholder"))!="undefined"){
+ $item.attr("placeholder", itemValue);
+ }else{
+ $item.text(itemValue);
+ }
+ }
+ },
+
+ queryRuleChanged: function(){
+
+ pm.query.vmPmQuery.pmDataVisable=true;
+ pm.query.vmPmQuery.pmChartVisable=false;
+ pm.query.vmPmQuery.tableIconVisable=false;
+ pm.query.vmPmQuery.chartIconVisable=true;
+ pm.query.vmPmQuery.queryRuleVisable=false;
+ pm.query.vmPmQuery.clickDisplayGraphAlink();
+
+ var resourcesToPut = [];
+ for(var i=0;i<pm.query.vmPmQuery.resourceSlected.length;i++){
+ for(var j=0;j<pm.query.vmPmQuery.resources.length;j++){
+ if(pm.query.vmPmQuery.resourceSlected[i] == pm.query.vmPmQuery.resources[j].id){
+ resourcesToPut.push(pm.query.vmPmQuery.resources[j]);
+ break;
+ }
+ }
+ }
+
+ var postData = {
+ "resourceTypeId": pm.query.vmPmQuery.selectedResourceTypeId,
+ "moTypeId": pm.query.vmPmQuery.selectedMoTypeId,
+ //"resources": pm.query.vmPmQuery.resourceSlected,
+ "resources": resourcesToPut,
+ "counterOrIndexId": pm.query.vmPmQuery.selectedCounter,
+ "granularity": pm.query.vmPmQuery.granularity,
+ "beginTime": pm.query.vmPmQuery.beginTime,
+ "endTime": pm.query.vmPmQuery.endTime,
+ "pageNo": 0,
+ "pageSize": 10
+ }
+ pm.query.vmPmQuery.$postData = postData;
+ $.ajax({
+ //async:false,
+ "type": 'post',
+ "url": "/api/umcpm/v1/historydataqueries",
+ "dataType": "json",
+ "data": JSON.stringify(postData),
+ "contentType": 'application/json; charset=utf-8',
+ "success": function (resp) {
+ //if(resp.content[0]){
+ if(resp.data[0]){
+ //var datas = resp.content[0].datas;
+ var datas = resp.data[0].datas;
+ //pm.query.vmPmQuery.$queryDataTableFields = pm.query.vmPmQuery.$queryDataTableFieldsBackup;
+ collectDataFields(datas);
+ //pm.query.vmPmQuery.postData = postData;
+ pm.query.vmPmQuery.$initTable();
+ }else{
+ collectDataFields([]);
+ pm.query.vmPmQuery.$initTable();
+ }
+ },
+ "error":function(resp){
+
+ }
+ });
+ },
+
+ queryTabClicked: function (el, item) {
+
+ //取得测量任务详情
+ var modelItem = {};
+ $.ajax({
+ async: false,
+ "dataType": 'json',
+ "type": "GET",
+ "url": "/api/umcpm/v1/meatasks/" + el.id,
+ "data": null,
+ "contentType": 'application/json; charset=utf-8',
+ "success": function (res, textStatus, jqXHR) {
+ modelItem = res;
+ },
+ "error": function () {
+ }
+ });
+
+ pm.query.vmPmQuery.pmDataVisable=true;
+ pm.query.vmPmQuery.pmChartVisable=false;
+ pm.query.vmPmQuery.tableIconVisable=false;
+ pm.query.vmPmQuery.chartIconVisable=true;
+ pm.query.vmPmQuery.queryRuleVisable=false;
+ //vmPmQuery.boxVisible= false;
+ pm.query.vmPmQuery.tableTitle=modelItem.name + " " + $.i18n.prop('com_zte_ums_ict_pm_query_result');
+
+ //取得指标
+ var getData = [];
+ getData.push({
+ name: "resourceTypeId",
+ value: modelItem.resourceType.id
+ });
+ getData.push({
+ name: "moTypeId",
+ value: modelItem.moType.id
+ });
+ var counterOrIndexId = [];
+ var MoTypeId = modelItem.moType.id;
+ /* $.ajax({
+ async: false,
+ "dataType": 'json',
+ "type": "GET",
+ //"url": "/api/umcpm/v1/motypes/indexes",
+ "url": "/api/umcpm/v1/indexes",
+ "data": getData,
+ "contentType": 'application/json; charset=utf-8',
+ "success": function (res, textStatus, jqXHR) {
+ for(var i=0;i<res.length;i++){
+ counterOrIndexId.push(res[i].id);
+ }
+ },
+ "error": function () {
+ }
+ }); */
+ var url="/api/umcpm/v1/motypes/" + MoTypeId + "/counters";
+ var data={};
+ data.moTypeId=MoTypeId;
+ $.ajax({
+ "type": 'get',
+ "url": url,
+ "dataType": "json",
+ data:data,
+ "async": false,
+ "success": function (res) {
+ for(var i=0;i<res.length;i++){
+ counterOrIndexId.push(res[i].id);
+ }
+ },
+ "error":function(res){
+ counterOrIndexId=[];
+ }
+ });
+
+ var resources=[];
+ for(var i=0;i<modelItem.resources.length;i++){
+ var resource = {};
+ resource.id = modelItem.resources[i].id;
+ resource.name = modelItem.resources[i].name;
+ resource.resType = modelItem.resources[i].resType;
+ resources.push(resource);
+ }
+ var postData = {
+ "resourceTypeId": modelItem.resourceType.id,
+ "moTypeId": modelItem.moType.id,
+ "resources": resources,
+ "counterOrIndexId": counterOrIndexId,
+ "granularity": modelItem.granularity,
+ "beginTime": modelItem.beginTime,
+ "endTime": modelItem.endTime,
+ "pageNo": 0,
+ "pageSize": 10
+ }
+ pm.query.vmPmQuery.$postData = postData;
+ $.ajax({
+ //async:false,
+ "type": 'post',
+ "url": "/api/umcpm/v1/historydataqueries",
+ "dataType": "json",
+ "data": JSON.stringify(postData),
+ "contentType": 'application/json; charset=utf-8',
+ "success": function (resp) {
+ //if(resp.content[0]){
+ if(resp.data[0]){
+ //var datas = resp.content[0].datas;
+ var datas = resp.data[0].datas;
+ //pm.query.vmPmQuery.$queryDataTableFields = pm.query.vmPmQuery.$queryDataTableFieldsBackup;
+ collectDataFields(datas);
+ pm.query.vmPmQuery.$initTable();
+ }else{
+ collectDataFields([]);
+ pm.query.vmPmQuery.$initTable();
+ }
+ },
+ "error":function(resp){
+
+ }
+ });
+ },
+ clickSelectedCommonCond: function () {
+ //显示统计图;
+ },
+ clickDisplayGraphAlink: function () {
+ pm.query.vmPmQuery.boxVisible = !pm.query.vmPmQuery.boxVisible;
+ },
+ showPerformanceChart: function () {
+ drawPerformanceChart();
+ pm.query.vmPmQuery.pmDataVisable=false;
+ pm.query.vmPmQuery.pmChartVisable=true;
+ pm.query.vmPmQuery.tableIconVisable=true;
+ pm.query.vmPmQuery.chartIconVisable=false;
+ },
+ showPerformanceTable: function () {
+ pm.query.vmPmQuery.pmDataVisable=true;
+ pm.query.vmPmQuery.pmChartVisable=false;
+ pm.query.vmPmQuery.tableIconVisable=false;
+ pm.query.vmPmQuery.chartIconVisable=true;
+ },
+ $queryDataTableFields: [
+ {
+ "mData": "beginTime",
+ sWidth: "10%",
+ name: $.i18n.prop('com_zte_ums_ict_pm_query_start_time'),
+ "fnRender": pmUtil.timeRender
+ },
+ {
+ "mData": "endTime",
+ sWidth: "10%",
+ name: $.i18n.prop('com_zte_ums_ict_pm_query_end_time'),
+ "fnRender": pmUtil.timeRender
+ },
+ {
+ "mData": "granularity",
+ sWidth: "10%",
+ name: $.i18n.prop('com_zte_ums_ict_pm_query_granularity')
+ },
+ {
+ "mData": "resourceType.name",
+ sWidth: "15%",
+ name: $.i18n.prop('com_zte_ums_ict_pm_query_resource_type')
+ },
+ {
+ "mData": "resource.name",
+ sWidth: "15%",
+ name: $.i18n.prop('com_zte_ums_ict_pm_query_resource_name')
+ }
+ ] ,
+ $language: {
+ "sProcessing": "<img src='../common/thirdparty/data-tables/images/loading-spinner-grey.gif'/><span>&nbsp;&nbsp;处理中...</span>",
+ "sLengthMenu": $.i18n.prop("ngict-log-iui-table-sLengthMenu"),
+ "sZeroRecords": $.i18n.prop("ngict-log-iui-table-sZeroRecords"),
+ "sInfo": "<span class='seperator'> </span>" + $.i18n.prop("ngict-log-iui-table-sInfo"),
+ "sInfoEmpty": $.i18n.prop("ngict-log-iui-table-sInfoEmpty"),
+ "sGroupActions": $.i18n.prop("ngict-log-iui-table-sGroupActions"),
+ "sAjaxRequestGeneralError":$.i18n.prop("ngict-log-iui-table-sAjaxRequestGeneralError"),
+ "sEmptyTable": $.i18n.prop("ngict-log-iui-table-sEmptyTable"),
+ "oPaginate": {
+ "sPrevious": $.i18n.prop("ngict-log-iui-table-sPrevious"),
+ "sNext": $.i18n.prop("ngict-log-iui-table-sNext"),
+ "sPage": $.i18n.prop("ngict-log-iui-table-sPage"),
+ "sPageOf": $.i18n.prop("ngict-log-iui-table-sPageOf")
+ }
+ },
+ $initTable: function () {
+ var setting = {};
+ setting.language = this.$language;
+ setting.columns = this.$queryDataTableFields;
+ setting.pageHtml="r<'table-scrollable't><'row page-info-bottom'<'col-md-12 col-sm-12'lip>>>";
+ //setting.restUrl ="/api/umcpm/v1/indexes";
+ //setting.restUrl ="../../json/thresholdList.json";
+ setting.restUrl = "/api/umcpm/v1/historydataqueries";
+ setting.tableId = "ict_pm_data";
+ serverPageTable.initDataTable(setting, 'ict_pm_data_div' );
+ }
+});
+
+pm.query.vmPmQuery.resourceSlected.$watch("length", function(newValue, oldValue){
+ var resourceSlected = pm.query.vmPmQuery.resourceSlected;
+ //pm.query.vmPmQuery.resourceSlectedObjs = [];
+ var resourceSlectedObjs = [];
+ for(var i=0;i<resourceSlected.length;i++){
+ //var obj = getObjById(resourceSlected[i], pm.query.vmPmQuery.resources);
+ var obj = $.extend(true, {}, pm.query.vmPmQuery.resourcesMap[resourceSlected[i]]);
+ //pm.query.vmPmQuery.resourceSlectedObjs.push(obj);
+ resourceSlectedObjs.push(obj);
+ }
+ //给绑定变量一次性赋值,否则非常慢
+ //pm.query.vmPmQuery.resourceSlectedObjs = $.extend(true, [], resourceSlectedObjs);
+ pm.query.vmPmQuery.resourceSlectedObjs=[];
+ for(var j=0;j<resourceSlectedObjs.length;j++){
+ pm.query.vmPmQuery.resourceSlectedObjs.push(resourceSlectedObjs[j]);
+ }
+});
+
+function getObjById(id,array){
+ for(var i=0;i<array.length;i++){
+ if(array[i].id==id){
+ return array[i];
+ }
+ }
+}
+
+avalon.scan();
+
+//取得任务列表
+var queryViewData;
+$.ajax({
+ async: false,
+ "dataType": 'json',
+ "type": "GET",
+ "url": "/api/umcpm/v1/meatasks",
+ //"url": "../../js/meatask/testList.json",
+ "data": null,
+ "contentType": 'application/json; charset=utf-8',
+ "success": function (res, textStatus, jqXHR) {
+ //queryViewData = res.content;
+ queryViewData = res;
+ },
+ "error": function () {
+ }
+});
+
+pm.query.vmPmQuery.pmQueries = transformQueryViewData(queryViewData, 8);
+
+/* var postData = {
+ "resourceTypeId": "vnf.cn.cscf",
+ "moTypeId": "vnf.cn.cscf.metrictype",
+ "resources": [
+ {
+ "id": "vnf.cn.cscf.001",
+ "name": "cscf001",
+ "resType": "vnf.cn.cscf"
+ }
+ ],
+ "counterOrIndexId": [
+ "001"
+ ],
+ "granularity": 900,
+ "beginTime": 1449023738672,
+ "endTime": 1449023738672
+} */
+
+var queryDataTableFieldsBackup = [
+ {
+ "mData": "beginTime",
+ sWidth: "10%",
+ name: $.i18n.prop('com_zte_ums_ict_pm_query_start_time'),
+ "fnRender": pmUtil.timeRender
+ },
+ {
+ "mData": "endTime",
+ sWidth: "10%",
+ name: $.i18n.prop('com_zte_ums_ict_pm_query_end_time'),
+ "fnRender": pmUtil.timeRender
+ },
+ {
+ "mData": "granularity",
+ sWidth: "10%",
+ name: $.i18n.prop('com_zte_ums_ict_pm_query_granularity')
+ },
+ {
+ "mData": "resourceType.name",
+ sWidth: "15%",
+ name: $.i18n.prop('com_zte_ums_ict_pm_query_resource_type')
+ },
+ {
+ "mData": "resource.name",
+ sWidth: "15%",
+ name: $.i18n.prop('com_zte_ums_ict_pm_query_resource_name')
+ }
+];
+
+//pm.query.vmPmQuery.$initTable();
+function fnServerData(sSource, aoData, fnCallback, oSettings) {
+
+ var oPaging = oSettings.oInstance.fnPagingInfo();
+ var pageLength = oPaging.iLength;
+ var curPageNo = oPaging.iPage;
+
+ pm.query.vmPmQuery.$postData.pageNo = curPageNo;
+ pm.query.vmPmQuery.$postData.pageSize = pageLength;
+
+ oSettings.jqXHR = $.ajax({
+ "type": 'post',
+ //"type": 'get',
+ "url": sSource,
+ //"url": "../../js/meatask/testMulti1.json",
+ "dataType": "json",
+ "data": JSON.stringify(pm.query.vmPmQuery.$postData),
+ "contentType": 'application/json; charset=utf-8',
+ "success": function (resp) {
+ oSettings.iDraw = oSettings.iDraw + 1;
+ var data = {};
+ //添加动态列
+ //for(var i=0;i<resp.content.length;i++){
+ for(var i=0;i<resp.data.length;i++){
+ //var row = resp.content[i];
+ var row = resp.data[i];
+ for(var j=0;j<row.datas.length;j++){
+ row["counterOrIndex" + row.datas[j].counterOrIndexId] = row.datas[j].value;
+ }
+ }
+ /* data.aaData = resp.content;
+ data.iTotalRecords = resp.content.length;
+ data.iTotalDisplayRecords = resp.content.length; */
+ data.aaData = resp.data;
+ data.iTotalRecords = resp.totalCout;
+ data.iTotalDisplayRecords = resp.totalCout;
+ data.sEcho = oSettings;
+ fnCallback(data);
+ },
+ "error":function(resp){
+
+ }
+ });
+}
+
+/* var tableFieldsMap = {
+ beginTime: "开始时间",
+ endTime: "结束时间"
+}; */
+
+function collectDataFields(datas){
+ pm.query.vmPmQuery.$queryDataTableFields = [];
+ for(var i=0;i<queryDataTableFieldsBackup.length;i++){
+ pm.query.vmPmQuery.$queryDataTableFields.push(queryDataTableFieldsBackup[i]);
+ }
+ for(var i=0;i<datas.length;i++){
+ if(!datas[i].name){
+ datas[i].name="测试列"
+ }
+ pm.query.vmPmQuery.$queryDataTableFields.push({
+ //"mData": "datas["+ i +"].value",
+ //"mData": "datas.value",
+ //"mData": "datas",
+ "mData": "counterOrIndex" + datas[i].counterOrIndexId,
+ sWidth: "10%",
+ name: datas[i].counterOrIndexName
+ //,fnRender: pmUtil.indexValue
+ });
+ }
+}
+
+/* function tranverseObjFields(obj){
+ for(var p in obj){
+ if(typeof(obj[p])!="function" && tableFieldsMap[p]){
+ if(obj[p]){
+
+ }
+ pm.query.vmPmQuery.$queryDataTableFields.push({
+ "mData": p,
+ sWidth: "10%",
+ name: tableFieldsMap[p]
+ })
+ }
+ }
+} */
+
+function transformQueryViewData(queryViewData, pageSize) {
+ var newData = [];
+ var pageNo = Math.floor(queryViewData.length / pageSize) + 1;
+ if(queryViewData.length % pageSize == 0){
+ pageNo--;
+ }
+ for (var i = 0; i < pageNo; i++) {
+ newData.push({array: []});
+ }
+ for (var j = 0; j < queryViewData.length; j++) {
+ newData[Math.floor(j / pageSize)].array.push(queryViewData[j]);
+ }
+ return newData;
+}
+
+setTimeout(function(){
+ $($(".item", $(".carousel-inner"))[0]).addClass("active");
+ pmUtil.setDateRange("queryTimeRange");
+}, 100);
+
+newIndexWizard = function (idx,action) {
+ //获取资源类型
+ //getResTypeArray();
+ var resourceTypeId;
+ var moTypeId;
+
+ //默认取资源第一个的测量类型
+ /* if(pm.query.vmPmQuery.resTypeArray && pm.query.vmPmQuery.resTypeArray.length>0){
+ pm.query.vmPmQuery.selectedResourceType=pm.query.vmPmQuery.resTypeArray[0].name;
+ resourceTypeId=pm.query.vmPmQuery.resTypeArray[0].id;
+ pm.query.vmPmQuery.selectedDataType=pm.query.vmPmQuery.dataTypeArray[0].name;
+ getMoTypeArray( pm.query.vmPmQuery.resTypeArray[0].id);
+ getCounterArray(resourceTypeId,moTypeId);
+ } */
+}();
+
+function getResTypeArray(){
+ var url="/api/umcpm/v1/resourcetypes";
+ $.ajax({
+ "type": 'get',
+ "url": url,
+ "dataType": "json",
+ "async": false,
+ "success": function (resp) {
+ //pm.query.vmPmQuery.resTypeArray= resp.content;
+ pm.query.vmPmQuery.resTypeArray= resp;
+ },
+ "error":function(resp){
+ // pm.index.vm.ResTypeArray=resp;
+ }
+ });
+}
+
+function getMoTypeArray(resourceTypeId){
+ if(resourceTypeId){
+ //获取测量类型
+ var url="/api/umcpm/v1/motypes";
+ var data={};
+ data.resourceTypeId=resourceTypeId;
+ $.ajax({
+ "type": 'get',
+ "url": url,
+ data:data,
+ "dataType": "json",
+ "async": false,
+ "success": function (resp) {
+ //pm.query.vmPmQuery.moTypeArray= resp.content;
+ pm.query.vmPmQuery.moTypeArray= resp;
+ },
+ "error":function(resp){
+ pm.query.vmPmQuery.moTypeArray=[];
+ //for test
+ /* var res = {"message":null,"content":[{"name":"性能KPI-1","id":"ns.cn.ims.metrictype"},{"name":"性能KPI-2","id":"ns.cn.ims.metrictype1"},{"name":"性能KPI-3","id":"ns.cn.ims.metrictype2"},{"name":"性能KPI-4","id":"ns.cn.ims.metrictype3"},{"name":"性能KPI-5","id":"ns.cn.ims.metrictype4"}],"status":0};
+ pm.query.vmPmQuery.moTypeArray = res.content; */
+ }
+ });
+ }
+}
+
+function getCounterArray(MoTypeId){
+ if(MoTypeId){
+ var url="/api/umcpm/v1/motypes/"+MoTypeId+"/counters";
+ var data={};
+ data.moTypeId=MoTypeId;
+ $.ajax({
+ "type": 'get',
+ "url": url,
+ "dataType": "json",
+ data:data,
+ "async": false,
+ "success": function (resp) {
+ //pm.query.vmPmQuery.counterArray= resp.content;
+ pm.query.vmPmQuery.counterArray= resp;
+ //默认全选
+ pm.query.vmPmQuery.selectedCounter = [];
+ for(var i=0;i<resp.length;i++){
+ pm.query.vmPmQuery.selectedCounter.push(resp[i].id);
+ }
+ },
+ "error":function(resp){
+ pm.query.vmPmQuery.counterArray=[];
+ //for test
+ /* var res = {"message":null,"content":[{"dataType":null,"name":"总用户数","id":"ns.cn.epc.businesskpi.totalUsers"},{"dataType":null,"name":"总用户数","id":"ns.cn.ims.businesskpi.totalUsers"},{"dataType":null,"name":"平均CPU使用率%","id":"vnf.runtimeInfo.averageCpuUsage"},{"dataType":null,"name":"平均内存使用率%","id":"vnf.runtimeInfo.averageMemoryUsage"},{"dataType":null,"name":"总用户数","id":"vnf.cn.cscf.businesskpi.totalUsers"}],"status":0};
+ pm.query.vmPmQuery.counterArray = res.content; */
+ }
+ });
+ }
+}
+
+function getIdFromName(name,array){
+ for(var i=0;i<array.length;i++){
+ if(array[i].name==name){
+ return array[i].id;
+ }
+ }
+}
+function getNameFromId(id,array){
+ for(var i=0;i<array.length;i++){
+ if(array[i].id==id){
+ return array[i].name;
+ }
+ }
+}
+function getObjFromId(id,array){
+ for(var i=0;i<array.length;i++){
+ if(array[i].id==id){
+ return array[i];
+ }
+ }
+ return "";
+}
+function getObjFromName(name,array){
+ for(var i=0;i<array.length;i++){
+ if(array[i].name==name){
+ return array[i];
+ }
+ }
+}
+
+/* function allCheckbox(obj) {
+ var isChecked = obj.checked;
+ var tableId = $(obj).parents(".table").attr("id");
+ $('td.checkBoxInFirstCol', $("#" + tableId)).each(function() {
+ var temp = $(this).children('input');
+ temp[0].checked = isChecked;
+ });
+} */
+
+
diff --git a/openo-portal/portal-performance/src/main/webapp/performance/js/pmUtil.js b/openo-portal/portal-performance/src/main/webapp/performance/js/pmUtil.js
new file mode 100644
index 00000000..4d1129c8
--- /dev/null
+++ b/openo-portal/portal-performance/src/main/webapp/performance/js/pmUtil.js
@@ -0,0 +1,458 @@
+var pmUtil = {};
+function html_encode(str) {
+ vars = "";
+ if (str.length == 0)return "";
+ s = str.replace(/&/g, "&amp;"); //1
+ s = s.replace(/</g, "&lt;");
+ s = s.replace(/>/g, "&gt;");
+ s = s.replace(/ /g, "&nbsp;");
+ s = s.replace(/\'/g, "&#39;");
+ s = s.replace(/\"/g, "&quot;");
+ s = s.replace(/\n/g, "<br>");
+ return s;
+};
+pmUtil.indexOperate = function (obj) {
+
+ var aIndex={};
+ aIndex.id=obj.aData.id;
+ aIndex.name=obj.aData.indexName;
+ aIndex.dataType=obj.aData.indexDataType;
+ aIndex.indexDes=obj.aData.indexDes;
+ aIndex.strExpression=obj.aData.strExpression;
+ aIndex.resourceType=obj.aData.resourceType;
+ aIndex.moType=obj.aData.moType;
+ var index = html_encode(JSON.stringify(aIndex));
+ var indexId = obj.aData.id;
+ var innerHtml = "<div class='table-btn'><span class='modify_user'><a class=\"btn-xs grey btn-editable\" href='#' onclick=\"pmUtil.modifyIndex('"+index+"')\"><i class=\"ict-modify\"></i>" + $.i18n.prop('com_zte_ums_ict_pm_action_modify') +
+ "</a></span><span><a href='#' class=\"btn-xs grey btn-editable\" onclick=\"pmUtil.deleteIndex('" +
+ indexId + "','"+obj.aData.moType.id+"')\"><i class=\"ict-delete\"></i>" + $.i18n.prop('com_zte_ums_ict_pm_action_delete') + "</a></span></div>";
+
+ return innerHtml;
+};
+pmUtil.dataTypeRender = function (obj) {
+ var record = obj.aData;
+ obj.aData.indexDataType=obj.aData.dataType;
+ var innerHtml = "<span>"+$.i18n.prop(record.dataType)+"</span>"
+ return innerHtml;
+};
+pmUtil.indexNameLink = function (obj) {
+ var index = html_encode(JSON.stringify(obj.aData));
+ obj.aData.indexName=obj.aData.name;
+ return "<a id='indexName' href='#' onclick=\"pmUtil.queryIndex('"+index+"')\">" + obj.aData.name + "</a>";
+};
+pmUtil.queryIndex=function(index){
+
+ newIndexWizard(commonUtil.strToJson(index),"query");
+ pm.index.vm.title="查看指标";
+ $(".form-group").attr("disabled",true);
+ pm.index.vm.viewVisible=false;
+ pm.index.vm.rtnVisible=true;
+ pm.index.vm.indexVisible=true;
+};
+pmUtil.addIndex=function(){
+
+ newIndexWizard();
+ pm.index.vm.title="新建指标";
+ pm.index.vm.viewVisible=false;
+ pm.index.vm. indexVisible=true;
+};
+pmUtil.modifyIndex=function(index){
+
+ newIndexWizard(commonUtil.strToJson(index));
+ pm.index.vm.title="修改指标";
+ pm.index.vm.viewVisible=false;
+ pm.index.vm.indexVisible=true;
+};
+pmUtil.deleteIndex=function(indexId,moTypeId){
+ bootbox.confirm($.i18n.prop('com_zte_ums_ict_sm_confirmToDeleteIndex'), function (result) {
+ if (result) {
+ var ids=[];
+ var del={};
+ ids.push(indexId);
+ del.ids=ids;
+ $.ajax({
+ "dataType": 'json',
+ "type": "DELETE",
+ "url": "/api/umcpm/v1/motype/"+moTypeId+"/indexes",
+ "data" : JSON.stringify(del),
+ "contentType": 'application/json; charset=utf-8',
+ "success": function (res, textStatus, jqXHR) {
+ window.location.href="./indexView.html";
+ },
+ "error": function () {
+ }
+ });
+ }
+ });
+}
+
+pmUtil.idLink = function (obj) {
+ var record = obj.aData;
+ var thresholdId = new String(record.id);
+ return "<a href='#' onclick=\"pm.threshold.vm.queryThreshold('" + thresholdId + "')\">" + thresholdId + "</a>";
+}
+
+pmUtil.congfirmDel = function (obj) {
+ bootbox.confirm($.i18n.prop('com_zte_ums_ict_sm_confirmToDeleteThreshold'), function (result) {
+ if (result) {
+ pm.threshold.vm.deleteThreshold(obj);
+ }
+ });
+}
+
+pmUtil.allOperate = function (obj) {
+
+ var record = obj.aData;
+ var thresholdId = record.id;
+ //此时的id字段已经被渲染成html片段,如<a href="#" onclick="pm.threshold.vm.queryThreshold('10001')">10001</a>需要提取id
+ thresholdId = thresholdId.substring(thresholdId.indexOf("('") + 2, thresholdId.indexOf("')"));
+
+ var innerHtml = "";
+
+ innerHtml = "<div class='table-btn'><span class='modify_user'><a class=\"btn-xs grey btn-editable\" href='#' onclick=\"pm.threshold.vm.modifyThreshold('" +
+ thresholdId + "')\"><i class=\"ict-modify\"></i>" + $.i18n.prop('com_zte_ums_ict_pm_action_modify') +
+ "</a></span><span><a href='#' class=\"btn-xs grey btn-editable\" onclick=\"pmUtil.congfirmDel('" +
+ thresholdId + "')\"><i class=\"ict-delete\"></i>" + $.i18n.prop('com_zte_ums_ict_pm_action_delete') + "</a></span></div>";
+
+ return innerHtml;
+}
+
+//获取QueryId
+pmUtil.getUrlParam=function(name){
+ var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
+ var search =decodeURIComponent(location.search.substring(1)); //decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。
+ var r =search.match(reg); //匹配目标参数
+ if (r != null) return unescape(r[2]); //unescape() 函数可对通过 escape() 编码的字符串进行解码。
+ return null; //返回参数值
+}
+
+
+pmUtil.addMeatask = function() {
+ newMeataskWizard();
+ pm.meatask.vm.pageTitle="新建任务";
+ pm.meatask.vm.viewVisible=false;
+ pm.meatask.vm.createMeataskVisible=true;
+ pm.meatask.vm.queryMeataskVisible=false;
+}
+
+pmUtil.meataskOperate = function (obj) {
+ var record = obj.aData;
+ var meataskId = record.id;
+ //此时的id字段已经被渲染成html片段,如<a href="#" onclick="pm.threshold.vm.queryThreshold('10001')">10001</a>需要提取id
+ meataskId = meataskId.substring(meataskId.indexOf("('") + 2, meataskId.indexOf("')"));
+
+ var innerHtml = "";
+
+ innerHtml =
+ [
+ "<div class=\"table-btn\">",
+ "<span class=\"modify_user\">",
+ "<a class=\"btn-xs grey btn-editable\" href=\"#\" onclick=\"pmUtil.queryMeatask('" + meataskId +
+ "')\"><i class=\"ict-Magnifier\"></i>",
+ $.i18n.prop('com_zte_ums_ict_pm_action_query'),
+ "</a>",
+ "</span>",
+ "<span class=\"modify_user\">",
+ "<a class=\"btn-xs grey btn-editable\" href=\"#\" onclick=\"pmUtil.modifyMeatask('" + meataskId + "'," + obj.iDataRow +
+ ")\"><i class=\"ict-modify\"></i>",
+ $.i18n.prop('com_zte_ums_ict_pm_action_modify'),
+ "</a>",
+ "</span>",
+ "<span>",
+ "<a href=\"#\" class=\"btn-xs grey btn-editable\" onclick=\"pmUtil.deleteMeatask('" + meataskId + "'," + obj.iDataRow +
+ ")\"><i class=\"ict-delete\"></i>",
+ $.i18n.prop('com_zte_ums_ict_pm_action_delete'),
+ "</a>",
+ "</span>",
+ "</div>"
+ ].join("\n");
+ return innerHtml;
+}
+
+pmUtil.getActiveStatus = function(obj) {
+ var meataskId = obj.aData.id;
+ meataskId = meataskId.substring(meataskId.indexOf("('") + 2, meataskId.indexOf("')"));
+ var activeStatus = obj.aData.activeStatus;
+
+ var prefixStr = "";
+ var suffixStr = "";
+ if(activeStatus == 0){
+ prefixStr = "<a href='#' class=\"label label-sm label-danger\" onclick=\"pm.meatask.vm.changeActiveStatus('";
+ suffixStr = ")\">暂停</a>";
+ }else{
+ prefixStr = "<a href='#' class=\"label label-sm label-info\" onclick = \"pm.meatask.vm.changeActiveStatus('";
+ suffixStr = ")\">激活</a>";
+ }
+
+ var innerHtml = prefixStr + meataskId + "'," + activeStatus + "," + obj.iDataRow + suffixStr;
+
+ return innerHtml;
+}
+
+pmUtil.granularityRender = function(obj) {
+ var data = obj.aData;
+ switch(data.granularity){
+ case (300):
+ return "5分钟";
+ case (900):
+ return "15分钟";
+ case (3600):
+ return "1小时";
+ }
+ return "5分钟";
+}
+
+pmUtil.queryMeatask = function(meataskId) {
+ queryMeataskWizard("queryID");
+ pm.meatask.vm.pageTitle="查询任务";
+ pm.meatask.vm.viewVisible=false;
+ pm.meatask.vm.createMeataskVisible=false;
+ pm.meatask.vm.queryMeataskVisible=true;
+
+ $("#queryMeataskSubmit").click(function() {
+ pm.meatask.vm.$showResultTable();
+ });
+}
+
+pmUtil.meataskIdLink = function(obj) {
+ var meatskId = obj.aData.id;
+ return "<a href='#' onclick=\"pmUtil.viewMeataskById('" + meatskId + "')\">" + meatskId + "</a>";
+}
+
+pmUtil.viewMeataskById = function(meatskId) {
+ newMeataskWizard(meatskId);
+ pm.meatask.vm.pageTitle="查看任务";
+ pm.meatask.vm.viewVisible=false;
+ pm.meatask.vm.createMeataskVisible=true;
+ pm.meatask.vm.queryMeataskVisible=false;
+}
+
+pmUtil.timeRender = function( obj ){
+ var time=obj.aData[obj.mDataProp];
+ if(time!="0"){
+ var date = new Date(obj.aData[obj.mDataProp]);
+ return commonUtil.parseDate(date , 'yyyy-MM-dd hh:mm:ss');
+ }
+};
+
+pmUtil.deleteMeatask=function(meataskId, row){
+ bootbox.confirm("确认删除此任务吗?", function (result) {
+ if (result) {
+ $("#ict_meatask_table_div tr:eq("+(row+1)+")").attr('style', 'display:none;');
+ }
+ });
+}
+
+pmUtil.modifyMeatask = function(meataskId, row) {
+ modifyMeataskWizard("modifyID");
+ pm.meatask.vm.pageTitle="修改任务";
+ pm.meatask.vm.viewVisible=false;
+ pm.meatask.vm.createMeataskVisible=true;
+ pm.meatask.vm.queryMeataskVisible=false;
+}
+
+pmUtil.randomCPU = function() {
+ var percent = Math.random()*100;
+ percent = Math.round(percent);
+ return percent + "%";
+}
+
+pmUtil.calculateTime = function(obj) {
+ var data = obj.aData;
+ var time = data.beginTime + data.granularity;
+
+ if(time!="0"){
+ var date = new Date(data.granularity * 1000 + obj.aData[obj.mDataProp]);
+ return commonUtil.parseDate(date , 'yyyy-MM-dd hh:mm:ss');
+ }
+}
+
+pmUtil.queryMeatask = function(meataskId) {
+ pm.meatask.vm.pageTitle="查询任务";
+ pm.meatask.vm.viewVisible=false;
+ pm.meatask.vm.createMeataskVisible=false;
+ pm.meatask.vm.queryMeataskVisible=true;
+}
+
+pmUtil.setDateRange = function (dataRangeId, vm) {
+
+ var open = 'right';
+
+ //var month = $.i18n.prop('ngict-iui-dateRange-month');
+
+ var optionSet1 = {
+
+ //startDate: moment().subtract(179, 'days'),
+
+ //endDate: moment(),
+
+ startDate : "2015-12-31",
+
+ endDate : "2016-12-31",
+
+ //format: 'YYYY-MM-DD',
+ format : 'YYYY-MM-DD h:mm A',
+
+ dateLimit : {
+ days : 180
+ },
+
+ showWeekNumbers : false,
+
+ timePicker : true,
+ timePickerIncrement : 5,
+
+ opens : open,
+
+ separator : ' - ',
+
+ locale : {
+
+ applyLabel : $.i18n.prop('ngict-iui-dateRange-applyLabel'),
+
+ cancelLabel : $.i18n.prop('ngict-iui-dateRange-cancelLabel'),
+
+ fromLabel : $.i18n.prop('ngict-iui-dateRange-fromLabel'),
+
+ toLabel : $.i18n.prop('ngict-iui-dateRange-toLabel'),
+
+ customRangeLabel : $.i18n.prop('ngict-iui-dateRange-customRangeLabel'),
+
+ daysOfWeek : [
+
+ $.i18n.prop('ngict-iui-dateRange-Sunday'),
+
+ $.i18n.prop('ngict-iui-dateRange-Monday'),
+
+ $.i18n.prop('ngict-iui-dateRange-Tuesday'),
+
+ $.i18n.prop('ngict-iui-dateRange-Wednesday'),
+
+ $.i18n.prop('ngict-iui-dateRange-Thursday'),
+
+ $.i18n.prop('ngict-iui-dateRange-Friday'),
+
+ $.i18n.prop('ngict-iui-dateRange-Saturday')],
+
+ //monthNames : ['1' + month, '2' + month, '3' + month, '4' + month, '5' + month, '6' + month, '7' + month, '8' + month, '9' + month, '10' + month, '11' + month, '12' + month],
+
+ //months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+
+ monthNames: [$.i18n.prop('ngict-iui-dateRange-Jan'),
+ $.i18n.prop('ngict-iui-dateRange-Feb'),
+ $.i18n.prop('ngict-iui-dateRange-Mar'),
+ $.i18n.prop('ngict-iui-dateRange-Apr'),
+ $.i18n.prop('ngict-iui-dateRange-May'),
+ $.i18n.prop('ngict-iui-dateRange-Jun'),
+ $.i18n.prop('ngict-iui-dateRange-Jul'),
+ $.i18n.prop('ngict-iui-dateRange-Aug'),
+ $.i18n.prop('ngict-iui-dateRange-Sep'),
+ $.i18n.prop('ngict-iui-dateRange-Oct'),
+ $.i18n.prop('ngict-iui-dateRange-Nov'),
+ $.i18n.prop('ngict-iui-dateRange-Dec')],
+
+ firstDay : 1
+
+ }
+
+ };
+
+ //datarangepicker确认
+ $('input[id="' + dataRangeId + '"]').bind('apply.daterangepicker', function () {
+
+ //获取时间范围,查询
+
+ // 都设置为0点
+
+ pmUtil.setTime($(this));
+
+ // 更新tooltip内容
+ //$(this).attr("data-original-title", $(this).val());
+
+ });
+
+ $('input[id="' + dataRangeId + '"]').daterangepicker(optionSet1);
+
+};
+
+//daterangepicker设置时间
+pmUtil.setTime = function setTime($obj) {
+
+ //var title = $obj.attr('dtitle');
+
+ var arr = $obj.val().split(' - ');
+
+ //排除日历组件空字符串的情况。
+
+ if (arr[0] != '') {
+
+ var beginTime = new Date(arr[0].replace(/-/g, "/")).getTime();
+
+ var endTime = new Date(arr[1].replace(/-/g, "/")).getTime();
+
+ pm.query.vmPmQuery.beginTime = beginTime;
+
+ pm.query.vmPmQuery.endTime = endTime;
+
+ }
+
+}
+
+pmUtil.formatTime = function formatTime(ms) {
+ var date = new Date(ms);
+ return date.format("yyyy-MM-dd hh:mm:ss");
+}
+
+/*格式化日期*/
+
+Date.prototype.format = function (format) {
+
+ /*
+
+ * format="yyyy-MM-dd hh:mm:ss";
+
+ */
+
+ var o = {
+
+ "M+" : this.getMonth() + 1,
+
+ "d+" : this.getDate(),
+
+ "h+" : this.getHours(),
+
+ "m+" : this.getMinutes(),
+
+ "s+" : this.getSeconds(),
+
+ "q+" : Math.floor((this.getMonth() + 3) / 3),
+
+ "S" : this.getMilliseconds()
+
+ }
+
+ if (/(y+)/.test(format)) {
+
+ format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4
+
+ - RegExp.$1.length));
+
+ }
+
+ for (var k in o) {
+
+ if (new RegExp("(" + k + ")").test(format)) {
+
+ format = format.replace(RegExp.$1, RegExp.$1.length == 1
+
+ ? o[k]
+
+ : ("00" + o[k]).substr(("" + o[k]).length));
+
+ }
+
+ }
+
+ return format;
+
+} \ No newline at end of file
diff --git a/openo-portal/portal-performance/src/main/webapp/performance/js/serverPageTable.js b/openo-portal/portal-performance/src/main/webapp/performance/js/serverPageTable.js
new file mode 100644
index 00000000..85113e78
--- /dev/null
+++ b/openo-portal/portal-performance/src/main/webapp/performance/js/serverPageTable.js
@@ -0,0 +1,217 @@
+var serverPageTable = {};
+/* Bootstrap style full number pagination control */
+$.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings )
+{
+ return {
+ "iStart": oSettings._iDisplayStart,
+ "iEnd": oSettings.fnDisplayEnd(),
+ "iLength": oSettings._iDisplayLength,
+ "iTotal": oSettings.fnRecordsTotal(),
+ "iFilteredTotal": oSettings.fnRecordsDisplay(),
+ "iPage": Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),
+ "iTotalPages": Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )
+ };
+};
+
+$.extend( $.fn.dataTableExt.oPagination, {
+ "bootstrap_extended": {
+ "fnInit": function( oSettings, nPaging, fnDraw ) {
+ var oLang = oSettings.oLanguage.oPaginate;
+ var oPaging = oSettings.oInstance.fnPagingInfo();
+
+ var fnClickHandler = function ( e ) {
+ e.preventDefault();
+ if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {
+ fnDraw( oSettings );
+ }
+ };
+
+ $(nPaging).append(
+ '<div class="pagination-panel"> ' + oLang.sPage + ' ' +
+ '<a href="#" class="btn btn-sm default prev disabled" title="' + oLang.sPrevious + '"><i class="fa fa-angle-left"></i></a>' +
+ '<input type="text" class="pagination-panel-input input-mini input-inline input-sm" maxlenght="5" style="text-align:center; margin: 0 4px; border: 1px solid rgb(169, 169, 169);height: 28px;">' +
+ '<a href="#" class="btn btn-sm default next disabled" title="' + oLang.sNext + '"><i class="fa fa-angle-right"></i></a> ' +
+ oLang.sPageOf + ' <span class="pagination-panel-total"></span>' +
+ '</div>'
+ );
+
+ var els = $('a', nPaging);
+
+ $(els[0]).bind('click.DT', { action: "previous" }, fnClickHandler );
+ $(els[1]).bind('click.DT', { action: "next" }, fnClickHandler);
+
+ $('.pagination-panel-input', nPaging).bind('change.DT', function(e) {
+ var oPaging = oSettings.oInstance.fnPagingInfo();
+ e.preventDefault();
+ var page = parseInt($(this).val());
+ if (page > 0 && page < oPaging.iTotalPages) {
+ if ( oSettings.oApi._fnPageChange(oSettings, page-1) ) {
+ fnDraw( oSettings );
+ }
+ } else {
+ $(this).val(oPaging.iPage + 1);
+ }
+ });
+
+ $('.pagination-panel-input', nPaging).bind('keypress.DT', function(e) {
+ var oPaging = oSettings.oInstance.fnPagingInfo();
+ if (e.which == 13) {
+ var page = parseInt($(this).val());
+ if (page > 0 && page < oSettings.oInstance.fnPagingInfo().iTotalPages) {
+ if ( oSettings.oApi._fnPageChange(oSettings, page-1) ) {
+ fnDraw( oSettings );
+ }
+ } else {
+ $(this).val(oPaging.iPage + 1);
+ }
+ e.preventDefault();
+ }
+ });
+ },
+
+ "fnUpdate": function ( oSettings, fnDraw ) {
+ var iListLength = 5;
+ var oPaging = oSettings.oInstance.fnPagingInfo();
+ var an = oSettings.aanFeatures.p;
+ var i, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2);
+
+ if ( oPaging.iTotalPages < iListLength) {
+ iStart = 1;
+ iEnd = oPaging.iTotalPages;
+ }
+ else if ( oPaging.iPage <= iHalf ) {
+ iStart = 1;
+ iEnd = iListLength;
+ } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {
+ iStart = oPaging.iTotalPages - iListLength + 1;
+ iEnd = oPaging.iTotalPages;
+ } else {
+ iStart = oPaging.iPage - iHalf + 1;
+ iEnd = iStart + iListLength - 1;
+ }
+
+
+ for ( i=0, iLen=an.length ; i<iLen ; i++ ) {
+ var wrapper = $(an[i]).parents(".dataTables_wrapper");
+
+ if (oPaging.iTotalPages <= 0) {
+ $('.pagination-panel, .dataTables_length', wrapper).hide();
+ } else {
+ $('.pagination-panel, .dataTables_length', wrapper).show();
+ }
+
+ $('.pagination-panel-total', an[i]).html(oPaging.iTotalPages);
+ $('.pagination-panel-input', an[i]).val(oPaging.iPage + 1);
+
+ // Remove the middle elements
+ $('li:gt(1)', an[i]).filter(':not(.next)').remove();
+
+ // Add the new list items and their event handlers
+ for ( j=iStart ; j<=iEnd ; j++ ) {
+ sClass = (j==oPaging.iPage+1) ? 'class="active"' : '';
+ $('<li '+sClass+'><a href="#">'+j+'</a></li>')
+ .insertBefore( $('li.next:first', an[i])[0] )
+ .bind('click', function (e) {
+ e.preventDefault();
+ oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;
+ fnDraw( oSettings );
+ } );
+ }
+
+ // Add / remove disabled classes from the static elements
+ if ( oPaging.iPage === 0 ) {
+ $('a.prev', an[i]).addClass('disabled');
+ } else {
+ $('a.prev', an[i]).removeClass('disabled');
+ }
+
+ if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
+ $('a.next', an[i]).addClass('disabled');
+ } else {
+ $('a.next', an[i]).removeClass('disabled');
+ }
+ }
+ }
+ }
+} );
+serverPageTable.initDataTable = function( setting , divId ,pageInfos) {
+ serverPageTable.pageInfo = pageInfos;
+ //转换colomn
+
+ var column = setting.columns;
+ //先把原来的表格清空
+ $('#'+ divId).children().remove();
+ var tableId = setting.tableId;
+ var tableEleStr = '<table class="table table-striped table-bordered table-hover" id= '+ tableId + '>'
+ + '<thead>'
+ +'<tr role="row" class="heading" >'
+ + '</tr>'
+ + '</thead>'
+ +'<tbody>'
+ +'</tbody>'
+ +'</table>';
+ $('#'+ divId).append(tableEleStr);
+ //$('#'+ tableId).append(' <thead><tr role="row" class="heading" ></tr></thead><tbody></tbody>');
+ var trEle = $('#'+ tableId + ' > thead >tr');
+ //var dataTableColumn = [];
+ for ( var one in column){
+ var th = '<th>' + column[one].name + '</th>';
+ trEle.append(th);
+ }
+ serverPageTable.pageInfo = pageInfos;
+ if(!setting.pageHtml){
+ pageHtml="<'row'<'col-md-12 col-sm-12'lip>r><'table-scrollable't>>";
+ }else{
+ pageHtml=setting.pageHtml;
+ }
+ var table = $("#" + tableId).dataTable({
+ //"sDom" : "tr<'row'<'col-md-6 col-sm-12'><'col-md-6 col-sm-12'pli>>", // datatable layout
+ "sDom" : pageHtml,
+ "oLanguage": setting.language,//汉化
+ "bJQueryUI": true,
+ "bPaginate": true,// 分页按钮
+ "bFilter": false,// 搜索栏
+ "bAutoWidth":true,//自动设置列宽
+ "bLengthChange": true,// 每行显示记录数
+ "iDisplayLength": 10,// 每页显示行数
+ "bSort": false,// 排序
+ "bInfo": true,// Showing 1 to 10 of 23 entries 总记录数没也显示多少等信息
+ "bWidth": true,
+ "bScrollCollapse": true,
+ "sPaginationType": "bootstrap_extended", // 分页,一共两种样式 另一种为two_button // 是datatables默认
+ "bProcessing": true,
+ "bServerSide": true,
+ "bDestroy": true,
+ "bSortCellsTop": true,
+ "sAjaxSource": setting.restUrl,
+ "aoColumns": setting.columns,
+ "fnServerData": function (sSource, aoData, fnCallback, oSettings) {
+ fnServerData(sSource, aoData, fnCallback, oSettings);
+ }
+ });
+ $('#'+ tableId + '>tbody').on('click', 'td.details-control', function () {
+ var tr = $(this).closest('tr');
+ //var nTr = $(this).parents('tr')[0];
+ //var row = table.row( tr );
+ if ( table.fnIsOpen(tr[0]) ){
+ table.fnClose( tr[0] );
+ //if ( row.child.isShown() ) {
+ // This row is already open - close it
+ //row.child.hide();
+ tr.removeClass('shown');
+ }
+ else {
+ // Open this row
+ table.fnOpen( tr[0], format_Detail(table, tr[0],column) );
+ //row.child( format_Detail(row.data()) ).show();
+ tr.addClass('shown');
+ }
+ } );
+ return table;
+
+
+};
+
+
+
+