Skip to content

fix(ui): prevent schedule column text from wrapping mid-word in pipeline table#30205

Open
ShaileshParmar11 wants to merge 3 commits into
open-metadata:mainfrom
ShaileshParmar11:claude/schedule-wrapping-fix-76cdb2
Open

fix(ui): prevent schedule column text from wrapping mid-word in pipeline table#30205
ShaileshParmar11 wants to merge 3 commits into
open-metadata:mainfrom
ShaileshParmar11:claude/schedule-wrapping-fix-76cdb2

Conversation

@ShaileshParmar11

@ShaileshParmar11 ShaileshParmar11 commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

issue

image

fix

image

Problem

In the pipeline table (test-suite Data Observability tab and the ingestion list table), the Schedule column text broke character-by-character — e.g. "At 12:00 AM" rendered as "At 12:", "00", "AM" stacked vertically.

The schedule cell renders its two text lines inside a wrap={false} Ant Design flex row. With wrap={false}, the flex items don't wrap but the text column still shrinks below its content width, so the text itself wrapped mid-word.

Fix

Add whitespace-nowrap to both schedule detail lines (schedule-primary-details and schedule-secondary-details) in ScheduleFieldCell so each stays on a single line within the fixed-width column.

Verification

  • UI checkstyle — organize-imports + eslint + prettier pass clean; diff is only the two className additions.
  • DOM measurement — both lines now compute whiteSpace: nowrap and render on a single line (85px and 56px wide, inside the 176px column).
  • Visual — confirmed in the running UI at laptop width: "At 12:00 AM" / "Every day" display on two tidy lines.

Before

"At 12:" / "00" / "AM" wrapping vertically in the Schedule column.

After

"At 12:00 AM" / "Every day" — clean two-line layout, no mid-word breaks.

🤖 Generated with Claude Code


Summary by Gitar

  • Layout improvements:
    • Constrained column width in TestSuitePipelineTab and IngestionListTable to prevent layout breaking.
    • Applied flex="auto" and tw:min-w-0 to schedule column containers to ensure proper truncation behavior.
  • UI behavior:
    • Replaced whitespace-nowrap with ellipsis on schedule details to safely handle long descriptions.

This will update automatically on new commits.

Greptile Summary

This PR improves Schedule column rendering in pipeline tables. The main changes are:

  • Adds fixed-width constraints to the Test Suite pipeline Schedule cell.
  • Makes the schedule icon and text use explicit flex sizing.
  • Truncates long schedule details with hover tooltips.

Confidence Score: 5/5

This looks safe to merge.

  • No new blocking issue distinct from the previously reported schedule overflow case was found.

Important Files Changed

Filename Overview
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/TestSuite/TestSuitePipelineTab/TestSuitePipelineTab.component.tsx Caps the Test Suite pipeline Schedule cell at its configured width.
openmetadata-ui/src/main/resources/ui/src/utils/IngestionListTableUtils.tsx Updates schedule content sizing and adds ellipsis tooltips to both detail lines.

Reviews (3): Last reviewed commit: "fix(ui): drop redundant maxWidth onCell ..." | Re-trigger Greptile

Context used (3)

  • Context used - CLAUDE.md (source)
  • Context used - openmetadata-ui-core-components/CLAUDE.md (source)
  • Context used - AGENTS.md (source)

…ine table

The Schedule cell in the ingestion/test-suite pipeline table rendered its
text inside a `wrap={false}` flex row where the text column shrinks, causing
"At 12:00 AM" / "Every day" to break character-by-character. Add
`whitespace-nowrap` to both schedule detail lines so each stays on a single
line within the fixed-width column.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ShaileshParmar11
ShaileshParmar11 requested a review from a team as a code owner July 18, 2026 16:31
Copilot AI review requested due to automatic review settings July 18, 2026 16:31

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions

Copy link
Copy Markdown
Contributor

❌ PR checklist incomplete

