@@ -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 } ) | - l e g a c y ) ? $ / ;
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 } ) - ) ? ( .* ) .c o n f i g $ / ;
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 ;
0 commit comments