MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

In che modo Trello gestisce il riordino di carte, elenchi, liste di controllo ecc

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 (penso 1024 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.