Hver vare får en pos
(et JavaScript-nummer, så dobbelt-præcision flyder). Derefter gengives de ved at sortere efter pos
.
Når et nyt element tilføjes, er det pos
er baseret på hvor på listen det er:
- nederst på listen - maksimum
pos
i øjeblikket på listen + en buffer (jeg tror1024
bruges) - øverst på listen - minimum
pos
i øjeblikket på listen divideret med to - midt på listen - gennemsnit af
pos
af de to tilstødende elementer
Den midterste mulighed vil blive tildelt af klienten; toppen/bunden kan enten tildeles af klienten eller sendes til serveren som strengene "top"
eller "bottom"
i hvilket tilfælde serveren udfører logikken.
På serveren efter tildeling af pos
til den nye vare som vist ovenfor, tjekkes varen mod sine nærmeste naboer for tilstødelse - hvis de er mindre end en minimumsafstand fra hinanden (.01
bruges, tror jeg), er de spredt ud (potentielt overlappende til at øge pos
af hele listen).
Jeg tror ikke, det er den ideelle måde, men det er sådan, Trello gør det.