2 Copyright (C) 2019 CMCC, Inc. and others. All rights reserved.
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.
16 import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
17 import { RestApiService } from "src/app/core/services/rest-api.service";
18 import { NgbModal } from "@ng-bootstrap/ng-bootstrap";
19 import { Template } from "src/app/core/models/template.model";
21 import { NgxSpinnerService } from "ngx-spinner";
24 import { NewTemplateModalComponent } from "./new-template-modal/new-template-modal.component";
25 import { EditTemplateModalComponent } from "./edit-template-modal/edit-template-modal.component";
26 import { AlertComponent } from "src/app/shared/components/alert/alert.component";
28 import { ToastrNotificationService } from "src/app/shared/components/toastr-notification/toastr-notification.service";
31 selector: 'app-template-list',
32 templateUrl: './template-list.component.html',
33 styleUrls: ['./template-list.component.css']
35 export class TemplateListComponent {
36 template_list: any = [];
37 templates: Template[] = [];
38 temps: Template[] = [];
39 Template_New: Template;
40 Template_Newbody: Template;
41 dashboardDeteleModelShow = true;
42 loadingIndicator: boolean = true;
45 <div class="d-flex justify-content-center">
47 <label class="dl-nodata">No Data</label>
52 @ViewChild("searchText") searchText: ElementRef;
54 private modalService: NgbModal,
55 private dashboardApiService: RestApiService,
56 private spinner: NgxSpinnerService,
57 private notificationService: ToastrNotificationService,
60 this.loadingIndicator = false;
63 this.initData().then(data => {
64 this.initTemplateList(this.template_list).then(
66 // for cache of datatable
67 this.temps = [...data];
68 this.templates = data;
82 this.template_list = [];
83 this.template_list = await this.getTemplateList();
84 this.Template_New = new Template();
85 this.Template_Newbody = new Template();
91 return this.dashboardApiService.getTemplateAll().toPromise();
94 async initTemplateList(template_list: []) {
95 var t: Template[] = [];
96 for (var i = 0; i < template_list.length; i++) {
97 let data = template_list[i];
101 submitted: data["submitted"],
104 topicName: data["topicName"],
105 designType: data["designType"],
106 designTypeName: data["designTypeName"],
115 const modalRef = this.modalService.open(NewTemplateModalComponent, {
116 windowClass: "dl-md-modal templatess",
119 this.Template_New = new Template();
120 this.Template_Newbody = new Template();
121 modalRef.componentInstance.template = this.Template_Newbody;
122 modalRef.componentInstance.templatelist_length = this.template_list.length;
123 modalRef.componentInstance.passEntry.subscribe(receivedEntry => {
124 this.Template_Newbody = receivedEntry;
125 this.dashboardApiService
126 .createNewTemplate(this.Template_Newbody)
129 if (res.statusCode == 200) {
130 this.Template_New = res.returnBody;
131 this.template_list.push(this.Template_New);
132 this.template_list = [...this.template_list];
133 this.notificationService.success("SUCCESSFULLY_CREARED");
135 this.notificationService.error("FAILED_CREARED");
140 this.notificationService.error(err);
148 const emitType = event.type;
149 if (emitType == "dblclick") {
150 let id = event.row.id;
151 this.editTemplateModal(id);
156 editTemplateModal(id) {
157 const index = this.template_list.findIndex(t => t.id === id);
158 const modalRef = this.modalService.open(EditTemplateModalComponent, {
159 windowClass: "dl-md-modal templatess",
162 modalRef.componentInstance.edittemplate = this.template_list[index];
163 modalRef.componentInstance.passEntry.subscribe(receivedEntry => {
164 this.Template_New = receivedEntry;
165 this.dashboardApiService
166 .updateNewTemplate(this.Template_New)
169 if (res.statusCode == 200) {
170 this.template_list[index] = this.Template_New;
171 this.template_list = [...this.template_list];
172 this.notificationService.success("SUCCESSFULLY_UPDATED");
174 this.notificationService.error("FAILED_UPDATED");
179 this.notificationService.error(err);
186 deleteTemplateModel(id: number) {
187 const index = this.template_list.findIndex(t => t.id === id);
188 const modalRef = this.modalService.open(AlertComponent, {
192 // modalRef.componentInstance.dashboardDeteleModelShow = this.dashboardDeteleModelShow;
193 modalRef.componentInstance.message = "ARE_YOU_SURE_DELETE";
194 modalRef.componentInstance.passEntry.subscribe(receivedEntry => {
196 this.dashboardApiService.DeleteTemplate(id).subscribe(
198 if (JSON.stringify(res).length <= 2) {
199 this.template_list.splice(index, 1);
200 this.template_list = [...this.template_list];
201 this.notificationService.success("SUCCESSFULLY_DELETED");
203 this.notificationService.error("FAILED_DELETED");
209 this.notificationService.error(err);
217 deployTemplate(id: number) {
218 const index = this.template_list.findIndex(t => t.id === id);
219 const body = this.template_list[index];
221 this.dashboardApiService.deployTemplateKibana(id, body).subscribe(
225 Object.keys(res).map(item =>
226 processArr.push({ name: item, status: res[item] })
229 if (processArr.length !== 0) {
230 processArr.map(item =>
232 setTimeout(() => { this.notificationService.success("Deploy_SUCCESSFULLY") }, 1000) :
233 setTimeout(() => { this.notificationService.error("Deploy_FAILED") }, 2000))
235 this.notificationService.error("Deploy_FAILED");
240 this.notificationService.error(err);
245 updateFilter(searchValue) {
246 const val = searchValue.toLowerCase();
248 const temps = this.temps.filter(function (d) {
249 return d.name.toLowerCase().indexOf(val) !== -1 || !val;
252 this.template_list = temps;