@trackunit/filters-asset-filter-definitions 0.0.15 → 0.0.17

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
@@ -78,6 +78,9 @@ var defaultTranslations = {
78
78
  "assetFilters.lastSeenFilter.last7Days": "Last 7 days",
79
79
  "assetFilters.lastSeenFilter.lastHour": "Last hour",
80
80
  "assetFilters.lastSeenFilter.olderThan30Days": "More than 30 days",
81
+ "assetFilters.metadataCompleteness.ALL": "All",
82
+ "assetFilters.metadataCompleteness.COMPLETE": "Complete",
83
+ "assetFilters.metadataCompleteness.PARTIAL": "Partial",
81
84
  "assetFilters.ownerAccountNameFilter.label": "Owner",
82
85
  "assetFilters.partnerFilter.label": "Partner",
83
86
  "assetFilters.periodFilter.label": "Period",
@@ -160,10 +163,12 @@ var defaultTranslations = {
160
163
  "fleetlist.column.brand": "Brand",
161
164
  "fleetlist.column.city": "City",
162
165
  "fleetlist.column.country": "Country",
166
+ "fleetlist.column.customerIds": "Customers",
163
167
  "fleetlist.column.externalReference": "External Reference",
164
168
  "fleetlist.column.groupIds": "Groups",
165
169
  "fleetlist.column.lastSeen": "Last Seen",
166
170
  "fleetlist.column.metadata": "Metadata",
171
+ "fleetlist.column.metadataCompleteness": "Metadata Completeness",
167
172
  "fleetlist.column.model": "Model",
168
173
  "fleetlist.column.name": "Name",
169
174
  "fleetlist.column.owner": "Owner",
@@ -409,6 +414,65 @@ const GetFleetSiteTypeSummaryDocument = {
409
414
  },
410
415
  ],
411
416
  };
417
+ const GetMetadataCompletenessSummaryDocument = {
418
+ kind: "Document",
419
+ definitions: [
420
+ {
421
+ kind: "OperationDefinition",
422
+ operation: "query",
423
+ name: { kind: "Name", value: "GetMetadataCompletenessSummary" },
424
+ variableDefinitions: [
425
+ {
426
+ kind: "VariableDefinition",
427
+ variable: { kind: "Variable", name: { kind: "Name", value: "filters" } },
428
+ type: { kind: "NamedType", name: { kind: "Name", value: "AssetFiltersInput" } },
429
+ },
430
+ ],
431
+ selectionSet: {
432
+ kind: "SelectionSet",
433
+ selections: [
434
+ {
435
+ kind: "Field",
436
+ name: { kind: "Name", value: "assetSummary" },
437
+ arguments: [
438
+ {
439
+ kind: "Argument",
440
+ name: { kind: "Name", value: "filters" },
441
+ value: { kind: "Variable", name: { kind: "Name", value: "filters" } },
442
+ },
443
+ ],
444
+ selectionSet: {
445
+ kind: "SelectionSet",
446
+ selections: [
447
+ {
448
+ kind: "Field",
449
+ name: { kind: "Name", value: "metadataCompletenesses" },
450
+ selectionSet: {
451
+ kind: "SelectionSet",
452
+ selections: [
453
+ { kind: "Field", name: { kind: "Name", value: "total" } },
454
+ {
455
+ kind: "Field",
456
+ name: { kind: "Name", value: "summary" },
457
+ selectionSet: {
458
+ kind: "SelectionSet",
459
+ selections: [
460
+ { kind: "Field", name: { kind: "Name", value: "metadataCompleteness" } },
461
+ { kind: "Field", name: { kind: "Name", value: "count" } },
462
+ ],
463
+ },
464
+ },
465
+ ],
466
+ },
467
+ },
468
+ ],
469
+ },
470
+ },
471
+ ],
472
+ },
473
+ },
474
+ ],
475
+ };
412
476
  const GetFleetGroupSummaryDocument = {
413
477
  kind: "Document",
414
478
  definitions: [
@@ -1108,6 +1172,98 @@ const GetSiteIdSummaryDocument = {
1108
1172
  },
1109
1173
  ],
1110
1174
  };
