The branch, master has been updated
via d39a2309922e5646034262a37024b1bdb363a207 (commit)
from 14b9e4cfa3673f36ae02e508f164cd9bdf0a4a26 (commit)
- Log -----------------------------------------------------------------
commit d39a2309922e5646034262a37024b1bdb363a207
Author: asdfrede <asdfrede(a)users.sourceforge.net>
Date: Fri Dec 2 00:48:19 2011 +0000
Fixed bug #3408377 - Deleting table from the DB does not change the table counter
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 1 +
db_structure.php | 13 +++---
js/db_structure.js | 116 +++++++++++++++++++++++++++++++++++++++------------
js/functions.js | 3 +
js/messages.php | 10 ++++
tbl_create.php | 6 +-
6 files changed, 112 insertions(+), 37 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 45d46a5..bc69949 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -61,6 +61,7 @@ phpMyAdmin - ChangeLog
+ patch #3432835 [interface] Add useful intermediate pages to pageselector
+ [interface] Improved index editor
+ View editing via a generated ALTER VIEW
+- bug #3408377 [interface] Deleting table from the DB does not change the table counter
3.4.9.0 (not yet released)
- bug #3442028 [edit] Inline editing enum fields with null shows no dropdown
diff --git a/db_structure.php b/db_structure.php
index 16df6a7..aae36e6 100644
--- a/db_structure.php
+++ b/db_structure.php
@@ -14,6 +14,7 @@ $GLOBALS['js_include'][] = 'jquery/jquery-ui-1.8.16.custom.js';
$GLOBALS['js_include'][] = 'db_structure.js';
$GLOBALS['js_include'][] = 'tbl_change.js';
$GLOBALS['js_include'][] = 'jquery/timepicker.js';
+$GLOBALS['js_include'][] = 'jquery/jquery.sprintf.js';
/**
* Prepares the tables list if the user where not redirected to this script
@@ -244,8 +245,8 @@ foreach ($tables as $keyname => $each_table) {
if ($is_show_stats) {
if (isset($formatted_overhead)) {
$overhead = '<a href="tbl_structure.php?'
- . $tbl_url_query . '#showusage">' . $formatted_overhead
- . ' ' . $overhead_unit . '</a>' . "\n";
+ . $tbl_url_query . '#showusage"><span>' . $formatted_overhead
+ . '</span> <span class="unit">' . $overhead_unit . '</span></a>' . "\n";
unset($formatted_overhead);
$overhead_check .=
"document.getElementById('checkbox_tbl_" . ($i + 1) . "').checked = true;";
@@ -472,8 +473,8 @@ foreach ($tables as $keyname => $each_table) {
<?php if ($is_show_stats) { ?>
<td class="value tbl_size"><a
href="tbl_structure.php?<?php echo $tbl_url_query; ?>#showusage"
- ><?php echo $formatted_size . ' ' . $unit; ?></a></td>
- <td class="value"><?php echo $overhead; ?></td>
+ ><?php echo '<span>' . $formatted_size . '</span> <span class="unit">' . $unit . '</span>'; ?></a></td>
+ <td class="value tbl_overhead"><?php echo $overhead; ?></td>
<?php } // end if ?>
<?php } elseif ($table_is_view) { ?>
<td class="value">-</td>
@@ -502,7 +503,7 @@ if ($is_show_stats) {
</tbody>
<tbody id="tbl_summary_row">
<tr><th></th>
- <th align="center" nowrap="nowrap">
+ <th align="center" nowrap="nowrap" class="tbl_num">
<?php
// for blobstreaming - if the number of tables is 0, set tableReductionCount to 0
// (we don't want negative numbers here)
@@ -543,7 +544,7 @@ if (!($cfg['PropertiesNumColumns'] > 1)) {
if ($is_show_stats) {
?>
<th class="value tbl_size"><?php echo $sum_formatted . ' ' . $unit; ?></th>
- <th class="value"><?php echo $overhead_formatted . ' ' . $overhead_unit; ?></th>
+ <th class="value tbl_overhead"><?php echo $overhead_formatted . ' ' . $overhead_unit; ?></th>
<?php
}
?>
diff --git a/js/db_structure.js b/js/db_structure.js
index c00bd45..f9d9c13 100644
--- a/js/db_structure.js
+++ b/js/db_structure.js
@@ -20,35 +20,90 @@
/**
* Adjust number of rows and total size in the summary
- * when emptying or dropping a table
- *
- * @param jQuery object $this_anchor
+ * when truncating, creating, dropping or inserting into a table
*/
-function PMA_adjustTotals($this_anchor)
-{
- var $parent_tr = $this_anchor.closest('tr');
- var $rows_td = $parent_tr.find('.tbl_rows');
- var $size_td = $parent_tr.find('.tbl_size');
- var num_rows = parseInt($rows_td.text());
- // set number of rows to 0
- // (not really needed in case we are dropping the table)
- $rows_td.text('0');
- // set size to unknown (not sure how to get the exact
- // value here, as an empty InnoDB table would have a size)
- $size_td.text('-');
-
- // try to compute a new total row number
- if (! isNaN(num_rows)) {
- $total_rows_td = $('#tbl_summary_row').find('.tbl_rows');
- var total_rows = parseInt($total_rows_td.text());
- if (! isNaN(total_rows)) {
- $total_rows_td.text(total_rows - num_rows);
+function PMA_adjustTotals() {
+ var byteUnits = new Array(
+ PMA_messages['strB'],
+ PMA_messages['strKiB'],
+ PMA_messages['strMiB'],
+ PMA_messages['strGiB'],
+ PMA_messages['strTiB'],
+ PMA_messages['strPiB'],
+ PMA_messages['strEiB']
+ );
+ /**
+ * @var $allTr jQuery object that references all the rows in the list of tables
+ */
+ var $allTr = $("#tablesForm table.data tbody:first tr");
+ // New summary values for the table
+ var tableSum = $allTr.size();
+ var rowsSum = 0;
+ var sizeSum = 0;
+ var overheadSum = 0;
+
+ $allTr.each(function () {
+ var $this = $(this);
+ // Get the number of rows for this SQL table
+ var strRows = $this.find('.tbl_rows').text();
+ strRows = strRows.replace(/[,.]/g , '');
+ var intRow = parseInt(strRows, 10);
+ if (! isNaN(intRow)) {
+ rowsSum += intRow;
+ }
+ // Extract the size and overhead
+ var valSize = 0;
+ var valOverhead = 0;
+ var strSize = $.trim($this.find('.tbl_size span:not(.unit)').text());
+ var strSizeUnit = $.trim($this.find('.tbl_size span.unit').text());
+ var strOverhead = $.trim($this.find('.tbl_overhead span:not(.unit)').text());
+ var strOverheadUnit = $.trim($this.find('.tbl_overhead span.unit').text());
+ // Given a value and a unit, such as 100 and KiB, for the table size
+ // and overhead calculate their numeric values in bytes, such as 102400
+ for (var i = 0; i < byteUnits.length; i++) {
+ if (strSizeUnit == byteUnits[i]) {
+ var tmpVal = parseFloat(strSize);
+ valSize = tmpVal * Math.pow(1024, i);
+ break;
+ }
+ }
+ for (var i = 0; i < byteUnits.length; i++) {
+ if (strOverheadUnit == byteUnits[i]) {
+ var tmpVal = parseFloat(strOverhead);
+ valOverhead = tmpVal * Math.pow(1024, i);
+ break;
+ }
}
+ sizeSum += valSize;
+ overheadSum += valOverhead;
+ });
+ // Add some commas for readablility:
+ // 1000000 becomes 1,000,000
+ var strRowSum = rowsSum + "";
+ var regex = /(\d+)(\d{3})/;
+ while (regex.test(strRowSum)) {
+ strRowSum = strRowSum.replace(regex, '$1' + ',' + '$2');
+ }
+ // Calculate the magnitude for the size and overhead values
+ var size_magnitude = 0, overhead_magnitude = 0;
+ while (sizeSum >= 1024) {
+ sizeSum /= 1024;
+ size_magnitude++;
}
+ while (overheadSum >= 1024) {
+ overheadSum /= 1024;
+ overhead_magnitude++;
+ }
+
+ sizeSum = Math.round(sizeSum * 10) / 10;
+ overheadSum = Math.round(overheadSum * 10) / 10;
- // prefix total size with "~"
- var $total_size_td = $('#tbl_summary_row').find('.tbl_size');
- $total_size_td.text($total_size_td.text().replace(/^/,'~'));
+ // Update summary with new data
+ var $summary = $("#tbl_summary_row");
+ $summary.find('.tbl_num').text($.sprintf(PMA_messages['strTables'], tableSum));
+ $summary.find('.tbl_rows').text(strRowSum);
+ $summary.find('.tbl_size').text(sizeSum + " " + byteUnits[size_magnitude]);
+ $summary.find('.tbl_overhead').text(overheadSum + " " + byteUnits[overhead_magnitude]);
}
$(document).ready(function() {
@@ -146,6 +201,7 @@ $(document).ready(function() {
}
/**Update the row count at the tableForm*/
current_insert_table.closest('tr').find('.value.tbl_rows').html(data.row_count);
+ PMA_adjustTotals();
}) // end $.post()
}) // end insert table button "Go"
@@ -182,6 +238,7 @@ $(document).ready(function() {
}
/**Update the row count at the tableForm*/
current_insert_table.closest('tr').find('.value.tbl_rows').html(data.row_count);
+ PMA_adjustTotals();
}) // end $.post()
});
@@ -217,16 +274,19 @@ $(document).ready(function() {
$.get(url, {'is_js_confirmed' : 1, 'ajax_request' : true}, function(data) {
if (data.success == true) {
PMA_ajaxShowMessage(data.message);
+ // Adjust table statistics
+ var $tr = $this_anchor.closest('tr');
+ $tr.find('.tbl_rows').text('0');
+ $tr.find('.tbl_size, .tbl_overhead').text('-');
//Fetch inner span of this anchor
//and replace the icon with its disabled version
var span = $this_anchor.html().replace(/b_empty/, 'bd_empty');
- PMA_adjustTotals($this_anchor);
-
//To disable further attempts to truncate the table,
//replace the a element with its inner span (modified)
$this_anchor
.replaceWith(span)
.removeClass('truncate_table_anchor');
+ PMA_adjustTotals();
} else {
PMA_ajaxShowMessage(PMA_messages['strErrorProcessingRequest'] + " : " + data.error, false);
}
@@ -267,8 +327,8 @@ $(document).ready(function() {
$.get(url, {'is_js_confirmed' : 1, 'ajax_request' : true}, function(data) {
if (data.success == true) {
PMA_ajaxShowMessage(data.message);
- PMA_adjustTotals($this_anchor);
$curr_row.hide("medium").remove();
+ PMA_adjustTotals();
if (window.parent && window.parent.frame_navigation) {
window.parent.frame_navigation.location.reload();
diff --git a/js/functions.js b/js/functions.js
index 08b8655..1e2bbad 100644
--- a/js/functions.js
+++ b/js/functions.js
@@ -2131,6 +2131,9 @@ $(document).ready(function() {
//Sort the table
$(tables_table).PMA_sort_table('th');
+
+ // Adjust summary row
+ PMA_adjustTotals();
}
//Refresh navigation frame as a new table has been added
diff --git a/js/messages.php b/js/messages.php
index 2534567..5aba16f 100644
--- a/js/messages.php
+++ b/js/messages.php
@@ -121,6 +121,16 @@ $js_messages['strBytesReceived'] = __('Bytes received');
$js_messages['strConnections'] = __('Connections');
$js_messages['strProcesses'] = __('Processes');
+/* summary row */
+$js_messages['strB'] = __('B');
+$js_messages['strKiB'] = __('KiB');
+$js_messages['strMiB'] = __('MiB');
+$js_messages['strGiB'] = __('GiB');
+$js_messages['strTiB'] = __('TiB');
+$js_messages['strPiB'] = __('PiB');
+$js_messages['strEiB'] = __('EiB');
+$js_messages['strTables'] = __('%d table(s)');
+
/* l10n: Questions is the name of a MySQL Status variable */
$js_messages['strQuestions'] = __('Questions');
$js_messages['strTraffic'] = __('Traffic');
diff --git a/tbl_create.php b/tbl_create.php
index ae42d75..63cd26a 100644
--- a/tbl_create.php
+++ b/tbl_create.php
@@ -261,7 +261,7 @@ if (isset($_REQUEST['do_save_data'])) {
}
if (isset($formatted_overhead)) {
- $overhead = $formatted_overhead . ' ' . $overhead_unit;
+ $overhead = '<span>' . $formatted_overhead . '</span> <span class="unit">' . $overhead_unit . '</span>';
unset($formatted_overhead);
} else {
$overhead = '-';
@@ -310,8 +310,8 @@ if (isset($_REQUEST['do_save_data'])) {
$new_table_string .= '<td> <dfn title="' . PMA_getCollationDescr($tbl_stats['Collation']) . '">'. $tbl_stats['Collation'] .'</dfn></td>' . "\n";
if ($is_show_stats) {
- $new_table_string .= '<td class="value"> <a href="tbl_structure.php' . PMA_generate_common_url($tbl_url_params) . '#showusage" >' . $formatted_size . ' ' . $unit . '</a> </td>' . "\n" ;
- $new_table_string .= '<td class="value">' . $overhead . '</td>' . "\n" ;
+ $new_table_string .= '<td class="value tbl_size"> <a href="tbl_structure.php' . PMA_generate_common_url($tbl_url_params) . '#showusage" ><span>' . $formatted_size . '</span> <span class="unit">' . $unit . '</class></a> </td>' . "\n" ;
+ $new_table_string .= '<td class="value tbl_overhead">' . $overhead . '</td>' . "\n" ;
}
$new_table_string .= '</tr>' . "\n";
hooks/post-receive
--
phpMyAdmin