Skip to content

Commit 2fec983

Browse files
committed
Multi device trips and stops
1 parent c3408a7 commit 2fec983

File tree

2 files changed

+26
-8
lines changed

2 files changed

+26
-8
lines changed

src/reports/StopReportPage.jsx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { useState } from 'react';
22
import { useNavigate } from 'react-router-dom';
3+
import { useSelector } from 'react-redux';
34
import {
45
IconButton,
56
Table, TableBody, TableCell, TableHead, TableRow,
@@ -43,6 +44,8 @@ const StopReportPage = () => {
4344
const { classes } = useReportStyles();
4445
const t = useTranslation();
4546

47+
const devices = useSelector((state) => state.devices.items);
48+
4649
const distanceUnit = useAttributePreference('distanceUnit');
4750
const volumeUnit = useAttributePreference('volumeUnit');
4851

@@ -51,8 +54,10 @@ const StopReportPage = () => {
5154
const [loading, setLoading] = useState(false);
5255
const [selectedItem, setSelectedItem] = useState(null);
5356

54-
const handleSubmit = useCatch(async ({ deviceId, from, to, type }) => {
55-
const query = new URLSearchParams({ deviceId, from, to });
57+
const handleSubmit = useCatch(async ({ deviceIds, groupIds, from, to, type }) => {
58+
const query = new URLSearchParams({ from, to });
59+
deviceIds.forEach((deviceId) => query.append('deviceId', deviceId));
60+
groupIds.forEach((groupId) => query.append('groupId', groupId));
5661
if (type === 'export') {
5762
window.location.assign(`/api/reports/stops/xlsx?${query.toString()}`);
5863
} else if (type === 'mail') {
@@ -90,6 +95,8 @@ const StopReportPage = () => {
9095
const formatValue = (item, key) => {
9196
const value = item[key];
9297
switch (key) {
98+
case 'deviceId':
99+
return devices[value].name;
93100
case 'startTime':
94101
case 'endTime':
95102
return formatTime(value, 'minutes');
@@ -131,14 +138,15 @@ const StopReportPage = () => {
131138
)}
132139
<div className={classes.containerMain}>
133140
<div className={classes.header}>
134-
<ReportFilter handleSubmit={handleSubmit} handleSchedule={handleSchedule} loading={loading}>
141+
<ReportFilter handleSubmit={handleSubmit} handleSchedule={handleSchedule} multiDevice includeGroups loading={loading}>
135142
<ColumnSelect columns={columns} setColumns={setColumns} columnsArray={columnsArray} />
136143
</ReportFilter>
137144
</div>
138145
<Table>
139146
<TableHead>
140147
<TableRow>
141148
<TableCell className={classes.columnAction} />
149+
<TableCell>{t('sharedDevice')}</TableCell>
142150
{columns.map((key) => (<TableCell key={key}>{t(columnsMap.get(key))}</TableCell>))}
143151
</TableRow>
144152
</TableHead>
@@ -156,13 +164,14 @@ const StopReportPage = () => {
156164
</IconButton>
157165
)}
158166
</TableCell>
167+
<TableCell>{devices[item.deviceId].name}</TableCell>
159168
{columns.map((key) => (
160169
<TableCell key={key}>
161170
{formatValue(item, key)}
162171
</TableCell>
163172
))}
164173
</TableRow>
165-
)) : (<TableShimmer columns={columns.length + 1} startAction />)}
174+
)) : (<TableShimmer columns={columns.length + 2} startAction />)}
166175
</TableBody>
167176
</Table>
168177
</div>

src/reports/TripReportPage.jsx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { useState } from 'react';
22
import { useNavigate } from 'react-router-dom';
3+
import { useSelector } from 'react-redux';
34
import {
45
IconButton, Table, TableBody, TableCell, TableHead, TableRow,
56
} from '@mui/material';
@@ -48,6 +49,8 @@ const TripReportPage = () => {
4849
const { classes } = useReportStyles();
4950
const t = useTranslation();
5051

52+
const devices = useSelector((state) => state.devices.items);
53+
5154
const distanceUnit = useAttributePreference('distanceUnit');
5255
const speedUnit = useAttributePreference('speedUnit');
5356
const volumeUnit = useAttributePreference('volumeUnit');
@@ -93,8 +96,10 @@ const TripReportPage = () => {
9396
}
9497
}, [selectedItem]);
9598

96-
const handleSubmit = useCatch(async ({ deviceId, from, to, type }) => {
97-
const query = new URLSearchParams({ deviceId, from, to });
99+
const handleSubmit = useCatch(async ({ deviceIds, groupIds, from, to, type }) => {
100+
const query = new URLSearchParams({ from, to });
101+
deviceIds.forEach((deviceId) => query.append('deviceId', deviceId));
102+
groupIds.forEach((groupId) => query.append('groupId', groupId));
98103
if (type === 'export') {
99104
window.location.assign(`/api/reports/trips/xlsx?${query.toString()}`);
100105
} else if (type === 'mail') {
@@ -132,6 +137,8 @@ const TripReportPage = () => {
132137
const formatValue = (item, key) => {
133138
const value = item[key];
134139
switch (key) {
140+
case 'deviceId':
141+
return devices[value].name;
135142
case 'startTime':
136143
case 'endTime':
137144
return formatTime(value, 'minutes');
@@ -175,14 +182,15 @@ const TripReportPage = () => {
175182
)}
176183
<div className={classes.containerMain}>
177184
<div className={classes.header}>
178-
<ReportFilter handleSubmit={handleSubmit} handleSchedule={handleSchedule} loading={loading}>
185+
<ReportFilter handleSubmit={handleSubmit} handleSchedule={handleSchedule} multiDevice includeGroups loading={loading}>
179186
<ColumnSelect columns={columns} setColumns={setColumns} columnsArray={columnsArray} />
180187
</ReportFilter>
181188
</div>
182189
<Table>
183190
<TableHead>
184191
<TableRow>
185192
<TableCell className={classes.columnAction} />
193+
<TableCell>{t('sharedDevice')}</TableCell>
186194
{columns.map((key) => (<TableCell key={key}>{t(columnsMap.get(key))}</TableCell>))}
187195
</TableRow>
188196
</TableHead>
@@ -200,13 +208,14 @@ const TripReportPage = () => {
200208
</IconButton>
201209
)}
202210
</TableCell>
211+
<TableCell>{devices[item.deviceId].name}</TableCell>
203212
{columns.map((key) => (
204213
<TableCell key={key}>
205214
{formatValue(item, key)}
206215
</TableCell>
207216
))}
208217
</TableRow>
209-
)) : (<TableShimmer columns={columns.length + 1} startAction />)}
218+
)) : (<TableShimmer columns={columns.length + 2} startAction />)}
210219
</TableBody>
211220
</Table>
212221
</div>

0 commit comments

Comments
 (0)