[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,21 +363,22 @@
$(document).ready(function() {
var schemaWrapper = {{{jsonSchema}}};
var schema = schemaWrapper.schema;
schemaWrapper.definitions = defs;
//console.log(JSON.stringify(schema))
JsonRefs.resolveRefs(schemaWrapper, {
"depth": 3,
"resolveRemoteRefs": false,
"resolveFileRefs": false
}, 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));
if (schema.$ref != null) {
schema = defsParser.$refs.get(schema.$ref);
} else {
schemaWrapper.definitions = Object.assign({}, defs);
$RefParser.dereference(schemaWrapper).catch(function(err) {
console.log(err);
});
}
//console.log(JSON.stringify(schema));
var view = new JSONSchemaView(schema, 3);
$('#responses-{{nickname}}-{{code}}-schema-data').val(stringify(schema));
var result = $('#responses-{{nickname}}-{{code}}-schema-{{code}}');
result.empty();
result.append(view.render());
});
});
</script>
</div>
<input id='responses-{{nickname}}-{{code}}-schema-data' type='hidden' value=''></input>
@ -448,8 +449,17 @@
</div>
{{>js_jsonformatter}}
{{>js_jsonschemaview}}
{{>js_jsonref}}
{{>js_json_schema_ref_parser}}
{{>js_json_stringify_safe}}
{{>js_webfontloader}}
<script>
var schemaWrapper = {};
schemaWrapper.definitions = Object.assign({}, defs);
defsParser = new $RefParser();
defsParser.dereference(schemaWrapper).catch(function(err) {
console.log(err);
});
</script>
<script>
$(document).ready(function () {
$('.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

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

File diff suppressed because one or more lines are too long