a9b0adaabb9f1c71ebd3e20b4827e0e5ac219dc9
[usecase-ui.git] /
1 import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
2 import { KnowledgeBase } from '../knowledge-base.type';
3 import { KnowledgeBaseService } from '../knowledge-base.service';
4 import { MaasApi } from '@src/app/api/maas.api';
5 import { NzMessageService } from 'ng-zorro-antd';
6 import { forkJoin } from 'rxjs/observable/forkJoin';
7 import { of } from 'rxjs/observable/of';
8 import { catchError } from 'rxjs/operators';
9 import { MaasService } from '../../maas-service.service';
10 @Component({
11   selector: 'app-knowledge-base-detail',
12   templateUrl: './knowledge-base-detail.component.html',
13   styleUrls: ['./knowledge-base-detail.component.less']
14 })
15 export class KnowledgeBaseDetailComponent implements OnInit {
16   constructor(
17     public knowledgeBaseService: KnowledgeBaseService,
18     public myhttp: MaasApi,
19     private maasServie: MaasService,
20     private message: NzMessageService,
21   ) { }
22   @Input() showModal: boolean;
23   displayFiles = [];
24   init = true;
25   data: KnowledgeBase ;
26   set knowledgeBaseDetail(v: KnowledgeBase) {
27     if(v) {
28       this.displayFiles = v.fileList.slice().reverse();
29       this.data = v;
30     }
31   }
32   get knowledgeBaseDetail() {
33     return this.data;
34   }
35   @Input() id = '';
36   fileList: File[] = [];
37   @Output() modalOpreation = new EventEmitter();
38   removedFiles:string[] = [];
39   url = `${(window as any).baseUrl}${this.myhttp.url.uploadFile}`;
40   
41   ngOnInit() {
42     this.displayKnowledgeDetails(this.id);
43   }
44
45   displayKnowledgeDetails(id: string) {
46     this.myhttp.getKnowledgeBaseById(id).subscribe(
47       (response) => {
48         this.knowledgeBaseDetail = response.result_body;
49       },
50       () => {
51         this.message.error('Failed to obtain knowledge base data');
52       }
53     );
54   }
55
56   handleCancel(): void {
57     this.showModal = false;
58     this.modalOpreation.emit();
59   }
60
61   handleOk(): void {
62     this.showModal = false;
63     this.modalOpreation.emit();
64   }
65
66   handleChange({ file}): void {
67     const status = file.status;
68     if (status === 'done') {
69       this.fileList = [];
70       if (file.response.result_header.result_code === 200) {
71         this.message.success(`${file.name} upload successfully.`);
72         this.displayKnowledgeDetails(this.id);
73       } else {
74         this.displayFiles.unshift({fileId: this.maasServie.generateUniqueId, fileName: file.name, status: 'error'});
75       }
76     } else if (status === 'error') {
77       this.fileList = [];
78       this.displayFiles.unshift({fileId: this.maasServie.generateUniqueId, fileName: file.name, status: 'error'});
79       this.message.error(`${file.name} file upload failed.`);
80     } else if (status === 'removed') {
81       console.log('file event removed!');
82     }
83   }
84
85   nzdata = () => {
86     const metaData = JSON.stringify({
87       knowledgeBaseId: this.knowledgeBaseDetail.knowledgeBaseId
88     });
89     return {metaData}
90   }
91
92   removedFile({fileId, status, fileName}) {
93     if (status === 'error') {
94       this.displayFiles = this.displayFiles.filter(file => file.fileId !== fileId);
95       this.message.success(`${fileName} delete successfully.`);
96       return;
97     }
98     this.myhttp.removeFile(fileId).pipe(
99     ).subscribe(
100       (response) => {
101         if (response.result_header.result_code === 200) {
102           this.displayFiles = this.displayFiles.filter(file => file.fileId !== fileId);
103           this.message.success(`${fileName} delete successfully.`);
104         }
105       },
106       () => {
107         this.message.success(`${fileName} delete failed.`);
108       }
109     )
110   }
111
112   beforeUpload = (): boolean => {
113     return true;
114   }
115
116 }