Formularios
Dernière mise à jour
Dernière mise à jour
K2 Geospatial 2022
Los formularios se utilizan en JMap para ingresar los parámetros de búsqueda en las consultas de selección por atributos, para el ingreso de los datos de los atributos de las capas editables y para la gestión de los datos almacenados en las bases de datos, siempre que éstos estén relacionados con los elementos de una capa. Existe también un tipo de formulario denominado subformulario, al que se accede a partir de un formulario.
El administrador JMap concibe los formularios mediante el diseñador de formularios y los usuarios pueden luego utilizarlos en las aplicaciones JMap Pro, JMap Web, JMap NG y JMap Survey. Según los permisos acordados, los usuarios pueden utilizar los formularios de ingreso de datos para visualizar, añadir, modificar o suprimir los datos.
Si el administrador no crea un formulario para ingresar los atributos de los elementos de una capa, JMap genera un formulario por defecto. Este formulario es muy simple y presenta los atributos disponibles. Siempre es mejor crear un formulario que responda perfectamente a sus necesidades específicas.
Las secciones siguientes explican en detalle el proceso de creación de los formularios así como la función de cada tipo de formulario.
La interfaz de diseño de formularios permite definir el contenido y disposición de los formularios utilizados para el ingreso de atributos y para las consultas de selección por atributos.
Cada formulario está estructurado en forma de grilla con un número parametrable de filas y de columnas. Se pueden añadir filas y columnas en todo momento. Las filas vacías al final del formulario y las columnas vacías a la derecha del formulario se eliminan automáticamente al guardarlo.
Cada celda de la grilla puede contener un solo componente del formulario (etiqueta, campo de ingreso de texto, lista de valores, etc.) pero cada componente puede extenderse en el ancho sobre varias celdas.
El formulario puede estar estructurado en una o varias secciones. El usuario puede navegar a través de las mismas, lo que resulta útil en el caso de formularios largos y complejos.
La imagen siguiente muestra las partes principales del diseñador de formularios.
La mayoría de los componentes del formulario deben estar asociados a un atributo de una capa, a un campo en una base de datos o a un criterio de búsqueda, según el tipo de formulario que esté creando. Los componentes Etiqueta, Foto y Grupo constituyen las excepciones a esta regla.
Cada tipo de componente tiene su propia interfaz de configuración de parámetros. Los parámetros controlan el comportamiento y la apariencia del componente. El cuadro siguiente describe los parámetros que son comunes a varios componentes, seguido más abajo por una descripción de todos los componentes disponibles.
La figura muestra un ejemplo de la disposición de los componentes de un formulario.
El cuadro siguiente describe los distintos componentes disponibles para la creación de formularios así como sus parámetros específicos. Ciertos componentes no están disponibles para la creación de consultas de selección por atributos.
Si usted configura un formulario de base de datos debe asegurarse que los parámetros de cada componente del formulario son compatibles con las características del campo correspondiente en la base de datos. Por ejemplo, si en la base de datos un campo de tipo texto tiene un tamaño de 50 caracteres, el componente correspondiente del formulario, de tipo Texto, debe tener una tamaño máximo de 50 caracteres.
Ciertas funciones permiten inicializar los componentes de los formularios:
Usted puede definir reglas de validación para cada componente, a fin de disminuir los errores cuando los usuarios de las aplicaciones JMap Server (Pro, Survey, NG) ingresan los valores del componente. Otras reglas pueden ser creadas a nivel del formulario o de los subformularios. La sección Reglas de validación de los formularios presenta este tema.
Sólo las aplicaciones JMap Pro, JMap NG y JMap Survey toman en cuenta las reglas de validación de los componentes. Estas reglas son ignoradas en las aplicaciones JMap Web.
Las reglas que usted define a nivel de los componentes permiten:
Volver un campo “read-only” (sólo lectura) o “required” (obligatorio) en función de los valores de otros campos del formulario.
Calcular los valores de ciertos campos.
JMap utiliza JSonLogic, un lenguaje de programación que permite elaborar la sintaxis de las reglas y validarlas, dado que ofrece bibliotecas de evaluación de las expresiones en todos los lenguajes. Usted puede elaborar expresiones lógicas, matemáticas o de cadenas de caracteres.
Las reglas a nivel de los componentes permiten tres tipos de expresiones:
Los formularios de atributos de la capa y los formularios y subformularios de bases de datos le permiten definir reglas de validación global del formulario, basadas en múltiples campos.
Las reglas validan los valores de los campos del lado del cliente, es decir, los valores que los usuarios de las aplicaciones JMap ingresan en los formularios. La validación tiene lugar cuando se guarda el formulario, lo que no es posible si el formulario no respeta las reglas.
Sólo las aplicaciones JMap Pro, JMap NG y JMap Survey toman en cuenta las reglas de validación de los formularios. Estas reglas son ignoradas en las aplicaciones JMap Web.
Para configurar las reglas de un formulario o subformulario, abra la interfaz de configuración del formulario o subformulario:
Presione Crear para abrir la ventana de creación de una regla.
Presione Guardar.
Usted puede crear varias reglas para un formulario.
Las secciones Formulario de los atributos de una capa, Formulario de base de datos y Formulario de consulta de selección por atributos describen las etapas de creación de los formularios y subformularios. Los ejemplos citados se refieren a las tablas de esta figura:
Presione para abrir el menú y seleccione la opción Reglas. La interfaz que lista las reglas se visualiza.
Parámetros de los componentes de formulario
Atributo
Seleccione el atributo de la capa o la variable de la consulta al que se asocia el componente. Es el atributo o la variable cuyo valor será ingresado mediante este componente del formulario.
Obligatorio
Determine si el campo es obligatorio. El usuario podrá enviar el formulario sólo cuando los campos obligatorios estén completos (hayan recibido un valor). Para volver opcionales algunos de los campos debe desmarcar esta opción. En el diseñador de formularios los campos obligatorios son identificados con el símbolo .
Sólo lectura
Active esta opción para que el componente sea en modo Sólo lectura. El usuario no podrá modificar el contenido. Esta opción debería ser utilizada para un componente que tiene un valor por defecto.
Extensión
Por defecto, cada componente ocupa una sola célula. Si un componente se extiende en ancho sobre varias células, ingrese el número de células sobre las que el componente va a extenderse.
Infoburbuja
Este texto se visualiza en una infoburbuja cuando el usuario pasa sobre el componente con el cursor del ratón.
Etiqueta (prefijo)
Ingrese un texto estático que se visualizará arriba del componente.
Etiqueta (sufijo)
Ingrese un texto estático que se visualizará a la derecha del componente.
Ancho (pixeles)
Especifique el ancho en pixeles del campo de ingreso del componente, excluyendo la etiqueta en sufijo. El valor por defecto es 100. Cada columna del formulario adoptará automáticamente el ancho del componente más grande.
Valor por defecto
De manera opcional, ingrese un valor por defecto para inicializar el campo de ingreso. Es posible utilizar algunas funciones para inicializar el valor por defecto de un componente.
username()
Sustituida por el código de usuario del usuario.
fullname()
Sustituida por el nombre completo del usuario.
date()
Sustituida por la fecha actual.
datetime()
Sustituida por la fecha y hora actuales.
Obligatorio
Usted puede ingresar una expresión booleana que indica los casos en los que el campo es obligatorio. Es decir que si la expresión que usted ingresa es respetada (es verdadera), el campo es obligatorio. La expresión implica valores de otros campos del formulario.
Ejemplo
{"==" : [ { "var" : "STATUT" }, "done" ]}
Esta expresión para el campo MATERIAL, indica que cuando el usuario ingresa el valor “done” en el campo STATUT, debe ingresar un valor en el campo MATERIAL para poder guardar y cerrar el formulario.
Nota: Esta expresión es excluyente con el parámetro Obligatorio del componente. Si usted marca el parámetro Obligatorio, el campo es siempre obligatorio y la sección Obligatorio para definir la expresión lógica de la regla no está disponible. Si usted no marca el parámetro Obligatorio y define una regla, el campo se vuelve obligatorio sólo cuando la regla es respetada (verdadera).
Sólo lectura
Usted puede ingresar una expresión booleana que indica los casos en los que el campo es en modo sólo lectura. Es decir que si la expresión que usted ingresa es respetada (es verdadera), el campo es en modo sólo lectura. La expresión implica valores de otros campos del formulario.
Nota: Esta expresión es excluyente con el parámetro Sólo lectura del componente. Si usted marca el parámetro Sólo lectura, el campo es siempre en modo sólo lectura y la sección Sólo lectura para definir la expresión lógica de la regla no está disponible. Si usted no marca el parámetro Sólo lectura y define una regla, el campo se vuelve en modo sólo lectura solamente cuando la regla es respetada (verdadera).
Calculado
Usted puede ingresar una expresión matemática o de cadena de caracteres para calcular el valor de un campo. El resultado de esta regla es el valor del campo.
Ejemplo
{ "*" : [ 2, 3.1416, {"/": [ {"var" : "DIAMETER"}, 2] }] }
Esta expresión calcula el valor del campo CIRCONFERENCE a partir del valor del campo DIAMETER.
Nombre
Ingrese un nombre para la regla.
Expresión
Ingrese la expresión lógica que define la regla. La sintaxis es la de JSonLogic. Puede ingresar expresiones lógicas y/o matemáticas.
La expresión debe ser respetada para que el formulario sea validado y cerrado. Es decir que el usuario de una aplicación JMap (Pro, Survey, NG) debe ingresar los datos correctos para los campos afectados por la expresión para que se respete la regla (resulte verdadera) y se pueda guardar y cerrar el formulario.
Ejemplo
{“!”:[
{“and”:[
{“==”:[{“var”:“STATUT”},“done”]},
{“or”:[
{“==”:[{“var”:“MATERIAL”},“”]},
{“==”:[{“var”:“INSP_DATE”}, null]},
{“==”:[{“var”: “DIAMETER”}, null]},
{“<=”:[{“var”:“DIAMETER”}, 0]}
]}
]}
]}
Esta expresión indica que cuando el valor del campo STATUT es “done”, los campos MATERIAL, INSP_DATE y DIAMETER deben ser inicializados (sus valores no pueden ser nulos ni 0).
Nota: Actualmente, JMap no puede validar expresiones que contienen campos de tipo de fecha.
Mensaje
Ingrese el mensaje de error que aparece cuando se viola la expresión lógica. Puede ingresar el mensaje en varios idiomas.
Ejemplo
Los campos MATERIAL, INSP_DATE y DIAMETER no pueden ser nulos o vacíos si STATUS es 'Done'
1
Deslice un componente hacia una celda del formulario. Todas las celdas disponibles son realzadas.
2
3
Acceda a las secciones a partir de estas pestañas.
4
5
6
7
Etiqueta
Texto estático que se visualiza en el formulario.
El alineamiento del texto (izquierda, derecho o centrado) puede ser especificado, lo mismo que el estilo de la fuente de caracteres.
Es posible utilizar algunas funciones en el texto de la etiqueta.
Texto
Campo de ingreso de un valor alfanumérico. El campo asociado debe ser de tipo alfanumérico o numérico. Máscara de entrada: Puede ser utilizada para controlar el formato del valor ingresado. Multilínea: (Campos alfanuméricos solamente) Si esta opción está activada, el campo de ingreso se visualiza en varias líneas de texto, lo que facilita el ingreso de textos extensos. Número máximo de caracteres: (Campos alfanuméricos solamente) Determina la longitud máxima del texto que el usuario puede ingresar. Debe respetar las restricciones del campo de la base de datos que contiene los datos. Validación del rango de valores: (Campos alfanuméricos solamente) Permite definir un rango de valores aceptados (por ejemplo de 0 a 100).
Lista (opción única)
Lista de valores entre los cuales se puede seleccionar un sólo valor. El campo asociado debe ser de tipo alfanumérico o numérico.
Si el proyecto es multilingüe los valores de la lista pueden ser provistos en varios idiomas.
La lista puede ser dinámica, es decir que su contenido puede modificarse dinámicamente en función de la selección de un valor en otra lista. Por ejemplo, si selecciona un país en una lista, otra lista se actualiza automáticamente para mostrar sólo las ciudades del país seleccionado. Atributo padre Si la lista es dinámica, seleccione el atributo padre. Para ligar la lista B (hijo) a una lista A (padre), usted debe primero seleccionar el atributo padre para la lista B (atributo asociado a la lista A). Cada vez que hay un cambio en el valor seleccionado en la lista A, el contenido de la lista B se actualiza. Los valores en la lista B están determinados por la relación entre sus valores y los valores del atributo padre.
Los valores de la lista pueden ser ingresados manualmente, provenir de una base de datos o provenir de otra fuente. Valores Ingrese los valores en el espacio previsto especificando para cada caso el valor padre (sólo si la lista es dinámica), el valor que se utiliza en la base de datos y la etiqueta que se visualizará en la lista.
El valor ingresado será utilizado como dato.
La etiqueta sirve solamente para que el usuario visualice el dato.
En los casos en que el valor y la etiqueta son los mismos, ingrese el mismo valor las dos veces.
Si la lista no es dinámica deje el valor padre vacío. Obtener los valores de una base de datos Debe seleccionar la base de datos a partir de la cual desea obtener los valores.
Luego ingrese una expresión SQL que será ejecutada para obtener los valores padre (sólo si la lista es dinámica), los valores y las etiquetas que se visualizarán. Normalmente, las etiquetas deberían ser únicas y estar ordenadas.
Ejemplo
Lista de países disponible en inglés y español.
Esta lista no es dinámica.
Se asocia a un atributo COUNTRY.
select * from MY_TABLE where ITEM_TYPE = 'Country' order by ITEM_VALUE;
En este ejemplo el campo ITEM_VALUE contiene el valor, el campo ITEM_LABEL_EN contiene el nombre del país en inglés y el campo ITEM_LABEL_ES contiene el nombre del país en español.
No hay valor padre porque la lista no es dinámica (no tiene lista padre).
Ejemplo
Lista de ciudades disponible en inglés y español.
Esta lista es dinámica. Su atributo padre es COUNTRY y está asociado a la lista precedente.
Esta lista presenta la lista de las ciudades del país seleccionado en la lista padre.
select * from MY_TABLE where ITEM_TYPE = 'City' order by ITEM_VALUE;
En este ejemplo el campo ITEM_VALUE contiene el valor, el campo ITEM_LABEL_EN contiene el nombre de la ciudad en inglés y el campo ITEM_LABEL_ES contiene el nombre de la ciudad en español. El campo PARENT_VALUE contiene el valor padre.
Atención: La expresión SQL de una lista hijo debe incluir el campo que permite relacionarla con los valores padre. El ejemplo precedente utiliza select
para incluir todos los campos en la petición.
Nota: A veces las etiquetas que se presentan en una lista provienen de una tabla asociada a una fuente de datos espaciales almacenada en la base de datos System de JMap Server. En esos casos no se conoce el nombre de la tabla física. Para resolver este problema: en lugar del nombre de la tabla escriba el ID de la capa precedido por la sigla “DS”, entre dos símbolos $
.
Ejemplo
select distinct ID_CITY, CITY from $DS27$ order by CITY
Otro Puede ocurrir que otras fuentes estén disponibles para proveer los valores y las etiquetas. En ese caso, usted puede seleccionar esta opción y elegir la fuente en la lista de fuentes disponibles.
Lista (opciones múltiples)
Lista de valores entre los que puede seleccionar uno o varios.
El campo asociado debe ser de tipo alfanumérico.
El valor ingresado en el campo es la lista de ítems seleccionados, separados por comas (,). Los valores de la lista pueden ser ingresados manualmente o provenir de una base de datos o de otra fuente. Ver Lista (opción única) para más información. Ver la sección Valores múltiples para un mismo parámetro en Consultas de selección por atributos para obtener los detalles de la configuración de la expresión SQL.
Casilla de verificación
Permite establecer el valor del campo asociado, para el que existen solamente 2 valores posibles.
Estos 2 valores posibles deben ser especificados y pueden ser cadenas de caracteres (ej.: verdadero o falso) o numéricos (ej.: 0 o 1). Si el campo asociado es de tipo lógico o booleano, se deben utilizar obligatoriamente los valores true y false. Valor verificado: Valor que se ingresa si la casilla se marca. Valor no verificado: Valor que se ingresa si la casilla no se marca.
Calendario
Permite seleccionar una fecha.
El atributo de la capa o el campo utilizado en la consulta debe ser de tipo date, datetime o timestamp. Formato de fecha: Es el formato con el que se visualizará la fecha seleccionada en el componente calendario.
Si el usuario ingresa la fecha manualmente, deberá utilizar también ese formato (ej.: dd/MM/yyyy, yy/MM/dd H:ss, etc.).
Foto (No disponible para los formularios de consulta de selección por atributos)
Este componente permite al usuario insertar fotos en un formulario o en un subformulario.
En las aplicaciones JMap Survey permite tomar fotos con la cámara del dispositivo.
En las aplicaciones JMap Pro, JMap Web o JMap NG el usuario puede seleccionar imágenes existentes e insertarlas en el formulario o subformulario.
Un formulario o un subformulario puede contener sólo un componente de tipo Foto. En el caso de formularios de los atributos de una capa, las fotos pueden ser almacenadas en la base de datos System de JMap Server (no se requiere ninguna configuración) o en una base de datos externa.
En el caso de los formularios de base de datos que contienen este componente, las fotos se almacenan en una base de datos externa. Usted debe entonces definir los parámetros requeridos para dicho almacenamiento.
Almacenamiento de las fotos:
Seleccione la opción JMap para almacenar los datos en la base de datos System de JMap Server (disponible sólo para los formularios de atributos de una capa).
Las fotos seleccionadas por los usuarios se copian en el directorio JMAP_HOME\db\documents y la relación entre los elementos de la capa y la foto se añade a la tabla JMAP_DOCUMENTS de la base de datos System.
Seleccione la opción Externo para el almacenamiento en la base de datos o en el directorio de su elección.
La relación entre el elemento de la capa y la foto se almacena en la tabla y la base de datos de su elección.
Seleccione la opción Base de datos para guardar las fotos directamente en la base de datos, en un campo de tipo BLOB presente en la tabla. Debe entonces seleccionar el campo de tipo BLOB.
Seleccione la opción Sistema de archivos para guardar las imágenes en un directorio del sistema de archivos del servidor. Debe ingresar entonces la carpeta que contendrá los archivos de fotos.
Nota: Los campos Título de la foto y Comentario de la foto son novedades de JMap Server Istanbul. Si usted actualiza su servidor JMap Server Hanoi (o versión anterior) a JMap Server Kathmandu, usted debe modificar los formularios para seleccionar los campos de la tabla que contendrán esos parámetros para que los usuarios de la aplicaciones JMap puedan añadir un título o un comentario a las fotos.
Árbol
Este componente presenta un árbol de valores de N niveles. El usuario puede seleccionar un valor en el árbol, rama u hoja. Este valor se almacena en el atributo asociado.
El campo asociado debe ser de tipo alfanumérico.
Si el proyecto es multilingüe los valores de la lista pueden ser provistos en varios idiomas. El árbol presenta una estructura de datos padre-hijo, como las listas dinámicas ligadas entre ellas. A diferencia de las listas dinámicas, el árbol está asociado a un sólo atributo. Los valores del árbol pueden ser ingresados manualmente o provenir de una base de datos o de otra fuente. Valores Ingrese los valores en el espacio previsto construyendo la estructura del árbol. Para cada valor ingresado puede definir su padre (o la raíz del árbol). Obtener los valores de una base de datos Debe seleccionar la base de datos de la que desea obtener los valores.
Ejemplo
Árbol conteniendo países (nivel 1) y ciudades (nivel 2), disponible en inglés y francés.
select * from MY_TABLE;
En este ejemplo, el campo ITEM_VALUE contiene el valor, el campo ITEM_LABEL_EN contiene el nombre del país o de la ciudad en inglés y el campo ITEM_LABEL_FR contiene el nombre del país o de la ciudad en francés. El campo PARENT_VALUE contiene el padre.
Tabla (No disponible para los formularios de consulta de selección por atributos)
Este componente permite manipular datos provenientes de bases de datos externas a JMap Server y para las cuales existe una relación 1 a N con los elementos de la capa.
Ejemplo
Una capa de puntos representa los grifos de incendio en JMap y una base de datos externa a JMap contiene datos sobre las inspecciones realizadas a esos grifos de incendio.
Cada grifo puede haber tenido 0, 1 o varias inspecciones.
En el formulario de los atributos de la capa Grifos de incendio (formulario Assets), la tabla permite visualizar los datos de las inspecciones realizadas a un grifo de incendio, cada línea de la tabla correspondiendo a una inspección. Según los permisos acordados, la tabla también permite al usuario añadir, modificar o suprimir los datos de inspección. Pueden crearse subformularios imbricados en un formulario o un subformulario. En este ejemplo, cada inspección puede tener 0, 1 o varias intervenciones asociadas. La tabla permite en este caso, visualizar los datos de las intervenciones efectuadas en cada inspección.
La tabla está siempre asociada a un subformulario.
Este subformulario define la manera en que se accede a los datos externos y permite ingresar esos datos.
El subformulario debe haber sido creado previamente para poder configurar la tabla.
Subformulario: Seleccione un subformulario existente para ingresar los valores relacionados a la tabla. Campos: Permite gestionar los campos visualizados en la tabla.
Esos campos son los campos del subformulario asociado a la tabla.
Es posible modificar el título de los campos, su orden de presentación así como su visibilidad en la tabla. Es posible también modificar el formato de los campos numéricos y de tipo date.
Los parámetros de la tabla permiten definir los campos de datos externos que se visualizarán en la tabla y su orden.
Para obtener más detalles sobre la utilización de datos externos con los formularios de JMap, consulte la sección Formulario de base de datos.
Grupo
Este componente permite agrupar componentes del formulario.
Los componentes que pertenecen a un mismo grupo serán rodeados por un marco con un título. Para comenzar un nuevo grupo debe insertar este componente en una célula de una fila vacía. Este componente se extiende automáticamente a todas las células de la fila. No puede ser insertado en una fila que ya contiene otros componentes.
Presione para crear una nueva sección.Presione para reinicializar el formulario.
Presione y para insertar filas o columnas vacías en los lugares correspondientes.
El símbolo indica que el campo está configurado en modo sólo lectura.
El símbolo indica que se trata de un campo obligatorio.
El botón permite modificar los parámetros del componente. El botón permite suprimir el componente del formulario.
Los ejemplos siguientes utilizan la tabla MY_TABLE.
Si selecciona Externo, debe especificar los parámetros de configuración siguientes: Borrar las fotos con el elemento: Seleccione esta opción para que las fotos asociadas a un elemento sean suprimidas automáticamente si el elemento es borrado. Esta opción no está activada por defecto. Base de datos: Seleccione la base de datos donde se almacenan las fotos. Esta base de datos debe haber sido configurada previamente en JMap Admin. Tabla: Seleccione la tabla que contendrá la información sobre las fotos. Esta tabla debe tener la estructura siguiente. El nombre de la tabla y los nombres de los campos pueden variar. El campo de tipo BLOB no es necesario si el almacenamiento de las fotos se hace en disco y no en la base de datos. Ver la opción Persistencia de las fotos para más detalles. Campo ID de la foto: Seleccione el campo de la tabla que contendrá el identificador digital único de la foto. Campo ID del elemento: Seleccione el campo de la tabla que contendrá el atributo identificador del elemento de la capa. Este atributo se denomina atributo clave y se selecciona cuando se crea la fuente de datos espaciales a la que está asociada la capa. Campo Nombre del archivo: Seleccione el campo de la tabla que contendrá el nombre del archivo de las fotos. Campo título de la foto: Seleccione el campo de la tabla que contendrá el título de la foto. Campo comentario de la foto: Seleccione el campo de la tabla que contendrá el comentario de la foto. Este campo tiene 255 caracteres. Persistencia de las fotos:
Luego debe ingresar una petición SQL que se ejecutará para obtener los valores a partir de una tabla con relación padre-hijo. El ejemplo siguiente utiliza la tabla MY_TABLE.
Con esta configuración JMap construye el árbol siguiente:
La figura siguiente ilustra el diseño del formulario Assets con la componente Table que permite visualizar los datos de las inspecciones, ingresados a través del subformulario Inspections.
La figura siguiente ilustra el diseño del subformulario Inspections con los componentes Table que permiten visualizar los datos de las intervenciones y de los inspectores, ingresados a través de los subformularios imbricados Intervertions e Inspectors.