Removes unnecessary destroy methods
This commit is contained in:
parent
4e5077364e
commit
a1e1c5d185
19 changed files with 34 additions and 214 deletions
|
|
@ -174,17 +174,6 @@ export class EventBus implements IEventBus {
|
|||
setDebug(enabled: boolean): void {
|
||||
this.debug = enabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean up all tracked listeners
|
||||
*/
|
||||
destroy(): void {
|
||||
for (const listener of this.listeners) {
|
||||
document.removeEventListener(listener.eventType, listener.handler);
|
||||
}
|
||||
this.listeners.clear();
|
||||
this.eventLog = [];
|
||||
}
|
||||
}
|
||||
|
||||
// Create singleton instance
|
||||
|
|
|
|||
|
|
@ -13,11 +13,6 @@ export interface IManager {
|
|||
* Refresh the manager's state
|
||||
*/
|
||||
refresh?(): void;
|
||||
|
||||
/**
|
||||
* Destroy the manager and clean up resources
|
||||
*/
|
||||
destroy?(): void;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ export class AllDayManager {
|
|||
let startDate = new Date(headerReadyEventPayload.headerElements.at(0)!.date);
|
||||
let endDate = new Date(headerReadyEventPayload.headerElements.at(-1)!.date);
|
||||
|
||||
var events: CalendarEvent[] = this.eventManager.getEventsForPeriod(startDate, endDate);
|
||||
let events: CalendarEvent[] = this.eventManager.getEventsForPeriod(startDate, endDate);
|
||||
// Filter for all-day events
|
||||
const allDayEvents = events.filter(event => event.allDay);
|
||||
|
||||
|
|
@ -447,7 +447,7 @@ export class AllDayManager {
|
|||
let changedCount = 0;
|
||||
this.newLayouts.forEach((layout) => {
|
||||
// Find current layout for this event
|
||||
var currentLayout = this.currentLayouts.find(old => old.calenderEvent.id === layout.calenderEvent.id);
|
||||
let currentLayout = this.currentLayouts.find(old => old.calenderEvent.id === layout.calenderEvent.id);
|
||||
|
||||
if (currentLayout?.gridArea !== layout.gridArea) {
|
||||
changedCount++;
|
||||
|
|
@ -524,8 +524,8 @@ export class AllDayManager {
|
|||
* Count number of events in a specific column using ColumnBounds
|
||||
*/
|
||||
private countEventsInColumn(columnBounds: ColumnBounds): number {
|
||||
var columnIndex = columnBounds.index;
|
||||
var count = 0;
|
||||
let columnIndex = columnBounds.index;
|
||||
let count = 0;
|
||||
|
||||
this.currentLayouts.forEach((layout) => {
|
||||
// Check if event spans this column
|
||||
|
|
@ -544,15 +544,15 @@ export class AllDayManager {
|
|||
if (!container) return;
|
||||
|
||||
// Create overflow indicators for each column that needs them
|
||||
var columns = ColumnDetectionUtils.getColumns();
|
||||
let columns = ColumnDetectionUtils.getColumns();
|
||||
|
||||
columns.forEach((columnBounds) => {
|
||||
var totalEventsInColumn = this.countEventsInColumn(columnBounds);
|
||||
var overflowCount = Math.max(0, totalEventsInColumn - 3);
|
||||
let totalEventsInColumn = this.countEventsInColumn(columnBounds);
|
||||
let overflowCount = Math.max(0, totalEventsInColumn - 3);
|
||||
|
||||
if (overflowCount > 0) {
|
||||
// Create new overflow indicator element
|
||||
var overflowElement = document.createElement('swp-event');
|
||||
let overflowElement = document.createElement('swp-event');
|
||||
overflowElement.className = 'max-event-overflow';
|
||||
overflowElement.style.gridRow = '4';
|
||||
overflowElement.style.gridColumn = columnBounds.index.toString();
|
||||
|
|
|
|||
|
|
@ -63,12 +63,6 @@ export class DragDropManager {
|
|||
private snapIntervalMinutes = 15; // Default 15 minutes
|
||||
private hourHeightPx: number; // Will be set from config
|
||||
|
||||
// Event listener references for proper cleanup
|
||||
private boundHandlers = {
|
||||
mouseMove: this.handleMouseMove.bind(this),
|
||||
mouseDown: this.handleMouseDown.bind(this),
|
||||
mouseUp: this.handleMouseUp.bind(this)
|
||||
};
|
||||
|
||||
private get snapDistancePx(): number {
|
||||
return (this.snapIntervalMinutes / 60) * this.hourHeightPx;
|
||||
|
|
@ -95,10 +89,10 @@ export class DragDropManager {
|
|||
* Initialize with optimized event listener setup
|
||||
*/
|
||||
private init(): void {
|
||||
// Use bound handlers for proper cleanup
|
||||
document.body.addEventListener('mousemove', this.boundHandlers.mouseMove);
|
||||
document.body.addEventListener('mousedown', this.boundHandlers.mouseDown);
|
||||
document.body.addEventListener('mouseup', this.boundHandlers.mouseUp);
|
||||
// Add event listeners
|
||||
document.body.addEventListener('mousemove', this.handleMouseMove.bind(this));
|
||||
document.body.addEventListener('mousedown', this.handleMouseDown.bind(this));
|
||||
document.body.addEventListener('mouseup', this.handleMouseUp.bind(this));
|
||||
|
||||
this.scrollContainer = document.querySelector('swp-scrollable-content') as HTMLElement;
|
||||
const calendarContainer = document.querySelector('swp-calendar-container');
|
||||
|
|
@ -540,19 +534,4 @@ export class DragDropManager {
|
|||
this.eventBus.emit('drag:mouseleave-header', dragMouseLeavePayload);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean up all resources and event listeners
|
||||
*/
|
||||
public destroy(): void {
|
||||
this.stopAutoScroll();
|
||||
|
||||
// Remove event listeners using bound references
|
||||
document.body.removeEventListener('mousemove', this.boundHandlers.mouseMove);
|
||||
document.body.removeEventListener('mousedown', this.boundHandlers.mouseDown);
|
||||
document.body.removeEventListener('mouseup', this.boundHandlers.mouseUp);
|
||||
|
||||
// Clean up drag state
|
||||
this.cleanupDragState();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -226,16 +226,4 @@ export class EventFilterManager {
|
|||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean up
|
||||
*/
|
||||
public destroy(): void {
|
||||
// Note: We can't easily remove anonymous event listeners
|
||||
// In production, we'd store references to the bound functions
|
||||
|
||||
if (this.frameRequest) {
|
||||
cancelAnimationFrame(this.frameRequest);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -283,13 +283,4 @@ export class EventManager {
|
|||
public async refresh(): Promise<void> {
|
||||
await this.loadData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean up resources and clear caches
|
||||
*/
|
||||
public destroy(): void {
|
||||
this.events = [];
|
||||
this.rawData = null;
|
||||
this.clearCache();
|
||||
}
|
||||
}
|
||||
|
|
@ -21,7 +21,6 @@ export class GridManager {
|
|||
private currentView: CalendarView = 'week';
|
||||
private gridRenderer: GridRenderer;
|
||||
private styleManager: GridStyleManager;
|
||||
private eventCleanup: (() => void)[] = [];
|
||||
|
||||
constructor() {
|
||||
// Initialize GridRenderer and StyleManager with config
|
||||
|
|
@ -42,26 +41,20 @@ export class GridManager {
|
|||
|
||||
private subscribeToEvents(): void {
|
||||
// Listen for view changes
|
||||
this.eventCleanup.push(
|
||||
eventBus.on(CoreEvents.VIEW_CHANGED, (e: Event) => {
|
||||
const detail = (e as CustomEvent).detail;
|
||||
this.currentView = detail.currentView;
|
||||
this.render();
|
||||
})
|
||||
);
|
||||
|
||||
eventBus.on(CoreEvents.VIEW_CHANGED, (e: Event) => {
|
||||
const detail = (e as CustomEvent).detail;
|
||||
this.currentView = detail.currentView;
|
||||
this.render();
|
||||
});
|
||||
|
||||
// Listen for config changes that affect rendering
|
||||
this.eventCleanup.push(
|
||||
eventBus.on(CoreEvents.REFRESH_REQUESTED, (e: Event) => {
|
||||
this.render();
|
||||
})
|
||||
);
|
||||
|
||||
this.eventCleanup.push(
|
||||
eventBus.on(CoreEvents.WORKWEEK_CHANGED, () => {
|
||||
this.render();
|
||||
})
|
||||
);
|
||||
eventBus.on(CoreEvents.REFRESH_REQUESTED, (e: Event) => {
|
||||
this.render();
|
||||
});
|
||||
|
||||
eventBus.on(CoreEvents.WORKWEEK_CHANGED, () => {
|
||||
this.render();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -288,20 +281,7 @@ export class GridManager {
|
|||
};
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean up all resources
|
||||
*/
|
||||
public destroy(): void {
|
||||
// Clean up event listeners
|
||||
this.eventCleanup.forEach(cleanup => cleanup());
|
||||
this.eventCleanup = [];
|
||||
|
||||
// Clear references
|
||||
this.container = null;
|
||||
this.resourceData = null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Helper method to add months to a date
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ export class HeaderManager {
|
|||
constructor() {
|
||||
// Bind methods for event listeners
|
||||
this.setupHeaderDragListeners = this.setupHeaderDragListeners.bind(this);
|
||||
this.destroy = this.destroy.bind(this);
|
||||
|
||||
// Listen for navigation events to update header
|
||||
this.setupNavigationListener();
|
||||
|
|
@ -156,23 +155,4 @@ export class HeaderManager {
|
|||
|
||||
return calendarHeader;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean up resources and event listeners
|
||||
*/
|
||||
public destroy(): void {
|
||||
|
||||
// Remove eventBus listeners
|
||||
if (this.dragMouseEnterHeaderListener) {
|
||||
eventBus.off('drag:mouseenter-header', this.dragMouseEnterHeaderListener);
|
||||
}
|
||||
if (this.dragMouseLeaveHeaderListener) {
|
||||
eventBus.off('drag:mouseleave-header', this.dragMouseLeaveHeaderListener);
|
||||
}
|
||||
|
||||
// Clear references
|
||||
this.dragMouseEnterHeaderListener = null;
|
||||
this.dragMouseLeaveHeaderListener = null;
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -256,13 +256,4 @@ export class ScrollManager {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Cleanup resources
|
||||
*/
|
||||
destroy(): void {
|
||||
if (this.resizeObserver) {
|
||||
this.resizeObserver.disconnect();
|
||||
this.resizeObserver = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -10,7 +10,6 @@ import { CoreEvents } from '../constants/CoreEvents';
|
|||
export class ViewManager {
|
||||
private eventBus: IEventBus;
|
||||
private currentView: CalendarView = 'week';
|
||||
private eventCleanup: (() => void)[] = [];
|
||||
private buttonListeners: Map<Element, EventListener> = new Map();
|
||||
|
||||
// Cached DOM elements for performance
|
||||
|
|
@ -39,20 +38,16 @@ export class ViewManager {
|
|||
* Setup event bus listeners with proper cleanup tracking
|
||||
*/
|
||||
private setupEventBusListeners(): void {
|
||||
this.eventCleanup.push(
|
||||
this.eventBus.on(CoreEvents.INITIALIZED, () => {
|
||||
this.initializeView();
|
||||
})
|
||||
);
|
||||
this.eventBus.on(CoreEvents.INITIALIZED, () => {
|
||||
this.initializeView();
|
||||
});
|
||||
|
||||
// Remove redundant VIEW_CHANGED listener that causes circular calls
|
||||
// changeView is called directly from button handlers
|
||||
|
||||
this.eventCleanup.push(
|
||||
this.eventBus.on(CoreEvents.DATE_CHANGED, () => {
|
||||
this.refreshCurrentView();
|
||||
})
|
||||
);
|
||||
this.eventBus.on(CoreEvents.DATE_CHANGED, () => {
|
||||
this.refreshCurrentView();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -222,23 +217,4 @@ export class ViewManager {
|
|||
this.refreshCurrentView();
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean up all resources and cached elements
|
||||
*/
|
||||
public destroy(): void {
|
||||
// Clean up event bus listeners
|
||||
this.eventCleanup.forEach(cleanup => cleanup());
|
||||
this.eventCleanup = [];
|
||||
|
||||
// Clean up button listeners
|
||||
this.buttonListeners.forEach((handler, button) => {
|
||||
button.removeEventListener('click', handler);
|
||||
});
|
||||
this.buttonListeners.clear();
|
||||
|
||||
// Clear cached elements
|
||||
this.cachedViewButtons = null;
|
||||
this.cachedWorkweekButtons = null;
|
||||
this.lastButtonCacheTime = 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -97,15 +97,6 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Cleanup method for proper resource management
|
||||
*/
|
||||
public destroy(): void {
|
||||
this.draggedClone = null;
|
||||
this.originalEvent = null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Apply common drag styling to an element
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -310,8 +310,4 @@ export class EventRenderingService {
|
|||
public refresh(container?: HTMLElement): void {
|
||||
this.clearEvents(container);
|
||||
}
|
||||
|
||||
public destroy(): void {
|
||||
this.clearEvents();
|
||||
}
|
||||
}
|
||||
|
|
@ -229,22 +229,6 @@ export class GridRenderer {
|
|||
(this as any).cachedColumnContainer = columnContainer;
|
||||
}
|
||||
*/
|
||||
/**
|
||||
* Clean up cached elements and event listeners
|
||||
*/
|
||||
public destroy(): void {
|
||||
// Clean up grid-only event listeners
|
||||
// if ((this as any).gridBodyEventListener && (this as any).cachedColumnContainer) {
|
||||
// (this as any).cachedColumnContainer.removeEventListener('mouseover', (this as any).gridBodyEventListener);
|
||||
//}
|
||||
|
||||
// Clear cached references
|
||||
this.cachedGridContainer = null;
|
||||
this.cachedTimeAxis = null;
|
||||
(this as any).gridBodyEventListener = null;
|
||||
(this as any).cachedColumnContainer = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create navigation grid container for slide animations
|
||||
* Now uses same implementation as initial load for consistency
|
||||
|
|
|
|||
|
|
@ -112,11 +112,4 @@ export class NavigationRenderer {
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Public cleanup method for cached elements
|
||||
*/
|
||||
public destroy(): void {
|
||||
this.clearCache();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -153,7 +153,4 @@ export class MonthViewStrategy implements ViewStrategy {
|
|||
endDate
|
||||
};
|
||||
}
|
||||
|
||||
destroy(): void {
|
||||
}
|
||||
}
|
||||
|
|
@ -62,9 +62,4 @@ export interface ViewStrategy {
|
|||
* Get the period start and end dates for event filtering
|
||||
*/
|
||||
getPeriodRange(baseDate: Date): { startDate: Date; endDate: Date };
|
||||
|
||||
/**
|
||||
* Clean up any view-specific resources
|
||||
*/
|
||||
destroy(): void;
|
||||
}
|
||||
|
|
@ -71,8 +71,4 @@ export class WeekViewStrategy implements ViewStrategy {
|
|||
endDate: weekEnd
|
||||
};
|
||||
}
|
||||
|
||||
destroy(): void {
|
||||
// Clean up any week-specific resources
|
||||
}
|
||||
}
|
||||
|
|
@ -97,7 +97,6 @@ export interface IEventBus {
|
|||
emit(eventType: string, detail?: unknown): boolean;
|
||||
getEventLog(eventType?: string): EventLogEntry[];
|
||||
setDebug(enabled: boolean): void;
|
||||
destroy(): void;
|
||||
}
|
||||
|
||||
export interface GridPosition {
|
||||
|
|
|
|||
|
|
@ -76,10 +76,10 @@ export class ColumnDetectionUtils {
|
|||
}
|
||||
|
||||
// Convert Date to YYYY-MM-DD format
|
||||
var dateString = date.toISOString().split('T')[0];
|
||||
let dateString = date.toISOString().split('T')[0];
|
||||
|
||||
// Find column that matches the date
|
||||
var column = this.columnBoundsCache.find(col => col.date === dateString);
|
||||
let column = this.columnBoundsCache.find(col => col.date === dateString);
|
||||
return column || null;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue