sutty/doc/reordenar.md

120 lines
2.5 KiB
Markdown
Raw Normal View History

2018-02-22 19:00:47 +00:00
# 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
2018-02-24 22:41:10 +00:00
---
* 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.