Minor adjustments and fixes

This commit is contained in:
Patrick Fic
2020-02-19 13:26:50 -08:00
parent 0b47fb166e
commit faed2c32b6
10 changed files with 95 additions and 52 deletions

View File

@@ -1283,6 +1283,48 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>loadingshop</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>loggingin</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node> <concept_node>
<name>na</name> <name>na</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>

View File

@@ -1,5 +1,6 @@
import i18next from "i18next"; import i18next from "i18next";
import React, { lazy, Suspense, useEffect } from "react"; import React, { lazy, Suspense, useEffect } from "react";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { Route, Switch } from "react-router-dom"; import { Route, Switch } from "react-router-dom";
import { createStructuredSelector } from "reselect"; import { createStructuredSelector } from "reselect";
@@ -33,7 +34,7 @@ export default connect(
checkUserSession(); checkUserSession();
return () => {}; return () => {};
}, [checkUserSession]); }, [checkUserSession]);
const { t } = useTranslation();
if (currentUser && currentUser.language) if (currentUser && currentUser.language)
i18next.changeLanguage(currentUser.language, (err, t) => { i18next.changeLanguage(currentUser.language, (err, t) => {
if (err) if (err)
@@ -41,8 +42,7 @@ export default connect(
}); });
if (currentUser.authorized === null) { if (currentUser.authorized === null) {
//TODO: Translate this. return <LoadingSpinner message={t("general.labels.loggingin")} />;
return <LoadingSpinner message="Waiting for Current Auth to persist." />;
} }
return ( return (
@@ -50,15 +50,15 @@ export default connect(
<Switch> <Switch>
<ErrorBoundary> <ErrorBoundary>
<Suspense fallback={<LoadingSpinner />}> <Suspense fallback={<LoadingSpinner />}>
<Route exact path="/" component={LandingPage} /> <Route exact path='/' component={LandingPage} />
<Route exact path="/unauthorized" component={Unauthorized} /> <Route exact path='/unauthorized' component={Unauthorized} />
<Route exact path="/signin" component={SignInPage} /> <Route exact path='/signin' component={SignInPage} />
<PrivateRoute <PrivateRoute
//isAuthorized={HookCurrentUser.data.currentUser ? true : false} //isAuthorized={HookCurrentUser.data.currentUser ? true : false}
isAuthorized={currentUser.authorized} isAuthorized={currentUser.authorized}
path="/manage" path='/manage'
component={ManagePage} component={ManagePage}
/> />
</Suspense> </Suspense>

View File

@@ -43,7 +43,7 @@ export default connect(
const tombstoneTitle = ( const tombstoneTitle = (
<div> <div>
<Avatar size="large" alt="Vehicle Image" src={CarImage} /> <Avatar size='large' alt='Vehicle Image' src={CarImage} />
{`${t("jobs.fields.ro_number")} ${ {`${t("jobs.fields.ro_number")} ${
job.ro_number ? job.ro_number : t("general.labels.na") job.ro_number ? job.ro_number : t("general.labels.na")
}`} }`}
@@ -54,8 +54,7 @@ export default connect(
<Menu <Menu
onClick={e => { onClick={e => {
updateJobStatus(e.key); updateJobStatus(e.key);
}} }}>
>
{bodyshop.md_ro_statuses.statuses.map(item => ( {bodyshop.md_ro_statuses.statuses.map(item => (
<Menu.Item key={item}>{item}</Menu.Item> <Menu.Item key={item}>{item}</Menu.Item>
))} ))}
@@ -63,24 +62,23 @@ export default connect(
); );
const menuExtra = [ const menuExtra = [
<Dropdown overlay={statusmenu} key="changestatus"> <Dropdown overlay={statusmenu} key='changestatus'>
<Button> <Button>
{t("jobs.actions.changestatus")} <Icon type="down" /> {t("jobs.actions.changestatus")} <Icon type='down' />
</Button> </Button>
</Dropdown>, </Dropdown>,
<Badge key="schedule" count={job.appointments_aggregate.aggregate.count}> <Badge key='schedule' count={job.appointments_aggregate.aggregate.count}>
<Button <Button
//TODO: Enabled logic based on status. //TODO: Enabled logic based on status.
onClick={() => { onClick={() => {
setscheduleModalVisible(true); setscheduleModalVisible(true);
}} }}>
>
{t("jobs.actions.schedule")} {t("jobs.actions.schedule")}
</Button> </Button>
</Badge>, </Badge>,
<Button <Button
key="convert" key='convert'
type="dashed" type='dashed'
disabled={job.converted} disabled={job.converted}
onClick={() => { onClick={() => {
mutationConvertJob({ mutationConvertJob({
@@ -92,16 +90,14 @@ export default connect(
message: t("jobs.successes.converted") message: t("jobs.successes.converted")
}); });
}); });
}} }}>
>
{t("jobs.actions.convert")} {t("jobs.actions.convert")}
</Button>, </Button>,
<Button <Button
type="primary" type='primary'
key="submit" key='submit'
htmlType="button" htmlType='button'
onClick={handleSubmit} onClick={handleSubmit}>
>
{t("general.labels.save")} {t("general.labels.save")}
</Button> </Button>
]; ];
@@ -114,9 +110,9 @@ export default connect(
title={tombstoneTitle} title={tombstoneTitle}
//subTitle={tombstoneSubtitle} //subTitle={tombstoneSubtitle}
tags={ tags={
<span key="job-status"> <span key='job-status'>
{job.status ? <Tag color="blue">{job.status}</Tag> : null} {job.status ? <Tag color='blue'>{job.status}</Tag> : null}
<Tag color="red"> <Tag color='red'>
{job.owner ? ( {job.owner ? (
<Link to={`/manage/owners/${job.owner.id}`}> <Link to={`/manage/owners/${job.owner.id}`}>
{`${job.ownr_co_nm || ""}${job.ownr_fn || ""} ${job.ownr_ln || {`${job.ownr_co_nm || ""}${job.ownr_fn || ""} ${job.ownr_ln ||
@@ -126,7 +122,7 @@ export default connect(
t("jobs.errors.noowner") t("jobs.errors.noowner")
)} )}
</Tag> </Tag>
<Tag color="green"> <Tag color='green'>
{job.vehicle ? ( {job.vehicle ? (
<Link to={`/manage/vehicles/${job.vehicle.id}`}> <Link to={`/manage/vehicles/${job.vehicle.id}`}>
{job.vehicle.v_model_yr || t("general.labels.na")}{" "} {job.vehicle.v_model_yr || t("general.labels.na")}{" "}
@@ -140,11 +136,10 @@ export default connect(
<BarcodePopup value={job.id} /> <BarcodePopup value={job.id} />
</span> </span>
} }
extra={menuExtra} extra={menuExtra}>
> <Descriptions size='small' column={5}>
<Descriptions size="small" column={5}>
<Descriptions.Item label={t("jobs.fields.repairtotal")}> <Descriptions.Item label={t("jobs.fields.repairtotal")}>
<CurrencyFormatter>{job.claim_total}</CurrencyFormatter> <CurrencyFormatter>{job.clm_total}</CurrencyFormatter>
</Descriptions.Item> </Descriptions.Item>
<Descriptions.Item label={t("jobs.fields.customerowing")}> <Descriptions.Item label={t("jobs.fields.customerowing")}>
@@ -157,7 +152,7 @@ export default connect(
<Descriptions.Item label={t("jobs.fields.scheduled_completion")}> <Descriptions.Item label={t("jobs.fields.scheduled_completion")}>
{job.scheduled_completion ? ( {job.scheduled_completion ? (
<Moment format="MM/DD/YYYY">{job.scheduled_completion}</Moment> <Moment format='MM/DD/YYYY'>{job.scheduled_completion}</Moment>
) : null} ) : null}
</Descriptions.Item> </Descriptions.Item>

View File

@@ -33,13 +33,14 @@ const errorLink = onError(
console.log("Got the new token.", token); console.log("Got the new token.", token);
window.localStorage.setItem("token", token); window.localStorage.setItem("token", token);
// const oldHeaders = operation.getContext().headers; const oldHeaders = operation.getContext().headers;
// operation.setContext({ operation.setContext({
// headers: { headers: {
// ...oldHeaders, ...oldHeaders,
// authorization: token ? `Bearer ${token}` : "" authorization: token ? `Bearer ${token}` : ""
// } }
// }); });
console.log(operation.getContext());
// console.log("forward", forward); // console.log("forward", forward);
// console.log("operation", operation); // console.log("operation", operation);
return forward(operation); return forward(operation);

View File

@@ -44,7 +44,6 @@ export const QUERY_ALL_OPEN_JOBS = gql`
scheduled_delivery scheduled_delivery
status status
updated_at updated_at
clm_total
ded_amt ded_amt
vehicle { vehicle {
id id
@@ -108,6 +107,7 @@ export const GET_JOB_BY_PK = gql`
converted converted
est_number est_number
ro_number ro_number
clm_total
vehicle { vehicle {
id id
plate_no plate_no

View File

@@ -36,8 +36,7 @@ function JobsDetailPageContainer({ match, form }) {
refetch(); refetch();
}) })
.catch(error => { .catch(error => {
//TODO Error handling. notification[error]({ message: t("jobs.errors.saving") });
console.log("error", error);
}); });
}; };
@@ -70,7 +69,6 @@ function JobsDetailPageContainer({ match, form }) {
notification["success"]({ notification["success"]({
message: t("jobs.successes.savetitle") message: t("jobs.successes.savetitle")
}); });
//TODO: Better way to reset the field decorators?
refetch().then(r => form.resetFields()); refetch().then(r => form.resetFields());
}); });
} }
@@ -78,7 +76,7 @@ function JobsDetailPageContainer({ match, form }) {
}; };
if (loading) return <SpinComponent />; if (loading) return <SpinComponent />;
if (error) return <AlertComponent message={error.message} type="error" />; if (error) return <AlertComponent message={error.message} type='error' />;
return data.jobs_by_pk ? ( return data.jobs_by_pk ? (
<JobDetailFormContext.Provider value={form}> <JobDetailFormContext.Provider value={form}>
@@ -94,7 +92,7 @@ function JobsDetailPageContainer({ match, form }) {
/> />
</JobDetailFormContext.Provider> </JobDetailFormContext.Provider>
) : ( ) : (
<AlertComponent message={t("jobs.errors.noaccess")} type="error" /> <AlertComponent message={t("jobs.errors.noaccess")} type='error' />
); );
} }
export default Form.create({ name: "JobsDetailPageContainer" })( export default Form.create({ name: "JobsDetailPageContainer" })(

View File

@@ -7,7 +7,10 @@ import { createStructuredSelector } from "reselect";
import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component"; import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component";
import { QUERY_BODYSHOP } from "../../graphql/bodyshop.queries"; import { QUERY_BODYSHOP } from "../../graphql/bodyshop.queries";
import { setBodyshop } from "../../redux/user/user.actions"; import { setBodyshop } from "../../redux/user/user.actions";
import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selectors"; import {
selectBodyshop,
selectCurrentUser
} from "../../redux/user/user.selectors";
import ManagePage from "./manage.page"; import ManagePage from "./manage.page";
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
@@ -33,12 +36,10 @@ export default connect(
useEffect(() => { useEffect(() => {
if (data) setBodyshop(data.bodyshops[0]); if (data) setBodyshop(data.bodyshops[0]);
return () => { return () => {};
//
};
}, [data, setBodyshop]); }, [data, setBodyshop]);
//TODO Translate later. if (!bodyshop)
if (!bodyshop) return <LoadingSpinner message="Loading bodyshop data." />; return <LoadingSpinner message={t("general.labels.loadingshop")} />;
return <ManagePage match={match} />; return <ManagePage match={match} />;
}); });

View File

@@ -106,6 +106,8 @@
"in": "In", "in": "In",
"loading": "Loading...", "loading": "Loading...",
"loadingapp": "Loading Bodyshop.app", "loadingapp": "Loading Bodyshop.app",
"loadingshop": "Loading shop data...",
"loggingin": "Logging you in...",
"na": "N/A", "na": "N/A",
"out": "Out", "out": "Out",
"save": "Save", "save": "Save",

View File

@@ -106,6 +106,8 @@
"in": "en", "in": "en",
"loading": "Cargando...", "loading": "Cargando...",
"loadingapp": "Cargando Bodyshop.app", "loadingapp": "Cargando Bodyshop.app",
"loadingshop": "Cargando datos de la tienda ...",
"loggingin": "Iniciando sesión ...",
"na": "N / A", "na": "N / A",
"out": "Afuera", "out": "Afuera",
"save": "Salvar", "save": "Salvar",

View File

@@ -106,6 +106,8 @@
"in": "dans", "in": "dans",
"loading": "Chargement...", "loading": "Chargement...",
"loadingapp": "Chargement de Bodyshop.app", "loadingapp": "Chargement de Bodyshop.app",
"loadingshop": "Chargement des données de la boutique ...",
"loggingin": "Vous connecter ...",
"na": "N / A", "na": "N / A",
"out": "En dehors", "out": "En dehors",
"save": "sauvegarder", "save": "sauvegarder",