CEC-6042 - Add offset to Portal timestamps
This commit is contained in:
@@ -2857,7 +2857,7 @@ exports[`App Route /issue-info authenticated 1`] = `
|
|||||||
Created
|
Created
|
||||||
</b>
|
</b>
|
||||||
:
|
:
|
||||||
12/9/2022 11:16:38 PM
|
12/09/2022 23:16:38+00:00
|
||||||
</p>
|
</p>
|
||||||
<img
|
<img
|
||||||
alt="Issue images"
|
alt="Issue images"
|
||||||
@@ -3692,7 +3692,7 @@ exports[`App Route /issues authenticated 1`] = `
|
|||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
12/9/2022 11:16:38 PM
|
12/09/2022 23:16:38+00:00
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr
|
<tr
|
||||||
@@ -3725,7 +3725,7 @@ exports[`App Route /issues authenticated 1`] = `
|
|||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
12/9/2022 11:16:38 PM
|
12/09/2022 23:16:38+00:00
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -4492,7 +4492,7 @@ exports[`App Route /package-deploy authenticated 1`] = `
|
|||||||
class="MuiTypography-root MuiTypography-body2"
|
class="MuiTypography-root MuiTypography-body2"
|
||||||
>
|
>
|
||||||
Created
|
Created
|
||||||
7/1/2021 10:40:07 PM
|
07/01/2021 22:40:07+00:00
|
||||||
.
|
.
|
||||||
</p>
|
</p>
|
||||||
<div
|
<div
|
||||||
@@ -5875,12 +5875,12 @@ exports[`App Route /package-status authenticated 1`] = `
|
|||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
7/1/2021 10:40:07 PM
|
07/01/2021 22:40:07+00:00
|
||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
7/12/2021 6:22:13 PM
|
07/12/2021 18:22:13+00:00
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr
|
<tr
|
||||||
@@ -5941,12 +5941,12 @@ exports[`App Route /package-status authenticated 1`] = `
|
|||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
7/1/2021 10:40:07 PM
|
07/01/2021 22:40:07+00:00
|
||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
7/12/2021 6:22:13 PM
|
07/12/2021 18:22:13+00:00
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr
|
<tr
|
||||||
@@ -6007,12 +6007,12 @@ exports[`App Route /package-status authenticated 1`] = `
|
|||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
7/1/2021 10:40:07 PM
|
07/01/2021 22:40:07+00:00
|
||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
7/12/2021 6:22:13 PM
|
07/12/2021 18:22:13+00:00
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -7190,12 +7190,12 @@ exports[`App Route /packages authenticated 1`] = `
|
|||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
7/1/2021 10:40:07 PM
|
07/01/2021 22:40:07+00:00
|
||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
7/12/2021 6:22:13 PM
|
07/12/2021 18:22:13+00:00
|
||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
|
|||||||
@@ -315,7 +315,7 @@ exports[`CarUpdatesTab Render 1`] = `
|
|||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
1/13/2023 2:11:33 AM
|
01/13/2023 02:11:33+00:00
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr
|
<tr
|
||||||
@@ -334,7 +334,7 @@ exports[`CarUpdatesTab Render 1`] = `
|
|||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
1/13/2023 2:11:33 AM
|
01/13/2023 02:11:33+00:00
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
@@ -212,7 +212,7 @@ exports[`DigitalTwinTab Render 1`] = `
|
|||||||
Updated At
|
Updated At
|
||||||
</b>
|
</b>
|
||||||
:
|
:
|
||||||
7/26/2022 12:26:38 AM
|
07/26/2022 00:26:38+00:00
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
|
|||||||
@@ -546,7 +546,7 @@ exports[`ECUsTab Render 1`] = `
|
|||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
7/14/2021 8:09:40 PM
|
07/14/2021 20:09:40+00:00
|
||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body makeStyles-limitWidthTableCell-0 MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body makeStyles-limitWidthTableCell-0 MuiTableCell-alignCenter"
|
||||||
@@ -659,7 +659,7 @@ exports[`ECUsTab Render 1`] = `
|
|||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
7/14/2021 8:09:40 PM
|
07/14/2021 20:09:40+00:00
|
||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body makeStyles-limitWidthTableCell-0 MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body makeStyles-limitWidthTableCell-0 MuiTableCell-alignCenter"
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ describe("CANSignalsContext", () => {
|
|||||||
|
|
||||||
const expectedSignalsData = [
|
const expectedSignalsData = [
|
||||||
{
|
{
|
||||||
timestamp: "7/14/2021 8:09:40 PM",
|
timestamp: "07/14/2021 20:09:40+00:00",
|
||||||
signal: "signal",
|
signal: "signal",
|
||||||
value: 123
|
value: 123
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ exports[`CarUpdateStatusTable Render 1`] = `
|
|||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
8/23/2021 5:06:38 PM
|
08/23/2021 17:06:38+00:00
|
||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
@@ -137,7 +137,7 @@ exports[`CarUpdateStatusTable Render 1`] = `
|
|||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
8/23/2021 5:06:38 PM
|
08/23/2021 17:06:38+00:00
|
||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
@@ -159,7 +159,7 @@ exports[`CarUpdateStatusTable Render 1`] = `
|
|||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
8/23/2021 5:06:38 PM
|
08/23/2021 17:06:38+00:00
|
||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
@@ -181,7 +181,7 @@ exports[`CarUpdateStatusTable Render 1`] = `
|
|||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
8/23/2021 5:06:38 PM
|
08/23/2021 17:06:38+00:00
|
||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
@@ -203,7 +203,7 @@ exports[`CarUpdateStatusTable Render 1`] = `
|
|||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
8/23/2021 5:06:38 PM
|
08/23/2021 17:06:38+00:00
|
||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import api from "../../../services/vehiclesAPI";
|
|||||||
import DateFnsUtils from '@date-io/date-fns';
|
import DateFnsUtils from '@date-io/date-fns';
|
||||||
import { TableHead } from "@mui/material";
|
import { TableHead } from "@mui/material";
|
||||||
import { logger } from "../../../services/monitoring";
|
import { logger } from "../../../services/monitoring";
|
||||||
|
import { LocalDateTimeString } from "../../../utils/dates";
|
||||||
import { useStatusContext } from "../../Contexts/StatusContext";
|
import { useStatusContext } from "../../Contexts/StatusContext";
|
||||||
|
|
||||||
const tableColumns = [
|
const tableColumns = [
|
||||||
@@ -314,8 +315,8 @@ const TRexLogsTable = ({ vin, token, classes }) => {
|
|||||||
{getFilteredLogs(logs).slice(-getDesiredSize(), (pageIndex === 0 ? undefined : -(pageSize * pageIndex))).reverse().map((log, i) => (
|
{getFilteredLogs(logs).slice(-getDesiredSize(), (pageIndex === 0 ? undefined : -(pageSize * pageIndex))).reverse().map((log, i) => (
|
||||||
<TableRow key={log.trex_timestamp + log.cloud_timestamp} >
|
<TableRow key={log.trex_timestamp + log.cloud_timestamp} >
|
||||||
<TableCell align="center">{log.level}</TableCell>
|
<TableCell align="center">{log.level}</TableCell>
|
||||||
<TableCell align="center" style={{ wordBreak: "break-all" }}>{log.trex_timestamp}</TableCell>
|
<TableCell align="center" style={{ wordBreak: "break-all" }}>{LocalDateTimeString(log.trex_timestamp)}</TableCell>
|
||||||
<TableCell align="center" style={{ wordBreak: "break-all" }}>{log.cloud_timestamp}</TableCell>
|
<TableCell align="center" style={{ wordBreak: "break-all" }}>{LocalDateTimeString(log.cloud_timestamp)}</TableCell>
|
||||||
<TableCell align="center">{log.line_number}</TableCell>
|
<TableCell align="center">{log.line_number}</TableCell>
|
||||||
<TableCell align="center" style={{ wordBreak: "break-all" }}>{log.filename}</TableCell>
|
<TableCell align="center" style={{ wordBreak: "break-all" }}>{log.filename}</TableCell>
|
||||||
<TableCell align="left" style={{ wordBreak: "break-all" }}>{log.msg}</TableCell>
|
<TableCell align="left" style={{ wordBreak: "break-all" }}>{log.msg}</TableCell>
|
||||||
|
|||||||
@@ -285,7 +285,7 @@ exports[`Suppliers page Render 1`] = `
|
|||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
7/14/2021 8:09:40 PM
|
07/14/2021 20:09:40+00:00
|
||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
@@ -341,7 +341,7 @@ exports[`Suppliers page Render 1`] = `
|
|||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
7/16/2021 10:09:40 PM
|
07/16/2021 22:09:40+00:00
|
||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
@@ -397,7 +397,7 @@ exports[`Suppliers page Render 1`] = `
|
|||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
>
|
>
|
||||||
7/16/2021 10:09:40 PM
|
07/16/2021 22:09:40+00:00
|
||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
|
||||||
|
|||||||
@@ -9,6 +9,30 @@ export const tsLocalDateTimeString = (timestamp) => {
|
|||||||
|
|
||||||
export const LocalDateTimeString = (datestring) => {
|
export const LocalDateTimeString = (datestring) => {
|
||||||
if (!datestring) return "";
|
if (!datestring) return "";
|
||||||
const date = new Date(datestring.replace(" ", "T"));
|
|
||||||
return `${date.toLocaleDateString()} ${date.toLocaleTimeString()}`;
|
// adapted from https://www.30secondsofcode.org/js/s/iso-format-date-with-timezone/
|
||||||
|
|
||||||
|
// Pad a number to 2 digits
|
||||||
|
const pad = n => `${Math.floor(Math.abs(n))}`.padStart(2, '0');
|
||||||
|
|
||||||
|
// Get timezone offset in ISO format (+hh:mm or -hh:mm)
|
||||||
|
const getTzOffset = date => {
|
||||||
|
const tzOffset = -date.getTimezoneOffset();
|
||||||
|
const diff = tzOffset >= 0 ? '+' : '-';
|
||||||
|
return diff + pad(tzOffset / 60) + ':' + pad(tzOffset % 60);
|
||||||
|
};
|
||||||
|
|
||||||
|
const toISOStringWithTimezone = date => {
|
||||||
|
return pad(date.getMonth() + 1) +
|
||||||
|
'/' + pad(date.getDate()) +
|
||||||
|
'/' + pad(date.getFullYear()) +
|
||||||
|
' ' + pad(date.getHours()) +
|
||||||
|
':' + pad(date.getMinutes()) +
|
||||||
|
':' + pad(date.getSeconds()) +
|
||||||
|
getTzOffset(date);
|
||||||
|
};
|
||||||
|
|
||||||
|
return toISOStringWithTimezone(
|
||||||
|
new Date(datestring.replace(" ", "T"))
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user