fix: sort search results by TSRank (#13875)
Before: https://github.com/user-attachments/assets/85ecf0c9-fa51-4aff-ac4a-7743a845542b After: https://github.com/user-attachments/assets/60f81eaf-cd7c-4da5-9f44-cbdd223c8f90 /closes #11804 --------- Co-authored-by: etiennejouan <jouan.etienne@gmail.com>
This commit is contained in:
+7
-1
@@ -9,6 +9,7 @@ import { multipleRecordPickerPickableMorphItemsComponentState } from '@/object-r
|
||||
import { multipleRecordPickerSearchFilterComponentState } from '@/object-record/record-picker/multiple-record-picker/states/multipleRecordPickerSearchFilterComponentState';
|
||||
import { multipleRecordPickerSearchableObjectMetadataItemsComponentState } from '@/object-record/record-picker/multiple-record-picker/states/multipleRecordPickerSearchableObjectMetadataItemsComponentState';
|
||||
import { searchRecordStoreComponentFamilyState } from '@/object-record/record-picker/multiple-record-picker/states/searchRecordStoreComponentFamilyState';
|
||||
import { sortMorphItems } from '@/object-record/record-picker/multiple-record-picker/utils/sortMorphItems';
|
||||
import { type RecordPickerPickableMorphItem } from '@/object-record/record-picker/types/RecordPickerPickableMorphItem';
|
||||
import { getObjectPermissionsFromMapByObjectMetadataId } from '@/settings/roles/role-permissions/objects-permissions/utils/getObjectPermissionsFromMapByObjectMetadataId';
|
||||
import { type ApolloClient } from '@apollo/client';
|
||||
@@ -260,11 +261,16 @@ export const useMultipleRecordPickerPerformSearch = () => {
|
||||
)
|
||||
: newMorphItems;
|
||||
|
||||
const sortedMorphItems = sortMorphItems(morphItems, [
|
||||
...searchRecordsFilteredOnPickedRecords,
|
||||
...searchRecordsExcludingPickedRecords,
|
||||
]);
|
||||
|
||||
set(
|
||||
multipleRecordPickerPickableMorphItemsComponentState.atomFamily({
|
||||
instanceId: multipleRecordPickerInstanceId,
|
||||
}),
|
||||
morphItems,
|
||||
sortedMorphItems,
|
||||
);
|
||||
|
||||
const searchRecords = [
|
||||
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
import { type RecordPickerPickableMorphItem } from '@/object-record/record-picker/types/RecordPickerPickableMorphItem';
|
||||
import { type SearchRecord } from '~/generated-metadata/graphql';
|
||||
|
||||
export const sortMorphItems = (
|
||||
morphItems: RecordPickerPickableMorphItem[],
|
||||
searchRecords: SearchRecord[],
|
||||
): RecordPickerPickableMorphItem[] => {
|
||||
const indexByRecordId = new Map<string, number>();
|
||||
searchRecords.forEach((record, index) => {
|
||||
indexByRecordId.set(record.recordId, index);
|
||||
});
|
||||
|
||||
return morphItems.sort((a, b) => {
|
||||
if (a.isSelected && !b.isSelected) return -1;
|
||||
if (!a.isSelected && b.isSelected) return 1;
|
||||
|
||||
const aRank = indexByRecordId.get(a.recordId);
|
||||
const bRank = indexByRecordId.get(b.recordId);
|
||||
|
||||
return (aRank ?? -1) - (bRank ?? -1);
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user