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
This commit is contained in:
Drew Taylor
2022-04-14 18:11:22 -07:00
committed by GitHub
parent afa3c1e529
commit 07f77cabdb
56 changed files with 5854 additions and 2208 deletions

View File

@@ -2,13 +2,13 @@ const fleets = [
{
name: "US-WEST",
log_level: "info",
canbus: { enabled: true },
canbus: { enabled: true, data_logger_enabled: true, max_mem_buffer_size: 1, max_disk_buffer_size: 2 },
vehicles: ["USWESTVIN12345678", "USWESTVIN12345679", "USWESTVIN12345670"]
},
{
name: "US-CENTRAL",
log_level: "warn",
canbus: { enabled: false },
canbus: { enabled: false, data_logger_enabled: false, max_mem_buffer_size: 0, max_disk_buffer_size: 0 },
vehicles: ["USCENTVIN12345678", "USCENTVIN12345679", "USCENTVIN12345670"]
},
{
@@ -37,50 +37,54 @@ const filters = [
]
const fleetsAPI = {
addFleet: async (fleet, token) => {
addFleet: async (fleet) => {
fleets.push(fleet);
return fleet;
},
getFleets: async (search, token) => {
getFleet: async (name) => {
const index = fleets.findIndex(element => element.name === name);
return fleets[index];
},
getFleets: async () => {
return { data: fleets };
},
updateFleet: async (name, fleet, token) => {
updateFleet: async (name, fleet) => {
const index = fleets.findIndex(element => element.name === name);
if (index >= 0) fleets[index] = fleet;
return fleet;
},
deleteFleet: async (name, token) => {
deleteFleet: async (name) => {
const index = fleets.findIndex(element => element.name === name);
if (index >= 0) fleets.splice(index, 1);
return name;
},
getFleetVehicles: async (name, search, token) => {
getFleetVehicles: async () => {
return { data: vehicles };
},
addFleetVehicle: async (name, vehicle, token) => {
addFleetVehicle: async (_name, vehicle) => {
vehicles.push(vehicle.vin);
return vehicle;
},
deleteFleetVehicle: async (name, vehicle, token) => {
deleteFleetVehicle: async (_name, vehicle) => {
const index = vehicles.findIndex(element => element === vehicle.vin);
if (index >= 0) vehicles.splice(index, 1);
return vehicle.vin;
},
getFleetCANFilters: async (name, search, token) => {
getFleetCANFilters: async () => {
return { data: filters };
},
addFleetCANFilter: async (name, filter, token) => {
addFleetCANFilter: async (_name, filter) => {
filters.push(filter);
return filter;
},
updateFleetCANFilter: async (name, can_id, filter, token) => {
updateFleetCANFilter: async (_name, can_id, filter) => {
const index = filters.findIndex(element => element.can_id === can_id);
if (index >= 0) filters[index] = filter;
return filter;
},
deleteFleetCANFilter: async (name, can_id, token) => {
deleteFleetCANFilter: async (_name, can_id) => {
const index = filters.findIndex(element => element.can_id === can_id);
if (index >= 0) vehicles.splice(index, 1);
return can_id;

View File

@@ -5,6 +5,8 @@ const data = [
model: "Ocean",
trim: "Basic",
ecu_list: "ECUA 2.0.0, ECUB 2.1.1",
log_level: "info",
canbus: { enabled: true, data_logger_enabled: true, max_mem_buffer_size: 1, max_disk_buffer_size: 2 },
},
{ vin: "1G1FP87S3GN100062" },
{ vin: "1HGCG325XYA062256", year: 2021 },
@@ -34,11 +36,16 @@ const ecusData = [
];
const vehiclesAPI = {
addVehicle: async (vehicle, token) => {
addVehicle: async (vehicle) => {
data.push(vehicle);
return vehicle;
},
getConnections: async (vins, token) => {
deleteVehicle: async (vin) => {
const index = data.findIndex(element => element.vin === vin);
if (index >= 0) data.splice(index, 1);
return vin;
},
getConnections: async (vins) => {
const result = {};
vins.forEach((vin) => {
@@ -47,10 +54,10 @@ const vehiclesAPI = {
return result;
},
getECUs: async (vin, token) => {
getECUs: async () => {
return { data: ecusData, total: ecusData.length };
},
getModels: async (token) => {
getModels: async () => {
return {
data: ["Ocean", "Pear"],
};
@@ -60,21 +67,30 @@ const vehiclesAPI = {
.mockResolvedValue([
{ altitude: 5, longitude: 10, latitude: 15, vin: "TESTVIN123" },
]),
getVehicles: async (search, token) => {
getVehicle: async (vin) => {
const index = data.findIndex(element => element.vin === vin);
return data[index];
},
getVehicles: async () => {
return { data };
},
getYears: async (token) => {
getYears: async () => {
return {
data: [2021, 2022],
};
},
sendCommand: async (vin, command, parameters, token) => {
sendCommand: async (vin, command, parameters) => {
return {
vin,
command,
parameters,
};
},
updateVehicle: async (vin, vehicle) => {
const index = data.findIndex(element => element.vin === vin);
if (index >= 0) data[index] = vehicle;
return vehicle;
}
};
export default vehiclesAPI;

View File

@@ -17,6 +17,15 @@ const fleetsAPI = {
body: JSON.stringify(fleet)
}).then(fetchRespHandler),
getFleet: async (name, token) =>
fetch(`${API_ENDPOINT}/fleet/${name}`, {
method: "GET",
headers: Object.assign(
{ "Content-Type": "application/json" },
getAuthHeaderOptions(token)
)
}).then(fetchRespHandler),
getFleets: async (search, token) =>
fetch(addQueryParams(`${API_ENDPOINT}/fleets`, search), {
method: "GET",

View File

@@ -17,6 +17,15 @@ const vehiclesAPI = {
body: JSON.stringify(vehicle),
}).then(fetchRespHandler),
deleteVehicle: async (vin, token) =>
fetch(`${API_ENDPOINT}/vehicle/${vin}`, {
method: "DELETE",
headers: Object.assign(
{ "Content-Type": "application/json" },
getAuthHeaderOptions(token)
),
}).then(fetchRespHandler),
getConnections: async (vins, token) => {
const u = `${API_ENDPOINT}/carsconnected?vins=${vins.join(",")}`;
return fetch(u, {
@@ -66,6 +75,15 @@ const vehiclesAPI = {
),
}).then(fetchRespHandler),
getVehicle: async (vin, token) =>
fetch(`${API_ENDPOINT}/vehicle/${vin}`, {
method: "GET",
headers: Object.assign(
{ "Content-Type": "application/json" },
getAuthHeaderOptions(token)
),
}).then(fetchRespHandler),
getVehicles: async (search, token) => {
const u = addQueryParams(`${API_ENDPOINT}/vehicles`, search);
return fetch(u, {
@@ -99,6 +117,16 @@ const vehiclesAPI = {
parameters,
}),
}).then(fetchRespHandler),
updateVehicle: async (vin, vehicle, token) =>
fetch(`${API_ENDPOINT}/vehicle/${vin}`, {
method: "PUT",
headers: Object.assign(
{ "Content-Type": "application/json" },
getAuthHeaderOptions(token)
),
body: JSON.stringify(vehicle)
}).then(fetchRespHandler),
};
export default vehiclesAPI;