Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpmyadmin/phpmyadmin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMadhura Jayaratne <madhura.cj@gmail.com>2015-04-29 10:26:53 +0300
committerMadhura Jayaratne <madhura.cj@gmail.com>2015-04-29 13:05:52 +0300
commit8cb82815c7a816d76d3169bbb21e537e62b1e127 (patch)
treeed6c9360ac826586fd8e8cb8d15b4c67d8a1d5c9 /js/functions.js
parentdda2fa1f7e3104fee51d77c412bd52b7f360b8c5 (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.js51
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'));