Jeder Artikel erhält eine pos
(eine JavaScript-Zahl, also Float mit doppelter Genauigkeit). Dann werden sie durch Sortierung nach pos
gerendert .
Wenn ein neues Element hinzugefügt wird, ist es pos
basiert auf der Position in der Liste:
- Ende der Liste - maximale
pos
aktuell in der Liste + ein Puffer (ich denke1024
verwendet wird) - top of list - minimale
pos
derzeit in der Liste durch zwei geteilt - Mitte der Liste - Durchschnitt von
pos
der beiden benachbarten Elemente
Die mittlere Option würde vom Kunden zugewiesen; oben/unten können entweder vom Client zugewiesen oder als Strings "top"
an den Server übergeben werden oder "bottom"
in diesem Fall führt der Server die Logik aus.
Auf dem Server nach Zuweisung des pos
zum neuen Element, wie oben gezeigt, wird das Element mit seinen nächsten Nachbarn auf Nachbarschaft geprüft - wenn sie weniger als einen Mindestabstand voneinander entfernt sind (.01
verwendet wird, glaube ich), werden sie verteilt (möglicherweise kaskadierend in die Erhöhung der pos
der gesamten Liste).
Ich denke nicht, dass dies der ideale Weg ist, aber Trello macht es so.