diff --git a/js/src/functions/ColumnSorting.js b/js/src/functions/ColumnSorting.js new file mode 100644 index 0000000000..3bbf631181 --- /dev/null +++ b/js/src/functions/ColumnSorting.js @@ -0,0 +1,49 @@ +import PMA_commonParams from '../variables/common_params'; + +function captureURL (url) { + var URL = {}; + url = '' + url; + // Exclude the url part till HTTP + url = url.substr(url.search('sql.php'), url.length); + // The url part between ORDER BY and &session_max_rows needs to be replaced. + URL.head = url.substr(0, url.indexOf('ORDER+BY') + 9); + URL.tail = url.substr(url.indexOf('&session_max_rows'), url.length); + return URL; +} + +/** + * This function is for navigating to the generated URL + * + * @param object target HTMLAnchor element + * @param object parent HTMLDom Object + */ + +export function removeColumnFromMultiSort (target, parent) { + var URL = captureURL(target); + var begin = target.indexOf('ORDER+BY') + 8; + var end = target.indexOf(PMA_commonParams.get('arg_separator') + 'session_max_rows'); + // get the names of the columns involved + var between_part = target.substr(begin, end - begin); + var columns = between_part.split('%2C+'); + // If the given column is not part of the order clause exit from this function + var index = parent.find('small').length ? parent.find('small').text() : ''; + if (index === '') { + return ''; + } + // Remove the current clicked column + columns.splice(index - 1, 1); + // If all the columns have been removed dont submit a query with nothing + // After order by clause. + if (columns.length === 0) { + var head = URL.head; + head = head.slice(0,head.indexOf('ORDER+BY')); + URL.head = head; + // removing the last sort order should have priority over what + // is remembered via the RememberSorting directive + URL.tail += PMA_commonParams.get('arg_separator') + 'discard_remembered_sort=1'; + } + URL.head = URL.head.substring(URL.head.indexOf('?') + 1); + var middle_part = columns.join('%2C+'); + var params = URL.head + middle_part + URL.tail; + return params; +} diff --git a/js/src/multi_column_sort.js b/js/src/multi_column_sort.js index 5a8989916b..24b5796025 100644 --- a/js/src/multi_column_sort.js +++ b/js/src/multi_column_sort.js @@ -2,6 +2,7 @@ import PMA_commonParams from './variables/common_params'; import { PMA_ajaxShowMessage } from './utils/show_ajax_messages'; import { AJAX } from './ajax'; +import { removeColumnFromMultiSort } from './functions/ColumnSorting'; /** * @fileoverview Implements the shiftkey + click remove column @@ -11,54 +12,6 @@ import { AJAX } from './ajax'; * @requires jQuery */ -function captureURL (url) { - var URL = {}; - url = '' + url; - // Exclude the url part till HTTP - url = url.substr(url.search('sql.php'), url.length); - // The url part between ORDER BY and &session_max_rows needs to be replaced. - URL.head = url.substr(0, url.indexOf('ORDER+BY') + 9); - URL.tail = url.substr(url.indexOf('&session_max_rows'), url.length); - return URL; -} - -/** - * This function is for navigating to the generated URL - * - * @param object target HTMLAnchor element - * @param object parent HTMLDom Object - */ - -function removeColumnFromMultiSort (target, parent) { - var URL = captureURL(target); - var begin = target.indexOf('ORDER+BY') + 8; - var end = target.indexOf(PMA_commonParams.get('arg_separator') + 'session_max_rows'); - // get the names of the columns involved - var between_part = target.substr(begin, end - begin); - var columns = between_part.split('%2C+'); - // If the given column is not part of the order clause exit from this function - var index = parent.find('small').length ? parent.find('small').text() : ''; - if (index === '') { - return ''; - } - // Remove the current clicked column - columns.splice(index - 1, 1); - // If all the columns have been removed dont submit a query with nothing - // After order by clause. - if (columns.length === 0) { - var head = URL.head; - head = head.slice(0,head.indexOf('ORDER+BY')); - URL.head = head; - // removing the last sort order should have priority over what - // is remembered via the RememberSorting directive - URL.tail += PMA_commonParams.get('arg_separator') + 'discard_remembered_sort=1'; - } - URL.head = URL.head.substring(URL.head.indexOf('?') + 1); - var middle_part = columns.join('%2C+'); - var params = URL.head + middle_part + URL.tail; - return params; -} - export function onloadMultiColumnSort () { $(document).on('click', 'th.draggable.column_heading.pointer.marker a', function (event) { var url = $(this).parent().find('input').val();