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?"