5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-28 14:16:22 +00:00
panel/doc/reordenar.md
2018-04-27 15:48:26 -03:00

3 KiB

Reordenar los articulos

La interfaz reordena los articulos y los envia en ese orden particular (se puede enviar un numero de orden completado con js para estar mas segurxs). Entonces el algoritmo...

  • Chequea que los posts tengan fechas en orden

  • Si alguno(s) no tienen, busca fechas intermedias

  • Cuando todos tienen fechas en orden, guarda los cambios modificando cada post


  • Compara el nuevo orden con el viejo para saber las diferencias

  • Recorre el nuevo orden uno por uno
  • Se fija si el anterior tiene una fecha menor
  • Se fija si el siguiente tiene una fecha mayor
  • Se autoasigna una fecha en el medio
  • Se guarda al final

  • Todos los posts tienen un ID (su id en el array de la colección)
  • Toma el post actual
  • Mueve el post a una posición arbitraria con un nuevo id
  • Toma la fecha del post siguiente (nuevo_id + 1)
  • Recorre hacia atrás los anteriores, corriéndolos de a un día hasta una fecha anterior
  • Los posts posteriores no se tocan

Teniendo estos artículos

1 2017-01-01
2 2017-01-02
3 2017-01-03
4 2017-01-04
5 2017-01-05

Movemos el artículo 2 a la posición 4

1 1 2017-01-01
2 3 2017-01-03
3 4 2017-01-04
4 2 2017-01-02
5 5 2017-01-05

Reordenamos las fechas

1 1 2017-01-01 2017-01-01
2 3 2017-01-03 2017-01-02
3 4 2017-01-04 2017-01-03
4 2 2017-01-02 2017-01-04
5 5 2017-01-05 2017-01-05

Movemos varios

1 4 2017-01-04
2 5 2017-01-05
3 2 2017-01-02
4 3 2017-01-03
5 1 2017-01-01

Cual es la fecha desde la que se empieza? Vamos hacia atras o hacia adelante?

Hacia atrás

1 4 2017-01-04 2016-12-28
2 5 2017-01-05 2016-12-29
3 2 2017-01-02 2016-12-30
4 3 2017-01-03 2016-12-31
5 1 2017-01-01 2017-01-01

Hacia adelante

1 4 2017-01-04 2017-01-04
2 5 2017-01-05 2017-01-05
3 2 2017-01-02 2017-01-06
4 3 2017-01-03 2017-01-07
5 1 2017-01-01 2017-01-08

En si las fechas no importan, porque estamos priorizando el orden, las fechas son arbitrarias para engañar a jekyll a tener los posts en cierto orden.

Por el contrario, para mantener los cambios mínimos, podemos reemplazar hacia adelante comenzando desde la fecha mas baja del orden original.

1 4 2017-01-04 2017-01-01
2 5 2017-01-05 2017-01-02
3 2 2017-01-02 2017-01-03
4 3 2017-01-03 2017-01-04
5 1 2017-01-01 2017-01-05

No quiere decir que en ordenes de fechas mas dispersas se mantengan los cambios mínimos.

También podemos tomar todo el set original de fechas y asociarselo al orden nuevo de posts. Las fechas se mantienen igual, pero cambia el orden de los posts.

Qué pasa cuando dos o más artículos comparten la misma fecha? Normalmente se ordenan por nombre, pero en este algoritmo no entra ese orden, se asume que siempre están una fecha adelante o atrás


Todos los posts tienen un campo order.

El orden se actualiza en base al orden cronologico.

En la plantilla se puede ordenar cronólogicamente o por orden numérico.

Es más simple de implementar y no tiene comportamientos inesperados, como "por qué cambió de fecha?"