En aquest tema, aprendrem com gestionar esdeveniments en D3.js per fer les nostres visualitzacions més interactives. Els esdeveniments són una part fonamental de la interactivitat en les aplicacions web, i D3.js proporciona eines potents per treballar amb ells.

Conceptes Clau

  1. Esdeveniments del DOM: Els esdeveniments del Document Object Model (DOM) són accions que es produeixen com a resultat de la interacció de l'usuari amb la pàgina web, com ara clics, moviments del ratolí, i tecles pressionades.
  2. Gestors d'Esdeveniments: Funcions que s'executen en resposta a un esdeveniment específic.
  3. Seleccions de D3: Utilitzem seleccions de D3 per associar gestors d'esdeveniments als elements del DOM.

Exemple Pràctic: Afegint un Gestor d'Esdeveniments de Clic

Pas 1: Crear un Element SVG

Primer, crearem un element SVG on afegirem un cercle que respondrà a un esdeveniment de clic.

<!DOCTYPE html>
<html lang="ca">
<head>
    <meta charset="UTF-8">
    <title>Gestió d'Esdeveniments amb D3.js</title>
    <script src="https://d3js.org/d3.v7.min.js"></script>
</head>
<body>
    <svg width="500" height="500"></svg>
    <script>
        // Seleccionem l'element SVG
        const svg = d3.select("svg");

        // Afegim un cercle a l'SVG
        svg.append("circle")
            .attr("cx", 250)
            .attr("cy", 250)
            .attr("r", 40)
            .attr("fill", "blue");
    </script>
</body>
</html>

Pas 2: Afegir un Gestor d'Esdeveniments

Ara, afegirem un gestor d'esdeveniments de clic al cercle.

<script>
    // Seleccionem l'element SVG
    const svg = d3.select("svg");

    // Afegim un cercle a l'SVG
    svg.append("circle")
        .attr("cx", 250)
        .attr("cy", 250)
        .attr("r", 40)
        .attr("fill", "blue")
        .on("click", function(event) {
            d3.select(this)
                .attr("fill", "red");
        });
</script>

Explicació del Codi

  • .on("click", function(event) { ... }): Aquest mètode afegeix un gestor d'esdeveniments de clic al cercle. Quan el cercle es clica, la funció proporcionada s'executa.
  • d3.select(this): Selecciona l'element que va desencadenar l'esdeveniment (en aquest cas, el cercle).
  • .attr("fill", "red"): Canvia el color de farciment del cercle a vermell.

Exercici Pràctic

Exercici 1: Afegir un Gestor d'Esdeveniments de Pas del Ratolí

  1. Objectiu: Canviar el color del cercle a verd quan el ratolí passa per sobre i tornar-lo a blau quan el ratolí surt.
  2. Instruccions:
    • Afegiu dos gestors d'esdeveniments: un per a l'esdeveniment mouseover i un altre per a l'esdeveniment mouseout.

Solució

<script>
    // Seleccionem l'element SVG
    const svg = d3.select("svg");

    // Afegim un cercle a l'SVG
    svg.append("circle")
        .attr("cx", 250)
        .attr("cy", 250)
        .attr("r", 40)
        .attr("fill", "blue")
        .on("click", function(event) {
            d3.select(this)
                .attr("fill", "red");
        })
        .on("mouseover", function(event) {
            d3.select(this)
                .attr("fill", "green");
        })
        .on("mouseout", function(event) {
            d3.select(this)
                .attr("fill", "blue");
        });
</script>

Explicació del Codi

  • .on("mouseover", function(event) { ... }): Aquest mètode afegeix un gestor d'esdeveniments de pas del ratolí. Quan el ratolí passa per sobre del cercle, la funció proporcionada s'executa i canvia el color del cercle a verd.
  • .on("mouseout", function(event) { ... }): Aquest mètode afegeix un gestor d'esdeveniments de sortida del ratolí. Quan el ratolí surt del cercle, la funció proporcionada s'executa i canvia el color del cercle a blau.

Errors Comuns i Consells

  1. No Seleccionar Correctament l'Element: Assegureu-vos que d3.select(this) s'utilitza dins del gestor d'esdeveniments per referir-se a l'element que va desencadenar l'esdeveniment.
  2. No Tancar Correctament les Funcions: Assegureu-vos que totes les funcions i mètodes estan correctament tancats amb parèntesis i claus.
  3. Confusió d'Esdeveniments: Diferents esdeveniments poden tenir noms similars però efectes diferents (mouseover vs mouseenter). Consulteu la documentació de D3.js per assegurar-vos que utilitzeu l'esdeveniment correcte.

Resum

En aquesta secció, hem après com gestionar esdeveniments en D3.js per fer les nostres visualitzacions més interactives. Hem vist com afegir gestors d'esdeveniments de clic, pas del ratolí i sortida del ratolí a un element SVG. Aquests conceptes són fonamentals per crear visualitzacions dinàmiques i interactives.

En el següent tema, explorarem com crear transicions per animar les nostres visualitzacions.

D3.js: De Principiant a Avançat

Mòdul 1: Introducció a D3.js

Mòdul 2: Treballant amb Seleccions

Mòdul 3: Dades i Escales

Mòdul 4: Creant Visualitzacions Bàsiques

Mòdul 5: Visualitzacions Avançades

Mòdul 6: Interactivitat i Animació

Mòdul 7: Treballant amb Dades Reals

Mòdul 8: Rendiment i Optimització

Mòdul 9: Millors Pràctiques i Tècniques Avançades

Mòdul 10: Projecte Final

© Copyright 2024. Tots els drets reservats