Files
lucent-laravel/front/js/svelte/edges/sortEdges.js
T
2024-10-05 15:19:53 +03:00

25 lines
802 B
JavaScript

export function sortByField(from, to, edges, fieldName, references) {
if (from === to) {
return edges;
}
let referenceIds = references.map(r => r.record.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)) ?? [];
edgesTosort = array_move(edgesTosort,from, to);
return [...remainingEdge, ...edgesTosort];
}
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);
}
}
arr.splice(new_index, 0, arr.splice(old_index, 1)[0]);
return arr; // for testing
};