feat(gui): open a step to inspect its settings read-only on the Form View - #8442
feat(gui): open a step to inspect its settings read-only on the Form View#8442yangzhang75 wants to merge 3 commits into
Conversation
Automated Reviewer SuggestionsBased on the
|
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #8442 +/- ##
============================================
- Coverage 94.04% 93.78% -0.27%
Complexity 4822 4822
============================================
Files 1208 1208
Lines 49383 49675 +292
Branches 6019 6068 +49
============================================
+ Hits 46441 46586 +145
- Misses 1463 1607 +144
- Partials 1479 1482 +3
*This pull request uses carry forward flags. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
🟡 Changes recommended
Inspection can still mutate shared state and publish editing presence, while selection and result visibility can become stale.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Adds read-only operator inspection to Form View, alongside stacked Form View functionality.
Changes:
- Adds an inert property panel driven by canvas selection.
- Adds nested fields, instructions, execution controls, and results.
- Expands Vitest coverage and test harnesses.
File summaries
| File | Description |
|---|---|
workflow-result.service.ts |
Detects non-empty results. |
workflow-result.service.spec.ts |
Tests result detection. |
workflow-form.spec-harness.ts |
Expands Form View mocks. |
workflow-form.rendered.spec.ts |
Tests rendered UI. |
workflow-form.component.ts |
Implements inspection and stacked Form View behavior. |
workflow-form.component.spec.ts |
Tests component behavior. |
workflow-form.component.scss |
Styles new Form View sections. |
workflow-form.component.html |
Renders controls, results, and inspection panel. |
sub-fields.spec.ts |
Tests nested-field utilities. |
property-editor.component.ts |
Makes placement persistence configurable. |
property-editor.component.spec.ts |
Tests placement opt-out. |
Review details
- Files reviewed: 11/11 changed files
- Comments generated: 4
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
243f796 to
8b644bf
Compare
…instruction Add the Run button whose label, icon and disabled state mirror the operator canvas (Invalid / Empty / Connecting / Connect / Run / Stop, in the same precedence), the computing-unit selector, a run clock counted off the engine's own duration event, and a plain-language failure message that collapses opaque SQL/Java traces to one sentence and blames empty required inputs when that is the cause. Running is the same execution call the canvas makes. Show the author's instruction above the inputs as a collapsible, read-only markdown card, only when there is instruction text. Editing it is part of the authoring PR; showing the results follows in the next PR. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FVvP3ttj22f9LB4p9u2anY
Render each chosen, currently-viewed step's output under the workflow that produced it -- a table, a visualization, or a compact "no result yet" -- with a per-result zoom and visualizations fitted to their cards after a run. The chosen set is a pure display filter that follows the canvas's view-result set (getOperatorsToViewResult) and never writes it, per the settled result-panel design. Add WorkflowResultService.hasNonEmptyResult so a view-result step that produced zero tuples (e.g. a download/publish UDF) reads as "no result" rather than an empty card. Opening a step to inspect it, and the authoring mode that picks what to show, follow in later PRs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FVvP3ttj22f9LB4p9u2anY
…View Clicking a step on the embedded preview opens its property panel read-only: the panel carries the inert attribute, which blocks pointer AND keyboard AND focus (the graph is modification-disabled too), and it stays the scroll container so a long panel is still readable. Clicking empty canvas dismisses it, and the form stays silent on the shared co-editor channel so it never shows as editing a step. Turning the panel live to choose what to expose is the authoring PR. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FVvP3ttj22f9LB4p9u2anY
8b644bf to
387bf0e
Compare
What changes were proposed in this PR?
Closes #8025. Part of the Form View stack (parent issue #8011), stacked on #8441 (PR13).
Lets a reader open a step on the embedded workflow preview to inspect its settings, read-only.
inertattribute (which blocks pointer AND keyboard AND focus, unlikepointer-events:none), and the graph is modification-disabled. The panel itself stays the scroll container so a long panel is still readable.[hidden], not*ngIf: it shows its operator by REACTING to the highlight stream (no initial pull), so it must already be subscribed when the click fires. Mounting it on selection subscribes too late and opens empty.updateSharedModelAwareness("currentlyEditing", undefined)), so inspecting a step from the form never shows this session as editing a graph on the other view.persistPlacementinput to the property editor (defaulttrue, canvas unchanged). The Form View mounts it withpersistPlacement=false, so itsngOnInitskips the#right-containerdocked-panel restore that only exists in the canvas layout and would otherwise throw.Turning the panel live to choose what to expose is the authoring PR (#8026).
Any related issues, documentation, discussions?
Closes #8025. Part of the Form View feature (parent issue #8011).
How was this PR tested?
Unit tests (vitest). Direct-construction tests cover the selection/dismiss logic (open on single highlight, clear on empty-canvas unhighlight, silence on the co-editor channel, close button). A TestBed rendered test covers the panel markup with the property editor stubbed (it is a heavy child with its own spec; the stub carries only the two bound inputs). The property-editor spec covers the new
persistPlacementguard:ngOnInitdoes not read#right-containerandngOnDestroydoes not persist geometry whenpersistPlacement=false. 100% statement and function coverage on the changed source.ng test,ng build gui(AOT), eslint and prettier all pass.Screenshot
A step opened read-only on the Form View: the property panel showing the operator's settings, inert.
Was this PR authored or co-authored using generative AI tooling?
Yes. Co-authored with Claude (Anthropic), reviewed line by line by the author before submission.
🤖 Generated with Claude Code
https://claude.ai/code/session_01FVvP3ttj22f9LB4p9u2anY