Skip to content

Commit 43dd1a2

Browse files
authored
Revert "Scheduler: remove data prop in loader" (#31111)
1 parent 0cada28 commit 43dd1a2

File tree

8 files changed

+47
-26
lines changed

8 files changed

+47
-26
lines changed

packages/devextreme/js/__internal/scheduler/r1/utils/__tests__/base.test.ts

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -473,32 +473,32 @@ describe('base utils', () => {
473473
.toEqual({
474474
groupPanelItems: [[{
475475
...groupsBase[0].items[0],
476-
data: groupsBase[0].items[0],
476+
data: groupsBase[0].data[0],
477477
resourceName: groupsBase[0].resourceName,
478478
key: '0_group1_1',
479479
}, {
480480
...groupsBase[0].items[1],
481-
data: groupsBase[0].items[1],
481+
data: groupsBase[0].data[1],
482482
resourceName: groupsBase[0].resourceName,
483483
key: '0_group1_2',
484484
}], [{
485485
...groupsBase[1].items[0],
486-
data: groupsBase[1].items[0],
486+
data: groupsBase[1].data[0],
487487
resourceName: groupsBase[1].resourceName,
488488
key: '0_group2_1',
489489
}, {
490490
...groupsBase[1].items[1],
491-
data: groupsBase[1].items[1],
491+
data: groupsBase[1].data[1],
492492
resourceName: groupsBase[1].resourceName,
493493
key: '0_group2_2',
494494
}, {
495495
...groupsBase[1].items[0],
496-
data: groupsBase[1].items[0],
496+
data: groupsBase[1].data[0],
497497
resourceName: groupsBase[1].resourceName,
498498
key: '1_group2_1',
499499
}, {
500500
...groupsBase[1].items[1],
501-
data: groupsBase[1].items[1],
501+
data: groupsBase[1].data[1],
502502
resourceName: groupsBase[1].resourceName,
503503
key: '1_group2_2',
504504
}]],
@@ -522,12 +522,10 @@ describe('base utils', () => {
522522
.toEqual({
523523
groupPanelItems: [[{
524524
...groups[0].items[0],
525-
data: groups[0].items[0],
526525
resourceName: groups[0].resourceName,
527526
key: '0_group1_1',
528527
}, {
529528
...groups[0].items[1],
530-
data: groups[0].items[1],
531529
resourceName: groups[0].resourceName,
532530
key: '0_group1_2',
533531
}]],
@@ -553,7 +551,6 @@ describe('base utils', () => {
553551
.toEqual({
554552
groupPanelItems: [[{
555553
...groups[0].items[0],
556-
data: groups[0].items[0],
557554
resourceName: groups[0].resourceName,
558555
key: '0_group1_1',
559556
}]],
@@ -568,84 +565,84 @@ describe('base utils', () => {
568565
.toEqual({
569566
groupPanelItems: [[{
570567
...groupsBase[0].items[0],
571-
data: groupsBase[0].items[0],
568+
data: groupsBase[0].data[0],
572569
resourceName: groupsBase[0].resourceName,
573570
key: '0_group1_1_group_by_date_0',
574571
isFirstGroupCell: true,
575572
isLastGroupCell: false,
576573
}, {
577574
...groupsBase[0].items[1],
578-
data: groupsBase[0].items[1],
575+
data: groupsBase[0].data[1],
579576
resourceName: groupsBase[0].resourceName,
580577
key: '0_group1_2_group_by_date_0',
581578
isFirstGroupCell: false,
582579
isLastGroupCell: true,
583580
}, {
584581
...groupsBase[0].items[0],
585-
data: groupsBase[0].items[0],
582+
data: groupsBase[0].data[0],
586583
resourceName: groupsBase[0].resourceName,
587584
key: '0_group1_1_group_by_date_1',
588585
isFirstGroupCell: true,
589586
isLastGroupCell: false,
590587
}, {
591588
...groupsBase[0].items[1],
592-
data: groupsBase[0].items[1],
589+
data: groupsBase[0].data[1],
593590
resourceName: groupsBase[0].resourceName,
594591
key: '0_group1_2_group_by_date_1',
595592
isFirstGroupCell: false,
596593
isLastGroupCell: true,
597594
}], [{
598595
...groupsBase[1].items[0],
599-
data: groupsBase[1].items[0],
596+
data: groupsBase[1].data[0],
600597
resourceName: groupsBase[1].resourceName,
601598
key: '0_group2_1_group_by_date_0',
602599
isFirstGroupCell: true,
603600
isLastGroupCell: false,
604601
}, {
605602
...groupsBase[1].items[1],
606-
data: groupsBase[1].items[1],
603+
data: groupsBase[1].data[1],
607604
resourceName: groupsBase[1].resourceName,
608605
key: '0_group2_2_group_by_date_0',
609606
isFirstGroupCell: false,
610607
isLastGroupCell: false,
611608
}, {
612609
...groupsBase[1].items[0],
613-
data: groupsBase[1].items[0],
610+
data: groupsBase[1].data[0],
614611
resourceName: groupsBase[1].resourceName,
615612
key: '1_group2_1_group_by_date_0',
616613
isFirstGroupCell: false,
617614
isLastGroupCell: false,
618615
}, {
619616
...groupsBase[1].items[1],
620-
data: groupsBase[1].items[1],
617+
data: groupsBase[1].data[1],
621618
resourceName: groupsBase[1].resourceName,
622619
key: '1_group2_2_group_by_date_0',
623620
isFirstGroupCell: false,
624621
isLastGroupCell: true,
625622
}, {
626623
...groupsBase[1].items[0],
627-
data: groupsBase[1].items[0],
624+
data: groupsBase[1].data[0],
628625
resourceName: groupsBase[1].resourceName,
629626
key: '0_group2_1_group_by_date_1',
630627
isFirstGroupCell: true,
631628
isLastGroupCell: false,
632629
}, {
633630
...groupsBase[1].items[1],
634-
data: groupsBase[1].items[1],
631+
data: groupsBase[1].data[1],
635632
resourceName: groupsBase[1].resourceName,
636633
key: '0_group2_2_group_by_date_1',
637634
isFirstGroupCell: false,
638635
isLastGroupCell: false,
639636
}, {
640637
...groupsBase[1].items[0],
641-
data: groupsBase[1].items[0],
638+
data: groupsBase[1].data[0],
642639
resourceName: groupsBase[1].resourceName,
643640
key: '1_group2_1_group_by_date_1',
644641
isFirstGroupCell: false,
645642
isLastGroupCell: false,
646643
}, {
647644
...groupsBase[1].items[1],
648-
data: groupsBase[1].items[1],
645+
data: groupsBase[1].data[1],
649646
resourceName: groupsBase[1].resourceName,
650647
key: '1_group2_2_group_by_date_1',
651648
isFirstGroupCell: false,

packages/devextreme/js/__internal/scheduler/r1/utils/base.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,7 @@ export const getGroupPanelData = (
474474
.map((group) => {
475475
const result = [] as GroupRenderItem[];
476476
const {
477-
resourceName, resourceIndex, items,
477+
resourceName, resourceIndex, items, data,
478478
} = group;
479479

480480
for (let i = 0; i < repeatCount; i += 1) {
@@ -484,7 +484,7 @@ export const getGroupPanelData = (
484484
color,
485485
key: `${i}_${resourceIndex}_${stringifyId(id)}`,
486486
resourceName,
487-
data: items[index],
487+
data: data?.[index],
488488
}) as GroupRenderItem));
489489
}
490490

packages/devextreme/js/__internal/scheduler/utils/loader/loader.test.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,10 @@ describe('resource loader', () => {
3131

3232
await loader.load();
3333
expect(loader.items).toEqual(transformedData);
34+
expect(loader.data).toEqual(data);
3435
loader.dispose();
3536
expect(loader.items).toEqual([]);
37+
expect(loader.data).toEqual([]);
3638
expect(loader.dataSource?.items()).toBe(undefined);
3739
});
3840
});
@@ -48,8 +50,10 @@ describe('resource loader', () => {
4850

4951
await loader.load();
5052
expect(loader.items).toEqual(transformedData);
53+
expect(loader.data).toEqual(data);
5154
loader.dispose();
5255
expect(loader.items).toEqual([]);
56+
expect(loader.data).toEqual([]);
5357
expect(loader.dataSource?.items()).toBe(data);
5458
});
5559

@@ -68,6 +72,7 @@ describe('resource loader', () => {
6872
expect(loader.isLoaded()).toBe(false);
6973
await Promise.all([loader.load(), loader.load()]);
7074
await loader.load();
75+
expect(loader.data).toEqual(data);
7176
expect(loader.items).toEqual(transformedData);
7277
expect(loader.isLoaded()).toBe(true);
7378
expect(loadCount).toBe(1);
@@ -83,6 +88,7 @@ describe('resource loader', () => {
8388
const loader = new BaseLoader({ dataSource });
8489

8590
expect(loader.isLoaded()).toBe(true);
91+
expect(loader.data).toEqual(data);
8692
expect(loader.items).toEqual(transformedData);
8793
});
8894

@@ -94,6 +100,7 @@ describe('resource loader', () => {
94100

95101
await dataSource.load();
96102
expect(loader.isLoaded()).toBe(true);
103+
expect(loader.data).toEqual(data);
97104
expect(loader.items).toEqual(transformedData);
98105
});
99106
});

packages/devextreme/js/__internal/scheduler/utils/loader/loader.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ export abstract class Loader<T, Data, Config extends BaseConfig<T> = BaseConfig<
1414

1515
public items: Data[] = [];
1616

17+
public data: T[] = [];
18+
1719
protected readonly isSharedDataSource: boolean;
1820

1921
protected loadingStatePromise?: Promise<T[]>;
@@ -85,8 +87,9 @@ export abstract class Loader<T, Data, Config extends BaseConfig<T> = BaseConfig<
8587
}
8688

8789
protected applyChanges(items: T[]): void {
88-
if (items) {
89-
this.items = this.onLoadTransform(items);
90+
if (items && items !== this.data) {
91+
this.data = items;
92+
this.items = this.onLoadTransform(this.data);
9093
}
9194
}
9295

@@ -98,6 +101,7 @@ export abstract class Loader<T, Data, Config extends BaseConfig<T> = BaseConfig<
98101
} else {
99102
this.dataSource.dispose();
100103
}
104+
this.data = [];
101105
this.items = [];
102106
}
103107
}

packages/devextreme/js/__internal/scheduler/utils/loader/resource_loader.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ describe('resource loader', () => {
2727

2828
expect(loader.isLoaded()).toBe(false);
2929
await loader.load();
30+
expect(loader.data).toEqual(assigneeData);
3031
expect(loader.items).toEqual([
3132
{ id: 1, text: 'Samantha Bright', color: '#727bd2' },
3233
{ id: 2, text: 'John Heart', color: '#32c9ed' },
@@ -45,6 +46,7 @@ describe('resource loader', () => {
4546

4647
expect(loader.isLoaded()).toBe(false);
4748
await loader.load();
49+
expect(loader.data).toEqual(assigneeData);
4850
expect(loader.items).toEqual([
4951
{ id: 1, text: 'Samantha Bright', color: '#727bd2' },
5052
{ id: 2, text: 'John Heart', color: '#32c9ed' },

packages/devextreme/js/__internal/scheduler/utils/resource_manager/agenda_group_utils.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,13 @@ export const convertToOldTree = (
5959
const convert = (item: GroupNode): DeprecatedGroupNode => {
6060
const value = item.grouped[item.resourceIndex];
6161
const resource = resourceById[item.resourceIndex];
62+
const resourceData = resource?.data
63+
.find((rItem) => resource.dataAccessor.get('id', rItem) === value);
6264
const resourceItem = resource?.items
6365
.find((rItem) => rItem.id === value);
6466

6567
return {
66-
data: resourceItem,
68+
data: resourceData,
6769
name: item.resourceIndex,
6870
title: item.resourceText,
6971
value,

packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.tests.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,7 @@ QUnit.module('View with configuration', () => {
479479

480480
const groups = scheduler.instance._workSpace.option('groups');
481481
assert.equal(groups.length, 1, 'only one grouped resource');
482+
assert.deepEqual(groups[0].data, dataSource2, 'data is correct');
482483
assert.deepEqual(groups[0].items, dataSource2, 'items is correct');
483484
assert.equal(groups[0].resourceIndex, 'test2', 'index is correct');
484485
});

packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.workSpace.tests.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,10 @@ module('Integration: Work space', { ...moduleConfig }, () => {
309309
{ id: 1, text: 'One', color: undefined },
310310
{ id: 2, text: 'Two', color: undefined }
311311
], 'Groups items are OK');
312+
assert.deepEqual(workSpace.option('groups')[0].data, [
313+
{ key: 1, name: 'One' },
314+
{ key: 2, name: 'Two' }
315+
], 'Groups data are OK');
312316

313317
scheduler.instance.option('groups', ['resource2']);
314318
await waitAsync(0);
@@ -319,6 +323,9 @@ module('Integration: Work space', { ...moduleConfig }, () => {
319323
assert.deepEqual(workSpace.option('groups')[0].items, [
320324
{ id: 1, text: 'Room 1', color: undefined }
321325
], 'Groups items are OK');
326+
assert.deepEqual(workSpace.option('groups')[0].data, [
327+
{ id: 1, text: 'Room 1' }
328+
], 'Groups data are OK');
322329
});
323330

324331
test('updateScrollPosition should work correctly when groups were not set (T946739)', async function(assert) {
@@ -1698,6 +1705,7 @@ module('Resource Cell Template', () => {
16981705

16991706
assert.equal(templateOptions.id, 1, 'id option is OK');
17001707
assert.equal(templateOptions.text, 'John', 'text option is OK');
1708+
assert.deepEqual(templateOptions.data, { text: 'John', id: 1 }, 'data option is OK');
17011709
});
17021710

17031711
test('resourceCellTemplate should work correct in timeline view', async function(assert) {

0 commit comments

Comments
 (0)