From fc314205d613e2c3cc9f4beb9dad17c1135cee1b Mon Sep 17 00:00:00 2001 From: Eldar Iusupzhanov Date: Thu, 15 Jan 2026 21:57:37 +0800 Subject: [PATCH] fix & test --- ...scrolling-week-end (fluent.blue.light).png | Bin 0 -> 27411 bytes ...ent-time-indicator (fluent.blue.light).png | Bin 0 -> 33498 bytes ...rolling-week-start (fluent.blue.light).png | Bin 0 -> 29530 bytes ...ent-time-indicator (fluent.blue.light).png | Bin 0 -> 34899 bytes .../timeIndication/shaderVirtualScrolling.ts | 106 ++++++++++++++++++ .../shaders/m_current_time_shader_vertical.ts | 8 +- .../scheduler/workspaces/m_work_space.ts | 25 ----- ..._work_space_grouped_strategy_horizontal.ts | 10 +- .../m_work_space_grouped_strategy_vertical.ts | 2 +- .../workspaces/m_work_space_indicator.ts | 31 +++-- .../currentTimeIndicator.tests.js | 8 +- 11 files changed, 135 insertions(+), 55 deletions(-) create mode 100644 e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-virtual-scrolling-week-end (fluent.blue.light).png create mode 100644 e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-virtual-scrolling-week-end-with-current-time-indicator (fluent.blue.light).png create mode 100644 e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-virtual-scrolling-week-start (fluent.blue.light).png create mode 100644 e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-virtual-scrolling-week-start-with-current-time-indicator (fluent.blue.light).png create mode 100644 e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/shaderVirtualScrolling.ts diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-virtual-scrolling-week-end (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-virtual-scrolling-week-end (fluent.blue.light).png new file mode 100644 index 0000000000000000000000000000000000000000..c0d53fa47e1670894ba7cdc4a777abc93d6cf888 GIT binary patch literal 27411 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 literal 0 HcmV?d00001 diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-virtual-scrolling-week-start (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-virtual-scrolling-week-start (fluent.blue.light).png new file mode 100644 index 0000000000000000000000000000000000000000..4ba67ea48a26c22dc468370b4839508f130f1e13 GIT binary patch literal 29530 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 literal 0 HcmV?d00001 diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-virtual-scrolling-week-start-with-current-time-indicator (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-virtual-scrolling-week-start-with-current-time-indicator (fluent.blue.light).png new file mode 100644 index 0000000000000000000000000000000000000000..ef5ceaeb702842a9f0e485b76bcff0107981f0e0 GIT binary patch literal 34899 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 WHYCJimzXG6=Hz(b+sbcFp8G!-h_FZi literal 0 HcmV?d00001 diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/shaderVirtualScrolling.ts b/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/shaderVirtualScrolling.ts new file mode 100644 index 000000000000..7df681256759 --- /dev/null +++ b/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/shaderVirtualScrolling.ts @@ -0,0 +1,106 @@ +import { createScreenshotsComparer } from 'devextreme-screenshot-comparer'; +import Scheduler from 'devextreme-testcafe-models/scheduler'; +import { insertStylesheetRulesToPage } from '../../../../../helpers/domUtils'; +import { createWidget } from '../../../../../helpers/createWidget'; +import url from '../../../../../helpers/getPageUrl'; +import { testScreenshot } from '../../../../../helpers/themeUtils'; + +fixture.disablePageReloads`Scheduler: Current Time Indication: Shader with Virtual Scrolling` + .page(url(__dirname, '../../../../container.html')) + .beforeEach(async (t) => { + await t.resizeWindow(2560, 600); + }); + +const style = ` +.dx-scheduler-date-time-shader-top::before, +.dx-scheduler-date-time-shader-bottom::before, +.dx-scheduler-timeline .dx-scheduler-date-time-shader::before, +.dx-scheduler-date-time-shader-all-day { + background-color: red !important; +}`; + +const resources = [ + { text: 'Room 1', id: 1, color: '#cb6bb2' }, + { text: 'Room 2', id: 2, color: '#56ca85' }, + { text: 'Room 3', id: 3, color: '#1e90ff' }, + { text: 'Room 4', id: 4, color: '#ff9747' }, + { text: 'Room 5', id: 5, color: '#ff6a00' }, + { text: 'Room 6', id: 6, color: '#ffc0cb' }, +]; + +test('Should render shader correct with virtual scrolling without current time indicator', async (t) => { + const scheduler = new Scheduler('#container'); + const { takeScreenshot, compareResults } = createScreenshotsComparer(t); + + await testScreenshot( + t, + takeScreenshot, + 'shader-virtual-scrolling-week-start.png', + ); + + await scheduler.scrollTo(new Date(2025, 9, 15, 17, 30), { roomId: 6 }); + + await testScreenshot( + t, + takeScreenshot, + 'shader-virtual-scrolling-week-end.png', + ); + + await t.expect(compareResults.isValid()) + .ok(compareResults.errorMessages()); +}).before(async () => { + await insertStylesheetRulesToPage(style); + + await createWidget('dxScheduler', { + dataSource: [], + currentView: 'week', + views: ['week'], + groups: ['roomId'], + resources: [{ fieldExpr: 'roomId', dataSource: resources, label: 'Room' }], + startDayHour: 8, + endDayHour: 18, + currentDate: new Date(2025, 9, 15), + height: 400, + shadeUntilCurrentTime: true, + scrolling: { mode: 'virtual' }, + }); +}); + +test('Should render shader correctly with virtual scrolling and current time indicator', async (t) => { + const scheduler = new Scheduler('#container'); + const { takeScreenshot, compareResults } = createScreenshotsComparer(t); + + await testScreenshot( + t, + takeScreenshot, + 'shader-virtual-scrolling-week-start-with-current-time-indicator.png', + ); + + await scheduler.scrollTo(new Date(2025, 9, 15, 17, 30), { roomId: 6 }); + + await testScreenshot( + t, + takeScreenshot, + 'shader-virtual-scrolling-week-end-with-current-time-indicator.png', + ); + + await t.expect(compareResults.isValid()) + .ok(compareResults.errorMessages()); +}).before(async () => { + await insertStylesheetRulesToPage(style); + + await createWidget('dxScheduler', { + dataSource: [], + currentView: 'week', + views: ['week'], + groups: ['roomId'], + resources: [{ fieldExpr: 'roomId', dataSource: resources, label: 'Room' }], + startDayHour: 8, + endDayHour: 18, + currentDate: new Date(2025, 9, 15), + indicatorTime: new Date(2025, 9, 15, 17, 30), + height: 400, + shadeUntilCurrentTime: true, + scrolling: { mode: 'virtual' }, + }); +}); diff --git a/packages/devextreme/js/__internal/scheduler/shaders/m_current_time_shader_vertical.ts b/packages/devextreme/js/__internal/scheduler/shaders/m_current_time_shader_vertical.ts index 956306d8a26d..cca4af93001b 100644 --- a/packages/devextreme/js/__internal/scheduler/shaders/m_current_time_shader_vertical.ts +++ b/packages/devextreme/js/__internal/scheduler/shaders/m_current_time_shader_vertical.ts @@ -35,7 +35,7 @@ class VerticalCurrentTimeShader extends CurrentTimeShader { _renderShaderParts(groupCount, shaderHeight, maxHeight, isSolidShader) { for (let i = 0; i < groupCount; i++) { - const shaderWidth = this._getShaderWidth(i); + const shaderWidth = this._getShaderWidth(); this._renderTopShader(this._$shader, shaderHeight, shaderWidth, i); !isSolidShader && this._renderBottomShader(this._$shader, maxHeight, shaderHeight, shaderWidth, i); @@ -45,7 +45,7 @@ class VerticalCurrentTimeShader extends CurrentTimeShader { } _renderGroupedByDateShaderParts(groupCount, shaderHeight, maxHeight, isSolidShader) { - const shaderWidth = this._getShaderWidth(0); + const shaderWidth = this._getShaderWidth(); let bottomShaderWidth = shaderWidth - this._workSpace.getCellWidth(); if (shaderHeight < 0) { @@ -116,8 +116,8 @@ class VerticalCurrentTimeShader extends CurrentTimeShader { return this._workSpace.getGroupedStrategy().getShaderMaxHeight(); } - _getShaderWidth(i) { - return this._workSpace.getGroupedStrategy().getShaderWidth(i); + _getShaderWidth() { + return this._workSpace.getGroupedStrategy().getShaderWidth(); } clean() { diff --git a/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space.ts b/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space.ts index c1649f57b664..b3cf649aebcc 100644 --- a/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space.ts +++ b/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space.ts @@ -1563,31 +1563,6 @@ class SchedulerWorkSpace extends Widget { return DATE_TABLE_MIN_CELL_WIDTH; } - getRoundedCellWidth(groupIndex, startIndex, cellCount) { - if (groupIndex < 0 || !hasWindow()) { - return 0; - } - - const $row = (this.$element() as any).find(`.${DATE_TABLE_ROW_CLASS}`).eq(0); - let width = 0; - const $cells = $row.find(`.${DATE_TABLE_CELL_CLASS}`); - const totalCellCount = this._getCellCount() * groupIndex; - - cellCount = cellCount || this._getCellCount(); - - if (!isDefined(startIndex)) { - startIndex = totalCellCount; - } - - for (let i = startIndex; i < totalCellCount + cellCount; i++) { - const element = $($cells).eq(i).get(0); - const elementWidth = element ? getBoundingRect(element).width : 0; - width += elementWidth; - } - - return width / (totalCellCount + cellCount - startIndex); - } - // Mappings getCellWidth() { return getCellWidth(this.getDOMElementsMetaData()); diff --git a/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space_grouped_strategy_horizontal.ts b/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space_grouped_strategy_horizontal.ts index b5cea019dcc2..121ac7ce3712 100644 --- a/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space_grouped_strategy_horizontal.ts +++ b/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space_grouped_strategy_horizontal.ts @@ -142,17 +142,17 @@ class HorizontalGroupedStrategy { _calculateOffset(groupIndex) { const indicatorStartPosition = this._workSpace.getIndicatorOffset(groupIndex); - const offset = this._workSpace._getCellCount() * this._workSpace.getRoundedCellWidth(groupIndex - 1, 0) * groupIndex; + const offset = this._workSpace._getCellCount() * this._workSpace.getCellWidth() * groupIndex; return indicatorStartPosition + offset; } _calculateGroupByDateOffset(groupIndex) { - return this._workSpace.getIndicatorOffset(0) * this._workSpace._getGroupCount() + this._workSpace.getRoundedCellWidth(groupIndex - 1, 0) * groupIndex; + return this._workSpace.getIndicatorOffset(0) * this._workSpace._getGroupCount() + this._workSpace.getCellWidth() * groupIndex; } getShaderOffset(i, width) { - const offset = this._workSpace._getCellCount() * this._workSpace.getRoundedCellWidth(i - 1) * i; + const offset = this._workSpace._getCellCount() * this._workSpace.getCellWidth() * i; return this._workSpace.option('rtlEnabled') ? getBoundingRect(this._workSpace._dateTableScrollable.$content().get(0)).width - offset - this._workSpace.getTimePanelWidth() - width : offset; } @@ -170,8 +170,8 @@ class HorizontalGroupedStrategy { return getBoundingRect(this._workSpace._dateTableScrollable.$content().get(0)).height; } - getShaderWidth(i) { - return this._workSpace.getIndicationWidth(i); + getShaderWidth() { + return this._workSpace.getIndicationWidth(); } getScrollableScrollTop(allDay) { diff --git a/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space_grouped_strategy_vertical.ts b/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space_grouped_strategy_vertical.ts index 1c3e6597bdcb..8edcbf3a854b 100644 --- a/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space_grouped_strategy_vertical.ts +++ b/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space_grouped_strategy_vertical.ts @@ -159,7 +159,7 @@ class VerticalGroupedStrategy { } getShaderWidth() { - return this._workSpace.getIndicationWidth(0); + return this._workSpace.getIndicationWidth(); } getScrollableScrollTop() { diff --git a/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space_indicator.ts b/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space_indicator.ts index 4a2743ec2ede..8a4873193229 100644 --- a/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space_indicator.ts +++ b/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space_indicator.ts @@ -107,31 +107,30 @@ class SchedulerWorkSpaceIndicator extends SchedulerWorkSpace { return true; } - getIndicationWidth(groupIndex) { - const maxWidth = this.getCellWidth() * this._getCellCount(); + getIndicationWidth() { + const cellCount = this._getCellCount(); + const cellSpan = Math.min(this._getIndicatorDaysSpan(), cellCount); + const width = cellSpan * this.getCellWidth(); + const maxWidth = this.getCellWidth() * cellCount; - let difference = this._getIndicatorDuration(); - if (difference > this._getCellCount()) { - difference = this._getCellCount(); - } - const width = difference * this.getRoundedCellWidth(groupIndex, groupIndex * this._getCellCount(), difference); - - return maxWidth < width ? maxWidth : width; + return Math.min(width, maxWidth); } - getIndicatorOffset(groupIndex) { - const difference = this._getIndicatorDuration() - 1; - const offset = difference * this.getRoundedCellWidth(groupIndex, groupIndex * this._getCellCount(), difference); + getIndicatorOffset() { + const cellSpan = this._getIndicatorDaysSpan() - 1; + const offset = cellSpan * this.getCellWidth(); return offset; } - _getIndicatorDuration() { + _getIndicatorDaysSpan(): number { const today = this._getToday(); - const firstViewDate = new Date(this.getStartViewDate()); - let timeDiff = today.getTime() - firstViewDate.getTime(); + const viewStartTime = this.getStartViewDate().getTime(); + let timeDiff = today.getTime() - viewStartTime; + if (this.option('type') === 'workWeek') { - timeDiff -= this._getWeekendsCount(Math.round(timeDiff / toMs('day'))) * toMs('day'); + const weekendDays = this._getWeekendsCount(Math.round(timeDiff / toMs('day'))) * toMs('day'); + timeDiff -= weekendDays; } return Math.ceil((timeDiff + 1) / toMs('day')); diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/currentTimeIndicator.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/currentTimeIndicator.tests.js index 96a6fb31730d..bb69c6c167aa 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/currentTimeIndicator.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/currentTimeIndicator.tests.js @@ -151,7 +151,7 @@ QUnit.module('DateTime indicator on Day View', () => { assert.equal($indicators.length, 2, 'Indicator count is correct'); assert.equal($indicators.eq(0).position().left, 0); assert.equal($indicators.eq(0).position().top, 9.5 * cellHeight); - assert.equal($indicators.eq(1).position().left, instance.getRoundedCellWidth(1)); + assert.equal($indicators.eq(1).position().left, instance.getCellWidth()); assert.equal($indicators.eq(1).position().top, 9.5 * cellHeight); }); @@ -174,7 +174,7 @@ QUnit.module('DateTime indicator on Day View', () => { assert.equal($indicators.length, 2, 'Indicator count is correct'); assert.equal($indicators.eq(0).position().left, 0); assert.equal($indicators.eq(0).position().top, 9.5 * cellHeight); - assert.equal($indicators.eq(1).position().left, instance.getRoundedCellWidth(1)); + assert.equal($indicators.eq(1).position().left, instance.getCellWidth()); assert.equal($indicators.eq(1).position().top, 9.5 * cellHeight); }); @@ -357,7 +357,7 @@ QUnit.module('DateTime indicator on Day View', () => { const $shader = $element.find('.' + SCHEDULER_DATE_TIME_SHADER_CLASS); const $cell = instance.$element().find('.dx-scheduler-date-table-cell').eq(0); const cellHeight = $cell.get(0).getBoundingClientRect().height; - const cellWidth = instance.getRoundedCellWidth(1); + const cellWidth = instance.getCellWidth(); assert.roughEqual(getOuterHeight($shader), 9.5 * cellHeight, 1, 'Shader has correct height'); assert.roughEqual(getOuterWidth($shader), 9 * cellWidth, 5, 'Shader has correct width'); @@ -574,7 +574,7 @@ QUnit.module('DateTime indicator on Day View, vertical grouping', () => { const $shader = $element.find('.' + SCHEDULER_DATE_TIME_SHADER_CLASS); const $cell = instance.$element().find('.dx-scheduler-date-table-cell').eq(0); const cellHeight = getOuterHeight($cell); - const cellWidth = instance.getRoundedCellWidth(0); + const cellWidth = instance.getCellWidth(); assert.roughEqual(getOuterHeight($shader), 10.5 * cellHeight, 1, 'Shader has correct height'); assert.roughEqual(getOuterWidth($shader), 3 * cellWidth + 100, 5, 'Shader has correct width');