@trackunit/filters-asset-filter-definitions 2.9.39 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.cjs.js CHANGED
@@ -45,6 +45,14 @@ var defaultTranslations = {
45
45
  "assetFilters.boundingBoxFilter.value": "Within map area",
46
46
  "assetFilters.can1Profile.label": "CAN1 profile",
47
47
  "assetFilters.can2Profile.label": "CAN2 profile",
48
+ "assetFilters.connectedAccessory.DUALID": "DualID",
49
+ "assetFilters.connectedAccessory.DUALID_II": "DualID II",
50
+ "assetFilters.connectedAccessory.IBUTTON_READER": "iButton Reader",
51
+ "assetFilters.connectedAccessory.K300": "K300",
52
+ "assetFilters.connectedAccessory.label": "Connected Accessory",
53
+ "assetFilters.connectedAccessory.M7_KEYPAD": "M7 Keypad",
54
+ "assetFilters.connectedAccessory.NO_ACCESSORY_CONNECTED": "No accessory connected",
55
+ "assetFilters.connectedAccessory.UNKNOWN": "Unknown",
48
56
  "assetFilters.criticality.CRITICAL": "Critical",
49
57
  "assetFilters.criticality.LOW": "Low",
50
58
  "assetFilters.criticality.NONE": "Good",
@@ -411,6 +419,15 @@ const assetCriticalityState = {
411
419
  LOW: "LOW",
412
420
  NONE: "NONE",
413
421
  };
422
+ const connectedAccessoryType = {
423
+ DUALID: "DUALID",
424
+ DUALID_II: "DUALID_II",
425
+ IBUTTON_READER: "IBUTTON_READER",
426
+ K300: "K300",
427
+ M7_KEYPAD: "M7_KEYPAD",
428
+ NO_ACCESSORY_CONNECTED: "NO_ACCESSORY_CONNECTED",
429
+ UNKNOWN: "UNKNOWN",
430
+ };
414
431
  const deviceHealthDeviceStatus = {
415
432
  CRITICAL: "CRITICAL",
416
433
  LOW: "LOW",
@@ -921,6 +938,66 @@ const GetFleetCan2ProfileSummaryMissingDocument = {
921
938
  },
922
939
  ],
923
940
  };
941
+ const GetFleetConnectedAccessorySummaryDocument = {
942
+ kind: "Document",
943
+ definitions: [
944
+ {
945
+ kind: "OperationDefinition",
946
+ operation: "query",
947
+ name: { kind: "Name", value: "GetFleetConnectedAccessorySummary" },
948
+ variableDefinitions: [
949
+ {
950
+ kind: "VariableDefinition",
951
+ variable: { kind: "Variable", name: { kind: "Name", value: "filters" } },
952
+ type: { kind: "NamedType", name: { kind: "Name", value: "AssetFiltersInput" } },
953
+ },
954
+ ],
955
+ selectionSet: {
956
+ kind: "SelectionSet",
957
+ selections: [
958
+ {
959
+ kind: "Field",
960
+ name: { kind: "Name", value: "assetSummary" },
961
+ arguments: [
962
+ {
963
+ kind: "Argument",
964
+ name: { kind: "Name", value: "filters" },
965
+ value: { kind: "Variable", name: { kind: "Name", value: "filters" } },
966
+ },
967
+ ],
968
+ selectionSet: {
969
+ kind: "SelectionSet",
970
+ selections: [
971
+ {
972
+ kind: "Field",
973
+ name: { kind: "Name", value: "connectedAccessoryTypes" },
974
+ selectionSet: {
975
+ kind: "SelectionSet",
976
+ selections: [
977
+ { kind: "Field", name: { kind: "Name", value: "total" } },
978
+ {
979
+ kind: "Field",
980
+ name: { kind: "Name", value: "summary" },
981
+ selectionSet: {
982
+ kind: "SelectionSet",
983
+ selections: [
984
+ { kind: "Field", name: { kind: "Name", value: "category" } },
985
+ { kind: "Field", name: { kind: "Name", value: "type" } },
986
+ { kind: "Field", name: { kind: "Name", value: "count" } },
987
+ ],
988
+ },
989
+ },
990
+ ],
991
+ },
992
+ },
993
+ ],
994
+ },
995
+ },
996
+ ],
997
+ },
998
+ },
999
+ ],
1000
+ };
924
1001
  const GetFleetCountriesSummaryDocument = {
925
1002
  kind: "Document",
926
1003
  definitions: [
@@ -5305,6 +5382,146 @@ const useCan2ProfileFilter = () => {
5305
5382
  }, [t]);
5306
5383
  };
5307
5384
 
