X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=inline;f=webapp-frontend%2Fsrc%2Fapp%2Fpolicy%2Ftyped-policy-editor%2Ftyped-policy-editor.component.ts;h=990b882a4c95f40e2f44bc6c008fa225aa20bd53;hb=66372cb88b6b3e94dada9197c5efeaa7b2c93e17;hp=5a99e39ec410563598c683d59460f586832fcf5f;hpb=134476ea6d7b5d88341e28ba15f5dbbbce577598;p=portal%2Fnonrtric-controlpanel.git diff --git a/webapp-frontend/src/app/policy/typed-policy-editor/typed-policy-editor.component.ts b/webapp-frontend/src/app/policy/typed-policy-editor/typed-policy-editor.component.ts index 5a99e39..990b882 100644 --- a/webapp-frontend/src/app/policy/typed-policy-editor/typed-policy-editor.component.ts +++ b/webapp-frontend/src/app/policy/typed-policy-editor/typed-policy-editor.component.ts @@ -19,105 +19,104 @@ // import { animate, state, style, transition, trigger } from '@angular/animations'; -import { Component, Input, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { JsonPointer } from 'angular6-json-schema-form'; @Component({ - selector: 'nrcp-typed-policy-editor', - templateUrl: './typed-policy-editor.component.html', - styleUrls: ['./typed-policy-editor.component.scss'], - animations: [ - trigger('expandSection', [ - state('in', style({ height: '*' })), - transition(':enter', [ - style({ height: 0 }), animate(100), - ]), - transition(':leave', [ - style({ height: '*' }), - animate(100, style({ height: 0 })), - ]), - ]), - ], - + selector: "nrcp-typed-policy-editor", + templateUrl: "./typed-policy-editor.component.html", + styleUrls: ["./typed-policy-editor.component.scss"], + animations: [ + trigger("expandSection", [ + state("in", style({ height: "*" })), + transition(":enter", [style({ height: 0 }), animate(100)]), + transition(":leave", [ + style({ height: "*" }), + animate(100, style({ height: 0 })), + ]), + ]), + ], }) export class TypedPolicyEditorComponent implements OnInit { - jsonFormOptions: any = { - addSubmit: false, // Add a submit button if layout does not have one - debug: false, // Don't show inline debugging information - loadExternalAssets: false, // Load external css and JavaScript for frameworks - returnEmptyFields: false, // Don't return values for empty input fields - setSchemaDefaults: true, // Always use schema defaults for empty fields - defautWidgetOptions: { feedback: true }, // Show inline feedback icons - }; + jsonFormOptions: any = { + addSubmit: false, // Add a submit button if layout does not have one + debug: false, // Don't show inline debugging information + loadExternalAssets: false, // Load external css and JavaScript for frameworks + returnEmptyFields: false, // Don't return values for empty input fields + setSchemaDefaults: true, // Always use schema defaults for empty fields + defautWidgetOptions: { feedback: true }, // Show inline feedback icons + }; - @Input() jsonSchemaObject: any = {}; - @Input() jsonObject: any = {}; - @Input() darkMode: boolean; + @Input() jsonSchemaObject: any = {}; + @Input() jsonObject: any = {}; + @Input() darkMode: boolean; + @Output() validJson: EventEmitter = new EventEmitter(); - isVisible = { - form: true, - json: false, - schema: false - }; - formActive: boolean = false; - jsonFormStatusMessage: string = 'Loading form...'; - liveFormData: any = {}; - formIsValid: boolean = false; - formValidationErrors: any; + isVisible = { + form: true, + json: false, + schema: false, + }; + liveFormData: any = {}; + formIsValid: boolean = false; + formValidationErrors: any; - constructor() { - this.formActive = false; - } + constructor() {} - ngOnInit(): void { - this.formActive = true; - } + ngOnInit(): void {} - public onChanges(formData: any) { - this.liveFormData = formData; - } + public onChanges(formData: any) { + this.liveFormData = formData; + } - get prettyLiveFormData(): string { - return JSON.stringify(this.liveFormData, null, 2); - } + get prettyLiveFormData(): string { + return JSON.stringify(this.liveFormData, null, 2); + } - get schemaAsString(): string { - return JSON.stringify(this.jsonSchemaObject, null, 2); - } + get schemaAsString(): string { + return JSON.stringify(this.jsonSchemaObject, null, 2); + } - get jsonAsString(): string { - return JSON.stringify(this.jsonObject, null, 2); - } + get jsonAsString(): string { + return JSON.stringify(this.jsonObject, null, 2); + } - isValid(isValid: boolean): void { - this.formIsValid = isValid; + isValid(isValid: boolean): void { + this.formIsValid = isValid; + let json = this.prettyLiveFormData; + if (!this.formIsValid) { + json = null; } + this.validJson.emit(json); + } - validationErrors(validationErrors: any): void { - this.formValidationErrors = validationErrors; - } + validationErrors(validationErrors: any): void { + this.formValidationErrors = validationErrors; + } - get prettyValidationErrors() { - if (!this.formValidationErrors) { return null; } - const errorArray = []; - for (const error of this.formValidationErrors) { - const message = error.message; - const dataPathArray = JsonPointer.parse(error.dataPath); - if (dataPathArray.length) { - let field = dataPathArray[0]; - for (let i = 1; i < dataPathArray.length; i++) { - const key = dataPathArray[i]; - field += /^\d+$/.test(key) ? `[${key}]` : `.${key}`; - } - errorArray.push(`${field}: ${message}`); - } else { - errorArray.push(message); - } + get prettyValidationErrors() { + if (!this.formValidationErrors) { + return null; + } + const errorArray = []; + for (const error of this.formValidationErrors) { + const message = error.message; + const dataPathArray = JsonPointer.parse(error.dataPath); + if (dataPathArray.length) { + let field = dataPathArray[0]; + for (let i = 1; i < dataPathArray.length; i++) { + const key = dataPathArray[i]; + field += /^\d+$/.test(key) ? `[${key}]` : `.${key}`; } - return errorArray.join('
'); + errorArray.push(`${field}: ${message}`); + } else { + errorArray.push(message); + } } + return errorArray.join("
"); + } - public toggleVisible(item: string) { - this.isVisible[item] = !this.isVisible[item]; - } + public toggleVisible(item: string) { + this.isVisible[item] = !this.isVisible[item]; + } }