Fix array inside objects if referenced directly (fixes #84)

This commit is contained in:
Roman Hotsiy 2016-08-30 18:38:57 +03:00
parent 4f746a19e3
commit 2bc729ea23
No known key found for this signature in database
GPG Key ID: 5CB7B3ACABA57CB0
2 changed files with 10 additions and 5 deletions

View File

@ -66,8 +66,8 @@ export class JsonSchema extends BaseComponent implements OnInit {
this.applyStyling();
this.schema = this.normalizer.normalize(this.schema, this.normPointer);
this.initDescendants();
this.schema = SchemaHelper.unwrapArray(this.schema, this.normPointer);
this.initDescendants();
this.preprocessSchema();
}

View File

@ -67,11 +67,15 @@ const injectors = {
return propertySchema.type === 'array' && !Array.isArray(propertySchema.items);
},
inject: (injectTo, propertySchema = injectTo, propPointer) => {
if (!(SchemaHelper.detectType(propertySchema.items) === 'object')) {
injectTo._isArray = true;
injectTo._pointer = propertySchema.items._pointer
|| JsonPointer.join(propertySchema._pointer || propPointer, ['items']);
SchemaHelper.runInjectors(injectTo, propertySchema.items, propPointer);
} else {
injectors.object.inject(injectTo, propertySchema.items);
}
injectTo._widgetType = 'array';
}
},
@ -270,6 +274,7 @@ export class SchemaHelper {
}
static detectType(schema) {
if (schema.type) return schema.type;
let keywords = Object.keys(keywordTypes);
for (var i=0; i < keywords.length; i++) {
let keyword = keywords[i];