Skip to content

feat(frontend): add the warehouse dashboard tab - #8005

Open
mengw15 wants to merge 2 commits into
apache:mainfrom
mengw15:feat/warehouse-tab-components
Open

feat(frontend): add the warehouse dashboard tab#8005
mengw15 wants to merge 2 commits into
apache:mainfrom
mengw15:feat/warehouse-tab-components

Conversation

@mengw15

@mengw15 mengw15 commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

What changes were proposed in this PR?

The warehouse dashboard tab (#6933), mirroring the computing-unit tab throughout. It sits on top of the merged API client (#7820) and ships the components and the page together, per review.

Everything is gated behind the backend's warehouse feature flag: GET /warehouse/status drives both the sidebar entry and the page, so deployments with the flag off (the default) see no change at all.

  • user-warehouse page + routing — a "Warehouses" sidebar entry, shown only while the flag is on, plus the route. The route itself is unguarded on purpose: a deep link with the flag off lands on the page's disabled notice instead of silently redirecting, and the backend enforces the flag on every endpoint regardless. The page lists the user's warehouses in a virtual-scrolled list, opens the create dialog, refreshes after create/delete, and distinguishes the three states the flag request can leave it in: enabled (the list), disabled (a notice that the deployment has the feature off), and failed (a retry button, instead of the misleading "disabled" notice).
  • warehouse-create-modal — embedded through [(visible)] and returning its result through (warehouseCreated), the same contract as ComputingUnitCreateModalComponent. It disables Create on an empty name, guards against double submission, stays open on failure so the name can be corrected, and abandons the attempt when the dialog closes — Cancel actually cancels, and a late response cannot close a dialog the user has already reopened.
  • warehouse-metadata — the read-only details dialog the row name opens: name, owner, flavor, created. The Lakekeeper catalog name is deliberately absent; it locates data inside storage the user has no access to until warehouses live in their own bucket (Per-user BYO-S3 warehouses #6870, Phase 1).
  • user-warehouse-list-item — the row card, matched to the computing-unit row down to its 64px content height, hover-revealed delete, id column and metadata columns. Warehouses have no status, metrics, rename or sharing, so the computing-unit row's badge, progress bars, inline rename and share control have no counterpart.

Screenshots and Videos:

Screenshot 2026-08-27 at 1 06 01 PM Screenshot 2026-08-27 at 1 06 24 PM Screenshot 2026-08-27 at 1 06 40 PM
Screen.Recording.2026-08-27.at.1.25.59.PM.mov

Any related issues, documentation, discussions?

Closes #6933. Part of #6870; the on-canvas picker follows in #7817.

How was this PR tested?

  • 66 Vitest tests across 7 spec files pass, covering the three components, the page, the dashboard sidebar gating, and the (already merged) services.
    • Whole suite as CI runs it: yarn test:ci
    • Just this change: ng test --watch=false --include "src/app/common/component/warehouse-*/**/*.spec.ts" --include "src/app/dashboard/component/user/user-warehouse/**/*.spec.ts" --include "src/app/dashboard/component/dashboard.component.spec.ts"
  • The dialogs are driven through their own controls — the Create and Cancel buttons, the Enter key, the text input — so the template bindings are verified too, not just component methods.
  • Failure paths verified rather than assumed: each behaviour was broken on purpose and the suite confirmed to fail for the expected reason before being restored.
  • Exercised end to end against a local deployment with the flag on, backed by live Lakekeeper and MinIO — screenshots and a video in the description above.

Was this PR authored or co-authored using generative AI tooling?

Generated-by: Claude Code (claude-opus-5, claude-fable-5)

@github-actions github-actions Bot added feature frontend Changes related to the frontend GUI labels Aug 26, 2026
@github-actions

github-actions Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Automated Reviewer Suggestions

Based on the git blame history of the changed files, we recommend the following reviewers:

  • Contributors with relevant context: @Neilk1021
    You can notify them by mentioning @Neilk1021 in a comment.

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.

Pull request overview

Adds reusable warehouse creation/details dialogs and a dashboard row card for the upcoming warehouse management page.

Changes:

  • Adds warehouse creation with loading, error, and cancellation handling.
  • Adds a read-only warehouse metadata dialog.
  • Adds a tested warehouse list-item card with delete and metadata actions.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
warehouse-create-modal.component.ts Implements warehouse creation behavior.
warehouse-create-modal.component.html Defines the creation dialog UI.
warehouse-create-modal.component.scss Styles the creation form.
warehouse-create-modal.component.spec.ts Tests creation and cancellation flows.
warehouse-metadata.component.ts Implements the metadata dialog.
warehouse-metadata.component.spec.ts Tests displayed metadata.
user-warehouse-list-item.component.ts Implements row-card behavior.
user-warehouse-list-item.component.html Defines row content and actions.
user-warehouse-list-item.component.scss Styles the warehouse row.
user-warehouse-list-item.component.spec.ts Tests rendering and interactions.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@codecov-commenter

codecov-commenter commented Aug 26, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 98.41270% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 93.43%. Comparing base (646e460) to head (a106b6d).

Files with missing lines Patch % Lines
.../user/user-warehouse/user-warehouse.component.html 91.42% 3 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##               main    #8005      +/-   ##
============================================
+ Coverage     93.42%   93.43%   +0.01%     
  Complexity     4703     4703              
============================================
  Files          1180     1187       +7     
  Lines         47766    47954     +188     
  Branches       5321     5329       +8     
============================================
+ Hits          44623    44808     +185     
- Misses         1699     1702       +3     
  Partials       1444     1444              
Flag Coverage Δ *Carryforward flag
access-control-service 81.00% <ø> (ø) Carriedforward from 646e460
agent-service 99.32% <ø> (ø) Carriedforward from 646e460
amber 89.58% <ø> (ø) Carriedforward from 646e460
computing-unit-managing-service 73.67% <ø> (ø) Carriedforward from 646e460
config-service 86.73% <ø> (ø) Carriedforward from 646e460
file-service 87.46% <ø> (ø) Carriedforward from 646e460
frontend 95.92% <98.41%> (+0.02%) ⬆️
notebook-migration-service 79.31% <ø> (ø) Carriedforward from 646e460
pyamber 97.78% <ø> (ø) Carriedforward from 646e460
workflow-compiling-service 77.19% <ø> (ø) Carriedforward from 646e460

*This pull request uses carry forward flags. Click here to find out more.

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

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@mengw15
mengw15 requested a review from kunwp1 August 26, 2026 21:12

@kunwp1 kunwp1 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.

Can you add a screenshot or a video since it's introducing a GUI?

@mengw15

mengw15 commented Aug 27, 2026

Copy link
Copy Markdown
Contributor Author

Can you add a screenshot or a video since it's introducing a GUI?

This is the second of three PRs. It introduces the GUI components, but they aren't wired into the dashboard yet, so they won't be visible from this PR alone. The third PR will assemble and render them on the page.

I can add the screenshot/video here from the full implementation if that's more helpful.

@mengw15
mengw15 force-pushed the feat/warehouse-tab-components branch from 898cf1e to dcc6796 Compare August 27, 2026 07:02
@kunwp1

kunwp1 commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

I think it's better to assemble the second and third PR if you have the implementation.

@mengw15 mengw15 changed the title feat(frontend): add the warehouse dialogs and row card feat(frontend): add the warehouse dashboard tab Aug 27, 2026
@mengw15

mengw15 commented Aug 27, 2026

Copy link
Copy Markdown
Contributor Author

Assembled — this PR now carries the whole tab: the page, sidebar entry and route on top of the components, all gated behind the warehouse feature flag. Screenshots and a video are in the description above.

@mengw15
mengw15 requested review from kunwp1 and a balanced review from Copilot August 27, 2026 20:27

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.

Pull request overview

Copilot reviewed 19 out of 19 changed files in this pull request and generated 1 comment.

@mengw15
mengw15 force-pushed the feat/warehouse-tab-components branch from dc0527a to c5e28f9 Compare August 27, 2026 20:47
The three presentational pieces of the warehouse tab (apache#6933), each
mirroring its computing-unit counterpart: the create dialog, embedded
through [(visible)] like ComputingUnitCreateModalComponent — kept open on
failure, guarded against double submission, and abandoning its attempt
when closed so Cancel actually cancels; the read-only details dialog the
row name opens; and the row card itself, matched to the computing-unit
row down to its content height and hover-revealed delete.

Second of three parts, on top of the API client (apache#7820); the page that
renders them follows. Nothing reaches these components yet.
@mengw15
mengw15 force-pushed the feat/warehouse-tab-components branch from c5e28f9 to a26c81a Compare August 27, 2026 20:49
@mengw15
mengw15 requested a balanced review from Copilot August 27, 2026 20:50

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.

Pull request overview

Copilot reviewed 19 out of 19 changed files in this pull request and generated 2 comments.

@mengw15
mengw15 force-pushed the feat/warehouse-tab-components branch from a26c81a to fd441de Compare August 27, 2026 20:59
The page that assembles the warehouse components (apache#6933): a Warehouses
sidebar entry and route, shown only while the backend's warehouse flag is
on, and the page itself — virtual-scrolled rows, a Create button opening
the shared dialog, delete via the confirmation flow, and a retry path when
the status request fails, mirroring the computing-unit page throughout.
@mengw15
mengw15 force-pushed the feat/warehouse-tab-components branch from fd441de to a106b6d Compare August 27, 2026 21:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature frontend Changes related to the frontend GUI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BYO-S3] Frontend: warehouse dashboard tab

4 participants