--- /dev/null
+<!--\r
+ Copyright 2017 ZTE Corporation.\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
+<div class="container" style="margin-top: 20px">\r
+ <form #ruleForm = "ngForm" class="form-group row" (submit)="onSubmit(ruleName)">\r
+ <div class="form-body">\r
+ \r
+ <div class="row form-group col-xs-12 ">\r
+ <label for="userName" class="col-xs-2 col-form-label labelstyle">\r
+ <span>{{"field_rule_name"|translate}}</span>\r
+ <span style="color: red">*</span>\r
+ </label>\r
+ <div class="col-xs-6" style="margin-left: -100px">\r
+ <input class="form-control ng-pristine ng-untouched ng-invalid ng-invalid-required" \r
+ style="width: 60%" type="text" name="rulename" [(ngModel)]="queryRule.rulename" \r
+ id="ruleNameInput" readonly="{{addBottonStatus}}" #ruleName="ngModel" required>\r
+ </div>\r
+ </div>\r
+ \r
+ <div class="row form-group col-xs-12">\r
+ <label for="userName" class="col-xs-2 col-form-label labelstyle">\r
+ <span>{{"field_description"|translate}}</span>\r
+ </label>\r
+ <div class="col-xs-6" style="margin-left: -100px">\r
+ <input class="form-control ng-untouched ng-pristine ng-valid" readonly="{{addBottonStatus}}"\r
+ style="width: 60%" type="text" [(ngModel)]="queryRule.description" name="description" >\r
+ </div>\r
+ </div>\r
+\r
+ <div id="state" class="row form-group col-xs-12">\r
+ <label class="col-xs-2 col-form-label labelstyle">\r
+ <span>{{"common_status"|translate}}</span>\r
+ </label>\r
+\r
+ <div class="col-xs-6" style="margin-left: -113px">\r
+ <div *ngIf="queryRule.enabled == 1">\r
+ <div class="col-xs-3">\r
+ <input class="magic-radio" type="radio" name="enabled" id="radio3" [(ngModel)]="queryRule.enabled" value="0">\r
+ <label for="radio1">{{"common_on"|translate}}</label>\r
+ </div>\r
+ <div class="col-xs-3">\r
+ <input class="magic-radio" type="radio" name="enabled" id="radio4" [(ngModel)]="queryRule.enabled" value="1">\r
+ <label for="radio2">{{"common_off"|translate}}</label>\r
+ </div>\r
+ </div>\r
+ <div *ngIf="queryRule.enabled == 0">\r
+ <div class="col-xs-3">\r
+ <input class="magic-radio" type="radio" name="enabled" id="radio1" [(ngModel)]="queryRule.enabled" value="0">\r
+ <label for="radio1">{{"common_on"|translate}}</label>\r
+ </div>\r
+ <div class="col-xs-3">\r
+ <input class="magic-radio" type="radio" name="enabled" id="radio2" [(ngModel)]="queryRule.enabled" value="1">\r
+ <label for="radio2">{{"common_off"|translate}}</label>\r
+ </div>\r
+ </div>\r
+ \r
+ </div>\r
+\r
+ </div>\r
+ \r
+ <div class="row form-group col-xs-12" >\r
+ <label for="" class="col-xs-2 col-form-label labelstyle">\r
+ <span>{{"common_file"|translate}}</span>\r
+ </label>\r
+ <div class="col-xs-6" style="margin-left: -100px">\r
+ <div class="btn-group btn-group-circle">\r
+ <span class="importDivArea mmlBatchBtnBar" >\r
+ <button class="btn btn-info" id="importBtn" disabled="{{addBottonStatus}}">\r
+ <span class="ict-import"></span>\r
+ <span>{{"import"|translate}}</span>\r
+ </button>\r
+ <div id="importDiv" class="container upload">\r
+ <form id="fileupload" #fileForm="ngForm" role="form" enctype="multipart/form-data" >\r
+ <div class="file-preview">\r
+ <div id="dropzone" class="file-drop-zone">\r
+ <div class="file-drop-zone-title">\r
+ <span >{{"file_import"|translate}}</span>\r
+ </div>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="input-group fileupload-btn">\r
+ <div id="fileName" class="form-control file-caption">task2.zip</div>\r
+ <span class="input-group-btn" id="btnGroup">\r
+ <span class="btn btn-primary fileinput-button white radius_s blue1-active" id="browse" data-placement="bottom" data-toggle="tooltip">\r
+ <span class="importBtnFontSize">{{"common_browse"|translate}}</span>\r
+ <input type="file" name="file" title=" " accept=".txt" multiple="">\r
+ </span>\r
+ <button id="fileremove" class="btn btn-default" type="button">\r
+ <span class="importBtnFontSize">{{"common_remove"|translate}}</span>\r
+ </button>\r
+ <button id="filesubmit" class="btn btn-default" type="button">{{"common_confirm"|translate}}</button>\r
+ </span>\r
+ </div>\r
+ \r
+ </form>\r
+ </div>\r
+ </span>\r
+ </div>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="row form-group col-xs-12" >\r
+ <label for="" class="col-xs-2 col-form-label labelstyle">\r
+ <span>{{"message_rule_content"|translate}}</span>\r
+ <span style="color: red">*</span>\r
+ </label>\r
+ <div class="col-xs-8" style="margin-left: -100px">\r
+ <div class="form-group">\r
+ <textarea id="cmds" class="form-control" readonly="{{addBottonStatus}}" [(ngModel)]="queryRule.content" \r
+ name="content" rows="12" cols="80" required\r
+ placeholder="package example">\r
+ </textarea>\r
+ \r
+ </div>\r
+ </div>\r
+ </div>\r
+ \r
+ <div class="row form-group col-xs-12 " style="margin-left: 73px">\r
+ <div class="col-xs-8 ">\r
+ <label class="myclass" id="checkLabel">\r
+ <button type="button" (click)="checkContent('check')" disabled="{{addBottonStatus}}" class="btn btn-info">{{"common_check"|translate}}</button>\r
+ </label>\r
+ <label class="myclass" id="updateLabel">\r
+ <button type="button" disabled="{{addBottonStatus}}" class="btn btn-info" (click)="update()">{{"common_update"|translate}}</button>\r
+ </label>\r
+ <label class="myclass" id="saveLabel">\r
+ <button type="submit" disabled="{{addBottonStatus}}" class="btn btn-info">{{"common_save"|translate}}</button>\r
+ </label>\r
+ <label class="myclass" id="cancelLabel">\r
+ <button type="button" routerLink='/alarmRule' class="btn btn-info">{{"common_cancel"|translate}}</button>\r
+ </label>\r
+ </div>\r
+ </div>\r
+ </div>\r
+ </form>\r
+</div>\r
+\r
+\r
+\r
+
\ No newline at end of file
--- /dev/null
+/*\r
+ Copyright 2017 ZTE Corporation.\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+*/\r
+import { Component,OnInit ,Input} from '@angular/core';\r
+import {RuleModel} from '../correlation-ruleList/alarmRule';\r
+import { ActivatedRoute, Params ,Router} from '@angular/router';\r
+import {AlarmRuleService} from '../correlation-ruleList/alarmRule.service';\r
+import {Http,Response,Headers} from '@angular/http';\r
+import {ModalService} from '../correlation-modal/modal.service';\r
+import {NgModel} from '@angular/forms';\r
+declare var $: any;\r
+@Component({\r
+ selector:'RuleInfo',\r
+ templateUrl:'./ruleInfo.component.html'\r
+})\r
+export class RuleInfo implements OnInit{\r
+ formModel:RuleModel;\r
+ queryRule:RuleModel;\r
+ id:number;\r
+ addBottonStatus:boolean;\r
+ constructor(private _ModalService:ModalService, private route: ActivatedRoute,private router:Router,private alarmRuleService:AlarmRuleService,http:Http){};\r
+ \r
+ update(){\r
+ this.queryRule.enabled = $('input:radio:checked').val();\r
+ if(!this.queryRule.content.startsWith("package ")){\r
+ let msg={title:"exception_content_error",message:"exception_package_error"};\r
+ this._ModalService.getmodalObservable.next(msg);\r
+ }else{\r
+\r
+ this.alarmRuleService.checkContent(this.queryRule.content)\r
+ .then(res => {\r
+ if(res.status == 200){\r
+ this.alarmRuleService.updateRule(this.queryRule)\r
+ .then(res =>{\r
+ if(res.status == 200){\r
+ let msg={title:"modalTitleUpdate",message:"message_update_rule_success"};\r
+ this._ModalService.getmodalObservable.next(msg);\r
+ this.router.navigate(['alarmRule']);\r
+ }else if(res.status == 499){\r
+ let msg={title:"modalTitleUpdate",message:"message_exception_rule_fail"};\r
+ this._ModalService.getmodalObservable.next(msg);\r
+ }else{\r
+ let msg={title:"modalTitleUpdate",message:"message_other_exception_rule_fail"};\r
+ this._ModalService.getmodalObservable.next(msg);\r
+ }\r
+ }).catch(\r
+ res =>{\r
+ let msg={title:"modalTitleUpdate",message:"message_other_exception_rule_fail"};\r
+ this._ModalService.getmodalObservable.next(msg);\r
+ }\r
+ );\r
+ \r
+ }else if(res.status == 499){\r
+ let msg={"title":"modalTitleCheck",message:"message_rule_content_repeat_error"};\r
+ this._ModalService.getmodalObservable.next(msg);\r
+ return false;\r
+ }else{\r
+ let msg={"title":"modalTitleCheck",message:"message_other_exception_rule_fail"};\r
+ this._ModalService.getmodalObservable.next(msg);\r
+ return false;\r
+ }\r
+ })\r
+ }\r
+ }\r
+ \r
+ onSubmit(obj:NgModel){\r
+ this.save();\r
+ }\r
+\r
+ save(){\r
+ if(!this.queryRule.content.startsWith("package ")){\r
+ let msg={title:"exception_content_error",message:"exception_package_error"};\r
+ this._ModalService.getmodalObservable.next(msg);\r
+ }else{\r
+ this.alarmRuleService.checkContent(this.queryRule.content).then(res => {\r
+ if(res.status == 200){\r
+ this.alarmRuleService.save(this.queryRule).then(res => {\r
+ if(res.status == 200){\r
+ let msg={title:"modalTitleDefault",message:"message_add_rule_success"};\r
+ this._ModalService.getmodalObservable.next(msg);\r
+ this.router.navigate(['alarmRule']);\r
+ }else if(res.status == 499){\r
+ let msg={title:"modalTitleDefault",message:"message_rule_name_repeat_error"};\r
+ this._ModalService.getmodalObservable.next(msg);\r
+ }else{\r
+ let msg={"title":"modalTitleCheck",message:"message_other_exception_rule_fail"};\r
+ this._ModalService.getmodalObservable.next(msg);\r
+ }\r
+ \r
+ }).catch(error =>{\r
+ let msg={title:"modalTitleDefault",message:"message_rule_name_repeat_error"};\r
+ this._ModalService.getmodalObservable.next(msg);\r
+ });\r
+ return true;\r
+ }else if(res.status == 499){\r
+ let msg={"title":"modalTitleCheck",message:"message_rule_content_repeat_error"};\r
+ this._ModalService.getmodalObservable.next(msg);\r
+ return false;\r
+ }else{\r
+ let msg={"title":"modalTitleCheck",message:"message_other_exception_rule_fail"};\r
+ this._ModalService.getmodalObservable.next(msg);\r
+ return false;\r
+ }\r
+ })\r
+ }\r
+ }\r
+ \r
+ getRuleInfo(id:string):void{\r
+ this.route.params.switchMap((params:Params) =>this.alarmRuleService.search(id))\r
+ .subscribe(rule =>{\r
+ rule[0].enabled = ""+rule[0].enabled;\r
+ this.queryRule = rule[0]\r
+ })\r
+ }\r
+\r
+ checkContent(judge:string):void{\r
+ if(!this.queryRule.content.startsWith("package ")){\r
+ let msg={title:"exception_content_error",message:"exception_package_error"};\r
+ this._ModalService.getmodalObservable.next(msg);\r
+ }else{\r
+ this.alarmRuleService.checkContent(this.queryRule.content)\r
+ .then(res => {\r
+ if(res.status == 200){\r
+ let msg={"title":"modalTitleCheck",message:"message_checkContent_rule_success"};\r
+ this._ModalService.getmodalObservable.next(msg);\r
+ }else if(res.status == 499){\r
+ let msg={"title":"modalTitleCheck",message:"message_rule_content_repeat_error"};\r
+ this._ModalService.getmodalObservable.next(msg);\r
+ return false;\r
+ }else{\r
+ let msg={"title":"modalTitleCheck",message:"message_other_exception_rule_fail"};\r
+ this._ModalService.getmodalObservable.next(msg);\r
+ return false;\r
+ }\r
+ });\r
+ }\r
+ }\r
+\r
+ initUpload(queryRule:RuleModel):void{\r
+ $("#fileName").text("");\r
+ $("#importFailTip").addClass("hide_panel");\r
+ $("#fileupload").fileupload({\r
+ \r
+ dropZone: $('#dropzone'),\r
+ maxNumberOfFiles: 1,\r
+ maxChunkSize: 20000000, \r
+ autoUpload: false,\r
+ add: function (e, data) {\r
+ var fileName = data.files[0].name;\r
+ \r
+ $("#importFailTip").addClass("hide_panel");\r
+ let suffix = fileName.substring(fileName.lastIndexOf("."),fileName.length)\r
+ \r
+ if (suffix != ".txt") {\r
+ $("#importFailTip").removeClass("hide_panel");\r
+ return suffix;\r
+ }\r
+ \r
+ $("#bar").css('width', '0%');\r
+ $("#persent").text('0%');\r
+ $("#fileName").text(fileName);\r
+ $("#fileremove").attr("disabled", false);\r
+ $("#filesubmit").attr("disabled", false);\r
+ $("#filesubmit").click(function () {\r
+ this.file = data.files[0]\r
+ var reader = new FileReader();\r
+ reader.readAsText(this.file);\r
+ reader.onload = function (data) {\r
+ queryRule.content = this.result;\r
+ }\r
+ $("#fileremove").click();\r
+ $("#importDiv").hide();\r
+ e.stopPropagation();\r
+ });\r
+\r
+ $("#fileremove").click(function () {\r
+ $("#bar").css('width', '0%');\r
+ $("#persent").text("0%");\r
+ $("#fileName").text("");\r
+ $("#filesubmit").attr("disabled", true);\r
+ $("#fileremove").attr("disabled", true);\r
+ });\r
+ },\r
+ done: function (e, data) {\r
+\r
+ },\r
+ fail: function (e, resp) {\r
+ },\r
+ always: function (e, data) {\r
+ $(".progress").removeClass("active");\r
+ $("#bar").css('width', '100%');\r
+ $("#persent").text('100%');\r
+ },\r
+ progressall: function (e, data) {\r
+ }\r
+ });\r
+ }\r
+\r
+ initImportDiv(queryRule:RuleModel):void{\r
+ this.initUpload(queryRule);\r
+ var importDiv = $("#importDiv");\r
+ $(function (arg) {\r
+ $("#importBtn").click(function (e) {\r
+ e.preventDefault();\r
+ $("[data-toggle='tooltip']").tooltip();\r
+ $("#importFailTip").addClass("hide_panel");\r
+ showDiv();\r
+ $(document).one("click", function (e) {\r
+ $(importDiv).hide();\r
+ });\r
+ e.stopPropagation();\r
+ });\r
+ $(importDiv).click(function (e) {\r
+ e.stopPropagation();\r
+ });\r
+ $("#filesubmit").attr("disabled", true);\r
+ $("#fileremove").attr("disabled", true);\r
+ });\r
+ function showDiv() {\r
+ $("#bar").css('width', '0%');\r
+ $("#persent").text('0%');\r
+ $(importDiv).fadeIn();\r
+ }\r
+ }\r
+ ngOnInit(){\r
+ this.formModel={\r
+ ruleid:null,\r
+ rulename:null,\r
+ description:null,\r
+ content:null,\r
+ createtime:null,\r
+ creator:null,\r
+ updatetime:null,\r
+ modifier:null,\r
+ enabled:null,\r
+ }\r
+ this.queryRule={\r
+ ruleid:null,\r
+ rulename:null,\r
+ description:null,\r
+ content:null,\r
+ createtime:null,\r
+ creator:null,\r
+ updatetime:null,\r
+ modifier:null,\r
+ enabled:0,\r
+ }\r
+ \r
+ this.route.params.subscribe((params) => {\r
+ \r
+ let id = params['id'];\r
+ if(typeof(id) == "string"){\r
+ if(id.indexOf('&') == -1){\r
+ $("#ruleNameInput").attr("disabled",true);\r
+ $("#saveLabel").hide();\r
+ }else{\r
+ this.addBottonStatus=false;\r
+ $("#saveLabel").hide();\r
+ $("#checkLabel").hide();\r
+ $("#updateLabel").hide();\r
+ }\r
+ \r
+ let str = id.split("&");\r
+ this.getRuleInfo(str[0]);\r
+ }else if(typeof(id) != "undefined"){\r
+ this.getRuleInfo(id);\r
+ }else{\r
+ $("#updateLabel").hide();\r
+ }\r
+ if(typeof(this.queryRule.enabled) === "number"){\r
+ this.queryRule.enabled = ""+this.queryRule.enabled;\r
+ }\r
+ })\r
+\r
+ this.initImportDiv(this.queryRule);\r
+ }\r
+ \r
+}
\ No newline at end of file