Novedades en versiones de Ingrid 9

Documentación de las novedades de cada versión sobre la anterior. Aquí sólo se documentan las novedades importantes en funcionalidad o correcciones importantes para el usuario final, no todas, que están en documento técnico que se puede solicitar a Ingridgem.

El tema Consulta y Preguntas Frecuentes, también se amplía con novedades.

2025

Versión 25/09/25

· Procedimiento para recuperación de copias historicas (bson de BD y todos los archivos externos), en linux mediante Restic

· Nuevos servicios activables en Menú > Configuración > Características > Servicios opcionales:
1. Lista de favoritos que se guarda para cada usuario y cada BD en la memoria del navegador y muestra un icono de estrella. En menú contextual de lista aparece una opción de agregar a favoritos y si ya lo está, de quitar de favoritos.
2. Lista de recientes navegados en orden de arriba a abajo, con icono de una huella.

Versión 16/06/25

·Salida en beta de Ingrid para linux Ubuntu con todos los servicios de los servidores windows.

· IMPORTANTE webservice ‘procesa’ (ejecutar informe pro.webservice) se ejecuta en el servidor (sin cliente), por tanto, por seguridad hay que cambiar ese sistema.
La solución implementada en esta versión: filtrar para que el código JS que se va a ejecutar en servidor no tenga ‘require’, ‘import’, ‘eval’, funciones del objeto filesystem ‘ingra.fs’, ‘ingra.F’ y otras peligrosas como ‘Function’ (equivalente a eval) o ‘new’, ‘setTimeout’, ‘setInterval’. ‘fetch’ da error (también está prohibida) al ejecutar en ese proceso paralelo y casca el servidor, pero se podrá usar ingra.fetch, que para que no coincida en nombre se ha puesto un alias ingra.fetchS. Esta es la que hay que usar en webservices.
Obviamente no se pueden utilizar funciones del cliente o de interface, pero para poder generar pdfs a partir de htm, por ejemplo, se ha implementado en servidor un bas.impresor3.
Se admite llamar a bas.procesaProcedimiento y estos se ejecutan con las mismas condiciones.

· Imágenes protegidas de accesos externos https directos (por ejemplo desde informes html o para webs). Ahora hay una herramienta para recodificar las imágenes .gra con el sufijo _p justo antes de la extensión, lo que indica que desde la aplicación, validado con usuario y clave se puede acceder a la versión \alta, pero desde accesos externos sólo se sirve la media. Por supuesto la herramienta cada vez que se protege, re-codifica las 3 versiones incluída la de \original. Se pone un marco naranja en torno a las diapositivas de gráficos protegidos y en listas de gráficos, también el marco en torno a la imagen al mostrar la columna.
En la persiana imágenes:
- con ALT+clic sobre las diapos se cambia el estado público/no público individualmente
- con una multiselección, en el menú de la persiana hay una opción para cambiarlas todas
En cualquier multiselección de lista de conceptos que SÓLO sean gráficos:
- hay una opción en el menú contextual para cambiar el estado.
Deja de utilizarse el campo Menú > Configuración > Imágenes > Campo para marcar imágenes, campo de cabecera ‘graMarca’ (que se usaba en fcoam-legados) para distinguir imágenes privadas de sólo BD de las de web.

Versión 25/04/25

· Traducción. Actualizada extracción de textos a la fecha actual de código, informes, etc. Re-traducido todo con ChatGPT. Mejorado sistema de traducción incremental para extraer sólo los textos nuevos. Ahora el espanol0.txt con todos los textos, se procesa a espanol.txt, cada cierto tiempo se pueden comparar y se produce el espanol2.txt con las diferencias, que hay que traducir, luego con otro procedimiento, se completa el espanol.txt y lo mismo para cada idioma.

· Campo en Menú > Configuración > Imágenes > Dimensión máx, de originales para evitar que se guarden: si el tamaño límite es igual al máximo para la alta resolución, sólo se recortarán y se guardarán en \alta.

