CEC-1182 fleet filter forms (#131)
* forms for fleet can filters * unit tests for fleet filters * removing warnings * updating regex
This commit is contained in:
@@ -12,6 +12,9 @@ export const FleetProvider = ({ children }) => {
|
||||
const [fleetVehicles, setFleetVehicles] = useState([]);
|
||||
const [totalFleetVehicles, setTotalFleetVehicles] = useState(0);
|
||||
|
||||
const [fleetCANFilters, setFleetCANFilters] = useState([]);
|
||||
const [totalFleetCANFilters, setTotalFleetCANFilters] = useState(0);
|
||||
|
||||
const addFleet = async (fleet, token) => {
|
||||
try {
|
||||
setBusy(true);
|
||||
@@ -60,7 +63,7 @@ export const FleetProvider = ({ children }) => {
|
||||
} finally {
|
||||
setBusy(false);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const deleteFleet = async (name, token) => {
|
||||
try {
|
||||
@@ -79,7 +82,7 @@ export const FleetProvider = ({ children }) => {
|
||||
} finally {
|
||||
setBusy(false);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const getFleetVehicles = async (name, search, token) => {
|
||||
try {
|
||||
@@ -99,7 +102,7 @@ export const FleetProvider = ({ children }) => {
|
||||
} finally {
|
||||
setBusy(false);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const addFleetVehicle = async (name, vehicle, token) => {
|
||||
try {
|
||||
@@ -116,7 +119,7 @@ export const FleetProvider = ({ children }) => {
|
||||
} finally {
|
||||
setBusy(false);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const deleteFleetVehicle = async (name, vehicle, token) => {
|
||||
try {
|
||||
@@ -136,8 +139,83 @@ export const FleetProvider = ({ children }) => {
|
||||
} finally {
|
||||
setBusy(false);
|
||||
}
|
||||
};
|
||||
|
||||
const getFleetCANFilters = async (name, search, token) => {
|
||||
try {
|
||||
setBusy(true);
|
||||
|
||||
const result = await api.getFleetCANFilters(name, search, token);
|
||||
if (result.error) {
|
||||
setFleetCANFilters([])
|
||||
throw new Error(`Get fleet filters error. ${result.message}`);
|
||||
}
|
||||
|
||||
setFleetCANFilters(result.data)
|
||||
if (result.total) {
|
||||
setTotalFleetCANFilters(result.total);
|
||||
}
|
||||
return result;
|
||||
} finally {
|
||||
setBusy(false);
|
||||
}
|
||||
};
|
||||
|
||||
const addFleetCANFilter = async (name, filter, token) => {
|
||||
try {
|
||||
setBusy(true);
|
||||
|
||||
validateFleetName(name);
|
||||
validateFilter(filter);
|
||||
|
||||
const result = await api.addFleetCANFilter(name, filter, token);
|
||||
if (result.error) {
|
||||
throw new Error(`Add fleet CAN filter error. ${result.message}`);
|
||||
}
|
||||
return result;
|
||||
} finally {
|
||||
setBusy(false);
|
||||
}
|
||||
}
|
||||
|
||||
const updateFleetCANFilter = async (name, can_id, filter, token) => {
|
||||
try {
|
||||
setBusy(true);
|
||||
|
||||
validateFleetName(name);
|
||||
validateCANID(can_id);
|
||||
validateFilter(filter);
|
||||
|
||||
const result = await api.updateFleetCANFilter(name, can_id, filter, token);
|
||||
if (result.error) {
|
||||
throw new Error(`Update fleet CAN filter error. ${result.message}`);
|
||||
}
|
||||
return result;
|
||||
} finally {
|
||||
setBusy(false);
|
||||
}
|
||||
}
|
||||
|
||||
const deleteFleetCANFilter = async (name, can_id, token) => {
|
||||
try {
|
||||
setBusy(true);
|
||||
|
||||
validateFleetName(name);
|
||||
validateCANID(can_id);
|
||||
|
||||
const result = await api.deleteFleetCANFilter(name, can_id, token);
|
||||
if (result.error) {
|
||||
throw new Error(`Delete fleet vehicle error. ${result.message}`);
|
||||
}
|
||||
|
||||
const index = fleetCANFilters.findIndex(element => element.can_id === can_id);
|
||||
if (index >= 0) fleetCANFilters.splice(index, 1);
|
||||
return result;
|
||||
} finally {
|
||||
setBusy(false);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<FleetContext.Provider
|
||||
value={{
|
||||
@@ -154,7 +232,14 @@ export const FleetProvider = ({ children }) => {
|
||||
totalFleetVehicles,
|
||||
getFleetVehicles,
|
||||
addFleetVehicle,
|
||||
deleteFleetVehicle
|
||||
deleteFleetVehicle,
|
||||
|
||||
fleetCANFilters,
|
||||
totalFleetCANFilters,
|
||||
getFleetCANFilters,
|
||||
addFleetCANFilter,
|
||||
updateFleetCANFilter,
|
||||
deleteFleetCANFilter
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
@@ -171,7 +256,7 @@ const validateFleet = (fleet) => {
|
||||
}
|
||||
|
||||
const validateFleetName = (name) => {
|
||||
if (name == null || !/^[0-9A-Za-z-]+$/.test(name)) {
|
||||
if (name == null || !/^[\w-]+$/.test(name)) {
|
||||
throw new Error("Invalid name");
|
||||
}
|
||||
}
|
||||
@@ -182,4 +267,22 @@ const validateVIN = (vin) => {
|
||||
}
|
||||
}
|
||||
|
||||
const validateFilter = (filter) => {
|
||||
if (filter == null) {
|
||||
throw new Error("No CAN filter data");
|
||||
}
|
||||
|
||||
validateCANID(filter.can_id)
|
||||
|
||||
if (filter.interval == null || !/^\d+$/.test(filter.interval)) {
|
||||
throw new Error("Invalid interval");
|
||||
}
|
||||
}
|
||||
|
||||
const validateCANID = (can_id) => {
|
||||
if (can_id == null || !/^\d+(-\d+)?$/.test(can_id)) {
|
||||
throw new Error("Invalid CAN ID");
|
||||
}
|
||||
}
|
||||
|
||||
export const useFleetContext = () => useContext(FleetContext);
|
||||
|
||||
Reference in New Issue
Block a user