Мне нужно сделать так, чтобы круговая диаграмма использовала либо один фильтр, либо общий фильтр первых двух функций, а не только последний выбранный

const handleObjectClick = (objectName, columnIndex) => {
    setSelectedColumn(columnIndex);

    // Сбрасываем фильтр, если уже был выбран этот объект
    if (selectedObject === objectName) {
      setSelectedObject(null);

      // Сбрасываем фильтры только для других графиков
      if (columnIndex === 0) {
        // CardCount
        setFilterDataNew(data);
        setFilterDoughnut(data);
      } else if (columnIndex === 1) {
        // CardCountDevice
        setFilterData(data);
        setFilterDoughnut(data);
      } else if (columnIndex === 2) {
        // CardStatus
        setFilterData(data);
        setFilterDataNew(data);
      }

      return; // Выход из функции, если фильтр сброшен
    }

    setSelectedObject(objectName);

    // Фильтруем только остальные графики
    if (columnIndex === 0) {
      // CardCount
      setFilterDataNew(data.filter((data) => data.tobj_name === objectName));
      setFilterDoughnut(data.filter((data) => data.tobj_name === objectName));
    } else if (columnIndex === 1) {
      // CardCountDevice
      setFilterData(data.filter((data) => data.tobj_name === objectName));
      setFilterDoughnut(data.filter((data) => data.tobj_name === objectName));
    } else if (columnIndex === 2) {
      // CardStatus
      setFilterData(data.filter((data) => data.tobj_name === objectName));
      setFilterDataNew(data.filter((data) => data.tobj_name === objectName));
    }
  };

  const handleTypeClick = (typeName, columnIndex) => {
    setSelectedColumn(columnIndex);

    // Сбрасываем фильтр, если уже был выбран этот тип
    if (selectedType === typeName) {
      setSelectedType(null);

      // Сбрасываем фильтры только для других графиков
      if (columnIndex === 0) {
        // CardCount
        setFilterDataNew(data);
        setFilterDoughnut(data);
      } else if (columnIndex === 1) {
        // CardCountDevice
        setFilterData(data);
        setFilterDoughnut(data);
      } else if (columnIndex === 2) {
        // CardStatus
        setFilterData(data);
        setFilterDataNew(data);
      }

      return; // Выход из функции, если фильтр сброшен
    }

    setSelectedType(typeName);

    // Фильтруем только остальные графики
    if (columnIndex === 0) {
      // CardCount
      setFilterDataNew(data.filter((data) => data.typd_name === typeName));
      setFilterDoughnut(data.filter((data) => data.typd_name === typeName));
    } else if (columnIndex === 1) {
      // CardCountDevice
      setFilterData(data.filter((data) => data.typd_name === typeName));
      setFilterDoughnut(data.filter((data) => data.typd_name === typeName));
    } else if (columnIndex === 2) {
      // CardStatus
      setFilterData(data.filter((data) => data.typd_name === typeName));
      setFilterDataNew(data.filter((data) => data.typd_name === typeName));
    }
  };

  const handleStatusClick = (statusName, columnIndex) => {
    setSelectedColumn(columnIndex);

    // Сбрасываем фильтр, если уже был выбран этот статус
    if (selectedStatus === statusName) {
      setSelectedStatus(null);

      // Сбрасываем фильтры только для других графиков
      if (columnIndex === 0) {
        // CardCount
        setFilterDataNew(data);
        setFilterDoughnut(data);
      } else if (columnIndex === 1) {
        // CardCountDevice
        setFilterData(data);
        setFilterDoughnut(data);
      } else if (columnIndex === 2) {
        // CardStatus
        setFilterData(data);
        setFilterDataNew(data);
      }

      return; // Выход из функции, если фильтр сброшен
    }

    setSelectedStatus(statusName);

    // Фильтруем только остальные графики
    if (columnIndex === 0) {
      // CardCount
      setFilterDataNew(data.filter((data) => data.fault_name === statusName));
      setFilterDoughnut(data.filter((data) => data.fault_name === statusName));
    } else if (columnIndex === 1) {
      // CardCountDevice
      setFilterData(data.filter((data) => data.fault_name === statusName));
      setFilterDoughnut(data.filter((data) => data.fault_name === statusName));
    } else if (columnIndex === 2) {
      // CardStatus
      setFilterData(data.filter((data) => data.fault_name === statusName));
      setFilterDataNew(data.filter((data) => data.fault_name === statusName));
    }
  };

Ответы (0 шт):