Skip to content

Commit 21e8adc

Browse files
jcorrea97rafaellmarques
authored andcommitted
fix(table): mantém ordenação dos itens após uma pesquisa
Corrige ordenação após pesquisa de um item na tabela mantendo a ordenação atual fixes DTHFUI-7716
1 parent 1c7fb8a commit 21e8adc

File tree

4 files changed

+49
-12
lines changed

4 files changed

+49
-12
lines changed

projects/ui/src/lib/components/po-table/po-table-base.component.spec.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,21 @@ describe('PoTableBaseComponent:', () => {
385385
expect(component.items).toEqual(sortedItemsDesc);
386386
});
387387

388+
it('should sort values descending with item as param', () => {
389+
const column = component.columns[1];
390+
const sortedItemsDesc = items.slice().sort((a, b) => b.numberData - a.numberData);
391+
component['sortArray'](column, false, items);
392+
expect(component.filteredItems).toEqual(sortedItemsDesc);
393+
});
394+
395+
it('should sort values descending with item as param and height', () => {
396+
const column = component.columns[1];
397+
component.height = 600;
398+
const sortedItemsDesc = items.slice().sort((a, b) => b.numberData - a.numberData);
399+
component['sortArray'](column, false, items);
400+
expect(component.filteredItems).toEqual(sortedItemsDesc);
401+
});
402+
388403
it('should sort values ascending', () => {
389404
const column = component.columns[1];
390405
const sortedItemsAsc = items.slice().sort((a, b) => a.numberData - b.numberData);

projects/ui/src/lib/components/po-table/po-table-base.component.ts

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import { poLocaleDefault } from '../../services/po-language/po-language.constant
66
import { PoLanguageService } from '../../services/po-language/po-language.service';
77
import { capitalizeFirstLetter, convertToBoolean, isTypeof, sortValues } from '../../utils/util';
88

9-
import { InputBoolean } from '../../decorators';
109
import { PoFilterMode } from '../po-search/po-search-filter-mode.enum';
1110
import { PoTableColumnSortType } from './enums/po-table-column-sort-type.enum';
1211
import { PoTableColumnSpacing } from './enums/po-table-spacing.enum';
@@ -1087,6 +1086,19 @@ export abstract class PoTableBaseComponent implements OnChanges, OnDestroy {
10871086
}
10881087
}
10891088

1089+
sortArray(column: PoTableColumn, ascending: boolean, item?: Array<any>) {
1090+
let itemsList;
1091+
if (item) {
1092+
itemsList = this.height ? [...item] : item;
1093+
} else {
1094+
itemsList = this.height ? [...this.filteredItems] : this.filteredItems;
1095+
}
1096+
itemsList.sort((leftSide, rightSide): number =>
1097+
sortValues(leftSide[column.property], rightSide[column.property], ascending)
1098+
);
1099+
this.filteredItems = itemsList;
1100+
}
1101+
10901102
protected getDefaultColumns(item: any) {
10911103
const keys = Object.keys(item);
10921104

@@ -1199,16 +1211,6 @@ export abstract class PoTableBaseComponent implements OnChanges, OnDestroy {
11991211
this.subtitleColumns = this.getSubtitleColumns();
12001212
}
12011213

1202-
private sortArray(column: PoTableColumn, ascending: boolean) {
1203-
const itemsList = this.height ? [...this.filteredItems] : this.filteredItems;
1204-
itemsList.sort((leftSide, rightSide): number =>
1205-
sortValues(leftSide[column.property], rightSide[column.property], ascending)
1206-
);
1207-
if (this.height) {
1208-
this.filteredItems = itemsList;
1209-
}
1210-
}
1211-
12121214
private unselectOtherRows(rows: Array<any>, row) {
12131215
rows.forEach(item => {
12141216
if (item !== row) {

projects/ui/src/lib/components/po-table/po-table.component.spec.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2090,6 +2090,22 @@ describe('PoTableComponent:', () => {
20902090

20912091
expect(component.filteredItems).toBe(items);
20922092
});
2093+
2094+
it('onFilteredItemsChange should call `sortArray` if exist sortedColumn', () => {
2095+
component.sortedColumn = {
2096+
property: { property: 'name' },
2097+
ascending: true
2098+
};
2099+
component.items = [
2100+
{ id: 2, name: 'item2' },
2101+
{ id: 1, name: 'item1' }
2102+
];
2103+
2104+
spyOn(component, 'sortArray');
2105+
component.onFilteredItemsChange(items);
2106+
2107+
expect(component.sortArray).toHaveBeenCalled();
2108+
});
20932109
});
20942110
});
20952111

projects/ui/src/lib/components/po-table/po-table.component.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -603,7 +603,11 @@ export class PoTableComponent extends PoTableBaseComponent implements AfterViewI
603603
}
604604

605605
onFilteredItemsChange(items: Array<any>): void {
606-
this.filteredItems = items;
606+
if (this.sortedColumn.property) {
607+
this.sortArray(this.sortedColumn.property, this.sortedColumn.ascending, items);
608+
} else {
609+
this.filteredItems = items;
610+
}
607611
}
608612

609613
/**

0 commit comments

Comments
 (0)