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:
authorAtul Pratap Singh <atulpratapsingh05@gmail.com>2015-01-27 09:19:41 +0300
committerAtul Pratap Singh <atulpratapsingh05@gmail.com>2015-01-27 09:19:41 +0300
commit42706c33f75934199d94dc8b8aed8187f7904030 (patch)
treed7a53865c1e0121163715569e5e639f4a0861f13 /js/navigation.js
parent6dc3a1fc1f606b9cc15664b4ecd1fc87fb9c3a58 (diff)
parentfc257c99046f6bb693a1b3e8f4394b271b4a86ce (diff)
Merge pull request #1469 from zixtor/master
rfe #1574 Provide for a database select dropdown in navigation panel as in pre-4.0 versions
Diffstat (limited to 'js/navigation.js')
-rw-r--r--js/navigation.js166
1 files changed, 120 insertions, 46 deletions
diff --git a/js/navigation.js b/js/navigation.js
index 80256b3911..0a6c575b84 100644
--- a/js/navigation.js
+++ b/js/navigation.js
@@ -8,42 +8,66 @@
/**
* Loads child items of a node and executes a given callback
*
+ * @param isNode
* @param $expandElem expander
* @param callback callback function
*
* @returns void
*/
-function loadChildNodes($expandElem, callback) {
- if (!$expandElem.hasClass('expander')) {
- return;
- }
- var $destination = $expandElem.closest('li');
-
- var searchClause = PMA_fastFilter.getSearchClause();
- var searchClause2 = PMA_fastFilter.getSearchClause2($expandElem);
-
- var params = {
- aPath: $expandElem.find('span.aPath').text(),
- vPath: $expandElem.find('span.vPath').text(),
- pos: $expandElem.find('span.pos').text(),
- pos2_name: $expandElem.find('span.pos2_name').text(),
- pos2_value: $expandElem.find('span.pos2_value').text(),
- searchClause: '',
- searchClause2: ''
- };
+function loadChildNodes(isNode, $expandElem, callback) {
+ if (isNode) {
+ if (!$expandElem.hasClass('expander')) {
+ return;
+ }
+ var $destination = $expandElem.closest('li');
+ var searchClause = PMA_fastFilter.getSearchClause();
+ var searchClause2 = PMA_fastFilter.getSearchClause2($expandElem);
- if ($expandElem.closest('ul').hasClass('search_results')
- ) {
- params.searchClause = searchClause;
- params.searchClause2 = searchClause2;
+ var params = {
+ aPath: $expandElem.find('span.aPath').text(),
+ vPath: $expandElem.find('span.vPath').text(),
+ pos: $expandElem.find('span.pos').text(),
+ pos2_name: $expandElem.find('span.pos2_name').text(),
+ pos2_value: $expandElem.find('span.pos2_value').text(),
+ searchClause: '',
+ searchClause2: ''
+ };
+ if ($expandElem.closest('ul').hasClass('search_results')
+ ) {
+ params.searchClause = searchClause;
+ params.searchClause2 = searchClause2;
+ }
+ } else {
+ var $destination = $('#pma_navigation_tree_content');
+ var params = {
+ aPath: $expandElem.attr('aPath'),
+ vPath: $expandElem.attr('vPath'),
+ pos: $expandElem.attr('pos'),
+ pos2_name: '',
+ pos2_value: '',
+ searchClause: '',
+ searchClause2: ''
+ };
}
var url = $('#pma_navigation').find('a.navigation_url').attr('href');
$.get(url, params, function (data) {
if (typeof data !== 'undefined' && data.success === true) {
- $expandElem.addClass('loaded');
$destination.find('div.list_container').remove(); // FIXME: Hack, there shouldn't be a list container there
- $destination.append(data.message);
+ if (isNode) {
+ $destination.append(data.message);
+ $expandElem.addClass('loaded');
+ } else {
+ $destination.html(data.message);
+ $destination.children()
+ .first()
+ .css({
+ border: '0px',
+ margin: '0em',
+ padding : '0em'
+ })
+ .slideDown('slow');
+ }
if (data._debug){
$('#session_debug').replaceWith(data._debug);
}
@@ -141,6 +165,10 @@ $(function () {
$icon.attr('src', icon_reload_src);
}, 1000);
});
+
+ $(document).on("change", '#navi_db_select', function (event) {
+ $(this).closest('form').trigger('submit');
+ });
/**
* Register event handler for click on the collapse all
@@ -391,10 +419,6 @@ $(function () {
});
});
- if ($('#pma_navigation_tree').hasClass('synced')) {
- PMA_showCurrentNavigation();
- }
-
// Add/Remove favorite table using Ajax.
$(document).on("click", ".favorite_table_anchor", function (event) {
event.preventDefault();
@@ -445,7 +469,9 @@ $(function () {
storage.removeItem('navTree');
});
// Initialize if no previous state is defined
- if (typeof storage.navTree === 'undefined') {
+ if ( ($('#pma_navigation_tree_content').length && typeof storage.navTree === 'undefined')
+ || ($('#pma_navigation_db_select').length && typeof storage.navSelect === 'undefined')
+ ) {
navTreeStateUpdate();
} else if (PMA_commonParams.get('server') === storage.server &&
PMA_commonParams.get('token') === storage.token
@@ -453,8 +479,16 @@ $(function () {
// Restore the tree from storage
$('#pma_navigation_tree_content').html(storage.navTree);
$('div.pageselector.dbselector').html(storage.page);
+ $('#pma_navigation_db_select').html(storage.navSelect);
}
}
+
+ if ($('#pma_navigation_tree').hasClass('synced')) {
+ if ($("#navi_db_select").length) {
+ $("#navi_db_select").val(PMA_commonParams.get('db'));
+ }
+ PMA_showCurrentNavigation();
+ }
});
/**
@@ -470,6 +504,7 @@ function navTreeStateUpdate() {
// content to be stored exceeds storage capacity
try {
storage.setItem('navTree', $('#pma_navigation_tree_content').html());
+ storage.setItem('navSelect', $('#pma_navigation_db_select').html());
storage.setItem('server', PMA_commonParams.get('server'));
storage.setItem('token', PMA_commonParams.get('token'));
storage.setItem('page', $('div.pageselector.dbselector').html());
@@ -478,6 +513,7 @@ function navTreeStateUpdate() {
// state is no more valid, so remove it
storage.removeItem('navTree');
storage.removeItem('server');
+ storage.removeItem('navSelect');
storage.removeItem('token');
storage.removeItem('page');
}
@@ -513,7 +549,7 @@ function expandTreeNode($expandElem, callback) {
$icon.hide();
$throbber.insertBefore($icon);
- loadChildNodes($expandElem, function (data) {
+ loadChildNodes(true, $expandElem, function (data) {
if (typeof data !== 'undefined' && data.success === true) {
var $destination = $expandElem.closest('li');
$icon.removeClass('ic_b_plus').addClass('ic_b_minus');
@@ -589,6 +625,24 @@ function PMA_showCurrentNavigation() {
} else {
handleTableOrDb(table, $dbItem);
}
+ } else if ($('#navi_db_select').length
+ && $('option:selected', $('#navi_db_select')).length
+ ) {
+ if (! PMA_selectCurrentDb()) {
+ return;
+ }
+ // If loaded database in navigation is not same as current one
+ if ( $('#pma_navigation_tree_content span.loaded_db:first').text()
+ !== $('#navi_db_select').val()
+ ) {
+ loadChildNodes(false, $('option:selected', $('#navi_db_select')), function (data) {
+ handleTableOrDb(table, $('#pma_navigation_tree_content'));
+ var $children = $('#pma_navigation_tree_content').children('div.list_container');
+ $children.promise().done(navTreeStateUpdate);
+ });
+ } else {
+ handleTableOrDb(table, $('#pma_navigation_tree_content'));
+ }
}
}
PMA_showFullName($('#pma_navigation_tree'));
@@ -601,6 +655,7 @@ function PMA_showCurrentNavigation() {
var $tableContainer = $container.children('ul').children('li.tableContainer');
if ($tableContainer.length > 0) {
var $expander = $tableContainer.children('div:first').children('a.expander');
+ $tableContainer.addClass('selected');
expandTreeNode($expander, function () {
scrollToView($dbItem, true);
});
@@ -691,7 +746,7 @@ function PMA_showCurrentNavigation() {
}
function loadAndShowTableOrView($expander, $relatedContainer, itemName) {
- loadChildNodes($expander, function (data) {
+ loadChildNodes(true, $expander, function (data) {
var $whichItem = findLoadedItem(
$relatedContainer.children('div.list_container'),
itemName, null, true
@@ -734,8 +789,13 @@ function PMA_showCurrentNavigation() {
function PMA_reloadNavigation(callback) {
var params = {
reload: true,
- pos: $('#pma_navigation_tree').find('a.expander:first > span.pos').text()
+ pos: $('#pma_navigation_tree div.dbselector select').val()
};
+ if ($('#navi_db_select').length) {
+ params.db = PMA_commonParams.get('db');
+ requestNaviReload(params);
+ return;
+ }
// Traverse the navigation tree backwards to generate all the actual
// and virtual paths, as well as the positions in the pagination at
// various levels, if necessary.
@@ -772,22 +832,36 @@ function PMA_reloadNavigation(callback) {
count++;
}
});
- var url = $('#pma_navigation').find('a.navigation_url').attr('href');
- $.post(url, params, function (data) {
- if (typeof data !== 'undefined' && data.success) {
- $('#pma_navigation_tree').html(data.message).children('div').show();
- if ($('#pma_navigation_tree').hasClass('synced')) {
- PMA_showCurrentNavigation();
- }
- // Fire the callback, if any
- if (typeof callback === 'function') {
- callback.call();
+ requestNaviReload(params);
+ function requestNaviReload(params) {
+ var url = $('#pma_navigation').find('a.navigation_url').attr('href');
+ $.post(url, params, function (data) {
+ if (typeof data !== 'undefined' && data.success) {
+ $('#pma_navigation_tree').html(data.message).children('div').show();
+ if ($('#pma_navigation_tree').hasClass('synced')) {
+ PMA_selectCurrentDb();
+ PMA_showCurrentNavigation();
+ }
+ // Fire the callback, if any
+ if (typeof callback === 'function') {
+ callback.call();
+ }
+ navTreeStateUpdate();
+ } else {
+ PMA_ajaxShowMessage(data.error);
}
- navTreeStateUpdate();
- } else {
- PMA_ajaxShowMessage(data.error);
+ });
+ }
+}
+
+function PMA_selectCurrentDb() {
+ if ($('#navi_db_select').length) {
+ $('#navi_db_select').val(PMA_commonParams.get('db'));
+ if ($('#navi_db_select').val() !== PMA_commonParams.get('db')) {
+ return false;
}
- });
+ return true;
+ }
}
/**