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 { MaasApi } from '@src/app/api/maas.api';
7 import { Operator } from 'rxjs';
8 import { MaaSPlatform, Operators } from '../knowledge-base.type';
11 selector: 'app-create-knowledge-base',
12 templateUrl: './create-knowledge-base.component.html',
13 styleUrls: ['./create-knowledge-base.component.less']
15 export class CreateKnowledgeBaseComponent implements OnInit {
16 title = 'Add Knowledge Base';
17 @Input() showModal: boolean;
18 @Output() modalOpreation = new EventEmitter();
19 fileList: File[] = [];
20 operators: Operators[] = [];
21 filteredPlatforms: MaaSPlatform[] = [];
22 validateForm: FormGroup;
25 private myhttp: MaasApi,
27 private message: NzMessageService,
28 private http: HttpClient,
29 private fb: FormBuilder
33 this.fetchOperators();
34 this.validateForm = this.fb.group({
35 name: [null, [Validators.required]],
37 selectedOperator: [null, [Validators.required]],
38 selectedPlatform: [null, [Validators.required]]
41 fetchOperators(): void {
42 this.myhttp.getOperators().subscribe(
44 this.operators = response.result_body;
47 this.message.error('Failed to fetch operators');
52 for (const i in this.validateForm.controls) {
53 this.validateForm.controls[i].markAsDirty();
54 this.validateForm.controls[i].updateValueAndValidity();
57 handleOperatorChange(value: Operators): void {
59 this.filteredPlatforms = value.maaSPlatformList;
61 this.filteredPlatforms = [];
63 this.validateForm.get('selectedPlatform').setValue(null);
65 beforeUpload = (file: File): boolean => {
66 this.fileList.push(file);
69 handleCancel(): void {
70 this.showModal = false;
71 this.modalOpreation.emit({ "cancel": true });
75 const formData = new FormData();
77 knowledgeBaseName: this.validateForm.value.name,
78 knowledgeBaseDescription: this.validateForm.value.description,
79 operatorId: this.validateForm.value.selectedOperator.operatorId,
80 operatorName: this.validateForm.value.selectedOperator.operatorName,
81 maaSPlatformId: this.validateForm.value.selectedPlatform.maaSPlatformId,
82 maaSPlatformName: this.validateForm.value.selectedPlatform.maaSPlatformName
84 const metaDataJson = JSON.stringify(metaData);
85 formData.append('metaData', metaDataJson);
86 this.fileList.forEach((file: File) => {
87 formData.append('files', file);
94 if (this.validateForm.invalid) {
95 this.showModal = true;
98 this.myhttp.createKnowledgeBase(this.constructBody()).subscribe(
100 if (response.result_header.result_code === 200) {
101 this.message.success('Created successfully');
103 this.message.error(response.result_header.result_message);
105 this.modalOpreation.emit({ "cancel": false });
108 console.log('Upload failed', error);