Tengo una aplicacion en marcha que gestiona los tiempos empleados en diferentes tareas diariamente. Actualmente esos datos se guardan en una tabla como esta:
DIA - TAREA - DESCRIPCION - TIEMPO EMPLEADO
Cuando quiero ver todas las tareas, se muestran en un gridview de arriba para abajo y puedo hacer filtrados etc etc…
Me gustaria mostrar esos datos de otra forma, seria una tabla como esta:
DIA 1 DIA 2 DIA 3 ...DIA 31 (todos los dias del mes por ejemplo)
TAREA 1 TIEMPO 11
TAREA 2 T12
TAREA X T1X T31X
Es una manera mas visual de ver donde se emplea mas tiempo durante un mes o tiempo x en curso…
No se si alguien me puede dar alguna idea por donde empezar o algo ya que no se me ocurre nada. He pensado en hacer un left join con una tabla creada con dias o algo asi y luego mostrar los datos del join pero no lo veo claro. A ver si me podeis echar una mano.
Vas a tener que armar manualmente la tabla con las columnas que requieres ya que el gridview te arma la tabla tál cual la tienes en la base de datos por el ActiveRecord, es decir así como tienes estructurada la tabla en tu base de datos, así mismo la tendrás en el grid view.
Recomiendo realizar la consulta con el DAO de yii o el Query Builder y tomar los registros manualmente desde tu modelo hacia la vista donde quieres armar la tabla que especificas más arriba.
Adicional si puedes armar la tabla con algunas de las columnas que desees mostrar de forma un poco más gráfica te puedo echar una mano con el código.
Pienso yo que quieres como un diagrama de gantt mostrando la [N] Cantidad de días por mes en un rango de tiempo definido como columnas, no sé si estoy equivocado
Ejemplo:
Fecha Inicio: 01-01-2018
Fecha Fin 31-01-2018
Tabla Esquematizada
Actividad | Dia 01 | Dia 02 | Dia 03 || Dia 04 | Dia 05 … | Dia 31 |
Actividad 1 | X | X | | | | |
Muchas gracias Eloy, lo has entendido perfectamente. Creo que yo tambien te he entendido a si que a ver si cojo un poco de tiempo y me pongo a ello. La idea seria hacer una consulta filtrada entre fechas por ejemplo, y despues hacer un loop de todas las fechas dentro de ese rango de fechas y cuando exista un registro en la consulta ponerlo donde corresponda dejando los restantes a 0.