(value ? "open" : "closed");
const mapOpenCloseState = (value) =>
keyValueTemplate(value[0], openCloseState(value[1]));
+const windowState = (value) => {
+ if (value[1] === 0 || value[1] > 100) {
+ return keyValueTemplate(value[0], `closed (${value[1]})`);
+ } else {
+ return keyValueTemplate(value[0], `${value[1]}% open`);
+ }
+}
+
const DigitalTwin = (props) => {
const classes = useStyles();
const { battery, doors, location, trex_version, ip, updated, windows, misc_windows, sunroof, dbc_version, door_locks } = props;
@@ -45,12 +53,7 @@ const DigitalTwin = (props) => {
Windows
{Object.entries(windows).map((value) => {
- if (value[1] === 0) {
- return keyValueTemplate(value[0], "closed");
- } else {
- const percentOpen = Math.min(value[1], 100);
- return keyValueTemplate(value[0], `${percentOpen}% open`);
- }
+ return windowState(value);
})}
)}
@@ -58,11 +61,7 @@ const DigitalTwin = (props) => {
Misc Windows
{Object.entries(misc_windows).map((value) => {
- if (value[1] === 0 || value[1] > 100) {
- return keyValueTemplate(value[0], `closed ${value[1]}%`);
- } else {
- return keyValueTemplate(value[0], `${value[1]}% open`);
- }
+ return windowState(value);
})}
)}
@@ -70,12 +69,7 @@ const DigitalTwin = (props) => {
Sunroof
{Object.entries(sunroof).map((value) => {
- if (value[1] === 0) {
- return keyValueTemplate(value[0], "closed");
- } else {
- const percentOpen = Math.min(value[1], 100);
- return keyValueTemplate(value[0], `${percentOpen}% open`);
- }
+ return windowState(value);
})}
)}
diff --git a/src/utils/locations.js b/src/utils/locations.js
index a308375..f4fdaba 100644
--- a/src/utils/locations.js
+++ b/src/utils/locations.js
@@ -1,3 +1,5 @@
+const invalidLocation = 99999;
+
export const ValidateLocationData = (location) => {
if (Math.abs(location.latitude) > 90 || Math.abs(location.longitude) > 180) {
return false;
@@ -9,6 +11,7 @@ export const ValidateLocationData = (location) => {
}
export const ValidateLocationByParam = (parameter, value) => {
+ if (invalidLocation === value) return false;
switch (parameter) {
case "latitude":
return Math.abs(value) <= 90;
From 324e3d2b91de584725991f54a907b028707d1181 Mon Sep 17 00:00:00 2001
From: das31 <31259710+das31@users.noreply.github.com>
Date: Fri, 10 Mar 2023 00:13:27 -0500
Subject: [PATCH 5/5] CEC-3514 create can self serve page (#288)
* first push
* fix snapshot
* remove unused vars
* update snap
* remove some console logs
* Remove snapshot
* Update
* CEC-3770 Update cert expire text (#282)
* CEC-3577: fetch T.Rex log from the cloud (#283)
* CEC-3577: fetch T.Rex log from the cloud
* tabs?
* CSS
* smells
* fix smells and warnings
* suggestions
* CEC-3577 Style tweak (#284)
* CEC-3577: trex logs (#285)
* CEC-3577: trex logs
add filtering
add progress bar for log fetching
always fetch all the logs
request canceling
* don't hide progress
* CEC-3751, CEC-3478 misc window status and invalid location value (#287)
* CEC-3751 misc window status
CEC-3478 invalid location value
* Fix snapshot
Update browser list
* merge develop update snap
* resolve comments
* add date and time picker seperately, use checkbox for dropdown
* added verification for date and fixed time picker
* fix snap
* resolve comments
* removed small bug
* tweak layout
* added snap shot test for can signals
* small change
* Fix test
* fix sms snap
* change function name
* mock can signals api
* resolved comments
* fix ci
* Clean up
---------
Co-authored-by: jwu-fisker
Co-authored-by: John Wu <76966357+jwu-fisker@users.noreply.github.com>
Co-authored-by: Eduard Voronkin <116690094+eduardvoronkin@users.noreply.github.com>
---
package-lock.json | 40 ++
package.json | 2 +
.../App/__snapshots__/App.test.js.snap | 24 ++
.../__snapshots__/index.test.jsx.snap | 374 ++++++++++++++++++
.../CANSelfServe/SelfServe/index.jsx | 197 +++++++++
.../CANSelfServe/SelfServe/index.test.jsx | 42 ++
src/components/CANSelfServe/SelfServeTab.jsx | 21 +
.../Status/__snapshots__/index.test.jsx.snap | 24 ++
src/components/Cars/Status/index.jsx | 7 +-
src/components/Cars/Status/index.test.jsx | 8 +-
src/components/Contexts/CANFiltersContext.jsx | 8 +-
.../Contexts/CANSignalsExportContext.jsx | 73 ++++
src/components/Contexts/VehicleContext.jsx | 8 +-
.../__mocks__/CANSignalsExportContext.jsx | 23 ++
src/components/Controls/TRexLogs/index.jsx | 13 +-
.../Send/__snapshots__/index.test.jsx.snap | 167 +++++++-
src/components/SMS/Send/index.jsx | 4 +-
src/components/SMS/Send/index.test.jsx | 14 +-
src/services/CANSignalAPI.js | 32 ++
src/services/__mocks__/CANSignalAPI.js | 16 +
src/utils/http.js | 1 -
21 files changed, 1059 insertions(+), 39 deletions(-)
create mode 100644 src/components/CANSelfServe/SelfServe/__snapshots__/index.test.jsx.snap
create mode 100644 src/components/CANSelfServe/SelfServe/index.jsx
create mode 100644 src/components/CANSelfServe/SelfServe/index.test.jsx
create mode 100644 src/components/CANSelfServe/SelfServeTab.jsx
create mode 100644 src/components/Contexts/CANSignalsExportContext.jsx
create mode 100644 src/components/Contexts/__mocks__/CANSignalsExportContext.jsx
create mode 100644 src/services/CANSignalAPI.js
create mode 100644 src/services/__mocks__/CANSignalAPI.js
diff --git a/package-lock.json b/package-lock.json
index 176b24a..5dd6166 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -27,6 +27,8 @@
"date-fns": "^2.29.2",
"email-validator": "^2.0.4",
"env-cmd": "^10.1.0",
+ "file-saver": "^2.0.5",
+ "filesaver": "^0.0.13",
"jwt-decode": "^3.1.2",
"leaflet": "^1.8.0",
"material-ui-dropzone": "^3.5.0",
@@ -9424,6 +9426,11 @@
"webpack": "^4.0.0 || ^5.0.0"
}
},
+ "node_modules/file-saver": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
+ "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
+ },
"node_modules/file-selector": {
"version": "0.1.19",
"resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.1.19.tgz",
@@ -9443,6 +9450,15 @@
"minimatch": "^3.0.4"
}
},
+ "node_modules/filesaver": {
+ "version": "0.0.13",
+ "resolved": "https://registry.npmjs.org/filesaver/-/filesaver-0.0.13.tgz",
+ "integrity": "sha512-ay2iShYJKmzKRPk89cgb14foqtCXcJIe5i+qdlSPAouKfBv7F2VZ0lxk9GjpcODe9p2YrXfi3Q+4CRn7ZDmleQ==",
+ "dependencies": {
+ "mkdirp": "^0.5.0",
+ "safename": "0.0.4"
+ }
+ },
"node_modules/filesize": {
"version": "8.0.7",
"resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz",
@@ -15612,6 +15628,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/safename": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/safename/-/safename-0.0.4.tgz",
+ "integrity": "sha512-+n4TsvESZKTXbHxOTSyQ0Q1JCXRb6MohgrqC2fbdALzTNQP/IhPOnCNRA4JPtagQq+6DD5ZsQ3lKMy57BYvwJA=="
+ },
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -24710,6 +24731,11 @@
"schema-utils": "^3.0.0"
}
},
+ "file-saver": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
+ "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
+ },
"file-selector": {
"version": "0.1.19",
"resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.1.19.tgz",
@@ -24726,6 +24752,15 @@
"minimatch": "^3.0.4"
}
},
+ "filesaver": {
+ "version": "0.0.13",
+ "resolved": "https://registry.npmjs.org/filesaver/-/filesaver-0.0.13.tgz",
+ "integrity": "sha512-ay2iShYJKmzKRPk89cgb14foqtCXcJIe5i+qdlSPAouKfBv7F2VZ0lxk9GjpcODe9p2YrXfi3Q+4CRn7ZDmleQ==",
+ "requires": {
+ "mkdirp": "^0.5.0",
+ "safename": "0.0.4"
+ }
+ },
"filesize": {
"version": "8.0.7",
"resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz",
@@ -29080,6 +29115,11 @@
"is-regex": "^1.1.4"
}
},
+ "safename": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/safename/-/safename-0.0.4.tgz",
+ "integrity": "sha512-+n4TsvESZKTXbHxOTSyQ0Q1JCXRb6MohgrqC2fbdALzTNQP/IhPOnCNRA4JPtagQq+6DD5ZsQ3lKMy57BYvwJA=="
+ },
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
diff --git a/package.json b/package.json
index 68a020d..f90fa4c 100644
--- a/package.json
+++ b/package.json
@@ -22,6 +22,8 @@
"date-fns": "^2.29.2",
"email-validator": "^2.0.4",
"env-cmd": "^10.1.0",
+ "file-saver": "^2.0.5",
+ "filesaver": "^0.0.13",
"jwt-decode": "^3.1.2",
"leaflet": "^1.8.0",
"material-ui-dropzone": "^3.5.0",
diff --git a/src/components/App/__snapshots__/App.test.js.snap b/src/components/App/__snapshots__/App.test.js.snap
index d1a399a..7ec5bb8 100644
--- a/src/components/App/__snapshots__/App.test.js.snap
+++ b/src/components/App/__snapshots__/App.test.js.snap
@@ -9911,6 +9911,24 @@ exports[`App Route /vehicle-status authenticated 1`] = `
class="MuiTouchRipple-root"
/>
+