NuestraCiudad:Desarrollo/Horarios de colectivos

De NuestraCiudad
Ir a la navegación Ir a la búsqueda

Dado que el diseño actual de los horarios de colectivos conlleva mucho trabajo para los scripts de mantenimiento en caso de cambiar algo, aquí ideas para un eventual rediseño (2011.1 o 2011.2).

Rediseño Abril 2012

En abril 2012 el sistema fue otra vez rediseñado para mejorar el rendimiento y la flexibilidad y eliminar la necesidad de los seudo-objetos.

Ahora las paradas aparecen en tres partes:

Obsoleto

¿Que funciones son necesarias / deseadas?

El sistema actual permite realizar consultas:

  • horarios en una parada particular
  • consultar otros horarios de la unidad que llega a determinado lugar (ej: en la parada donde desea iniciar el viaje el lector)

Solución: SIO y Arrayindex

  • Cada unidad es grabada en un objeto interno de la página Línea/Recorrido/Dia de la semana (ej: C/Ascendente/Hábil)
  • El objeto interno contiene dos atributos:
    • Tiene lista de paradas: contiene la lista de paradas que cuentan con horarios.
    • Tiene lista de horarios: contiene la lista de horarios en estas paradas.
  • La plantilla de consulta primero busca la línea, el recorrido y el día de semana (hábil/sábado/feriado).
  • De estos datos, manda las paradas y los horarios a la plantilla de salida.
  • La plantilla de salida genera un array de paradas y uno de horarios. Después busca la posición de la parada buscada en el array de paradas. Dado que la posición en los horarios es la misma, aplica arrayindex al array de horarios y con esto puede consultar el horario deseado.

Pruebas

Idea: Reemplazar también las páginas para las paradas

También las páginas sobre paradas de ómnibus son muchas (alrededor de 4.000).

Se podría reemplazarlas por objetos internos en las páginas de los recorridos. Para acceder a los horarios, en este caso, se haría una búsqueda, lo cual también sería más conveniente para el servidor.

Problemas / Inconvenientes:

  • Paradas en calles sin número: No podrían ser localizadas, salvo que se conozcan las coordenadas geográficas.

Ideas viejas

Idea 1: SIO con paradas numeradas

  • En vez de tener una página para cada unidad, las unidades se convierten en objetos internos.
  • Dado que no se pueden usar SIO dentro de otros SIO se numeran las paradas para cada recorrido.
{{Plantilla Recorrido
|parada 1=Parada Calle 2222
|parada 2=Parada Calle 3333
}}

{{#subobject:Es horario de recorrido
|Tipo de fecha=Hábil
|horario 1=12:30
|horario 2=13:30
}}

La consulta sería algo así:

{{#ask: [[Es horario de recorrido::{{Recorrido}}]] [[Tipo de fecha::Hábil]]
|?horario <plantilla que tira el número de la parada>
}}

Problema: Como armar la plantilla para que tire el número? Es posible? (ej: Poner uno en cada parada?)

Posible solución: Usar Type:record o hasta un objeto interno...

Idea 2: SIO y tipo Record

  • Cada unidad es un objeto interno:
{{#subobject:Es unidad de recorrido
|Tiene horario en parada=Horario1;Parada1, Horario2;Parada2, Horario3;Parada3,
}}

Funcionaría esto?

Query:

{{#ask: [[Es unidad de recorrido::E5]] [[Tiene horario en parada::;;Parada1]]
|?Tiene horario en parada# + index1 = Horario
}}

Funciona si se instala la extensión "Variables".

Idea 3: Grabar los horarios en las paradas

Sería una solución mucho más simple de implementar, pero tiene desventajas:

  • cada vez que cambia un recorrido hay que borrar los horarios en muchisimas páginas (igual con el sistema actual es parecido)
  • da menos posibilidades para consultas, por ejemplo, no se puede saber "QUE" unidad tiene cierto horario (Salvo que se usen trucos con StringFunctions).