5385
+ /**
5386
+ * Maps an accessory type to its label. An accessory the schema does not know shares the
5387
+ * `UNKNOWN` label, so a value already held in filter state before the client is regenerated still
5388
+ * reads as a label rather than as a raw type.
5389
+ *
5390
+ * @param type - The reported accessory type.
5391
+ * @returns {TranslationKeys} The translation key for the type's label.
5392
+ */
5393
+ const mapConnectedAccessoryTypeToLabelId = (type) => {
5394
+ switch (type) {
5395
+ case connectedAccessoryType.DUALID:
5396
+ return "assetFilters.connectedAccessory.DUALID";
5397
+ case connectedAccessoryType.DUALID_II:
5398
+ return "assetFilters.connectedAccessory.DUALID_II";
5399
+ case connectedAccessoryType.IBUTTON_READER:
5400
+ return "assetFilters.connectedAccessory.IBUTTON_READER";
5401
+ case connectedAccessoryType.K300:
5402
+ return "assetFilters.connectedAccessory.K300";
5403
+ case connectedAccessoryType.M7_KEYPAD:
5404
+ return "assetFilters.connectedAccessory.M7_KEYPAD";
5405
+ case connectedAccessoryType.NO_ACCESSORY_CONNECTED:
5406
+ return "assetFilters.connectedAccessory.NO_ACCESSORY_CONNECTED";
5407
+ default:
5408
+ return "assetFilters.connectedAccessory.UNKNOWN";
5409
+ }
5410
+ };
5411
+ /**
5412
+ * Narrows a reported type to the enum the asset query accepts. A type the schema does not know
5413
+ * folds into `UNKNOWN` rather than becoming an option of its own, because selecting an option puts
5414
+ * its key into filter state and the asset query rejects any value outside the enum.
5415
+ *
5416
+ * @param type - The reported accessory type.
5417
+ * @returns {ConnectedAccessoryType} The matching enum member, or `UNKNOWN`.
5418
+ */
5419
+ const toKnownConnectedAccessoryType = (type) => sharedUtils.objectValues(connectedAccessoryType).find(knownType => knownType === type) ?? connectedAccessoryType.UNKNOWN;
5420
+ /**
5421
+ * Turns the summary rows into one option per accessory type.
5422
+ *
5423
+ * Counts are summed across categories because the filter selects on the type level alone. A type
5424
+ * belongs to exactly one category today, so summing cannot double-count an asset. Types the schema
5425
+ * does not know are summed into the single `UNKNOWN` option, so every key is one the filter can
5426
+ * select on. Display order is not decided here — it follows the translated labels, so
5427
+ * `compareConnectedAccessoryOptions` applies it once the caller has resolved them.
5428
+ *
5429
+ * @param summary - The connected accessory summary rows.
5430
+ * @returns {Array<ConnectedAccessoryOption>} One option per reported type.
5431
+ */
5432
+ const toConnectedAccessoryOptions = (summary) => {
5433
+ const countByType = new Map();
5434
+ summary.forEach(({ type, count }) => {
5435
+ const knownType = toKnownConnectedAccessoryType(type);
5436
+ countByType.set(knownType, (countByType.get(knownType) ?? 0) + count);
5437
+ });
5438
+ return [...countByType.entries()]
5439
+ .filter(([, count]) => count > 0)
5440
+ .map(([type, count]) => ({ key: type, labelId: mapConnectedAccessoryTypeToLabelId(type), count }));
5441
+ };
5442
+ /**
5443
+ * Orders the options for display: alphabetically by label, with `UNKNOWN` last.
5444
+ *
5445
+ * Sorting by count would put the answer an asset gives most often first, which says nothing about
5446
+ * where a reader looks for a given accessory. `UNKNOWN` is pinned last because it is the bucket
5447
+ * `DefaultCheckboxFilter` renders in the footer and leaves out of `Select all`, and because "we
5448
+ * could not tell" belongs below the accessories we could. `NO_ACCESSORY_CONNECTED` is a real
5449
+ * answer, so it sorts among the accessories rather than with `UNKNOWN`.
5450
+ *
5451
+ * @param optionA - The first option to compare.
5452
+ * @param optionB - The option to compare it against.
5453
+ * @returns {number} Negative when `optionA` sorts first, positive when `optionB` does, 0 when tied.
5454
+ */
5455
+ const compareConnectedAccessoryOptions = (optionA, optionB) => {
5456
+ if (optionA.key === optionB.key) {
5457
+ return 0;
5458
+ }
5459
+ if (optionA.key === connectedAccessoryType.UNKNOWN) {
5460
+ return 1;
5461
+ }
5462
+ if (optionB.key === connectedAccessoryType.UNKNOWN) {
5463
+ return -1;
5464
+ }
5465
+ return sharedUtils.stringNaturalCompare(optionA.label, optionB.label);
5466
+ };
5467
+
5468
+ /**
5469
+ * The Connected Accessory Filter component.
5470
+ *
5471
+ * Selects assets by the accessory they report. The options come from the
5472
+ * `connectedAccessoryTypes` summary, which counts assets, so an option's count is what selecting
5473
+ * it returns. The summary field takes no search or limit arguments, so the list is always complete.
5474
+ *
5475
+ * @param props - The filter view props.
5476
+ * @param props.filterDefinition - The filter's definition.
5477
+ * @param props.filterState - The current state of the filter, including selected values.
5478
+ * @param props.filterBarActions - Actions for the filter's interaction with the filter bar.
5479
+ * @returns {ReactElement} React component to render the connected accessory filter.
5480
+ */
5481
+ const ConnectedAccessoryFilter = ({ filterDefinition, filterState, filterBarActions, ...props }) => {
5482
+ const [t] = useTranslation();
5483
+ const activeFilters = filtersGraphqlHook.useActiveAssetFilters(filterState.values);
5484
+ const { data, loading } = reactGraphqlHooks.useQuery(GetFleetConnectedAccessorySummaryDocument, {
5485
+ variables: {
5486
+ filters: {
5487
+ ...activeFilters,
5488
+ connectedAccessoryTypes: null, // Omit the filter's own values so the list shows all options correctly
5489
+ },
5490
+ },
5491
+ fetchPolicy: "cache-first",
5492
+ });
5493
+ const options = react.useMemo(() => {
5494
+ return toConnectedAccessoryOptions(data?.assetSummary?.connectedAccessoryTypes.summary ?? [])
5495
+ .map(({ key, labelId, count }) => ({ key, count, label: t(labelId) }))
5496
+ .sort(compareConnectedAccessoryOptions);
5497
+ }, [data?.assetSummary?.connectedAccessoryTypes.summary, t]);
5498
+ return (jsxRuntime.jsx(filtersFilterBar.DefaultCheckboxFilter, { ...props, filterBarActions: filterBarActions, filterDefinition: filterDefinition, filterState: filterState, loading: loading, options: options, undefinedOptionKey: connectedAccessoryType.UNKNOWN }));
5499
+ };
5500
+
5501
+ /**
5502
+ * Get the Connected Accessory filter definition.
5503
+ *
5504
+ * Grouped under DEVICE; values are the `ConnectedAccessoryType` enum and are fetched dynamically
5505
+ * from the `connectedAccessoryTypes` summary. The `filterKey` maps to
5506
+ * `AssetFiltersInput.connectedAccessoryTypes`. Only the type level is filtered on — a category
5507
+ * filter would add a step without narrowing anything while one category exists.
5508
+ *
5509
+ * @returns {StringArrayFilterDefinition} The Connected Accessory filter definition
5510
+ */
5511
+ const useConnectedAccessoryFilter = () => {
5512
+ const [t] = useTranslation();
5513
+ return react.useMemo(() => {
5514
+ return {
5515
+ filterKey: "connectedAccessoryTypes",
5516
+ type: "stringArray",
5517
+ group: "DEVICE",
5518
+ title: t("assetFilters.connectedAccessory.label"),
5519
+ valueAsText: values => values.map(value => t(mapConnectedAccessoryTypeToLabelId(value))),
5520
+ component: props => jsxRuntime.jsx(ConnectedAccessoryFilter, { ...props }),
5521
+ };
5522
+ }, [t]);
5523
+ };
5524
+
5308
5525
  /**
5309
5526
  * Build the country filter options from the SFS country summary, translating each
5310
5527
  * code to its localized name and ordering the list alphabetically by that name.
@@ -8595,6 +8812,7 @@ exports.useAssetTypeFilter = useAssetTypeFilter;
8595
8812
  exports.useBrandFilter = useBrandFilter;
8596
8813
  exports.useCan1ProfileFilter = useCan1ProfileFilter;
8597
8814
  exports.useCan2ProfileFilter = useCan2ProfileFilter;
8815
+ exports.useConnectedAccessoryFilter = useConnectedAccessoryFilter;
8598
8816
  exports.useCountryFilter = useCountryFilter;
8599
8817
  exports.useCriticalityFilter = useCriticalityFilter;
8600
8818
  exports.useCustomerIdsFilter = useCustomerIdsFilter;
package/index.esm.js CHANGED
@@ -13,7 +13,7 @@ import { geoJsonPolygonSchema, geoJsonPointSchema, geoJsonMultiPolygonSchema, ge
13
13
  import { z } from 'zod';
14
14
  import { useLocalStorage, useDebounce, IconButton, Icon, Text, Button, usePrevious, MenuItem, useMeasure, Popover, PopoverTrigger, PopoverContent, MenuContent } from '@trackunit/react-components';
15
15
  import { titleCase, lowerCase } from 'string-ts';
16
- import { objectValues, getCountryName, stringCompare, hourIntervals, exhaustiveCheck, enumFromValue } from '@trackunit/shared-utils';
16
+ import { objectValues, stringNaturalCompare, getCountryName, stringCompare, hourIntervals, exhaustiveCheck, enumFromValue } from '@trackunit/shared-utils';
17
17
  import { useMachineTypeTranslations } from '@trackunit/translations-machine-type';
18
18
  import { CriticalityIndicator } from '@trackunit/criticality-indicator';
19
19
  import { useDeviceTypeTranslations } from '@trackunit/translations-device';
@@ -43,6 +43,14 @@ var defaultTranslations = {
43
43
  "assetFilters.boundingBoxFilter.value": "Within map area",
44
44
  "assetFilters.can1Profile.label": "CAN1 profile",
45
45
  "assetFilters.can2Profile.label": "CAN2 profile",
46
+ "assetFilters.connectedAccessory.DUALID": "DualID",
47
+ "assetFilters.connectedAccessory.DUALID_II": "DualID II",
48
+ "assetFilters.connectedAccessory.IBUTTON_READER": "iButton Reader",
49
+ "assetFilters.connectedAccessory.K300": "K300",
50
+ "assetFilters.connectedAccessory.label": "Connected Accessory",
51
+ "assetFilters.connectedAccessory.M7_KEYPAD": "M7 Keypad",
52
+ "assetFilters.connectedAccessory.NO_ACCESSORY_CONNECTED": "No accessory connected",
53
+ "assetFilters.connectedAccessory.UNKNOWN": "Unknown",
46
54
  "assetFilters.criticality.CRITICAL": "Critical",
47
55
  "assetFilters.criticality.LOW": "Low",
48
56
  "assetFilters.criticality.NONE": "Good",
@@ -409,6 +417,15 @@ const assetCriticalityState = {
409
417
  LOW: "LOW",
410
418
  NONE: "NONE",
411
419
  };
420
+ const connectedAccessoryType = {
421
+ DUALID: "DUALID",
422
+ DUALID_II: "DUALID_II",
423
+ IBUTTON_READER: "IBUTTON_READER",
424
+ K300: "K300",
425
+ M7_KEYPAD: "M7_KEYPAD",
426
+ NO_ACCESSORY_CONNECTED: "NO_ACCESSORY_CONNECTED",
427
+ UNKNOWN: "UNKNOWN",
428
+ };
412
429
  const deviceHealthDeviceStatus = {
413
430
  CRITICAL: "CRITICAL",
414
431
  LOW: "LOW",
@@ -919,6 +936,66 @@ const GetFleetCan2ProfileSummaryMissingDocument = {
919
936
  },
920
937
  ],
921
938
  };
939
+ const GetFleetConnectedAccessorySummaryDocument = {
940
+ kind: "Document",
941
+ definitions: [
942
+ {
943
+ kind: "OperationDefinition",
944
+ operation: "query",
945
+ name: { kind: "Name", value: "GetFleetConnectedAccessorySummary" },
946
+ variableDefinitions: [
947
+ {
948
+ kind: "VariableDefinition",
949
+ variable: { kind: "Variable", name: { kind: "Name", value: "filters" } },
950
+ type: { kind: "NamedType", name: { kind: "Name", value: "AssetFiltersInput" } },
951
+ },
952
+ ],
953
+ selectionSet: {
954
+ kind: "SelectionSet",
955
+ selections: [
956
+ {
957
+ kind: "Field",
958
+ name: { kind: "Name", value: "assetSummary" },
959
+ arguments: [
960
+ {
961
+ kind: "Argument",
962
+ name: { kind: "Name", value: "filters" },
963
+ value: { kind: "Variable", name: { kind: "Name", value: "filters" } },
964
+ },
965
+ ],
966
+ selectionSet: {
967
+ kind: "SelectionSet",
968
+ selections: [
969
+ {
970
+ kind: "Field",
971
+ name: { kind: "Name", value: "connectedAccessoryTypes" },
972
+ selectionSet: {
973
+ kind: "SelectionSet",
974
+ selections: [
975
+ { kind: "Field", name: { kind: "Name", value: "total" } },
976
+ {
977
+ kind: "Field",
978
+ name: { kind: "Name", value: "summary" },
979
+ selectionSet: {
980
+ kind: "SelectionSet",
981
+ selections: [
982
+ { kind: "Field", name: { kind: "Name", value: "category" } },
983
+ { kind: "Field", name: { kind: "Name", value: "type" } },
984
+ { kind: "Field", name: { kind: "Name", value: "count" } },
985
+ ],
986
+ },
987
+ },
988
+ ],
989
+ },
990
+ },
991
+ ],
992
+ },
993
+ },
994
+ ],
995
+ },
996
+ },
997
+ ],
998
+ };
922
999
  const GetFleetCountriesSummaryDocument = {
923
1000
  kind: "Document",
924
1001
  definitions: [
@@ -5303,6 +5380,146 @@ const useCan2ProfileFilter = () => {
5303
5380
  }, [t]);
5304
5381
  };
5305
5382
 
5383
+ /**
5384
+ * Maps an accessory type to its label. An accessory the schema does not know shares the
5385
+ * `UNKNOWN` label, so a value already held in filter state before the client is regenerated still
5386
+ * reads as a label rather than as a raw type.
5387
+ *
5388
+ * @param type - The reported accessory type.
5389
+ * @returns {TranslationKeys} The translation key for the type's label.
5390
+ */
5391
+ const mapConnectedAccessoryTypeToLabelId = (type) => {
5392
+ switch (type) {
5393
+ case connectedAccessoryType.DUALID:
5394
+ return "assetFilters.connectedAccessory.DUALID";
5395
+ case connectedAccessoryType.DUALID_II:
5396
+ return "assetFilters.connectedAccessory.DUALID_II";
5397
+ case connectedAccessoryType.IBUTTON_READER:
5398
+ return "assetFilters.connectedAccessory.IBUTTON_READER";
5399
+ case connectedAccessoryType.K300:
5400
+ return "assetFilters.connectedAccessory.K300";
5401
+ case connectedAccessoryType.M7_KEYPAD:
5402
+ return "assetFilters.connectedAccessory.M7_KEYPAD";
5403
+ case connectedAccessoryType.NO_ACCESSORY_CONNECTED:
5404
+ return "assetFilters.connectedAccessory.NO_ACCESSORY_CONNECTED";
5405
+ default:
5406
+ return "assetFilters.connectedAccessory.UNKNOWN";
5407
+ }
5408
+ };
5409
+ /**
5410
+ * Narrows a reported type to the enum the asset query accepts. A type the schema does not know
5411
+ * folds into `UNKNOWN` rather than becoming an option of its own, because selecting an option puts
5412
+ * its key into filter state and the asset query rejects any value outside the enum.
5413
+ *
5414
+ * @param type - The reported accessory type.
5415
+ * @returns {ConnectedAccessoryType} The matching enum member, or `UNKNOWN`.
5416
+ */
5417
+ const toKnownConnectedAccessoryType = (type) => objectValues(connectedAccessoryType).find(knownType => knownType === type) ?? connectedAccessoryType.UNKNOWN;
5418
+ /**
5419
+ * Turns the summary rows into one option per accessory type.
5420
+ *
5421
+ * Counts are summed across categories because the filter selects on the type level alone. A type
5422
+ * belongs to exactly one category today, so summing cannot double-count an asset. Types the schema
5423
+ * does not know are summed into the single `UNKNOWN` option, so every key is one the filter can
5424
+ * select on. Display order is not decided here — it follows the translated labels, so
5425
+ * `compareConnectedAccessoryOptions` applies it once the caller has resolved them.
5426
+ *
5427
+ * @param summary - The connected accessory summary rows.
5428
+ * @returns {Array<ConnectedAccessoryOption>} One option per reported type.
5429
+ */
5430
+ const toConnectedAccessoryOptions = (summary) => {
5431
+ const countByType = new Map();
5432
+ summary.forEach(({ type, count }) => {
5433
+ const knownType = toKnownConnectedAccessoryType(type);
5434
+ countByType.set(knownType, (countByType.get(knownType) ?? 0) + count);
5435
+ });
5436
+ return [...countByType.entries()]
5437
+ .filter(([, count]) => count > 0)
5438
+ .map(([type, count]) => ({ key: type, labelId: mapConnectedAccessoryTypeToLabelId(type), count }));
5439
+ };
5440
+ /**
5441
+ * Orders the options for display: alphabetically by label, with `UNKNOWN` last.
5442
+ *
5443
+ * Sorting by count would put the answer an asset gives most often first, which says nothing about
5444
+ * where a reader looks for a given accessory. `UNKNOWN` is pinned last because it is the bucket
5445
+ * `DefaultCheckboxFilter` renders in the footer and leaves out of `Select all`, and because "we
5446
+ * could not tell" belongs below the accessories we could. `NO_ACCESSORY_CONNECTED` is a real
5447
+ * answer, so it sorts among the accessories rather than with `UNKNOWN`.
5448
+ *
5449
+ * @param optionA - The first option to compare.
5450
+ * @param optionB - The option to compare it against.
5451
+ * @returns {number} Negative when `optionA` sorts first, positive when `optionB` does, 0 when tied.
5452
+ */
5453
+ const compareConnectedAccessoryOptions = (optionA, optionB) => {
5454
+ if (optionA.key === optionB.key) {
5455
+ return 0;
5456
+ }
5457
+ if (optionA.key === connectedAccessoryType.UNKNOWN) {
5458
+ return 1;
5459
+ }
5460
+ if (optionB.key === connectedAccessoryType.UNKNOWN) {
5461
+ return -1;
5462
+ }
5463
+ return stringNaturalCompare(optionA.label, optionB.label);
5464
+ };
5465
+
5466
+ /**
5467
+ * The Connected Accessory Filter component.
5468
+ *
5469
+ * Selects assets by the accessory they report. The options come from the
5470
+ * `connectedAccessoryTypes` summary, which counts assets, so an option's count is what selecting
5471
+ * it returns. The summary field takes no search or limit arguments, so the list is always complete.
5472
+ *
5473
+ * @param props - The filter view props.
5474
+ * @param props.filterDefinition - The filter's definition.
5475
+ * @param props.filterState - The current state of the filter, including selected values.
5476
+ * @param props.filterBarActions - Actions for the filter's interaction with the filter bar.
5477
+ * @returns {ReactElement} React component to render the connected accessory filter.
5478
+ */
5479
+ const ConnectedAccessoryFilter = ({ filterDefinition, filterState, filterBarActions, ...props }) => {
5480
+ const [t] = useTranslation();
5481
+ const activeFilters = useActiveAssetFilters(filterState.values);
5482
+ const { data, loading } = useQuery(GetFleetConnectedAccessorySummaryDocument, {
5483
+ variables: {
5484
+ filters: {
5485
+ ...activeFilters,
5486
+ connectedAccessoryTypes: null, // Omit the filter's own values so the list shows all options correctly
5487
+ },
5488
+ },
5489
+ fetchPolicy: "cache-first",
5490
+ });
5491
+ const options = useMemo(() => {
5492
+ return toConnectedAccessoryOptions(data?.assetSummary?.connectedAccessoryTypes.summary ?? [])
5493
+ .map(({ key, labelId, count }) => ({ key, count, label: t(labelId) }))
5494
+ .sort(compareConnectedAccessoryOptions);
5495
+ }, [data?.assetSummary?.connectedAccessoryTypes.summary, t]);
5496
+ return (jsx(DefaultCheckboxFilter, { ...props, filterBarActions: filterBarActions, filterDefinition: filterDefinition, filterState: filterState, loading: loading, options: options, undefinedOptionKey: connectedAccessoryType.UNKNOWN }));
5497
+ };
5498
+
5499
+ /**
5500
+ * Get the Connected Accessory filter definition.
5501
+ *
5502
+ * Grouped under DEVICE; values are the `ConnectedAccessoryType` enum and are fetched dynamically
5503
+ * from the `connectedAccessoryTypes` summary. The `filterKey` maps to
5504
+ * `AssetFiltersInput.connectedAccessoryTypes`. Only the type level is filtered on — a category
5505
+ * filter would add a step without narrowing anything while one category exists.
5506
+ *
5507
+ * @returns {StringArrayFilterDefinition} The Connected Accessory filter definition
5508
+ */
5509
+ const useConnectedAccessoryFilter = () => {
5510
+ const [t] = useTranslation();
5511
+ return useMemo(() => {
5512
+ return {
5513
+ filterKey: "connectedAccessoryTypes",
5514
+ type: "stringArray",
5515
+ group: "DEVICE",
5516
+ title: t("assetFilters.connectedAccessory.label"),
5517
+ valueAsText: values => values.map(value => t(mapConnectedAccessoryTypeToLabelId(value))),
5518
+ component: props => jsx(ConnectedAccessoryFilter, { ...props }),
5519
+ };
5520
+ }, [t]);
5521
+ };
5522
+
5306
5523
  /**
5307
5524
  * Build the country filter options from the SFS country summary, translating each
5308
5525
  * code to its localized name and ordering the list alphabetically by that name.
@@ -8524,4 +8741,4 @@ const useDefaultAssetFilterBarDefinition = () => {
8524
8741
  */
