Refactors and optimizes core calendar managers
Streamlines several core managers by removing unnecessary complexity, caching, and redundant methods Key improvements: - Simplified event and view management logic - Removed unnecessary caching mechanisms - Reduced method complexity in managers - Improved code readability and performance
This commit is contained in:
parent
1ae4f00f2b
commit
b6ab1ff50e
6 changed files with 193 additions and 327 deletions
|
|
@ -6,46 +6,17 @@ import { EventRenderingService } from './EventRendererManager';
|
|||
* NavigationRenderer - Handles DOM rendering for navigation containers
|
||||
* Separated from NavigationManager to follow Single Responsibility Principle
|
||||
*/
|
||||
|
||||
export class NavigationRenderer {
|
||||
private eventBus: IEventBus;
|
||||
|
||||
// Cached DOM elements to avoid redundant queries
|
||||
private cachedWeekNumberElement: HTMLElement | null = null;
|
||||
private cachedDateRangeElement: HTMLElement | null = null;
|
||||
|
||||
constructor(eventBus: IEventBus, eventRenderer: EventRenderingService) {
|
||||
this.eventBus = eventBus;
|
||||
this.setupEventListeners();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get cached week number element
|
||||
*/
|
||||
private getWeekNumberElement(): HTMLElement | null {
|
||||
if (!this.cachedWeekNumberElement) {
|
||||
this.cachedWeekNumberElement = document.querySelector('swp-week-number');
|
||||
}
|
||||
return this.cachedWeekNumberElement;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get cached date range element
|
||||
*/
|
||||
private getDateRangeElement(): HTMLElement | null {
|
||||
if (!this.cachedDateRangeElement) {
|
||||
this.cachedDateRangeElement = document.querySelector('swp-date-range');
|
||||
}
|
||||
return this.cachedDateRangeElement;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear cached DOM elements (call when DOM structure changes)
|
||||
*/
|
||||
private clearCache(): void {
|
||||
this.cachedWeekNumberElement = null;
|
||||
this.cachedDateRangeElement = null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Setup event listeners for DOM updates
|
||||
*/
|
||||
|
|
@ -57,12 +28,11 @@ export class NavigationRenderer {
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Update week info in DOM elements using cached references
|
||||
*/
|
||||
|
||||
private updateWeekInfoInDOM(weekNumber: number, dateRange: string): void {
|
||||
const weekNumberElement = this.getWeekNumberElement();
|
||||
const dateRangeElement = this.getDateRangeElement();
|
||||
|
||||
const weekNumberElement = document.querySelector('swp-week-number');
|
||||
const dateRangeElement = document.querySelector('swp-date-range');
|
||||
|
||||
if (weekNumberElement) {
|
||||
weekNumberElement.textContent = `Week ${weekNumber}`;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue