diff --git a/client/src/components/dashboard-components/scheduled-in-today/scheduled-in-today.component.jsx b/client/src/components/dashboard-components/scheduled-in-today/scheduled-in-today.component.jsx
index 74609ca49..268cb7a1c 100644
--- a/client/src/components/dashboard-components/scheduled-in-today/scheduled-in-today.component.jsx
+++ b/client/src/components/dashboard-components/scheduled-in-today/scheduled-in-today.component.jsx
@@ -3,21 +3,31 @@ import {
ExclamationCircleFilled,
PauseCircleOutlined,
} from "@ant-design/icons";
-import { Card, Space, Table, Tooltip } from "antd";
+import { Card, Space, Switch, Table, Tooltip, Typography } from "antd";
import moment from "moment";
import React, { useState } from "react";
import { useTranslation } from "react-i18next";
import { Link } from "react-router-dom";
+import { TimeFormatter } from "../../../utils/DateFormatter";
+import { onlyUnique } from "../../../utils/arrayHelper";
+import { alphaSort, dateSort } from "../../../utils/sorters";
+import useLocalStorage from "../../../utils/useLocalStorage";
import ChatOpenButton from "../../chat-open-button/chat-open-button.component";
-import OwnerNameDisplay from "../../owner-name-display/owner-name-display.component";
+import OwnerNameDisplay, {
+ OwnerNameDisplayFunction,
+} from "../../owner-name-display/owner-name-display.component";
import DashboardRefreshRequired from "../refresh-required.component";
-import {pageLimit} from "../../../utils/config";
export default function DashboardScheduledInToday({ data, ...cardProps }) {
const { t } = useTranslation();
const [state, setState] = useState({
sortedInfo: {},
});
+ const [isTVMode_scheduled_in, setIsTVMode_scheduled_in] = useLocalStorage(
+ "isTVMode_scheduled_in",
+ false
+ );
+
if (!data) return null;
if (!data.scheduled_in_today)
return ;
@@ -31,6 +41,12 @@ export default function DashboardScheduledInToday({ data, ...cardProps }) {
alt_transport: item.job.alt_transport,
clm_no: item.job.clm_no,
jobid: item.job.jobid,
+ joblines_body: item.job.joblines
+ .filter((l) => l.mod_lbr_ty !== "LAR")
+ .reduce((acc, val) => acc + val.mod_lb_hrs, 0),
+ joblines_ref: item.job.joblines
+ .filter((l) => l.mod_lbr_ty === "LAR")
+ .reduce((acc, val) => acc + val.mod_lb_hrs, 0),
ins_co_nm: item.job.ins_co_nm,
iouparent: item.job.iouparent,
ownerid: item.job.ownerid,
@@ -49,7 +65,7 @@ export default function DashboardScheduledInToday({ data, ...cardProps }) {
v_vin: item.job.v_vin,
vehicleid: item.job.vehicleid,
note: item.note,
- start: moment(item.start).format("hh:mm a"),
+ start: item.start,
title: item.title,
};
appt.push(i);
@@ -59,11 +75,193 @@ export default function DashboardScheduledInToday({ data, ...cardProps }) {
return new moment(a.start) - new moment(b.start);
});
- const columns = [
+ const TV_fontSize = 18;
+ const TV_fontWeight = "bold";
+
+ const tv_columns = [
+ {
+ title: t("appointments.fields.time"),
+ dataIndex: "start",
+ key: "start",
+ ellipsis: true,
+ sorter: (a, b) => dateSort(a.start, b.start),
+ sortOrder:
+ state.sortedInfo.columnKey === "start" && state.sortedInfo.order,
+ render: (text, record) => (
+
+ {record.start}
+
+ ),
+ },
{
title: t("jobs.fields.ro_number"),
dataIndex: "ro_number",
key: "ro_number",
+ sorter: (a, b) => alphaSort(a.ro_number, b.ro_number),
+ sortOrder:
+ state.sortedInfo.columnKey === "ro_number" && state.sortedInfo.order,
+ render: (text, record) => (
+ e.stopPropagation()}
+ >
+
+
+ {record.ro_number || t("general.labels.na")}
+ {record.production_vars && record.production_vars.alert ? (
+
+ ) : null}
+ {record.suspended && (
+
+ )}
+ {record.iouparent && (
+
+
+
+ )}
+
+
+
+ ),
+ },
+ {
+ title: t("jobs.fields.owner"),
+ dataIndex: "owner",
+ key: "owner",
+ ellipsis: true,
+ sorter: (a, b) =>
+ alphaSort(OwnerNameDisplayFunction(a), OwnerNameDisplayFunction(b)),
+ sortOrder:
+ state.sortedInfo.columnKey === "owner" && state.sortedInfo.order,
+ render: (text, record) => {
+ return record.ownerid ? (
+ e.stopPropagation()}
+ >
+
+
+
+
+ ) : (
+
+
+
+ );
+ },
+ },
+ {
+ title: t("jobs.fields.vehicle"),
+ dataIndex: "vehicle",
+ key: "vehicle",
+ ellipsis: true,
+ sorter: (a, b) =>
+ alphaSort(
+ `${a.v_model_yr || ""} ${a.v_make_desc || ""} ${
+ a.v_model_desc || ""
+ }`,
+ `${b.v_model_yr || ""} ${b.v_make_desc || ""} ${b.v_model_desc || ""}`
+ ),
+ sortOrder:
+ state.sortedInfo.columnKey === "vehicle" && state.sortedInfo.order,
+ render: (text, record) => {
+ return record.vehicleid ? (
+ e.stopPropagation()}
+ >
+
+ {`${record.v_model_yr || ""} ${record.v_make_desc || ""} ${
+ record.v_model_desc || ""
+ }`}
+
+
+ ) : (
+ {`${record.v_model_yr || ""} ${record.v_make_desc || ""} ${
+ record.v_model_desc || ""
+ }`}
+ );
+ },
+ },
+ {
+ title: t("appointments.fields.alt_transport"),
+ dataIndex: "alt_transport",
+ key: "alt_transport",
+ ellipsis: true,
+ sorter: (a, b) => alphaSort(a.alt_transport, b.alt_transport),
+ sortOrder:
+ state.sortedInfo.columnKey === "alt_transport" &&
+ state.sortedInfo.order,
+ filters:
+ (appt &&
+ appt
+ .map((j) => j.alt_transport)
+ .filter(onlyUnique)
+ .map((s) => {
+ return {
+ text: s || "No Alt. Transport",
+ value: [s],
+ };
+ })
+ .sort((a, b) => alphaSort(a.text, b.text))) ||
+ [],
+ render: (text, record) => (
+
+ {record.alt_transport}
+
+ ),
+ },
+ {
+ title: t("jobs.fields.lab"),
+ dataIndex: "joblines_body",
+ key: "joblines_body",
+ sorter: (a, b) => a.joblines_body - b.joblines_body,
+ sortOrder:
+ state.sortedInfo.columnKey === "joblines_body" &&
+ state.sortedInfo.order,
+ align: "right",
+ render: (text, record) => (
+
+ {record.joblines_body}
+
+ ),
+ },
+ {
+ title: t("jobs.fields.lar"),
+ dataIndex: "joblines_ref",
+ key: "joblines_ref",
+ sorter: (a, b) => a.joblines_ref - b.joblines_ref,
+ sortOrder:
+ state.sortedInfo.columnKey === "joblines_ref" && state.sortedInfo.order,
+ align: "right",
+ render: (text, record) => (
+
+ {record.joblines_ref}
+
+ ),
+ },
+ ];
+
+ const columns = [
+ {
+ title: t("appointments.fields.time"),
+ dataIndex: "start",
+ key: "start",
+ ellipsis: true,
+ sorter: (a, b) => dateSort(a.start, b.start),
+ sortOrder:
+ state.sortedInfo.columnKey === "start" && state.sortedInfo.order,
+ render: (text, record) => {record.start},
+ },
+ {
+ title: t("jobs.fields.ro_number"),
+ dataIndex: "ro_number",
+ key: "ro_number",
+ sorter: (a, b) => alphaSort(a.ro_number, b.ro_number),
+ sortOrder:
+ state.sortedInfo.columnKey === "ro_number" && state.sortedInfo.order,
render: (text, record) => (
+ alphaSort(OwnerNameDisplayFunction(a), OwnerNameDisplayFunction(b)),
+ sortOrder:
+ state.sortedInfo.columnKey === "owner" && state.sortedInfo.order,
render: (text, record) => {
return record.ownerid ? (
(
-
- ),
- },
- {
- title: t("jobs.fields.ownr_ph2"),
- dataIndex: "ownr_ph2",
- key: "ownr_ph2",
- ellipsis: true,
- responsive: ["md"],
- render: (text, record) => (
-
+
+
+
+
),
},
{
@@ -134,7 +328,7 @@ export default function DashboardScheduledInToday({ data, ...cardProps }) {
ellipsis: true,
responsive: ["md"],
render: (text, record) => (
-
+ {record.ownr_ea}
),
},
{
@@ -142,6 +336,15 @@ export default function DashboardScheduledInToday({ data, ...cardProps }) {
dataIndex: "vehicle",
key: "vehicle",
ellipsis: true,
+ sorter: (a, b) =>
+ alphaSort(
+ `${a.v_model_yr || ""} ${a.v_make_desc || ""} ${
+ a.v_model_desc || ""
+ }`,
+ `${b.v_model_yr || ""} ${b.v_make_desc || ""} ${b.v_model_desc || ""}`
+ ),
+ sortOrder:
+ state.sortedInfo.columnKey === "vehicle" && state.sortedInfo.order,
render: (text, record) => {
return record.vehicleid ? (
alphaSort(a.ins_co_nm, b.ins_co_nm),
+ sortOrder:
+ state.sortedInfo.columnKey === "ins_co_nm" && state.sortedInfo.order,
+ filters:
+ (appt &&
+ appt
+ .map((j) => j.ins_co_nm)
+ .filter(onlyUnique)
+ .map((s) => {
+ return {
+ text: s || "No Ins. Co.*",
+ value: [s],
+ };
+ })
+ .sort((a, b) => alphaSort(a.text, b.text))) ||
+ [],
+ onFilter: (value, record) => value.includes(record.ins_co_nm),
},
{
title: t("appointments.fields.alt_transport"),
dataIndex: "alt_transport",
key: "alt_transport",
ellipsis: true,
- responsive: ["md"],
+ sorter: (a, b) => alphaSort(a.alt_transport, b.alt_transport),
+ sortOrder:
+ state.sortedInfo.columnKey === "alt_transport" &&
+ state.sortedInfo.order,
+ filters:
+ (appt &&
+ appt
+ .map((j) => j.alt_transport)
+ .filter(onlyUnique)
+ .map((s) => {
+ return {
+ text: s || "No Alt. Transport",
+ value: [s],
+ };
+ })
+ .sort((a, b) => alphaSort(a.text, b.text))) ||
+ [],
},
];
@@ -188,20 +417,30 @@ export default function DashboardScheduledInToday({ data, ...cardProps }) {
return (
+ {t("general.labels.tvmode")}
+ setIsTVMode_scheduled_in(!isTVMode_scheduled_in)}
+ defaultChecked={isTVMode_scheduled_in}
+ />
+
+ }
{...cardProps}
>
@@ -220,6 +459,10 @@ export const DashboardScheduledInTodayGql = `
alt_transport
clm_no
jobid: id
+ joblines(where: {removed: {_eq: false}}) {
+ mod_lb_hrs
+ mod_lbr_ty
+ }
ins_co_nm
iouparent
ownerid
diff --git a/client/src/components/dashboard-components/scheduled-out-today/scheduled-out-today.component.jsx b/client/src/components/dashboard-components/scheduled-out-today/scheduled-out-today.component.jsx
index 0407e3aad..ab1ab086f 100644
--- a/client/src/components/dashboard-components/scheduled-out-today/scheduled-out-today.component.jsx
+++ b/client/src/components/dashboard-components/scheduled-out-today/scheduled-out-today.component.jsx
@@ -3,37 +3,271 @@ import {
ExclamationCircleFilled,
PauseCircleOutlined,
} from "@ant-design/icons";
-import { Card, Space, Table, Tooltip } from "antd";
+import { Card, Space, Switch, Table, Tooltip, Typography } from "antd";
import moment from "moment";
import React, { useState } from "react";
import { useTranslation } from "react-i18next";
import { Link } from "react-router-dom";
+import { TimeFormatter } from "../../../utils/DateFormatter";
+import { onlyUnique } from "../../../utils/arrayHelper";
+import { alphaSort, dateSort } from "../../../utils/sorters";
+import useLocalStorage from "../../../utils/useLocalStorage";
import ChatOpenButton from "../../chat-open-button/chat-open-button.component";
-import OwnerNameDisplay from "../../owner-name-display/owner-name-display.component";
+import OwnerNameDisplay, {
+ OwnerNameDisplayFunction,
+} from "../../owner-name-display/owner-name-display.component";
import DashboardRefreshRequired from "../refresh-required.component";
-import {pageLimit} from "../../../utils/config";
export default function DashboardScheduledOutToday({ data, ...cardProps }) {
const { t } = useTranslation();
const [state, setState] = useState({
sortedInfo: {},
});
+ const [isTVMode_scheduled_out, setIsTVMode_scheduled_out] = useLocalStorage(
+ "isTVMode_scheduled_out",
+ false
+ );
+
if (!data) return null;
if (!data.scheduled_out_today)
return ;
data.scheduled_out_today.forEach((item) => {
- item.scheduled_completion= moment(item.scheduled_completion).format("hh:mm a")
+ item.joblines_body = item.joblines
+ ? item.joblines
+ .filter((l) => l.mod_lbr_ty !== "LAR")
+ .reduce((acc, val) => acc + val.mod_lb_hrs, 0)
+ : 0;
+ item.joblines_ref = item.joblines
+ ? item.joblines
+ .filter((l) => l.mod_lbr_ty === "LAR")
+ .reduce((acc, val) => acc + val.mod_lb_hrs, 0)
+ : 0;
});
data.scheduled_out_today.sort(function (a, b) {
return new Date(a.scheduled_completion) - new Date(b.scheduled_completion);
});
- const columns = [
+ const TV_fontSize = 18;
+ const TV_fontWeight = "bold";
+
+ const tv_columns = [
+ {
+ title: t("jobs.fields.scheduled_completion"),
+ dataIndex: "scheduled_completion",
+ key: "scheduled_completion",
+ ellipsis: true,
+ sorter: (a, b) =>
+ dateSort(a.scheduled_completion, b.scheduled_completion),
+ sortOrder:
+ state.sortedInfo.columnKey === "scheduled_completion" &&
+ state.sortedInfo.order,
+ render: (text, record) => (
+
+ {record.scheduled_completion}
+
+ ),
+ },
{
title: t("jobs.fields.ro_number"),
dataIndex: "ro_number",
key: "ro_number",
+ sorter: (a, b) => alphaSort(a.ro_number, b.ro_number),
+ sortOrder:
+ state.sortedInfo.columnKey === "ro_number" && state.sortedInfo.order,
+ render: (text, record) => (
+ e.stopPropagation()}
+ >
+
+
+ {record.ro_number || t("general.labels.na")}
+ {record.production_vars && record.production_vars.alert ? (
+
+ ) : null}
+ {record.suspended && (
+
+ )}
+ {record.iouparent && (
+
+
+
+ )}
+
+
+
+ ),
+ },
+ {
+ title: t("jobs.fields.owner"),
+ dataIndex: "owner",
+ key: "owner",
+ ellipsis: true,
+ sorter: (a, b) =>
+ alphaSort(OwnerNameDisplayFunction(a), OwnerNameDisplayFunction(b)),
+ sortOrder:
+ state.sortedInfo.columnKey === "owner" && state.sortedInfo.order,
+ render: (text, record) => {
+ return record.ownerid ? (
+ e.stopPropagation()}
+ >
+
+
+
+
+ ) : (
+
+
+
+ );
+ },
+ },
+ {
+ title: t("jobs.fields.vehicle"),
+ dataIndex: "vehicle",
+ key: "vehicle",
+ ellipsis: true,
+ sorter: (a, b) =>
+ alphaSort(
+ `${a.v_model_yr || ""} ${a.v_make_desc || ""} ${
+ a.v_model_desc || ""
+ }`,
+ `${b.v_model_yr || ""} ${b.v_make_desc || ""} ${b.v_model_desc || ""}`
+ ),
+ sortOrder:
+ state.sortedInfo.columnKey === "vehicle" && state.sortedInfo.order,
+ render: (text, record) => {
+ return record.vehicleid ? (
+ e.stopPropagation()}
+ >
+
+ {`${record.v_model_yr || ""} ${record.v_make_desc || ""} ${
+ record.v_model_desc || ""
+ }`}
+
+
+ ) : (
+ {`${record.v_model_yr || ""} ${record.v_make_desc || ""} ${
+ record.v_model_desc || ""
+ }`}
+ );
+ },
+ },
+ {
+ title: t("appointments.fields.alt_transport"),
+ dataIndex: "alt_transport",
+ key: "alt_transport",
+ ellipsis: true,
+ sorter: (a, b) => alphaSort(a.alt_transport, b.alt_transport),
+ sortOrder:
+ state.sortedInfo.columnKey === "alt_transport" &&
+ state.sortedInfo.order,
+ filters:
+ (data.scheduled_out_today &&
+ data.scheduled_out_today
+ .map((j) => j.alt_transport)
+ .filter(onlyUnique)
+ .map((s) => {
+ return {
+ text: s || "No Alt. Transport*",
+ value: [s],
+ };
+ })
+ .sort((a, b) => alphaSort(a.text, b.text))) ||
+ [],
+ render: (text, record) => (
+
+ {record.alt_transport}
+
+ ),
+ },
+ {
+ title: t("jobs.fields.status"),
+ dataIndex: "status",
+ key: "status",
+ ellipsis: true,
+ sorter: (a, b) => alphaSort(a.alt_transport, b.alt_transport),
+ sortOrder:
+ state.sortedInfo.columnKey === "status" && state.sortedInfo.order,
+ filters:
+ (data.scheduled_out_today &&
+ data.scheduled_out_today
+ .map((j) => j.status)
+ .filter(onlyUnique)
+ .map((s) => {
+ return {
+ text: s || "No Status*",
+ value: [s],
+ };
+ })
+ .sort((a, b) => alphaSort(a.text, b.text))) ||
+ [],
+ render: (text, record) => (
+
+ {record.status}
+
+ ),
+ },
+ {
+ title: t("jobs.fields.lab"),
+ dataIndex: "joblines_body",
+ key: "joblines_body",
+ sorter: (a, b) => a.joblines_body - b.joblines_body,
+ sortOrder:
+ state.sortedInfo.columnKey === "joblines_body" &&
+ state.sortedInfo.order,
+ align: "right",
+ render: (text, record) => (
+
+ {record.joblines_body}
+
+ ),
+ },
+ {
+ title: t("jobs.fields.lar"),
+ dataIndex: "joblines_ref",
+ key: "joblines_ref",
+ sorter: (a, b) => a.joblines_ref - b.joblines_ref,
+ sortOrder:
+ state.sortedInfo.columnKey === "joblines_ref" && state.sortedInfo.order,
+ align: "right",
+ render: (text, record) => (
+
+ {record.joblines_ref}
+
+ ),
+ },
+ ];
+
+ const columns = [
+ {
+ title: t("jobs.fields.scheduled_completion"),
+ dataIndex: "scheduled_completion",
+ key: "scheduled_completion",
+ ellipsis: true,
+ sorter: (a, b) =>
+ dateSort(a.scheduled_completion, b.scheduled_completion),
+ sortOrder:
+ state.sortedInfo.columnKey === "scheduled_completion" &&
+ state.sortedInfo.order,
+ render: (text, record) => (
+ {record.scheduled_completion}
+ ),
+ },
+ {
+ title: t("jobs.fields.ro_number"),
+ dataIndex: "ro_number",
+ key: "ro_number",
+ sorter: (a, b) => alphaSort(a.ro_number, b.ro_number),
+ sortOrder:
+ state.sortedInfo.columnKey === "ro_number" && state.sortedInfo.order,
render: (text, record) => (
+ alphaSort(OwnerNameDisplayFunction(a), OwnerNameDisplayFunction(b)),
+ sortOrder:
+ state.sortedInfo.columnKey === "owner" && state.sortedInfo.order,
render: (text, record) => {
return record.ownerid ? (
(
-
- ),
- },
- {
- title: t("jobs.fields.ownr_ph2"),
- dataIndex: "ownr_ph2",
- key: "ownr_ph2",
- ellipsis: true,
- responsive: ["md"],
- render: (text, record) => (
-
+
+
+
+
),
},
{
@@ -104,7 +334,7 @@ export default function DashboardScheduledOutToday({ data, ...cardProps }) {
ellipsis: true,
responsive: ["md"],
render: (text, record) => (
-
+ {record.ownr_ea}
),
},
{
@@ -112,6 +342,15 @@ export default function DashboardScheduledOutToday({ data, ...cardProps }) {
dataIndex: "vehicle",
key: "vehicle",
ellipsis: true,
+ sorter: (a, b) =>
+ alphaSort(
+ `${a.v_model_yr || ""} ${a.v_make_desc || ""} ${
+ a.v_model_desc || ""
+ }`,
+ `${b.v_model_yr || ""} ${b.v_make_desc || ""} ${b.v_model_desc || ""}`
+ ),
+ sortOrder:
+ state.sortedInfo.columnKey === "vehicle" && state.sortedInfo.order,
render: (text, record) => {
return record.vehicleid ? (
alphaSort(a.ins_co_nm, b.ins_co_nm),
+ sortOrder:
+ state.sortedInfo.columnKey === "ins_co_nm" && state.sortedInfo.order,
+ filters:
+ (data.scheduled_out_today &&
+ data.scheduled_out_today
+ .map((j) => j.ins_co_nm)
+ .filter(onlyUnique)
+ .map((s) => {
+ return {
+ text: s || "No Ins. Co.*",
+ value: [s],
+ };
+ })
+ .sort((a, b) => alphaSort(a.text, b.text))) ||
+ [],
+ onFilter: (value, record) => value.includes(record.ins_co_nm),
},
{
title: t("appointments.fields.alt_transport"),
dataIndex: "alt_transport",
key: "alt_transport",
ellipsis: true,
- responsive: ["md"],
+ sorter: (a, b) => alphaSort(a.alt_transport, b.alt_transport),
+ sortOrder:
+ state.sortedInfo.columnKey === "alt_transport" &&
+ state.sortedInfo.order,
+ filters:
+ (data.scheduled_out_today &&
+ data.scheduled_out_today
+ .map((j) => j.alt_transport)
+ .filter(onlyUnique)
+ .map((s) => {
+ return {
+ text: s || "No Alt. Transport*",
+ value: [s],
+ };
+ })
+ .sort((a, b) => alphaSort(a.text, b.text))) ||
+ [],
},
];
@@ -158,20 +423,30 @@ export default function DashboardScheduledOutToday({ data, ...cardProps }) {
return (
+ {t("general.labels.tvmode")}
+ setIsTVMode_scheduled_out(!isTVMode_scheduled_out)}
+ defaultChecked={isTVMode_scheduled_out}
+ />
+
+ }
{...cardProps}
>
@@ -188,6 +463,10 @@ export const DashboardScheduledOutTodayGql = `
alt_transport
clm_no
jobid: id
+ joblines(where: {removed: {_eq: false}}) {
+ mod_lb_hrs
+ mod_lbr_ty
+ }
ins_co_nm
iouparent
ownerid
@@ -200,6 +479,7 @@ export const DashboardScheduledOutTodayGql = `
production_vars
ro_number
scheduled_completion
+ status
suspended
v_make_desc
v_model_desc
diff --git a/client/src/components/dashboard-grid/dashboard-grid.component.jsx b/client/src/components/dashboard-grid/dashboard-grid.component.jsx
index d24dd5641..7012d943b 100644
--- a/client/src/components/dashboard-grid/dashboard-grid.component.jsx
+++ b/client/src/components/dashboard-grid/dashboard-grid.component.jsx
@@ -275,26 +275,22 @@ const componentList = {
h: 2,
},
ScheduleInToday: {
- label: i18next.t("dashboard.titles.scheduledintoday", {
- date: moment().startOf("day").format("MM/DD/YYYY"),
- }),
+ label: i18next.t("dashboard.titles.scheduledintoday"),
component: DashboardScheduledInToday,
gqlFragment: DashboardScheduledInTodayGql,
- minW: 10,
+ minW: 6,
minH: 2,
w: 10,
- h: 2,
+ h: 3,
},
ScheduleOutToday: {
- label: i18next.t("dashboard.titles.scheduledouttoday", {
- date: moment().startOf("day").format("MM/DD/YYYY"),
- }),
+ label: i18next.t("dashboard.titles.scheduledouttoday"),
component: DashboardScheduledOutToday,
gqlFragment: DashboardScheduledOutTodayGql,
- minW: 10,
+ minW: 6,
minH: 2,
w: 10,
- h: 2,
+ h: 3,
},
};
@@ -306,8 +302,7 @@ const createDashboardQuery = (state) => {
.map((item, index) => componentList[item.i].gqlFragment || "")
.join("");
return gql`
- query QUERY_DASHBOARD_DETAILS {
- ${componentBasedAdditions || ""}
+ query QUERY_DASHBOARD_DETAILS { ${componentBasedAdditions || ""}
monthly_sales: jobs(where: {_and: [
{ voided: {_eq: false}},
{date_invoiced: {_gte: "${moment()
@@ -317,11 +312,11 @@ const createDashboardQuery = (state) => {
.endOf("month")
.endOf("day")
.toISOString()}"}}]}) {
- id
- ro_number
- date_invoiced
- job_totals
- rate_la1
+ id
+ ro_number
+ date_invoiced
+ job_totals
+ rate_la1
rate_la2
rate_la3
rate_la4
@@ -344,43 +339,42 @@ const createDashboardQuery = (state) => {
rate_mapa
rate_mash
rate_matd
- joblines(where: { removed: { _eq: false } }) {
+ joblines(where: { removed: { _eq: false } }) {
id
mod_lbr_ty
mod_lb_hrs
act_price
part_qty
part_type
+ }
}
- }
- production_jobs: jobs(where: { inproduction: { _eq: true } }) {
+ production_jobs: jobs(where: { inproduction: { _eq: true } }) {
+ id
+ ro_number
+ ins_co_nm
+ job_totals
+ joblines(where: { removed: { _eq: false } }) {
id
- ro_number
- ins_co_nm
- job_totals
- joblines(where: { removed: { _eq: false } }) {
- id
- mod_lbr_ty
- mod_lb_hrs
- act_price
- part_qty
- part_type
- }
- labhrs: joblines_aggregate(where: { mod_lbr_ty: { _neq: "LAR" }, removed: { _eq: false } }) {
- aggregate {
- sum {
- mod_lb_hrs
- }
+ mod_lbr_ty
+ mod_lb_hrs
+ act_price
+ part_qty
+ part_type
+ }
+ labhrs: joblines_aggregate(where: { mod_lbr_ty: { _neq: "LAR" }, removed: { _eq: false } }) {
+ aggregate {
+ sum {
+ mod_lb_hrs
}
}
- larhrs: joblines_aggregate(where: { mod_lbr_ty: { _eq: "LAR" }, removed: { _eq: false } }) {
- aggregate {
- sum {
- mod_lb_hrs
- }
+ }
+ larhrs: joblines_aggregate(where: { mod_lbr_ty: { _eq: "LAR" }, removed: { _eq: false } }) {
+ aggregate {
+ sum {
+ mod_lb_hrs
}
}
}
}
- `;
+ }`;
};
diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json
index 77cdb8091..dcbed3a58 100644
--- a/client/src/translations/en_us/common.json
+++ b/client/src/translations/en_us/common.json
@@ -874,6 +874,7 @@
"labels": {
"bodyhrs": "Body Hrs",
"dollarsinproduction": "Dollars in Production",
+ "phone": "Phone",
"prodhrs": "Production Hrs",
"refhrs": "Refinish Hrs"
},
@@ -889,8 +890,10 @@
"productiondollars": "Total Dollars in Production",
"productionhours": "Total Hours in Production",
"projectedmonthlysales": "Projected Monthly Sales",
- "scheduledintoday": "Sheduled In Today: {{date}}",
- "scheduledouttoday": "Sheduled Out Today: {{date}}"
+ "scheduledindate": "Sheduled In Today: {{date}}",
+ "scheduledintoday": "Sheduled In Today:",
+ "scheduledoutdate": "Sheduled Out Today: {{date}}",
+ "scheduledouttoday": "Sheduled Out Today:"
}
},
"dms": {
diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json
index 341f86fd7..da6dad9b2 100644
--- a/client/src/translations/es/common.json
+++ b/client/src/translations/es/common.json
@@ -874,6 +874,7 @@
"labels": {
"bodyhrs": "",
"dollarsinproduction": "",
+ "phone": "",
"prodhrs": "",
"refhrs": ""
},
@@ -889,7 +890,9 @@
"productiondollars": "",
"productionhours": "",
"projectedmonthlysales": "",
+ "scheduledindate": "",
"scheduledintoday": "",
+ "scheduledoutdate": "",
"scheduledouttoday": ""
}
},
diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json
index 7cdabf620..85c29f96d 100644
--- a/client/src/translations/fr/common.json
+++ b/client/src/translations/fr/common.json
@@ -874,6 +874,7 @@
"labels": {
"bodyhrs": "",
"dollarsinproduction": "",
+ "phone": "",
"prodhrs": "",
"refhrs": ""
},
@@ -889,7 +890,9 @@
"productiondollars": "",
"productionhours": "",
"projectedmonthlysales": "",
+ "scheduledindate": "",
"scheduledintoday": "",
+ "scheduledoutdate": "",
"scheduledouttoday": ""
}
},