2 * Copyright 2016-2017, CMCC Technologies Co., Ltd.
\r
4 * Licensed under the Apache License, Version 2.0 (the "License");
\r
5 * you may not use this file except in compliance with the License.
\r
6 * You may obtain a copy of the License at
\r
8 * http://www.apache.org/licenses/LICENSE-2.0
\r
10 * Unless required by applicable law or agreed to in writing, software
\r
11 * distributed under the License is distributed on an "AS IS" BASIS,
\r
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
13 * See the License for the specific language governing permissions and
\r
14 * limitations under the License.
\r
16 var alarmsUtil = {};
\r
19 alarmsUtil.timeRender = function (obj) {
\r
20 if (obj.aData[obj.mDataProp] == -1 || obj.aData[obj.mDataProp] == 0) {
\r
23 var date = new Date(obj.aData[obj.mDataProp]);
\r
24 return commonUtil.parseDate(date, 'yyyy-MM-dd hh:mm:ss');
\r
28 alarmsUtil.LinkRender = function (obj) {
\r
29 return '<a href="">' + obj.aData[obj.mDataProp] + '</a>';
\r
32 alarmsUtil.ackState = function (obj) {
\r
35 var ackState = obj.aData.ackState;
\r
36 var alarmId = obj.aData.id;
\r
37 var alarmIdArr = [alarmId];
\r
38 var tableId="\'" + obj.oSettings.sTableId + "\'";
\r
39 var divId="\'" + obj.oSettings.nTableWrapper.parentElement.id + "\'";
\r
40 if (ackState == "1" && vm.ruleType == 1) {
\r
41 innerHtml = "<a class=\"label label-sm label-info\" onclick=\" alarmsUtil.unaffirm([" + alarmIdArr + "]," + tableId + "," + divId + ","+obj.iDataRow+") \">Acknowledge</a>";
\r
42 } else if(ackState == "1" && vm.ruleType == 2){
\r
43 innerHtml = "<div class=\"label label-sm label-info\">Acknowledge</div>";
\r
44 } else if(ackState == "2" ){
\r
45 innerHtml = "<a class=\"label label-sm acknow-purple\" onclick=\" alarmsUtil.affirm([" + alarmIdArr + "]," + tableId + "," + divId + ","+obj.iDataRow+")\">Unacknowledge</a>";
\r
50 alarmsUtil.Severity = function (obj) {
\r
53 var Severity = obj.aData.perceivedSeverity;
\r
54 if (Severity == "1") {
\r
55 innerHtml = "<span style=\"color:#E24949 \" class=\"ict-alarm \" ></span><sapn \">Critical</sapn>";
\r
56 } else if (Severity == "2") {
\r
57 innerHtml = "<span style=\"color:#E59313 \" class=\"ict-alarm\" ></span><sapn \">Major</sapn>";
\r
58 } else if (Severity == "3") {
\r
59 innerHtml = "<span style=\"color:#F7E51B \" class=\"ict-alarm\" ></span><sapn \">Minor</sapn>";
\r
60 } else if (Severity == "4") {
\r
61 innerHtml = "<span style=\"color:#61C2DE \" class=\"ict-alarm\" ></span><sapn \">Warning</sapn>";
\r
67 alarmsUtil.operate = function (obj) {
\r
69 var alarmId = obj.aData.alarmId;
\r
70 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>";
\r
74 alarmsUtil.congfirms = function (alarmId) {
\r
76 bootbox.confirm('你确定要删除该告警吗?', function (result) { //你确定要删除该用户吗?
\r
79 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";
\r
83 //数据格式:[tab标签id,tabItem的名字,图片路径,tabItem的描述,更多的LInk地址]
\r
84 contentType : 'application/json; charset=utf-8',
\r
88 success : function (msg) {
\r
89 setTimeout(function () {
\r
100 alarmsUtil.allOperate = function (obj) {
\r
102 var record = obj.aData;
\r
103 var hasModify = commonUtil.hasRigth('uep.pfl.sm.updateuser');
\r
104 var hasDel = commonUtil.hasRigth('uep.pfl.sm.deluser');
\r
105 var selectUsername = new String(record.userName);
\r
106 var innerHtml = "";
\r
110 if (hasDel && selectUsername != "admin") {
\r
111 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>";
\r
113 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>";
\r
121 alarmsUtil.refresh = function () {
\r
135 alarmsUtil.loopAffirm = function (type) {
\r
137 var checkArr = $('#ict_alarms_table_div .details-check input[type="checkbox"]');
\r
139 for (var i = 0; i < checkArr.length; i++) {
\r
140 if($(checkArr[i]).prop("checked")){
\r
141 if ($(checkArr[i]).attr('alarmId') != 'undefined' && $(checkArr[i]).attr('alarmId') != null) {
\r
142 aidArr.push($(checkArr[i]).attr('alarmId'));
\r
147 if (type == "1" && aidArr.length > 0) {
\r
148 alarmsUtil.affirm(aidArr);
\r
149 } else if (type == "2" && aidArr.length > 0) {
\r
150 alarmsUtil.unaffirm(aidArr);
\r
161 alarmsUtil.loopDelAralms = function () {
\r
163 var checkArr = $('#ict_alarms_table_div .details-check input[type="checkbox"]');
\r
165 for (var i = 0; i < checkArr.length; i++) {
\r
166 if($(checkArr[i]).prop("checked")){
\r
167 if ($(checkArr[i]).attr('alarmId') != 'undefined' && $(checkArr[i]).attr('alarmId') != null) {
\r
168 aidArr.push($(checkArr[i]).attr('alarmId'));
\r
173 if (aidArr.length > 0) {
\r
174 bootbox.confirm('Are you sure to delete alarm(s)', function (result) {
\r
176 var sSource = "/openoapi/umc/v1/fm/curalarms?request={\"ids\":["+ aidArr +"]}";
\r
180 contentType : 'application/json; charset=utf-8',
\r
184 success : function (msg) {
\r
185 setTimeout(function () {
\r
195 alarmsUtil.affirm = function (alarmIdArr,tableId,divId) {
\r
200 for(i=0;i<alarmIdArr.length;i++){
\r
201 request.ids.push(alarmIdArr[i]);
\r
204 if (vm.ruleType == 1) { //当前告警
\r
205 request.ackState=1;
\r
206 getData.request = JSON.stringify(request);
\r
207 url = "/openoapi/umc/v1/fm/curalarms";
\r
209 url = "/ngict/rest/fm/hisalarms"
\r
214 contentType : 'application/json; charset=utf-8',
\r
215 url : url + "?" + "request=" + JSON.stringify(request),
\r
217 success : function (msg) {
\r
218 setTimeout(function () {
\r
219 refreshByCond(tableId,divId);
\r
222 error : function(msg){
\r
223 setTimeout(function () {
\r
224 refreshByCond(tableId,divId);
\r
231 alarmsUtil.unaffirm = function (alarmIdArr,tableId,divId) {
\r
236 for(i=0;i<alarmIdArr.length;i++){
\r
237 request.ids.push(alarmIdArr[i]);
\r
239 request.ackState=2;
\r
240 getData.request = JSON.stringify(request);
\r
242 if (vm.ruleType == 1) { //当前告警
\r
243 url = "/openoapi/umc/v1/fm/curalarms";
\r
246 "contentType" : 'application/json; charset=utf-8',
\r
247 "url" : url + "?request=" + JSON.stringify(request),
\r
249 success : function (msg) {
\r
250 setTimeout(function () {
\r
251 refreshByCond(tableId,divId);
\r
254 error : function(msg){
\r
255 setTimeout(function () {
\r
256 refreshByCond(tableId,divId);
\r
266 alarmsUtil.checkBox = function (obj) {
\r
268 var alarmId = obj.aData.id;
\r
269 var innerHtml = '<input type="checkbox" alarmId="' + alarmId + '"/> ';
\r
274 alarmsUtil.initProbableCausesTree = function () {
\r
278 selectedMulti : false, //设置是否可以同时选中多个借点。
\r
279 showIcon : true, //不显示图标
\r
280 showLine : false, //是否显示节点之间的连线
\r
284 enable : true //如果设置为 true,请务必设置 setting.data.simpleData 内的其他参数: idKey / pIdKey / rootPId,并且让数据满足父子关系。
\r
288 onExpand : zTreeOnExpand, //每次节点展开后触发的事件。
\r
289 onCollapse : zTreeOnCollapse,
\r
290 //onClick: zTreeOnClick
\r
293 var probableCausesNodes;
\r
296 getProbableCausesTreeNodes("");
\r
298 $.fn.zTree.init($("#probableCausesTree"), setting, probableCausesNodes);
\r
300 var treeObj = $.fn.zTree.getZTreeObj("probableCausesTree");
\r
302 function initDataAtTree(){
\r
303 getAllNodesWithoutTypeEqual2("")
\r
306 function getAllNodesWithoutTypeEqual2(parentId){
\r
307 var treeNodes=treeObj.getNodesByParam("parentId", parentId, null);
\r
308 for(var i=0;i<treeNodes.length;i++){
\r
309 if(treeNodes[i].type===0){
\r
310 getProbableCausesTreeNodes(treeNodes[i].id);
\r
311 addNodesToTree(treeNodes[i],"probableCausesTree");
\r
312 getAllNodesWithoutTypeEqual2(treeNodes[i].id);
\r
317 function zTreeOnExpand(event, treeId, treeNode) {
\r
318 var childrenNodes = treeNode.children;
\r
319 if (!childrenNodes) { //当没有子节点的时候才加载,否则会重复加载。
\r
320 getProbableCausesTreeNodes(treeNode.id);
\r
321 addNodesToTree(treeNode,treeId);
\r
325 function addNodesToTree(treeNode, treeId) {
\r
326 var obj = $.fn.zTree.getZTreeObj(treeId);
\r
327 var node=obj.getNodeByParam("id", treeNode.id, null)
\r
328 obj.addNodes(node, probableCausesNodes);
\r
331 function zTreeOnCollapse(event, treeId, treeNode) {};
\r
333 //告警信息中的type为0、1是父节点,2为子节点
\r
334 function isParentNode(type) {
\r
341 function constructProblemCauseName(node){
\r
345 return node.desc + "(" + node.value + ")";
\r
349 function getProbableCausesTreeNodes(alarmCodeParentId) {
\r
350 probableCausesNodes = new Array();
\r
353 request.parentId = alarmCodeParentId;
\r
354 getData.request = JSON.stringify(request);
\r
357 "dataType" : 'json',
\r
359 "url" : "/openoapi/umc/v1/fm/probablecausestree",
\r
361 "contentType" : 'application/json; charset=utf-8',
\r
362 "success" : function (res, textStatus, jqXHR) {
\r
364 chkDisabled = false;
\r
366 for (var i = 0; i < nodes.length; i++) {
\r
367 probableCausesNodes.push({
\r
369 pId : nodes[i].parentId,
\r
370 name : constructProblemCauseName(nodes[i]),
\r
371 chkDisabled : false,
\r
372 isParent : isParentNode(nodes[i].type),
\r
373 parentId : alarmCodeParentId,//treenode节点
\r
374 codeId : nodes[i].value,
\r
375 type : nodes[i].type
\r
380 "error" : function () {}
\r
386 alarmsUtil.initDeptTree = function () {
\r
390 selectedMulti : false, //设置是否可以同时选中多个借点。
\r
391 showIcon : true, //不显示图标
\r
392 showLine : false, //是否显示节点之间的连线
\r
396 enable : true //如果设置为 true,请务必设置 setting.data.simpleData 内的其他参数: idKey / pIdKey / rootPId,并且让数据满足父子关系。
\r
400 onExpand : zTreeOnExpand, //每次节点展开后触发的事件。
\r
401 onCollapse : zTreeOnCollapse,
\r
402 //onClick: zTreeOnClick
\r
407 function initDeptTree() {
\r
418 $.fn.zTree.init($("#deptTree"), setting, zNodes);
\r
421 function getDeptTreeNode(alarmCodeParentId) {
\r
422 if(alarmCodeParentId === "VDU"){
\r
423 url="/api/roc/v1/resource/vdus";
\r
424 }else if(alarmCodeParentId === "HOST"){
\r
425 url="/api/roc/v1/resource/hosts";
\r
429 "dataType" : 'json',
\r
432 "contentType" : 'application/json; charset=utf-8',
\r
433 "success" : function (res, textStatus, jqXHR) {
\r
434 var nodes = res.data;
\r
436 for (var i = 0; i < nodes.length; i++) {
\r
439 parentId : alarmCodeParentId,//treenode节点
\r
440 name : nodes[i].name,
\r
447 "error" : function () {}
\r
450 function zTreeOnExpand(event, treeId, treeNode) {
\r
451 getDeptTreeNode(treeNode.id);
\r
452 addNodesToTree(treeNode,treeId);
\r
455 function addNodesToTree(treeNode, treeId) {
\r
456 var obj = $.fn.zTree.getZTreeObj(treeId);
\r
457 var node=obj.getNodeByParam("id", treeNode.id, null)
\r
458 obj.addNodes(node, zNodes);
\r
460 function zTreeOnCollapse(event, treeId, treeNode) {};
\r
464 alarmsUtil.initTree = function () {
\r
466 alarmsUtil.initProbableCausesTree();
\r
467 alarmsUtil.initDeptTree();
\r
469 function initFormData(ruleType) {
\r
471 $("#confirmAction").hide();
\r
472 $("#filterType").hide();
\r
473 $("#action").hide();
\r
474 if (ruleType == "alarmFilter") {
\r
475 $("#filterType").show();
\r
476 } else if (ruleType == "ack") {
\r
477 $("#confirmAction").show();
\r
478 } else if (ruleType == "forward") {
\r
479 $("#action").show();
\r
484 function getNumbers(rule) {
\r
486 for (var i = 0; i < textValues.length; i++) {
\r
487 rule[textValues[i]] = $("input[name='" + textValues[i] + "']").val();
\r
492 function getCheckboxs(rule) {
\r
494 for (var i = 0; i < else_checkboxNames.length; i++) {
\r
495 rule[else_checkboxNames[i]] = $("input[name='" + else_checkboxNames[i] + "']").parent().hasClass('checked');
\r
497 for (var item in checkboxNames_pair_spinnerIds) {
\r
498 rule[item] = $('#' + checkboxNames_pair_spinnerIds[item]).val();
\r
502 function setCheckboxs(rule) {
\r
504 for (var item in checkboxNames_pair_spinnerIds) {
\r
507 value = rule[item];
\r
509 $('#' + item).val(value);
\r
510 setSpinnerIsEnable(item, value);
\r
512 for (var i = 0; i < else_checkboxNames.length; i++) {
\r
513 $("input[name='" + else_checkboxNames[i] + "']").parent().iCheck(rule[else_checkboxNames[i]] ? 'check' : 'uncheck');
\r
518 alarmsUtil.moveNode = function (item) {
\r
519 if (item.hasClass("ict-arrowRight")) {
\r
520 alarmsUtil.rightNode(item);
\r
521 } else if (item.hasClass("ict-arrowLeft")) {
\r
522 alarmsUtil.leftNode(item);
\r
524 alarmsUtil.removeAll(item);
\r
530 alarmsUtil.rightNode = function (item) {
\r
532 var selecedNodeIds = [];
\r
533 var treeType = item.attr('treeType');
\r
534 var obj = $.fn.zTree.getZTreeObj(treeType);
\r
535 var treeNodes = obj.getSelectedNodes();
\r
538 if (treeType == "deptTree") {
\r
539 var $tds = $("#selectedDeptTreeTable td");
\r
540 $table = $("#selectedDeptTreeTable");
\r
541 for (var i = 0; i < $tds.length; i++) {
\r
542 selecedNodeIds.push($tds.eq(i).attr('nodeid'));
\r
544 } else if (treeType == "probableCausesTree") {
\r
545 var $tds = $("#selectedProbableCausesTreeTable td");
\r
546 $table = $("#selectedProbableCausesTreeTable");
\r
547 for (var i = 0; i < $tds.length; i++) {
\r
548 var systemTypeAndProbableCause={};
\r
549 systemTypeAndProbableCause.codeId=$tds.eq(i).attr('codeId');
\r
550 systemTypeAndProbableCause.parentid=$tds.eq(i).attr('parentid');
\r
551 systemTypeAndProbableCause.type=$tds.eq(i).attr('type');
\r
552 selecedNodeIds.push(systemTypeAndProbableCause);
\r
557 for (var i = 0; i < treeNodes.length; i++) {
\r
560 var text = treeNodes[i].name;
\r
561 var id = treeNodes[i].id;
\r
562 var codeId = treeNodes[i].codeId;
\r
565 if (treeType == "deptTree") {
\r
566 var oid = treeNodes[i].oid;
\r
567 htmlStr = "<tr><td nodeId=" + id + " oid=" + oid + " >" + text + "</td></tr>";
\r
568 } else if (treeType == "probableCausesTree") {
\r
570 parentId = treeNodes[i].parentId;
\r
571 type = treeNodes[i].type;
\r
572 htmlStr = "<tr><td codeId=" + codeId + " parentId=" + parentId + " type=" + type + " >" + text + "</td></tr>";
\r
575 if(treeType == "probableCausesTree"){
\r
576 if(treeNodes[i].type === 2){
\r
577 for(i=0;i<selecedNodeIds.length;i++){
\r
578 if(selecedNodeIds[i].codeId === codeId || selecedNodeIds[i].codeId === parentId){
\r
579 bootbox.alert("此节点(子树)或其父子树已经被添加!", function () {});
\r
583 }else if(treeNodes[i].type === 1){
\r
584 $('#selectedProbableCausesTreeTable [parentid='+codeId+']').remove();
\r
585 for(i=0;i<selecedNodeIds.length;i++){
\r
586 if(selecedNodeIds[i].codeId === codeId ){
\r
587 bootbox.alert("此节点(子树)或其父子树已经被添加!", function () {});
\r
591 }else if(treeNodes[i].type === 0){
\r
592 bootbox.alert("不支持添加MOC", function () {});
\r
597 $table.append(htmlStr);
\r
601 $('#selectedDeptTreeTable td').on("click", function () {
\r
604 var $tds = $('#selectedDeptTree td');
\r
606 for (var i = 0; i < $tds.length; i++) {
\r
607 $tds.eq(i).removeClass('tallCellSelected');
\r
608 $tds.eq(i).parent().removeClass('checked');
\r
611 $(this).addClass('tallCellSelected');
\r
612 $(this).parent().addClass("checked"); //tr 添加一个 checked 样式。
\r
615 $('#selectedProbableCausesTreeTable td').on("click", function () {
\r
618 var $tds = $('#selectedProbableCausesTreeTable td');
\r
620 for (var i = 0; i < $tds.length; i++) {
\r
621 $tds.eq(i).removeClass('tallCellSelected');
\r
622 $tds.eq(i).parent().removeClass('checked');
\r
625 $(this).addClass('tallCellSelected');
\r
626 $(this).parent().addClass("checked"); //tr 添加一个 checked 样式。
\r
633 alarmsUtil.leftNode = function (item) {
\r
635 var treeType = item.attr('treeType');
\r
636 if (treeType == "deptTree") {
\r
637 $('#selectedDeptTreeTable').children().children(".checked").remove();
\r
638 } else if (treeType == "probableCausesTree") {
\r
639 $('#selectedProbableCausesTreeTable').children().children(".checked").remove();
\r
644 alarmsUtil.removeAll = function (item) {
\r
646 var treeType = item.attr('treeType');
\r
647 if (treeType == "deptTree") { //如果是资源树
\r
648 $('#selectedDeptTreeTable').children().remove();
\r
649 } else if (treeType == "probableCausesTree") {
\r
650 $('#selectedProbableCausesTreeTable').children().remove();
\r
658 //调用datarangepicker组件 datarange 初始化
\r
660 alarmsUtil.setDateRange = function (dataRangeId, vm) {
\r
662 var open = 'right';
\r
664 startDate : "2015-08-02",
\r
665 endDate : "2015-08-03",
\r
666 format : 'YYYY-MM-DD h:mm A',
\r
670 showWeekNumbers : false,
\r
672 timePickerIncrement : 5,
\r
676 applyLabel : $.i18n.prop('ngict_fm_iui_curalarm_ok'),
\r
677 cancelLabel : $.i18n.prop('ngict_fm_iui_curalarm_cancel'),
\r
678 fromLabel : $.i18n.prop('ngict_fm_iui_curalarm_from'),
\r
679 toLabel : $.i18n.prop('ngict_fm_iui_curalarm_to'),
\r
681 $.i18n.prop('ngict_fm_iui_curalarm_Sun'),
\r
682 $.i18n.prop('ngict_fm_iui_curalarm_Mon'),
\r
683 $.i18n.prop('ngict_fm_iui_curalarm_Tues'),
\r
684 $.i18n.prop('ngict_fm_iui_curalarm_Wed'),
\r
685 $.i18n.prop('ngict_fm_iui_curalarm_Thurs'),
\r
686 $.i18n.prop('ngict_fm_iui_curalarm_Fri'),
\r
687 $.i18n.prop('ngict_fm_iui_curalarm_Sat')
\r
689 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')],
\r
694 //datarangepicker确认
\r
695 $('input[id="' + dataRangeId + '"]').bind('apply.daterangepicker', function () {
\r
700 $(this).attr("data-original-title", $(this).val());
\r
703 $('input[id="' + dataRangeId + '"]').daterangepicker(optionSet1);
\r
707 //关闭打开datarangepicker选择器
\r
708 alarmsUtil.dateRangeEnableDisable = function (customDateRangeId) {
\r
710 $('#' + customDateRangeId).on('ifChecked', function () {
\r
712 if (customDateRangeId == "customAckTime") {
\r
713 vm.dataRangeLocationDisabled = false;
\r
714 if(vm.fmConds.ackTimeStarTime!=null && vm.fmConds.ackTimeEndTime!=null){
\r
715 vm.fmConds.ackTimeMode=0;
\r
717 } else if (customDateRangeId == "customRaisedTime") {
\r
718 vm.dataRangeTypeDisabled = false;
\r
719 if(vm.fmConds.alarmRaisedStartTime!=null && vm.fmConds.alarmRaisedEndTime!=null){
\r
720 vm.fmConds.alarmRaisedTimeMode=0;
\r
722 } else if (customDateRangeId == "customClearTime"){
\r
723 vm.dataRangeCodeDisabled = false;
\r
724 if(vm.fmConds.clearedTimeStartTime!=null && vm.fmConds.clearedTimeEndTime!=null){
\r
725 vm.fmConds.clearedTimeMode=0;
\r
729 //setTime($('#' + dataRangeId));
\r
731 $('#' + customDateRangeId).on('ifUnchecked', function () {
\r
733 if (customDateRangeId == "customAckTime") {
\r
735 vm.dataRangeLocationDisabled = true;
\r
736 vm.fmConds.ackTimeMode=null;
\r
738 } else if (customDateRangeId == "customRaisedTime") {
\r
740 vm.dataRangeTypeDisabled = true;
\r
741 vm.fmConds.alarmRaisedTimeMode=null;
\r
743 } else if (customDateRangeId == "customClearTime"){
\r
745 vm.dataRangeCodeDisabled = true;
\r
746 vm.fmConds.clearedTimeMode=null;
\r
754 alarmsUtil.dateRangeCustom = function (vm) {
\r
756 $("input[name=timeConfirm]").on("ifClicked", function () {
\r
757 if ($(this).parent().hasClass("checked")) {
\r
758 $(this).iCheck('uncheck');
\r
762 $("input[name=timeOccur]").on("ifClicked", function () {
\r
763 if ($(this).parent().hasClass("checked")) {
\r
764 $(this).iCheck('uncheck');
\r
768 $("input[name=timeClear]").on("ifClicked", function () {
\r
769 if ($(this).parent().hasClass("checked")) {
\r
770 $(this).iCheck('uncheck');
\r
774 $("input[cond_id=time]").on('ifChecked', function () {
\r
776 var nowTime = (new Date()).toLocaleDateString();
\r
777 var condDate = $(this).attr("cond_value");
\r
779 if ($(this).attr("name") == "timeConfirm") {
\r
780 if (condDate == "1") {
\r
781 vm.fmConds.ackRelativeTime = 1 * 24 * 60 * 60 * 1000;
\r
782 vm.fmConds.ackTimeMode = 1;
\r
783 } else if (condDate == "2") {
\r
784 vm.fmConds.ackRelativeTime = 2 * 24 * 60 * 60 * 1000;
\r
785 vm.fmConds.ackTimeMode = 1;
\r
786 } else if (condDate == "7") {
\r
787 vm.fmConds.ackRelativeTime = 7 * 24 * 60 * 60 * 1000;
\r
788 vm.fmConds.ackTimeMode = 1;
\r
792 if ($(this).attr("name") == "timeOccur") {
\r
793 if (condDate == "1") {
\r
794 vm.fmConds.alarmRaisedRelativeTime = 1 * 24 * 60 * 60 * 1000;
\r
795 vm.fmConds.alarmRaisedTimeMode = 1;
\r
796 } else if (condDate == "2") {
\r
797 vm.fmConds.alarmRaisedRelativeTime = 2 * 24 * 60 * 60 * 1000;
\r
798 vm.fmConds.alarmRaisedTimeMode = 1;
\r
799 } else if (condDate == "7") {
\r
800 vm.fmConds.alarmRaisedRelativeTime = 7 * 24 * 60 * 60 * 1000;
\r
801 vm.fmConds.alarmRaisedTimeMode = 1;
\r
805 if ($(this).attr("name") == "timeClear") {
\r
806 if (condDate == "1") {
\r
807 vm.fmConds.clearedTimeRelativeTime =1 * 24 * 60 * 60 * 1000;
\r
808 vm.fmConds.clearedTimeMode = 1;
\r
809 } else if (condDate == "2") {
\r
810 vm.fmConds.clearedTimeRelativeTime =2 * 24 * 60 * 60 * 1000;
\r
811 vm.fmConds.clearedTimeMode = 1;
\r
812 } else if (condDate == "7") {
\r
813 vm.fmConds.clearedTimeRelativeTime =7 * 24 * 60 * 60 * 1000;
\r
814 vm.fmConds.clearedTimeMode = 1;
\r
821 $("input[cond_id=time]").on('ifUnchecked', function () {
\r
822 if ($(this).attr("name") == "timeConfirm") {
\r
823 vm.fmConds.ackRelativeTime = null;
\r
824 vm.fmConds.ackTimeMode = null;
\r
825 }else if ($(this).attr("name") == "timeOccur") {
\r
826 vm.fmConds.alarmRaisedRelativeTime = null;
\r
827 vm.fmConds.alarmRaisedTimeMode = null;
\r
828 }else if ($(this).attr("name") == "timeClear") {
\r
829 vm.fmConds.clearedTimeRelativeTime = null;
\r
830 vm.fmConds.clearedTimeMode = null;
\r
838 Date.prototype.format = function (format) {
\r
842 * format="yyyy-MM-dd hh:mm:ss";
\r
846 "M+" : this.getMonth() + 1,
\r
847 "d+" : this.getDate(),
\r
848 "h+" : this.getHours(),
\r
849 "m+" : this.getMinutes(),
\r
850 "s+" : this.getSeconds(),
\r
851 "q+" : Math.floor((this.getMonth() + 3) / 3),
\r
852 "S" : this.getMilliseconds()
\r
854 if (/(y+)/.test(format)) {
\r
855 format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4
\r
856 - RegExp.$1.length));
\r
859 if (new RegExp("(" + k + ")").test(format)) {
\r
860 format = format.replace(RegExp.$1, RegExp.$1.length == 1
\r
862 : ("00" + o[k]).substr(("" + o[k]).length));
\r
869 //daterangepicker设置时间
\r
870 function setTime($obj) {
\r
872 var title = $obj.attr('dtitle');
\r
873 var arr = $obj.val().split(' - ');
\r
875 if (arr[0] != '') {
\r
876 var starTime = new Date(arr[0].replace(/-/g, "/")).getTime();
\r
877 var endTime = new Date(arr[1].replace(/-/g, "/")).getTime();
\r
878 if (title == "ackTime") {
\r
879 vm.fmConds.ackTimeStarTime = starTime;
\r
880 vm.fmConds.ackTimeEndTime = endTime;
\r
881 vm.fmConds.ackTimeMode=0;
\r
882 } else if (title == "raisedTime") {
\r
883 vm.fmConds.alarmRaisedStartTime = starTime;
\r
884 vm.fmConds.alarmRaisedEndTime = endTime;
\r
885 vm.fmConds.alarmRaisedTimeMode=0;
\r
886 } else if (title == "clearTime") {
\r
887 vm.fmConds.clearedTimeStartTime = starTime;
\r
888 vm.fmConds.clearedTimeEndTime = endTime;
\r
889 vm.fmConds.clearedTimeMode=0;
\r
895 @param type 1 day 2 week 3 month 4 year
\r
897 function reduceDate(date, val, type) {
\r
899 var d = new Date(date);
\r
900 if (type == 'day') {
\r
901 d.setDate(d.getDate() - val);
\r
902 } else if (type == 'week') {
\r
903 d.setDate(d.getDate() - val * 7);
\r
904 } else if (type == 'month') {
\r
905 d.setMonth(d.getMonth() - val);
\r
906 } else if (type == 'year') {
\r
907 d.setFullYear(d.getFullYear() - val);
\r
909 var month = d.getMonth() + 1;
\r
910 var day = d.getDate();
\r
912 month = "0" + month;
\r
917 var val = d.getFullYear() + "-" + month + "-" + day;
\r
921 alarmsUtil.condSave = function (cond, saveUrl, name) {
\r
924 if (cond.severity != null && cond.severity != "undefined" && cond.severity.length > 0) {
\r
925 var severity = '{ "type": "Severity", "data": [{"severity": "' + cond.severity + '"}]}'; //级别
\r
926 var severityObj = window.JSON.parse(severity)
\r
927 conds.push(severityObj);
\r
929 if (cond.ackState != null && cond.ackState != "undefined") {
\r
930 var ackState = '{ "type": "AckState", "data": [{"ackState": "' + cond.ackState + '"}]}'; //级别
\r
931 var ackStateObj = window.JSON.parse(ackState)
\r
932 conds.push(ackStateObj);
\r
934 if (cond.filterState != null && cond.filterState != "undefined") {
\r
935 var filterState = '{ "type": "FilterState", "data": [{"filterState": "' + cond.filterState + '"}]}'; //级别
\r
936 var filterStateObj = window.JSON.parse(filterState)
\r
937 conds.push(filterStateObj);
\r
940 if (cond.ackTimeStarTime != null && cond.ackTimeStarTime != "undefined") {
\r
941 var ackTime = '{ "type": "AckTime", "data": [{"mode":"0","start":"' + cond.ackTimeStarTime + '","end":"' + cond.ackTimeEndTime + '" }]}'; //级别
\r
942 var ackTimeObj = window.JSON.parse(ackTime)
\r
943 conds.push(ackTimeObj);
\r
945 if (cond.alarmRaisedStartTime != null && cond.alarmRaisedStartTime != "undefined") {
\r
946 var alarmRaisedTime = '{ "type": "RaisedTime", "data": [{"mode":"0","start":"' + cond.alarmRaisedStartTime + '","end":"' + cond.alarmRaisedEndTime + '" }]}'; //级别
\r
947 var alarmRaisedTimeObj = window.JSON.parse(alarmRaisedTime)
\r
948 conds.push(alarmRaisedTimeObj);
\r
951 if (cond.clearedTimeStarTime != null && cond.clearedTimeStarTime != "undefined") {
\r
952 var clearedTime = '{ "type": "ClearedTime", "data": [{"mode":"0","start":"' + cond.clearedTimeStarTime + '","end":"' + cond.clearedTimeEndime + '" }]}'; //级别
\r
953 var severityObj = window.JSON.parse(clearedTime)
\r
954 conds.push(severityObj);
\r
956 var resJsonObj = AlarmConds.parseActiveConds2JSon(conds);
\r
957 resJsonObj.rule.name = name;
\r
958 resJsonObj.rule.ruleType = vm.ruleType;
\r
959 var resStr = window.JSON.stringify(resJsonObj);
\r
960 var dataSource = "isc_AosRestDataSource_1";
\r
961 var operationType = "add";
\r
963 dataSource : dataSource,
\r
964 operationType : operationType,
\r
971 contentType : 'application/json; charset=utf-8',
\r
973 data : JSON.stringify(data1),
\r
975 success : function (msg) {
\r
976 $('#saveModalCancle').trigger("click");
\r
982 Array.prototype.contains = function (item) {
\r
983 return RegExp("(^|,)" + item.toString() + "($|,)").test(this);
\r
987 @param alarmsType 1当前告警 2历史告警
\r
988 @param condRuleId 查询条件的RuleId
\r
990 alarmsUtil.queryByParma = function (alarmsType, condRuleId) {
\r
995 if (alarmsType == 1) { //当前告警
\r
996 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';
\r
998 vm.$queryAlarmsInfoUrl = "/ngict/rest/fm/curalarms";
\r
999 vm.curalarmsType = "curalarms";
\r
1000 vm.showClear = true; //清除按钮
\r
1002 } else if(alarmsType == 2){ //历史告警
\r
1004 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';
\r
1006 vm.$queryAlarmsInfoUrl = "/ngict/rest/fm/hisalarms";
\r
1007 vm.hisalarmsType = "hisalarms";
\r
1008 vm.showClear = false; //清除按钮
\r
1009 }else if(alarmsType == 3){ //通知
\r
1010 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';
\r
1012 vm.$queryAlarmsInfoUrl = "/ngict/rest/fm/notify";
\r
1013 vm.notificationType = "notification";
\r
1014 vm.showClear = false; //清除按钮
\r
1017 //如果没传condRuleId 直接返回
\r
1018 if (condRuleId == null || condRuleId == "undefined") {
\r
1029 success : function (msg) {
\r
1030 //1.遍历返回的条件数组确定是哪一个rule规则。
\r
1031 var ruleCondArr = msg.response.data;
\r
1033 for (var i = 0; i < ruleCondArr.length; i++) {
\r
1034 if (ruleCondArr[i].ruleId == condRuleId) { //condRuleId
\r
1035 xmlData = "<xml>" + ruleCondArr[i].ruleData + "</xml>" //在jQuery裡,如果要直接将字串转成XML物件,记得前后方要加上<xml>及</xml>,才会被当成XML处理;
\r
1040 //3.解析数据的xml联动页面的组件。
\r
1041 $(xmlData).find("CompoundCond").each(function () {
\r
1043 for (var i = 0; i < vm.severityTypes.length; i++) {
\r
1044 vm.severityTypes[i].value = false;
\r
1046 if ($(this).find("PerceivedSeverity").attr('value') != null && $(this).find("PerceivedSeverity ").attr('value') != 'undefined') {
\r
1047 var perceivedSeverityArr = $(this).find("PerceivedSeverity ").attr('value').split(',');
\r
1048 for (var i = 0; i < perceivedSeverityArr.length; i++) {
\r
1049 if (perceivedSeverityArr.contains(vm.severityTypes[i].id)) {
\r
1050 vm.severityTypes[i].value = true;
\r
1056 for (var i = 0; i < vm.ackStateTypes.length; i++) {
\r
1057 vm.ackStateTypes[i].value = false;
\r
1059 var ackStateV = $(this).find("AckState").attr('value');
\r
1060 if (ackStateV != null && ackStateV != "undefined") {
\r
1061 var ackStateArr = ackStateV.split(',');
\r
1062 for (var i = 0; i < vm.ackStateTypes.length; i++) {
\r
1063 if (ackStateArr.contains(vm.ackStateTypes[i].id)) {
\r
1064 vm.ackStateTypes[i].value = true;
\r
1070 if(vm.ruleType === 1){
\r
1071 for (var i = 0; i < vm.filterStateTypes.length; i++) {
\r
1072 vm.filterStateTypes[i].value = false;
\r
1074 var filterStateV = $(this).find("FilterState").attr('value')
\r
1075 if (filterStateV != null && filterStateV != "undefined") {
\r
1076 var filterStateArr = filterStateV.split(',');
\r
1077 for (var i = 0; i < vm.filterStateTypes.length; i++) {
\r
1078 if (filterStateArr.contains(vm.filterStateTypes[i].id)) {
\r
1079 vm.filterStateTypes[i].value = true;
\r
1086 var dataRangeAck = $('input[dtitle="ackTime"]'); //日历组件
\r
1087 vm.fmConds.ackTimeStarTime = null;
\r
1088 vm.fmConds.ackTimeEndTime = null;
\r
1089 dataRangeAck.val('');
\r
1090 var ackTimeStartMs = $(this).find("AckTime").attr('start');
\r
1091 var ackTimeEndMs = $(this).find("AckTime").attr('end');
\r
1092 if (ackTimeStartMs != null && ackTimeStartMs != "undefined" && ackTimeEndMs != null && ackTimeEndMs != "undefined") {
\r
1093 vm.fmConds.ackTimeStarTime = ackTimeStartMs; //确认时间
\r
1094 vm.fmConds.ackTimeEndTime = ackTimeEndMs;
\r
1095 var ackTimeStarTime = new Date(parseInt(ackTimeStartMs)).format('yyyy-MM-dd');
\r
1096 var ackTimeEndTime = new Date(parseInt(ackTimeEndMs)).format('yyyy-MM-dd');
\r
1097 dataRangeAck.val(ackTimeStarTime + ' - ' + ackTimeEndTime);
\r
1101 vm.fmConds.alarmRaisedStartTime = null;
\r
1102 vm.fmConds.alarmRaisedEndTime = null;
\r
1103 var dataRangeRaised = $('input[dtitle="raisedTime"]'); //日历组件
\r
1104 dataRangeRaised.val('');
\r
1105 var raisedTimeStartMs = $(this).find("RaisedTime").attr('start');
\r
1106 var raisedTimeEndMs = $(this).find("RaisedTime").attr('end');
\r
1107 if (raisedTimeStartMs != null && raisedTimeStartMs != "undefined" && raisedTimeEndMs != null && raisedTimeEndMs != "undefined") {
\r
1108 vm.fmConds.alarmRaisedStartTime = raisedTimeStartMs; //发生时间
\r
1109 vm.fmConds.alarmRaisedEndTime = raisedTimeEndMs;
\r
1110 var raisedTimeStart = new Date(parseInt(raisedTimeStartMs)).format('yyyy-MM-dd');
\r
1111 var raisedTimeEnd = new Date(parseInt(raisedTimeEndMs)).format('yyyy-MM-dd');
\r
1112 dataRangeRaised.val(raisedTimeStart + ' - ' + raisedTimeEnd);
\r
1120 vm.fmConds.probableCause = null;
\r
1121 var probableCauseArr = $(this).find("ProbableCause").attr('value');
\r
1122 if (probableCauseArr != null && probableCauseArr != "undefined") {
\r
1123 for (var i = 0; i < probableCauseArr.length; i++) {
\r
1124 vm.fmConds.probableCause = probableCauseArr;
\r
1130 vm.fmConds.probableCause = null;
\r
1131 var newPositionCondArr = $(this).find("NewPositionCond").attr('value');
\r
1132 if (newPositionCondArr != null && newPositionCondArr != "undefined")
\r
1133 for (var i = 0; i < newPositionCondArr.length; i++) {
\r
1138 vm.fmConds.alarmType = null;
\r
1139 var alarmTypeArr = $(this).find("AlarmType").attr('value');
\r
1140 if (alarmTypeArr != null && alarmTypeArr != "undefined") {
\r
1141 for (var i = 0; i < alarmTypeArr.length; i++) {
\r
1142 vm.fmConds.alarmType = alarmTypeArr;
\r
1154 alarmsUtil.getProbableCauseCountBySystemType=function(systemType){
\r
1156 //"/ngict/rest/fm/probableCause?request={"systemTypes":[6,12]}"
\r
1159 request.systemTypes=systemType;
\r
1160 getData.request = JSON.stringify(request);
\r
1164 url : "/ngict/rest/fm/probableCause",
\r
1166 success : function (msg) {
\r
1167 vm.alarmCodeSelectedCount+=msg.length;
\r