diff options
author | Kieran Dodson <128472473+K-J-Dod24@users.noreply.github.com> | 2023-05-05 09:17:28 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-05 09:17:28 +0100 |
commit | e7dcea7e3fed4d9727c244202b5b748a666f29f6 (patch) | |
tree | 607467d27208fa1e428288cbd2bf36c426e91d3b /modern | |
parent | 69752f66bad5314e2d9ba6cba1a00eab1807ecde (diff) | |
parent | e16f7353e850f69b29f285c80e1a0f200e5992be (diff) | |
download | trackermap-web-e7dcea7e3fed4d9727c244202b5b748a666f29f6.tar.gz trackermap-web-e7dcea7e3fed4d9727c244202b5b748a666f29f6.tar.bz2 trackermap-web-e7dcea7e3fed4d9727c244202b5b748a666f29f6.zip |
Merge branch 'traccar:master' into Teltonika-io30-faultCount
Diffstat (limited to 'modern')
-rw-r--r-- | modern/src/common/attributes/usePositionAttributes.js | 4 | ||||
-rw-r--r-- | modern/src/common/components/GeofencesValue.js | 9 | ||||
-rw-r--r-- | modern/src/common/components/PositionValue.js | 6 | ||||
-rw-r--r-- | modern/src/main/DeviceRow.js | 17 | ||||
-rw-r--r-- | modern/src/reports/CombinedReportPage.js | 2 | ||||
-rw-r--r-- | modern/src/reports/ScheduledPage.js | 2 | ||||
-rw-r--r-- | modern/src/settings/DevicesPage.js | 9 | ||||
-rw-r--r-- | modern/src/settings/PreferencesPage.js | 1 |
8 files changed, 30 insertions, 20 deletions
diff --git a/modern/src/common/attributes/usePositionAttributes.js b/modern/src/common/attributes/usePositionAttributes.js index 78e27e9e..b1b6af1d 100644 --- a/modern/src/common/attributes/usePositionAttributes.js +++ b/modern/src/common/attributes/usePositionAttributes.js @@ -68,6 +68,10 @@ export default (t) => useMemo(() => ({ type: 'string', property: true, }, + geofenceIds: { + name: t('sharedGeofences'), + property: true, + }, raw: { name: t('positionRaw'), type: 'string', diff --git a/modern/src/common/components/GeofencesValue.js b/modern/src/common/components/GeofencesValue.js new file mode 100644 index 00000000..4808a8a2 --- /dev/null +++ b/modern/src/common/components/GeofencesValue.js @@ -0,0 +1,9 @@ +import { useSelector } from 'react-redux'; + +const GeofencesValue = ({ geofenceIds }) => { + const geofences = useSelector((state) => state.geofences.items); + + return geofenceIds.map((id) => geofences[id]?.name).join(', '); +}; + +export default GeofencesValue; diff --git a/modern/src/common/components/PositionValue.js b/modern/src/common/components/PositionValue.js index a819a018..a6b38e31 100644 --- a/modern/src/common/components/PositionValue.js +++ b/modern/src/common/components/PositionValue.js @@ -9,6 +9,7 @@ import { useAttributePreference, usePreference } from '../util/preferences'; import { useTranslation } from './LocalizationProvider'; import { useAdministrator } from '../util/permissions'; import AddressValue from './AddressValue'; +import GeofencesValue from './GeofencesValue'; const PositionValue = ({ position, property, attribute }) => { const t = useTranslation(); @@ -83,6 +84,11 @@ const PositionValue = ({ position, property, attribute }) => { return (<Link component={RouterLink} underline="none" to={`/network/${position.id}`}>{t('sharedInfoTitle')}</Link>); } return ''; + case 'geofenceIds': + if (value) { + return (<GeofencesValue geofenceIds={value} />); + } + return ''; default: return formatValue(value); } diff --git a/modern/src/main/DeviceRow.js b/modern/src/main/DeviceRow.js index bf5aec3e..44da58f9 100644 --- a/modern/src/main/DeviceRow.js +++ b/modern/src/main/DeviceRow.js @@ -57,22 +57,9 @@ const DeviceRow = ({ data, index, style }) => { const item = data[index]; const position = useSelector((state) => state.session.positions[item.id]); - const geofences = useSelector((state) => state.geofences.items); - const devicePrimary = useAttributePreference('devicePrimary', 'name'); const deviceSecondary = useAttributePreference('deviceSecondary', ''); - const formatProperty = (key) => { - if (key === 'geofenceIds') { - const geofenceIds = item[key] || []; - return geofenceIds - .filter((id) => geofences.hasOwnProperty(id)) - .map((id) => geofences[id].name) - .join(', '); - } - return item[key]; - }; - const secondaryText = () => { let status; if (item.status === 'online' || !item.lastUpdate) { @@ -82,7 +69,7 @@ const DeviceRow = ({ data, index, style }) => { } return ( <> - {deviceSecondary && item[deviceSecondary] && `${formatProperty(deviceSecondary)} • `} + {deviceSecondary && item[deviceSecondary] && `${item[deviceSecondary]} • `} <span className={classes[getStatusColor(item.status)]}>{status}</span> </> ); @@ -101,7 +88,7 @@ const DeviceRow = ({ data, index, style }) => { </Avatar> </ListItemAvatar> <ListItemText - primary={formatProperty(devicePrimary)} + primary={item[devicePrimary]} primaryTypographyProps={{ noWrap: true }} secondary={secondaryText()} secondaryTypographyProps={{ noWrap: true }} diff --git a/modern/src/reports/CombinedReportPage.js b/modern/src/reports/CombinedReportPage.js index 4efc7b9c..ecd65a24 100644 --- a/modern/src/reports/CombinedReportPage.js +++ b/modern/src/reports/CombinedReportPage.js @@ -56,7 +56,7 @@ const CombinedReportPage = () => { }); return ( - <PageLayout menu={<ReportsMenu />} breadcrumbs={['reportTitle', 'reportRoute']}> + <PageLayout menu={<ReportsMenu />} breadcrumbs={['reportTitle', 'reportCombined']}> <div className={classes.container}> {Boolean(items.length) && ( <div className={classes.containerMap}> diff --git a/modern/src/reports/ScheduledPage.js b/modern/src/reports/ScheduledPage.js index 7dd225ba..50e335d5 100644 --- a/modern/src/reports/ScheduledPage.js +++ b/modern/src/reports/ScheduledPage.js @@ -62,7 +62,7 @@ const ScheduledPage = () => { }; return ( - <PageLayout menu={<ReportsMenu />} breadcrumbs={['settingsTitle', 'sharedDrivers']}> + <PageLayout menu={<ReportsMenu />} breadcrumbs={['settingsTitle', 'reportScheduled']}> <Table> <TableHead> <TableRow> diff --git a/modern/src/settings/DevicesPage.js b/modern/src/settings/DevicesPage.js index 5a053766..d3ebc85f 100644 --- a/modern/src/settings/DevicesPage.js +++ b/modern/src/settings/DevicesPage.js @@ -1,4 +1,5 @@ import React, { useState } from 'react'; +import { useSelector } from 'react-redux'; import { useNavigate } from 'react-router-dom'; import { Table, TableRow, TableCell, TableHead, TableBody, @@ -29,6 +30,8 @@ const DevicesPage = () => { const navigate = useNavigate(); const t = useTranslation(); + const groups = useSelector((state) => state.groups.items); + const hours12 = usePreference('twelveHourFormat'); const deviceReadonly = useDeviceReadonly(); @@ -60,13 +63,14 @@ const DevicesPage = () => { }; return ( - <PageLayout menu={<SettingsMenu />} breadcrumbs={['settingsTitle', 'sharedDrivers']}> + <PageLayout menu={<SettingsMenu />} breadcrumbs={['settingsTitle', 'deviceTitle']}> <SearchHeader keyword={searchKeyword} setKeyword={setSearchKeyword} /> <Table> <TableHead> <TableRow> <TableCell>{t('sharedName')}</TableCell> <TableCell>{t('deviceIdentifier')}</TableCell> + <TableCell>{t('groupParent')}</TableCell> <TableCell>{t('sharedPhone')}</TableCell> <TableCell>{t('deviceModel')}</TableCell> <TableCell>{t('deviceContact')}</TableCell> @@ -79,6 +83,7 @@ const DevicesPage = () => { <TableRow key={item.id}> <TableCell>{item.name}</TableCell> <TableCell>{item.uniqueId}</TableCell> + <TableCell>{item.groupId ? groups[item.groupId].name : null}</TableCell> <TableCell>{item.phone}</TableCell> <TableCell>{item.model}</TableCell> <TableCell>{item.contact}</TableCell> @@ -94,7 +99,7 @@ const DevicesPage = () => { /> </TableCell> </TableRow> - )) : (<TableShimmer columns={6} endAction />)} + )) : (<TableShimmer columns={7} endAction />)} </TableBody> </Table> <CollectionFab editPath="/settings/device" /> diff --git a/modern/src/settings/PreferencesPage.js b/modern/src/settings/PreferencesPage.js index fcf34739..a05924a9 100644 --- a/modern/src/settings/PreferencesPage.js +++ b/modern/src/settings/PreferencesPage.js @@ -27,7 +27,6 @@ const deviceFields = [ { id: 'phone', name: 'sharedPhone' }, { id: 'model', name: 'deviceModel' }, { id: 'contact', name: 'deviceContact' }, - { id: 'geofenceIds', name: 'sharedGeofences' }, ]; const useStyles = makeStyles((theme) => ({ |