CEC-3595-invalid-locations (#276)

* CEC-3595-invalid-locations

* fix ci

* added validate function

* resolve comments:
This commit is contained in:
das31
2023-02-03 20:11:00 -05:00
committed by GitHub
parent 25cbafabce
commit f863f37a9a
3 changed files with 28 additions and 1 deletions

View File

@@ -1,6 +1,7 @@
import React from "react"; import React from "react";
import { LocalDateTimeString } from "../../utils/dates"; import { LocalDateTimeString } from "../../utils/dates";
import { ValidateLocationByParam } from "../../utils/locations"
import useStyles from "../useStyles"; import useStyles from "../useStyles";
const keyValueTemplate = (key, value) => ( const keyValueTemplate = (key, value) => (
@@ -83,6 +84,9 @@ const DigitalTwin = (props) => {
<div className={classes.popupSection}> <div className={classes.popupSection}>
<h3>Location</h3> <h3>Location</h3>
{Object.entries(location).map((value) => { {Object.entries(location).map((value) => {
if (ValidateLocationByParam(value[0], value[1]) === false) {
return keyValueTemplate(value[0], "Invalid")
}
if (value[0] === "altitude") { if (value[0] === "altitude") {
return keyValueTemplate(value[0], value[1]); return keyValueTemplate(value[0], value[1]);
} else { } else {

View File

@@ -7,6 +7,7 @@ import { Button } from "@material-ui/core";
import { useUserContext } from "../Contexts/UserContext"; import { useUserContext } from "../Contexts/UserContext";
import { useVehicleContext, VehicleProvider } from "../Contexts/VehicleContext"; import { useVehicleContext, VehicleProvider } from "../Contexts/VehicleContext";
import { VehiclePopUp } from "./popup"; import { VehiclePopUp } from "./popup";
import { ValidateLocationData } from "../../utils/locations"
import GreenMarkerIcon from "../../assets/green-marker.png"; import GreenMarkerIcon from "../../assets/green-marker.png";
import GrayMarkerIcon from "../../assets/gray-marker.png"; import GrayMarkerIcon from "../../assets/gray-marker.png";
import { logger } from "../../services/monitoring"; import { logger } from "../../services/monitoring";
@@ -44,7 +45,7 @@ const Component = () => {
const retrieveAndStoreLocations = (accessToken) => { const retrieveAndStoreLocations = (accessToken) => {
return getLocations(accessToken) return getLocations(accessToken)
.then((result) => { .then((result) => {
if (result.data != null) { if (result.data != null && ValidateLocationData(result.data) !== false) {
const points = result.data.map((point) => [ const points = result.data.map((point) => [
point.latitude, point.latitude,
point.longitude, point.longitude,

22
src/utils/locations.js Normal file
View File

@@ -0,0 +1,22 @@
export const ValidateLocationData = (location) => {
if (Math.abs(location.latitude) > 90 || Math.abs(location.longitude) > 180) {
return false;
}
if (location.altitude === 1401) {
return false;
}
return true;
}
export const ValidateLocationByParam = (parameter, value) => {
switch (parameter) {
case "latitude":
return Math.abs(value) <= 90;
case "longitude":
return Math.abs(value) <= 180;
case "altitude":
return value !== 1401;
default:
return false;
}
}