[TASK] Simple sort for firmware versions
This commit is contained in:
		
					parent
					
						
							
								90d2c3e444
							
						
					
				
			
			
				commit
				
					
						a2ab0dce4f
					
				
			
		
					 2 changed files with 5 additions and 71 deletions
				
			
		|  | @ -1,5 +1,5 @@ | |||
| define(["chroma-js", "virtual-dom", "filters/genericnode", "vercomp"], | ||||
|   function (Chroma, V, Filter, vercomp) { | ||||
| define(["chroma-js", "virtual-dom", "filters/genericnode"], | ||||
|   function (Chroma, V, Filter) { | ||||
| 
 | ||||
|     return function (config, filterManager) { | ||||
|       var self = this; | ||||
|  | @ -214,7 +214,9 @@ define(["chroma-js", "virtual-dom", "filters/genericnode", "vercomp"], | |||
|           return b[1] - a[1]; | ||||
|         })); | ||||
|         fillTable("Firmware", fwTable, fwDict.sort(function (a, b) { | ||||
|           return vercomp(b[0], a[0]); | ||||
|           if(b[0] < a[0]) return -1; | ||||
|           if(b[0] > a[0]) return 1; | ||||
|           return 0; | ||||
|         })); | ||||
|         fillTable("Hardware", hwTable, hwDict.sort(function (a, b) { | ||||
|           return b[1] - a[1]; | ||||
|  |  | |||
|  | @ -1,68 +0,0 @@ | |||
| define([], function () { | ||||
|   function order(c) { | ||||
|     if (/^\d$/.test(c)) { | ||||
|       return 0; | ||||
|     } else if (/^[a-z]$/i.test(c)) { | ||||
|       return c.charCodeAt(0); | ||||
|     } else if (c === "~") { | ||||
|       return -1; | ||||
|     } else if (c) { | ||||
|       return c.charCodeAt(0) + 256; | ||||
|     } else { | ||||
|       return 0; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   // Based on dpkg code
 | ||||
|   function vercomp(a, b) { | ||||
|     var apos = 0, bpos = 0; | ||||
|     while (apos < a.length || bpos < b.length) { | ||||
|       var firstDiff = 0; | ||||
| 
 | ||||
|       while ((apos < a.length && !/^\d$/.test(a[apos])) || (bpos < b.length && !/^\d$/.test(b[bpos]))) { | ||||
|         var ac = order(a[apos]); | ||||
|         var bc = order(b[bpos]); | ||||
| 
 | ||||
|         if (ac !== bc) { | ||||
|           return ac - bc; | ||||
|         } | ||||
| 
 | ||||
|         apos++; | ||||
|         bpos++; | ||||
|       } | ||||
| 
 | ||||
|       while (a[apos] === "0") { | ||||
|         apos++; | ||||
|       } | ||||
| 
 | ||||
|       while (b[bpos] === "0") { | ||||
|         bpos++; | ||||
|       } | ||||
| 
 | ||||
|       while (/^\d$/.test(a[apos]) && /^\d$/.test(b[bpos])) { | ||||
|         if (firstDiff === 0) { | ||||
|           firstDiff = a.charCodeAt(apos) - b.charCodeAt(bpos); | ||||
|         } | ||||
| 
 | ||||
|         apos++; | ||||
|         bpos++; | ||||
|       } | ||||
| 
 | ||||
|       if (/^\d$/.test(a[apos])) { | ||||
|         return 1; | ||||
|       } | ||||
| 
 | ||||
|       if (/^\d$/.test(b[bpos])) { | ||||
|         return -1; | ||||
|       } | ||||
| 
 | ||||
|       if (firstDiff !== 0) { | ||||
|         return firstDiff; | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     return 0; | ||||
|   } | ||||
| 
 | ||||
|   return vercomp; | ||||
| }); | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Xaver Maierhofer
				Xaver Maierhofer