[Html2] Fix circular references (#5313)

* [html2] Fix circular references

Signed-off-by: weiyang <weiyang.ones@gmail.com>

* [samples][html2] Fix circular references

Signed-off-by: weiyang <weiyang.ones@gmail.com>

* Optimize code format

Signed-off-by: weiyang <weiyang.ones@gmail.com>
This commit is contained in:
weiyang 2017-04-06 14:39:26 +08:00 committed by wing328
parent 5de04fa612
commit abffdca441
6 changed files with 1341 additions and 2522 deletions

View File

@ -363,20 +363,21 @@
$(document).ready(function() { $(document).ready(function() {
var schemaWrapper = {{{jsonSchema}}}; var schemaWrapper = {{{jsonSchema}}};
var schema = schemaWrapper.schema; var schema = schemaWrapper.schema;
schemaWrapper.definitions = defs; if (schema.$ref != null) {
//console.log(JSON.stringify(schema)) schema = defsParser.$refs.get(schema.$ref);
JsonRefs.resolveRefs(schemaWrapper, { } else {
"depth": 3, schemaWrapper.definitions = Object.assign({}, defs);
"resolveRemoteRefs": false, $RefParser.dereference(schemaWrapper).catch(function(err) {
"resolveFileRefs": false console.log(err);
}, function(err, resolved, metadata) { });
//console.log(JSON.stringify(resolved)); }
var view = new JSONSchemaView(resolved.schema, 3);
$('#responses-{{nickname}}-{{code}}-schema-data').val(JSON.stringify(resolved.schema)); //console.log(JSON.stringify(schema));
var result = $('#responses-{{nickname}}-{{code}}-schema-{{code}}'); var view = new JSONSchemaView(schema, 3);
result.empty(); $('#responses-{{nickname}}-{{code}}-schema-data').val(stringify(schema));
result.append(view.render()); var result = $('#responses-{{nickname}}-{{code}}-schema-{{code}}');
}); result.empty();
result.append(view.render());
}); });
</script> </script>
</div> </div>
@ -448,8 +449,17 @@
</div> </div>
{{>js_jsonformatter}} {{>js_jsonformatter}}
{{>js_jsonschemaview}} {{>js_jsonschemaview}}
{{>js_jsonref}} {{>js_json_schema_ref_parser}}
{{>js_json_stringify_safe}}
{{>js_webfontloader}} {{>js_webfontloader}}
<script>
var schemaWrapper = {};
schemaWrapper.definitions = Object.assign({}, defs);
defsParser = new $RefParser();
defsParser.dereference(schemaWrapper).catch(function(err) {
console.log(err);
});
</script>
<script> <script>
$(document).ready(function () { $(document).ready(function () {
$('.nav-tabs-examples').find('a:first').tab('show'); $('.nav-tabs-examples').find('a:first').tab('show');

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,27 @@
<script>
// https://github.com/isaacs/json-stringify-safe v5.0.1
function stringify(obj, replacer, spaces, cycleReplacer) {
return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces)
}
function serializer(replacer, cycleReplacer) {
var stack = [], keys = []
if (cycleReplacer == null) cycleReplacer = function(key, value) {
if (stack[0] === value) return "[Circular ~]"
return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]"
}
return function(key, value) {
if (stack.length > 0) {
var thisPos = stack.indexOf(this)
~thisPos ? stack.splice(thisPos + 1) : stack.push(this)
~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)
if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value)
}
else stack.push(value)
return replacer == null ? value : replacer.call(this, key, value)
}
}
</script>

File diff suppressed because one or more lines are too long

View File

@ -3,33 +3,24 @@
<script> <script>
$(document).ready(function() { $(document).ready(function() {
var schemaWrapper = {{{jsonSchema}}}; var schemaWrapper = {{{jsonSchema}}};
var schema = schemaWrapper.schema;
var schema = schemaWrapper.schema; if (schema.$ref != null) {
schemaWrapper.definitions = defs; schema = defsParser.$refs.get(schema.$ref);
JsonRefs.resolveRefs(schemaWrapper, {"depth":3, "resolveRemoteRefs":false,"resolveFileRefs":false },function (err, resolved, metadata) { } else {
schemaWrapper.definitions = Object.assign({}, defs);
$RefParser.dereference(schemaWrapper).catch(function(err) {
console.log(err);
});
}
var view = new JSONSchemaView(schema,2,{isBodyParam: true});
var view = new JSONSchemaView(resolved.schema,2,{isBodyParam: true}); var result = $('#d2e199_{{nickname}}_{{paramName}}');
result.empty();
var result = $('#d2e199_{{nickname}}_{{paramName}}'); result.append(view.render());
result.empty(); });
result.append(view.render()); </script>
<div id="d2e199_{{nickname}}_{{paramName}}"></div>
});
});
</script>
<div id="d2e199_{{nickname}}_{{paramName}}"></div>
</td> </td>
</tr> </tr>

File diff suppressed because one or more lines are too long