Files
ota-admin-portal/src/components/Cars/Status/index.jsx
John Wu d4134141a4 CEC-1402 Merge to production (#148)
* Fix template function (#105)

* CEC-638 Add EK test ECU (#106)

* CEC-638 Add EK ECU

* Update test

* CEC-638 Should be EKS (#107)

* Should be EKS

* Update snapshot

* CEC-624 Display update status info and ECU (#108)

* Diplay ECU name in update status (#110)

Optimize car update status progress control
Remove car update status page test
Replace with individual component tests

* Handle case ECU is not in message (#111)

* Refresh button label (#112)

* Update ECU refresh button label

* Update snapshot

* remove

* CEC-660 Fix release notes field (#113)

* CEC-775 Manifest details component (#114)

* CEC-775 Manifest details component

* Code smells

* Fix build warning

* CEC-1050 New manifest format (#117)

* CEC-1050 Manifest changes

* Fix delete bug

* Add approve update button

* Code smell

* Remove update approval

* CEC-464 can filters forms (#118)

* can filters forms and lists

* unit tests

* updating warnings and tests

* merge develop

* fixed snapshots

* update jest mocks

* updating tests

* CEC-1050 Self download indicator (#119)

* CEC-1160 Fix package warnings (#121)

* CEC-1160 Last dependabot fix (#122)

* CEC-1058 fleet forms (#123)

* working fleets page

* unit tests

* snapshots

* updating messages and snapshots

* updating extraneous snaps

* Update codeowners (#125)

* CEC-1167 ota admin portal (#127)

* Add test coverage script

* Remove unnecessary check

* CEC-1167 unit test and code coverage

* included sonar job

* updated the workflow

* updated sonar properties

* updated sonar properties

* updated sonar properties

* updated sonar properties

* updated sonar properties

* updated sonar properties

* updated sonar properties

* updated sonar properties

Co-authored-by: jwu-fisker <jwu@fiskerinc.com>

* CEC-1167 implementing ths coverage thresold (#128)

* CEC-1216 Remove unused components (#129)

* CEC-1216 Remove unused components

* Remove import

* CEC-1183/CEC-1201 fleet vehicles forms (#130)

* working fleet vehicles forms

* snapshots and api tests

* CEC-1182 fleet filter forms (#131)

* forms for fleet can filters

* unit tests for fleet filters

* removing warnings

* updating regex

* CEC-532 Display manifest file properties (#133)

* CEC-532 Display update file properties

* npm audit fix

* CEC-1317 npm update (#134)

* CEC-1320 Update for memory regions (#135)

* CEC-1320 Update for memory regions

* Clean up

* CEC-1256/CEC-1330 data logger for vehicles/fleets and details tabs for vehicles/fleets (#136)

* forms for fleet can filters

* unit tests for fleet filters

* removing warnings

* updating regex

* added fleet details page

* fleet pages

* smoothed out bugs

* fleets done

* working update, delete vehicles

* finished mocks, still need snapshots and context tests

* contexts done

* snapshot tests

* updating code smells

* smells

* CEC-1256/CEC-1330 fixing filters length function (#137)

* fixing filters length function

* adding filters testing

* code smell

* code smells

* bug

* CEC-1387 superset integration and removal of grafana (#138)

* replace grafana with superset

* updating snapshots

* CEC-1316 azure migration (#140)

* test portal azure

* :doh:

* runner

* WIP

* values

* letsencrypt + docker cache

* stg/prd

* portal things

* cleanup

* split build/deploy + temp stage deploy

* :doh:

* try this

* and prod

* this works for now, can improve later

* no need to specify azure anymore

Co-authored-by: Drew Taylor <69828061+drew-fisker@users.noreply.github.com>

* CEC-1369 Fix display of update error (#139)

* CEC-1369 Fix display of update error

* Update snapshot

* CEC-749 Generate cert UI (#141)

* Add Create Certificate page

* Tests

* Update permission check

* Use Azure

* CEC-1387 updating superset dns names (#142)

* updating superset dns names

* updating snapshots

* Fix (#143)

* CEC-749 Fix types (#144)

* Merge branch 'develop'

Co-authored-by: Drew Taylor <69828061+drew-fisker@users.noreply.github.com>
Co-authored-by: venkats09 <97122017+venkats09@users.noreply.github.com>
Co-authored-by: Rafi Greenberg <72412693+rafi-fisker@users.noreply.github.com>
2022-04-19 15:51:36 -07:00

89 lines
2.3 KiB
JavaScript

import React, { useEffect } from "react";
import { useParams } from "react-router";
import { useLocation } from "react-router-dom";
import clsx from "clsx";
import { Box, Tab, Tabs } from "@material-ui/core";
import CarDetailsTab from "./DetailsTab";
import CarUpdatesTab from "./CarUpdatesTab";
import CANFiltersTab from "./CANFiltersTab";
import TabPanel from "../../Controls/TabPanel";
import { useStatusContext } from "../../Contexts/StatusContext";
import useStyles from "../../useStyles";
const tabHashes = ["details", "updates", "filters"];
const CarStatus = () => {
const { vin } = useParams();
const classes = useStyles();
const { setTitle, setSitePath } = useStatusContext();
const { hash } = useLocation();
const [tabIndex, setTabIndex] = React.useState(0);
useEffect(() => {
const key = hash.replace("#", "");
const index = tabHashes.findIndex((element) => element === key);
if (index >= 0) setTabIndex(index);
}, [hash]);
useEffect(() => {
const title = `Vehicle ${vin} Details`;
setTitle(title);
setSitePath([
{
label: "Vehicles",
link: "/vehicles",
},
{
label: title,
},
]);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [vin]);
const handleTabChange = (_event, newIndex) => {
setTabIndex(newIndex);
};
return (
<div className={clsx(classes.paper, classes.tableSize)}>
<Box
className={classes.tableToolbar}
sx={{ borderBottom: 1, borderColor: "divider" }}
>
<Tabs
value={tabIndex}
onChange={handleTabChange}
aria-label="car tabs"
indicatorColor="secondary"
>
<Tab label="Details" {...tabProps(0)} />
<Tab label="Car Updates" {...tabProps(1)} />
<Tab label="CAN Filters" {...tabProps(2)} />
</Tabs>
</Box>
<TabPanel value={tabIndex} index={0}>
<CarDetailsTab />
</TabPanel>
<TabPanel value={tabIndex} index={1}>
<CarUpdatesTab />
</TabPanel>
<TabPanel value={tabIndex} index={2}>
<CANFiltersTab />
</TabPanel>
</div>
);
};
function tabProps(index) {
return {
id: `tab-${index}`,
"aria-controls": `tabpanel-${index}`,
};
}
export default CarStatus;