mirror of
https://github.com/Redocly/redoc.git
synced 2024-11-22 00:26:34 +03:00
Added JsonSchemaView component
This commit is contained in:
parent
b98cfa8280
commit
aa04a7c01c
51
lib/components/JsonSchemaView/json-schema-view.js
Normal file
51
lib/components/JsonSchemaView/json-schema-view.js
Normal file
|
@ -0,0 +1,51 @@
|
|||
'use strict';
|
||||
|
||||
import {RedocComponent, BaseComponent} from '../base';
|
||||
|
||||
/* temporarily this component uses json-schema-view-js lib */
|
||||
import 'json-formatter-js/src/index';
|
||||
import 'json-formatter-js/dist/style.css!';
|
||||
import JSONSchemaView from 'json-schema-view-js/src/index';
|
||||
import 'json-schema-view-js/dist/style.css!';
|
||||
|
||||
import {ElementRef} from 'angular2/angular2';
|
||||
|
||||
@RedocComponent({
|
||||
selector: 'schema',
|
||||
template: '',
|
||||
inputs: ['title', 'description']
|
||||
})
|
||||
export class JsonSchemaView extends BaseComponent {
|
||||
constructor(schemaMgr, elementRef) {
|
||||
super(schemaMgr);
|
||||
this.element = elementRef.nativeElement;
|
||||
}
|
||||
|
||||
dereference(schema = this.componentSchema) {
|
||||
// simple in-place schema dereferencing. Schema is already bundled so no need in
|
||||
// global dereferencing.
|
||||
// TODO: doesn't support circular references
|
||||
if (schema && schema.$ref) {
|
||||
let resolved = this.schemaMgr.byPointer(schema.$ref);
|
||||
Object.assign(schema, resolved);
|
||||
delete schema.$ref;
|
||||
}
|
||||
|
||||
Object.keys(schema).forEach((key) => {
|
||||
let value = schema[key];
|
||||
if (value && typeof value === 'object') {
|
||||
this.dereference(value);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
init() {
|
||||
this.dereference();
|
||||
const formatter = new JSONSchemaView(this.componentSchema);
|
||||
this.componentSchema.title = this.componentSchema.title || this.title;
|
||||
this.componentSchema.description = this.componentSchema.description || this.description;
|
||||
this.element.appendChild(formatter.render());
|
||||
}
|
||||
}
|
||||
|
||||
JsonSchemaView.parameters = JsonSchemaView.parameters.concat([[ElementRef]]);
|
|
@ -24,7 +24,9 @@
|
|||
"@reactivex/rxjs": "npm:@reactivex/rxjs@^5.0.0-alpha.2",
|
||||
"angular2": "npm:angular2@^2.0.0-alpha.39",
|
||||
"es6-shim": "github:es-shims/es6-shim@^0.33.6",
|
||||
"json-formatter-js": "npm:json-formatter-js@^0.2.0",
|
||||
"json-pointer": "npm:json-pointer@^0.3.0",
|
||||
"json-schema-view-js": "npm:json-schema-view-js@^0.2.0",
|
||||
"reflect-metadata": "npm:reflect-metadata@^0.1.2",
|
||||
"swagger-parser": "npm:swagger-parser@^3.3.0",
|
||||
"zone.js": "npm:zone.js@^0.5.7"
|
||||
|
@ -33,7 +35,9 @@
|
|||
"babel": "npm:babel-core@^5.8.24",
|
||||
"babel-runtime": "npm:babel-runtime@^5.8.24",
|
||||
"core-js": "npm:core-js@^1.1.4",
|
||||
"systemjs/plugin-json": "github:systemjs/plugin-json@^0.1.0"
|
||||
"css": "github:systemjs/plugin-css@^0.1.18",
|
||||
"systemjs/plugin-json": "github:systemjs/plugin-json@^0.1.0",
|
||||
"clean-css": "npm:clean-css@^3.4.6"
|
||||
}
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
@ -27,15 +27,28 @@ System.config({
|
|||
}
|
||||
},
|
||||
|
||||
meta: {
|
||||
"jspm_packages/npm/json-formatter-js@0.2.0/src/*": {
|
||||
"format": "es6"
|
||||
},
|
||||
"jspm_packages/npm/json-schema-view-js@0.2.0/src/*": {
|
||||
"format": "es6"
|
||||
}
|
||||
},
|
||||
|
||||
map: {
|
||||
"@reactivex/rxjs": "npm:@reactivex/rxjs@5.0.0-alpha.2",
|
||||
"angular2": "npm:angular2@2.0.0-alpha.39",
|
||||
"babel": "npm:babel-core@5.8.25",
|
||||
"babel-runtime": "npm:babel-runtime@5.8.25",
|
||||
"clean-css": "npm:clean-css@3.4.6",
|
||||
"core-js": "npm:core-js@1.2.0",
|
||||
"css": "github:systemjs/plugin-css@0.1.18",
|
||||
"es6-shim": "github:es-shims/es6-shim@0.33.6",
|
||||
"json": "github:systemjs/plugin-json@0.1.0",
|
||||
"json-formatter-js": "npm:json-formatter-js@0.2.0",
|
||||
"json-pointer": "npm:json-pointer@0.3.0",
|
||||
"json-schema-view-js": "npm:json-schema-view-js@0.2.0",
|
||||
"reflect-metadata": "npm:reflect-metadata@0.1.2",
|
||||
"swagger-parser": "npm:swagger-parser@3.3.0",
|
||||
"systemjs/plugin-json": "github:systemjs/plugin-json@0.1.0",
|
||||
|
@ -76,6 +89,9 @@ System.config({
|
|||
"timers": "github:jspm/nodelibs-timers@0.1.0",
|
||||
"util": "github:jspm/nodelibs-util@0.1.0"
|
||||
},
|
||||
"github:jspm/nodelibs-os@0.1.0": {
|
||||
"os-browserify": "npm:os-browserify@0.1.2"
|
||||
},
|
||||
"github:jspm/nodelibs-path@0.1.0": {
|
||||
"path-browserify": "npm:path-browserify@0.0.0"
|
||||
},
|
||||
|
@ -116,6 +132,12 @@ System.config({
|
|||
"buffer": "github:jspm/nodelibs-buffer@0.1.0",
|
||||
"process": "github:jspm/nodelibs-process@0.1.2"
|
||||
},
|
||||
"npm:amdefine@1.0.0": {
|
||||
"fs": "github:jspm/nodelibs-fs@0.1.2",
|
||||
"module": "github:jspm/nodelibs-module@0.1.0",
|
||||
"path": "github:jspm/nodelibs-path@0.1.0",
|
||||
"process": "github:jspm/nodelibs-process@0.1.2"
|
||||
},
|
||||
"npm:angular2@2.0.0-alpha.39": {
|
||||
"buffer": "github:jspm/nodelibs-buffer@0.1.0",
|
||||
"crypto": "github:jspm/nodelibs-crypto@0.1.0",
|
||||
|
@ -259,6 +281,19 @@ System.config({
|
|||
"stream": "github:jspm/nodelibs-stream@0.1.0",
|
||||
"string_decoder": "github:jspm/nodelibs-string_decoder@0.1.0"
|
||||
},
|
||||
"npm:clean-css@3.4.6": {
|
||||
"buffer": "github:jspm/nodelibs-buffer@0.1.0",
|
||||
"commander": "npm:commander@2.8.1",
|
||||
"fs": "github:jspm/nodelibs-fs@0.1.2",
|
||||
"http": "github:jspm/nodelibs-http@1.7.1",
|
||||
"https": "github:jspm/nodelibs-https@0.1.0",
|
||||
"os": "github:jspm/nodelibs-os@0.1.0",
|
||||
"path": "github:jspm/nodelibs-path@0.1.0",
|
||||
"process": "github:jspm/nodelibs-process@0.1.2",
|
||||
"source-map": "npm:source-map@0.4.4",
|
||||
"url": "github:jspm/nodelibs-url@0.1.0",
|
||||
"util": "github:jspm/nodelibs-util@0.1.0"
|
||||
},
|
||||
"npm:combined-stream@1.0.5": {
|
||||
"buffer": "github:jspm/nodelibs-buffer@0.1.0",
|
||||
"delayed-stream": "npm:delayed-stream@1.0.0",
|
||||
|
@ -466,6 +501,11 @@ System.config({
|
|||
"systemjs-json": "github:systemjs/plugin-json@0.1.0",
|
||||
"util": "github:jspm/nodelibs-util@0.1.0"
|
||||
},
|
||||
"npm:json-formatter-js@0.2.0": {
|
||||
"fs": "github:jspm/nodelibs-fs@0.1.2",
|
||||
"process": "github:jspm/nodelibs-process@0.1.2",
|
||||
"systemjs-json": "github:systemjs/plugin-json@0.1.0"
|
||||
},
|
||||
"npm:json-pointer@0.3.0": {
|
||||
"foreach": "npm:foreach@2.0.5"
|
||||
},
|
||||
|
@ -488,6 +528,11 @@ System.config({
|
|||
"url": "github:jspm/nodelibs-url@0.1.0",
|
||||
"util": "github:jspm/nodelibs-util@0.1.0"
|
||||
},
|
||||
"npm:json-schema-view-js@0.2.0": {
|
||||
"fs": "github:jspm/nodelibs-fs@0.1.2",
|
||||
"process": "github:jspm/nodelibs-process@0.1.2",
|
||||
"systemjs-json": "github:systemjs/plugin-json@0.1.0"
|
||||
},
|
||||
"npm:jsonpointer@2.0.0": {
|
||||
"assert": "github:jspm/nodelibs-assert@0.1.0"
|
||||
},
|
||||
|
@ -529,6 +574,9 @@ System.config({
|
|||
"process": "github:jspm/nodelibs-process@0.1.2",
|
||||
"util": "github:jspm/nodelibs-util@0.1.0"
|
||||
},
|
||||
"npm:os-browserify@0.1.2": {
|
||||
"os": "github:jspm/nodelibs-os@0.1.0"
|
||||
},
|
||||
"npm:pako@0.2.8": {
|
||||
"buffer": "github:jspm/nodelibs-buffer@0.1.0",
|
||||
"process": "github:jspm/nodelibs-process@0.1.2"
|
||||
|
@ -654,6 +702,10 @@ System.config({
|
|||
"hoek": "npm:hoek@2.16.3",
|
||||
"process": "github:jspm/nodelibs-process@0.1.2"
|
||||
},
|
||||
"npm:source-map@0.4.4": {
|
||||
"amdefine": "npm:amdefine@1.0.0",
|
||||
"process": "github:jspm/nodelibs-process@0.1.2"
|
||||
},
|
||||
"npm:stream-browserify@1.0.0": {
|
||||
"events": "github:jspm/nodelibs-events@0.1.1",
|
||||
"inherits": "npm:inherits@2.0.1",
|
||||
|
|
Loading…
Reference in New Issue
Block a user