@@ -422,24 +422,36 @@ export function notRelevantMessage(userContext: UseUserContextReturnType): strin
422
422
}
423
423
424
424
export function audienceStyle ( audienceString : string ) : string {
425
- switch ( audienceString ) {
426
- case stageLabelMap . a_level :
427
- return "stage-label-alevel" ;
428
- case stageLabelMap . gcse :
429
- return "stage-label-gcse" ;
430
- case stageLabelMap . scotland_national_5 :
431
- return "stage-label-national-5" ;
432
- case stageLabelMap . scotland_higher :
433
- return "stage-label-higher" ;
434
- case stageLabelMap . scotland_advanced_higher :
435
- return "stage-label-advanced-higher" ;
436
- case stageLabelMap . core :
437
- return "stage-label-core" ;
438
- case stageLabelMap . advanced :
439
- return "stage-label-advanced" ;
440
- default :
441
- return "stage-label-all" ;
442
- }
425
+ const audienceStages = audienceString . split ( '\n' ) . flatMap ( line => line . split ( ', ' ) ) ;
426
+
427
+ // Convert to css labels
428
+ const stageLabels = audienceStages . map (
429
+ stage => { switch ( stage ) {
430
+ case stageLabelMap . core :
431
+ case stageLabelMap . gcse :
432
+ case stageLabelMap . scotland_national_5 :
433
+ return "stage-label-core" ;
434
+
435
+ case stageLabelMap . advanced :
436
+ case stageLabelMap . a_level :
437
+ case stageLabelMap . scotland_advanced_higher :
438
+ return "stage-label-advanced" ;
439
+
440
+ case stageLabelMap . scotland_higher :
441
+ // Scotland higher has a unique styling
442
+ return "stage-label-higher" ;
443
+
444
+ default :
445
+ return "stage-label-all" ;
446
+ } }
447
+ ) ;
448
+ const uniqueLabels = audienceStages . length === 1
449
+ ? new Set ( stageLabels )
450
+ // If multiple stages are present group into "advanced" and "core"
451
+ : new Set ( stageLabels . map ( v => v === "stage-label-higher" ? "stage-label-advanced" : v ) ) ;
452
+
453
+ // If only one group exists use that colour, otherwise, use the mixed colour
454
+ return uniqueLabels . size === 1 ? uniqueLabels . values ( ) . next ( ) . value : "stage-label-all" ;
443
455
}
444
456
445
457
export function stringifyAudience ( audience : ContentDTO [ "audience" ] , userContext : UseUserContextReturnType , intendedAudience : boolean ) : string {
0 commit comments