@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,83 @@
1
+ import { dateService, timelineService, } from '@mintplayer/scheduler-core';
2
+ import { BaseView } from './base-view';
3
+ /**
4
+ * Year view renderer
5
+ */
6
+ export class YearView extends BaseView {
7
+ render() {
8
+ this.clearContainer();
9
+ this.container.classList.add('scheduler-year-view');
10
+ const { date, options } = this.state;
11
+ const months = dateService.getYearMonths(date);
12
+ const grid = this.createElement('div', 'scheduler-year-grid');
13
+ for (const month of months) {
14
+ const monthEl = this.createMonthCard(month);
15
+ grid.appendChild(monthEl);
16
+ }
17
+ this.container.appendChild(grid);
18
+ }
19
+ createMonthCard(month) {
20
+ const { events, options } = this.state;
21
+ const card = this.createElement('div', 'scheduler-year-month');
22
+ // Month header
23
+ const header = this.createElement('div', 'scheduler-year-month-header');
24
+ header.textContent = dateService.getMonthName(month, options.locale);
25
+ this.setData(header, { month: month.toISOString() });
26
+ card.appendChild(header);
27
+ // Mini calendar
28
+ const miniMonth = this.createElement('div', 'scheduler-mini-month');
29
+ // Day headers
30
+ const weeks = dateService.getMonthWeeks(month, options.firstDayOfWeek);
31
+ const firstWeek = weeks[0];
32
+ for (const day of firstWeek) {
33
+ const dayHeader = this.createElement('div', 'scheduler-mini-day', 'header');
34
+ dayHeader.textContent = dateService.getDayName(day, options.locale, 'narrow');
35
+ dayHeader.style.fontWeight = '600';
36
+ dayHeader.style.color = '#666';
37
+ miniMonth.appendChild(dayHeader);
38
+ }
39
+ // Days
40
+ const monthStart = dateService.getMonthStart(month);
41
+ const monthEnd = dateService.getMonthEnd(month);
42
+ const monthEvents = timelineService.filterByRange(events, monthStart, monthEnd);
43
+ // Create a set of dates that have events
44
+ const datesWithEvents = new Set();
45
+ for (const event of monthEvents) {
46
+ const current = new Date(event.start);
47
+ current.setHours(0, 0, 0, 0);
48
+ while (current <= event.end) {
49
+ datesWithEvents.add(current.toISOString().split('T')[0]);
50
+ current.setDate(current.getDate() + 1);
51
+ }
52
+ }
53
+ for (const week of weeks) {
54
+ for (const day of week) {
55
+ const dayEl = this.createElement('div', 'scheduler-mini-day');
56
+ dayEl.textContent = String(day.getDate());
57
+ this.setData(dayEl, { date: day.toISOString() });
58
+ if (!dateService.isSameMonth(day, month)) {
59
+ dayEl.classList.add('other-month');
60
+ }
61
+ if (dateService.isToday(day)) {
62
+ dayEl.classList.add('today');
63
+ }
64
+ const dateKey = day.toISOString().split('T')[0];
65
+ if (datesWithEvents.has(dateKey)) {
66
+ dayEl.classList.add('has-events');
67
+ }
68
+ miniMonth.appendChild(dayEl);
69
+ }
70
+ }
71
+ card.appendChild(miniMonth);
72
+ return card;
73
+ }
74
+ update(state) {
75
+ this.state = state;
76
+ // Year view is mostly static, re-render fully
77
+ this.render();
78
+ }
79
+ destroy() {
80
+ this.clearContainer();
81
+ }
82
+ }
83
+ //# sourceMappingURL=year-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"year-view.js","sourceRoot":"","sources":["../../../../../libs/mp-scheduler-wc/src/views/year-view.ts"],"names":[],"mappings":"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"}