#1248 createXMLSample added XML display for Model in definitions

This commit is contained in:
Anna Bodnia
2016-01-14 17:41:50 +02:00
parent 8917a9bf76
commit 1c555c00b8
4 changed files with 169 additions and 22 deletions

View File

@@ -701,12 +701,13 @@ SwaggerUi.partials.signature = (function () {
};
};
var createArrayXML = function (name, items, xml) {
var createArrayXML = function (name, items, xml, models) {
var value;
if (!items) { return ''; }
value = createXMLSample(name, items) + createXMLSample(name, items);
value = createXMLSample(name, items, models);
value += value;
xml = xml || {};
@@ -717,7 +718,19 @@ SwaggerUi.partials.signature = (function () {
return value;
};
function createObjectXML (name, properties, xml) {
var getModelXML = function (modelType, models) {
var type = simpleRef(modelType);
var model = models[type] || {};
var name = model.name || modelType;
if (!model.definition) {
return '';
}
return createXMLSample(name, model.definition, models);
};
function createObjectXML (name, properties, xml, models) {
var props;
if (!properties) { return ''; }
@@ -725,13 +738,13 @@ SwaggerUi.partials.signature = (function () {
properties = properties || {};
props = _.map(properties, function (prop, key) {
return createXMLSample(key, prop);
return createXMLSample(key, prop, models);
}).join('');
return wrapTag(name, props);
}
function createXMLSample (name, definition) {
function createXMLSample (name, definition, models) {
var primitivesMap = {
'string': {
'date': new Date(1).toISOString().split('T')[0],
@@ -753,8 +766,13 @@ SwaggerUi.partials.signature = (function () {
var xml = definition.xml || {};
var attributes = [];
var namespace = getNamespace(xml);
var $ref = definition.$ref;
var value;
if (_.isString($ref)) {
return getModelXML($ref, models);
}
name = getName(name, xml);
if (namespace) {
@@ -764,12 +782,16 @@ SwaggerUi.partials.signature = (function () {
// Here are going to be else statements for Array and Object types
if (_.keys(primitivesMap).indexOf(type) !== -1) {
value = definition.example || primitivesMap[type][format] || primitivesMap[type].default;
if (_.isArray(definition.enum)){
value = definition.enum[0];
} else {
value = definition.example || primitivesMap[type][format] || primitivesMap[type].default;
}
return wrapTag(name, value, attributes);
} else if (type === 'array') {
return createArrayXML(name, definition.items, xml);
return createArrayXML(name, definition.items, xml, models);
} else if (type === 'object') {
return createObjectXML(name, definition.properties, xml);
return createObjectXML(name, definition.properties, xml, models);
}
return '';