|
|
|
@ -1,187 +1,187 @@
|
|
|
|
|
$(function() {
|
|
|
|
|
|
|
|
|
|
// Helper function for vertically aligning DOM elements
|
|
|
|
|
// http://www.seodenver.com/simple-vertical-align-plugin-for-jquery/
|
|
|
|
|
$.fn.vAlign = function() {
|
|
|
|
|
return this.each(function(i){
|
|
|
|
|
var ah = $(this).height();
|
|
|
|
|
var ph = $(this).parent().height();
|
|
|
|
|
var mh = (ph - ah) / 2;
|
|
|
|
|
$(this).css('margin-top', mh);
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
$.fn.stretchFormtasticInputWidthToParent = function() {
|
|
|
|
|
return this.each(function(i){
|
|
|
|
|
var p_width = $(this).closest("form").innerWidth();
|
|
|
|
|
var p_padding = parseInt($(this).closest("form").css('padding-left') ,10) + parseInt($(this).closest("form").css('padding-right'), 10);
|
|
|
|
|
var this_padding = parseInt($(this).css('padding-left'), 10) + parseInt($(this).css('padding-right'), 10);
|
|
|
|
|
$(this).css('width', p_width - p_padding - this_padding);
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
$('form.formtastic li.string input, form.formtastic textarea').stretchFormtasticInputWidthToParent();
|
|
|
|
|
|
|
|
|
|
// Vertically center these paragraphs
|
|
|
|
|
// Parent may need a min-height for this to work..
|
|
|
|
|
$('ul.downplayed li div.content p').vAlign();
|
|
|
|
|
|
|
|
|
|
// When a sandbox form is submitted..
|
|
|
|
|
$("form.sandbox").submit(function(){
|
|
|
|
|
|
|
|
|
|
var error_free = true;
|
|
|
|
|
|
|
|
|
|
// Cycle through the forms required inputs
|
|
|
|
|
$(this).find("input.required").each(function() {
|
|
|
|
|
|
|
|
|
|
// Remove any existing error styles from the input
|
|
|
|
|
$(this).removeClass('error');
|
|
|
|
|
|
|
|
|
|
// Tack the error style on if the input is empty..
|
|
|
|
|
if ($(this).val() == '') {
|
|
|
|
|
$(this).addClass('error');
|
|
|
|
|
$(this).wiggle();
|
|
|
|
|
error_free = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return error_free;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
function clippyCopiedCallback(a) {
|
|
|
|
|
$('#api_key_copied').fadeIn().delay(1000).fadeOut();
|
|
|
|
|
|
|
|
|
|
// var b = $("#clippy_tooltip_" + a);
|
|
|
|
|
// b.length != 0 && (b.attr("title", "copied!").trigger("tipsy.reload"), setTimeout(function() {
|
|
|
|
|
// b.attr("title", "copy to clipboard")
|
|
|
|
|
// },
|
|
|
|
|
// 500))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Logging function that accounts for browsers that don't have window.console
|
|
|
|
|
function log() {
|
|
|
|
|
if (window.console) console.log.apply(console,arguments);
|
|
|
|
|
}
|
|
|
|
|
// Handle browsers that do console incorrectly (IE9 and below, see http://stackoverflow.com/a/5539378/7913)
|
|
|
|
|
if (Function.prototype.bind && console && typeof console.log == "object") {
|
|
|
|
|
[
|
|
|
|
|
"log","info","warn","error","assert","dir","clear","profile","profileEnd"
|
|
|
|
|
].forEach(function (method) {
|
|
|
|
|
console[method] = this.bind(console[method], console);
|
|
|
|
|
}, Function.prototype.call);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var Docs = {
|
|
|
|
|
|
|
|
|
|
shebang: function() {
|
|
|
|
|
|
|
|
|
|
// If shebang has an operation nickname in it..
|
|
|
|
|
// e.g. /docs/#!/words/get_search
|
|
|
|
|
var fragments = $.param.fragment().split('/');
|
|
|
|
|
fragments.shift(); // get rid of the bang
|
|
|
|
|
|
|
|
|
|
switch (fragments.length) {
|
|
|
|
|
case 1:
|
|
|
|
|
// Expand all operations for the resource and scroll to it
|
|
|
|
|
// log('shebang resource:' + fragments[0]);
|
|
|
|
|
var dom_id = 'resource_' + fragments[0];
|
|
|
|
|
|
|
|
|
|
Docs.expandEndpointListForResource(fragments[0]);
|
|
|
|
|
$("#"+dom_id).slideto({highlight: false});
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
// Refer to the endpoint DOM element, e.g. #words_get_search
|
|
|
|
|
// log('shebang endpoint: ' + fragments.join('_'));
|
|
|
|
|
|
|
|
|
|
// Expand Resource
|
|
|
|
|
Docs.expandEndpointListForResource(fragments[0]);
|
|
|
|
|
$("#"+dom_id).slideto({highlight: false});
|
|
|
|
|
|
|
|
|
|
// Expand operation
|
|
|
|
|
var li_dom_id = fragments.join('_');
|
|
|
|
|
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));
|
|
|
|
|
$('#'+li_dom_id).slideto({highlight: false});
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
toggleEndpointListForResource: function(resource) {
|
|
|
|
|
var elem = $('li#resource_' + Docs.escapeResourceName(resource) + ' ul.endpoints');
|
|
|
|
|
if (elem.is(':visible')) {
|
|
|
|
|
Docs.collapseEndpointListForResource(resource);
|
|
|
|
|
} else {
|
|
|
|
|
Docs.expandEndpointListForResource(resource);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Expand resource
|
|
|
|
|
expandEndpointListForResource: function(resource) {
|
|
|
|
|
var resource = Docs.escapeResourceName(resource);
|
|
|
|
|
if (resource == '') {
|
|
|
|
|
$('.resource ul.endpoints').slideDown();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$('li#resource_' + resource).addClass('active');
|
|
|
|
|
|
|
|
|
|
var elem = $('li#resource_' + resource + ' ul.endpoints');
|
|
|
|
|
elem.slideDown();
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Collapse resource and mark as explicitly closed
|
|
|
|
|
collapseEndpointListForResource: function(resource) {
|
|
|
|
|
var resource = Docs.escapeResourceName(resource);
|
|
|
|
|
$('li#resource_' + resource).removeClass('active');
|
|
|
|
|
|
|
|
|
|
var elem = $('li#resource_' + resource + ' ul.endpoints');
|
|
|
|
|
elem.slideUp();
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
expandOperationsForResource: function(resource) {
|
|
|
|
|
// Make sure the resource container is open..
|
|
|
|
|
Docs.expandEndpointListForResource(resource);
|
|
|
|
|
|
|
|
|
|
if (resource == '') {
|
|
|
|
|
$('.resource ul.endpoints li.operation div.content').slideDown();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$('li#resource_' + Docs.escapeResourceName(resource) + ' li.operation div.content').each(function() {
|
|
|
|
|
Docs.expandOperation($(this));
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
collapseOperationsForResource: function(resource) {
|
|
|
|
|
// Make sure the resource container is open..
|
|
|
|
|
Docs.expandEndpointListForResource(resource);
|
|
|
|
|
|
|
|
|
|
$('li#resource_' + Docs.escapeResourceName(resource) + ' li.operation div.content').each(function() {
|
|
|
|
|
Docs.collapseOperation($(this));
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
escapeResourceName: function(resource) {
|
|
|
|
|
return resource.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]\^`{|}~]/g, "\\$&");
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
expandOperation: function(elem) {
|
|
|
|
|
elem.slideDown();
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
collapseOperation: function(elem) {
|
|
|
|
|
elem.slideUp();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
$(function() {
|
|
|
|
|
|
|
|
|
|
// Helper function for vertically aligning DOM elements
|
|
|
|
|
// http://www.seodenver.com/simple-vertical-align-plugin-for-jquery/
|
|
|
|
|
$.fn.vAlign = function() {
|
|
|
|
|
return this.each(function(i){
|
|
|
|
|
var ah = $(this).height();
|
|
|
|
|
var ph = $(this).parent().height();
|
|
|
|
|
var mh = (ph - ah) / 2;
|
|
|
|
|
$(this).css('margin-top', mh);
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
$.fn.stretchFormtasticInputWidthToParent = function() {
|
|
|
|
|
return this.each(function(i){
|
|
|
|
|
var p_width = $(this).closest("form").innerWidth();
|
|
|
|
|
var p_padding = parseInt($(this).closest("form").css('padding-left') ,10) + parseInt($(this).closest("form").css('padding-right'), 10);
|
|
|
|
|
var this_padding = parseInt($(this).css('padding-left'), 10) + parseInt($(this).css('padding-right'), 10);
|
|
|
|
|
$(this).css('width', p_width - p_padding - this_padding);
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
$('form.formtastic li.string input, form.formtastic textarea').stretchFormtasticInputWidthToParent();
|
|
|
|
|
|
|
|
|
|
// Vertically center these paragraphs
|
|
|
|
|
// Parent may need a min-height for this to work..
|
|
|
|
|
$('ul.downplayed li div.content p').vAlign();
|
|
|
|
|
|
|
|
|
|
// When a sandbox form is submitted..
|
|
|
|
|
$("form.sandbox").submit(function(){
|
|
|
|
|
|
|
|
|
|
var error_free = true;
|
|
|
|
|
|
|
|
|
|
// Cycle through the forms required inputs
|
|
|
|
|
$(this).find("input.required").each(function() {
|
|
|
|
|
|
|
|
|
|
// Remove any existing error styles from the input
|
|
|
|
|
$(this).removeClass('error');
|
|
|
|
|
|
|
|
|
|
// Tack the error style on if the input is empty..
|
|
|
|
|
if ($(this).val() == '') {
|
|
|
|
|
$(this).addClass('error');
|
|
|
|
|
$(this).wiggle();
|
|
|
|
|
error_free = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return error_free;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
function clippyCopiedCallback(a) {
|
|
|
|
|
$('#api_key_copied').fadeIn().delay(1000).fadeOut();
|
|
|
|
|
|
|
|
|
|
// var b = $("#clippy_tooltip_" + a);
|
|
|
|
|
// b.length != 0 && (b.attr("title", "copied!").trigger("tipsy.reload"), setTimeout(function() {
|
|
|
|
|
// b.attr("title", "copy to clipboard")
|
|
|
|
|
// },
|
|
|
|
|
// 500))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Logging function that accounts for browsers that don't have window.console
|
|
|
|
|
function log() {
|
|
|
|
|
if (window.console) console.log.apply(console,arguments);
|
|
|
|
|
}
|
|
|
|
|
// Handle browsers that do console incorrectly (IE9 and below, see http://stackoverflow.com/a/5539378/7913)
|
|
|
|
|
if (Function.prototype.bind && console && typeof console.log == "object") {
|
|
|
|
|
[
|
|
|
|
|
"log","info","warn","error","assert","dir","clear","profile","profileEnd"
|
|
|
|
|
].forEach(function (method) {
|
|
|
|
|
console[method] = this.bind(console[method], console);
|
|
|
|
|
}, Function.prototype.call);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var Docs = {
|
|
|
|
|
|
|
|
|
|
shebang: function() {
|
|
|
|
|
|
|
|
|
|
// If shebang has an operation nickname in it..
|
|
|
|
|
// e.g. /docs/#!/words/get_search
|
|
|
|
|
var fragments = $.param.fragment().split('/');
|
|
|
|
|
fragments.shift(); // get rid of the bang
|
|
|
|
|
|
|
|
|
|
switch (fragments.length) {
|
|
|
|
|
case 1:
|
|
|
|
|
// Expand all operations for the resource and scroll to it
|
|
|
|
|
// log('shebang resource:' + fragments[0]);
|
|
|
|
|
var dom_id = 'resource_' + fragments[0];
|
|
|
|
|
|
|
|
|
|
Docs.expandEndpointListForResource(fragments[0]);
|
|
|
|
|
$("#"+dom_id).slideto({highlight: false});
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
// Refer to the endpoint DOM element, e.g. #words_get_search
|
|
|
|
|
// log('shebang endpoint: ' + fragments.join('_'));
|
|
|
|
|
|
|
|
|
|
// Expand Resource
|
|
|
|
|
Docs.expandEndpointListForResource(fragments[0]);
|
|
|
|
|
$("#"+dom_id).slideto({highlight: false});
|
|
|
|
|
|
|
|
|
|
// Expand operation
|
|
|
|
|
var li_dom_id = fragments.join('_');
|
|
|
|
|
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));
|
|
|
|
|
$('#'+li_dom_id).slideto({highlight: false});
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
toggleEndpointListForResource: function(resource) {
|
|
|
|
|
var elem = $('li#resource_' + Docs.escapeResourceName(resource) + ' ul.endpoints');
|
|
|
|
|
if (elem.is(':visible')) {
|
|
|
|
|
Docs.collapseEndpointListForResource(resource);
|
|
|
|
|
} else {
|
|
|
|
|
Docs.expandEndpointListForResource(resource);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Expand resource
|
|
|
|
|
expandEndpointListForResource: function(resource) {
|
|
|
|
|
var resource = Docs.escapeResourceName(resource);
|
|
|
|
|
if (resource == '') {
|
|
|
|
|
$('.resource ul.endpoints').slideDown();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$('li#resource_' + resource).addClass('active');
|
|
|
|
|
|
|
|
|
|
var elem = $('li#resource_' + resource + ' ul.endpoints');
|
|
|
|
|
elem.slideDown();
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Collapse resource and mark as explicitly closed
|
|
|
|
|
collapseEndpointListForResource: function(resource) {
|
|
|
|
|
var resource = Docs.escapeResourceName(resource);
|
|
|
|
|
$('li#resource_' + resource).removeClass('active');
|
|
|
|
|
|
|
|
|
|
var elem = $('li#resource_' + resource + ' ul.endpoints');
|
|
|
|
|
elem.slideUp();
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
expandOperationsForResource: function(resource) {
|
|
|
|
|
// Make sure the resource container is open..
|
|
|
|
|
Docs.expandEndpointListForResource(resource);
|
|
|
|
|
|
|
|
|
|
if (resource == '') {
|
|
|
|
|
$('.resource ul.endpoints li.operation div.content').slideDown();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$('li#resource_' + Docs.escapeResourceName(resource) + ' li.operation div.content').each(function() {
|
|
|
|
|
Docs.expandOperation($(this));
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
collapseOperationsForResource: function(resource) {
|
|
|
|
|
// Make sure the resource container is open..
|
|
|
|
|
Docs.expandEndpointListForResource(resource);
|
|
|
|
|
|
|
|
|
|
$('li#resource_' + Docs.escapeResourceName(resource) + ' li.operation div.content').each(function() {
|
|
|
|
|
Docs.collapseOperation($(this));
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
escapeResourceName: function(resource) {
|
|
|
|
|
return resource.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]\^`{|}~]/g, "\\$&");
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
expandOperation: function(elem) {
|
|
|
|
|
elem.slideDown();
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
collapseOperation: function(elem) {
|
|
|
|
|
elem.slideUp();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
(function() {
|
|
|
|
|
var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
|
|
|
|
|
templates['content_type'] = template(function (Handlebars,depth0,helpers,partials,data) {
|
|
|
|
@ -1281,10 +1281,8 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
SwaggerUi.prototype.buildUrl = function(base, url) {
|
|
|
|
|
var parts;
|
|
|
|
|
console.log("base is " + base);
|
|
|
|
|
parts = base.split("/");
|
|
|
|
|
base = parts[0] + "//" + parts[2];
|
|
|
|
|
base = base.substring(0,base.indexOf("/doc/"));
|
|
|
|
|
if (url.indexOf("/") === 0) {
|
|
|
|
|
return base + url;
|
|
|
|
|
} else {
|
|
|
|
|