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
new file mode 100644
index 000000000..586e719ab
--- /dev/null
+++ b/client/src/components/dashboard-components/scheduled-out-today/scheduled-out-today.component.jsx
@@ -0,0 +1,210 @@
+import {
+ BranchesOutlined,
+ ExclamationCircleFilled,
+ PauseCircleOutlined,
+} from "@ant-design/icons";
+import { Card, Space, Table, Tooltip } from "antd";
+import moment from "moment";
+import React, { useState } from "react";
+import { useTranslation } from "react-i18next";
+import { Link } from "react-router-dom";
+import ChatOpenButton from "../../chat-open-button/chat-open-button.component";
+import OwnerNameDisplay from "../../owner-name-display/owner-name-display.component";
+import DashboardRefreshRequired from "../refresh-required.component";
+
+export default function DashboardScheduledOutToday({ data, ...cardProps }) {
+ const { t } = useTranslation();
+ const [state, setState] = useState({
+ sortedInfo: {},
+ });
+ 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")
+ });
+ data.scheduled_out_today.sort(function (a, b) {
+ return new Date(a.scheduled_completion) - new Date(b.scheduled_completion);
+ });
+
+ const columns = [
+ {
+ title: t("jobs.fields.ro_number"),
+ dataIndex: "ro_number",
+ key: "ro_number",
+ 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,
+ responsive: ["md"],
+ render: (text, record) => {
+ return record.ownerid ? (
+ e.stopPropagation()}
+ >
+
+
+ ) : (
+
+
+
+ );
+ },
+ },
+ {
+ title: t("jobs.fields.ownr_ph1"),
+ dataIndex: "ownr_ph1",
+ key: "ownr_ph1",
+ ellipsis: true,
+ responsive: ["md"],
+ render: (text, record) => (
+
+ ),
+ },
+ {
+ title: t("jobs.fields.ownr_ph2"),
+ dataIndex: "ownr_ph2",
+ key: "ownr_ph2",
+ ellipsis: true,
+ responsive: ["md"],
+ render: (text, record) => (
+
+ ),
+ },
+ {
+ title: t("jobs.fields.ownr_ea"),
+ dataIndex: "ownr_ea",
+ key: "ownr_ea",
+ ellipsis: true,
+ responsive: ["md"],
+ render: (text, record) => (
+
+ ),
+ },
+ {
+ title: t("jobs.fields.vehicle"),
+ dataIndex: "vehicle",
+ key: "vehicle",
+ ellipsis: true,
+ 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("jobs.fields.ins_co_nm"),
+ dataIndex: "ins_co_nm",
+ key: "ins_co_nm",
+ ellipsis: true,
+ responsive: ["md"],
+ },
+ {
+ title: t("jobs.fields.scheduled_completion"),
+ dataIndex: "scheduled_completion",
+ key: "scheduled_completion",
+ ellipsis: true,
+ responsive: ["md"],
+ },
+ {
+ title: t("appointments.fields.alt_transport"),
+ dataIndex: "alt_transport",
+ key: "alt_transport",
+ ellipsis: true,
+ responsive: ["md"],
+ },
+ ];
+
+ const handleTableChange = (sorter) => {
+ setState({ ...state, sortedInfo: sorter });
+ };
+
+ return (
+
+
+
+ );
+}
+
+export const DashboardScheduledOutTodayGql = `
+ scheduled_out_today: jobs(where: {
+ date_invoiced: {_is_null: true},
+ ro_number: {_is_null: false},
+ voided: {_eq: false},
+ scheduled_completion: {_gte: "${moment().startOf("day").toISOString()}",
+ _lte: "${moment().endOf("day").toISOString()}"}}) {
+ alt_transport
+ clm_no
+ jobid: id
+ ins_co_nm
+ iouparent
+ ownerid
+ ownr_co_nm
+ ownr_ea
+ ownr_fn
+ ownr_ln
+ ownr_ph1
+ ownr_ph2
+ production_vars
+ ro_number
+ scheduled_completion
+ suspended
+ v_make_desc
+ v_model_desc
+ v_model_yr
+ v_vin
+ vehicleid
+
+ }
+`;
diff --git a/client/src/components/dashboard-grid/dashboard-grid.component.jsx b/client/src/components/dashboard-grid/dashboard-grid.component.jsx
index d9d7cbf32..d24dd5641 100644
--- a/client/src/components/dashboard-grid/dashboard-grid.component.jsx
+++ b/client/src/components/dashboard-grid/dashboard-grid.component.jsx
@@ -39,7 +39,10 @@ import LoadingSkeleton from "../loading-skeleton/loading-skeleton.component";
// /node_modules/react-resizable/css/styles.css
import DashboardScheduledInToday, {
DashboardScheduledInTodayGql,
-} from "./../dashboard-components/scheduled-in-today/scheduled-in-today.component";
+} from "../dashboard-components/scheduled-in-today/scheduled-in-today.component";
+import DashboardScheduledOutToday, {
+ DashboardScheduledOutTodayGql,
+} from "../dashboard-components/scheduled-out-today/scheduled-out-today.component";
import "./dashboard-grid.styles.scss";
import { GenerateDashboardData } from "./dashboard-grid.utils";
@@ -272,7 +275,9 @@ 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", {
+ date: moment().startOf("day").format("MM/DD/YYYY"),
+ }),
component: DashboardScheduledInToday,
gqlFragment: DashboardScheduledInTodayGql,
minW: 10,
@@ -280,6 +285,17 @@ const componentList = {
w: 10,
h: 2,
},
+ ScheduleOutToday: {
+ label: i18next.t("dashboard.titles.scheduledouttoday", {
+ date: moment().startOf("day").format("MM/DD/YYYY"),
+ }),
+ component: DashboardScheduledOutToday,
+ gqlFragment: DashboardScheduledOutTodayGql,
+ minW: 10,
+ minH: 2,
+ w: 10,
+ h: 2,
+ },
};
const createDashboardQuery = (state) => {
diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json
index 50e516c47..0f98d2685 100644
--- a/client/src/translations/en_us/common.json
+++ b/client/src/translations/en_us/common.json
@@ -859,7 +859,8 @@
"productiondollars": "Total dollars in Production",
"productionhours": "Total hours in Production",
"projectedmonthlysales": "Projected Monthly Sales",
- "scheduledintoday": "Sheduled In Today: {{date}}"
+ "scheduledintoday": "Sheduled In Today: {{date}}",
+ "scheduledouttoday": "Sheduled Out Today: {{date}}"
}
},
"dms": {
diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json
index 84538854e..306349835 100644
--- a/client/src/translations/es/common.json
+++ b/client/src/translations/es/common.json
@@ -859,7 +859,8 @@
"productiondollars": "",
"productionhours": "",
"projectedmonthlysales": "",
- "scheduledintoday": ""
+ "scheduledintoday": "",
+ "scheduledouttoday": ""
}
},
"dms": {
diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json
index 34165ee38..475ddeb1d 100644
--- a/client/src/translations/fr/common.json
+++ b/client/src/translations/fr/common.json
@@ -859,7 +859,8 @@
"productiondollars": "",
"productionhours": "",
"projectedmonthlysales": "",
- "scheduledintoday": ""
+ "scheduledintoday": "",
+ "scheduledouttoday": ""
}
},
"dms": {