Skip to content

feat(gui): read the schema's constraints in the property panel - #8507

Open
kz930 wants to merge 1 commit into
apache:mainfrom
kz930:feat/panel-reads-schema-constraints
Open

feat(gui): read the schema's constraints in the property panel#8507
kz930 wants to merge 1 commit into
apache:mainfrom
kz930:feat/panel-reads-schema-constraints

Conversation

@kz930

@kz930 kz930 commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

What changes were proposed in this PR?

The property panel reads the constraints the schema declares.

A column property is checked against the attribute type rule for every column it names rather than only the first. A hyperparameter's value renders as the control its parameter implies: a dropdown where the accepted set is known, a number input where it is numeric, a plain text box where the rules say nothing. A property declared unique among rows says which row already holds the value, and a row deleted clears the error it left behind, since deleting a row changes no surviving control's value and the row left behind would otherwise keep an error about a duplicate that is no longer there.

#8350 is the export button; this one is a separate thread of work.

Any related issues, documentation, discussions?

Part of #8325, 26 of 27; that issue lists the set in order.

Closes #8510, the task this change is the whole of.

Supersedes #7983, #7980 and the frontend half of #7946, which are closed in favour of this. They touched the same three files, so reviewing them apart meant reading the same code more than once and resolving a conflict between them at merge.

Closes #7981. Part of #7979, #7952 and #7936, whose remaining half is in #8348; those three stay open until both land, since each is only fixed once the schema declares the rule and the panel enforces it.

How was this PR tested?

formly-utils.spec.ts covers the mapping from a declared rule to a control and the type checking across every named column. constrained-value.component.spec.ts covers what each control renders. operator-property-edit-frame.component.spec.ts drives the rendered form, including the click that deletes a duplicate row and the error it has to clear.

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

Generated-by: Claude Code (Claude Opus 5)

🤖 Generated with Claude Code

A column property is checked against the attribute type rule for every
column it names rather than only the first. A hyperparameter's value
renders as the control its parameter implies: a dropdown where the
accepted set is known, a number input where it is numeric, a plain text
box where the rules say nothing. A property declared unique among rows
says which row already holds the value, and a row deleted clears the
error it left behind.

Split out of apache#8350 on review. That change is the export button; this one
is a separate thread, and nothing in it makes a workflow exportable.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

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: @yangzhang75, @Ma77Ball, @bobbai00
    You can notify them by mentioning @yangzhang75, @Ma77Ball, @bobbai00 in a comment.

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 91.50943% with 9 lines in your changes missing coverage. Please review.
✅ Project coverage is 93.68%. Comparing base (1fbd346) to head (0840ffe).
⚠️ Report is 3 commits behind head on main.

Files with missing lines Patch % Lines
...it-frame/operator-property-edit-frame.component.ts 86.11% 2 Missing and 3 partials ⚠️
frontend/src/app/common/formly/formly-utils.ts 95.83% 0 Missing and 2 partials ⚠️
...t/constrained-value/constrained-value.component.ts 90.47% 2 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##               main    #8507      +/-   ##
============================================
- Coverage     93.69%   93.68%   -0.02%     
  Complexity     4826     4826              
============================================
  Files          1209     1210       +1     
  Lines         49871    49972     +101     
  Branches       6099     6133      +34     
============================================
+ Hits          46727    46816      +89     
- Misses         1652     1656       +4     
- Partials       1492     1500       +8     
Flag Coverage Δ *Carryforward flag
access-control-service 80.18% <ø> (ø) Carriedforward from 1fbd346
agent-service 99.32% <ø> (ø) Carriedforward from 1fbd346
amber 89.91% <ø> (ø) Carriedforward from 1fbd346
computing-unit-managing-service 77.14% <ø> (ø) Carriedforward from 1fbd346
config-service 87.12% <ø> (ø) Carriedforward from 1fbd346
file-service 83.65% <ø> (ø) Carriedforward from 1fbd346
frontend 96.12% <91.50%> (-0.04%) ⬇️
notebook-migration-service 83.73% <ø> (ø) Carriedforward from 1fbd346
pyamber 98.47% <ø> (ø) Carriedforward from 1fbd346
workflow-compiling-service 77.19% <ø> (ø) Carriedforward from 1fbd346

*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.

@kz930

kz930 commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

/request-review @aglinxinyuan

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.

Read the schema's constraints in the property panel The Run button ignores compilation errors, so a workflow that cannot compile still starts

2 participants