1
0
Fork 0
mirror of https://github.com/betaflight/betaflight-configurator.git synced 2025-07-24 00:35:26 +03:00

Added support for Unified Target configurations with manufacturer_id in the name.

This commit is contained in:
mikeller 2019-09-27 01:31:12 +12:00 committed by Michael Keller
parent 074bb46f78
commit 261ebd7bbe
3 changed files with 73 additions and 33 deletions

View file

@ -2631,8 +2631,11 @@
"firmwareFlasherReleaseSummaryHead": { "firmwareFlasherReleaseSummaryHead": {
"message": "Release info" "message": "Release info"
}, },
"firmwareFlasherReleaseName": { "firmwareFlasherReleaseManufacturer": {
"message": "Name/Version:" "message": "Manufacturer:"
},
"firmwareFlasherReleaseVersion": {
"message": "Version:"
}, },
"firmwareFlasherReleaseVersionUrl": { "firmwareFlasherReleaseVersionUrl": {
"message": "Visit release page." "message": "Visit release page."

View file

@ -65,7 +65,19 @@ TABS.firmware_flasher.initialize = function (callback) {
self.enableFlashing(true); self.enableFlashing(true);
$('div.release_info .target').text(TABS.firmware_flasher.selectedBoard); let targetName = TABS.firmware_flasher.selectedBoard;
const TARGET_REGEXP = /^([^+-]+)(?:\+(.{1,4})|-legacy)?$/;
let targetParts = targetName.match(TARGET_REGEXP);
if (targetParts) {
targetName = targetParts[1];
if (targetParts[2]) {
$('div.release_info #manufacturerInfo').show();
$('div.release_info #manufacturer').text(targetParts[2]);
} else {
$('div.release_info #manufacturerInfo').hide();
}
}
$('div.release_info .target').text(targetName);
$('div.release_info .name').text(summary.version).prop('href', summary.releaseUrl); $('div.release_info .name').text(summary.version).prop('href', summary.releaseUrl);
$('div.release_info .date').text(summary.date); $('div.release_info .date').text(summary.date);
$('div.release_info .file').text(summary.file).prop('href', summary.url); $('div.release_info .file').text(summary.file).prop('href', summary.url);
@ -264,44 +276,57 @@ TABS.firmware_flasher.initialize = function (callback) {
let releases = {}; let releases = {};
let unifiedConfigs = {}; let unifiedConfigs = {};
let items = {}; let items = {};
let baseTargets = {}; let unifiedTargetNames = [];
data.forEach(function(target) { data.forEach(function(target) {
let targetName = target.name; const TARGET_REGEXP = /^(?:([^-]{1,4})-)?(.*).config$/;
if (targetName.endsWith('.config')) { let targetParts = target.name.match(TARGET_REGEXP);
targetName = targetName.slice(0,targetName.indexOf('.config')); if (!targetParts) {
} else {
return; return;
} }
unifiedConfigs[targetName]=target.download_url; let boardName = targetParts[2];
items[targetName] = "something"; let manufacturerId = targetParts[1];
let targetName;
let displayName;
if (manufacturerId) {
targetName = `${boardName}+${manufacturerId}`;
displayName = `${boardName} (${manufacturerId})`;
} else {
targetName = boardName;
}
unifiedTargetNames.push(boardName);
unifiedConfigs[targetName] = target.download_url;
items[targetName] = { displayName: displayName };
// Chicken and egg problem: We need to know what Unified Target this configuration uses before reading the configuration.
// Solving this by assuming that all Unified Targets have the same availability for now.
const DEFAULT_UNIFIED_TARGET_NAME = "STM32F405";
releases[targetName] = builds[DEFAULT_UNIFIED_TARGET_NAME];
}); });
Object.keys(builds).forEach(function (key) { Object.keys(builds).forEach(function (key) {
// releases is under the hood, so we can have duplicate entries let targetName;
var legacyKey = key + " (Legacy)"; let displayName;
if (unifiedConfigs[key] === undefined) { if (unifiedTargetNames.includes(key)) {
items[key] = "something"; targetName = `${key}-legacy`;
releases[key] = builds[key]; displayName = i18n.getMessage("firmwareFlasherLegacyLabel", { target: key });
} else { } else {
items[legacyKey] = "i18nplz"; targetName = key;
baseTargets[legacyKey] = key;
releases[legacyKey] = builds[key];
releases[key] = builds[key];
} }
items[targetName] = { displayName: displayName };
releases[targetName] = builds[key];
}); });
$('select[name="board"]').empty()
.append($("<option value='0' i18n='firmwareFlasherOptionLabelSelectBoard'></option>"));
$('select[name="firmware_version"]').empty()
.append($("<option value='0' i18n='firmwareFlasherOptionLabelSelectFirmwareVersion'></option>"));
var boards_e = $('select[name="board"]'); var boards_e = $('select[name="board"]');
var versions_e = $('select[name="firmware_version"]'); var versions_e = $('select[name="firmware_version"]');
boards_e.empty()
.append($("<option value='0' i18n='firmwareFlasherOptionLabelSelectBoard'></option>"));
versions_e.empty()
.append($("<option value='0' i18n='firmwareFlasherOptionLabelSelectFirmwareVersion'></option>"));
var selectTargets = []; var selectTargets = [];
Object.keys(items) Object.keys(items)
.sort() .sort()
.forEach(function(target, i) { .forEach(function(target, i) {
var select_e = $("<option value='{0}'>{1}</option>".format(target, let item = items[target];
items[target] === "i18nplz" ? i18n.getMessage("firmwareFlasherLegacyLabel",
{target: baseTargets[target]}) : target)); var select_e = $("<option value='{0}'>{1}</option>".format(target, items[target].displayName || target));
boards_e.append(select_e); boards_e.append(select_e);
}); });
TABS.firmware_flasher.releases = releases; TABS.firmware_flasher.releases = releases;

View file

@ -88,12 +88,24 @@
i18n="firmwareFlasherReleaseSummaryHead"></div> i18n="firmwareFlasherReleaseSummaryHead"></div>
</div> </div>
<div class="spacer" style="margin-bottom: 10px;"> <div class="spacer" style="margin-bottom: 10px;">
<strong i18n="firmwareFlasherReleaseTarget"></strong> <span class="target"></span><br /> <strong <strong i18n="firmwareFlasherReleaseTarget"></strong>
i18n="firmwareFlasherReleaseName"></strong> <a i18n_title="firmwareFlasherReleaseVersionUrl" class="name" <span class="target"></span>
href="#" target="_blank"></a><br /> <strong i18n="firmwareFlasherReleaseFile"></strong> <a <br />
i18n_title="firmwareFlasherReleaseFileUrl" class="file" href="#" target="_blank"></a><br /> <strong <div id="manufacturerInfo">
i18n="firmwareFlasherReleaseDate"></strong> <span class="date"></span><br /> <strong <strong i18n="firmwareFlasherReleaseManufacturer"></strong>
i18n="firmwareFlasherReleaseNotes"></strong> <span id="manufacturer"></span>
<br />
</div>
<strong i18n="firmwareFlasherReleaseVersion"></strong>
<a i18n_title="firmwareFlasherReleaseVersionUrl" class="name" href="#" target="_blank"></a>
<br />
<strong i18n="firmwareFlasherReleaseFile"></strong>
<a i18n_title="firmwareFlasherReleaseFileUrl" class="file" href="#" target="_blank"></a>
<br />
<strong i18n="firmwareFlasherReleaseDate"></strong>
<span class="date"></span>
<br />
<strong i18n="firmwareFlasherReleaseNotes"></strong>
<div class=notes></div> <div class=notes></div>
</div> </div>
</div> </div>