Campos Personalizados
Los campos personalizados son campos que se pueden añadir a algunos elementos de los módulos de Gobierto como las Cartas de Servicios o los Planes.
Los campos personalizados se pueden definir a nivel de módulo (aparecen en todos los elementos de los tipos para los que están definidos) o a nivel de instancia (en el caso de planes, se pueden definir los campos personalizados de los proyectos de un plan en concreto)
Para crear un campo personalizado se ha de elegir un nombre, un identificador (este identificador sirve para hacer referencia a este campo desde otros), el tipo y configuraciones adicionales dependientes del tipo.
Tipos de campo
Texto (línea)
Se trata de un texto breve que se presentará como un text field en el formulario de edición del elemento para el que está definido este campo, con un valor para cada idioma configurado en el sitio
Texto sin traducciones (línea)
Tiene las mismas características que el anterior campo pero no admite traducciones
Texto largo
Se trata de un texto largo que se presentará con un editor de texto con un valor para cada idioma configurado en el sitio.
Texto largo sin traducciones
Como el anterior pero no admite traducciones
Selección única
Con este campo se genera un select con las opciones que se definan en la administración del campo
Selección múltiple
Con este campo se genera un select con las opciones que se definan en la administración del campo
Color
Almacena un color y proporciona un selector de color en el formulario del elemento para el que está definido.
Imagen
Proporciona una interfaz para adjuntar imágenes desde el formulario del elemento para el que está definido. Este campo de una opción múltiple que de ser habilitada permite añadir y gestionar diversas imágenes.
Fecha
Permite gestionar fechas. Dispone de dos opciones:
- Fecha. Mostrará en el formulario un selector de fecha
- Fecha y hora. Mostrará en el formulario un selector de fecha y hora
Vocabulario
Para este campo se configura un vocabulario y se puede establecer el tipo de selección que se puede establecer sobre el vocabulario:
- Selección única. Se muestra un select que solo admite un valor en el formulario
- Selección múltiple. Se muestra un select2 en el que se pueden seleccionar múltiples términos
- Tags. Se muestra un select2 en el que se pueden seleccionar y añadir elementos nuevos
Número
Con este campo se genera un campo numérico. Los valores pueden incluir decimales. Dispone de dos opciones para el tipo de unidad. No afecta a la interfaz en la edición de sus valores desde el panel de administración, pero se informa desde la API. Estas son las opciones:
- Genérica
- Monetaria
Plugin
Los plugins son campos personalizados que se pueden instalar como aplicaciones externas.
Tabla
Este plugin permite crear una tabla en la que previamente se han definido las columnas que la conforman y para cada recurso asociado se pueden añadir, editar y eliminar sus filas correspondientes.
La configuración por defecto de un plugin de tipo tabla consiste en un listado de definiciones de columnas y un category_term_decorator
opcional que se describe a continuación. Este es un ejemplo de su estructura:
{
"columns": [
],
"category_term_decorator": ···
}
Cada uno de los elementos de columns es un objeto que ha de constar de:
id
: Un identificador de la columna, que ha de ser único por tablaname_translations
: Un objeto en el que para cada idioma configurado para el site se coloca el encabezamiento de la columna en el idioma correspondiente.type
: El tipo de columna. Actualmente hay 5 posibles tipos de columna:text
: Campo de tipo textointeger
: Campo numérico de tipo enterofloat
: Campo numérico que admite decimalesdate
: Campo de tipo flecha, despliega un selector de fechas cuando se seleccionavocabulary
: Este campo está asociado a un vocabulario y muestra un select cuyas opciones son los términos del vocabulario. Para configurar el vocabulario se ha de configurar la ruta de la API que devuelve la información del vocabulario en un campo denominadodataSource
dataSource
: La ruta de la API a un vocabulario. Si el vocabulario está dentro de la aplicación tiene la forma/admin/api/vocabularies/ID
, donde ID es el ID del vocabulario
Un ejemplo de configuración de tabla es el siguiente:
{
"columns": [
{
"id": "person",
"type": "text",
"name_translations": {
"en": "Person",
"es": "Persona"
}
},
{
"id": "phone_number",
"type": "integer",
"name_translations": {
"en": "Phone number",
"es": "Número de teléfono"
}
},
{
"id": "email",
"type": "text",
"name_translations": {
"en": "email",
"es": "Correo electrónico"
}
},
{
"id": "birthdate",
"type": "date",
"name_translations": {
"en": "Birthdate",
"es": "Fecha de nacimiento"
}
},
{
"id": "position",
"type": "vocabulary",
"dataSource": "/admin/api/vocabularies/74",
"name_translations": {
"en": "Position",
"es": "Puesto"
}
}
]
}
La opción category_term_decorator permite especificar en el caso de planes la manera en la que se va exponer el contenido por parte de la API, dado que algunos de estos custom fields están asociados a otras fuentes de datos o contiene datos en bruto que han de ser procesados. Estas son las opciones para category_term_decorator
:
human_resources
human_resources
Se trata de una tabla en la que hay una serie de recursos humanos con un coste total, una fecha de inicio y otra de fin. Lo que devuelve la API para una tabla de este tipo es el coste planificado, correspondiente a la suma de todos ellos, y el ejecutado, correspondiente a la suma de cada coste ejecutado a fecha de hoy distribuyendo su coste entre la fecha de inicio y la de fin. Se espera que la tabla que disponga como mínimo de las siguientes columnas con los identificadores y tipos especificados:
- Fecha de inicio: Con id
start_date
y tipodate
- Fecha de fin: Con id
end_date
y tipodate
- Coste: Con id
cost
y tipointeger
,float
otext
(su contenido va a ser transformado a un valor decimal)
Este es un ejemplo de definición de tabla de recursos humanos:
{
"columns": [
{
"id": "human_resource",
"type": "vocabulary",
"dataSource": "/admin/api/vocabularies/79",
"name_translations": {
"en": "Human resource",
"es": "Recurso humano"
}
},
{
"id": "cost",
"type": "text",
"name_translations": {
"en": "Cost",
"es": "Coste"
}
},
{
"id": "start_date",
"type": "date",
"name_translations": {
"en": "Start date",
"es": "Fecha de inicio"
}
},
{
"id": "end_date",
"type": "date",
"name_translations": {
"en": "End date",
"es": "Fecha de fin"
}
}
],
"category_term_decorator": "human_resources"
}
Para una tabla con este contenido:
Recurso humano | Coste | Fecha de inicio | Fecha de fin |
---|---|---|---|
Grupo B | 10000 | 2019-01-01 | 2020-12-31 |
Grupo C | 10000 | 2019-01-01 | 2020-12-31 |
Grupo C | 10000 | 2019-01-01 | 2019-12-31 |
El resultado en el front, a fecha de 10/06/2020 sería:
Inicial - 30.000,00 € - 100%
Ejecutado - 24.411,00 € - 81 %
indicators
indicators
La tabla contiene una serie de indicadores que tienen un nombre y una descripción (opcional, puede estar en blanco), un valor objetivo, un valor y una fecha. Mediante este decorator se indica a la API que para cada indicador devuelva el nombre, la descripción, el valor alcanzado en la última fecha y la última fecha.
Se espera que la tabla que disponga como mínimo de las siguientes columnas con los identificadores y tipos especificados:
- Indicador: Puede ser una columna con id
indicator
de tipovocabulary
(el nombre y la descripción del indicador se sacan del término correspondiente) o bien dos columnas de tipotext
e identificadoresindicator
ydescription
. - Objetivo: Con id
objective
y tipofloat
- Valor: Con id
value_reached
y tipofloat
- Fecha: Con id
date
y tipotext
. Puede ser un año, un año con mes o una fecha completa en formato YYYY-MM-DD - Coste: Con id
cost
y tipointeger
,float
otext
(su contenido va a ser transformado a un valor decimal)
Este es un ejemplo de definición de tabla de indicadores:
{
"columns": [
{
"id": "indicator",
"type": "vocabulary",
"dataSource": "/admin/api/vocabularies/80",
"name_translations": {
"en": "Indicator",
"es": "Indicador"
}
},
{
"id": "objective",
"type": "float",
"name_translations": {
"en": "Objective",
"es": "Objetivo"
}
},
{
"id": "value_reached",
"type": "float",
"name_translations": {
"en": "Value reached",
"es": "Valor alcanzado"
}
},
{
"id": "date",
"type": "text",
"name_translations": {
"en": "Date",
"es": "Fecha"
}
}
],
"category_term_decorator": "indicators"
}
Para una tabla con este contenido:
Indicador | Objetivo | Valor alcanzado | Fecha |
---|---|---|---|
Municipios afectados | 30 | 10 | 2017 |
Municipios afectados | 35 | 30 | 2018 |
Municipios afectados | 40 | 38 | 2019 |
Municipios afectados | 42 | 41 | 2020 |
Sector forestal - Hectáreas afectadas | 50 | 47 | 2019 |
El resultado en el front sería:
Municipios afectados - 41
Sector Forestal - Hectáreas afectadas - 47
raw_indicators
raw_indicators
Este decorator espera una tabla igual que el anterior, sin embargo no es necesario usar unos nombres específicos de columna, pudiéndose usar los deseados, pero sí que hay que atenerse a una serie de particularidades:
- Devuelve una serie de tablas agrupadas por la primera columna que se haya especificado.
- La segunda columna que se añada ocultará su título.
- Si existe una columna con un id llamado date los datos serán ordenados por fecha descendiente.
Por tanto, el ejemplo anterior con raw_indicators
devolvería lo siguiente:
Municipios afectados
Objetivo | Valor Alcanzado | |
---|---|---|
2020 | 42 | 41 |
2019 | 40 | 38 |
2018 | 35 | 30 |
2017 | 30 | 10 |
Sector forestal - Hectáreas afectadas
Objetivo | Valor Alcanzado | |
---|---|---|
2019 | 50 | 47 |
Progreso
El plugin de progreso se emplea para calcular automáticamente el progreso de un proyecto en función de otros campos personalizados. Para ello, en el campo de Configuración del plugin se ha de colocar el listado de uids de otros campos personalizados a partir de cuyos valores se va a calcular el progreso.
{
"custom_field_uids": [
]
}
Al guardar la configuración del plugin se verifica que los uids hacen referencia a campos existentes y que son capaces de proporcionar un valor de progreso
Updated almost 4 years ago