Skip to content

Commit d8f7a32

Browse files
authored
Merge pull request #1055 from frknbasaran/server-1551
[server-1551] added custom sort algorithm for app_version field.
2 parents 416b889 + a997785 commit d8f7a32

File tree

2 files changed

+56
-1
lines changed

2 files changed

+56
-1
lines changed

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

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

2736+
/**
2737+
* Compare two versions
2738+
* @param {String} a, First version
2739+
* @param {String} b, Second version
2740+
* @returns {Number} returns -1, 0 or 1 by result of comparing
2741+
*/
2742+
function compareVersions(a, b) {
2743+
var aParts = a.split('.');
2744+
var bParts = b.split('.');
2745+
2746+
for (var j = 0; j < aParts.length && j < bParts.length; j++) {
2747+
var aPartNum = parseInt(aParts[j], 10);
2748+
var bPartNum = parseInt(bParts[j], 10);
2749+
2750+
var cmp = Math.sign(aPartNum - bPartNum);
2751+
2752+
if (cmp !== 0) {
2753+
return cmp;
2754+
}
2755+
}
2756+
2757+
if (aParts.length === bParts.length) {
2758+
return 0;
2759+
}
2760+
2761+
var longestArray = aParts;
2762+
if (bParts.length > longestArray.length) {
2763+
longestArray = bParts;
2764+
}
2765+
2766+
var continueIndex = Math.min(aParts.length, bParts.length);
2767+
2768+
for (var i = continueIndex; i < longestArray.length; i += 1) {
2769+
if (parseInt(longestArray[i], 10) > 0) {
2770+
return longestArray === bParts ? -1 : +1;
2771+
}
2772+
}
2773+
2774+
return 0;
2775+
}
2776+
2777+
jQuery.fn.dataTableExt.oSort['app_versions-asc'] = function(x, y) {
2778+
return compareVersions(x, y);
2779+
};
2780+
2781+
jQuery.fn.dataTableExt.oSort['app_versions-desc'] = function(x, y) {
2782+
return compareVersions(x, y);
2783+
};
2784+
27362785
jQuery.fn.dataTableExt.oSort['format-ago-asc'] = function(x, y) {
27372786
return x - y;
27382787
};

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

+7-1
Original file line numberDiff line numberDiff line change
@@ -1632,7 +1632,13 @@ window.AppVersionView = countlyView.extend({
16321632
this.dtable = $('.d-table').dataTable($.extend({}, $.fn.dataTable.defaults, {
16331633
"aaData": appVersionData.chartData,
16341634
"aoColumns": [
1635-
{ "mData": "app_versions", "sTitle": jQuery.i18n.map["app-versions.table.app-version"] },
1635+
{
1636+
"mData": "app_versions",
1637+
"sTitle": jQuery.i18n.map["app-versions.table.app-version"],
1638+
"mRender": function(d) {
1639+
return d;
1640+
}
1641+
},
16361642
{
16371643
"mData": "t",
16381644
"sType": "formatted-num",

0 commit comments

Comments
 (0)