@trackunit/filters-asset-filter-definitions 1.12.14 → 1.12.16

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.
Files changed (49) hide show
  1. package/index.cjs.js +181 -74
  2. package/index.esm.js +181 -76
  3. package/package.json +18 -18
  4. package/src/defaultFilters/defaults/DeviceHealthIssueStatusFilter/DeviceHealthIssueStatusFilter.d.ts +9 -0
  5. package/src/defaultFilters/defaults/DeviceHealthIssueStatusFilter/useDeviceHealthIssueStatusDisplayNames/useDeviceHealthIssueStatusDisplayNames.d.ts +7 -0
  6. package/src/defaultFilters/defaults/DeviceHealthIssueStatusFilter/useDeviceHealthIssueStatusFilter.d.ts +7 -0
  7. package/src/defaultFilters/defaults/hooks/useFleetHealthFilterUtils.d.ts +16 -0
  8. package/src/defaultFilters/defaults/index.d.ts +1 -0
  9. package/src/generated/graphql-api/gql.d.ts +7 -0
  10. package/src/generated/graphql-api/graphql.d.ts +26 -0
  11. package/src/generated/graphql-api/mock.d.ts +3 -0
  12. package/src/hooks/useDefaultAssetFilterBarDefinition.d.ts +1 -0
  13. package/src/translation.d.ts +2 -2
  14. package/translation.cjs.js +15 -1
  15. package/translation.cjs10.js +14 -0
  16. package/translation.cjs11.js +15 -1
  17. package/translation.cjs12.js +14 -0
  18. package/translation.cjs13.js +14 -0
  19. package/translation.cjs14.js +14 -0
  20. package/translation.cjs15.js +14 -0
  21. package/translation.cjs16.js +15 -1
  22. package/translation.cjs17.js +14 -0
  23. package/translation.cjs2.js +14 -0
  24. package/translation.cjs3.js +14 -0
  25. package/translation.cjs4.js +15 -1
  26. package/translation.cjs5.js +14 -0
  27. package/translation.cjs6.js +14 -0
  28. package/translation.cjs7.js +15 -1
  29. package/translation.cjs8.js +14 -0
  30. package/translation.cjs9.js +15 -1
  31. package/translation.esm.js +15 -1
  32. package/translation.esm10.js +14 -0
  33. package/translation.esm11.js +15 -1
  34. package/translation.esm12.js +14 -0
  35. package/translation.esm13.js +14 -0
  36. package/translation.esm14.js +14 -0
  37. package/translation.esm15.js +14 -0
  38. package/translation.esm16.js +15 -1
  39. package/translation.esm17.js +14 -0
  40. package/translation.esm2.js +14 -0
  41. package/translation.esm3.js +14 -0
  42. package/translation.esm4.js +15 -1
  43. package/translation.esm5.js +14 -0
  44. package/translation.esm6.js +14 -0
  45. package/translation.esm7.js +15 -1
  46. package/translation.esm8.js +14 -0
  47. package/translation.esm9.js +15 -1
  48. package/src/defaultFilters/defaults/DeviceHealthIssueCategoryFilter/getHealthCategoryEnumWithFallback/getHealthCategoryEnumWithFallback.d.ts +0 -8
  49. package/src/defaultFilters/defaults/DeviceHealthIssueTypeFilter/getHealthTypeEnumWithFallback/getHealthTypeEnumWithFallback.d.ts +0 -8
package/index.cjs.js CHANGED
@@ -70,6 +70,9 @@ var defaultTranslations = {
70
70
  "assetFilters.deviceHealthIssueCategory.deviceBatteryIssues": "Device battery",
71
71
  "assetFilters.deviceHealthIssueCategory.installAndConfigurationHealth": "Install and configuration",
72
72
  "assetFilters.deviceHealthIssueCategory.nonReportingUnit": "Non reporting devices",
73
+ "assetFilters.deviceHealthIssueStatus": "Issue Status",
74
+ "assetFilters.deviceHealthIssueStatus.critical": "Critical",
75
+ "assetFilters.deviceHealthIssueStatus.low": "Low",
73
76
  "assetFilters.deviceHealthIssueType.dataNotReceived": "Data not received",
74
77
  "assetFilters.deviceHealthIssueType.installationValidationMissing": "Installation validation missing",
75
78
  "assetFilters.deviceHealthIssueType.lowCellularCoverage": "Low cellular coverage",
@@ -462,6 +465,10 @@ const assetCriticalityState = {
462
465
  LOW: "LOW",
463
466
  NONE: "NONE",
464
467
  };
468
+ const fleetDataHealthDeviceStatus = {
469
+ CRITICAL: "CRITICAL",
470
+ LOW: "LOW",
471
+ };
465
472
  const fleetDataHealthIssueCategory = {
466
473
  COVERAGE_ISSUES: "COVERAGE_ISSUES",
467
474
  DEVICE_BATTERY_ISSUES: "DEVICE_BATTERY_ISSUES",
@@ -550,6 +557,65 @@ const DeviceHealthIssueCategorySummariesDocument = {
550
557
  },
551
558
  ],
552
559
  };
