mirror of
https://github.com/Redocly/redoc.git
synced 2025-07-10 16:22:27 +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
|
||||
.ghpages-tmp
|
||||
stats.json
|
||||
/nbproject
|
|
@ -41,6 +41,19 @@
|
|||
</template>
|
||||
</div>
|
||||
</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">
|
||||
<json-schema class="nested-schema" [pointer]="schema._pointer"
|
||||
[nestOdd]="!nestOdd" [isRequestSchema]="isRequestSchema"> </json-schema>
|
||||
|
|
|
@ -127,6 +127,12 @@ table {
|
|||
font-family: monospace;
|
||||
}
|
||||
|
||||
.params-wrap.params-oneOf:before {
|
||||
content: "oneOf [";
|
||||
padding-top: 1em;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
.params-wrap.params-array:before {
|
||||
content: "Array [";
|
||||
padding-top: 1em;
|
||||
|
|
|
@ -65,7 +65,12 @@ export class SchemaSample extends BaseComponent implements OnInit {
|
|||
return;
|
||||
}
|
||||
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
|
||||
});
|
||||
} catch(e) {
|
||||
|
|
|
@ -94,6 +94,20 @@ const injectors = {
|
|||
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: {
|
||||
check: (propertySchema) => !propertySchema.type,
|
||||
inject: (injectTo) => {
|
||||
|
@ -110,7 +124,7 @@ const injectors = {
|
|||
return (!propertySchema.properties || !Object.keys(propertySchema.properties).length)
|
||||
&& (typeof propertySchema.additionalProperties !== 'object');
|
||||
}
|
||||
return (propertySchema.type !== 'array') && propertySchema.type;
|
||||
return (propertySchema.type !== 'array') && (propertySchema.type !== 'oneOf') && propertySchema.type;
|
||||
},
|
||||
inject: (injectTo, propertySchema = injectTo) => {
|
||||
injectTo.isTrivial = true;
|
||||
|
|
|
@ -13,6 +13,7 @@ interface Reference {
|
|||
interface Schema {
|
||||
properties: any;
|
||||
allOf: any;
|
||||
oneOf: any;
|
||||
items: any;
|
||||
additionalProperties: any;
|
||||
}
|
||||
|
@ -36,6 +37,9 @@ export class SchemaNormalizer {
|
|||
resolved = Object.assign({}, resolved);
|
||||
AllOfMerger.merge(resolved, resolved.allOf);
|
||||
}
|
||||
if (resolved.oneOf) {
|
||||
resolved.type = 'oneOf';
|
||||
}
|
||||
return resolved;
|
||||
});
|
||||
if (opts.resolved && !hasPtr) this._dereferencer.exit(ptr);
|
||||
|
@ -74,6 +78,11 @@ class SchemaWalker {
|
|||
SchemaWalker.walkEach(obj.allOf, ptr, visitor);
|
||||
}
|
||||
|
||||
if (obj.oneOf) {
|
||||
let ptr = JsonPointer.join(pointer, ['oneOf']);
|
||||
SchemaWalker.walkEach(obj.oneOf, ptr, visitor);
|
||||
}
|
||||
|
||||
if (obj.items) {
|
||||
let ptr = JsonPointer.join(pointer, ['items']);
|
||||
if (Array.isArray(obj.items)) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user