"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Billboard.js est disponible : nouveau graphique zone-étape-plage !

Billboard.js est disponible : nouveau graphique zone-étape-plage !

Publié le 2024-09-02
Parcourir:749

La nouvelle version v3.13 est sortie aujourd'hui ! Cette version est livrée avec 4 nouvelles fonctionnalités, 2 corrections de bugs et des améliorations d'outils.

Pour obtenir des informations détaillées sur la version, veuillez consulter la note de version :
https://github.com/naver/billboard.js/releases/tag/3.13.0

Quoi de neuf?

Graphique zone-pas-plage

Les types de plage sont utiles pour visualiser les « valeurs étendues » à partir de la valeur de base. À partir de cette version, un nouveau type « étape » sera fourni à la variation.

billboard.js elease: new area-step-range chart!

Démo : https://naver.github.io/billboard.js/demo/#Chart.FunnelChart

import bb, {areaStepRange} from "billboard";

bb.generate({
  data: {
    columns: [
     ["data1", [70, 40, 30],
     [155, 130, 115],
     [160, 135, 120],
     [200, 120, 110],
     [95, 50, 40],
     [199, 160, 125]
    ]],
    type: areaStepRange()
  }
});

Régions en amélioration

Pour afficher une plage avec une ligne pointillée, l'option data.regions est utilisée. Mais la façon de rendre les lignes pointillées, effectuée en combinant plusieurs commandes de chemin sous forme de lignes pointillées, devait l'être.

billboard.js elease: new area-step-range chart!

À partir de l'exemple de capture d'écran ci-dessus, plusieurs commandes de chemin sont nécessaires pour tracer des lignes pointillées.

## Multiple path command
M5,232L95,136M99,139L104,142 M109,145L114,149 ... M L M L ...

## Single path command
M4,232,136L139,192L206,23L274,164L341,108

Cette approche a provoqué quelques problèmes de rendu (#1, #2) et nous avons essayé de l'améliorer de manière native.

Au lieu de dessiner des lignes pointillées avec les commandes de chemin, nous avons opté pour le rendu à l'aide de la propriété de style Stroke-Dasharray.

billboard.js elease: new area-step-range chart!

  • Avant : commande de chemin/Après : Stroke-dasharray

Démo : https://naver.github.io/billboard.js/demo/#Chart.LineChartWithRegions

Lors de l'interaction avec le zoom, les performances des images d'animation ont été améliorées de 84 ms → 5 ms !

billboard.js elease: new area-step-range chart!

En mettant à jour vers la version 3.12, vous bénéficierez des avantages sans aucune modification du code.

legend.format : fournir l'identifiant des données d'origine
Lorsque l'option data.names est spécifiée, les noms de données affichés seront différents des noms d'origine (id).

{
  data: {
    names: {
      // will make data1 and data2, displayed in different values.
      data1: "Detailed Name",
      data2: "Name Detailed"
    },
    columns: [
       ["data1", 71.4],
       ["data2", 10]
    ]
  }
}

Dans ce cas, le rappel legend.format recevra la valeur remplacée par data.names, à la place de l'identifiant d'origine.

data: {
    names: {
      // will make data1 and data2, displayed in different values.
      data1: "Detailed Name",
      data2: "Name Detailed"
    },
}
legend: {
    format: function(id) {
       // id will be 'Detailed Name' and 'Name Detailed'
    }
}

À partir de cette version, la valeur « id » d'origine sera fournie avec les noms remplacés.

data: {
    names: {
      // will make data1 and data2, displayed in different values.
      data1: "Detailed Name",
      data2: "Name Detailed"
    },
}
legend: {
    format: function(id, dataId) {
        // id will be 'Detailed Name' and 'Name Detailed'
        // dataId will be 'data1' and 'data2'
    }
}

Démo : https://naver.github.io/billboard.js/demo/#Legend.LegendFormat

rappel bar.width

Auparavant, bar.width était possible de spécifier une valeur absolue ou une valeur de rapport. L'absolu ne peut pas refléter le redimensionnement du graphique de manière dynamique et le ratio peut le refléter avec certaines limitations.

La façon dont le ratio est calculé est basée sur l'équation ci-dessous.

x Axis tick Interval * ratio

Par exemple, si le graphique a une largeur de 500 px, avec un nombre de graduations de 5 x sur l'axe, l'intervalle sera d'environ 100 px.

billboard.js elease: new area-step-range chart!

Dans ce cas, si bar.ratio=0,5 est spécifié, l'équation sera la suivante et la largeur de la barre sera de 49,9 px.

100(exact value is 99.8) * 0.5 = 49.9

Pour donner plus de contrôle sur la valeur de largeur de la barre de réglage, l'option bar.width sera améliorée pour accepter une fonction de rappel avec des paramètres pratiques.

Démo : https://naver.github.io/billboard.js/demo/#BarChartOptions.BarWidth

bar: {
    width: function(width, targetsNum, maxDataCount) {
         // - width: chart area width
         // - targetsNum: number of targets
         // - maxDataCount: maximum data count among targets
   }
}

Encore une chose, mise à jour sur le framework de test

Nous avons adopté Karma Mocha pour notre framework de test et ce fut une expérience formidable de maintenir billboard.js stable.

Malheureusement, Karma a annoncé la dépréciation et nous avons dû migrer d'autres frameworks de test modernes pour maintenir la bibliothèque stable et suivre l'écosystème moderne.

Après quelques recherches, nous avons décidé de passer à Vitest. Nous avons migré avec succès dans cette version et les tests locaux ont été améliorés jusqu'à 63 % !

Forfaits Durée Différence sur le karma
Karma (Moka Chai) 142.382 -
Vitest (webdriverio:chrome) 144,364* 1,39 %
Vitest (dramaturge:chrome) 51.606** -63,75 %

Formulaire plus de détails, consultez https://github.com/naver/billboard.js/pull/3866

Clôture

C'est tout ce que nous avons pour cette version et merci de rester à l'écoute !

Déclaration de sortie Cet article est reproduit sur : https://dev.to/netil/billboardjs-313-release-new-area-step-range-chart-1g07?1 En cas d'infraction, veuillez contacter [email protected] pour supprimer il
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3