diff options
Diffstat (limited to 'usecaseui-portal/src/app/views/maas/knowledge-base-management')
11 files changed, 473 insertions, 0 deletions
diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.html b/usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.html new file mode 100644 index 00000000..de2e6450 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.html @@ -0,0 +1,61 @@ +<!-- + Copyright (C) 2019 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<nz-modal [(nzVisible)]="showModel" [nzTitle]="title" (nzOnCancel)="handleCancel()" (nzOnOk)="handleOk()" + nzWidth="648px" nzHeight="800px"> + <form nz-form [formGroup]="validateForm" (ngSubmit)="submitForm()"> + <nz-form-item> + <nz-form-label [nzSpan]="8" nzFor="name">Knowledge Base Name</nz-form-label> + <nz-form-control [nzSpan]="12"> + <input type="text" nz-input formControlName="name"> + </nz-form-control> + </nz-form-item> + <nz-form-item> + <nz-form-label [nzSpan]="8" nzFor="description">Knowledge Base Description</nz-form-label> + <nz-form-control [nzSpan]="12"> + <textarea rows="2" nz-input formControlName="description"></textarea> + </nz-form-control> + </nz-form-item> + <nz-form-item> + <nz-form-label [nzSpan]="8" nzFor="selectedOperator">Operator Name</nz-form-label> + <nz-form-control [nzSpan]="12"> + <nz-select name="selectedOperator" nzPlaceHolder="Select Operator" formControlName="selectedOperator" + (ngModelChange)="handleOperatorChange($event)"> + <nz-option *ngFor="let operator of operators" [nzValue]="operator" + [nzLabel]="operator.operatorName"></nz-option> + </nz-select> + </nz-form-control> + </nz-form-item> + <nz-form-item> + <nz-form-label [nzSpan]="8" nzFor="selectedPlatform">MaaS Platform Name</nz-form-label> + <nz-form-control [nzSpan]="12"> + <nz-select nzPlaceHolder="Select MaaS" formControlName="selectedPlatform"> + <nz-option *ngFor="let platform of filteredPlatforms" [nzValue]="platform" + [nzLabel]="platform.maaSPlatformName"></nz-option> + </nz-select> + </nz-form-control> + </nz-form-item> + <nz-form-item> + <nz-form-label [nzSpan]="8" nzFor="fileList">File Upload</nz-form-label> + <nz-form-control [nzSpan]="12"> + <nz-upload [(nzFileList)]="fileList" [nzBeforeUpload]="beforeUpload"> + <button nz-button> + <i class="anticon anticon-upload"></i><span>Select File</span> + </button> + </nz-upload> + </nz-form-control> + </nz-form-item> + </form> +</nz-modal>
\ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.less b/usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.less new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.less diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.ts b/usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.ts new file mode 100644 index 00000000..9984f664 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.ts @@ -0,0 +1,129 @@ +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { IntentManagementService } from '../../../../core/services/intentManagement.service'; +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'; + +@Component({ + selector: 'app-input-knowledge-base', + templateUrl: './input-knowledge-base.component.html', + styleUrls: ['./input-knowledge-base.component.less'] +}) +export class InputKnowledgeBaseComponent implements OnInit { + title = 'Add Knowledge Base'; + constructor( + private myhttp: IntentManagementService, + private Util: Util, + private message: NzMessageService, + private http: HttpClient, + private fb: FormBuilder + ) { } + + @Input() showModel: boolean; + @Output() modalOpreation = new EventEmitter(); + + apiUrl = '/api/usecaseui-llm-adaptation/v1/knowledgeBase/create'; + apiUrl1 = '/api/usecaseui-intent-analysis/v1/intents/upload'; + maasUrl = '/api/usecaseui-llm-adaptation/v1/operator/maas/getAll' + url = "http://172.22.16.126:3000/api/core/dataset/create"; + knowledgeBase = { + name: '', + description: '' + }; + fileList: UploadFile[] = []; + operators: any[] = []; + selectedOperator: any = null; + filteredPlatforms: any[] = []; + allPlatforms: any[] = []; + selectedPlatform: any = null; + validateForm: FormGroup; + + ngOnInit() { + this.fetchOperators(); + this.validateForm = this.fb.group({ + name: [null], + description: [null], + selectedOperator: [null], + selectedPlatform: [null], + }); + } + + fetchOperators(): void { + this.http.get<any>(this.maasUrl).subscribe( + (response) => { + console.log(response); + this.operators = response.result_body; + }, + (error) => { + 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: any): void { + if (value) { + this.filteredPlatforms = value.maaSPlatformList; + } else { + this.filteredPlatforms = []; + } + this.validateForm.get('selectedPlatform').setValue(null); + } + + + beforeUpload = (file: UploadFile): boolean => { + this.fileList.push(file); + return false; + } + + handleCancel(): void { + this.showModel = false; + this.modalOpreation.emit({ "cancel": true }); + } + handleOk(): void { + const formData = new FormData(); + const metaData = { + knowledgeBaseName: this.validateForm.controls.name.value, + knowledgeBaseDescription: this.validateForm.controls.description.value, + operatorId: this.validateForm.controls.selectedOperator.value.operatorId, + operatorName: this.validateForm.controls.selectedOperator.value.operatorName, + maaSPlatformId: this.validateForm.controls.selectedPlatform.value.maaSPlatformId, + maaSPlatformName: this.validateForm.controls.selectedPlatform.value.maaSPlatformName + }; + const metaDataJson = JSON.stringify(metaData); + formData.append('metaData', metaDataJson); + this.fileList.forEach((file: any) => { + formData.append('files', file); + }); + this.http.post<any>(this.apiUrl, formData).subscribe( + (response) => { + if (response.result_header.result_code === 200) { + this.message.success('Created successfully'); + } else { + this.message.error(response.result_header.result_message); + } + this.knowledgeBase = { + name: '', + description: '' + }; + this.fileList = []; + this.modalOpreation.emit({ "cancel": false }); + }, + (error) => { + this.knowledgeBase = { + name: '', + description: '' + }; + this.fileList = []; + console.log('Upload failed', error); + } + ); + } +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.html b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.html new file mode 100644 index 00000000..9653f29f --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.html @@ -0,0 +1,21 @@ +<!-- + Copyright (C) 2019 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<nz-modal [(nzVisible)]="showModel" nzTitle="Knowledge Base Detail" (nzOnCancel)="handleCancel()" (nzOnOk)="handleOk()" + nzWidth="56%" nzHeight="800px" class="intent-management-modal"> + <div> + <app-description-info [data]="data"></app-description-info> + </div> +</nz-modal>
\ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.less b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.less new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.less diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.ts b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.ts new file mode 100644 index 00000000..172e9d1d --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.ts @@ -0,0 +1,64 @@ +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { knowledgeBase } from '../knowledge-base.type'; +import { KnowledgeBaseService } from '../knowledge-base.service'; +@Component({ + selector: 'app-knowledge-base-detail', + templateUrl: './knowledge-base-detail.component.html', + styleUrls: ['./knowledge-base-detail.component.less'] +}) +export class KnowledgeBaseDetailComponent implements OnInit { + + constructor( + private knowledgeBaseService: KnowledgeBaseService + ) { } + @Input() showModel: boolean; + _knowledgeBase: knowledgeBase; + data: Array<{ label: string, value: string }> = []; + @Input() + + set knowledgeBaseDetail(v: any) { + if (!v) { + return; + } + this.data = [ + { + label: 'Knowledge Base Name', value: v.knowledgeBaseName + }, + { + label: 'Knowledge Base Description', value: v.knowledgeBaseDescription + }, + { + label: 'Operator Name', value: v.operatorName + }, + { + label: 'MaaS Platform Name', value: v.maaSPlatformName + }, + { + label: 'Update Time', value: v.updateTime + }, + { + label: 'Files Name', value: this.knowledgeBaseService.getFiles(v) + } + ] + this._knowledgeBase = v; + } + + get knowledgeBaseDetail() { + return this._knowledgeBase; + }; + @Output() modalOpreation = new EventEmitter(); + files = ''; + + ngOnInit() { + } + + handleCancel(): void { + this.showModel = false; + this.modalOpreation.emit({ "cancel": true }); + } + + handleOk(): void { + this.showModel = false; + this.modalOpreation.emit({ "cancel": true }); + } +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.html b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.html new file mode 100644 index 00000000..eba272c2 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.html @@ -0,0 +1,51 @@ +<!-- + Copyright (C) 2019 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<div class="content"> + <p class="title"> + {{ "i18nTextDefine_KnowledgeBaseList" | translate }} + <button nz-button nzType="primary" class="add" (click)="inputKnowledgeBaseModuleShow()"> + {{"i18nTextDefine_Create" | translate}} </button> + </p> + <nz-table #basicTable [nzData]="listOfData" [nzFrontPagination]="false" [nzShowPagination]="false"> + <thead> + <tr> + <th nzWidth="25%" style="font-size: 20px;">{{"i18nTextDefine_NO" | translate}}</th> + <th nzWidth="25%" style="font-size: 20px;">{{"i18nTextDefine_Name" | translate}}</th> + <th nzWidth="25%" style="font-size: 20px;">{{"i18nTextDefine_Description" | translate}}</th> + <th nzWidth="25%" style="font-size: 20px;">{{"i18nTextDefine_Action" | translate}}</th> + </tr> + </thead> + <tbody> + <tr *ngFor="let data of basicTable.data; let i = index"> + <td>{{ i+1 }}</td> + <td>{{ data.knowledgeBaseName }}</td> + <td>{{ data.knowledgeBaseDescription }}</td> + <td> + <i class="anticon anticon-menu-fold" (click)="displayKnowledgeDetails(data)"></i> + <!-- <i class="anticon anticon-edit" (click)="editKnowedgeBase(data)"></i> --> + <i class="anticon anticon-delete" (click)="deleteKnowledgeBase(data)"></i> + </td> + </tr> + </tbody> + </nz-table> +</div> +<app-input-knowledge-base *ngIf="intentModuleShow" [showModel]="intentModuleShow" + (modalOpreation)="inputKnowledgeBaseModuleClose($event)"></app-input-knowledge-base> +<app-knowledge-base-detail *ngIf="knowledgeBaseShow" [showModel]="knowledgeBaseShow" (modalOpreation)="knowledgeBaseDetailClose($event)" + [knowledgeBaseDetail]="knowledgeBaseDetail"></app-knowledge-base-detail> + +<!-- <app-edit-knowledge-base *ngIf="editKnowledgeBaseShow" [showModel]="editKnowledgeBaseShow" [knowledgeBaseId]="editKnowledgeBaseId" +(modalOpreation)="editKnowledgeBaseModuleClose($event)"></app-edit-knowledge-base> -->
\ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.less b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.less new file mode 100644 index 00000000..0b44f752 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.less @@ -0,0 +1,26 @@ +:host{ + display: block; +} +.content { + padding: 40px; + min-height: 937px; + height: 100vh; + .title{ + font-size: 30px; + color: #3C4F8C; + margin-bottom: 0.5em; + .add{ + float: right; + margin-top: 7px; + } + } + .anticon-edit,.anticon-delete,.anticon-menu-fold{ + font-size: 18px; + margin-right: 10px; + cursor: pointer; + } +} + +.column-size { + font-size: 20px; +} diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.ts b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.ts new file mode 100644 index 00000000..e54f1e23 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.ts @@ -0,0 +1,98 @@ +import { Component, OnInit } from '@angular/core'; +import { IntentManagementService } from '../../../core/services/intentManagement.service' +import { NzMessageService } from "ng-zorro-antd"; +import { Router } from '@angular/router'; + +@Component({ + selector: 'app-knowledge-base-management', + templateUrl: './knowledge-base-management.component.html', + styleUrls: ['./knowledge-base-management.component.less'] +}) +export class KnowledgeBaseManagementComponent implements OnInit { + editKnowledgeBaseShow = false; + editKnowledgeBaseId = ''; + constructor( + private myhttp: IntentManagementService, + private message: NzMessageService, + private router: Router + ) { } + + ngOnInit() { + this.getKnowledgeBaseData() + } + + listOfData: any[] = []; + + intentModuleShow: boolean = false; + knowledgeBaseShow: boolean = false; + editIntentTableList: Object = {}; + currentIndex: number = -1; + getKnowledgeBaseData(): void { + this.myhttp.getKnowledgeBaseRecord() + .subscribe( + (data) => { + this.listOfData = data.result_body + }, + () => { + this.message.error('Failed to obtain knowledgeBase data'); + } + ) + } + + inputKnowledgeBaseModuleShow(): void { + this.intentModuleShow = true; + } + inputKnowledgeBaseModuleClose($event: any): void { + console.log($event); + this.intentModuleShow = false; + if ($event.cancel) { + return; + } + this.getKnowledgeBaseData() + } + + editKnowledgeBaseModuleClose($event: any): void { + this.editKnowledgeBaseShow = false; + if ($event.cancel) { + return; + } + this.getKnowledgeBaseData() + } + + knowledgeBaseDetailClose($event: any): void { + this.knowledgeBaseShow = false; + } + + deleteKnowledgeBase(data): void { + this.myhttp.deleteKnowledgeBaseData(data.knowledgeBaseId).subscribe((data) => { + this.getKnowledgeBaseData() + if (data.result_header.result_code === 200) { + this.message.success('Deleted successfully'); + } else { + this.message.error(data.result_header.result_message); + } + }, (err) => { + this.message.error('Deletion failed'); + }); + } + + knowledgeBaseDetail: Object = {}; + displayKnowledgeDetails(data): void { + this.knowledgeBaseShow = true; + this.myhttp.getKnowledgeBaseById(data.knowledgeBaseId) + .subscribe( + (data) => { + this.knowledgeBaseDetail = data.result_body; + }, + (err) => { + this.message.error('Failed to obtain knowledge base data'); + } + ) + } + + editKnowedgeBase(data) { + this.editKnowledgeBaseId = data.knowledgeBaseId; + this.editKnowledgeBaseShow = true; + } + +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base.service.ts b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base.service.ts new file mode 100644 index 00000000..4af8c292 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base.service.ts @@ -0,0 +1,11 @@ +import { Injectable } from '@angular/core'; +import { knowledgeBase } from './knowledge-base.type'; + +@Injectable() +export class KnowledgeBaseService { + + constructor() { } + getFiles(v: knowledgeBase) { + return v.filesName ? v.filesName.join(',') : ''; + } +} diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base.type.ts b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base.type.ts new file mode 100644 index 00000000..ec9c7daa --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base.type.ts @@ -0,0 +1,12 @@ +export type knowledgeBase = { + knowledgeBaseName: string, + knowledgeBaseDescription: string, + operatorName: string, + maaSPlatformName: string, + updateTime: string, + filesName: Array<string>, + operatorId: string, + maaSPlatformId: string, + knowledgeBaseId: string +} + |