Guía 74 – Crear menús dinámicamente

En el foro de Xlinesoft, un desarrollador explica con buen criterio, es mi impresión, que ver la información de «Maestro» y «Detalle», en una página «LIST», más cuando son 3 o 4 niveles de «detalle» de información es muy complejo para el usuario del aplicativo y que si había alguna otra posibilidad de tener esa capacidad de detalles y fuese más claro para los usuarios.

Por mi experiencia, me he encontrado desarrollando sistemas en donde un ítem, cómo expediente o contrato, tiene múltiples informaciones dependientes de esta entidad principal y que en los sistemas en donde los usuarios  entienden bien estas relaciones es viendo esta información como un «árbol jerárquico» donde se van abriendo «hojas» por tipo de entidad y registros de ese tipo, dependientes de la información principal.

Objetivo

Representar información jerárquica relacionada a través de un «árbol», en este caso, vamos a utilizar un menú secundario para presentar la información jerárquica.

DEMOhttps://fhumanes.com/menu_dinamico/

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

Guía 73 – Planificador de Tareas Batch

En cuanto tienes una aplicación con un mínimo de complejidad, enseguida identificas que necesitas ejecutar tareas en segundo plano o batch, para ejecutar procesos a determinadas horas, por ejemplo, migración de información, backup de tu sistema, etc.

Si dispones de la totalidad de acceso a tu sistema, enseguida te acuerdas de CRON o Crontab, que es el planificador de tareas del sistema operativo.

No siempre tienes total acceso para este tipo de configuración y además es complejo. Además, tienes el problema de que pasar tu aplicación de una máquina a otra, tienes que recordar que hay acciones fuera de tu aplicativo, por lo que es una posible fuente de problemas.

He diseñado un sistema que permite integrarse 100% con PHPrunner y que elimina el problema de migración de configuración, y facilita la definición y gestión de estas tareas Batch.

Objetivo

Disponer de un sistema, similar en funcionalidad al Crontab y totalmente integrado con PHPRunner.

Este sistema debe permitir:

  • Definir las tareas en formularios hechos en PHPRunner, en donde se especifique:
    • Fecha inicial de ejecución de la Tarea.
    • Fecha final de ejecución de la Tarea.
    • Intervalo de ejecución, definido en meses, días, horas y minutos.
    • Comando de ejecución con path variable dependiendo de la ubicación del aplicativo.
    • Registro por cada ejecución que indique: hora de inicio, hora de final y resultado de la ejecución.
    • Definición de tiempo máximo de ejecución y si se supera, cancelación del proceso.
  • Ejecución única en el sistema de una tarea Batch (para no sobrecargar el sistema).
  • En las tareas Batch, posibilidad de trazas, para depuración y control, integrada con la aplicación de PHPRunner.
  • Normalización de las tareas Batch, para utilizar la conexión de base de datos del aplicativo de PHPRunner (facilidad en la migración entre sistemas).

DEMO:  https://fhumanes.com/scheduler/
(Esta versión está limitada para impedir mal uso de los ejemplos)

Información que tratamos para cada tarea. No se ejecuta cuando está marcada el campo de «Status finished» o le campo «Date Next Execution» es inferior a la fecha actual.

También, en la definición del comando a ejecutar hay estas sustituciones:

{DIR} .- Se sustituye por el path donde se este ejecutando el aplicativo
{ID_TASK} .- Se sustituye por el ID del registro de log de ejecución.

Si te interesa este tema, sigue este enlace para ver el artículo completo.

Guía 72 – Desarrollo de juegos con PHPRunner

No es fácil diseñar juegos con software de gestión, como es el caso de PHPRunner.

El desarrollo de juegos requieren un uso muy especial del interface de usuario, pero yo entiendo que puede ser un buen ejemplo para aquellos que se están formando en la herramienta de desarrollo (PHPRunner), pues con muy poco código se puede apreciar características de la herramienta y es una buena alternativa para modificar/ampliar la funcionalidad del ejercicio.

Uno de los juegos que casi siempre programo en los lenguajes en los que me estoy formando es el  de «MasterMind«, en la variante de utilización de números en vez de colores, y ese es un de los juegos que he desarrollado.

Otro, que puede ser una variante del mismo es el de «Wordle«, adivinanza de una palabra de 5 letras. También lo he desarrollado (palabras en español).

Objetivo

A través del desarrollo de un juego mostrar un conjunto de características de un desarrollo hecho en PHPRunner:

  • Mostrar cómo en la definición de las tablas o vistas podemos utilizar querys complejas e incluso actualizar los campos de una tabla que participa en la query compleja.
  • Utilización de plugins e instalación de plugins.
  • Utilización del API de JavaScript de PHPRunner.
  • Utilización de JQuery, para modificar aspectos y funcionalidad en JavaScript.
  • Presentación de información con aspectos especiales, creando HTML dinámico.
  • Cambio de lógica en el flujo de las páginas del aplicativo.
  • Modificaciones de aspectos con CSS.
  • Validaciones en ADD inline con mostrado de mensajes de error en «alert» o cualquier otra forma clara para el usuario.
  • Cuidar los aspectos para que los ejemplos sean funcionales en la ejecución en el móvil

DEMO: https://fhumanes.com/masterMind/

DEMO: https://fhumanes.com/wordPlay/

Si te interesa este tema, sigue este enlace para ver el artículo completo.

Guía 71 – Plugin «Select2_ajax»

Un desarrollador de PHPRunner me escribió indicándome que tenía problemas en utilizar el «lookup» del plugin «Select2» en ventana «popup» y que le gustaría disponer de la funcionalidad de «dependencia», similar a la funcionalidad estándar del «lookup» de PHPRunner.

Si recordáis el «lookup» estándar de PHPRunner tiene las siguientes funcionalidades:

  • Múltiples formas de «lookup«. Para tablas con muchos valores tiene el tipo «Ajax».
  • Valor inicial
  • La funcionalidad de «AutoFill«, que permite rellenar otros campos con valores recuperados del «lookup«.
  • El filtrado de valores por dependencia de un valor recuperado/informado, previamente.

Hace unos días, Sergey, nos facilitó un plugin (Multi-Columnas) que nos indicaba que tenía resuelto el tema de la dependencia, así que me puse a intentar implementar en el plugin «Select2», las mismas funcionalidades que tiene el «lookup» estándar de PHPRunner.

Objetivo

Dotar al plugin «Select2» de la misma funcionalidad que el componente de «lookup»  estándar de PHPRunner.

DEMO: https://fhumanes.com/select2_dependence

El ejemplo se ha hecho utilizando en nuevo plugin «select2_ajax» que está disponible en la página de los plugines.

Si estás interesado en este tema, sigue leyendo el artículo con este enlace.

Guía 70 – Hacer «Drill Down» con gráficos de Anychart

Reconozco que soy un entusiasta de esta biblioteca de JavaScript Anychart. Estoy convencido que los usuarios de los productos de Xlinesoft, obtenemos muy poco rendimiento de ella y eso que la licencia que incorpora es «FULL», es decir, permite utilizar la totalidad de la funcionalidad de la biblioteca. Además, la documentación del producto y el soporte es muy bueno, lo que aún más, facilita su uso.

Objetivo

Cómo se puede hacer clic en gráfico de Anychart y actualizar otros paneles con detalle de la información seleccionada.

DEMO: https://fhumanes.com/anychart_link/

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