Skip to content

Commit a89fa96

Browse files
authored
Scheduler - Implement getOccurrences() (#32630)
1 parent 03e8239 commit a89fa96

6 files changed

Lines changed: 574 additions & 33 deletions

File tree

packages/devextreme/js/__internal/scheduler/m_scheduler.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ import { setAppointmentGroupValues } from './utils/resource_manager/appointment_
7878
import { createResourceEditorModel } from './utils/resource_manager/popup_utils';
7979
import { ResourceManager } from './utils/resource_manager/resource_manager';
8080
import AppointmentLayoutManager from './view_model/appointments_layout_manager';
81+
import type { Occurrence } from './view_model/filtration/get_occurrences';
8182
import { AppointmentDataSource } from './view_model/m_appointment_data_source';
8283
import type { AppointmentViewModelPlain } from './view_model/types';
8384
import SchedulerAgenda from './workspaces/m_agenda';
@@ -2148,6 +2149,10 @@ class Scheduler extends SchedulerOptionsBaseWidget {
21482149
}
21492150
}
21502151

2152+
getOccurrences(startDate: Date, endDate: Date, rawAppointments: Appointment[]): Occurrence[] {
2153+
return this._layoutManager.getOccurrences(startDate, endDate, rawAppointments);
2154+
}
2155+
21512156
getFirstDayOfWeek(): FirstDayOfWeek {
21522157
return isDefined(this.getViewOption('firstDayOfWeek'))
21532158
? this.getViewOption('firstDayOfWeek') as FirstDayOfWeek
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { mockAppointmentDataAccessor } from '../../__mock__/appointment_data_accessor.mock';
2+
import { mockTimeZoneCalculator } from '../../__mock__/timezone_calculator.mock';
3+
import type Scheduler from '../../m_scheduler';
4+
import { ResourceManager } from '../../utils/resource_manager/resource_manager';
5+
6+
export const getSchedulerMock = ({
7+
type,
8+
startDayHour,
9+
endDayHour,
10+
offsetMinutes,
11+
resourceManager,
12+
dateRange,
13+
skippedDays,
14+
}: {
15+
type: string;
16+
startDayHour: number;
17+
endDayHour: number;
18+
offsetMinutes: number;
19+
resourceManager?: ResourceManager;
20+
skippedDays?: number[];
21+
dateRange?: Date[];
22+
}): Scheduler => ({
23+
timeZoneCalculator: mockTimeZoneCalculator,
24+
currentView: { type, skippedDays: skippedDays ?? [] },
25+
getWorkSpace: () => ({
26+
getDateRange: () => dateRange ?? [
27+
new Date(2000, 0, 10, startDayHour),
28+
new Date(2000, 0, 11, endDayHour),
29+
],
30+
}),
31+
getTimeZone: () => 'Etc/UTC',
32+
getViewOption: (name: string) => ({
33+
startDayHour,
34+
endDayHour,
35+
allDayPanelMode: 'allDay',
36+
cellDuration: 30,
37+
}[name]),
38+
option: (name: string) => ({ firstDayOfWeek: 0, showAllDayPanel: true }[name]),
39+
getViewOffsetMs: () => offsetMinutes * 60_000,
40+
resourceManager: resourceManager ?? new ResourceManager([]),
41+
_dataAccessors: mockAppointmentDataAccessor,
42+
}) as unknown as Scheduler;

0 commit comments

Comments
 (0)