8525
8742
  setupLibraryTranslations();
8526
8743
 
8527
- export { ALL_TYPES, AccessManagementMode, ActiveFilterFiltersView, ActivityFiltersView, AreaView, AssetActivityState, AssetIdsFiltersView, AssetLastSeen, AssetTypesFilterView, BrandFilterView, ClearItemButton, CriticalityFiltersView, CustomerIdsFilterView, DayPeriod, FollowedFiltersView, FreeTextRecentSearchesFilterView, GetFleetGroupSummaryConnectionDocument, GetFleetGroupSummaryMissingDocument, GroupIdsFilterView, HourIntervalFilterView, InsightsAfterTreatmentDieselExhaustFluidTankLevelFilterView, InsightsBatteryChargerStateFilterView, InsightsBatteryPotentialFilterView, InsightsBatteryStateOfChargePercentFilterView, InsightsFuelLevelFilterView, InspectionTemplateAssignedFilter, LastInspectionResultFiltersView, LastPerformedInspectionFilterView, LastSeenFiltersView, MetadataCompletenessFilterView, ModelsFilterView, NameFilterView, OwnerAccountIdsFilterView, PartnerFilterView, PeriodFilterView, ProductionYearFilterView, RecentSearchesFooter, RentalContractCustomerParentExternalReferenceFilterView, RentalContractCustomerParentNameFilterView, RentalContractOrderNumberFilterView, RentalContractReferenceCodeDescriptionFilterView, RentalContractReferenceCodeFilterView, SERVICE_PLAN_STATUSES_TO_SHOW, SearchFilterInline, ServicePanStatusesFiltersView, SiteDepotOwnershipIdsFilterView, SiteIdsFilterView, SiteStatus, SiteStatusFilterView, SiteTypeSFS, SiteTypesFilterView, TelematicsConnectedFiltersView, TypesFilterView, areaFilterInternalGeoJsonGeometrySchema, areaFilterInternalSchema, assetTypeConst, inspectionTemplateAssignedOptions, lastInspectionResultOptionKeys, lastPerformedInspectionOptions, mapActivityToLabelId, mapMetadataCompletenessToLabelId, metadataCompleteness, metadataCompletenessOptions, placePredictionSchema, placeSchema, sortSiteTypeSummary, useAccessManagementModeFilter, useActiveFilterFilter, useActivityFilter, useAreaFilter, useAssetIdsFilter, useAssetTypeFilter, useBrandFilter, useCan1ProfileFilter, useCan2ProfileFilter, useCountryFilter, useCriticalityFilter, useCustomerIdsFilter, useDefaultAssetFilterBarDefinition, useDeviceHealthIssueCategoryFilter, useDeviceHealthIssueStatusFilter, useDeviceHealthIssueTypeFilter, useDeviceTypesFilter, useFirmwareVersionFilter, useFollowedFilter, useFreeTextRecentSearches, useGroupIdsFilter, useHourIntervalFilter, useInsightsAfterTreatmentDieselExhaustFluidTankLevelFilter, useInsightsBatteryChargerStateFilter, useInsightsBatteryPotentialFilter, useInsightsBatteryStateOfChargePercentFilter, useInsightsFuelLevelFilter, useInspectionTemplateAssignedFilter, useLastInspectionResultFilter, useLastPerformedInspectionFilter, useLastSeenFilter, useMetadataCompletenessFilter, useModbusProfileFilter, useModelsFilter, useNameFilter, useNetworkTechnologyFilter, useOwnerAccountIdsFilter, usePartnerFilter, usePeriodFilter, usePlacesSearch, useProductionYearFilter, useRentalActiveContractItemOffRentDatesDateRangeFilter, useRentalActiveContractItemOnRentDatesDateRangeFilter, useRentalContractCustomerParentExternalReferenceFilter, useRentalContractCustomerParentNameFilter, useRentalContractOrderNumberFilter, useRentalContractReferenceCodeDescriptionFilter, useRentalContractReferenceCodeFilter, useSearchFilter, useServicePlanStatusFilter, useSiteDepotOwnershipIdsFilter, useSiteIdsFilter, useSiteStatusFilter, useSiteTypeFilter, useTelematicsConnectedFilter, useTypesFilter };
8744
+ export { ALL_TYPES, AccessManagementMode, ActiveFilterFiltersView, ActivityFiltersView, AreaView, AssetActivityState, AssetIdsFiltersView, AssetLastSeen, AssetTypesFilterView, BrandFilterView, ClearItemButton, CriticalityFiltersView, CustomerIdsFilterView, DayPeriod, FollowedFiltersView, FreeTextRecentSearchesFilterView, GetFleetGroupSummaryConnectionDocument, GetFleetGroupSummaryMissingDocument, GroupIdsFilterView, HourIntervalFilterView, InsightsAfterTreatmentDieselExhaustFluidTankLevelFilterView, InsightsBatteryChargerStateFilterView, InsightsBatteryPotentialFilterView, InsightsBatteryStateOfChargePercentFilterView, InsightsFuelLevelFilterView, InspectionTemplateAssignedFilter, LastInspectionResultFiltersView, LastPerformedInspectionFilterView, LastSeenFiltersView, MetadataCompletenessFilterView, ModelsFilterView, NameFilterView, OwnerAccountIdsFilterView, PartnerFilterView, PeriodFilterView, ProductionYearFilterView, RecentSearchesFooter, RentalContractCustomerParentExternalReferenceFilterView, RentalContractCustomerParentNameFilterView, RentalContractOrderNumberFilterView, RentalContractReferenceCodeDescriptionFilterView, RentalContractReferenceCodeFilterView, SERVICE_PLAN_STATUSES_TO_SHOW, SearchFilterInline, ServicePanStatusesFiltersView, SiteDepotOwnershipIdsFilterView, SiteIdsFilterView, SiteStatus, SiteStatusFilterView, SiteTypeSFS, SiteTypesFilterView, TelematicsConnectedFiltersView, TypesFilterView, areaFilterInternalGeoJsonGeometrySchema, areaFilterInternalSchema, assetTypeConst, inspectionTemplateAssignedOptions, lastInspectionResultOptionKeys, lastPerformedInspectionOptions, mapActivityToLabelId, mapMetadataCompletenessToLabelId, metadataCompleteness, metadataCompletenessOptions, placePredictionSchema, placeSchema, sortSiteTypeSummary, useAccessManagementModeFilter, useActiveFilterFilter, useActivityFilter, useAreaFilter, useAssetIdsFilter, useAssetTypeFilter, useBrandFilter, useCan1ProfileFilter, useCan2ProfileFilter, useConnectedAccessoryFilter, useCountryFilter, useCriticalityFilter, useCustomerIdsFilter, useDefaultAssetFilterBarDefinition, useDeviceHealthIssueCategoryFilter, useDeviceHealthIssueStatusFilter, useDeviceHealthIssueTypeFilter, useDeviceTypesFilter, useFirmwareVersionFilter, useFollowedFilter, useFreeTextRecentSearches, useGroupIdsFilter, useHourIntervalFilter, useInsightsAfterTreatmentDieselExhaustFluidTankLevelFilter, useInsightsBatteryChargerStateFilter, useInsightsBatteryPotentialFilter, useInsightsBatteryStateOfChargePercentFilter, useInsightsFuelLevelFilter, useInspectionTemplateAssignedFilter, useLastInspectionResultFilter, useLastPerformedInspectionFilter, useLastSeenFilter, useMetadataCompletenessFilter, useModbusProfileFilter, useModelsFilter, useNameFilter, useNetworkTechnologyFilter, useOwnerAccountIdsFilter, usePartnerFilter, usePeriodFilter, usePlacesSearch, useProductionYearFilter, useRentalActiveContractItemOffRentDatesDateRangeFilter, useRentalActiveContractItemOnRentDatesDateRangeFilter, useRentalContractCustomerParentExternalReferenceFilter, useRentalContractCustomerParentNameFilter, useRentalContractOrderNumberFilter, useRentalContractReferenceCodeDescriptionFilter, useRentalContractReferenceCodeFilter, useSearchFilter, useServicePlanStatusFilter, useSiteDepotOwnershipIdsFilter, useSiteIdsFilter, useSiteStatusFilter, useSiteTypeFilter, useTelematicsConnectedFilter, useTypesFilter };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trackunit/filters-asset-filter-definitions",
3
- "version": "2.9.39",
3
+ "version": "2.10.0",
4
4
  "repository": "https://github.com/Trackunit/manager",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "engines": {
@@ -12,24 +12,24 @@
12
12
  "zod": "^3.25.76",
13
13
  "string-ts": "^2.0.0",
14
14
  "tailwind-merge": "^2.0.0",
15
- "@trackunit/iris-app-build-utilities": "2.4.19",
16
- "@trackunit/filters-filter-bar": "2.6.22",
17
- "@trackunit/react-core-hooks": "1.21.21",
18
- "@trackunit/react-filter-components": "2.6.22",
19
- "@trackunit/react-form-components": "2.6.22",
20
- "@trackunit/filters-graphql-hook": "2.8.35",
21
- "@trackunit/utilization-indicator": "2.6.20",
15
+ "@trackunit/iris-app-build-utilities": "2.4.23",
16
+ "@trackunit/filters-filter-bar": "2.6.27",
17
+ "@trackunit/react-core-hooks": "1.21.25",
18
+ "@trackunit/react-filter-components": "2.6.26",
19
+ "@trackunit/react-form-components": "2.6.26",
20
+ "@trackunit/filters-graphql-hook": "2.9.0",
21
+ "@trackunit/utilization-indicator": "2.6.24",
22
22
  "@trackunit/geo-json-utils": "1.15.21",
23
- "@trackunit/react-components": "2.10.15",
23
+ "@trackunit/react-components": "2.10.19",
24
24
  "@trackunit/shared-utils": "1.16.22",
25
- "@trackunit/translations-machine-type": "2.4.23",
26
- "@trackunit/criticality-indicator": "2.6.20",
27
- "@trackunit/iris-app-api": "2.4.13",
28
- "@trackunit/react-core-contexts-test": "1.18.27",
29
- "@trackunit/i18n-library-translation": "2.4.21",
30
- "@trackunit/iris-app-runtime-core-api": "1.17.27",
31
- "@trackunit/react-graphql-hooks": "2.6.20",
32
- "@trackunit/translations-device": "1.7.36"
25
+ "@trackunit/translations-machine-type": "2.4.27",
26
+ "@trackunit/criticality-indicator": "2.6.24",
27
+ "@trackunit/iris-app-api": "2.4.17",
28
+ "@trackunit/react-core-contexts-test": "1.18.28",
29
+ "@trackunit/i18n-library-translation": "2.4.25",
30
+ "@trackunit/iris-app-runtime-core-api": "1.17.28",
31
+ "@trackunit/react-graphql-hooks": "2.6.24",
32
+ "@trackunit/translations-device": "1.8.0"
33
33
  },
