Some ignored filles was missing
This commit is contained in:
parent
7db22245e2
commit
fd5ab6bc0d
268 changed files with 31970 additions and 4 deletions
74
wwwroot/js/features/all-day/utils/AllDayDomReader.d.ts
vendored
Normal file
74
wwwroot/js/features/all-day/utils/AllDayDomReader.d.ts
vendored
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
import { ICalendarEvent } from '../../../types/CalendarTypes';
|
||||
/**
|
||||
* AllDayDomReader - Centralized DOM reading utilities for all-day services
|
||||
*
|
||||
* STATELESS UTILITY - Pure functions for reading DOM state
|
||||
* - Consistent selectors across all services
|
||||
* - Unified computed style approach (not inline styles)
|
||||
* - Type-safe return values
|
||||
* - Single source of truth for DOM queries
|
||||
*/
|
||||
export declare class AllDayDomReader {
|
||||
/**
|
||||
* Get the all-day events container element
|
||||
*/
|
||||
static getAllDayContainer(): HTMLElement | null;
|
||||
/**
|
||||
* Get the calendar header element
|
||||
*/
|
||||
static getCalendarHeader(): HTMLElement | null;
|
||||
/**
|
||||
* Get the header spacer element
|
||||
*/
|
||||
static getHeaderSpacer(): HTMLElement | null;
|
||||
/**
|
||||
* Get all all-day event elements (excluding overflow indicators)
|
||||
* Returns raw HTMLElements for DOM manipulation
|
||||
*/
|
||||
static getEventElements(): HTMLElement[];
|
||||
/**
|
||||
* Get all-day events as ICalendarEvent objects
|
||||
* Returns parsed data for business logic
|
||||
*/
|
||||
static getEventsAsData(): ICalendarEvent[];
|
||||
/**
|
||||
* Get grid row from element using computed style
|
||||
* Always uses computed style for consistency
|
||||
*/
|
||||
static getGridRow(element: HTMLElement): number;
|
||||
/**
|
||||
* Get grid column range from element using computed style
|
||||
*/
|
||||
static getGridColumnRange(element: HTMLElement): {
|
||||
start: number;
|
||||
end: number;
|
||||
};
|
||||
/**
|
||||
* Get grid area from element using computed style
|
||||
*/
|
||||
static getGridArea(element: HTMLElement): string;
|
||||
/**
|
||||
* Calculate max row number from all events
|
||||
* Uses computed styles for accurate reading
|
||||
*/
|
||||
static getMaxRowFromEvents(): number;
|
||||
/**
|
||||
* Check if all-day container is expanded
|
||||
*/
|
||||
static isExpanded(): boolean;
|
||||
/**
|
||||
* Get current all-day height from CSS variable
|
||||
*/
|
||||
static getCurrentHeight(): number;
|
||||
/**
|
||||
* Count events in specific column
|
||||
*/
|
||||
static countEventsInColumn(columnIndex: number): number;
|
||||
/**
|
||||
* Get current layouts from DOM elements
|
||||
* Returns map of eventId → layout info for comparison
|
||||
*/
|
||||
static getCurrentLayouts(): Map<string, {
|
||||
gridArea: string;
|
||||
}>;
|
||||
}
|
||||
175
wwwroot/js/features/all-day/utils/AllDayDomReader.js
Normal file
175
wwwroot/js/features/all-day/utils/AllDayDomReader.js
Normal file
|
|
@ -0,0 +1,175 @@
|
|||
/**
|
||||
* AllDayDomReader - Centralized DOM reading utilities for all-day services
|
||||
*
|
||||
* STATELESS UTILITY - Pure functions for reading DOM state
|
||||
* - Consistent selectors across all services
|
||||
* - Unified computed style approach (not inline styles)
|
||||
* - Type-safe return values
|
||||
* - Single source of truth for DOM queries
|
||||
*/
|
||||
export class AllDayDomReader {
|
||||
// ============================================
|
||||
// CONTAINER GETTERS
|
||||
// ============================================
|
||||
/**
|
||||
* Get the all-day events container element
|
||||
*/
|
||||
static getAllDayContainer() {
|
||||
return document.querySelector('swp-calendar-header swp-allday-container');
|
||||
}
|
||||
/**
|
||||
* Get the calendar header element
|
||||
*/
|
||||
static getCalendarHeader() {
|
||||
return document.querySelector('swp-calendar-header');
|
||||
}
|
||||
/**
|
||||
* Get the header spacer element
|
||||
*/
|
||||
static getHeaderSpacer() {
|
||||
return document.querySelector('swp-header-spacer');
|
||||
}
|
||||
// ============================================
|
||||
// EVENT ELEMENT GETTERS
|
||||
// ============================================
|
||||
/**
|
||||
* Get all all-day event elements (excluding overflow indicators)
|
||||
* Returns raw HTMLElements for DOM manipulation
|
||||
*/
|
||||
static getEventElements() {
|
||||
const container = this.getAllDayContainer();
|
||||
if (!container)
|
||||
return [];
|
||||
return Array.from(container.querySelectorAll('swp-allday-event:not(.max-event-indicator)'));
|
||||
}
|
||||
/**
|
||||
* Get all-day events as ICalendarEvent objects
|
||||
* Returns parsed data for business logic
|
||||
*/
|
||||
static getEventsAsData() {
|
||||
const elements = this.getEventElements();
|
||||
return elements
|
||||
.map(element => {
|
||||
const eventId = element.dataset.eventId;
|
||||
const startStr = element.dataset.start;
|
||||
const endStr = element.dataset.end;
|
||||
// Validate required fields
|
||||
if (!eventId || !startStr || !endStr) {
|
||||
console.warn('AllDayDomReader: Invalid event data in DOM:', element);
|
||||
return null;
|
||||
}
|
||||
const start = new Date(startStr);
|
||||
const end = new Date(endStr);
|
||||
if (isNaN(start.getTime()) || isNaN(end.getTime())) {
|
||||
console.warn('AllDayDomReader: Invalid event dates:', { startStr, endStr });
|
||||
return null;
|
||||
}
|
||||
return {
|
||||
id: eventId,
|
||||
title: element.dataset.title || '',
|
||||
start,
|
||||
end,
|
||||
type: element.dataset.type || 'task',
|
||||
allDay: true,
|
||||
syncStatus: (element.dataset.syncStatus || 'synced')
|
||||
};
|
||||
})
|
||||
.filter((event) => event !== null);
|
||||
}
|
||||
// ============================================
|
||||
// GRID POSITION READERS
|
||||
// ============================================
|
||||
/**
|
||||
* Get grid row from element using computed style
|
||||
* Always uses computed style for consistency
|
||||
*/
|
||||
static getGridRow(element) {
|
||||
const computedStyle = window.getComputedStyle(element);
|
||||
return parseInt(computedStyle.gridRowStart) || 0;
|
||||
}
|
||||
/**
|
||||
* Get grid column range from element using computed style
|
||||
*/
|
||||
static getGridColumnRange(element) {
|
||||
const computedStyle = window.getComputedStyle(element);
|
||||
return {
|
||||
start: parseInt(computedStyle.gridColumnStart) || 0,
|
||||
end: parseInt(computedStyle.gridColumnEnd) || 0
|
||||
};
|
||||
}
|
||||
/**
|
||||
* Get grid area from element using computed style
|
||||
*/
|
||||
static getGridArea(element) {
|
||||
const computedStyle = window.getComputedStyle(element);
|
||||
return computedStyle.gridArea;
|
||||
}
|
||||
/**
|
||||
* Calculate max row number from all events
|
||||
* Uses computed styles for accurate reading
|
||||
*/
|
||||
static getMaxRowFromEvents() {
|
||||
const events = this.getEventElements();
|
||||
if (events.length === 0)
|
||||
return 0;
|
||||
let maxRow = 0;
|
||||
events.forEach(event => {
|
||||
const row = this.getGridRow(event);
|
||||
maxRow = Math.max(maxRow, row);
|
||||
});
|
||||
return maxRow;
|
||||
}
|
||||
// ============================================
|
||||
// STATE READERS
|
||||
// ============================================
|
||||
/**
|
||||
* Check if all-day container is expanded
|
||||
*/
|
||||
static isExpanded() {
|
||||
const container = this.getAllDayContainer();
|
||||
return container?.classList.contains('expanded') || false;
|
||||
}
|
||||
/**
|
||||
* Get current all-day height from CSS variable
|
||||
*/
|
||||
static getCurrentHeight() {
|
||||
const root = document.documentElement;
|
||||
const heightStr = root.style.getPropertyValue('--all-day-row-height') || '0px';
|
||||
return parseInt(heightStr) || 0;
|
||||
}
|
||||
/**
|
||||
* Count events in specific column
|
||||
*/
|
||||
static countEventsInColumn(columnIndex) {
|
||||
const events = this.getEventElements();
|
||||
let count = 0;
|
||||
events.forEach((event) => {
|
||||
const { start, end } = this.getGridColumnRange(event);
|
||||
if (start <= columnIndex && end > columnIndex) {
|
||||
count++;
|
||||
}
|
||||
});
|
||||
return count;
|
||||
}
|
||||
// ============================================
|
||||
// LAYOUT READERS
|
||||
// ============================================
|
||||
/**
|
||||
* Get current layouts from DOM elements
|
||||
* Returns map of eventId → layout info for comparison
|
||||
*/
|
||||
static getCurrentLayouts() {
|
||||
const layoutsMap = new Map();
|
||||
const events = this.getEventElements();
|
||||
events.forEach(event => {
|
||||
const eventId = event.dataset.eventId;
|
||||
if (eventId) {
|
||||
layoutsMap.set(eventId, {
|
||||
gridArea: this.getGridArea(event)
|
||||
});
|
||||
}
|
||||
});
|
||||
return layoutsMap;
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=AllDayDomReader.js.map
|
||||
1
wwwroot/js/features/all-day/utils/AllDayDomReader.js.map
Normal file
1
wwwroot/js/features/all-day/utils/AllDayDomReader.js.map
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"AllDayDomReader.js","sourceRoot":"","sources":["../../../../../src/features/all-day/utils/AllDayDomReader.ts"],"names":[],"mappings":"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"}
|
||||
Loading…
Add table
Add a link
Reference in a new issue