Skip to content

[O2B-1641] Improve the UX of the LHC fills overview table - #2291

Open
graduta wants to merge 11 commits into
mainfrom
improv/O2B-1641/lhc-fill-page-UX-improvements
Open

graduta wants to merge 11 commits into
mainfrom
improv/O2B-1641/lhc-fill-page-UX-improvements

Conversation

@graduta

@graduta graduta commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

I have a JIRA ticket

  • branch and/or PR name(s) include(s) JIRA ID
  • issue has "Fix version" assigned
  • issue "Status" is set to "In review"
  • PR labels are selected

Notable changes for users:

  • The LHC fills overview has fewer, denser columns.
    • Fill #: the fill number is a larger link followed by a discreet caret opening the same actions as before, with its beam type below it. An info icon next to the header displays a legend of the beam types.
    • Stable beams: the start and the end on labelled and aligned lines. When the stable beams end the same day they started, only the time of the end is displayed, aligned with the time of the start.
    • SB Duration: unchanged (with the ONGOING badge).
    • Efficiency: the efficiency with the time lost before the first run below it.
    • Runs duration: the mean duration of the runs and their total duration.
    • Scheme name: the name of the filling scheme with the number of colliding bunches below it.
    • Runs: unchanged.
  • The beam types are displayed in a badge whose shape depends on what collides, without colors as they are reserved to states: lead-lead (the main collisions of ALICE) in a dark badge, proton-proton with a thick outline, proton-ion with a thin outline, other ions with a thin outline and a thick left bar. The same badges are used in the options and the selection of the beam type filter (LHC fills and runs overviews).
  • The default number of rows of the LHC fills overview is estimated for the new height of the rows, to fill the page.
  • All the filters are still available in the same filters panel and in the same order, with unchanged URL parameters.

Notable changes for developers:

  • New lhcFillsOverviewActiveColumns, used by the LHC fills overview only; the columns merged into others are kept as hidden columns to provide their filters. The home page and the other LHC fills tables keep lhcFillsActiveColumns.
  • New shared labelledLine and linkWithActionsDropdown components and formatTimestampAlignedWith utility, extracted from the run overview and reused. runs-timing-label css class is renamed timing-label.
  • New getBeamTypeFamily, formatBeamTypeBadge, beamTypeLegend and beamTypeSelectionDropdown, and the beam-type* css classes.
  • The beam types of the seeded LHC fills are the ones of production (PROTON - PROTON, PROTON - O8, PB82 - PB82, O8 - O8 and NE10 - NE10) and the tests using them are adapted.
  • Elements have stable ids to be used in UI tests: #row<fillNumber>-fill-number, -beamType, -stableBeamsStart, -stableBeamsEnd, -stableBeamsDuration, -efficiencyValue, -timeLossAtStart, -meanRunDuration, -runsCoverage, -schemeName, -collidingBunches.
  • The unit, API, LHC fills and runs suites were run in docker and pass. The filters suite was run alone: 4 of its tests already fail on main when it is run alone.

Changes made to the database:

  • None (only the seeders for the tests and development are updated)

…ligned timestamp of the run overview

Notable changes for developers:
- New `labelledLine` component (a value preceded by a small label), `linkWithActionsDropdown` component (a bold link followed by a discreet caret opening its actions) and `formatTimestampAlignedWith` utility (the date is hidden, but keeps its space, when it is the same day as a reference timestamp), extracted from the run overview columns to be reused by other overview pages.
- `formatRunEnd` uses `formatTimestampAlignedWith`.
- `runs-timing-label` css class is renamed `timing-label`.
Notable changes for users:
- The LHC fills overview has fewer, denser columns:
  - **Fill #**: the fill number is a larger link followed by a discreet caret opening the same actions as before, with its beam type below it. An info icon next to the header displays the legend of the beam types.
  - **Stable beams**: the start and the end, on labelled and aligned lines. When the stable beams end the same day they started, only the time of the end is displayed, aligned with the time of the start.
  - **SB Duration**: unchanged.
  - **Efficiency**: the efficiency with the time lost before the first run below it.
  - **Runs duration**: the mean duration of the runs and their total duration.
  - **Scheme name**: the name of the filling scheme with the number of colliding bunches below it.
  - **Runs**: unchanged.
- The beam types are displayed in a badge whose shape depends on what collides, without colors as they are reserved to states: lead-lead (the main collisions of ALICE) in a dark badge, proton-proton with a thick outline, proton-ion with a thin outline and other ions with a thin outline and a thick left bar.
- The default number of rows of the page is estimated for the new height of the rows, to fill the page.
- All the filters are still available, in the same filters panel and in the same order, with unchanged URL parameters.