· Acceso a BD mediante autenticación oAuth2 a través de apps como Microsoft Active Directory de Azure (ahora llamado Ms-Entra ID), Onedrive, Google Gmail, Github, Linkedin, Amazon AWS, Apple, Meta Facebook, etc.

Los usuarios tienen que estar creados también en Ingrid (pueden estar sin contraseña). Se hace a través del check en la esquina superior derecha del login, indicando en ese caso, en vez del nombre de BD, el oauthProvider de los que tenemos registrados en el servidor en el archivo de configuración \ingran9\ingridn.config.jsonc

Ese archivo de config. se actualiza en tiempo real sin re-arrancar servidores y contiene el nombre de bd, client_secret, token_url, y los datos públicos client_id, auth_url y demás.

El que la conexión recuerde el usuario depende del modo recordar del login normal (BD - usuario - clave).

· NUEVA plantilla de generación webs estáticas de archivos .htm completos (para mejorar la indización de SEO) con funciones de alto nivel para generar desde BD que imprimen listas de elementos, páginas de fichas de inventario con gráficas estadísticas de barras, sectores, mapas temáticos, etc. de forma sencilla (ejemplo inicial, demo-sanse-verde con usuario ingrid/ingrid. Permite las funciones de copia de archivos, zipeado... en el servidor sin ser superadmin).

En la propia BD está el guión de ejemplo reducido, El script para producir la web más reducida (de una sola tabla) y el guión completo de una web para esa BD de incidencias y jardinería.

· Inca: Soporte de SHP en ZIP. Ahora un archivo zip abierto con drag&drop o el diálogo, se entiende que es un SHP con sus 4 o más archivos de una capa en el raíz del ZIP. Al leer y grabar, se admiten varias capas -conjuntos de archivos SHP- en el raíz y se tratarán como una capa cada uno. No se soporta, por tanto, arrastrar un archivo .SHP (que además estaría incompleto).

· Mejora de conversiones entre formatos GDAL (geojson, SHP(zip), DXF. INCA, KML, GML).

· Cambios en todas las funciones internas de envío de mail,

Se soportan:
ingra.enviaMail = async function (transport, mail, cb=null) // > {info:{response}}
ingra.enviaMailIngrid = function (bas, transport, mail, cb=null)
ingra.enviaMailConsulta = async function (mail,cb=null)

No soportadas:
ingran.webservice.nodemailer = function (meta, cb)
ingran.webservice.mail = function (meta, cb)
ingran.webservice.mailComercial = function (meta, cb)
ingran.webservice.mailTecnico = function (meta, cb)
ingra.nodemailer.envia = function (meta, cb)
ingra.nodemailer.servicio = function (meta, cb, response, request)

Versión 13/03/25

· Nuevos fondos vectoriales con archivos *.inca de nuestro repositorio \map. En la persiana geomapa de Ingrid se puede hacer referencia a la cartografía vectorial de un municipio en la pestaña Archivo > Configuración > Fondo vectorial poniendo el código de municipio y la extensión .cc para cartociudad (contenido completo de más de 8.000 municipios actualmente) o .c para la de catastro, que tiene información más completa de las construcciones, como son las capas de manzanas con patios, huecos, alturas..., pero alguna capa de aceras y viales con menos información. Este conjunto de cartografía se irá completando progresivamente a demanda.

Al activarse se carga la cartografía (tarda unos segundos) y aparece junto al botón de capas de fondos, de color verde, otro de color morado para activar/desactivar el municipio elegido. En este color morado se muestran también las capas, bajo un objeto que representa el nodo raíz del municipio y todas ellas bajo el resto de capas editables de nuestro archivo o contenido inca de BD.

· Actualizado contenido de archivos inca en la web https://municipios.ingra.es. El clic en un archivo de un municipio *.inca, abre directamente la aplicación inca con el archivo para poder descargarlo y modificarlo si se desea. Se han quitado de la web los enlaces a archivos .dxi (formato antiguo). Actualizados archivos .inca de los municipios que se han rendido de tamaño comprimiendo coordenadas, quitando tramos duplicados con códigos $ y quitando duplicados de divisiones administrativas.

