#1248 Implemented between example XML/JSON by drop-down with type
This commit is contained in:
@@ -10,6 +10,7 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
|
||||
'click .toggleOperation' : 'toggleOperationContent',
|
||||
'mouseenter .api-ic' : 'mouseEnter',
|
||||
'dblclick .curl' : 'selectText',
|
||||
'change [name=responseContentType]' : 'showSnippet'
|
||||
},
|
||||
|
||||
initialize: function(opts) {
|
||||
@@ -84,7 +85,7 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
|
||||
// Note: copied from CoffeeScript compiled file
|
||||
// TODO: redactor
|
||||
render: function() {
|
||||
var a, auth, auths, code, contentTypeModel, isMethodSubmissionSupported, k, key, l, len, len1, len2, len3, len4, m, modelAuths, n, o, p, param, q, ref, ref1, ref2, ref3, ref4, ref5, responseContentTypeView, responseSignatureView, schema, schemaObj, scopeIndex, signatureModel, statusCode, successResponse, type, v, value, produces, isXML;
|
||||
var a, auth, auths, code, contentTypeModel, isMethodSubmissionSupported, k, key, l, len, len1, len2, len3, len4, m, modelAuths, n, o, p, param, q, ref, ref1, ref2, ref3, ref4, ref5, responseContentTypeView, responseSignatureView, schema, schemaObj, scopeIndex, signatureModel, statusCode, successResponse, type, v, value, produces, isXML, isJSON;
|
||||
isMethodSubmissionSupported = jQuery.inArray(this.model.method, this.model.supportedSubmitMethods()) >= 0;
|
||||
if (!isMethodSubmissionSupported) {
|
||||
this.model.isReadOnly = true;
|
||||
@@ -164,11 +165,8 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
|
||||
}
|
||||
signatureModel = null;
|
||||
produces = this.model.produces;
|
||||
isXML = produces.filter(function (val) {
|
||||
if (val.indexOf('xml') > -1) {
|
||||
return true;
|
||||
}
|
||||
}).length;
|
||||
isXML = this.contains(produces, 'xml');
|
||||
isJSON = isXML ? this.contains(produces, 'json') : true;
|
||||
|
||||
if (this.model.successResponse) {
|
||||
successResponse = this.model.successResponse;
|
||||
@@ -179,7 +177,7 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
|
||||
this.model.successDescription = value.description;
|
||||
this.model.headers = this.parseResponseHeaders(value.headers);
|
||||
signatureModel = {
|
||||
sampleJSON: JSON.stringify(SwaggerUi.partials.signature.createJSONSample(value), void 0, 2),
|
||||
sampleJSON: isJSON ? JSON.stringify(SwaggerUi.partials.signature.createJSONSample(value), void 0, 2) : false,
|
||||
isParam: false,
|
||||
sampleXML: isXML ? SwaggerUi.partials.signature.createXMLSample(value.definition, value.models) : false,
|
||||
signature: SwaggerUi.partials.signature.getModelSignature(value.name, value.definition, value.models, value.modelPropertyMacro)
|
||||
@@ -238,6 +236,7 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
|
||||
router: this.router
|
||||
});
|
||||
$('.response-content-type', $(this.el)).append(responseContentTypeView.render().el);
|
||||
this.showSnippet();
|
||||
ref4 = this.model.parameters;
|
||||
for (p = 0, len3 = ref4.length; p < len3; p++) {
|
||||
param = ref4[p];
|
||||
@@ -251,6 +250,14 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
|
||||
return this;
|
||||
},
|
||||
|
||||
contains: function (produces, type) {
|
||||
return produces.filter(function (val) {
|
||||
if (val.indexOf(type) > -1) {
|
||||
return true;
|
||||
}
|
||||
}).length;
|
||||
},
|
||||
|
||||
parseResponseHeaders: function (data) {
|
||||
var HEADERS_SEPARATOR = '; ';
|
||||
var headers = _.clone(data);
|
||||
@@ -765,6 +772,22 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
|
||||
}
|
||||
},
|
||||
|
||||
showSnippet: function () {
|
||||
var contentTypeEl = this.$('[name=responseContentType]');
|
||||
var contentType;
|
||||
|
||||
if (!contentTypeEl.length) { return; }
|
||||
contentType = contentTypeEl.val();
|
||||
|
||||
if (contentType.indexOf('xml') > -1) {
|
||||
this.$('.snippet_xml').show();
|
||||
this.$('.snippet_json').hide();
|
||||
} else {
|
||||
this.$('.snippet_json').show();
|
||||
this.$('.snippet_xml').hide();
|
||||
}
|
||||
},
|
||||
|
||||
getParamByName: function(name) {
|
||||
var i;
|
||||
if (this.model.parameters) {
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
'use strict';
|
||||
|
||||
SwaggerUi.Views.ParameterView = Backbone.View.extend({
|
||||
events: {
|
||||
'change [name=parameterContentType]' : 'toggleParameterSnippet'
|
||||
},
|
||||
|
||||
initialize: function(){
|
||||
Handlebars.registerHelper('isArray', function(param, opts) {
|
||||
if (param.type.toLowerCase() === 'array' || param.allowMultiple) {
|
||||
@@ -47,17 +51,14 @@ SwaggerUi.Views.ParameterView = Backbone.View.extend({
|
||||
this.model.isList = true;
|
||||
}
|
||||
|
||||
var isXML = consumes.filter(function (val) {
|
||||
if (val.indexOf('xml') > -1) {
|
||||
return true;
|
||||
}
|
||||
}).length;
|
||||
var isXML = this.contains(consumes, 'xml');
|
||||
var isJSON = isXML ? this.contains(consumes, 'json') : true;
|
||||
|
||||
var template = this.template();
|
||||
$(this.el).html(template(this.model));
|
||||
|
||||
var signatureModel = {
|
||||
sampleJSON: SwaggerUi.partials.signature.createParameterJSONSample(modelType, modelDefinitions),
|
||||
sampleJSON: isJSON ? SwaggerUi.partials.signature.createParameterJSONSample(modelType, modelDefinitions) : false,
|
||||
sampleXML: isXML ? SwaggerUi.partials.signature.createXMLSample(schema, modelDefinitions, true) : false,
|
||||
isParam: true,
|
||||
signature: SwaggerUi.partials.signature.getParameterModelSignature(modelType, modelDefinitions),
|
||||
@@ -118,16 +119,50 @@ SwaggerUi.Views.ParameterView = Backbone.View.extend({
|
||||
if (isParam) {
|
||||
var parameterContentTypeView = new SwaggerUi.Views.ParameterContentTypeView({model: contentTypeModel});
|
||||
$('.parameter-content-type', $(this.el)).append(parameterContentTypeView.render().el);
|
||||
this.toggleParameterSnippet();
|
||||
}
|
||||
|
||||
else {
|
||||
var responseContentTypeView = new SwaggerUi.Views.ResponseContentTypeView({model: contentTypeModel});
|
||||
$('.response-content-type', $(this.el)).append(responseContentTypeView.render().el);
|
||||
this.toggleResponseSnippet();
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
contains: function (consumes, type) {
|
||||
return consumes.filter(function (val) {
|
||||
if (val.indexOf(type) > -1) {
|
||||
return true;
|
||||
}
|
||||
}).length;
|
||||
},
|
||||
|
||||
toggleParameterSnippet: function () {
|
||||
var contentType = this.$('[name=parameterContentType]').val();
|
||||
|
||||
this.toggleSnippet(contentType);
|
||||
},
|
||||
|
||||
toggleResponseSnippet: function () {
|
||||
var contentEl = this.$('[name=responseContentType]');
|
||||
|
||||
if (!contentEl.length) { return; }
|
||||
|
||||
this.toggleSnippet(contentEl.val());
|
||||
},
|
||||
|
||||
toggleSnippet: function (type) {
|
||||
if (type.indexOf('xml') > -1) {
|
||||
this.$('.snippet_xml').show();
|
||||
this.$('.snippet_json').hide();
|
||||
} else {
|
||||
this.$('.snippet_json').show();
|
||||
this.$('.snippet_xml').hide();
|
||||
}
|
||||
},
|
||||
|
||||
// Return an appropriate template based on if the parameter is a list, readonly, required
|
||||
template: function(){
|
||||
if (this.model.isList) {
|
||||
|
||||
@@ -4,7 +4,6 @@ SwaggerUi.Views.SignatureView = Backbone.View.extend({
|
||||
events: {
|
||||
'click a.description-link' : 'switchToDescription',
|
||||
'click a.snippet-link' : 'switchToSnippet',
|
||||
'click a.snippet-xml-link' : 'switchToXMLSnippet',
|
||||
'mousedown .snippet_json' : 'jsonSnippetMouseDown',
|
||||
'mousedown .snippet_xml' : 'xmlSnippetMouseDown'
|
||||
},
|
||||
@@ -34,30 +33,16 @@ SwaggerUi.Views.SignatureView = Backbone.View.extend({
|
||||
$('.description', $(this.el)).show();
|
||||
$('.description-link', $(this.el)).addClass('selected');
|
||||
$('.snippet-link', $(this.el)).removeClass('selected');
|
||||
$('.snippet-xml-link', $(this.el)).removeClass('selected');
|
||||
},
|
||||
|
||||
// handler for show sample
|
||||
switchToSnippet: function(e){
|
||||
if (e) { e.preventDefault(); }
|
||||
|
||||
$('.snippet_json', $(this.el)).show();
|
||||
$('.snippet', $(this.el)).show();
|
||||
$('.description', $(this.el)).hide();
|
||||
$('.snippet_xml', $(this.el)).hide();
|
||||
$('.snippet-link', $(this.el)).addClass('selected');
|
||||
$('.description-link', $(this.el)).removeClass('selected');
|
||||
$('.snippet-xml-link', $(this.el)).removeClass('selected');
|
||||
},
|
||||
|
||||
switchToXMLSnippet: function (e) {
|
||||
if (e) { e.preventDefault();}
|
||||
|
||||
$('.snippet_xml', $(this.el)).show();
|
||||
$('.snippet_json', $(this.el)).hide();
|
||||
$('.description', $(this.el)).hide();
|
||||
$('.snippet-xml-link', $(this.el)).addClass('selected');
|
||||
$('.description-link', $(this.el)).removeClass('selected');
|
||||
$('.snippet-link', $(this.el)).removeClass('selected');
|
||||
},
|
||||
|
||||
// handler for snippet to text area
|
||||
|
||||
Reference in New Issue
Block a user