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
posför närvarande i listan + en buffert (jag tror1024används) - överst på listan - minsta
posför närvarande i listan delat med två - mitten av listan - genomsnitt av
posav 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.