Added in-session recent items with cross tab support. BOD-178

This commit is contained in:
Patrick Fic
2020-07-13 09:55:24 -07:00
parent 613e4e9a23
commit 20f864cd43
18 changed files with 362 additions and 39 deletions

View File

@@ -11,14 +11,19 @@ import {
QUERY_CONTRACT_BY_PK,
UPDATE_CONTRACT,
} from "../../graphql/cccontracts.queries";
import { setBreadcrumbs } from "../../redux/application/application.actions";
import {
setBreadcrumbs,
addRecentItem,
} from "../../redux/application/application.actions";
import ContractDetailPageComponent from "./contract-detail.page.component";
import { CreateRecentItem } from "../../utils/create-recent-item";
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
addRecentItem: (item) => dispatch(addRecentItem(item)),
});
export function ContractDetailPageContainer({ setBreadcrumbs }) {
export function ContractDetailPageContainer({ setBreadcrumbs, addRecentItem }) {
const { t } = useTranslation();
const [updateContract] = useMutation(UPDATE_CONTRACT);
const [form] = Form.useForm();
@@ -50,7 +55,17 @@ export function ContractDetailPageContainer({ setBreadcrumbs }) {
}),
},
]);
}, [t, data, error, loading, setBreadcrumbs]);
if (data)
addRecentItem(
CreateRecentItem(
contractId,
"contract",
data.cccontracts_by_pk.agreementnumber,
`/manage/courtesycars/contracts/${contractId}`
)
);
}, [t, data, error, loading, setBreadcrumbs, addRecentItem]);
const handleFinish = (values) => {
updateContract({

View File

@@ -7,13 +7,21 @@ import { connect } from "react-redux";
import { useParams } from "react-router-dom";
import AlertComponent from "../../components/alert/alert.component";
import { QUERY_CC_BY_PK, UPDATE_CC } from "../../graphql/courtesy-car.queries";
import { setBreadcrumbs } from "../../redux/application/application.actions";
import {
addRecentItem,
setBreadcrumbs,
} from "../../redux/application/application.actions";
import { CreateRecentItem } from "../../utils/create-recent-item";
import CourtesyCarDetailPageComponent from "./courtesy-car-detail.page.component";
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
addRecentItem: (item) => dispatch(addRecentItem(item)),
});
export function CourtesyCarDetailPageContainer({ setBreadcrumbs }) {
export function CourtesyCarDetailPageContainer({
setBreadcrumbs,
addRecentItem,
}) {
const { t } = useTranslation();
const [insertCourtesyCar] = useMutation(UPDATE_CC);
const [form] = Form.useForm();
@@ -42,7 +50,17 @@ export function CourtesyCarDetailPageContainer({ setBreadcrumbs }) {
}),
},
]);
}, [t, data, error, loading, setBreadcrumbs]);
if (data)
addRecentItem(
CreateRecentItem(
ccId,
"courtesycar",
data.courtesycars_by_pk.fleet_number || data.courtesycars_by_pk.vin,
`/manage/courtesycars/${ccId}`
)
);
}, [t, data, error, loading, setBreadcrumbs, addRecentItem]);
const handleFinish = (values) => {
insertCourtesyCar({

View File

@@ -2,6 +2,7 @@ import { useMutation, useQuery } from "@apollo/react-hooks";
import { notification } from "antd";
import React, { useEffect } from "react";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
import AlertComponent from "../../components/alert/alert.component";
import SpinComponent from "../../components/loading-spinner/loading-spinner.component";
import {
@@ -10,12 +11,12 @@ import {
UPDATE_JOB,
UPDATE_JOB_STATUS,
} from "../../graphql/jobs.queries";
import JobsDetailPage from "./jobs-detail.page.component";
import {
setBreadcrumbs,
addRecentItem,
setBreadcrumbs,
} from "../../redux/application/application.actions";
import { connect } from "react-redux";
import { CreateRecentItem } from "../../utils/create-recent-item";
import JobsDetailPage from "./jobs-detail.page.component";
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -71,13 +72,23 @@ function JobsDetailPageContainer({ match, setBreadcrumbs, addRecentItem }) {
}),
},
]);
}, [loading, data, t, error, setBreadcrumbs, jobId]);
if (data)
addRecentItem(
CreateRecentItem(
jobId,
"job",
`${data.jobs_by_pk.est_number || ""} | ${
data.jobs_by_pk.ro_number || ""
}`,
`/manage/jobs/${jobId}`
)
);
}, [loading, data, t, error, setBreadcrumbs, jobId, addRecentItem]);
if (loading) return <SpinComponent />;
if (error) return <AlertComponent message={error.message} type="error" />;
if (data) addRecentItem({ id: 1234, label: " abcd" });
return data.jobs_by_pk ? (
<JobsDetailPage
job={data.jobs_by_pk}

View File

@@ -1,17 +1,27 @@
import React, { useEffect } from "react";
import OwnersDetailComponent from "./owners-detail.page.component";
import { useTranslation } from "react-i18next";
import { useQuery } from "@apollo/react-hooks";
import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component";
import AlertComponent from "../../components/alert/alert.component";
import { QUERY_OWNER_BY_ID } from "../../graphql/owners.queries";
import React, { useEffect } from "react";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
import { setBreadcrumbs } from "../../redux/application/application.actions";
import AlertComponent from "../../components/alert/alert.component";
import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component";
import { QUERY_OWNER_BY_ID } from "../../graphql/owners.queries";
import {
addRecentItem,
setBreadcrumbs,
} from "../../redux/application/application.actions";
import { CreateRecentItem } from "../../utils/create-recent-item";
import OwnersDetailComponent from "./owners-detail.page.component";
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
addRecentItem: (item) => dispatch(addRecentItem(item)),
});
export function OwnersDetailContainer({ match, setBreadcrumbs }) {
export function OwnersDetailContainer({
match,
setBreadcrumbs,
addRecentItem,
}) {
const { ownerId } = match.params;
const { t } = useTranslation();
@@ -42,7 +52,19 @@ export function OwnersDetailContainer({ match, setBreadcrumbs }) {
}),
},
]);
}, [setBreadcrumbs, t, data, ownerId]);
if (data)
addRecentItem(
CreateRecentItem(
ownerId,
"owner",
`${data.owners_by_pk.ownr_fn || ""} ${
data.owners_by_pk.ownr_ln || ""
} ${data.owners_by_pk.ownr_co_nm || ""}`,
`/manage/owners/${ownerId}`
)
);
}, [setBreadcrumbs, t, data, ownerId, addRecentItem]);
if (loading) return <LoadingSpinner />;
if (error) return <AlertComponent message={error.message} type="error" />;

