import React, { Component, PropTypes } from "react" import win from "core/window" export default class ParameterRow extends Component { static propTypes = { onChange: PropTypes.func.isRequired, param: PropTypes.object.isRequired, getComponent: PropTypes.func.isRequired, fn: PropTypes.object.isRequired, isExecute: PropTypes.bool, onChangeConsumes: PropTypes.func.isRequired, specSelectors: PropTypes.object.isRequired, pathMethod: PropTypes.array.isRequired } constructor(props, context) { super(props, context) let { specSelectors, pathMethod, param } = props let defaultValue = param.get("default") let parameter = specSelectors.getParameter(pathMethod, param.get("name")) let value = parameter ? parameter.get("value") : "" if ( defaultValue !== undefined && value === undefined ) { this.onChangeWrapper(defaultValue) } } componentWillReceiveProps(props) { let { specSelectors, pathMethod, param } = props let defaultValue = param.get("default") let parameter = specSelectors.getParameter(pathMethod, param.get("name")) let value = parameter ? parameter.get("value") : "" if ( defaultValue !== undefined && value === undefined ) { this.onChangeWrapper(defaultValue) } } onChangeWrapper = (value) => { let { onChange, param } = this.props return onChange(param, value) } render() { let {param, onChange, getComponent, isExecute, fn, onChangeConsumes, specSelectors, pathMethod} = this.props // const onChangeWrapper = (value) => onChange(param, value) const JsonSchemaForm = getComponent("JsonSchemaForm") const ParamBody = getComponent("ParamBody") let inType = param.get("in") let bodyParam = inType !== "body" ? null : const ModelExample = getComponent("modelExample") const Markdown = getComponent("Markdown") let schema = param.get("schema") let isFormData = inType === "formData" let isFormDataSupported = "FormData" in win let required = param.get("required") let itemType = param.getIn(["items", "type"]) let parameter = specSelectors.getParameter(pathMethod, param.get("name")) let value = parameter ? parameter.get("value") : "" return (
{ param.get("name") } { !required ? null :  * }
{ param.get("type") } { itemType && `[${itemType}]` }
({ param.get("in") })
{(isFormData && !isFormDataSupported) &&
Error: your browser does not support FormData
} { bodyParam || !isExecute ? null : } { bodyParam && schema ? : null } ) } }