Skip to content

feat(studio): DD row editor in details - #559

Merged
steramae-nvidia merged 5 commits into
mainfrom
steramae/dd-row-editor
Jul 9, 2026
Merged

feat(studio): DD row editor in details#559
steramae-nvidia merged 5 commits into
mainfrom
steramae/dd-row-editor

Conversation

@steramae-nvidia

@steramae-nvidia steramae-nvidia commented Jul 2, 2026

Copy link
Copy Markdown
Contributor
Screenshot 2026-07-06 at 9 53 50 AM Screenshot 2026-07-06 at 9 53 29 AM

Summary by CodeRabbit

Summary by CodeRabbit

  • New Features
    • Added a new Data tab to Data Designer job details for browsing and editing output data files.
    • Added Save File persistence to the row editor, including toasts, dirty-state tracking, and an Unsaved changes indicator.
  • Bug Fixes
    • Standardized loading/empty/error states across job detail sections for more consistent messaging and layout.
  • Documentation
    • Updated the mock dataset request spec to a smaller, simplified fake dataset.
  • Tests
    • Updated/expanded row editor tests to match the staged-save and persistence behaviors.

@steramae-nvidia
steramae-nvidia requested review from a team as code owners July 2, 2026 21:52
@steramae-nvidia steramae-nvidia changed the title Steramae/dd row editor feat(studio): DD row editor in details Jul 2, 2026
@github-actions github-actions Bot added the feat label Jul 2, 2026
@coderabbitai

coderabbitai Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds a Data tab for dataset editing, with staged-save and file-persistence behavior in the row editor. Profiler and output sections now use shared empty/loading states. The mock dataset request spec is rewritten to a smaller quarterly company schema.

Changes

Data Designer Job Details UI

Layer / File(s) Summary
Dataset editor flow
web/packages/studio/src/routes/DataDesignerJobDetailsRoute/JobDatasetEditorSection.tsx
Selects supported files, preserves the chosen file across updates, loads and parses file content, and renders selector, error, empty, and editor states.
Row editor save state
web/packages/studio/src/components/FileRowEditor/index.tsx, web/packages/studio/src/components/FileRowEditor/FileHeader.tsx, web/packages/studio/src/components/FileRowEditor/RowEditorPanel.tsx, web/packages/studio/src/components/FileRowEditor/index.test.tsx, web/packages/studio/src/api/datasets/useDatasetFileContent.ts
Tracks saved snapshots, computes dirty state, adds Save File handling and disabled/error behavior, renames the footer action to Stage Changes, and exports the preview-size limit used for save gating.
Job details tabs and states
web/packages/studio/src/routes/DataDesignerJobDetailsRoute/index.tsx, web/packages/studio/src/routes/DataDesignerJobDetailsRoute/DatasetProfilerSection.tsx, web/packages/studio/src/routes/DataDesignerJobDetailsRoute/JobOutputFilesetSection.tsx
Adds the Data tab and replaces profiler/output inline messaging with shared Empty states and spinner-based loading UI.
Mock request spec
web/packages/studio/src/mocks/data-designer/example_request.txt
Rewrites the mock request to a smaller quarterly company dataset schema with new fields and plausibility rules.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant JobDatasetEditorSection
  participant useDatasetFileContent
  participant parseDataFile
  participant FileRowEditor

  User->>JobDatasetEditorSection: select file
  JobDatasetEditorSection->>useDatasetFileContent: fetch content
  useDatasetFileContent-->>JobDatasetEditorSection: content or error
  JobDatasetEditorSection->>parseDataFile: parse content
  parseDataFile-->>JobDatasetEditorSection: rows or parse error
  JobDatasetEditorSection->>FileRowEditor: render rows
Loading
sequenceDiagram
  participant User
  participant FileHeader
  participant FileRowEditor
  participant onSaveFile

  User->>FileHeader: click Save File
  FileHeader->>FileRowEditor: trigger save
  FileRowEditor->>onSaveFile: persist edited rows
  onSaveFile-->>FileRowEditor: success or error
  FileRowEditor->>FileHeader: update dirty and disabled state
Loading

Possibly related PRs

Suggested reviewers: htolentino-nvidia

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the main change: adding a Data Designer row editor in the details view.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch steramae/dd-row-editor

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 3

🧹 Nitpick comments (2)
web/packages/studio/src/routes/DataDesignerJobDetailsRoute/JobDatasetEditorSection.tsx (1)

4-27: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Import order: react (external) placed after internal @studio imports.

