6 var initDynamic = function() {
\r
8 $(".sample-request-send").off("click");
\r
9 $(".sample-request-send").on("click", function(e) {
\r
11 var $root = $(this).parents("article");
\r
12 var group = $root.data("group");
\r
13 var name = $root.data("name");
\r
14 var version = $root.data("version");
\r
15 sendSampleRequest(group, name, version, $(this).data("sample-request-type"));
\r
19 $(".sample-request-clear").off("click");
\r
20 $(".sample-request-clear").on("click", function(e) {
\r
22 var $root = $(this).parents("article");
\r
23 var group = $root.data("group");
\r
24 var name = $root.data("name");
\r
25 var version = $root.data("version");
\r
26 clearSampleRequest(group, name, version);
\r
30 function sendSampleRequest(group, name, version, type)
\r
32 var $root = $('article[data-group="' + group + '"][data-name="' + name + '"][data-version="' + version + '"]');
\r
36 $root.find(".sample-request-header:checked").each(function(i, element) {
\r
37 var group = $(element).data("sample-request-header-group-id");
\r
38 $root.find("[data-sample-request-header-group=\"" + group + "\"]").each(function(i, element) {
\r
39 var key = $(element).data("sample-request-header-name");
\r
40 var value = element.value;
\r
41 if ( ! element.optional && element.defaultValue !== '') {
\r
42 value = element.defaultValue;
\r
44 header[key] = value;
\r
48 // create JSON dictionary of parameters
\r
51 $root.find(".sample-request-param:checked").each(function(i, element) {
\r
52 var group = $(element).data("sample-request-param-group-id");
\r
53 $root.find("[data-sample-request-param-group=\"" + group + "\"]").not(function(){
\r
54 return $(this).val() == "" && $(this).is("[data-sample-request-param-optional='true']");
\r
55 }).each(function(i, element) {
\r
56 var key = $(element).data("sample-request-param-name");
\r
57 var value = element.value;
\r
58 if ( ! element.optional && element.defaultValue !== '') {
\r
59 value = element.defaultValue;
\r
62 paramType[key] = $(element).next().text();
\r
66 // grab user-inputted URL
\r
67 var url = $root.find(".sample-request-url").val();
\r
69 // Insert url parameter
\r
70 var pattern = pathToRegexp(url, null);
\r
71 var matches = pattern.exec(url);
\r
72 for (var i = 1; i < matches.length; i++) {
\r
73 var key = matches[i].substr(1);
\r
74 if (param[key] !== undefined) {
\r
75 url = url.replace(matches[i], encodeURIComponent(param[key]));
\r
77 // remove URL parameters from list
\r
82 $root.find(".sample-request-response").fadeTo(250, 1);
\r
83 $root.find(".sample-request-response-json").html("Loading...");
\r
86 _.each( param, function( val, key ) {
\r
87 var t = paramType[ key ].toLowerCase();
\r
88 if ( t === 'object' || t === 'array' ) {
\r
90 param[ key ] = JSON.parse( val );
\r
96 // send AJAX request, catch success or error callback
\r
101 type : type.toUpperCase(),
\r
102 success : displaySuccess,
\r
103 error : displayError
\r
106 $.ajax(ajaxRequest);
\r
109 function displaySuccess(data, status, jqXHR) {
\r
112 jsonResponse = JSON.parse(jqXHR.responseText);
\r
113 jsonResponse = JSON.stringify(jsonResponse, null, 4);
\r
115 jsonResponse = data;
\r
117 $root.find(".sample-request-response-json").html(jsonResponse);
\r
118 refreshScrollSpy();
\r
121 function displayError(jqXHR, textStatus, error) {
\r
122 var message = "Error " + jqXHR.status + ": " + error;
\r
125 jsonResponse = JSON.parse(jqXHR.responseText);
\r
126 jsonResponse = JSON.stringify(jsonResponse, null, 4);
\r
128 jsonResponse = escape(jqXHR.responseText);
\r
132 message += "<br>" + jsonResponse;
\r
134 // flicker on previous error to make clear that there is a new response
\r
135 if($root.find(".sample-request-response").is(":visible"))
\r
136 $root.find(".sample-request-response").fadeTo(1, 0.1);
\r
138 $root.find(".sample-request-response").fadeTo(250, 1);
\r
139 $root.find(".sample-request-response-json").html(message);
\r
140 refreshScrollSpy();
\r
144 function clearSampleRequest(group, name, version)
\r
146 var $root = $('article[data-group="' + group + '"][data-name="' + name + '"][data-version="' + version + '"]');
\r
148 // hide sample response
\r
149 $root.find(".sample-request-response-json").html("");
\r
150 $root.find(".sample-request-response").hide();
\r
152 // reset value of parameters
\r
153 $root.find(".sample-request-param").each(function(i, element) {
\r
154 element.value = "";
\r
157 // restore default URL
\r
158 var $urlElement = $root.find(".sample-request-url");
\r
159 $urlElement.val($urlElement.prop("defaultValue"));
\r
161 refreshScrollSpy();
\r
164 function refreshScrollSpy()
\r
166 $('[data-spy="scroll"]').each(function () {
\r
167 $(this).scrollspy("refresh");
\r
171 function escapeHtml(str) {
\r
172 var div = document.createElement("div");
\r
173 div.appendChild(document.createTextNode(str));
\r
174 return div.innerHTML;
\r
181 initDynamic: initDynamic
\r