diff options
author | Madhura Jayaratne <madhura.cj@gmail.com> | 2015-04-29 10:26:53 +0300 |
---|---|---|
committer | Madhura Jayaratne <madhura.cj@gmail.com> | 2015-04-29 13:05:52 +0300 |
commit | 8cb82815c7a816d76d3169bbb21e537e62b1e127 (patch) | |
tree | ed6c9360ac826586fd8e8cb8d15b4c67d8a1d5c9 /js/functions.js | |
parent | dda2fa1f7e3104fee51d77c412bd52b7f360b8c5 (diff) |
rfe #1380 Support for Paramaters with raw SQL
Signed-off-by: Madhura Jayaratne <madhura.cj@gmail.com>
Diffstat (limited to 'js/functions.js')
-rw-r--r-- | js/functions.js | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/js/functions.js b/js/functions.js index 4b656d4518..dc070dc7d3 100644 --- a/js/functions.js +++ b/js/functions.js @@ -1107,6 +1107,44 @@ function insertValueQuery() } /** + * Updates the input fields for the parameters based on the query + */ +function updateQueryParameters() { + + if ($('#parameterized').is(':checked')) { + var query = codemirror_editor ? codemirror_editor.getValue() : $('#sqlquery').val(); + + var allParameters = query.match(/:[a-zA-Z0-9_]+/g); + var parameters = []; + // get unique parameters + if (allParameters) { + $.each(allParameters, function(i, parameter){ + if ($.inArray(parameter, parameters) === -1) { + parameters.push(parameter); + } + }); + } + + var $temp = $('<div />'); + $temp.append($('#parametersDiv').children()); + $('#parametersDiv').empty(); + + $.each(parameters, function (i, parameter) { + var paramName = parameter.substring(1); + var $param = $temp.find('#paramSpan_' + paramName ); + if (! $param.length) { + $param = $('<span class="parameter" id="paramSpan_' + paramName + '" />'); + $('<label for="param_' + paramName + '" />').text(parameter).appendTo($param); + $('<input type="text" name="parameters[' + parameter + ']" id="param_' + paramName + '" />').appendTo($param); + } + $('#parametersDiv').append($param); + }); + } else { + $('#parametersDiv').empty(); + } +} + +/** * Add a date/time picker to each element that needs it * (only when jquery-ui-timepicker-addon.js is loaded) */ @@ -1598,6 +1636,12 @@ AJAX.registerTeardown('functions.js', function () { $(document).off('click', "input#sql_query_edit_save"); $(document).off('click', "input#sql_query_edit_discard"); $('input.sqlbutton').unbind('click'); + if (codemirror_editor) { + codemirror_editor.off('blur'); + } else { + $(document).off('blur', '#sqlquery'); + } + $(document).off('change', '#parameterized'); $("#export_type").unbind('change'); $('#sqlquery').unbind('keydown'); $('#sql_query_edit').unbind('keydown'); @@ -1682,6 +1726,8 @@ AJAX.registerOnload('functions.js', function () { return false; }); + $(document).on('change', '#parameterized', updateQueryParameters); + $("#export_type").change(function () { if ($("#export_type").val() == 'svg') { $("#show_grid_opt").prop("disabled", true); @@ -4024,6 +4070,7 @@ AJAX.registerOnload('functions.js', function () { lineWrapping: true }); codemirror_editor.on("inputRead", codemirrorAutocompleteOnInputRead); + codemirror_editor.on("blur", updateQueryParameters); codemirror_editor.focus(); $(codemirror_editor.getWrapperElement()).bind( 'keydown', @@ -4031,7 +4078,9 @@ AJAX.registerOnload('functions.js', function () { ); } else { // without codemirror - $elm.focus().bind('keydown', catchKeypressesFromSqlTextboxes); + $elm.focus() + .bind('keydown', catchKeypressesFromSqlTextboxes) + .bind('blur', updateQueryParameters); } } PMA_highlightSQL($('body')); |