Add rule info gui source code
authorYILI <li.yi101@zte.com.cn>
Fri, 24 Feb 2017 08:20:20 +0000 (16:20 +0800)
committer6092002077 <li.yi101@zte.com.cn>
Fri, 24 Feb 2017 08:20:20 +0000 (16:20 +0800)
read rule manager gui info,inclode update and add,check

Issue-ID:CLIENT-151

Change-Id: I43a92975e6993ce61dcd14de238b858ccfc85b77
Signed-off-by: YILI <li.yi101@zte.com.cn>
alarm-analysis/src/main/webapp/alarm/app/correlation-ruleInfo/ruleInfo.component.html [new file with mode: 0644]
alarm-analysis/src/main/webapp/alarm/app/correlation-ruleInfo/ruleInfo.component.ts [new file with mode: 0644]

diff --git a/alarm-analysis/src/main/webapp/alarm/app/correlation-ruleInfo/ruleInfo.component.html b/alarm-analysis/src/main/webapp/alarm/app/correlation-ruleInfo/ruleInfo.component.html
new file mode 100644 (file)
index 0000000..9558513
--- /dev/null
@@ -0,0 +1,153 @@
+<!--\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
diff --git a/alarm-analysis/src/main/webapp/alarm/app/correlation-ruleInfo/ruleInfo.component.ts b/alarm-analysis/src/main/webapp/alarm/app/correlation-ruleInfo/ruleInfo.component.ts
new file mode 100644 (file)
index 0000000..2fc8160
--- /dev/null
@@ -0,0 +1,290 @@
+/*\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