All dependecy upgrades + linting fixes.

This commit is contained in:
Patrick Fic
2020-02-06 17:07:15 -08:00
parent 5e65fb3b54
commit b86586241a
15 changed files with 2128 additions and 1154 deletions

View File

@@ -1,12 +1,14 @@
React App:
React Hooks are used for Authentication ONLY to ensure the correct web token is passed.
React App:
Yarn Dependency Management:
To force upgrades for some packages: yarn upgrade-interactive --latest
GraphQL API:
Hasura is hosted on another dyno. Several environmental variables are required, including disabling the console.
ALL CHANGES MUST BE MADE USING LOCAL CONSOLE TO ENSURE DATABASE MIGRATION FILES ARE CREATED.
Hasura is hosted on another dyno. Several environmental variables are required, including disabling the console.
ALL CHANGES MUST BE MADE USING LOCAL CONSOLE TO ENSURE DATABASE MIGRATION FILES ARE CREATED.
To Start Hasura CLI:
npx hasura console --admin-secret Dev-BodyShopAppBySnaptSoftware!
Migrating to Staging:
npx hasura migrate apply --up 10 --endpoint https://bodyshop-staging-db.herokuapp.com/ --admin-secret Staging-BodyShopAppBySnaptSoftware!
Migrating to Staging:
npx hasura migrate apply --up 10 --endpoint https://bodyshop-staging-db.herokuapp.com/ --admin-secret Staging-BodyShopAppBySnaptSoftware!

View File

