Added closed date to jobs and reformatted some items
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: ALTER TABLE "public"."jobs" DROP COLUMN "close_date";
|
||||
type: run_sql
|
||||
@@ -0,0 +1,5 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: ALTER TABLE "public"."jobs" ADD COLUMN "close_date" date NULL;
|
||||
type: run_sql
|
||||
@@ -0,0 +1,41 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: jobs
|
||||
schema: public
|
||||
type: drop_insert_permission
|
||||
- args:
|
||||
permission:
|
||||
backend_only: false
|
||||
check:
|
||||
bodyshop:
|
||||
associations:
|
||||
user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
columns:
|
||||
- loss_date
|
||||
- bodyshopid
|
||||
- clm_no
|
||||
- clm_total
|
||||
- created_at
|
||||
- group
|
||||
- id
|
||||
- ins_co_nm
|
||||
- ownr_fn
|
||||
- ownr_ln
|
||||
- ro_number
|
||||
- updated_at
|
||||
- v_age
|
||||
- v_makedesc
|
||||
- v_mileage
|
||||
- v_model
|
||||
- v_model_yr
|
||||
- v_type
|
||||
- v_vin
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: jobs
|
||||
schema: public
|
||||
type: create_insert_permission
|
||||
@@ -0,0 +1,42 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: jobs
|
||||
schema: public
|
||||
type: drop_insert_permission
|
||||
- args:
|
||||
permission:
|
||||
backend_only: false
|
||||
check:
|
||||
bodyshop:
|
||||
associations:
|
||||
user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
columns:
|
||||
- bodyshopid
|
||||
- clm_no
|
||||
- clm_total
|
||||
- close_date
|
||||
- created_at
|
||||
- group
|
||||
- id
|
||||
- ins_co_nm
|
||||
- loss_date
|
||||
- ownr_fn
|
||||
- ownr_ln
|
||||
- ro_number
|
||||
- updated_at
|
||||
- v_age
|
||||
- v_makedesc
|
||||
- v_mileage
|
||||
- v_model
|
||||
- v_model_yr
|
||||
- v_type
|
||||
- v_vin
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: jobs
|
||||
schema: public
|
||||
type: create_insert_permission
|
||||
@@ -0,0 +1,41 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: jobs
|
||||
schema: public
|
||||
type: drop_select_permission
|
||||
- args:
|
||||
permission:
|
||||
allow_aggregations: true
|
||||
columns:
|
||||
- loss_date
|
||||
- bodyshopid
|
||||
- clm_no
|
||||
- clm_total
|
||||
- created_at
|
||||
- group
|
||||
- id
|
||||
- ins_co_nm
|
||||
- ownr_fn
|
||||
- ownr_ln
|
||||
- ro_number
|
||||
- updated_at
|
||||
- v_age
|
||||
- v_makedesc
|
||||
- v_mileage
|
||||
- v_model
|
||||
- v_model_yr
|
||||
- v_type
|
||||
- v_vin
|
||||
computed_fields: []
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
role: user
|
||||
table:
|
||||
name: jobs
|
||||
schema: public
|
||||
type: create_select_permission
|
||||
@@ -0,0 +1,42 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: jobs
|
||||
schema: public
|
||||
type: drop_select_permission
|
||||
- args:
|
||||
permission:
|
||||
allow_aggregations: true
|
||||
columns:
|
||||
- bodyshopid
|
||||
- clm_no
|
||||
- clm_total
|
||||
- close_date
|
||||
- created_at
|
||||
- group
|
||||
- id
|
||||
- ins_co_nm
|
||||
- loss_date
|
||||
- ownr_fn
|
||||
- ownr_ln
|
||||
- ro_number
|
||||
- updated_at
|
||||
- v_age
|
||||
- v_makedesc
|
||||
- v_mileage
|
||||
- v_model
|
||||
- v_model_yr
|
||||
- v_type
|
||||
- v_vin
|
||||
computed_fields: []
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
role: user
|
||||
table:
|
||||
name: jobs
|
||||
schema: public
|
||||
type: create_select_permission
|
||||
@@ -0,0 +1,40 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: jobs
|
||||
schema: public
|
||||
type: drop_update_permission
|
||||
- args:
|
||||
permission:
|
||||
columns:
|
||||
- loss_date
|
||||
- bodyshopid
|
||||
- clm_no
|
||||
- clm_total
|
||||
- created_at
|
||||
- group
|
||||
- id
|
||||
- ins_co_nm
|
||||
- ownr_fn
|
||||
- ownr_ln
|
||||
- ro_number
|
||||
- updated_at
|
||||
- v_age
|
||||
- v_makedesc
|
||||
- v_mileage
|
||||
- v_model
|
||||
- v_model_yr
|
||||
- v_type
|
||||
- v_vin
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: jobs
|
||||
schema: public
|
||||
type: create_update_permission
|
||||
@@ -0,0 +1,41 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: jobs
|
||||
schema: public
|
||||
type: drop_update_permission
|
||||
- args:
|
||||
permission:
|
||||
columns:
|
||||
- bodyshopid
|
||||
- clm_no
|
||||
- clm_total
|
||||
- close_date
|
||||
- created_at
|
||||
- group
|
||||
- id
|
||||
- ins_co_nm
|
||||
- loss_date
|
||||
- ownr_fn
|
||||
- ownr_ln
|
||||
- ro_number
|
||||
- updated_at
|
||||
- v_age
|
||||
- v_makedesc
|
||||
- v_mileage
|
||||
- v_model
|
||||
- v_model_yr
|
||||
- v_type
|
||||
- v_vin
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: jobs
|
||||
schema: public
|
||||
type: create_update_permission
|
||||
@@ -191,14 +191,15 @@ tables:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
columns:
|
||||
- loss_date
|
||||
- bodyshopid
|
||||
- clm_no
|
||||
- clm_total
|
||||
- close_date
|
||||
- created_at
|
||||
- group
|
||||
- id
|
||||
- ins_co_nm
|
||||
- loss_date
|
||||
- ownr_fn
|
||||
- ownr_ln
|
||||
- ro_number
|
||||
@@ -215,14 +216,15 @@ tables:
|
||||
- role: user
|
||||
permission:
|
||||
columns:
|
||||
- loss_date
|
||||
- bodyshopid
|
||||
- clm_no
|
||||
- clm_total
|
||||
- close_date
|
||||
- created_at
|
||||
- group
|
||||
- id
|
||||
- ins_co_nm
|
||||
- loss_date
|
||||
- ownr_fn
|
||||
- ownr_ln
|
||||
- ro_number
|
||||
@@ -245,14 +247,15 @@ tables:
|
||||
- role: user
|
||||
permission:
|
||||
columns:
|
||||
- loss_date
|
||||
- bodyshopid
|
||||
- clm_no
|
||||
- clm_total
|
||||
- close_date
|
||||
- created_at
|
||||
- group
|
||||
- id
|
||||
- ins_co_nm
|
||||
- loss_date
|
||||
- ownr_fn
|
||||
- ownr_ln
|
||||
- ro_number
|
||||
|
||||
206
package-lock.json
generated
206
package-lock.json
generated
@@ -1472,9 +1472,9 @@
|
||||
"integrity": "sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg=="
|
||||
},
|
||||
"@firebase/auth": {
|
||||
"version": "0.14.9",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.14.9.tgz",
|
||||
"integrity": "sha512-PxYa2r5qUEdheXTvqROFrMstK8W4uPiP7NVfp+2Bec+AjY5PxZapCx/YFDLkU0D7YBI82H74PtZrzdJZw7TJ4w==",
|
||||
"version": "0.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.15.0.tgz",
|
||||
"integrity": "sha512-IFuzhxS+HtOQl7+SZ/Mhaghy/zTU7CENsJFWbC16tv2wfLZbayKF5jYGdAU3VFLehgC8KjlcIWd10akc3XivfQ==",
|
||||
"requires": {
|
||||
"@firebase/auth-types": "0.10.1"
|
||||
}
|
||||
@@ -1531,15 +1531,15 @@
|
||||
}
|
||||
},
|
||||
"@firebase/firestore": {
|
||||
"version": "1.17.3",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.17.3.tgz",
|
||||
"integrity": "sha512-wRdrgeSBJ50eo63x8GnO8NgVNe3vBw2xhKhyMXl0JTWQIbxnlMjAHcz7b85VvsqPLI7U70PgWQnfQtJOXRCNUA==",
|
||||
"version": "1.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.18.0.tgz",
|
||||
"integrity": "sha512-maMq4ltkrwjDRusR2nt0qS4wldHQMp+0IDSfXIjC+SNmjnWY/t/+Skn9U3Po+dB38xpz3i7nsKbs+8utpDnPSw==",
|
||||
"requires": {
|
||||
"@firebase/component": "0.1.19",
|
||||
"@firebase/firestore-types": "1.13.0",
|
||||
"@firebase/firestore-types": "1.14.0",
|
||||
"@firebase/logger": "0.2.6",
|
||||
"@firebase/util": "0.3.2",
|
||||
"@firebase/webchannel-wrapper": "0.3.0",
|
||||
"@firebase/webchannel-wrapper": "0.4.0",
|
||||
"@grpc/grpc-js": "^1.0.0",
|
||||
"@grpc/proto-loader": "^0.5.0",
|
||||
"node-fetch": "2.6.1",
|
||||
@@ -1547,9 +1547,9 @@
|
||||
}
|
||||
},
|
||||
"@firebase/firestore-types": {
|
||||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-1.13.0.tgz",
|
||||
"integrity": "sha512-QF5CAuYOHE6Zbsn1uEg6wkl836iP+i6C0C/Zs3kF60eebxZvTWp8JSZk19Ar+jj4w+ye8/7H5olu5CqDNjWpEA=="
|
||||
"version": "1.14.0",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-1.14.0.tgz",
|
||||
"integrity": "sha512-WF8IBwHzZDhwyOgQnmB0pheVrLNP78A8PGxk1nxb/Nrgh1amo4/zYvFMGgSsTeaQK37xMYS/g7eS948te/dJxw=="
|
||||
},
|
||||
"@firebase/functions": {
|
||||
"version": "0.5.1",
|
||||
@@ -1686,9 +1686,9 @@
|
||||
}
|
||||
},
|
||||
"@firebase/webchannel-wrapper": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.3.0.tgz",
|
||||
"integrity": "sha512-VniCGPIgSGNEgOkh5phb3iKmSGIzcwrccy3IomMFRWPCMiCk2y98UQNJEoDs1yIHtZMstVjYWKYxnunIGzC5UQ=="
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.0.tgz",
|
||||
"integrity": "sha512-8cUA/mg0S+BxIZ72TdZRsXKBP5n5uRcE3k29TZhZw6oIiHBt9JA7CTb/4pE1uKtE/q5NeTY2tBDcagoZ+1zjXQ=="
|
||||
},
|
||||
"@graphql-typed-document-node/core": {
|
||||
"version": "3.1.0",
|
||||
@@ -1719,9 +1719,9 @@
|
||||
}
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "12.12.67",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.67.tgz",
|
||||
"integrity": "sha512-R48tgL2izApf+9rYNH+3RBMbRpPeW3N8f0I9HMhggeq4UXwBDqumJ14SDs4ctTMhG11pIOduZ4z3QWGOiMc9Vg=="
|
||||
"version": "12.12.68",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.68.tgz",
|
||||
"integrity": "sha512-3RW2s24ewB7F9dAHvgb9FRvNHn6nO9IK6Eaknbz7HTOe2a5GVne5XbUh5+YA+kcCn67glyHhClUUdFP73LWrgQ=="
|
||||
},
|
||||
"camelcase": {
|
||||
"version": "5.3.1",
|
||||
@@ -1738,54 +1738,11 @@
|
||||
"wrap-ansi": "^6.2.0"
|
||||
}
|
||||
},
|
||||
"find-up": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
|
||||
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
|
||||
"requires": {
|
||||
"locate-path": "^5.0.0",
|
||||
"path-exists": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
|
||||
},
|
||||
"locate-path": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
|
||||
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
|
||||
"requires": {
|
||||
"p-locate": "^4.1.0"
|
||||
}
|
||||
},
|
||||
"p-limit": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
|
||||
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
|
||||
"requires": {
|
||||
"p-try": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"p-locate": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
|
||||
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
|
||||
"requires": {
|
||||
"p-limit": "^2.2.0"
|
||||
}
|
||||
},
|
||||
"p-try": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
|
||||
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
|
||||
},
|
||||
"path-exists": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
||||
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
|
||||
},
|
||||
"semver": {
|
||||
"version": "6.3.0",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
||||
@@ -3269,9 +3226,9 @@
|
||||
}
|
||||
},
|
||||
"antd": {
|
||||
"version": "4.7.0",
|
||||
"resolved": "https://registry.npmjs.org/antd/-/antd-4.7.0.tgz",
|
||||
"integrity": "sha512-qXXgclUmx6InkNce5BsIie9GR/39FGsVikwTMObofnVVALv+uOLH4D14reX7K50QldDXHZ7jIPU1JTkcNgtBoA==",
|
||||
"version": "4.7.2",
|
||||
"resolved": "https://registry.npmjs.org/antd/-/antd-4.7.2.tgz",
|
||||
"integrity": "sha512-baMyvvNRB0rqhUxi4cSaH4AG9Cd2W7TjAJnOrVTow8y5E45g3JU31+dAVUHWvtht6LTiWh4BLiKfCdZrSYBeEA==",
|
||||
"requires": {
|
||||
"@ant-design/colors": "^4.0.5",
|
||||
"@ant-design/css-animation": "^1.7.2",
|
||||
@@ -3296,7 +3253,7 @@
|
||||
"rc-image": "~3.2.1",
|
||||
"rc-input-number": "~6.1.0",
|
||||
"rc-mentions": "~1.5.0",
|
||||
"rc-menu": "~8.7.1",
|
||||
"rc-menu": "~8.8.2",
|
||||
"rc-motion": "^2.2.0",
|
||||
"rc-notification": "~4.5.2",
|
||||
"rc-pagination": "~3.1.0",
|
||||
@@ -3309,7 +3266,7 @@
|
||||
"rc-steps": "~4.1.0",
|
||||
"rc-switch": "~3.2.0",
|
||||
"rc-table": "~7.10.0",
|
||||
"rc-tabs": "~11.6.0",
|
||||
"rc-tabs": "~11.7.0",
|
||||
"rc-textarea": "~0.3.0",
|
||||
"rc-tooltip": "~5.0.0",
|
||||
"rc-tree": "~3.10.0",
|
||||
@@ -8485,17 +8442,62 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"find-up": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
|
||||
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
|
||||
"requires": {
|
||||
"locate-path": "^5.0.0",
|
||||
"path-exists": "^4.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"locate-path": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
|
||||
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
|
||||
"requires": {
|
||||
"p-locate": "^4.1.0"
|
||||
}
|
||||
},
|
||||
"p-limit": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
|
||||
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
|
||||
"requires": {
|
||||
"p-try": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"p-locate": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
|
||||
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
|
||||
"requires": {
|
||||
"p-limit": "^2.2.0"
|
||||
}
|
||||
},
|
||||
"p-try": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
|
||||
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
|
||||
},
|
||||
"path-exists": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
||||
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"firebase": {
|
||||
"version": "7.23.0",
|
||||
"resolved": "https://registry.npmjs.org/firebase/-/firebase-7.23.0.tgz",
|
||||
"integrity": "sha512-0b1zi0H8jT4KqyPabldzPhyKTeptw5E5a7KkjWW3MBMVV/LjbC6/NKhRR8sGQNbsbS2LnTvyEENWbqkZP2ZXtw==",
|
||||
"version": "7.24.0",
|
||||
"resolved": "https://registry.npmjs.org/firebase/-/firebase-7.24.0.tgz",
|
||||
"integrity": "sha512-j6jIyGFFBlwWAmrlUg9HyQ/x+YpsPkc/TTkbTyeLwwAJrpAmmEHNPT6O9xtAnMV4g7d3RqLL/u9//aZlbY4rQA==",
|
||||
"requires": {
|
||||
"@firebase/analytics": "0.6.0",
|
||||
"@firebase/app": "0.6.11",
|
||||
"@firebase/app-types": "0.6.1",
|
||||
"@firebase/auth": "0.14.9",
|
||||
"@firebase/auth": "0.15.0",
|
||||
"@firebase/database": "0.6.13",
|
||||
"@firebase/firestore": "1.17.3",
|
||||
"@firebase/firestore": "1.18.0",
|
||||
"@firebase/functions": "0.5.1",
|
||||
"@firebase/installations": "0.4.17",
|
||||
"@firebase/messaging": "0.7.1",
|
||||
@@ -8994,16 +8996,16 @@
|
||||
}
|
||||
},
|
||||
"google-auth-library": {
|
||||
"version": "6.1.1",
|
||||
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.1.tgz",
|
||||
"integrity": "sha512-0WfExOx3FrLYnY88RICQxvpaNzdwjz44OsHqHkIoAJfjY6Jck6CZRl1ASWadk+wbJ0LhkQ8rNY4zZebKml4Ghg==",
|
||||
"version": "6.1.2",
|
||||
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.2.tgz",
|
||||
"integrity": "sha512-X9EUX8R+kIpsf55KdSPhFWF0RNyBGuBc1zeYc/5Sjuk65eIYqq91rINJVBD22pp+w/PuM2fasHiA6H2xYjxTIQ==",
|
||||
"requires": {
|
||||
"arrify": "^2.0.0",
|
||||
"base64-js": "^1.3.0",
|
||||
"ecdsa-sig-formatter": "^1.0.11",
|
||||
"fast-text-encoding": "^1.0.0",
|
||||
"gaxios": "^3.0.0",
|
||||
"gcp-metadata": "^4.1.0",
|
||||
"gcp-metadata": "^4.2.0",
|
||||
"gtoken": "^5.0.4",
|
||||
"jws": "^4.0.0",
|
||||
"lru-cache": "^6.0.0"
|
||||
@@ -15271,9 +15273,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/node": {
|
||||
"version": "13.13.25",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.25.tgz",
|
||||
"integrity": "sha512-6ZMK4xRcF2XrPdKmPYQxZkdHKV18xKgUFVvhIgw2iwaaO6weleLPHLBGPZmLhjo+m1N+MZXRAoBEBCCVqgO2zQ=="
|
||||
"version": "13.13.26",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.26.tgz",
|
||||
"integrity": "sha512-+48LLqolaKj/WnIY1crfLseaGQMIDISBy3PTXVOZ7w/PBaRUv+H8t94++atzfoBAvorbUYz6Xq9vh1fHrg33ig=="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -15376,9 +15378,9 @@
|
||||
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
|
||||
},
|
||||
"query-string": {
|
||||
"version": "6.13.5",
|
||||
"resolved": "https://registry.npmjs.org/query-string/-/query-string-6.13.5.tgz",
|
||||
"integrity": "sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q==",
|
||||
"version": "6.13.6",
|
||||
"resolved": "https://registry.npmjs.org/query-string/-/query-string-6.13.6.tgz",
|
||||
"integrity": "sha512-/WWZ7d9na6s2wMEGdVCVgKWE9Rt7nYyNIf7k8xmHXcesPMlEzicWo3lbYwHyA4wBktI2KrXxxZeACLbE84hvSQ==",
|
||||
"requires": {
|
||||
"decode-uri-component": "^0.2.0",
|
||||
"split-on-first": "^1.0.0",
|
||||
@@ -15546,9 +15548,9 @@
|
||||
}
|
||||
},
|
||||
"rc-dialog": {
|
||||
"version": "8.4.1",
|
||||
"resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-8.4.1.tgz",
|
||||
"integrity": "sha512-ezdI0RLqPZyOirWg5zQK0/hUeKNIi+kfxWFAMMpawsz7Ycbwr7fq/zEU3uQRbp6bFV+9BbGLr2b9HsK2Jg0xKg==",
|
||||
"version": "8.4.2",
|
||||
"resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-8.4.2.tgz",
|
||||
"integrity": "sha512-8JZcJn2uJyC1pXCOsVQZH2z6norAF7NFVQ+2K0Ej83+YAZ0ZsxDDQuJGyBfnAi5M1pGJ4o+ETgSpj7VLXNwHDQ==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.10.1",
|
||||
"classnames": "^2.2.6",
|
||||
@@ -15622,9 +15624,9 @@
|
||||
}
|
||||
},
|
||||
"rc-menu": {
|
||||
"version": "8.7.1",
|
||||
"resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-8.7.1.tgz",
|
||||
"integrity": "sha512-CuuJ9oS1oPAfenqAMa3CZZE7RrPcPTHV3310cf6RO2uJgE9ztqasRFMEBwtruH16OexTr0igTCXySm+e2/TBQg==",
|
||||
"version": "8.8.3",
|
||||
"resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-8.8.3.tgz",
|
||||
"integrity": "sha512-C9sT0SBXmUbVWRUseXASousacRVPnOm5aXdyJR569WIvZwbs2IncpGNmAcft1R5ZuFE3Y+SZZ5FYvtGtbCzkIQ==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.10.1",
|
||||
"classnames": "2.x",
|
||||
@@ -15668,9 +15670,9 @@
|
||||
}
|
||||
},
|
||||
"rc-picker": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-2.3.0.tgz",
|
||||
"integrity": "sha512-UArXxifQqkwEvICWDe456Fx2LnCSbh3wYuEdPXSKJR3mIEjlF5qabNSEaoCykFZB3GtvDSmlsIMjXB8FMfRJ/A==",
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-2.3.3.tgz",
|
||||
"integrity": "sha512-ah4ucCnAs8ss7GgV7sF7MGgRlyfP4753z+OjnF4X7cIrntygklQqiFDBZYS02RX773vhJ+jc6AbyoR7hI4aGng==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.10.1",
|
||||
"classnames": "^2.2.1",
|
||||
@@ -15678,7 +15680,7 @@
|
||||
"dayjs": "^1.8.30",
|
||||
"moment": "^2.24.0",
|
||||
"rc-trigger": "^5.0.4",
|
||||
"rc-util": "^5.0.1",
|
||||
"rc-util": "^5.4.0",
|
||||
"shallowequal": "^1.1.0"
|
||||
}
|
||||
},
|
||||
@@ -15771,9 +15773,9 @@
|
||||
}
|
||||
},
|
||||
"rc-tabs": {
|
||||
"version": "11.6.2",
|
||||
"resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-11.6.2.tgz",
|
||||
"integrity": "sha512-7Z5Lg+nP/H4V7dIlewrOC0+aogRVH3ASjTy4VIletYOeStGPWYSfwBnUTBdcCXcUuWuyyKnNkYrUD0yaRqUCIA==",
|
||||
"version": "11.7.0",
|
||||
"resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-11.7.0.tgz",
|
||||
"integrity": "sha512-nYwQcgML2drM0iau4aa6HI4qyyZSW0WpspCAtO5KGjXwHzUJcvv3qgLVuoQOWQaDDHXkI9Jj8U7Y/Hcrdyj1Kw==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"classnames": "2.x",
|
||||
@@ -15860,9 +15862,9 @@
|
||||
}
|
||||
},
|
||||
"rc-virtual-list": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.1.1.tgz",
|
||||
"integrity": "sha512-hkDj4+xEdeYKe8sX7rft/rvh6uutiGHnqdn17//YhHdWoeDfP+TmGbzG2HEHrNdJIMEb/yNxu+KVEWd7JTJ9MA==",
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.2.0.tgz",
|
||||
"integrity": "sha512-NZb+Z4tGkfrCNXprVUlLJxoRVIELwLmlY5nHwiV3pj4eA9Of8thpQwtT+AomwcZjKhC7R/EDtpk2ATMJXX5s3Q==",
|
||||
"requires": {
|
||||
"classnames": "^2.2.6",
|
||||
"rc-resize-observer": "^0.2.3",
|
||||
@@ -15870,9 +15872,9 @@
|
||||
}
|
||||
},
|
||||
"react": {
|
||||
"version": "16.13.1",
|
||||
"resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz",
|
||||
"integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==",
|
||||
"version": "16.14.0",
|
||||
"resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz",
|
||||
"integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==",
|
||||
"requires": {
|
||||
"loose-envify": "^1.1.0",
|
||||
"object-assign": "^4.1.1",
|
||||
@@ -16165,9 +16167,9 @@
|
||||
}
|
||||
},
|
||||
"react-dom": {
|
||||
"version": "16.13.1",
|
||||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz",
|
||||
"integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==",
|
||||
"version": "16.14.0",
|
||||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz",
|
||||
"integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==",
|
||||
"requires": {
|
||||
"loose-envify": "^1.1.0",
|
||||
"object-assign": "^4.1.1",
|
||||
|
||||
10
package.json
10
package.json
@@ -9,7 +9,7 @@
|
||||
"dependencies": {
|
||||
"@apollo/client": "^3.2.4",
|
||||
"@fingerprintjs/fingerprintjs": "^2.1.4",
|
||||
"antd": "^4.7.0",
|
||||
"antd": "^4.7.2",
|
||||
"apollo-link-logger": "^2.0.0",
|
||||
"chokidar": "^3.4.3",
|
||||
"dbffile": "^1.4.3",
|
||||
@@ -20,15 +20,15 @@
|
||||
"electron-reload": "^1.5.0",
|
||||
"electron-store": "^6.0.1",
|
||||
"electron-updater": "^4.3.5",
|
||||
"firebase": "^7.23.0",
|
||||
"firebase": "^7.24.0",
|
||||
"graphql": "^15.3.0",
|
||||
"lodash": "^4.17.20",
|
||||
"moment": "^2.29.1",
|
||||
"node-notifier": "^8.0.0",
|
||||
"node-sass": "^4.14.1",
|
||||
"query-string": "^6.13.5",
|
||||
"react": "^16.13.1",
|
||||
"react-dom": "^16.13.1",
|
||||
"query-string": "^6.13.6",
|
||||
"react": "^16.14.0",
|
||||
"react-dom": "^16.14.0",
|
||||
"react-infinite-scroller": "^1.2.4",
|
||||
"react-redux": "^7.2.1",
|
||||
"react-router-dom": "^5.2.0",
|
||||
|
||||
@@ -50,3 +50,8 @@ body {
|
||||
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
|
||||
background-color: #188fff;
|
||||
}
|
||||
|
||||
//Required for the tab with infinite loading
|
||||
.ant-tabs-content {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ import React, { useMemo } from "react";
|
||||
import { Cell, Pie, PieChart, ResponsiveContainer } from "recharts";
|
||||
import ErrorResultAtom from "../error-result/error-result.atom";
|
||||
import Dinero from "dinero.js";
|
||||
import partTypeConverterAtom from "../part-type-converter/part-type-converter.atom";
|
||||
export default function JobPartsGraphAtom({
|
||||
job,
|
||||
loading,
|
||||
@@ -35,24 +36,31 @@ export default function JobPartsGraphAtom({
|
||||
|
||||
if (loading) return <Skeleton active />;
|
||||
if (!job) return <ErrorResultAtom title="Error displaying job data." />;
|
||||
|
||||
console.log("data", data);
|
||||
return (
|
||||
<div
|
||||
style={{ display: "flex", flexDirection: "column", alignItems: "center" }}
|
||||
style={{
|
||||
display: "flex",
|
||||
flex: 1,
|
||||
flexDirection: "column",
|
||||
alignItems: "center",
|
||||
}}
|
||||
>
|
||||
<Typography.Title level={4}>
|
||||
{price === "act_price" ? "Actual Price" : "Database Price"}
|
||||
</Typography.Title>
|
||||
<ResponsiveContainer width="100%" height={250}>
|
||||
<ResponsiveContainer>
|
||||
<PieChart>
|
||||
<Pie
|
||||
data={data}
|
||||
innerRadius={40}
|
||||
outerRadius={50}
|
||||
outerRadius={80}
|
||||
fill="#8884d8"
|
||||
paddingAngle={5}
|
||||
// paddingAngle={5}
|
||||
dataKey="value"
|
||||
label={(entry) => `${entry.name} - ${entry.label}`}
|
||||
label={(entry) =>
|
||||
`${partTypeConverterAtom(entry.name)} (${entry.label})`
|
||||
}
|
||||
labelLine
|
||||
>
|
||||
{data.map((entry, index) => (
|
||||
@@ -68,7 +76,7 @@ export default function JobPartsGraphAtom({
|
||||
const getColor = (key) => {
|
||||
switch (key) {
|
||||
case "PAA":
|
||||
return "tomato";
|
||||
return "slategray";
|
||||
case "PAL":
|
||||
return "dodgeblue";
|
||||
case "PAN":
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
export default (part_type) => {
|
||||
switch (part_type) {
|
||||
case "PAA":
|
||||
return "Aftermarket";
|
||||
case "PAE":
|
||||
return "Existing";
|
||||
case "PAN":
|
||||
return "OEM";
|
||||
case "PAL":
|
||||
return "LKQ";
|
||||
default:
|
||||
return "?";
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,44 @@
|
||||
import { useMutation } from "@apollo/client";
|
||||
import { DatePicker, message, Spin } from "antd";
|
||||
import moment from "moment";
|
||||
import React, { useState } from "react";
|
||||
import { UPDATE_JOB } from "../../../graphql/jobs.queries";
|
||||
|
||||
export default function CloseDateDisplayMolecule({ jobId, close_date }) {
|
||||
const [editMode, setEditMode] = useState(false);
|
||||
const [value, setValue] = useState(moment(close_date));
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [updateJob] = useMutation(UPDATE_JOB);
|
||||
|
||||
const handleChange = async (newDate) => {
|
||||
setLoading(true);
|
||||
setValue(newDate);
|
||||
const result = await updateJob({
|
||||
variables: { jobId: jobId, job: { close_date: newDate } },
|
||||
});
|
||||
|
||||
if (!result.errors) {
|
||||
message.success("Close date updated.");
|
||||
} else {
|
||||
message.error("Error updating job.");
|
||||
}
|
||||
setLoading(false);
|
||||
};
|
||||
|
||||
if (editMode)
|
||||
return (
|
||||
<div onBlur={() => setEditMode(false)}>
|
||||
<DatePicker
|
||||
value={value.isValid() ? value : null}
|
||||
onChange={handleChange}
|
||||
/>
|
||||
{loading && <Spin size="small" />}
|
||||
</div>
|
||||
);
|
||||
|
||||
return (
|
||||
<div style={{ cursor: "pointer" }} onClick={() => setEditMode(true)}>
|
||||
{value.isValid() ? value.format("MM/DD/yyyy") : "No date set"}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -2,6 +2,7 @@ import { Descriptions, PageHeader, Skeleton } from "antd";
|
||||
import React from "react";
|
||||
import CurrencyFormatterAtom from "../../atoms/currency-formatter/currency-formatter.atom";
|
||||
import ErrorResultAtom from "../../atoms/error-result/error-result.atom";
|
||||
import CloseDateDisplayMolecule from "../close-date-display/close-date-display.molecule";
|
||||
|
||||
export default function JobsDetailDescriptionMolecule({ loading, job }) {
|
||||
if (loading) return <Skeleton active />;
|
||||
@@ -19,6 +20,12 @@ export default function JobsDetailDescriptionMolecule({ loading, job }) {
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="Group">{job.group}</Descriptions.Item>
|
||||
<Descriptions.Item label="Age">{job.v_age}</Descriptions.Item>
|
||||
<Descriptions.Item label="Close Date">
|
||||
<CloseDateDisplayMolecule
|
||||
jobId={job.id}
|
||||
close_date={job.close_date}
|
||||
/>
|
||||
</Descriptions.Item>
|
||||
</Descriptions>
|
||||
</PageHeader>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { Table } from "antd";
|
||||
import React from "react";
|
||||
import CurrencyFormatterAtom from "../../atoms/currency-formatter/currency-formatter.atom";
|
||||
import partTypeConverterAtom from "../../atoms/part-type-converter/part-type-converter.atom";
|
||||
import PriceDiffPcFormatterAtom from "../../atoms/price-diff-pc-formatter/price-diff-pc-formatter.atom";
|
||||
|
||||
export default function JobLinesTableMolecule({ loading, job }) {
|
||||
@@ -25,6 +26,7 @@ export default function JobLinesTableMolecule({ loading, job }) {
|
||||
title: "Part Type",
|
||||
dataIndex: "part_type",
|
||||
key: "part_type",
|
||||
render: (text, record) => partTypeConverterAtom(text),
|
||||
},
|
||||
{
|
||||
title: "Part Number",
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
import { List } from "antd";
|
||||
import React from "react";
|
||||
import { connect } from "react-redux";
|
||||
import { createStructuredSelector } from "reselect";
|
||||
import { setSelectedJobId } from "../../../redux/application/application.actions";
|
||||
import { selectSelectedJobId } from "../../../redux/application/application.selectors";
|
||||
import TimeAgoFormatter from "../../atoms/time-ago-formatter/time-ago-formatter.atom";
|
||||
import "./jobs-list-item.styles.scss";
|
||||
|
||||
const mapStateToProps = createStructuredSelector({
|
||||
selectedJobId: selectSelectedJobId,
|
||||
});
|
||||
const mapDispatchToProps = (dispatch) => ({
|
||||
setSelectedJobId: (jobId) => dispatch(setSelectedJobId(jobId)),
|
||||
});
|
||||
|
||||
export function JobsListItemMolecule({
|
||||
selectedJobId,
|
||||
setSelectedJobId,
|
||||
item,
|
||||
}) {
|
||||
const handleSelect = (jobId) => {
|
||||
setSelectedJobId(jobId);
|
||||
};
|
||||
|
||||
return (
|
||||
<List.Item
|
||||
className="jobs-list-item"
|
||||
key={item.id}
|
||||
onClick={() => handleSelect(item.id)}
|
||||
>
|
||||
<div
|
||||
className={`jobs-list-item-content ${
|
||||
item.id === selectedJobId ? "jobs-list-item-content-selected" : ""
|
||||
}`}
|
||||
>
|
||||
<div
|
||||
style={{
|
||||
display: "flex",
|
||||
|
||||
justifyContent: "space-between",
|
||||
}}
|
||||
>
|
||||
<strong>{item.clm_no || "No Claim Number"}</strong>
|
||||
<span style={{ fontStyle: "italic" }}>
|
||||
<TimeAgoFormatter>{item.updated_at}</TimeAgoFormatter>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div>{item.ins_co_nm || "No Insurance Co."}</div>
|
||||
<div>{`${item.ownr_fn} ${item.ownr_ln}`}</div>
|
||||
<div>
|
||||
{`${item.v_model_yr} ${item.v_makedesc} ${item.v_model} ${item.v_vin}`}
|
||||
</div>
|
||||
</div>
|
||||
</List.Item>
|
||||
);
|
||||
}
|
||||
export default connect(
|
||||
mapStateToProps,
|
||||
mapDispatchToProps
|
||||
)(JobsListItemMolecule);
|
||||
@@ -0,0 +1,22 @@
|
||||
|
||||
.jobs-list-item {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
.jobs-list-item-content {
|
||||
&-selected {
|
||||
border-left: 3px solid #1890ff;
|
||||
}
|
||||
|
||||
display: inline;
|
||||
margin: 0.5rem;
|
||||
padding: 0.5rem;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
background-color: #e6f7ff;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,6 +40,8 @@ export default function JobsTargetsStatsMolecule({ loading, job }) {
|
||||
display: "flex",
|
||||
alignItems: "center",
|
||||
justifyContent: "space-around",
|
||||
marginTop: "1rem",
|
||||
marginBottom: "1rem",
|
||||
}}
|
||||
>
|
||||
<TargetPriceDiffPcAtom v_age={job.v_age} group={job.group} />
|
||||
|
||||
@@ -49,16 +49,23 @@ export function JobsDetailOrganism({ selectedJobId }) {
|
||||
loading={loading}
|
||||
job={data ? data.jobs_by_pk : null}
|
||||
/>
|
||||
<div style={{ display: "flex", justifyContent: "space-evenly" }}>
|
||||
<JobsPartsGraphAtom
|
||||
job={data ? data.jobs_by_pk : null}
|
||||
loading={loading}
|
||||
/>
|
||||
<div
|
||||
style={{
|
||||
display: "flex",
|
||||
justifyContent: "space-evenly",
|
||||
minHeight: "20rem",
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<JobsPartsGraphAtom
|
||||
job={data ? data.jobs_by_pk : null}
|
||||
loading={loading}
|
||||
price="db_price"
|
||||
/>
|
||||
<JobsPartsGraphAtom
|
||||
job={data ? data.jobs_by_pk : null}
|
||||
loading={loading}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
.jobs-detail-container {
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { SyncOutlined } from "@ant-design/icons";
|
||||
import { useQuery } from "@apollo/client";
|
||||
import { Button, List, Spin } from "antd";
|
||||
import { Dropdown, List, Menu, Spin } from "antd";
|
||||
import React, { useState } from "react";
|
||||
import InfiniteScroll from "react-infinite-scroller";
|
||||
import { connect } from "react-redux";
|
||||
@@ -9,8 +9,9 @@ import { QUERY_ALL_JOBS_PAGINATED } from "../../../graphql/jobs.queries";
|
||||
import { setSelectedJobId } from "../../../redux/application/application.actions";
|
||||
import { selectSelectedJobId } from "../../../redux/application/application.selectors";
|
||||
import ErrorResultAtom from "../../atoms/error-result/error-result.atom";
|
||||
import TimeAgoFormatter from "../../atoms/time-ago-formatter/time-ago-formatter.atom";
|
||||
import "./jobs-list.organism.styles.scss";
|
||||
import JobsListItemMolecule from "../../molecules/jobs-list-item/jobs-list-item.molecule";
|
||||
import "./jobs-list-latest.organism.styles.scss";
|
||||
|
||||
const mapStateToProps = createStructuredSelector({
|
||||
selectedJobId: selectSelectedJobId,
|
||||
});
|
||||
@@ -33,6 +34,15 @@ export function JobsTableOrganism({ selectedJobId, setSelectedJobId }) {
|
||||
}
|
||||
);
|
||||
|
||||
const menu = (
|
||||
<Menu>
|
||||
<Menu.Item onClick={() => refetch()}>
|
||||
<SyncOutlined />
|
||||
Reload
|
||||
</Menu.Item>
|
||||
</Menu>
|
||||
);
|
||||
|
||||
const handleInfiniteOnLoad = (page) => {
|
||||
fetchMore({
|
||||
variables: {
|
||||
@@ -62,10 +72,6 @@ export function JobsTableOrganism({ selectedJobId, setSelectedJobId }) {
|
||||
});
|
||||
};
|
||||
|
||||
const handleSelect = (jobId) => {
|
||||
setSelectedJobId(jobId);
|
||||
};
|
||||
|
||||
if (error)
|
||||
return (
|
||||
<ErrorResultAtom
|
||||
@@ -76,9 +82,6 @@ export function JobsTableOrganism({ selectedJobId, setSelectedJobId }) {
|
||||
|
||||
return (
|
||||
<div className="jobs-list-container">
|
||||
<Button onClick={() => refetch()}>
|
||||
<SyncOutlined />
|
||||
</Button>
|
||||
<div className="jobs-list-infinite-container">
|
||||
<InfiniteScroll
|
||||
pageStart={0}
|
||||
@@ -86,50 +89,19 @@ export function JobsTableOrganism({ selectedJobId, setSelectedJobId }) {
|
||||
hasMore={!loading && state.hasMore}
|
||||
useWindow={false}
|
||||
>
|
||||
<List
|
||||
bordered
|
||||
dataSource={data ? data.jobs : []}
|
||||
renderItem={(item) => (
|
||||
<List.Item
|
||||
className="jobs-list-item"
|
||||
key={item.id}
|
||||
onClick={() => handleSelect(item.id)}
|
||||
>
|
||||
<div
|
||||
className={`jobs-list-item-content ${
|
||||
item.id === selectedJobId
|
||||
? "jobs-list-item-content-selected"
|
||||
: ""
|
||||
}`}
|
||||
>
|
||||
<div
|
||||
style={{
|
||||
display: "flex",
|
||||
|
||||
justifyContent: "space-between",
|
||||
}}
|
||||
>
|
||||
<strong>{item.clm_no || "No Claim Number"}</strong>
|
||||
<span style={{ fontStyle: "italic" }}>
|
||||
<TimeAgoFormatter>{item.updated_at}</TimeAgoFormatter>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div>{item.ins_co_nm || "No Insurance Co."}</div>
|
||||
<div>{`${item.ownr_fn} ${item.ownr_ln}`}</div>
|
||||
<div>
|
||||
{`${item.v_model_yr} ${item.v_makedesc} ${item.v_model} ${item.v_vin}`}
|
||||
</div>
|
||||
<Dropdown overlay={menu} trigger={["contextMenu"]}>
|
||||
<List
|
||||
bordered
|
||||
dataSource={data ? data.jobs : []}
|
||||
renderItem={(item) => <JobsListItemMolecule item={item} />}
|
||||
>
|
||||
{loading && state.hasMore && (
|
||||
<div>
|
||||
<Spin />
|
||||
</div>
|
||||
</List.Item>
|
||||
)}
|
||||
>
|
||||
{loading && state.hasMore && (
|
||||
<div>
|
||||
<Spin />
|
||||
</div>
|
||||
)}
|
||||
</List>
|
||||
)}
|
||||
</List>
|
||||
</Dropdown>
|
||||
</InfiniteScroll>
|
||||
</div>
|
||||
{`${data ? data.jobs.length : 0} jobs loaded. ${
|
||||
@@ -0,0 +1,9 @@
|
||||
.jobs-list-container {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.jobs-list-infinite-container {
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
height: 100%;
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
.jobs-list-container {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.jobs-list-infinite-container {
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.jobs-list-item {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
.jobs-list-item-content {
|
||||
&-selected {
|
||||
border-left: 3px solid #1890ff;
|
||||
}
|
||||
|
||||
display: inline;
|
||||
margin: 0.5rem;
|
||||
padding: 0.5rem;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
background-color: #e6f7ff;
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
import { Col, Row } from "antd";
|
||||
import { Col, Row, Tabs } from "antd";
|
||||
import React from "react";
|
||||
import { connect } from "react-redux";
|
||||
import { createStructuredSelector } from "reselect";
|
||||
import JobsDetailOrganism from "../../organisms/jobs-detail/jobs-detail.organism";
|
||||
import JobsListOrganism from "../../organisms/jobs-list/jobs-list.organism";
|
||||
import JobsListOrganism from "../../organisms/jobs-list-latest/jobs-list-latest.organism";
|
||||
|
||||
const mapStateToProps = createStructuredSelector({});
|
||||
const mapDispatchToProps = (dispatch) => ({});
|
||||
@@ -13,7 +13,14 @@ export function JobsPage() {
|
||||
<div style={{ height: "100%" }}>
|
||||
<Row gutter={[16, 16]} style={{ height: "100%" }}>
|
||||
<Col span={6} style={{ height: "100%" }}>
|
||||
<JobsListOrganism />
|
||||
<Tabs defaultActiveKey="search" style={{ height: "100%" }}>
|
||||
<Tabs.TabPane key="latest" tab="Latest" style={{ height: "100%" }}>
|
||||
<JobsListOrganism />
|
||||
</Tabs.TabPane>
|
||||
<Tabs.TabPane key="search" tab="Search" style={{ height: "100%" }}>
|
||||
Search
|
||||
</Tabs.TabPane>
|
||||
</Tabs>
|
||||
</Col>
|
||||
<Col span={18} style={{ height: "100%" }}>
|
||||
<JobsDetailOrganism />
|
||||
|
||||
@@ -41,8 +41,6 @@ export const QUERY_ALL_JOBS_PAGINATED = gql`
|
||||
id
|
||||
ins_co_nm
|
||||
clm_no
|
||||
clm_total
|
||||
ro_number
|
||||
updated_at
|
||||
}
|
||||
jobs_aggregate {
|
||||
@@ -71,6 +69,7 @@ export const QUERY_JOB_BY_PK = gql`
|
||||
group
|
||||
v_age
|
||||
loss_date
|
||||
close_date
|
||||
joblines(order_by: { line_no: asc }) {
|
||||
id
|
||||
act_price
|
||||
@@ -123,6 +122,7 @@ export const UPDATE_JOB = gql`
|
||||
clm_total
|
||||
ro_number
|
||||
updated_at
|
||||
close_date
|
||||
joblines(order_by: { unq_seq: asc }) {
|
||||
id
|
||||
act_price
|
||||
|
||||
Reference in New Issue
Block a user