mirror of
https://github.com/betaflight/betaflight-configurator.git
synced 2025-07-15 12:25:15 +03:00
clean up, refactor a little
This commit is contained in:
parent
f7275c25f3
commit
0c4e53e4aa
1 changed files with 32 additions and 43 deletions
|
@ -1,5 +1,5 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
//i18n
|
|
||||||
TABS.firmware_flasher = {
|
TABS.firmware_flasher = {
|
||||||
releases: null,
|
releases: null,
|
||||||
releaseChecker: new ReleaseChecker('firmware', 'https://api.github.com/repos/betaflight/betaflight/releases'),
|
releaseChecker: new ReleaseChecker('firmware', 'https://api.github.com/repos/betaflight/betaflight/releases'),
|
||||||
|
@ -21,14 +21,10 @@ TABS.firmware_flasher.initialize = function (callback) {
|
||||||
var isConfigLocal = false; // Set to true if the user loads one locally
|
var isConfigLocal = false; // Set to true if the user loads one locally
|
||||||
var unifiedConfig; // Unified target configuration loaded from the menu, used when throwing out a local config
|
var unifiedConfig; // Unified target configuration loaded from the menu, used when throwing out a local config
|
||||||
|
|
||||||
// Is there a list of these elsewhere?, used in parseUnifiedBuilds and ... look for unifiedTargets[0]
|
|
||||||
var unifiedTargets = [ 'STM32F411', 'STM32F405', 'STM32F745', 'STM32F7X2' ];
|
|
||||||
self.peekTargetConfig = function () { // This maybe should get removed before merging.
|
self.peekTargetConfig = function () { // This maybe should get removed before merging.
|
||||||
return targetConfig;
|
return targetConfig;
|
||||||
}
|
}
|
||||||
var unifiedSource = 'https://api.github.com/repos/betaflight/unified-targets/contents/configs';
|
var unifiedSource = 'https://api.github.com/repos/betaflight/unified-targets/contents/configs/default';
|
||||||
//unifiedSource = 'https://api.github.com/repos/betaflight/betaflight/contents/unified_targets/configs';
|
|
||||||
//unifiedSource = 'http://localhost'; // handy way to force a failure
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -160,8 +156,8 @@ TABS.firmware_flasher.initialize = function (callback) {
|
||||||
var releases = {};
|
var releases = {};
|
||||||
var sortedTargets = [];
|
var sortedTargets = [];
|
||||||
var unsortedTargets = [];
|
var unsortedTargets = [];
|
||||||
releaseData.forEach(function(release){
|
releaseData.forEach(function(release) {
|
||||||
release.assets.forEach(function(asset){
|
release.assets.forEach(function(asset) {
|
||||||
var targetFromFilenameExpression = /betaflight_([\d.]+)?_?(\w+)(\-.*)?\.(.*)/;
|
var targetFromFilenameExpression = /betaflight_([\d.]+)?_?(\w+)(\-.*)?\.(.*)/;
|
||||||
var match = targetFromFilenameExpression.exec(asset.name);
|
var match = targetFromFilenameExpression.exec(asset.name);
|
||||||
if ((!showDevReleases && release.prerelease) || !match) {
|
if ((!showDevReleases && release.prerelease) || !match) {
|
||||||
|
@ -177,11 +173,11 @@ TABS.firmware_flasher.initialize = function (callback) {
|
||||||
sortedTargets.forEach(function(release) {
|
sortedTargets.forEach(function(release) {
|
||||||
releases[release] = [];
|
releases[release] = [];
|
||||||
});
|
});
|
||||||
releaseData.forEach(function(release){
|
releaseData.forEach(function(release) {
|
||||||
var versionFromTagExpression = /v?(.*)/;
|
var versionFromTagExpression = /v?(.*)/;
|
||||||
var matchVersionFromTag = versionFromTagExpression.exec(release.tag_name);
|
var matchVersionFromTag = versionFromTagExpression.exec(release.tag_name);
|
||||||
var version = matchVersionFromTag[1];
|
var version = matchVersionFromTag[1];
|
||||||
release.assets.forEach(function(asset){
|
release.assets.forEach(function(asset) {
|
||||||
var targetFromFilenameExpression = /betaflight_([\d.]+)?_?(\w+)(\-.*)?\.(.*)/;
|
var targetFromFilenameExpression = /betaflight_([\d.]+)?_?(\w+)(\-.*)?\.(.*)/;
|
||||||
var match = targetFromFilenameExpression.exec(asset.name);
|
var match = targetFromFilenameExpression.exec(asset.name);
|
||||||
if ((!showDevReleases && release.prerelease) || !match) {
|
if ((!showDevReleases && release.prerelease) || !match) {
|
||||||
|
@ -193,7 +189,7 @@ TABS.firmware_flasher.initialize = function (callback) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var date = new Date(release.published_at);
|
var date = new Date(release.published_at);
|
||||||
var formattedDate = ("0" + date.getDate()).slice(-2) + "-" + ("0"+(date.getMonth()+1)).slice(-2) + "-" + date.getFullYear() + " " + ("0" + date.getHours()).slice(-2) + ":" + ("0" + date.getMinutes()).slice(-2);
|
var formattedDate = ("0" + date.getDate()).slice(-2) + "-" + ("0" + (date.getMonth() + 1)).slice(-2) + "-" + date.getFullYear() + " " + ("0" + date.getHours()).slice(-2) + ":" + ("0" + date.getMinutes()).slice(-2);
|
||||||
var descriptor = {
|
var descriptor = {
|
||||||
"releaseUrl": release.html_url,
|
"releaseUrl": release.html_url,
|
||||||
"name" : version,
|
"name" : version,
|
||||||
|
@ -208,35 +204,36 @@ TABS.firmware_flasher.initialize = function (callback) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
loadUnifiedBuilds(releases);
|
loadUnifiedBuilds(releases);
|
||||||
//TABS.firmware_flasher.saveReleases = releases;
|
|
||||||
//console.log('loaded some board options for later');
|
|
||||||
};
|
};
|
||||||
|
|
||||||
function loadUnifiedBuilds(builds) {
|
function loadUnifiedBuilds(builds) {
|
||||||
var expirationPeriod = 3600; // One of your earth hours.
|
var expirationPeriod = 3600 * 2; // Two of your earth hours.
|
||||||
var checkTime = Math.floor(Date.now()/1000); // Lets deal in seconds.
|
var checkTime = Math.floor(Date.now() / 1000); // Lets deal in seconds.
|
||||||
// unifiedTargets[0] is STM32F411
|
// Come back to this, how to handle build type without unified targets?
|
||||||
if (builds && builds[unifiedTargets[0]]) {
|
if (builds && builds["STM32F411"]) {
|
||||||
console.log('loaded some builds for later');
|
console.log('loaded some builds for later');
|
||||||
var storageTag = 'unifiedSourceCache';
|
var storageTag = 'unifiedSourceCache';
|
||||||
chrome.storage.local.get(storageTag, function (result) {
|
chrome.storage.local.get(storageTag, function (result) {
|
||||||
let storageObj = result[storageTag];
|
let storageObj = result[storageTag];
|
||||||
if(!storageObj || !storageObj.lastUpdate || checkTime - storageObj.lastUpdate > expirationPeriod ) {
|
if(!storageObj || !storageObj.lastUpdate || checkTime - storageObj.lastUpdate > expirationPeriod ) {
|
||||||
console.log('go get', unifiedSource);
|
console.log('go get', unifiedSource);
|
||||||
$.get(unifiedSource, function(data,textStatus,jqXHR) {
|
$.get(unifiedSource, function(data, textStatus, jqXHR) {
|
||||||
let newObj = {};
|
// Cache the information for later use.
|
||||||
newObj[storageTag]={};
|
let newStorageObj = {};
|
||||||
newObj[storageTag].lastUpdate=checkTime;
|
let newDataObj = {};
|
||||||
newObj[storageTag].data=data;
|
newDataObj.lastUpdate = checkTime;
|
||||||
chrome.storage.local.set(newObj);
|
newDataObj.data = data;
|
||||||
|
newStorageObj[storageTag] = newDataObj;
|
||||||
|
chrome.storage.local.set(newStorageObj);
|
||||||
|
|
||||||
parseUnifiedBuilds(data, builds);
|
parseUnifiedBuilds(data, builds);
|
||||||
}).fail(xhr => {
|
}).fail(xhr => {
|
||||||
console.log('failed to get new', unifiedSource, 'cached data',Math.floor((checkTime - storageObj.lastUpdate)/60),'mins old');
|
console.log('failed to get new', unifiedSource, 'cached data', Math.floor((checkTime - storageObj.lastUpdate) / 60), 'mins old');
|
||||||
parseUnifiedBuilds(storageObj.data, builds);
|
parseUnifiedBuilds(storageObj.data, builds);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// In the event that the cache is okay
|
// In the event that the cache is okay
|
||||||
console.log('unified config cached data',Math.floor((checkTime - storageObj.lastUpdate)/60),'mins old');
|
console.log('unified config cached data', Math.floor((checkTime - storageObj.lastUpdate)/60), 'mins old');
|
||||||
parseUnifiedBuilds(storageObj.data, builds);
|
parseUnifiedBuilds(storageObj.data, builds);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -262,11 +259,7 @@ TABS.firmware_flasher.initialize = function (callback) {
|
||||||
items[targetName] = "something";
|
items[targetName] = "something";
|
||||||
});
|
});
|
||||||
Object.keys(builds).forEach(function (key) {
|
Object.keys(builds).forEach(function (key) {
|
||||||
// unifiedTargets is our list above of 4 targets
|
// releases is under the hood, so we can have duplicate entries
|
||||||
if (unifiedTargets.includes(key)) {
|
|
||||||
items[key] = "something";
|
|
||||||
releases[key] = builds[key];
|
|
||||||
} else {
|
|
||||||
var legacyKey = key + " (Legacy)";
|
var legacyKey = key + " (Legacy)";
|
||||||
if (unifiedConfigs[key] === undefined) {
|
if (unifiedConfigs[key] === undefined) {
|
||||||
items[key] = "something";
|
items[key] = "something";
|
||||||
|
@ -275,7 +268,7 @@ TABS.firmware_flasher.initialize = function (callback) {
|
||||||
items[legacyKey] = "i18nplz";
|
items[legacyKey] = "i18nplz";
|
||||||
baseTargets[legacyKey] = key;
|
baseTargets[legacyKey] = key;
|
||||||
releases[legacyKey] = builds[key];
|
releases[legacyKey] = builds[key];
|
||||||
}
|
releases[key] = builds[key];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$('select[name="board"]').empty()
|
$('select[name="board"]').empty()
|
||||||
|
@ -289,7 +282,6 @@ TABS.firmware_flasher.initialize = function (callback) {
|
||||||
Object.keys(items)
|
Object.keys(items)
|
||||||
.sort()
|
.sort()
|
||||||
.forEach(function(target, i) {
|
.forEach(function(target, i) {
|
||||||
//console.log(items);console.log('target', items[target]);
|
|
||||||
var select_e = $("<option value='{0}'>{1}</option>".format(target,
|
var select_e = $("<option value='{0}'>{1}</option>".format(target,
|
||||||
items[target] === "i18nplz" ? i18n.getMessage("firmwareFlasherLegacyLabel",
|
items[target] === "i18nplz" ? i18n.getMessage("firmwareFlasherLegacyLabel",
|
||||||
{target: baseTargets[target]}) : target));
|
{target: baseTargets[target]}) : target));
|
||||||
|
@ -370,7 +362,7 @@ TABS.firmware_flasher.initialize = function (callback) {
|
||||||
|
|
||||||
var expertMode_e = $('.tab-firmware_flasher input.expert_mode');
|
var expertMode_e = $('.tab-firmware_flasher input.expert_mode');
|
||||||
expertMode_e.prop('checked', globalExpertMode_e.is(':checked'));
|
expertMode_e.prop('checked', globalExpertMode_e.is(':checked'));
|
||||||
$('input.show_development_releases').change(showOrHideBuildTypes); //.change();
|
$('input.show_development_releases').change(showOrHideBuildTypes).change();
|
||||||
expertMode_e.change(showOrHideBuildTypeSelect).change();
|
expertMode_e.change(showOrHideBuildTypeSelect).change();
|
||||||
|
|
||||||
// translate to user-selected language
|
// translate to user-selected language
|
||||||
|
@ -403,9 +395,8 @@ TABS.firmware_flasher.initialize = function (callback) {
|
||||||
versions_element.append($("<option value='0'>{0} {1}</option>".format(i18n.getMessage('firmwareFlasherOptionLabelSelectFirmwareVersionFor'), target)));
|
versions_element.append($("<option value='0'>{0} {1}</option>".format(i18n.getMessage('firmwareFlasherOptionLabelSelectFirmwareVersionFor'), target)));
|
||||||
targetVersions.forEach(function(descriptor) {
|
targetVersions.forEach(function(descriptor) {
|
||||||
var select_e =
|
var select_e =
|
||||||
$("<option value='{0}'>{0} - {1} - {2}</option>".format(
|
$("<option value='{0}'>{0} - {1}</option>".format(
|
||||||
descriptor.version,
|
descriptor.version,
|
||||||
descriptor.target,
|
|
||||||
descriptor.date
|
descriptor.date
|
||||||
))
|
))
|
||||||
.css("font-weight", FirmwareCache.has(descriptor)
|
.css("font-weight", FirmwareCache.has(descriptor)
|
||||||
|
@ -449,14 +440,12 @@ TABS.firmware_flasher.initialize = function (callback) {
|
||||||
if (TABS.firmware_flasher.unifiedConfigs[target]) {
|
if (TABS.firmware_flasher.unifiedConfigs[target]) {
|
||||||
var storageTag = 'unifiedConfigLast';
|
var storageTag = 'unifiedConfigLast';
|
||||||
var expirationPeriod = 3600; // One of your earth hours.
|
var expirationPeriod = 3600; // One of your earth hours.
|
||||||
var checkTime = Math.floor(Date.now()/1000); // Lets deal in seconds.
|
var checkTime = Math.floor(Date.now() / 1000); // Lets deal in seconds.
|
||||||
chrome.storage.local.get(storageTag, function (result) {
|
chrome.storage.local.get(storageTag, function (result) {
|
||||||
let storageObj = result[storageTag];
|
let storageObj = result[storageTag];
|
||||||
let bareBoard = null;
|
let bareBoard = null;
|
||||||
//bareBoard = 'STM32F405';
|
|
||||||
if (!storageObj || !storageObj.target || storageObj.target != target) {
|
if (!storageObj || !storageObj.target || storageObj.target != target) {
|
||||||
// Have to go and try and get the unified config, and then do stuff
|
// Have to go and try and get the unified config, and then do stuff
|
||||||
//console.log('url',TABS.firmware_flasher.unifiedConfigs[target]);
|
|
||||||
$.get(TABS.firmware_flasher.unifiedConfigs[target], function(data) {
|
$.get(TABS.firmware_flasher.unifiedConfigs[target], function(data) {
|
||||||
console.log('got unified config');
|
console.log('got unified config');
|
||||||
let tempObj = {};
|
let tempObj = {};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue