Skip to content

Commit 92adeb0

Browse files
authored
Fix directory table sorting on type (#456)
Signed-off-by: achour94 <[email protected]>
1 parent bc5c41a commit 92adeb0

File tree

2 files changed

+40
-3
lines changed

2 files changed

+40
-3
lines changed

src/components/utils/directory-content-utils.ts

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,13 @@ import { IntlShape } from 'react-intl';
99
import { UUID } from 'crypto';
1010
import { AgGridReact } from 'ag-grid-react';
1111
import React from 'react';
12-
import { ColDef } from 'ag-grid-community';
12+
import { ColDef, IRowNode } from 'ag-grid-community';
1313
import { NameCellRenderer } from './renderers/name-cell-renderer';
1414
import { DescriptionCellRenderer } from './renderers/description-cell-renderer';
15-
import { TypeCellRenderer } from './renderers/type-cell-renderer';
15+
import {
16+
TypeCellRenderer,
17+
getElementTypeTranslation,
18+
} from './renderers/type-cell-renderer';
1619
import { UserCellRenderer } from './renderers/user-cell-renderer';
1720
import { DateCellRenderer } from './renderers/date-cell-renderer';
1821
import type { ElementAttributes } from '@gridsuite/commons-ui';
@@ -83,6 +86,7 @@ export const getColumnsDefinition = (
8386
field: 'description',
8487
cellRenderer: DescriptionCellRenderer,
8588
flex: 1.1,
89+
sortable: false,
8690
},
8791
{
8892
headerName: intl.formatMessage({
@@ -94,6 +98,39 @@ export const getColumnsDefinition = (
9498
childrenMetadata: childrenMetadata,
9599
},
96100
flex: 2,
101+
comparator: (
102+
valueA: string,
103+
valueB: string,
104+
nodeA: IRowNode<ElementAttributes>,
105+
nodeB: IRowNode<ElementAttributes>
106+
) => {
107+
const getTranslatedOrOriginalValue = (
108+
node: IRowNode<ElementAttributes>
109+
): string => {
110+
const { type, elementUuid } = node.data ?? {};
111+
if (!type) {
112+
return '';
113+
}
114+
115+
const metaData = elementUuid
116+
? childrenMetadata[elementUuid]?.specificMetadata
117+
: null;
118+
const subtype = metaData?.type?.toString() ?? null;
119+
const formatCase = metaData?.format?.toString() ?? null;
120+
121+
return getElementTypeTranslation(
122+
type,
123+
subtype,
124+
formatCase,
125+
intl
126+
);
127+
};
128+
129+
const translatedA = getTranslatedOrOriginalValue(nodeA);
130+
const translatedB = getTranslatedOrOriginalValue(nodeB);
131+
132+
return translatedA.localeCompare(translatedB);
133+
},
97134
},
98135
{
99136
headerName: intl.formatMessage({

src/components/utils/renderers/type-cell-renderer.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { IntlShape, useIntl } from 'react-intl';
1313
import { UUID } from 'crypto';
1414
import { Box } from '@mui/material';
1515

16-
const getElementTypeTranslation = (
16+
export const getElementTypeTranslation = (
1717
type: ElementType,
1818
subtype: string | null,
1919
formatCase: string | null,

0 commit comments

Comments
 (0)