---
title: "¿Cómo conectar un visor GIS con gadgets en un Dashboard?"
canonical: "https://onesaitplatform-es.refined.site/space/DOC/2216691020/%C2%BFC%C3%B3mo%20conectar%20un%20visor%20GIS%20con%20gadgets%20en%20un%20Dashboard%3F"
format: markdown
---
> Macro (toc)

# Introducción

En este tutorial se va a explicar cómo conectar un **visor GIS** generado en la plataforma con otro **Gadget** para que interactúen entre ellos en un **Dashboard**.

Concretamente, se va a crear un mapa a partir de una Ontología con datos de la población y densidad de población de las diferentes Comunidades Autónomas de España, y un Gadget de diagrama de barras que muestra la distribución de la población a nivel nacional, y a nivel de comunidad cuando en el mapa se pinche sobre una de las comunidades.

Como una imagen vale más que sesenta palabras, a continuación se muestra el resultado que se obtendrá.

# Generación de la Ontología

Se empezará generando la **Ontología** de datos que contendrá la localización de los centroides de cada Comunidad Autónoma, así como los datos de población y densidad de población. Para este tutorial, se utilizarán los siguientes contenidos en el siguiente JSON: [(GIS) Cómo conectar un visor GIS con gadgets en un Dashboard](/wiki/pages/resumedraft.action?draftId=2216691020)

> ℹ️ ### Generación de la ontología
> ℹ️ 
> ℹ️ Si ya sabes cómo generar una ontología, puedes saltarte lo que viene a continuación y generarla por tu cuenta.

  


Para generar la ontología, en primer lugar habrá que navegar hasta el menú de **Desarrollo**, y selección la opción de **Mis Ontologías**.

