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