View File

@@ -5,17 +5,26 @@ import { QUERY_VEHICLE_BY_ID } from "../../graphql/vehicles.queries";
import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component";
import AlertComponent from "../../components/alert/alert.component";
import { useTranslation } from "react-i18next";
import { setBreadcrumbs } from "../../redux/application/application.actions";
import {
setBreadcrumbs,
addRecentItem,
} from "../../redux/application/application.actions";
import { connect } from "react-redux";
import { CreateRecentItem } from "../../utils/create-recent-item";
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
addRecentItem: (item) => dispatch(addRecentItem(item)),
});
export function VehicleDetailContainer({ match, setBreadcrumbs }) {
export function VehicleDetailContainer({
match,
setBreadcrumbs,
addRecentItem,
}) {
const { vehId } = match.params;
const { t } = useTranslation();
const { loading, data, error, refetch } = useQuery(QUERY_VEHICLE_BY_ID, {
variables: { id: vehId },
fetchPolicy: "network-only",
@@ -40,7 +49,17 @@ export function VehicleDetailContainer({ match, setBreadcrumbs }) {
}),
},
]);
}, [t, data, setBreadcrumbs, vehId]);
if (data)
addRecentItem(
CreateRecentItem(
vehId,
"vehicle",
`${data.vehicles_by_pk.v_vin} | ${data.vehicles_by_pk.v_model_yr} ${data.vehicles_by_pk.v_make_desc} ${data.vehicles_by_pk.v_model_desc}`,
`/manage/vehicles/${vehId}`
)
);
}, [t, data, setBreadcrumbs, vehId, addRecentItem]);
if (loading) return <LoadingSpinner />;
if (error) return <AlertComponent message={error.message} type="error" />;