import i18next from "i18next";
import JobLifecycleDashboardComponent, {
  JobLifecycleDashboardGQL
} from "../dashboard-components/job-lifecycle/job-lifecycle-dashboard.component.jsx";
import DashboardMonthlyEmployeeEfficiency, {
  DashboardMonthlyEmployeeEfficiencyGql
} from "../dashboard-components/monthly-employee-efficiency/monthly-employee-efficiency.component.jsx";
import DashboardMonthlyJobCosting from "../dashboard-components/monthly-job-costing/monthly-job-costing.component.jsx";
import DashboardMonthlyLaborSales from "../dashboard-components/monthly-labor-sales/monthly-labor-sales.component.jsx";
import DashboardMonthlyPartsSales from "../dashboard-components/monthly-parts-sales/monthly-parts-sales.component.jsx";
import DashboardMonthlyRevenueGraph, {
  DashboardMonthlyRevenueGraphGql
} from "../dashboard-components/monthly-revenue-graph/monthly-revenue-graph.component.jsx";
import DashboardProjectedMonthlySales, {
  DashboardProjectedMonthlySalesGql
} from "../dashboard-components/pojected-monthly-sales/projected-monthly-sales.component.jsx";
import DashboardScheduledDeliveryToday, {
  DashboardScheduledDeliveryTodayGql
} from "../dashboard-components/scheduled-delivery-today/scheduled-delivery-today.component.jsx";
import DashboardScheduledInToday, {
  DashboardScheduledInTodayGql
} from "../dashboard-components/scheduled-in-today/scheduled-in-today.component.jsx";
import DashboardScheduledOutToday, {
  DashboardScheduledOutTodayGql
} from "../dashboard-components/scheduled-out-today/scheduled-out-today.component.jsx";
import DashboardTotalProductionDollars from "../dashboard-components/total-production-dollars/total-production-dollars.component.jsx";
import {
  DashboardTotalProductionHours,
  DashboardTotalProductionHoursGql
} from "../dashboard-components/total-production-hours/total-production-hours.component.jsx";

const componentList = {
  ProductionDollars: {
    label: i18next.t("dashboard.titles.productiondollars"),
    component: DashboardTotalProductionDollars,
    gqlFragment: null,
    w: 1,
    h: 1,
    minW: 2,
    minH: 1
  },
  ProductionHours: {
    label: i18next.t("dashboard.titles.productionhours"),
    component: DashboardTotalProductionHours,
    gqlFragment: DashboardTotalProductionHoursGql,
    w: 3,
    h: 1,
    minW: 3,
    minH: 1
  },
  ProjectedMonthlySales: {
    label: i18next.t("dashboard.titles.projectedmonthlysales"),
    component: DashboardProjectedMonthlySales,
    gqlFragment: DashboardProjectedMonthlySalesGql,
    w: 2,
    h: 1,
    minW: 2,
    minH: 1
  },
  MonthlyRevenueGraph: {
    label: i18next.t("dashboard.titles.monthlyrevenuegraph"),
    component: DashboardMonthlyRevenueGraph,
    gqlFragment: DashboardMonthlyRevenueGraphGql,
    w: 4,
    h: 2,
    minW: 4,
    minH: 2
  },
  MonthlyJobCosting: {
    label: i18next.t("dashboard.titles.monthlyjobcosting"),
    component: DashboardMonthlyJobCosting,
    gqlFragment: null,
    minW: 6,
    minH: 3,
    w: 6,
    h: 3
  },
  MonthlyPartsSales: {
    label: i18next.t("dashboard.titles.monthlypartssales"),
    component: DashboardMonthlyPartsSales,
    gqlFragment: null,
    minW: 2,
    minH: 2,
    w: 2,
    h: 2
  },
  MonthlyLaborSales: {
    label: i18next.t("dashboard.titles.monthlylaborsales"),
    component: DashboardMonthlyLaborSales,
    gqlFragment: null,
    minW: 2,
    minH: 2,
    w: 2,
    h: 2
  },
  // Typo in Efficency should be Efficiency, but changing it would reset users dashboard settings
  MonthlyEmployeeEfficency: {
    label: i18next.t("dashboard.titles.monthlyemployeeefficiency"),
    component: DashboardMonthlyEmployeeEfficiency,
    gqlFragment: DashboardMonthlyEmployeeEfficiencyGql,
    minW: 2,
    minH: 2,
    w: 2,
    h: 2
  },
  ScheduleInToday: {
    label: i18next.t("dashboard.titles.scheduledintoday"),
    component: DashboardScheduledInToday,
    gqlFragment: DashboardScheduledInTodayGql,
    minW: 6,
    minH: 2,
    w: 10,
    h: 3
  },
  ScheduleOutToday: {
    label: i18next.t("dashboard.titles.scheduledouttoday"),
    component: DashboardScheduledOutToday,
    gqlFragment: DashboardScheduledOutTodayGql,
    minW: 6,
    minH: 2,
    w: 10,
    h: 3
  },
  ScheduleDeliveryToday: {
    label: i18next.t("dashboard.titles.scheduleddeliverytoday"),
    component: DashboardScheduledDeliveryToday,
    gqlFragment: DashboardScheduledDeliveryTodayGql,
    minW: 6,
    minH: 2,
    w: 10,
    h: 3
  },
  JobLifecycle: {
    label: i18next.t("dashboard.titles.joblifecycle"),
    component: JobLifecycleDashboardComponent,
    gqlFragment: JobLifecycleDashboardGQL,
    minW: 6,
    minH: 3,
    w: 6,
    h: 3
  }
};

export default componentList;