Notable changes for developers:
- New `lhcFillsOverviewActiveColumns`, used by the LHC fills overview only. The columns merged into others are kept as hidden columns to provide their filters.
- New `getBeamTypeFamily`, `formatBeamTypeBadge` and `beamTypeLegend`.
- Elements have stable ids to be used in UI tests: `#row<fillNumber>-fill-number`, `-beamType`, `-stableBeamsStart`, `-stableBeamsEnd`, `-stableBeamsDuration`, `-efficiencyValue`, `-timeLossAtStart`, `-meanRunDuration`, `-runsCoverage`, `-schemeName`, `-collidingBunches`.
The beam types of the seeded LHC fills are the ones displayed in production, with the tests adapted:
- p-p becomes PROTON - PROTON, p-Pb becomes PROTON - O8, Pb-Pb becomes PB82 - PB82 and PROTON-PROTON becomes O8 - O8
- the fill without beam type has now NE10 - NE10
The tests of the statistics, the stable beams, the fill dropdown, the ONGOING information and the number of rows per page use the elements of the new columns.
…ables

Notable changes for users:
- The options and the selected items of the beam type filter (LHC fills and runs overviews) are displayed in the same badge as the beam types of the tables.

Notable changes for developers:
- New `beamTypeSelectionDropdown`, with unchanged DOM ids.
@graduta
graduta requested a review from isaachilly as a code owner October 23, 2026 13:31
@graduta graduta self-assigned this Oct 23, 2026
@codecov

codecov Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 0% with 70 lines in your changes missing coverage. Please review.
✅ Project coverage is 46.03%. Comparing base (3338aa2) to head (ecc75bf).

Files with missing lines Patch % Lines
...lls/ActiveColumns/lhcFillsOverviewActiveColumns.js 0.00% 13 Missing ⚠️
lib/public/views/LhcFills/format/beamTypeFamily.js 0.00% 11 Missing ⚠️
...utilities/formatting/formatTimestampAlignedWith.js 0.00% 7 Missing ⚠️
...views/LhcFills/format/beamTypeSelectionDropdown.js 0.00% 7 Missing ⚠️
...ib/public/views/LhcFills/format/efficiencyLevel.js 0.00% 7 Missing ⚠️
...b/public/views/LhcFills/format/formatEfficiency.js 0.00% 5 Missing ⚠️
lib/public/views/LhcFills/format/beamTypeLegend.js 0.00% 3 Missing ⚠️
...b/public/views/LhcFills/format/efficiencyLegend.js 0.00% 3 Missing ⚠️
...ublic/views/LhcFills/format/formatBeamTypeBadge.js 0.00% 3 Missing ⚠️
lib/public/views/Runs/format/formatRunEnd.js 0.00% 3 Missing ⚠️
... and 6 more
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2291      +/-   ##
==========================================
- Coverage   46.17%   46.03%   -0.14%     
==========================================
  Files        1059     1070      +11     
  Lines       17494    17546      +52     
  Branches     3210     3225      +15     
==========================================
+ Hits         8077     8078       +1     
- Misses       9417     9468      +51     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The existing datatype test still reads the entire merged efficiency cell and rejects its labelled missing-value output.

1 open issue
What changed in this PR

This PR makes the LHC fills overview more compact while retaining its filters and reusing presentation components across fills and runs.

Changes:

  • Consolidates fill information into denser columns and adjusts default pagination.
  • Adds beam-type badges and a legend, plus shared timestamp, label, and action-link helpers.
  • Updates seed data and tests to use production beam-type names and stable element selectors.
