Skip to content

Commit 23959ae

Browse files
committed
[server-1551] replaced sorting with compareVersions method.
- replaced sorting with compareVersions method. - added datatable custom sort options.
1 parent 085a5e3 commit 23959ae

File tree

2 files changed

+49
-15
lines changed

2 files changed

+49
-15
lines changed

frontend/express/public/javascripts/countly/countly.template.js

+49
Original file line numberDiff line numberDiff line change
@@ -2650,6 +2650,55 @@ var AppRouter = Backbone.Router.extend({
26502650
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
26512651
};
26522652

2653+
function compareVersions(a, b) {
2654+
var aParts = a.split('.');
2655+
var bParts = b.split('.');
2656+
2657+
for (var i = 0; i < aParts.length && i < bParts.length; i++) {
2658+
var aPartNum = parseInt(aParts[i], 10);
2659+
var bPartNum = parseInt(bParts[i], 10);
2660+
2661+
const cmp = Math.sign(aPartNum - bPartNum);
2662+
2663+
if (cmp !== 0) {
2664+
return cmp;
2665+
}
2666+
}
2667+
2668+
if (aParts.length === bParts.length) {
2669+
return 0;
2670+
}
2671+
2672+
let longestArray = aParts;
2673+
if (bParts.length > longestArray.length) {
2674+
longestArray = bParts;
2675+
}
2676+
2677+
const continueIndex = Math.min(aParts.length, bParts.length);
2678+
2679+
for (let i = continueIndex; i < longestArray.length; i += 1) {
2680+
if (parseInt(longestArray[i], 10) > 0) {
2681+
return longestArray === bParts ? -1 : +1;
2682+
}
2683+
}
2684+
2685+
return 0;
2686+
}
2687+
2688+
jQuery.fn.dataTableExt.oSort['app_versions-asc'] = function(x, y) {
2689+
var versions = [];
2690+
versions.push(x);
2691+
versions.push(y);
2692+
return versions.sort(compareVersions);
2693+
}
2694+
2695+
jQuery.fn.dataTableExt.oSort['app_versions-desc'] = function(x, y) {
2696+
var versions = [];
2697+
versions.push(x);
2698+
versions.push(y);
2699+
return versions.sort(compareVersions);
2700+
}
2701+
26532702
jQuery.fn.dataTableExt.oSort['format-ago-asc'] = function(x, y) {
26542703
return x - y;
26552704
};

frontend/express/public/javascripts/countly/countly.views.js

-15
Original file line numberDiff line numberDiff line change
@@ -1638,21 +1638,6 @@ window.AppVersionView = countlyView.extend({
16381638
"mData": "app_versions",
16391639
"sTitle": jQuery.i18n.map["app-versions.table.app-version"],
16401640
"mRender": function(d, type) {
1641-
if (type === "sort") {
1642-
var numbers = d.split(".");
1643-
var sortValue = 0;
1644-
var multipler = 10000;
1645-
for (var index in numbers) {
1646-
var valueArr = numbers[index].split("");
1647-
if (valueArr.length > 1) {
1648-
valueArr.splice(1, 0, '.');
1649-
numbers[index] = parseFloat(valueArr.join(""));
1650-
}
1651-
sortValue += multipler * parseFloat(numbers[index]);
1652-
multipler = multipler / 100;
1653-
}
1654-
d = sortValue;
1655-
}
16561641
return d;
16571642
}
16581643
},

0 commit comments

Comments
 (0)