updated files

This commit is contained in:
Tony Tam
2014-09-07 17:12:03 -07:00
parent 9b0aa32941
commit bdec07e8c3
11 changed files with 2748 additions and 40 deletions

1321
dist/lib/swagger-client.js vendored Normal file

File diff suppressed because it is too large Load Diff

79
dist/swagger-ui.js vendored
View File

@@ -93,7 +93,6 @@ var Docs = {
switch (fragments.length) { switch (fragments.length) {
case 1: case 1:
// Expand all operations for the resource and scroll to it // Expand all operations for the resource and scroll to it
log('shebang resource:' + fragments[0]);
var dom_id = 'resource_' + fragments[0]; var dom_id = 'resource_' + fragments[0];
Docs.expandEndpointListForResource(fragments[0]); Docs.expandEndpointListForResource(fragments[0]);
@@ -101,7 +100,6 @@ var Docs = {
break; break;
case 2: case 2:
// Refer to the endpoint DOM element, e.g. #words_get_search // Refer to the endpoint DOM element, e.g. #words_get_search
log('shebang endpoint: ' + fragments.join('_'));
// Expand Resource // Expand Resource
Docs.expandEndpointListForResource(fragments[0]); Docs.expandEndpointListForResource(fragments[0]);
@@ -111,8 +109,6 @@ var Docs = {
var li_dom_id = fragments.join('_'); var li_dom_id = fragments.join('_');
var li_content_dom_id = li_dom_id + "_content"; var li_content_dom_id = li_dom_id + "_content";
log("li_dom_id " + li_dom_id);
log("li_content_dom_id " + li_content_dom_id);
Docs.expandOperation($('#'+li_content_dom_id)); Docs.expandOperation($('#'+li_content_dom_id));
$('#'+li_dom_id).slideto({highlight: false}); $('#'+li_dom_id).slideto({highlight: false});
@@ -1085,7 +1081,7 @@ function program1(depth0,data) {
if (stack1 = helpers.id) { stack1 = stack1.call(depth0, {hash:{},data:data}); } if (stack1 = helpers.id) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
else { stack1 = depth0.id; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; } else { stack1 = depth0.id; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
buffer += escapeExpression(stack1) buffer += escapeExpression(stack1)
+ "');\">"; + "');\">/";
if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); } if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; } else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
buffer += escapeExpression(stack1) buffer += escapeExpression(stack1)
@@ -1288,9 +1284,15 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
} }
this.options.url = url; this.options.url = url;
this.headerView.update(url); this.headerView.update(url);
this.api = new SwaggerApi(this.options); if (url.indexOf('swagger.json') > 0) {
this.api.build(); this.api = new SwaggerClient(this.options);
return this.api; this.api.build();
return this.api;
} else {
this.api = new SwaggerApi(this.options);
this.api.build();
return this.api;
}
}; };
SwaggerUi.prototype.render = function() { SwaggerUi.prototype.render = function() {
@@ -1458,13 +1460,15 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
if (opts.swaggerOptions.sorter) { if (opts.swaggerOptions.sorter) {
sorterName = opts.swaggerOptions.sorter; sorterName = opts.swaggerOptions.sorter;
sorter = sorters[sorterName]; sorter = sorters[sorterName];
_ref3 = this.model.apisArray; if (this.model.apisArray) {
for (_i = 0, _len = _ref3.length; _i < _len; _i++) { _ref3 = this.model.apisArray;
route = _ref3[_i]; for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
route.operationsArray.sort(sorter); route = _ref3[_i];
} route.operationsArray.sort(sorter);
if (sorterName === "alpha") { }
return this.model.apisArray.sort(sorter); if (sorterName === "alpha") {
return this.model.apisArray.sort(sorter);
}
} }
} }
}; };
@@ -1517,7 +1521,11 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
return _ref3; return _ref3;
} }
ResourceView.prototype.initialize = function() {}; ResourceView.prototype.initialize = function() {
if ("" === this.model.description) {
return this.model.description = null;
}
};
ResourceView.prototype.render = function() { ResourceView.prototype.render = function() {
var counter, id, methods, operation, _i, _len, _ref4; var counter, id, methods, operation, _i, _len, _ref4;
@@ -1613,7 +1621,7 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
}; };
OperationView.prototype.render = function() { OperationView.prototype.render = function() {
var contentTypeModel, isMethodSubmissionSupported, k, o, param, responseContentTypeView, responseSignatureView, signatureModel, statusCode, type, v, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref5, _ref6, _ref7, _ref8; var contentTypeModel, isMethodSubmissionSupported, k, o, param, ref, responseContentTypeView, responseSignatureView, schema, signatureModel, statusCode, type, v, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref5, _ref6, _ref7, _ref8;
isMethodSubmissionSupported = true; isMethodSubmissionSupported = true;
if (!isMethodSubmissionSupported) { if (!isMethodSubmissionSupported) {
this.model.isReadOnly = true; this.model.isReadOnly = true;
@@ -1650,6 +1658,7 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
}); });
$('.model-signature', $(this.el)).append(responseSignatureView.render().el); $('.model-signature', $(this.el)).append(responseSignatureView.render().el);
} else { } else {
this.model.responseClassSignature = 'string';
$('.model-signature', $(this.el)).html(this.model.type); $('.model-signature', $(this.el)).html(this.model.type);
} }
contentTypeModel = { contentTypeModel = {
@@ -1661,12 +1670,23 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
for (_j = 0, _len1 = _ref6.length; _j < _len1; _j++) { for (_j = 0, _len1 = _ref6.length; _j < _len1; _j++) {
param = _ref6[_j]; param = _ref6[_j];
type = param.type || param.dataType; type = param.type || param.dataType;
if (type.toLowerCase() === 'file') { if (typeof type === 'undefined') {
schema = param.schema;
if (schema['$ref']) {
ref = schema['$ref'];
if (ref.indexOf('#/definitions/') === 0) {
type = ref.substring('#/definitions/'.length);
} else {
type = ref;
}
}
}
if (type && type.toLowerCase() === 'file') {
if (!contentTypeModel.consumes) { if (!contentTypeModel.consumes) {
log("set content type ");
contentTypeModel.consumes = 'multipart/form-data'; contentTypeModel.consumes = 'multipart/form-data';
} }
} }
param.type = type;
} }
responseContentTypeView = new ResponseContentTypeView({ responseContentTypeView = new ResponseContentTypeView({
model: contentTypeModel model: contentTypeModel
@@ -1677,6 +1697,9 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
param = _ref7[_k]; param = _ref7[_k];
this.addParameter(param, contentTypeModel.consumes); this.addParameter(param, contentTypeModel.consumes);
} }
if (typeof this.model.responseMessages === 'undefined') {
this.model.responseMessages = [];
}
_ref8 = this.model.responseMessages; _ref8 = this.model.responseMessages;
for (_l = 0, _len3 = _ref8.length; _l < _len3; _l++) { for (_l = 0, _len3 = _ref8.length; _l < _len3; _l++) {
statusCode = _ref8[_l]; statusCode = _ref8[_l];
@@ -1800,7 +1823,6 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
headerParams[param.name] = map[param.name]; headerParams[param.name] = map[param.name];
} }
} }
log(headerParams);
_ref8 = form.find('input[type~="file"]'); _ref8 = form.find('input[type~="file"]');
for (_l = 0, _len3 = _ref8.length; _l < _len3; _l++) { for (_l = 0, _len3 = _ref8.length; _l < _len3; _l++) {
el = _ref8[_l]; el = _ref8[_l];
@@ -2096,12 +2118,25 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
}; };
ParameterView.prototype.render = function() { ParameterView.prototype.render = function() {
var contentTypeModel, isParam, parameterContentTypeView, responseContentTypeView, signatureModel, signatureView, template, type; var contentTypeModel, isParam, parameterContentTypeView, ref, responseContentTypeView, schema, signatureModel, signatureView, template, type;
type = this.model.type || this.model.dataType; type = this.model.type || this.model.dataType;
if (typeof type === 'undefined') {
schema = this.model.schema;
if (schema['$ref']) {
ref = schema['$ref'];
if (ref.indexOf('#/definitions/') === 0) {
type = ref.substring('#/definitions/'.length);
} else {
type = ref;
}
}
}
this.model.type = type;
this.model.paramType = this.model["in"] || this.model.paramType;
if (this.model.paramType === 'body') { if (this.model.paramType === 'body') {
this.model.isBody = true; this.model.isBody = true;
} }
if (type.toLowerCase() === 'file') { if (type && type.toLowerCase() === 'file') {
this.model.isFile = true; this.model.isFile = true;
} }
template = this.template(); template = this.template();

File diff suppressed because one or more lines are too long

1321
lib/swagger-client.js Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -47,9 +47,16 @@ class SwaggerUi extends Backbone.Router
@options.url = url @options.url = url
@headerView.update(url) @headerView.update(url)
@api = new SwaggerApi(@options)
@api.build() if url.indexOf('swagger.json') > 0
@api @api = new SwaggerClient(@options)
@api.build()
@api
else
@api = new SwaggerApi(@options)
@api.build()
@api
# This is bound to success handler for SwaggerApi # This is bound to success handler for SwaggerApi
# so it gets called when SwaggerApi completes loading # so it gets called when SwaggerApi completes loading

View File

@@ -8,10 +8,11 @@ class MainView extends Backbone.View
if opts.swaggerOptions.sorter if opts.swaggerOptions.sorter
sorterName = opts.swaggerOptions.sorter sorterName = opts.swaggerOptions.sorter
sorter = sorters[sorterName] sorter = sorters[sorterName]
for route in @model.apisArray if @model.apisArray
route.operationsArray.sort sorter for route in @model.apisArray
if (sorterName == "alpha") # sort top level paths if alpha route.operationsArray.sort sorter
@model.apisArray.sort sorter if (sorterName == "alpha") # sort top level paths if alpha
@model.apisArray.sort sorter
render: -> render: ->
# Render the outer container for resources # Render the outer container for resources

View File

@@ -44,6 +44,9 @@ class OperationView extends Backbone.View
isMethodSubmissionSupported = true #jQuery.inArray(@model.method, @model.supportedSubmitMethods) >= 0 isMethodSubmissionSupported = true #jQuery.inArray(@model.method, @model.supportedSubmitMethods) >= 0
@model.isReadOnly = true unless isMethodSubmissionSupported @model.isReadOnly = true unless isMethodSubmissionSupported
#@model.responseClassSignature = "hello"
#@model.responseSampleJSON = @model.createJSONSample
@model.oauth = null @model.oauth = null
if @model.authorizations if @model.authorizations
for k, v of @model.authorizations for k, v of @model.authorizations
@@ -66,6 +69,7 @@ class OperationView extends Backbone.View
responseSignatureView = new SignatureView({model: signatureModel, tagName: 'div'}) responseSignatureView = new SignatureView({model: signatureModel, tagName: 'div'})
$('.model-signature', $(@el)).append responseSignatureView.render().el $('.model-signature', $(@el)).append responseSignatureView.render().el
else else
@model.responseClassSignature = 'string'
$('.model-signature', $(@el)).html(@model.type) $('.model-signature', $(@el)).html(@model.type)
contentTypeModel = contentTypeModel =
@@ -76,10 +80,18 @@ class OperationView extends Backbone.View
for param in @model.parameters for param in @model.parameters
type = param.type || param.dataType type = param.type || param.dataType
if type.toLowerCase() == 'file' if typeof type is 'undefined'
schema = param.schema
if schema['$ref']
ref = schema['$ref']
if ref.indexOf('#/definitions/') is 0
type = ref.substring('#/definitions/'.length)
else
type = ref
if type and type.toLowerCase() == 'file'
if !contentTypeModel.consumes if !contentTypeModel.consumes
log "set content type "
contentTypeModel.consumes = 'multipart/form-data' contentTypeModel.consumes = 'multipart/form-data'
param.type = type
responseContentTypeView = new ResponseContentTypeView({model: contentTypeModel}) responseContentTypeView = new ResponseContentTypeView({model: contentTypeModel})
$('.response-content-type', $(@el)).append responseContentTypeView.render().el $('.response-content-type', $(@el)).append responseContentTypeView.render().el
@@ -88,6 +100,8 @@ class OperationView extends Backbone.View
@addParameter param, contentTypeModel.consumes for param in @model.parameters @addParameter param, contentTypeModel.consumes for param in @model.parameters
# Render each response code # Render each response code
if typeof @model.responseMessages is 'undefined'
@model.responseMessages = []
@addStatusCode statusCode for statusCode in @model.responseMessages @addStatusCode statusCode for statusCode in @model.responseMessages
@ @
@@ -171,8 +185,6 @@ class OperationView extends Backbone.View
if param.paramType is 'header' if param.paramType is 'header'
headerParams[param.name] = map[param.name] headerParams[param.name] = map[param.name]
log headerParams
# add files # add files
for el in form.find('input[type~="file"]') for el in form.find('input[type~="file"]')
if typeof el.files[0] isnt 'undefined' if typeof el.files[0] isnt 'undefined'

View File

@@ -9,8 +9,21 @@ class ParameterView extends Backbone.View
render: -> render: ->
type = @model.type || @model.dataType type = @model.type || @model.dataType
if typeof type is 'undefined'
schema = @model.schema
if schema['$ref']
ref = schema['$ref']
if ref.indexOf('#/definitions/') is 0
type = ref.substring('#/definitions/'.length)
else
type = ref
@model.type = type
@model.paramType = @model.in || @model.paramType
@model.isBody = true if @model.paramType == 'body' @model.isBody = true if @model.paramType == 'body'
@model.isFile = true if type.toLowerCase() == 'file' @model.isFile = true if type and type.toLowerCase() == 'file'
#@model.signature = type
template = @template() template = @template()
$(@el).html(template(@model)) $(@el).html(template(@model))

View File

@@ -1,5 +1,7 @@
class ResourceView extends Backbone.View class ResourceView extends Backbone.View
initialize: -> initialize: ->
if "" is @model.description
@model.description = null
render: -> render: ->
$(@el).html(Handlebars.templates.resource(@model)) $(@el).html(Handlebars.templates.resource(@model))

View File

@@ -91,7 +91,6 @@ var Docs = {
switch (fragments.length) { switch (fragments.length) {
case 1: case 1:
// Expand all operations for the resource and scroll to it // Expand all operations for the resource and scroll to it
log('shebang resource:' + fragments[0]);
var dom_id = 'resource_' + fragments[0]; var dom_id = 'resource_' + fragments[0];
Docs.expandEndpointListForResource(fragments[0]); Docs.expandEndpointListForResource(fragments[0]);
@@ -99,7 +98,6 @@ var Docs = {
break; break;
case 2: case 2:
// Refer to the endpoint DOM element, e.g. #words_get_search // Refer to the endpoint DOM element, e.g. #words_get_search
log('shebang endpoint: ' + fragments.join('_'));
// Expand Resource // Expand Resource
Docs.expandEndpointListForResource(fragments[0]); Docs.expandEndpointListForResource(fragments[0]);
@@ -109,8 +107,6 @@ var Docs = {
var li_dom_id = fragments.join('_'); var li_dom_id = fragments.join('_');
var li_content_dom_id = li_dom_id + "_content"; var li_content_dom_id = li_dom_id + "_content";
log("li_dom_id " + li_dom_id);
log("li_content_dom_id " + li_content_dom_id);
Docs.expandOperation($('#'+li_content_dom_id)); Docs.expandOperation($('#'+li_content_dom_id));
$('#'+li_dom_id).slideto({highlight: false}); $('#'+li_dom_id).slideto({highlight: false});

View File

@@ -1,6 +1,6 @@
<div class='heading'> <div class='heading'>
<h2> <h2>
<a href='#!/{{id}}' onclick="Docs.toggleEndpointListForResource('{{id}}');">{{name}}</a> {{#description}} : {{/description}}{{{description}}} <a href='#!/{{id}}' onclick="Docs.toggleEndpointListForResource('{{id}}');">/{{name}}</a> {{#description}} : {{/description}}{{{description}}}
</h2> </h2>
<ul class='options'> <ul class='options'>
<li> <li>