2024-05-22 17:05:25 +03:00
|
|
|
export function sortByField(from, to, edges, fieldName, references) {
|
2026-05-06 18:11:42 +03:00
|
|
|
if (from === to) {
|
|
|
|
|
return edges;
|
|
|
|
|
}
|
|
|
|
|
let referenceIds = references.map((r) => r.id);
|
|
|
|
|
let edgesTosort =
|
|
|
|
|
edges?.filter(
|
|
|
|
|
(ed) =>
|
|
|
|
|
ed.field === fieldName &&
|
|
|
|
|
ed.depth === 1 &&
|
|
|
|
|
referenceIds.includes(ed.target),
|
|
|
|
|
) ?? [];
|
|
|
|
|
let remainingEdge =
|
|
|
|
|
edges?.filter((ed) => !(ed.field === fieldName && ed.depth === 1)) ?? [];
|
2023-10-02 23:10:49 +03:00
|
|
|
|
2026-05-06 18:11:42 +03:00
|
|
|
edgesTosort = array_move(edgesTosort, from, to);
|
|
|
|
|
return [...remainingEdge, ...edgesTosort];
|
2023-10-02 23:10:49 +03:00
|
|
|
}
|
2023-10-30 14:33:35 +02:00
|
|
|
|
2026-05-06 18:11:42 +03:00
|
|
|
export function array_move(arr, old_index, new_index) {
|
|
|
|
|
if (new_index >= arr.length) {
|
|
|
|
|
var k = new_index - arr.length + 1;
|
|
|
|
|
while (k--) {
|
|
|
|
|
arr.push(undefined);
|
2023-10-30 14:33:35 +02:00
|
|
|
}
|
2026-05-06 18:11:42 +03:00
|
|
|
}
|
|
|
|
|
arr.splice(new_index, 0, arr.splice(old_index, 1)[0]);
|
|
|
|
|
return arr; // for testing
|
|
|
|
|
}
|