As per coding guidelines, "Group imports: external libraries, internal modules, relative imports". react should be grouped with @nvidia/foundations-react-core at the top, not trailing internal imports.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@web/packages/studio/src/routes/DataDesignerJobDetailsRoute/JobDatasetEditorSection.tsx`
around lines 4 - 27, The import grouping in JobDatasetEditorSection is out of
order because the external react import is placed after internal `@studio`
imports. Reorder the imports so all external libraries, including react and
`@nvidia/foundations-react-core`, are grouped at the top before internal modules,
keeping the existing symbols like useEffect, useMemo, useState, FC, and
ReactNode in the same import from react.

Source: Coding guidelines

web/packages/studio/src/routes/DataDesignerJobDetailsRoute/JobOutputFilesetSection.tsx (1)

144-187: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Repeated Card wrapper markup across three branches.

Same className/attributes combo repeated for loading, error, and empty states. Consider extracting a small local wrapper component.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@web/packages/studio/src/routes/DataDesignerJobDetailsRoute/JobOutputFilesetSection.tsx`
around lines 144 - 187, Repeated Card wrapper markup is duplicated across the
loading, error, and empty branches in JobOutputFilesetSection; extract a small
local helper/component around the shared Card structure and reuse it in the
isResultsLoading, isResultsError, and !artifactsResult paths. Keep the
branch-specific Spinner and Empty content inside the wrapper, but centralize the
common className and attributes props so the section is easier to maintain.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@web/packages/studio/src/routes/DataDesignerJobDetailsRoute/JobDatasetEditorSection.tsx`:
- Around line 182-184: The parse-error branch in JobDatasetEditorSection is
rendering Empty directly, unlike the other terminal states that use
centered(...) for consistent Card alignment. Update the parsed.error path in
JobDatasetEditorSection to wrap the Empty component with centered(...) so the
“Could not parse file” state matches the layout of the no-files, loading, and
content-error states.
- Around line 69-153: `SelectRoot` in `JobDatasetEditorSection` is switching
from uncontrolled to controlled because `selectedPath` starts as null and later
becomes a file path via the effect. Initialize the selection state from
`defaultPath` (or another stable controlled value) on first render, and keep the
`value` prop consistently defined so `SelectRoot`, `selectedPath`, and the
`useEffect` defaulting logic stay in sync.

In
`@web/packages/studio/src/routes/DataDesignerJobDetailsRoute/JobOutputFilesetSection.tsx`:
- Around line 172-184: The fallback content in JobOutputFilesetSection’s
artifactsResult-empty state is duplicating the same message for both Empty
props. Update the conditional logic around emptyTitle and emptyDescription so
the Empty component gets distinct title and description text in both the
terminal and non-terminal branches, using the existing isTerminal check in
JobOutputFilesetSection.

---

Nitpick comments:
In
`@web/packages/studio/src/routes/DataDesignerJobDetailsRoute/JobDatasetEditorSection.tsx`:
- Around line 4-27: The import grouping in JobDatasetEditorSection is out of
order because the external react import is placed after internal `@studio`
imports. Reorder the imports so all external libraries, including react and
`@nvidia/foundations-react-core`, are grouped at the top before internal modules,
keeping the existing symbols like useEffect, useMemo, useState, FC, and
ReactNode in the same import from react.

In
`@web/packages/studio/src/routes/DataDesignerJobDetailsRoute/JobOutputFilesetSection.tsx`:
- Around line 144-187: Repeated Card wrapper markup is duplicated across the
loading, error, and empty branches in JobOutputFilesetSection; extract a small
local helper/component around the shared Card structure and reuse it in the
isResultsLoading, isResultsError, and !artifactsResult paths. Keep the
branch-specific Spinner and Empty content inside the wrapper, but centralize the
common className and attributes props so the section is easier to maintain.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 3b6ccbca-c0a0-4b42-a0d7-09e33c640b2d

📥 Commits

Reviewing files that changed from the base of the PR and between 09838a7 and 8325aef.

📒 Files selected for processing (5)
  • web/packages/studio/src/mocks/data-designer/example_request.txt
  • web/packages/studio/src/routes/DataDesignerJobDetailsRoute/DatasetProfilerSection.tsx
  • web/packages/studio/src/routes/DataDesignerJobDetailsRoute/JobDatasetEditorSection.tsx
  • web/packages/studio/src/routes/DataDesignerJobDetailsRoute/JobOutputFilesetSection.tsx
  • web/packages/studio/src/routes/DataDesignerJobDetailsRoute/index.tsx

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor
Suite Lines Covered Line Rate Branch Rate
Unit Tests 23273/30443 76.4% 61.2%
Integration Tests 13617/29123 46.8% 20.0%

Signed-off-by: Sean Teramae <steramae@nvidia.com>
Signed-off-by: Sean Teramae <steramae@nvidia.com>
Signed-off-by: Sean Teramae <steramae@nvidia.com>
Signed-off-by: Sean Teramae <steramae@nvidia.com>
Signed-off-by: Sean Teramae <steramae@nvidia.com>
@steramae-nvidia

Copy link
Copy Markdown
Contributor Author

This change is part of the following stack:

Change managed by git-spice.

@steramae-nvidia
steramae-nvidia force-pushed the steramae/dd-row-editor branch from 0906a83 to 81cd00b Compare July 7, 2026 21:27
@steramae-nvidia
steramae-nvidia added this pull request to the merge queue Jul 9, 2026
Merged via the queue into main with commit 649df51 Jul 9, 2026
102 of 136 checks passed
@steramae-nvidia
steramae-nvidia deleted the steramae/dd-row-editor branch July 9, 2026 16:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants