فهرست منبع

AMBARI-8556. Sorting by non-string values is broken (onechiporenko)

Oleg Nechiporenko 10 سال پیش
والد
کامیت
753029ff55
2فایلهای تغییر یافته به همراه12 افزوده شده و 4 حذف شده
  1. 4 4
      ambari-web/app/views/common/sort_view.js
  2. 8 0
      ambari-web/test/views/common/sort_view_test.js

+ 4 - 4
ambari-web/app/views/common/sort_view.js

@@ -171,12 +171,12 @@ var wrapperView = Em.View.extend({
         };
         };
         break;
         break;
       case 'alert_status':
       case 'alert_status':
-        func = function(a, b) {
+        func = function (a, b) {
           var a_summary = a.get('summary'),
           var a_summary = a.get('summary'),
             b_summary = b.get('summary'),
             b_summary = b.get('summary'),
             st_order = a.get('severityOrder'),
             st_order = a.get('severityOrder'),
             ret = 0;
             ret = 0;
-          for(var i = 0; i < st_order.length; i++) {
+          for (var i = 0; i < st_order.length; i++) {
             var a_v = Em.isNone(a_summary[st_order[i]]) ? 0 : a_summary[st_order[i]],
             var a_v = Em.isNone(a_summary[st_order[i]]) ? 0 : a_summary[st_order[i]],
               b_v = Em.isNone(b_summary[st_order[i]]) ? 0 : b_summary[st_order[i]];
               b_v = Em.isNone(b_summary[st_order[i]]) ? 0 : b_summary[st_order[i]];
             ret = b_v - a_v;
             ret = b_v - a_v;
@@ -196,8 +196,8 @@ var wrapperView = Em.View.extend({
         func = function (a, b) {
         func = function (a, b) {
           var a_p = a.get(property.get('name'));
           var a_p = a.get(property.get('name'));
           var b_p = b.get(property.get('name'));
           var b_p = b.get(property.get('name'));
-          a_p = Em.isNone(a_p) ? '' : a_p;
-          b_p = Em.isNone(b_p) ? '' : b_p;
+          a_p = Em.isNone(a_p) ? '' : '' + a_p;
+          b_p = Em.isNone(b_p) ? '' : '' + b_p;
           return order ? a_p.localeCompare(b_p) : b_p.localeCompare(a_p)
           return order ? a_p.localeCompare(b_p) : b_p.localeCompare(a_p)
         };
         };
     }
     }

+ 8 - 0
ambari-web/test/views/common/sort_view_test.js

@@ -143,6 +143,14 @@ describe('#wrapperView', function () {
           });
           });
       });
       });
 
 
+      it('test non-string values', function () {
+        property = Em.Object.create({type: 'string', name: 'enabled'});
+        var func = sort.wrapperView.create().getSortFunc(property, true),
+        a = Em.Object.create({enabled: false}),
+        b = Em.Object.create({enabled: true});
+        expect(func(a, b)).to.equal(-1);
+      });
+
     });
     });
 
 
   });
   });