From 14caed2a2f7954cf6064588d3d84acc83d91a1b6 Mon Sep 17 00:00:00 2001 From: Paul Rogalinski Date: Sun, 10 May 2015 12:23:12 +0200 Subject: [PATCH] - sorting firmware selection by version and name --- tabs/firmware_flasher.js | 43 +++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/tabs/firmware_flasher.js b/tabs/firmware_flasher.js index 0b01ade9..9e1f811d 100755 --- a/tabs/firmware_flasher.js +++ b/tabs/firmware_flasher.js @@ -37,12 +37,11 @@ TABS.firmware_flasher.initialize = function (callback) { var buildFirmwareOptions = function(){ var releases_e = $('select[name="release"]').empty(); var showDevReleases = ($('input.show_development_releases').is(':checked')); - var optionIndex = 0; releases_e.append($("".format(chrome.i18n.getMessage('firmwareFlasherOptionLabelSelectFirmware')))); + var releaseDescritpors = []; TABS.firmware_flasher.releases.forEach(function(release){ release.assets.forEach(function(asset){ - optionIndex++; var targetFromFilenameExpression = /.*_(.*)\.(.*)/; var match = targetFromFilenameExpression.exec(asset.name); @@ -70,9 +69,10 @@ TABS.firmware_flasher.initialize = function (callback) { date.getMinutes() ); - var summary = { + var descriptor = { "releaseUrl": release.html_url, - "name" : release.name, + "name" : semver.clean(release.name), + "version" : release.tag_name, "url" : asset.browser_download_url, "file" : asset.name, "target" : target, @@ -81,18 +81,33 @@ TABS.firmware_flasher.initialize = function (callback) { "status" : release.prerelease ? "release-candidate" : "stable" }; - var select_e = - $("".format( - optionIndex, - summary.name, - summary.target, - summary.date, - summary.status - )).data('summary', summary); - - releases_e.append(select_e); + releaseDescritpors.push(descriptor); }); }); + + releaseDescritpors.sort(function(o1,o2){ + // compare versions descending + var cmpVal = semver(o2.version).compare(semver(o1.version)); + if (cmpVal == 0){ + // compare target names ascending + cmpVal = (o1.targeto2.target?1:0)); + } + return cmpVal; + }); + + var optionIndex = 0; + releaseDescritpors.forEach(function(descriptor){ + var select_e = + $("".format( + optionIndex++, + descriptor.name, + descriptor.target, + descriptor.date, + descriptor.status + )).data('summary', descriptor); + + releases_e.append(select_e); + }); };