Reglas de visibilidad condicional entre campos del formulario
El constructor permite definir cuándo se muestra un componente según el valor de otro campo, y la vista del documento aplica esas condiciones.
Estás sin conexión. Las páginas ya abiertas siguen disponibles; los enlaces pueden necesitar conexión.
Consulta cada publicación de la oficina y del servidor que la sostiene, con el ambiente alcanzado y el detalle registrado.
Agregamos reglas de visibilidad condicional en formularios y unificamos la administración de usuarios activos y deshabilitados, con acciones individuales y masivas.
El constructor permite definir cuándo se muestra un componente según el valor de otro campo, y la vista del documento aplica esas condiciones.
Se puede elegir el componente que crea al hijo, su plantilla y el campo exacto que se mostrará en el documento padre.
Se restauraron el aspecto del acceso, los filtros activos y la navegación entre carpetas, documentos y vistas de recursos.
Las acciones de la ficha y de la lista mantienen el contexto correcto al consultar o preparar documentos para un usuario.
Las listas de usuarios de Oficina y de la app permiten aplicar el cambio a una persona o a una selección, conservando sus roles y asignaciones.
El estado queda visible en las tablas, los filtros, los formularios y las fichas de ambos tipos de usuario.
Ampliamos el editor de formularios con controles para líneas, bordes, tablas, encabezados, pies de página y nombres de archivos.
Restauramos la apertura de documentos públicos sin sesión y ajustamos el servidor para permitir su lectura.
La página pedía el documento por la ruta con empresa, que exige sesión, incluso cuando se abre como vista pública. Ahora usa la ruta pública cuando no hay empresa activa, y también para la ruta de carpetas y los documentos hijos.
La lectura pasaba siempre por la comprobación de empresa, que no aplica a un enlace público. Se separó en dos caminos: lectura pública y lectura autorizada por empresa; la pública además no dispara la sincronización de un documento ausente. Va con pruebas unitarias de los dos caminos.
Ahora el servidor recupera del almacenamiento las fotos de formulario que no llegan en los datos principales.
Cuando el documento no tiene la referencia de la imagen, se busca el archivo en el prefijo de S3 que ya existe para ese formulario y gana la más reciente. No escribe nada: la referencia guardada sigue siendo la fuente principal. Exige sesión de la misma empresa y falla cerrado a las 100 páginas, 100.000 objetos o 15 segundos de recorrido.
Corregimos los colores en PDF y desplegables, la presentación del logo y el mensaje de confirmación al re-sincronizar.
Los indicadores de color (CUMPLE / NO CUMPLE / NO APLICA, casillas, tablas) se dibujaban con el ajuste de impresión heredado, así que Chromium descartaba los rellenos al generar el PDF: se perdía el color y quedaba solo el texto. Ahora cada indicador declara color exacto.
La vista de solo lectura, que es la que usa el PDF, dibujaba el valor como texto plano e ignoraba el color y el fondo configurados por opción. Con esto el PDF oficial deja de perder el formato de los campos de estado.
Estaba en una caja cuadrada fija sin ajuste de proporción: un logo no cuadrado se estiraba, y al colapsar el panel los 40 px del logo desbordaban los 32 px disponibles.
Nombraba Firestore, BigQuery y «re-emitir». Ahora dice qué hace —actualiza el documento con la información más reciente— y qué no hace: no sobrescribe lo editado en la oficina. En los tres idiomas.
Renovamos la lista y los filtros de documentos, mejoramos la navegación por carpetas y añadimos herramientas para reparar el acceso a la app.
Una fila por documento con estado a color, responsable, fecha relativa y número; el conmutador Lista / Tarjetas recuerda la preferencia y abre en Lista. La búsqueda salió del acordeón, los filtros por estado muestran su contador y los filtros activos quedan a la vista. Las carpetas dejaron de mostrar un «0 documentos» engañoso.
Los filtros pasaron a una barra de chips desplegables (Tipo, Estado, Fecha, Elaborado por, Tipo de documento) con Limpiar, en lugar de pastillas siempre visibles y un acordeón. Las páginas de ver y editar un documento muestran la ruta completa de carpetas, hasta ocho niveles.
Diálogo de dos pasos —auditar y luego reparar— que detecta usuarios de la app sin cuenta de acceso y la crea. Al crear un usuario sin contraseña, se avisa cuál es la inicial.
Casilla por usuario encontrado, seleccionar todos con estado intermedio, y reparar actúa solo sobre lo marcado; con nada marcado el botón se desactiva y dice por qué. Operable con teclado.
Al crear o importar un usuario de la app sin contraseña se asigna la inicial, y el nombre de usuario se valida único dentro de la empresa. Se agregaron los dos endpoints que auditan y reparan el acceso, acotados a la empresa y protegidos contra colisiones.
El listado de la carpeta ahora trae solo los formularios de primer nivel; los hijos siguen apareciendo dentro de su formulario, sin duplicarse.
Era el camino normal al crear un acceso, y llenaba el registro en cada reparación tapando las fallas reales.
Hicimos más claras y confiables la importación de plantillas y la búsqueda global de documentos.
La barra de la lista mostraba «Request failed with status code 400» en lugar del mensaje del servidor.
La importación se tragaba cualquier error y reportaba «importación exitosa» aunque no hubiera creado la plantilla. Ahora valida y explica: identificador no encontrado o mal formado, plantilla de origen sin categoría, o categoría borrada.
Cualquier filtro desactiva el acotado a carpetas, así que la búsqueda recorre todos los tipos de la empresa. Lleva un límite de 300 caracteres para que una búsqueda no pueda bloquear el servidor, y se agregaron pruebas de aislamiento entre empresas.
Añadimos re-sincronización acotada con vista previa, soporte por documento y mejores herramientas para las claves de plantilla.
Filtros por plantilla, estado y fechas, con el conteo y una muestra de documentos antes de confirmar; la vista previa corre sola al abrir y al cambiar un filtro. Quedó un solo botón en el menú de tres puntos, que se adapta a la selección: sin selección re-sincroniza por filtros, con selección los seleccionados.
Acción en el menú de la fila y botón en la vista de detalle. Pide confirmación, exige permiso de creación y nunca dispara una sincronización masiva.
Un panel dentro del campo de claves detecta las de la plantilla que no están en la configuración y permite agregarlas, una a una o varias marcadas, sin salir del formulario del documento.
La etiqueta de tipo quedó en línea y el nombre largo se recorta solo lo necesario.
Herramienta de autor para posicionar las marcas numeradas sobre cada captura, 99 posiciones calibradas en los manuales de activos, usuarios y ubicaciones, marcas más chicas en móvil y el mismo menú lateral en las cuatro páginas. Se corrigió el voseo a español neutro.
Los filtros por plantilla y estado se agregan después del corte por identificadores, para que la protección contra una sincronización masiva siga en pie. La vista previa cuenta y lista hasta 100 documentos sin tocar Firestore ni el registro de analíticas.
Reusa el mismo flujo que la re-sincronización por fechas. Con una lista vacía no hace nada, en lugar de sincronizar todo.
Guardar desde la oficina enviando parte de los datos anulaba los campos relacionales del documento.
Limpiamos la vista y el PDF de elementos de edición y habilitamos el selector de palabras clave para usuarios de la app.
Al generarlo se ocultan los avisos, el panel lateral, la cabecera y el menú, que antes aparecían impresos en el documento.
El interruptor de «Modo lectura» quedaba visible y el documento podía abrir en edición sin que nadie lo pidiera.
Estaba deshabilitado cuando el origen del campo eran usuarios de la app.
Incorporamos plantillas por módulo, aplicación masiva y una lista de activos renovada, con correcciones en claves, filtros y sincronización.
Interfaz de plantillas en los tres módulos, el formulario de activo convertido en asistente por pasos, aplicación masiva de una plantilla desde la lista, y una vista previa de qué atributos se van a reemplazar antes de aplicarla.
Con el filtro por plantilla persistiendo entre visitas.
Limpiar los indicadores de la lista reiniciaba también el filtro por plantilla y la cantidad de filas.
Para activos, ubicaciones y usuarios de la app, en los tres idiomas.
Diez cambios de tipado dejaron el proyecto sin compilar y dañaron trabajo que estaba en curso. Se revirtieron los diez y se reparó lo afectado hasta que el proyecto volvió a compilar.
Incluye el endpoint que aplica una plantilla a varios registros y filtros nuevos por deshabilitado, activo y solo raíz.
Se leía el identificador interno como binario y el resultado ya no se podía convertir de vuelta: la operación terminaba en «Cast to ObjectId failed».
Faltaban los textos de clave y de huella de importación, así que cualquier choque salía como «Ocurrió un error». En los tres idiomas, con el mismo texto que la oficina.
Adaptamos el constructor y el editor a pantallas pequeñas y contenido variable, y retiramos la versión anterior.
La zona de arrastre pasó a una cuadrícula que se adapta al ancho y el constructor de tablas se rehízo sobre ella. Los despliegues de ese periodo no dejaron registro de qué cambió; el alcance se reconstruyó revisando el código.
El campo pasó a un área de texto que ajusta su alto al contenido, en lugar de recortar lo escrito.
718 archivos y 81.597 líneas de la versión anterior del proyecto.
Añadimos recuperación y re-sincronización por fecha para documentos faltantes.
Con aviso de que el proceso puede tardar varios minutos, y mensajes de inicio y término.
Busca documentos que existen en analíticas pero no en el sistema y los crea.
Los dos despliegues de ese día no dejaron registro de qué cambió; el área se reconstruyó revisando el código.
Mejoramos la representación de documentos, la vista de activos y su formulario.
Los componentes compuestos se expanden en los elementos que contienen, ordenados por posición, y las tablas se dibujan con el constructor de tablas en lugar de quedar vacías. El despliegue no dejó registro de qué cambió; el alcance se reconstruyó revisando el código.
El despliegue no dejó registro de qué cambió; el área se reconstruyó revisando el código.
Actualizamos la lista y la barra de documentos, y ampliamos el registro de analíticas por categoría.
El despliegue no dejó registro de qué cambió; el área se reconstruyó revisando el código.
Se amplió lo que se envía a analíticas y quedó documentado qué campos recibe cada categoría.
Corregimos el dibujado de formularios y ajustamos la sincronización y el registro de analíticas.
El despliegue no dejó registro de qué cambió; el área se reconstruyó revisando el código.
El despliegue no dejó registro de qué cambió; el área se reconstruyó revisando el código.
Iniciamos mejoras en el constructor de formularios y en la vista de documentos.
Zona de arrastre, constructor de plantillas y vista de documento. El despliegue no dejó registro de qué cambió; el área se reconstruyó revisando el código.
Una guía de las mejoras documentadas para Activos, Ubicaciones y Usuarios de la app.
El registro de cambios describe una barra contextual para gestionar varios documentos a la vez.