Każdy element otrzymuje pos
(liczba JavaScript, czyli liczba zmiennoprzecinkowa podwójnej precyzji). Następnie są renderowane przez sortowanie według pos
.
Po dodaniu nowego elementu jest to pos
zależy od tego, gdzie na liście się znajduje:
- dół listy - maksymalna
pos
obecnie na liście + bufor (chyba1024
jest używany) - góra listy - minimalna
pos
obecnie na liście podzielonej przez dwa - środek listy - średnia z
pos
dwóch sąsiadujących ze sobą elementów
Środkowa opcja zostałaby przypisana przez klienta; góra/dół może być przypisany przez klienta lub przekazany do serwera jako ciągi "top"
lub "bottom"
w takim przypadku serwer wykona logikę.
Na serwerze, po przypisaniu pos
do nowego elementu, jak pokazano powyżej, element jest porównywany z najbliższymi sąsiadami pod kątem sąsiedztwa - jeśli są one od siebie mniejsze niż minimalna odległość (.01
jest używany, jak sądzę), są one rozłożone (potencjalnie kaskadowo zwiększając pos
całej listy).
Nie sądzę, że jest to idealny sposób, ale tak właśnie robi Trello.