560
+ const DeviceHealthIssueStatusSummariesDocument = {
561
+ kind: "Document",
562
+ definitions: [
563
+ {
564
+ kind: "OperationDefinition",
565
+ operation: "query",
566
+ name: { kind: "Name", value: "DeviceHealthIssueStatusSummaries" },
567
+ variableDefinitions: [
568
+ {
569
+ kind: "VariableDefinition",
570
+ variable: { kind: "Variable", name: { kind: "Name", value: "filters" } },
571
+ type: { kind: "NamedType", name: { kind: "Name", value: "AssetFiltersInput" } },
572
+ },
573
+ ],
574
+ selectionSet: {
575
+ kind: "SelectionSet",
576
+ selections: [
577
+ {
578
+ kind: "Field",
579
+ name: { kind: "Name", value: "assetSummary" },
580
+ arguments: [
581
+ {
582
+ kind: "Argument",
583
+ name: { kind: "Name", value: "filters" },
584
+ value: { kind: "Variable", name: { kind: "Name", value: "filters" } },
585
+ },
586
+ ],
587
+ selectionSet: {
588
+ kind: "SelectionSet",
589
+ selections: [
590
+ {
591
+ kind: "Field",
592
+ name: { kind: "Name", value: "fleetHealthDeviceStatusSummary" },
593
+ selectionSet: {
594
+ kind: "SelectionSet",
595
+ selections: [
596
+ {
597
+ kind: "Field",
598
+ name: { kind: "Name", value: "summary" },
599
+ selectionSet: {
600
+ kind: "SelectionSet",
601
+ selections: [
602
+ { kind: "Field", name: { kind: "Name", value: "key" } },
603
+ { kind: "Field", name: { kind: "Name", value: "count" } },
604
+ ],
605
+ },
606
+ },
607
+ { kind: "Field", name: { kind: "Name", value: "total" } },
608
+ ],
609
+ },
610
+ },
611
+ ],
612
+ },
613
+ },
614
+ ],
615
+ },
616
+ },
617
+ ],
618
+ };
553
619
  const DeviceHealthIssueTypeSummariesDocument = {
554
620
  kind: "Document",
555
621
  definitions: [
@@ -3091,18 +3157,38 @@ const useCustomerIdsFilter = ({ showInFilterBar, defaultValue, hasCount, persist
3091
3157
  };
3092
3158
 
3093
3159
  /**
3094
- * Get the Fleet Data Health Issue Category enum value with fallback
3095
3160
  *
3096
- * @param key - The key to get the enum value for
3097
- * @returns {FleetDataHealthIssueCategory | null} The Fleet Data Health Issue Category enum value or null if not found
3098
3161
  */
3099
- const getHealthCategoryEnumWithFallback = (key) => {
3100
- try {
3101
- return sharedUtils.enumFromValue(key, fleetDataHealthIssueCategory);
3102
- }
3103
- catch {
3104
- return null;
3105
- }
3162
+ const useFleetHealthFilterUtils = ({ filterSummaries, filterTranslations, }) => {
3163
+ const filterItems = react.useMemo(() => {
3164
+ return (filterSummaries?.reduce((acc, type) => {
3165
+ const existingType = acc.find(c => c.key === type.key);
3166
+ if (existingType) {
3167
+ existingType.count += type.count;
3168
+ }
3169
+ else {
3170
+ acc.push(type);
3171
+ }
3172
+ return acc;
3173
+ }, []) ?? []);
3174
+ }, [filterSummaries]);
3175
+ const options = react.useMemo(() => {
3176
+ return filterItems
3177
+ .map(issuetype => {
3178
+ const typeKey = issuetype.key;
3179
+ const label = filterTranslations[typeKey] ?? "";
3180
+ if (!label) {
3181
+ return null;
3182
+ }
3183
+ return {
3184
+ key: typeKey,
3185
+ label,
3186
+ count: issuetype.count,
3187
+ };
3188
+ })
3189
+ .filter(sharedUtils.nonNullable);
3190
+ }, [filterItems, filterTranslations]);
3191
+ return react.useMemo(() => ({ options }), [options]);
3106
3192
  };
3107
3193
 
3108
3194
  /**
@@ -3139,32 +3225,10 @@ const DeviceHealthIssueCategoryFilter = (props) => {
3139
3225
  },
3140
3226
  },
3141
3227
  });
3142
- const categories = react.useMemo(() => data?.assetSummary?.fleetHealthCategoriesSummary.summary.reduce((acc, category) => {
3143
- const existingCategory = acc.find(c => c.key === category.key);
3144
- if (existingCategory) {
3145
- existingCategory.count += category.count;
3146
- }
3147
- else {
3148
- acc.push(category);
3149
- }
3150
- return acc;
3151
- }, []), [data?.assetSummary?.fleetHealthCategoriesSummary.summary]);
3152
- const options = react.useMemo(() => {
3153
- return (categories
3154
- ?.map(issueCategory => {
3155
- const categoryKey = issueCategory.key;
3156
- const categoryEnum = getHealthCategoryEnumWithFallback(categoryKey);
3157
- if (!categoryEnum) {
3158
- return null;
3159
- }
3160
- return {
3161
- key: categoryKey,
3162
- label: categoryDisplayNames[categoryEnum],
3163
- count: issueCategory.count,
3164
- };
3165
- })
3166
- .filter(sharedUtils.nonNullable) ?? []);
3167
- }, [categories, categoryDisplayNames]);
3228
+ const { options } = useFleetHealthFilterUtils({
3229
+ filterSummaries: data?.assetSummary?.fleetHealthCategoriesSummary.summary,
3230
+ filterTranslations: categoryDisplayNames,
3231
+ });
3168
3232
  return jsxRuntime.jsx(filtersFilterBar.DefaultCheckboxFilter, { ...props, loading: loading, options: options });
3169
3233
  };
3170
3234
 
@@ -3187,18 +3251,60 @@ const useDeviceHealthIssueCategoryFilter = () => {
3187
3251
  };
3188
3252
 
3189
3253
  /**
3190
- * Get the Fleet Data Health Issue Type enum value with fallback
3254
+ * Get a record of device health issue type display names
3191
3255
  *
3192
- * @param {string} key - The key to get the enum value for
3193
- * @returns {FleetDataHealthIssueType | null} The Fleet Data Health Issue Type enum value or null if not found
3256
+ * @returns {Record<FleetDataHealthDeviceStatus, string>} A record of device health issue type display names
3194
3257
  */
3195
- const getHealthTypeEnumWithFallback = (key) => {
3196
- try {
3197
- return sharedUtils.enumFromValue(key, fleetDataHealthIssueType);
3198
- }
3199
- catch {
3200
- return null;
3201
- }
3258
+ const useDeviceHealthIssueStatusDisplayNames = () => {
3259
+ const [t] = useTranslation();
3260
+ return react.useMemo(() => ({
3261
+ [fleetDataHealthDeviceStatus.CRITICAL]: t("assetFilters.deviceHealthIssueStatus.critical"),
3262
+ [fleetDataHealthDeviceStatus.LOW]: t("assetFilters.deviceHealthIssueStatus.low"),
3263
+ }), [t]);
3264
+ };
3265
+
3266
+ /**
3267
+ * Device Health Issue Type Filter component
3268
+ *
3269
+ * @param {FilterViewProps<Array<ValueName>>} props - Filter view props
3270
+ * @returns {ReactElement} React element
3271
+ */
3272
+ const DeviceHealthIssueStatusFilter = (props) => {
3273
+ const issueTypeDisplayNames = useDeviceHealthIssueStatusDisplayNames();
3274
+ const filters = filtersGraphqlHook.useActiveAssetFilters(props.filterState.values);
3275
+ const { data, loading } = reactGraphqlHooks.useQuery(DeviceHealthIssueStatusSummariesDocument, {
3276
+ variables: {
3277
+ filters: {
3278
+ ...filters,
3279
+ activeFilter: true,
3280
+ fleetHealthDeviceStatuses: undefined,
3281
+ fleetHealthStates: ["OPEN"],
3282
+ },
3283
+ },
3284
+ });
3285
+ const { options } = useFleetHealthFilterUtils({
3286
+ filterSummaries: data?.assetSummary?.fleetHealthDeviceStatusSummary.summary,
3287
+ filterTranslations: issueTypeDisplayNames,
3288
+ });
3289
+ return jsxRuntime.jsx(filtersFilterBar.DefaultCheckboxFilter, { ...props, loading: loading, options: options });
3290
+ };
3291
+
3292
+ /**
3293
+ * Get the Device Health Issue Type filter definition
3294
+ *
3295
+ * @returns {ValueNameArrayFilterDefinition} The Device Health Issue Type filter definition
3296
+ */
3297
+ const useDeviceHealthIssueStatusFilter = () => {
3298
+ const [t] = useTranslation();
3299
+ return react.useMemo(() => {
3300
+ return {
3301
+ filterKey: "fleetHealthStatus",
3302
+ type: "valueNameArray",
3303
+ group: "DEVICE_HEALTH",
3304
+ title: t("assetFilters.deviceHealthIssueStatus"),
3305
+ component: props => jsxRuntime.jsx(DeviceHealthIssueStatusFilter, { ...props }),
3306
+ };
3307
+ }, [t]);
3202
3308
  };
3203
3309
 
3204
3310
  /**
@@ -3241,34 +3347,11 @@ const DeviceHealthIssueTypeFilter = (props) => {
3241
3347
  },
3242
3348
  },
3243
3349
  });
3244
- const types = react.useMemo(() => data?.assetSummary?.fleetHealthTypesSummary.summary.reduce((acc, type) => {
3245
- const existingType = acc.find(c => c.key === type.key);
3246
- if (existingType) {
3247
- existingType.count += type.count;
3248
- }
3249
- else {
3250
- acc.push(type);
3251
- }
3252
- return acc;
3253
- }, []), [data?.assetSummary?.fleetHealthTypesSummary.summary]);
3254
- const options = react.useMemo(() => {
3255
- return (types
3256
- ?.map(issuetype => {
3257
- const typeKey = issuetype.key;
3258
- const typeEnum = getHealthTypeEnumWithFallback(typeKey);
3259
- if (!typeEnum) {
3260
- return null;
3261
- }
3262
- return {
3263
- key: typeKey,
3264
- label: issueTypeDisplayNames[typeEnum],
3265
- count: issuetype.count,
3266
- };
3267
- })
3268
- .filter(sharedUtils.nonNullable)
3269
- .filter(option => option.label.toLowerCase().includes(debouncedSearchQuery)) ?? []);
3270
- }, [debouncedSearchQuery, issueTypeDisplayNames, types]);
3271
- return (jsxRuntime.jsx(filtersFilterBar.DefaultCheckboxFilter, { ...props, customSearch: { value: searchQuery, onChange: setSearchQuery }, loading: loading, options: options }));
3350
+ const { options } = useFleetHealthFilterUtils({
3351
+ filterSummaries: data?.assetSummary?.fleetHealthTypesSummary.summary,
3352
+ filterTranslations: issueTypeDisplayNames,
3353
+ });
3354
+ return (jsxRuntime.jsx(filtersFilterBar.DefaultCheckboxFilter, { ...props, customSearch: { value: searchQuery, onChange: setSearchQuery }, loading: loading, options: options.filter(option => option.label.toLowerCase().includes(debouncedSearchQuery)) }));
3272
3355
  };
3273
3356
 
3274
3357
  /**
@@ -4717,6 +4800,25 @@ const mockForDeviceHealthIssueCategorySummariesQuery = (variables, data) => {
4717
4800
  },
4718
4801
  }, data || {}));
4719
4802
  };
4803
+ const mockForDeviceHealthIssueStatusSummariesQuery = (variables, data) => {
4804
+ return reactCoreContextsTest.queryFor(DeviceHealthIssueStatusSummariesDocument, variables, utilities.mergeDeep({
4805
+ __typename: "Query",
4806
+ assetSummary: {
4807
+ __typename: "AssetSummary",
4808
+ fleetHealthDeviceStatusSummary: {
4809
+ __typename: "MetadataSummary",
4810
+ total: 6273236744536064,
4811
+ summary: [
4812
+ {
4813
+ __typename: "Summary",
4814
+ key: "subito",
4815
+ count: 6273236744536064,
4816
+ },
4817
+ ],
4818
+ },
4819
+ },
4820
+ }, data || {}));
4821
+ };
4720
4822
  const mockForDeviceHealthIssueTypeSummariesQuery = (variables, data) => {
4721
4823
  return reactCoreContextsTest.queryFor(DeviceHealthIssueTypeSummariesDocument, variables, utilities.mergeDeep({
4722
4824
  __typename: "Query",
@@ -5280,6 +5382,7 @@ const useDefaultAssetFilterBarDefinition = ({ sitesEnabled, owningDepotEnabled,
5280
5382
  const accessManagementMode = useAccessManagementModeFilter();
5281
5383
  const fleetHealthTypes = useDeviceHealthIssueTypeFilter();
5282
5384
  const fleetHealthCategories = useDeviceHealthIssueCategoryFilter();
5385
+ const fleetHealthStatus = useDeviceHealthIssueStatusFilter();
5283
5386
  return react.useMemo(() => {
5284
5387
  return {
5285
5388
  assetType,
@@ -5306,6 +5409,7 @@ const useDefaultAssetFilterBarDefinition = ({ sitesEnabled, owningDepotEnabled,
5306
5409
  accessManagementMode,
5307
5410
  fleetHealthTypes,
5308
5411
  fleetHealthCategories,
5412
+ fleetHealthStatus,
5309
5413
  };
5310
5414
  }, [
5311
5415
  siteIds,
@@ -5332,6 +5436,7 @@ const useDefaultAssetFilterBarDefinition = ({ sitesEnabled, owningDepotEnabled,
5332
5436
  accessManagementMode,
5333
5437
  fleetHealthTypes,
5334
5438
  fleetHealthCategories,
5439
+ fleetHealthStatus,
5335
5440
  ]);
5336
5441
  };
5337
5442
 
@@ -5385,6 +5490,7 @@ exports.mapMetadataCompletenessToLabelId = mapMetadataCompletenessToLabelId;
5385
5490
  exports.metadataCompleteness = metadataCompleteness;
5386
5491
  exports.metadataCompletenessOptions = metadataCompletenessOptions;
5387
5492
  exports.mockForDeviceHealthIssueCategorySummariesQuery = mockForDeviceHealthIssueCategorySummariesQuery;
5493
+ exports.mockForDeviceHealthIssueStatusSummariesQuery = mockForDeviceHealthIssueStatusSummariesQuery;
5388
5494
  exports.mockForDeviceHealthIssueTypeSummariesQuery = mockForDeviceHealthIssueTypeSummariesQuery;
5389
5495
  exports.mockForGetAccessManagementModeDesiredSummaryQuery = mockForGetAccessManagementModeDesiredSummaryQuery;
5390
5496
  exports.mockForGetAssetTelematicsDeviceConnectionSummaryQuery = mockForGetAssetTelematicsDeviceConnectionSummaryQuery;
@@ -5425,6 +5531,7 @@ exports.useCriticalityFilter = useCriticalityFilter;
5425
5531
  exports.useCustomerIdsFilter = useCustomerIdsFilter;
5426
5532
  exports.useDefaultAssetFilterBarDefinition = useDefaultAssetFilterBarDefinition;
5427
5533
  exports.useDeviceHealthIssueCategoryFilter = useDeviceHealthIssueCategoryFilter;
5534
+ exports.useDeviceHealthIssueStatusFilter = useDeviceHealthIssueStatusFilter;
5428
5535
  exports.useDeviceHealthIssueTypeFilter = useDeviceHealthIssueTypeFilter;
5429
5536
  exports.useFollowedFilter = useFollowedFilter;
5430
5537
  exports.useGroupIdsFilter = useGroupIdsFilter;