mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
TablePanel: Makes sorting case-insensitive (#32435)
* UI/Table: Make sorting case-insensitive Closes #30476
This commit is contained in:
parent
acc8e78c24
commit
6c16ecf65f
@ -14,7 +14,7 @@ import {
|
|||||||
useTable,
|
useTable,
|
||||||
} from 'react-table';
|
} from 'react-table';
|
||||||
import { FixedSizeList } from 'react-window';
|
import { FixedSizeList } from 'react-window';
|
||||||
import { getColumns } from './utils';
|
import { getColumns, sortCaseInsensitive } from './utils';
|
||||||
import { useTheme } from '../../themes';
|
import { useTheme } from '../../themes';
|
||||||
import {
|
import {
|
||||||
TableColumnResizeActionCallback,
|
TableColumnResizeActionCallback,
|
||||||
@ -151,6 +151,9 @@ export const Table: FC<Props> = memo((props: Props) => {
|
|||||||
disableResizing: !resizable,
|
disableResizing: !resizable,
|
||||||
stateReducer: stateReducer,
|
stateReducer: stateReducer,
|
||||||
initialState: getInitialState(initialSortBy, memoizedColumns),
|
initialState: getInitialState(initialSortBy, memoizedColumns),
|
||||||
|
sortTypes: {
|
||||||
|
'alphanumeric-insensitive': sortCaseInsensitive,
|
||||||
|
},
|
||||||
}),
|
}),
|
||||||
[initialSortBy, memoizedColumns, memoizedData, resizable, stateReducer]
|
[initialSortBy, memoizedColumns, memoizedData, resizable, stateReducer]
|
||||||
);
|
);
|
||||||
|
@ -63,7 +63,7 @@ export function getColumns(data: DataFrame, availableWidth: number, columnMinWid
|
|||||||
case FieldType.time:
|
case FieldType.time:
|
||||||
return 'basic';
|
return 'basic';
|
||||||
default:
|
default:
|
||||||
return 'alphanumeric';
|
return 'alphanumeric-insensitive';
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -204,3 +204,7 @@ export function getFilteredOptions(options: SelectableValue[], filterValues?: Se
|
|||||||
|
|
||||||
return options.filter((option) => filterValues.some((filtered) => filtered.value === option.value));
|
return options.filter((option) => filterValues.some((filtered) => filtered.value === option.value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function sortCaseInsensitive(a: Row<any>, b: Row<any>, id: string) {
|
||||||
|
return String(a.values[id]).localeCompare(String(b.values[id]), undefined, { sensitivity: 'base' });
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user