Restructure student tracks by cross-reference chains, add project rules

Student tracks restructured based on document cross-reference analysis:
- Track 1 "Gemalen & CRC Keten": Grace→Kevin→Robin→Adriaan (chain)
- Track 2 "Condition Monitoring": Kevin→Yamai (fork from Track 1)
- Track 3 "Zuivering & Beluchting": Noa‖Elise (parallel, same problem)
- Track 4 "EVOLV Reactor Model": Pieter (standalone, no student cross-refs)
- Track 5 "IoT & ICT Infra": Bart→Fontys ICT→Fontys TOGAF (chain)

Inter-student dependencies added (7 new):
- Grace→Kevin, Kevin→Robin, Robin→Adriaan (Track 1 chain)
- Kevin→Yamai (Track 2 fork)
- Bart→Fontys ICT→Fontys TOGAF (Track 5 chain)

CLAUDE.md: Added "Metro Map Data Rules" section documenting:
- Thema=line, Project=station, speerpunt=track grouping
- Student work rules: cross-references determine track sharing
- Identified chains with evidence (reference counts from source docs)
- Grid alignment requirements

MetroCanvas: Truncate long station labels to prevent overlap (max ~20 chars
based on grid spacing, with ellipsis)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
znetsixe
2026-04-08 14:19:16 +02:00
parent 28d7ac008f
commit 9f033835cd
3 changed files with 148 additions and 44 deletions

View File

@@ -816,15 +816,19 @@ const renderDimension = (dimData, opacity, parentGroup) => {
.attr('opacity', 0.5)
.text('[○]')
// Station label
// Station label (truncated to prevent overlap, max ~20 chars)
nodeGroups.append('text')
.attr('x', 0)
.attr('y', 28)
.attr('text-anchor', 'middle')
.attr('fill', '#e8e8e8')
.attr('font-family', "'VT323', monospace")
.attr('font-size', '14px')
.text(d => d.name)
.attr('font-size', '13px')
.text(d => {
const name = d.name ?? ''
const maxLen = Math.max(12, Math.floor(GRID_STEP_X / 10))
return name.length > maxLen ? name.slice(0, maxLen - 1) + '…' : name
})
// Status badge
nodeGroups.filter(d => d.badge)