add client-side support for "url part" method parameter fields
these are input elements that are marked to have their value added as another part or "sub-path" on the URL that will be used to run this REST method. this is _instead of_ tacking this element value on to the end of the query string after the '?'
This commit is contained in:
parent
0a0f55eb84
commit
e95335b130
|
@ -13,27 +13,65 @@ function isJsonResponse(xhr) {
|
||||||
return contentType.indexOf('application/json') !== -1;
|
return contentType.indexOf('application/json') !== -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getValueOf(element) {
|
||||||
|
if (element.prop('tagName') === 'INPUT' && element.attr('type') === 'checkbox')
|
||||||
|
return element.is(':checked') ? element.val() : element.data('unchecked-value');
|
||||||
|
else
|
||||||
|
return element.val();
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMethodParams(form) {
|
||||||
|
var params = {};
|
||||||
|
form.find('.form-control, input[type=checkbox]').filter('[data-fieldname]').each(function() {
|
||||||
|
var element = $(this);
|
||||||
|
var fieldName = element.data('fieldname');
|
||||||
|
var value = getValueOf(element);
|
||||||
|
|
||||||
|
if (value && value.length > 0)
|
||||||
|
params[fieldName] = value;
|
||||||
|
});
|
||||||
|
return params;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getAdditionalUrl(form) {
|
||||||
|
var urlParts = [];
|
||||||
|
form.find('.form-control, input[type=checkbox]').filter('[data-uri-path-order]').each(function() {
|
||||||
|
var element = $(this);
|
||||||
|
var order = parseInt(element.data('uri-path-order'));
|
||||||
|
var value = getValueOf(element);
|
||||||
|
|
||||||
|
if (value && value.length > 0)
|
||||||
|
urlParts.push({order: order, value: value});
|
||||||
|
});
|
||||||
|
|
||||||
|
urlParts.sort(function(a, b) {
|
||||||
|
if (a.order < b.order)
|
||||||
|
return -1;
|
||||||
|
else if (a.order > b.order)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
})
|
||||||
|
|
||||||
|
var urlPartStrings = [];
|
||||||
|
urlParts.forEach(function(value) {
|
||||||
|
urlPartStrings.push(value.value);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (urlPartStrings.length > 0)
|
||||||
|
return '/' + urlPartStrings.join('/');
|
||||||
|
else
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
$('form.api-form').submit(function(e) {
|
$('form.api-form').submit(function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
var form = $(this);
|
var form = $(this);
|
||||||
var fieldset = form.find('fieldset');
|
var fieldset = form.find('fieldset');
|
||||||
|
var params = getMethodParams(form)
|
||||||
var params = {};
|
var additionalUrl = getAdditionalUrl(form);
|
||||||
form.find('.form-control, input[type=checkbox]').filter('[data-fieldname]').each(function() {
|
|
||||||
var element = $(this);
|
|
||||||
var fieldName = element.data('fieldname');
|
|
||||||
|
|
||||||
var value;
|
|
||||||
if (element.prop('tagName') === 'INPUT' && element.attr('type') === 'checkbox')
|
|
||||||
value = element.is(':checked') ? element.val() : element.data('unchecked-value');
|
|
||||||
else
|
|
||||||
value = element.val();
|
|
||||||
|
|
||||||
if (value && value.length > 0)
|
|
||||||
params[fieldName] = value;
|
|
||||||
});
|
|
||||||
|
|
||||||
var textOutputContainer = form.siblings('pre.textOutputContainer');
|
var textOutputContainer = form.siblings('pre.textOutputContainer');
|
||||||
var htmlOutputContainer = form.siblings('div.htmlOutputContainer');
|
var htmlOutputContainer = form.siblings('div.htmlOutputContainer');
|
||||||
|
@ -41,7 +79,7 @@ $(document).ready(function() {
|
||||||
var methodCallDisplay = form.siblings('div.methodCallDisplay');
|
var methodCallDisplay = form.siblings('div.methodCallDisplay');
|
||||||
var methodCallLink = methodCallDisplay.find('a.url');
|
var methodCallLink = methodCallDisplay.find('a.url');
|
||||||
|
|
||||||
var apiEndpoint = form.data('api-endpoint');
|
var apiEndpoint = form.data('api-endpoint') + additionalUrl;
|
||||||
|
|
||||||
textOutputContainer.text('');
|
textOutputContainer.text('');
|
||||||
htmlOutputContainer.html('');
|
htmlOutputContainer.html('');
|
||||||
|
|
Reference in a new issue