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 { DashboardApiService } from "src/app/core/services/dashboard-api.service";
 
  18 import { NgbModal } from "@ng-bootstrap/ng-bootstrap";
 
  19 import { Template, newTemplate } 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/core/alert/alert.component";
 
  28 import { ToastrNotificationService } from "src/app/core/services/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: newTemplate;
 
  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: DashboardApiService,
 
  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 newTemplate();
 
  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"],
 
 114     const modalRef = this.modalService.open(NewTemplateModalComponent, {
 
 115       windowClass: "dl-md-modal templatess",
 
 118     this.Template_New = new Template();
 
 119     this.Template_Newbody = new newTemplate();
 
 120     modalRef.componentInstance.template = this.Template_Newbody;
 
 121     modalRef.componentInstance.templatelist_length = this.template_list.length;
 
 122     modalRef.componentInstance.passEntry.subscribe(receivedEntry => {
 
 123       this.Template_Newbody = receivedEntry;
 
 124       this.dashboardApiService
 
 125         .createNewTemplate(this.Template_Newbody)
 
 128             if (res.statusCode == 200) {
 
 129               this.Template_New = res.returnBody;
 
 130               this.template_list.push(this.Template_New);
 
 131               this.template_list = [...this.template_list];
 
 132               this.notificationService.success("SUCCESSFULLY_CREARED");
 
 134               this.notificationService.error("FAILED_CREARED");
 
 139             this.notificationService.error(err);
 
 147     const emitType = event.type;
 
 148     if (emitType == "dblclick") {
 
 149       let id = event.row.id;
 
 150       this.editTemplateModal(id);
 
 155   editTemplateModal(id) {
 
 156     const index = this.template_list.findIndex(t => t.id === id);
 
 157     const modalRef = this.modalService.open(EditTemplateModalComponent, {
 
 158       windowClass: "dl-md-modal templatess",
 
 161     modalRef.componentInstance.edittemplate = this.template_list[index];
 
 162     modalRef.componentInstance.passEntry.subscribe(receivedEntry => {
 
 163       this.Template_New = receivedEntry;
 
 164       this.dashboardApiService
 
 165         .updateNewTemplate(this.Template_New)
 
 168             if (res.statusCode == 200) {
 
 169               this.template_list[index] = this.Template_New;
 
 170               this.template_list = [...this.template_list];
 
 171               this.notificationService.success("SUCCESSFULLY_UPDATED");
 
 173               this.notificationService.error("FAILED_UPDATED");
 
 178             this.notificationService.error(err);
 
 185   deleteTemplateModel(id: number) {
 
 186     const index = this.template_list.findIndex(t => t.id === id);
 
 187     const modalRef = this.modalService.open(AlertComponent, {
 
 191     // modalRef.componentInstance.dashboardDeteleModelShow = this.dashboardDeteleModelShow;
 
 192     modalRef.componentInstance.message = "ARE_YOU_SURE_DELETE";
 
 193     modalRef.componentInstance.passEntry.subscribe(receivedEntry => {
 
 195       this.dashboardApiService.DeleteTemplate(id).subscribe(
 
 197           if (JSON.stringify(res).length <= 2) {
 
 198             this.template_list.splice(index, 1);
 
 199             this.template_list = [...this.template_list];
 
 200             this.notificationService.success("SUCCESSFULLY_DELETED");
 
 202             this.notificationService.error("FAILED_DELETED");
 
 208           this.notificationService.error(err);
 
 216   deployTemplate(id: number) {
 
 217     const index = this.template_list.findIndex(t => t.id === id);
 
 218     const body = this.template_list[index];
 
 220     this.dashboardApiService.deployTemplateKibana(id, body).subscribe(
 
 223         if (JSON.stringify(res).length <= 2) {
 
 224           this.notificationService.success("Deploy_SUCCESSFULLY");
 
 226           this.notificationService.error("Deploy_FAILED");
 
 231         this.notificationService.error(err);
 
 236   updateFilter(searchValue) {
 
 237     const val = searchValue.toLowerCase();
 
 239     const temps = this.temps.filter(function (d) {
 
 240       return d.name.toLowerCase().indexOf(val) !== -1 || !val;
 
 243     this.template_list = temps;