Add documentation for float sort_order pattern

Document the float sort_order pattern with TypeScript examples for calculating sort order and reindexing when precision is low.
This commit is contained in:
Janpeter Visser 2026-04-24 22:11:54 +02:00 committed by GitHub
parent 963265eb8d
commit 1d33b1f7dc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

29
patterns/sort-order.md Normal file
View file

@ -0,0 +1,29 @@
# Patroon: Float sort_order (drag-and-drop volgorde)
## Berekening bij tussenvoeging
```ts
function getSortOrder(before: number | null, after: number | null): number {
if (before === null && after === null) return 1.0
if (before === null) return after! / 2
if (after === null) return before + 1.0
return (before + after) / 2
}
```
## Herindexeer als precisie opraakt
Trigger wanneer het kleinste verschil tussen twee opeenvolgende items < 0.001 is.
```ts
async function reindexIfNeeded(items: { id: string; sort_order: number }[]) {
const minGap = Math.min(...items.slice(1).map((item, i) =>
item.sort_order - items[i].sort_order
))
if (minGap < 0.001) {
await Promise.all(items.map((item, i) =>
prisma.pbi.update({ where: { id: item.id }, data: { sort_order: i + 1.0 } })
))
}
}
```