fix: multipart array sample generation for items (#6461)

* json schema array component should use schema to generate example in case of array items.
* empty value checkbox should be disabled if not empty => not empty list || not empty string
* curl should also check for not empty list
This commit is contained in:
Mahtis Michel
2020-10-08 01:59:29 +02:00
committed by GitHub
parent deeff4b42c
commit f4bdf2f953
6 changed files with 35 additions and 19 deletions

View File

@@ -4,7 +4,7 @@ import { List, fromJS } from "immutable"
import cx from "classnames"
import ImPropTypes from "react-immutable-proptypes"
import DebounceInput from "react-debounce-input"
import { stringify } from "core/utils"
import { stringify, getSampleSchema } from "core/utils"
//import "less/json-schema-form"
const noop = ()=> {}
@@ -125,12 +125,15 @@ export class JsonSchema_array extends PureComponent {
constructor(props, context) {
super(props, context)
this.state = { value: valueOrEmptyList(props.value) }
this.state = { value: valueOrEmptyList(props.value), schema: props.schema}
}
componentWillReceiveProps(props) {
if(props.value !== this.state.value)
this.setState({ value: props.value })
if(props.schema !== this.state.schema)
this.setState({ schema: props.schema })
}
onChange = () => {
@@ -152,7 +155,9 @@ export class JsonSchema_array extends PureComponent {
addItem = () => {
let newValue = valueOrEmptyList(this.state.value)
this.setState(() => ({
value: newValue.push("")
value: newValue.push(getSampleSchema(this.state.schema.get("items"), false, {
includeWriteOnly: true
}))
}), this.onChange)
}

View File

@@ -145,10 +145,14 @@ const RequestBody = ({
let initialValue = prop.get("default") || prop.get("example") || ""
if (initialValue === "" && type === "object") {
initialValue = getSampleSchema(prop, false, {
includeWriteOnly: true
})
if (initialValue === "") {
if(type === "object") {
initialValue = getSampleSchema(prop, false, {
includeWriteOnly: true
})
} else if(type === "array") {
initialValue = []
}
}
if (typeof initialValue !== "string" && type === "object") {
@@ -193,7 +197,7 @@ const RequestBody = ({
onChange={(value) => onChangeIncludeEmpty(key, value)}
isIncluded={requestBodyInclusionSetting.get(key) || false}
isIncludedOptions={setIsIncludedOptions(key)}
isDisabled={!isEmptyValue(currentValue)}
isDisabled={Array.isArray(currentValue) ? currentValue.length !== 0 : !isEmptyValue(currentValue)}
/>
)}
</div> : null }

View File

@@ -416,7 +416,10 @@ export const executeRequest = (req) =>
}
)
.filter(
(value, key) => !isEmptyValue(value) || requestBodyInclusionSetting.get(key)
(value, key) => (Array.isArray(value)
? value.length !== 0
: !isEmptyValue(value)
) || requestBodyInclusionSetting.get(key)
)
.toJS()
} else{