rozierguillaume / covidtracker-tools

MIT License
103 stars 78 forks source link

CovidExplorer: Ajouter un "throttle" ou "debounce" pour buildChart #208

Open julienw opened 3 years ago

julienw commented 3 years ago

Actuellement, le chart est rebuildé à chaque check de région car boxChecked appelle buildChart directement: https://github.com/rozierguillaume/covidtracker-tools/blob/da21efc65a7cd3c9621359fe7fea69044bbac1f3/src/DataExplorer/territoires/dataexplorer_territoires.js#L48-L58

C'est le cas aussi partout ailleurs, mais particulièrement visible également sur le slider de date.

Vu qu'on utilise déjà lodash, on peut faire un truc comme ça:

Remplacer:

function buildChart(){
  ...
}

par:

function _buildChart() {
  ...
};

const buildChart = lodash.throttle(_buildChart, /* wait */ 1000, { leading: false, trailing: true });

J'ai testé en local avec la webconsole et ça semble résoudre le problème sur les checkbox, mais pas sur le slider qui fait un update directement plutôt qu'appeler buildChart dans changeTime.

Je pense qu'avec ça ça va déjà être beaucoup plus sympa à utiliser :-)

julienw commented 3 years ago

En fait je suggérais throttle pour le slider, mais vu que ça gère pas le slider finalement, ce serait sans doute mieux d'utiliser debounce:

function _buildChart() {
  ...
};

const buildChart = lodash.debounce(_buildChart, /* wait */ 1000);

(testé en local avec la console web encore)

julienw commented 3 years ago

J'ai réussi à lancer localement, je regarde ce que je peux envoyer comme PR.