Incluir tiempo estimado e imputado en las líneas de tareas en Feng Office

Escrito por Javier Seixas el 19/10/2011. Revisado el 20/10/2011

Feng Office és una buena herramienta de gestión de proyects, open source y gratuita. Las herramientas gestoras de proyectos siempre tienen el inconveniente que no todas las funcionalidades se adaptan a la manera de trabajar de uno, sin embargo, gracias a ser open source, se puede modificar para conseguirlo.

Una de las necesidades que tenía, era la de visualizar rápidamente y en cada tarea el tiempo estimado en esa tarea y el tiempo acumulado en el desarrollo de la misma, para poder valorar en mientras trabajo si estoy cumpliendo los plazos.

Línea de tarea en Feng Office

A continuación voy a detallar los cambios que he realizado para visualizarlo. He trabajado sobre la versión de Feng Office 1.7.5.

/application/models/projects_tasks/Project.Task.class.php

Este archivo es el que se encarga de devolver los datos que posteriormente se cargan en cada línea de tarea. Tenemos que incluir los datos que nos interesa recuperar: el tiempo estimado y el tiempo imputado en las tareas.

 PHP |  Copiar código |? 
1393
$result = array(
1394
 'id' => $this->getId(),
1395
 't' => $this->getTitle(),
1396
 'wsid' => $this->getWorkspacesIdsCSV(),
1397
 'c' => $this->getCreatedOn() instanceof DateTimeValue ? $this->getCreatedOn()->getTimestamp() : 0,
1398
 'cid' => $this->getCreatedById(),
1399
 'isread' => $this->getIsRead(logged_user()->getId()),
1400
 'otype' => $this->getObjectSubtype(),
1401
 'est' => $this->getTimeEstimate() // AÑADIDO
1402
 );

A continuación cargamos el tiempo imputado en las tareas, que se almacena en diferentes registros Timeslot. Recuperamos el tiempo en segundos.

 PHP |  Copiar código |? 
1432
 $ot = $this->getOpenTimeslots();
1433
 
1434
 // AÑADIDO boc 
1435
 $timeslotsArray = Timeslots::getTaskTimeslots(null,null,null,null,null, $this->getId());
1436
 $seconds = 0;
1437
 if ( $timeslotsArray ) {
1438
     foreach ( $timeslotsArray as $ts ) {
1439
          $seconds += $ts['ts']->getSeconds();
1440
     }
1441
 
1442
     $seconds = round($seconds / 60);
1443
     $result['acu'] = $seconds; 
1444
 }
1445
 // AÑADIDO eoc
1446
 
1447
 if ($ot){

/public/assets/javascript/og/tasks/main.js

Este archivo se modifica para cargar en el objeto de javascript los datos obtenidos de la respuesta JSON. Modificamos la función ogTasksTask.prototype.setFromTdata.

 PHP |  Copiar código |? 
108
 if (tdata.otype) this.otype = tdata.otype; else this.otype = null;
109
 
110
 // AÑADIDO boc
111
 if (tdata.est) this.est = tdata.est; else this.est = 0;
112
 if (tdata.acu) this.acu = tdata.acu; else this.acu = 0;
113
 // AÑADIDO eoc
114
}

/public/assets/javascript/og/tasks/drawing.js

Este archivo se encarga de imprimir todo el código html.

 PHP |  Copiar código |? 
864
    sb.append('</span></td>');
865
 }
866
 
867
 // AÑADIDO boc
868
 sb.append('<td style="font-size:10px;padding-left:6px;padding-right:3px">');
869
 var estimateTimeString = 'estimate' + ':&nbsp;' + task.est;
870
 sb.append(estimateTimeString);
871
 sb.append('&nbsp;-&nbsp;');
872
 var reportedTimeString = 'accumulated' + ':&nbsp;' + task.acu;
873
 sb.append(reportedTimeString);
874
 sb.append('</td>');
875
 // AÑADIDO eoc
876
 
877
 //Draw time tracking
878
 if (drawOptions.show_time){

Conclusiones

Una vez visto es relativamente sencillo conseguir la información. Para ir un poco más allá y mejorar la nueva funcionalidad, se podría hacer que el texto incluido “estimate” y “accumulated” fuese traducible a otros idiomas. También se podría pulir presentando el tiempo de manera más legible, como horas y minutos y no únicamente en minutos, o también que si el tiempo imputado supera el estimado que el texto salga en color rojo. Otra posibilidad sería incluir la opción para que el usuario decida si quiere mostrar esta información o no.

Por lo que sé ahora mismo, la única manera de incluir todo esto es tocando el core de la aplicación.

Comparte

  • Twitter
  • Facebook
  • del.icio.us
  • LinkedIn
  • Meneame

Tags:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Amics
Sobre mí

Soy desarrollador web y estudiante de informática, tengo 28 años y soy vecino de Barcelona. Descubrí lo que ahora es mi profesión en un trabajo de instituto en el 2001, y desde entonces no he podido parar.

Sobre la web

En este sitio quiero plasmar y hacer públicos mis proyectos, mis inquietudes y cosas que me gustan.