summaryrefslogtreecommitdiffstats
path: root/rulemgt-frontend/src/app/correlation-ruleList
diff options
context:
space:
mode:
authorGuangrongFu <fu.guangrong@zte.com.cn>2018-07-20 09:26:29 +0800
committerGuangrongFu <fu.guangrong@zte.com.cn>2018-07-20 09:26:29 +0800
commit9720e7d6a706d79f50778af6a39ce6fba79955ed (patch)
tree78dc557e10f914d44a08567286113e8728b090fa /rulemgt-frontend/src/app/correlation-ruleList
parent0b1df79ef7749d62b4412e5433538d32feb6850c (diff)
Change the buiding tool to angular-cli
Change-Id: Iacc77251238b9d8b2893dbbf311775f9fb7425d3 Issue-ID: HOLMES-111 Signed-off-by: GuangrongFu <fu.guangrong@zte.com.cn>
Diffstat (limited to 'rulemgt-frontend/src/app/correlation-ruleList')
-rw-r--r--rulemgt-frontend/src/app/correlation-ruleList/alarmRule.component.html135
-rw-r--r--rulemgt-frontend/src/app/correlation-ruleList/alarmRule.component.ts172
-rw-r--r--rulemgt-frontend/src/app/correlation-ruleList/alarmRule.service.ts123
-rw-r--r--rulemgt-frontend/src/app/correlation-ruleList/alarmRule.ts27
-rw-r--r--rulemgt-frontend/src/app/correlation-ruleList/ruleRequest.ts23
5 files changed, 480 insertions, 0 deletions
diff --git a/rulemgt-frontend/src/app/correlation-ruleList/alarmRule.component.html b/rulemgt-frontend/src/app/correlation-ruleList/alarmRule.component.html
new file mode 100644
index 0000000..6e03db3
--- /dev/null
+++ b/rulemgt-frontend/src/app/correlation-ruleList/alarmRule.component.html
@@ -0,0 +1,135 @@
+<!--
+ Copyright 2017 ZTE Corporation.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<div class="container" style="margin-top: 20px">
+ <form class="form-inline">
+ <div class="form-body">
+ <div class="row form-group col-xs-12">
+ <div class="col-xs-4">
+ <label class="col-xs-3 control-label" style="padding-top: 8px">
+ {{"common_status"|translate}}
+ </label>
+ <select #selection class="form-control" style="width: 60%" id="status" (change)="switch(selection.value)" [(ngModel)]="activeText"
+ name="activestatus">
+ <option *ngFor="let a of activeStatus" [value]="a">{{a|translate}}</option>
+ </select>
+ </div>
+
+ <div class="col-xs-4">
+ <label for="userName" class="col-xs-3 control-label" style="padding-top: 8px">
+ <span>{{"common_keyword"|translate}}</span>
+ </label>
+ <input class="form-control ng-untouched ng-pristine ng-valid" style="width: 60%" placeholder='{{"field_rule_name_Add_Page"|translate}}'
+ type="text" [(ngModel)]="ruleModel.ruleName" name="name">
+ </div>
+
+ <div class="fmrule_btn_group display_table">
+ <div class="inline">
+ <button id="batchDeleteButton" class="btn btn-primary" (click)="searchRules()">
+ <span class="glyphicon glyphicon-search" style="padding-top: 2px"></span>
+ <span>{{"common_query"|translate}}</span>
+ </button>
+ <button class="btn btn-secondary" (click)="reset()" style="margin-left: 10px">
+ <span class="glyphicon glyphicon-refresh"></span>
+ <span>{{"common_reset"|translate}}</span>
+ </button>
+ </div>
+ </div>
+ </div>
+
+ <div class="row form-group col-xs-12" style="margin-top: 10px">
+ <div class="">
+ <div class="inline">
+ <button type="button" routerLink='/ruleInfo' class="btn btn-info">
+ <span class="glyphicon glyphicon-plus"></span>
+ <span>{{"common_add"|translate}}</span>
+ </button>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </form>
+ <div>
+ <div class="row form-group col-xs-12" style="margin-top: 20px">{{"common_total1"|translate}}{{totalcount}}{{"common_total2"|translate}}</div>
+ <table class="table table-bordered table-striped customtable table-hover">
+ <thead class="nf_thead">
+ <tr class="heading">
+ <td>{{"field_rule_name_Add_Page"|translate}}</td>
+ <td>{{"common_status"|translate}}</td>
+ <td>{{"field_create_time"|translate}}</td>
+ <td>{{"field_creator"|translate}}</td>
+ <td>{{"field_update_time"|translate}}</td>
+ <td>{{"common_operator"|translate}}</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr *ngFor="let rule of rules">
+ <td><a routerLink="/ruleInfo/{{rule.ruleId}}&add">{{rule.rulename}}</a></td>
+ <td [hidden]="rule.enabled === 1" style="text-align: center"><span value=1><img src="../../assets/thirdparty/images/round_off.png" alt=""></span></td>
+ <td [hidden]="rule.enabled === 0" style="text-align: center"><span value=0><img src="../../assets/thirdparty/images/round_on.png" alt=""></span></td>
+ <td>{{rule.createTime | date:'yyyy-MM-dd HH:mm:ss'}}</td>
+ <td>{{rule.creator}}</td>
+ <td>{{rule.updateTime | date:'yyyy-MM-dd HH:mm:ss'}}</td>
+ <td>
+ <span (click)="updateRule(rule); $event.stopPropagation()" style="cursor: pointer;margin: 0 5px">
+ <img src="../../assets/thirdparty/images/edit.png" alt="">
+ </span>
+ <span>
+
+ </span>
+ <span [hidden]="rule.enabled===1" class="" (click)="on_off(rule); $event.stopPropagation()" style="cursor: pointer;margin: 0 5px">
+ <img src="../../assets/thirdparty/images/on.png" alt="">
+ </span>
+ <span [hidden]="rule.enabled===0" class="" (click)="on_off(rule); $event.stopPropagation()" style="cursor: pointer;margin: 0 5px">
+ <img src="../../assets/thirdparty/images/off.png" alt="">
+ </span>
+
+ <span class="" id={{rule.ruleId}} (click)="delete(rule)" style="cursor: pointer;margin: 0 5px">
+ <img src="../../assets/thirdparty/images/delete.png" alt="">
+ </span>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div id="deleteTimingTaskDlg" style="display: none;">
+ <div id="deleteTimingTaskContent">
+ <div class="deletePromptMessage">
+ <span>{{"message_is_delete"|translate}}</span>
+ </div>
+ <div style="float:rightl;padding-top: 10px;margin-bottom: -20px" class="">
+ <button class="btn btnDefault btnmrg" data-popmodal-but="ok">
+ <span>{{"common_confirm"|translate}}</span>
+ </button>
+ <button class="btn btnDefault btnmrg" type="button" data-popmodal-but="cancel">
+ <span>{{"common_cancel"|translate}}</span>
+ </button>
+ </div>
+ </div>
+ </div>
+
+ <div id="deleteActiveAlarmRuleDlg" style="display: none;">
+ <div id="deleteActiveRuleContent">
+ <div class="deletePromptMessage">
+ <span>{{"warn_delete_info"|translate}}</span>
+ </div>
+ <div style="float:right;padding-top:10px">
+ <button class="btn btnDefault btnmrg" data-popmodal-but="ok">
+ <span>{{"common_confirm"|translate}}</span>
+ </button>
+ </div>
+ </div>
+ </div> \ No newline at end of file
diff --git a/rulemgt-frontend/src/app/correlation-ruleList/alarmRule.component.ts b/rulemgt-frontend/src/app/correlation-ruleList/alarmRule.component.ts
new file mode 100644
index 0000000..65a5296
--- /dev/null
+++ b/rulemgt-frontend/src/app/correlation-ruleList/alarmRule.component.ts
@@ -0,0 +1,172 @@
+/*
+ Copyright 2017 ZTE Corporation.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+import { Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';
+import { ModalService } from '../correlation-modal/modal.service';
+import { RuleModel } from './alarmRule';
+import { RuleRequest } from './ruleRequest';
+import { Router } from '@angular/router';
+import { Http, Response, Jsonp, Headers, RequestOptions } from '@angular/http';
+import { AlarmRuleService } from './alarmRule.service';
+declare var jQuery: any;
+
+@Component({
+ selector: 'alarmRule',
+ templateUrl: './alarmRule.component.html',
+
+})
+export class AlarmRule implements OnInit {
+ ruleModel: RuleModel;
+ rules: RuleModel[];
+ queryRule: RuleModel;
+ activeText: string;
+ ruleName: string;
+ enable_on = "enabled";
+ enable_off = "disabled"
+ totalcount: number;
+ model: any;
+ ruleRequest: RuleRequest;
+ solution = 'ANGULAR';
+ selection = 'A'
+ activeStatus = ["option_all", "common_enabled", "common_disabled"];
+
+ constructor(public _alarmRuleService: AlarmRuleService, private modalService: ModalService,
+ private router: Router) { };
+
+ switch(select: string): void {
+ console.log(select);
+ if (select == "common_enabled") {
+ this.ruleModel.enabled = 1;
+ } else if (select == "common_disabled") {
+ this.ruleModel.enabled = 0;
+ } else {
+
+ this.ruleModel.enabled = null;
+ }
+ this.setActiveText();
+ };
+
+ setActiveText(): void {
+ if (this.ruleModel.enabled == 1) {
+ this.activeText = "common_enabled";
+ this.ruleRequest.enabled = 1;
+ }
+ else if (this.ruleModel.enabled == 0) {
+ this.activeText = "common_disabled";
+ this.ruleRequest.enabled = 0;
+ } else {
+ this.activeText = "option_all";
+ this.ruleRequest.enabled = null;
+ }
+ };
+
+ getRules(): Promise<any> {
+ return this._alarmRuleService
+ .getRules()
+ .then(rules => {
+ this.rules = rules.rules;
+ this.totalcount = rules.totalcount;
+ });
+ }
+
+ searchRules(): void {
+ if (this.ruleModel.enabled == null) {
+ this.ruleRequest.enabled = null;
+ }
+ this.ruleRequest.ruleName = this.ruleModel.ruleName;
+ console.log(this.ruleRequest.enabled, this.ruleRequest.ruleName);
+
+ this._alarmRuleService
+ .searchrules(this.ruleRequest)
+ .then(rules => {
+ this.rules = rules;
+ this.totalcount = rules.length;
+ });
+ }
+ updateRule(rule: RuleModel): void {
+ this.router.navigate(['ruleInfo/', rule.ruleId]);
+ }
+
+ delete(rule: RuleModel): void {
+ rule.enabled == 1 ? this.deleteActiveRule(rule) : this.deleteModel(rule.ruleId, this._alarmRuleService, this);
+ }
+
+ on_off(rule: RuleModel) {
+ rule.enabled == 0 ? rule.enabled = 1 : rule.enabled = 0;
+ this._alarmRuleService
+ .updateRule(rule)
+ .then(res => {
+ rule = res;
+ });
+ }
+
+ reset(): void {
+ this.ruleModel.ruleName = null;
+ this.activeText = 'option_all';
+ this.ruleModel.enabled = null;
+ this.getRules();
+ }
+
+ deleteActiveRule(rule: RuleModel): void {
+ jQuery('#' + rule.ruleId).popModal({
+ html: jQuery('#deleteActiveRuleContent'),
+ placement: 'leftTop',
+ showCloseBut: false,
+ onDocumentClickClose: true,
+ onOkBut: function () {
+ },
+ });
+ }
+ deleteModel(ruleId: string, alarm: AlarmRuleService, obj: any): void {
+ jQuery('#' + ruleId).popModal({
+ html: jQuery('#deleteTimingTaskContent'),
+ placement: 'leftTop',
+ showCloseBut: false,
+ onDocumentClickClose: true,
+ onOkBut: function () {
+ jQuery('#deleteTimingTaskDlg').append(jQuery('#deleteTimingTaskContent'));
+ alarm.delete(ruleId);
+ obj.getRules();
+ },
+ onCancelBut: function () {
+ }
+ });
+ }
+
+ ngOnInit(): void {
+ this.activeText = 'option_all';
+ this.ruleModel = {
+ ruleId: null,
+ ruleName: null,
+ description: '',
+ content: null,
+ createTime: null,
+ creator: null,
+ updateTime: null,
+ modifier: null,
+ enabled: 0,
+ loopControlName: ''
+ }
+ this.ruleRequest = {
+ ruleId: null,
+ ruleName: null,
+ creator: null,
+ modifier: null,
+ enabled: null,
+ loopControlName: ''
+ }
+ this.getRules();
+ }
+}
diff --git a/rulemgt-frontend/src/app/correlation-ruleList/alarmRule.service.ts b/rulemgt-frontend/src/app/correlation-ruleList/alarmRule.service.ts
new file mode 100644
index 0000000..33ea713
--- /dev/null
+++ b/rulemgt-frontend/src/app/correlation-ruleList/alarmRule.service.ts
@@ -0,0 +1,123 @@
+/*
+ Copyright 2017 ZTE Corporation.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+import { Injectable } from '@angular/core';
+import { Http, Response, Headers } from '@angular/http';
+
+
+import { RuleModel } from './alarmRule';
+import { RuleRequest } from './ruleRequest';
+import { Router } from '@angular/router';
+import { ModalService } from '../correlation-modal/modal.service';
+
+@Injectable()
+export class AlarmRuleService {
+ private ruleUrl = "/api/holmes-rule-mgmt/v1/rule";
+ private headers = new Headers({ 'Content-Type': 'application/json' });
+ constructor(private http: Http, private modalService: ModalService, private router: Router) { }
+
+ getRules(): Promise<any> {
+ return this.http.get(this.ruleUrl)
+ .toPromise()
+ .then(res => res.json())
+ .catch(this.handleError);
+ }
+
+ private handleError(error: any): Promise<any> {
+ console.error('An error occurred', error);
+ return Promise.reject(error._body || error);
+ }
+
+ search(ruleId: string): Promise<RuleModel> {
+ if (typeof (ruleId) == "string") {
+ let rule = [{
+ ruleId: null,
+ ruleName: null,
+ description: null,
+ content: null,
+ createtime: null,
+ creator: null,
+ updatetime: null,
+ modifier: null,
+ enabled: 0,
+ }]
+ }
+ let data = { 'ruleId': ruleId };
+ var queryrequest = JSON.stringify(data);
+ const url = `${this.ruleUrl}?queryrequest=${queryrequest}`;
+ return this.http.get(url, {headers:this.headers})
+ .toPromise()
+ .then(res => res.json().rules as RuleModel)
+ .catch(this.handleError);
+ }
+
+ searchrules(rule: RuleRequest): Promise<RuleModel[]> {
+ let data = { ruleName: rule.ruleName, enabled: rule.enabled }
+ console.log(JSON.stringify(data));
+ const url = `${this.ruleUrl}?queryrequest=${JSON.stringify(data)}`
+ return this.http.get(url, { body: data, headers: this.headers })
+ .toPromise()
+ .then(res => res.json().rules as RuleModel[])
+ .catch(this.handleError);
+ }
+
+ checkContent(ruleContent: string): Promise<any> {
+ const url = "/api/holmes-engine-mgmt/v1/rule";
+ let data = { content: ruleContent };
+ return this.http
+ .post(url, JSON.stringify(data), { headers: this.headers })
+ .toPromise()
+ .then(res => res)
+ .catch(error => error);
+ }
+
+ updateRule(rule: RuleModel): Promise<any> {
+ let rules = {
+ "ruleId": rule.ruleId,
+ "description": rule.description,
+ "content": rule.content,
+ "enabled": rule.enabled
+ }
+ const url = `${this.ruleUrl}`
+ return this.http
+ .post(url, JSON.stringify(rules), { headers: this.headers })
+ .toPromise()
+ .then(res => res)
+ .catch(error => error)
+ }
+
+ save(rule: RuleModel): Promise<any> {
+ let ruledata = {
+ "description": rule.description,
+ "content": rule.content,
+ "enabled": rule.enabled,
+ "ruleName": rule.ruleName
+ }
+ return this.http.put(this.ruleUrl, JSON.stringify(ruledata), { headers: this.headers })
+ .toPromise()
+ .then(res => res)
+ .catch(error => error);
+ }
+
+ public delete(ruleId: string): Promise<void> {
+ const url = `${this.ruleUrl}` + '/' + ruleId;
+ return this.http.delete(url, { headers: this.headers })
+ .toPromise()
+ .then(res => {
+
+ })
+ .catch(this.handleError);
+ }
+} \ No newline at end of file
diff --git a/rulemgt-frontend/src/app/correlation-ruleList/alarmRule.ts b/rulemgt-frontend/src/app/correlation-ruleList/alarmRule.ts
new file mode 100644
index 0000000..9c36d30
--- /dev/null
+++ b/rulemgt-frontend/src/app/correlation-ruleList/alarmRule.ts
@@ -0,0 +1,27 @@
+/*
+ Copyright 2017 ZTE Corporation.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+export class RuleModel {
+ ruleId: string;
+ ruleName: string;
+ description: string;
+ content: string;
+ createTime: Date;
+ creator: number;
+ updateTime: Date;
+ modifier: string;
+ loopControlName: string;
+ enabled?: any;
+} \ No newline at end of file
diff --git a/rulemgt-frontend/src/app/correlation-ruleList/ruleRequest.ts b/rulemgt-frontend/src/app/correlation-ruleList/ruleRequest.ts
new file mode 100644
index 0000000..2719a90
--- /dev/null
+++ b/rulemgt-frontend/src/app/correlation-ruleList/ruleRequest.ts
@@ -0,0 +1,23 @@
+/*
+ Copyright 2017 ZTE Corporation.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+export class RuleRequest {
+ ruleId: string;
+ ruleName: string;
+ creator: number;
+ modifier: string;
+ enabled: number;
+ loopControlName: string;
+} \ No newline at end of file