diff --git a/src/components/Contexts/VehicleContext.jsx b/src/components/Contexts/VehicleContext.jsx index ef6b781..9ef9827 100644 --- a/src/components/Contexts/VehicleContext.jsx +++ b/src/components/Contexts/VehicleContext.jsx @@ -34,6 +34,7 @@ export const VehicleProvider = ({ children }) => { const [totalFlashpacks, setTotalFlashpacks] = useState(0); const [flashpackECUMappings, setFlashpackECUMappings] = useState([]) const [totalFlashpackECUMappings, setTotalFlashpackECUMappings] = useState(0) + const [osVersions, setOSVersions] = useState([{ "value": "", "label": "None" }]) const addConnections = async (cars, token) => { try { @@ -331,7 +332,7 @@ export const VehicleProvider = ({ children }) => { } }; - const addFlashpackVersion = async (model, trim, year, flashpack, carFlashpackVersions, token) => { + const addFlashpackVersion = async (model, trim, year, flashpack, osVersion, carFlashpackVersions, token) => { try { setBusy(true); @@ -340,6 +341,7 @@ export const VehicleProvider = ({ children }) => { "car_trim": trim, "car_year": year, "flashpack": flashpack, + "os_version": osVersion, "ecu_versions": carFlashpackVersions, } @@ -424,6 +426,30 @@ export const VehicleProvider = ({ children }) => { } finally { setBusy(false); } + }; + + const getOSVersions = async (token) => { + try { + setBusy(true); + + const result = await api.getOSVersions(token); + if (result.error) { + throw new Error(`Get OS versions error. ${result.message}`); + } + + var data = [{ "value": "", "label": "None" }] + + for (let i = 0; i < result.data.length; i++) { + data.push({ + "value": result.data[i], + "label": result.data[i] + }); + } + + setOSVersions(data); + } finally { + setBusy(false); + } } return ( @@ -466,6 +492,8 @@ export const VehicleProvider = ({ children }) => { deleteFlashpackVersion, deleteFlashpackVersionECUMapping, getCarFlashpackVersionInfo, + osVersions, + getOSVersions, }} > {children} diff --git a/src/components/Controls/CarSelectionTable/index.jsx b/src/components/Controls/CarSelectionTable/index.jsx index 3bc04ce..5104136 100644 --- a/src/components/Controls/CarSelectionTable/index.jsx +++ b/src/components/Controls/CarSelectionTable/index.jsx @@ -1,5 +1,4 @@ import React, { useEffect, useState } from "react"; -import { Link } from "react-router-dom"; import PropTypes from "prop-types"; import { Checkbox, @@ -17,9 +16,9 @@ import { useStatusContext } from "../../Contexts/StatusContext"; import { LocalDateTimeString } from "../../../utils/dates"; import TableHeaderSortable from "../../Table/HeaderSortable"; import { logger } from "../../../services/monitoring"; -import ConnectedIcon from "../../Controls/ConnectedIcon"; import ECUList from "../../Controls/ECUList"; import { useLocalStorage } from "../../useLocalStorage"; +import { VehicleTeaser } from "../../VehicleTeaser"; const tableColumns = [ { @@ -164,12 +163,11 @@ const CarSelectionTable = (props) => { )} - - {row.vin} {row.ecu_list && ( <>
diff --git a/src/components/Controls/ConnectedIcon/index.jsx b/src/components/Controls/ConnectedIcon/index.jsx index 650ee83..dd36383 100644 --- a/src/components/Controls/ConnectedIcon/index.jsx +++ b/src/components/Controls/ConnectedIcon/index.jsx @@ -1,36 +1,78 @@ import React from "react"; import PropTypes from "prop-types"; -import CheckCircleIcon from "@material-ui/icons/CheckCircle"; -import CheckBoxIcon from "@material-ui/icons/CheckBox"; +import DoneAllIcon from "@material-ui/icons/DoneAll"; +import ClearIcon from "@material-ui/icons/Clear"; +import DoneIcon from "@material-ui/icons/Done"; import { Tooltip } from "@material-ui/core"; const ConnectedIcon = (props) => { - if (props.connected || props.connectedHMI) { - return ( - - {props.connected && ( - - - - )} - {props.connectedHMI && ( - - - - )} - - ); - } + let title = tooltip(props.connected, props.connectedHMI); - return null; + const content = () => { + if (props.connected && props.connectedHMI) { + return ( + + + + ); + } + + if (props.connected || props.connectedHMI) { + let color = "blue"; + if (props.connected) { + color = "green" + } + + return ( + + + + ); + } + + return ( + + + + ); + }; + + return ( + + {content()} + + ) }; ConnectedIcon.propTypes = { connected: PropTypes.bool.isRequired, }; +function tooltip(trex, icc) { + const status = []; + + if (trex) { + status.push("TREX"); + } + + if (icc) { + status.push("ICC"); + } + + if (!status.length) { + return "OFFLINE"; + } + + return status.join(" & "); +} + export default ConnectedIcon; diff --git a/src/components/Flashpack/Add/__snapshots__/index.test.jsx.snap b/src/components/Flashpack/Add/__snapshots__/index.test.jsx.snap index c704ada..52b7415 100644 --- a/src/components/Flashpack/Add/__snapshots__/index.test.jsx.snap +++ b/src/components/Flashpack/Add/__snapshots__/index.test.jsx.snap @@ -91,11 +91,6 @@ exports[`FlashpackAdd Render 1`] = ` class="MuiSelect-root MuiSelect-select MuiSelect-outlined MuiInputBase-input MuiOutlinedInput-input" required="" > -