[NAE-2462] Builder component decomposition - #345
Conversation
Release/6.4.1
Release/6.4.2
- change the setting and getting properties from localStorage - fix the change detection bug - fix the problem with sending two requests on backend
- fix test and pr comments
- fix pr comments
- add new case ref component view
- fix pr comments
- fix providers
[NAE-2463] Builder change localStorage sets
…e/6.5.0 # Conflicts: # .github/workflows/master-build.yml # .github/workflows/release-build.yml
- update changelog
- performance fixes for builder to be ready as datafield
- performance fixes for builder
- remove z in simulation mode - add fixes of toolbar for scrollbar on smaller devices or datafields
- add processref as new datafield
- rework of form builder - rework of info label - remove paper component
# Conflicts: # projects/netgrif-components/src/lib/builder/modeler/edit-mode/edit-mode.service.ts # projects/netgrif-components/src/lib/builder/modeler/edit-mode/services/modes/canvas-tool-context.ts
# Conflicts: # package.json # projects/netgrif-components-core/package.json # projects/netgrif-components/package.json
|
Warning Review limit reached
Next review available in: 43 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
WalkthroughThe PR adds process-reference field support, embedded builder cases, scoped local storage, loading state, canvas interaction updates, and a panel-based form-builder layout. It also updates service paths, package versions, tests, examples, tab rendering, and the 6.5.0 changelog. ChangesBuilder and process-reference changes
Estimated code review effort: 4 (Complex) | ~60 minutes Sequence Diagram(s)sequenceDiagram
participant FieldConverterService
participant ProcessRefDefaultComponent
participant BuilderComponent
participant CaseService
FieldConverterService->>ProcessRefDefaultComponent: create ProcessRefField
ProcessRefDefaultComponent->>BuilderComponent: render builder portal
BuilderComponent->>CaseService: load referenced case
CaseService-->>BuilderComponent: return case and reload events
Possibly related PRs
Suggested labels: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
There was a problem hiding this comment.
Actionable comments posted: 13
🤖 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
`@projects/nae-example-app/src/app/doc/builder-example/builder-tabs-example.component.ts`:
- Line 1: Restore OnPush change detection for BuilderTabsExampleComponent by
importing ChangeDetectionStrategy and configuring the component decorator with
ChangeDetectionStrategy.OnPush. Keep the existing tab initialization unchanged;
only retain the default strategy if required by a demonstrated tab-rendering
regression, accompanied by a regression test.
In
`@projects/netgrif-components-core/src/lib/task-content/services/field-converter.service.ts`:
- Around line 112-114: Add a ProcessRefField branch to resolveType() that
returns FieldTypeResource.PROCESS_REF, matching the ProcessRefField construction
already handled in toClass() and ensuring reverse type resolution does not
return undefined.
In `@projects/netgrif-components/src/lib/builder/builder.component.ts`:
- Around line 148-153: Update the getOneCase subscription in the
dataFieldPortalData branch to handle request errors; when loading the initial
case fails, clear the loading state and transition through the component’s
existing error or fallback mechanism so the embedded builder is no longer
blocked.
In
`@projects/netgrif-components/src/lib/builder/form-builder/field-list/field-list.component.ts`:
- Around line 143-145: Update typeTitle in the field-list component to return an
empty string when the computed name is absent, while preserving the existing
capitalization behavior for non-nullish types.
In
`@projects/netgrif-components/src/lib/builder/form-builder/form-builder.component.scss`:
- Around line 45-49: Move the `@media` print block out of
form-builder.component.scss into the application’s global stylesheet so the body
selector applies to the document body. Preserve the margin and box-shadow rules,
and scope .page through the global Builder selector if necessary rather than
relying on component encapsulation.
In
`@projects/netgrif-components/src/lib/builder/form-builder/info-label/info-label.component.scss`:
- Around line 22-25: Update the .info-label-group flex container with min-width:
0, and ensure metadata text in .info-label-title can wrap by adding
overflow-wrap: anywhere (or implement ellipsis together with a tooltip). Apply
the same overflow protection to the related styles covering the additional
referenced range.
In
`@projects/netgrif-components/src/lib/builder/modeler/edit-mode/edit-mode.service.ts`:
- Line 351: Update the temporary arc endpoint assignment in the edit-mode arc
rendering logic to fall back to intersect.x and intersect.y when finalX or
finalY is NaN, keeping zero-length arcs anchored at the source node instead of
(0, 0).
In
`@projects/netgrif-components/src/lib/builder/modeler/services/canvas/canvas-mode-service.ts`:
- Around line 77-85: Update the canvas initialization/render flow around
renderModel and the canvas assignment so that, when a canvas becomes available,
all existing wrappers in elements are attached to it, including places,
transitions, and arcs. Do not rely only on the optional add calls in newSvgPlace
and related creation methods; rebuild or iterate the existing collection using
the established canvas add methods, preserving elements.findNode() availability
and avoiding duplicate attachments.
- Around line 28-38: Tie the tabSelected$ subscription in CanvasModeService to
the service/component lifecycle so it is disposed when the owning
BuilderComponent-scoped service is destroyed. Use takeUntilDestroyed() with the
appropriate DestroyRef or bind it to the relevant
EditableComponent/SimulationModeComponent destruction, while preserving the
existing panzoom.reset behavior when selected becomes true.
In
`@projects/netgrif-components/src/lib/builder/services/builder-integration.service.ts`:
- Around line 107-110: Update setData in BuilderIntegrationService to retain the
latest HistoryChange received while _loading is true instead of discarding it,
then persist that snapshot when the active request settles. Serialize the
task-write flow around the existing persistence logic so queued updates are
processed after completion and older XML snapshots cannot overwrite newer edits.
In
`@projects/netgrif-components/src/lib/builder/services/local-storage.service.ts`:
- Around line 10-12: Update LocalStorageService’s constructor to also inject
DATA_FIELD_PORTAL_DATA and derive _prefix from its referenced case ID when
NAE_TAB_DATA does not provide processCase data. Preserve the existing tab-data
prefix behavior and use the data-field portal value only as the fallback.
In
`@projects/netgrif-components/src/lib/data-fields/process-ref/process-ref-default/process-ref-default.component.scss`:
- Around line 9-13: Update the child-element styling in the process-ref-default
component stylesheet to remove the unsupported ::ng-deep selector. Preserve the
min-width, min-height, and width rules through a properly scoped selector if
they are required; otherwise remove the unused rule.
In
`@projects/netgrif-components/src/lib/data-fields/process-ref/process-ref-default/process-ref-default.component.spec.ts`:
- Around line 22-23: Update the spec around the CaseRefDefaultComponent suite to
test ProcessRefDefaultComponent: render nc-process-ref-default with
ProcessRefField, adjust the component type and related setup accordingly, and
rename the describe suite to ProcessRefDefaultComponent.
🪄 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: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: fa40d393-46b4-42b6-948d-efe7705d0875
📒 Files selected for processing (87)
CHANGELOG.mdpackage.jsonprojects/nae-example-app/src/app/doc/builder-example/builder-tabbed-case-view/builder-tabbed-case-view.component.tsprojects/nae-example-app/src/app/doc/builder-example/builder-tabs-example.component.tsprojects/netgrif-components-core/src/lib/data-fields/models/component.tsprojects/netgrif-components-core/src/lib/data-fields/process-ref-field/model/process-ref-field.tsprojects/netgrif-components-core/src/lib/data-fields/process-ref-field/process-ref-default/abstract-process-ref-default.component.tsprojects/netgrif-components-core/src/lib/data-fields/public-api.tsprojects/netgrif-components-core/src/lib/task-content/model/field-type-resource.tsprojects/netgrif-components-core/src/lib/task-content/services/field-converter.service.tsprojects/netgrif-components-core/src/lib/user/services/user.service.tsprojects/netgrif-components/package.jsonprojects/netgrif-components/src/lib/builder/builder.component.spec.tsprojects/netgrif-components/src/lib/builder/builder.component.tsprojects/netgrif-components/src/lib/builder/builder.module.tsprojects/netgrif-components/src/lib/builder/builder.theme.scssprojects/netgrif-components/src/lib/builder/dialogs/dialog-manage-roles/dialog-manage-roles.component.tsprojects/netgrif-components/src/lib/builder/dialogs/dialog-model-edit/dialog-model-edit.component.tsprojects/netgrif-components/src/lib/builder/dialogs/dialog-transition-edit/dialog-transition-edit.component.tsprojects/netgrif-components/src/lib/builder/form-builder/edit-panel/edit-panel.component.spec.tsprojects/netgrif-components/src/lib/builder/form-builder/edit-panel/edit-panel.component.tsprojects/netgrif-components/src/lib/builder/form-builder/field-list/field-list.component.htmlprojects/netgrif-components/src/lib/builder/form-builder/field-list/field-list.component.spec.tsprojects/netgrif-components/src/lib/builder/form-builder/field-list/field-list.component.tsprojects/netgrif-components/src/lib/builder/form-builder/field-list/field-list.service.tsprojects/netgrif-components/src/lib/builder/form-builder/form-builder.component.htmlprojects/netgrif-components/src/lib/builder/form-builder/form-builder.component.scssprojects/netgrif-components/src/lib/builder/form-builder/form-builder.component.spec.tsprojects/netgrif-components/src/lib/builder/form-builder/form-builder.component.tsprojects/netgrif-components/src/lib/builder/form-builder/form-builder.module.tsprojects/netgrif-components/src/lib/builder/form-builder/gridster/gridster.component.spec.tsprojects/netgrif-components/src/lib/builder/form-builder/gridster/gridster.component.tsprojects/netgrif-components/src/lib/builder/form-builder/info-label/info-label.component.htmlprojects/netgrif-components/src/lib/builder/form-builder/info-label/info-label.component.scssprojects/netgrif-components/src/lib/builder/form-builder/info-label/info-label.component.spec.tsprojects/netgrif-components/src/lib/builder/form-builder/info-label/info-label.component.tsprojects/netgrif-components/src/lib/builder/form-builder/paper/paper.component.htmlprojects/netgrif-components/src/lib/builder/form-builder/paper/paper.component.scssprojects/netgrif-components/src/lib/builder/form-builder/paper/paper.component.spec.tsprojects/netgrif-components/src/lib/builder/form-builder/paper/paper.component.tsprojects/netgrif-components/src/lib/builder/modeler/actions-mode/actions-master-detail.service.tsprojects/netgrif-components/src/lib/builder/modeler/control-panel/control-panel.component.scssprojects/netgrif-components/src/lib/builder/modeler/control-panel/control-panel.service.tsprojects/netgrif-components/src/lib/builder/modeler/data-mode/data-detail/data-detail.component.tsprojects/netgrif-components/src/lib/builder/modeler/data-mode/data-master-detail.service.tsprojects/netgrif-components/src/lib/builder/modeler/edit-mode/context-menu/menu-items/model/manage-model-permissions-menu-item.tsprojects/netgrif-components/src/lib/builder/modeler/edit-mode/context-menu/menu-items/transition/edit-form-menu-item.tsprojects/netgrif-components/src/lib/builder/modeler/edit-mode/context-menu/menu-items/transition/edit-transition-actions-menu-item.tsprojects/netgrif-components/src/lib/builder/modeler/edit-mode/context-menu/menu-items/transition/edit-transition-permissions-menu-item.tsprojects/netgrif-components/src/lib/builder/modeler/edit-mode/edit-mode.component.scssprojects/netgrif-components/src/lib/builder/modeler/edit-mode/edit-mode.component.spec.tsprojects/netgrif-components/src/lib/builder/modeler/edit-mode/edit-mode.component.tsprojects/netgrif-components/src/lib/builder/modeler/edit-mode/edit-mode.service.tsprojects/netgrif-components/src/lib/builder/modeler/edit-mode/services/modes/canvas-tool-context.tsprojects/netgrif-components/src/lib/builder/modeler/edit-mode/services/modes/canvas-tool.tsprojects/netgrif-components/src/lib/builder/modeler/edit-mode/services/modes/select-tool.tsprojects/netgrif-components/src/lib/builder/modeler/history-mode/history-master-detail.service.tsprojects/netgrif-components/src/lib/builder/modeler/model-import-service.tsprojects/netgrif-components/src/lib/builder/modeler/modeler.component.scssprojects/netgrif-components/src/lib/builder/modeler/modeler.component.tsprojects/netgrif-components/src/lib/builder/modeler/role-mode/role-detail/role-detail.component.tsprojects/netgrif-components/src/lib/builder/modeler/role-mode/role-master-detail.service.tsprojects/netgrif-components/src/lib/builder/modeler/services/canvas/canvas-listener-tool.tsprojects/netgrif-components/src/lib/builder/modeler/services/canvas/canvas-mode-service.tsprojects/netgrif-components/src/lib/builder/modeler/services/history/history.service.tsprojects/netgrif-components/src/lib/builder/modeler/simulation-mode/simulation-mode.component.htmlprojects/netgrif-components/src/lib/builder/modeler/simulation-mode/simulation-mode.component.tsprojects/netgrif-components/src/lib/builder/modeler/simulation-mode/simulation-mode.service.tsprojects/netgrif-components/src/lib/builder/modeler/simulation-mode/tool/change-data-tool.tsprojects/netgrif-components/src/lib/builder/modeler/simulation-mode/tool/event-simulation.tool.tsprojects/netgrif-components/src/lib/builder/modeler/simulation-mode/tool/grid-tool.tsprojects/netgrif-components/src/lib/builder/modeler/simulation-mode/tool/reset-position-and-zoom-tool.tsprojects/netgrif-components/src/lib/builder/modeler/simulation-mode/tool/reset-simulation.tool.tsprojects/netgrif-components/src/lib/builder/modeler/simulation-mode/tool/simulation-tool.tsprojects/netgrif-components/src/lib/builder/modeler/simulation-mode/tool/switch-label-tool.tsprojects/netgrif-components/src/lib/builder/modeler/simulation-mode/tool/task-simulation.tool.tsprojects/netgrif-components/src/lib/builder/modeler/task-mode/task-mode.component.tsprojects/netgrif-components/src/lib/builder/public-api.tsprojects/netgrif-components/src/lib/builder/services/builder-integration.service.tsprojects/netgrif-components/src/lib/builder/services/builder-mode.service.spec.tsprojects/netgrif-components/src/lib/builder/services/builder-mode.service.tsprojects/netgrif-components/src/lib/builder/services/local-storage.service.tsprojects/netgrif-components/src/lib/data-fields/process-ref/process-ref-default/process-ref-default.component.htmlprojects/netgrif-components/src/lib/data-fields/process-ref/process-ref-default/process-ref-default.component.scssprojects/netgrif-components/src/lib/data-fields/process-ref/process-ref-default/process-ref-default.component.spec.tsprojects/netgrif-components/src/lib/data-fields/process-ref/process-ref-default/process-ref-default.component.tsprojects/netgrif-components/src/lib/tabs/tab-view/tab-view.component.html
💤 Files with no reviewable changes (6)
- projects/netgrif-components/src/lib/builder/form-builder/paper/paper.component.html
- projects/netgrif-components/src/lib/builder/form-builder/paper/paper.component.scss
- projects/netgrif-components/src/lib/builder/form-builder/paper/paper.component.ts
- projects/netgrif-components/src/lib/builder/form-builder/form-builder.module.ts
- projects/netgrif-components/src/lib/builder/form-builder/paper/paper.component.spec.ts
- projects/netgrif-components-core/src/lib/user/services/user.service.ts
- pr fixes and fix tests


Description
-add fixes of toolbar for scrollbar on smaller devices or datafields
Implements NAE-2462
Dependencies
none
Third party dependencies
none
Blocking Pull requests
There are no dependencies on other PR
How Has Been This Tested?
Test Configuration
<Please describe configuration for tests to run if applicable, like program parameters, host OS, VM configuration etc. You can use >
Checklist:
Summary by CodeRabbit