[Phpmyadmin-git] [SCM] phpMyAdmin branch, master, updated. RELEASE_3_4_0BETA4-985-g701a668
Marc Delisle
lem9 at users.sourceforge.net
Wed Mar 23 12:47:34 CET 2011
The branch, master has been updated
via 701a668d354f8d6e8b47579a59feff4775dc820f (commit)
from 2636f3b18eaefe7cf204795a9f4e0f9d74735a8e (commit)
- Log -----------------------------------------------------------------
commit 701a668d354f8d6e8b47579a59feff4775dc820f
Author: Marc Delisle <marc at infomarc.info>
Date: Wed Mar 23 07:47:24 2011 -0400
For bug #3220370, generate UPDATE only for modified columns and avoid POSTing if not needed
-----------------------------------------------------------------------
Summary of changes:
js/sql.js | 228 ++++++++++++++++++++++++++++++++++---------------------------
1 files changed, 126 insertions(+), 102 deletions(-)
diff --git a/js/sql.js b/js/sql.js
index e06b622..9adfb62 100644
--- a/js/sql.js
+++ b/js/sql.js
@@ -778,6 +778,8 @@ $(document).ready(function() {
*/
var sql_query = 'UPDATE `' + window.parent.table + '` SET ';
+ var need_to_post = false;
+
$input_siblings.each(function() {
/** @lends jQuery */
/**
@@ -806,6 +808,7 @@ $(document).ready(function() {
if (is_null) {
sql_query += ' `' + field_name + "`=NULL , ";
+ need_to_post = true;
} else {
if($this_field.is(":not(.relation, .enum, .set)")) {
this_field_params[field_name] = $this_field.find('textarea').val();
@@ -834,7 +837,10 @@ $(document).ready(function() {
$.extend(relation_fields, this_field_params);
}
}
- sql_query += ' `' + field_name + "`='" + this_field_params[field_name].replace(/'/g, "''") + "' , ";
+ if (this_field_params[field_name] != $this_field.data('original_data')) {
+ sql_query += ' `' + field_name + "`='" + this_field_params[field_name].replace(/'/g, "''") + "' , ";
+ need_to_post = true;
+ }
}
})
@@ -852,11 +858,16 @@ $(document).ready(function() {
*/
var transform_fields_list = $.param(transform_fields);
- // Make the Ajax post after setting all parameters
- /**
- * @var post_params Object containing parameters for the POST request
- */
- var post_params = {'ajax_request' : true,
+ // if inline_edit is successful, we need to go back to default view
+ var $del_hide=$(this).parent();
+ var $chg_submit=$(this);
+
+ if (need_to_post) {
+ // Make the Ajax post after setting all parameters
+ /**
+ * @var post_params Object containing parameters for the POST request
+ */
+ var post_params = {'ajax_request' : true,
'sql_query' : sql_query,
'disp_direction' : disp_mode,
'token' : window.parent.token,
@@ -871,113 +882,126 @@ $(document).ready(function() {
'submit_type' : 'save'
};
- // if inline_edit is successful, we need to go back to default view
- var $del_hide=$(this).parent();
- var $chg_submit=$(this);
+ $.post('tbl_replace.php', post_params, function(data) {
+ if(data.success == true) {
+ PMA_ajaxShowMessage(data.message);
+ PMA_unInlineEditRow($del_hide, $chg_submit, $this_td, $input_siblings, data, disp_mode);
+ } else {
+ PMA_ajaxShowMessage(data.error);
+ };
+ }) // end $.post()
+ } else {
+ // no posting was done but still need to display the row
+ // in its previous format
+ PMA_unInlineEditRow($del_hide, $chg_submit, $this_td, $input_siblings, '', disp_mode);
+ }
+ }) // End After editing, clicking again should post data
+}, 'top.frame_content') // end $(document).ready()
- $.post('tbl_replace.php', post_params, function(data) {
- if(data.success == true) {
- // deleting the hide button if my query was successful
- // remove <br><br><a> tags
- for ( var i=0;i<=2;i++) { $del_hide.next().remove(); }
- if(disp_mode!='vertical'){
- $chg_submit.empty();
- $chg_submit.html('<span class="nowrap"></span>');
- $chg_submit.children('span.nowrap').text(PMA_messages['strInlineEdit']);
- }
- else {
- $chg_submit.children('span.nowrap').empty();
- $chg_submit.children('span.nowrap').append(data_vt);
- }
-
- PMA_ajaxShowMessage(data.message);
- // changing inline_edit_active to inline_edit_anchor
- $this_td.removeClass('inline_edit_active').addClass('inline_edit_anchor');
+/**
+ * Visually put back the row in the state it was before entering Inline edit
+ *
+ * (when called in the situation where no posting was done, the data
+ * parameter is empty)
+ */
+function PMA_unInlineEditRow($del_hide, $chg_submit, $this_td, $input_siblings, data, disp_mode) {
- // removing hover, marked and noclick classes
- $this_td.parent('tr').removeClass('noclick');
- if(disp_mode != 'vertical') {
- $this_td.parent('tr').removeClass('hover').find('td').removeClass('hover');
- } else {
- $this_td.parents('tbody').find('tr').find('td:eq(' + $this_td.index() + ')').removeClass('marked');
- }
+ // deleting the hide button
+ // remove <br><br><a> tags
+ for ( var i = 0; i <= 2; i++) {
+ $del_hide.next().remove();
+ }
+ if(disp_mode != 'vertical'){
+ $chg_submit.empty();
+ $chg_submit.html('<span class="nowrap"></span>');
+ $chg_submit.children('span.nowrap').text(PMA_messages['strInlineEdit']);
+ } else {
+ $chg_submit.children('span.nowrap').empty();
+ $chg_submit.children('span.nowrap').append(data_vt);
+ }
- $input_siblings.each(function() {
- // Inline edit post has been successful.
- $this_sibling = $(this);
+ // changing inline_edit_active to inline_edit_anchor
+ $this_td.removeClass('inline_edit_active').addClass('inline_edit_anchor');
- var is_null = $this_sibling.find('input:checkbox').is(':checked');
- if (is_null) {
- $this_sibling.html('NULL');
- $this_sibling.addClass('null');
- } else {
- $this_sibling.removeClass('null');
- if($this_sibling.is(':not(.relation, .enum, .set)')) {
- /**
- * @var new_html String containing value of the data field after edit
- */
- var new_html = $this_sibling.find('textarea').val();
-
- if($this_sibling.is('.transformed')) {
- var field_name = getFieldName($this_sibling, disp_mode);
- $.each(data.transformations, function(key, value) {
- if(key == field_name) {
- if($this_sibling.is('.text_plain, .application_octetstream')) {
- new_html = value;
- return false;
- }
- else {
- var new_value = $this_sibling.find('textarea').val();
- new_html = $(value).append(new_value);
- return false;
- }
- }
- })
- }
- }
- else {
- var new_html = '';
- var new_value = '';
- $test_element = $this_sibling.find('select');
- if ($test_element.length != 0) {
- new_value = $test_element.val();
- }
+ // removing hover, marked and noclick classes
+ $this_td.parent('tr').removeClass('noclick');
+ if(disp_mode != 'vertical') {
+ $this_td.parent('tr').removeClass('hover').find('td').removeClass('hover');
+ } else {
+ $this_td.parents('tbody').find('tr').find('td:eq(' + $this_td.index() + ')').removeClass('marked');
+ }
- $test_element = $this_sibling.find('span.curr_value');
- if ($test_element.length != 0) {
- new_value = $test_element.text();
- }
+ $input_siblings.each(function() {
+ // Inline edit post has been successful.
+ $this_sibling = $(this);
- if($this_sibling.is('.relation')) {
- var field_name = getFieldName($this_sibling, disp_mode);
- $.each(data.relations, function(key, value) {
- if(key == field_name) {
- new_html = $(value).append(new_value);
- return false;
- }
- })
- } else if ($this_sibling.is('.enum')) {
- new_html = new_value;
- } else if ($this_sibling.is('.set')) {
- if (new_value != null) {
- $.each(new_value, function(key, value) {
- new_html = new_html + value + ',';
- })
- new_html = new_html.substring(0, new_html.length-1);
+ var is_null = $this_sibling.find('input:checkbox').is(':checked');
+ if (is_null) {
+ $this_sibling.html('NULL');
+ $this_sibling.addClass('null');
+ } else {
+ $this_sibling.removeClass('null');
+ if($this_sibling.is(':not(.relation, .enum, .set)')) {
+ /**
+ * @var new_html String containing value of the data field after edit
+ */
+ var new_html = $this_sibling.find('textarea').val();
+
+ if($this_sibling.is('.transformed')) {
+ var field_name = getFieldName($this_sibling, disp_mode);
+ if (typeof data.transformations != 'undefined') {
+ $.each(data.transformations, function(key, value) {
+ if(key == field_name) {
+ if($this_sibling.is('.text_plain, .application_octetstream')) {
+ new_html = value;
+ return false;
+ } else {
+ var new_value = $this_sibling.find('textarea').val();
+ new_html = $(value).append(new_value);
+ return false;
}
}
- }
- $this_sibling.html(new_html);
+ })
}
- })
+ }
+ } else {
+ var new_html = '';
+ var new_value = '';
+ $test_element = $this_sibling.find('select');
+ if ($test_element.length != 0) {
+ new_value = $test_element.val();
+ }
+ $test_element = $this_sibling.find('span.curr_value');
+ if ($test_element.length != 0) {
+ new_value = $test_element.text();
+ }
+
+ if($this_sibling.is('.relation')) {
+ var field_name = getFieldName($this_sibling, disp_mode);
+ if (typeof data.relations != 'undefined') {
+ $.each(data.relations, function(key, value) {
+ if(key == field_name) {
+ new_html = $(value).append(new_value);
+ return false;
+ }
+ })
+ }
+ } else if ($this_sibling.is('.enum')) {
+ new_html = new_value;
+ } else if ($this_sibling.is('.set')) {
+ if (new_value != null) {
+ $.each(new_value, function(key, value) {
+ new_html = new_html + value + ',';
+ })
+ new_html = new_html.substring(0, new_html.length-1);
+ }
+ }
}
- else {
- PMA_ajaxShowMessage(data.error);
- };
- }) // end $.post()
- }) // End After editing, clicking again should post data
-}, 'top.frame_content') // end $(document).ready()
+ $this_sibling.html(new_html);
+ }
+ })
+}
/**
* Starting from some th, change the class of all td under it
hooks/post-receive
--
phpMyAdmin
More information about the Git
mailing list