// ========================LICENSE_END===================================
// /
-import { Component, Input, OnInit, Output } from '@angular/core';
-import { AbstractControl, ControlContainer, FormBuilder, FormControl, FormGroup, FormGroupDirective, ValidatorFn, Validators } from '@angular/forms';
-import { EventEmitter } from '@angular/core';
+import { Component, Input, OnInit, Output } from "@angular/core";
+import {
+ AbstractControl,
+ ControlContainer,
+ FormControl,
+ FormGroup,
+ FormGroupDirective,
+ ValidatorFn,
+ Validators,
+} from "@angular/forms";
+import { EventEmitter } from "@angular/core";
@Component({
- selector: 'nrcp-no-type-policy-editor',
- templateUrl: './no-type-policy-editor.component.html',
- styleUrls: ['./no-type-policy-editor.component.scss'],
- viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }]
+ selector: "nrcp-no-type-policy-editor",
+ templateUrl: "./no-type-policy-editor.component.html",
+ styleUrls: ["./no-type-policy-editor.component.scss"],
+ viewProviders: [
+ { provide: ControlContainer, useExisting: FormGroupDirective },
+ ],
})
export class NoTypePolicyEditorComponent implements OnInit {
@Input() policyJson: string = null;
instanceForm: FormGroup = new FormGroup({});
- constructor(
- private formBuilder: FormBuilder) { }
+ constructor() {}
- ngOnInit(): void {
- this.instanceForm.addControl(
- 'policyJsonTextArea', new FormControl(this.policyJson, [
- Validators.required,
- this.jsonValidator()
- ])
- )
+ ngOnInit(): void {
+ let initialJson: string;
+ if (this.policyJson) {
+ initialJson = formatJsonString(this.policyJson);
+ } else {
+ initialJson = "{}";
}
+ this.instanceForm.addControl(
+ "policyJsonTextArea",
+ new FormControl(initialJson, [
+ Validators.required,
+ this.jsonValidator(),
+ ])
+ );
+ }
- get policyJsonTextArea(): AbstractControl {
- return this.instanceForm ? this.instanceForm.get('policyJsonTextArea') : null;
+ get policyJsonTextArea(): AbstractControl {
+ return this.instanceForm
+ ? this.instanceForm.get("policyJsonTextArea")
+ : null;
}
formatJsonInput(): void {
- this.policyJson = formatJsonString(JSON.parse(this.policyJsonTextArea.value));
+ let jsonBefore: string = this.policyJsonTextArea.value;
+ let jsonAfter = formatJsonString(JSON.parse(jsonBefore));
+ this.policyJsonTextArea.setValue(jsonAfter);
}
jsonValidator(): ValidatorFn {
return (control: AbstractControl): { [key: string]: any } | null => {
const notValid = !this.isJsonValid(control.value);
this.handleJsonChangeEvent(notValid, control.value);
- return notValid ? { 'invalidJson': { value: control.value } } : null;
+ return notValid ? { invalidJson: { value: control.value } } : null;
};
}
}
isJsonValid(json: string): boolean {
+ let valid = false as boolean;
try {
if (json != null) {
JSON.parse(json);
- return true;
- } else {
- return false;
+ valid = true;
}
- } catch (jsonError) {
- return false;
- }
+ } catch (jsonError) {}
+ return valid;
}
}