Hi Hackers,

In the attached patch, newly created columns in a table are sorted
according to their creation order rather than the alphanumerical order.
Previously this was not happening without context refresh.



Please review.

Thanks
Sathish V
diff --git a/web/pgadmin/browser/static/js/browser.js b/web/pgadmin/browser/static/js/browser.js
index 9a2980a..2c50ab0 100644
--- a/web/pgadmin/browser/static/js/browser.js
+++ b/web/pgadmin/browser/static/js/browser.js
@@ -1001,12 +1001,12 @@ define('pgadmin.browser', [
                   while (e >= s) {
                     i = items.eq(s);
                     var d = ctx.t.itemData(i);
-                    if (
-                      pgAdmin.natural_sort(
-                        d._label, _data._label
-                      ) == 1
-                    )
-                      return true;
+                    if(d._type==='column'){
+                      if (pgAdmin.numeric_comparator(d._id, _data._id) == 1) return true;
+                    }
+                    else{
+                      if (pgAdmin.natural_sort(d._label, _data._label) == 1) return true;
+                    }
                     s++;
                   }
                   if (e != items.length - 1) {
@@ -1026,24 +1026,48 @@ define('pgadmin.browser', [
                   while (e - s > 22) {
                     i = items.eq(s);
                     d = ctx.t.itemData(i);
-                    if (
-                      pgAdmin.natural_sort(
-                        d._label, _data._label
-                      ) != -1
-                    )
-                      return true;
+                    if(d._type==='column'){
+                      if (
+                        pgAdmin.numeric_comparator(
+                          d._id, _data._id
+                        ) != -1
+                      )
+                        return true;
+                    }
+                    else{
+                      if (
+                        pgAdmin.natural_sort(
+                          d._label, _data._label
+                        ) != -1
+                      )
+                        return true;
+                    }
                     i = items.eq(e);
                     d = ctx.t.itemData(i);
-                    if (
-                      pgAdmin.natural_sort(
-                        d._label, _data._label
-                      ) != 1
-                    )
-                      return true;
+                    if(d._type==='column'){
+                      if (
+                        pgAdmin.numeric_comparator(
+                          d._id, _data._id
+                        ) == -1)
+                        return false;
+                    }
+                    else{
+                      if (
+                        pgAdmin.natural_sort(
+                          d._label, _data._label
+                        ) != 1)
+                        return true;
+                    }
                     m = s + Math.round((e - s) / 2);
                     i = items.eq(m);
                     d = ctx.t.itemData(i);
-                    res = pgAdmin.natural_sort(d._label, _data._label);
+                    if(d._type==='column'){
+                      res = pgAdmin.numeric_comparator(d._id, _data._id);
+                    }
+                    else{
+                      res = pgAdmin.natural_sort(d._label, _data._label);
+                    }
+
                     if (res == 0)
                       return true;
 
diff --git a/web/pgadmin/static/js/pgadmin.js b/web/pgadmin/static/js/pgadmin.js
index 68a86af..8f36410 100644
--- a/web/pgadmin/static/js/pgadmin.js
+++ b/web/pgadmin/static/js/pgadmin.js
@@ -115,6 +115,15 @@ define([], function() {
     return 0;
   };
 
+  pgAdmin.numeric_comparator = function(a,b) {
+    a= parseInt(a);
+    b= parseInt(b);
+    if (a < b)
+      return -1 ;
+    else
+      return 1 ;
+  };
+
   /**
    * Decimal adjustment of a number.
    *

Reply via email to