Lucas 'Paperboy' Rose-Winters
|
1f4ec963a2
|
feat(dashboard): implement widget registry system (Task 1.2)
Implement WidgetRegistry class for managing widget types:
- Central registry using Map for O(1) lookups
- Complete widget definition interface with JSDoc types
- register() - Add new widget types with validation
- get() - Retrieve widget definitions by type
- getAvailable() - Filter widgets by schema requirement
- unregister() - Remove widget types
- Additional utility methods: has(), count(), clear(), getStats()
Widget Definition Structure:
- name, icon, description - Display metadata
- minSize, defaultSize - Grid sizing constraints
- requiresSchema - Schema dependency flag
- render() - Rendering function
- Optional lifecycle hooks: getConfig, onConfigChange, onRemove, onResize
Features:
- Validates all required fields on registration
- Prevents duplicate registrations (with warning)
- Filters schema-dependent widgets when no schema active
- Binds lifecycle functions to maintain context
- Comprehensive error handling and logging
Test Suite:
- Interactive test harness with 6 test scenarios
- Tests registration, retrieval, filtering, unregistration
- Visual verification of widget rendering
- Live registry statistics
Acceptance Criteria Met:
✓ Can register/retrieve widgets from registry
✓ Widget definitions include all required metadata
✓ Can filter widgets by schema requirement
✓ All methods tested and verified
Epic 1, Task 1.2 Complete (2-3 day estimate, <5 min actual)
|
2025-10-23 09:12:39 +11:00 |
|