1175
+ const GetCustomerIdSummaryDocument = {
1176
+ kind: "Document",
1177
+ definitions: [
1178
+ {
1179
+ kind: "OperationDefinition",
1180
+ operation: "query",
1181
+ name: { kind: "Name", value: "GetCustomerIdSummary" },
1182
+ variableDefinitions: [
1183
+ {
1184
+ kind: "VariableDefinition",
1185
+ variable: { kind: "Variable", name: { kind: "Name", value: "filters" } },
1186
+ type: { kind: "NamedType", name: { kind: "Name", value: "AssetFiltersInput" } },
1187
+ },
1188
+ {
1189
+ kind: "VariableDefinition",
1190
+ variable: { kind: "Variable", name: { kind: "Name", value: "search" } },
1191
+ type: { kind: "NamedType", name: { kind: "Name", value: "String" } },
1192
+ },
1193
+ {
1194
+ kind: "VariableDefinition",
1195
+ variable: { kind: "Variable", name: { kind: "Name", value: "limit" } },
1196
+ type: { kind: "NonNullType", type: { kind: "NamedType", name: { kind: "Name", value: "Int" } } },
1197
+ },
1198
+ ],
1199
+ selectionSet: {
1200
+ kind: "SelectionSet",
1201
+ selections: [
1202
+ {
1203
+ kind: "Field",
1204
+ name: { kind: "Name", value: "assetSummary" },
1205
+ arguments: [
1206
+ {
1207
+ kind: "Argument",
1208
+ name: { kind: "Name", value: "filters" },
1209
+ value: { kind: "Variable", name: { kind: "Name", value: "filters" } },
1210
+ },
1211
+ ],
1212
+ selectionSet: {
1213
+ kind: "SelectionSet",
1214
+ selections: [
1215
+ {
1216
+ kind: "Field",
1217
+ name: { kind: "Name", value: "customers" },
1218
+ arguments: [
1219
+ {
1220
+ kind: "Argument",
1221
+ name: { kind: "Name", value: "filter" },
1222
+ value: { kind: "Variable", name: { kind: "Name", value: "search" } },
1223
+ },
1224
+ {
1225
+ kind: "Argument",
1226
+ name: { kind: "Name", value: "limit" },
1227
+ value: { kind: "Variable", name: { kind: "Name", value: "limit" } },
1228
+ },
1229
+ ],
1230
+ selectionSet: {
1231
+ kind: "SelectionSet",
1232
+ selections: [
1233
+ { kind: "Field", name: { kind: "Name", value: "total" } },
1234
+ {
1235
+ kind: "Field",
1236
+ name: { kind: "Name", value: "summary" },
1237
+ selectionSet: {
1238
+ kind: "SelectionSet",
1239
+ selections: [
1240
+ {
1241
+ kind: "Field",
1242
+ name: { kind: "Name", value: "customer" },
1243
+ selectionSet: {
1244
+ kind: "SelectionSet",
1245
+ selections: [
1246
+ { kind: "Field", name: { kind: "Name", value: "id" } },
1247
+ { kind: "Field", name: { kind: "Name", value: "customerId" } },
1248
+ { kind: "Field", name: { kind: "Name", value: "name" } },
1249
+ ],
1250
+ },
1251
+ },
1252
+ { kind: "Field", name: { kind: "Name", value: "count" } },
1253
+ ],
1254
+ },
1255
+ },
1256
+ ],
1257
+ },
1258
+ },
1259
+ ],
1260
+ },
1261
+ },
1262
+ ],
1263
+ },
1264
+ },
1265
+ ],
1266
+ };
1111
1267
 
