diff --git a/client/src/components/header/header.component.jsx b/client/src/components/header/header.component.jsx index 7654c9e27..e9160230d 100644 --- a/client/src/components/header/header.component.jsx +++ b/client/src/components/header/header.component.jsx @@ -13,7 +13,7 @@ import Icon, { UnorderedListOutlined, UserOutlined, } from "@ant-design/icons"; -import { Avatar, Layout, Menu } from "antd"; +import { Avatar, Menu } from "antd"; import React from "react"; import { useTranslation } from "react-i18next"; import { BsKanban } from "react-icons/bs"; @@ -29,16 +29,12 @@ import { createStructuredSelector } from "reselect"; import { selectRecentItems } from "../../redux/application/application.selectors"; import { setModalContext } from "../../redux/modals/modals.actions"; import { signOutStart } from "../../redux/user/user.actions"; -import { - selectBodyshop, - selectCurrentUser, -} from "../../redux/user/user.selectors"; +import { selectCurrentUser } from "../../redux/user/user.selectors"; import GlobalSearch from "../global-search/global-search.component"; import "./header.styles.scss"; const mapStateToProps = createStructuredSelector({ currentUser: selectCurrentUser, - bodyshop: selectBodyshop, recentItems: selectRecentItems, }); @@ -53,7 +49,6 @@ const mapDispatchToProps = (dispatch) => ({ }); function Header({ - bodyshop, handleMenuClick, currentUser, signOutStart, @@ -63,281 +58,276 @@ function Header({ recentItems, }) { const { t } = useTranslation(); - const { Header } = Layout; return ( -
- + + + + {t("menus.header.home")} + + + + + + {t("menus.header.schedule")} + + + + + {t("menus.header.jobs")} + + } > - - - - {t("menus.header.home")} + + + {t("menus.header.activejobs")} + + + + {t("menus.header.availablejobs")} - - - - {t("menus.header.schedule")} + + + + {t("menus.header.alljobs")} + + + + + + + {t("menus.header.productionlist")} - - - {t("menus.header.jobs")} - - } - > - + + + + {t("menus.header.productionboard")} + + + + + + + {t("menus.header.scoreboard")} + + + + + {t("menus.header.customers")} + + } + > + + + + {t("menus.header.owners")} + + + + + + {t("menus.header.vehicles")} + + + + + + {t("menus.header.courtesycars")} + + } + > + + + + {t("menus.header.courtesycars-all")} + + + + - {t("menus.header.activejobs")} - - - - {t("menus.header.availablejobs")} - - - - - - {t("menus.header.alljobs")} - - - - - - - {t("menus.header.productionlist")} - - - - - - {t("menus.header.productionboard")} - - - - - - - {t("menus.header.scoreboard")} - - - - - {t("menus.header.customers")} - - } - > - - - - {t("menus.header.owners")} - - - - - - {t("menus.header.vehicles")} - - - - - - {t("menus.header.courtesycars")} - - } - > - - - - {t("menus.header.courtesycars-all")} - - - - - - {t("menus.header.courtesycars-contracts")} - - - - - - {t("menus.header.courtesycars-newcontract")} - - - - - - {t("menus.header.accounting")} - - } - > - - {t("menus.header.invoices")} - - { - setInvoiceEnterContext({ - actions: {}, - context: {}, - }); - }} - > - - {t("menus.header.enterinvoices")} - - - - {t("menus.header.allpayments")} - - { - setPaymentContext({ - actions: {}, - context: {}, - }); - }} - > - - {t("menus.header.enterpayment")} - - - - - - {t("menus.header.timetickets")} - - - { - setTimeTicketContext({ - actions: {}, - context: {}, - }); - }} - > - {t("menus.header.entertimeticket")} - - - - - - - {t("menus.header.accounting-receivables")} - - - - - {t("menus.header.accounting-payables")} - - - - - {t("menus.header.accounting-payments")} - - - - - - - {t("menus.header.shop_config")} - - - - - {t("menus.header.shop_templates")} - - - - - - {t("menus.header.shop_vendors")} - - - - {t("menus.header.shop_csi")} - - - - + {t("menus.header.courtesycars-contracts")} + - }> - {recentItems.map((i, idx) => ( - - {i.label} - - ))} + + + + {t("menus.header.courtesycars-newcontract")} + + + + + + {t("menus.header.accounting")} + + } + > + + {t("menus.header.invoices")} + + { + setInvoiceEnterContext({ + actions: {}, + context: {}, + }); + }} + > + + {t("menus.header.enterinvoices")} + + + + {t("menus.header.allpayments")} + + { + setPaymentContext({ + actions: {}, + context: {}, + }); + }} + > + + {t("menus.header.enterpayment")} + + + + + {t("menus.header.timetickets")} + + { + setTimeTicketContext({ + actions: {}, + context: {}, + }); + }} + > + {t("menus.header.entertimeticket")} + + + + + + + {t("menus.header.accounting-receivables")} + + + + + {t("menus.header.accounting-payables")} + + + + + {t("menus.header.accounting-payments")} + + + + + + {t("menus.header.shop_config")} + + + + + {t("menus.header.shop_templates")} + + + + + + {t("menus.header.shop_vendors")} + + + + {t("menus.header.shop_csi")} + + + + + + }> + {recentItems.map((i, idx) => ( + + {i.label} + + ))} + + + {currentUser.photoURL ? ( + + ) : ( + } + /> + )} + + {currentUser.displayName || t("general.labels.unknown")} + + } + > + signOutStart()}> + {t("user.actions.signout")} + + + {t("menus.header.shiftclock")} + + + {t("menus.currentuser.profile")} + - {currentUser.photoURL ? ( - - ) : ( - } - /> - )} - - {currentUser.displayName || t("general.labels.unknown")} - + + + {t("menus.currentuser.languageselector")} + } > - signOutStart()}> - {t("user.actions.signout")} + + {t("general.languages.english")} - - {t("menus.header.shiftclock")} + + {t("general.languages.french")} - - {t("menus.currentuser.profile")} + + {t("general.languages.spanish")} - - - {t("menus.currentuser.languageselector")} - - } - > - - {t("general.languages.english")} - - - {t("general.languages.french")} - - - {t("general.languages.spanish")} - - - -
+ + ); } diff --git a/client/src/components/schedule-calendar-wrapper/schedule-calendar-header.component.js b/client/src/components/schedule-calendar-wrapper/schedule-calendar-header.component.js index dce6eb8c1..48fcb77d1 100644 --- a/client/src/components/schedule-calendar-wrapper/schedule-calendar-header.component.js +++ b/client/src/components/schedule-calendar-wrapper/schedule-calendar-header.component.js @@ -100,14 +100,17 @@ export function ScheduleCalendarHeaderComponent({ ) : null; + console.log("loadData", loadData); return ( - -
- {label} - {calculating ? : LoadComponent} -
-
+
+ +
+ {label} + {calculating ? : LoadComponent} +
+
+
); } export default connect( diff --git a/client/src/components/schedule-calendar-wrapper/schedule-calendar.styles.scss b/client/src/components/schedule-calendar-wrapper/schedule-calendar.styles.scss index 3c6cb4b42..d1ed8e12a 100644 --- a/client/src/components/schedule-calendar-wrapper/schedule-calendar.styles.scss +++ b/client/src/components/schedule-calendar-wrapper/schedule-calendar.styles.scss @@ -1,8 +1,10 @@ @import "react-big-calendar/lib/sass/styles"; -.rbc-time-view .rbc-row { - box-sizing: unset !important; - min-height: unset !important; +.rbc-time-header-cell-single-day { + display: unset; +} +.rbc-time-view .rbc-allday-cell { + height: unset; } .imex-event-arrived { @@ -20,3 +22,9 @@ .rbc-event.rbc-selected { background-color: slategrey; } +.imex-calendar-load { + max-width: 12rem; + position: relative; + left: 50%; + transform: translateX(-50%); +} diff --git a/client/src/components/schedule-calendar/schedule-calendar.component.jsx b/client/src/components/schedule-calendar/schedule-calendar.component.jsx index 90875dd53..5be3d61be 100644 --- a/client/src/components/schedule-calendar/schedule-calendar.component.jsx +++ b/client/src/components/schedule-calendar/schedule-calendar.component.jsx @@ -1,25 +1,11 @@ import { SyncOutlined } from "@ant-design/icons"; import { Button } from "antd"; import React from "react"; -import { useTranslation } from "react-i18next"; -import { connect } from "react-redux"; -import { setModalContext } from "../../redux/modals/modals.actions"; import ScheduleCalendarWrapperComponent from "../schedule-calendar-wrapper/scheduler-calendar-wrapper.component"; import ScheduleModal from "../schedule-job-modal/schedule-job-modal.container"; import ScheduleProductionList from "../schedule-production-list/schedule-production-list.component"; -const mapDispatchToProps = (dispatch) => ({ - setScheduleContext: (context) => - dispatch(setModalContext({ context: context, modal: "schedule" })), -}); - -export function ScheduleCalendarComponent({ - data, - refetch, - setScheduleContext, -}) { - const { t } = useTranslation(); - +export default function ScheduleCalendarComponent({ data, refetch }) { return (
@@ -32,19 +18,6 @@ export function ScheduleCalendarComponent({ -
@@ -54,4 +27,3 @@ export function ScheduleCalendarComponent({
); } -export default connect(null, mapDispatchToProps)(ScheduleCalendarComponent); diff --git a/client/src/components/schedule-job-modal/schedule-job-modal.component.jsx b/client/src/components/schedule-job-modal/schedule-job-modal.component.jsx index 50e11885b..7404b81c7 100644 --- a/client/src/components/schedule-job-modal/schedule-job-modal.component.jsx +++ b/client/src/components/schedule-job-modal/schedule-job-modal.component.jsx @@ -1,16 +1,16 @@ import { Button, Checkbox, Col, Row } from "antd"; import axios from "axios"; +import moment from "moment"; import React, { useState } from "react"; import { useTranslation } from "react-i18next"; -import { auth } from "../../firebase/firebase.utils"; import { DateFormatter } from "../../utils/DateFormatter"; import DateTimePicker from "../form-date-time-picker/form-date-time-picker.component"; import EmailInput from "../form-items-formatted/email-form-item.component"; import ScheduleDayViewContainer from "../schedule-day-view/schedule-day-view.container"; import ScheduleExistingAppointmentsList from "../schedule-existing-appointments-list/schedule-existing-appointments-list.component"; -import moment from "moment"; export default function ScheduleJobModalComponent({ + jobId, existingAppointments, appData, setAppData, @@ -20,15 +20,9 @@ export default function ScheduleJobModalComponent({ const handleAuto = async () => { setLoading(true); try { - const response = await axios.post( - "/scheduling/job", - { jobId: "661dd1d5-bf06-426f-8bd2-bd9e41de8eb1" }, - { - headers: { - Authorization: `Bearer ${await auth.currentUser.getIdToken(true)}`, - }, - } - ); + const response = await axios.post("/scheduling/job", { + jobId: "661dd1d5-bf06-426f-8bd2-bd9e41de8eb1", + }); setAppData({ ...appData, smartDates: response.data }); } catch (error) { console.log("error", error, error.message); diff --git a/client/src/components/schedule-job-modal/schedule-job-modal.container.jsx b/client/src/components/schedule-job-modal/schedule-job-modal.container.jsx index 3e6d4c5a8..444deb379 100644 --- a/client/src/components/schedule-job-modal/schedule-job-modal.container.jsx +++ b/client/src/components/schedule-job-modal/schedule-job-modal.container.jsx @@ -27,6 +27,7 @@ const mapDispatchToProps = (dispatch) => ({ toggleModalVisible: () => dispatch(toggleModalVisible("schedule")), setEmailOptions: (e) => dispatch(setEmailOptions(e)), }); + export function ScheduleJobModalContainer({ scheduleModal, bodyshop, @@ -163,6 +164,7 @@ export function ScheduleJobModalContainer({ }} > - + + ); } diff --git a/client/src/pages/manage/manage.page.component.jsx b/client/src/pages/manage/manage.page.component.jsx index 90f9c3211..7cadf32b5 100644 --- a/client/src/pages/manage/manage.page.component.jsx +++ b/client/src/pages/manage/manage.page.component.jsx @@ -127,7 +127,7 @@ const TimeTicketsAll = lazy(() => import("../time-tickets/time-tickets.container") ); -const { Content } = Layout; +const { Content, Header } = Layout; const stripePromise = new Promise((resolve, reject) => { client.query({ query: QUERY_STRIPE_ID }).then((resp) => { @@ -152,8 +152,9 @@ export function Manage({ match, conflict }) { return ( - - +
+ +