@@ -2733,6 +2733,55 @@ var AppRouter = Backbone.Router.extend({
2733
2733
return ( ( x < y ) ? 1 : ( ( x > y ) ? - 1 : 0 ) ) ;
2734
2734
} ;
2735
2735
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
+
2736
2785
jQuery . fn . dataTableExt . oSort [ 'format-ago-asc' ] = function ( x , y ) {
2737
2786
return x - y ;
2738
2787
} ;
0 commit comments