mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-26 00:56:21 +00:00
134 lines
3 KiB
Markdown
134 lines
3 KiB
Markdown
# 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?"
|