File Description
test/​public/​lhcFills/​overview.test.js Updates selectors, pagination expectations, and timing checks.
test/​public/​lhcFills/​detail.test.js Updates the expected beam type.
test/​public/​Filters/​urlToFilter.test.js Updates beam-type URL and selector expectations.
test/​public/​Filters/​filtersToUrl.test.js Updates beam-type selection and URL checks.
test/​public/​Filters/​FilteringModel.test.js Updates beam-type filter selectors.
test/​lib/​usecases/​run/​GetAllRunsUseCase.test.js Updates beam-type filter fixtures.
test/​lib/​usecases/​lhcFill/​GetAllLhcFillsUseCase.test.js Updates beam-type filtering expectations.
test/​lib/​usecases/​lhcFill/​CreateLhcFillUseCase.test.js Updates creation fixtures and expectations.
test/​api/​runs.test.js Uses production beam types and URL encoding.
test/​api/​lhcFills.test.js Updates API fixtures and beam-type expectations.
lib/​public/​views/​Runs/​format/​formatRunEnd.js Reuses aligned timestamp formatting.
lib/​public/​views/​Runs/​ActiveColumns/​runsOverviewActiveColumns.js Reuses shared labels and action links.
lib/​public/​views/​Runs/​ActiveColumns/​runsActiveColumns.js Uses the badge-based beam-type filter.
lib/​public/​views/​LhcFills/​Overview/​index.js Applies compact columns and revised row estimates.
lib/​public/​views/​LhcFills/​format/​formatBeamTypeBadge.js Renders beam-type badges.
lib/​public/​views/​LhcFills/​format/​beamTypeSelectionDropdown.js Displays badges in filter options and selections.
lib/​public/​views/​LhcFills/​format/​beamTypeLegend.js Explains beam types and badge shapes.
lib/​public/​views/​LhcFills/​format/​beamTypeFamily.js Classifies beam types for badge styling.
lib/​public/​views/​LhcFills/​ActiveColumns/​lhcFillsOverviewActiveColumns.js Defines compact overview columns while preserving filters.
lib/​public/​views/​LhcFills/​ActiveColumns/​lhcFillsActiveColumns.js Adopts the shared beam-type filter.
lib/​public/​utilities/​formatting/​formatTimestampAlignedWith.js Aligns timestamps while hiding repeated dates.
lib/​public/​components/​common/​selection/​infoLoggerButtonGroup/​linkWithActionsDropdown.js Extracts the shared link-and-actions component.
lib/​public/​components/​common/​formatting/​labelledLine.js Extracts reusable labelled values.
lib/​public/​app.css Adds badge styling and shared alignment rules.
lib/​database/​seeders/​20220503120937-lhc-fills.js Seeds production beam-type names.

Review effort: Balanced

* @return {Component} the efficiency and the time loss
*/
format: (efficiency, { fillNumber, timeLossAtStart, efficiencyLossAtStart }) => h('', [
labelledLine(`row${fillNumber}-efficiencyValue`, 'Efficiency', formatPercentage(efficiency), DURATION_LINE),
…eir own elements

The test reads the value of each merged cell (fill number, efficiency, time lost before the first run, mean and total duration of the runs) instead of the whole cell, so that the labels do not interfere with the datatype checks and the cells are checked once the table is loaded.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

Static review found no blocking regressions in the compact layout, preserved filtering, shared components, or fixture updates.

1 open issue

Review effort: Balanced

…LHC fills

Notable changes for developers:
- New `getEfficiencyLevel`: great from 95%, good from 80% to 95% excluded, bad below 80%, no level for a missing or null efficiency.
- New `formatEfficiency` and `efficiencyLegend`.
- Unit tests of `getEfficiencyLevel` and `getBeamTypeFamily`.
…the width of its columns

Notable changes for users:
- The efficiency is displayed in a green solid badge from 95% (great), a soft green badge from 80% to 95% excluded (good) and a soft red badge below 80% (bad). A null efficiency (0.00%) has no style. An info icon next to the header of the efficiency column displays the legend of the levels.
- The columns Fill #, Stable beams, SB Duration and Runs duration are narrower, to leave more space to the Scheme name and the Runs columns. The beam type badge is truncated if it does not fit in the Fill # column.

Notable changes for developers:
- New css classes in `app.css`: `efficiency*`, `runs-duration-label`.
- The tests check the style of the efficiency and its legend.
…air and poor levels

Notable changes for users:
- The efficiency has five levels instead of three: great (95% and above, solid green), good (80% to below 95%, soft green), fair (70% to below 80%, yellow), poor (50% to below 70%, orange) and bad (below 50%, red). A null efficiency (0.00%) still has no style. The legend of the efficiency column displays the five levels.

Notable changes for developers:
- The thresholds of the levels are listed in `EFFICIENCY_LEVELS_THRESHOLDS`.
- Unit and UI tests are updated for the new levels. They were not run locally.
Notable changes for users:
- The columns Fill #, Stable beams, SB Duration, Efficiency and Runs duration have a fixed width fitting their content, instead of a part of the screen leaving unused space around it. The Scheme name takes 20% of the screen and the Runs column all the remaining width, so more runs are displayed (and the dates are not truncated on smaller screens).

Notable changes for developers:
- New `w-lhc-fills-*-column` css classes.
@graduta
graduta added this pull request to stack #2294 October 23, 2026 15:09

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Development

Successfully merging this pull request may close these issues.

2 participants