Ad ogni articolo viene assegnato un pos
(un numero JavaScript, quindi float a doppia precisione). Quindi, vengono visualizzati ordinando per pos
.
Quando viene aggiunto un nuovo elemento, è pos
si basa su dove si trova nell'elenco:
- fondo elenco - massimo
pos
attualmente nell'elenco + un buffer (penso1024
viene utilizzato) - inizio elenco -
pos
minimo attualmente nell'elenco diviso per due - metà lista - media di
pos
delle due voci adiacenti
L'opzione intermedia verrebbe assegnata dal cliente; il top/bottom può essere assegnato dal client o passato al server come stringhe "top"
o "bottom"
in tal caso il server eseguirà la logica.
Sul server, dopo aver assegnato il pos
al nuovo elemento come mostrato sopra, l'elemento viene verificato rispetto ai vicini più vicini per l'adiacenza, se sono a una distanza inferiore a una distanza minima (.01
è usato, credo), sono sparsi (potenzialmente a cascata aumentando il pos
dell'intero elenco).
Non credo che questo sia il modo ideale, ma è così che lo fa Trello.