All files / src/utils/common/graph handleLegendClick.ts

0% Statements 0/20
0% Branches 0/6
0% Functions 0/5
0% Lines 0/20

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46                                                                                           
export const handleLegendClick =
  (selectedLegends: any, setSelectedLegends: any, setChartOptions: any) =>
  (keyPressed: boolean) =>
  (params: any) => {
    let newSelectedLegends = selectedLegends;
    const selectedLegendsFiltered = Object.values(selectedLegends).filter(
      (e) => e,
    );
    const allSelected =
      selectedLegendsFiltered.length === Object.keys(selectedLegends).length;
    const isSelected = selectedLegends[params.name];
 
    if (!allSelected && isSelected) {
      for (let legend of Object.keys(selectedLegends)) {
        newSelectedLegends[legend] = true;
      }
    } else {
      if (keyPressed) {
        newSelectedLegends = {
          ...newSelectedLegends,
          [params.name]: !isSelected,
        };
      } else {
        for (let legend of Object.keys(selectedLegends)) {
          newSelectedLegends[legend] = false;
        }
        newSelectedLegends = {
          ...newSelectedLegends,
          [params.name]: true,
        };
      }
    }
 
    setChartOptions((prev: any) => {
      return {
        ...prev,
        legend: {
          ...prev.legend,
          selected: newSelectedLegends,
        },
      };
    });
 
    setSelectedLegends(newSelectedLegends);
  };