diff --git a/src/core/components/array-model.jsx b/src/core/components/array-model.jsx
index f0046aec..a9c36a2c 100644
--- a/src/core/components/array-model.jsx
+++ b/src/core/components/array-model.jsx
@@ -28,10 +28,15 @@ export default class ArrayModel extends Component {
{ title }
+ /*
+ Note: we set `name={null}` in below because we don't want
+ the name of the current Model passed (and displayed) as the name of the array element Model
+ */
+
return
expandDepth } collapsedContent="[...]">
[
-
+
]
{
properties.size ?
diff --git a/src/core/components/model.jsx b/src/core/components/model.jsx
index 8fe25219..73163388 100644
--- a/src/core/components/model.jsx
+++ b/src/core/components/model.jsx
@@ -28,25 +28,40 @@ export default class Model extends Component {
return specSelectors.findDefinition(model)
}
- renderModel( type, props, modelSchema, modelName, isRef, required, getComponent, specSelectors ) {
+ render () {
+ let { getComponent, specSelectors, schema, required, name, isRef } = this.props
const ObjectModel = getComponent("ObjectModel")
const ArrayModel = getComponent("ArrayModel")
const PrimitiveModel = getComponent("PrimitiveModel")
- const deprecated = specSelectors.isOAS3() && modelSchema.get("deprecated")
-
+ let type = "object"
+ let $$ref = schema && schema.get("$$ref")
+
+ // If we weren't passed a `name` but have a ref, grab the name from the ref
+ if ( !name && $$ref ) {
+ name = this.getModelName( $$ref )
+ }
+ // If we weren't passed a `schema` but have a ref, grab the schema from the ref
+ if ( !schema && $$ref ) {
+ schema = this.getRefSchema( name )
+ }
+
+ const deprecated = specSelectors.isOAS3() && schema.get("deprecated")
+ isRef = isRef !== undefined ? isRef : !!$$ref
+ type = schema && schema.get("type") || type
+
switch(type) {
case "object":
return
case "array":
return
case "string":
@@ -57,77 +72,10 @@ export default class Model extends Component {
return
}
}
-
- render () {
- let { getComponent, specSelectors, schema, required, name, isRef } = this.props
- let modelName, modelSchema, type
- let $$ref = schema && schema.get("$$ref")
-
- console.log("Rendering model", this.getModelName( $$ref ), name, $$ref, schema.toJS())
-
- if ( schema && (schema.get("type") || schema.get("properties")) ) {
- // props.schema is a normal schema
- modelName = name
- modelSchema = schema
- } else if ( $$ref ) {
- // props.schema is not a normal schema, most likely a $ref
- modelName = this.getModelName( $$ref )
- modelSchema = this.getRefSchema( modelName )
- }
-
- if ( !modelSchema ) {
- // Don't bother rendering an invalid schema
- return null
- }
-
- // Default `type` to object
- type = modelSchema.get("type") || "object"
- isRef = isRef !== undefined ? isRef : !!$$ref
-
- // If the model is `oneOf` or `anyOf`, go through its available types
- // and render each type as part of an array
- // if ( this.props.schema.get("oneOf") || this.props.schema.get("anyOf") ) {
- // const isOneOf = this.props.schema.get("oneOf")
- // const options = this.props.schema.get("oneOf") || this.props.schema.get("anyOf")
- // return (
- //
- // { isOneOf ? "One of: " : "Any of: " }
- // { options.map( (typeOption, i) => {
- // const type = typeOption.get("type")
- // const $$ref = typeOption.get("$$ref")
-
- // // Override modelName if the typeOption is a $$ref to another Model
- // if ( $$ref ) {
- // console.log("reassigning model name from", typeOption.toJS(), modelName, this.getModelName( $$ref ))
- // // modelName = $$ref && this.getModelName( $$ref )
- // }
-
- // let result = []
- // // "join" together the options with " or "/" and "
- // if ( i > 0 ) {
- // result.push( or )
- // }
-
- // // Render the Model component, overriding the props.schema and modelSchema properties
- // // with the proper type from the current iteration of the available types
- // result.push(
- // { this.renderModel( type, {
- // ...this.props,
- // schema: typeOption
- // }, typeOption, modelName, name, deprecated, isRef, $$ref, required, getComponent ) }
- // )
- // return result
- // } ).toJS() }
- //
- // )
- // }
-
- return this.renderModel( type, this.props, modelSchema, modelName, isRef, required, getComponent, specSelectors )
- }
}