1
0
Fork 0
mirror of https://github.com/iNavFlight/inav-configurator.git synced 2025-07-16 21:05:28 +03:00

checkbox to show dev releases, code refactoring

This commit is contained in:
Paul Rogalinski 2015-03-29 23:43:00 +02:00 committed by Dominic Clifton
parent 16e5ab57be
commit cabeba70f7
5 changed files with 2075 additions and 46 deletions

View file

@ -1029,6 +1029,12 @@
"firmwareFlasherFlashSlowlyDescription": { "firmwareFlasherFlashSlowlyDescription": {
"message": "Use 115200 baudrate for flashing (useful for flashing via bluetooth)" "message": "Use 115200 baudrate for flashing (useful for flashing via bluetooth)"
}, },
"firmwareFlasherShowDevelopmentReleases":{
"message": "Show unstable releases"
},
"firmwareFlasherShowDevelopmentReleasesDescription":{
"message": "Show Release-Candidates and Development Releases"
},
"firmwareFlasherOptionLabelSelectFirmware": { "firmwareFlasherOptionLabelSelectFirmware": {
"message": "Choose a Firmware / Board" "message": "Choose a Firmware / Board"
}, },

1986
js/libraries/q.js Executable file

File diff suppressed because it is too large Load diff

View file

@ -30,6 +30,7 @@
<link type="text/css" rel="stylesheet" href="./tabs/adjustments.css" media="all" /> <link type="text/css" rel="stylesheet" href="./tabs/adjustments.css" media="all" />
<link type="text/css" rel="stylesheet" href="./tabs/auxiliary.css" media="all" /> <link type="text/css" rel="stylesheet" href="./tabs/auxiliary.css" media="all" />
<script type="text/javascript" src="./js/libraries/q.js"></script>
<script type="text/javascript" src="./js/libraries/google-analytics-bundle.js"></script> <script type="text/javascript" src="./js/libraries/google-analytics-bundle.js"></script>
<script type="text/javascript" src="./js/libraries/jquery-2.1.3.min.js"></script> <script type="text/javascript" src="./js/libraries/jquery-2.1.3.min.js"></script>
<script type="text/javascript" src="./js/libraries/jquery-ui-1.11.2.min.js"></script> <script type="text/javascript" src="./js/libraries/jquery-ui-1.11.2.min.js"></script>

View file

@ -38,6 +38,13 @@
</label> </label>
<span class="description" i18n="firmwareFlasherFlashSlowlyDescription"></span> <span class="description" i18n="firmwareFlasherFlashSlowlyDescription"></span>
</div> </div>
<div class="option">
<label>
<input class="show_development_releases" type="checkbox" />
<span i18n="firmwareFlasherShowDevelopmentReleases"></span>
</label>
<span class="description" i18n="firmwareFlasherShowDevelopmentReleasesDescription"></span>
</div>
</div> </div>
<div class="clear-both"></div> <div class="clear-both"></div>
<div class="git_info"> <div class="git_info">

63
tabs/firmware_flasher.js Normal file → Executable file
View file

@ -29,28 +29,36 @@ TABS.firmware_flasher.initialize = function (callback) {
worker.postMessage(str); worker.postMessage(str);
} }
var processReleases = function (releases){
var releases_e = $('select[name="release"]').empty();
$('input.show_development_releases').click(function(){
buildFirmwareOptions();
});
var buildFirmwareOptions = function(){
var releases_e = $('select[name="release"]').empty();
var showDevReleases = ($('input.show_development_releases').is(':checked'));
var optionIndex = 0;
releases_e.append($("<option value='0'>{0}</option>".format(chrome.i18n.getMessage('firmwareFlasherOptionLabelSelectFirmware')))); releases_e.append($("<option value='0'>{0}</option>".format(chrome.i18n.getMessage('firmwareFlasherOptionLabelSelectFirmware'))));
for(var releaseIndex = 0; releaseIndex < releases.length; releaseIndex++){ TABS.firmware_flasher.releases.forEach(function(release){
$.get(releases[releaseIndex].assets_url).done( release.assets.forEach(function(asset){
(function (releases, releaseIndex, releases_e, assets){ optionIndex++;
var release = releases[releaseIndex];
for (var assetIndex = 0; assetIndex < assets.length; assetIndex++) {
var asset = assets[assetIndex];
var targetFromFilenameExpression = /.*_(.*)\.(.*)/; var targetFromFilenameExpression = /.*_(.*)\.(.*)/;
var match = targetFromFilenameExpression.exec(asset.name); var match = targetFromFilenameExpression.exec(asset.name);
if (!match) {
continue; if (!showDevReleases && release.prerelease) {
return;
} }
if (!match) {
return;
}
var target = match[1]; var target = match[1];
var format = match[2]; var format = match[2];
if (format != 'hex') { if (format != 'hex') {
continue; return;
} }
var date = new Date(release.published_at); var date = new Date(release.published_at);
@ -74,9 +82,8 @@ TABS.firmware_flasher.initialize = function (callback) {
}; };
var select_e = var select_e =
$("<option value='{0}_{1}'>{2} {3} {4} ({5})</option>".format( $("<option value='{0}'>{1} {2} {3} ({4})</option>".format(
releaseIndex, optionIndex,
assetIndex,
summary.name, summary.name,
summary.target, summary.target,
summary.date, summary.date,
@ -84,14 +91,36 @@ TABS.firmware_flasher.initialize = function (callback) {
)).data('summary', summary); )).data('summary', summary);
releases_e.append(select_e); releases_e.append(select_e);
});
});
};
var processReleases = function (releases){
var promises = [];
releases.forEach(function(release){
var promise = Q.defer();
promises.push(promise);
$.get(release.assets_url).
done(function(assets){
release.assets = assets;
promise.resolve(assets);
}
).
fail(function(reason){
promise.reject(reason);
} }
}).bind(this, releases, releaseIndex, releases_e)
); );
} });
Q.all(promises).then(function(){
buildFirmwareOptions();
})
}; };
$.get('https://api.github.com/repos/cleanflight/cleanflight/releases', function (releases){ $.get('https://api.github.com/repos/cleanflight/cleanflight/releases', function (releases){
processReleases(releases); processReleases(releases);
TABS.firmware_flasher.releases = releases;
// bind events // bind events
$('select[name="release"]').change(function() { $('select[name="release"]').change(function() {