@@ -4,39 +4,39 @@
"private": true,
"proxy": "https://localhost:5000",
"dependencies": {
"antd": "^3.26.0",
"antd": "^3.26.8",
"apollo-boost": "^0.4.4",
"apollo-link-context": "^1.0.19",
"apollo-link-error": "^1.1.12",
"apollo-link-logger": "^1.2.3",
"apollo-link-ws": "^1.0.19",
"axios": "^0.19.1",
"axios": "^0.19.2",
"chart.js": "^2.9.3",
"dotenv": "^8.2.0",
"firebase": "^7.5.0",
"graphql": "^14.5.8",
"i18next": "^19.0.2",
"node-sass": "^4.13.0",
"firebase": "^7.8.1",
"graphql": "^14.6.0",
"i18next": "^19.1.0",
"node-sass": "^4.13.1",
"react": "^16.12.0",
"react-apollo": "^3.1.3",
"react-big-calendar": "^0.23.0",
"react-chartjs-2": "^2.8.0",
"react-chartjs-2": "^2.9.0",
"react-dom": "^16.12.0",
"react-i18next": "^11.2.7",
"react-icons": "^3.8.0",
"react-i18next": "^11.3.1",
"react-icons": "^3.9.0",
"react-image-file-resizer": "^0.2.1",
"react-moment": "^0.9.7",
"react-number-format": "^4.3.1",
"react-redux": "^7.1.3",
"react-router-dom": "^5.1.2",
"react-scripts": "3.2.0",
"react-scripts": "3.3.1",
"react-trello": "^2.2.3",
"redux": "^4.0.5",
"redux-logger": "^3.0.6",
"redux-persist": "^6.0.0",
"redux-saga": "^1.1.3",
"reselect": "^4.0.0",
"styled-components": "^4.4.1",
"styled-components": "^5.0.1",
"subscriptions-transport-ws": "^0.9.16"
},
"scripts": {

View File

@@ -10,45 +10,45 @@ export default function JobDetailCardsInsuranceComponent({ loading, data }) {
<CardTemplate loading={loading} title={t("jobs.labels.cards.insurance")}>
{data ? (
<span>
<div>{data?.ins_co_nm || t("general.labels.unknown")}</div>
<div>{data?.clm_no || t("general.labels.unknown")}</div>
<div>{data.ins_co_nm || t("general.labels.unknown")}</div>
<div>{data.clm_no || t("general.labels.unknown")}</div>
<div>
{t("jobs.labels.cards.filehandler")}
{data?.ins_ea ? (
{data.ins_ea ? (
<a href={`mailto:${data.ins_ea}`}>
<div>{`${data?.ins_ct_fn || ""} ${data?.ins_ct_ln || ""}`}</div>
<div>{`${data.ins_ct_fn || ""} ${data.ins_ct_ln || ""}`}</div>
</a>
) : (
<div>{`${data?.ins_ct_fn || ""} ${data?.ins_ct_ln || ""}`}</div>
<div>{`${data.ins_ct_fn || ""} ${data.ins_ct_ln || ""}`}</div>
)}
{data?.ins_ph1 ? (
<PhoneFormatter>{data?.ins_ph1}</PhoneFormatter>
{data.ins_ph1 ? (
<PhoneFormatter>{data.ins_ph1}</PhoneFormatter>
) : null}
</div>
<div>
{t("jobs.labels.cards.appraiser")}
{data?.est_ea ? (
{data.est_ea ? (
<a href={`mailto:${data.est_ea}`}>
<div>{`${data?.ins_ct_fn || ""} ${data?.ins_ct_ln || ""}`}</div>
<div>{`${data.ins_ct_fn || ""} ${data.ins_ct_ln || ""}`}</div>
</a>
) : (
<div>{`${data?.ins_ct_fn || ""} ${data?.ins_ct_ln || ""}`}</div>
<div>{`${data.ins_ct_fn || ""} ${data.ins_ct_ln || ""}`}</div>
)}
</div>
<div>
{t("jobs.labels.cards.estimator")}
{data?.est_ea ? (
{data.est_ea ? (
<a href={`mailto:${data.est_ea}`}>
<div>{`${data?.est_ct_fn || ""} ${data?.est_ct_ln || ""}`}</div>
<div>{`${data.est_ct_fn || ""} ${data.est_ct_ln || ""}`}</div>
</a>
) : (
<div>{`${data?.est_ct_fn || ""} ${data?.est_ct_ln || ""}`}</div>
<div>{`${data.est_ct_fn || ""} ${data.est_ct_ln || ""}`}</div>
)}
{data?.est_ph1 ? (
<PhoneFormatter>{data?.est_ph1}</PhoneFormatter>
) : null}
{data.est_ph1 ? (
<PhoneFormatter>{data.est_ph1}</PhoneFormatter>
) : null}
</div>
</span>
) : null}

View File

@@ -13,7 +13,7 @@ export default function JobDetailCardsNotesComponent({ loading, data }) {
const { t } = useTranslation();
return (
<CardTemplate
<CardTemplate
loading={loading}
title={t("jobs.labels.cards.notes")}
extraLink={`/manage/jobs/${data.id}#notes`}>
@@ -22,7 +22,7 @@ export default function JobDetailCardsNotesComponent({ loading, data }) {
<List
size='small'
bordered
dataSource={data?.notes}
dataSource={data.notes}
renderItem={item => (
<List.Item>
{item.critical ? (

View File

@@ -9,7 +9,7 @@ export default function JobDetailCardsVehicleComponent({ loading, data }) {
<CardTemplate
loading={loading}
title={t("jobs.labels.cards.vehicle")}
extraLink={data?.vehicle ? `/manage/vehicles/${data?.vehicle?.id}` : null}
extraLink={data.vehicle ? `/manage/vehicles/${data.vehicle.id}` : null}
>
{data ? (
<span>

View File

@@ -52,24 +52,28 @@ export default function JobLinesContainer({ jobId, form }) {
? searchText
? data.joblines.filter(
jl =>
jl.unq_seq
?.toString()
(jl.unq_seq || "")
.toString()
.toLowerCase()
.includes(searchText.toLowerCase()) ||
jl.line_desc
?.toLowerCase()
(jl.line_desc || "")
.toLowerCase()
.includes(searchText.toLowerCase()) ||
jl.part_type
?.toLowerCase()
(jl.part_type || "")
.toLowerCase()
.includes(searchText.toLowerCase()) ||
jl.oem_partno
?.toLowerCase()
(jl.oem_partno || "")
.toLowerCase()
.includes(searchText.toLowerCase()) ||
jl.op_code_desc
?.toLowerCase()
(jl.op_code_desc || "")
.toLowerCase()
.includes(searchText.toLowerCase()) ||
jl.db_price?.toString().includes(searchText.toLowerCase()) ||
jl.act_price?.toString().includes(searchText.toLowerCase())
(jl.db_price || "")
.toString()
.includes(searchText.toLowerCase()) ||
(jl.act_price || "")
.toString()
.includes(searchText.toLowerCase())
)
: data.joblines
: null

View File

@@ -41,9 +41,7 @@ export default connect(
jobId={jobId}
currentUser={currentUser}
shopId={
shopData.data?.bodyshops[0]?.id
? shopData.data?.bodyshops[0]?.id
: "error"
shopData.data.bodyshops[0].id ? shopData.data.bodyshops[0].id : "error"
}
/>
);

View File

@@ -121,11 +121,11 @@ export default withRouter(function JobsList({
key: "plate_no",
width: "8%",
ellipsis: true,
sorter: (a, b) => alphaSort(a.vehicle?.plate_no, b.vehicle?.plate_no),
sorter: (a, b) => alphaSort(a.vehicle.plate_no, b.vehicle.plate_no),
sortOrder:
state.sortedInfo.columnKey === "plate_no" && state.sortedInfo.order,
render: (text, record) => {
return record.vehicle?.plate_no ? (
return record.vehicle.plate_no ? (
<span>{record.vehicle.plate_no}</span>
) : (
t("general.labels.unknown")

View File

@@ -14,7 +14,7 @@ export default function NoteUpsertModalComponent({
return (
<Modal
title={noteState?.id ? t("notes.actions.edit") : t("notes.actions.new")}
title={noteState.id ? t("notes.actions.edit") : t("notes.actions.new")}
visible={visible}
okText={t("general.labels.save")}
onOk={() => {
@@ -22,7 +22,8 @@ export default function NoteUpsertModalComponent({
}}
onCancel={() => {
changeVisibility(false);
}}>
}}
>
<div>
{t("notes.fields.critical")}
<Switch

View File

@@ -27,23 +27,24 @@ export default connect(
bodyshop,
refetch
}) {
const existingAppointments = useQuery(QUERY_APPOINTMENTS_BY_JOBID, {
variables: { jobid: jobId },
fetchPolicy: "network-only",
skip: !jobId
});
const [scheduleModalVisible, setscheduleModalVisible] = scheduleModalState;
const [appData, setAppData] = useState({ jobid: jobId, start: null });
const [insertAppointment] = useMutation(INSERT_APPOINTMENT);
const [updateJobStatus] = useMutation(UPDATE_JOB_STATUS, {
variables: {
jobId: jobId,
status: bodyshop.md_ro_statuses.default_scheduled
status: bodyshop.md_ro_statuses.default_scheduled
}
});
const [formData, setFormData] = useState({ notifyCustomer: false });
const { t } = useTranslation();
const existingAppointments = useQuery(QUERY_APPOINTMENTS_BY_JOBID, {
variables: { jobid: jobId },
fetchPolicy: "network-only",
skip: !scheduleModalVisible
});
return (
<ScheduleJobModalComponent
existingAppointments={existingAppointments}

View File

@@ -19,7 +19,7 @@ const errorLink = onError(
}
}
if (networkError) {
if (networkError?.message.includes("JWTExpired")) {
if (networkError.message.includes("JWTExpired")) {
expired = true;
}
}

View File

@@ -1,17 +1,16 @@
import { BackTop, Layout, notification } from "antd";
import React, { lazy, Suspense, useEffect } from "react";
import { useQuery } from "react-apollo";
import { useTranslation } from "react-i18next";
//This page will handle all routing for the entire application.
import { connect } from "react-redux";
import { Route } from "react-router";
import { createStructuredSelector } from "reselect";
import { useQuery } from "react-apollo";
import { QUERY_BODYSHOP } from "../../graphql/bodyshop.queries";
import ErrorBoundary from "../../components/error-boundary/error-boundary.component";
import FooterComponent from "../../components/footer/footer.component";
//Component Imports
import HeaderContainer from "../../components/header/header.container";
import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component";
import { QUERY_BODYSHOP } from "../../graphql/bodyshop.queries";
//const WhiteBoardPage = lazy(() => import("../white-board/white-board.page"));
import { setBodyshop } from "../../redux/user/user.actions";
import "./manage.page.styles.scss";

File diff suppressed because it is too large Load Diff

View File

@@ -17,14 +17,14 @@
},
"dependencies": {
"apollo-cache-persist": "^0.1.1",
"aws-sdk": "^2.603.0",
"aws-sdk": "^2.613.0",
"body-parser": "^1.18.3",
"compression": "^1.7.4",
"cors": "2.8.5",
"dotenv": "7.0.0",
"dotenv": "8.2.0",
"express": "^4.16.4",
"express-sslify": "^1.2.0",
"firebase-tools": "^7.9.0"
"firebase-tools": "^7.12.1"
},
"devDependencies": {
"concurrently": "^4.0.1",

View File

@@ -386,10 +386,10 @@ asynckit@^0.4.0:
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
aws-sdk@^2.603.0:
version "2.603.0"
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.603.0.tgz#0920756d2666f4fcfa7233841ef35cd04da81348"
integrity sha512-+VlskUDLZLQDDlaVa0Tb02aEFEWcKkTfTew1SGYwce9hUrKcR33IX4e9kM6MyI7UeLQAl0v8dagTniP67UrTQw==
aws-sdk@^2.613.0:
version "2.613.0"
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.613.0.tgz#f0d4c99f0df7ee8227d331dde19d5251b31a5da7"
integrity sha512-FYLaVtC/AlrcnjsPw1JhAsKd6yapr918Mk0jAcw3yFZp1sI2V0Um+2pmijLFsV+nNRxFlCVJRhhFWB5GK6yALA==
dependencies:
buffer "4.9.1"
events "1.1.1"
@@ -1092,10 +1092,10 @@ dot-prop@^4.1.0:
dependencies:
is-obj "^1.0.0"
dotenv@7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c"
integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==
dotenv@8.2.0:
version "8.2.0"
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==
dotenv@^6.1.0:
version "6.2.0"
@@ -1548,10 +1548,10 @@ find-up@^3.0.0:
dependencies:
locate-path "^3.0.0"
firebase-tools@^7.9.0:
version "7.9.0"
resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-7.9.0.tgz#32661980943f5ebbb2d82c126762c468ae0cff9c"
integrity sha512-dYxuFflaPAkic2KQyPJ6spox8KzlQRb4Xyk6oVDorBV0YmBIJ3VQhJYbwSZwwDlbCmiPiMXNBM26JUifp09Qfw==
firebase-tools@^7.12.1:
version "7.12.1"
resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-7.12.1.tgz#af78bbc446ae46d722938bd8009c351d52ec01f3"
integrity sha512-4cfHltsfUzKyt03OH9JUYrCPsq0OIZ9i54IzJRjJgs68NJDLrhUislBipw5Am0QgF8QDYpzz8wLTH56fNgmx8g==
dependencies:
"@google-cloud/pubsub" "^1.1.5"
JSONStream "^1.2.1"
@@ -1574,6 +1574,7 @@ firebase-tools@^7.9.0:
fs-extra "^0.23.1"
glob "^7.1.2"
google-auto-auth "^0.7.2"
google-gax "~1.12.0"
inquirer "~6.3.1"
jsonschema "^1.0.2"
jsonwebtoken "^8.2.1"
@@ -1587,7 +1588,7 @@ firebase-tools@^7.9.0:
portfinder "^1.0.23"
progress "^2.0.3"
request "^2.87.0"
semver "^5.0.3"
semver "^5.7.1"
superstatic "^6.0.1"
tar "^4.3.0"
tcp-port-used "^1.0.1"
@@ -1843,7 +1844,7 @@ google-auto-auth@^0.7.2:
google-auth-library "^0.10.0"
request "^2.79.0"
google-gax@^1.7.5:
google-gax@^1.7.5, google-gax@~1.12.0:
version "1.12.0"
resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-1.12.0.tgz#f926f7e6abda245db38ecbebbbf58daaf3a8f687"
integrity sha512-BeeoxVO6y9K20gUsexUwptutd0PfrTItrA02JWwwstlBIOAcvgFp86MHWufQsnrkPVhxBjHXq65aIkSejtJjDg==
@@ -3508,7 +3509,7 @@ semver-diff@^2.0.0:
dependencies:
semver "^5.0.3"
"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.5.0, semver@^5.6.0:
"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==