From 56531d13b0e5b6d02328b860018838db1bd2aac6 Mon Sep 17 00:00:00 2001 From: Ryan Mathis Date: Tue, 10 Jul 2018 10:01:56 -0700 Subject: [PATCH] SHIBUI-578 Added required field markers --- ui/src/app/schema-form/registry.ts | 7 +-- ui/src/app/schema-form/schema-form.module.ts | 4 +- .../app/schema-form/service/schema.service.ts | 17 +++++++ .../widget/datalist/datalist.component.html | 6 ++- .../widget/datalist/datalist.component.ts | 14 +++++- .../widget/number/number.component.html | 21 ++++++++ .../widget/number/number.component.ts | 21 ++++++++ .../widget/select/select.component.html | 13 +++-- .../widget/select/select.component.ts | 15 +++++- .../widget/text/string.component.html | 6 +-- .../widget/text/string.component.ts | 14 +++++- .../widget/textarea/textarea.component.html | 5 +- .../widget/textarea/textarea.component.ts | 13 ++++- .../autocomplete/autocomplete.component.html | 1 + .../autocomplete/autocomplete.component.ts | 1 + .../filebacked-http-common.schema.json | 48 ++++++++++++++----- .../filebacked-http-filters.schema.json | 13 ++--- .../filebacked-http-reloading.schema.json | 16 +++++-- .../provider/metadata-provider.schema.json | 4 +- 19 files changed, 197 insertions(+), 42 deletions(-) create mode 100644 ui/src/app/schema-form/widget/number/number.component.html create mode 100644 ui/src/app/schema-form/widget/number/number.component.ts diff --git a/ui/src/app/schema-form/registry.ts b/ui/src/app/schema-form/registry.ts index d197dcf2c..47761b3ac 100644 --- a/ui/src/app/schema-form/registry.ts +++ b/ui/src/app/schema-form/registry.ts @@ -15,6 +15,7 @@ import { DatalistComponent } from './widget/datalist/datalist.component'; import { CustomCheckboxComponent } from './widget/check/checkbox.component'; import { CustomTextAreaComponent } from './widget/textarea/textarea.component'; import { CustomArrayComponent } from './widget/array/array.component'; +import { CustomIntegerComponent } from './widget/number/number.component'; export class CustomWidgetRegistry extends WidgetRegistry { @@ -44,13 +45,13 @@ export class CustomWidgetRegistry extends WidgetRegistry { this.register('textarea', CustomTextAreaComponent); + this.register('integer', CustomIntegerComponent); + this.register('number', CustomIntegerComponent); + this.register('datalist', DatalistComponent); /* NGX-Form */ this.register('object', ObjectWidget); - - this.register('integer', IntegerWidget); - this.register('number', IntegerWidget); this.register('range', RangeWidget); this.register('file', FileWidget); diff --git a/ui/src/app/schema-form/schema-form.module.ts b/ui/src/app/schema-form/schema-form.module.ts index d51ae2269..15edd4b6d 100644 --- a/ui/src/app/schema-form/schema-form.module.ts +++ b/ui/src/app/schema-form/schema-form.module.ts @@ -14,6 +14,7 @@ import { DatalistComponent } from './widget/datalist/datalist.component'; import { CustomCheckboxComponent } from './widget/check/checkbox.component'; import { CustomTextAreaComponent } from './widget/textarea/textarea.component'; import { CustomArrayComponent } from './widget/array/array.component'; +import { CustomIntegerComponent } from './widget/number/number.component'; export const COMPONENTS = [ BooleanRadioComponent, @@ -23,7 +24,8 @@ export const COMPONENTS = [ DatalistComponent, CustomCheckboxComponent, CustomTextAreaComponent, - CustomArrayComponent + CustomArrayComponent, + CustomIntegerComponent ]; @NgModule({ diff --git a/ui/src/app/schema-form/service/schema.service.ts b/ui/src/app/schema-form/service/schema.service.ts index 20177e115..86989b6f1 100644 --- a/ui/src/app/schema-form/service/schema.service.ts +++ b/ui/src/app/schema-form/service/schema.service.ts @@ -12,4 +12,21 @@ export class SchemaService { get(path: string): Observable { return this.http.get(`${path}`); } + + isRequired(formProperty: any): boolean { + let required = false; + let requiredFields = formProperty.parent.schema.required || []; + let fieldPath = formProperty.path; + let controlName = fieldPath.substr(fieldPath.lastIndexOf('/') + 1); + required = requiredFields.indexOf(controlName) > -1; + + if (!required) { + const conditions = formProperty.parent.schema.anyOf || []; + conditions.forEach(el => { + requiredFields = el.required || []; + required = !required ? requiredFields.indexOf(controlName) > -1 : required; + }); + } + return required; + } } diff --git a/ui/src/app/schema-form/widget/datalist/datalist.component.html b/ui/src/app/schema-form/widget/datalist/datalist.component.html index 9df975a27..94242cc8a 100644 --- a/ui/src/app/schema-form/widget/datalist/datalist.component.html +++ b/ui/src/app/schema-form/widget/datalist/datalist.component.html @@ -1,6 +1,9 @@