From 91d4ab96d76600d1c0263979ce701b96769f3a36 Mon Sep 17 00:00:00 2001 From: Josh Ponelat Date: Tue, 24 Oct 2017 12:39:57 +0200 Subject: [PATCH 1/7] partial specPath changes --- src/core/components/model-example.jsx | 8 +++++--- src/core/components/model.jsx | 12 +++++++----- src/core/components/models.jsx | 1 + src/core/components/object-model.jsx | 20 ++++++++++++-------- src/core/components/operation.jsx | 10 ++++++---- src/core/components/operations.jsx | 4 ++-- src/core/components/parameter-row.jsx | 5 +++-- src/core/components/parameters.jsx | 11 ++++++++--- src/core/components/response.jsx | 12 +++++++++--- src/core/components/responses.jsx | 6 +++++- 10 files changed, 58 insertions(+), 31 deletions(-) diff --git a/src/core/components/model-example.jsx b/src/core/components/model-example.jsx index 23d7c80285b..89f5f497f8e 100644 --- a/src/core/components/model-example.jsx +++ b/src/core/components/model-example.jsx @@ -8,7 +8,8 @@ export default class ModelExample extends React.Component { schema: PropTypes.object.isRequired, example: PropTypes.any.isRequired, isExecute: PropTypes.bool, - getConfigs: PropTypes.func.isRequired + getConfigs: PropTypes.func.isRequired, + specPath: PropTypes.array.isRequired, } constructor(props, context) { @@ -32,7 +33,7 @@ export default class ModelExample extends React.Component { } render() { - let { getComponent, specSelectors, schema, example, isExecute, getConfigs } = this.props + let { getComponent, specSelectors, schema, example, isExecute, getConfigs, specPath } = this.props let { defaultModelExpandDepth } = getConfigs() const ModelWrapper = getComponent("ModelWrapper") @@ -53,7 +54,8 @@ export default class ModelExample extends React.Component { !isExecute && this.state.activeTab === "model" && + expandDepth={ defaultModelExpandDepth } + specPath={specPath} /> } diff --git a/src/core/components/model.jsx b/src/core/components/model.jsx index 73163388780..a9dd1efff03 100644 --- a/src/core/components/model.jsx +++ b/src/core/components/model.jsx @@ -10,7 +10,8 @@ export default class Model extends Component { isRef: PropTypes.bool, required: PropTypes.bool, expandDepth: PropTypes.number, - depth: PropTypes.number + depth: PropTypes.number, + specPath: PropTypes.array.isRequired, } getModelName =( ref )=> { @@ -29,13 +30,13 @@ export default class Model extends Component { } render () { - let { getComponent, specSelectors, schema, required, name, isRef } = this.props + let { getComponent, specSelectors, schema, required, name, isRef, specPath } = this.props const ObjectModel = getComponent("ObjectModel") const ArrayModel = getComponent("ArrayModel") const PrimitiveModel = getComponent("PrimitiveModel") let type = "object" let $$ref = schema && schema.get("$$ref") - + // If we weren't passed a `name` but have a ref, grab the name from the ref if ( !name && $$ref ) { name = this.getModelName( $$ref ) @@ -44,15 +45,16 @@ export default class Model extends Component { if ( !schema && $$ref ) { schema = this.getRefSchema( name ) } - + const deprecated = specSelectors.isOAS3() && schema.get("deprecated") isRef = isRef !== undefined ? isRef : !!$$ref type = schema && schema.get("type") || type - + switch(type) { case "object": return diff --git a/src/core/components/object-model.jsx b/src/core/components/object-model.jsx index 9ab4e99a84d..907a53a304a 100644 --- a/src/core/components/object-model.jsx +++ b/src/core/components/object-model.jsx @@ -13,13 +13,13 @@ export default class ObjectModel extends Component { name: PropTypes.string, isRef: PropTypes.bool, expandDepth: PropTypes.number, - depth: PropTypes.number + depth: PropTypes.number, + specPath: PropTypes.object.isRequired } render(){ - let { schema, name, isRef, getComponent, depth, expandDepth, ...otherProps } = this.props + let { schema, name, isRef, getComponent, depth, specPath, expandDepth, ...otherProps } = this.props let { specSelectors } = otherProps - let { isOAS3 } = specSelectors let description = schema.get("description") let properties = schema.get("properties") @@ -32,14 +32,13 @@ export default class ObjectModel extends Component { const Model = getComponent("Model") const ModelCollapse = getComponent("ModelCollapse") - const JumpToPathSection = ({ name }) => { - const path = isOAS3 && isOAS3() ? `components.schemas.${name}` : `definitions.${name}` - return + const JumpToPathSection = () => { + return } const collapsedContent = ( { braceOpen }...{ braceClose } { - isRef ? : "" + isRef ? : "" } ) @@ -56,7 +55,7 @@ export default class ObjectModel extends Component { expandDepth } collapsedContent={ collapsedContent }> { braceOpen } { - !isRef ? null : + !isRef ? null : } { @@ -86,6 +85,7 @@ export default class ObjectModel extends Component { @@ -99,6 +99,7 @@ export default class ObjectModel extends Component { @@ -112,6 +113,7 @@ export default class ObjectModel extends Component { {anyOf.map((schema, k) => { return
})} @@ -126,6 +128,7 @@ export default class ObjectModel extends Component { {oneOf.map((schema, k) => { return
})} @@ -140,6 +143,7 @@ export default class ObjectModel extends Component { {not.map((schema, k) => { return
})} diff --git a/src/core/components/operation.jsx b/src/core/components/operation.jsx index c3210ddf443..9a462b9bbc0 100644 --- a/src/core/components/operation.jsx +++ b/src/core/components/operation.jsx @@ -14,7 +14,7 @@ export default class Operation extends PureComponent { showSummary: PropTypes.bool, isShownKey: CustomPropTypes.arrayOrString.isRequired, - jumpToKey: CustomPropTypes.arrayOrString.isRequired, + specPath: PropTypes.array.isRequired, allowTryItOut: PropTypes.bool, @@ -103,7 +103,7 @@ export default class Operation extends PureComponent { render() { let { isShownKey, - jumpToKey, + specPath, path, method, operation, @@ -161,7 +161,7 @@ export default class Operation extends PureComponent { return (
-
+
{/*TODO: convert this into a component, that can be wrapped and pulled in with getComponent */} {method.toUpperCase()} {path} - + {/*TODO: use wrapComponents here, swagger-ui doesn't care about jumpToPath */} { !showSummary ? null : @@ -213,6 +213,7 @@ export default class Operation extends PureComponent { } } diff --git a/src/core/components/operations.jsx b/src/core/components/operations.jsx index 6d760d53920..a250b5aff92 100644 --- a/src/core/components/operations.jsx +++ b/src/core/components/operations.jsx @@ -123,7 +123,7 @@ export default class Operations extends React.Component { const path = op.get("path", "") const method = op.get("method", "") - const jumpToKey = `paths.${path}.${method}` + const specPath = ["paths", path, method] const operationId = op.getIn(["operation", "operationId"]) || op.getIn(["operation", "__originalOperationId"]) || opId(op.get("operation"), path, method) || op.get("id") @@ -137,7 +137,7 @@ export default class Operations extends React.Component { {...op.toObject()} isShownKey={isShownKey} - jumpToKey={jumpToKey} + specPath={specPath} showSummary={showSummary} key={isShownKey} response={ response } diff --git a/src/core/components/parameter-row.jsx b/src/core/components/parameter-row.jsx index 71a2765a712..9315c9cfa3b 100644 --- a/src/core/components/parameter-row.jsx +++ b/src/core/components/parameter-row.jsx @@ -13,7 +13,8 @@ export default class ParameterRow extends Component { onChangeConsumes: PropTypes.func.isRequired, specSelectors: PropTypes.object.isRequired, pathMethod: PropTypes.array.isRequired, - getConfigs: PropTypes.func.isRequired + getConfigs: PropTypes.func.isRequired, + specPath: PropTypes.array.isRequired, } constructor(props, context) { @@ -68,7 +69,7 @@ export default class ParameterRow extends Component { } render() { - let {param, onChange, getComponent, getConfigs, isExecute, fn, onChangeConsumes, specSelectors, pathMethod} = this.props + let {param, onChange, getComponent, getConfigs, isExecute, fn, onChangeConsumes, specSelectors, pathMethod, specPath} = this.props let { isOAS3 } = specSelectors diff --git a/src/core/components/parameters.jsx b/src/core/components/parameters.jsx index b09ece50963..b6286787675 100644 --- a/src/core/components/parameters.jsx +++ b/src/core/components/parameters.jsx @@ -20,7 +20,8 @@ export default class Parameters extends Component { onCancelClick: PropTypes.func, onChangeKey: PropTypes.array, pathMethod: PropTypes.array.isRequired, - getConfigs: PropTypes.func.isRequired + getConfigs: PropTypes.func.isRequired, + specPath: PropTypes.array.isRequired, } @@ -30,6 +31,7 @@ export default class Parameters extends Component { tryItOutEnabled: false, allowTryItOut: true, onChangeKey: [], + specPath: [], } onChange = ( param, value, isXml ) => { @@ -58,6 +60,7 @@ export default class Parameters extends Component { parameters, allowTryItOut, tryItOutEnabled, + specPath, fn, getComponent, @@ -92,8 +95,10 @@ export default class Parameters extends Component { { - eachMap(parameters, (parameter) => ( - ( + { responses.entrySeq().map( ([code, response]) => { + let className = tryItOutResponse && tryItOutResponse.get("status") == code ? "response_current" : "" return ( Date: Tue, 24 Oct 2017 13:50:12 +0200 Subject: [PATCH 2/7] add specPath to arrays --- src/core/components/array-model.jsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/core/components/array-model.jsx b/src/core/components/array-model.jsx index a68a3562565..1ace04525a4 100644 --- a/src/core/components/array-model.jsx +++ b/src/core/components/array-model.jsx @@ -11,11 +11,12 @@ export default class ArrayModel extends Component { name: PropTypes.string, required: PropTypes.bool, expandDepth: PropTypes.number, + specPath: PropTypes.array.isRequired, depth: PropTypes.number } render(){ - let { getComponent, schema, depth, expandDepth, name } = this.props + let { getComponent, schema, depth, expandDepth, name, specPath } = this.props let description = schema.get("description") let items = schema.get("items") let title = schema.get("title") || name @@ -46,7 +47,7 @@ export default class ArrayModel extends Component { !description ? null : } - + ] From 6719a0af330aa7ec3f25f2be70b45c3cb4b3d6fb Mon Sep 17 00:00:00 2001 From: Josh Ponelat Date: Tue, 24 Oct 2017 13:52:17 +0200 Subject: [PATCH 3/7] add condition for OAS 3.0 model jumps --- src/core/components/models.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/components/models.jsx b/src/core/components/models.jsx index 5da96baff69..21fb471addd 100644 --- a/src/core/components/models.jsx +++ b/src/core/components/models.jsx @@ -15,6 +15,7 @@ export default class Models extends Component { let definitions = specSelectors.definitions() let { docExpansion, defaultModelExpandDepth } = getConfigs() let showModels = layoutSelectors.isShown("models", docExpansion === "full" || docExpansion === "list" ) + const specPathBase = specSelectors.isOAS3() ? ["components", "schemas"] : ["definitions"] const ModelWrapper = getComponent("ModelWrapper") const Collapse = getComponent("Collapse") @@ -35,7 +36,7 @@ export default class Models extends Component {
From e53bd3aef30c7bf5ef8677c64559af3afd94ba7a Mon Sep 17 00:00:00 2001 From: Josh Ponelat Date: Wed, 25 Oct 2017 10:17:10 +0200 Subject: [PATCH 4/7] add stub to models test for specSelectors.isOAS3) --- test/components/models.js | 1 + 1 file changed, 1 insertion(+) diff --git a/test/components/models.js b/test/components/models.js index 750a8cf123b..49eff79463c 100644 --- a/test/components/models.js +++ b/test/components/models.js @@ -18,6 +18,7 @@ describe("", function(){ return components[c] }, specSelectors: { + isOAS3: () => false, definitions: function() { return fromJS({ def1: {}, From 009ee1d9fbf2f614f69fd38e322db9e50544b19c Mon Sep 17 00:00:00 2001 From: Josh Ponelat Date: Wed, 25 Oct 2017 10:17:29 +0200 Subject: [PATCH 5/7] propagate specPath through parameter-row --- src/core/components/parameter-row.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/components/parameter-row.jsx b/src/core/components/parameter-row.jsx index 9315c9cfa3b..01472967c92 100644 --- a/src/core/components/parameter-row.jsx +++ b/src/core/components/parameter-row.jsx @@ -133,6 +133,7 @@ export default class ParameterRow extends Component { { bodyParam && schema ? Date: Wed, 1 Nov 2017 18:47:35 +0200 Subject: [PATCH 6/7] add specPath to parameters/requstBody --- src/core/plugins/oas3/components/request-body.jsx | 5 ++++- src/core/plugins/oas3/wrap-components/parameters.jsx | 8 +++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/core/plugins/oas3/components/request-body.jsx b/src/core/plugins/oas3/components/request-body.jsx index 7094e0687fc..632b1baa37d 100644 --- a/src/core/plugins/oas3/components/request-body.jsx +++ b/src/core/plugins/oas3/components/request-body.jsx @@ -10,6 +10,7 @@ const RequestBody = ({ specSelectors, contentType, isExecute, + specPath, onChange }) => { const Markdown = getComponent("Markdown") @@ -33,6 +34,7 @@ const RequestBody = ({ expandDepth={1} isExecute={isExecute} schema={mediaTypeValue.get("schema")} + specPath={[...specPath, "content", contentType]} example={
@@ -134,9 +138,10 @@ class Parameters extends Component { { - eachMap(parameters, (parameter) => ( + eachMap(parameters, (parameter, i) => (
{ From 60ee66768887ad736b95aebd1c7fd6075a7ab372 Mon Sep 17 00:00:00 2001 From: Kyle Shockey Date: Thu, 7 Dec 2017 17:07:30 -0800 Subject: [PATCH 7/7] Linter & test harness fixes --- src/core/components/object-model.jsx | 2 ++ src/core/components/operation.jsx | 5 +++-- test/components/object-model.js | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/core/components/object-model.jsx b/src/core/components/object-model.jsx index f13f6ecdb41..a20ce40652c 100644 --- a/src/core/components/object-model.jsx +++ b/src/core/components/object-model.jsx @@ -22,6 +22,8 @@ export default class ObjectModel extends Component { let { schema, name, isRef, getComponent, getConfigs, depth, specPath, expandDepth, ...otherProps } = this.props let { specSelectors } = otherProps + const { isOAS3 } = specSelectors + if(!schema) { return null } diff --git a/src/core/components/operation.jsx b/src/core/components/operation.jsx index 507f25eb25d..1369411ac0c 100644 --- a/src/core/components/operation.jsx +++ b/src/core/components/operation.jsx @@ -59,7 +59,6 @@ export default class Operation extends PureComponent { let { isShown, isAuthorized, - jumpToKey, path, method, op, @@ -114,8 +113,10 @@ export default class Operation extends PureComponent { let onChangeKey = [ path, method ] // Used to add values to _this_ operation ( indexed by path and method ) return ( +
+ {/*TODO: convert this into a component, that can be wrapped + and pulled in with getComponent */}
-
/*TODO: convert this into a component, that can be wrapped and pulled in with getComponent */} {method.toUpperCase()} ", function() { } }, isRef : false, + specPath: [], schema: Immutable.fromJS( { "properties": {