· Apps offline. Re-publicadas ingridTareas9.ingra.es e ingridAvisos9.ingra.es sólo para funcionar contra Ingrid v9 con las siguientes mejoras:
1. Simplificada librería para L/E en indexedDB, ahora ya no hay una capa de funciones intermedias.
2. Nueva lectura de códigos de barras y QR sin app Zxing (directo con cámara).
3. Nuevo modificador de campos en BD ‘R’ para indicar que es requerido al enviar cerrada una tarea desde app y también para cerrar documentos, tareas y cierre de cualquier conceptos con feccer desde la aplicación. La búsqueda de campos requeridos se realiza hacia arriba por todas las clases (por ejemplo per > rec > con).
4. Grabación de datos de tareas a demanda SIN CERRARLA en ingridTareas9 (si hay conexión).
5. En ingridTareas9, listas de consumos con nº de líneas dinámico (no fijas dependientes de nº de personas del grupo de trabajo) y menú contextual para mover, insertar y eliminar. Ahora se pueden insertar las que se quieran para tareas de varios días, por ejemplo.
6. Ahora en la lista de tareas mapa, etc., se muestran los mismos iconos que en la aplicación por CLASE (no los particulares de concepto), en vez de unos genéricos.
7. En tareas se copia la georreferencia del bin, cuando la tarea no tiene
8. Para aligerar, no se pasan las fotos de tareas de BD a la app
9. En el mapa se muestra entre todas las georreferencias la de la tarea actual más grande.
10. Doble clic en mapa para cambiar la ubicación.

