import React, { Component } from "react" import { Map } from "immutable" import PropTypes from "prop-types" import ImPropTypes from "react-immutable-proptypes" import win from "core/window" import { getExtensions } from "core/utils" 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, getConfigs: PropTypes.func.isRequired, specPath: ImPropTypes.list.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"), param.get("in")) let value = parameter ? parameter.get("value") : "" if ( defaultValue !== undefined && value === undefined ) { this.onChangeWrapper(defaultValue) } } componentWillReceiveProps(props) { let { specSelectors, pathMethod, param } = props let { isOAS3 } = specSelectors let example = param.get("example") let defaultValue = param.get("default") let parameter = specSelectors.getParameter(pathMethod, param.get("name"), param.get("in")) let enumValue if(isOAS3()) { let schema = param.get("schema") || Map() enumValue = schema.get("enum") } else { enumValue = parameter ? parameter.get("enum") : undefined } let paramValue = parameter ? parameter.get("value") : undefined let value if ( paramValue !== undefined ) { value = paramValue } else if ( example !== undefined ) { value = example } else if ( defaultValue !== undefined) { value = defaultValue } else if ( param.get("required") && enumValue && enumValue.size ) { value = enumValue.first() } if ( value !== undefined ) { this.onChangeWrapper(value) } } onChangeWrapper = (value) => { let { onChange, param } = this.props return onChange(param, value) } render() { let {param, onChange, getComponent, getConfigs, isExecute, fn, onChangeConsumes, specSelectors, pathMethod, specPath} = this.props let { isOAS3 } = specSelectors const { showExtensions } = getConfigs() // 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") const ParameterExt = getComponent("ParameterExt") let schema = param.get("schema") let type = isOAS3 && isOAS3() ? param.getIn(["schema", "type"]) : param.get("type") let isFormData = inType === "formData" let isFormDataSupported = "FormData" in win let required = param.get("required") let itemType = param.getIn(isOAS3 && isOAS3() ? ["schema", "items", "type"] : ["items", "type"]) let parameter = specSelectors.getParameter(pathMethod, param.get("name"), param.get("in")) let value = parameter ? parameter.get("value") : "" let extensions = getExtensions(param) let paramItems // undefined let paramItemsEnum // undefined let isDisplayParamItemsEnum = false if ( param !== undefined ) { paramItems = param.get("items") } if ( paramItems !== undefined ) { paramItemsEnum = param.get("items").get("enum") } if ( paramItemsEnum !== undefined ) { if (paramItemsEnum.size > 0) { isDisplayParamItemsEnum = true } } // Default and Example Value for readonly doc let paramDefaultValue // undefined let paramExample // undefined if ( param !== undefined ) { paramDefaultValue = param.get("default") paramExample = param.get("example") } if (isDisplayParamItemsEnum) { // if we have an array, default value is in "items" paramDefaultValue = paramItems.get("default") } return (
{ param.get("name") } { !required ? null :  * }
{ type } { itemType && `[${itemType}]` }
{ isOAS3 && isOAS3() && param.get("deprecated") ? "deprecated": null }
({ param.get("in") })
{ !showExtensions || !extensions.size ? null : extensions.map((v, key) => )} { (bodyParam || !isExecute) && isDisplayParamItemsEnum ? Available values : " + paramItemsEnum.map(function(item) { return item }).toArray()}/> : null } { (bodyParam || !isExecute) && paramDefaultValue !== undefined ? Default value : " + paramDefaultValue}/> : null } { (bodyParam || !isExecute) && paramExample !== undefined ? Example : " + paramExample}/> : null } {(isFormData && !isFormDataSupported) &&
Error: your browser does not support FormData
} { bodyParam || !isExecute ? null : } { bodyParam && schema ? : null } ) } }