This PR cannot be merged until the following are addressed on its linked issue:

  • No GitHub issue is linked. Link an issue in the Development section of the PR (or add Fixes #12345 to the description). For a same-org cross-repo issue, add Fixes open-metadata/<repo>#123 to the description.

The fields live on the linked issue in the Shipping project (open the issue → right sidebar → Projects). After you set them, re-run this check (or push a commit) — issue/project changes do not re-trigger it automatically.

Maintainers can bypass this check by adding the skip-pr-checks label.

@github-actions github-actions Bot added safe to test Add this label to run secure Github workflows on PRs UI UI specific issues labels Jul 18, 2026
Comment thread openmetadata-ui/src/main/resources/ui/src/utils/IngestionListTableUtils.tsx Outdated
@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Jest test Coverage

UI tests summary

Lines Statements Branches Functions
Coverage: 65%
65.1% (75638/116179) 48.88% (45067/92187) 49.69% (13638/27443)

… overflowing

Addresses review feedback: whitespace-nowrap alone prevents the mid-word break
but lets long verbose cron descriptions (e.g. "On day 1 of the month, only in
January") expand the auto-layout column and overflow the 150–176px Schedule cell.

Replace the plain nowrap with antd Typography ellipsis + tooltip in
ScheduleFieldCell (min-w-0 flex column so it can shrink), and cap the schedule
cell width at both call sites (tw:max-w-44 on the core-components cell, maxWidth
onCell on the antd column) so ellipsis engages. Short schedules render on one
line each; long ones truncate with the full text available on hover.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 18, 2026 17:32

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

🟡 Playwright Results — all passed (29 flaky)

✅ 4542 passed · ❌ 0 failed · 🟡 29 flaky · ⏭️ 95 skipped

Shard Passed Failed Flaky Skipped
🟡 Shard 1 437 0 3 16
✅ Shard 2 11 0 0 0
🟡 Shard 3 822 0 10 8
🟡 Shard 4 821 0 2 18
🟡 Shard 5 837 0 4 5
🟡 Shard 6 786 0 2 46
🟡 Shard 7 828 0 8 2
🟡 29 flaky test(s) (passed on retry)
  • Flow/TestConnectionModal.spec.ts › failure state shows remediation card with error content (shard 1, 1 retry)
  • Pages/Lineage/LineageRightPanel.spec.ts › Verify custom properties tab IS visible for supported type: metric (shard 1, 1 retry)
  • Flow/SearchRBAC.spec.ts › a fully denied user sees neither asset type when browsing (shard 1, 1 retry)
  • Features/BulkEditEntity.spec.ts › Glossary Term (Nested) (shard 3, 1 retry)
  • Features/BulkEditOperationBadges.spec.ts › Database service bulk edit search filters rows and clear restores them (shard 3, 1 retry)
  • Features/BulkImportWithDotInName.spec.ts › Column with dot in name under service with dot (shard 3, 1 retry)
  • Features/ContextCenterArchive.spec.ts › archive page lazy-loads more rows on scroll within its own scroll container (shard 3, 1 retry)
  • Features/ContextCenterArticles.spec.ts › Article listing search filters, clears, and shows empty state (shard 3, 1 retry)
  • Features/ContextCenterArticles.spec.ts › Article list cards, recently viewed widget, and pagination work (shard 3, 1 retry)
  • Features/ContextCenterMemories.spec.ts › edit-memory button on the row opens the modal in edit mode (shard 3, 1 retry)
  • Features/ContextCenterMemories.spec.ts › changing visibility from Shared to Private shows "visible only to you" after save (shard 3, 1 retry)
  • Features/DataQuality/CertificationFilter.spec.ts › Certification filter narrows both table- and testCase-index queries via the flat field path (shard 3, 1 retry)
  • Features/Glossary/GlossaryHierarchy.spec.ts › should move term with children to different glossary (shard 3, 1 retry)
  • Features/Glossary/GlossaryTermRelationsGraphNested.spec.ts › viewing a child term: parent appears as a 1-hop neighbour via parentOf edge (shard 4, 1 retry)
  • Features/Glossary/GlossaryTermRelationsGraphNested.spec.ts › viewing a child term: parentOf edge is rendered between parent and child (shard 4, 1 retry)
  • Pages/CustomProperties.spec.ts › Entity Reference List (shard 5, 1 retry)
  • Pages/DataContractsSemanticRules.spec.ts › Validate Description Rule Is_Not_Set (shard 5, 1 retry)
  • Pages/DataContractsSemanticRules.spec.ts › Validate DataProduct Rule Any_In (shard 5, 1 retry)
  • Pages/DataProductODPS.spec.ts › name guard blocks a YAML with no readable product name (shard 5, 1 retry)
  • Pages/Entity.spec.ts › Tier Add, Update and Remove (shard 6, 1 retry)
  • Pages/ExplorePageRightPanel_KnowledgeCenter.spec.ts › Should remove user owner for knowledgeCenter (shard 6, 1 retry)
  • Pages/Glossary.spec.ts › Drag and Drop Glossary Term (shard 7, 1 retry)
  • Pages/GlossaryImportExport.spec.ts › Glossary Bulk Import Export (shard 7, 1 retry)
  • Pages/GlossaryImportExport.spec.ts › Import partial success - some terms pass, some fail (shard 7, 1 retry)
  • Pages/InputOutputPorts.spec.ts › Output ports section collapse/expand (shard 7, 1 retry)
  • Pages/Lineage/LineageFilters.spec.ts › Verify Impact Analysis service filter selection (shard 7, 1 retry)
  • Pages/Lineage/LineageRightPanel.spec.ts › Verify custom properties tab is NOT visible for pipelineService in platform lineage (shard 7, 1 retry)
  • Pages/Lineage/LineageRightPanel.spec.ts › Verify custom properties tab is NOT visible for apiService in platform lineage (shard 7, 1 retry)
  • Pages/TestSuite.spec.ts › Logical TestSuite (shard 7, 1 retry)

📦 Download artifacts

How to debug locally
# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip    # view trace

@sonarqubecloud

Copy link
Copy Markdown

@ShaileshParmar11
ShaileshParmar11 enabled auto-merge (squash) July 20, 2026 05:25
</Table.Cell>

<Table.Cell className="tw:align-middle tw:w-44">
<Table.Cell className="tw:align-middle tw:w-44 tw:max-w-44">

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

We should be removing tw:w-44 then?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Good question, but here we do need both — this table is the @openmetadata/ui-core-components Table, which renders table-layout: auto (unlike the antd wrapper, which is tableLayout="fixed"). Under auto layout width and max-width do different jobs.

Measured on an isolated repro (cell 176px, neighbour cell alongside):

variant content cell width ellipsis
width only long 422px ❌ expands no
max-width only short 66px ❌ collapses no
width + max-width long 176px
width + max-width short 176px ✅ n/a

So under auto layout width is only a preferred size (content can push past it), while max-width alone lets the column collapse to content — a short "Every day" would shrink the column to ~66px and make it jump around per row. Keeping both pins it at 176px and caps growth.

Worth noting the sibling cells in this table (tw:w-36, tw:w-28, tw:w-60) rely on the same tw:w-* mechanism, so dropping it here would also make this column inconsistent with them.

dataIndex: 'schedule',
key: 'schedule',
width: 150,
onCell: () => ({ style: { maxWidth: 150 } }),

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Why width:150 doesn't take effect here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

You're right — it does take effect, and my onCell was redundant. Removed in be08862.

The shared Table wrapper renders antd with tableLayout="fixed", so width: 150 becomes a hard cap via antd's <colgroup> and the inner ellipsis engages on its own.

Verified with an isolated repro (fixed layout + colgroup width:150, long text):

variant cell width ellipsis
no max-width 150px ✅ engaged
with max-width 150px ✅ engaged

Identical — so the max-width added nothing here. Thanks for catching it.

The shared Table wrapper renders antd with tableLayout="fixed", so the
column's width: 150 is already a hard cap via colgroup and the inner
ellipsis engages without any extra max-width. Verified: fixed layout with
colgroup width:150 yields identical results with and without max-width
(cell 150px, ellipsis engaged).

The core-components table in TestSuitePipelineTab is table-layout: auto,
so it still needs both tw:w-44 (holds the target width) and tw:max-w-44
(prevents content-driven growth).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 20, 2026 05:37

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@gitar-bot

gitar-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown
Code Review ✅ Approved

Prevents mid-word line wrapping and layout overflow in the pipeline table by constraining column widths and enabling ellipsis truncation for schedule descriptions. No issues found.

Options

Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

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

Labels

safe to test Add this label to run secure Github workflows on PRs UI UI specific issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants