From ba4fd1bda1afc3b7ba4e0e609e045577612ce453 Mon Sep 17 00:00:00 2001 From: Madhura Jayaratne Date: Thu, 26 Dec 2013 09:41:57 +0530 Subject: [PATCH 1/6] Fix chart tooltips --- js/chart.js | 17 +++++++++++++++++ js/tbl_chart.js | 7 +------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/js/chart.js b/js/chart.js index 99944710c0..ac7874f17b 100644 --- a/js/chart.js +++ b/js/chart.js @@ -297,6 +297,11 @@ JQPlotLineChart.prototype.populateOptions = function (dataTable, options) { labelRenderer : $.jqplot.CanvasAxisLabelRenderer } }, + highlighter: { + show: true, + tooltipAxes: 'y', + formatString:'%d' + }, series : [] }; $.extend(true, optional, options); @@ -386,6 +391,11 @@ JQPlotScatterChart.prototype.populateOptions = function (dataTable, options) { labelRenderer : $.jqplot.CanvasAxisLabelRenderer } }, + highlighter: { + show: true, + tooltipAxes: 'xy', + formatString:'%d, %d' + }, series : [] }; for (var i = 1; i < columns.length; i++) { @@ -567,6 +577,11 @@ JQPlotBarChart.prototype.populateOptions = function (dataTable, options) { labelRenderer : $.jqplot.CanvasAxisLabelRenderer } }, + highlighter: { + show: true, + tooltipAxes: 'x', + formatString:'%d' + }, series : [], seriesDefaults : { fillToZero : true @@ -614,6 +629,8 @@ JQPlotPieChart.prototype.constructor = JQPlotPieChart; JQPlotPieChart.prototype.populateOptions = function (dataTable, options) { var optional = { highlighter: { + show: true, + tooltipAxes: 'xy', formatString:'%s, %d', useAxesFormatters: false } diff --git a/js/tbl_chart.js b/js/tbl_chart.js index 07f15f8a0a..560316dcf3 100644 --- a/js/tbl_chart.js +++ b/js/tbl_chart.js @@ -53,12 +53,7 @@ function PMA_queryChart(data, columnNames, settings) { label : settings.yaxisLabel } }, - stackSeries : settings.stackSeries, - highlighter: { - show: true, - showTooltip: true, - tooltipAxes: 'xy' - } + stackSeries : settings.stackSeries }; // create the chart From 635c5fc641d7d9edd085214492cb173bd4174b04 Mon Sep 17 00:00:00 2001 From: Atul Pratap Singh Date: Thu, 26 Dec 2013 03:07:09 +0530 Subject: [PATCH 2/6] Feature#1478 Make Column Headings Sticky Signed-off-by: Atul Pratap Singh --- ChangeLog | 1 + js/sql.js | 73 ++++++++++++++++++++++++++++++++++++++++++++++-- js/tbl_select.js | 2 +- 3 files changed, 72 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index c61c909222..05cad3c65a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,6 +13,7 @@ phpMyAdmin - ChangeLog 4.1.3.0 (not yet released) - bug #3938 PDFDefaultPageSize doc and easy configurability - bug #4198 Hovering over pie chart gives fatal JS error ++ rfe #1478 Make Column Headings Sticky 4.1.2.0 (2013-12-23) - bug #4178 Quick edit for BIT type does not work diff --git a/js/sql.js b/js/sql.js index 0e0ea829eb..9a27397152 100644 --- a/js/sql.js +++ b/js/sql.js @@ -8,6 +8,7 @@ */ var $data_a; +var prevScrollX = 0, fixedTop; /** * decode a string URL_encoded @@ -70,6 +71,7 @@ AJAX.registerTeardown('sql.js', function () { $('#bookmarkQueryForm').die('submit'); $('input#bkm_label').unbind('keyup'); $("#sqlqueryresults").die('makegrid'); + $("#sqlqueryresults").die('stickycolumns'); $("#togglequerybox").unbind('click'); $("#button_submit_query").die('click'); $("input[name=bookmark_variable]").unbind("keypress"); @@ -81,6 +83,7 @@ AJAX.registerTeardown('sql.js', function () { $('a.browse_foreign').die('click'); $('th.column_heading.pointer').die('hover'); $('th.column_heading.marker').die('click'); + $(window).unbind('scroll'); }); /** @@ -147,6 +150,18 @@ AJAX.registerOnload('sql.js', function () { PMA_makegrid($('#table_results')[0]); }); + $("#sqlqueryresults").live('stickycolumns', function () { + if ($("#table_results").length === 0) { + return; + } + //add sticky columns div + initStickyColumns(); + //adjust sticky columns on scroll + $(window).bind('scroll', function() { + handleStickyColumns(); + }); + }); + /** * Append the "Show/Hide query box" message to the query input form * @@ -325,7 +340,7 @@ AJAX.registerOnload('sql.js', function () { }); } - $sqlqueryresults.show().trigger('makegrid'); + $sqlqueryresults.show().trigger('makegrid').trigger('stickycolumns'); $('#togglequerybox').show(); PMA_init_slider(); @@ -374,7 +389,6 @@ AJAX.registerOnload('sql.js', function () { }); //end displayOptionsForm handler }); // end $() - /** * Starting from some th, change the class of all td under it. * If isAddClass is specified, it will be used to determine whether to add or remove the class. @@ -422,7 +436,7 @@ AJAX.registerOnload('sql.js', function () { /** * create resizable table */ - $("#sqlqueryresults").trigger('makegrid'); + $("#sqlqueryresults").trigger('makegrid').trigger('stickycolumns'); }); /* @@ -483,6 +497,59 @@ function initProfilingTables() }); } +function setStickyColumnsPosition(position, top, left) { + if ($("#sticky_columns").length !== 0) { + $("#sticky_columns") + .css("position", position) + .css("top", top) + .css("left", left ? left : "auto") + .css("width", $("#table_results").width()); + } +} + +function initStickyColumns() { + fixedTop = $('#floating_menubar').height(); + if ($("#sticky_columns").length === 0) { + $('
') + .insertBefore('#page_content') + .css("position", "fixed") + .css("z-index", "99") + .css("width", $("#table_results").width()) + .css("margin-left", $('#page_content').css("margin-left")) + .css("top", fixedTop) + .css("display", "none"); + } +} + +function handleStickyColumns() { + var currentScrollX = $(window).scrollLeft(); + var windowOffset = $(window).scrollTop(); + var tableStartOffset = $("#table_results").offset().top; + var tableEndOffset = tableStartOffset + $("#table_results").height(); + var $sticky_columns = $("#sticky_columns"); + if (windowOffset >= tableStartOffset && windowOffset <= tableEndOffset) { + //for horizontal scrolling + if(prevScrollX != currentScrollX) { + prevScrollX = currentScrollX; + setStickyColumnsPosition("absolute", fixedTop + windowOffset); + //for vertical scrolling + } else { + setStickyColumnsPosition("fixed", fixedTop, $("#pma_navigation").width() - currentScrollX); + } + $sticky_columns.show(); + } else { + var $originalHeader = $("#table_results > thead"); + var $originalColumns = $originalHeader.find("tr:first").children(); + var $clonedHeader = $originalHeader.clone(); + // clone width per cell + $clonedHeader.find("tr:first").children().width(function(i,val) { + return $originalColumns.eq(i).width(); + }); + $sticky_columns.empty().append($clonedHeader); + $sticky_columns.hide(); + } +} + AJAX.registerOnload('sql.js', function () { makeProfilingChart(); initProfilingTables(); diff --git a/js/tbl_select.js b/js/tbl_select.js index 4efb86ae39..3c867824eb 100644 --- a/js/tbl_select.js +++ b/js/tbl_select.js @@ -111,7 +111,7 @@ AJAX.registerOnload('tbl_select.js', function () { $("#sqlqueryresults").html(data.sql_query); } else { // results found $("#sqlqueryresults").html(data.message); - $("#sqlqueryresults").trigger('makegrid'); + $("#sqlqueryresults").trigger('makegrid').trigger('stickycolumns'); } $('#tbl_search_form') // workaround for bug #3168569 - Issue on toggling the "Hide search criteria" in chrome. From b7bef8471a668a938c4e1aa30637ddb84e951450 Mon Sep 17 00:00:00 2001 From: Atul Pratap Singh Date: Thu, 26 Dec 2013 03:18:43 +0530 Subject: [PATCH 3/6] Add some docblocks Signed-off-by: Atul Pratap Singh --- js/sql.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/js/sql.js b/js/sql.js index 9a27397152..909586f337 100644 --- a/js/sql.js +++ b/js/sql.js @@ -150,6 +150,11 @@ AJAX.registerOnload('sql.js', function () { PMA_makegrid($('#table_results')[0]); }); + /* + * Attach a custom event for sticky column headings which will be + * triggered manually everytime the table of results is reloaded + * @memberOf jQuery + */ $("#sqlqueryresults").live('stickycolumns', function () { if ($("#table_results").length === 0) { return; @@ -497,6 +502,9 @@ function initProfilingTables() }); } +/* + * Set position, left, top, width of sticky_columns div + */ function setStickyColumnsPosition(position, top, left) { if ($("#sticky_columns").length !== 0) { $("#sticky_columns") @@ -507,6 +515,9 @@ function setStickyColumnsPosition(position, top, left) { } } +/* + * Initialize sticky columns + */ function initStickyColumns() { fixedTop = $('#floating_menubar').height(); if ($("#sticky_columns").length === 0) { @@ -521,6 +532,9 @@ function initStickyColumns() { } } +/* + * Adjust sticky columns on horizontal/vertical scroll + */ function handleStickyColumns() { var currentScrollX = $(window).scrollLeft(); var windowOffset = $(window).scrollTop(); From 009619dfd0b15fa4c2be4435a87b7ca7f71dea16 Mon Sep 17 00:00:00 2001 From: Atul Pratap Singh Date: Thu, 26 Dec 2013 03:19:54 +0530 Subject: [PATCH 4/6] adjust sticky columns on nav width resize Signed-off-by: Atul Pratap Singh --- js/navigation.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/js/navigation.js b/js/navigation.js index 8a3bc951ed..05b53e2bcc 100644 --- a/js/navigation.js +++ b/js/navigation.js @@ -825,6 +825,9 @@ var ResizeHandler = function () { var pos = event.data.resize_handler.getPos(event); event.data.resize_handler.setWidth(pos); } + if($('#sticky_columns').length !== 0) { + handleStickyColumns(); + } }; /** * Event handler for collapsing the panel From 9359e8d267166c070d036d65c4d4b4d72a0d382f Mon Sep 17 00:00:00 2001 From: Chien Wei Lin Date: Thu, 26 Dec 2013 05:01:47 +0100 Subject: [PATCH 5/6] Translated using Weblate (Traditional Chinese) Currently translated at 100.0% (2751 of 2751) --- po/zh_TW.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/po/zh_TW.po b/po/zh_TW.po index 1051eda164..4108d01b71 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.2.0-dev\n" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2013-12-19 06:31-0500\n" -"PO-Revision-Date: 2013-12-25 16:41+0200\n" +"PO-Revision-Date: 2013-12-26 05:01+0200\n" "Last-Translator: Chien Wei Lin \n" "Language-Team: Traditional Chinese " "\n" @@ -8691,11 +8691,11 @@ msgstr "" #: libraries/replication_gui.lib.php:99 msgid "Replicate all databases; Ignore:" -msgstr "複製所有資料庫,除了:" +msgstr "備援所有資料庫,除了下列資料庫:" #: libraries/replication_gui.lib.php:101 msgid "Ignore all databases; Replicate:" -msgstr "忽略所有資料庫;備援(Replicate):" +msgstr "不備援所有資料庫,只挑選下列資料庫:" #: libraries/replication_gui.lib.php:105 msgid "Please select databases:" From 5a5ecb2f9d869693ede0d9b2ec1c9505d1cdc5b4 Mon Sep 17 00:00:00 2001 From: Chien Wei Lin Date: Thu, 26 Dec 2013 05:17:28 +0100 Subject: [PATCH 6/6] Translated using Weblate (Traditional Chinese) Currently translated at 100.0% (2751 of 2751) --- po/zh_TW.po | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/po/zh_TW.po b/po/zh_TW.po index 4108d01b71..6118116dd6 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.2.0-dev\n" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2013-12-19 06:31-0500\n" -"PO-Revision-Date: 2013-12-26 05:01+0200\n" +"PO-Revision-Date: 2013-12-26 05:17+0200\n" "Last-Translator: Chien Wei Lin \n" "Language-Team: Traditional Chinese " "\n" @@ -8705,8 +8705,7 @@ msgstr "請選擇資料庫:" msgid "" "Now, add the following lines at the end of [mysqld] section in your my.cnf " "and please restart the MySQL server afterwards." -msgstr "" -"現在,將下列文字新增到您的 my.cnf 檔案末端,然後重新啓動 MySQL 伺服器。" +msgstr "現在,將下列文字新增到您的 my.cnf 設定檔中 [mysqld] 區塊的最末端,然後重新啓動 MySQL 伺服器。" #: libraries/replication_gui.lib.php:114 msgid ""