From 73bcc72fc3ca5a1e6f5d65ec322cc17d28fae63c Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Mon, 13 Mar 2023 14:37:05 -0700 Subject: [PATCH] IO-2213 Add Ins Co filtering to several pages. --- bodyshop_translations.babel | 21 +++++++ .../jobs-list/jobs-list.component.jsx | 13 +++++ .../jobs-ready-list.component.jsx | 13 +++++ .../schedule-calendar.component.jsx | 57 ++++++++++++++++--- client/src/translations/en_us/common.json | 1 + client/src/translations/es/common.json | 1 + client/src/translations/fr/common.json | 1 + 7 files changed, 99 insertions(+), 8 deletions(-) diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index 358cb9083..9565bcccb 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -42822,6 +42822,27 @@ + + ins_co_nm_filter + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + intake false diff --git a/client/src/components/jobs-list/jobs-list.component.jsx b/client/src/components/jobs-list/jobs-list.component.jsx index ed01975c5..189014d37 100644 --- a/client/src/components/jobs-list/jobs-list.component.jsx +++ b/client/src/components/jobs-list/jobs-list.component.jsx @@ -260,6 +260,19 @@ export function JobsList({ bodyshop }) { dataIndex: "ins_co_nm", key: "ins_co_nm", ellipsis: true, + filters: + (jobs && + jobs + .map((j) => j.ins_co_nm) + .filter(onlyUnique) + .map((s) => { + return { + text: s, + value: [s], + }; + })) || + [], + onFilter: (value, record) => value.includes(record.ins_co_nm), responsive: ["md"], }, { diff --git a/client/src/components/jobs-ready-list/jobs-ready-list.component.jsx b/client/src/components/jobs-ready-list/jobs-ready-list.component.jsx index 4370a30f8..e3ce7a3cf 100644 --- a/client/src/components/jobs-ready-list/jobs-ready-list.component.jsx +++ b/client/src/components/jobs-ready-list/jobs-ready-list.component.jsx @@ -272,6 +272,19 @@ export function JobsReadyList({ bodyshop }) { dataIndex: "ins_co_nm", key: "ins_co_nm", ellipsis: true, + filters: + (jobs && + jobs + .map((j) => j.ins_co_nm) + .filter(onlyUnique) + .map((s) => { + return { + text: s, + value: [s], + }; + })) || + [], + onFilter: (value, record) => value.includes(record.ins_co_nm), responsive: ["md"], }, { diff --git a/client/src/components/schedule-calendar/schedule-calendar.component.jsx b/client/src/components/schedule-calendar/schedule-calendar.component.jsx index 27830beff..20eb49626 100644 --- a/client/src/components/schedule-calendar/schedule-calendar.component.jsx +++ b/client/src/components/schedule-calendar/schedule-calendar.component.jsx @@ -1,5 +1,14 @@ import { SyncOutlined } from "@ant-design/icons"; -import { Button, Card, Checkbox, Col, PageHeader, Row, Space } from "antd"; +import { + Button, + Card, + Checkbox, + Col, + PageHeader, + Row, + Select, + Space, +} from "antd"; import { t } from "i18next"; import React, { useMemo } from "react"; import useLocalStorage from "../../utils/useLocalStorage"; @@ -9,22 +18,39 @@ import ScheduleModal from "../schedule-job-modal/schedule-job-modal.container"; import ScheduleManualEvent from "../schedule-manual-event/schedule-manual-event.component"; import ScheduleProductionList from "../schedule-production-list/schedule-production-list.component"; import ScheduleVerifyIntegrity from "../schedule-verify-integrity/schedule-verify-integrity.component"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop, +}); +const mapDispatchToProps = (dispatch) => ({ + //setUserLanguage: language => dispatch(setUserLanguage(language)) +}); +export default connect( + mapStateToProps, + mapDispatchToProps +)(ScheduleCalendarComponent); -export default function ScheduleCalendarComponent({ data, refetch }) { +export function ScheduleCalendarComponent({ data, refetch, bodyshop }) { const [filter, setFilter] = useLocalStorage("filter_events", { intake: true, manual: true, employeevacation: true, + ins_co_nm: null, }); 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) + (d.block || + (filter.intake && d.isintake) || + (filter.manual && !d.isintake && d.block === false) || + (d.__typename === "employee_vacation" && + filter.employeevacation && + !!d.employee)) && + (filter.ins_co_nm && filter.ins_co_nm.length > 0 + ? filter.ins_co_nm.includes(d.job.ins_co_nm) + : true) ); }, [data, filter]); @@ -37,6 +63,21 @@ export default function ScheduleCalendarComponent({ data, refetch }) { extra={ +