· Soportado con url de BD (https://{servidor}[:puerto]/{bd}/{dir_bajo_ima}/{nombre_archivo}.{ext}) los accesos directos (*.lnk) al directorio /ima de otra localización de red. Antes sólo estaba soportado en el servidor para webs, ahora para imágenes en BD e informes (que usan urls externas, no caminos de BD).

· Recuperada persiana formulario de Búsqueda en clases que se había quitado, complementando la barra de filtrado.

· RECORDAR: El formato de la información geográfica (inca) en los archivos .inca, en mongodb (almacenado en BD) y en memoria, es el mismo, o más bien, equivalente: en el archivo es un objeto por línea con el _id de BD y su info geográfica de forma relacional. En memoria se estructura con forma de árbol con un objeto raíz por cada inca, su lista de capas, dentro de cada una su lista de conceptos y dentro, su lista de geos. Además en cada inca en memoria hay un objeto incaO que tiene info global y precalculada de capas y sus relaciones, etc. con el fin de dibujar rápido, esta info se mantiene automáticamente en Ingrid y en la aplicación Inca, aunque creemos mapas inca con script no tenemos que gestionarla.

· NOTA: el carácter % está permitido en _id de conceptos, pero da problemas de acceso combinado con otros caracteres especiales como #$&”!;¨^ ... no se deben utilizar en el mismo _id.

Versión 10/02/25

- Terminadas mejoras en Inca, sobre todo en interface modo Cambia (puntos) y modo Mueve (entidades) en Bloques y Textos. Ahora, cambiar puntos, rota la entidad sobre el punto seleccionado, normalmente sin deformación (mantiene la relación de aspecto), igual que el modo Mueve. También en cambios de interface de modificación de Elipses (O) y Recuadros.

- Almacenes. Nuevas pestañas dinámicas de ‘Documentos con el recurso’ haciendo clic en el icono al final de cada línea de recursos en ‘Existencias calculadas’. Nos da el detalle de por qué documentos entran y salen las existencias por cada uno de los recursos.

· Mejorados datos y herramientas en procedimiento geográfico pro.geo.util.comun() ahora ofrece mucho más análisis de datos por entes y por nº de puntos, y herramienta para convertir los bloques rotados (de 3 puntos en v9) que por conversión antigua de v7 estaban almacenados con 2 puntos.

· Depuración de eventos cambiada a un sólo htm (sin js externo) con el mismo sistema que los procedimientos. Facilita la depuración (breakpoints, etc.).

· Programación de interface, lo que da cabida a personalizar completamente (al estilo del iwebdoc+iwebcli v7). Se puede usar desde la estructura interna detallada al máximo de la programación de la aplicación, hasta un alto nivel como intercambiar de orden las persianas de una ficha de clase (con sólo unas cuantas líneas).

Consiste en ejecutar un evento ‘cuerpo’ en las clases, que redefine todo o parte de las funciones de las clases deseadas. La programación se complementa con (no sustituye) la definición de campos y eventos en sus propias persianas. (para superadmin, al exportar eventos desde máquina cronos, si se pulsa el botón con CONTROL, se pone la cabecera de debug).

· Nuevo modo de clase (no se hereda) para mostrar los campos (listas) de relaciones en vez de en una persiana relaciones todas juntas, donde han sido definidas, entre los demás campos de la ficha.

· Puesto al día procedimiento de miniapp (ejemplo en cordoba-rsu3 > pro.cordoba.tomadatos) con las nuevas funciones de mapa (incaO) y algunas mejoras en la definición de botones de la barra y menú contextual del mapa.

- Volcado CSV de las listas ahora también vuelca los campos virtuales calculados en eventos (como longitud/latitud, búsqueda de padres, etc.).

 

2024

Versión 17/12/24

- Cambio de criterio en caminos de estilos a imágenes externas dentro de proyecto como iconos: ahora deben llevar el nombre de la BD delante del camino anterior y comenzado en / también, o sea, de:  /logos/IconoNoticias.png t:32  a  /mi-proyecto/logos/IconoNoticias.png t:32

- Cambiada de nombre y a promesas, la función ingra.Pdf()  a  await ingra.JsPDF(). En el procedimiento que se use hay que cambiar la lógica a async, claro. Se han repasado las BBDD comunes y de producción.

- Mejorado Inca (y por tanto, mapas de georref. en BD) con exportaciones a múltiples formatos OGC de bitmap y vectoriales (gpkg, svg, pdf, webp...) 

- IMPORTANTE: Cambiado API de funciones de interface de lectura/escritura de archivos (tanto con el file system local como a través de internet entre cliente y servidor.
De todos los interfaces (hasta 5) existentes, quedarán 2:

  · ingra.F.* de cliente para L/E de intercambio con el file system local desde el navegador
  · ingra.fetch.* de cliente y servidor usando GET Y POST para comunicaciones en internet entre ellos
        get_formato recibe formato
        post_formato que recibe formato y siempre devuelve un json, excepto:
        post_json_blob que recibe json y devuelve blob

Desaparecen:
  · ingra.fetch2.* internas de ingra.fetch
  · ingra.saveas* librería que ahora queda por debajo, internamente y que utilizará esta librería o cualquier otra futura. Pasan a ingra.F.graba* (text, ansi...)
  · ingra.file (utilizan inputfile, AJAX...) quedan internamente para gestión de formato
  · ingra.ajax.* (utilizan XMLHttpRequest) que pasan a ingra.fetch
  · ingra.F.sendData, ingra.F.sendFile, ingra.F.sendCanvas, que pasan a ingra.fetch   

- Ahora se soporta como archivos de texto para importar/exportar (y visualizar) el JSONL, que es una lista de objetos sintaxis javascript con un objeto por línea y retorno de carro, sin comas, ni ningún otro carácter.

· Completada y mejorada comunicación mediante Telegram para el bot @ingrid9_bot, ahora los archivos recibidos de texto se guardan en un archivo JSON por día con el nombre AAAAMMDD.json PERO ahora los archivos recibidos se guardan en un subdirectorio también por día AAAAMMDD para que no se acumulen cientos o miles y no se sobre-escriban.
Las fotos no tienen posición, se interpola su posición por la hora con las posiciones anterior y posterior, y se colorea en rojo.

· Mejorada seguridad de la comunicación cliente-servidor minimizando los datos entre máquinas, etc. Errores de validación más generales para no dar pistas. Marca de obligación de contraseñas complejas en la BD para que los usuarios tengan que cumplir los requisitos estándar.

- Actualizado codemirror para editar JS de programas y eventos, funciona mejor en tabulaciones, cierre de llaves, corchetes, paréntesis, no vacía el código si se hace control+Z al entrar, y otras mejoras. Sólo tiene 1 nivel de deshacer y rehacer (con control+Y) desde la última validación (abandonar el foco del editor o validar con control+INTRO).

- Mejorado servidor de aplicación y archivos

 

Versión 16/10/24

· Desaparece la persiana de búsqueda en clase en favor de la barra de filtrado que se muestra en cabecera con la lupa de la esquina superior derecha de listas. Además se puede filtrar en cualquier lista, no sólo en clases.

· Restricción de usuario R añadida en este orden: DCERL, para permitir mostrar en campos de tipo referencia el código/descripción de un concepto, pero no permitir saltar a su ficha. La L sigue siendo no ver nada de información del dato.

· Nueva librería XLSX que permite mucha más potencia de exportación con formato de manera sencilla.

· Nuevos diálogos más estándar en toda la aplicación (error, aviso, selección de conceptos...). Ejemplos en ingrid-comun > Procedimientos > diálogos modales con retorno de callback (uso tradicional) y con promesas.

· Soporte de fondos de mapas para georreferencias particulares en cada base. Se incorporan en el menú de fondos mediante conceptos de clase .map de la cual hay un amplio repositorio en ingrid-comun > Mapas.

· Nuevo tipo de campo multilínea (tms) para mejor gestión de edición en listas.

· A nivel tecnológico, ampliación de programación script con promesas, lo que permite una depuración mucho mejor en el entorno de desarrollo VSC y un código con una estructura más secuencial cuando el flujo con callbacks es muy complejo.

· Ampliadas y mejoradas muchas exportaciones a diversos formatos geográficos estándar con la librería GDAL del OGC. Ahora hay exportación a geopackage, mejorada exportación a SHP (ahora hay un control para filtrar las entidades Bloques, Líneas o Polígonos, que son excluyentes en este formato) y otros. En ingrid-comun > Exporta > pro.exporta.mapas · Exporta información geográfica [...]

· Mejora en logos de la aplicación para informes y cabecera de programa, ahora se puede definir muchos más y por ámbitos.

· Mejorada sensibilidad y algunas funciones limitadas en v8 para el uso de edición de mapas en tablets.

 

Versión 11/04/24

· Los bloques dxi actualmente no están soportado que se redimensionen con 2 puntos cambiando su relación de aspecto, por lo que, al redimensionar, el recuadro no coincide con la envolvente del bloque.

· Puesto Menú > Configuración > Modos traslada para controlar en el drag/drop la información que se traslada ENTRE BASES, el defecto es que traslada los geos (que es parte de la información del documento) y no los conceptos relacionados ni los gráficos relacionados (que son otros documentos).

· Reestructurado Inca para que los bloques se escalen y roten con un vector de dos puntos (como en v8), no inscritos en un recuadro de 4 puntos (como en v7). 

 

Versión 02/01/24

· Primera versión para producción de Ingrid 9. Se continúa el desarrollo en esta versión 9 para proyectos que requieran nuevas herramientas y para ampliaciones procedentes de medea. CONGELADA VERSIÓN 8, MODIFICACIONES SÓLO PARA CORRECCIÓN DE ERRORES.

· Incorporación sobre versión 8 de Inca 9 como motor de mapas en la aplicación (también es la versión estable como aplicación vectorial online independiente).

· Incorporación del drag&drop avanzado de medea que permite copiar y pegar conceptos entre páginas de distintas bases,  mover elementos dentro de las propias listas, y otros.

· Desaparece archivo de configuración de logos en cabecera de interface del cliente \ima\ingrid.json, la configuración se realiza tanto para ventana como para informes en Menú > Configuración > Procedimientos