![image](media://12a39649-2b87-4348-a727-2008dde3c6cd)

Aparecerá una pantalla con todas las ontologías que se tengan disponibles. Para generar una nueva, se pulsará en el botón de **Crear**, situado en la parte superior derecha de la pantalla.

> Macro (inline-media-image)

Con esto se lanzará el asistente de generación de ontologías, en donde se pregunta qué método de creación se quiere utilizar. Para este tutorial, se seleccionará la opción de **Creación paso a paso**.

![image](media://4cfe6453-4895-4b29-90f1-bc7e8c8e073a)

La siguiente pantalla corresponde con el formulario de creación de la Ontología, en donde se deberán introducir la siguiente información:

- <u>**Nombre de la ontología**</u>: nombre único de identificación de la ontología.
- <u><span style="color: #003366">**Meta-información**</span></u>: etiquetas que identifiquen a la ontología que se está creando.
- <u><span style="color: #003366">**Descripción**</span></u>: un pequeño texto que explique la ontología.
- <u>**Activo**</u>: si la ontología se encuentra activa o no. Por defecto está en activa, y hay que dejarla así.
- <u>**Pública**</u>: para permitir que la ontología sea accesible o no. Por defecto está desactivada, y hay que activar la opción.
- <u>**Permitir la encriptación de campos**</u>: esta casilla se dejará como está, desactivada.

![image](media://b5928cc9-4201-4e4b-9eb4-c5679516fdd4)

Tras introducir la información básica de la ontología, a continuación se seleccionará la plantilla de la Ontología. De entre las disponibles, se seleccionará la categoría de **General**, subcategoría de **Plantilla Vacía**.

![image](media://0c82116e-7584-4d42-a0e7-93b5991664e3)

Seleccionando esta plantilla, aparece el diseñador de esquemas, en donde se definirán los distintos campos con los que contará la Ontología.

![image](media://a29862e0-9b54-4b18-a288-b4d0ed3ad76e)

  


Los campos a introducir serán los siguientes:

| Propiedad | Tipo de dato | Requerido | Encriptado |
| --- | --- | --- | --- |
| id | integer | Required | false |
| ccaa_name | string | Required | false |
| ccaa_name_alt | string | Required | false |
| ccaa_pob_2018 | number | Required | false |
| ccaa_den_2018 | number | Required | false |
| geometry | geometry | Required | false |

  


Los datos introducidos deberían quedar por tanto tal como se muestra a continuación:

![image](media://539e0128-476f-4a34-8d68-520424e8a997)

Hecho esto, se pulsará sobre el botón de **Actualizar Esquema**. La pantalla se desplazará automáticamente a un visor de código, en donde se podrá ver la estructura generada para la Ontología. Pulsando sobre el botón de **Generar Instancia**, se podrá ver un ejemplo de la estructura de la ontología con valores ficticios.

> Macro (inline-media-image)

Si se está conforme con lo obtenido, se pulsará en el botón de **Nuevo** para generar la Ontología.

# Carga de datos de la Ontología

Tras haber generado la Ontología, el siguiente paso consistirá en poblarla con datos.

> ℹ️ ### Cargar datos en la ontología
> ℹ️ 
> ℹ️ Como en el apartado anterior, si ya sabes cómo cargar datos en una ontología, puedes saltarte este paso y hacerlo por tu cuenta.

  


Se empezará buscando la ontología recién creada en el listado de ontologías, el cual se encuentra en la pantalla inicial de **Mis Ontologías**.

![image](media://e26540f8-d8ec-4b87-aa14-3d2b01d8464c)

Una vez que se haya localizado, se pulsará sobre el botón de **CRUD**, situado a la derecha del todo del registro de la Ontología.

![image](media://e7924ac8-3485-4610-8531-d51c2b25dd89)

Esto lanzará el asistente de **Crear, Leer, Actualizar y Borrar** (*Create*, *Read*, *Update* *and Delete*, CRUD) de la Ontología, lo que permitirá modificar su contenido, y particularmente en este caso, introducir los datos a la misma. Para ello, se pulsará en el botón **Nuevo** por cada registro que se quiera introducir.

![image](media://be712755-2290-44f8-83a5-a74b17df7865)

En la pantalla que aparece se tendrá que ir introduciendo la información correspondiente a los diferentes campos definidos previamente en la estructura de la Ontología.

![image](media://4538de6e-1e14-46e1-8c89-f9f9963a18d4)

Esto se puede ir haciendo campo a campo, o copiando la estructura de cada elemento del JSON original en la ventana de **Output**.

![image](media://1e47833e-55ed-4da9-9aee-d3bb5a11b76e)

Una vez introducidos los datos del primer elemento, se pulsará sobre el botón de **Nuevo** para generar el dato, quedando registrado en el listado de contenidos de la Ontología.

![image](media://4114bc26-c21a-4f73-b89d-233543666dcb)

Esto habrá que repetirse con los diecinueve registros con los que se cuenta en total.

![image](media://51b61dde-d255-4904-92de-4c0b6c92bd97)

Una vez terminado de cargar los datos, la Ontología estará lista para su consumo.

# Creación de la Capa espacial del visor

Una vez que se tiene la Ontología preparada, se procederá a crear a partir de ella una **Capa **Espacial, la cual se visualizará en el visor del mapa.

Para ello, se navegará hasta el menú de **Visores Webmap**, y se seleccionará la opción de **Mis Capas**.

![image](media://57bbc65f-1cbc-4caa-ab00-ea93f879a023)

Una vez en el gestor de capas, se pulsará sobre el botón de **Crear **para generar una nueva Capa.

![image](media://4bbbbdf6-893d-4802-8b7b-266eb75c49b4)

Al igual que ocurría con las ontologías, se abrirá un asistente de generación, en donde se escogerá la opción de **Crear Capa de Ontología**.

![image](media://90bd56df-afd7-4c32-a37d-1f41b2d5378a)

Esto lanzará el generador de nueva Capa, en donde se tendrá que introducir en un primer lugar la siguiente información:

- <u>**Identificación**</u>: nombre único de identificación de la capa de la ontología.
- <u>**Ontología**</u>: la ontología a partir de la cual se crea la capa.
- <u>**Pública**</u>: para permitir que la capa sea accesible o no. Por defecto está desactivada, y hay que activar la opción.
- <u>**Descripción**</u>: un pequeño texto que explique la capa.

![image](media://6f404c49-81f3-473d-ba86-dafbec72c00f)

Una vez introducida la información básica de la Capa, habrá que definir tres propiedades más: **geometría**, **simbología** y el I**nfo Box**.

En la **geometría** se indicará el campo de la ontología con las coordenadas espaciales, así como indicar el tipo de geometría de la capa. Respecto a la opción de mapa de calor, se dejará desactivada.

![image](media://3af95581-e92a-4fd9-8fe2-71fc50fb39c1)

> ℹ️ ### Generar un mapa de calor (heatmap) en Cesium
> ℹ️ 
> ℹ️ ¿Cómo? ¿Mapas de calor? Pues si, puedes generar mapas de calor con los datos de tus ontologías. ¿Interesado? Pues tenemos un tutorial que **[explica muy bien cómo crearlos](https://onesaitplatform.atlassian.net/wiki/spaces/DOC/pages/2216690601/%28GIS%29+Generar+un+mapa+de+calor+%28heatmap%29+en+Cesium)**.

  


Respecto a la **simbología**, en esta pestaña se indicará el aspecto que tendrán los puntos gráficos de la Capa. De momento la representación se hace mediante puntos de colores, los cuales se configuran con cuatro propiedades:

- **Color de línea exterior**.
- **Color interior**.
- **Grosor de la línea exterior**.
- **Tamaño del punto**.

![image](media://972f5ccb-78ed-4590-a1f3-b3f7273ea20a)

Por último queda la pestaña de **Info Box**. Un infoBox o Popup es la ventanita que sale cuando en el mapa se pincha sobre uno de los elementos de la ontología, mostrando cierta información. En este caso en particular, se usarán los campos seleccionados para el infoBox como los campos a utilizar en los filtros del Gadget del Dashboard.

Introducir campos es tan sencillo como pulsar en el botón de Añadir Atributos, e ir seleccionando el campo que se quiere añadir, y el nombre que se quiere que tenga.

![image](media://21863619-d1be-4455-ba27-b1872d8a0450)

Para este ejemplo, se introducirán los campos de:

- **ccaa_name**
- **ccaa_name_alt**
- **ccaa_pob_2018**
- **ccaa_den_2018**

![image](media://489b4192-8875-4369-80f3-013f90729dee)

Para evitar complicaciones, el nombre a asignar será el mismo que el del campo.

Una vez seleccionados los campos a introducir, se pulsará en el botón de **Nuevo** para crear la Capa.

  


> ✅ ### Visualización de la capa
> ✅ 
> ✅ Si quieres echar un ojo rápido a tu capa para ver cómo es, desde el gestor de capas, busca la capa que acabas de crear y pulsando en el botón de **CRUD** podrás visualizar los datos con sus coordenadas en una tabla, y en la parte de abajo un mapa con los datos representados.
> ✅ 
> ✅ De todos modos en el siguiente punto se va a generar un visor web donde se meterá la capa que se acaba de crear. Esta sugerencia sirve también para dar a conocer la opción de visualización de datos sin requerir de un visor web.

# Creación del Visor web

Ya se tiene la Capa. Ahora se va a generar un **Visor** web en donde visualizarla.

Nuevamente hay que ir hasta el menú de **Visores Webmap**, pero seleccionar esta vez la opción de **Mis Visores**.

![image](media://fdda41ed-7668-4e70-8736-eebcd1112436)

Como en casos anteriores, se pulsará en el botón de **Crear**, para lanzar el asistente de creación del Visor web.

![image](media://4bbbbdf6-893d-4802-8b7b-266eb75c49b4)

En el asistente que aparece, será necesario rellenar los siguientes campos:

- <u>**Identificación**</u>: nombre único de identificación del visor web.
- <u>**Pública**</u>: para permitir que el visor sea accesible o no. Por defecto está desactivada, y hay que activar la opción.
- <u>**Descripción**</u>: un pequeño texto que explique el visor.
- <u>**Tecnología**</u>: del tipo de visor a utilizar. De momento sólo se puede escoger la opción de Cesium.
- <u>**Mapa base**</u>: corresponde al 'lienzo' que aparece de fondo en el mapa. Se puede escoger entre una imagen de ciudad vectorial, o imagen de satélite (*imagery*).
- <u>**Capas**</u>: la capa o capas a visualizar en el mapa.

![image](media://e7f309d6-ddb9-4b5a-8672-c3259b390acb)

Una vez completados los campos, y más concretamente escogido el mapa base, aparecerá una ventana partida en la parte inferior, donde a la derecha se tendrá el Visor web, y a la izquierda el código fuente del Visor.

![image](media://6b0cb55e-598c-44ef-9e7e-d46a850a2ba5)

  


Más adelante en este tutorial habrá que volver al Visor y modificar el código del mismo para incluir ciertos elementos, pero de momento con esto ya se tiene listo el Visor web que será metido posteriormente en el Dashboard. 

# Creación del DataSource

A la hora de trabajar con los gadgets, es necesario generar un **DataSource** de la Ontología.

Para ello, se navegará en el menú de **Visualización** hasta **Mis DataSources**.

![image](media://b61a6350-9ca5-4788-8521-fcd60f2d202d)

Se abrirá la página de gestión de dataSources, en donde habrá que pulsar en el botón de **Crear** situado en la parte superior derecha para lanzar el formulario de creación de DataSources.

![image](media://e7bf0268-cc8e-46c5-8099-a32a2240b7b6)

En dicho formulario habrá que rellenar los siguientes campos:

- <u>**Identificación**</u>: nombre único de identificación del DataSource.
- <u>**Modo de acceso**</u>: que por defecto y única opción será 'Query'.
- <u>**Fuente de base de datos**</u>: que por defecto y única opción será 'RTDB'.
- <u>**Tiempo de refresco**</u>: por defecto es '0', y que puede dejarse como está.
- <u>**Seleccionar ontología**</u>: aquí se seleccionará la ontología a partir de la cual se quiere crear el DataSource.
- <u>**Descripción**</u>: un pequeño texto que explique el DataSource.

![image](media://ddad1e77-dfcc-497f-8d1d-b36c700fd5a5)

Seguidamente hay que configurar la llamada a la base de datos. Por defecto se genera la siguiente llamada:

![image](media://84beedb8-fb9a-4e33-8348-f6da93819ec5)

Sin embargo, esta llamada no sirve para lo que se busca hacer, puesto que el uso del asterisco genera ciertos problemas. Por ello, es necesario modificar dicha llamada manualmente para pasarle todos los parámetros que interesan. Dicha llamada seguiría el siguiente patrón:

- select nombreOntologia.nombreOntologia.PROPIEDAD as PROPIEDAD from nombreOntologia

En el caso del ejemplo, dicha llamada sería:

##### **Llamada a la base de datos**

```sql
select ont_ccaa_population_2018.ont_ccaa_population_2018.id as id, ont_ccaa_population_2018.ont_ccaa_population_2018.name as name, ont_ccaa_population_2018.ont_ccaa_population_2018.ccaa_name as ccaa_name, ont_ccaa_population_2018.ont_ccaa_population_2018.ccaa_name_alt as ccaa_name_alt, ont_ccaa_population_2018.ont_ccaa_population_2018.ccaa_pob_2018 as ccaa_pob_2018, ont_ccaa_population_2018.ont_ccaa_population_2018.ccaa_den_2018 as ccaa_den_2018 from ont_ccaa_population_2018
```

Pulsando en el botón de **Ejecutar Solicitud**, aparecería la respuesta de la llamada, en la que se puede ver el JSON con cada una de las Comunidades Autónomas junto a sus datos asociados.

![image](media://cc235717-1281-4bbd-882b-cf5af685e987)

Si se está conforme con el resultado obtenido, pulsando en el botón de **Nuevo** se generará el DataSource, dando por finalizado este apartado. 

# Creación del Dashboard

Generado el DataSource de la Ontología, ya es posible crear los gadgets asociados a dicho DataSource. Sin embargo, antes de generar dichos gadgets, se procederá a crear el **Dashboard** que los contendrá.

Para crear el Dashboard se navegará en el menú de **Visualización** hasta la opción de **Mis Dashboards**.

![image](media://ec03bdf0-822c-4b44-8501-f5c4201fd836)

Como en casos anteriores, se accederá al gestor de contenidos, correspondiente en este caso a los dashboards. Allí habrá que pulsar en el botón de **Crear** para lanzar el formulario de creación de dashboards.

![image](media://77c67297-4512-4f11-9fc3-7df175cc696e)

En dicho formulario, habrá que introducir la siguiente información:

- <u>**Identificación**</u>: nombre único de identificación del Dashboard.
- <u>**Descripción**</u>: un pequeño texto que explique el Dashboard.
- <u>**Pública**</u>: para permitir que el visor sea accesible o no. Por defecto está desactivada, y hay que activar la opción.
- <u>**Estilo inicial**</u>: por defecto sale la opción de estilo por defecto, y se dejará como está.
- <u>**Imagen**</u>: imagen para reconocer el Dashboard. Se puede seleccionar una imagen si se quiere, pero no es necesario hacerlo.
- <u>**Categoría**</u>: para categorizar el Dashboard. No será necesario escoger ninguna opción si no se quiere.
- <u>**Subcategoría**</u>: para categorizar aun más el Dashboard. Tampoco será necesario escoger ninguna opción si no se quiere.

![image](media://fa480cd9-1729-4ba9-b401-35e2506fc917)

Una vez que se haya introducido toda la información, se pulsará sobre el botón de **Nuevo** para generar el Dashboard, lo que lo abrirá automáticamente, mostrándolo vacío y listo para rellenar con los gadgets.

![image](media://58d8c582-c4b5-4b72-86b1-bce62583a9ab)

# Creación del Gadget del diagrama de barras

Ya se tiene el Dashboard generado, por lo que el siguiente paso será crear los dos gadgets que contendrá. Se empezará con el **Gadget** del diagrama de barras, y posteriormente se hará el del mapa.

Se puede generar el Gadget de diferentes maneras. En este ejemplo, y puesto que ya se tiene el Dashboard generado, se creará desde ahí. Para ello, en el Dashboard, habrá que pulsar sobre el botón de **Añadir Elemento**, situado en la parte superior derecha del Dashboard.

![image](media://e2b22bc1-d858-4fb9-9b0c-d7f4abd52f2b)

  


Esto abrirá en la parte inferior de la pantalla un carrusel de gadgets, en donde se seleccionará el de diagramas de barras y se arrastrará al Dashboard:

![image](media://774a926c-1814-4c56-b508-33300af02575)

Seguidamente aparecerá una pantalla preguntando si se quiere cargar un **Gadget** ya existente, o si se desea generar uno nuevo.

![image](media://59ace3ae-05ad-4a86-a668-41853064fa4e)

En este caso, se seleccionará la opción de **Nuevo Gadget**, lo que lanzará el asistente de creación, en donde habrá que introducir inicialmente dos datos:

- <u>**Nombre del Gadget**</u>: nombre único de identificación del Gadget.
- <u>**Seleccionar la Ontología o DataSource**</u>: donde se seleccionará el DataSource antes generado a partir de la Ontología.

![image](media://a064e2d8-975f-4aa8-9300-ee46237d88df)

Una vez introducidos estos dos datos, el contenido del asistente se actualizará apareciendo una gran variedad de opciones de personalización del diagrama, entre las cuales se encuentra los campos a mostrar en el diagrama, con un ejemplo en vivo de los cambios realizados en la parte inferior del asistente.

La configuración utilizada para este ejemplo es la siguiente:

![image](media://545fbb90-c248-4723-8b1b-ce171c721234)

Una vez que se ha definido la estética y contenidos del diagrama, se pulsará el botón de **Nuevo** para generar el Gadget. Éste entonces aparecerá sobre el Dashboard, en donde se podrá modificar su tamaño y posición.

![image](media://237cc22a-d558-470d-a801-c377a1fdd08e)

Hecho esto, el Gadget está listo. Más adelante se verá la personalización del Gadget, pero de momento se dejará así. Se salvará el Dashboard para no perder el trabajo hecho hasta ahora.

![image](media://a4771a1d-478e-46bb-bc74-d0770bf31dc3)

# Creación del Gadget del Visor web

Para meter el Visor web antes creado, no se puede meter directamente en el Dashboard, sino que hay que meterlo a través de un **Gadget**. Por ello, se repetirá el paso anterior para crear un nuevo Gadget, pero seleccionando en este caso el de **Plantilla** y arrastrándolo hasta el Dashboard.

![image](media://e1f597f0-b70d-49f9-9ab1-4548b30900ba)

Como en el caso del Gadget anterior, saldrá una pantalla preguntando si se quiere usar una plantilla para generar el Gadget. Puesto que se quiere meter un Visor que se tiene generado en la Plataforma, se seleccionará la opción de **URLGADGET**.

![image](media://81512438-cc9c-485b-9714-f7ff9290e1b0)

Esto hará que se actualice la ventana, solicitando dos parámetros:

- <span style="color: #003366">**DataSource**</span>: a partir del cual funcionará el Gadget, que en este caso será el mismo utilizado para el otro Gadget.
- <u>**URL**</u>: donde se tendrá que introducir la URL del Visor web que previamente se ha generado.

![image](media://01a39e7d-78f7-47ef-a6af-e5378118fe03)

> ℹ️ ### Recuperar la URL del Visor web
> ℹ️ 
> ℹ️ ¿No sabes cual es la URL del Visor web que se ha generado antes? Entra en el menú de **Visores Webmap**, y selecciona la opción de **Mis Visores**. En el listado de visores, busca el que hayas creado, y pulsa sobre el botón de **URL**.
> ℹ️ 
> ℹ️ ![image](media://44512107-6f6e-42e1-8818-049c0c2c9e33)
> ℹ️ 
> ℹ️ ![image](media://d3be04ce-2fc0-49f5-be57-74db95049471)

Una vez introducidos los datos, el Gadget estará listo y aparecerá sobre el Dashboard, pudiendo modificar como en el caso anterior su posición y tamaño.

![image](media://2bf16216-cee2-444f-a141-1ee579d55bc6)

Hecho esto, el Gadget está listo. Sin embargo, pinchando sobre cualquiera de los puntos del mapa, no ocurre nada. Cómo conseguir esto se tratará en el siguiente apartado.

Antes de continuar, se guardarán los cambios realizados en el Dashboard.

![image](media://a4771a1d-478e-46bb-bc74-d0770bf31dc3)

# Configuración del Visor web

Como se comentó previamente, se va a regresar al Visor web antes generado, para modificar su código y prepararlo para que pueda interactuar con los gadgets del Dashboard. Se navegará nuevamente hasta el **gestor de visores**.

![image](media://fdda41ed-7668-4e70-8736-eebcd1112436)

Allí, se buscará el Visor que se ha generado y se seleccionará la opción de **Editar**.

![image](media://79f39956-3c2b-4fe2-ad38-1b40f654eac4)

Esto abrirá una pantalla que nos permitirá modificar el contenido del mapa. Aunque para este ejemplo se va a modificar el código para hacerlo compatible con el Dashboard, se podría modificar también parámetros básicos del mapa, como las capas que contenga, el mapa base, etc.

![image](media://5dbabe39-7b6f-4d25-86fc-e84eea3dbf0d)

> ✅ ### Código del Visor
> ✅ 
> ✅ Si en algún momento te pierdes con lo que se va a hacer, no te preocupes porque al final de esta sección se incluye el código del visor ya preparado.

  
En el código del Visor, se navegará hasta la parte inferior del mismo, justo antes del comentario de **/** EJECUCIONES */**, y se incluirá la siguiente función de JavaScript:

##### **sendFilter()**

```javascript
function sendFilter() {
	let handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)
	handler.setInputAction(function() {
		let entity
		if (viewer.selectedEntity && viewer.selectedEntity.id != 'Loading...') {
			entity = viewer.selectedEntity
			parent.parent.postMessage({'eventMap':entity.ccaa_name},'*')
		}
	}, Cesium.ScreenSpaceEventType.LEFT_CLICK)
}
```

Introducido el código donde se indica, quedaría tal que así:

![image](media://3b63fddb-1573-4053-b445-b2d38e123133)

> ℹ️ ### ¿Qué hace la función?
> ℹ️ 
> ℹ️ Esta función lo que hace es generar un evento (línea 2) que escucha en el mapa cuando se hace clic (línea 3) sobre una entidad (línea 5; en este caso, en los puntos de las Comunidades Autónomas), y que emitirá un mensaje al iFrame del Dashboard desde el iFrame del Gadget (línea 7). El mensaje que se lanza será el nombre de la Comunidad Autónoma sobre la que se ha hecho clic; es decir, el campo 'ccaa_name' de la entidad seleccionada en el Visor.


Por último, no hay que olvidarse de incluir la ejecución de la función recién creada, lo que se hará bajo el comentario de **/** EJECUCIONES */**, por mantener un orden.

![image](media://00fbeeea-24e4-44bc-a2e4-88de932cdb99)

Por otro lado, es preciso de momento introducir manualmente ciertos campos de datos a las entidades que se van a crear. Hay que buscar la función de **CreateLayer()**, concretamente donde se especifica **dataSource.entities.add**, hay que incluir las siguientes propiedades:

- **ccaa_name: entity.properties.ccaa_name**
- **ccaa_name_alt: entity.properties.ccaa_name_alt**
- **ccaa_pob_2018: entity.properties.ccaa_pob_2018**
- **ccaa_den_2018: entity.properties.ccaa_den_2018**

![image](media://1f483038-2bd5-4b9f-8145-774ad6db2e1a)

Hecho esto, no habría que modificar nada más en el código del Visor, por lo que se pueden salvar los cambios pulsando en el botón de **Editar**.


> ✅ ### Comprobación de parámetros del Visor
> ✅ 
> ✅ Como generar el Visor conlleva configurar muchas opciones, para asegurar la visualización correcta en el Gadget, hay que comprobar que:
> ✅ 
> ✅ - Si existe una propiedad llamada **infoBox** en el código, ésta se encuentra en 'false'. En caso de no existir, en la definición del **viewer**, hay que añadir la propiedad de 'infoBox: false,' (el parámetro debe escribirse tal como se especifica).
> ✅ 
> ✅ ![image](media://68695a7a-41a7-4c27-9de5-7988d1ef6fa0)
> ✅ 
> ✅ - Que las coordenadas del mapa correspondan con la localización de la capa. Aunque esto debería ser automático, es posible que por alguna razón no sea así, por lo que hay que modificar las coordenadas de inicio del mapa. Esto se puede configurar modificando los parámetros de las variables **initialLongitude**, **initialLatitude** e **initialHeight**.
> ✅ 
> ✅ ![image](media://1ebbf2fc-b68b-4ee5-9abf-af05e0cb4284)


> ℹ️ ### Descarga el código fuente del Visor
> ℹ️ 
> ℹ️ Puedes descargarte el código del visor a continuación:
> ℹ️ 
> ℹ️ > Macro (legacy-content)

# Conexión entre gadgets

Configurado el Visor del mapa para mandar un parámetro concreto como filtro, a continuación se va a configurar el Dashboard para que tome ese elemento enviado desde el Gadget del mapa, y se lo pase al Gadget del diagrama de barras.

Para llevar esto a cabo se usará el **Datalink**, al cual se puede acceder desde su correspondiente botón situado en la parte superior derecha de la pantalla.

> Macro (inline-media-image)

Aparecerá entonces una ventana en la que se definirá qué se conecta a qué, a partir de qué. Los datos a introducir serían:

- <u>**Gadget de Origen**</u>: el Gadget del que partirá el dato, que en este caso será el del mapa.
- <u>**Campo de Origen**</u>: extraído del DataSource, por el que conectará.
- <u>**Gadget de Destino**</u>: el Gadget que recibirá el dato, que será por tanto el diagrama de barras.
- <u>**Campo de Destino**</u>: extraído nuevamente del DataSource, por el que será conectado.

![image](media://2b8e40f1-78f2-4e97-bcc5-c52c926b8f4c)

Una vez definidos los elementos de conexión, se pulsará sobre el botón de **(+)** para generar el filtro.

El siguiente paso consiste en introducir una serie de líneas de código en el Gadget del Visor. En un futuro se hará de manera transparente al usuario, pero de momento es necesario hacerlo a mano.

En primer lugar, hay que editar el Gadget del Visor, lo que hará mediante el botón de **Edición** del Gadget en cuestión:

![image](media://b43a4d83-263d-498c-9f32-7b20622d070a)

Saldrá una nueva pantalla en la que poder **editar el Gadget**. En ella, hay dos pantallas de código; una de HTML a la izquierda, y otra de JavaScript a la derecha. En esta última habrá que introducir el siguiente código:

##### **Código JS a introducir**

```javascript
var eventMethod = window.addEventListener ? 'addEventListener' : 'attachEvent'
var eventer = window[eventMethod]
var messageEvent = eventMethod === 'attachEvent' ? 'onmessage' : 'message'

vm.initLiveComponent = function() {
	eventer(messageEvent, function(e) {
		var message = ''
		var messageString = ''

		if (typeof e.data != 'undefined') {
			try {
				if (typeof e.data !== 'object') {
					message = JSON.parse(e.data)
					messageString = e.data
				} else {
					message = e.data
					messageString = JSON.stringify(e.data)
				}
			} catch (e) {}
		} else if (typeof e.message != 'undefined') {
			try {
				if (typeof e.message !== 'object') {
					message = JSON.parse(e.message)
					messageString = e.message
				} else {
					message = e.message
					messageString = JSON.stringify(e.message)
				}
			} catch (e) {}
		}

		if (messageString.indexOf('eventMap') >= 0) {
			$scope.sendFilter('ccaa_name', message.eventMap)
		}
	})
}

//This function will be call when data change. On first execution oldData will be null
vm.drawLiveComponent = function(newData, oldData) {}

//This function will be call on element resize
vm.resizeEvent = function() {}

//This function will be call when element is destroyed
vm.destroyLiveComponent = function() {}


```

  


  


![image](media://3b5f9f50-130e-49af-8956-079fee537fec)

Cuando se haya hecho, se pulsará en el botón de **Compilar y Sincronizar**, y se podrá cerrar la ventana de edición. Seguidamente se salvará el Dashboard para guardar los cambios.

![image](media://a4771a1d-478e-46bb-bc74-d0770bf31dc3)

El siguiente paso consistirá en probar el mapa y ver si, efectivamente, funciona todo lo que se ha hecho hasta el momento.

![image](media://3a839e57-dcd7-4c6f-9970-e6a5182aa0df)

¿Funciona como debe? Pues buenas noticias; el Dashboard está listo, y este tutorial se termina. En caso contrario, comprobad que habéis seguido correctamente todos los pasos y no se ha omitido nada. Si aun así hay algo que falla, dejadnos un comentario.

Esperamos que lo hayáis encontrado útil.

# Estilismo

La parte de diseño no es algo que se fuese a ver en este tutorial, pero por dejar un poco mejor el Dashboard, se va a proceder a dar cierto estilo a los gadgets utilizados.

Tanto para uno como para otro, para acceder a la configuración de estilos hay que pulsar en el botón de **Estilos** del menú desplegable del Gadget.

![image](media://ff64deca-f1aa-44d4-a2a7-886558c0a6bd)

Aparecerá entonces una ventana de edición de estilos, en donde se podrá elegir diversos parámetros, como el texto del cajetín del Gadget, el color de la fuente de letra, el icono, etc. Para este ejemplo se han usado las siguientes propiedades:

![image](media://a9b6fae3-3e11-4b79-91a3-06ed09733972)

El resultado es bastante agradecido.

![image](media://f5c6833f-42d0-47ae-897b-fe3dd096a3f5)