7. Afegir camps
Aquest procediment permet la creació, modificació i eliminació de camps en un element concret del sistema o en tots els elements del mateix tipus (cat_feature).
Aquesta funcionalitat és útil quan cal emmagatzemar informació que no està contemplada en el model de dades estàndard de Giswater.
És important destacar que el sistema de camps addicionals no afegeix columnes directament a les taules pare (node, arc, connec). Per aquesta raó, aquests camps no es poden consultar directament en aquestes taules, però sí que estaran disponibles:
En els formularis de QGIS.
En les vistes filles.
Descripció general
Per dur a terme aquest procés cal disposar de permisos d’administrador, ja que les vistes afectades es modifiquen automàticament quan es crea, actualitza o elimina un camp addicional.
El procés consta de dos passos diferenciats:
Creació del camp a la base de dades, descrita en aquest protocol.
Configuració de la visualització del camp al diàleg, detallada en el protocol config_form_fields
Consideracions tècniques
La informació associada als camps addicionals s’emmagatzema a les taules següents:
sys_addfields
config_form_fields
Com que la vista de l’element al qual s’afegeix un camp addicional es recrea automàticament cada vegada que es crea, actualitza o elimina un camp, hi ha una funció específica dissenyada per realitzar de forma integrada totes les operacions necessàries relacionades amb la gestió de camps addicionals.
Creació d’un camp addicional
La crida a la funció és:
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àmetres de la funció
SCHEMA_NAME: és el nom de l’esquema.
“catFeature”: és l’entitat a la qual volem afegir un nou camp.
“action”: l’acció que preténem realitzar, que en aquest cas serà CREATE.
“multi_create”: MOLT IMPORTANT, permet la creació del camp addicional PER A TOTES LES ENTITATS del mateix tipus (nodes, arcs, connec o gully segons la triada)
«columnname”: el nom del camp addicional. Els caràcters especials estan estrictament prohibits.
«datatype»: el tipus de dada; consulteu els disponibles en aquesta consulta:
SELECT id
FROM SCHEMA_NAME.config_typevalue
WHERE typevalue = 'datatype_typevalue'
«widgettype»: el tipus de widget a utilitzar; consulteu els disponibles en aquesta consulta:
SELECT id
FROM SCHEMA_NAME.config_typevalue
WHERE typevalue = 'widgettype_typevalue'
«label»: «addfield_all», l’etiqueta que es mostrarà a l’usuari al diàleg.
«ismandatory»: si el camp és obligatori per a l’usuari
«fieldLength»: longitud del camp.
«numDecimals»: nombre de decimals.
«active»: si el camp està actiu o volem deixar-lo per a un altre moment.
«iseditable»: si el camp és editable per l’usuari.
Avís
Aneu amb compte amb la sintaxi de les peticions JSON. És molt fàcil cometre errors. Recomanem ser molt curosos en aquest punt.
Eliminació d’un camp addicional
Si volguéssim eliminar un camp addicional, procediríem així:
SELECT SCHEMA.gw_fct_admin_manage_addfields($${
"client":{"lang":"ES"},
"feature":{"catFeature":"PUMP"},
"data":{"action":"DELETE", "multi_create":"true", "parameters":{"columnname":"pump_test"}}}$$)