1112
1268
  exports.AssetActivityState = void 0;
1113
1269
  (function (AssetActivityState) {
@@ -1346,7 +1502,7 @@ const useBoundingBoxFilter = ({ showInFilterBar } = {
1346
1502
  return result;
1347
1503
  };
1348
1504
 
1349
- const FETCH_LIMIT$6 = 1000;
1505
+ const FETCH_LIMIT$7 = 1000;
1350
1506
  const BrandFilterView = (props) => {
1351
1507
  var _a, _b;
1352
1508
  const { getMachineTypeTranslation } = translationsMachineType.useMachineTypeTranslations();
@@ -1357,7 +1513,7 @@ const BrandFilterView = (props) => {
1357
1513
  const { data, loading } = client.useQuery(GetFleetBrandsSummaryDocument, {
1358
1514
  fetchPolicy: "cache-first",
1359
1515
  variables: {
1360
- limit: FETCH_LIMIT$6,
1516
+ limit: FETCH_LIMIT$7,
1361
1517
  search: debouncedSearch,
1362
1518
  filters: Object.assign(Object.assign({}, activeFilters), { brands: undefined }),
1363
1519
  },
@@ -1369,7 +1525,7 @@ const BrandFilterView = (props) => {
1369
1525
  count: brand.count,
1370
1526
  label: getMachineTypeTranslation(brand.key),
1371
1527
  }))) !== null && _c !== void 0 ? _c : [];
1372
- setShowRequestMoreUseSearch(result.length === FETCH_LIMIT$6);
1528
+ setShowRequestMoreUseSearch(result.length === FETCH_LIMIT$7);
1373
1529
  return result;
1374
1530
  }, [(_b = (_a = data === null || data === void 0 ? void 0 : data.assetSummary) === null || _a === void 0 ? void 0 : _a.brands) === null || _b === void 0 ? void 0 : _b.summary, getMachineTypeTranslation]);
1375
1531
  return (jsxRuntime.jsx(filtersFilterBar.DefaultCheckboxFilter, Object.assign({}, props, { loading: loading, options: options, customSearch: { value: searchText, onChange: setSearchText }, showRequestMoreUseSearch: showRequestMoreUseSearch })));
@@ -1469,6 +1625,61 @@ const useCriticalityFilter = () => {
1469
1625
  return result;
1470
1626
  };
1471
1627
 
1628
+ const FETCH_LIMIT$6 = 1000;
1629
+ const CustomerIdsFilterView = (props) => {
1630
+ var _a, _b;
1631
+ const activeFilters = filtersGraphqlHook.useActiveAssetFilters(props.filterState.values);
1632
+ const [showRequestMoreUseSearch, setShowRequestMoreUseSearch] = react.useState(false);
1633
+ const [searchText, setSearchText] = react.useState("");
1634
+ const debouncedSearch = reactComponents.useDebounce(searchText, 500);
1635
+ const { data, loading } = client.useQuery(GetCustomerIdSummaryDocument, {
1636
+ fetchPolicy: "cache-first",
1637
+ variables: {
1638
+ limit: FETCH_LIMIT$6,
1639
+ search: debouncedSearch,
1640
+ filters: Object.assign(Object.assign({}, activeFilters), { customerIds: undefined }),
1641
+ },
1642
+ context: { headers: { "TU-PREVIEW": "LIVE-PROSPER" } },
1643
+ });
1644
+ const options = react.useMemo(() => {
1645
+ var _a, _b, _c;
1646
+ const result = (_c = (_b = (_a = data === null || data === void 0 ? void 0 : data.assetSummary) === null || _a === void 0 ? void 0 : _a.customers) === null || _b === void 0 ? void 0 : _b.summary.map(customerEdge => {
1647
+ var _a, _b;
1648
+ return ({
1649
+ key: ((_a = customerEdge.customer) === null || _a === void 0 ? void 0 : _a.customerId) || "unknown",
1650
+ count: customerEdge.count || 0,
1651
+ label: ((_b = customerEdge.customer) === null || _b === void 0 ? void 0 : _b.name) || "Unknown",
1652
+ });
1653
+ })) !== null && _c !== void 0 ? _c : [];
1654
+ setShowRequestMoreUseSearch(result.length === FETCH_LIMIT$6);
1655
+ return result;
1656
+ }, [(_b = (_a = data === null || data === void 0 ? void 0 : data.assetSummary) === null || _a === void 0 ? void 0 : _a.customers) === null || _b === void 0 ? void 0 : _b.summary]);
1657
+ return (jsxRuntime.jsx(filtersFilterBar.DefaultCheckboxFilter, Object.assign({}, props, { loading: loading, options: options, customSearch: { value: searchText, onChange: setSearchText }, showRequestMoreUseSearch: showRequestMoreUseSearch })));
1658
+ };
1659
+ /**
1660
+ *
1661
+ */
1662
+ const useCustomerIdsFilter = ({ showInStarredMenu, showInFilterBar, defaultvalue } = {
1663
+ showInStarredMenu: () => true,
1664
+ showInFilterBar: () => true,
1665
+ }) => {
1666
+ const [t] = useTranslation();
1667
+ const result = react.useMemo(() => {
1668
+ return {
1669
+ filterKey: "customerIds",
1670
+ type: "valueName",
1671
+ default: true,
1672
+ defaultvalue,
1673
+ group: "CUSTOMERS",
1674
+ title: t("fleetlist.column.customerIds"),
1675
+ showInStarredMenu,
1676
+ showInFilterBar,
1677
+ component: props => jsxRuntime.jsx(CustomerIdsFilterView, Object.assign({}, props)),
1678
+ };
1679
+ }, [showInFilterBar, showInStarredMenu, defaultvalue, t]);
1680
+ return result;
1681
+ };
1682
+
1472
1683
  const FollowedFiltersView = (props) => {
1473
1684
  var _a;
1474
1685
  const [t] = useTranslation();
@@ -1645,6 +1856,87 @@ const useLastSeenFilter = () => {
1645
1856
  return result;
1646
1857
  };
1647
1858
 
1859
+ const metadataCompleteness = {
1860
+ Complete: "COMPLETE",
1861
+ Partial: "PARTIAL",
1862
+ All: "ALL",
1863
+ };
1864
+ const metadataCompletenessOptions = ["COMPLETE", "PARTIAL", "ALL"];
1865
+ /**
1866
+ * Maps the asset type to a label id
1867
+ *
1868
+ * @param type Asset type
1869
+ * @returns {string} Label id
1870
+ */
1871
+ const mapMetadataCompletenessToLabelId = (type) => {
1872
+ switch (type) {
1873
+ case "COMPLETE":
1874
+ case "PARTIAL":
1875
+ case "ALL":
1876
+ return `assetFilters.metadataCompleteness.${type}`;
1877
+ default:
1878
+ return "assetFilters.unknown";
1879
+ }
1880
+ };
1881
+ const MetadataCompletenessFilterView = (props) => {
1882
+ var _a, _b, _c, _d;
1883
+ const [t] = useTranslation();
1884
+ const activeFilters = filtersGraphqlHook.useActiveAssetFilters(props.filterState.values);
1885
+ const { data, loading } = client.useQuery(GetMetadataCompletenessSummaryDocument, {
1886
+ variables: {
1887
+ filters: Object.assign(Object.assign({}, activeFilters), { metadataCompleteness: undefined }),
1888
+ },
1889
+ });
1890
+ const getCountForMetadataCompleteness = react.useCallback((type) => {
1891
+ var _a, _b, _c, _d, _e, _f;
1892
+ const summary = ((_b = (_a = data === null || data === void 0 ? void 0 : data.assetSummary) === null || _a === void 0 ? void 0 : _a.metadataCompletenesses) === null || _b === void 0 ? void 0 : _b.summary) || [];
1893
+ switch (type) {
1894
+ case "COMPLETE":
1895
+ return ((_c = summary.find(item => item.metadataCompleteness === "COMPLETE")) === null || _c === void 0 ? void 0 : _c.count) || 0;
1896
+ case "PARTIAL":
1897
+ return ((_d = summary.find(item => item.metadataCompleteness === "PARTIAL")) === null || _d === void 0 ? void 0 : _d.count) || 0;
1898
+ case "ALL":
1899
+ return (_f = (_e = data === null || data === void 0 ? void 0 : data.assetSummary) === null || _e === void 0 ? void 0 : _e.metadataCompletenesses) === null || _f === void 0 ? void 0 : _f.total;
1900
+ default:
1901
+ throw new Error("Unrecognized metadataCompleteness type");
1902
+ }
1903
+ }, [(_b = (_a = data === null || data === void 0 ? void 0 : data.assetSummary) === null || _a === void 0 ? void 0 : _a.metadataCompletenesses) === null || _b === void 0 ? void 0 : _b.summary, (_d = (_c = data === null || data === void 0 ? void 0 : data.assetSummary) === null || _c === void 0 ? void 0 : _c.metadataCompletenesses) === null || _d === void 0 ? void 0 : _d.total]);
1904
+ const options = react.useMemo(() => {
1905
+ return metadataCompletenessOptions.map(type => {
1906
+ var _a;
1907
+ return ({
1908
+ key: type,
1909
+ count: (_a = getCountForMetadataCompleteness(type)) !== null && _a !== void 0 ? _a : undefined,
1910
+ label: t(mapMetadataCompletenessToLabelId(type)),
1911
+ });
1912
+ });
1913
+ }, [getCountForMetadataCompleteness, t]);
1914
+ return jsxRuntime.jsx(filtersFilterBar.DefaultRadioFilter, Object.assign({}, props, { loading: loading, options: options }));
1915
+ };
1916
+ /**
1917
+ * MetadataCompleteness filter definition
1918
+ *
1919
+ * @returns {ValueNameFilterDefinition} MetadataCompleteness filter definition
1920
+ */
1921
+ /**
1922
+ *
1923
+ */
1924
+ const useMetadataCompletenessFilter = ({ isDefault } = {}) => {
1925
+ const [t] = useTranslation();
1926
+ const result = react.useMemo(() => {
1927
+ return {
1928
+ filterKey: "metadataCompleteness",
1929
+ type: "valueName",
1930
+ group: "METADATA",
1931
+ default: isDefault,
1932
+ defaultValue: [{ value: "ALL", name: t(mapMetadataCompletenessToLabelId("ALL")) }],
1933
+ title: t("fleetlist.column.metadataCompleteness"),
1934
+ component: props => jsxRuntime.jsx(MetadataCompletenessFilterView, Object.assign({}, props)),
1935
+ };
1936
+ }, [isDefault, t]);
1937
+ return result;
1938
+ };
1939
+
1648
1940
  const FETCH_LIMIT$4 = 1000;
1649
1941
  const ModelsFilterView = (props) => {
1650
1942
  var _a, _b;
@@ -2028,13 +2320,11 @@ const sortSiteTypeSummary = (arr) => {
2028
2320
  [exports.SiteTypeSFS.ClassicPoi]: 6,
2029
2321
  [exports.SiteTypeSFS.NotOnSite]: 7,
2030
2322
  };
2031
- const sortedArr = [...arr];
2032
- sortedArr.sort((a, b) => {
2323
+ return [...arr].sort((a, b) => {
2033
2324
  const typeA = typeOrder[a.key];
2034
2325
  const typeB = typeOrder[b.key];
2035
2326
  return typeA - typeB;
2036
2327
  });
2037
- return sortedArr;
2038
2328
  };
2039
2329
  /**
2040
2330
  *
@@ -2209,6 +2499,7 @@ const usePartnerFilter = () => {
2209
2499
  */
2210
2500
  const useDefaultAssetFilterBarDefinition = () => {
2211
2501
  const assetType = useAssetTypeFilter();
2502
+ const metadataCompleteness = useMetadataCompletenessFilter();
2212
2503
  const groups = useGroupIdsFilter();
2213
2504
  const siteIds = useSiteIdsFilter({ showInStarredMenu: () => true, showInFilterBar: () => true });
2214
2505
  const brands = useBrandFilter();
@@ -2229,6 +2520,7 @@ const useDefaultAssetFilterBarDefinition = () => {
2229
2520
  siteIds,
2230
2521
  groups,
2231
2522
  assetType,
2523
+ metadataCompleteness,
2232
2524
  brands,
2233
2525
  models,
2234
2526
  types,
@@ -2244,22 +2536,23 @@ const useDefaultAssetFilterBarDefinition = () => {
2244
2536
  productionYears,
2245
2537
  };
2246
2538
  }, [
2247
- groups,
2248
2539
  siteIds,
2249
- activity,
2540
+ groups,
2250
2541
  assetType,
2251
- boundingBox,
2542
+ metadataCompleteness,
2252
2543
  brands,
2544
+ models,
2545
+ types,
2546
+ activity,
2253
2547
  criticality,
2254
- followed,
2255
2548
  lastSeen,
2256
- models,
2549
+ followed,
2550
+ siteType,
2257
2551
  ownerAccountIds,
2552
+ search,
2553
+ boundingBox,
2258
2554
  partner,
2259
2555
  productionYears,
2260
- search,
2261
- siteType,
2262
- types,
2263
2556
  ]);
2264
2557
  };
2265
2558
 
@@ -2354,6 +2647,8 @@ exports.GetFleetGroupSummaryDocument = GetFleetGroupSummaryDocument;
2354
2647
  exports.coordinatesHasCorrectFormat = coordinatesHasCorrectFormat;
2355
2648
  exports.mapActivityToLabelId = mapActivityToLabelId;
2356
2649
  exports.mapAssetTypeToLabelId = mapAssetTypeToLabelId;
2650
+ exports.mapMetadataCompletenessToLabelId = mapMetadataCompletenessToLabelId;
2651
+ exports.metadataCompleteness = metadataCompleteness;
2357
2652
  exports.sortSiteTypeSummary = sortSiteTypeSummary;
2358
2653
  exports.useActivityFilter = useActivityFilter;
2359
2654
  exports.useAssetIdsFilter = useAssetIdsFilter;
@@ -2361,11 +2656,13 @@ exports.useAssetTypeFilter = useAssetTypeFilter;
2361
2656
  exports.useBoundingBoxFilter = useBoundingBoxFilter;
2362
2657
  exports.useBrandFilter = useBrandFilter;
2363
2658
  exports.useCriticalityFilter = useCriticalityFilter;
2659
+ exports.useCustomerIdsFilter = useCustomerIdsFilter;
2364
2660
  exports.useDefaultAssetFilterBarDefinition = useDefaultAssetFilterBarDefinition;
2365
2661
  exports.useFollowedFilter = useFollowedFilter;
2366
2662
  exports.useGroupIdsFilter = useGroupIdsFilter;
2367
2663
  exports.useHourIntervalFilter = useHourIntervalFilter;
2368
2664
  exports.useLastSeenFilter = useLastSeenFilter;
2665
+ exports.useMetadataCompletenessFilter = useMetadataCompletenessFilter;
2369
2666
  exports.useModelsFilter = useModelsFilter;
2370
2667
  exports.useOwnerAccountIdsFilter = useOwnerAccountIdsFilter;
2371
2668
  exports.usePeriodFilter = usePeriodFilter;