diff --git a/src/components/Contexts/FleetContext.jsx b/src/components/Contexts/FleetContext.jsx index dd62c6d..551a762 100644 --- a/src/components/Contexts/FleetContext.jsx +++ b/src/components/Contexts/FleetContext.jsx @@ -1,5 +1,6 @@ import React, { useContext, useState } from "react"; import api from "../../services/fleetsAPI"; +import vehiclesAPI from "../../services/vehiclesAPI"; import { validateCANID, validateFilter, validateVIN } from "../../utils/validationSupplier"; const FleetContext = React.createContext(); @@ -112,7 +113,22 @@ export const FleetProvider = ({ children }) => { throw new Error(`Get fleet vehicles error. ${result.message}`); } - setFleetVehicles(result.data) + const connectionsResult = await vehiclesAPI.getConnections(result.data, token) + if (result.error) { + setFleetVehicles([]) + throw new Error(`Get vehicles connections error. ${result.message}`); + } + + var cars = [] + result.data.forEach((vin) => { + cars.push({ + vin: vin, + connected: connectionsResult[vin] || false, + connectedHMI: connectionsResult[`2:${vin}`] || false + }) + }) + + setFleetVehicles(cars) if (result.total) { setTotalFleetVehicles(result.total); } diff --git a/src/components/Contexts/FleetContext.test.jsx b/src/components/Contexts/FleetContext.test.jsx index 93b88a1..b3b883d 100644 --- a/src/components/Contexts/FleetContext.test.jsx +++ b/src/components/Contexts/FleetContext.test.jsx @@ -1,4 +1,5 @@ jest.mock("../../services/fleetsAPI"); +jest.mock("../../services/vehiclesAPI"); import { render, @@ -800,9 +801,21 @@ const expectedFleetsData = [ ]; const expectedFleetVehiclesData = [ - "USWESTVIN12345678", - "USWESTVIN12345679", - "USWESTVIN12345670", + { + vin: "USWESTVIN12345678", + connected: true, + connectedHMI: false, + }, + { + vin: "USWESTVIN12345679", + connected: true, + connectedHMI: false, + }, + { + vin: "USWESTVIN12345670", + connected: true, + connectedHMI: false, + }, ]; const expectedFleetCANFiltersData = [ diff --git a/src/components/Contexts/__mocks__/FleetContext.jsx b/src/components/Contexts/__mocks__/FleetContext.jsx index 7c9c613..6b081c2 100644 --- a/src/components/Contexts/__mocks__/FleetContext.jsx +++ b/src/components/Contexts/__mocks__/FleetContext.jsx @@ -62,7 +62,26 @@ export const useFleetContext = () => ({ fleetVehicles, totalFleetVehicles, - getFleetVehicles: jest.fn(), + getFleetVehicles: jest.fn().mockImplementation((name, search, _token) => { + const result = [ + { + vin: "USWESTVIN12345678", + connected: false, + connectedHMI: false + }, + { + vin: "USWESTVIN12345679", + connected: true, + connectedHMI: true + }, + { + vin: "USWESTVIN12345670", + connected: false, + connectedHMI: false + }, + ]; + return Promise.resolve(result); + }), addFleetVehicles: jest.fn(), deleteFleetVehicle: jest.fn(), diff --git a/src/components/Contexts/__mocks__/VehicleContext.jsx b/src/components/Contexts/__mocks__/VehicleContext.jsx index 18cc9b0..52bd9fb 100644 --- a/src/components/Contexts/__mocks__/VehicleContext.jsx +++ b/src/components/Contexts/__mocks__/VehicleContext.jsx @@ -112,10 +112,14 @@ export const useVehicleContext = () => ({ addVehicle: jest.fn(), getConnections: jest .fn().mockImplementation((vins, _token) => { - const result = {}; - vins.forEach((vin) => { - result[vin] = true; - }); + const result = { + "USWESTVIN12345678": true, + "2:USWESTVIN12345678": false, + "USWESTVIN12345679": true, + "2:USWESTVIN12345679": false, + "USWESTVIN12345670": true, + "2:USWESTVIN12345670": false, + }; return Promise.resolve(result); }), getECUs: jest.fn(() => { diff --git a/src/components/Fleets/Status/Vehicles/Table/__snapshots__/index.test.jsx.snap b/src/components/Fleets/Status/Vehicles/Table/__snapshots__/index.test.jsx.snap index 9cad130..2c81f3a 100644 --- a/src/components/Fleets/Status/Vehicles/Table/__snapshots__/index.test.jsx.snap +++ b/src/components/Fleets/Status/Vehicles/Table/__snapshots__/index.test.jsx.snap @@ -137,62 +137,7 @@ exports[`FleetVehiclesTable Render 1`] = ` - - - - USWESTVIN12345678 - - - - No actions - - - - - - USWESTVIN12345679 - - - - No actions - - - - - - USWESTVIN12345670 - - - - No actions - - - + /> diff --git a/src/components/Fleets/Status/Vehicles/Table/index.jsx b/src/components/Fleets/Status/Vehicles/Table/index.jsx index 07dc489..1554689 100644 --- a/src/components/Fleets/Status/Vehicles/Table/index.jsx +++ b/src/components/Fleets/Status/Vehicles/Table/index.jsx @@ -26,6 +26,7 @@ import SearchField from "../../../../Controls/SearchField"; import DeleteConfirmation from "../../../../DeleteConfirmation"; import TableHeaderSortable from "../../../../Table/HeaderSortable"; import { useLocalStorage } from "../../../../useLocalStorage"; +import ConnectedIcon from "../../../../Controls/ConnectedIcon"; import useStyles from "../../../../useStyles"; const tableColumns = [ @@ -190,13 +191,22 @@ const MainForm = ({ name }) => { onSortRequest={handleSort} /> - {fleetVehicles.map((vin) => ( - - - {vin} + {fleetVehicles && fleetVehicles.map((car) => ( + (car.vin && + + {(car.connected || car.connectedHMI) && + + } + {car.vin} - {Actions(vin)} + {Actions(car.vin)} + ) ))} diff --git a/src/components/Fleets/Status/__snapshots__/VehiclesTab.test.jsx.snap b/src/components/Fleets/Status/__snapshots__/VehiclesTab.test.jsx.snap index aab2895..220b263 100644 --- a/src/components/Fleets/Status/__snapshots__/VehiclesTab.test.jsx.snap +++ b/src/components/Fleets/Status/__snapshots__/VehiclesTab.test.jsx.snap @@ -136,62 +136,7 @@ exports[`VehiclesTab Render 1`] = ` - - - - USWESTVIN12345678 - - - - No actions - - - - - - USWESTVIN12345679 - - - - No actions - - - - - - USWESTVIN12345670 - - - - No actions - - - + /> diff --git a/src/services/__mocks__/vehiclesAPI.js b/src/services/__mocks__/vehiclesAPI.js index afdc805..73da510 100644 --- a/src/services/__mocks__/vehiclesAPI.js +++ b/src/services/__mocks__/vehiclesAPI.js @@ -112,6 +112,7 @@ const vehiclesAPI = { vins.forEach((vin) => { result[vin] = true; + result["2:" + vin] = false; }); return result;