diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index 6308f9813..d0d52eff5 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -41363,6 +41363,69 @@ labels + + employeevacation + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + intake + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + manual + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + manualevent false diff --git a/client/src/components/job-audit-trail/job-audit-trail.component.jsx b/client/src/components/job-audit-trail/job-audit-trail.component.jsx index e58c285d1..b8db52743 100644 --- a/client/src/components/job-audit-trail/job-audit-trail.component.jsx +++ b/client/src/components/job-audit-trail/job-audit-trail.component.jsx @@ -5,8 +5,18 @@ import React from "react"; import { useTranslation } from "react-i18next"; import { QUERY_AUDIT_TRAIL } from "../../graphql/audit_trail.queries"; import { DateTimeFormatter } from "../../utils/DateFormatter"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { selectCurrentUser } from "../../redux/user/user.selectors"; +const mapStateToProps = createStructuredSelector({ + currentUser: selectCurrentUser, +}); +const mapDispatchToProps = (dispatch) => ({ + //setUserLanguage: language => dispatch(setUserLanguage(language)) +}); +export default connect(mapStateToProps, mapDispatchToProps)(JobAuditTrail); -export default function JobAuditTrail({ jobId }) { +export function JobAuditTrail({ currentUser, jobId }) { const { t } = useTranslation(); const { loading, data, refetch } = useQuery(QUERY_AUDIT_TRAIL, { variables: { jobid: jobId }, @@ -75,26 +85,28 @@ export default function JobAuditTrail({ jobId }) { dataIndex: "subject", key: "subject", }, - // { - // title: t("audit.fields.contents"), - // dataIndex: "contents", - // key: "contents", - // width: "10%", - // render: (text, record) => ( - // - // ), - // }, + ...(currentUser?.email.includes("@imex.") && [ + { + title: t("audit.fields.contents"), + dataIndex: "contents", + key: "contents", + width: "10%", + render: (text, record) => ( + + ), + }, + ]), ]; return ( diff --git a/client/src/components/schedule-calendar/schedule-calendar.component.jsx b/client/src/components/schedule-calendar/schedule-calendar.component.jsx index 91f0ac59d..bbe5c61ad 100644 --- a/client/src/components/schedule-calendar/schedule-calendar.component.jsx +++ b/client/src/components/schedule-calendar/schedule-calendar.component.jsx @@ -1,6 +1,8 @@ import { SyncOutlined } from "@ant-design/icons"; -import { Button, Card, Col, PageHeader, Row, Space } from "antd"; -import React from "react"; +import { Button, Card, Checkbox, Col, PageHeader, Row, Space } from "antd"; +import { t } from "i18next"; +import React, { useMemo } from "react"; +import useLocalStorage from "../../utils/useLocalStorage"; import ScheduleCalendarWrapperComponent from "../schedule-calendar-wrapper/scheduler-calendar-wrapper.component"; import ScheduleModal from "../schedule-job-modal/schedule-job-modal.container"; import ScheduleManualEvent from "../schedule-manual-event/schedule-manual-event.component"; @@ -8,6 +10,23 @@ import ScheduleProductionList from "../schedule-production-list/schedule-product import ScheduleVerifyIntegrity from "../schedule-verify-integrity/schedule-verify-integrity.component"; export default function ScheduleCalendarComponent({ data, refetch }) { + const [filter, setFilter] = useLocalStorage("filter_events", { + intake: true, + manual: true, + employeevacation: true, + }); + const filteredData = useMemo(() => { + return data.filter( + (d) => + d.block || + (filter.intake && d.isintake) || + (filter.manual && !d.isintake && d.block === false) || + (d.__typename === "employee_vacation" && + filter.employeevacation && + !!d.employee) + ); + }, [data, filter]); + return ( @@ -16,6 +35,30 @@ export default function ScheduleCalendarComponent({ data, refetch }) { + { + setFilter({ ...filter, intake: e.target.checked }); + }} + > + {t("schedule.labels.intake")} + + { + setFilter({ ...filter, manual: e.target.checked }); + }} + > + {t("schedule.labels.manual")} + + { + setFilter({ ...filter, employeevacation: e.target.checked }); + }} + > + {t("schedule.labels.employeevacation")} +