aboutsummaryrefslogtreecommitdiff
path: root/srcs/phpmyadmin/js/multi_column_sort.js
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-01-09 10:55:03 +0100
committerCharles <sircharlesaze@gmail.com>2020-01-09 13:09:38 +0100
commit04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch)
tree5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/js/multi_column_sort.js
parent7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff)
downloadft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.gz
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.bz2
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.zip
phpmyadmin working
Diffstat (limited to 'srcs/phpmyadmin/js/multi_column_sort.js')
-rw-r--r--srcs/phpmyadmin/js/multi_column_sort.js85
1 files changed, 85 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/js/multi_column_sort.js b/srcs/phpmyadmin/js/multi_column_sort.js
new file mode 100644
index 0000000..1d835cf
--- /dev/null
+++ b/srcs/phpmyadmin/js/multi_column_sort.js
@@ -0,0 +1,85 @@
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+/**
+ * @fileoverview Implements the shiftkey + click remove column
+ * from order by clause funcationality
+ * @name columndelete
+ *
+ * @requires jQuery
+ */
+
+function captureURL (url) {
+ var newUrl = '' + url;
+ var URL = {};
+ // Exclude the url part till HTTP
+ newUrl = newUrl.substr(newUrl.search('sql.php'), newUrl.length);
+ // The url part between ORDER BY and &session_max_rows needs to be replaced.
+ URL.head = newUrl.substr(0, newUrl.indexOf('ORDER+BY') + 9);
+ URL.tail = newUrl.substr(newUrl.indexOf('&session_max_rows'), newUrl.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(CommonParams.get('arg_separator') + 'session_max_rows');
+ // get the names of the columns involved
+ var betweenPart = target.substr(begin, end - begin);
+ var columns = betweenPart.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 += CommonParams.get('arg_separator') + 'discard_remembered_sort=1';
+ }
+ URL.head = URL.head.substring(URL.head.indexOf('?') + 1);
+ var middlePart = columns.join('%2C+');
+ var params = URL.head + middlePart + URL.tail;
+ return params;
+}
+
+AJAX.registerOnload('keyhandler.js', function () {
+ $('th.draggable.column_heading.pointer.marker a').on('click', function (event) {
+ var url = $(this).parent().find('input').val();
+ var argsep = CommonParams.get('arg_separator');
+ var params;
+ if (event.ctrlKey || event.altKey) {
+ event.preventDefault();
+ params = removeColumnFromMultiSort(url, $(this).parent());
+ if (params) {
+ AJAX.source = $(this);
+ Functions.ajaxShowMessage();
+ params += argsep + 'ajax_request=true' + argsep + 'ajax_page_request=true';
+ $.post('sql.php', params, AJAX.responseHandler);
+ }
+ } else if (event.shiftKey) {
+ event.preventDefault();
+ AJAX.source = $(this);
+ Functions.ajaxShowMessage();
+ params = url.substring(url.indexOf('?') + 1);
+ params += argsep + 'ajax_request=true' + argsep + 'ajax_page_request=true';
+ $.post('sql.php', params, AJAX.responseHandler);
+ }
+ });
+});
+
+AJAX.registerTeardown('keyhandler.js', function () {
+ $(document).off('click', 'th.draggable.column_heading.pointer.marker a');
+});