From 5dce8b5cb8f66d09fcb347d39c1e45e483f010a6 Mon Sep 17 00:00:00 2001 From: das31 <31259710+das31@users.noreply.github.com> Date: Thu, 20 Apr 2023 11:21:41 -0400 Subject: [PATCH 01/11] CEC-4066-dtc-error-text (#317) * CEC-4066-dtc-error-text * resolve comments --- src/components/DTCTimeline/DTCTimeline/index.jsx | 5 +++++ src/services/DTCTimelineAPI.js | 1 + 2 files changed, 6 insertions(+) diff --git a/src/components/DTCTimeline/DTCTimeline/index.jsx b/src/components/DTCTimeline/DTCTimeline/index.jsx index 29eaf5b..49b3417 100644 --- a/src/components/DTCTimeline/DTCTimeline/index.jsx +++ b/src/components/DTCTimeline/DTCTimeline/index.jsx @@ -48,6 +48,10 @@ const MainForm = ({ vin }) => { id: "status_byte", label: "Status Code", }, + { + id: "ErrorText", + label: "Error Text" + }, { id: "epoch_usec", label: "Date", @@ -196,6 +200,7 @@ const MainForm = ({ vin }) => { {dtc.ecu_name} {dtc.trouble_code} {dtc.status_byte} + {dtc.trouble_code_information?.ErrorText?.Text} {formatDate(dtc.epoch_usec)} ))} diff --git a/src/services/DTCTimelineAPI.js b/src/services/DTCTimelineAPI.js index c7c2a7e..3fce6c6 100644 --- a/src/services/DTCTimelineAPI.js +++ b/src/services/DTCTimelineAPI.js @@ -13,6 +13,7 @@ const DTCTimelineAPI = { ecu, start_time: startDate, end_time: endDate, + decode:true, ...search, }; const url = addQueryParams(`${API_ENDPOINT}/dtcs/${vin}`, queryParams); From 81af6ed9d19e9c39b821799c219069875ab638b3 Mon Sep 17 00:00:00 2001 From: craifiskerinc <108751807+craifiskerinc@users.noreply.github.com> Date: Fri, 21 Apr 2023 13:24:11 -0400 Subject: [PATCH 02/11] new superset dev (#319) Co-authored-by: Christopher Rai --- .env.dev | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.dev b/.env.dev index f984f2e..f4e1116 100644 --- a/.env.dev +++ b/.env.dev @@ -7,7 +7,7 @@ REACT_APP_MAGNA_GROUP_ID=68273225-9da4-4fa7-aea5-38e16ec471fe REACT_APP_OTA_SERVICE_URL=https://dev-gw.cloud.fiskerinc.com/ota_update REACT_APP_SECURITY_DLL_URL=https://assets.fiskerdps.com/cloud-supplier/fisker_security_32.dll REACT_APP_SECURITY_DLL_64_URL=https://assets.fiskerdps.com/cloud-supplier/fisker_security_64.dll -REACT_APP_SUPERSET_URL=https://dev-superset-new.cloud.fiskerinc.com +REACT_APP_SUPERSET_URL=https://dev-superset.cloud.fiskerinc.com REACT_APP_ROLE_CREATE=efcc3025-e2d8-4212-8227-805c7be39d2c REACT_APP_ROLE_READ_ONLY=a729bbd4-2038-4649-9127-16782bb1e701 REACT_APP_ROLE_DELETE=8f78dce7-f5f9-4033-a10c-c9c7408bfcfe From d48edf678a9968423f249f0d5ea30d83a67480eb Mon Sep 17 00:00:00 2001 From: das31 <31259710+das31@users.noreply.github.com> Date: Mon, 24 Apr 2023 18:08:49 -0400 Subject: [PATCH 03/11] CEC-4066-dtc-error-text-fix (#318) * CEC-4066-dtc-error-text-fix * CEC-4066-dtc-error-text-fix * remove error text column check: --- src/components/DTCTimeline/DTCTimeline/index.jsx | 3 ++- src/components/Table/HeaderSortable/index.jsx | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/DTCTimeline/DTCTimeline/index.jsx b/src/components/DTCTimeline/DTCTimeline/index.jsx index 49b3417..c632d36 100644 --- a/src/components/DTCTimeline/DTCTimeline/index.jsx +++ b/src/components/DTCTimeline/DTCTimeline/index.jsx @@ -50,7 +50,8 @@ const MainForm = ({ vin }) => { }, { id: "ErrorText", - label: "Error Text" + label: "Error Text", + no_sort : true, }, { id: "epoch_usec", diff --git a/src/components/Table/HeaderSortable/index.jsx b/src/components/Table/HeaderSortable/index.jsx index 2b297e8..c0b0b4a 100644 --- a/src/components/Table/HeaderSortable/index.jsx +++ b/src/components/Table/HeaderSortable/index.jsx @@ -35,6 +35,9 @@ const HeaderSortable = (props) => { value === "desc" ? "sorted descending" : "sorted ascending"; const ColumnLabel = (column) => { + if (column.no_sort) { + return column.label + } if (column.id) { return ( Date: Tue, 25 Apr 2023 14:13:43 -0700 Subject: [PATCH 04/11] CEC-4217 fix car update table (#322) --- .../Cars/Status/__snapshots__/CarUpdatesTab.test.jsx.snap | 2 +- src/components/Controls/CarUpdatesTable/index.jsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/Cars/Status/__snapshots__/CarUpdatesTab.test.jsx.snap b/src/components/Cars/Status/__snapshots__/CarUpdatesTab.test.jsx.snap index 7dbc894..3b464e5 100644 --- a/src/components/Cars/Status/__snapshots__/CarUpdatesTab.test.jsx.snap +++ b/src/components/Cars/Status/__snapshots__/CarUpdatesTab.test.jsx.snap @@ -195,7 +195,7 @@ exports[`CarUpdatesTab Render 1`] = ` > No Car Updates diff --git a/src/components/Controls/CarUpdatesTable/index.jsx b/src/components/Controls/CarUpdatesTable/index.jsx index c8eef07..d99fe94 100644 --- a/src/components/Controls/CarUpdatesTable/index.jsx +++ b/src/components/Controls/CarUpdatesTable/index.jsx @@ -213,11 +213,11 @@ const MainForm = ({ vin, token }) => { {totalCarUpdates === 0 ? ( - No Car Updates + No Car Updates ) : ( Date: Tue, 25 Apr 2023 17:25:22 -0400 Subject: [PATCH 05/11] CEC-4206-ecu-page-cut-off (#321) * CEC-4206-ecu-page-cut-off * fix test * Update snapshots * Fix tooltip title warning --------- Co-authored-by: jwu-fisker Co-authored-by: John Wu <76966357+jwu-fisker@users.noreply.github.com> --- .../__snapshots__/ECUsTab.test.jsx.snap | 170 +++++++++++++----- .../Controls/CarECUsTable/index.jsx | 11 +- src/components/useStyles.jsx | 7 +- 3 files changed, 145 insertions(+), 43 deletions(-) diff --git a/src/components/Cars/Status/__snapshots__/ECUsTab.test.jsx.snap b/src/components/Cars/Status/__snapshots__/ECUsTab.test.jsx.snap index 89f219b..8ec2646 100644 --- a/src/components/Cars/Status/__snapshots__/ECUsTab.test.jsx.snap +++ b/src/components/Cars/Status/__snapshots__/ECUsTab.test.jsx.snap @@ -273,49 +273,94 @@ exports[`ECUsTab Render 1`] = ` class="MuiTableRow-root" > - ECUA + + ECUA + - SWVERSION + + SWVERSION + - HWVERSION + + HWVERSION + - VENDOR + + VENDOR + - SUPPLIER_SW_VERSION + + SUPPLIER_SW_VERSION + - SERIAL_NUMBER + + SERIAL_NUMBER + - BOOT_LOADER + + BOOT_LOADER + - CONFIG + + CONFIG + - FINGERPRINT + + FINGERPRINT + - ECUB + + ECUB + - SWVERSION + + SWVERSION + - HWVERSION + + HWVERSION + - - - - - CONFIG + + class="MuiTableCell-root MuiTableCell-body makeStyles-limitWidthTableCell-0 MuiTableCell-alignCenter" + > + + + + + + + + + + + CONFIG + + + + + diff --git a/src/components/Controls/CarECUsTable/index.jsx b/src/components/Controls/CarECUsTable/index.jsx index 1292e2c..af32ffc 100644 --- a/src/components/Controls/CarECUsTable/index.jsx +++ b/src/components/Controls/CarECUsTable/index.jsx @@ -4,7 +4,8 @@ import { TableCell, TableFooter, TablePagination, - TableRow + TableRow, + Tooltip } from "@material-ui/core"; import clsx from "clsx"; import React, { useEffect, useState } from "react"; @@ -136,7 +137,13 @@ const CarECUsTable = ({ vin, token, classes }) => { {tableColumns.map((column, j) => { const key = `${row.ecu + i}${column.id}` if (column.id === "updated_at") return ({LocalDateTimeString(row.updated)}); - return ({row[column.id]}); + return ( + + + {row[column.id]} + + + ); })} ))} diff --git a/src/components/useStyles.jsx b/src/components/useStyles.jsx index 1931093..edb09bc 100644 --- a/src/components/useStyles.jsx +++ b/src/components/useStyles.jsx @@ -288,7 +288,12 @@ const useStyles = makeStyles((theme) => ({ tableHeader: { textDecorationStyle: "solid", fontWeight:500, - } + }, + limitWidthTableCell: { + maxWidth: "200px", + whiteSpace: "normal", + wordWrap: "break-word", + }, })); export default useStyles; From e0315ba76e1d1fa9be2b98c151a63f0d89d5ee3a Mon Sep 17 00:00:00 2001 From: das31 <31259710+das31@users.noreply.github.com> Date: Tue, 25 Apr 2023 17:36:25 -0400 Subject: [PATCH 06/11] CEC-4126-update-manifest-migrate-button (#320) * CEC-4126-update-manifest-migrate-button * remove comment --------- Co-authored-by: John Wu <76966357+jwu-fisker@users.noreply.github.com> --- .env.cec-euprd | 1 + .env.cec-prd | 1 + .env.dev | 1 + .env.local | 1 + .env.prd | 1 + .env.stg | 1 + .env.template | 1 + src/components/Contexts/ManifestsContext.jsx | 16 +++++++++ src/components/Manifest/Update/index.jsx | 37 ++++++++++++++++++-- src/services/manifestsAPI.js | 11 ++++++ src/utils/roles.js | 4 +++ 11 files changed, 73 insertions(+), 2 deletions(-) diff --git a/.env.cec-euprd b/.env.cec-euprd index 81bef6f..0bcb8e9 100644 --- a/.env.cec-euprd +++ b/.env.cec-euprd @@ -14,4 +14,5 @@ REACT_APP_ROLE_DELETE=bfd1cccc-213a-4f31-b3d1-6e685976aec8 REACT_APP_ROLE_GENERATE_CERTIFICATE=9af2d8c0-c26d-4d6d-bbd1-ac53cbd37ebc REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69 REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8 +REACT_APP_ROLE_MANIFEST_MIGRATION=42798c8a-9fa7-4fb4-82c0-9582cabe364f REACT_APP_ECCKEY_ENV= diff --git a/.env.cec-prd b/.env.cec-prd index 2baee03..54ea7a8 100644 --- a/.env.cec-prd +++ b/.env.cec-prd @@ -14,4 +14,5 @@ REACT_APP_ROLE_DELETE=bfd1cccc-213a-4f31-b3d1-6e685976aec8 REACT_APP_ROLE_GENERATE_CERTIFICATE=9af2d8c0-c26d-4d6d-bbd1-ac53cbd37ebc REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69 REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8 +REACT_APP_ROLE_MANIFEST_MIGRATION=42798c8a-9fa7-4fb4-82c0-9582cabe364f REACT_APP_ECCKEY_ENV= diff --git a/.env.dev b/.env.dev index f4e1116..e08c37a 100644 --- a/.env.dev +++ b/.env.dev @@ -14,4 +14,5 @@ REACT_APP_ROLE_DELETE=8f78dce7-f5f9-4033-a10c-c9c7408bfcfe REACT_APP_ROLE_GENERATE_CERTIFICATE=746f34b0-9ba0-4b5d-8d84-0256a9c8e390 REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69 REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8 +REACT_APP_ROLE_MANIFEST_MIGRATION=42798c8a-9fa7-4fb4-82c0-9582cabe364f REACT_APP_ECCKEY_ENV=stage,prod diff --git a/.env.local b/.env.local index 94c1a10..c97b30e 100644 --- a/.env.local +++ b/.env.local @@ -14,4 +14,5 @@ REACT_APP_ROLE_DELETE=8f78dce7-f5f9-4033-a10c-c9c7408bfcfe REACT_APP_ROLE_GENERATE_CERTIFICATE=746f34b0-9ba0-4b5d-8d84-0256a9c8e390 REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69 REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8 +REACT_APP_ROLE_MANIFEST_MIGRATION=42798c8a-9fa7-4fb4-82c0-9582cabe364f REACT_APP_ECCKEY_ENV=dev,stage,prod diff --git a/.env.prd b/.env.prd index 11f4e91..4174e96 100644 --- a/.env.prd +++ b/.env.prd @@ -14,4 +14,5 @@ REACT_APP_ROLE_DELETE=8f78dce7-f5f9-4033-a10c-c9c7408bfcfe REACT_APP_ROLE_GENERATE_CERTIFICATE=746f34b0-9ba0-4b5d-8d84-0256a9c8e390 REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69 REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8 +REACT_APP_ROLE_MANIFEST_MIGRATION=42798c8a-9fa7-4fb4-82c0-9582cabe364f REACT_APP_ECCKEY_ENV=stage diff --git a/.env.stg b/.env.stg index 41c4529..8bb96c4 100644 --- a/.env.stg +++ b/.env.stg @@ -14,4 +14,5 @@ REACT_APP_ROLE_DELETE=8f78dce7-f5f9-4033-a10c-c9c7408bfcfe REACT_APP_ROLE_GENERATE_CERTIFICATE=746f34b0-9ba0-4b5d-8d84-0256a9c8e390 REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69 REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8 +REACT_APP_ROLE_MANIFEST_MIGRATION=42798c8a-9fa7-4fb4-82c0-9582cabe364f REACT_APP_ECCKEY_ENV=prod diff --git a/.env.template b/.env.template index 3ddd694..1cdf893 100644 --- a/.env.template +++ b/.env.template @@ -14,4 +14,5 @@ REACT_APP_ROLE_DELETE=8f78dce7-f5f9-4033-a10c-c9c7408bfcfe REACT_APP_ROLE_GENERATE_CERTIFICATE=746f34b0-9ba0-4b5d-8d84-0256a9c8e390 REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69 REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8 +REACT_APP_ROLE_MANIFEST_MIGRATION=42798c8a-9fa7-4fb4-82c0-9582cabe364f REACT_APP_ECCKEY_ENV=dev,stage,prod diff --git a/src/components/Contexts/ManifestsContext.jsx b/src/components/Contexts/ManifestsContext.jsx index 1acc9b7..8695122 100644 --- a/src/components/Contexts/ManifestsContext.jsx +++ b/src/components/Contexts/ManifestsContext.jsx @@ -80,12 +80,28 @@ export const ManifestsProvider = ({ children }) => { return result; }; + const migrateManifest = async (package_id, token) => { + let result; + + try{ + setBusy(true) + result = await api.migrateManifest(package_id, token) + if(result.error) + throw new Error(`failed to migrate manifest. ${result.message}`); + } finally { + setBusy(false) + } + return result + + } + return ( { const [manifest, setManifest] = useState(null); const [redirect, setRedirect] = useState(null); - const { getManifest, busy, updateManifest } = useManifestsContext(); + const { getManifest, busy, migrateManifest, updateManifest } = useManifestsContext(); const { token: { idToken: { jwtToken: token }, }, + groups, + providers, } = useUserContext(); const { setMessage, setTitle, setSitePath } = useStatusContext(); @@ -86,6 +90,17 @@ const MainForm = () => { } } + const manifestMigrate = async (e) => { + e.preventDefault(); + try{ + const result = await migrateManifest(manifest_id, token) + if (!result || result.error) return; + setMessage(`Manifest Migrated ${manifest_id}`) + } catch(e) { + setMessage(`Failed to update manifest ${manifest_id}`) + } + } + useEffect(() => { (async () => { try { @@ -179,6 +194,24 @@ const MainForm = () => { > {busy ? "Updating..." : "Update"} + + + @@ -191,4 +224,4 @@ const ManifestUpdate = () => ( ); -export default ManifestUpdate; \ No newline at end of file +export default ManifestUpdate; diff --git a/src/services/manifestsAPI.js b/src/services/manifestsAPI.js index 9091d97..8fbe7a8 100644 --- a/src/services/manifestsAPI.js +++ b/src/services/manifestsAPI.js @@ -78,6 +78,17 @@ const manifestsAPI = { }) .then(fetchRespHandler) .catch(errorHandler), + + migrateManifest: async (manifest_id, token) => + fetch(`${API_ENDPOINT}/manifestmigrate/${manifest_id}`,{ + method: "POST", + headers: Object.assign( + { "Content-Type": "application/json" }, + getAuthHeaderOptions(token) + ), + }) + .then(fetchRespHandler) + .catch(errorHandler), }; export default manifestsAPI; diff --git a/src/utils/roles.js b/src/utils/roles.js index 68a4783..4875da4 100644 --- a/src/utils/roles.js +++ b/src/utils/roles.js @@ -8,6 +8,7 @@ export const Roles = { APPROVESUPPLIERS: process.env.REACT_APP_ROLE_SUPPLIER_APPROVER, MANUFACTURE: process.env.REACT_APP_ROLE_MANUFACTURE, MAGNAGROUP: process.env.REACT_APP_MAGNA_GROUP_ID, + MANIFEST_MIGRATION: process.env.REACT_APP_ROLE_MANIFEST_MIGRATION }; export const Providers = { @@ -94,4 +95,7 @@ export const Permissions = { [Providers.FISKER_QA]: [Roles.MANUFACTURE], [Providers.MAGNA]: [Roles.MAGNAGROUP], }, + ManifestMigration: { + [Providers.FISKER]: [Roles.MANIFEST_MIGRATION] + } }; From cc1922008e38922df741b81ff04f7322979f73a9 Mon Sep 17 00:00:00 2001 From: John Wu <76966357+jwu-fisker@users.noreply.github.com> Date: Wed, 26 Apr 2023 13:09:52 -0700 Subject: [PATCH 07/11] CEC-4178 Handle car update send event (#323) --- src/components/Controls/CarUpdateStatusProgress/Statuses.js | 1 + src/components/Controls/CarUpdateStatusProgress/index.jsx | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/Controls/CarUpdateStatusProgress/Statuses.js b/src/components/Controls/CarUpdateStatusProgress/Statuses.js index b01c659..fc9be48 100644 --- a/src/components/Controls/CarUpdateStatusProgress/Statuses.js +++ b/src/components/Controls/CarUpdateStatusProgress/Statuses.js @@ -1,5 +1,6 @@ const Statuses = { Pending: "pending", + Sent: "sent", ManifestReceived: "manifest_received", ManifestAccepted: "manifest_accepted", ManifestRejected: "manifest_rejected", diff --git a/src/components/Controls/CarUpdateStatusProgress/index.jsx b/src/components/Controls/CarUpdateStatusProgress/index.jsx index 103eeaf..2131b30 100644 --- a/src/components/Controls/CarUpdateStatusProgress/index.jsx +++ b/src/components/Controls/CarUpdateStatusProgress/index.jsx @@ -1,7 +1,7 @@ -import React, { useState, useEffect } from "react"; -import { CheckCircle, RadioButtonUnchecked, Error } from "@material-ui/icons"; import Typography from "@material-ui/core/Typography"; +import { CheckCircle, Error, RadioButtonUnchecked } from "@material-ui/icons"; import clsx from "clsx"; +import React, { useEffect, useState } from "react"; import CircularProgress from "../CircularProgress"; import s from "./Statuses"; @@ -13,7 +13,7 @@ const CompleteStatus = 100; const PHASES = [ { label: "Pending", - events: [s.Pending], + events: [s.Pending, s.Sent], progress: () => CompleteStatus, }, { From 05b8e9fc3d2b97ec3aaba77579c74761c6ca20e6 Mon Sep 17 00:00:00 2001 From: Alexander Andrews <45926661+alexander-e-andrews@users.noreply.github.com> Date: Fri, 28 Apr 2023 13:14:39 -0400 Subject: [PATCH 08/11] CEC-4231: Link to superset portal (#324) * CEC-4231: Link to superset portal * Update snapshots --------- Co-authored-by: jwu-fisker --- .env.local | 2 +- .../App/__snapshots__/App.test.js.snap | 1410 ++++++----------- src/components/Layouts/SideMenu.jsx | 6 +- .../__snapshots__/SideMenu.test.jsx.snap | 188 +-- 4 files changed, 563 insertions(+), 1043 deletions(-) diff --git a/.env.local b/.env.local index c97b30e..71f52ab 100644 --- a/.env.local +++ b/.env.local @@ -7,7 +7,7 @@ REACT_APP_MAGNA_GROUP_ID=68273225-9da4-4fa7-aea5-38e16ec471fe REACT_APP_OTA_SERVICE_URL=http://localhost/ota_update REACT_APP_SECURITY_DLL_URL=https://assets.fiskerdps.com/cloud-supplier/fisker_security_32.dll REACT_APP_SECURITY_DLL_64_URL=https://assets.fiskerdps.com/cloud-supplier/fisker_security_64.dll -REACT_APP_SUPERSET_URL=https://dev-superset-new.cloud.fiskerinc.com +REACT_APP_SUPERSET_URL=https://dev-superset.cloud.fiskerinc.com REACT_APP_ROLE_CREATE=efcc3025-e2d8-4212-8227-805c7be39d2c REACT_APP_ROLE_READ_ONLY=a729bbd4-2038-4649-9127-16782bb1e701 REACT_APP_ROLE_DELETE=8f78dce7-f5f9-4033-a10c-c9c7408bfcfe diff --git a/src/components/App/__snapshots__/App.test.js.snap b/src/components/App/__snapshots__/App.test.js.snap index b3d9ca4..cbeb84b 100644 --- a/src/components/App/__snapshots__/App.test.js.snap +++ b/src/components/App/__snapshots__/App.test.js.snap @@ -269,72 +269,44 @@ exports[`App Route / authenticated 1`] = ` /> - -
  • +
  • +
    - -
    - - Datascope - -
    - + +
    -
    -
  • -
    -