@@ -117,10 +117,14 @@ export const RunsPerDataPassOverviewPage = ({
117117
118118 const commonTitle = h ( 'h2#breadcrumb-header' , { style : 'white-space: nowrap;' } , 'Physics Runs' ) ;
119119 const runDetectorsSelectionIsEmpty = perDataPassOverviewModel . runDetectorsSelectionModel . selectedQueryString . length === 0 ;
120+ const dataPass = remoteDataPass . match ( { Other : ( ) => null , Success : ( data ) => data } ) ;
121+ const detectors = remoteDetectors . match ( { Other : ( ) => null , Success : ( data ) => data } ) ;
122+ const qcSummary = remoteQcSummary . match ( { Other : ( ) => null , Success : ( data ) => data } ) ;
120123
121124 const activeColumns = {
122125 ...runsActiveColumns ,
123126 ...getInelasticInteractionRateColumns ( pdpBeamTypes ) ,
127+
124128 globalAggregatedQuality : {
125129 name : 'GAQ' ,
126130 information : h (
@@ -129,69 +133,84 @@ export const RunsPerDataPassOverviewPage = ({
129133 h ( '' , 'Default detectors: FT0, ITS, TPC (and ZDC for heavy-ion runs)' ) ,
130134 ) ,
131135 visible : true ,
136+
132137 format : ( _ , { runNumber } ) => {
133- const gaqLoadingSpinner = h ( '.flex-row.items-center.justify-center.black' , spinner ( { size : 2 , absolute : false } ) ) ;
138+ const spinnerEl = h ( '.flex-row.items-center.justify-center.black' , spinner ( { size : 2 , absolute : false } ) ) ;
139+
134140 const runGaqSummary = remoteGaqSummary [ runNumber ] ;
135141
136142 return runGaqSummary . match ( {
137143 Success : ( gaqSummary ) => {
138- const gaqDisplay = gaqSummary ?. undefinedQualityPeriodsCount === 0
139- ? getQcSummaryDisplay ( gaqSummary )
140- : h ( 'button.btn.btn-primary.w-100' , 'GAQ' ) ;
144+ const gaqDisplay =
145+ gaqSummary ?. undefinedQualityPeriodsCount === 0
146+ ? getQcSummaryDisplay ( gaqSummary )
147+ : h ( 'button.btn.btn-primary.w-100' , 'GAQ' ) ;
141148
142149 return frontLink ( gaqDisplay , 'gaq-flags' , { dataPassId, runNumber } ) ;
143150 } ,
144- Loading : ( ) => tooltip ( gaqLoadingSpinner , 'Loading GAQ summary...' ) ,
145- NotAsked : ( ) => tooltip ( gaqLoadingSpinner , 'Loading GAQ summary...' ) ,
146- Failure : ( ) => {
147- const gaqDisplay = h ( 'button.btn.btn-primary.w-100' , [
148- 'GAQ' ,
149- h (
150- '.d-inline-block.va-t-bottom' ,
151- tooltip ( h ( '.f7' , iconWarning ( ) ) , 'GAQ Summary failed, please click to view GAQ flags' ) ,
152- ) ,
153- ] ) ;
154- return frontLink ( gaqDisplay , 'gaq-flags' , { dataPassId, runNumber } ) ;
155- } ,
151+
152+ Loading : ( ) => loadingTooltip ( spinnerEl ) ,
153+ NotAsked : ( ) => loadingTooltip ( spinnerEl ) ,
154+
155+ Failure : ( ) =>
156+ frontLink (
157+ h ( 'button.btn.btn-primary.w-100' , [
158+ 'GAQ' ,
159+ h (
160+ '.d-inline-block.va-t-bottom' ,
161+ tooltip (
162+ h ( '.f7' , iconWarning ( ) ) ,
163+ 'GAQ Summary failed, please click to view GAQ flags' ,
164+ ) ,
165+ ) ,
166+ ] ) ,
167+ 'gaq-flags' ,
168+ { dataPassId, runNumber } ,
169+ ) ,
156170 } ) ;
157171 } ,
158- filter : ( { filteringModel } ) => numericalComparisonFilter (
159- filteringModel . get ( 'gaq[notBadFraction]' ) ,
160- { step : 0.1 , selectorPrefix : 'gaqNotBadFraction' } ,
161- ) ,
172+
173+ filter : ( { filteringModel } ) =>
174+ numericalComparisonFilter (
175+ filteringModel . get ( 'gaq[notBadFraction]' ) ,
176+ { step : 0.1 , selectorPrefix : 'gaqNotBadFraction' } ,
177+ ) ,
178+
162179 filterTooltip : 'not-bad fraction expressed as a percentage' ,
163180 profiles : [ 'runsPerDataPass' ] ,
164181 } ,
165- } ;
166182
167- const dataPass = remoteDataPass . match ( { Other : ( ) => null , Success : ( data ) => data } ) ;
168- const detectors = remoteDetectors . match ( { Other : ( ) => null , Success : ( data ) => data } ) ;
169- const qcSummary = remoteQcSummary . match ( { Other : ( ) => null , Success : ( data ) => data } ) ;
183+ ...( dataPass ?. skimmingStage === SkimmingStage . SKIMMABLE && {
184+ readyForSkimming : {
185+ name : 'Ready for skimming' ,
186+ visible : true ,
170187
171- if ( dataPass ?. skimmingStage === SkimmingStage . SKIMMABLE ) {
172- activeColumns . readyForSkimming = {
173- name : 'Ready for skimming' ,
174- visible : true ,
175- format : ( _ , { runNumber } ) => remoteSkimmableRuns . match ( {
176- Success : ( skimmableRuns ) => switchInput (
177- skimmableRuns [ runNumber ] ,
178- ( ) => perDataPassOverviewModel . changeReadyForSkimmingFlagForRun ( {
179- runNumber,
180- readyForSkimming : ! skimmableRuns [ runNumber ] ,
188+ format : ( _ , { runNumber } ) =>
189+ remoteSkimmableRuns . match ( {
190+ Success : ( skimmableRuns ) =>
191+ switchInput (
192+ skimmableRuns [ runNumber ] ,
193+ ( ) =>
194+ perDataPassOverviewModel . changeReadyForSkimmingFlagForRun ( {
195+ runNumber,
196+ readyForSkimming : ! skimmableRuns [ runNumber ] ,
197+ } ) ,
198+ {
199+ labelAfter : skimmableRuns [ runNumber ]
200+ ? badge ( 'ready' , { color : Color . GREEN } )
201+ : badge ( 'not ready' , { color : Color . WARNING_DARKER } ) ,
202+ } ,
203+ ) ,
204+
205+ Loading : ( ) => h ( '.mh3.ph4' , '... ...' ) ,
206+ Failure : ( ) => tooltip ( iconWarning ( ) , 'Error occurred' ) ,
207+ NotAsked : ( ) => tooltip ( iconWarning ( ) , 'Not asked for data' ) ,
181208 } ) ,
182- {
183- labelAfter : skimmableRuns [ runNumber ]
184- ? badge ( 'ready' , { color : Color . GREEN } )
185- : badge ( 'not ready' , { color : Color . WARNING_DARKER } ) ,
186- } ,
187- ) ,
188- Loading : ( ) => h ( '.mh3.ph4' , '... ...' ) ,
189- Failure : ( ) => tooltip ( iconWarning ( ) , 'Error occurred' ) ,
190- NotAsked : ( ) => tooltip ( iconWarning ( ) , 'Not asked for data' ) ,
191- } ) ,
192- profiles : [ 'runsPerDataPass' ] ,
193- } ;
194- }
209+
210+ profiles : [ 'runsPerDataPass' ] ,
211+ } ,
212+ } ) ,
213+ } ;
195214
196215 detectors && dataPass && Object . assign (
197216 activeColumns ,
0 commit comments