From 457685063fd4b960441e482cc8b88fa8c972a7d2 Mon Sep 17 00:00:00 2001 From: Nicholas Soteropoulos Date: Mon, 14 Sep 2020 17:19:10 -0400 Subject: Fix mod ui build issues Change-Id: I4d002645240852a3a5f1964d9ffa2cac11c45b47 Signed-off-by: Nicholas Soteropoulos Issue-ID: DCAEGEN2-2317 Signed-off-by: Nicholas Soteropoulos --- .../comp-spec-validation.component.ts | 145 +++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 mod2/ui/src/app/comp-spec-validation/comp-spec-validation.component.ts (limited to 'mod2/ui/src/app/comp-spec-validation/comp-spec-validation.component.ts') diff --git a/mod2/ui/src/app/comp-spec-validation/comp-spec-validation.component.ts b/mod2/ui/src/app/comp-spec-validation/comp-spec-validation.component.ts new file mode 100644 index 0000000..2ce8fef --- /dev/null +++ b/mod2/ui/src/app/comp-spec-validation/comp-spec-validation.component.ts @@ -0,0 +1,145 @@ +/* + * # ============LICENSE_START======================================================= + * # Copyright (c) 2020 AT&T Intellectual Property. 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. + * # ============LICENSE_END========================================================= + */ + +import { Component, OnInit, ViewChild, ElementRef } from '@angular/core'; +import { SpecValidationService } from '../services/spec-validation.service'; +import { DownloadService } from '../services/download.service'; +import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner'; + +@Component({ + selector: 'app-comp-spec-validation', + templateUrl: './comp-spec-validation.component.html', + styleUrls: ['./comp-spec-validation.component.css'] +}) +export class CompSpecValidationComponent implements OnInit { + + @ViewChild('myFile', {static: false}) + myInputVariable: ElementRef; + + spec_validator_action; + release = ''; + type = ''; + shouldValidate = false; + shouldDownload = false; + validCompSpec = false; + specValidated = false; + specValidationOutputSummary: any; + + constructor(private specValidator: SpecValidationService, private downloadService: DownloadService, private spinnerService: Ng4LoadingSpinnerService ) { } + + ngOnInit() { + + } + + compSpecSelected: any; + onCompSpecUpload(event){ + this.compSpecSelected = event.target.files[0]; + this.readCsFileContent(this.compSpecSelected); + } + + compSpecContent: any = null; + readCsFileContent(file) { + if (file) { + let fileReader = new FileReader(); + fileReader.onload = (e) => { this.compSpecContent = fileReader.result; }; + fileReader.readAsText(file); + } + } + + validateRadioButton(){ + this.shouldValidate = true; + this.shouldDownload = false; + } + + downloadRadioButton(){ + this.shouldValidate = false; + this.shouldDownload = true; + this.compSpecContent = null; + this.specValidated = false + } + + resetFile(){ + this.myInputVariable.nativeElement.value = ""; + this.compSpecContent = null + this.compSpecSelected = null + this.specValidated = false + } + + specValidationOutputHeader = '' + specValidationOutputMessage = ''; + validateSpec(){ + this.specValidationOutputHeader = "" + this.specValidationOutputMessage = "" + this.specValidationOutputSummary = "" + + this.spinnerService.show() + this.validateJsonStructure() + this.specValidator.sendSpecFile(this.compSpecContent, this.type, this.release).subscribe( + res => {}, err => { + this.setSpecValidationMessage(err) + } + ) + } + + setSpecValidationMessage(res){ + if(res.status === 200){ + this.specValidationOutputHeader = "Success: Valid Component Spec" + this.specValidationOutputMessage = "" + this.validCompSpec = true + } else { + this.specValidationOutputHeader = `${res.status} Error: Invalid Component Spec` + this.specValidationOutputSummary = res.error.summary + + for(let item of res.error.errors){ + this.specValidationOutputMessage += `- ${item}\n\n` + } + + this.validCompSpec = false + } + + this.specValidated = true; + this.spinnerService.hide() + } + + validateJsonStructure() { + try { + JSON.parse(this.compSpecContent); + } catch (error) { + this.specValidationOutputHeader = "Error: Invalid Component Spec" + this.specValidationOutputSummary = "JSON Structure Error" + this.specValidationOutputMessage = error + this.validCompSpec = false + this.specValidated = true + this.spinnerService.hide() + throw new Error('JSON Structure error, quit!'); + } + } + + downloadSchema(){ + this.spinnerService.show() + this.specValidator.getSchema(this.type).subscribe( + res => { + this.downloadService.downloadJSON(res, `${this.release}+_${this.type}_Schema`) + this.spinnerService.hide() + }, err => { + console.log(err) + this.spinnerService.hide() + } + ) + } +} -- cgit 1.2.3-korg