All files / libs/reporting/dashboards/components/src/lib/home-legacy usePlanKpis.ts

0% Statements 0/62
0% Branches 0/1
0% Functions 0/1
0% Lines 0/62

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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63                                                                                                                             
import { keys } from 'lodash-es';
import { useMemo } from 'react';

import { usePlanKpisWidget } from '@amalia/reporting/dashboards/state';

export const usePlanKpis = (
  periodId: string | undefined,
  selectedUserIds: string[],
  selectedPlanIds: string[],
  selectedTeamIds: string[],
) => {
  const shouldLoadKpis = selectedPlanIds.length === 1;

  const { data: planKpis, isLoading: isLoadingPlanKpis } = usePlanKpisWidget(
    {
      periodId: periodId!,
      userIds: selectedUserIds,
      planIds: selectedPlanIds,
      teamIds: selectedTeamIds,
    },
    !!(periodId && shouldLoadKpis),
  );

  const kpis = useMemo(() => {
    const kpis =
      planKpis && shouldLoadKpis
        ? keys(planKpis.definitions).filter((key) => !['RULE_METRIC__total', 'ruleMetricPeriod__month'].includes(key))
        : undefined;

    const kpi1 = kpis?.[0];
    const kpi2 = kpis?.[1];

    return {
      kpi1:
        planKpis && kpi1 && kpi1 in planKpis.definitions
          ? {
              value: planKpis.records[0]?.[kpi1] as number | undefined,
              label: planKpis.definitions[kpi1].label,
            }
          : {
              value: undefined,
              label: undefined,
            },

      kpi2:
        planKpis && kpi2 && kpi2 in planKpis.definitions
          ? {
              value: planKpis.records[0]?.[kpi2] as number | undefined,
              label: planKpis.definitions[kpi2].label,
            }
          : {
              value: undefined,
              label: undefined,
            },
    };
  }, [shouldLoadKpis, planKpis]);

  return {
    ...kpis,
    isLoadingPlanKpis,
  };
};