Render request bodies correctly (minus Example Value + editable functionality)

This commit is contained in:
Kyle Shockey
2017-06-29 23:16:54 -07:00
parent 2b37e7c2e4
commit 61de35d69c
2 changed files with 25 additions and 18 deletions

View File

@@ -2,28 +2,25 @@ import React from "react"
import { OrderedMap } from "immutable"
export default ({ requestBody, getComponent, specSelectors }) => {
export default ({ requestBody, getComponent, specSelectors, contentType }) => {
const Markdown = getComponent("Markdown")
const Model = getComponent("model")
const ModelExample = getComponent("modelExample")
const requestBodyDescription = (requestBody && requestBody.get("description")) || null
const requestBodyContent = (requestBody && requestBody.get("content")) || new OrderedMap()
contentType = contentType || requestBodyContent.keySeq().first()
const mediaTypeValue = requestBodyContent.get(contentType)
return <div>
{ requestBodyDescription &&
<p>{requestBodyDescription}</p>
<Markdown source={requestBodyDescription} />
}
{ !requestBodyContent.count() ? <p>No content</p> :
requestBodyContent.map((mediaTypeValue, key) => (
<div>
<h4>{key}</h4>
<Model
<ModelExample
getComponent={ getComponent }
specSelectors={ specSelectors }
expandDepth={1}
schema={mediaTypeValue.get("schema")} />
</div>
)).toArray()
}
schema={mediaTypeValue.get("schema")}
example={<i>Not yet implemented</i>}/>
</div>
}

View File

@@ -16,7 +16,8 @@ class Parameters extends Component {
super(props)
this.state = {
callbackVisible: false,
parametersVisible: true
parametersVisible: true,
requestBodyContentType: ""
}
}
@@ -94,10 +95,12 @@ class Parameters extends Component {
const ParameterRow = getComponent("parameterRow")
const TryItOutButton = getComponent("TryItOutButton")
const ContentType = getComponent("contentType")
const Callbacks = getComponent("Callbacks", true)
const RequestBody = getComponent("RequestBody", true)
const isExecute = tryItOutEnabled && allowTryItOut
const { isOAS3 } = specSelectors
const requestBody = operation.get("requestBody")
return (
@@ -153,13 +156,20 @@ class Parameters extends Component {
<Callbacks callbacks={Map(operation.get("callbacks"))} />
</div> : "" }
{
requestBody && this.state.parametersVisible &&
isOAS3() && requestBody && this.state.parametersVisible &&
<div className="opblock-section">
<div className="opblock-section-header">
<h4 className="opblock-title">Request body</h4>
<ContentType
value={this.state.requestBodyContentType}
contentTypes={ requestBody.get("content").keySeq() }
onChange={(val) => this.setState({ requestBodyContentType: val })}
className="body-param-content-type" />
</div>
<div className="opblock-description-wrapper">
<RequestBody requestBody={requestBody} />
<RequestBody
requestBody={requestBody}
contentType={this.state.requestBodyContentType}/>
</div>
</div>
}