Gestor de proyectos (actualizado 31/01/2023)

En el conjunto de ejemplos que tengo publicado en mi portal, este de gestión de proyectos es de los que mayor éxito tiene, habiéndose descargado más de 1.000 veces.

He de reconocer que para mí, también, es de los mejores y del que más satisfecho me encuentro.

En esta versión deseaba añadir, aunque fuese de forma muy leve, la gestión de subproyectos o dependencia de proyectos. En la empresa en la que he trabajado mis últimos 30 años, es habitual que un proyecto incorporara solicitud de actividades a Técnica de sistemas, para añadir servidores, gestores de base de datos, he incluso, la formación de los usuarios en la implantación de un nuevo sistema al departamento de Formación.

Esas actividades se ofrecían por departamentos de la organización, pero como responsable del proyecto, me interesa ver esas actividades detalladas, aunque la responsabilidad directa de ellas recayese en otra persona. Por ello, todas esas actividades se planificaban en  subproyectos que estaban conectados con el proyecto principal y se podía revisar el avance de todas las actividades del sistema nuevo que se estaba desarrollando  y poniendo en producción. Esta forma de organizarse es la que se utiliza en prácticamente todas las metodologías de ejecución de proyectos.

Así pues esta versión (31/01/2023) incorpora:

  • La nueva versión del plugin BootstrapDataPicker.- Calendario con días festivos
  • La jerarquía de los Proyectos y su visualización en el Gantt conjuntamente con las tareas del proyecto «principal».
  • El uso de PHPRunner 10.7 y la posibilidad de poder ejecutar la solución en PHP 8.1

La nueva versión del Gantt se ve:

Puedes obtener más detalles del ejemplo y los fuentes del mismo, en este artículo.

Plugins Toggle y Switch, javaScript

En los plugins, tanto lo que he hecho yo como los que han hecho otros, en muchas ocasiones el API de JavaScript de PHPRunner no funciona, más en concreto en los que son de tipo chekbox.

Esto no significa que no dispongan las mismas funcionalidades, si no que se hace de otra forma (consultar en internet o a mí, para saber cómo se cambian las propiedades de los campos de los formularios)

En concreto, en esto dos(«toggle» y «switch«), el evento de detección de cambio de estado se puede hacer:

var ctrlswitch = Runner.getControl(pageid, 'switch');

ctrlswitch.on('change', function(e){
 if (this.valueElem[0].checked ){
             alert('Se ha activado la opción');
 } else {
             alert('Se ha desactivado la opción');
  }
})

Para estos dos plugins, el ponerles «readonly», se hace:

var ctrlswitch = Runner.getControl(pageid, 'switch');
// ctrlswitch.makeReadonly();

ctrlswitch.valueElem[0].disabled = true;

Para cambiar de estado por programación (sólo para «switch») :

ctrlswitch.valueElem[0].click();   // status change

Para cambiar de estado por programación (sólo para «toggle») :

$('input[id^="value_toggle_1_"]').bootstrapToggle('toggle');   // status change

En este caso el campo se llama «toggle_1». Hay que tenerlo en cuenta para referenciarlo por JQUERY , en este caso, como «value_toggle_1_».

Para acceder a los plugins, cliquea este link

Guía 49 – Crear PDF con gráficos creados con AnyChart

Con la funcionalidad estándar de PHPRunner para generar PDF no se pueden trasladar los gráficos creados con AnyChart (producto que utiliza PHPRunner para crear gráficos ) a los PDF y son muchos los usuarios que han preguntado por esta funcionalidad en el foro.

He estudiado distintas alternativas y he probado la solución de jsPDF y he conseguido crear la página PDF con los gráficos creados con AnyChart.

Objetivo

Poder generar fichero PDF de cualquier página de la aplicación creada con PHPRunner y más concretamente, aquellas páginas DashBoard o no, que incluyan gráficos creados por la biblioteca de JavaScript AnyChart.

DEMO: https://fhumanes.com/map_anychart

Si te interesa este tema, sigue leyendo el artículo de este enlace.

Guía 48 – Utilización del API de Dashboard para recarga de paneles por Ajax

En la versión 10.8 de PHPRunner se incorporó este Api para los Dashboard que nos permite hacer, entre otras cosas, «reload» de los paneles desde JavaScript.

También, se potencia el uso de «snippet«, elemento que me gusta mucho porque me permite obtener el 100% de la potencia de AnyChart. Lo único «malo» de la solución es que este nuevo API de Dashborad no permite hacer el «reload» de los snippet, pero como veréis en este artículo, eso se puede resolver de forma sencilla.

Objetivo

Ofrecer un ejemplo sencillo de Dashboard con paneles dependientes y del tipo snippet, refrescando los datos por programación. Además, se muestra la posibilidad de disponer de un panel de búsqueda, para la introducción de los criterios de selección de los datos que deseamos consultar.

DEMO: https://fhumanes.com/dashboard_api/

Si te interesa este tema, accede a toda la información en este artículo.

Guía 47 – Control de un único Proceso en ejecución

Es frecuente que en las aplicaciones  existan procesos «pesados» y por lo tanto «lentos» que deseamos que los usuarios no los puedan ejecutar varias veces en un periodo corto de tiempo o que estos procesos se ejecuten de uno en uno, para no sobrecargar el servidor, y así seguir dando buen tiempo de respuesta al resto de procesos y usuarios.

También, nos puede surgir el mismo problema cuando queremos que un recurso de nuestro sistema sólo esté accedido por un único proceso, quedándose a la espera de ser liberado para el resto de procesos que requieran ese recurso.

Algunos ejemplos que pueden requerir esta gestión de proceso único, son:

  • La recarga o copia de información desde otro sistema (proceso batch masivo).
  • Copia de seguridad de datos o copia de respaldo de backup previos
  • Elaboración de informes muy pesados. Procesos de cierre o reconfiguración del sistema.
  • Utilización de un recurso del server (fichero, puerto serie, USB, certificado digital, etc.)
  • Etc.

Objetivo

Disponer de una lógica, en los proyectos desarrollados en PHPRunner, para controlar:

  • Que un proceso específico sólo este en ejecución una única vez y el resto de peticiones que concurran las rechace el sistema.
  • Que un proceso específico sólo este en ejecución una única vez y que el resto de peticiones concurrentes se encolen y se liberen según el orden de llegada (cola FIFO).

DEMO:  https://fhumanes.com/single_execution/

Si te interesa este tema y deseas obtener el código, cliquea aquí para acceder al artículo

Blog personal para facilitar soporte gratuito a usuarios de React y PHPRunner