@mintplayer/scheduler-wc 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,250 @@
1
+ import { dateService, timelineService, getContrastColor, } from '@mintplayer/scheduler-core';
2
+ import { BaseView } from './base-view';
3
+ /**
4
+ * Day view renderer
5
+ */
6
+ export class DayView extends BaseView {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.eventsContainer = null;
10
+ this.slotElements = new Map();
11
+ }
12
+ render() {
13
+ this.clearContainer();
14
+ this.container.classList.add('scheduler-day-view');
15
+ const { date, options } = this.state;
16
+ // Day header
17
+ const header = this.createElement('div', 'scheduler-day-headers');
18
+ // Time gutter space
19
+ const gutterSpace = this.createElement('div', 'scheduler-time-gutter-space');
20
+ gutterSpace.style.width = 'var(--scheduler-time-gutter-width)';
21
+ header.appendChild(gutterSpace);
22
+ const dayHeader = this.createElement('div', 'scheduler-day-header');
23
+ if (dateService.isToday(date)) {
24
+ dayHeader.classList.add('today');
25
+ }
26
+ const dayName = this.createElement('div', 'day-name');
27
+ dayName.textContent = dateService.getDayName(date, options.locale);
28
+ const dayNumber = this.createElement('div', 'day-number');
29
+ dayNumber.textContent = String(date.getDate());
30
+ const monthYear = this.createElement('div', 'month-year');
31
+ monthYear.textContent = dateService.formatDate(date, options.locale, {
32
+ month: 'long',
33
+ year: 'numeric',
34
+ });
35
+ monthYear.style.fontSize = '12px';
36
+ monthYear.style.color = '#666';
37
+ dayHeader.appendChild(dayName);
38
+ dayHeader.appendChild(dayNumber);
39
+ dayHeader.appendChild(monthYear);
40
+ header.appendChild(dayHeader);
41
+ this.container.appendChild(header);
42
+ // Time grid
43
+ const timeGrid = this.createElement('div', 'scheduler-time-grid');
44
+ // Time gutter
45
+ const timeGutter = this.createElement('div', 'scheduler-time-gutter');
46
+ const slots = dateService.getTimeSlots(date, options.slotDuration, options.slotMinTime, options.slotMaxTime);
47
+ for (const slot of slots) {
48
+ const label = this.createElement('div', 'scheduler-time-slot-label');
49
+ label.textContent = dateService.formatTime(slot.start, options.timeFormat);
50
+ timeGutter.appendChild(label);
51
+ }
52
+ timeGrid.appendChild(timeGutter);
53
+ // Day column
54
+ const daysContainer = this.createElement('div', 'scheduler-days-container');
55
+ const dayColumn = this.createElement('div', 'scheduler-day-column');
56
+ // Create time slots
57
+ for (let slotIndex = 0; slotIndex < slots.length; slotIndex++) {
58
+ const slot = slots[slotIndex];
59
+ const slotEl = this.createElement('div', 'scheduler-time-slot');
60
+ this.setData(slotEl, {
61
+ slotIndex,
62
+ start: slot.start.toISOString(),
63
+ end: slot.end.toISOString(),
64
+ });
65
+ this.slotElements.set(slotIndex, slotEl);
66
+ dayColumn.appendChild(slotEl);
67
+ }
68
+ // Events container
69
+ this.eventsContainer = this.createElement('div', 'scheduler-events-container');
70
+ dayColumn.appendChild(this.eventsContainer);
71
+ daysContainer.appendChild(dayColumn);
72
+ timeGrid.appendChild(daysContainer);
73
+ this.container.appendChild(timeGrid);
74
+ // Render events
75
+ this.renderEvents();
76
+ // Render now indicator
77
+ if (dateService.isToday(date) && options.nowIndicator) {
78
+ this.renderNowIndicator(dayColumn);
79
+ }
80
+ }
81
+ renderEvents() {
82
+ var _a;
83
+ if (!this.eventsContainer)
84
+ return;
85
+ this.eventsContainer.innerHTML = '';
86
+ const { date, events, options } = this.state;
87
+ const dayStart = new Date(date);
88
+ dayStart.setHours(0, 0, 0, 0);
89
+ const dayEnd = new Date(date);
90
+ dayEnd.setHours(23, 59, 59, 999);
91
+ // Filter events for this day
92
+ const dayEvents = timelineService.filterByRange(events, dayStart, dayEnd);
93
+ // Split events into parts
94
+ const allParts = [];
95
+ for (const event of dayEvents) {
96
+ const { parts } = timelineService.splitInParts(event);
97
+ const dayParts = timelineService.filterPartsByRange(parts, dayStart, dayEnd);
98
+ allParts.push(...dayParts);
99
+ }
100
+ // Get timelened parts with track info
101
+ const timelinedParts = timelineService.getTimelinedParts(allParts);
102
+ // Render each event part
103
+ for (const { part, trackIndex, totalTracks } of timelinedParts) {
104
+ if (!part.event)
105
+ continue;
106
+ const eventEl = this.createEventElement(part, trackIndex, totalTracks, (_a = options.slotDuration) !== null && _a !== void 0 ? _a : 1800);
107
+ this.eventsContainer.appendChild(eventEl);
108
+ }
109
+ }
110
+ createEventElement(part, trackIndex, totalTracks, slotDuration) {
111
+ var _a, _b, _c, _d;
112
+ const event = part.event;
113
+ const eventEl = this.createElement('div', 'scheduler-event');
114
+ // Mark as selected if this is the selected event
115
+ if (((_a = this.state.selectedEvent) === null || _a === void 0 ? void 0 : _a.id) === event.id) {
116
+ eventEl.classList.add('selected');
117
+ }
118
+ // Calculate position
119
+ const dayStart = new Date(part.start);
120
+ dayStart.setHours(0, 0, 0, 0);
121
+ const startMinutes = (part.start.getTime() - dayStart.getTime()) / (1000 * 60);
122
+ const endMinutes = (part.end.getTime() - dayStart.getTime()) / (1000 * 60);
123
+ const durationMinutes = endMinutes - startMinutes;
124
+ const slotMinutes = slotDuration / 60;
125
+ const top = (startMinutes / slotMinutes) * 40;
126
+ const height = Math.max((durationMinutes / slotMinutes) * 40, 20);
127
+ // Calculate width based on tracks
128
+ const widthPercent = 100 / totalTracks;
129
+ const leftPercent = trackIndex * widthPercent;
130
+ eventEl.style.top = `${top}px`;
131
+ eventEl.style.height = `${height}px`;
132
+ eventEl.style.left = `${leftPercent}%`;
133
+ eventEl.style.width = `calc(${widthPercent}% - 2px)`;
134
+ eventEl.style.backgroundColor = (_b = event.color) !== null && _b !== void 0 ? _b : '#3788d8';
135
+ eventEl.style.color = (_c = event.textColor) !== null && _c !== void 0 ? _c : getContrastColor((_d = event.color) !== null && _d !== void 0 ? _d : '#3788d8');
136
+ this.setData(eventEl, { eventId: event.id });
137
+ // Title
138
+ const title = this.createElement('div', 'event-title');
139
+ title.textContent = event.title;
140
+ eventEl.appendChild(title);
141
+ // Time
142
+ const timeEl = this.createElement('div', 'event-time');
143
+ timeEl.textContent = `${dateService.formatTime(part.start, this.state.options.timeFormat)} - ${dateService.formatTime(part.end, this.state.options.timeFormat)}`;
144
+ eventEl.appendChild(timeEl);
145
+ // Resize handles
146
+ if (event.resizable !== false) {
147
+ if (part.isStart) {
148
+ const topHandle = this.createElement('div', 'resize-handle', 'top');
149
+ this.setData(topHandle, { handle: 'start' });
150
+ eventEl.appendChild(topHandle);
151
+ }
152
+ if (part.isEnd) {
153
+ const bottomHandle = this.createElement('div', 'resize-handle', 'bottom');
154
+ this.setData(bottomHandle, { handle: 'end' });
155
+ eventEl.appendChild(bottomHandle);
156
+ }
157
+ }
158
+ return eventEl;
159
+ }
160
+ renderNowIndicator(dayColumn) {
161
+ var _a;
162
+ const now = new Date();
163
+ const dayStart = new Date(now);
164
+ dayStart.setHours(0, 0, 0, 0);
165
+ const minutesFromMidnight = (now.getTime() - dayStart.getTime()) / (1000 * 60);
166
+ const slotMinutes = ((_a = this.state.options.slotDuration) !== null && _a !== void 0 ? _a : 1800) / 60;
167
+ const top = (minutesFromMidnight / slotMinutes) * 40;
168
+ const indicator = this.createElement('div', 'scheduler-now-indicator');
169
+ indicator.style.top = `${top}px`;
170
+ dayColumn.appendChild(indicator);
171
+ }
172
+ update(state) {
173
+ const dateChanged = this.state.date.getTime() !== state.date.getTime();
174
+ const optionsChanged = this.optionsRequireRerender(this.state.options, state.options);
175
+ this.state = state;
176
+ // If date or relevant options changed, we need to re-render the entire view
177
+ if (dateChanged || optionsChanged) {
178
+ this.render();
179
+ return;
180
+ }
181
+ // Update greyed slots
182
+ this.updateGreyedSlots();
183
+ // Re-render events
184
+ this.renderEvents();
185
+ // Render preview event
186
+ this.renderPreviewEvent();
187
+ }
188
+ optionsRequireRerender(oldOpts, newOpts) {
189
+ return oldOpts.slotDuration !== newOpts.slotDuration ||
190
+ oldOpts.timeFormat !== newOpts.timeFormat ||
191
+ oldOpts.slotMinTime !== newOpts.slotMinTime ||
192
+ oldOpts.slotMaxTime !== newOpts.slotMaxTime ||
193
+ oldOpts.locale !== newOpts.locale;
194
+ }
195
+ updateGreyedSlots() {
196
+ const { dragState, previewEvent, options, date } = this.state;
197
+ // Clear all greyed slots
198
+ this.slotElements.forEach((el) => el.classList.remove('greyed'));
199
+ if (!dragState || !previewEvent)
200
+ return;
201
+ if (!dateService.isSameDay(date, previewEvent.start))
202
+ return;
203
+ const slots = dateService.getTimeSlots(date, options.slotDuration, options.slotMinTime, options.slotMaxTime);
204
+ for (let slotIndex = 0; slotIndex < slots.length; slotIndex++) {
205
+ const slot = slots[slotIndex];
206
+ // Check if slot overlaps with preview event
207
+ if (slot.start < previewEvent.end && slot.end > previewEvent.start) {
208
+ const slotEl = this.slotElements.get(slotIndex);
209
+ if (slotEl) {
210
+ slotEl.classList.add('greyed');
211
+ }
212
+ }
213
+ }
214
+ }
215
+ renderPreviewEvent() {
216
+ var _a;
217
+ if (!this.eventsContainer)
218
+ return;
219
+ // Remove existing preview
220
+ const existingPreview = this.eventsContainer.querySelector('.scheduler-event.preview');
221
+ if (existingPreview) {
222
+ existingPreview.remove();
223
+ }
224
+ const { previewEvent, options, date } = this.state;
225
+ if (!previewEvent)
226
+ return;
227
+ if (!dateService.isSameDay(date, previewEvent.start))
228
+ return;
229
+ const previewEl = this.createElement('div', 'scheduler-event', 'preview');
230
+ const dayStart = new Date(previewEvent.start);
231
+ dayStart.setHours(0, 0, 0, 0);
232
+ const startMinutes = (previewEvent.start.getTime() - dayStart.getTime()) / (1000 * 60);
233
+ const endMinutes = (previewEvent.end.getTime() - dayStart.getTime()) / (1000 * 60);
234
+ const durationMinutes = endMinutes - startMinutes;
235
+ const slotMinutes = ((_a = options.slotDuration) !== null && _a !== void 0 ? _a : 1800) / 60;
236
+ const top = (startMinutes / slotMinutes) * 40;
237
+ const height = Math.max((durationMinutes / slotMinutes) * 40, 20);
238
+ previewEl.style.top = `${top}px`;
239
+ previewEl.style.height = `${height}px`;
240
+ previewEl.style.left = '0';
241
+ previewEl.style.width = '100%';
242
+ this.eventsContainer.appendChild(previewEl);
243
+ }
244
+ destroy() {
245
+ this.eventsContainer = null;
246
+ this.slotElements.clear();
247
+ this.clearContainer();
248
+ }
249
+ }
250
+ //# sourceMappingURL=day-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"day-view.js","sourceRoot":"","sources":["../../../../../libs/mp-scheduler-wc/src/views/day-view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { BaseView } from './base-view';
2
+ export { YearView } from './year-view';
3
+ export { MonthView } from './month-view';
4
+ export { WeekView } from './week-view';
5
+ export { DayView } from './day-view';
6
+ export { TimelineView } from './timeline-view';
@@ -0,0 +1,7 @@
1
+ export { BaseView } from './base-view';
2
+ export { YearView } from './year-view';
3
+ export { MonthView } from './month-view';
4
+ export { WeekView } from './week-view';
5
+ export { DayView } from './day-view';
6
+ export { TimelineView } from './timeline-view';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/mp-scheduler-wc/src/views/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { BaseView } from './base-view';
2
+ import { SchedulerState } from '../state/scheduler-state';
3
+ /**
4
+ * Month view renderer
5
+ */
6
+ export declare class MonthView extends BaseView {
7
+ private dayCells;
8
+ render(): void;
9
+ private createDayCell;
10
+ private renderEvents;
11
+ update(state: SchedulerState): void;
12
+ private optionsRequireRerender;
13
+ destroy(): void;
14
+ }
@@ -0,0 +1,141 @@
1
+ import { dateService, timelineService, getContrastColor, } from '@mintplayer/scheduler-core';
2
+ import { BaseView } from './base-view';
3
+ /**
4
+ * Month view renderer
5
+ */
6
+ export class MonthView extends BaseView {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.dayCells = new Map();
10
+ }
11
+ render() {
12
+ this.clearContainer();
13
+ this.container.classList.add('scheduler-month-view');
14
+ const { date, options } = this.state;
15
+ const weeks = dateService.getMonthWeeks(date, options.firstDayOfWeek);
16
+ // Create day-of-week headers
17
+ const headers = this.createElement('div', 'scheduler-day-headers');
18
+ const firstWeek = weeks[0];
19
+ for (const day of firstWeek) {
20
+ const header = this.createElement('div', 'scheduler-day-header');
21
+ header.textContent = dateService.getDayName(day, options.locale);
22
+ headers.appendChild(header);
23
+ }
24
+ this.container.appendChild(headers);
25
+ // Create month grid
26
+ const grid = this.createElement('div', 'scheduler-month-grid');
27
+ for (const week of weeks) {
28
+ for (const day of week) {
29
+ const cell = this.createDayCell(day);
30
+ grid.appendChild(cell);
31
+ }
32
+ }
33
+ this.container.appendChild(grid);
34
+ // Render events
35
+ this.renderEvents();
36
+ }
37
+ createDayCell(day) {
38
+ const { date } = this.state;
39
+ const cell = this.createElement('div', 'scheduler-month-day');
40
+ if (!dateService.isSameMonth(day, date)) {
41
+ cell.classList.add('other-month');
42
+ }
43
+ if (dateService.isToday(day)) {
44
+ cell.classList.add('today');
45
+ }
46
+ // Day number
47
+ const dayNumber = this.createElement('div', 'day-number');
48
+ dayNumber.textContent = String(day.getDate());
49
+ cell.appendChild(dayNumber);
50
+ // Events container
51
+ const eventsContainer = this.createElement('div', 'month-events');
52
+ cell.appendChild(eventsContainer);
53
+ // Store reference
54
+ const key = day.toISOString().split('T')[0];
55
+ this.dayCells.set(key, cell);
56
+ this.setData(cell, { date: key });
57
+ return cell;
58
+ }
59
+ renderEvents() {
60
+ var _a, _b, _c;
61
+ const { date, events, options } = this.state;
62
+ const monthStart = dateService.getMonthStart(date);
63
+ const monthEnd = dateService.getMonthEnd(date);
64
+ // Get weeks for full view range
65
+ const weeks = dateService.getMonthWeeks(date, options.firstDayOfWeek);
66
+ const viewStart = weeks[0][0];
67
+ const viewEnd = weeks[weeks.length - 1][6];
68
+ viewEnd.setHours(23, 59, 59, 999);
69
+ // Filter events for the view range
70
+ const viewEvents = timelineService.filterByRange(events, viewStart, viewEnd);
71
+ // Group events by day
72
+ const eventsByDay = new Map();
73
+ for (const event of viewEvents) {
74
+ const eventStart = new Date(event.start);
75
+ const eventEnd = new Date(event.end);
76
+ // Iterate through each day the event spans
77
+ const current = new Date(eventStart);
78
+ current.setHours(0, 0, 0, 0);
79
+ while (current <= eventEnd) {
80
+ const key = current.toISOString().split('T')[0];
81
+ if (!eventsByDay.has(key)) {
82
+ eventsByDay.set(key, []);
83
+ }
84
+ eventsByDay.get(key).push(event);
85
+ current.setDate(current.getDate() + 1);
86
+ }
87
+ }
88
+ // Render events in each day cell
89
+ const maxEventsPerDay = typeof options.dayMaxEvents === 'number'
90
+ ? options.dayMaxEvents
91
+ : 3;
92
+ for (const [key, dayEvents] of eventsByDay) {
93
+ const cell = this.dayCells.get(key);
94
+ if (!cell)
95
+ continue;
96
+ const eventsContainer = cell.querySelector('.month-events');
97
+ if (!eventsContainer)
98
+ continue;
99
+ // Clear existing events
100
+ eventsContainer.innerHTML = '';
101
+ const visibleEvents = dayEvents.slice(0, maxEventsPerDay);
102
+ const hiddenCount = dayEvents.length - visibleEvents.length;
103
+ for (const event of visibleEvents) {
104
+ const eventEl = this.createElement('div', 'scheduler-month-event');
105
+ eventEl.textContent = event.title;
106
+ eventEl.style.backgroundColor = (_a = event.color) !== null && _a !== void 0 ? _a : '#3788d8';
107
+ eventEl.style.color = (_b = event.textColor) !== null && _b !== void 0 ? _b : getContrastColor((_c = event.color) !== null && _c !== void 0 ? _c : '#3788d8');
108
+ this.setData(eventEl, { eventId: event.id });
109
+ eventsContainer.appendChild(eventEl);
110
+ }
111
+ if (hiddenCount > 0) {
112
+ const moreLink = this.createElement('div', 'scheduler-more-link');
113
+ moreLink.textContent = `+${hiddenCount} more`;
114
+ this.setData(moreLink, { date: key });
115
+ eventsContainer.appendChild(moreLink);
116
+ }
117
+ }
118
+ }
119
+ update(state) {
120
+ const dateChanged = this.state.date.getMonth() !== state.date.getMonth() ||
121
+ this.state.date.getFullYear() !== state.date.getFullYear();
122
+ const optionsChanged = this.optionsRequireRerender(this.state.options, state.options);
123
+ this.state = state;
124
+ // If month or relevant options changed, we need to re-render the entire view
125
+ if (dateChanged || optionsChanged) {
126
+ this.render();
127
+ return;
128
+ }
129
+ this.renderEvents();
130
+ }
131
+ optionsRequireRerender(oldOpts, newOpts) {
132
+ return oldOpts.firstDayOfWeek !== newOpts.firstDayOfWeek ||
133
+ oldOpts.dayMaxEvents !== newOpts.dayMaxEvents ||
134
+ oldOpts.locale !== newOpts.locale;
135
+ }
136
+ destroy() {
137
+ this.dayCells.clear();
138
+ this.clearContainer();
139
+ }
140
+ }
141
+ //# sourceMappingURL=month-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"month-view.js","sourceRoot":"","sources":["../../../../../libs/mp-scheduler-wc/src/views/month-view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { BaseView } from './base-view';
2
+ import { SchedulerState } from '../state/scheduler-state';
3
+ /**
4
+ * Timeline view renderer
5
+ */
6
+ export declare class TimelineView extends BaseView {
7
+ private rowElements;
8
+ private slotWidth;
9
+ render(): void;
10
+ private createResourceRow;
11
+ private renderEvents;
12
+ private createEventElement;
13
+ update(state: SchedulerState): void;
14
+ private optionsRequireRerender;
15
+ private updateGreyedSlots;
16
+ destroy(): void;
17
+ }