diff options
author | Atul Pratap Singh <atulpratapsingh05@gmail.com> | 2015-01-23 20:26:32 +0300 |
---|---|---|
committer | Atul Pratap Singh <atulpratapsingh05@gmail.com> | 2015-01-23 20:26:32 +0300 |
commit | 7ea8e7763dab38adc7facf79174f5103c5d6db90 (patch) | |
tree | 8ae3681cec5b2da97142b43bc58c8d550507a386 /js/navigation.js | |
parent | a5baea00120b0386fefec3dd0ad1e845a12f4549 (diff) | |
parent | 7d60c8c6f9eecda1c876d4ee24cd7f50aca56782 (diff) |
Merge branch 'navi_tree_optional'
Conflicts:
js/navigation.js
libraries/navigation/NavigationTree.class.php
Signed-off-by: Atul Pratap Singh <atulpratapsingh05@gmail.com>
Diffstat (limited to 'js/navigation.js')
-rw-r--r-- | js/navigation.js | 166 |
1 files changed, 120 insertions, 46 deletions
diff --git a/js/navigation.js b/js/navigation.js index 7a3057a991..4d10dda9a1 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; + } } /** |