Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c32f6e836d | ||
|
|
34bd474bff | ||
|
|
4601f62702 | ||
|
|
2bddfb688a | ||
|
|
b7458010f1 | ||
|
|
49f480440b | ||
|
|
e4d01c57bf | ||
|
|
187517dfe3 | ||
|
|
846628f1f3 | ||
|
|
355380a5c4 | ||
|
|
6db63006a6 | ||
|
|
0505d6cadf | ||
|
|
fcb82bdac4 | ||
|
|
348f1e109b | ||
|
|
abc3600994 | ||
|
|
77882a0e3e | ||
|
|
0e98639f45 | ||
|
|
3347d7e9fd | ||
|
|
929f8b61f2 | ||
|
|
8158e9b25f | ||
|
|
a0db8582a1 | ||
|
|
1b662db2d2 | ||
|
|
cd4fa99cc4 | ||
|
|
bc93240199 | ||
|
|
999367589d | ||
|
|
8a9eedfdf3 | ||
|
|
046e534d03 | ||
|
|
73c89ba3f6 | ||
|
|
ff05f9113b | ||
|
|
6c1de0b560 | ||
|
|
5f4eec1b8a |
@@ -1,6 +1,7 @@
|
||||
fs = require 'fs'
|
||||
path = require 'path'
|
||||
{exec} = require 'child_process'
|
||||
less = require 'less'
|
||||
|
||||
sourceFiles = [
|
||||
'SwaggerUi'
|
||||
@@ -71,13 +72,25 @@ task 'dist', 'Build a distribution', ->
|
||||
console.log ' : Minifying all...'
|
||||
exec 'java -jar "./bin/yuicompressor-2.4.7.jar" --type js -o ' + 'dist/swagger-ui.min.js ' + 'dist/swagger-ui.js', (err, stdout, stderr) ->
|
||||
throw err if err
|
||||
pack()
|
||||
lessc()
|
||||
|
||||
lessc = ->
|
||||
# Someone who knows CoffeeScript should make this more Coffee-licious
|
||||
console.log ' : Compiling LESS...'
|
||||
|
||||
less.render fs.readFileSync("src/main/less/screen.less", 'utf8'), (err, css) ->
|
||||
console.log err
|
||||
fs.writeFileSync("src/main/html/css/screen.css", css)
|
||||
pack()
|
||||
|
||||
pack = ->
|
||||
console.log ' : Packaging...'
|
||||
exec 'cp -r lib dist'
|
||||
console.log ' : Copied swagger-ui libs'
|
||||
exec 'cp -r node_modules/swagger-client/lib/swagger.js dist/lib'
|
||||
console.log ' : Copied swagger dependencies'
|
||||
exec 'cp -r src/main/html/* dist'
|
||||
console.log ' : Copied html dependencies'
|
||||
console.log ' !'
|
||||
|
||||
task 'spec', "Run the test suite", ->
|
||||
@@ -107,6 +120,7 @@ task 'watch', 'Watch source files for changes and autocompile', ->
|
||||
watchFiles("src/main/template")
|
||||
watchFiles("src/main/javascript")
|
||||
watchFiles("src/main/html")
|
||||
watchFiles("src/main/less")
|
||||
watchFiles("src/test")
|
||||
|
||||
notify = (message) ->
|
||||
@@ -115,4 +129,4 @@ notify = (message) ->
|
||||
# options =
|
||||
# title: 'CoffeeScript'
|
||||
# image: 'bin/CoffeeScript.png'
|
||||
# try require('growl') message, options
|
||||
# try require('growl') message, options
|
||||
|
||||
@@ -16,9 +16,10 @@ You can use the swagger-ui code AS-IS! No need to build or recompile--just clon
|
||||
You can rebuild swagger-ui on your own to tweak it or just so you can say you did. To do so, follow these steps:
|
||||
|
||||
1. install [handlebars](http://handlebarsjs.com/)
|
||||
2. npm install
|
||||
3. npm run-script build
|
||||
4. You should see the distribution under the dist folder. Open ./dist/index.html to launch Swagger UI in a browser
|
||||
2. install java
|
||||
3. npm install
|
||||
4. npm run-script build
|
||||
5. You should see the distribution under the dist folder. Open ./dist/index.html to launch Swagger UI in a browser
|
||||
|
||||
### Use
|
||||
Once you open the Swagger UI, it will load the [Swagger Petstore](http://petstore.swagger.wordnik.com/api/api-docs) service and show its APIs. You can enter your own server url and click explore to view the API.
|
||||
@@ -41,13 +42,13 @@ To use swagger-ui you should take a look at the [source of swagger-ui html page]
|
||||
|
||||
```javascript
|
||||
window.swaggerUi = new SwaggerUi({
|
||||
discoveryUrl:"http://petstore.swagger.wordnik.com/api/api-docs",
|
||||
url:"http://petstore.swagger.wordnik.com/api/api-docs",
|
||||
dom_id:"swagger-ui-container"
|
||||
});
|
||||
|
||||
window.swaggerUi.load();
|
||||
```
|
||||
* *discoveryUrl* parameter should point to a resource listing url as per [Swagger Spec](https://github.com/wordnik/swagger-core/wiki)
|
||||
* *url* parameter should point to a resource listing url as per [Swagger Spec](https://github.com/wordnik/swagger-core/wiki)
|
||||
* *dom_id parameter* is the the id of a dom element inside which SwaggerUi will put the user interface for swagger
|
||||
* *booleanValues* SwaggerUI renders boolean data types as a dropdown. By default it provides a 'true' and 'false' string as the possible choices. You can use this parameter to change the values in dropdown to be something else, for example 0 and 1 by setting booleanValues to new Array(0, 1)
|
||||
* *docExpansion* controls how the API listing is displayed. It can be set to 'none' (default), 'list' (shows operations for each resource), or 'full' (fully expanded: shows operations and their details)
|
||||
|
||||
Vendored
+1043
-1755
File diff suppressed because it is too large
Load Diff
Vendored
+65
-42
@@ -1,10 +1,9 @@
|
||||
// Generated by CoffeeScript 1.4.0
|
||||
// Generated by CoffeeScript 1.6.3
|
||||
(function() {
|
||||
var ApiKeyAuthorization, SwaggerApi, SwaggerAuthorizations, SwaggerHttp, SwaggerModel, SwaggerModelProperty, SwaggerOperation, SwaggerRequest, SwaggerResource,
|
||||
var ApiKeyAuthorization, PasswordAuthorization, SwaggerApi, SwaggerAuthorizations, SwaggerHttp, SwaggerModel, SwaggerModelProperty, SwaggerOperation, SwaggerRequest, SwaggerResource,
|
||||
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
|
||||
|
||||
SwaggerApi = (function() {
|
||||
|
||||
SwaggerApi.prototype.url = "http://api.wordnik.com/v4/resources.json";
|
||||
|
||||
SwaggerApi.prototype.debug = false;
|
||||
@@ -55,12 +54,12 @@
|
||||
error: function(response) {
|
||||
if (_this.url.substring(0, 4) !== 'http') {
|
||||
return _this.fail('Please specify the protocol for ' + _this.url);
|
||||
} else if (error.status === 0) {
|
||||
} else if (response.status === 0) {
|
||||
return _this.fail('Can\'t read from server. It may not have the appropriate access-control-origin settings.');
|
||||
} else if (error.status === 404) {
|
||||
} else if (response.status === 404) {
|
||||
return _this.fail('Can\'t read swagger JSON from ' + _this.url);
|
||||
} else {
|
||||
return _this.fail(error.status + ' : ' + error.statusText + ' ' + _this.url);
|
||||
return _this.fail(response.status + ' : ' + response.statusText + ' ' + _this.url);
|
||||
}
|
||||
},
|
||||
response: function(rawResponse) {
|
||||
@@ -94,6 +93,7 @@
|
||||
this.apis = {};
|
||||
this.apisArray = [];
|
||||
this.produces = response.produces;
|
||||
this.authSchemes = response.authorizations;
|
||||
if (response.info != null) {
|
||||
this.info = response.info;
|
||||
}
|
||||
@@ -109,6 +109,13 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
if (response.basePath) {
|
||||
this.basePath = response.basePath;
|
||||
} else if (this.url.indexOf('?') > 0) {
|
||||
this.basePath = this.url.substring(0, this.url.lastIndexOf('?'));
|
||||
} else {
|
||||
this.basePath = this.url;
|
||||
}
|
||||
if (isApi) {
|
||||
newName = response.resourcePath.replace(/\//g, '');
|
||||
this.resourcePath = response.resourcePath;
|
||||
@@ -116,13 +123,6 @@
|
||||
this.apis[newName] = res;
|
||||
this.apisArray.push(res);
|
||||
} else {
|
||||
if (response.basePath) {
|
||||
this.basePath = response.basePath;
|
||||
} else if (this.url.indexOf('?') > 0) {
|
||||
this.basePath = this.url.substring(0, this.url.lastIndexOf('?'));
|
||||
} else {
|
||||
this.basePath = this.url;
|
||||
}
|
||||
_ref2 = response.apis;
|
||||
for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
|
||||
resource = _ref2[_k];
|
||||
@@ -161,6 +161,13 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
if (response.basePath) {
|
||||
this.basePath = response.basePath;
|
||||
} else if (this.url.indexOf('?') > 0) {
|
||||
this.basePath = this.url.substring(0, this.url.lastIndexOf('?'));
|
||||
} else {
|
||||
this.basePath = this.url;
|
||||
}
|
||||
if (isApi) {
|
||||
newName = response.resourcePath.replace(/\//g, '');
|
||||
this.resourcePath = response.resourcePath;
|
||||
@@ -168,13 +175,6 @@
|
||||
this.apis[newName] = res;
|
||||
this.apisArray.push(res);
|
||||
} else {
|
||||
if (response.basePath) {
|
||||
this.basePath = response.basePath;
|
||||
} else if (this.url.indexOf('?') > 0) {
|
||||
this.basePath = this.url.substring(0, this.url.lastIndexOf('?'));
|
||||
} else {
|
||||
this.basePath = this.url;
|
||||
}
|
||||
_ref2 = response.apis;
|
||||
for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
|
||||
resource = _ref2[_k];
|
||||
@@ -221,7 +221,7 @@
|
||||
for (resource_name in _ref) {
|
||||
resource = _ref[resource_name];
|
||||
for (modelName in resource.models) {
|
||||
if (!(this.models[modelName] != null)) {
|
||||
if (this.models[modelName] == null) {
|
||||
this.models[modelName] = resource.models[modelName];
|
||||
this.modelsArray.push(resource.models[modelName]);
|
||||
}
|
||||
@@ -261,7 +261,6 @@
|
||||
})();
|
||||
|
||||
SwaggerResource = (function() {
|
||||
|
||||
SwaggerResource.prototype.api = null;
|
||||
|
||||
SwaggerResource.prototype.produces = null;
|
||||
@@ -302,7 +301,7 @@
|
||||
headers: {},
|
||||
on: {
|
||||
error: function(response) {
|
||||
return _this.api.fail("Unable to read api '" + _this.name + "' from path " + _this.url + " (server returned " + error.statusText + ")");
|
||||
return _this.api.fail("Unable to read api '" + _this.name + "' from path " + _this.url + " (server returned " + response.statusText + ")");
|
||||
},
|
||||
response: function(rawResponse) {
|
||||
var response;
|
||||
@@ -350,7 +349,7 @@
|
||||
var model, modelName, swaggerModel, _i, _len, _ref, _results;
|
||||
if (models != null) {
|
||||
for (modelName in models) {
|
||||
if (!(this.models[modelName] != null)) {
|
||||
if (this.models[modelName] == null) {
|
||||
swaggerModel = new SwaggerModel(modelName, models[modelName]);
|
||||
this.modelsArray.push(swaggerModel);
|
||||
this.models[modelName] = swaggerModel;
|
||||
@@ -367,7 +366,7 @@
|
||||
};
|
||||
|
||||
SwaggerResource.prototype.addOperations = function(resource_path, ops, consumes, produces) {
|
||||
var method, o, op, ref, responseMessages, type, _i, _len, _results;
|
||||
var method, o, op, r, ref, responseMessages, type, _i, _j, _len, _len1, _results;
|
||||
if (ops) {
|
||||
_results = [];
|
||||
for (_i = 0, _len = ops.length; _i < _len; _i++) {
|
||||
@@ -402,6 +401,11 @@
|
||||
}
|
||||
if (o.errorResponses) {
|
||||
responseMessages = o.errorResponses;
|
||||
for (_j = 0, _len1 = responseMessages.length; _j < _len1; _j++) {
|
||||
r = responseMessages[_j];
|
||||
r.message = r.reason;
|
||||
r.reason = null;
|
||||
}
|
||||
}
|
||||
o.nickname = this.sanitize(o.nickname);
|
||||
op = new SwaggerOperation(o.nickname, resource_path, method, o.parameters, o.summary, o.notes, type, responseMessages, this, consumes, produces);
|
||||
@@ -443,20 +447,20 @@
|
||||
})();
|
||||
|
||||
SwaggerModel = (function() {
|
||||
|
||||
function SwaggerModel(modelName, obj) {
|
||||
var propertyName, value;
|
||||
var prop, propertyName, value;
|
||||
this.name = obj.id != null ? obj.id : modelName;
|
||||
this.properties = [];
|
||||
for (propertyName in obj.properties) {
|
||||
if (obj["enum"] != null) {
|
||||
for (value in obj["enum"]) {
|
||||
if (propertyName === value) {
|
||||
if (obj.required != null) {
|
||||
for (value in obj.required) {
|
||||
if (propertyName === obj.required[value]) {
|
||||
obj.properties[propertyName].required = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
this.properties.push(new SwaggerModelProperty(propertyName, obj.properties[propertyName]));
|
||||
prop = new SwaggerModelProperty(propertyName, obj.properties[propertyName]);
|
||||
this.properties.push(prop);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -508,7 +512,6 @@
|
||||
|
||||
SwaggerModel.prototype.createJSONSample = function(modelsToIgnore) {
|
||||
var prop, result, _i, _len, _ref;
|
||||
console.log("creating json sample for " + this);
|
||||
result = {};
|
||||
modelsToIgnore = modelsToIgnore || [];
|
||||
modelsToIgnore.push(this.name);
|
||||
@@ -526,15 +529,12 @@
|
||||
})();
|
||||
|
||||
SwaggerModelProperty = (function() {
|
||||
|
||||
function SwaggerModelProperty(name, obj) {
|
||||
this.name = name;
|
||||
this.dataType = obj.type || obj.dataType || obj["$ref"];
|
||||
console.log(this.name + " has data type " + this.dataType);
|
||||
this.isCollection = this.dataType && (this.dataType.toLowerCase() === 'array' || this.dataType.toLowerCase() === 'list' || this.dataType.toLowerCase() === 'set');
|
||||
this.descr = obj.description;
|
||||
this.required = obj.required;
|
||||
console.log(this);
|
||||
if (obj.items != null) {
|
||||
if (obj.items.type != null) {
|
||||
this.refDataType = obj.items.type;
|
||||
@@ -551,6 +551,13 @@
|
||||
this.valuesString = "'" + this.values.join("' or '") + "'";
|
||||
}
|
||||
}
|
||||
if (obj["enum"] != null) {
|
||||
this.valueType = "string";
|
||||
this.values = obj["enum"];
|
||||
if (this.values != null) {
|
||||
this.valueString = "'" + this.values.join("' or '") + "'";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SwaggerModelProperty.prototype.getSampleValue = function(modelsToIgnore) {
|
||||
@@ -593,7 +600,6 @@
|
||||
})();
|
||||
|
||||
SwaggerOperation = (function() {
|
||||
|
||||
function SwaggerOperation(nickname, path, method, parameters, summary, notes, type, responseMessages, resource, consumes, produces) {
|
||||
var parameter, v, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _ref3,
|
||||
_this = this;
|
||||
@@ -609,7 +615,6 @@
|
||||
this.consumes = consumes;
|
||||
this.produces = produces;
|
||||
this["do"] = __bind(this["do"], this);
|
||||
|
||||
if (this.nickname == null) {
|
||||
this.resource.api.fail("SwaggerOperations must have a nickname.");
|
||||
}
|
||||
@@ -623,7 +628,6 @@
|
||||
this.method = this.method.toLowerCase();
|
||||
this.isGetMethod = this.method === "get";
|
||||
this.resourceName = this.resource.name;
|
||||
console.log("model type: " + type);
|
||||
if (((_ref = this.type) != null ? _ref.toLowerCase() : void 0) === 'void') {
|
||||
this.type = void 0;
|
||||
}
|
||||
@@ -910,7 +914,6 @@
|
||||
})();
|
||||
|
||||
SwaggerRequest = (function() {
|
||||
|
||||
function SwaggerRequest(type, url, params, opts, successCallback, errorCallback, operation, execution) {
|
||||
var body, e, fields, headers, key, myHeaders, name, obj, param, parent, possibleParams, requestContentType, responseContentType, urlEncoded, value, values,
|
||||
_this = this;
|
||||
@@ -1101,7 +1104,6 @@
|
||||
})();
|
||||
|
||||
SwaggerHttp = (function() {
|
||||
|
||||
SwaggerHttp.prototype.Shred = null;
|
||||
|
||||
SwaggerHttp.prototype.shred = null;
|
||||
@@ -1146,7 +1148,6 @@
|
||||
})();
|
||||
|
||||
SwaggerAuthorizations = (function() {
|
||||
|
||||
SwaggerAuthorizations.prototype.authz = null;
|
||||
|
||||
function SwaggerAuthorizations() {
|
||||
@@ -1174,7 +1175,6 @@
|
||||
})();
|
||||
|
||||
ApiKeyAuthorization = (function() {
|
||||
|
||||
ApiKeyAuthorization.prototype.type = null;
|
||||
|
||||
ApiKeyAuthorization.prototype.name = null;
|
||||
@@ -1204,6 +1204,27 @@
|
||||
|
||||
})();
|
||||
|
||||
PasswordAuthorization = (function() {
|
||||
PasswordAuthorization.prototype.name = null;
|
||||
|
||||
PasswordAuthorization.prototype.username = null;
|
||||
|
||||
PasswordAuthorization.prototype.password = null;
|
||||
|
||||
function PasswordAuthorization(name, username, password) {
|
||||
this.name = name;
|
||||
this.username = username;
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
PasswordAuthorization.prototype.apply = function(obj) {
|
||||
return obj.headers["Authorization"] = "Basic " + btoa(this.username + ":" + this.password);
|
||||
};
|
||||
|
||||
return PasswordAuthorization;
|
||||
|
||||
})();
|
||||
|
||||
this.SwaggerApi = SwaggerApi;
|
||||
|
||||
this.SwaggerResource = SwaggerResource;
|
||||
@@ -1216,6 +1237,8 @@
|
||||
|
||||
this.ApiKeyAuthorization = ApiKeyAuthorization;
|
||||
|
||||
this.PasswordAuthorization = PasswordAuthorization;
|
||||
|
||||
this.authorizations = new SwaggerAuthorizations();
|
||||
|
||||
}).call(this);
|
||||
|
||||
Vendored
+235
-85
@@ -598,43 +598,64 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
function program1(depth0,data) {
|
||||
|
||||
|
||||
return "\n ";
|
||||
return " multiple='multiple'";
|
||||
}
|
||||
|
||||
function program3(depth0,data) {
|
||||
|
||||
|
||||
return "\n ";
|
||||
}
|
||||
|
||||
function program5(depth0,data) {
|
||||
|
||||
var buffer = "", stack1;
|
||||
buffer += "\n ";
|
||||
stack1 = helpers['if'].call(depth0, depth0.defaultValue, {hash:{},inverse:self.program(6, program6, data),fn:self.program(4, program4, data),data:data});
|
||||
stack1 = helpers['if'].call(depth0, depth0.defaultValue, {hash:{},inverse:self.program(8, program8, data),fn:self.program(6, program6, data),data:data});
|
||||
if(stack1 || stack1 === 0) { buffer += stack1; }
|
||||
buffer += "\n ";
|
||||
return buffer;
|
||||
}
|
||||
function program4(depth0,data) {
|
||||
function program6(depth0,data) {
|
||||
|
||||
|
||||
return "\n ";
|
||||
}
|
||||
|
||||
function program6(depth0,data) {
|
||||
|
||||
|
||||
return "\n <option selected=\"\" value=''></option>\n ";
|
||||
}
|
||||
|
||||
function program8(depth0,data) {
|
||||
|
||||
var buffer = "", stack1;
|
||||
buffer += "\n ";
|
||||
stack1 = helpers['if'].call(depth0, depth0.isDefault, {hash:{},inverse:self.program(11, program11, data),fn:self.program(9, program9, data),data:data});
|
||||
buffer += "\n ";
|
||||
stack1 = helpers['if'].call(depth0, depth0.allowMultiple, {hash:{},inverse:self.program(11, program11, data),fn:self.program(9, program9, data),data:data});
|
||||
if(stack1 || stack1 === 0) { buffer += stack1; }
|
||||
buffer += "\n ";
|
||||
buffer += "\n ";
|
||||
return buffer;
|
||||
}
|
||||
function program9(depth0,data) {
|
||||
|
||||
|
||||
return "\n ";
|
||||
}
|
||||
|
||||
function program11(depth0,data) {
|
||||
|
||||
|
||||
return "\n <option selected=\"\" value=''></option>\n ";
|
||||
}
|
||||
|
||||
function program13(depth0,data) {
|
||||
|
||||
var buffer = "", stack1;
|
||||
buffer += "\n <option value='";
|
||||
buffer += "\n ";
|
||||
stack1 = helpers['if'].call(depth0, depth0.isDefault, {hash:{},inverse:self.program(16, program16, data),fn:self.program(14, program14, data),data:data});
|
||||
if(stack1 || stack1 === 0) { buffer += stack1; }
|
||||
buffer += "\n ";
|
||||
return buffer;
|
||||
}
|
||||
function program14(depth0,data) {
|
||||
|
||||
var buffer = "", stack1;
|
||||
buffer += "\n <option selected=\"\" value='";
|
||||
if (stack1 = helpers.value) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
|
||||
else { stack1 = depth0.value; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
|
||||
buffer += escapeExpression(stack1)
|
||||
@@ -646,7 +667,7 @@ function program9(depth0,data) {
|
||||
return buffer;
|
||||
}
|
||||
|
||||
function program11(depth0,data) {
|
||||
function program16(depth0,data) {
|
||||
|
||||
var buffer = "", stack1;
|
||||
buffer += "\n <option value='";
|
||||
@@ -665,15 +686,18 @@ function program11(depth0,data) {
|
||||
if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
|
||||
else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
|
||||
buffer += escapeExpression(stack1)
|
||||
+ "</td>\n<td>\n <select class='parameter' name='";
|
||||
+ "</td>\n<td>\n <select ";
|
||||
stack1 = helpers['if'].call(depth0, depth0.allowMultiple, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
|
||||
if(stack1 || stack1 === 0) { buffer += stack1; }
|
||||
buffer += " class='parameter' name='";
|
||||
if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
|
||||
else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
|
||||
buffer += escapeExpression(stack1)
|
||||
+ "'>\n ";
|
||||
stack1 = helpers['if'].call(depth0, depth0.required, {hash:{},inverse:self.program(3, program3, data),fn:self.program(1, program1, data),data:data});
|
||||
stack1 = helpers['if'].call(depth0, depth0.required, {hash:{},inverse:self.program(5, program5, data),fn:self.program(3, program3, data),data:data});
|
||||
if(stack1 || stack1 === 0) { buffer += stack1; }
|
||||
buffer += "\n ";
|
||||
stack2 = helpers.each.call(depth0, ((stack1 = depth0.allowableValues),stack1 == null || stack1 === false ? stack1 : stack1.descriptiveValues), {hash:{},inverse:self.noop,fn:self.program(8, program8, data),data:data});
|
||||
stack2 = helpers.each.call(depth0, ((stack1 = depth0.allowableValues),stack1 == null || stack1 === false ? stack1 : stack1.descriptiveValues), {hash:{},inverse:self.noop,fn:self.program(13, program13, data),data:data});
|
||||
if(stack2 || stack2 === 0) { buffer += stack2; }
|
||||
buffer += "\n </select>\n</td>\n<td>";
|
||||
if (stack2 = helpers.description) { stack2 = stack2.call(depth0, {hash:{},data:data}); }
|
||||
@@ -683,7 +707,7 @@ function program11(depth0,data) {
|
||||
if (stack2 = helpers.paramType) { stack2 = stack2.call(depth0, {hash:{},data:data}); }
|
||||
else { stack2 = depth0.paramType; stack2 = typeof stack2 === functionType ? stack2.apply(depth0) : stack2; }
|
||||
if(stack2 || stack2 === 0) { buffer += stack2; }
|
||||
buffer += "</td>\n<td><span class=\"model-signature\"></span></td>\n";
|
||||
buffer += "</td>\n<td><span class=\"model-signature\"></span></td>";
|
||||
return buffer;
|
||||
});
|
||||
})();
|
||||
@@ -1009,8 +1033,13 @@ function program4(depth0,data) {
|
||||
templates['resource'] = template(function (Handlebars,depth0,helpers,partials,data) {
|
||||
this.compilerInfo = [4,'>= 1.0.0'];
|
||||
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression;
|
||||
var buffer = "", stack1, options, functionType="function", escapeExpression=this.escapeExpression, self=this, blockHelperMissing=helpers.blockHelperMissing;
|
||||
|
||||
function program1(depth0,data) {
|
||||
|
||||
|
||||
return " : ";
|
||||
}
|
||||
|
||||
buffer += "<div class='heading'>\n <h2>\n <a href='#!/";
|
||||
if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
|
||||
@@ -1024,7 +1053,16 @@ helpers = this.merge(helpers, Handlebars.helpers); 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; }
|
||||
buffer += escapeExpression(stack1)
|
||||
+ "</a>\n </h2>\n <ul class='options'>\n <li>\n <a href='#!/";
|
||||
+ "</a> ";
|
||||
options = {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data};
|
||||
if (stack1 = helpers.description) { stack1 = stack1.call(depth0, options); }
|
||||
else { stack1 = depth0.description; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
|
||||
if (!helpers.description) { stack1 = blockHelperMissing.call(depth0, stack1, options); }
|
||||
if(stack1 || stack1 === 0) { buffer += stack1; }
|
||||
if (stack1 = helpers.description) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
|
||||
else { stack1 = depth0.description; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
|
||||
if(stack1 || stack1 === 0) { buffer += stack1; }
|
||||
buffer += "\n </h2>\n <ul class='options'>\n <li>\n <a href='#!/";
|
||||
if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
|
||||
else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
|
||||
buffer += escapeExpression(stack1)
|
||||
@@ -1144,18 +1182,18 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
|
||||
|
||||
|
||||
// Generated by CoffeeScript 1.4.0
|
||||
// Generated by CoffeeScript 1.6.3
|
||||
(function() {
|
||||
var ContentTypeView, HeaderView, MainView, OperationView, ParameterContentTypeView, ParameterView, ResourceView, ResponseContentTypeView, SignatureView, StatusCodeView, SwaggerUi,
|
||||
var ContentTypeView, HeaderView, MainView, OperationView, ParameterContentTypeView, ParameterView, ResourceView, ResponseContentTypeView, SignatureView, StatusCodeView, SwaggerUi, _ref, _ref1, _ref10, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9,
|
||||
__hasProp = {}.hasOwnProperty,
|
||||
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
||||
|
||||
SwaggerUi = (function(_super) {
|
||||
|
||||
__extends(SwaggerUi, _super);
|
||||
|
||||
function SwaggerUi() {
|
||||
return SwaggerUi.__super__.constructor.apply(this, arguments);
|
||||
_ref = SwaggerUi.__super__.constructor.apply(this, arguments);
|
||||
return _ref;
|
||||
}
|
||||
|
||||
SwaggerUi.prototype.dom_id = "swagger_ui";
|
||||
@@ -1177,7 +1215,7 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
this.dom_id = options.dom_id;
|
||||
delete options.dom_id;
|
||||
}
|
||||
if (!($('#' + this.dom_id) != null)) {
|
||||
if ($('#' + this.dom_id) == null) {
|
||||
$('body').append('<div id="' + this.dom_id + '"></div>');
|
||||
}
|
||||
this.options = options;
|
||||
@@ -1204,9 +1242,9 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
};
|
||||
|
||||
SwaggerUi.prototype.load = function() {
|
||||
var url, _ref;
|
||||
if ((_ref = this.mainView) != null) {
|
||||
_ref.clear();
|
||||
var url, _ref1;
|
||||
if ((_ref1 = this.mainView) != null) {
|
||||
_ref1.clear();
|
||||
}
|
||||
url = this.options.url;
|
||||
if (url.indexOf("http") !== 0) {
|
||||
@@ -1284,11 +1322,11 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
window.SwaggerUi = SwaggerUi;
|
||||
|
||||
HeaderView = (function(_super) {
|
||||
|
||||
__extends(HeaderView, _super);
|
||||
|
||||
function HeaderView() {
|
||||
return HeaderView.__super__.constructor.apply(this, arguments);
|
||||
_ref1 = HeaderView.__super__.constructor.apply(this, arguments);
|
||||
return _ref1;
|
||||
}
|
||||
|
||||
HeaderView.prototype.events = {
|
||||
@@ -1346,21 +1384,21 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
})(Backbone.View);
|
||||
|
||||
MainView = (function(_super) {
|
||||
|
||||
__extends(MainView, _super);
|
||||
|
||||
function MainView() {
|
||||
return MainView.__super__.constructor.apply(this, arguments);
|
||||
_ref2 = MainView.__super__.constructor.apply(this, arguments);
|
||||
return _ref2;
|
||||
}
|
||||
|
||||
MainView.prototype.initialize = function() {};
|
||||
|
||||
MainView.prototype.render = function() {
|
||||
var resource, _i, _len, _ref;
|
||||
var resource, _i, _len, _ref3;
|
||||
$(this.el).html(Handlebars.templates.main(this.model));
|
||||
_ref = this.model.apisArray;
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
resource = _ref[_i];
|
||||
_ref3 = this.model.apisArray;
|
||||
for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
|
||||
resource = _ref3[_i];
|
||||
this.addResource(resource);
|
||||
}
|
||||
return this;
|
||||
@@ -1386,22 +1424,23 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
})(Backbone.View);
|
||||
|
||||
ResourceView = (function(_super) {
|
||||
|
||||
__extends(ResourceView, _super);
|
||||
|
||||
function ResourceView() {
|
||||
return ResourceView.__super__.constructor.apply(this, arguments);
|
||||
_ref3 = ResourceView.__super__.constructor.apply(this, arguments);
|
||||
return _ref3;
|
||||
}
|
||||
|
||||
ResourceView.prototype.initialize = function() {};
|
||||
|
||||
ResourceView.prototype.render = function() {
|
||||
var operation, _i, _len, _ref;
|
||||
var operation, _i, _len, _ref4;
|
||||
console.log(this.model.description);
|
||||
$(this.el).html(Handlebars.templates.resource(this.model));
|
||||
this.number = 0;
|
||||
_ref = this.model.operationsArray;
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
operation = _ref[_i];
|
||||
_ref4 = this.model.operationsArray;
|
||||
for (_i = 0, _len = _ref4.length; _i < _len; _i++) {
|
||||
operation = _ref4[_i];
|
||||
this.addOperation(operation);
|
||||
}
|
||||
return this;
|
||||
@@ -1424,13 +1463,15 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
})(Backbone.View);
|
||||
|
||||
OperationView = (function(_super) {
|
||||
|
||||
__extends(OperationView, _super);
|
||||
|
||||
function OperationView() {
|
||||
return OperationView.__super__.constructor.apply(this, arguments);
|
||||
_ref4 = OperationView.__super__.constructor.apply(this, arguments);
|
||||
return _ref4;
|
||||
}
|
||||
|
||||
OperationView.prototype.invocationUrl = null;
|
||||
|
||||
OperationView.prototype.events = {
|
||||
'submit .sandbox': 'submitOperation',
|
||||
'click .submit': 'submitOperation',
|
||||
@@ -1441,7 +1482,7 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
OperationView.prototype.initialize = function() {};
|
||||
|
||||
OperationView.prototype.render = function() {
|
||||
var contentTypeModel, isMethodSubmissionSupported, param, responseContentTypeView, responseSignatureView, signatureModel, statusCode, type, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2;
|
||||
var contentTypeModel, isMethodSubmissionSupported, param, responseContentTypeView, responseSignatureView, signatureModel, statusCode, type, _i, _j, _k, _len, _len1, _len2, _ref5, _ref6, _ref7;
|
||||
isMethodSubmissionSupported = true;
|
||||
if (!isMethodSubmissionSupported) {
|
||||
this.model.isReadOnly = true;
|
||||
@@ -1466,9 +1507,9 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
};
|
||||
contentTypeModel.consumes = this.model.consumes;
|
||||
contentTypeModel.produces = this.model.produces;
|
||||
_ref = this.model.parameters;
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
param = _ref[_i];
|
||||
_ref5 = this.model.parameters;
|
||||
for (_i = 0, _len = _ref5.length; _i < _len; _i++) {
|
||||
param = _ref5[_i];
|
||||
type = param.type || param.dataType;
|
||||
if (type.toLowerCase() === 'file') {
|
||||
if (!contentTypeModel.consumes) {
|
||||
@@ -1481,14 +1522,14 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
model: contentTypeModel
|
||||
});
|
||||
$('.response-content-type', $(this.el)).append(responseContentTypeView.render().el);
|
||||
_ref1 = this.model.parameters;
|
||||
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
|
||||
param = _ref1[_j];
|
||||
_ref6 = this.model.parameters;
|
||||
for (_j = 0, _len1 = _ref6.length; _j < _len1; _j++) {
|
||||
param = _ref6[_j];
|
||||
this.addParameter(param, contentTypeModel.consumes);
|
||||
}
|
||||
_ref2 = this.model.responseMessages;
|
||||
for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
|
||||
statusCode = _ref2[_k];
|
||||
_ref7 = this.model.responseMessages;
|
||||
for (_k = 0, _len2 = _ref7.length; _k < _len2; _k++) {
|
||||
statusCode = _ref7[_k];
|
||||
this.addStatusCode(statusCode);
|
||||
}
|
||||
return this;
|
||||
@@ -1515,7 +1556,7 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
};
|
||||
|
||||
OperationView.prototype.submitOperation = function(e) {
|
||||
var error_free, form, map, o, opts, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2;
|
||||
var error_free, form, isFileUpload, map, o, opts, val, _i, _j, _k, _len, _len1, _len2, _ref5, _ref6, _ref7;
|
||||
if (e != null) {
|
||||
e.preventDefault();
|
||||
}
|
||||
@@ -1539,30 +1580,40 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
opts = {
|
||||
parent: this
|
||||
};
|
||||
_ref = form.find("input");
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
o = _ref[_i];
|
||||
isFileUpload = false;
|
||||
_ref5 = form.find("input");
|
||||
for (_i = 0, _len = _ref5.length; _i < _len; _i++) {
|
||||
o = _ref5[_i];
|
||||
if ((o.value != null) && jQuery.trim(o.value).length > 0) {
|
||||
map[o.name] = encodeURI(o.value);
|
||||
map[o.name] = o.value;
|
||||
}
|
||||
if (o.type === "file") {
|
||||
isFileUpload = true;
|
||||
}
|
||||
}
|
||||
_ref1 = form.find("textarea");
|
||||
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
|
||||
o = _ref1[_j];
|
||||
_ref6 = form.find("textarea");
|
||||
for (_j = 0, _len1 = _ref6.length; _j < _len1; _j++) {
|
||||
o = _ref6[_j];
|
||||
if ((o.value != null) && jQuery.trim(o.value).length > 0) {
|
||||
map["body"] = o.value;
|
||||
}
|
||||
}
|
||||
_ref2 = form.find("select");
|
||||
for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
|
||||
o = _ref2[_k];
|
||||
if ((o.value != null) && jQuery.trim(o.value).length > 0) {
|
||||
map[o.name] = o.value;
|
||||
_ref7 = form.find("select");
|
||||
for (_k = 0, _len2 = _ref7.length; _k < _len2; _k++) {
|
||||
o = _ref7[_k];
|
||||
val = this.getSelectedValue(o);
|
||||
if ((val != null) && jQuery.trim(val).length > 0) {
|
||||
map[o.name] = val;
|
||||
}
|
||||
}
|
||||
opts.responseContentType = $("div select[name=responseContentType]", $(this.el)).val();
|
||||
opts.requestContentType = $("div select[name=parameterContentType]", $(this.el)).val();
|
||||
return this.model["do"](map, opts, this.showCompleteStatus, this.showErrorStatus, this);
|
||||
$(".response_throbber", $(this.el)).show();
|
||||
if (isFileUpload) {
|
||||
return this.handleFileUpload(map, form);
|
||||
} else {
|
||||
return this.model["do"](map, opts, this.showCompleteStatus, this.showErrorStatus, this);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1570,6 +1621,103 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
return parent.showCompleteStatus(response);
|
||||
};
|
||||
|
||||
OperationView.prototype.handleFileUpload = function(map, form) {
|
||||
var bodyParam, headerParams, o, obj, param, _i, _j, _k, _len, _len1, _len2, _ref5, _ref6, _ref7,
|
||||
_this = this;
|
||||
console.log("it's a file upload");
|
||||
_ref5 = form.serializeArray();
|
||||
for (_i = 0, _len = _ref5.length; _i < _len; _i++) {
|
||||
o = _ref5[_i];
|
||||
if ((o.value != null) && jQuery.trim(o.value).length > 0) {
|
||||
map[o.name] = o.value;
|
||||
}
|
||||
}
|
||||
bodyParam = new FormData();
|
||||
_ref6 = this.model.parameters;
|
||||
for (_j = 0, _len1 = _ref6.length; _j < _len1; _j++) {
|
||||
param = _ref6[_j];
|
||||
if (param.paramType === 'form') {
|
||||
bodyParam.append(param.name, map[param.name]);
|
||||
}
|
||||
}
|
||||
headerParams = {};
|
||||
_ref7 = this.model.parameters;
|
||||
for (_k = 0, _len2 = _ref7.length; _k < _len2; _k++) {
|
||||
param = _ref7[_k];
|
||||
if (param.paramType === 'header') {
|
||||
headerParams[param.name] = map[param.name];
|
||||
}
|
||||
}
|
||||
console.log(headerParams);
|
||||
$.each($('input[type~="file"]'), function(i, el) {
|
||||
return bodyParam.append($(el).attr('name'), el.files[0]);
|
||||
});
|
||||
console.log(bodyParam);
|
||||
this.invocationUrl = this.model.supportHeaderParams() ? (headerParams = this.model.getHeaderParams(map), this.model.urlify(map, false)) : this.model.urlify(map, true);
|
||||
$(".request_url", $(this.el)).html("<pre>" + this.invocationUrl + "</pre>");
|
||||
obj = {
|
||||
type: this.model.method,
|
||||
url: this.invocationUrl,
|
||||
headers: headerParams,
|
||||
data: bodyParam,
|
||||
dataType: 'json',
|
||||
contentType: false,
|
||||
processData: false,
|
||||
error: function(data, textStatus, error) {
|
||||
return _this.showErrorStatus(_this.wrap(data), _this);
|
||||
},
|
||||
success: function(data) {
|
||||
return _this.showResponse(data, _this);
|
||||
},
|
||||
complete: function(data) {
|
||||
return _this.showCompleteStatus(_this.wrap(data), _this);
|
||||
}
|
||||
};
|
||||
if (window.authorizations) {
|
||||
window.authorizations.apply(obj);
|
||||
}
|
||||
jQuery.ajax(obj);
|
||||
return false;
|
||||
};
|
||||
|
||||
OperationView.prototype.wrap = function(data) {
|
||||
var o,
|
||||
_this = this;
|
||||
o = {};
|
||||
o.content = {};
|
||||
o.content.data = data.responseText;
|
||||
o.getHeaders = function() {
|
||||
return {
|
||||
"Content-Type": data.getResponseHeader("Content-Type")
|
||||
};
|
||||
};
|
||||
o.request = {};
|
||||
o.request.url = this.invocationUrl;
|
||||
o.status = data.status;
|
||||
return o;
|
||||
};
|
||||
|
||||
OperationView.prototype.getSelectedValue = function(select) {
|
||||
var opt, options, _i, _len, _ref5;
|
||||
if (!select.multiple) {
|
||||
return select.value;
|
||||
} else {
|
||||
options = [];
|
||||
_ref5 = select.options;
|
||||
for (_i = 0, _len = _ref5.length; _i < _len; _i++) {
|
||||
opt = _ref5[_i];
|
||||
if (opt.selected) {
|
||||
options.push(opt.value);
|
||||
}
|
||||
}
|
||||
if (options.length > 0) {
|
||||
return options.join(",");
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
OperationView.prototype.hideResponse = function(e) {
|
||||
if (e != null) {
|
||||
e.preventDefault();
|
||||
@@ -1645,9 +1793,9 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
padding = '';
|
||||
indent += transitions[fromTo];
|
||||
padding = ((function() {
|
||||
var _j, _ref, _results;
|
||||
var _j, _ref5, _results;
|
||||
_results = [];
|
||||
for (j = _j = 0, _ref = indent; 0 <= _ref ? _j < _ref : _j > _ref; j = 0 <= _ref ? ++_j : --_j) {
|
||||
for (j = _j = 0, _ref5 = indent; 0 <= _ref5 ? _j < _ref5 : _j > _ref5; j = 0 <= _ref5 ? ++_j : --_j) {
|
||||
_results.push(' ');
|
||||
}
|
||||
return _results;
|
||||
@@ -1673,7 +1821,7 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
if (content === void 0) {
|
||||
code = $('<code />').text("no content");
|
||||
pre = $('<pre class="json" />').append(code);
|
||||
} else if (contentType.indexOf("application/json") === 0) {
|
||||
} else if (contentType.indexOf("application/json") === 0 || contentType.indexOf("application/hal+json") === 0) {
|
||||
code = $('<code />').text(JSON.stringify(JSON.parse(content), null, 2));
|
||||
pre = $('<pre class="json" />').append(code);
|
||||
} else if (contentType.indexOf("application/xml") === 0) {
|
||||
@@ -1682,15 +1830,17 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
} else if (contentType.indexOf("text/html") === 0) {
|
||||
code = $('<code />').html(content);
|
||||
pre = $('<pre class="xml" />').append(code);
|
||||
} else if (contentType.indexOf("image/") === 0) {
|
||||
pre = $('<img>').attr('src', data.request.url);
|
||||
} else {
|
||||
code = $('<code />').text(content);
|
||||
pre = $('<pre class="json" />').append(code);
|
||||
}
|
||||
response_body = pre;
|
||||
$(".request_url").html("<pre>" + data.request.url + "</pre>");
|
||||
$(".request_url", $(this.el)).html("<pre>" + data.request.url + "</pre>");
|
||||
$(".response_code", $(this.el)).html("<pre>" + data.status + "</pre>");
|
||||
$(".response_body", $(this.el)).html(response_body);
|
||||
$(".response_headers", $(this.el)).html("<pre>" + JSON.stringify(data.getHeaders()) + "</pre>");
|
||||
$(".response_headers", $(this.el)).html("<pre>" + JSON.stringify(data.getHeaders(), null, " ").replace(/\n/g, "<br>") + "</pre>");
|
||||
$(".response", $(this.el)).slideDown();
|
||||
$(".response_hider", $(this.el)).show();
|
||||
$(".response_throbber", $(this.el)).hide();
|
||||
@@ -1712,11 +1862,11 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
})(Backbone.View);
|
||||
|
||||
StatusCodeView = (function(_super) {
|
||||
|
||||
__extends(StatusCodeView, _super);
|
||||
|
||||
function StatusCodeView() {
|
||||
return StatusCodeView.__super__.constructor.apply(this, arguments);
|
||||
_ref5 = StatusCodeView.__super__.constructor.apply(this, arguments);
|
||||
return _ref5;
|
||||
}
|
||||
|
||||
StatusCodeView.prototype.initialize = function() {};
|
||||
@@ -1737,11 +1887,11 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
})(Backbone.View);
|
||||
|
||||
ParameterView = (function(_super) {
|
||||
|
||||
__extends(ParameterView, _super);
|
||||
|
||||
function ParameterView() {
|
||||
return ParameterView.__super__.constructor.apply(this, arguments);
|
||||
_ref6 = ParameterView.__super__.constructor.apply(this, arguments);
|
||||
return _ref6;
|
||||
}
|
||||
|
||||
ParameterView.prototype.initialize = function() {};
|
||||
@@ -1818,11 +1968,11 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
})(Backbone.View);
|
||||
|
||||
SignatureView = (function(_super) {
|
||||
|
||||
__extends(SignatureView, _super);
|
||||
|
||||
function SignatureView() {
|
||||
return SignatureView.__super__.constructor.apply(this, arguments);
|
||||
_ref7 = SignatureView.__super__.constructor.apply(this, arguments);
|
||||
return _ref7;
|
||||
}
|
||||
|
||||
SignatureView.prototype.events = {
|
||||
@@ -1887,11 +2037,11 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
})(Backbone.View);
|
||||
|
||||
ContentTypeView = (function(_super) {
|
||||
|
||||
__extends(ContentTypeView, _super);
|
||||
|
||||
function ContentTypeView() {
|
||||
return ContentTypeView.__super__.constructor.apply(this, arguments);
|
||||
_ref8 = ContentTypeView.__super__.constructor.apply(this, arguments);
|
||||
return _ref8;
|
||||
}
|
||||
|
||||
ContentTypeView.prototype.initialize = function() {};
|
||||
@@ -1913,11 +2063,11 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
})(Backbone.View);
|
||||
|
||||
ResponseContentTypeView = (function(_super) {
|
||||
|
||||
__extends(ResponseContentTypeView, _super);
|
||||
|
||||
function ResponseContentTypeView() {
|
||||
return ResponseContentTypeView.__super__.constructor.apply(this, arguments);
|
||||
_ref9 = ResponseContentTypeView.__super__.constructor.apply(this, arguments);
|
||||
return _ref9;
|
||||
}
|
||||
|
||||
ResponseContentTypeView.prototype.initialize = function() {};
|
||||
@@ -1939,11 +2089,11 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
||||
})(Backbone.View);
|
||||
|
||||
ParameterContentTypeView = (function(_super) {
|
||||
|
||||
__extends(ParameterContentTypeView, _super);
|
||||
|
||||
function ParameterContentTypeView() {
|
||||
return ParameterContentTypeView.__super__.constructor.apply(this, arguments);
|
||||
_ref10 = ParameterContentTypeView.__super__.constructor.apply(this, arguments);
|
||||
return _ref10;
|
||||
}
|
||||
|
||||
ParameterContentTypeView.prototype.initialize = function() {};
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+65
-42
@@ -1,10 +1,9 @@
|
||||
// Generated by CoffeeScript 1.4.0
|
||||
// Generated by CoffeeScript 1.6.3
|
||||
(function() {
|
||||
var ApiKeyAuthorization, SwaggerApi, SwaggerAuthorizations, SwaggerHttp, SwaggerModel, SwaggerModelProperty, SwaggerOperation, SwaggerRequest, SwaggerResource,
|
||||
var ApiKeyAuthorization, PasswordAuthorization, SwaggerApi, SwaggerAuthorizations, SwaggerHttp, SwaggerModel, SwaggerModelProperty, SwaggerOperation, SwaggerRequest, SwaggerResource,
|
||||
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
|
||||
|
||||
SwaggerApi = (function() {
|
||||
|
||||
SwaggerApi.prototype.url = "http://api.wordnik.com/v4/resources.json";
|
||||
|
||||
SwaggerApi.prototype.debug = false;
|
||||
@@ -55,12 +54,12 @@
|
||||
error: function(response) {
|
||||
if (_this.url.substring(0, 4) !== 'http') {
|
||||
return _this.fail('Please specify the protocol for ' + _this.url);
|
||||
} else if (error.status === 0) {
|
||||
} else if (response.status === 0) {
|
||||
return _this.fail('Can\'t read from server. It may not have the appropriate access-control-origin settings.');
|
||||
} else if (error.status === 404) {
|
||||
} else if (response.status === 404) {
|
||||
return _this.fail('Can\'t read swagger JSON from ' + _this.url);
|
||||
} else {
|
||||
return _this.fail(error.status + ' : ' + error.statusText + ' ' + _this.url);
|
||||
return _this.fail(response.status + ' : ' + response.statusText + ' ' + _this.url);
|
||||
}
|
||||
},
|
||||
response: function(rawResponse) {
|
||||
@@ -94,6 +93,7 @@
|
||||
this.apis = {};
|
||||
this.apisArray = [];
|
||||
this.produces = response.produces;
|
||||
this.authSchemes = response.authorizations;
|
||||
if (response.info != null) {
|
||||
this.info = response.info;
|
||||
}
|
||||
@@ -109,6 +109,13 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
if (response.basePath) {
|
||||
this.basePath = response.basePath;
|
||||
} else if (this.url.indexOf('?') > 0) {
|
||||
this.basePath = this.url.substring(0, this.url.lastIndexOf('?'));
|
||||
} else {
|
||||
this.basePath = this.url;
|
||||
}
|
||||
if (isApi) {
|
||||
newName = response.resourcePath.replace(/\//g, '');
|
||||
this.resourcePath = response.resourcePath;
|
||||
@@ -116,13 +123,6 @@
|
||||
this.apis[newName] = res;
|
||||
this.apisArray.push(res);
|
||||
} else {
|
||||
if (response.basePath) {
|
||||
this.basePath = response.basePath;
|
||||
} else if (this.url.indexOf('?') > 0) {
|
||||
this.basePath = this.url.substring(0, this.url.lastIndexOf('?'));
|
||||
} else {
|
||||
this.basePath = this.url;
|
||||
}
|
||||
_ref2 = response.apis;
|
||||
for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
|
||||
resource = _ref2[_k];
|
||||
@@ -161,6 +161,13 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
if (response.basePath) {
|
||||
this.basePath = response.basePath;
|
||||
} else if (this.url.indexOf('?') > 0) {
|
||||
this.basePath = this.url.substring(0, this.url.lastIndexOf('?'));
|
||||
} else {
|
||||
this.basePath = this.url;
|
||||
}
|
||||
if (isApi) {
|
||||
newName = response.resourcePath.replace(/\//g, '');
|
||||
this.resourcePath = response.resourcePath;
|
||||
@@ -168,13 +175,6 @@
|
||||
this.apis[newName] = res;
|
||||
this.apisArray.push(res);
|
||||
} else {
|
||||
if (response.basePath) {
|
||||
this.basePath = response.basePath;
|
||||
} else if (this.url.indexOf('?') > 0) {
|
||||
this.basePath = this.url.substring(0, this.url.lastIndexOf('?'));
|
||||
} else {
|
||||
this.basePath = this.url;
|
||||
}
|
||||
_ref2 = response.apis;
|
||||
for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
|
||||
resource = _ref2[_k];
|
||||
@@ -221,7 +221,7 @@
|
||||
for (resource_name in _ref) {
|
||||
resource = _ref[resource_name];
|
||||
for (modelName in resource.models) {
|
||||
if (!(this.models[modelName] != null)) {
|
||||
if (this.models[modelName] == null) {
|
||||
this.models[modelName] = resource.models[modelName];
|
||||
this.modelsArray.push(resource.models[modelName]);
|
||||
}
|
||||
@@ -261,7 +261,6 @@
|
||||
})();
|
||||
|
||||
SwaggerResource = (function() {
|
||||
|
||||
SwaggerResource.prototype.api = null;
|
||||
|
||||
SwaggerResource.prototype.produces = null;
|
||||
@@ -302,7 +301,7 @@
|
||||
headers: {},
|
||||
on: {
|
||||
error: function(response) {
|
||||
return _this.api.fail("Unable to read api '" + _this.name + "' from path " + _this.url + " (server returned " + error.statusText + ")");
|
||||
return _this.api.fail("Unable to read api '" + _this.name + "' from path " + _this.url + " (server returned " + response.statusText + ")");
|
||||
},
|
||||
response: function(rawResponse) {
|
||||
var response;
|
||||
@@ -350,7 +349,7 @@
|
||||
var model, modelName, swaggerModel, _i, _len, _ref, _results;
|
||||
if (models != null) {
|
||||
for (modelName in models) {
|
||||
if (!(this.models[modelName] != null)) {
|
||||
if (this.models[modelName] == null) {
|
||||
swaggerModel = new SwaggerModel(modelName, models[modelName]);
|
||||
this.modelsArray.push(swaggerModel);
|
||||
this.models[modelName] = swaggerModel;
|
||||
@@ -367,7 +366,7 @@
|
||||
};
|
||||
|
||||
SwaggerResource.prototype.addOperations = function(resource_path, ops, consumes, produces) {
|
||||
var method, o, op, ref, responseMessages, type, _i, _len, _results;
|
||||
var method, o, op, r, ref, responseMessages, type, _i, _j, _len, _len1, _results;
|
||||
if (ops) {
|
||||
_results = [];
|
||||
for (_i = 0, _len = ops.length; _i < _len; _i++) {
|
||||
@@ -402,6 +401,11 @@
|
||||
}
|
||||
if (o.errorResponses) {
|
||||
responseMessages = o.errorResponses;
|
||||
for (_j = 0, _len1 = responseMessages.length; _j < _len1; _j++) {
|
||||
r = responseMessages[_j];
|
||||
r.message = r.reason;
|
||||
r.reason = null;
|
||||
}
|
||||
}
|
||||
o.nickname = this.sanitize(o.nickname);
|
||||
op = new SwaggerOperation(o.nickname, resource_path, method, o.parameters, o.summary, o.notes, type, responseMessages, this, consumes, produces);
|
||||
@@ -443,20 +447,20 @@
|
||||
})();
|
||||
|
||||
SwaggerModel = (function() {
|
||||
|
||||
function SwaggerModel(modelName, obj) {
|
||||
var propertyName, value;
|
||||
var prop, propertyName, value;
|
||||
this.name = obj.id != null ? obj.id : modelName;
|
||||
this.properties = [];
|
||||
for (propertyName in obj.properties) {
|
||||
if (obj["enum"] != null) {
|
||||
for (value in obj["enum"]) {
|
||||
if (propertyName === value) {
|
||||
if (obj.required != null) {
|
||||
for (value in obj.required) {
|
||||
if (propertyName === obj.required[value]) {
|
||||
obj.properties[propertyName].required = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
this.properties.push(new SwaggerModelProperty(propertyName, obj.properties[propertyName]));
|
||||
prop = new SwaggerModelProperty(propertyName, obj.properties[propertyName]);
|
||||
this.properties.push(prop);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -508,7 +512,6 @@
|
||||
|
||||
SwaggerModel.prototype.createJSONSample = function(modelsToIgnore) {
|
||||
var prop, result, _i, _len, _ref;
|
||||
console.log("creating json sample for " + this);
|
||||
result = {};
|
||||
modelsToIgnore = modelsToIgnore || [];
|
||||
modelsToIgnore.push(this.name);
|
||||
@@ -526,15 +529,12 @@
|
||||
})();
|
||||
|
||||
SwaggerModelProperty = (function() {
|
||||
|
||||
function SwaggerModelProperty(name, obj) {
|
||||
this.name = name;
|
||||
this.dataType = obj.type || obj.dataType || obj["$ref"];
|
||||
console.log(this.name + " has data type " + this.dataType);
|
||||
this.isCollection = this.dataType && (this.dataType.toLowerCase() === 'array' || this.dataType.toLowerCase() === 'list' || this.dataType.toLowerCase() === 'set');
|
||||
this.descr = obj.description;
|
||||
this.required = obj.required;
|
||||
console.log(this);
|
||||
if (obj.items != null) {
|
||||
if (obj.items.type != null) {
|
||||
this.refDataType = obj.items.type;
|
||||
@@ -551,6 +551,13 @@
|
||||
this.valuesString = "'" + this.values.join("' or '") + "'";
|
||||
}
|
||||
}
|
||||
if (obj["enum"] != null) {
|
||||
this.valueType = "string";
|
||||
this.values = obj["enum"];
|
||||
if (this.values != null) {
|
||||
this.valueString = "'" + this.values.join("' or '") + "'";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SwaggerModelProperty.prototype.getSampleValue = function(modelsToIgnore) {
|
||||
@@ -593,7 +600,6 @@
|
||||
})();
|
||||
|
||||
SwaggerOperation = (function() {
|
||||
|
||||
function SwaggerOperation(nickname, path, method, parameters, summary, notes, type, responseMessages, resource, consumes, produces) {
|
||||
var parameter, v, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _ref3,
|
||||
_this = this;
|
||||
@@ -609,7 +615,6 @@
|
||||
this.consumes = consumes;
|
||||
this.produces = produces;
|
||||
this["do"] = __bind(this["do"], this);
|
||||
|
||||
if (this.nickname == null) {
|
||||
this.resource.api.fail("SwaggerOperations must have a nickname.");
|
||||
}
|
||||
@@ -623,7 +628,6 @@
|
||||
this.method = this.method.toLowerCase();
|
||||
this.isGetMethod = this.method === "get";
|
||||
this.resourceName = this.resource.name;
|
||||
console.log("model type: " + type);
|
||||
if (((_ref = this.type) != null ? _ref.toLowerCase() : void 0) === 'void') {
|
||||
this.type = void 0;
|
||||
}
|
||||
@@ -910,7 +914,6 @@
|
||||
})();
|
||||
|
||||
SwaggerRequest = (function() {
|
||||
|
||||
function SwaggerRequest(type, url, params, opts, successCallback, errorCallback, operation, execution) {
|
||||
var body, e, fields, headers, key, myHeaders, name, obj, param, parent, possibleParams, requestContentType, responseContentType, urlEncoded, value, values,
|
||||
_this = this;
|
||||
@@ -1101,7 +1104,6 @@
|
||||
})();
|
||||
|
||||
SwaggerHttp = (function() {
|
||||
|
||||
SwaggerHttp.prototype.Shred = null;
|
||||
|
||||
SwaggerHttp.prototype.shred = null;
|
||||
@@ -1146,7 +1148,6 @@
|
||||
})();
|
||||
|
||||
SwaggerAuthorizations = (function() {
|
||||
|
||||
SwaggerAuthorizations.prototype.authz = null;
|
||||
|
||||
function SwaggerAuthorizations() {
|
||||
@@ -1174,7 +1175,6 @@
|
||||
})();
|
||||
|
||||
ApiKeyAuthorization = (function() {
|
||||
|
||||
ApiKeyAuthorization.prototype.type = null;
|
||||
|
||||
ApiKeyAuthorization.prototype.name = null;
|
||||
@@ -1204,6 +1204,27 @@
|
||||
|
||||
})();
|
||||
|
||||
PasswordAuthorization = (function() {
|
||||
PasswordAuthorization.prototype.name = null;
|
||||
|
||||
PasswordAuthorization.prototype.username = null;
|
||||
|
||||
PasswordAuthorization.prototype.password = null;
|
||||
|
||||
function PasswordAuthorization(name, username, password) {
|
||||
this.name = name;
|
||||
this.username = username;
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
PasswordAuthorization.prototype.apply = function(obj) {
|
||||
return obj.headers["Authorization"] = "Basic " + btoa(this.username + ":" + this.password);
|
||||
};
|
||||
|
||||
return PasswordAuthorization;
|
||||
|
||||
})();
|
||||
|
||||
this.SwaggerApi = SwaggerApi;
|
||||
|
||||
this.SwaggerResource = SwaggerResource;
|
||||
@@ -1216,6 +1237,8 @@
|
||||
|
||||
this.ApiKeyAuthorization = ApiKeyAuthorization;
|
||||
|
||||
this.PasswordAuthorization = PasswordAuthorization;
|
||||
|
||||
this.authorizations = new SwaggerAuthorizations();
|
||||
|
||||
}).call(this);
|
||||
|
||||
+4
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "swagger-ui",
|
||||
"version": "2.0.1",
|
||||
"version": "2.0.3",
|
||||
"description": "Swagger UI is a dependency-free collection of HTML, Javascript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API",
|
||||
"scripts": {
|
||||
"build": "PATH=$PATH:./node_modules/.bin cake dist",
|
||||
@@ -19,6 +19,8 @@
|
||||
"readmeFilename": "README.md",
|
||||
"dependencies": {
|
||||
"coffee-script": "~1.5.0",
|
||||
"handlebars": "~1.0.10"
|
||||
"swagger-client": "~2.0",
|
||||
"handlebars": "~1.0.10",
|
||||
"less": "~1.4.2"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
class OperationView extends Backbone.View
|
||||
invocationUrl: null
|
||||
|
||||
events: {
|
||||
'submit .sandbox' : 'submitOperation'
|
||||
'click .submit' : 'submitOperation'
|
||||
@@ -77,30 +79,117 @@ class OperationView extends Backbone.View
|
||||
if error_free
|
||||
map = {}
|
||||
opts = {parent: @}
|
||||
#for o in form.serializeArray()
|
||||
#if(o.value? && jQuery.trim(o.value).length > 0)
|
||||
#map[o.name] = o.value
|
||||
|
||||
isFileUpload = false
|
||||
|
||||
for o in form.find("input")
|
||||
if(o.value? && jQuery.trim(o.value).length > 0)
|
||||
map[o.name] = encodeURI(o.value)
|
||||
map[o.name] = o.value
|
||||
if o.type is "file"
|
||||
isFileUpload = true
|
||||
|
||||
for o in form.find("textarea")
|
||||
if(o.value? && jQuery.trim(o.value).length > 0)
|
||||
map["body"] = o.value
|
||||
|
||||
for o in form.find("select")
|
||||
if(o.value? && jQuery.trim(o.value).length > 0)
|
||||
map[o.name] = o.value
|
||||
for o in form.find("select")
|
||||
val = this.getSelectedValue o
|
||||
if(val? && jQuery.trim(val).length > 0)
|
||||
map[o.name] = val
|
||||
|
||||
opts.responseContentType = $("div select[name=responseContentType]", $(@el)).val()
|
||||
opts.requestContentType = $("div select[name=parameterContentType]", $(@el)).val()
|
||||
|
||||
@model.do(map, opts, @showCompleteStatus, @showErrorStatus, @)
|
||||
$(".response_throbber", $(@el)).show()
|
||||
if isFileUpload
|
||||
@handleFileUpload map, form
|
||||
else
|
||||
@model.do(map, opts, @showCompleteStatus, @showErrorStatus, @)
|
||||
|
||||
success: (response, parent) ->
|
||||
parent.showCompleteStatus response
|
||||
|
||||
handleFileUpload: (map, form) ->
|
||||
console.log "it's a file upload"
|
||||
for o in form.serializeArray()
|
||||
if(o.value? && jQuery.trim(o.value).length > 0)
|
||||
map[o.name] = o.value
|
||||
|
||||
# requires HTML5 compatible browser
|
||||
bodyParam = new FormData()
|
||||
|
||||
# add params
|
||||
for param in @model.parameters
|
||||
if param.paramType is 'form'
|
||||
bodyParam.append(param.name, map[param.name])
|
||||
|
||||
# headers in operation
|
||||
headerParams = {}
|
||||
for param in @model.parameters
|
||||
if param.paramType is 'header'
|
||||
headerParams[param.name] = map[param.name]
|
||||
|
||||
console.log headerParams
|
||||
|
||||
# add files
|
||||
$.each $('input[type~="file"]'), (i, el) ->
|
||||
bodyParam.append($(el).attr('name'), el.files[0])
|
||||
|
||||
console.log(bodyParam)
|
||||
|
||||
@invocationUrl =
|
||||
if @model.supportHeaderParams()
|
||||
headerParams = @model.getHeaderParams(map)
|
||||
@model.urlify(map, false)
|
||||
else
|
||||
@model.urlify(map, true)
|
||||
|
||||
$(".request_url", $(@el)).html "<pre>" + @invocationUrl + "</pre>"
|
||||
|
||||
obj =
|
||||
type: @model.method
|
||||
url: @invocationUrl
|
||||
headers: headerParams
|
||||
data: bodyParam
|
||||
dataType: 'json'
|
||||
contentType: false
|
||||
processData: false
|
||||
error: (data, textStatus, error) =>
|
||||
@showErrorStatus(@wrap(data), @)
|
||||
success: (data) =>
|
||||
@showResponse(data, @)
|
||||
complete: (data) =>
|
||||
@showCompleteStatus(@wrap(data), @)
|
||||
|
||||
# apply authorizations
|
||||
if window.authorizations
|
||||
window.authorizations.apply obj
|
||||
|
||||
jQuery.ajax(obj)
|
||||
false
|
||||
# end of file-upload nastiness
|
||||
|
||||
# wraps a jquery response as a shred response
|
||||
wrap: (data) ->
|
||||
o = {}
|
||||
o.content = {}
|
||||
o.content.data = data.responseText
|
||||
o.getHeaders = () => {"Content-Type": data.getResponseHeader("Content-Type")}
|
||||
o.request = {}
|
||||
o.request.url = @invocationUrl
|
||||
o.status = data.status
|
||||
o
|
||||
|
||||
getSelectedValue: (select) ->
|
||||
if !select.multiple
|
||||
select.value
|
||||
else
|
||||
options = []
|
||||
options.push opt.value for opt in select.options when opt.selected
|
||||
if options.length > 0
|
||||
options.join ","
|
||||
else
|
||||
null
|
||||
|
||||
# handler for hide response link
|
||||
hideResponse: (e) ->
|
||||
@@ -192,7 +281,7 @@ class OperationView extends Backbone.View
|
||||
if content == undefined
|
||||
code = $('<code />').text("no content")
|
||||
pre = $('<pre class="json" />').append(code)
|
||||
else if contentType.indexOf("application/json") == 0
|
||||
else if contentType.indexOf("application/json") == 0 || contentType.indexOf("application/hal+json") == 0
|
||||
code = $('<code />').text(JSON.stringify(JSON.parse(content), null, 2))
|
||||
pre = $('<pre class="json" />').append(code)
|
||||
else if contentType.indexOf("application/xml") == 0
|
||||
@@ -201,16 +290,18 @@ class OperationView extends Backbone.View
|
||||
else if contentType.indexOf("text/html") == 0
|
||||
code = $('<code />').html(content)
|
||||
pre = $('<pre class="xml" />').append(code)
|
||||
else if contentType.indexOf("image/") == 0
|
||||
pre = $('<img>').attr('src',data.request.url)
|
||||
else
|
||||
# don't know what to render!
|
||||
code = $('<code />').text(content)
|
||||
pre = $('<pre class="json" />').append(code)
|
||||
|
||||
response_body = pre
|
||||
$(".request_url").html "<pre>" + data.request.url + "</pre>"
|
||||
$(".request_url", $(@el)).html "<pre>" + data.request.url + "</pre>"
|
||||
$(".response_code", $(@el)).html "<pre>" + data.status + "</pre>"
|
||||
$(".response_body", $(@el)).html response_body
|
||||
$(".response_headers", $(@el)).html "<pre>" + JSON.stringify(data.getHeaders()) + "</pre>"
|
||||
$(".response_headers", $(@el)).html "<pre>" + JSON.stringify(data.getHeaders(), null, " ").replace(/\n/g, "<br>") + "</pre>"
|
||||
$(".response", $(@el)).slideDown()
|
||||
$(".response_hider", $(@el)).show()
|
||||
$(".response_throbber", $(@el)).hide()
|
||||
|
||||
@@ -2,6 +2,7 @@ class ResourceView extends Backbone.View
|
||||
initialize: ->
|
||||
|
||||
render: ->
|
||||
console.log @model.description
|
||||
$(@el).html(Handlebars.templates.resource(@model))
|
||||
|
||||
@number = 0
|
||||
|
||||
+1043
-1755
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,50 @@
|
||||
/* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 */
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||
article, aside, canvas, details, embed,
|
||||
figure, figcaption, footer, header, hgroup,
|
||||
menu, nav, output, ruby, section, summary,
|
||||
time, mark, audio, video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
/* HTML5 display-role reset for older browsers */
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
body {
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
ol, ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
blockquote, q {
|
||||
quotes: none;
|
||||
}
|
||||
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
@import 'src/main/less/reset.less';
|
||||
@import 'src/main/less/specs.less';
|
||||
|
||||
#header {
|
||||
background-color: #89bf04;
|
||||
padding: 14px;
|
||||
a#logo {
|
||||
font-size: 1.5em;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
background: transparent url(../images/logo_small.png) no-repeat left center;
|
||||
padding: 20px 0 20px 40px;
|
||||
color: white;
|
||||
}
|
||||
form#api_selector {
|
||||
display: block;
|
||||
clear: none;
|
||||
float: right;
|
||||
.input {
|
||||
display: block;
|
||||
clear: none;
|
||||
float: left;
|
||||
margin: 0 10px 0 0;
|
||||
input#input_apiKey {
|
||||
width: 200px;
|
||||
}
|
||||
input#input_baseUrl {
|
||||
width: 400px;
|
||||
}
|
||||
a#explore {
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
padding: 6px 8px;
|
||||
font-size: 0.9em;
|
||||
color: white;
|
||||
background-color: #547f00;
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
-o-border-radius: 4px;
|
||||
-ms-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
a#explore:hover {
|
||||
background-color: #547f00;
|
||||
}
|
||||
input {
|
||||
font-size: 0.9em;
|
||||
padding: 3px;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#content_message {
|
||||
margin: 10px 15px;
|
||||
font-style: italic;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
#message-bar {
|
||||
min-height: 30px;
|
||||
text-align: center;
|
||||
padding-top: 10px;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,16 +1,19 @@
|
||||
<td class='code'>{{name}}</td>
|
||||
<td>
|
||||
<select class='parameter' name='{{name}}'>
|
||||
<select {{#if allowMultiple}} multiple='multiple'{{/if}} class='parameter' name='{{name}}'>
|
||||
{{#if required}}
|
||||
{{else}}
|
||||
{{#if defaultValue}}
|
||||
{{else}}
|
||||
<option selected="" value=''></option>
|
||||
{{#if allowMultiple}}
|
||||
{{else}}
|
||||
<option selected="" value=''></option>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{#each allowableValues.descriptiveValues}}
|
||||
{{#if isDefault}}
|
||||
<option value='{{value}}'>{{value}} (default)</option>
|
||||
<option selected="" value='{{value}}'>{{value}} (default)</option>
|
||||
{{else}}
|
||||
<option value='{{value}}'>{{value}}</option>
|
||||
{{/if}}
|
||||
@@ -19,4 +22,4 @@
|
||||
</td>
|
||||
<td>{{{description}}}</td>
|
||||
<td>{{{paramType}}}</td>
|
||||
<td><span class="model-signature"></span></td>
|
||||
<td><span class="model-signature"></span></td>
|
||||
@@ -1,6 +1,6 @@
|
||||
<div class='heading'>
|
||||
<h2>
|
||||
<a href='#!/{{name}}' onclick="Docs.toggleEndpointListForResource('{{name}}');">{{name}}</a>
|
||||
<a href='#!/{{name}}' onclick="Docs.toggleEndpointListForResource('{{name}}');">{{name}}</a> {{#description}} : {{/description}}{{{description}}}
|
||||
</h2>
|
||||
<ul class='options'>
|
||||
<li>
|
||||
|
||||
Reference in New Issue
Block a user