Rename patterns/sort-order.md to docs/patterns/sort-order.md
This commit is contained in:
parent
7c41508a24
commit
ed8524c269
1 changed files with 0 additions and 0 deletions
29
docs/patterns/sort-order.md
Normal file
29
docs/patterns/sort-order.md
Normal 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 } })
|
||||
))
|
||||
}
|
||||
}
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue