[pgAdmin][RM4647] Select File Dialog Sort by file size does not take units into account

Aditya Toshniwal <[email protected]>
Newsgroups gmane.comp.db.postgresql.pgadmin.devel
Message-ID <CAM9w-_mCChvh0duKu-7=hBVya4EXWVn-fT8LPyjV_L+5QgmEkw@mail.gmail.com>
Hi Hackers,

Attached is the patch to fix sorting by file size in file dialog.
Kindly review.

-- 
Thanks and Regards,
Aditya Toshniwal
Sr. Software Engineer | EnterpriseDB India | Pune
"Don't Complain about Heat, Plant a TREE"
RM4647.patch (application/octet-stream, 3.9 KB)
diff --git a/web/pgadmin/misc/file_manager/__init__.py b/web/pgadmin/misc/file_manager/__init__.py
index ec956ea57..160f3466f 100644
--- a/web/pgadmin/misc/file_manager/__init__.py
+++ b/web/pgadmin/misc/file_manager/__init__.py
@@ -62,7 +62,7 @@ encode_json = json.JSONEncoder().encode
 # utility functions
 # convert bytes type to human readable format
 def sizeof_fmt(num, suffix='B'):
-    for unit in ['', 'K', 'M', 'G', 'T', 'P', 'E', 'Z']:
+    for unit in ['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z']:
         if abs(num) < 1024.0:
             return "%3.1f %s%s" % (num, unit, suffix)
         num /= 1024.0
diff --git a/web/pgadmin/misc/file_manager/static/js/utility.js b/web/pgadmin/misc/file_manager/static/js/utility.js
index 77acc5be7..e3fc81a9f 100644
--- a/web/pgadmin/misc/file_manager/static/js/utility.js
+++ b/web/pgadmin/misc/file_manager/static/js/utility.js
@@ -20,7 +20,7 @@
 define([
   'jquery', 'underscore', 'pgadmin.alertifyjs',
   'sources/gettext', 'sources/url_for', 'dropzone', 'sources/pgadmin',
-  'sources/csrf', 'tablesorter',
+  'sources/csrf', 'tablesorter', 'tablesorter-metric',
 ], function($, _, Alertify, gettext, url_for, Dropzone, pgAdmin, csrfToken) {
 
   /*---------------------------------------------------------
@@ -588,8 +588,8 @@ define([
             result += '<table id="contents" class="table table-bordered table-noouter-border table-bottom-border table-hover tablesorter file_listing_table">';
             result += '<thead><tr><th>';
             result += '<span>' + lg.name + '</span></th>';
-            result += '<th><span>' + lg.size + '</span></th><th>';
-            result += '<span>' + lg.modified + '</span></th></tr></thead>';
+            result += '<th class="sorter-metric" data-metric-name-full="byte|Byte|BYTE" data-metric-name-abbr="b|B"><span>' + lg.size + '</span></th>';
+            result += '<th class="sorter-shortDate"><span>' + lg.modified + '</span></th></tr></thead>';
             result += '<tbody>';
 
             Object.keys(data).sort(function keyOrder(x, y) {
@@ -675,8 +675,8 @@ define([
            */
             result += '<table id="contents" class="table table-bordered table-noouter-border table-bottom-border table-hover tablesorter file_listing_table file_listing_table_no_data">';
             result += '<thead><tr><th><span>' + lg.name + '</span></th>' +
-                    '<th><span>' + lg.size + '</span></th>' +
-                    '<th><span>' + lg.modified + '</span></th>' +
+                    '<th class="sorter-metric" data-metric-name-full="byte|Byte|BYTE" data-metric-name-abbr="b|B"><span>' + lg.size + '</span></th>' +
+                    '<th class="sorter-shortDate"><span>' + lg.modified + '</span></th>' +
                     '</tr></thead>' +
                     '<tbody></tbody>';
             result += '</table>';
@@ -690,13 +690,7 @@ define([
 
         // Add the new markup to the DOM.
         $('.fileinfo .file_listing').html(result);
-        $('.fileinfo .file_listing #contents').tablesorter({
-          headers: {
-            2: {
-              sorter: 'shortDate',
-            },
-          },
-        });
+        $('.fileinfo .file_listing #contents').tablesorter();
 
         // rename file/folder
         $('.file_manager button.rename').off().on('click', function(e) {
diff --git a/web/webpack.shim.js b/web/webpack.shim.js
index b4d3b8591..2e2b7ed41 100644
--- a/web/webpack.shim.js
+++ b/web/webpack.shim.js
@@ -155,6 +155,7 @@ var webpackShimConfig = {
     'snap.svg': path.join(__dirname, './node_modules/snapsvg/dist/snap.svg-min'),
     'spectrum': path.join(__dirname, './node_modules/spectrum-colorpicker/spectrum'),
     'mousetrap': path.join(__dirname, './node_modules/mousetrap'),
+    'tablesorter-metric': path.join(__dirname, './node_modules/tablesorter/dist/js/parsers/parser-metric.min'),
 
     // AciTree
     'jquery.acitree': path.join(__dirname, './node_modules/acitree/js/jquery.aciTree.min'),
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.