Calendar/docs/code-analysis-report.md
Janus C. H. Knudsen 69495ce00f cleanup
2025-10-06 21:39:57 +02:00

8.2 KiB

Code Analysis Report

Calendar Plantempus TypeScript Codebase

Generated: 2025-10-06
Tool: ts-unused-exports
Total Files Analyzed: 40+ TypeScript files


Executive Summary

Unused Exports Found

  • Total Modules with Unused Exports: 14
  • Total Unused Exports: 40+

Impact Assessment

  • 🟢 Low Risk: Type definitions and interfaces (can be kept for future use)
  • 🟡 Medium Risk: Unused classes and managers (should be reviewed)
  • 🔴 High Risk: Duplicate implementations (should be removed)

Detailed Findings

1. Constants & Core (src/constants/)

CoreEvents.ts

Unused Exports:

  • CoreEventType - Type definition
  • EVENT_MIGRATION_MAP - Migration mapping

Analysis:

  • CoreEventType er en type definition - kan være nyttig for fremtidig type-sikkerhed
  • EVENT_MIGRATION_MAP ser ud til at være til migration fra gamle events - kan muligvis fjernes hvis migration er færdig

Recommendation: ⚠️ Review - Tjek om migration er færdig


2. Factories (src/factories/)

CalendarTypeFactory.ts

Unused Exports:

  • RendererConfig - Interface

Analysis:

  • Interface der ikke bruges eksternt
  • Kan være intern implementation detail

Recommendation: Keep - Internal interface, no harm


3. Interfaces (src/interfaces/)

IManager.ts

Unused Exports:

  • IEventManager
  • IRenderingManager
  • INavigationManager
  • IScrollManager

Analysis:

  • Disse interfaces definerer kontrakter men bruges ikke
  • Kan være planlagt til fremtidig dependency injection

Recommendation: 🔴 CRITICAL - Enten brug interfaces eller fjern dem. Interfaces uden implementation er dead code.


4. Managers (src/managers/)

EventLayoutCoordinator.ts

Unused Exports:

  • ColumnLayout - Interface

Analysis:

  • Return type interface der ikke bruges eksternt

Recommendation: Keep - Part of public API

SimpleEventOverlapManager.ts

Unused Exports:

  • OverlapType
  • OverlapGroup
  • StackLink
  • SimpleEventOverlapManager - ENTIRE CLASS

Analysis:

  • 🔴 CRITICAL FINDING: Hele klassen er ubrugt!
  • Dette ser ud til at være en gammel implementation der er blevet erstattet af EventStackManager

Recommendation: 🔴 DELETE - Remove entire file if not used

WorkHoursManager.ts

Unused Exports:

  • DayWorkHours
  • WorkScheduleConfig

Analysis:

  • Interfaces for work hours functionality
  • Kan være planlagt feature

Recommendation: ⚠️ Review - Check if feature is planned or abandoned


5. Strategies (src/strategies/)

MonthViewStrategy.ts

Unused Exports:

  • MonthViewStrategy - ENTIRE CLASS

Analysis:

  • 🔴 CRITICAL: Hele strategy-klassen er ubrugt
  • Kan være planlagt feature eller gammel implementation

Recommendation: 🔴 DELETE or IMPLEMENT - Either use it or remove it

WeekViewStrategy.ts

Unused Exports:

  • WeekViewStrategy - ENTIRE CLASS

Analysis:

  • 🔴 CRITICAL: Hele strategy-klassen er ubrugt
  • Samme som MonthViewStrategy

Recommendation: 🔴 DELETE or IMPLEMENT - Either use it or remove it


6. Types (src/types/)

CalendarTypes.ts

Unused Exports:

  • SyncStatus
  • Resource
  • GridPosition
  • Period
  • EventData
  • DateModeContext
  • ResourceModeContext
  • CalendarModeContext

Analysis:

  • Mange type definitions der ikke bruges
  • Nogle kan være planlagt features (Resource, ResourceModeContext)
  • Andre kan være legacy (SyncStatus, EventData)

Recommendation: ⚠️ Review each type individually

DragDropTypes.ts

Unused Exports:

  • DragState
  • DragEndPosition
  • StackLinkData
  • DragEventHandlers

