diff --git a/lib/components/JsonSchema/json-schema.html b/lib/components/JsonSchema/json-schema.html index 298b3943..51a9b0a7 100644 --- a/lib/components/JsonSchema/json-schema.html +++ b/lib/components/JsonSchema/json-schema.html @@ -12,7 +12,7 @@
{{prop._displayType}} {{prop._displayFormat}} - Required + Required
This field value determines the exact schema:
diff --git a/lib/components/JsonSchema/json-schema.js b/lib/components/JsonSchema/json-schema.js index 75f723e3..0ed590aa 100644 --- a/lib/components/JsonSchema/json-schema.js +++ b/lib/components/JsonSchema/json-schema.js @@ -71,7 +71,8 @@ export default class JsonSchema extends BaseComponent { let discriminatorFieldIdx = -1; let props = Object.keys(schema.properties).map((prop, idx) => { let propData = schema.properties[prop]; - propData = this.injectPropData(prop, propData, schema); + let propPointer = JsonPointer.join(this.pointer, ['properties', prop]); + propData = JsonSchema.injectPropData(propData, prop, propPointer, this.requiredMap, schema); if (propData.isDiscriminator) discriminatorFieldIdx = idx; return propData; }); @@ -97,18 +98,19 @@ export default class JsonSchema extends BaseComponent { if (discrValues) discrValues.style.paddingLeft = maxWidth + 'px'; } - injectPropData(prop, propData, schema) { + static injectPropData(propData, propName, propPointer, requiredMap, schema) { propData = Object.assign({}, propData); - propData._name = prop; - propData.isRequired = this.requiredMap[prop]; + propData._name = propName; + propData.required = propData.required || (requiredMap && requiredMap[propName]); propData._displayType = propData.type; - propData.isDiscriminator = (schema.discriminator === prop); + propData.isDiscriminator = (schema && schema.discriminator === propName); if (propData.type === 'array') { let itemType = propData.items.type; let itemFormat = propData.items.format; if (itemType === 'object' || !itemType) { itemType = propData.items.title || 'object'; - propData._pointer = propData.items._pointer || JsonPointer.join(this.pointer, ['properties', prop, 'items']); + propData._pointer = propData.items._pointer + || JsonPointer.join(propPointer, ['items']); } propData._displayType = `${itemType}`; propData.format = itemFormat; diff --git a/lib/components/ParamsList/params-list.html b/lib/components/ParamsList/params-list.html index fbbdb382..8bfe6853 100644 --- a/lib/components/ParamsList/params-list.html +++ b/lib/components/ParamsList/params-list.html @@ -6,7 +6,8 @@
- {{param.type}} + {{param._displayType}} {{param._displayFormat}} Required
diff --git a/lib/components/ParamsList/params-list.js b/lib/components/ParamsList/params-list.js index 2e296513..13233e5f 100644 --- a/lib/components/ParamsList/params-list.js +++ b/lib/components/ParamsList/params-list.js @@ -26,6 +26,11 @@ export default class ParamsList extends BaseComponent { this.data.bodyParam = bodyParam; } + params = params.map((paramData) => { + let propPointer = paramData._pointer; + return JsonSchema.injectPropData(paramData, paramData.name, propPointer); + }); + this.data.noParams = !(params.length || this.data.bodyParam); this.data.params = params; }