sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo maneja Trello la reorganización de tarjetas, listas, listas de verificación, etc.?

A cada elemento se le asigna un pos (un número de JavaScript, por lo que flota de doble precisión). Luego, se procesan ordenándolos por pos .

Cuando se agrega un nuevo elemento, es pos se basa en el lugar de la lista en el que se encuentra:

  • parte inferior de la lista - máximo pos actualmente en la lista + un búfer (creo que 1024 se usa)
  • parte superior de la lista - mínimo pos actualmente en la lista dividida por dos
  • medio de la lista - promedio de pos de los dos elementos adyacentes

La opción intermedia la asignaría el cliente; el cliente puede asignar la parte superior/inferior o pasarla al servidor como las cadenas "top" o "bottom" en cuyo caso el servidor realizará la lógica.

En el servidor, después de asignar el pos al nuevo elemento como se muestra arriba, el elemento se compara con sus vecinos más cercanos para determinar la adyacencia, si están separados por menos de una distancia mínima (.01 se usa, creo), están dispersos (potencialmente en cascada para aumentar el pos de toda la lista).

No creo que esta sea la forma ideal, pero así es como lo hace Trello.