mirror of
https://github.com/Redocly/redoc.git
synced 2025-07-11 08:42:24 +03:00
naive oneOf
displayed similar to tuple sample only the first option
This commit is contained in:
parent
f7c6b8e980
commit
f1ac3c918d
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -37,3 +37,4 @@ compiled
|
||||||
/coverage
|
/coverage
|
||||||
.ghpages-tmp
|
.ghpages-tmp
|
||||||
stats.json
|
stats.json
|
||||||
|
/nbproject
|
|
@ -41,6 +41,19 @@
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
<template ngSwitchCase="oneOf">
|
||||||
|
<div class="params-wrap params-oneOf array-tuple">
|
||||||
|
<template ngFor [ngForOf]="schema.oneOf" let-item="$implicit" let-idx="index" [ngForTrackBy]="trackByIdx">
|
||||||
|
<div class="tuple-item">
|
||||||
|
<span class="tuple-item-index"> [{{idx}}]: </span>
|
||||||
|
<json-schema class="nested-schema" [pointer]="item._pointer"
|
||||||
|
[absolutePointer]="item._pointer"
|
||||||
|
[nestOdd]="!nestOdd" [isRequestSchema]="isRequestSchema">
|
||||||
|
</json-schema>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
<template ngSwitchCase="array">
|
<template ngSwitchCase="array">
|
||||||
<json-schema class="nested-schema" [pointer]="schema._pointer"
|
<json-schema class="nested-schema" [pointer]="schema._pointer"
|
||||||
[nestOdd]="!nestOdd" [isRequestSchema]="isRequestSchema"> </json-schema>
|
[nestOdd]="!nestOdd" [isRequestSchema]="isRequestSchema"> </json-schema>
|
||||||
|
|
|
@ -127,6 +127,12 @@ table {
|
||||||
font-family: monospace;
|
font-family: monospace;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.params-wrap.params-oneOf:before {
|
||||||
|
content: "oneOf [";
|
||||||
|
padding-top: 1em;
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
|
||||||
.params-wrap.params-array:before {
|
.params-wrap.params-array:before {
|
||||||
content: "Array [";
|
content: "Array [";
|
||||||
padding-top: 1em;
|
padding-top: 1em;
|
||||||
|
|
|
@ -65,7 +65,12 @@ export class SchemaSample extends BaseComponent implements OnInit {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
sample = OpenAPISampler.sample(this.componentSchema, {
|
let schemaForSampler = this.componentSchema;
|
||||||
|
if (this.componentSchema.oneOf) {
|
||||||
|
schemaForSampler = this.componentSchema.oneOf[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
sample = OpenAPISampler.sample(schemaForSampler, {
|
||||||
skipReadOnly: this.skipReadOnly
|
skipReadOnly: this.skipReadOnly
|
||||||
});
|
});
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
|
|
|
@ -94,6 +94,20 @@ const injectors = {
|
||||||
injectTo._widgetType = 'object';
|
injectTo._widgetType = 'object';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
oneOf: {
|
||||||
|
check: (propertySchema) => propertySchema.oneOf,
|
||||||
|
inject: (injectTo, propertySchema = injectTo, propPointer) => {
|
||||||
|
|
||||||
|
injectTo._isTuple = true;
|
||||||
|
injectTo._displayType = '';
|
||||||
|
let itemsPtr = JsonPointer.join(propertySchema._pointer || propPointer, ['oneOf']);
|
||||||
|
for (let i=0; i < propertySchema.oneOf.length; i++) {
|
||||||
|
let itemSchema = propertySchema.oneOf[i];
|
||||||
|
itemSchema._pointer = itemSchema._pointer || JsonPointer.join(itemsPtr, [i.toString()]);
|
||||||
|
}
|
||||||
|
injectTo._widgetType = 'oneOf';
|
||||||
|
}
|
||||||
|
},
|
||||||
noType: {
|
noType: {
|
||||||
check: (propertySchema) => !propertySchema.type,
|
check: (propertySchema) => !propertySchema.type,
|
||||||
inject: (injectTo) => {
|
inject: (injectTo) => {
|
||||||
|
@ -110,7 +124,7 @@ const injectors = {
|
||||||
return (!propertySchema.properties || !Object.keys(propertySchema.properties).length)
|
return (!propertySchema.properties || !Object.keys(propertySchema.properties).length)
|
||||||
&& (typeof propertySchema.additionalProperties !== 'object');
|
&& (typeof propertySchema.additionalProperties !== 'object');
|
||||||
}
|
}
|
||||||
return (propertySchema.type !== 'array') && propertySchema.type;
|
return (propertySchema.type !== 'array') && (propertySchema.type !== 'oneOf') && propertySchema.type;
|
||||||
},
|
},
|
||||||
inject: (injectTo, propertySchema = injectTo) => {
|
inject: (injectTo, propertySchema = injectTo) => {
|
||||||
injectTo.isTrivial = true;
|
injectTo.isTrivial = true;
|
||||||
|
|
|
@ -13,6 +13,7 @@ interface Reference {
|
||||||
interface Schema {
|
interface Schema {
|
||||||
properties: any;
|
properties: any;
|
||||||
allOf: any;
|
allOf: any;
|
||||||
|
oneOf: any;
|
||||||
items: any;
|
items: any;
|
||||||
additionalProperties: any;
|
additionalProperties: any;
|
||||||
}
|
}
|
||||||
|
@ -36,6 +37,9 @@ export class SchemaNormalizer {
|
||||||
resolved = Object.assign({}, resolved);
|
resolved = Object.assign({}, resolved);
|
||||||
AllOfMerger.merge(resolved, resolved.allOf);
|
AllOfMerger.merge(resolved, resolved.allOf);
|
||||||
}
|
}
|
||||||
|
if (resolved.oneOf) {
|
||||||
|
resolved.type = 'oneOf';
|
||||||
|
}
|
||||||
return resolved;
|
return resolved;
|
||||||
});
|
});
|
||||||
if (opts.resolved && !hasPtr) this._dereferencer.exit(ptr);
|
if (opts.resolved && !hasPtr) this._dereferencer.exit(ptr);
|
||||||
|
@ -74,6 +78,11 @@ class SchemaWalker {
|
||||||
SchemaWalker.walkEach(obj.allOf, ptr, visitor);
|
SchemaWalker.walkEach(obj.allOf, ptr, visitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (obj.oneOf) {
|
||||||
|
let ptr = JsonPointer.join(pointer, ['oneOf']);
|
||||||
|
SchemaWalker.walkEach(obj.oneOf, ptr, visitor);
|
||||||
|
}
|
||||||
|
|
||||||
if (obj.items) {
|
if (obj.items) {
|
||||||
let ptr = JsonPointer.join(pointer, ['items']);
|
let ptr = JsonPointer.join(pointer, ['items']);
|
||||||
if (Array.isArray(obj.items)) {
|
if (Array.isArray(obj.items)) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user