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;