Translated using Weblate (Turkish)
[phpmyadmin.git] / js / multi_column_sort.js
blob1d835cf1ddf54d75862c22f5faa1c706a1990a95
1 /* vim: set expandtab sw=4 ts=4 sts=4: */
2 /**
3  * @fileoverview    Implements the shiftkey + click remove column
4  *                  from order by clause funcationality
5  * @name            columndelete
6  *
7  * @requires    jQuery
8  */
10 function captureURL (url) {
11     var newUrl = '' + url;
12     var URL = {};
13     // Exclude the url part till HTTP
14     newUrl = newUrl.substr(newUrl.search('sql.php'), newUrl.length);
15     // The url part between ORDER BY and &session_max_rows needs to be replaced.
16     URL.head = newUrl.substr(0, newUrl.indexOf('ORDER+BY') + 9);
17     URL.tail = newUrl.substr(newUrl.indexOf('&session_max_rows'), newUrl.length);
18     return URL;
21 /**
22  * This function is for navigating to the generated URL
23  *
24  * @param object   target HTMLAnchor element
25  * @param object   parent HTMLDom Object
26  */
28 function removeColumnFromMultiSort (target, parent) {
29     var URL = captureURL(target);
30     var begin = target.indexOf('ORDER+BY') + 8;
31     var end = target.indexOf(CommonParams.get('arg_separator') + 'session_max_rows');
32     // get the names of the columns involved
33     var betweenPart = target.substr(begin, end - begin);
34     var columns = betweenPart.split('%2C+');
35     // If the given column is not part of the order clause exit from this function
36     var index = parent.find('small').length ? parent.find('small').text() : '';
37     if (index === '') {
38         return '';
39     }
40     // Remove the current clicked column
41     columns.splice(index - 1, 1);
42     // If all the columns have been removed dont submit a query with nothing
43     // After order by clause.
44     if (columns.length === 0) {
45         var head = URL.head;
46         head = head.slice(0,head.indexOf('ORDER+BY'));
47         URL.head = head;
48         // removing the last sort order should have priority over what
49         // is remembered via the RememberSorting directive
50         URL.tail += CommonParams.get('arg_separator') + 'discard_remembered_sort=1';
51     }
52     URL.head = URL.head.substring(URL.head.indexOf('?') + 1);
53     var middlePart = columns.join('%2C+');
54     var params = URL.head + middlePart + URL.tail;
55     return params;
58 AJAX.registerOnload('keyhandler.js', function () {
59     $('th.draggable.column_heading.pointer.marker a').on('click', function (event) {
60         var url = $(this).parent().find('input').val();
61         var argsep = CommonParams.get('arg_separator');
62         var params;
63         if (event.ctrlKey || event.altKey) {
64             event.preventDefault();
65             params = removeColumnFromMultiSort(url, $(this).parent());
66             if (params) {
67                 AJAX.source = $(this);
68                 Functions.ajaxShowMessage();
69                 params += argsep + 'ajax_request=true' + argsep + 'ajax_page_request=true';
70                 $.post('sql.php', params, AJAX.responseHandler);
71             }
72         } else if (event.shiftKey) {
73             event.preventDefault();
74             AJAX.source = $(this);
75             Functions.ajaxShowMessage();
76             params = url.substring(url.indexOf('?') + 1);
77             params += argsep + 'ajax_request=true' + argsep + 'ajax_page_request=true';
78             $.post('sql.php', params, AJAX.responseHandler);
79         }
80     });
81 });
83 AJAX.registerTeardown('keyhandler.js', function () {
84     $(document).off('click', 'th.draggable.column_heading.pointer.marker a');
85 });