Skip to content

Commit 8600354

Browse files
[O2B-1082] implement runs period view (#1288)
* [O2B-1026] periods service (#1216) * [O2B-1025] - lhc periods table extraction (#1193) * add migration for lhc_periods * migration and undo works * amend migration * amend migration when no data * add lhc_periods seeders * add lhcPeriod model * update Run model * linter * amend references in sequelize models * update filtering rules * add adapters * add adapters * add typedefs * docs * rename * update usecase * add relation * refactor * refactor * LHC to Lhc * simplify migration * utilize lhcPeriodAdapter toDatabase * simplify filtering * rename * update instead of insert * add lhcPeriod repo * modify aliases * add lhcPeriod service method and use in run update * runAdapter lhcPeriod * add function for run.lhcPeriod convertion * adjust run.controller * adjust dplProcess.controller * handle null argument in convertRunLhcPeriod * adjust environment.controller * add generic stuff * first utilisation * handle arrays * adjust dplProcess.controller * refactor * amend dplProcess.controller * adjust environments.controller * adjust flps.controller * adjust lhcFill * adjust logs.controller * udjust run controller * docs * amend * amend usecase * amend inner adapter usage * docs * cleanup * amend test * amend test * amend test * add API adapters * RunAdapter cleaned * APIRunAdapter done * LogAdapter * ApiLhcFillAdapter * docs * docs * cleanup * APIHostAdapter * add common code * APIFlpRoleAdapter * APIEnviornmentAdapter * APIDplProcessAdapter * APIDplProcessExecutionAdapter * APIDplDetectorAdapter * refactor * refactor * rename' * rename * rename * init of index * index * fulfil dependencies * remove * remove imports * remove rejected stuff * remove unnecessary adapters * simplify RunAdapter * update runs.controller * update GRPCRun.controller * cleanup * revoke some changes * revoke some changes * revoke some changes * simplify * revoke accidental changes * rename: * test refactor * rename in docs * refactor * refactor * refactor * update docs * rename * refactor * a * merge * refactor * rename * cleanup * rename * test, rename * a * refactor * test * add pperiods id to physics runs * refactor * amend misuse * rename * docs, revoke * revoke: * typedefs * restore * del * refactor * docs * rename, refactor, test amend * revoke unwanted cahnge * add test * rename * remove unncessary properties * docs * refactor * rename * refactor * refactor * refactor view * refactor * refactor model * refactor * adapters refactor * refactor * amend * minimfy * adjust tests * remove TODO * deleted dead code * refactor one test * adjust test * amend one method, add one test * refactor * docs * refactor * refactor, LhcPeriodStatistics bring LhcPeriod * refactor * refactor QueryBuilder#whereAssociaiton * refactor service * docs * test * revoke some changes * remove page notion * docs * view refactor * docs' * refactor * docs' * docs * revoke unfounded changes * refactor * remove redundant typedef * remove defaults * simplify view * lint * remove sort notion * revoke package mocha grep * refactor * [O2B-1028] add periods controllers (#1224) * [O2B-1025] - lhc periods table extraction (#1193) * add migration for lhc_periods * migration and undo works * amend migration * amend migration when no data * add lhc_periods seeders * add lhcPeriod model * update Run model * linter * amend references in sequelize models * update filtering rules * add adapters * add adapters * add typedefs * docs * rename * update usecase * add relation * refactor * refactor * LHC to Lhc * simplify migration * utilize lhcPeriodAdapter toDatabase * simplify filtering * rename * update instead of insert * add lhcPeriod repo * modify aliases * add lhcPeriod service method and use in run update * runAdapter lhcPeriod * add function for run.lhcPeriod convertion * adjust run.controller * adjust dplProcess.controller * handle null argument in convertRunLhcPeriod * adjust environment.controller * add generic stuff * first utilisation * handle arrays * adjust dplProcess.controller * refactor * amend dplProcess.controller * adjust environments.controller * adjust flps.controller * adjust lhcFill * adjust logs.controller * udjust run controller * docs * amend * amend usecase * amend inner adapter usage * docs * cleanup * amend test * amend test * amend test * add API adapters * RunAdapter cleaned * APIRunAdapter done * LogAdapter * ApiLhcFillAdapter * docs * docs * cleanup * APIHostAdapter * add common code * APIFlpRoleAdapter * APIEnviornmentAdapter * APIDplProcessAdapter * APIDplProcessExecutionAdapter * APIDplDetectorAdapter * refactor * refactor * rename' * rename * rename * init of index * index * fulfil dependencies * remove * remove imports * remove rejected stuff * remove unnecessary adapters * simplify RunAdapter * update runs.controller * update GRPCRun.controller * cleanup * revoke some changes * revoke some changes * revoke some changes * simplify * revoke accidental changes * rename: * test refactor * rename in docs * refactor * refactor * refactor * update docs * rename * refactor * a * merge * refactor * rename * cleanup * rename * test, rename * a * refactor * test * add pperiods id to physics runs * refactor * amend misuse * rename * docs, revoke * revoke: * typedefs * restore * del * refactor * docs * rename, refactor, test amend * revoke unwanted cahnge * init lhcPeriodsStatistics controller * refactor DtoFactory * refactor periods controller * add lhcPeriods router * expose new router, amend bug * docs * docs * amend Service * add test * amend service * add tests * rename * remove unncessary properties * docs * refactor * rename * refactor * refactor * refactor view * refactor * refactor model * refactor * adapters refactor * refactor * amend * minimfy * adjust tests * remove TODO * deleted dead code * refactor one test * adjust test * add counted data view * refactor * docs refactor * refactor * working enpoints * tests * extend DtoFactory * refactor, docs * amend test * amend service * add tests * amend test * amend test * amend one method, add one test * refactor * docs * refactor * refactor, LhcPeriodStatistics bring LhcPeriod * refactor * refactor QueryBuilder#whereAssociaiton * refactor service * docs * test * revoke some changes * remove page notion * docs * amend test * amend controller pagination * [O2B-1040] add RCT periods page (#1233) * rename * cleanup * rename * test, rename * a * refactor * test * add pperiods id to physics runs * refactor * amend misuse * rename * docs, revoke * revoke: * typedefs * restore * del * refactor * docs * rename, refactor, test amend * revoke unwanted cahnge * init lhcPeriodsStatistics controller * refactor DtoFactory * refactor periods controller * add lhcPeriods router * expose new router, amend bug * docs * docs * amend Service * add test * amend service * add tests * rename * remove unncessary properties * docs * refactor * rename * refactor * refactor * refactor view * refactor * refactor model * refactor * adapters refactor * refactor * amend * minimfy * adjust tests * remove TODO * deleted dead code * refactor one test * adjust test * add counted data view * refactor * docs refactor * refactor * working enpoints * tests * extend DtoFactory * refactor, docs * amend test * amend service * add tests * amend test * amend test * amend one method, add one test * init periods view * refactor * PeriodsModel * docs * refactor * refactor, LhcPeriodStatistics bring LhcPeriod * refactor * refactor QueryBuilder#whereAssociaiton * refactor service * docs * test * revoke some changes * remove page notion * docs * amend test * amend controller pagination * expose LhCPeriodModel * view refactor * docs' * refactor * docs' * docs * revoke unfounded changes * refactor * restrain to using only arrays * remove redundant typedef * remove defaults * simplify view * lint * restrain lhcPeriod controller * revoke unfounded change * linter' * add sorting by avgEnergy * active columns * cleanup, extract period year * refactor * periods page * working page * cleanup * amend countedDataFormat * test * cleanup * remove sort notion * add sort notion to controller * display period year * revoke package mocha grep * simplify extract Period Year * organize rct related tab * better styling * remove not strictly neccessary changes * cleanup * cleanup * cleanup * cleanup * test init * refactor * cleanup * refactor * docs * docs * typo * todo * amend infinit scroll * filtering init * docs * a * add definition * names filter * extract Filterg model * utilise debounce in filtering updates * filters reset * cleanup * sort dto docs * rename * refacctor * rename * rename * rename test suite * rename * refactor * refactor * docs * rename * rename * docs * refactor * test * tsT * A * clenaup * cleanup * apply after api changes * docs * docs update * ternary operator * ternary operator * templates in docs * rename * docs * pageCount * ...delete * sort * order * a * filtering model * a * add checking * throw out stuff * restore navBar * add LhcPeriod overview test * test * cleanup * cleanup * cleanup * no model * cleanup * add main LhcPerio model * cleanup * put expose page * refactor' * refactor' * refactor * refactor | * refactor * lint * cleanup * test * cleanup * cleanup * cleanup * cleanup * refactor * Rename * docs * rename * refactor * docs * handle no avgEnergy * refactor docs * use existing notData indicator * file rename * amend test * [O2B-1048] add year column (#1241) * add year on backend * add year to display * cleanup lhc-period-statistics view * add year format * add sorting and filtering by year * cleanup * add test for years * add api test related to year attribute * cleanup * amend tests' * refactor * typo * [O2B-1039] center of mass energy on periods page (#1235) * refactor * refactor, LhcPeriodStatistics bring LhcPeriod * refactor * refactor QueryBuilder#whereAssociaiton * refactor service * docs * test * revoke some changes * remove page notion * docs * amend test * amend controller pagination * expose LhCPeriodModel * view refactor * docs' * refactor * docs' * docs * revoke unfounded changes * refactor * restrain to using only arrays * remove redundant typedef * remove defaults * simplify view * lint * restrain lhcPeriod controller * revoke unfounded change * linter' * add sorting by avgEnergy * active columns * cleanup, extract period year * refactor * periods page * working page * cleanup * amend countedDataFormat * test * cleanup * remove sort notion * add sort notion to controller * display period year * revoke package mocha grep * simplify extract Period Year * organize rct related tab * better styling * remove not strictly neccessary changes * cleanup * cleanup * cleanup * cleanup * test init * refactor * cleanup * refactor * docs * docs * typo * todo * amend infinit scroll * filtering init * docs * a * add definition * names filter * extract Filterg model * utilise debounce in filtering updates * filters reset * cleanup * sort dto docs * rename * refacctor * rename * rename * rename test suite * rename * refactor * refactor * docs * rename * rename * docs * refactor * test * tsT * A * clenaup * cleanup * apply after api changes * docs * docs update * ternary operator * ternary operator * templates in docs * rename * docs * pageCount * ...delete * sort * order * a * filtering model * a * add checking * add model * add migration * data inserttin * throw out stuff * restore navBar * add LhcPeriod overview test * test * cleanup * cleanup * cleanup * no model * cleanup * add main LhcPerio model * cleanup * put expose page * refactor' * refactor' * refactor * refactor | * refactor * lint * cleanup * test * cleanup * cleanup * cleanup * cleanup * refactor * refactor calculation * Rename * docs * rename * refactor * comment * rename avgEnergy: * docs * add getter * typdefs * add constant for cosmic * more data in seeders * amend * tesT * refactor * handle no avgEnergy * add closest defined energies * add icon * add baloon for distnct energies * aemdn distinct energies parsing * distinct Center Of Mass Energies to Distinct Beam Energies * docs * refactor * remove redundant model * cleanup * cealnup * cleanup * cleanup * cleanup typedef:' * add test for distinct energies * refacotr * refactor * refactor * refactor * refactor * comment * comment * refactor * refactor test * refactor * remove artifcat * refactor * constant to CAPITAL_SNAKE * bulk insert * remove prefixing * cleanup * remove unnecessary header adaptation * drop column from view * extend Querybuilder * refactor Service * cleanup model; refactor adapters * amend test' * docs * cleanup typdef * refactor center of mass energy icon * refactor display distinct energies * refactor adapter * docs refactor * amend distinct energies query * add dis en sorting * amend test * refactor * refactor * move to repository * revoke * cleanup * move distinctEnergies query to service * docs * docs * refactor * useSet * docs * test refactor * make test more strict * remove ?. * [O2B-1045] nav bar adjustment (#1240) * LHC dropdown * typo * change tab links id in order to amend tests * toggleDropdown as one function * extract navbar dropdown domponent ' g * refactor * refactor * docs * refactor * refactor * refactor * refactor * amend test * simplification * restore clearDropdown * refactor * refactor * rename * fix * utilise isElected in tabs * refactor * refactor * rename * emnu times accept 'selected' styling * docs * refactor * fix test * add filtering mode;l * add methods * use RegExp'es * add methods for showing filters panel * filter displayable * utilize visualChange * amend regex * [O2B-1063] Use popover for filter panel * adjust filter * send filters * Fix linter * more complex update * refactor * refactor * amend regex * add filter test * refactor * make case insensitive * add placeholder * refactor placeholder * update docs * refactor * update docs * docs error * docs error * get only good runs (#1253) * [O2B-1049] add beam type column (#1248) * add beam type on backend * add beamType selectyion * add beamType * add filtering * add sorting on backend * refactor * format beamType * add tests * add api test * add overview test * use switch case * refactored * rename * add docs * typo * refactor * amend api * amend runs selection - only good runs should be used * docs update * extend FilterModel * docs * docs refactor * rename * docs refactor * docs refactor * regex refacto * refactor * simplify conditions * refactor * Fix tests * simplification * amend bug with editor closing (#1259) * amend bug with editor closing * amend package json * cleanup * amend run detector quality change reason * amend * remove legacy stuff * linter * remove legacy stuff * add missing notify * refactor * refactor * refacotr * remove * refacotr * Clarify code * Rename preconfiguration * Add comment to explain why using Math.floor * refactor * remove id * remove id * Fix missing notify * add filter for years * rename * rename: * amend/add test * Try to fix tests * ad filtering by beam Type on frontend * add test * rename * add test * Fix linter * Try to fix tests * init RunsPerPeriodView * cleeanup * init RunPerPeriod model * refactor * linter * fetch only releveant runs per period * amend * amend bug * rename * display qualities * add pagination and qc css * active columns tyling * remove styling rubbishes * linter * refactor * fix * wrapped when overflow * amend test * docs updat * hardcode delimiter * phrase to expression * refactor * [O2B-1052] add filtering by name to lhc periods page (#1252) * add filtering mode;l * add methods * use RegExp'es * add methods for showing filters panel * filter displayable * utilize visualChange * amend regex * adjust filter * send filters * more complex update * refactor * refactor * amend regex * add filter test * refactor * make case insensitive * add placeholder * refactor placeholder * update docs * refactor * update docs * docs error * docs error * docs update * extend FilterModel * docs * docs refactor * rename * docs refactor * docs refactor * regex refacto * refactor * simplify conditions * refactor * simplification * remove legacy stuff * linter * remove legacy stuff * refactor * remove id * remove id * docs updat * hardcode delimiter * phrase to expression * refactor * [O2B-1051] add sorting to lhc periods page (#1250) * add sorting switches * use sorting params when requesting * add tests * rename * typo * refactor * make sortable by beam typew * refactor * rename * cleanup * cleanup * cleanup * debounce loading * [O2B-1053] filtering by year on lhc periods page (#1265) * add filtering mode;l * add methods * use RegExp'es * add methods for showing filters panel * filter displayable * utilize visualChange * amend regex * adjust filter * send filters * more complex update * refactor * refactor * amend regex * add filter test * refactor * make case insensitive * add placeholder * refactor placeholder * update docs * refactor * update docs * docs error * docs error * docs update * extend FilterModel * docs * docs refactor * rename * docs refactor * docs refactor * regex refacto * refactor * simplify conditions * refactor * simplification * remove legacy stuff * linter * remove legacy stuff * add missing notify * refactor * refactor * refacotr * remove * refacotr * refactor * remove id * remove id * add filter for years * rename * rename: * amend/add test * rename * docs updat * hardcode delimiter * phrase to expression * refactor * cleanup * refactor * fix * [O2B-1069] add filter by beam type on lhc periods page (#1266) * add filtering mode;l * add methods * use RegExp'es * add methods for showing filters panel * filter displayable * utilize visualChange * amend regex * adjust filter * send filters * more complex update * refactor * refactor * amend regex * add filter test * refactor * make case insensitive * add placeholder * refactor placeholder * update docs * refactor * update docs * docs error * docs error * docs update * extend FilterModel * docs * docs refactor * rename * docs refactor * docs refactor * regex refacto * refactor * simplify conditions * refactor * simplification * remove legacy stuff * linter * remove legacy stuff * add missing notify * refactor * refactor * refacotr * remove * refacotr * refactor * remove id * remove id * add filter for years * rename * rename: * amend/add test * ad filtering by beam Type on frontend * add test * rename * add test * docs updat * hardcode delimiter * phrase to expression * refactor * cleanup * cleanup * debounce loading * refactor * refacotr * amend logical condition * refactor * default page on filter * rename * set silently * fix * refactor * cleanup * docs * refactor * cleanup * cleanup * cleanup * add validation * docs * cleanup * refactor * refactor * refactor * add rows number estimation * update row high * utilise pagination * docs * docs * refactor * cleanup * amend * revoke outrunning changes * refactor * amend * model inside RunsModel * cleanup * docs * amend * refactor Detectors Provider * revoke * refactor * handle missing quality * handle null polarity * refactor * split functions * docs * rename * rename: * simplify code * rename * fix test * fix test * fix buttons position * revoke * fix test * docs * simplify detectorsProvider * docs' * add sort * test * expose test * test * rename * test * cleanup * use inheritance * add title * refactor/change styling method * change page name * rename instance name * rename * naming * rename * refactor * refacotR * cleanup * extend capabilities of table constructor * refactor * docs * refactor * refactor * change notified * rename * amend * amend test * change fillNumber column size * rename * remove throw * refactor * amend * cleanup * revoke * revoke * revoke detectorProvider changes * handle detector fetch error * use bg-danger * code style * refactor * rename --------- Co-authored-by: Martin Boulais <31805063+martinboulais@users.noreply.github.com>
1 parent b140a49 commit 8600354

17 files changed

Lines changed: 602 additions & 61 deletions

lib/public/Model.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,9 @@ export default class Model extends Observable {
182182
case 'run-overview':
183183
this.runs.loadOverview();
184184
break;
185+
case 'runs-per-lhc-period':
186+
this.runs.loadPerLhcPeriodOverview(this.router.params);
187+
break;
185188
case 'run-detail':
186189
this.runs.loadDetails(this.router.params);
187190
break;

lib/public/view.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import { TagDetailsPage } from './views/Tags/Details/TagDetailsPage.js';
3434
import { EosReportCreationPage } from './views/EosReport/create/EosReportCreationPage.js';
3535
import { StatisticsPage } from './views/Statistics/StatisticsPage.js';
3636
import { LhcPeriodsOverviewPage } from './views/lhcPeriods/Overview/LhcPeriodsOverviewPage.js';
37+
import { RunsPerLhcPeriodOverviewPage } from './views/Runs/RunPerPeriod/RunsPerLhcPeriodOverviewPage.js';
3738
import { HomePage } from './views/Home/Overview/HomePage.js';
3839

3940
/**
@@ -59,6 +60,7 @@ export default (model) => {
5960

6061
'run-overview': RunsOverviewPage,
6162
'run-detail': RunDetailsPage,
63+
'runs-per-lhc-period': RunsPerLhcPeriodOverviewPage,
6264

6365
statistics: StatisticsPage,
6466

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* @license
3+
* Copyright CERN and copyright holders of ALICE O2. This software is
4+
* distributed under the terms of the GNU General Public License v3 (GPL
5+
* Version 3), copied verbatim in the file "COPYING".
6+
*
7+
* See http://alice-o2.web.cern.ch/license for full licensing information.
8+
*
9+
* In applying this license CERN does not waive the privileges and immunities
10+
* granted to it by virtue of its status as an Intergovernmental Organization
11+
* or submit itself to any jurisdiction.
12+
*/
13+
import { formatDetectorQuality } from '../format/formatDetectorQuality.js';
14+
15+
/**
16+
* Factory for detectors related active columns configuration
17+
* @param {Detector[]} detectors detectors list
18+
* @return {object} active columns configuration
19+
*/
20+
export const createRunDetectorsActiveColumns = (detectors) => Object.fromEntries(detectors?.map(({ name: detectorName }) => [
21+
detectorName, {
22+
name: detectorName.toUpperCase(),
23+
visible: true,
24+
format: (_, run) => formatDetectorQuality(run.detectorsQualities.find(({ name }) => name === detectorName)?.quality),
25+
profiles: ['runsPerLhcPeriod'],
26+
},
27+
]) ?? []);

lib/public/views/Runs/ActiveColumns/runsActiveColumns.js

Lines changed: 77 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ import { RunDefinition } from '../../../domain/enums/RunDefinition.js';
4747
import { coloredCalibrationStatusComponent } from '../coloredCalibrationStatusComponent.js';
4848
import { infoLoggerButtonGroup } from '../../../components/common/selection/infoLoggerButtonGroup/infoLoggerButtonGroup.js';
4949
import { BeamModes } from '../../../domain/enums/BeamModes.js';
50+
import { formatAliceCurrent } from '../format/formatAliceCurrent.js';
5051

5152
/**
5253
* List of active columns for a generic runs table
@@ -60,24 +61,27 @@ export const runsActiveColumns = {
6061
runNumber: {
6162
name: 'Run',
6263
visible: true,
63-
size: 'w-10 f6 w-wrapped',
64+
classes: 'w-10 f6 w-wrapped',
6465
filter: runNumberFilter,
6566
format: (_, run) => infoLoggerButtonGroup(run),
6667
profiles: {
6768
lhcFill: true,
6869
environment: true,
70+
runsPerLhcPeriod: {
71+
classes: 'w-7 f6 w-wrapped',
72+
},
6973
home: {
7074
name: 'Number',
7175
format: null,
72-
size: 'w-20',
76+
classes: 'w-20',
7377
},
7478
},
7579
},
7680
detectors: {
7781
name: 'Detectors',
7882
visible: true,
7983
profiles: [profiles.none, 'lhcFill'],
80-
size: 'w-15 f6',
84+
classes: 'w-15 f6',
8185
format: (detectors, run) => {
8286
if (detectors && detectors.length > 0) {
8387
return [h('.badge.bg-gray-light.mh2.nDetectors-badge', run.nDetectors), `${detectors.toString()}`];
@@ -91,7 +95,7 @@ export const runsActiveColumns = {
9195
name: 'Tags',
9296
visible: true,
9397
profiles: [profiles.none, 'lhcFill', 'environment'],
94-
size: 'w-5 f6',
98+
classes: 'w-5 f6',
9599
format: (tags) => tags && tags.length > 0 ? tags.map(({ text }) => text).join(', ') : '-',
96100
exportFormat: (tags) => tags && tags.length > 0 ? tags.map(({ text }) => text).join(', ') : '-',
97101
filter: (runModel) => tagFilter(runModel.listingTagsFilterModel),
@@ -100,8 +104,15 @@ export const runsActiveColumns = {
100104
fillNumber: {
101105
name: 'Fill No.',
102106
visible: true,
103-
profiles: [profiles.none, 'lhcFill', 'environment'],
104-
size: 'w-5 f6',
107+
profiles: {
108+
[profiles.none]: true,
109+
lhcFill: true,
110+
environment: true,
111+
runsPerLhcPeriod: {
112+
classes: 'w-2 f6',
113+
},
114+
},
115+
classes: 'w-5 f6',
105116
format: (fill, run) => fill !== null && run.lhcBeamMode === BeamModes.STABLE_BEAMS
106117
? frontLink(fill, 'lhc-fill-details', { fillNumber: fill }) : '-',
107118
filter: fillNumbersFilter,
@@ -110,66 +121,83 @@ export const runsActiveColumns = {
110121
name: 'LHC Period',
111122
visible: true,
112123
profiles: [profiles.none, 'lhcFill', 'environment'],
113-
size: 'w-5 f6',
124+
classes: 'w-5 f6',
114125
format: (lhcPeriod, run) => lhcPeriod && run.lhcBeamMode === BeamModes.STABLE_BEAMS ? lhcPeriod : '-',
115126
filter: lhcPeriodsFilter,
116127
},
117128
timeO2Start: {
118129
name: 'Start',
119130
visible: true,
120-
size: 'w-7 f6',
131+
classes: 'w-7 f6',
121132
noEllipsis: true,
122-
format: (timestamp, run) => formatRunStart(run, false),
133+
format: (_, run) => formatRunStart(run, false),
123134
exportFormat: (timestamp) => formatTimestamp(timestamp),
124135
filter: o2startFilter,
125136
profiles: {
126137
lhcFill: true,
127138
environment: true,
128139
home: {
129140
name: 'Start',
130-
size: 'w-30',
141+
classes: 'w-30',
131142
format: (timestamp, run) => formatRunStart(run, true),
132143
},
144+
runsPerLhcPeriod: {
145+
classes: 'f6 w-wrapped',
146+
},
133147
},
134148
},
135149
timeO2End: {
136150
name: 'Stop',
137151
visible: true,
138-
size: 'w-7 f6',
152+
classes: 'w-7 f6',
139153
noEllipsis: true,
140-
format: (timestamp, run) => formatRunEnd(run, false),
154+
format: (_, run) => formatRunEnd(run, false),
141155
exportFormat: (timestamp) => formatTimestamp(timestamp),
142156
filter: o2endFilter,
143157
profiles: {
144158
lhcFill: true,
145159
environment: true,
146160
home: {
147161
name: 'Stop',
148-
size: 'w-30',
149-
format: (timestamp, run) => formatRunEnd(run, true),
150-
162+
classes: 'w-30',
163+
format: (_, run) => formatRunEnd(run, true),
164+
},
165+
runsPerLhcPeriod: {
166+
classes: 'f6 w-wrapped',
151167
},
152168
},
153169
},
154170
timeTrgStart: {
155171
name: 'TRG Start',
156172
visible: false,
157-
size: 'w-10 f6 w-wrapped',
173+
classes: 'w-10 f6 w-wrapped',
158174
format: (timestamp) => formatTimestamp(timestamp, false),
159175
exportFormat: (timestamp) => formatTimestamp(timestamp),
176+
profiles: {
177+
runsPerLhcPeriod: {
178+
visible: true,
179+
classes: 'f6 w-wrapped',
180+
},
181+
},
160182
},
161183
timeTrgEnd: {
162184
name: 'TRG Stop',
163185
visible: false,
164-
size: 'w-10 f6 w-wrapped',
186+
classes: 'w-10 f6 w-wrapped',
165187
format: (timestamp) => formatTimestamp(timestamp, false),
166188
exportFormat: (timestamp) => formatTimestamp(timestamp),
189+
profiles: {
190+
runsPerLhcPeriod: {
191+
visible: true,
192+
classes: 'f6 w-wrapped',
193+
},
194+
},
167195
},
168196
timeSincePreviousRun: {
169197
name: 'Since prev.',
170198
visible: true,
171199
profiles: ['lhcFill'],
172-
size: 'f6 w-10',
200+
classes: 'f6 w-10',
173201
format: (duration) => duration !== null
174202
? formatDuration(duration)
175203
: h('strong.danger', 'UNKNOWN'),
@@ -178,7 +206,7 @@ export const runsActiveColumns = {
178206
name: 'Definition',
179207
visible: true,
180208
profiles: [profiles.none, 'lhcFill', 'environment'],
181-
size: 'w-10 f6 w-wrapped',
209+
classes: 'w-10 f6 w-wrapped',
182210
format: (definition, run) => {
183211
const lines = [h('', definition || '-')];
184212
if (definition === RunDefinition.Calibration) {
@@ -191,7 +219,7 @@ export const runsActiveColumns = {
191219
runDuration: {
192220
name: 'Duration',
193221
visible: true,
194-
size: 'w-7 f6',
222+
classes: 'w-7 f6',
195223
profiles: [profiles.none, 'lhcFill', 'environment'],
196224
noEllipsis: true,
197225
format: (_duration, run) => displayRunDuration(run),
@@ -202,35 +230,35 @@ export const runsActiveColumns = {
202230
name: 'Environment ID',
203231
visible: true,
204232
profiles: [profiles.none, 'lhcFill', 'environment'],
205-
size: 'w-10 f6 w-wrapped',
233+
classes: 'w-10 f6 w-wrapped',
206234
filter: environmentIdFilter,
207235
format: (id) => id ? frontLink(id, 'env-details', { environmentId: id }) : '-',
208236
},
209237
runType: {
210238
name: 'Run Type',
211239
visible: false,
212-
size: 'cell-l f6 w-wrapped',
240+
classes: 'cell-l f6 w-wrapped',
213241
format: formatRunType,
214242
filter: (runModel) => selectionDropdown(runModel.listingRunTypesFilterModel, { selectorPrefix: 'run-types' }),
215243
},
216244
runQuality: {
217245
name: 'Quality',
218246
visible: true,
219247
profiles: [profiles.none, 'lhcFill', 'environment'],
220-
size: 'w-5 f6 w-wrapped',
248+
classes: 'w-5 f6 w-wrapped',
221249
filter: runQualityFilter,
222250
},
223251
nDetectors: {
224252
name: 'DETs #',
225253
visible: false,
226-
size: 'w-2 f6 w-wrapped',
254+
classes: 'w-2 f6 w-wrapped',
227255
filter: nDetectorsFilter,
228256
},
229257
nEpns: {
230258
name: 'EPNs #',
231259
visible: true,
232260
profiles: [profiles.none, 'lhcFill', 'environment'],
233-
size: 'w-2 f6 w-wrapped',
261+
classes: 'w-2 f6 w-wrapped',
234262
// eslint-disable-next-line no-extra-parens
235263
format: (nEpns, run) => run.epn ? (typeof nEpns === 'number' ? nEpns : 'ON') : 'OFF',
236264
filter: nEpnsFilter,
@@ -239,24 +267,24 @@ export const runsActiveColumns = {
239267
name: 'FLPs #',
240268
visible: true,
241269
profiles: [profiles.none, 'lhcFill', 'environment'],
242-
size: 'w-2 f6 w-wrapped',
270+
classes: 'w-2 f6 w-wrapped',
243271
filter: nFlpsFilter,
244272
},
245273
nSubtimeframes: {
246274
name: '# of STFs',
247275
visible: false,
248-
size: 'cell-s f6 w-wrapped',
276+
classes: 'cell-s f6 w-wrapped',
249277
},
250278
bytesReadOut: {
251279
name: 'Readout Data',
252280
visible: false,
253-
size: 'cell-m f6 w-wrapped',
281+
classes: 'cell-m f6 w-wrapped',
254282
},
255283
dd_flp: {
256284
name: 'Data Distribution (FLP)',
257285
visible: false,
258286
profiles: [profiles.none, 'lhcFill', 'environment'],
259-
size: 'w-2 f6 w-wrapped',
287+
classes: 'w-2 f6 w-wrapped',
260288
format: (boolean) => boolean ? 'On' : 'Off',
261289
exportFormat: (boolean) => boolean ? 'On' : 'Off',
262290
filter: ddflpFilter,
@@ -265,7 +293,7 @@ export const runsActiveColumns = {
265293
name: 'DCS',
266294
visible: true,
267295
profiles: [profiles.none, 'lhcFill', 'environment'],
268-
size: 'w-2 f6 w-wrapped',
296+
classes: 'w-2 f6 w-wrapped',
269297
format: (boolean) => boolean ? 'On' : 'Off',
270298
exportFormat: (boolean) => boolean ? 'On' : 'Off',
271299
filter: dcsFilter,
@@ -274,36 +302,36 @@ export const runsActiveColumns = {
274302
name: 'TRG',
275303
visible: true,
276304
profiles: [profiles.none, 'lhcFill', 'environment'],
277-
size: 'w-5 f6 w-wrapped',
305+
classes: 'w-5 f6 w-wrapped',
278306
filter: triggerValueFilter,
279307
format: (trgValue) => trgValue ? trgValue : '-',
280308
},
281309
epn: {
282310
name: 'EPN',
283311
visible: false,
284312
profiles: [profiles.none, 'lhcFill', 'environment'],
285-
size: 'w-2 f6 w-wrapped',
313+
classes: 'w-2 f6 w-wrapped',
286314
format: (boolean) => boolean ? 'On' : 'Off',
287315
exportFormat: (boolean) => boolean ? 'On' : 'Off',
288316
filter: epnFilter,
289317
},
290318
epnTopology: {
291319
name: 'EPN Topology',
292320
visible: false,
293-
size: 'w-10 f6',
321+
classes: 'w-10 f6',
294322
balloon: true,
295323
},
296324
odcTopologyFullName: {
297325
name: 'Topology Full',
298-
size: 'w-15 f6',
326+
classes: 'w-15 f6',
299327
visible: false,
300328
profiles: [profiles.none, 'lhcFill', 'environment'],
301329
filter: odcTopologyFullName,
302330
balloon: true,
303331
},
304332
eorReasons: {
305333
name: 'EOR Reason',
306-
size: 'w-15 f6',
334+
classes: 'w-15 f6',
307335
visible: true,
308336
profiles: [profiles.none, 'lhcFill', 'environment'],
309337
format: (eorReasons) => displayRunEorReasonsOverview(eorReasons),
@@ -360,7 +388,7 @@ export const runsActiveColumns = {
360388
name: '',
361389
visible: true,
362390
profiles: 'home',
363-
size: 'w-15',
391+
classes: 'w-15',
364392
format: (_, run) => h(
365393
'.flex-row',
366394
{ style: 'justify-content: end' },
@@ -372,4 +400,17 @@ export const runsActiveColumns = {
372400
),
373401
),
374402
},
403+
aliceL3Current: {
404+
name: 'L3 [A]',
405+
visible: true,
406+
format: (_, run) => formatAliceCurrent(run.aliceL3Polarity, run.aliceL3Current),
407+
profiles: ['runsPerLhcPeriod'],
408+
},
409+
410+
dipoleCurrent: {
411+
name: 'Dipole [A]',
412+
visible: true,
413+
format: (_, run) => formatAliceCurrent(run.aliceDipolePolarity, run.aliceDipoleCurrent),
414+
profiles: ['runsPerLhcPeriod'],
415+
},
375416
};

0 commit comments

Comments
 (0)