Browse Source
Merge pull request #6434 from kalutkaz/fix/validationJsonEditor
[3.4] UI: Fix validation logic for JSON
pull/6682/head
Igor Kulikov
4 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
9 additions and
4 deletions
-
ui-ngx/src/app/shared/components/directives/tb-json-to-string.directive.ts
-
ui-ngx/src/app/shared/components/json-object-edit.component.ts
-
ui-ngx/src/app/shared/models/constants.ts
|
|
|
@ -26,6 +26,7 @@ import { |
|
|
|
Validator |
|
|
|
} from '@angular/forms'; |
|
|
|
import { ErrorStateMatcher } from '@angular/material/core'; |
|
|
|
import { isObject } from "@core/utils"; |
|
|
|
|
|
|
|
@Directive({ |
|
|
|
selector: '[tb-json-to-string]', |
|
|
|
@ -53,7 +54,11 @@ export class TbJsonToStringDirective implements ControlValueAccessor, Validator, |
|
|
|
@HostListener('input', ['$event.target.value']) input(newValue: any): void { |
|
|
|
try { |
|
|
|
this.data = JSON.parse(newValue); |
|
|
|
this.parseError = false; |
|
|
|
if (isObject(this.data)) { |
|
|
|
this.parseError = false; |
|
|
|
} else { |
|
|
|
this.parseError = true; |
|
|
|
} |
|
|
|
} catch (e) { |
|
|
|
this.parseError = true; |
|
|
|
} |
|
|
|
|
|
|
|
@ -22,7 +22,7 @@ import { ActionNotificationHide, ActionNotificationShow } from '@core/notificati |
|
|
|
import { Store } from '@ngrx/store'; |
|
|
|
import { AppState } from '@core/core.state'; |
|
|
|
import { CancelAnimationFrame, RafService } from '@core/services/raf.service'; |
|
|
|
import { guid, isDefinedAndNotNull, isLiteralObject, isUndefined } from '@core/utils'; |
|
|
|
import { guid, isDefinedAndNotNull, isObject, isUndefined } from '@core/utils'; |
|
|
|
import { ResizeObserver } from '@juggle/resize-observer'; |
|
|
|
import { getAce } from '@shared/models/ace/ace.models'; |
|
|
|
|
|
|
|
@ -259,7 +259,7 @@ export class JsonObjectEditComponent implements OnInit, ControlValueAccessor, Va |
|
|
|
if (this.contentValue && this.contentValue.length > 0) { |
|
|
|
try { |
|
|
|
data = JSON.parse(this.contentValue); |
|
|
|
if (!isLiteralObject(data)) { |
|
|
|
if (!isObject(data)) { |
|
|
|
throw new TypeError(`Value is not a valid JSON`); |
|
|
|
} |
|
|
|
this.objectValid = true; |
|
|
|
|
|
|
|
@ -202,7 +202,7 @@ export const valueTypesMap = new Map<ValueType, ValueTypeData>( |
|
|
|
ValueType.JSON, |
|
|
|
{ |
|
|
|
name: 'value.json', |
|
|
|
icon: 'mdi:json' |
|
|
|
icon: 'mdi:code-json' |
|
|
|
} |
|
|
|
] |
|
|
|
] |
|
|
|
|