import * as React from "react";

import {
  useDeepCompareEffect,
  useOpenDashServices,
  DataItemValueInterface,
  DataItemInterface,
} from "../..";

import { StateInterface } from "./types";

export function useItems(
  state: StateInterface
): Record<string, DataItemInterface> {
  return {};
}

export function useData(
  state: StateInterface
): [boolean, Record<string, DataItemValueInterface[]>] {
  const { DataService } = useOpenDashServices();
  const [data, setData] = React.useState(null);
  const [hasError, setError] = React.useState(false);

  return [hasError, data];
}

export function aggregate(
  aggregation: "mean" | "sum" | "min" | "max" | "count",
  values: number[]
): number {
  switch (aggregation) {
    case "mean":
      return (
        values.reduce((previous, current) => (current += previous)) /
        values.length
      );

    case "sum":
      return values.reduce((previous, current) => (current += previous));

    case "min":
      return Math.min(...values);

    case "max":
      return Math.max(...values);

    case "count":
    default:
      return values.length;
  }
}

export function round(value: number, decimals: number): number {
  return Math.round(value * Math.pow(10, decimals)) / Math.pow(10, decimals);
}
