Varje objekt får en pos
(ett JavaScript-nummer, så dubbelprecisionsflytande). Sedan renderas de genom att sortera efter pos
.
När ett nytt objekt läggs till är det pos
baseras på var i listan det är:
- längst ner på listan - maximalt
pos
för närvarande i listan + en buffert (jag tror1024
används) - överst på listan - minsta
pos
för närvarande i listan delat med två - mitten av listan - genomsnitt av
pos
av de två intilliggande objekten
Det mellersta alternativet skulle tilldelas av klienten; toppen/botten kan antingen tilldelas av klienten eller skickas till servern som strängarna "top"
eller "bottom"
i så fall kommer servern att utföra logiken.
På servern, efter att ha tilldelats pos
till det nya föremålet som visas ovan kontrolleras föremålet mot dess närmaste grannar för närhet - om de är mindre än ett minsta avstånd från varandra (.01
används, tror jag), är de utspridda (potentiellt överlappande till att öka pos
av hela listan).
Jag tror inte att detta är det perfekta sättet, men det är hur Trello gör det.