7. Añadir campos

Este procedimiento permite la creación, modificación y eliminación de campos en un elemento concreto del sistema o en todos los elementos del mismo tipo (cat_feature).

Esta funcionalidad es útil cuando es necesario almacenar información que no está contemplada en el modelo de datos estándar de Giswater.

Es importante destacar que el sistema de campos adicionales no añade columnas directamente a las tablas padre (node, arc, connec). Por esta razón, estos campos no se pueden consultar directamente en esas tablas, pero sí estarán disponibles:

  • En los formularios de QGIS.

  • En las vistas hijas.

Descripción general

Para llevar a cabo este proceso es necesario disponer de permisos de administrador, ya que las vistas afectadas se modifican automáticamente cuando se crea, actualiza o elimina un campo adicional.

El proceso consta de dos pasos diferenciados:

  1. Creación del campo en la base de datos, descrita en este protocolo.

  2. Configuración de la visualización del campo en el diálogo, detallada en el protocolo config_form_fields

Consideraciones técnicas

La información asociada a los campos adicionales se almacena en las siguientes tablas:

sys_addfields

config_form_fields

Dado que la vista del elemento al que se añade un campo adicional se recrea automáticamente cada vez que se crea, actualiza o elimina un campo, existe una función específica diseñada para realizar de forma integrada todas las operaciones necesarias relacionadas con la gestión de campos adicionales.

Creación de un campo adicional

La llamada a la función es:

SELECT SCHEMA_NAME.gw_fct_admin_manage_addfields(
  $${"client":{"lang":"ES"},
     "feature":{"catFeature":"PUMP"},
     "data":{
        "action":"CREATE",
        "multi_create":"true",
        "parameters":{
           "columnname":"addfield_all",
           "datatype":"string",
           "widgettype":"text",
           "label":"addfield_all",
           "ismandatory":"False",
           "fieldLength":"50",
           "numDecimals": null,
           "active":"True",
           "iseditable":"True"
        }
     }
  }$$);

Parámetros de la función

SCHEMA_NAME: es el nombre del esquema.

“catFeature”: es la entidad a la que queremos añadir un nuevo campo.

“action”: la acción que pretendemos realizar, que en este caso será CREATE.

“multi_create”: MUY IMPORTANTE, permite la creación del campo adicional PARA TODAS LAS ENTIDADES del mismo tipo (nodes, arcs, connec o gully según la elegida)

«columnname”: el nombre del campo adicional. Los caracteres especiales están estrictamente prohibidos.

«datatype»: el tipo de dato; consulte los disponibles en esta consulta:

SELECT id
 FROM SCHEMA_NAME.config_typevalue
 WHERE typevalue = 'datatype_typevalue'

«widgettype»: el tipo de widget a utilizar; consulte los disponibles en esta consulta:

SELECT id
 FROM SCHEMA_NAME.config_typevalue
 WHERE typevalue = 'widgettype_typevalue'

«label»: «addfield_all», la etiqueta que se mostrará al usuario en el diálogo.

«ismandatory»: si el campo es obligatorio para el usuario

«fieldLength»: longitud del campo.

«numDecimals»: número de decimales.

«active»: si el campo está activo o queremos dejarlo para otro momento.

«iseditable»: si el campo es editable por el usuario.

Advertencia

Tenga cuidado con la sintaxis de las peticiones JSON. Es muy fácil cometer errores. Recomendamos ser muy cuidadosos en este punto.

Eliminación de un campo adicional

Si quisiéramos eliminar un campo adicional, procederíamos así:

SELECT SCHEMA.gw_fct_admin_manage_addfields($${
"client":{"lang":"ES"},
"feature":{"catFeature":"PUMP"},
"data":{"action":"DELETE", "multi_create":"true", "parameters":{"columnname":"pump_test"}}}$$)