MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie handhabt Trello die Neuanordnung von Karten, Listen, Checklisten usw

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 denke 1024 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.