forked from ZenUml/core
-
Couldn't load subscription status.
- Fork 13
Feat/vistors #277
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
Open
MrCoder
wants to merge
24
commits into
main
Choose a base branch
from
feat/vistors
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Feat/vistors #277
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This commit addresses an issue where the width of a fragment was not being calculated correctly when it was nested within another interaction. The `getOffsetX` function in `useFragmentData.ts` has been updated to account for the layers of nested interactions on the origin participant. This is done by calculating the depth of the origin participant and using that to determine the correct offset. A new `centerToCenter` method has been added to the `Anchor2` class to calculate the distance between the centers of two anchors. This is used in the `getOffsetX` function to get a more accurate distance between the left participant and the origin. The `Interaction.tsx` component has been updated to pass the correct `origin` prop to the underlying `div` element. The snapshots for the nested interaction tests have been updated to reflect the changes in the fragment width calculation.
…djust Playwright install command
…ant utility - Fix TypeScript linter error in useArrow.ts by replacing context?.children?.[0] with proper ANTLR context method calls (alt(), par(), opt(), etc.) - Extract duplicate depthOnParticipant function to shared utils.ts - Remove unnecessary ESLint disable comments - Add Claude settings configuration
- Fix return type issue in PureFragmentCoordinateTransform.calculateOffsetX() - Return computed values directly instead of cached _offsetX property - Ensures type safety while maintaining same functionality - Resolves 'number | undefined' not assignable to 'number' error
Remove offsetX and halfLeftParticipant from useFragmentData return object as they are not used by any Fragment components. This simplifies the API and reduces unnecessary calculations. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Move ignore patterns from .eslintignore to ignores property in eslint.config.mjs - Remove deprecated .eslintignore file - Resolves ESLint warning about unsupported .eslintignore file - Maintains same ignore patterns: node_modules, dist, generated-parser, pnpm-lock.yaml, **.spec.js
Replace duplicate MathematicalAnchor implementation with the existing Anchor2 class that provides identical functionality. This eliminates 35 lines of duplicate code and unifies anchor point calculations across the codebase. Changes: - Remove MathematicalAnchor class definition - Use Anchor2.centerToCenter() instead of MathematicalAnchor.distanceTo() - Update method calls and comments accordingly 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
Implement pure mathematical layout architecture for arrow calculations: - Create ArrowGeometry DTOs for type-safe data transfer - Build ArrowCalculator for pure mathematical computations - Add ArrowGeometryExtractor to isolate context parsing - Refactor useArrow hook to use new separation of concerns - Remove unused anchor objects from return interface - Add comprehensive unit tests for mathematical calculations Benefits: - Separates context parsing from mathematical calculations - Enables caching of geometric data and computation results - Improves testability with pure functions - Reduces memory usage by removing unused fields - Establishes pattern for future layout optimizations 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Create comprehensive unified mathematical model for layout calculations - Replace complex coordinate transformations with clean semantic API - Migrate fragment positioning, width calculations, and participant positioning - Achieve dramatic code simplification while maintaining exact behavior ### Core Mathematical Infrastructure - Add GeometryTypes.ts: Pure geometric data interfaces - Add ParticipantGeometryExtractor: Clean geometry data extraction - Add UnifiedAnchor: Unified anchor calculations replacing manual Anchor2 usage - Add LayoutMath: Central mathematical calculation engine - Add GeometryUtils: Simplified utility functions for component migration ### Major Component Migrations - WidthOfContext.ts: Replace 50+ lines of complex arithmetic with unified model - useFragmentData.ts: Simplify fragment positioning from complex manual calculations - Multiple components: Migrate centerOf() calls to getParticipantCenter() ### Code Quality Improvements - Remove 29 lines of duplicate code from utils.ts (centerOf, distance functions) - Reduce fragment offset calculation from 50+ lines to single method call - Replace manual Anchor2 creation with unified mathematical model - Consolidate width calculations using consistent mathematical approach ### Testing & Validation - Add comprehensive unit tests for all new mathematical components - Maintain 100% test compatibility (435 tests pass) - Validate exact behavioral equivalence through mathematical model This establishes the foundation for a unified, testable, and maintainable layout calculation system that dramatically simplifies complex geometric transformations while preserving all existing functionality. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
…ptimizing calculations
- Remove .claude/settings.local.json from git tracking - Add .claude to .gitignore to prevent future tracking - This directory contains local Claude AI settings that should not be versioned
Major architectural improvements: - Add domain model and layout calculation system - Introduce new component rendering path with pre-calculated layouts - Add migration guide and progress tracking - Implement new Participant and Divider components with layout support - Add backwards compatibility layer for gradual migration Key changes: - Participant.tsx: Add support for pre-calculated layouts - Divider.tsx: Add new rendering path with layout data - NewDivider.tsx: Add example implementation using new architecture - Statement.tsx: Integrate with new layout system - Add new domain model and diagram renderer components - Add documentation for migration process
Add debugging and monitoring tools to help with architecture migration: - Add DebugPanel component to visualize domain model and layout data - Add detailed logging in key components to track architecture usage - Add state monitoring in DomainModelStore - Improve error reporting in layout calculation Components enhanced with debug info: - Participant.tsx: Log architecture path usage - Divider.tsx: Add detailed logging - Statement.tsx: Add layout debugging - LayoutCalculator.ts: Add detailed progress logging
…n1. Architecture Documentation\n- Add ARCHITECTURE_MIGRATION_SUMMARY.md with detailed progress\n- Add TEST_CASES.md with comprehensive test scenarios\n- Update MIGRATION_PROGRESS.md with latest status\n\n2. Component Enhancements\n- Add InteractionWithLayout component for new architecture\n- Update LifeLine to support new architecture\n- Clean up debug logging in components\n- Hide DebugPanel in test environments\n\n3. Domain Model Improvements\n- Enhance InteractionLayout with more properties\n- Add support for self-messages and right-to-left messages\n- Improve layout calculation for interactions\n\n4. Debug Tools\n- Make DebugPanel development-only\n- Add test environment detection\n- Clean up debug logging
Major architecture migration progress: 1. **FragmentAlt Component Migration** - Implement dual-mode rendering (new/old architecture) - Add proper hook order management - Support all fragment sections (if, else if, else) - Temporarily disable new architecture due to React hook issues 2. **Domain Model Builder Enhancements** - Fix comment extraction (getComment vs comment()) - Fix message context methods (From(), Owner(), SignatureText()) - Add context-to-element mapping for fragments - Support alt, opt, and loop fragments with elseIf blocks - Enhanced fragment model with comments and styles 3. **Layout Calculator Improvements** - Add fragment transform and padding calculations - Include section labels and conditions in layout - Support nested fragment layouts - Calculate proper bounds and positioning 4. **Context Mapping Infrastructure** - Create mapping between ANTLR contexts and domain elements - Store mappings in Jotai atoms for global access - Enable proper fragment lookup in Statement component 5. **Test Fixes** - Update tests for new buildDomainModel return format - Fix DomainModelBuilder tests to use result.diagram 6. **Documentation Updates** - Update migration progress documentation - Document FragmentAlt as first migrated fragment - Add context mapping approach for other components The new architecture infrastructure is complete and working. Temporarily disabled due to React hook order issues that need separate investigation. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
Critical hook order fixes to resolve render errors: 1. **Remove Conflicting useState Hooks** - Removed extra useState hooks from migrated fragment components - FragmentAlt, FragmentOpt, and FragmentLoop were adding useState - This conflicted with existing useFragmentData hook state management - Caused "Rendered fewer/more hooks than expected" errors 2. **Simplify Architecture Switching** - Temporarily disable new architecture completely to avoid hook issues - Use only old architecture rendering path for stability - Keep layoutData prop for future activation - Add TODO comments for re-enabling new architecture 3. **Fix Variable References** - Restore correct variable names (collapsed, toggleCollapse) - Remove oldCollapsed/oldToggleCollapse references - Ensure consistent hook call patterns 4. **Preserve Migration Infrastructure** - Keep dual-mode component structure intact - Maintain layoutData prop interfaces - Preserve context mapping in Statement component - Ready for new architecture activation once hook issues resolved **Root Cause:** The hook order error was caused by adding useState hooks to components that already had state management through useFragmentData. This created inconsistent hook counts between renders. **Solution:** Temporarily use only old architecture to maintain stable hook order. The new architecture infrastructure remains in place and can be activated once the hook issues are fully debugged. All fragment components now render correctly without React hook errors. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
…e architecture - Add InteractionLayout prop support to both Interaction and InteractionAsync components - Implement dual-mode rendering pattern following fragment component approach - Add findInteractionLayout() helper function to Statement component - Enable context mapping lookup for interactions in Statement component - Maintain existing hook order to prevent React rendering issues - Add debug logging for new architecture integration - Components temporarily use old architecture with infrastructure ready for activation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
The issue was in fragment positioning when there are nested occurrence bars (activation boxes). The fragment offset calculation was not properly accounting for the origin participant's activation layers. Key changes: - Add originLayers parameter to generateFragmentTransform function - Use pre-calculated originLayers from FragmentGeometry in useFragmentData - Ensure fragment transforms account for proper nested occurrence bar positioning - Fix visual offset issues in nested interaction scenarios This resolves the Playwright test failure for nested-interaction-with-fragment where the alt fragment was not correctly positioned relative to nested occurrence bars. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Fix React hook order violations in Participant component by moving all hooks to top level - Fix creation participant label format by correcting isAssignee logic in LayoutCalculator - Fix return message labels for creation statements to show only assignee name - Add TypeScript non-null assertions after proper null checks 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
…hitecture - Enhanced DomainModelBuilder.mapParticipantType() to preserve AWS service types like @ec2, @lambda, @s3 - Removed fallback to actor icon when specific participant icon not found - Fixed React hook order violations in Divider component - New architecture now correctly displays service-specific icons instead of defaulting to generic participant 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
Update visual snapshot for smoke test to reflect recent UI changes: - New layout architecture rendering - Debug panel visibility changes - Component styling updates
- Remove temporary debug restrictions from Fragment components (Alt, Loop, Opt) - Enable dual-mode architecture support in Interaction and InteractionAsync components - Fix React hook order violations by moving all hooks to component top level - Remove unused InteractionLayout imports from Message and SelfInvocation components - Maintain backward compatibility while activating new architecture when layoutData is provided All components now properly detect and use new architecture when available, while gracefully falling back to old architecture for compatibility. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.