891fb9bdd78be0644f8c3cde30419983bf4895dd
[usecase-ui.git] /
1 import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
2 import { Util } from '../../../../shared/utils/utils';
3 import { NzMessageService, UploadFile } from 'ng-zorro-antd';
4 import { HttpClient, HttpHeaders } from '@angular/common/http';
5 import { FormBuilder, FormGroup, Validators } from '@angular/forms';
6 import { MaasService } from '@src/app/core/services/maas.service';
7
8 @Component({
9   selector: 'app-create-knowledge-base',
10   templateUrl: './create-knowledge-base.component.html',
11   styleUrls: ['./create-knowledge-base.component.less']
12 })
13 export class CreateKnowledgeBaseComponent implements OnInit {
14   title = 'Add Knowledge Base';
15   @Input() showModal: boolean;
16   @Output() modalOpreation = new EventEmitter();
17
18   apiUrl = '/api/usecaseui-llm-adaptation/v1/knowledgeBase/create';
19   maasUrl = '/api/usecaseui-llm-adaptation/v1/operator/maas/getAll'
20   fileList: UploadFile[] = [];
21   operators: any[] = [];
22   filteredPlatforms: any[] = [];
23   validateForm: FormGroup;
24
25   constructor(
26     private myhttp: MaasService,
27     private Util: Util,
28     private message: NzMessageService,
29     private http: HttpClient,
30     private fb: FormBuilder
31   ) { }
32
33   ngOnInit() {
34     this.fetchOperators();
35     this.validateForm = this.fb.group({
36       name: [null, [Validators.required]],
37       description: [null],
38       selectedOperator: [null, [Validators.required]],
39       selectedPlatform: [null, [Validators.required]],
40     });
41   }
42   fetchOperators(): void {
43     this.http.get<any>(this.maasUrl).subscribe(
44       (response) => {
45         this.operators = response.result_body;
46       },
47       () => {
48         this.message.error('Failed to fetch operators');
49       }
50     );
51   }
52   submitForm(): void {
53     for (const i in this.validateForm.controls) {
54       this.validateForm.controls[i].markAsDirty();
55       this.validateForm.controls[i].updateValueAndValidity();
56     }
57   }
58   handleOperatorChange(value: any): void {
59     if (value) {
60       this.filteredPlatforms = value.maaSPlatformList;
61     } else {
62       this.filteredPlatforms = [];
63     }
64     this.validateForm.get('selectedPlatform').setValue(null);
65   }
66   beforeUpload = (file: UploadFile): boolean => {
67     this.fileList.push(file);
68     return false;
69   }
70   handleCancel(): void {
71     this.showModal = false;
72     this.modalOpreation.emit({ "cancel": true });
73   }
74
75   constructBody() {
76     const formData = new FormData();
77     const metaData = {
78       knowledgeBaseName: this.validateForm.value.name,
79       knowledgeBaseDescription: this.validateForm.value.description,
80       operatorId: this.validateForm.value.selectedOperator.operatorId,
81       operatorName: this.validateForm.value.selectedOperator.operatorName,
82       maaSPlatformId: this.validateForm.value.selectedPlatform.maaSPlatformId,
83       maaSPlatformName: this.validateForm.value.selectedPlatform.maaSPlatformName
84     };
85     const metaDataJson = JSON.stringify(metaData);
86     formData.append('metaData', metaDataJson);
87     this.fileList.forEach((file: any) => {
88       formData.append('files', file);
89     });
90     return formData
91   }
92
93   handleOk(): void {
94     this.submitForm();
95     if (this.validateForm.invalid) {
96       this.showModal = true;
97       return;
98     }
99     this.http.post<any>(this.apiUrl, this.constructBody()).subscribe(
100       (response) => {
101         if (response.result_header.result_code === 200) {
102           this.message.success('Created successfully');
103         } else {
104           this.message.error(response.result_header.result_message);
105         }
106         this.modalOpreation.emit({ "cancel": false });
107       },
108       (error) => {
109         console.log('Upload failed', error);
110       }
111     );
112   }
113 }