Elk item krijgt een pos
(een JavaScript-nummer, dus dubbele precisie float). Vervolgens worden ze weergegeven door te sorteren op pos
.
Wanneer een nieuw item wordt toegevoegd, is dit pos
is gebaseerd op waar in de lijst het is:
- onderaan de lijst - maximum
pos
momenteel in de lijst + een buffer (ik denk1024
wordt gebruikt) - bovenaan de lijst - minimaal
pos
momenteel in de lijst gedeeld door twee - midden van lijst - gemiddelde van
pos
van de twee aangrenzende items
De middelste optie zou worden toegewezen door de klant; de top/bottom kan worden toegewezen door de client of worden doorgegeven aan de server als de strings "top"
of "bottom"
in dat geval zal de server de logica uitvoeren.
Op de server, na het toewijzen van de pos
aan het nieuwe item, zoals hierboven weergegeven, wordt het item vergeleken met zijn naaste buren op aangrenzendheid - als ze minder dan een minimale afstand van elkaar verwijderd zijn (.01
wordt gebruikt, geloof ik), zijn ze verspreid (mogelijk trapsgewijs in het verhogen van de pos
van de hele lijst).
Ik denk niet dat dit de ideale manier is, maar het is hoe Trello het doet.