Nota
Haga clic en Eventos en el Charts Embedding SDK está disponible en la versión 2.1.0 y posteriormente.
El SDK de JavaScript de incorporación de Charts incluye un manejador de eventos de clic que permite suscribirse a eventos de clic. Cuando haces clic en un elemento particular en tu gráfica, el manejador del evento de clic captura los detalles del elemento en el que hiciste clic. Utiliza esta funcionalidad para crear experiencias interactivas similares a las siguientes en tu aplicación:
Haz clic en un elemento de la gráfica y abre un panel con más detalles sobre el elemento seleccionado.
Crea un filtro para otra gráfica.
Requisitos previos
Antes de empezar, Instale 2.1.0 la versión o posterior del SDK de JavaScript para incrustar gráficos.
Sintaxis del evento de clic
El gestor de eventos toma un tipo de evento, click, y una función de retorno que contiene información sobre el evento de clic y el elemento clicado como un único payload objeto. La sintaxis del controlador de eventos de clic es similar a la siguiente:
chart.addEventListener("click", callback);
El controlador de eventos también permite definir los roles de marca para los que se desea recibir información de eventos, eliminando así la necesidad de verificar la carga útil. La sintaxis del controlador de eventos de clic para definir los roles de marca por los que se filtrará es similar a la siguiente:
const options = { includes: [{ roles: ['mark', 'axis-label'] }] }; chart.addEventListener("click", callback, options);
El gestor de eventos de clic debe añadirse tras finalizar la renderización de la gráfica, como se muestra en el siguiente ejemplo:
Ejemplo
chart.render(document.getElementById("chart")).then( () => chart.addEventListener('click', (payload) => alert(JSON.stringify(payload)), options) );
Nota
Si especifica el parámetro options, el controlador de eventos de clic captura eventos solo si la función de la marca en la que se hizo clic coincide con uno de los valores especificados en el parámetro. Si omite este parámetro, el controlador de eventos de clic captura todos los eventos de clic del gráfico.
Carga útil
Puedes utilizar la carga útil del evento click para construir un filtro personalizado que puedas aplicar en otros gráficos de tu aplicación. La sintaxis del objeto de carga útil para la función de retorno es similar a la siguiente:
chart.addEventListener("click", (payload) => { // handle events }
El siguiente ejemplo de objeto de carga útil muestra los elementos dentro de la carga útil:
Ejemplo
{ "chartId": "xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "chartTitle": "This is my chart's title", "chartDescription": "This is my chart's description", "event": { // information about the mouse event. For example: "type": "click", // event type "altKey": false, // modifier keys "ctrlKey": false, "shiftKey": false, "metaKey": false, "offsetX": 152, // element coordinates "offsetY": 176, "clientX": 172, // coordinates from application viewpoint "clientY": 241, "pageX": 172, // coordinates relative to the page "pageY": 241, "screenX": 172, // coordinates relative to screen "screenY": 312 }, "data": { // information about the clicked chart element. For example: "y": { "label": "unwind array 'genres'", "value": "Adventure" }, "x": { "label": "count ( _id )", "value": 659 }, "color": { "label": "year", "value": "2000 - 2010", "lowerBound": 2000, "upperBound": 2010 } }, selectionFilter: { // category data expressed as MQL filter query that // interactive filters would output to filter other charts. // For example: genres: 'Adventure', year: { $gte: 2000, $lt: 2010, }, }, "target": { // information about the clicked target. For example: "type": "rect", // type of mark, such as rect, line, etc. "role": "mark", // role of mark, such as mark, legend, etc. "fill": "#8CB6F2" // fill color of the mark }, "apiVersion": 1 // API version of event payload }
Para obtener más información sobre los elementos dentro del objeto payload, consulte:
event Elemento
El elemento event de la carga útil contiene información sobre el evento del ratón incluyendo:
El tipo de evento del mouse, que debe ser
clickLas teclas modificadoras utilizadas para activar un evento de clic como
altKey,ctrlKey,shiftKey,metaKey.Las coordenadas
XyY:En comparación con el elemento de lienzo de la gráfica
Desde el punto de vista de la aplicación
Relativo a la página
Relative to the screen
data Elemento
El elemento data de la carga útil contiene información sobre el elemento de la gráfica cliqueado. Para cada campo de datos codificados (x, y, series, intensity, color, shape, size, label, arc, value, target, number, display, text, location), el elemento data contiene:
El canal
labelEl
valuedel elemento pulsadoEl límite inferior solo para agrupamiento numérico o de fecha
Para las tablas, el controlador de eventos de clic del SDK de JavaScript de inserción de Charts captura eventos de clic para los campos que representan los datos del canal del elemento clicado:
groupsel campo, que contiene todos los canales de Grupos, incluido la etiqueta y el valorcellcampo, que contiene la etiqueta del encabezado de columna y el valor de la celda en la que se hizo clic
Para gráficas geoespaciales, el controlador de eventos de clic del SDK JavaScript Charts Embedding captura eventos de clic en los siguientes elementos:
Para gráficas de coropletas, el gestor de eventos de clic captura los campos que representan los datos de canal para el elemento clicado:
latcampo, que contiene latitudlngcampo, que contiene la longitudlocationcampo, que contiene la etiqueta del campo y el valor del área geoespacial clicada
Para los gráficos geoespaciales de dispersión, el manejador de eventos de clic capta los campos que representan los datos de canal del elemento en que se hizo clic:
geopointcampo, que contiene el nombre del campo, el valor en formato GeoJSON, y las coordenadas del punto activado al hacer clic
selectionFilter Elemento
El selectionFilter elemento de la carga útil debe contener una Documento de filtroMQL que representa el filtro correspondiente a los canales de categoría de la marca seleccionada o al x canal de valor en un gráfico continuo. Puede modificar o implementar su selectionFilter propio.
El objeto de filtro representa un único ítem cliqueado:
Una cadena o un número o fecha no binned, que se convierte en una consulta de coincidencia exacta
({field: value})o una consulta usando$eq,$ne,$ino$ninoperadores.Un número o fecha agrupado, que se convierte en una query usando los operadores
gt,$gte,$ltolte. Las fechas periódicas son ignoradas.
Ejemplo
{ field: 'value' } { field1: 'value1', field2: 'value2' } { field: { $in: [ 'a', 'b', 'c' ] } } { field: { $nin: [ 'x', 'y', 'z' ] } } { field: { $gt: 10 } } { field: { $gt: 13, $lte: 30 } } { field: { $gt: Date("2020-01-01"), $lt: Date("2020-03-31") } }
El selectionFilter documento puede tener varios filtros de clave y valor. Por ejemplo, si se hace clic en una marca de una gráfica multiseries, el documento de filtro contiene tanto los pares de filtro de categoría como de series. Cada filtro debe hacer referencia a los campos de la fuente de datos real utilizados y no a sus etiquetas.
Puede habilitar el resaltado para los eventos clicados usando el método setHighlight.
Ejemplo
const eventHandler = (payload) => { chart.setHighlight(payload.selectionFilter); }; chart.render(container).then(() => { chart.addEventListener('click', eventHandler); });
Para obtener más información, consulta Resaltar elementos de la gráfica.
En una gráfica incrustada que incluye controladores de eventos con un filtro para roles de elementos, la gráfica muestra:
Cuando pasas el cursor sobre un elemento que activa un evento de clic filtrado
El cuando se pasa el cursor sobre un elemento que no activa un evento de clic
Si el controlador de eventos no incluye un filtro para los roles de los elementos, el aparece cuando te pasas por encima de cualquier elemento de gráfica.
target Elemento
El elemento target de la carga útil contiene información sobre el objetivo seleccionado, incluyendo:
El tipo de marca, como
rect,line,arc,symbol,groupoareaEl rol de marca, como
mark,legend,axis-label,axis-title,tick-label,legend-entry,legend-titleoframeColor de relleno de la marca
Para tablas, la carga útil del controlador de eventos de clic de JavaScript Charts Embedding captura lo siguiente:
Tipo de marca, que es
textMarcar rol, tales como
group-cell,value-cell,dynamic-value-cell,row-total-cell,column-total-cell,header-column-total-cell, ygrand-total-cell
Para gráficos geoespaciales, el payload del gestor del evento click de Charts Embedding SDK de JavaScript captura lo siguiente:
El tipo de marca, como
polygon,maposymbolEl papel de la marca, como
markomapColor de relleno de la marca
El controlador de eventos de clic del SDK de JavaScript de incrustación de Charts no captura eventos de clic en los encabezados de columna.
Ejemplos
El SDK de JavaScript para la incrustación de gráficos incluye ejemplos que demuestran usos comunes de los eventos de clic en una aplicación. El primer ejemplo muestra eventos de clic básicos y la gestión de la carga útil. El segundo ejemplo muestra el filtrado interactivo de los elementos de gráficos en los que se ha hecho clic.
Para obtener más información sobre la instalación del SDK de incrustación y la ejecución de la aplicación de ejemplo con sus propios datos o datos de muestra, consulte el ejemplo de incrustación de gráficos Atlas para eventos de clic en GitHub. Cada aplicación de ejemplo se configura con un ID de gráfico y una URL base específicos de la aplicación. Asegúrese de configurar sus aplicaciones con el ID de gráfico y la URL base correctos.
Manejo básico de eventos de clic
En la aplicación de ejemplo para el manejo básico de eventos de clic, cuando haces clic en un elemento de la gráfica Movie Genres, el controlador de eventos de clic muestra datos basados en el elemento seleccionado. En esta aplicación de ejemplo, la gráfica muestra el en todos los elementos de la gráfica porque la gráfica no incluye un filtro para los roles de marca.
Cada vez que haga clic en un elemento en la gráfica, el controlador de eventos de clic actualizará el payload para reflejar los datos de los ejes x y y. Cuando haga clic en un elemento que representa un género y década específicos en la gráfica Movie Genres, el Clicked Element y el Full Event Payload muestran detalles sobre ese género y década de películas, incluidos:
Campos que representan datos para el elemento clicado.
Marca el tipo, el rol y el color de relleno.
Consulta la aplicación de ejemplo para ver la carga útil completa del evento.
Filtrado interactivo para eventos de click
En la aplicación de ejemplo para filtrado interactivo, cuando haces clic en un elemento de la gráfica Movie
Genres, el SDK de embedding genera un filtro basado en el elemento en el que hiciste clic y luego aplica el filtro a una segunda gráfica. En este ejemplo de aplicación, la gráfica muestra:
El cuando pasas el cursor sobre un elemento interactivo
El al pasar el cursor sobre un elemento que no activa un evento de clic
El detector de eventos de click activa eventos solo para los roles de marca especificados a través del parámetro options. La carga útil define un filtro basado en el eje y, que representa los géneros cinematográficos, y el rango de límite inferior y superior, que representa la década. Cada vez que se haga clic en un elemento que representa un género y una década específicos en la Movie Genres gráfica, la Movie Details tabla se filtrará por el elemento seleccionado y cambiará para mostrar las películas disponibles en ese género y década.
Consulta la aplicación de ejemplo para ver una función de retorno de un controlador de eventos de muestra completa.