Skip to content

Commit 2f42b98

Browse files
Merge branch '26_1' into 26_1_T1327666
2 parents 41da767 + 70580ef commit 2f42b98

17 files changed

Lines changed: 281 additions & 298 deletions

packages/devextreme/eslint-scheduler-allowlist.mjs

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -66,23 +66,6 @@ const schedulerR1Overrides = [
6666
];
6767

6868
const schedulerLegacyMembers = [
69-
// workspaces/m_work_space.ts
70-
'_$allDayPanel',
71-
'_$dateTable',
72-
'_$dateTableScrollableContent',
73-
'_$flexContainer',
74-
'_$groupTable',
75-
'_$headerPanel',
76-
'_$headerPanelContainer',
77-
'_$thead',
78-
'_dateTableScrollable',
79-
'_getCellCount',
80-
'_getGroupCount',
81-
'_groupedStrategy',
82-
'_isHorizontalGroupedWorkSpace',
83-
'_shader',
84-
'_sidebarScrollable',
85-
8669
// m_scheduler.ts
8770
'_appointments',
8871
'_compactAppointmentsHelper',

packages/devextreme/js/__internal/scheduler/__tests__/workspace.base.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ describe('scheduler workspace skipped days support', () => {
215215
});
216216

217217
expect(workspace.getStartViewDate()).toEqual(new Date(2026, 2, 29));
218-
expect((workspace as any)._getCellCount()).toBe(7);
218+
expect((workspace as any).getCellCount()).toBe(7);
219219
});
220220

221221
it('should use custom skippedDays in work week runtime layout', () => {
@@ -226,7 +226,7 @@ describe('scheduler workspace skipped days support', () => {
226226
});
227227

228228
expect(workspace.getStartViewDate()).toEqual(new Date(2026, 2, 29));
229-
expect((workspace as any)._getCellCount()).toBe(6);
229+
expect((workspace as any).getCellCount()).toBe(6);
230230
});
231231

