Skip to content

Commit 2f7aac6

Browse files
Merge branch '25_1' into 25_1_demos_vue_ts_check
2 parents 96a5b5e + bdc6b3f commit 2f7aac6

32 files changed

Lines changed: 267 additions & 670 deletions

packages/devextreme/js/__internal/scheduler/appointments/appointment/m_appointment.ts

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import {
2424
REDUCED_APPOINTMENT_PARTS_CLASSES,
2525
} from '../../m_classes';
2626
import { getRecurrenceProcessor } from '../../m_recurrence';
27+
import type { SubscribeKey, SubscribeMethods } from '../../m_subscribes';
2728
import type { AppointmentDataAccessor } from '../../utils/data_accessor/appointment_data_accessor';
2829
import type { AppointmentProperties } from './m_types';
2930
import {
@@ -72,20 +73,24 @@ export class Appointment extends DOMComponent<AppointmentProperties> {
7273
});
7374
}
7475

75-
notifyObserver(subject, args) {
76-
const observer = this.option('observer');
77-
if (observer) {
78-
observer.fire(subject, args);
79-
}
76+
notifyObserver<Subject extends SubscribeKey>(
77+
funcName: Subject,
78+
args: Parameters<SubscribeMethods[Subject]>,
79+
): void {
80+
this.invoke(funcName, ...args);
8081
}
8182

82-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
83-
invoke(funcName: string) {
84-
const observer = this.option('observer');
83+
invoke<Subject extends SubscribeKey>(
84+
funcName: Subject,
85+
...args: Parameters<SubscribeMethods[Subject]>
86+
): ReturnType<SubscribeMethods[Subject]> | undefined {
87+
const notifyScheduler = this.option('notifyScheduler');
8588

86-
if (observer) {
87-
return observer.fire.apply(observer, arguments);
89+
if (!notifyScheduler) {
90+
return undefined;
8891
}
92+
93+
return notifyScheduler.invoke(funcName, ...args);
8994
}
9095

9196
_optionChanged(args) {

packages/devextreme/js/__internal/scheduler/appointments/appointment/m_types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { Orientation } from '@js/common';
2+
import type NotifyScheduler from '@ts/scheduler/base/m_widget_notify_scheduler';
23
import type { TimeZoneCalculator } from '@ts/scheduler/r1/timezone_calculator/calculator';
34
import type { SafeAppointment } from '@ts/scheduler/types';
45
import type { AppointmentDataAccessor } from '@ts/scheduler/utils/data_accessor/appointment_data_accessor';
@@ -8,7 +9,7 @@ export interface AppointmentProperties extends Record<string, unknown> {
89
data: SafeAppointment;
910
groupIndex?: number;
1011
groupTexts: string[];
11-
observer: any;
12+
notifyScheduler: NotifyScheduler | undefined;
1213
geometry: any;
1314
direction: Orientation;
1415
allowResize: boolean;

packages/devextreme/js/__internal/scheduler/appointments/m_appointment_collection.ts

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ class SchedulerAppointments extends CollectionWidget {
8686
return this.invoke('isVirtualScrolling');
8787
}
8888

89-
get appointmentDataProvider() {
90-
return this.option('getAppointmentDataProvider')();
89+
get appointmentDataSource() {
90+
return this.option('getAppointmentDataSource')();
9191
}
9292

9393
get dataAccessors(): AppointmentDataAccessor {
@@ -104,18 +104,17 @@ class SchedulerAppointments extends CollectionWidget {
104104
}
105105

106106
notifyObserver(subject, args) {
107-
const observer: any = this.option('observer');
108-
if (observer) {
109-
observer.fire(subject, args);
107+
const notifyScheduler: any = this.option('notifyScheduler');
108+
if (notifyScheduler) {
109+
notifyScheduler.invoke(subject, args);
110110
}
111111
}
112112

113-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
114113
invoke(funcName: string, ...args) {
115-
const observer: any = this.option('observer');
114+
const notifyScheduler: any = this.option('notifyScheduler');
116115

117-
if (observer) {
118-
return observer.fire.apply(observer, arguments);
116+
if (notifyScheduler) {
117+
return notifyScheduler.invoke(funcName, ...args);
119118
}
120119
}
121120

@@ -247,7 +246,7 @@ class SchedulerAppointments extends CollectionWidget {
247246
): ViewModelDiff[] {
248247
const elementsInRenderOrder = previousValue
249248
.map(({ sortedIndex }) => this.renderedElementsBySortedIndex[sortedIndex]);
250-
const diff = getViewModelDiff(previousValue, value, this.appointmentDataProvider);
249+
const diff = getViewModelDiff(previousValue, value, this.appointmentDataSource);
251250
diff
252251
.filter((item) => !isNeedToAdd(item))
253252
.forEach((item, index) => {
@@ -645,7 +644,7 @@ class SchedulerAppointments extends CollectionWidget {
645644
data: settings.itemData,
646645
groupIndex: settings.groupIndex,
647646
groupTexts: getGroupTexts(groups, groupsLeafs, resourceById, settings.groupIndex),
648-
observer: this.option('observer'),
647+
notifyScheduler: this.option('notifyScheduler'),
649648
geometry: settings,
650649
direction: settings.direction || 'vertical',
651650
allowResize: false,
@@ -675,7 +674,7 @@ class SchedulerAppointments extends CollectionWidget {
675674
data: settings.itemData,
676675
groupIndex: settings.groupIndex,
677676
groupTexts: getGroupTexts(groups, groupsLeafs, resourceById, settings.groupIndex),
678-
observer: this.option('observer'),
677+
notifyScheduler: this.option('notifyScheduler'),
679678
geometry: settings,
680679
direction: settings.direction || 'vertical',
681680
allowResize,

packages/devextreme/js/__internal/scheduler/appointments/utils/get_view_model_diff.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { equalByValue } from '@js/core/utils/common';
22

33
import type { SafeAppointment } from '../../types';
4-
import type { AppointmentDataProvider } from '../../view_model/generate_view_model/data_provider/m_appointment_data_provider';
4+
import type { AppointmentDataSource } from '../../view_model/generate_view_model/data_provider/m_appointment_data_source';
55
import type { AppointmentViewModelPlain } from '../../view_model/generate_view_model/types';
66
import type { DiffItem } from './get_arrays_diff';
77
import { getArraysDiff } from './get_arrays_diff';
@@ -41,28 +41,28 @@ const getObjectToCompare = (
4141

4242
const isDataChanged = (
4343
data: SafeAppointment,
44-
appointmentDataProvider: AppointmentDataProvider,
44+
appointmentDataSource: AppointmentDataSource,
4545
): boolean => {
46-
const updatedData = appointmentDataProvider.getUpdatedAppointment();
46+
const updatedData = appointmentDataSource.getUpdatedAppointment();
4747

48-
return updatedData === data || appointmentDataProvider
48+
return updatedData === data || appointmentDataSource
4949
.getUpdatedAppointmentKeys()
5050
.some((item) => data[item.key] === item.value);
5151
};
5252

53-
const compareViewModel = (appointmentDataProvider: AppointmentDataProvider) => (
53+
const compareViewModel = (appointmentDataSource: AppointmentDataSource) => (
5454
viewModelOld: AppointmentViewModelPlain,
5555
viewModelNext: AppointmentViewModelPlain,
5656
): boolean => viewModelOld.itemData === viewModelNext.itemData
57-
&& !isDataChanged(viewModelNext.itemData, appointmentDataProvider)
57+
&& !isDataChanged(viewModelNext.itemData, appointmentDataSource)
5858
&& equalByValue(getObjectToCompare(viewModelOld), getObjectToCompare(viewModelNext));
5959

6060
export const getViewModelDiff = (
6161
viewModelOld: AppointmentViewModelPlain[],
6262
viewModelNext: AppointmentViewModelPlain[],
63-
appointmentDataProvider: AppointmentDataProvider,
63+
appointmentDataSource: AppointmentDataSource,
6464
): DiffItem<AppointmentViewModelPlain, AppointmentViewModelPlain>[] => getArraysDiff(
6565
viewModelOld,
6666
viewModelNext,
67-
compareViewModel(appointmentDataProvider),
67+
compareViewModel(appointmentDataSource),
6868
);
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import type Scheduler from '../m_scheduler';
2+
import type { SubscribeKey, SubscribeMethods } from '../m_subscribes';
3+
4+
class NotifyScheduler {
5+
scheduler: Scheduler;
6+
7+
constructor({ scheduler }: { scheduler: Scheduler }) {
8+
this.scheduler = scheduler;
9+
}
10+
11+
invoke<Subject extends SubscribeKey>(
12+
funcName: Subject,
13+
...args: Parameters<SubscribeMethods[Subject]>
14+
): ReturnType<SubscribeMethods[Subject]> {
15+
return this.scheduler.fire(funcName, ...args);
16+
}
17+
}
18+
19+
export default NotifyScheduler;

packages/devextreme/js/__internal/scheduler/base/m_widget_observer.ts

Lines changed: 0 additions & 21 deletions
This file was deleted.

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

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)