1
0
Fork 0
mirror of https://github.com/iNavFlight/inav-configurator.git synced 2025-07-15 20:35:19 +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">

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

@ -29,69 +29,98 @@ 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]; var targetFromFilenameExpression = /.*_(.*)\.(.*)/;
for (var assetIndex = 0; assetIndex < assets.length; assetIndex++) { var match = targetFromFilenameExpression.exec(asset.name);
var asset = assets[assetIndex]; if (!showDevReleases && release.prerelease) {
var targetFromFilenameExpression = /.*_(.*)\.(.*)/; return;
var match = targetFromFilenameExpression.exec(asset.name); }
if (!match) {
continue;
}
var target = match[1];
var format = match[2];
if (format != 'hex') { if (!match) {
continue; return;
} }
var date = new Date(release.published_at); var target = match[1];
var formattedDate = "{0}-{1}-{2} {3}:{4}".format( var format = match[2];
date.getFullYear(),
date.getMonth() + 1,
date.getDate(),
date.getUTCHours(),
date.getMinutes()
);
var summary = {
"releaseUrl": release.html_url,
"name" : release.name,
"url" : asset.browser_download_url,
"file" : asset.name,
"target" : target,
"date" : formattedDate,
"notes" : release.body,
"status" : release.prerelease ? "release-candidate" : "stable"
};
var select_e = if (format != 'hex') {
$("<option value='{0}_{1}'>{2} {3} {4} ({5})</option>".format( return;
releaseIndex, }
assetIndex,
var date = new Date(release.published_at);
var formattedDate = "{0}-{1}-{2} {3}:{4}".format(
date.getFullYear(),
date.getMonth() + 1,
date.getDate(),
date.getUTCHours(),
date.getMinutes()
);
var summary = {
"releaseUrl": release.html_url,
"name" : release.name,
"url" : asset.browser_download_url,
"file" : asset.name,
"target" : target,
"date" : formattedDate,
"notes" : release.body,
"status" : release.prerelease ? "release-candidate" : "stable"
};
var select_e =
$("<option value='{0}'>{1} {2} {3} ({4})</option>".format(
optionIndex,
summary.name, summary.name,
summary.target, summary.target,
summary.date, summary.date,
summary.status summary.status
)).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() {