Skip to content

Commit 7cb8635

Browse files
authored
Added support for Unified Target configurations with manufactur… (#1692)
Added support for Unified Target configurations with manufacturer_id in the name.
2 parents 074bb46 + 261ebd7 commit 7cb8635

File tree

3 files changed

+72
-32
lines changed

3 files changed

+72
-32
lines changed

locales/en/messages.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2631,8 +2631,11 @@
26312631
"firmwareFlasherReleaseSummaryHead": {
26322632
"message": "Release info"
26332633
},
2634-
"firmwareFlasherReleaseName": {
2635-
"message": "Name/Version:"
2634+
"firmwareFlasherReleaseManufacturer": {
2635+
"message": "Manufacturer:"
2636+
},
2637+
"firmwareFlasherReleaseVersion": {
2638+
"message": "Version:"
26362639
},
26372640
"firmwareFlasherReleaseVersionUrl": {
26382641
"message": "Visit release page."

src/js/tabs/firmware_flasher.js

Lines changed: 49 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,19 @@ TABS.firmware_flasher.initialize = function (callback) {
6565

6666
self.enableFlashing(true);
6767

68-
$('div.release_info .target').text(TABS.firmware_flasher.selectedBoard);
68+
let targetName = TABS.firmware_flasher.selectedBoard;
69+
const TARGET_REGEXP = /^([^+-]+)(?:\+(.{1,4})|-legacy)?$/;
70+
let targetParts = targetName.match(TARGET_REGEXP);
71+
if (targetParts) {
72+
targetName = targetParts[1];
73+
if (targetParts[2]) {
74+
$('div.release_info #manufacturerInfo').show();
75+
$('div.release_info #manufacturer').text(targetParts[2]);
76+
} else {
77+
$('div.release_info #manufacturerInfo').hide();
78+
}
79+
}
80+
$('div.release_info .target').text(targetName);
6981
$('div.release_info .name').text(summary.version).prop('href', summary.releaseUrl);
7082
$('div.release_info .date').text(summary.date);
7183
$('div.release_info .file').text(summary.file).prop('href', summary.url);
@@ -264,44 +276,57 @@ TABS.firmware_flasher.initialize = function (callback) {
264276
let releases = {};
265277
let unifiedConfigs = {};
266278
let items = {};
267-
let baseTargets = {};
279+
let unifiedTargetNames = [];
268280
data.forEach(function(target) {
269-
let targetName = target.name;
270-
if (targetName.endsWith('.config')) {
271-
targetName = targetName.slice(0,targetName.indexOf('.config'));
272-
} else {
281+
const TARGET_REGEXP = /^(?:([^-]{1,4})-)?(.*).config$/;
282+
let targetParts = target.name.match(TARGET_REGEXP);
283+
if (!targetParts) {
273284
return;
274285
}
275-
unifiedConfigs[targetName]=target.download_url;
276-
items[targetName] = "something";
286+
let boardName = targetParts[2];
287+
let manufacturerId = targetParts[1];
288+
let targetName;
289+
let displayName;
290+
if (manufacturerId) {
291+
targetName = `${boardName}+${manufacturerId}`;
292+
displayName = `${boardName} (${manufacturerId})`;
293+
} else {
294+
targetName = boardName;
295+
}
296+
unifiedTargetNames.push(boardName);
297+
unifiedConfigs[targetName] = target.download_url;
298+
items[targetName] = { displayName: displayName };
299+
// Chicken and egg problem: We need to know what Unified Target this configuration uses before reading the configuration.
300+
// Solving this by assuming that all Unified Targets have the same availability for now.
301+
const DEFAULT_UNIFIED_TARGET_NAME = "STM32F405";
302+
releases[targetName] = builds[DEFAULT_UNIFIED_TARGET_NAME];
277303
});
278304
Object.keys(builds).forEach(function (key) {
279-
// releases is under the hood, so we can have duplicate entries
280-
var legacyKey = key + " (Legacy)";
281-
if (unifiedConfigs[key] === undefined) {
282-
items[key] = "something";
283-
releases[key] = builds[key];
305+
let targetName;
306+
let displayName;
307+
if (unifiedTargetNames.includes(key)) {
308+
targetName = `${key}-legacy`;
309+
displayName = i18n.getMessage("firmwareFlasherLegacyLabel", { target: key });
284310
} else {
285-
items[legacyKey] = "i18nplz";
286-
baseTargets[legacyKey] = key;
287-
releases[legacyKey] = builds[key];
288-
releases[key] = builds[key];
311+
targetName = key;
289312
}
313+
items[targetName] = { displayName: displayName };
314+
releases[targetName] = builds[key];
290315
});
291-
$('select[name="board"]').empty()
316+
var boards_e = $('select[name="board"]');
317+
var versions_e = $('select[name="firmware_version"]');
318+
boards_e.empty()
292319
.append($("<option value='0' i18n='firmwareFlasherOptionLabelSelectBoard'></option>"));
293320

294-
$('select[name="firmware_version"]').empty()
321+
versions_e.empty()
295322
.append($("<option value='0' i18n='firmwareFlasherOptionLabelSelectFirmwareVersion'></option>"));
296-
var boards_e = $('select[name="board"]');
297-
var versions_e = $('select[name="firmware_version"]');
298323
var selectTargets = [];
299324
Object.keys(items)
300325
.sort()
301326
.forEach(function(target, i) {
302-
var select_e = $("<option value='{0}'>{1}</option>".format(target,
303-
items[target] === "i18nplz" ? i18n.getMessage("firmwareFlasherLegacyLabel",
304-
{target: baseTargets[target]}) : target));
327+
let item = items[target];
328+
329+
var select_e = $("<option value='{0}'>{1}</option>".format(target, items[target].displayName || target));
305330
boards_e.append(select_e);
306331
});
307332
TABS.firmware_flasher.releases = releases;

src/tabs/firmware_flasher.html

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,24 @@
8888
i18n="firmwareFlasherReleaseSummaryHead"></div>
8989
</div>
9090
<div class="spacer" style="margin-bottom: 10px;">
91-
<strong i18n="firmwareFlasherReleaseTarget"></strong> <span class="target"></span><br /> <strong
92-
i18n="firmwareFlasherReleaseName"></strong> <a i18n_title="firmwareFlasherReleaseVersionUrl" class="name"
93-
href="#" target="_blank"></a><br /> <strong i18n="firmwareFlasherReleaseFile"></strong> <a
94-
i18n_title="firmwareFlasherReleaseFileUrl" class="file" href="#" target="_blank"></a><br /> <strong
95-
i18n="firmwareFlasherReleaseDate"></strong> <span class="date"></span><br /> <strong
96-
i18n="firmwareFlasherReleaseNotes"></strong>
91+
<strong i18n="firmwareFlasherReleaseTarget"></strong>
92+
<span class="target"></span>
93+
<br />
94+
<div id="manufacturerInfo">
95+
<strong i18n="firmwareFlasherReleaseManufacturer"></strong>
96+
<span id="manufacturer"></span>
97+
<br />
98+
</div>
99+
<strong i18n="firmwareFlasherReleaseVersion"></strong>
100+
<a i18n_title="firmwareFlasherReleaseVersionUrl" class="name" href="#" target="_blank"></a>
101+
<br />
102+
<strong i18n="firmwareFlasherReleaseFile"></strong>
103+
<a i18n_title="firmwareFlasherReleaseFileUrl" class="file" href="#" target="_blank"></a>
104+
<br />
105+
<strong i18n="firmwareFlasherReleaseDate"></strong>
106+
<span class="date"></span>
107+
<br />
108+
<strong i18n="firmwareFlasherReleaseNotes"></strong>
97109
<div class=notes></div>
98110
</div>
99111
</div>

0 commit comments

Comments
 (0)