Merge pull request #3509 from owenconti/bug/3500-missing-name-for-primitives

Fixes #3500 - Fix missing names for primitive models
This commit is contained in:
Kyle
2017-08-04 16:32:48 -07:00
committed by GitHub
7 changed files with 40 additions and 36 deletions

View File

@@ -15,7 +15,7 @@ export default class ArrayModel extends Component {
} }
render(){ render(){
let { getComponent, required, schema, depth, expandDepth, name } = this.props let { getComponent, schema, depth, expandDepth, name } = this.props
let items = schema.get("items") let items = schema.get("items")
let title = schema.get("title") || name let title = schema.get("title") || name
let properties = schema.filter( ( v, key) => ["type", "items", "$$ref"].indexOf(key) === -1 ) let properties = schema.filter( ( v, key) => ["type", "items", "$$ref"].indexOf(key) === -1 )
@@ -31,7 +31,7 @@ export default class ArrayModel extends Component {
return <span className="model"> return <span className="model">
<ModelCollapse title={titleEl} collapsed={ depth > expandDepth } collapsedContent="[...]"> <ModelCollapse title={titleEl} collapsed={ depth > expandDepth } collapsedContent="[...]">
[ [
<span><Model { ...this.props } schema={ items } required={ false }/></span> <span><Model { ...this.props } schema={ items } required={ false } depth={ depth + 1 } /></span>
] ]
{ {
properties.size ? <span> properties.size ? <span>
@@ -41,7 +41,6 @@ export default class ArrayModel extends Component {
: null : null
} }
</ModelCollapse> </ModelCollapse>
{ required && <span style={{ color: "red" }}>*</span>}
</span> </span>
} }
} }

View File

@@ -74,8 +74,8 @@ export default class Model extends Component {
{ ...this.props } { ...this.props }
getComponent={ getComponent } getComponent={ getComponent }
schema={ modelSchema } schema={ modelSchema }
name={ name || modelName } name={ modelName }
deprecated={deprecated} deprecated={deprecated}
required={ required }/> } required={ required }/> }
} }
} }

View File

@@ -17,9 +17,9 @@ export default class ObjectModel extends Component {
} }
render(){ render(){
let { schema, name, isRef, getComponent, depth, ...props } = this.props let { schema, name, isRef, getComponent, depth, expandDepth, specSelectors, ...props } = this.props
let { expandDepth, specSelectors } = this.props
let { isOAS3 } = specSelectors let { isOAS3 } = specSelectors
let description = schema.get("description") let description = schema.get("description")
let properties = schema.get("properties") let properties = schema.get("properties")
let additionalProperties = schema.get("additionalProperties") let additionalProperties = schema.get("additionalProperties")

View File

@@ -7,11 +7,12 @@ export default class Primitive extends Component {
static propTypes = { static propTypes = {
schema: PropTypes.object.isRequired, schema: PropTypes.object.isRequired,
getComponent: PropTypes.func.isRequired, getComponent: PropTypes.func.isRequired,
required: PropTypes.bool name: PropTypes.string,
depth: PropTypes.number
} }
render(){ render(){
let { schema, getComponent, required } = this.props let { schema, getComponent, name, depth } = this.props
if(!schema || !schema.get) { if(!schema || !schema.get) {
// don't render if schema isn't correctly formed // don't render if schema isn't correctly formed
@@ -24,32 +25,34 @@ export default class Primitive extends Component {
let enumArray = schema.get("enum") let enumArray = schema.get("enum")
let description = schema.get("description") let description = schema.get("description")
let properties = schema.filter( ( v, key) => ["enum", "type", "format", "description", "$$ref"].indexOf(key) === -1 ) let properties = schema.filter( ( v, key) => ["enum", "type", "format", "description", "$$ref"].indexOf(key) === -1 )
let style = required ? { fontWeight: "bold" } : {}
const Markdown = getComponent("Markdown") const Markdown = getComponent("Markdown")
const EnumModel = getComponent("EnumModel") const EnumModel = getComponent("EnumModel")
return <span className="prop"> return <span className="model">
<span className="prop-type" style={ style }>{ type }</span> { required && <span style={{ color: "red" }}>*</span>} <span className="prop">
{ format && <span className="prop-format">(${format})</span>} { name && <span className={`${depth === 1 && "model-title"} prop-name`}>{ name }</span> }
{ <span className="prop-type">{ type }</span>
properties.size ? properties.entrySeq().map( ( [ key, v ] ) => <span key={`${key}-${v}`} style={ propStyle }> { format && <span className="prop-format">(${format})</span>}
<br />{ key }: { String(v) }</span>) {
: null properties.size ? properties.entrySeq().map( ( [ key, v ] ) => <span key={`${key}-${v}`} style={ propStyle }>
} <br />{ key }: { String(v) }</span>)
{ : null
!description ? null : }
<Markdown source={ description } /> {
} !description ? null :
{ <Markdown source={ description } />
xml && xml.size ? (<span><br /><span style={ propStyle }>xml:</span> }
{ {
xml.entrySeq().map( ( [ key, v ] ) => <span key={`${key}-${v}`} style={ propStyle }><br/>&nbsp;&nbsp;&nbsp;{key}: { String(v) }</span>).toArray() xml && xml.size ? (<span><br /><span style={ propStyle }>xml:</span>
} {
</span>): null xml.entrySeq().map( ( [ key, v ] ) => <span key={`${key}-${v}`} style={ propStyle }><br/>&nbsp;&nbsp;&nbsp;{key}: { String(v) }</span>).toArray()
} }
{ </span>): null
enumArray && <EnumModel value={ enumArray } getComponent={ getComponent } /> }
} {
enumArray && <EnumModel value={ enumArray } getComponent={ getComponent } />
}
</span>
</span> </span>
} }
} }

View File

@@ -3,7 +3,6 @@ import PropTypes from "prop-types"
import { OAS3ComponentWrapFactory } from "../helpers" import { OAS3ComponentWrapFactory } from "../helpers"
import { Model } from "core/components/model" import { Model } from "core/components/model"
class ModelComponent extends Component { class ModelComponent extends Component {
static propTypes = { static propTypes = {
schema: PropTypes.object.isRequired, schema: PropTypes.object.isRequired,

View File

@@ -699,7 +699,6 @@ body
.renderedMarkdown { .renderedMarkdown {
p { p {
@include text_body(); @include text_body();
font-size: 14px;
margin-top: 0px; margin-top: 0px;
margin-bottom: 0px; margin-bottom: 0px;
} }

View File

@@ -227,8 +227,6 @@ span
{ {
> span.model > span.model
{ {
padding: 0 0 0 10px;
.brace-close .brace-close
{ {
padding: 0 0 0 10px; padding: 0 0 0 10px;
@@ -236,6 +234,12 @@ span
} }
} }
.prop-name
{
display: inline-block;
width: 100px;
}
.prop-type .prop-type
{ {
color: #55a; color: #55a;