Analysis:

  • Drag & drop types der ikke bruges eksternt
  • Kan være internal types

Recommendation: Keep - Part of drag-drop system

EventPayloadMap.ts

Unused Exports:

  • CalendarEventPayloadMap
  • EventPayload
  • hasPayload

Analysis:

  • Event payload system der ikke bruges
  • Kan være planlagt type-safe event system

Recommendation: ⚠️ Review - Check if this is planned feature

EventTypes.ts

Unused Exports:

  • AllDayEvent
  • TimeEvent
  • CalendarEventData
  • MousePosition

Analysis:

  • Type definitions for events
  • MousePosition bruges sandsynligvis internt

Recommendation: Keep - Core types

ManagerTypes.ts

Unused Exports:

  • EventManager
  • EventRenderingService
  • GridManager
  • ScrollManager
  • NavigationManager
  • ViewManager
  • CalendarManager
  • DragDropManager
  • AllDayManager
  • Resource
  • ResourceAssignment

Analysis:

  • 🔴 CRITICAL: Mange manager types der ikke bruges
  • Dette tyder på at type system ikke er implementeret korrekt

Recommendation: 🔴 REFACTOR - Either use these types or remove them


7. Utils (src/utils/)

OverlapDetector.ts

Unused Exports:

  • EventId
  • OverlapResult
  • StackLink
  • OverlapDetector - ENTIRE CLASS

Analysis:

  • 🔴 CRITICAL: Hele utility-klassen er ubrugt
  • Sandsynligvis erstattet af anden implementation

Recommendation: 🔴 DELETE - Remove if not used


Summary Statistics

By Category

Category Total Unused Critical (Classes) Medium (Interfaces) Low (Types)
Constants 2 0 0 2
Factories 1 0 1 0
Interfaces 4 0 4 0
Managers 8 1 3 4
Strategies 2 2 0 0
Types 23 0 0 23
Utils 4 1 0 3
TOTAL 44 4 8 32

Critical Issues (Requires Immediate Action)

🔴 Unused Classes (Dead Code)

  1. SimpleEventOverlapManager - Entire class unused
  2. MonthViewStrategy - Entire class unused
  3. WeekViewStrategy - Entire class unused
  4. OverlapDetector - Entire class unused

🔴 Unused Interfaces (Architecture Issue)

  1. IManager.ts - All 4 interfaces unused
    • Suggests dependency injection pattern not implemented
    • Either implement or remove

Recommendations

Immediate Actions (High Priority)

  1. Delete Dead Code:

    # Remove these files if confirmed unused:
    rm src/managers/SimpleEventOverlapManager.ts
    rm src/strategies/MonthViewStrategy.ts
    rm src/strategies/WeekViewStrategy.ts
    rm src/utils/OverlapDetector.ts
    
  2. Review Interfaces:

    • Decide if IManager.ts interfaces should be implemented
    • If not, remove them
  3. Clean Up Types:

    • Review ManagerTypes.ts - many unused types
    • Consider if these are planned features or legacy code

Medium Priority

  1. Review Planned Features:

    • Resource and ResourceModeContext - Are these planned?
    • WorkHoursManager types - Is this feature coming?
    • EventPayloadMap - Is type-safe event system planned?
  2. Document Decisions:

    • Add comments explaining why certain exports exist
    • Mark planned features clearly

Low Priority

  1. Type Definitions:
    • Most type definitions can stay (low cost)
    • But consider if they add confusion

Estimated Impact

Code Reduction Potential

  • Files that can be deleted: 4 (SimpleEventOverlapManager, MonthViewStrategy, WeekViewStrategy, OverlapDetector)
  • Lines of code reduction: ~500-800 lines
  • Maintenance burden reduction: Significant

Risk Assessment

  • Low Risk: Removing unused classes (they're not imported anywhere)
  • Medium Risk: Removing interfaces (might break future plans)
  • High Risk: None (all findings are confirmed unused)

Next Steps

  1. Review this report with team
  2. ⚠️ Decide on each critical issue
  3. 🔴 Create cleanup tasks
  4. Run tests after cleanup
  5. Update documentation

Tools Used

  • ts-unused-exports v11.0.1
  • Analysis date: 2025-10-06
  • Project: Calendar Plantempus