34
34
  "peerDependencies": {
35
35
  "@apollo/client": "^3.13.8",
@@ -0,0 +1,16 @@
1
+ import { FilterViewProps } from "@trackunit/filters-filter-bar";
2
+ import { ReactElement } from "react";
3
+ /**
4
+ * The Connected Accessory Filter component.
5
+ *
6
+ * Selects assets by the accessory they report. The options come from the
7
+ * `connectedAccessoryTypes` summary, which counts assets, so an option's count is what selecting
8
+ * it returns. The summary field takes no search or limit arguments, so the list is always complete.
9
+ *
10
+ * @param props - The filter view props.
11
+ * @param props.filterDefinition - The filter's definition.
12
+ * @param props.filterState - The current state of the filter, including selected values.
13
+ * @param props.filterBarActions - Actions for the filter's interaction with the filter bar.
14
+ * @returns {ReactElement} React component to render the connected accessory filter.
15
+ */
16
+ export declare const ConnectedAccessoryFilter: ({ filterDefinition, filterState, filterBarActions, ...props }: FilterViewProps<Array<string>>) => ReactElement;
@@ -0,0 +1,58 @@
1
+ import { ConnectedAccessoryType } from "../../../generated/graphql-api/graphql";
2
+ import { TranslationKeys } from "../../../translation";
3
+ /**
4
+ * One row of the connected accessory summary. The SFS keys each row by the (category, type) pair,
5
+ * so the same type can appear more than once.
6
+ */
7
+ interface ConnectedAccessorySummaryRow {
8
+ readonly type: string;
9
+ readonly count: number;
10
+ }
11
+ /** A checkbox option for one accessory type, before its label is translated. */
12
+ export interface ConnectedAccessoryOption {
13
+ readonly key: ConnectedAccessoryType;
14
+ readonly labelId: TranslationKeys;
15
+ readonly count: number;
16
+ }
17
+ /** A checkbox option once its label is translated, which is what decides the display order. */
18
+ export interface TranslatedConnectedAccessoryOption {
19
+ readonly key: ConnectedAccessoryType;
20
+ readonly label: string;
21
+ }
22
+ /**
23
+ * Maps an accessory type to its label. An accessory the schema does not know shares the
24
+ * `UNKNOWN` label, so a value already held in filter state before the client is regenerated still
25
+ * reads as a label rather than as a raw type.
26
+ *
27
+ * @param type - The reported accessory type.
28
+ * @returns {TranslationKeys} The translation key for the type's label.
29
+ */
30
+ export declare const mapConnectedAccessoryTypeToLabelId: (type: string) => TranslationKeys;
31
+ /**
32
+ * Turns the summary rows into one option per accessory type.
33
+ *
34
+ * Counts are summed across categories because the filter selects on the type level alone. A type
35
+ * belongs to exactly one category today, so summing cannot double-count an asset. Types the schema
36
+ * does not know are summed into the single `UNKNOWN` option, so every key is one the filter can
37
+ * select on. Display order is not decided here — it follows the translated labels, so
38
+ * `compareConnectedAccessoryOptions` applies it once the caller has resolved them.
39
+ *
40
+ * @param summary - The connected accessory summary rows.
41
+ * @returns {Array<ConnectedAccessoryOption>} One option per reported type.
42
+ */
43
+ export declare const toConnectedAccessoryOptions: (summary: ReadonlyArray<ConnectedAccessorySummaryRow>) => Array<ConnectedAccessoryOption>;
44
+ /**
45
+ * Orders the options for display: alphabetically by label, with `UNKNOWN` last.
46
+ *
47
+ * Sorting by count would put the answer an asset gives most often first, which says nothing about
48
+ * where a reader looks for a given accessory. `UNKNOWN` is pinned last because it is the bucket
49
+ * `DefaultCheckboxFilter` renders in the footer and leaves out of `Select all`, and because "we
50
+ * could not tell" belongs below the accessories we could. `NO_ACCESSORY_CONNECTED` is a real
51
+ * answer, so it sorts among the accessories rather than with `UNKNOWN`.
52
+ *
53
+ * @param optionA - The first option to compare.
54
+ * @param optionB - The option to compare it against.
55
+ * @returns {number} Negative when `optionA` sorts first, positive when `optionB` does, 0 when tied.
56
+ */
57
+ export declare const compareConnectedAccessoryOptions: (optionA: TranslatedConnectedAccessoryOption, optionB: TranslatedConnectedAccessoryOption) => number;
58
+ export {};
@@ -0,0 +1,12 @@
1
+ import { StringArrayFilterDefinition } from "@trackunit/filters-filter-bar";
2
+ /**
3
+ * Get the Connected Accessory filter definition.
4
+ *
5
+ * Grouped under DEVICE; values are the `ConnectedAccessoryType` enum and are fetched dynamically
6
+ * from the `connectedAccessoryTypes` summary. The `filterKey` maps to
7
+ * `AssetFiltersInput.connectedAccessoryTypes`. Only the type level is filtered on — a category
8
+ * filter would add a step without narrowing anything while one category exists.
9
+ *
10
+ * @returns {StringArrayFilterDefinition} The Connected Accessory filter definition
11
+ */
12
+ export declare const useConnectedAccessoryFilter: () => StringArrayFilterDefinition;
@@ -34,6 +34,9 @@ declare const documents: {
34
34
  before: types.InputMaybe<types.Scalars["Cursor"]["input"]>;
35
35
  last: types.InputMaybe<types.Scalars["Int"]["input"]>;
36
36
  }>>;
37
+ "query GetFleetConnectedAccessorySummary($filters: AssetFiltersInput) {\n assetSummary(filters: $filters) {\n connectedAccessoryTypes {\n total\n summary {\n category\n type\n count\n }\n }\n }\n}": DocumentNode<types.GetFleetConnectedAccessorySummaryQuery, types.Exact<{
38
+ filters: types.InputMaybe<types.AssetFiltersInput>;
39
+ }>>;
37
40
  "query GetFleetCountriesSummary($filters: AssetFiltersInput, $limit: Int) {\n assetSummary(filters: $filters) {\n countries(limit: $limit) {\n total\n summary {\n key\n count\n }\n }\n }\n}": DocumentNode<types.GetFleetCountriesSummaryQuery, types.Exact<{
38
41
  filters: types.InputMaybe<types.AssetFiltersInput>;
39
42
  limit: types.InputMaybe<types.Scalars["Int"]["input"]>;
@@ -105,6 +108,10 @@ export declare function graphql(source: "query TelematicsDeviceCan2ProfileNames
105
108
  * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
106
109
  */
107
110
  export declare function graphql(source: "query GetFleetCan2ProfileSummaryConnection($filters: AssetFiltersInput, $search: String, $first: Int, $after: Cursor, $before: Cursor, $last: Int) {\n assetSummary(filters: $filters) {\n can2ProfileSummaryConnection(\n filter: $search\n first: $first\n after: $after\n before: $before\n last: $last\n ) {\n ...FleetSummaryConnectionFields\n }\n }\n}\n\nquery GetFleetCan2ProfileSummaryMissing($filters: AssetFiltersInput) {\n assetSummary(filters: $filters) {\n can2ProfileSummaryConnection(first: 1) {\n missing\n }\n }\n}"): (typeof documents)["query GetFleetCan2ProfileSummaryConnection($filters: AssetFiltersInput, $search: String, $first: Int, $after: Cursor, $before: Cursor, $last: Int) {\n assetSummary(filters: $filters) {\n can2ProfileSummaryConnection(\n filter: $search\n first: $first\n after: $after\n before: $before\n last: $last\n ) {\n ...FleetSummaryConnectionFields\n }\n }\n}\n\nquery GetFleetCan2ProfileSummaryMissing($filters: AssetFiltersInput) {\n assetSummary(filters: $filters) {\n can2ProfileSummaryConnection(first: 1) {\n missing\n }\n }\n}"];
111
+ /**
112
+ * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
113
+ */
114
+ export declare function graphql(source: "query GetFleetConnectedAccessorySummary($filters: AssetFiltersInput) {\n assetSummary(filters: $filters) {\n connectedAccessoryTypes {\n total\n summary {\n category\n type\n count\n }\n }\n }\n}"): (typeof documents)["query GetFleetConnectedAccessorySummary($filters: AssetFiltersInput) {\n assetSummary(filters: $filters) {\n connectedAccessoryTypes {\n total\n summary {\n category\n type\n count\n }\n }\n }\n}"];
108
115
  /**
109
116
  * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
110
117
  */
@@ -336,6 +336,21 @@ export declare const assetType: {
336
336
  readonly VEHICLE: "VEHICLE";
337
337
  };
338
338
  export type AssetType = (typeof assetType)[keyof typeof assetType];
339
+ export declare const connectedAccessoryCategory: {
340
+ readonly ACCESS_MANAGEMENT_DEVICE: "ACCESS_MANAGEMENT_DEVICE";
341
+ readonly UNKNOWN: "UNKNOWN";
342
+ };
343
+ export type ConnectedAccessoryCategory = (typeof connectedAccessoryCategory)[keyof typeof connectedAccessoryCategory];
344
+ export declare const connectedAccessoryType: {
345
+ readonly DUALID: "DUALID";
346
+ readonly DUALID_II: "DUALID_II";
347
+ readonly IBUTTON_READER: "IBUTTON_READER";
348
+ readonly K300: "K300";
349
+ readonly M7_KEYPAD: "M7_KEYPAD";
350
+ readonly NO_ACCESSORY_CONNECTED: "NO_ACCESSORY_CONNECTED";
351
+ readonly UNKNOWN: "UNKNOWN";
352
+ };
353
+ export type ConnectedAccessoryType = (typeof connectedAccessoryType)[keyof typeof connectedAccessoryType];
339
354
  export declare const customFieldOwnerType: {
340
355
  readonly ACCOUNT: "ACCOUNT";
341
356
  readonly IRIS_APP: "IRIS_APP";
@@ -532,6 +547,13 @@ export type AssetFiltersInput = {
532
547
  can1Profile?: InputMaybe<Array<Scalars["String"]["input"]>>;
533
548
  /** Filter by reported CAN profile 2 values */
534
549
  can2Profile?: InputMaybe<Array<Scalars["String"]["input"]>>;
550
+ /** Filter by the category of the accessories an asset reports */
551
+ connectedAccessoryCategories?: InputMaybe<Array<ConnectedAccessoryCategory>>;
552
+ /**
553
+ * Filter by the type of the accessories an asset reports. Combined with
554
+ * `connectedAccessoryCategories`, an asset is selected where it reports an accessory matching both.
555
+ */
556
+ connectedAccessoryTypes?: InputMaybe<Array<ConnectedAccessoryType>>;
535
557
  /** Filter to only include this list of countries */
536
558
  countries?: InputMaybe<Array<Scalars["String"]["input"]>>;
537
559
  /** List of criticalities */
@@ -901,6 +923,25 @@ export type GetFleetCan2ProfileSummaryMissingQuery = {
901
923
  };
902
924
  } | null;
903
925
  };
926
+ export type GetFleetConnectedAccessorySummaryQueryVariables = Exact<{
927
+ filters: InputMaybe<AssetFiltersInput>;
928
+ }>;
929
+ export type GetFleetConnectedAccessorySummaryQuery = {
930
+ __typename?: "Query";
931
+ assetSummary: {
932
+ __typename?: "AssetSummary";
933
+ connectedAccessoryTypes: {
934
+ __typename?: "ConnectedAccessoryTypesSummary";
935
+ total: number;
936
+ summary: Array<{
937
+ __typename?: "ConnectedAccessoryTypeSummary";
938
+ category: ConnectedAccessoryCategory;
939
+ type: ConnectedAccessoryType;
940
+ count: number;
941
+ }>;
942
+ };
943
+ } | null;
944
+ };
904
945
  export type GetFleetCountriesSummaryQueryVariables = Exact<{
905
946
  filters: InputMaybe<AssetFiltersInput>;
906
947
  limit: InputMaybe<Scalars["Int"]["input"]>;
@@ -1912,6 +1953,7 @@ export declare const GetFleetCan1ProfileSummaryMissingDocument: DocumentNode<Get
1912
1953
  export declare const TelematicsDeviceCan2ProfileNamesDocument: DocumentNode<TelematicsDeviceCan2ProfileNamesQuery, TelematicsDeviceCan2ProfileNamesQueryVariables>;
1913
1954
  export declare const GetFleetCan2ProfileSummaryConnectionDocument: DocumentNode<GetFleetCan2ProfileSummaryConnectionQuery, GetFleetCan2ProfileSummaryConnectionQueryVariables>;
1914
1955
  export declare const GetFleetCan2ProfileSummaryMissingDocument: DocumentNode<GetFleetCan2ProfileSummaryMissingQuery, GetFleetCan2ProfileSummaryMissingQueryVariables>;
1956
+ export declare const GetFleetConnectedAccessorySummaryDocument: DocumentNode<GetFleetConnectedAccessorySummaryQuery, GetFleetConnectedAccessorySummaryQueryVariables>;
1915
1957
  export declare const GetFleetCountriesSummaryDocument: DocumentNode<GetFleetCountriesSummaryQuery, GetFleetCountriesSummaryQueryVariables>;
1916
1958
  export declare const DeviceHealthIssueCategorySummariesDocument: DocumentNode<DeviceHealthIssueCategorySummariesQuery, DeviceHealthIssueCategorySummariesQueryVariables>;
1917
1959
  export declare const DeviceHealthIssueStatusSummariesDocument: DocumentNode<DeviceHealthIssueStatusSummariesQuery, DeviceHealthIssueStatusSummariesQueryVariables>;
@@ -42,6 +42,13 @@ export declare const mockForGetFleetCan2ProfileSummaryConnectionQuery: (variable
42
42
  export declare const mockForGetFleetCan2ProfileSummaryMissingQuery: (variables?: DeepPartialNullable<gql.GetFleetCan2ProfileSummaryMissingQueryVariables>, data?: DeepPartialNullable<gql.GetFleetCan2ProfileSummaryMissingQuery>) => import("@apollo/client/testing").MockedResponse<gql.GetFleetCan2ProfileSummaryMissingQuery, Record<string, any>> & {
43
43
  data: gql.GetFleetCan2ProfileSummaryMissingQuery;
44
44
  };
45
+ /**
46
+ * Required authorization scopes (the token needs at least one allowed scope per accessed field):
47
+ * - asset.view
48
+ */
49
+ export declare const mockForGetFleetConnectedAccessorySummaryQuery: (variables?: DeepPartialNullable<gql.GetFleetConnectedAccessorySummaryQueryVariables>, data?: DeepPartialNullable<gql.GetFleetConnectedAccessorySummaryQuery>) => import("@apollo/client/testing").MockedResponse<gql.GetFleetConnectedAccessorySummaryQuery, Record<string, any>> & {
50
+ data: gql.GetFleetConnectedAccessorySummaryQuery;
51
+ };
45
52
  /**
46
53
  * Required authorization scopes (the token needs at least one allowed scope per accessed field):
47
54
  * - asset.view
package/src/index.d.ts CHANGED
@@ -9,6 +9,7 @@ export * from "./defaultFilters/defaults/AssetTypesFilterView";
9
9
  export * from "./defaultFilters/defaults/BrandFilterView";
10
10
  export * from "./defaultFilters/defaults/CanProfileFilter/useCan1ProfileFilter";
11
11
  export * from "./defaultFilters/defaults/CanProfileFilter/useCan2ProfileFilter";
12
+ export * from "./defaultFilters/defaults/ConnectedAccessoryFilter/useConnectedAccessoryFilter";
12
13
  export * from "./defaultFilters/defaults/CountryFilter/useCountryFilter";
13
14
  export * from "./defaultFilters/defaults/CriticalityFiltersView";
14
15
  export * from "./defaultFilters/defaults/CustomerIdsFilterView";
@@ -14,8 +14,8 @@ export declare const translations: TranslationResource<TranslationKeys>;
14
14
  /**
15
15
  * Local useTranslation for this specific library
16
16
  */
17
- export declare const useTranslation: () => [TransForLibs<"access.management.accessManagementMode.LOCKED_FOR_ALL" | "access.management.accessManagementMode.UNKNOWN" | "access.management.accessManagementMode.UNLOCKED_FOR_ALL" | "access.management.accessManagementMode.UNLOCKED_FOR_KEY" | "access.management.accessManagementMode.UNSUPPORTED" | "access.management.assets.filterBar.accessManagementMode" | "assetFilters.activeAssetFilter.label" | "assetFilters.activityFilter.idling" | "assetFilters.activityFilter.stopped" | "assetFilters.activityFilter.unknown" | "assetFilters.activityFilter.working" | "assetFilters.area.label" | "assetFilters.assetType.ATTACHMENT" | "assetFilters.assetType.EQUIPMENT" | "assetFilters.assetType.GATEWAY" | "assetFilters.assetType.MACHINE" | "assetFilters.assetType.OTHER" | "assetFilters.assetType.TOOL" | "assetFilters.assetType.VEHICLE" | "assetFilters.boundingBoxFilter.value" | "assetFilters.can1Profile.label" | "assetFilters.can2Profile.label" | "assetFilters.criticality.CRITICAL" | "assetFilters.criticality.LOW" | "assetFilters.criticality.NONE" | "assetFilters.deviceHealthIssueCategories" | "assetFilters.deviceHealthIssueCategory.coverageIssues" | "assetFilters.deviceHealthIssueCategory.deviceBatteryIssues" | "assetFilters.deviceHealthIssueCategory.installAndConfigurationHealth" | "assetFilters.deviceHealthIssueCategory.nonReportingUnit" | "assetFilters.deviceHealthIssueStatus" | "assetFilters.deviceHealthIssueStatus.critical" | "assetFilters.deviceHealthIssueStatus.low" | "assetFilters.deviceHealthIssueType.dataNotReceived" | "assetFilters.deviceHealthIssueType.deviceBatteryApproachingEndOfLife" | "assetFilters.deviceHealthIssueType.lowCellularCoverage" | "assetFilters.deviceHealthIssueType.lowDeviceBattery" | "assetFilters.deviceHealthIssueType.lowDeviceInputVoltage" | "assetFilters.deviceHealthIssueType.lowGpsCoverage" | "assetFilters.deviceHealthIssueType.noCanDataConfiguration" | "assetFilters.deviceHealthIssueType.operatingHours" | "assetFilters.deviceHealthIssueType.operatingHoursFromCanModified" | "assetFilters.deviceHealthIssueType.operatingHoursReporting0HoursPerDay" | "assetFilters.deviceHealthIssueType.operatingHoursReporting24HoursPerDay" | "assetFilters.deviceHealthIssueTypes" | "assetFilters.deviceTypes" | "assetFilters.firmwareVersion.label" | "assetFilters.followedFilter.label" | "assetFilters.groupFilter.missingGroup" | "assetFilters.hourIntervalFilter.label" | "assetFilters.inspectionTemplateAssigned.ALL" | "assetFilters.inspectionTemplateAssigned.HAS_TEMPLATE" | "assetFilters.inspectionTemplateAssigned.NO_TEMPLATE" | "assetFilters.lastInspectionResult.FAILED_CRITICAL" | "assetFilters.lastInspectionResult.FAILED_LOW" | "assetFilters.lastInspectionResult.NO_LAST_INSPECTION" | "assetFilters.lastInspectionResult.PASSED" | "assetFilters.lastInspectionResult.SKIPPED" | "assetFilters.lastPerformedInspection.ALL" | "assetFilters.lastPerformedInspection.MORE_THAN_12_HOURS_AGO" | "assetFilters.lastPerformedInspection.MORE_THAN_2_HOURS_AGO" | "assetFilters.lastPerformedInspection.MORE_THAN_24_HOURS_AGO" | "assetFilters.lastPerformedInspection.MORE_THAN_7_DAYS_AGO" | "assetFilters.lastPerformedInspection.MORE_THAN_8_HOURS_AGO" | "assetFilters.lastPerformedInspection.NEVER" | "assetFilters.lastPerformedInspection.WITHIN_12_HOURS" | "assetFilters.lastPerformedInspection.WITHIN_2_HOURS" | "assetFilters.lastPerformedInspection.WITHIN_24_HOURS" | "assetFilters.lastPerformedInspection.WITHIN_7_DAYS" | "assetFilters.lastPerformedInspection.WITHIN_8_HOURS" | "assetFilters.lastSeenFilter.anytime" | "assetFilters.lastSeenFilter.last24Hours" | "assetFilters.lastSeenFilter.last30Days" | "assetFilters.lastSeenFilter.last7Days" | "assetFilters.lastSeenFilter.lastHour" | "assetFilters.lastSeenFilter.olderThan30Days" | "assetFilters.metadataCompleteness.ALL" | "assetFilters.metadataCompleteness.COMPLETE" | "assetFilters.metadataCompleteness.PARTIAL" | "assetFilters.modbusProfile.label" | "assetFilters.nameFilter.label" | "assetFilters.nameFilter.searchPlaceholder" | "assetFilters.networkTechnology.label" | "assetFilters.ownerAccountNameFilter.label" | "assetFilters.partnerFilter.label" | "assetFilters.pendingTelematicsDevicesFilter.label" | "assetFilters.periodFilter.label" | "assetFilters.periodFilter.LAST_24_HOURS" | "assetFilters.periodFilter.LAST_30_DAYS" | "assetFilters.periodFilter.LAST_7_DAYS" | "assetFilters.periodFilter.LAST_YEAR" | "assetFilters.periodFilter.LIFETIME" | "assetFilters.productionYear.label" | "assetFilters.rentalActiveContractItemOffRentDatesDateRangeFilter.label" | "assetFilters.rentalActiveContractItemOnRentDatesDateRangeFilter.label" | "assetFilters.rentalContractCustomerParentExternalReferenceFilter.label" | "assetFilters.rentalContractCustomerParentNameFilter.label" | "assetFilters.rentalContractOrderNumberFilter.label" | "assetFilters.rentalContractReferenceCodeDescriptionFilter.label" | "assetFilters.rentalContractReferenceCodeDescriptionFilter.searchPlaceholder" | "assetFilters.rentalContractReferenceCodeFilter.label" | "assetFilters.searchFilter.label" | "assetFilters.serviceStatusFilter.COMPLETE" | "assetFilters.serviceStatusFilter.DRAFT" | "assetFilters.serviceStatusFilter.FULLY_CONFIGURED" | "assetFilters.serviceStatusFilter.HAS_PLAN" | "assetFilters.serviceStatusFilter.HAS_SERVICE_PROVIDER" | "assetFilters.serviceStatusFilter.label" | "assetFilters.serviceStatusFilter.MISSING_PLAN" | "assetFilters.serviceStatusFilter.MISSING_PROVIDER" | "assetFilters.serviceStatusFilter.overdue" | "assetFilters.serviceStatusFilter.OVERDUE" | "assetFilters.serviceStatusFilter.PLANNED" | "assetFilters.serviceStatusFilter.UNKNOWN" | "assetFilters.serviceStatusFilter.upcoming" | "assetFilters.serviceStatusFilter.UPCOMING" | "assetFilters.telematicsConnectedFilter.label" | "assetFilters.unknown" | "filters.shared.clear" | "filters.shared.clearAll" | "filters.shared.noHistory" | "filters.shared.notJustWhitepsace" | "filters.shared.recentSearches" | "filters.shared.typeMore" | "filtersBar.defaultAssetFilters.activeAssetFilter.excludeHidden" | "filtersBar.defaultAssetFilters.activeAssetFilter.onlyHidden" | "filtersBar.defaultAssetFilters.activeAssetFilter.showAll" | "filtersBar.defaultAssetFilters.batteryChargerState.OFF" | "filtersBar.defaultAssetFilters.batteryChargerState.ON" | "filtersBar.defaultAssetFilters.followedFilter.allLabel" | "filtersBar.defaultAssetFilters.followedFilter.followedOnlyLabel" | "filtersBar.defaultAssetFilters.telematicsConnectedFilter.connected" | "filtersBar.defaultAssetFilters.telematicsConnectedFilter.notConnected" | "filtersBar.emptyResults" | "filtersBar.loading" | "fleetlist.column.activity" | "fleetlist.column.assetIds" | "fleetlist.column.assetType" | "fleetlist.column.attention" | "fleetlist.column.brand" | "fleetlist.column.country" | "fleetlist.column.customerIds" | "fleetlist.column.groupIds" | "fleetlist.column.insights.afterTreatmentDieselExhaustFluidTankLevel" | "fleetlist.column.insights.batteryChargerState" | "fleetlist.column.insights.batteryPotential" | "fleetlist.column.insights.batteryStateOfChargePercent" | "fleetlist.column.insights.cumulativeIdleHours" | "fleetlist.column.insights.cumulativeOperatingHours" | "fleetlist.column.insights.fuelLevel" | "fleetlist.column.inspectionTemplateAssigned" | "fleetlist.column.lastInspectionResult" | "fleetlist.column.lastPerformedInspection" | "fleetlist.column.lastSeen" | "fleetlist.column.metadataCompleteness" | "fleetlist.column.model" | "fleetlist.column.servicePlanStatus" | "fleetlist.column.siteDepotOwnershipIds" | "fleetlist.column.siteIds" | "fleetlist.column.siteStatus" | "fleetlist.column.siteType" | "fleetlist.column.type" | "machine.types.Unknown" | "pages.machines.telematics.networkTechnology.NW_TECH_2G" | "pages.machines.telematics.networkTechnology.NW_TECH_3G" | "pages.machines.telematics.networkTechnology.NW_TECH_4G" | "siteFilters.siteStatus.ACTIVE" | "siteFilters.siteStatus.ARCHIVED" | "siteFilters.siteStatus.FINISHED" | "siteFilters.siteStatus.PLANNED" | "siteFilters.siteStatus.unknown" | "siteFilters.siteType.AREA" | "siteFilters.siteType.CLASSIC_POI" | "siteFilters.siteType.CLASSIC_ZONE" | "siteFilters.siteType.CONSTRUCTION_SITE" | "siteFilters.siteType.DEPOT" | "siteFilters.siteType.NOT_ON_SITE" | "siteFilters.siteType.unknown" | "siteFilters.siteType.WORK_PLACE" | "siteOwningDepot.notOwned" | "siteOwningDepot.unknown">, import("i18next").i18n, boolean] & {
18
- t: TransForLibs<"access.management.accessManagementMode.LOCKED_FOR_ALL" | "access.management.accessManagementMode.UNKNOWN" | "access.management.accessManagementMode.UNLOCKED_FOR_ALL" | "access.management.accessManagementMode.UNLOCKED_FOR_KEY" | "access.management.accessManagementMode.UNSUPPORTED" | "access.management.assets.filterBar.accessManagementMode" | "assetFilters.activeAssetFilter.label" | "assetFilters.activityFilter.idling" | "assetFilters.activityFilter.stopped" | "assetFilters.activityFilter.unknown" | "assetFilters.activityFilter.working" | "assetFilters.area.label" | "assetFilters.assetType.ATTACHMENT" | "assetFilters.assetType.EQUIPMENT" | "assetFilters.assetType.GATEWAY" | "assetFilters.assetType.MACHINE" | "assetFilters.assetType.OTHER" | "assetFilters.assetType.TOOL" | "assetFilters.assetType.VEHICLE" | "assetFilters.boundingBoxFilter.value" | "assetFilters.can1Profile.label" | "assetFilters.can2Profile.label" | "assetFilters.criticality.CRITICAL" | "assetFilters.criticality.LOW" | "assetFilters.criticality.NONE" | "assetFilters.deviceHealthIssueCategories" | "assetFilters.deviceHealthIssueCategory.coverageIssues" | "assetFilters.deviceHealthIssueCategory.deviceBatteryIssues" | "assetFilters.deviceHealthIssueCategory.installAndConfigurationHealth" | "assetFilters.deviceHealthIssueCategory.nonReportingUnit" | "assetFilters.deviceHealthIssueStatus" | "assetFilters.deviceHealthIssueStatus.critical" | "assetFilters.deviceHealthIssueStatus.low" | "assetFilters.deviceHealthIssueType.dataNotReceived" | "assetFilters.deviceHealthIssueType.deviceBatteryApproachingEndOfLife" | "assetFilters.deviceHealthIssueType.lowCellularCoverage" | "assetFilters.deviceHealthIssueType.lowDeviceBattery" | "assetFilters.deviceHealthIssueType.lowDeviceInputVoltage" | "assetFilters.deviceHealthIssueType.lowGpsCoverage" | "assetFilters.deviceHealthIssueType.noCanDataConfiguration" | "assetFilters.deviceHealthIssueType.operatingHours" | "assetFilters.deviceHealthIssueType.operatingHoursFromCanModified" | "assetFilters.deviceHealthIssueType.operatingHoursReporting0HoursPerDay" | "assetFilters.deviceHealthIssueType.operatingHoursReporting24HoursPerDay" | "assetFilters.deviceHealthIssueTypes" | "assetFilters.deviceTypes" | "assetFilters.firmwareVersion.label" | "assetFilters.followedFilter.label" | "assetFilters.groupFilter.missingGroup" | "assetFilters.hourIntervalFilter.label" | "assetFilters.inspectionTemplateAssigned.ALL" | "assetFilters.inspectionTemplateAssigned.HAS_TEMPLATE" | "assetFilters.inspectionTemplateAssigned.NO_TEMPLATE" | "assetFilters.lastInspectionResult.FAILED_CRITICAL" | "assetFilters.lastInspectionResult.FAILED_LOW" | "assetFilters.lastInspectionResult.NO_LAST_INSPECTION" | "assetFilters.lastInspectionResult.PASSED" | "assetFilters.lastInspectionResult.SKIPPED" | "assetFilters.lastPerformedInspection.ALL" | "assetFilters.lastPerformedInspection.MORE_THAN_12_HOURS_AGO" | "assetFilters.lastPerformedInspection.MORE_THAN_2_HOURS_AGO" | "assetFilters.lastPerformedInspection.MORE_THAN_24_HOURS_AGO" | "assetFilters.lastPerformedInspection.MORE_THAN_7_DAYS_AGO" | "assetFilters.lastPerformedInspection.MORE_THAN_8_HOURS_AGO" | "assetFilters.lastPerformedInspection.NEVER" | "assetFilters.lastPerformedInspection.WITHIN_12_HOURS" | "assetFilters.lastPerformedInspection.WITHIN_2_HOURS" | "assetFilters.lastPerformedInspection.WITHIN_24_HOURS" | "assetFilters.lastPerformedInspection.WITHIN_7_DAYS" | "assetFilters.lastPerformedInspection.WITHIN_8_HOURS" | "assetFilters.lastSeenFilter.anytime" | "assetFilters.lastSeenFilter.last24Hours" | "assetFilters.lastSeenFilter.last30Days" | "assetFilters.lastSeenFilter.last7Days" | "assetFilters.lastSeenFilter.lastHour" | "assetFilters.lastSeenFilter.olderThan30Days" | "assetFilters.metadataCompleteness.ALL" | "assetFilters.metadataCompleteness.COMPLETE" | "assetFilters.metadataCompleteness.PARTIAL" | "assetFilters.modbusProfile.label" | "assetFilters.nameFilter.label" | "assetFilters.nameFilter.searchPlaceholder" | "assetFilters.networkTechnology.label" | "assetFilters.ownerAccountNameFilter.label" | "assetFilters.partnerFilter.label" | "assetFilters.pendingTelematicsDevicesFilter.label" | "assetFilters.periodFilter.label" | "assetFilters.periodFilter.LAST_24_HOURS" | "assetFilters.periodFilter.LAST_30_DAYS" | "assetFilters.periodFilter.LAST_7_DAYS" | "assetFilters.periodFilter.LAST_YEAR" | "assetFilters.periodFilter.LIFETIME" | "assetFilters.productionYear.label" | "assetFilters.rentalActiveContractItemOffRentDatesDateRangeFilter.label" | "assetFilters.rentalActiveContractItemOnRentDatesDateRangeFilter.label" | "assetFilters.rentalContractCustomerParentExternalReferenceFilter.label" | "assetFilters.rentalContractCustomerParentNameFilter.label" | "assetFilters.rentalContractOrderNumberFilter.label" | "assetFilters.rentalContractReferenceCodeDescriptionFilter.label" | "assetFilters.rentalContractReferenceCodeDescriptionFilter.searchPlaceholder" | "assetFilters.rentalContractReferenceCodeFilter.label" | "assetFilters.searchFilter.label" | "assetFilters.serviceStatusFilter.COMPLETE" | "assetFilters.serviceStatusFilter.DRAFT" | "assetFilters.serviceStatusFilter.FULLY_CONFIGURED" | "assetFilters.serviceStatusFilter.HAS_PLAN" | "assetFilters.serviceStatusFilter.HAS_SERVICE_PROVIDER" | "assetFilters.serviceStatusFilter.label" | "assetFilters.serviceStatusFilter.MISSING_PLAN" | "assetFilters.serviceStatusFilter.MISSING_PROVIDER" | "assetFilters.serviceStatusFilter.overdue" | "assetFilters.serviceStatusFilter.OVERDUE" | "assetFilters.serviceStatusFilter.PLANNED" | "assetFilters.serviceStatusFilter.UNKNOWN" | "assetFilters.serviceStatusFilter.upcoming" | "assetFilters.serviceStatusFilter.UPCOMING" | "assetFilters.telematicsConnectedFilter.label" | "assetFilters.unknown" | "filters.shared.clear" | "filters.shared.clearAll" | "filters.shared.noHistory" | "filters.shared.notJustWhitepsace" | "filters.shared.recentSearches" | "filters.shared.typeMore" | "filtersBar.defaultAssetFilters.activeAssetFilter.excludeHidden" | "filtersBar.defaultAssetFilters.activeAssetFilter.onlyHidden" | "filtersBar.defaultAssetFilters.activeAssetFilter.showAll" | "filtersBar.defaultAssetFilters.batteryChargerState.OFF" | "filtersBar.defaultAssetFilters.batteryChargerState.ON" | "filtersBar.defaultAssetFilters.followedFilter.allLabel" | "filtersBar.defaultAssetFilters.followedFilter.followedOnlyLabel" | "filtersBar.defaultAssetFilters.telematicsConnectedFilter.connected" | "filtersBar.defaultAssetFilters.telematicsConnectedFilter.notConnected" | "filtersBar.emptyResults" | "filtersBar.loading" | "fleetlist.column.activity" | "fleetlist.column.assetIds" | "fleetlist.column.assetType" | "fleetlist.column.attention" | "fleetlist.column.brand" | "fleetlist.column.country" | "fleetlist.column.customerIds" | "fleetlist.column.groupIds" | "fleetlist.column.insights.afterTreatmentDieselExhaustFluidTankLevel" | "fleetlist.column.insights.batteryChargerState" | "fleetlist.column.insights.batteryPotential" | "fleetlist.column.insights.batteryStateOfChargePercent" | "fleetlist.column.insights.cumulativeIdleHours" | "fleetlist.column.insights.cumulativeOperatingHours" | "fleetlist.column.insights.fuelLevel" | "fleetlist.column.inspectionTemplateAssigned" | "fleetlist.column.lastInspectionResult" | "fleetlist.column.lastPerformedInspection" | "fleetlist.column.lastSeen" | "fleetlist.column.metadataCompleteness" | "fleetlist.column.model" | "fleetlist.column.servicePlanStatus" | "fleetlist.column.siteDepotOwnershipIds" | "fleetlist.column.siteIds" | "fleetlist.column.siteStatus" | "fleetlist.column.siteType" | "fleetlist.column.type" | "machine.types.Unknown" | "pages.machines.telematics.networkTechnology.NW_TECH_2G" | "pages.machines.telematics.networkTechnology.NW_TECH_3G" | "pages.machines.telematics.networkTechnology.NW_TECH_4G" | "siteFilters.siteStatus.ACTIVE" | "siteFilters.siteStatus.ARCHIVED" | "siteFilters.siteStatus.FINISHED" | "siteFilters.siteStatus.PLANNED" | "siteFilters.siteStatus.unknown" | "siteFilters.siteType.AREA" | "siteFilters.siteType.CLASSIC_POI" | "siteFilters.siteType.CLASSIC_ZONE" | "siteFilters.siteType.CONSTRUCTION_SITE" | "siteFilters.siteType.DEPOT" | "siteFilters.siteType.NOT_ON_SITE" | "siteFilters.siteType.unknown" | "siteFilters.siteType.WORK_PLACE" | "siteOwningDepot.notOwned" | "siteOwningDepot.unknown">;
17
+ export declare const useTranslation: () => [TransForLibs<"access.management.accessManagementMode.LOCKED_FOR_ALL" | "access.management.accessManagementMode.UNKNOWN" | "access.management.accessManagementMode.UNLOCKED_FOR_ALL" | "access.management.accessManagementMode.UNLOCKED_FOR_KEY" | "access.management.accessManagementMode.UNSUPPORTED" | "access.management.assets.filterBar.accessManagementMode" | "assetFilters.activeAssetFilter.label" | "assetFilters.activityFilter.idling" | "assetFilters.activityFilter.stopped" | "assetFilters.activityFilter.unknown" | "assetFilters.activityFilter.working" | "assetFilters.area.label" | "assetFilters.assetType.ATTACHMENT" | "assetFilters.assetType.EQUIPMENT" | "assetFilters.assetType.GATEWAY" | "assetFilters.assetType.MACHINE" | "assetFilters.assetType.OTHER" | "assetFilters.assetType.TOOL" | "assetFilters.assetType.VEHICLE" | "assetFilters.boundingBoxFilter.value" | "assetFilters.can1Profile.label" | "assetFilters.can2Profile.label" | "assetFilters.connectedAccessory.DUALID" | "assetFilters.connectedAccessory.DUALID_II" | "assetFilters.connectedAccessory.IBUTTON_READER" | "assetFilters.connectedAccessory.K300" | "assetFilters.connectedAccessory.label" | "assetFilters.connectedAccessory.M7_KEYPAD" | "assetFilters.connectedAccessory.NO_ACCESSORY_CONNECTED" | "assetFilters.connectedAccessory.UNKNOWN" | "assetFilters.criticality.CRITICAL" | "assetFilters.criticality.LOW" | "assetFilters.criticality.NONE" | "assetFilters.deviceHealthIssueCategories" | "assetFilters.deviceHealthIssueCategory.coverageIssues" | "assetFilters.deviceHealthIssueCategory.deviceBatteryIssues" | "assetFilters.deviceHealthIssueCategory.installAndConfigurationHealth" | "assetFilters.deviceHealthIssueCategory.nonReportingUnit" | "assetFilters.deviceHealthIssueStatus" | "assetFilters.deviceHealthIssueStatus.critical" | "assetFilters.deviceHealthIssueStatus.low" | "assetFilters.deviceHealthIssueType.dataNotReceived" | "assetFilters.deviceHealthIssueType.deviceBatteryApproachingEndOfLife" | "assetFilters.deviceHealthIssueType.lowCellularCoverage" | "assetFilters.deviceHealthIssueType.lowDeviceBattery" | "assetFilters.deviceHealthIssueType.lowDeviceInputVoltage" | "assetFilters.deviceHealthIssueType.lowGpsCoverage" | "assetFilters.deviceHealthIssueType.noCanDataConfiguration" | "assetFilters.deviceHealthIssueType.operatingHours" | "assetFilters.deviceHealthIssueType.operatingHoursFromCanModified" | "assetFilters.deviceHealthIssueType.operatingHoursReporting0HoursPerDay" | "assetFilters.deviceHealthIssueType.operatingHoursReporting24HoursPerDay" | "assetFilters.deviceHealthIssueTypes" | "assetFilters.deviceTypes" | "assetFilters.firmwareVersion.label" | "assetFilters.followedFilter.label" | "assetFilters.groupFilter.missingGroup" | "assetFilters.hourIntervalFilter.label" | "assetFilters.inspectionTemplateAssigned.ALL" | "assetFilters.inspectionTemplateAssigned.HAS_TEMPLATE" | "assetFilters.inspectionTemplateAssigned.NO_TEMPLATE" | "assetFilters.lastInspectionResult.FAILED_CRITICAL" | "assetFilters.lastInspectionResult.FAILED_LOW" | "assetFilters.lastInspectionResult.NO_LAST_INSPECTION" | "assetFilters.lastInspectionResult.PASSED" | "assetFilters.lastInspectionResult.SKIPPED" | "assetFilters.lastPerformedInspection.ALL" | "assetFilters.lastPerformedInspection.MORE_THAN_12_HOURS_AGO" | "assetFilters.lastPerformedInspection.MORE_THAN_2_HOURS_AGO" | "assetFilters.lastPerformedInspection.MORE_THAN_24_HOURS_AGO" | "assetFilters.lastPerformedInspection.MORE_THAN_7_DAYS_AGO" | "assetFilters.lastPerformedInspection.MORE_THAN_8_HOURS_AGO" | "assetFilters.lastPerformedInspection.NEVER" | "assetFilters.lastPerformedInspection.WITHIN_12_HOURS" | "assetFilters.lastPerformedInspection.WITHIN_2_HOURS" | "assetFilters.lastPerformedInspection.WITHIN_24_HOURS" | "assetFilters.lastPerformedInspection.WITHIN_7_DAYS" | "assetFilters.lastPerformedInspection.WITHIN_8_HOURS" | "assetFilters.lastSeenFilter.anytime" | "assetFilters.lastSeenFilter.last24Hours" | "assetFilters.lastSeenFilter.last30Days" | "assetFilters.lastSeenFilter.last7Days" | "assetFilters.lastSeenFilter.lastHour" | "assetFilters.lastSeenFilter.olderThan30Days" | "assetFilters.metadataCompleteness.ALL" | "assetFilters.metadataCompleteness.COMPLETE" | "assetFilters.metadataCompleteness.PARTIAL" | "assetFilters.modbusProfile.label" | "assetFilters.nameFilter.label" | "assetFilters.nameFilter.searchPlaceholder" | "assetFilters.networkTechnology.label" | "assetFilters.ownerAccountNameFilter.label" | "assetFilters.partnerFilter.label" | "assetFilters.pendingTelematicsDevicesFilter.label" | "assetFilters.periodFilter.label" | "assetFilters.periodFilter.LAST_24_HOURS" | "assetFilters.periodFilter.LAST_30_DAYS" | "assetFilters.periodFilter.LAST_7_DAYS" | "assetFilters.periodFilter.LAST_YEAR" | "assetFilters.periodFilter.LIFETIME" | "assetFilters.productionYear.label" | "assetFilters.rentalActiveContractItemOffRentDatesDateRangeFilter.label" | "assetFilters.rentalActiveContractItemOnRentDatesDateRangeFilter.label" | "assetFilters.rentalContractCustomerParentExternalReferenceFilter.label" | "assetFilters.rentalContractCustomerParentNameFilter.label" | "assetFilters.rentalContractOrderNumberFilter.label" | "assetFilters.rentalContractReferenceCodeDescriptionFilter.label" | "assetFilters.rentalContractReferenceCodeDescriptionFilter.searchPlaceholder" | "assetFilters.rentalContractReferenceCodeFilter.label" | "assetFilters.searchFilter.label" | "assetFilters.serviceStatusFilter.COMPLETE" | "assetFilters.serviceStatusFilter.DRAFT" | "assetFilters.serviceStatusFilter.FULLY_CONFIGURED" | "assetFilters.serviceStatusFilter.HAS_PLAN" | "assetFilters.serviceStatusFilter.HAS_SERVICE_PROVIDER" | "assetFilters.serviceStatusFilter.label" | "assetFilters.serviceStatusFilter.MISSING_PLAN" | "assetFilters.serviceStatusFilter.MISSING_PROVIDER" | "assetFilters.serviceStatusFilter.overdue" | "assetFilters.serviceStatusFilter.OVERDUE" | "assetFilters.serviceStatusFilter.PLANNED" | "assetFilters.serviceStatusFilter.UNKNOWN" | "assetFilters.serviceStatusFilter.upcoming" | "assetFilters.serviceStatusFilter.UPCOMING" | "assetFilters.telematicsConnectedFilter.label" | "assetFilters.unknown" | "filters.shared.clear" | "filters.shared.clearAll" | "filters.shared.noHistory" | "filters.shared.notJustWhitepsace" | "filters.shared.recentSearches" | "filters.shared.typeMore" | "filtersBar.defaultAssetFilters.activeAssetFilter.excludeHidden" | "filtersBar.defaultAssetFilters.activeAssetFilter.onlyHidden" | "filtersBar.defaultAssetFilters.activeAssetFilter.showAll" | "filtersBar.defaultAssetFilters.batteryChargerState.OFF" | "filtersBar.defaultAssetFilters.batteryChargerState.ON" | "filtersBar.defaultAssetFilters.followedFilter.allLabel" | "filtersBar.defaultAssetFilters.followedFilter.followedOnlyLabel" | "filtersBar.defaultAssetFilters.telematicsConnectedFilter.connected" | "filtersBar.defaultAssetFilters.telematicsConnectedFilter.notConnected" | "filtersBar.emptyResults" | "filtersBar.loading" | "fleetlist.column.activity" | "fleetlist.column.assetIds" | "fleetlist.column.assetType" | "fleetlist.column.attention" | "fleetlist.column.brand" | "fleetlist.column.country" | "fleetlist.column.customerIds" | "fleetlist.column.groupIds" | "fleetlist.column.insights.afterTreatmentDieselExhaustFluidTankLevel" | "fleetlist.column.insights.batteryChargerState" | "fleetlist.column.insights.batteryPotential" | "fleetlist.column.insights.batteryStateOfChargePercent" | "fleetlist.column.insights.cumulativeIdleHours" | "fleetlist.column.insights.cumulativeOperatingHours" | "fleetlist.column.insights.fuelLevel" | "fleetlist.column.inspectionTemplateAssigned" | "fleetlist.column.lastInspectionResult" | "fleetlist.column.lastPerformedInspection" | "fleetlist.column.lastSeen" | "fleetlist.column.metadataCompleteness" | "fleetlist.column.model" | "fleetlist.column.servicePlanStatus" | "fleetlist.column.siteDepotOwnershipIds" | "fleetlist.column.siteIds" | "fleetlist.column.siteStatus" | "fleetlist.column.siteType" | "fleetlist.column.type" | "machine.types.Unknown" | "pages.machines.telematics.networkTechnology.NW_TECH_2G" | "pages.machines.telematics.networkTechnology.NW_TECH_3G" | "pages.machines.telematics.networkTechnology.NW_TECH_4G" | "siteFilters.siteStatus.ACTIVE" | "siteFilters.siteStatus.ARCHIVED" | "siteFilters.siteStatus.FINISHED" | "siteFilters.siteStatus.PLANNED" | "siteFilters.siteStatus.unknown" | "siteFilters.siteType.AREA" | "siteFilters.siteType.CLASSIC_POI" | "siteFilters.siteType.CLASSIC_ZONE" | "siteFilters.siteType.CONSTRUCTION_SITE" | "siteFilters.siteType.DEPOT" | "siteFilters.siteType.NOT_ON_SITE" | "siteFilters.siteType.unknown" | "siteFilters.siteType.WORK_PLACE" | "siteOwningDepot.notOwned" | "siteOwningDepot.unknown">, import("i18next").i18n, boolean] & {
18
+ t: TransForLibs<"access.management.accessManagementMode.LOCKED_FOR_ALL" | "access.management.accessManagementMode.UNKNOWN" | "access.management.accessManagementMode.UNLOCKED_FOR_ALL" | "access.management.accessManagementMode.UNLOCKED_FOR_KEY" | "access.management.accessManagementMode.UNSUPPORTED" | "access.management.assets.filterBar.accessManagementMode" | "assetFilters.activeAssetFilter.label" | "assetFilters.activityFilter.idling" | "assetFilters.activityFilter.stopped" | "assetFilters.activityFilter.unknown" | "assetFilters.activityFilter.working" | "assetFilters.area.label" | "assetFilters.assetType.ATTACHMENT" | "assetFilters.assetType.EQUIPMENT" | "assetFilters.assetType.GATEWAY" | "assetFilters.assetType.MACHINE" | "assetFilters.assetType.OTHER" | "assetFilters.assetType.TOOL" | "assetFilters.assetType.VEHICLE" | "assetFilters.boundingBoxFilter.value" | "assetFilters.can1Profile.label" | "assetFilters.can2Profile.label" | "assetFilters.connectedAccessory.DUALID" | "assetFilters.connectedAccessory.DUALID_II" | "assetFilters.connectedAccessory.IBUTTON_READER" | "assetFilters.connectedAccessory.K300" | "assetFilters.connectedAccessory.label" | "assetFilters.connectedAccessory.M7_KEYPAD" | "assetFilters.connectedAccessory.NO_ACCESSORY_CONNECTED" | "assetFilters.connectedAccessory.UNKNOWN" | "assetFilters.criticality.CRITICAL" | "assetFilters.criticality.LOW" | "assetFilters.criticality.NONE" | "assetFilters.deviceHealthIssueCategories" | "assetFilters.deviceHealthIssueCategory.coverageIssues" | "assetFilters.deviceHealthIssueCategory.deviceBatteryIssues" | "assetFilters.deviceHealthIssueCategory.installAndConfigurationHealth" | "assetFilters.deviceHealthIssueCategory.nonReportingUnit" | "assetFilters.deviceHealthIssueStatus" | "assetFilters.deviceHealthIssueStatus.critical" | "assetFilters.deviceHealthIssueStatus.low" | "assetFilters.deviceHealthIssueType.dataNotReceived" | "assetFilters.deviceHealthIssueType.deviceBatteryApproachingEndOfLife" | "assetFilters.deviceHealthIssueType.lowCellularCoverage" | "assetFilters.deviceHealthIssueType.lowDeviceBattery" | "assetFilters.deviceHealthIssueType.lowDeviceInputVoltage" | "assetFilters.deviceHealthIssueType.lowGpsCoverage" | "assetFilters.deviceHealthIssueType.noCanDataConfiguration" | "assetFilters.deviceHealthIssueType.operatingHours" | "assetFilters.deviceHealthIssueType.operatingHoursFromCanModified" | "assetFilters.deviceHealthIssueType.operatingHoursReporting0HoursPerDay" | "assetFilters.deviceHealthIssueType.operatingHoursReporting24HoursPerDay" | "assetFilters.deviceHealthIssueTypes" | "assetFilters.deviceTypes" | "assetFilters.firmwareVersion.label" | "assetFilters.followedFilter.label" | "assetFilters.groupFilter.missingGroup" | "assetFilters.hourIntervalFilter.label" | "assetFilters.inspectionTemplateAssigned.ALL" | "assetFilters.inspectionTemplateAssigned.HAS_TEMPLATE" | "assetFilters.inspectionTemplateAssigned.NO_TEMPLATE" | "assetFilters.lastInspectionResult.FAILED_CRITICAL" | "assetFilters.lastInspectionResult.FAILED_LOW" | "assetFilters.lastInspectionResult.NO_LAST_INSPECTION" | "assetFilters.lastInspectionResult.PASSED" | "assetFilters.lastInspectionResult.SKIPPED" | "assetFilters.lastPerformedInspection.ALL" | "assetFilters.lastPerformedInspection.MORE_THAN_12_HOURS_AGO" | "assetFilters.lastPerformedInspection.MORE_THAN_2_HOURS_AGO" | "assetFilters.lastPerformedInspection.MORE_THAN_24_HOURS_AGO" | "assetFilters.lastPerformedInspection.MORE_THAN_7_DAYS_AGO" | "assetFilters.lastPerformedInspection.MORE_THAN_8_HOURS_AGO" | "assetFilters.lastPerformedInspection.NEVER" | "assetFilters.lastPerformedInspection.WITHIN_12_HOURS" | "assetFilters.lastPerformedInspection.WITHIN_2_HOURS" | "assetFilters.lastPerformedInspection.WITHIN_24_HOURS" | "assetFilters.lastPerformedInspection.WITHIN_7_DAYS" | "assetFilters.lastPerformedInspection.WITHIN_8_HOURS" | "assetFilters.lastSeenFilter.anytime" | "assetFilters.lastSeenFilter.last24Hours" | "assetFilters.lastSeenFilter.last30Days" | "assetFilters.lastSeenFilter.last7Days" | "assetFilters.lastSeenFilter.lastHour" | "assetFilters.lastSeenFilter.olderThan30Days" | "assetFilters.metadataCompleteness.ALL" | "assetFilters.metadataCompleteness.COMPLETE" | "assetFilters.metadataCompleteness.PARTIAL" | "assetFilters.modbusProfile.label" | "assetFilters.nameFilter.label" | "assetFilters.nameFilter.searchPlaceholder" | "assetFilters.networkTechnology.label" | "assetFilters.ownerAccountNameFilter.label" | "assetFilters.partnerFilter.label" | "assetFilters.pendingTelematicsDevicesFilter.label" | "assetFilters.periodFilter.label" | "assetFilters.periodFilter.LAST_24_HOURS" | "assetFilters.periodFilter.LAST_30_DAYS" | "assetFilters.periodFilter.LAST_7_DAYS" | "assetFilters.periodFilter.LAST_YEAR" | "assetFilters.periodFilter.LIFETIME" | "assetFilters.productionYear.label" | "assetFilters.rentalActiveContractItemOffRentDatesDateRangeFilter.label" | "assetFilters.rentalActiveContractItemOnRentDatesDateRangeFilter.label" | "assetFilters.rentalContractCustomerParentExternalReferenceFilter.label" | "assetFilters.rentalContractCustomerParentNameFilter.label" | "assetFilters.rentalContractOrderNumberFilter.label" | "assetFilters.rentalContractReferenceCodeDescriptionFilter.label" | "assetFilters.rentalContractReferenceCodeDescriptionFilter.searchPlaceholder" | "assetFilters.rentalContractReferenceCodeFilter.label" | "assetFilters.searchFilter.label" | "assetFilters.serviceStatusFilter.COMPLETE" | "assetFilters.serviceStatusFilter.DRAFT" | "assetFilters.serviceStatusFilter.FULLY_CONFIGURED" | "assetFilters.serviceStatusFilter.HAS_PLAN" | "assetFilters.serviceStatusFilter.HAS_SERVICE_PROVIDER" | "assetFilters.serviceStatusFilter.label" | "assetFilters.serviceStatusFilter.MISSING_PLAN" | "assetFilters.serviceStatusFilter.MISSING_PROVIDER" | "assetFilters.serviceStatusFilter.overdue" | "assetFilters.serviceStatusFilter.OVERDUE" | "assetFilters.serviceStatusFilter.PLANNED" | "assetFilters.serviceStatusFilter.UNKNOWN" | "assetFilters.serviceStatusFilter.upcoming" | "assetFilters.serviceStatusFilter.UPCOMING" | "assetFilters.telematicsConnectedFilter.label" | "assetFilters.unknown" | "filters.shared.clear" | "filters.shared.clearAll" | "filters.shared.noHistory" | "filters.shared.notJustWhitepsace" | "filters.shared.recentSearches" | "filters.shared.typeMore" | "filtersBar.defaultAssetFilters.activeAssetFilter.excludeHidden" | "filtersBar.defaultAssetFilters.activeAssetFilter.onlyHidden" | "filtersBar.defaultAssetFilters.activeAssetFilter.showAll" | "filtersBar.defaultAssetFilters.batteryChargerState.OFF" | "filtersBar.defaultAssetFilters.batteryChargerState.ON" | "filtersBar.defaultAssetFilters.followedFilter.allLabel" | "filtersBar.defaultAssetFilters.followedFilter.followedOnlyLabel" | "filtersBar.defaultAssetFilters.telematicsConnectedFilter.connected" | "filtersBar.defaultAssetFilters.telematicsConnectedFilter.notConnected" | "filtersBar.emptyResults" | "filtersBar.loading" | "fleetlist.column.activity" | "fleetlist.column.assetIds" | "fleetlist.column.assetType" | "fleetlist.column.attention" | "fleetlist.column.brand" | "fleetlist.column.country" | "fleetlist.column.customerIds" | "fleetlist.column.groupIds" | "fleetlist.column.insights.afterTreatmentDieselExhaustFluidTankLevel" | "fleetlist.column.insights.batteryChargerState" | "fleetlist.column.insights.batteryPotential" | "fleetlist.column.insights.batteryStateOfChargePercent" | "fleetlist.column.insights.cumulativeIdleHours" | "fleetlist.column.insights.cumulativeOperatingHours" | "fleetlist.column.insights.fuelLevel" | "fleetlist.column.inspectionTemplateAssigned" | "fleetlist.column.lastInspectionResult" | "fleetlist.column.lastPerformedInspection" | "fleetlist.column.lastSeen" | "fleetlist.column.metadataCompleteness" | "fleetlist.column.model" | "fleetlist.column.servicePlanStatus" | "fleetlist.column.siteDepotOwnershipIds" | "fleetlist.column.siteIds" | "fleetlist.column.siteStatus" | "fleetlist.column.siteType" | "fleetlist.column.type" | "machine.types.Unknown" | "pages.machines.telematics.networkTechnology.NW_TECH_2G" | "pages.machines.telematics.networkTechnology.NW_TECH_3G" | "pages.machines.telematics.networkTechnology.NW_TECH_4G" | "siteFilters.siteStatus.ACTIVE" | "siteFilters.siteStatus.ARCHIVED" | "siteFilters.siteStatus.FINISHED" | "siteFilters.siteStatus.PLANNED" | "siteFilters.siteStatus.unknown" | "siteFilters.siteType.AREA" | "siteFilters.siteType.CLASSIC_POI" | "siteFilters.siteType.CLASSIC_ZONE" | "siteFilters.siteType.CONSTRUCTION_SITE" | "siteFilters.siteType.DEPOT" | "siteFilters.siteType.NOT_ON_SITE" | "siteFilters.siteType.unknown" | "siteFilters.siteType.WORK_PLACE" | "siteOwningDepot.notOwned" | "siteOwningDepot.unknown">;
19
19
  i18n: import("i18next").i18n;
20
20
  ready: boolean;
21
21
  };
@@ -1 +0,0 @@
1
- {"version":3,"file":"entry.js","sourceRoot":"","sources":["../../../../../libs/filters/asset-filter-definitions/migrations/entry.ts"],"names":[],"mappings":"","sourcesContent":["export {};\n"]}