diff --git a/src/app/params-form/params-form.component.ts b/src/app/params-form/params-form.component.ts index 97ca2a6..a13bf9f 100644 --- a/src/app/params-form/params-form.component.ts +++ b/src/app/params-form/params-form.component.ts @@ -54,9 +54,9 @@ export class ParamsFormComponent implements OnInit { if (this.paramsSchema.properties) { this.paramsFormInfo = this.schemaService.getFormInfoFromParamsSchema(this.paramsSchema); } else if (this.paramsSchema.oneOf) { - this.paramsOptions = this.paramsSchema.oneOf.map((oneOf: any) => { + this.paramsOptions = this.paramsSchema.oneOf.map((oneOf: any, index: number) => { const paramsOption = { - display: oneOf.title, + display: oneOf.title ? oneOf.title : `Option ${index + 1}`, schema: oneOf, paramsFormInfo: this.schemaService.getFormInfoFromParamsSchema(oneOf), }; @@ -126,11 +126,19 @@ export class ParamsFormComponent implements OnInit { this.paramsSchema = paramsOption.schema; this.paramsFormInfo = paramsOption.paramsFormInfo; - // NOTE(jwetzell): prune params that MUST change from the data when switch paramOptions + // NOTE(jwetzell): modify params that should change from the data when switch paramOptions Object.entries(this.paramsFormInfo.paramsInfo).forEach(([paramKey, paramInfo]) => { - if (paramInfo.isConst && this.data) { - if (this.data[paramKey]) { - delete this.data[paramKey]; + if (this.data !== undefined) { + if (paramInfo.isConst) { + if (this.data[paramKey]) { + delete this.data[paramKey]; + } + } + + if (paramInfo.default) { + if (this.data[paramKey] !== undefined && this.data[paramKey] !== paramInfo.default) { + this.data[paramKey] = paramInfo.default; + } } } }); diff --git a/src/models/form.model.ts b/src/models/form.model.ts index 24db190..12f55aa 100644 --- a/src/models/form.model.ts +++ b/src/models/form.model.ts @@ -24,4 +24,5 @@ export type ParamInfo = { options?: string[]; isConst: boolean; schema: any; + default?: any; }; diff --git a/src/services/schema.service.ts b/src/services/schema.service.ts index c0fb0ba..fda4474 100644 --- a/src/services/schema.service.ts +++ b/src/services/schema.service.ts @@ -329,6 +329,7 @@ export class SchemaService { } } + paramsFormInfo.paramsInfo[paramKey] = { key: paramKey, display: paramSchema.title ? paramSchema.title : paramKey, @@ -337,6 +338,7 @@ export class SchemaService { isConst: !!paramSchema.const, schema: paramSchema, placeholder: '', + default: paramSchema.default ? paramSchema.default : undefined }; if (paramSchema.examples && paramSchema.examples.length > 0) {