Add updates by car screen and modal popup (#29)
This commit is contained in:
@@ -6,17 +6,17 @@ exports[`App Route / authenticated 1`] = `
|
|||||||
data-testid="mocked-userprovider"
|
data-testid="mocked-userprovider"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-root-90"
|
class="makeStyles-root-104"
|
||||||
>
|
>
|
||||||
<header
|
<header
|
||||||
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-91 makeStyles-appBarShift-92 mui-fixed MuiPaper-elevation4"
|
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-105 makeStyles-appBarShift-106 mui-fixed MuiPaper-elevation4"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
aria-label="open drawer"
|
aria-label="open drawer"
|
||||||
class="MuiButtonBase-root MuiIconButton-root makeStyles-menuButton-93 MuiIconButton-colorInherit MuiIconButton-edgeStart"
|
class="MuiButtonBase-root MuiIconButton-root makeStyles-menuButton-107 MuiIconButton-colorInherit MuiIconButton-edgeStart"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
type="button"
|
type="button"
|
||||||
>
|
>
|
||||||
@@ -44,7 +44,7 @@ exports[`App Route / authenticated 1`] = `
|
|||||||
Fisker OTA Portal
|
Fisker OTA Portal
|
||||||
</h6>
|
</h6>
|
||||||
<button
|
<button
|
||||||
class="MuiButtonBase-root MuiButton-root MuiButton-text makeStyles-rightToolbar-100 MuiButton-colorInherit"
|
class="MuiButtonBase-root MuiButton-root MuiButton-text makeStyles-rightToolbar-114 MuiButton-colorInherit"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
type="button"
|
type="button"
|
||||||
>
|
>
|
||||||
@@ -60,13 +60,13 @@ exports[`App Route / authenticated 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<div
|
<div
|
||||||
class="MuiDrawer-root MuiDrawer-docked makeStyles-drawer-95"
|
class="MuiDrawer-root MuiDrawer-docked makeStyles-drawer-109"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="MuiPaper-root MuiDrawer-paper makeStyles-drawerPaper-96 MuiDrawer-paperAnchorLeft MuiDrawer-paperAnchorDockedLeft MuiPaper-elevation0"
|
class="MuiPaper-root MuiDrawer-paper makeStyles-drawerPaper-110 MuiDrawer-paperAnchorLeft MuiDrawer-paperAnchorDockedLeft MuiPaper-elevation0"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-drawerHeader-97"
|
class="makeStyles-drawerHeader-111"
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
class="MuiButtonBase-root MuiIconButton-root"
|
class="MuiButtonBase-root MuiIconButton-root"
|
||||||
@@ -212,16 +212,16 @@ exports[`App Route / authenticated 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<main
|
<main
|
||||||
class="makeStyles-content-98 makeStyles-contentShift-99"
|
class="makeStyles-content-112 makeStyles-contentShift-113"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-drawerHeader-97"
|
class="makeStyles-drawerHeader-111"
|
||||||
/>
|
/>
|
||||||
<main
|
<main
|
||||||
class="MuiContainer-root MuiContainer-maxWidthLg"
|
class="MuiContainer-root MuiContainer-maxWidthLg"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-paper-81"
|
class="makeStyles-paper-95"
|
||||||
>
|
>
|
||||||
<h1
|
<h1
|
||||||
class="MuiTypography-root MuiTypography-h5"
|
class="MuiTypography-root MuiTypography-h5"
|
||||||
@@ -242,10 +242,10 @@ exports[`App Route / unauthenticated 1`] = `
|
|||||||
data-testid="mocked-userprovider"
|
data-testid="mocked-userprovider"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-root-10"
|
class="makeStyles-root-12"
|
||||||
>
|
>
|
||||||
<header
|
<header
|
||||||
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-11 mui-fixed MuiPaper-elevation4"
|
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-13 mui-fixed MuiPaper-elevation4"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
||||||
@@ -258,21 +258,21 @@ exports[`App Route / unauthenticated 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<main
|
<main
|
||||||
class="makeStyles-content-18"
|
class="makeStyles-content-20"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-drawerHeader-17"
|
class="makeStyles-drawerHeader-19"
|
||||||
/>
|
/>
|
||||||
<main
|
<main
|
||||||
class="MuiContainer-root MuiContainer-maxWidthLg"
|
class="MuiContainer-root MuiContainer-maxWidthLg"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-paper-1"
|
class="makeStyles-paper-3"
|
||||||
style="justify-content: center;"
|
style="justify-content: center;"
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
aria-disabled="false"
|
aria-disabled="false"
|
||||||
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-4 MuiButton-containedPrimary"
|
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-6 MuiButton-containedPrimary"
|
||||||
href="https://cognito.com/authorize?redirect=https://example.com/callback"
|
href="https://cognito.com/authorize?redirect=https://example.com/callback"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
@@ -299,17 +299,17 @@ exports[`App Route /home authenticated 1`] = `
|
|||||||
data-testid="mocked-userprovider"
|
data-testid="mocked-userprovider"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-root-110"
|
class="makeStyles-root-127"
|
||||||
>
|
>
|
||||||
<header
|
<header
|
||||||
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-111 makeStyles-appBarShift-112 mui-fixed MuiPaper-elevation4"
|
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-128 makeStyles-appBarShift-129 mui-fixed MuiPaper-elevation4"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
aria-label="open drawer"
|
aria-label="open drawer"
|
||||||
class="MuiButtonBase-root MuiIconButton-root makeStyles-menuButton-113 MuiIconButton-colorInherit MuiIconButton-edgeStart"
|
class="MuiButtonBase-root MuiIconButton-root makeStyles-menuButton-130 MuiIconButton-colorInherit MuiIconButton-edgeStart"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
type="button"
|
type="button"
|
||||||
>
|
>
|
||||||
@@ -337,7 +337,7 @@ exports[`App Route /home authenticated 1`] = `
|
|||||||
Fisker OTA Portal
|
Fisker OTA Portal
|
||||||
</h6>
|
</h6>
|
||||||
<button
|
<button
|
||||||
class="MuiButtonBase-root MuiButton-root MuiButton-text makeStyles-rightToolbar-120 MuiButton-colorInherit"
|
class="MuiButtonBase-root MuiButton-root MuiButton-text makeStyles-rightToolbar-137 MuiButton-colorInherit"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
type="button"
|
type="button"
|
||||||
>
|
>
|
||||||
@@ -353,13 +353,13 @@ exports[`App Route /home authenticated 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<div
|
<div
|
||||||
class="MuiDrawer-root MuiDrawer-docked makeStyles-drawer-115"
|
class="MuiDrawer-root MuiDrawer-docked makeStyles-drawer-132"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="MuiPaper-root MuiDrawer-paper makeStyles-drawerPaper-116 MuiDrawer-paperAnchorLeft MuiDrawer-paperAnchorDockedLeft MuiPaper-elevation0"
|
class="MuiPaper-root MuiDrawer-paper makeStyles-drawerPaper-133 MuiDrawer-paperAnchorLeft MuiDrawer-paperAnchorDockedLeft MuiPaper-elevation0"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-drawerHeader-117"
|
class="makeStyles-drawerHeader-134"
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
class="MuiButtonBase-root MuiIconButton-root"
|
class="MuiButtonBase-root MuiIconButton-root"
|
||||||
@@ -505,16 +505,16 @@ exports[`App Route /home authenticated 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<main
|
<main
|
||||||
class="makeStyles-content-118 makeStyles-contentShift-119"
|
class="makeStyles-content-135 makeStyles-contentShift-136"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-drawerHeader-117"
|
class="makeStyles-drawerHeader-134"
|
||||||
/>
|
/>
|
||||||
<main
|
<main
|
||||||
class="MuiContainer-root MuiContainer-maxWidthLg"
|
class="MuiContainer-root MuiContainer-maxWidthLg"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-paper-101"
|
class="makeStyles-paper-118"
|
||||||
>
|
>
|
||||||
<h1
|
<h1
|
||||||
class="MuiTypography-root MuiTypography-h5"
|
class="MuiTypography-root MuiTypography-h5"
|
||||||
@@ -535,10 +535,10 @@ exports[`App Route /home unauthenticated 1`] = `
|
|||||||
data-testid="mocked-userprovider"
|
data-testid="mocked-userprovider"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-root-30"
|
class="makeStyles-root-35"
|
||||||
>
|
>
|
||||||
<header
|
<header
|
||||||
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-31 mui-fixed MuiPaper-elevation4"
|
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-36 mui-fixed MuiPaper-elevation4"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
||||||
@@ -551,21 +551,21 @@ exports[`App Route /home unauthenticated 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<main
|
<main
|
||||||
class="makeStyles-content-38"
|
class="makeStyles-content-43"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-drawerHeader-37"
|
class="makeStyles-drawerHeader-42"
|
||||||
/>
|
/>
|
||||||
<main
|
<main
|
||||||
class="MuiContainer-root MuiContainer-maxWidthLg"
|
class="MuiContainer-root MuiContainer-maxWidthLg"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-paper-21"
|
class="makeStyles-paper-26"
|
||||||
style="justify-content: center;"
|
style="justify-content: center;"
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
aria-disabled="false"
|
aria-disabled="false"
|
||||||
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-24 MuiButton-containedPrimary"
|
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-29 MuiButton-containedPrimary"
|
||||||
href="https://cognito.com/authorize?redirect=https://example.com/callback"
|
href="https://cognito.com/authorize?redirect=https://example.com/callback"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
@@ -592,17 +592,17 @@ exports[`App Route /package-upload authenticated 1`] = `
|
|||||||
data-testid="mocked-userprovider"
|
data-testid="mocked-userprovider"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-root-130"
|
class="makeStyles-root-150"
|
||||||
>
|
>
|
||||||
<header
|
<header
|
||||||
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-131 makeStyles-appBarShift-132 mui-fixed MuiPaper-elevation4"
|
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-151 makeStyles-appBarShift-152 mui-fixed MuiPaper-elevation4"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
aria-label="open drawer"
|
aria-label="open drawer"
|
||||||
class="MuiButtonBase-root MuiIconButton-root makeStyles-menuButton-133 MuiIconButton-colorInherit MuiIconButton-edgeStart"
|
class="MuiButtonBase-root MuiIconButton-root makeStyles-menuButton-153 MuiIconButton-colorInherit MuiIconButton-edgeStart"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
type="button"
|
type="button"
|
||||||
>
|
>
|
||||||
@@ -630,7 +630,7 @@ exports[`App Route /package-upload authenticated 1`] = `
|
|||||||
Fisker OTA Portal
|
Fisker OTA Portal
|
||||||
</h6>
|
</h6>
|
||||||
<button
|
<button
|
||||||
class="MuiButtonBase-root MuiButton-root MuiButton-text makeStyles-rightToolbar-140 MuiButton-colorInherit"
|
class="MuiButtonBase-root MuiButton-root MuiButton-text makeStyles-rightToolbar-160 MuiButton-colorInherit"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
type="button"
|
type="button"
|
||||||
>
|
>
|
||||||
@@ -646,13 +646,13 @@ exports[`App Route /package-upload authenticated 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<div
|
<div
|
||||||
class="MuiDrawer-root MuiDrawer-docked makeStyles-drawer-135"
|
class="MuiDrawer-root MuiDrawer-docked makeStyles-drawer-155"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="MuiPaper-root MuiDrawer-paper makeStyles-drawerPaper-136 MuiDrawer-paperAnchorLeft MuiDrawer-paperAnchorDockedLeft MuiPaper-elevation0"
|
class="MuiPaper-root MuiDrawer-paper makeStyles-drawerPaper-156 MuiDrawer-paperAnchorLeft MuiDrawer-paperAnchorDockedLeft MuiPaper-elevation0"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-drawerHeader-137"
|
class="makeStyles-drawerHeader-157"
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
class="MuiButtonBase-root MuiIconButton-root"
|
class="MuiButtonBase-root MuiIconButton-root"
|
||||||
@@ -798,10 +798,10 @@ exports[`App Route /package-upload authenticated 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<main
|
<main
|
||||||
class="makeStyles-content-138 makeStyles-contentShift-139"
|
class="makeStyles-content-158 makeStyles-contentShift-159"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-drawerHeader-137"
|
class="makeStyles-drawerHeader-157"
|
||||||
/>
|
/>
|
||||||
<main
|
<main
|
||||||
class="MuiContainer-root MuiContainer-maxWidthLg"
|
class="MuiContainer-root MuiContainer-maxWidthLg"
|
||||||
@@ -810,7 +810,7 @@ exports[`App Route /package-upload authenticated 1`] = `
|
|||||||
data-testid="mocked-fileuploadprovider"
|
data-testid="mocked-fileuploadprovider"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-paper-121"
|
class="makeStyles-paper-141"
|
||||||
>
|
>
|
||||||
<h1
|
<h1
|
||||||
class="MuiTypography-root MuiTypography-h5"
|
class="MuiTypography-root MuiTypography-h5"
|
||||||
@@ -819,7 +819,7 @@ exports[`App Route /package-upload authenticated 1`] = `
|
|||||||
</h1>
|
</h1>
|
||||||
<form
|
<form
|
||||||
action="{onSubmit}"
|
action="{onSubmit}"
|
||||||
class="makeStyles-form-123"
|
class="makeStyles-form-143"
|
||||||
novalidate=""
|
novalidate=""
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
@@ -855,10 +855,10 @@ exports[`App Route /package-upload authenticated 1`] = `
|
|||||||
/>
|
/>
|
||||||
<fieldset
|
<fieldset
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
class="PrivateNotchedOutline-root-141 MuiOutlinedInput-notchedOutline"
|
class="PrivateNotchedOutline-root-162 MuiOutlinedInput-notchedOutline"
|
||||||
>
|
>
|
||||||
<legend
|
<legend
|
||||||
class="PrivateNotchedOutline-legendLabelled-143"
|
class="PrivateNotchedOutline-legendLabelled-164"
|
||||||
>
|
>
|
||||||
<span>
|
<span>
|
||||||
Package name
|
Package name
|
||||||
@@ -901,10 +901,10 @@ exports[`App Route /package-upload authenticated 1`] = `
|
|||||||
/>
|
/>
|
||||||
<fieldset
|
<fieldset
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
class="PrivateNotchedOutline-root-141 MuiOutlinedInput-notchedOutline"
|
class="PrivateNotchedOutline-root-162 MuiOutlinedInput-notchedOutline"
|
||||||
>
|
>
|
||||||
<legend
|
<legend
|
||||||
class="PrivateNotchedOutline-legendLabelled-143"
|
class="PrivateNotchedOutline-legendLabelled-164"
|
||||||
>
|
>
|
||||||
<span>
|
<span>
|
||||||
Version
|
Version
|
||||||
@@ -939,10 +939,10 @@ exports[`App Route /package-upload authenticated 1`] = `
|
|||||||
/>
|
/>
|
||||||
<fieldset
|
<fieldset
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
class="PrivateNotchedOutline-root-141 MuiOutlinedInput-notchedOutline"
|
class="PrivateNotchedOutline-root-162 MuiOutlinedInput-notchedOutline"
|
||||||
>
|
>
|
||||||
<legend
|
<legend
|
||||||
class="PrivateNotchedOutline-legendLabelled-143"
|
class="PrivateNotchedOutline-legendLabelled-164"
|
||||||
>
|
>
|
||||||
<span>
|
<span>
|
||||||
Description
|
Description
|
||||||
@@ -977,10 +977,10 @@ exports[`App Route /package-upload authenticated 1`] = `
|
|||||||
/>
|
/>
|
||||||
<fieldset
|
<fieldset
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
class="PrivateNotchedOutline-root-141 MuiOutlinedInput-notchedOutline"
|
class="PrivateNotchedOutline-root-162 MuiOutlinedInput-notchedOutline"
|
||||||
>
|
>
|
||||||
<legend
|
<legend
|
||||||
class="PrivateNotchedOutline-legendLabelled-143"
|
class="PrivateNotchedOutline-legendLabelled-164"
|
||||||
>
|
>
|
||||||
<span>
|
<span>
|
||||||
Release Notes URL
|
Release Notes URL
|
||||||
@@ -1021,7 +1021,7 @@ exports[`App Route /package-upload authenticated 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-124 MuiButton-containedPrimary MuiButton-fullWidth"
|
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-144 MuiButton-containedPrimary MuiButton-fullWidth"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
@@ -1050,10 +1050,10 @@ exports[`App Route /package-upload unauthenticated 1`] = `
|
|||||||
data-testid="mocked-userprovider"
|
data-testid="mocked-userprovider"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-root-50"
|
class="makeStyles-root-58"
|
||||||
>
|
>
|
||||||
<header
|
<header
|
||||||
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-51 mui-fixed MuiPaper-elevation4"
|
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-59 mui-fixed MuiPaper-elevation4"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
||||||
@@ -1066,21 +1066,21 @@ exports[`App Route /package-upload unauthenticated 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<main
|
<main
|
||||||
class="makeStyles-content-58"
|
class="makeStyles-content-66"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-drawerHeader-57"
|
class="makeStyles-drawerHeader-65"
|
||||||
/>
|
/>
|
||||||
<main
|
<main
|
||||||
class="MuiContainer-root MuiContainer-maxWidthLg"
|
class="MuiContainer-root MuiContainer-maxWidthLg"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-paper-41"
|
class="makeStyles-paper-49"
|
||||||
style="justify-content: center;"
|
style="justify-content: center;"
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
aria-disabled="false"
|
aria-disabled="false"
|
||||||
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-44 MuiButton-containedPrimary"
|
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-52 MuiButton-containedPrimary"
|
||||||
href="https://cognito.com/authorize?redirect=https://example.com/callback"
|
href="https://cognito.com/authorize?redirect=https://example.com/callback"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
@@ -1107,17 +1107,17 @@ exports[`App Route /page-not-found authenticated 1`] = `
|
|||||||
data-testid="mocked-userprovider"
|
data-testid="mocked-userprovider"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-root-198"
|
class="makeStyles-root-227"
|
||||||
>
|
>
|
||||||
<header
|
<header
|
||||||
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-199 makeStyles-appBarShift-200 mui-fixed MuiPaper-elevation4"
|
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-228 makeStyles-appBarShift-229 mui-fixed MuiPaper-elevation4"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
aria-label="open drawer"
|
aria-label="open drawer"
|
||||||
class="MuiButtonBase-root MuiIconButton-root makeStyles-menuButton-201 MuiIconButton-colorInherit MuiIconButton-edgeStart"
|
class="MuiButtonBase-root MuiIconButton-root makeStyles-menuButton-230 MuiIconButton-colorInherit MuiIconButton-edgeStart"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
type="button"
|
type="button"
|
||||||
>
|
>
|
||||||
@@ -1145,7 +1145,7 @@ exports[`App Route /page-not-found authenticated 1`] = `
|
|||||||
Fisker OTA Portal
|
Fisker OTA Portal
|
||||||
</h6>
|
</h6>
|
||||||
<button
|
<button
|
||||||
class="MuiButtonBase-root MuiButton-root MuiButton-text makeStyles-rightToolbar-208 MuiButton-colorInherit"
|
class="MuiButtonBase-root MuiButton-root MuiButton-text makeStyles-rightToolbar-237 MuiButton-colorInherit"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
type="button"
|
type="button"
|
||||||
>
|
>
|
||||||
@@ -1161,13 +1161,13 @@ exports[`App Route /page-not-found authenticated 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<div
|
<div
|
||||||
class="MuiDrawer-root MuiDrawer-docked makeStyles-drawer-203"
|
class="MuiDrawer-root MuiDrawer-docked makeStyles-drawer-232"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="MuiPaper-root MuiDrawer-paper makeStyles-drawerPaper-204 MuiDrawer-paperAnchorLeft MuiDrawer-paperAnchorDockedLeft MuiPaper-elevation0"
|
class="MuiPaper-root MuiDrawer-paper makeStyles-drawerPaper-233 MuiDrawer-paperAnchorLeft MuiDrawer-paperAnchorDockedLeft MuiPaper-elevation0"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-drawerHeader-205"
|
class="makeStyles-drawerHeader-234"
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
class="MuiButtonBase-root MuiIconButton-root"
|
class="MuiButtonBase-root MuiIconButton-root"
|
||||||
@@ -1313,16 +1313,16 @@ exports[`App Route /page-not-found authenticated 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<main
|
<main
|
||||||
class="makeStyles-content-206 makeStyles-contentShift-207"
|
class="makeStyles-content-235 makeStyles-contentShift-236"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-drawerHeader-205"
|
class="makeStyles-drawerHeader-234"
|
||||||
/>
|
/>
|
||||||
<main
|
<main
|
||||||
class="MuiContainer-root MuiContainer-maxWidthLg"
|
class="MuiContainer-root MuiContainer-maxWidthLg"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-paper-189"
|
class="makeStyles-paper-218"
|
||||||
>
|
>
|
||||||
<h1
|
<h1
|
||||||
class="MuiTypography-root MuiTypography-h2"
|
class="MuiTypography-root MuiTypography-h2"
|
||||||
@@ -1343,10 +1343,10 @@ exports[`App Route /page-not-found unauthenticated 1`] = `
|
|||||||
data-testid="mocked-userprovider"
|
data-testid="mocked-userprovider"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-root-178"
|
class="makeStyles-root-204"
|
||||||
>
|
>
|
||||||
<header
|
<header
|
||||||
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-179 mui-fixed MuiPaper-elevation4"
|
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-205 mui-fixed MuiPaper-elevation4"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
||||||
@@ -1359,16 +1359,16 @@ exports[`App Route /page-not-found unauthenticated 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<main
|
<main
|
||||||
class="makeStyles-content-186"
|
class="makeStyles-content-212"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-drawerHeader-185"
|
class="makeStyles-drawerHeader-211"
|
||||||
/>
|
/>
|
||||||
<main
|
<main
|
||||||
class="MuiContainer-root MuiContainer-maxWidthLg"
|
class="MuiContainer-root MuiContainer-maxWidthLg"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-paper-169"
|
class="makeStyles-paper-195"
|
||||||
>
|
>
|
||||||
<h1
|
<h1
|
||||||
class="MuiTypography-root MuiTypography-h2"
|
class="MuiTypography-root MuiTypography-h2"
|
||||||
@@ -1389,17 +1389,17 @@ exports[`App Route /vehicle-add authenticated 1`] = `
|
|||||||
data-testid="mocked-userprovider"
|
data-testid="mocked-userprovider"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-root-154"
|
class="makeStyles-root-177"
|
||||||
>
|
>
|
||||||
<header
|
<header
|
||||||
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-155 makeStyles-appBarShift-156 mui-fixed MuiPaper-elevation4"
|
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-178 makeStyles-appBarShift-179 mui-fixed MuiPaper-elevation4"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
aria-label="open drawer"
|
aria-label="open drawer"
|
||||||
class="MuiButtonBase-root MuiIconButton-root makeStyles-menuButton-157 MuiIconButton-colorInherit MuiIconButton-edgeStart"
|
class="MuiButtonBase-root MuiIconButton-root makeStyles-menuButton-180 MuiIconButton-colorInherit MuiIconButton-edgeStart"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
type="button"
|
type="button"
|
||||||
>
|
>
|
||||||
@@ -1427,7 +1427,7 @@ exports[`App Route /vehicle-add authenticated 1`] = `
|
|||||||
Fisker OTA Portal
|
Fisker OTA Portal
|
||||||
</h6>
|
</h6>
|
||||||
<button
|
<button
|
||||||
class="MuiButtonBase-root MuiButton-root MuiButton-text makeStyles-rightToolbar-164 MuiButton-colorInherit"
|
class="MuiButtonBase-root MuiButton-root MuiButton-text makeStyles-rightToolbar-187 MuiButton-colorInherit"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
type="button"
|
type="button"
|
||||||
>
|
>
|
||||||
@@ -1443,13 +1443,13 @@ exports[`App Route /vehicle-add authenticated 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<div
|
<div
|
||||||
class="MuiDrawer-root MuiDrawer-docked makeStyles-drawer-159"
|
class="MuiDrawer-root MuiDrawer-docked makeStyles-drawer-182"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="MuiPaper-root MuiDrawer-paper makeStyles-drawerPaper-160 MuiDrawer-paperAnchorLeft MuiDrawer-paperAnchorDockedLeft MuiPaper-elevation0"
|
class="MuiPaper-root MuiDrawer-paper makeStyles-drawerPaper-183 MuiDrawer-paperAnchorLeft MuiDrawer-paperAnchorDockedLeft MuiPaper-elevation0"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-drawerHeader-161"
|
class="makeStyles-drawerHeader-184"
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
class="MuiButtonBase-root MuiIconButton-root"
|
class="MuiButtonBase-root MuiIconButton-root"
|
||||||
@@ -1595,10 +1595,10 @@ exports[`App Route /vehicle-add authenticated 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<main
|
<main
|
||||||
class="makeStyles-content-162 makeStyles-contentShift-163"
|
class="makeStyles-content-185 makeStyles-contentShift-186"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-drawerHeader-161"
|
class="makeStyles-drawerHeader-184"
|
||||||
/>
|
/>
|
||||||
<main
|
<main
|
||||||
class="MuiContainer-root MuiContainer-maxWidthLg"
|
class="MuiContainer-root MuiContainer-maxWidthLg"
|
||||||
@@ -1607,7 +1607,7 @@ exports[`App Route /vehicle-add authenticated 1`] = `
|
|||||||
data-testid="mocked-vehicleprovider"
|
data-testid="mocked-vehicleprovider"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-paper-145"
|
class="makeStyles-paper-168"
|
||||||
>
|
>
|
||||||
<h1
|
<h1
|
||||||
class="MuiTypography-root MuiTypography-h5"
|
class="MuiTypography-root MuiTypography-h5"
|
||||||
@@ -1616,7 +1616,7 @@ exports[`App Route /vehicle-add authenticated 1`] = `
|
|||||||
</h1>
|
</h1>
|
||||||
<form
|
<form
|
||||||
action="{onSubmit}"
|
action="{onSubmit}"
|
||||||
class="makeStyles-form-147"
|
class="makeStyles-form-170"
|
||||||
novalidate=""
|
novalidate=""
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
@@ -1652,10 +1652,10 @@ exports[`App Route /vehicle-add authenticated 1`] = `
|
|||||||
/>
|
/>
|
||||||
<fieldset
|
<fieldset
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
class="PrivateNotchedOutline-root-165 MuiOutlinedInput-notchedOutline"
|
class="PrivateNotchedOutline-root-189 MuiOutlinedInput-notchedOutline"
|
||||||
>
|
>
|
||||||
<legend
|
<legend
|
||||||
class="PrivateNotchedOutline-legendLabelled-167"
|
class="PrivateNotchedOutline-legendLabelled-191"
|
||||||
>
|
>
|
||||||
<span>
|
<span>
|
||||||
VIN
|
VIN
|
||||||
@@ -1698,10 +1698,10 @@ exports[`App Route /vehicle-add authenticated 1`] = `
|
|||||||
/>
|
/>
|
||||||
<fieldset
|
<fieldset
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
class="PrivateNotchedOutline-root-165 MuiOutlinedInput-notchedOutline"
|
class="PrivateNotchedOutline-root-189 MuiOutlinedInput-notchedOutline"
|
||||||
>
|
>
|
||||||
<legend
|
<legend
|
||||||
class="PrivateNotchedOutline-legendLabelled-167 PrivateNotchedOutline-legendNotched-168"
|
class="PrivateNotchedOutline-legendLabelled-191 PrivateNotchedOutline-legendNotched-192"
|
||||||
>
|
>
|
||||||
<span>
|
<span>
|
||||||
Model
|
Model
|
||||||
@@ -1745,10 +1745,10 @@ exports[`App Route /vehicle-add authenticated 1`] = `
|
|||||||
/>
|
/>
|
||||||
<fieldset
|
<fieldset
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
class="PrivateNotchedOutline-root-165 MuiOutlinedInput-notchedOutline"
|
class="PrivateNotchedOutline-root-189 MuiOutlinedInput-notchedOutline"
|
||||||
>
|
>
|
||||||
<legend
|
<legend
|
||||||
class="PrivateNotchedOutline-legendLabelled-167 PrivateNotchedOutline-legendNotched-168"
|
class="PrivateNotchedOutline-legendLabelled-191 PrivateNotchedOutline-legendNotched-192"
|
||||||
>
|
>
|
||||||
<span>
|
<span>
|
||||||
Year
|
Year
|
||||||
@@ -1759,7 +1759,7 @@ exports[`App Route /vehicle-add authenticated 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-148 MuiButton-containedPrimary MuiButton-fullWidth"
|
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-171 MuiButton-containedPrimary MuiButton-fullWidth"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
@@ -1788,10 +1788,10 @@ exports[`App Route /vehicle-add unauthenticated 1`] = `
|
|||||||
data-testid="mocked-userprovider"
|
data-testid="mocked-userprovider"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-root-70"
|
class="makeStyles-root-81"
|
||||||
>
|
>
|
||||||
<header
|
<header
|
||||||
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-71 mui-fixed MuiPaper-elevation4"
|
class="MuiPaper-root MuiAppBar-root MuiAppBar-positionFixed MuiAppBar-colorPrimary makeStyles-appBar-82 mui-fixed MuiPaper-elevation4"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
class="MuiToolbar-root MuiToolbar-regular MuiToolbar-gutters"
|
||||||
@@ -1804,21 +1804,21 @@ exports[`App Route /vehicle-add unauthenticated 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<main
|
<main
|
||||||
class="makeStyles-content-78"
|
class="makeStyles-content-89"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-drawerHeader-77"
|
class="makeStyles-drawerHeader-88"
|
||||||
/>
|
/>
|
||||||
<main
|
<main
|
||||||
class="MuiContainer-root MuiContainer-maxWidthLg"
|
class="MuiContainer-root MuiContainer-maxWidthLg"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-paper-61"
|
class="makeStyles-paper-72"
|
||||||
style="justify-content: center;"
|
style="justify-content: center;"
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
aria-disabled="false"
|
aria-disabled="false"
|
||||||
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-64 MuiButton-containedPrimary"
|
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-75 MuiButton-containedPrimary"
|
||||||
href="https://cognito.com/authorize?redirect=https://example.com/callback"
|
href="https://cognito.com/authorize?redirect=https://example.com/callback"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -20,12 +20,15 @@ import { useUserContext } from "../../Contexts/UserContext";
|
|||||||
import { useStatusContext } from "../../Contexts/StatusContext";
|
import { useStatusContext } from "../../Contexts/StatusContext";
|
||||||
import useStyles from "../../useStyles";
|
import useStyles from "../../useStyles";
|
||||||
import { LocalDateTimeString } from "../../../utils/dates";
|
import { LocalDateTimeString } from "../../../utils/dates";
|
||||||
|
import VehicleStatus from "../../Cars/StatusModal";
|
||||||
|
|
||||||
const MainForm = () => {
|
const MainForm = () => {
|
||||||
const { packageid } = useParams();
|
const { packageid } = useParams();
|
||||||
const classes = useStyles();
|
const classes = useStyles();
|
||||||
const [pageSize, setPageSize] = useState(10);
|
const [pageSize, setPageSize] = useState(10);
|
||||||
const [pageIndex, setPageIndex] = useState(0);
|
const [pageIndex, setPageIndex] = useState(0);
|
||||||
|
const [viewVIN, setViewVIN] = useState(null);
|
||||||
|
|
||||||
const {
|
const {
|
||||||
getCarUpdates,
|
getCarUpdates,
|
||||||
carUpdates,
|
carUpdates,
|
||||||
@@ -74,6 +77,15 @@ const MainForm = () => {
|
|||||||
setPageIndex(0);
|
setPageIndex(0);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleViewVIN = (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
setViewVIN(event.target.innerHTML);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleCloseViewVIN = (event) => {
|
||||||
|
setViewVIN(null);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={classes.paper} style={{ height: 700, width: "100%" }}>
|
<div className={classes.paper} style={{ height: 700, width: "100%" }}>
|
||||||
<Typography component="h1" variant="h5">
|
<Typography component="h1" variant="h5">
|
||||||
@@ -96,7 +108,11 @@ const MainForm = () => {
|
|||||||
{carUpdates.map((row) => (
|
{carUpdates.map((row) => (
|
||||||
<TableRow key={row.id}>
|
<TableRow key={row.id}>
|
||||||
<TableCell align="center">{row.id}</TableCell>
|
<TableCell align="center">{row.id}</TableCell>
|
||||||
<TableCell align="center">{row.vin}</TableCell>
|
<TableCell align="center">
|
||||||
|
<span className={classes.link} onClick={handleViewVIN}>
|
||||||
|
{row.vin}
|
||||||
|
</span>
|
||||||
|
</TableCell>
|
||||||
<TableCell align="center">{row.status}</TableCell>
|
<TableCell align="center">{row.status}</TableCell>
|
||||||
<TableCell align="center">
|
<TableCell align="center">
|
||||||
{LocalDateTimeString(row.created)}
|
{LocalDateTimeString(row.created)}
|
||||||
@@ -126,6 +142,7 @@ const MainForm = () => {
|
|||||||
</TableFooter>
|
</TableFooter>
|
||||||
</Table>
|
</Table>
|
||||||
</TableContainer>
|
</TableContainer>
|
||||||
|
<VehicleStatus vin={viewVIN} handleClose={handleCloseViewVIN} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import React, { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
|
import { Link } from "react-router-dom";
|
||||||
import {
|
import {
|
||||||
Table,
|
Table,
|
||||||
TableBody,
|
TableBody,
|
||||||
@@ -75,7 +76,9 @@ const MainForm = () => {
|
|||||||
<TableBody>
|
<TableBody>
|
||||||
{vehicles.map((row) => (
|
{vehicles.map((row) => (
|
||||||
<TableRow key={row.vin}>
|
<TableRow key={row.vin}>
|
||||||
<TableCell align="center">{row.vin}</TableCell>
|
<TableCell align="center">
|
||||||
|
<Link to={`/vehicle-status/${row.vin}`}>{row.vin}</Link>
|
||||||
|
</TableCell>
|
||||||
<TableCell align="center">{row.model}</TableCell>
|
<TableCell align="center">{row.model}</TableCell>
|
||||||
<TableCell align="center">{row.year}</TableCell>
|
<TableCell align="center">{row.year}</TableCell>
|
||||||
<TableCell align="center">
|
<TableCell align="center">
|
||||||
|
|||||||
122
src/components/Cars/Status/index.jsx
Normal file
122
src/components/Cars/Status/index.jsx
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
import React, { useEffect, useState } from "react";
|
||||||
|
import { useParams } from "react-router";
|
||||||
|
import {
|
||||||
|
Table,
|
||||||
|
TableBody,
|
||||||
|
TableCell,
|
||||||
|
TableContainer,
|
||||||
|
TableFooter,
|
||||||
|
TableHead,
|
||||||
|
TablePagination,
|
||||||
|
TableRow,
|
||||||
|
Typography,
|
||||||
|
} from "@material-ui/core";
|
||||||
|
|
||||||
|
import {
|
||||||
|
UpdatesProvider,
|
||||||
|
useUpdatesContext,
|
||||||
|
} from "../../Contexts/UpdatesContext";
|
||||||
|
import { useUserContext } from "../../Contexts/UserContext";
|
||||||
|
import { useStatusContext } from "../../Contexts/StatusContext";
|
||||||
|
import useStyles from "../../useStyles";
|
||||||
|
import { LocalDateTimeString } from "../../../utils/dates";
|
||||||
|
|
||||||
|
const MainForm = () => {
|
||||||
|
const { vin } = useParams();
|
||||||
|
const classes = useStyles();
|
||||||
|
const [pageSize, setPageSize] = useState(10);
|
||||||
|
const [pageIndex, setPageIndex] = useState(0);
|
||||||
|
const { getCarUpdates, carUpdates, totalCarUpdates } = useUpdatesContext();
|
||||||
|
const { setMessage } = useStatusContext();
|
||||||
|
const {
|
||||||
|
token: {
|
||||||
|
idToken: { jwtToken: token },
|
||||||
|
},
|
||||||
|
} = useUserContext();
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
try {
|
||||||
|
getCarUpdates(
|
||||||
|
{
|
||||||
|
vin,
|
||||||
|
limit: pageSize,
|
||||||
|
offset: pageSize * pageIndex,
|
||||||
|
},
|
||||||
|
token
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
setMessage(e.message);
|
||||||
|
}
|
||||||
|
// eslint-disable-next-line
|
||||||
|
}, [pageIndex, pageSize, token]);
|
||||||
|
|
||||||
|
const handleChangePageIndex = (event, newIndex) => {
|
||||||
|
setPageIndex(newIndex);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleChangePageSize = (event) => {
|
||||||
|
setPageSize(parseInt(event.target.value, 10));
|
||||||
|
setPageIndex(0);
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className={classes.paper} style={{ height: 700, width: "100%" }}>
|
||||||
|
<Typography component="h1" variant="h5">
|
||||||
|
{vin} Updates
|
||||||
|
</Typography>
|
||||||
|
<TableContainer>
|
||||||
|
<Table>
|
||||||
|
<TableHead>
|
||||||
|
<TableRow>
|
||||||
|
<TableCell align="center">ID</TableCell>
|
||||||
|
<TableCell align="center">Update</TableCell>
|
||||||
|
<TableCell align="center">Status</TableCell>
|
||||||
|
<TableCell align="center">Created</TableCell>
|
||||||
|
<TableCell align="center">Updated</TableCell>
|
||||||
|
</TableRow>
|
||||||
|
</TableHead>
|
||||||
|
<TableBody>
|
||||||
|
{carUpdates.map((row) => (
|
||||||
|
<TableRow key={row.id}>
|
||||||
|
<TableCell align="center">{row.id}</TableCell>
|
||||||
|
<TableCell align="center">{`${row.updatepackage.package_name} ${row.updatepackage.version}`}</TableCell>
|
||||||
|
<TableCell align="center">{row.status}</TableCell>
|
||||||
|
<TableCell align="center">
|
||||||
|
{LocalDateTimeString(row.created)}
|
||||||
|
</TableCell>
|
||||||
|
<TableCell align="center">
|
||||||
|
{LocalDateTimeString(row.updated)}
|
||||||
|
</TableCell>
|
||||||
|
</TableRow>
|
||||||
|
))}
|
||||||
|
</TableBody>
|
||||||
|
<TableFooter>
|
||||||
|
<TableRow>
|
||||||
|
<TablePagination
|
||||||
|
rowsPerPageOptions={[5, 10, 25]}
|
||||||
|
colSpan={5}
|
||||||
|
count={totalCarUpdates}
|
||||||
|
rowsPerPage={pageSize}
|
||||||
|
page={pageIndex}
|
||||||
|
SelectProps={{
|
||||||
|
inputProps: { "aria-label": "rows per page" },
|
||||||
|
native: true,
|
||||||
|
}}
|
||||||
|
onChangePage={handleChangePageIndex}
|
||||||
|
onChangeRowsPerPage={handleChangePageSize}
|
||||||
|
/>
|
||||||
|
</TableRow>
|
||||||
|
</TableFooter>
|
||||||
|
</Table>
|
||||||
|
</TableContainer>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const CarUpdates = () => (
|
||||||
|
<UpdatesProvider>
|
||||||
|
<MainForm />
|
||||||
|
</UpdatesProvider>
|
||||||
|
);
|
||||||
|
|
||||||
|
export default CarUpdates;
|
||||||
91
src/components/Cars/StatusModal/index.jsx
Normal file
91
src/components/Cars/StatusModal/index.jsx
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
import React, { useEffect, useState } from "react";
|
||||||
|
import {
|
||||||
|
Backdrop,
|
||||||
|
Modal,
|
||||||
|
Fade,
|
||||||
|
Table,
|
||||||
|
TableHead,
|
||||||
|
TableRow,
|
||||||
|
TableCell,
|
||||||
|
TableBody,
|
||||||
|
} from "@material-ui/core";
|
||||||
|
|
||||||
|
import useStyles from "../../useStyles";
|
||||||
|
import { useUpdatesContext } from "../../Contexts/UpdatesContext";
|
||||||
|
import { useUserContext } from "../../Contexts/UserContext";
|
||||||
|
import { useStatusContext } from "../../Contexts/StatusContext";
|
||||||
|
import { LocalDateTimeString } from "../../../utils/dates";
|
||||||
|
|
||||||
|
export default function CarStatusModal(props) {
|
||||||
|
const classes = useStyles();
|
||||||
|
const [updates, setUpdates] = useState([]);
|
||||||
|
const { setMessage } = useStatusContext();
|
||||||
|
const { getVINUpdates } = useUpdatesContext();
|
||||||
|
const {
|
||||||
|
token: {
|
||||||
|
idToken: { jwtToken: token },
|
||||||
|
},
|
||||||
|
} = useUserContext();
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
(async () => {
|
||||||
|
try {
|
||||||
|
if (!props.vin) return;
|
||||||
|
const result = await getVINUpdates(props.vin, token);
|
||||||
|
if (result.error) {
|
||||||
|
throw new Error(`Get VIN updates error. ${result.message}`);
|
||||||
|
} else {
|
||||||
|
setUpdates(result.data);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
setMessage(e.message);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
// eslint-disable-next-line
|
||||||
|
}, [props.vin]);
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<Modal
|
||||||
|
aria-labelledby="transition-modal-title"
|
||||||
|
aria-describedby="transition-modal-description"
|
||||||
|
className={classes.modal}
|
||||||
|
open={props.vin}
|
||||||
|
onClose={props.handleClose}
|
||||||
|
BackdropComponent={Backdrop}
|
||||||
|
BackdropProps={{
|
||||||
|
timeout: 500,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Fade in={props.vin}>
|
||||||
|
<div className={classes.modaldialog}>
|
||||||
|
<h2 id="transition-modal-title">{props.vin} Updates</h2>
|
||||||
|
<Table>
|
||||||
|
<TableHead>
|
||||||
|
<TableRow>
|
||||||
|
<TableCell align="center">Date</TableCell>
|
||||||
|
<TableCell align="center">Update</TableCell>
|
||||||
|
<TableCell align="center">Status</TableCell>
|
||||||
|
<TableCell align="center">Updated</TableCell>
|
||||||
|
</TableRow>
|
||||||
|
</TableHead>
|
||||||
|
<TableBody>
|
||||||
|
{updates.map((update) => (
|
||||||
|
<TableRow key={update.id}>
|
||||||
|
<TableCell align="center">
|
||||||
|
{LocalDateTimeString(update.created)}
|
||||||
|
</TableCell>
|
||||||
|
<TableCell align="center">{`${update.updatepackage.package_name} ${update.updatepackage.version}`}</TableCell>
|
||||||
|
<TableCell align="center">{update.status}</TableCell>
|
||||||
|
<TableCell align="center">
|
||||||
|
{LocalDateTimeString(update.updated)}
|
||||||
|
</TableCell>
|
||||||
|
</TableRow>
|
||||||
|
))}
|
||||||
|
</TableBody>
|
||||||
|
</Table>
|
||||||
|
</div>
|
||||||
|
</Fade>
|
||||||
|
</Modal>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -81,6 +81,21 @@ export const UpdatesProvider = ({ children }) => {
|
|||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getVINUpdates = async (vin, token) => {
|
||||||
|
let result;
|
||||||
|
|
||||||
|
try {
|
||||||
|
setBusy(true);
|
||||||
|
result = await api.getVINUpdates(vin, token);
|
||||||
|
if (result.error)
|
||||||
|
throw new Error(`Get VIN updates error. ${result.message}`);
|
||||||
|
} finally {
|
||||||
|
setBusy(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<UpdatesContext.Provider
|
<UpdatesContext.Provider
|
||||||
value={{
|
value={{
|
||||||
@@ -93,6 +108,7 @@ export const UpdatesProvider = ({ children }) => {
|
|||||||
updatePackage,
|
updatePackage,
|
||||||
createCarUpdates,
|
createCarUpdates,
|
||||||
getCarUpdates,
|
getCarUpdates,
|
||||||
|
getVINUpdates,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ const UpdatePackagesForm = React.lazy(() => import("../UpdatePackages/List"));
|
|||||||
const UpdatePackageEdit = React.lazy(() => import("../UpdatePackages/Edit"));
|
const UpdatePackageEdit = React.lazy(() => import("../UpdatePackages/Edit"));
|
||||||
const CarUpdatesDeploy = React.lazy(() => import("../CarUpdates/Deploy"));
|
const CarUpdatesDeploy = React.lazy(() => import("../CarUpdates/Deploy"));
|
||||||
const CarUpdatesStatus = React.lazy(() => import("../CarUpdates/Status"));
|
const CarUpdatesStatus = React.lazy(() => import("../CarUpdates/Status"));
|
||||||
|
const CarUpdates = React.lazy(() => import("../Cars/Status"));
|
||||||
const VehiclesList = React.lazy(() => import("../Cars/List"));
|
const VehiclesList = React.lazy(() => import("../Cars/List"));
|
||||||
|
|
||||||
const SiteRoutes = () => {
|
const SiteRoutes = () => {
|
||||||
@@ -92,6 +93,14 @@ const SiteRoutes = () => {
|
|||||||
groups={groups}
|
groups={groups}
|
||||||
roles={[Roles.CREATE]}
|
roles={[Roles.CREATE]}
|
||||||
/>
|
/>
|
||||||
|
<AuthRoute
|
||||||
|
path="/vehicle-status/:vin"
|
||||||
|
render={() => <CarUpdates />}
|
||||||
|
type={TYPES.PROTECTED}
|
||||||
|
token={token}
|
||||||
|
groups={groups}
|
||||||
|
roles={[Roles.READ, Roles.CREATE]}
|
||||||
|
/>
|
||||||
<PageNotFound />
|
<PageNotFound />
|
||||||
</Switch>
|
</Switch>
|
||||||
</Suspense>
|
</Suspense>
|
||||||
|
|||||||
@@ -3,12 +3,12 @@
|
|||||||
exports[`Sign In Form Should render 1`] = `
|
exports[`Sign In Form Should render 1`] = `
|
||||||
<div>
|
<div>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-paper-1"
|
class="makeStyles-paper-3"
|
||||||
style="justify-content: center;"
|
style="justify-content: center;"
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
aria-disabled="false"
|
aria-disabled="false"
|
||||||
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-4 MuiButton-containedPrimary"
|
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-6 MuiButton-containedPrimary"
|
||||||
href="https://cognito.com/authorize?redirect=https://example.com/callback"
|
href="https://cognito.com/authorize?redirect=https://example.com/callback"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ exports[`File Upload Form Should render 1`] = `
|
|||||||
data-testid="mocked-fileuploadprovider"
|
data-testid="mocked-fileuploadprovider"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="makeStyles-paper-1"
|
class="makeStyles-paper-3"
|
||||||
>
|
>
|
||||||
<h1
|
<h1
|
||||||
class="MuiTypography-root MuiTypography-h5"
|
class="MuiTypography-root MuiTypography-h5"
|
||||||
@@ -15,7 +15,7 @@ exports[`File Upload Form Should render 1`] = `
|
|||||||
</h1>
|
</h1>
|
||||||
<form
|
<form
|
||||||
action="{onSubmit}"
|
action="{onSubmit}"
|
||||||
class="makeStyles-form-3"
|
class="makeStyles-form-5"
|
||||||
novalidate=""
|
novalidate=""
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
@@ -51,10 +51,10 @@ exports[`File Upload Form Should render 1`] = `
|
|||||||
/>
|
/>
|
||||||
<fieldset
|
<fieldset
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
class="PrivateNotchedOutline-root-21 MuiOutlinedInput-notchedOutline"
|
class="PrivateNotchedOutline-root-24 MuiOutlinedInput-notchedOutline"
|
||||||
>
|
>
|
||||||
<legend
|
<legend
|
||||||
class="PrivateNotchedOutline-legendLabelled-23"
|
class="PrivateNotchedOutline-legendLabelled-26"
|
||||||
>
|
>
|
||||||
<span>
|
<span>
|
||||||
Package name
|
Package name
|
||||||
@@ -97,10 +97,10 @@ exports[`File Upload Form Should render 1`] = `
|
|||||||
/>
|
/>
|
||||||
<fieldset
|
<fieldset
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
class="PrivateNotchedOutline-root-21 MuiOutlinedInput-notchedOutline"
|
class="PrivateNotchedOutline-root-24 MuiOutlinedInput-notchedOutline"
|
||||||
>
|
>
|
||||||
<legend
|
<legend
|
||||||
class="PrivateNotchedOutline-legendLabelled-23"
|
class="PrivateNotchedOutline-legendLabelled-26"
|
||||||
>
|
>
|
||||||
<span>
|
<span>
|
||||||
Version
|
Version
|
||||||
@@ -135,10 +135,10 @@ exports[`File Upload Form Should render 1`] = `
|
|||||||
/>
|
/>
|
||||||
<fieldset
|
<fieldset
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
class="PrivateNotchedOutline-root-21 MuiOutlinedInput-notchedOutline"
|
class="PrivateNotchedOutline-root-24 MuiOutlinedInput-notchedOutline"
|
||||||
>
|
>
|
||||||
<legend
|
<legend
|
||||||
class="PrivateNotchedOutline-legendLabelled-23"
|
class="PrivateNotchedOutline-legendLabelled-26"
|
||||||
>
|
>
|
||||||
<span>
|
<span>
|
||||||
Description
|
Description
|
||||||
@@ -173,10 +173,10 @@ exports[`File Upload Form Should render 1`] = `
|
|||||||
/>
|
/>
|
||||||
<fieldset
|
<fieldset
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
class="PrivateNotchedOutline-root-21 MuiOutlinedInput-notchedOutline"
|
class="PrivateNotchedOutline-root-24 MuiOutlinedInput-notchedOutline"
|
||||||
>
|
>
|
||||||
<legend
|
<legend
|
||||||
class="PrivateNotchedOutline-legendLabelled-23"
|
class="PrivateNotchedOutline-legendLabelled-26"
|
||||||
>
|
>
|
||||||
<span>
|
<span>
|
||||||
Release Notes URL
|
Release Notes URL
|
||||||
@@ -217,7 +217,7 @@ exports[`File Upload Form Should render 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-4 MuiButton-containedPrimary MuiButton-fullWidth"
|
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-6 MuiButton-containedPrimary MuiButton-fullWidth"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -5,6 +5,17 @@ const MENUITEM_PADDING_TOP = 8;
|
|||||||
const DRAWER_WIDTH = 240;
|
const DRAWER_WIDTH = 240;
|
||||||
|
|
||||||
const useStyles = makeStyles((theme) => ({
|
const useStyles = makeStyles((theme) => ({
|
||||||
|
modal: {
|
||||||
|
display: "flex",
|
||||||
|
alignItems: "center",
|
||||||
|
justifyContent: "center",
|
||||||
|
},
|
||||||
|
modaldialog: {
|
||||||
|
backgroundColor: theme.palette.background.paper,
|
||||||
|
border: "2px solid #000",
|
||||||
|
boxShadow: theme.shadows[5],
|
||||||
|
padding: theme.spacing(2, 4, 3),
|
||||||
|
},
|
||||||
paper: {
|
paper: {
|
||||||
marginTop: theme.spacing(8),
|
marginTop: theme.spacing(8),
|
||||||
display: "flex",
|
display: "flex",
|
||||||
@@ -105,6 +116,13 @@ const useStyles = makeStyles((theme) => ({
|
|||||||
marginLeft: "auto",
|
marginLeft: "auto",
|
||||||
marginRight: -12,
|
marginRight: -12,
|
||||||
},
|
},
|
||||||
|
link: {
|
||||||
|
cursor: "pointer",
|
||||||
|
textDecorationColor: "Blue",
|
||||||
|
textDecorationStyle: "solid",
|
||||||
|
textDecorationLine: "underline",
|
||||||
|
color: "Blue",
|
||||||
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
export default useStyles;
|
export default useStyles;
|
||||||
|
|||||||
@@ -41,7 +41,11 @@ const updatesAPI = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
getCarUpdates: async (filter, token) => {
|
getCarUpdates: async (filter, token) => {
|
||||||
return [];
|
return { data:[] };
|
||||||
|
},
|
||||||
|
|
||||||
|
getVINUpdates: async (vin, token) => {
|
||||||
|
return { data:[] };
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,14 @@ const updatesAPI = {
|
|||||||
.then(fetchRespHandler);
|
.then(fetchRespHandler);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getVINUpdates: async (vin, token) => {
|
||||||
|
var u = addQueryParams(`${API_ENDPOINT}/carupdates`, { vin });
|
||||||
|
return fetch(u, {
|
||||||
|
method: "GET",
|
||||||
|
headers: Object.assign({ "Content-Type": "application/json" }, getAuthHeaderOptions(token)),
|
||||||
|
})
|
||||||
|
.then(fetchRespHandler);
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export default updatesAPI;
|
export default updatesAPI;
|
||||||
|
|||||||
Reference in New Issue
Block a user