Skip to content

console: Maintained Object Details#36396

Open
leedqin wants to merge 9 commits into
MaterializeInc:mainfrom
leedqin:maintained-objects-details
Open

console: Maintained Object Details#36396
leedqin wants to merge 9 commits into
MaterializeInc:mainfrom
leedqin:maintained-objects-details

Conversation

@leedqin
Copy link
Copy Markdown
Contributor

@leedqin leedqin commented May 5, 2026

Motivation

Parent PR for Objects List: #36389
This is a stacked PR to add Object details drawer for maintained objects list. Fixes CNS- 51

Description

  • added object drawer and object details card in the side drawer
  • Added SQL definition for the materialized view | indexes
  • Reused Columns from Object explorer
  • Added source diagnostics for in the object details panel
image

Tips For Reviewers:

  • All the changes are in Object Details Panel, Adding Objects Metadata and Fix cluster link commit.
    First commit is setting up the drawer, object card and layout needed to add components to the side drawer

  • Adding objects metadata is the tab to add SQL definition and Columns table

  • Last commit fixed the bug for cluster link column in the list.

@leedqin leedqin added the A-CONSOLE Area: Console label May 5, 2026
@leedqin leedqin force-pushed the maintained-objects-details branch from 5a94c72 to 8196b68 Compare May 5, 2026 20:47
leedqin added 5 commits May 5, 2026 18:06
- Sql queries and tests. Leveraging allObjects subscribe query in the console and only added a query for showing pMax values and hydration statuses. Joining this data client side to be rendered in a table
- Added a filter on Universal Table column header
- Added a Maintained Objects route behind a Launch Darkly flag
- Added filter chips to show filters selected
- Added the filter components fror the different filter columns: freshness, multi select and search for cluster, object types, hydration status
- Maintained Objects List with cells defined for each column, columns using Tanstack sorting / filtering, universal tanstack table components with Url params and pagination
- Maintained Objects List react table with happy path of listing objects and listing objects with filters
- Changed the filter chips to show all the filters seelected i.e "Type: source x", "Type: index x" "Cluter: quickstart" etc
- ujpdated the margins to match the Tag component margins
- Moved search to the left
- Added a sql test to validate lookback minutes behavior for freshness
- Collapsed cluster and lag objects
- MaintainedObjectLIst is now a map keyed by the object id rather than a structured list
- Added pMAX ≥ 5s and ≥ 10s filter options to match the column's
  warning/outdated color thresholds (was previously starting at 1 minute)
- Switched the freshness filter radios to the form variant so they pick up
  the brand purple instead of Chakra's default blue
- Removed the duplicate "X of Y objects" footer that overlapped with the
  TablePagination summary when more than one page was visible
@leedqin leedqin force-pushed the maintained-objects-details branch from 8196b68 to 6c09d37 Compare May 6, 2026 17:12
@leedqin leedqin changed the title Console: Maintained Object Details console: Maintained Object Details May 6, 2026
@leedqin leedqin marked this pull request as ready for review May 6, 2026 19:05
@leedqin leedqin requested a review from a team as a code owner May 6, 2026 19:05
@leedqin leedqin requested review from Alphadelta14 and SangJunBak and removed request for a team May 6, 2026 19:05
Copy link
Copy Markdown
Contributor

@Alphadelta14 Alphadelta14 left a comment

Choose a reason for hiding this comment

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

LGTM

)}
{replicas.length > 0 && (
<DetailItem
label={replicas.length === 1 ? "Replica" : "Replicas"}
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.

do we not just localization functions like ngettext? usually those would handle "pluralization"

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.

I see pluralize used later on :)

</DetailItem>
{cluster?.managed !== null && cluster?.managed !== undefined && (
<DetailItem label="Cluster type">
{cluster.managed ? "managed" : "unmanaged"}
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.

how do we decide which fields are and aren't titlecase? do managed and unmanaged have semantic meaning?

label={replicas.length === 1 ? "Replica" : "Replicas"}
>
{replicas
.map((r) => (r.size ? `${r.name} (${r.size})` : r.name))
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.

I would be shocked to find out that we don't have any replica name utils

</Text>
{/* TODO(@leedqin): drop this Suspense wrapper once ShowCreateBlock
no longer relies on a suspense query internally. */}
<React.Suspense fallback={<LoadingContainer />}>
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.

😱
...sorry

const table = useUniversalTable({
data: rows,
columns: tableColumns,
pageSize: 1000,
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.

I'm unfamiliar with our pagination best practices. is a 1000 item page reasonable?

leedqin added 4 commits May 11, 2026 10:52
- Made the freshness filter a draft-then-apply flow matching query-history's FilterMenu, so typing a number or switching units no longer fires the filter through intermediate values
- Added an Apply / Clear footer with a top divider; Enter in the number field also commits
- Adding object drawer with routes, clickable row, tabs to show metadata
- added Object details card with cluster details / object metadata
- SQL definition using ShowCreateBlock component
- Object columns using ObjectColumns components in Object Explorer. Moved Object Columns to TanStack table and reused it in Object Details drawer
- Source Diagnostics card showing hydration status, messages receieves and messages recieved. This uses sourceStatistics query
- Freshness tab placeholder
- Stop click propagation so the row's onRowClick (object drawer
  navigation) doesn't fire when the user clicks a cluster name.
- Open the cluster details page in a new tab so the table view stays
  intact.
@leedqin leedqin force-pushed the maintained-objects-details branch from cedeca3 to c6fd445 Compare May 11, 2026 14:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-CONSOLE Area: Console

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants