Merged in feature/IO-2264-schedule-filter (pull request #806)
Feature/IO-2264 schedule filter Approved-by: Patrick Fic
This commit is contained in:
@@ -39,20 +39,44 @@ export function ScheduleCalendarComponent({ data, refetch, bodyshop }) {
|
|||||||
employeevacation: true,
|
employeevacation: true,
|
||||||
ins_co_nm: null,
|
ins_co_nm: null,
|
||||||
});
|
});
|
||||||
|
const [estimatorsFilter, setEstimatiorsFilter] = useLocalStorage(
|
||||||
|
"estimators",
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
|
||||||
|
const estimators = useMemo(
|
||||||
|
() =>
|
||||||
|
data
|
||||||
|
.filter((d) => d.__typename === "appointments")
|
||||||
|
.map((app) => `${app.job.est_ct_fn} ${app.job.est_ct_ln}`),
|
||||||
|
[data]
|
||||||
|
);
|
||||||
|
|
||||||
const filteredData = useMemo(() => {
|
const filteredData = useMemo(() => {
|
||||||
return data.filter(
|
return data
|
||||||
(d) =>
|
.filter((d) => {
|
||||||
(d.block ||
|
if (d.__typename === "appointments") {
|
||||||
(filter.intake && d.isintake) ||
|
if (estimatorsFilter.length === 0) return true;
|
||||||
(filter.manual && !d.isintake && d.block === false) ||
|
|
||||||
(d.__typename === "employee_vacation" &&
|
return !!estimatorsFilter.find(
|
||||||
filter.employeevacation &&
|
(e) => e !== `${d.job.est_ct_fn} ${d.job.est_ct_ln}`
|
||||||
!!d.employee)) &&
|
);
|
||||||
(filter.ins_co_nm && filter.ins_co_nm.length > 0
|
}
|
||||||
? filter.ins_co_nm.includes(d.job?.ins_co_nm)
|
return true;
|
||||||
: true)
|
})
|
||||||
);
|
.filter(
|
||||||
}, [data, filter]);
|
(d) =>
|
||||||
|
(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, estimatorsFilter]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Row gutter={[16, 16]}>
|
<Row gutter={[16, 16]}>
|
||||||
@@ -63,6 +87,21 @@ export function ScheduleCalendarComponent({ data, refetch, bodyshop }) {
|
|||||||
extra={
|
extra={
|
||||||
<Space wrap>
|
<Space wrap>
|
||||||
<ScheduleAtsSummary appointments={filteredData} />
|
<ScheduleAtsSummary appointments={filteredData} />
|
||||||
|
<Select
|
||||||
|
style={{ minWidth: "15rem" }}
|
||||||
|
mode="multiple"
|
||||||
|
placeholder={t("schedule.labels.estimators")}
|
||||||
|
allowClear
|
||||||
|
onClear={() => setEstimatiorsFilter([])}
|
||||||
|
value={[...estimatorsFilter]}
|
||||||
|
onChange={(e) => {
|
||||||
|
setEstimatiorsFilter(e);
|
||||||
|
}}
|
||||||
|
options={estimators.map((e) => ({
|
||||||
|
label: e,
|
||||||
|
value: e,
|
||||||
|
}))}
|
||||||
|
/>
|
||||||
<Select
|
<Select
|
||||||
style={{ minWidth: "15rem" }}
|
style={{ minWidth: "15rem" }}
|
||||||
mode="multiple"
|
mode="multiple"
|
||||||
|
|||||||
@@ -57,6 +57,8 @@ export const QUERY_ALL_ACTIVE_APPOINTMENTS = gql`
|
|||||||
v_model_yr
|
v_model_yr
|
||||||
v_make_desc
|
v_make_desc
|
||||||
v_model_desc
|
v_model_desc
|
||||||
|
est_ct_fn
|
||||||
|
est_ct_ln
|
||||||
labhrs: joblines_aggregate(
|
labhrs: joblines_aggregate(
|
||||||
where: { mod_lbr_ty: { _neq: "LAR" }, removed: { _eq: false } }
|
where: { mod_lbr_ty: { _neq: "LAR" }, removed: { _eq: false } }
|
||||||
) {
|
) {
|
||||||
|
|||||||
@@ -2624,6 +2624,7 @@
|
|||||||
"atssummary": "ATS Summary",
|
"atssummary": "ATS Summary",
|
||||||
"employeevacation": "Employee Vacations",
|
"employeevacation": "Employee Vacations",
|
||||||
"ins_co_nm_filter": "Filter by Insurance Company",
|
"ins_co_nm_filter": "Filter by Insurance Company",
|
||||||
|
"estimators": "Filter by Writer/Customer Rep.",
|
||||||
"intake": "Intake Events",
|
"intake": "Intake Events",
|
||||||
"manual": "Manual Events",
|
"manual": "Manual Events",
|
||||||
"manualevent": "Add Manual Event"
|
"manualevent": "Add Manual Event"
|
||||||
|
|||||||
Reference in New Issue
Block a user