- Created PlantUML diagrams for custodian types, full schema, legal status, and organizational structure. - Implemented a script to generate GraphViz DOT diagrams from OWL/RDF ontology files. - Developed a script to generate UML diagrams from modular LinkML schema, supporting both Mermaid and PlantUML formats. - Enhanced class definitions and relationships in UML diagrams to reflect the latest schema updates.
5.4 KiB
Quick Reference: 5 Layout Options
When to Use Which Layout
🌀 Force Layout
Use When: Exploring relationships, non-hierarchical data
Avoid When: Need clean documentation or fixed positions
Speed: Slow (5s animation)
Example: "Let me see how these entities group naturally"
📊 Hierarchical (Top→Bottom)
Use When: UML class diagrams, standard documentation
Avoid When: Screen is wider than tall
Speed: Instant
Example: "Standard inheritance hierarchy for API docs"
➡️ Hierarchical (Left→Right)
Use When: Process flows, wide monitors, sequential steps
Avoid When: Deep hierarchies (runs off screen)
Speed: Instant
Example: "State machine diagram on ultrawide monitor"
📦 Adaptive (Tight Tree)
Use When: Large diagrams, printing, small screens
Avoid When: Need generous whitespace
Speed: Instant
Example: "Fit 50 classes on one page for printout"
📏 Adaptive (Longest Path)
Use When: Dependency analysis, critical paths
Avoid When: Need balanced horizontal distribution
Speed: Instant
Example: "Show longest inheritance chain depth"
Quick Decision Tree
START: What's your goal?
↓
Need documentation? → YES → Screen orientation?
│ ↓
│ Wide → Hierarchical LR
│ ↓
│ Tall → Hierarchical TB
↓
Exploring data? → YES → Force Layout
↓
Large diagram (30+ nodes)? → YES → Tight Tree
↓
Deep hierarchy? → YES → Longest Path
↓
DEFAULT → Hierarchical TB
Keyboard Shortcuts (Future)
Not yet implemented, but planned:
Ctrl+1- Force LayoutCtrl+2- Hierarchical TBCtrl+3- Hierarchical LRCtrl+4- Tight TreeCtrl+5- Longest Path
localStorage Keys
// Check current settings in console
localStorage.getItem('uml-layout-type') // 'force' or 'dagre'
localStorage.getItem('uml-dagre-direction') // 'TB', 'BT', 'LR', 'RL'
localStorage.getItem('uml-dagre-ranker') // 'network-simplex', 'tight-tree', 'longest-path'
// Reset to defaults
localStorage.setItem('uml-layout-type', 'force');
localStorage.setItem('uml-dagre-direction', 'TB');
localStorage.setItem('uml-dagre-ranker', 'network-simplex');
location.reload();
Testing All Layouts (60 Seconds)
- Open http://localhost:5173/uml-viewer
- Select "Custodian Multi-Aspect (Mermaid Class)"
- Click Layout ▾ button
- Try each option:
- Force → Wait 5 seconds for settling
- Hierarchical TB → Instant grid
- Hierarchical LR → Rotated 90°
- Tight Tree → Compact version
- Longest Path → Depth-optimized
- Switch back to Hierarchical TB
- Refresh page → Should remember your choice
Visual Comparison
Small Diagram (5 nodes)
Force: Hierarchical TB: Hierarchical LR:
A B A A → B → C
\ / ↓ ↓ ↓
C ┌───┴───┐ D → E
/ \ B C
D E ↓ ↓
D E
Large Diagram (20 nodes)
Force: Hierarchical TB: Tight Tree:
[scattered chaos] [neat grid, 4 ranks] [compact grid, 6 ranks]
- Hard to follow - Easy to read - Very compact
- Needs zoom - Clear hierarchy - Fits on screen
- Organic - Professional - Dense
Common Issues
"Layout dropdown won't open"
- Check console for errors
- Verify lucide-react installed:
npm list lucide-react - Try clicking the "Layout" text, not just the icon
"Hierarchical LR runs off screen"
- Use Fit to Screen button (toolbar left side)
- Or switch to Hierarchical TB for tall diagrams
- Or reduce zoom level
"Tight Tree looks messy"
- Not all graphs benefit from compactness
- Try Hierarchical TB for clearer spacing
- Tight Tree is for quantity over clarity
"Longest Path creates uneven columns"
- This is expected behavior
- Algorithm prioritizes depth over balance
- Use Network Simplex (Hierarchical TB/LR) for balance
Bonus: Hidden Features
Bottom-to-Top (BT)
// Not in UI, but works in code
localStorage.setItem('uml-dagre-direction', 'BT');
location.reload();
// Hierarchy flows upward (inverted)
Right-to-Left (RL)
// Not in UI, but works in code
localStorage.setItem('uml-dagre-direction', 'RL');
location.reload();
// Hierarchy flows right-to-left (RTL languages)
Alignment (UL/UR/DL/DR)
// Requires code change in UMLVisualization.tsx
dagreAlignment='UL' // Upper-left align
Performance Tips
- Use Dagre for production (10-100x faster than force)
- Use Force for exploration (organic, reveals patterns)
- Tight Tree for 50+ nodes (compact without sacrificing clarity)
- LR for wide screens (utilize horizontal space)
- Longest Path for dependencies (critical path analysis)
Report Issues
When reporting layout bugs, include:
- Layout type (Force, Hierarchical TB, etc.)
- Diagram name
- Number of nodes
- Screenshot showing the issue
- Browser console errors (if any)
Documentation: See ADVANCED_LAYOUT_OPTIONS_COMPLETE.md for full details
Test Now: http://localhost:5173/uml-viewer → Click "Layout ▾" 🚀