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