-
Notifications
You must be signed in to change notification settings - Fork 1
[NAB-389] Cannot change the number of columns in form editor #29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
- fix the problem with columns, add datagroup if there is no one and set it number of cols
WalkthroughFormBuilderComponent now injects SelectedTransitionService and adds logic to create a default DataGroup if a transition's dataGroups array is empty, setting layout to GRID with default column configuration. GridsterService removes its own default DataGroup creation logic and directly accesses dataGroups[0]. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes
Pre-merge checks✅ Passed checks (3 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 |
- fix according to PR
62182da
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
src/app/form-builder/gridster/gridster.service.ts (2)
176-176: Runtime error if dataGroups[0] is undefined.The type assertion
as DataGroupdoesn't protect against undefined values. IfdataGroups[0]is undefined, this line will throw a runtime error.Apply this diff to add a safety check:
- (this.transition.dataGroups[0] as DataGroup).removeDataRef(id); + const dataGroup = this.transition.dataGroups[0] as DataGroup; + if (!dataGroup) { + throw new Error('Cannot remove DataRef: transition has no DataGroup'); + } + dataGroup.removeDataRef(id);Or use optional chaining if the operation should silently fail:
- (this.transition.dataGroups[0] as DataGroup).removeDataRef(id); + (this.transition.dataGroups[0] as DataGroup)?.removeDataRef(id);
224-224: Add defensive check before callingaddDataRef()on line 224.Line 224 directly accesses
transition.dataGroups[0]without verifying the array is populated. Since default DataGroup initialization was removed from this service, this will throw a runtime error if FormBuilderComponent hasn't initialized dataGroups. Line 154 already uses optional chaining as the correct pattern in this file.Apply optional chaining:
- transition.dataGroups[0].addDataRef(dataRef); + transition.dataGroups[0]?.addDataRef(dataRef);Note: Line 176 has the same issue and should also be updated:
- (this.transition.dataGroups[0] as DataGroup).removeDataRef(id); + (this.transition.dataGroups[0] as DataGroup)?.removeDataRef(id);
📜 Review details
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (2)
src/app/form-builder/form-builder.component.ts(2 hunks)src/app/form-builder/gridster/gridster.service.ts(1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
src/app/form-builder/form-builder.component.ts (2)
src/app/modeler/services/canvas/canvas-listener-tool.ts (2)
router(424-426)transitionService(428-430)src/app/modeler/modeler-config.ts (1)
ModelerConfig(3-40)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Build and test
🔇 Additional comments (2)
src/app/form-builder/form-builder.component.ts (2)
5-7: LGTM!The new imports are appropriate for the default DataGroup creation logic.
18-18: LGTM!The
SelectedTransitionServiceinjection follows proper Angular patterns and is necessary for accessing the current transition.
Description
Fixes NAB-389
Dependencies
none
Third party dependencies
Blocking Pull requests
There are no dependencies on other PR
How Has Been This Tested?
manually
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
✏️ Tip: You can customize this high-level summary in your review settings.