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

View File

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