232232
it('should skip configured hidden days when incrementing timeline header dates', () => {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ const subscribes = {
233233
},
234234

235235
getGroupCount() {
236-
return this._workSpace._getGroupCount();
236+
return this._workSpace.getGroupCount();
237237
},
238238

239239
// TODO<Appointments>: delete this method when old impl is removed

packages/devextreme/js/__internal/scheduler/shaders/current_time_shader.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type SchedulerWorkSpace from '../workspaces/m_work_space';
66
const DATE_TIME_SHADER_CLASS = 'dx-scheduler-date-time-shader';
77

88
class CurrentTimeShader {
9-
protected $container = this.workSpace._dateTableScrollable.$content();
9+
protected $container = this.workSpace.getScrollable().$content();
1010

1111
protected shader!: dxElementWrapper[];
1212

@@ -15,10 +15,10 @@ class CurrentTimeShader {
1515
constructor(protected workSpace: SchedulerWorkSpace) {
1616
}
1717

18-
render(): void {
18+
render(isHorizontalGroupedWorkSpace: boolean, groupCount: number, cellCount: number): void {
1919
this.initShaderElements();
2020

21-
this.renderShader();
21+
this.renderShader(isHorizontalGroupedWorkSpace, groupCount, cellCount);
2222

2323
this.shader.forEach((shader) => {
2424
this.$container.append(shader);
@@ -31,7 +31,8 @@ class CurrentTimeShader {
3131
this.shader.push(this.$shader);
3232
}
3333

34-
renderShader(): void {}
34+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
35+
renderShader(isHorizontalGroupedWorkSpace: boolean, groupCount: number, cellCount: number):void {}
3536

3637
createShader(): dxElementWrapper {
3738
return $('<div>').addClass(DATE_TIME_SHADER_CLASS);

packages/devextreme/js/__internal/scheduler/shaders/current_time_shader_horizontal.ts

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,17 @@ import { setWidth } from '@js/core/utils/size';
55
import CurrentTimeShader from './current_time_shader';
66

77
class HorizontalCurrentTimeShader extends CurrentTimeShader {
8-
renderShader(): void {
9-
const groupCount = this.workSpace._isHorizontalGroupedWorkSpace()
10-
? this.workSpace._getGroupCount()
11-
: 1;
8+
renderShader(isHorizontalGroupedWorkSpace: boolean, groupCount: number, cellCount: number): void {
9+
const effectiveGroupCount = isHorizontalGroupedWorkSpace ? groupCount : 1;
1210

13-
for (let i = 0; i < groupCount; i += 1) {
11+
for (let i = 0; i < effectiveGroupCount; i += 1) {
1412
const isFirstShader = i === 0;
1513
const $shader = isFirstShader ? this.$shader : this.createShader();
1614

1715
if (this.workSpace.isGroupedByDate()) {
18-
this.customizeGroupedByDateShader($shader, i);
16+
this.customizeGroupedByDateShader($shader, i, groupCount, cellCount);
1917
} else {
20-
this.customizeShader($shader, i);
18+
this.customizeShader($shader, i, cellCount);
2119
}
2220

2321
if (!isFirstShader) {
@@ -26,15 +24,19 @@ class HorizontalCurrentTimeShader extends CurrentTimeShader {
2624
}
2725
}
2826

29-
private customizeShader($shader: dxElementWrapper, groupIndex: number): void {
27+
private customizeShader(
28+
$shader: dxElementWrapper,
29+
groupIndex: number,
30+
dateTableCellCount: number,
31+
): void {
3032
// @ts-expect-error
3133
const shaderWidth = this.workSpace.getIndicationWidth() as number;
3234

3335
this.applyShaderWidth($shader, shaderWidth);
3436

3537
if (groupIndex >= 1) {
3638
const { workSpace } = this;
37-
const indicationWidth = workSpace._getCellCount() * workSpace.getCellWidth();
39+
const indicationWidth = dateTableCellCount * workSpace.getCellWidth();
3840
$shader.css('left', indicationWidth);
3941
} else {
4042
$shader.css('left', 0);
@@ -48,11 +50,16 @@ class HorizontalCurrentTimeShader extends CurrentTimeShader {
4850
}
4951
}
5052

51-
private customizeGroupedByDateShader($shader: dxElementWrapper, groupIndex: number): void {
53+
private customizeGroupedByDateShader(
54+
$shader: dxElementWrapper,
55+
groupIndex: number,
56+
shaderGroupCount: number,
57+
dateTableCellCount: number,
58+
): void {
5259
// @ts-expect-error
53-
const cellCount = this.workSpace.getIndicationCellCount() as number;
54-
const integerPart = Math.floor(cellCount);
55-
const fractionPart = cellCount - integerPart;
60+
const indicationCellCount = this.workSpace.getIndicationCellCount() as number;
61+
const integerPart = Math.floor(indicationCellCount);
62+
const fractionPart = indicationCellCount - integerPart;
5663
const isFirstShaderPart = groupIndex === 0;
5764
const { workSpace } = this;
5865
const shaderWidth = isFirstShaderPart
@@ -64,9 +71,9 @@ class HorizontalCurrentTimeShader extends CurrentTimeShader {
6471
this.applyShaderWidth($shader, shaderWidth);
6572

6673
if (isFirstShaderPart) {
67-
shaderLeft = workSpace._getCellCount() * workSpace.getCellWidth() * groupIndex;
74+
shaderLeft = dateTableCellCount * workSpace.getCellWidth() * groupIndex;
6875
} else {
69-
shaderLeft = workSpace.getCellWidth() * integerPart * workSpace._getGroupCount()
76+
shaderLeft = workSpace.getCellWidth() * integerPart * shaderGroupCount
7077
+ groupIndex * workSpace.getCellWidth();
7178
}
7279

packages/devextreme/js/__internal/scheduler/shaders/current_time_shader_vertical.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import { setHeight, setWidth } from '@js/core/utils/size';
44
import CurrentTimeShader from './current_time_shader';
55

66
const DATE_TIME_SHADER_ALL_DAY_CLASS = 'dx-scheduler-date-time-shader-all-day';
7+
8+
const ALL_DAY_PANEL_CLASS = 'dx-scheduler-all-day-panel';
9+
710
const DATE_TIME_SHADER_TOP_CLASS = 'dx-scheduler-date-time-shader-top';
811
const DATE_TIME_SHADER_BOTTOM_CLASS = 'dx-scheduler-date-time-shader-bottom';
912

@@ -14,7 +17,8 @@ class VerticalCurrentTimeShader extends CurrentTimeShader {
1417

1518
private $allDayIndicator!: dxElementWrapper;
1619

17-
renderShader(): void {
20+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
21+
renderShader(isHorizontalGroupedWorkSpace: boolean, groupCount: number, cellCount: number): void {
1822
let shaderHeight = this.getShaderHeight();
1923
const maxHeight = this.getShaderMaxHeight();
2024
const isSolidShader = shaderHeight > maxHeight;
@@ -24,7 +28,6 @@ class VerticalCurrentTimeShader extends CurrentTimeShader {
2428
}
2529

2630
setHeight(this.$shader, shaderHeight);
27-
const groupCount = this.workSpace._getGroupCount() || 1;
2831

2932
if (this.workSpace.isGroupedByDate()) {
3033
this.renderGroupedByDateShaderParts(groupCount, shaderHeight, maxHeight, isSolidShader);
@@ -125,7 +128,10 @@ class VerticalCurrentTimeShader extends CurrentTimeShader {
125128
setWidth(this.$allDayIndicator, shaderWidth);
126129
this.$allDayIndicator.css('left', this.getShaderOffset(i, shaderWidth));
127130

128-
this.workSpace._$allDayPanel.prepend(this.$allDayIndicator);
131+
const $allDayPanel = this.workSpace.$element().find(`.${ALL_DAY_PANEL_CLASS}`);
132+
if ($allDayPanel.length) {
133+
$allDayPanel.first().prepend(this.$allDayIndicator);
134+
}
129135
}
130136
}
131137

@@ -152,9 +158,7 @@ class VerticalCurrentTimeShader extends CurrentTimeShader {
152158
clean(): void {
153159
super.clean();
154160

155-
if (this.workSpace?._$allDayPanel) {
156-
this.workSpace._$allDayPanel.find(`.${DATE_TIME_SHADER_ALL_DAY_CLASS}`).remove();
157-
}
161+
this.workSpace?.$element().find(`.${DATE_TIME_SHADER_ALL_DAY_CLASS}`).remove();
158162
}
159163
}
160164

packages/devextreme/js/__internal/scheduler/workspaces/m_agenda.ts

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,14 @@ class SchedulerAgenda extends WorkSpace {
8686
break;
8787
case 'groups':
8888
if (!value?.length) {
89-
if (this._$groupTable) {
90-
this._$groupTable.remove();
91-
this._$groupTable = null;
89+
if (this.$groupTable) {
90+
this.$groupTable.remove();
91+
this.$groupTable = null;
9292
this.detachGroupCountClass();
9393
}
94-
} else if (!this._$groupTable) {
94+
} else if (!this.$groupTable) {
9595
this.initGroupTable();
96-
this._dateTableScrollable.$content().prepend(this._$groupTable);
96+
this.$dateTableScrollable.$content().prepend(this.$groupTable);
9797
}
9898
super._optionChanged(args);
9999
break;
@@ -124,7 +124,7 @@ class SchedulerAgenda extends WorkSpace {
124124
return this.option('agendaDuration') as number;
125125
}
126126

127-
_getCellCount() {
127+
getCellCount() {
128128
return 1;
129129
}
130130

@@ -139,15 +139,15 @@ class SchedulerAgenda extends WorkSpace {
139139
protected override initWorkSpaceUnits() {
140140
this.initGroupTable();
141141
this.$timePanel = $('<table>').attr('aria-hidden', true).addClass(TIME_PANEL_CLASS);
142-
this._$dateTable = $('<table>').attr('aria-hidden', true).addClass(DATE_TABLE_CLASS);
143-
this._$dateTableScrollableContent = $('<div>').addClass('dx-scheduler-date-table-scrollable-content');
142+
this.$dateTable = $('<table>').attr('aria-hidden', true).addClass(DATE_TABLE_CLASS);
143+
this.$dateTableScrollableContent = $('<div>').addClass('dx-scheduler-date-table-scrollable-content');
144144
this.$dateTableContainer = $('<div>').addClass('dx-scheduler-date-table-container');
145145
}
146146

147147
private initGroupTable() {
148148
const groups = this.option('groups');
149149
if (groups?.length) {
150-
this._$groupTable = $('<table>').attr('aria-hidden', true).addClass(GROUP_TABLE_CLASS);
150+
this.$groupTable = $('<table>').attr('aria-hidden', true).addClass(GROUP_TABLE_CLASS);
151151
}
152152
}
153153

@@ -169,22 +169,22 @@ class SchedulerAgenda extends WorkSpace {
169169
}
170170
this.rows = rows;
171171

172-
if (this._$groupTable) {
172+
if (this.$groupTable) {
173173
cellTemplates = this.renderGroupHeader();
174174
this.setGroupHeaderCellsHeight();
175175
}
176176

177177
this.renderTimePanel();
178178
this.renderDateTable();
179179
this.applyCellTemplates(cellTemplates);
180-
this._dateTableScrollable.update();
180+
this.$dateTableScrollable.update();
181181
}
182182

183183
private renderNoData() {
184184
this.$noDataContainer = $('<div>').addClass(NODATA_CONTAINER_CLASS)
185185
.html(this.option('noDataText') as any);
186186

187-
this._dateTableScrollable.$content().append(this.$noDataContainer);
187+
this.$dateTableScrollable.$content().append(this.$noDataContainer);
188188
}
189189

190190
protected override setTableSizes() { return noop(); }
@@ -246,7 +246,7 @@ class SchedulerAgenda extends WorkSpace {
246246
}
247247

248248
protected override getGroupHeaderContainer() {
249-
return this._$groupTable;
249+
return this.$groupTable;
250250
}
251251

252252
protected override makeGroupRows() {
@@ -306,11 +306,11 @@ class SchedulerAgenda extends WorkSpace {
306306
}
307307

308308
protected override cleanView() {
309-
this._$dateTable.empty();
309+
this.$dateTable.empty();
310310
this.$timePanel.empty();
311311

312-
if (this._$groupTable) {
313-
this._$groupTable.empty();
312+
if (this.$groupTable) {
313+
this.$groupTable.empty();
314314
}
315315

316316
if (this.$noDataContainer) {
@@ -326,20 +326,20 @@ class SchedulerAgenda extends WorkSpace {
326326
}
327327

328328
protected override createWorkSpaceStaticElements() {
329-
this.$dateTableContainer.append(this._$dateTable);
330-
this._dateTableScrollable.$content().append(this._$dateTableScrollableContent);
329+
this.$dateTableContainer.append(this.$dateTable);
330+
this.$dateTableScrollable.$content().append(this.$dateTableScrollableContent);
331331

332-
if (this._$groupTable) {
333-
this._$dateTableScrollableContent.prepend(this._$groupTable);
332+
if (this.$groupTable) {
333+
this.$dateTableScrollableContent.prepend(this.$groupTable);
334334
}
335335

336-
this._$dateTableScrollableContent.append(this.$timePanel, this.$dateTableContainer);
337-
this.$element().append(this._dateTableScrollable.$element());
336+
this.$dateTableScrollableContent.append(this.$timePanel, this.$dateTableContainer);
337+
this.$element().append(this.$dateTableScrollable.$element());
338338
}
339339

340340
protected override renderDateTable() {
341341
this.renderTableBody({
342-
container: getPublicElement(this._$dateTable),
342+
container: getPublicElement(this.$dateTable),
343343
rowClass: DATE_TABLE_ROW_CLASS,
344344
cellClass: this.getDateTableCellClass(),
345345
});

0 commit comments

Comments
 (0)