@itwin/grouping-mapping-widget 0.5.8 → 0.7.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.
Files changed (146) hide show
  1. package/README.md +84 -0
  2. package/lib/cjs/grouping-mapping-widget.d.ts +1 -1
  3. package/lib/cjs/grouping-mapping-widget.js +3 -2
  4. package/lib/cjs/grouping-mapping-widget.js.map +1 -1
  5. package/lib/cjs/test/GroupingMappingCustomUI.test.d.ts +2 -0
  6. package/lib/cjs/test/GroupingMappingCustomUI.test.js +162 -0
  7. package/lib/cjs/test/GroupingMappingCustomUI.test.js.map +1 -0
  8. package/lib/cjs/test/WidgetHeader.test.d.ts +2 -0
  9. package/lib/cjs/test/WidgetHeader.test.js +36 -0
  10. package/lib/cjs/test/WidgetHeader.test.js.map +1 -0
  11. package/lib/cjs/test/test-utils.d.ts +72 -0
  12. package/lib/cjs/test/test-utils.js +71 -0
  13. package/lib/cjs/test/test-utils.js.map +1 -0
  14. package/lib/cjs/widget/components/CalculatedPropertyAction.d.ts +2 -2
  15. package/lib/cjs/widget/components/CalculatedPropertyAction.js +13 -13
  16. package/lib/cjs/widget/components/CalculatedPropertyAction.js.map +1 -1
  17. package/lib/cjs/widget/components/CalculatedPropertyTable.d.ts +5 -5
  18. package/lib/cjs/widget/components/CalculatedPropertyTable.js.map +1 -1
  19. package/lib/cjs/widget/components/ConfirmMappingsImport.d.ts +3 -3
  20. package/lib/cjs/widget/components/ConfirmMappingsImport.js.map +1 -1
  21. package/lib/cjs/widget/components/CustomCalculationAction.d.ts +2 -2
  22. package/lib/cjs/widget/components/CustomCalculationAction.js +5 -5
  23. package/lib/cjs/widget/components/CustomCalculationAction.js.map +1 -1
  24. package/lib/cjs/widget/components/CustomCalculationTable.d.ts +5 -5
  25. package/lib/cjs/widget/components/CustomCalculationTable.js.map +1 -1
  26. package/lib/cjs/widget/components/GroupAction.d.ts +4 -3
  27. package/lib/cjs/widget/components/GroupAction.js +82 -75
  28. package/lib/cjs/widget/components/GroupAction.js.map +1 -1
  29. package/lib/cjs/widget/components/GroupAction.scss +1 -13
  30. package/lib/cjs/widget/components/GroupPropertyAction.d.ts +2 -1
  31. package/lib/cjs/widget/components/GroupPropertyAction.js +27 -26
  32. package/lib/cjs/widget/components/GroupPropertyAction.js.map +1 -1
  33. package/lib/cjs/widget/components/GroupPropertyTable.d.ts +5 -5
  34. package/lib/cjs/widget/components/GroupPropertyTable.js.map +1 -1
  35. package/lib/cjs/widget/components/Grouping.d.ts +6 -1
  36. package/lib/cjs/widget/components/Grouping.js +128 -66
  37. package/lib/cjs/widget/components/Grouping.js.map +1 -1
  38. package/lib/cjs/widget/components/Grouping.scss +21 -2
  39. package/lib/cjs/widget/components/GroupingMapping.d.ts +8 -3
  40. package/lib/cjs/widget/components/GroupingMapping.js +22 -9
  41. package/lib/cjs/widget/components/GroupingMapping.js.map +1 -1
  42. package/lib/cjs/widget/components/Mapping.d.ts +1 -1
  43. package/lib/cjs/widget/components/Mapping.js +6 -7
  44. package/lib/cjs/widget/components/Mapping.js.map +1 -1
  45. package/lib/cjs/widget/components/Mapping.scss +4 -5
  46. package/lib/cjs/widget/components/MappingAction.js +1 -2
  47. package/lib/cjs/widget/components/MappingAction.js.map +1 -1
  48. package/lib/cjs/widget/components/MappingImportWizardModal.js.map +1 -1
  49. package/lib/cjs/widget/components/PropertyMenu.d.ts +2 -2
  50. package/lib/cjs/widget/components/PropertyMenu.js +7 -8
  51. package/lib/cjs/widget/components/PropertyMenu.js.map +1 -1
  52. package/lib/cjs/widget/components/SelectMappings.d.ts +2 -2
  53. package/lib/cjs/widget/components/SelectMappings.js +2 -2
  54. package/lib/cjs/widget/components/SelectMappings.js.map +1 -1
  55. package/lib/cjs/widget/components/context/GroupingMappingCustomUIContext.d.ts +6 -0
  56. package/lib/cjs/widget/components/context/GroupingMappingCustomUIContext.js +25 -0
  57. package/lib/cjs/widget/components/context/GroupingMappingCustomUIContext.js.map +1 -0
  58. package/lib/cjs/widget/components/context/MappingClientContext.d.ts +5 -5
  59. package/lib/cjs/widget/components/context/MappingClientContext.js +1 -5
  60. package/lib/cjs/widget/components/context/MappingClientContext.js.map +1 -1
  61. package/lib/cjs/widget/components/customUI/GroupingMappingCustomUI.d.ts +91 -0
  62. package/lib/cjs/widget/components/customUI/GroupingMappingCustomUI.js +9 -0
  63. package/lib/cjs/widget/components/customUI/GroupingMappingCustomUI.js.map +1 -0
  64. package/lib/cjs/widget/components/customUI/ManualGroupingCustomUI.d.ts +6 -0
  65. package/lib/cjs/widget/components/customUI/ManualGroupingCustomUI.js +31 -0
  66. package/lib/cjs/widget/components/customUI/ManualGroupingCustomUI.js.map +1 -0
  67. package/lib/{esm/widget/IMappingClient.js → cjs/widget/components/customUI/ManualGroupingCustomUI.scss} +13 -2
  68. package/lib/cjs/widget/components/customUI/SearchGroupingCustomUI.d.ts +6 -0
  69. package/lib/cjs/widget/components/customUI/SearchGroupingCustomUI.js +97 -0
  70. package/lib/cjs/widget/components/customUI/SearchGroupingCustomUI.js.map +1 -0
  71. package/lib/cjs/widget/{IMappingClient.js → components/customUI/SearchGroupingCustomUI.scss} +13 -3
  72. package/lib/esm/grouping-mapping-widget.d.ts +1 -1
  73. package/lib/esm/grouping-mapping-widget.js +1 -1
  74. package/lib/esm/grouping-mapping-widget.js.map +1 -1
  75. package/lib/esm/test/GroupingMappingCustomUI.test.d.ts +2 -0
  76. package/lib/esm/test/GroupingMappingCustomUI.test.js +138 -0
  77. package/lib/esm/test/GroupingMappingCustomUI.test.js.map +1 -0
  78. package/lib/esm/test/WidgetHeader.test.d.ts +2 -0
  79. package/lib/esm/test/WidgetHeader.test.js +31 -0
  80. package/lib/esm/test/WidgetHeader.test.js.map +1 -0
  81. package/lib/esm/test/test-utils.d.ts +72 -0
  82. package/lib/esm/test/test-utils.js +42 -0
  83. package/lib/esm/test/test-utils.js.map +1 -0
  84. package/lib/esm/widget/components/CalculatedPropertyAction.d.ts +2 -2
  85. package/lib/esm/widget/components/CalculatedPropertyAction.js +13 -13
  86. package/lib/esm/widget/components/CalculatedPropertyAction.js.map +1 -1
  87. package/lib/esm/widget/components/CalculatedPropertyTable.d.ts +5 -5
  88. package/lib/esm/widget/components/CalculatedPropertyTable.js.map +1 -1
  89. package/lib/esm/widget/components/ConfirmMappingsImport.d.ts +3 -3
  90. package/lib/esm/widget/components/ConfirmMappingsImport.js.map +1 -1
  91. package/lib/esm/widget/components/CustomCalculationAction.d.ts +2 -2
  92. package/lib/esm/widget/components/CustomCalculationAction.js +5 -5
  93. package/lib/esm/widget/components/CustomCalculationAction.js.map +1 -1
  94. package/lib/esm/widget/components/CustomCalculationTable.d.ts +5 -5
  95. package/lib/esm/widget/components/CustomCalculationTable.js.map +1 -1
  96. package/lib/esm/widget/components/GroupAction.d.ts +4 -3
  97. package/lib/esm/widget/components/GroupAction.js +85 -78
  98. package/lib/esm/widget/components/GroupAction.js.map +1 -1
  99. package/lib/esm/widget/components/GroupAction.scss +1 -13
  100. package/lib/esm/widget/components/GroupPropertyAction.d.ts +2 -1
  101. package/lib/esm/widget/components/GroupPropertyAction.js +27 -26
  102. package/lib/esm/widget/components/GroupPropertyAction.js.map +1 -1
  103. package/lib/esm/widget/components/GroupPropertyTable.d.ts +5 -5
  104. package/lib/esm/widget/components/GroupPropertyTable.js.map +1 -1
  105. package/lib/esm/widget/components/Grouping.d.ts +6 -1
  106. package/lib/esm/widget/components/Grouping.js +128 -66
  107. package/lib/esm/widget/components/Grouping.js.map +1 -1
  108. package/lib/esm/widget/components/Grouping.scss +21 -2
  109. package/lib/esm/widget/components/GroupingMapping.d.ts +8 -3
  110. package/lib/esm/widget/components/GroupingMapping.js +23 -10
  111. package/lib/esm/widget/components/GroupingMapping.js.map +1 -1
  112. package/lib/esm/widget/components/Mapping.d.ts +1 -1
  113. package/lib/esm/widget/components/Mapping.js +6 -7
  114. package/lib/esm/widget/components/Mapping.js.map +1 -1
  115. package/lib/esm/widget/components/Mapping.scss +4 -5
  116. package/lib/esm/widget/components/MappingAction.js +1 -2
  117. package/lib/esm/widget/components/MappingAction.js.map +1 -1
  118. package/lib/esm/widget/components/MappingImportWizardModal.js.map +1 -1
  119. package/lib/esm/widget/components/PropertyMenu.d.ts +2 -2
  120. package/lib/esm/widget/components/PropertyMenu.js +7 -8
  121. package/lib/esm/widget/components/PropertyMenu.js.map +1 -1
  122. package/lib/esm/widget/components/SelectMappings.d.ts +2 -2
  123. package/lib/esm/widget/components/SelectMappings.js +2 -2
  124. package/lib/esm/widget/components/SelectMappings.js.map +1 -1
  125. package/lib/esm/widget/components/context/GroupingMappingCustomUIContext.d.ts +6 -0
  126. package/lib/esm/widget/components/context/GroupingMappingCustomUIContext.js +20 -0
  127. package/lib/esm/widget/components/context/GroupingMappingCustomUIContext.js.map +1 -0
  128. package/lib/esm/widget/components/context/MappingClientContext.d.ts +5 -5
  129. package/lib/esm/widget/components/context/MappingClientContext.js +2 -6
  130. package/lib/esm/widget/components/context/MappingClientContext.js.map +1 -1
  131. package/lib/esm/widget/components/customUI/GroupingMappingCustomUI.d.ts +91 -0
  132. package/lib/esm/widget/components/customUI/GroupingMappingCustomUI.js +6 -0
  133. package/lib/esm/widget/components/customUI/GroupingMappingCustomUI.js.map +1 -0
  134. package/lib/esm/widget/components/customUI/ManualGroupingCustomUI.d.ts +6 -0
  135. package/lib/esm/widget/components/customUI/ManualGroupingCustomUI.js +26 -0
  136. package/lib/esm/widget/components/customUI/ManualGroupingCustomUI.js.map +1 -0
  137. package/lib/esm/widget/components/customUI/ManualGroupingCustomUI.scss +17 -0
  138. package/lib/esm/widget/components/customUI/SearchGroupingCustomUI.d.ts +6 -0
  139. package/lib/esm/widget/components/customUI/SearchGroupingCustomUI.js +92 -0
  140. package/lib/esm/widget/components/customUI/SearchGroupingCustomUI.js.map +1 -0
  141. package/lib/esm/widget/components/customUI/SearchGroupingCustomUI.scss +17 -0
  142. package/package.json +18 -4
  143. package/lib/cjs/widget/IMappingClient.d.ts +0 -327
  144. package/lib/cjs/widget/IMappingClient.js.map +0 -1
  145. package/lib/esm/widget/IMappingClient.d.ts +0 -327
  146. package/lib/esm/widget/IMappingClient.js.map +0 -1
@@ -86,8 +86,8 @@ const convertToPropertyMap = (groupProperties, calculatedProperties, customCalcu
86
86
  return map;
87
87
  };
88
88
  const PropertyMenu = ({ iModelId, mappingId, group, goBack, hideGroupProps = false, hideCalculatedProps = false, hideCustomCalculationProps = false, }) => {
89
- var _a, _b, _c, _d, _e, _f;
90
- const groupId = (_a = group.id) !== null && _a !== void 0 ? _a : "";
89
+ var _a, _b;
90
+ const groupId = group.id;
91
91
  const { getAccessToken } = GroupingApiConfigContext_1.useGroupingMappingApiConfig();
92
92
  const mappingClient = MappingClientContext_1.useMappingClient();
93
93
  const iModelConnection = appui_react_1.useActiveIModelConnection();
@@ -113,9 +113,8 @@ const PropertyMenu = ({ iModelId, mappingId, group, goBack, hideGroupProps = fal
113
113
  const { isLoading: isLoadingCustomCalculations, data: customCalculations, refreshData: refreshCustomCalculations } = useFetchData_1.useCombinedFetchRefresh(fetchCustomCalculations);
114
114
  react_1.useEffect(() => {
115
115
  const initialize = async () => {
116
- var _a;
117
116
  try {
118
- const query = (_a = group.query) !== null && _a !== void 0 ? _a : "";
117
+ const query = group.query;
119
118
  const queryRowCount = await iModelConnection.queryRowCount(query);
120
119
  if (queryRowCount === 0) {
121
120
  itwinui_react_1.toaster.warning("The query is valid but produced no results.");
@@ -173,7 +172,7 @@ const PropertyMenu = ({ iModelId, mappingId, group, goBack, hideGroupProps = fal
173
172
  case PropertyMenuView.ADD_GROUP_PROPERTY:
174
173
  return (react_1.default.createElement(GroupPropertyAction_1.default, { iModelId: iModelId, mappingId: mappingId, groupId: groupId, keySet: keySet !== null && keySet !== void 0 ? keySet : new presentation_common_1.KeySet(), returnFn: groupPropertyReturn }));
175
174
  case PropertyMenuView.MODIFY_GROUP_PROPERTY:
176
- return (react_1.default.createElement(GroupPropertyAction_1.default, { iModelId: iModelId, mappingId: mappingId, groupId: groupId, keySet: keySet !== null && keySet !== void 0 ? keySet : new presentation_common_1.KeySet(), groupPropertyId: (_b = selectedGroupProperty === null || selectedGroupProperty === void 0 ? void 0 : selectedGroupProperty.id) !== null && _b !== void 0 ? _b : "", groupPropertyName: (_c = selectedGroupProperty === null || selectedGroupProperty === void 0 ? void 0 : selectedGroupProperty.propertyName) !== null && _c !== void 0 ? _c : "", returnFn: groupPropertyReturn }));
175
+ return (react_1.default.createElement(GroupPropertyAction_1.default, { iModelId: iModelId, mappingId: mappingId, groupId: groupId, keySet: keySet !== null && keySet !== void 0 ? keySet : new presentation_common_1.KeySet(), groupPropertyId: (_a = selectedGroupProperty === null || selectedGroupProperty === void 0 ? void 0 : selectedGroupProperty.id) !== null && _a !== void 0 ? _a : "", groupPropertyName: (_b = selectedGroupProperty === null || selectedGroupProperty === void 0 ? void 0 : selectedGroupProperty.propertyName) !== null && _b !== void 0 ? _b : "", returnFn: groupPropertyReturn }));
177
176
  case PropertyMenuView.ADD_CALCULATED_PROPERTY:
178
177
  return (react_1.default.createElement(CalculatedPropertyAction_1.default, { iModelId: iModelId, mappingId: mappingId, groupId: groupId, ids: resolvedHiliteIds, returnFn: calculatedPropertyReturn }));
179
178
  case PropertyMenuView.MODIFY_CALCULATED_PROPERTY:
@@ -185,7 +184,7 @@ const PropertyMenu = ({ iModelId, mappingId, group, goBack, hideGroupProps = fal
185
184
  default:
186
185
  return (react_1.default.createElement(itwinui_react_1.InformationPanelWrapper, { className: 'gmw-property-menu-wrapper' },
187
186
  react_1.default.createElement("div", { className: 'gmw-property-header' },
188
- react_1.default.createElement(utils_1.WidgetHeader, { title: `${(_d = group.groupName) !== null && _d !== void 0 ? _d : ""}`, returnFn: goBack }),
187
+ react_1.default.createElement(utils_1.WidgetHeader, { title: `${group.groupName}`, returnFn: goBack }),
189
188
  react_1.default.createElement(itwinui_react_1.IconButton, { styleType: 'borderless', onClick: () => setIsInformationPanelOpen(true) },
190
189
  react_1.default.createElement(itwinui_icons_react_1.SvgProperties, null))),
191
190
  react_1.default.createElement("div", { className: 'gmw-property-menu-container' },
@@ -197,10 +196,10 @@ const PropertyMenu = ({ iModelId, mappingId, group, goBack, hideGroupProps = fal
197
196
  react_1.default.createElement(CustomCalculationTable_1.default, { iModelId: iModelId, mappingId: mappingId, groupId: groupId, onCustomCalculationModify: onCustomCalculationModify, setSelectedCustomCalculation: setSelectedCustomCalculation, setGroupModifyView: setPropertyMenuView, isLoadingCustomCalculations: isLoadingCustomCalculations, customCalculations: customCalculations, refreshCustomCalculations: refreshCustomCalculations, selectedCustomCalculation: selectedCustomCalculation })))),
198
197
  react_1.default.createElement(itwinui_react_1.InformationPanel, { className: 'gmw-information-panel', isOpen: isInformationPanelOpen },
199
198
  react_1.default.createElement(itwinui_react_1.InformationPanelHeader, { onClose: () => setIsInformationPanelOpen(false) },
200
- react_1.default.createElement(itwinui_react_1.Text, { variant: 'subheading' }, `${(_e = group.groupName) !== null && _e !== void 0 ? _e : ""} Information`)),
199
+ react_1.default.createElement(itwinui_react_1.Text, { variant: 'subheading' }, `${group.groupName} Information`)),
201
200
  react_1.default.createElement(itwinui_react_1.InformationPanelBody, null,
202
201
  react_1.default.createElement("div", { className: 'gmw-information-body' },
203
- react_1.default.createElement(itwinui_react_1.LabeledTextarea, { label: 'Query', rows: 15, readOnly: true, defaultValue: (_f = group.query) !== null && _f !== void 0 ? _f : "" }))))));
202
+ react_1.default.createElement(itwinui_react_1.LabeledTextarea, { label: 'Query', rows: 15, readOnly: true, defaultValue: group.query }))))));
204
203
  }
205
204
  };
206
205
  exports.PropertyMenu = PropertyMenu;
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyMenu.js","sourceRoot":"","sources":["../../../../src/widget/components/PropertyMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\n\nimport { WidgetHeader } from \"./utils\";\nimport {\n clearEmphasizedOverriddenElements,\n manufactureKeys,\n visualizeElements,\n visualizeElementsByKeys,\n zoomToElements,\n} from \"./viewerUtils\";\nimport type { GroupType } from \"./Grouping\";\nimport \"./PropertyMenu.scss\";\nimport GroupPropertyAction from \"./GroupPropertyAction\";\nimport CalculatedPropertyAction from \"./CalculatedPropertyAction\";\nimport type { GroupPropertyType } from \"./GroupPropertyTable\";\nimport GroupPropertyTable from \"./GroupPropertyTable\";\nimport type {\n CalculatedPropertyType,\n} from \"./CalculatedPropertyTable\";\nimport CalculatedPropertyTable from \"./CalculatedPropertyTable\";\nimport {\n IconButton,\n InformationPanel,\n InformationPanelBody,\n InformationPanelHeader,\n InformationPanelWrapper,\n LabeledTextarea,\n ProgressRadial,\n Text,\n toaster,\n} from \"@itwin/itwinui-react\";\nimport type { CellProps } from \"react-table\";\nimport type {\n CustomCalculationType,\n} from \"./CustomCalculationTable\";\nimport CustomCalculationTable from \"./CustomCalculationTable\";\nimport CustomCalculationAction from \"./CustomCalculationAction\";\nimport { KeySet } from \"@itwin/presentation-common\";\nimport { SvgProperties } from \"@itwin/itwinui-icons-react\";\nimport type { PossibleDataType, PropertyMap } from \"../../formula/Types\";\nimport { useCombinedFetchRefresh } from \"../hooks/useFetchData\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\n\ninterface PropertyModifyProps {\n iModelId: string;\n mappingId: string;\n group: GroupType;\n goBack: () => Promise<void>;\n hideGroupProps?: boolean;\n hideCalculatedProps?: boolean;\n hideCustomCalculationProps?: boolean;\n}\n\nexport enum PropertyMenuView {\n DEFAULT = \"default\",\n ADD_GROUP_PROPERTY = \"add_group_property\",\n MODIFY_GROUP_PROPERTY = \"modify_group_property\",\n ADD_CALCULATED_PROPERTY = \"add_calculated_property\",\n MODIFY_CALCULATED_PROPERTY = \"modify_calculated_property\",\n ADD_CUSTOM_CALCULATION = \"add_custom_calculation\",\n MODIFY_CUSTOM_CALCULATION = \"modify_custom_calculation\",\n}\n\nconst stringToPossibleDataType = (str?: string): PossibleDataType => {\n if (!str)\n return \"Undefined\";\n\n switch (str.toLowerCase()) {\n case \"double\":\n case \"number\": return \"Number\";\n case \"string\": return \"String\";\n case \"boolean\": return \"Boolean\";\n default: return \"Undefined\";\n }\n};\n\nconst convertToPropertyMap = (\n groupProperties: GroupPropertyType[],\n calculatedProperties: CalculatedPropertyType[],\n customCalculations: CustomCalculationType[],\n selectedPropertyName?: string\n): PropertyMap => {\n const map: PropertyMap = {};\n const selectedLowerName = selectedPropertyName?.toLowerCase();\n\n groupProperties.forEach((p) => {\n const lowerName = p.propertyName?.toLowerCase();\n if (lowerName && lowerName !== selectedLowerName)\n map[lowerName] = stringToPossibleDataType(p.dataType);\n });\n\n calculatedProperties.forEach((p) => {\n const lowerName = p.propertyName?.toLowerCase();\n if (lowerName)\n map[lowerName] = \"Number\";\n });\n\n customCalculations.forEach((p) => {\n const lowerName = p.propertyName?.toLowerCase();\n if (lowerName && lowerName !== selectedLowerName)\n map[lowerName] = stringToPossibleDataType(p.dataType);\n });\n\n return map;\n};\n\nexport const PropertyMenu = ({\n iModelId,\n mappingId,\n group,\n goBack,\n hideGroupProps = false,\n hideCalculatedProps = false,\n hideCustomCalculationProps = false,\n}: PropertyModifyProps) => {\n const groupId = group.id ?? \"\";\n\n const { getAccessToken } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n\n const iModelConnection = useActiveIModelConnection() as IModelConnection;\n const [propertyMenuView, setPropertyMenuView] = useState<PropertyMenuView>(\n PropertyMenuView.DEFAULT,\n );\n const [selectedGroupProperty, setSelectedGroupProperty] =\n useState<GroupPropertyType | undefined>(undefined);\n const [selectedCalculatedProperty, setSelectedCalculatedProperty] =\n useState<CalculatedPropertyType | undefined>(undefined);\n const [selectedCustomCalculation, setSelectedCustomCalculation] =\n useState<CustomCalculationType | undefined>(undefined);\n const [isInformationPanelOpen, setIsInformationPanelOpen] =\n useState<boolean>(false);\n const [resolvedHiliteIds, setResolvedHiliteIds] = useState<string[]>([]);\n const [keySet, setKeySet] = useState<KeySet>();\n const [isLoading, setIsLoading] = useState<boolean>(true);\n\n const fetchGroupProperties = useMemo(\n () => {\n return async () => mappingClient.getGroupProperties((await getAccessToken()), iModelId, mappingId, groupId);\n },\n [getAccessToken, mappingClient, iModelId, mappingId, groupId],\n );\n const { isLoading: isLoadingGroupProperties, data: groupProperties, refreshData: refreshGroupProperties } =\n useCombinedFetchRefresh<GroupPropertyType>(fetchGroupProperties);\n\n const fetchCalculatedProperties = useMemo(\n () => {\n return async () => mappingClient.getCalculatedProperties((await getAccessToken()), iModelId, mappingId, groupId);\n },\n [getAccessToken, mappingClient, iModelId, mappingId, groupId],\n );\n const { isLoading: isLoadingCalculatedProperties, data: calculatedProperties, refreshData: refreshCalculatedProperties } =\n useCombinedFetchRefresh<CalculatedPropertyType>(fetchCalculatedProperties);\n\n const fetchCustomCalculations = useMemo(\n () => {\n return async () => mappingClient.getCustomCalculations((await getAccessToken()), iModelId, mappingId, groupId);\n },\n [getAccessToken, mappingClient, iModelId, mappingId, groupId],\n );\n const { isLoading: isLoadingCustomCalculations, data: customCalculations, refreshData: refreshCustomCalculations } =\n useCombinedFetchRefresh<CustomCalculationType>(fetchCustomCalculations);\n\n useEffect(() => {\n const initialize = async () => {\n try {\n const query = group.query ?? \"\";\n const queryRowCount = await iModelConnection.queryRowCount(query);\n if (queryRowCount === 0) {\n toaster.warning(\"The query is valid but produced no results.\");\n await goBack();\n }\n const keys = await manufactureKeys(query, iModelConnection);\n setKeySet(keys);\n Presentation.selection.clearSelection(\n \"GroupingMappingWidget\",\n iModelConnection,\n );\n clearEmphasizedOverriddenElements();\n const resolvedIds = await visualizeElementsByKeys(keys, \"red\");\n await zoomToElements(resolvedIds);\n setResolvedHiliteIds(resolvedIds);\n setIsLoading(false);\n } catch {\n toaster.negative(`Could not load ${group.groupName}.`);\n await goBack();\n }\n };\n void initialize();\n }, [iModelConnection, group.query, goBack, group.groupName]);\n\n const onGroupPropertyModify = useCallback(\n (value: CellProps<GroupPropertyType>) => {\n setSelectedGroupProperty(value.row.original);\n setPropertyMenuView(PropertyMenuView.MODIFY_GROUP_PROPERTY);\n },\n [],\n );\n\n const onCalculatedPropertyModify = useCallback(\n (value: CellProps<CalculatedPropertyType>) => {\n setSelectedCalculatedProperty(value.row.original);\n setPropertyMenuView(PropertyMenuView.MODIFY_CALCULATED_PROPERTY);\n },\n [],\n );\n\n const onCustomCalculationModify = useCallback(\n (value: CellProps<CustomCalculationType>) => {\n setSelectedCustomCalculation(value.row.original);\n setPropertyMenuView(PropertyMenuView.MODIFY_CUSTOM_CALCULATION);\n },\n [],\n );\n\n const groupPropertyReturn = useCallback(async (modified: boolean) => {\n setPropertyMenuView(PropertyMenuView.DEFAULT);\n modified && await refreshGroupProperties();\n }, [refreshGroupProperties]);\n\n const calculatedPropertyReturn = useCallback(async (modified: boolean) => {\n visualizeElements(resolvedHiliteIds, \"red\");\n await zoomToElements(resolvedHiliteIds);\n setPropertyMenuView(PropertyMenuView.DEFAULT);\n modified && await refreshCalculatedProperties();\n }, [resolvedHiliteIds, refreshCalculatedProperties]);\n\n const customCalculationReturn = useCallback(async (modified: boolean) => {\n setPropertyMenuView(PropertyMenuView.DEFAULT);\n modified && await refreshCustomCalculations();\n }, [refreshCustomCalculations]);\n\n if (isLoading) {\n return (\n <div className='gmw-loading-overlay'>\n <Text>Loading Group</Text>\n <ProgressRadial indeterminate />\n <Text>Please wait...</Text>\n </div>\n );\n }\n\n switch (propertyMenuView) {\n case PropertyMenuView.ADD_GROUP_PROPERTY:\n return (\n <GroupPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n keySet={keySet ?? new KeySet()}\n returnFn={groupPropertyReturn}\n />\n );\n case PropertyMenuView.MODIFY_GROUP_PROPERTY:\n return (\n <GroupPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n keySet={keySet ?? new KeySet()}\n groupPropertyId={selectedGroupProperty?.id ?? \"\"}\n groupPropertyName={selectedGroupProperty?.propertyName ?? \"\"}\n returnFn={groupPropertyReturn}\n />\n );\n case PropertyMenuView.ADD_CALCULATED_PROPERTY:\n return (\n <CalculatedPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n ids={resolvedHiliteIds}\n returnFn={calculatedPropertyReturn}\n />\n );\n case PropertyMenuView.MODIFY_CALCULATED_PROPERTY:\n return (\n <CalculatedPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n property={selectedCalculatedProperty}\n ids={resolvedHiliteIds}\n returnFn={calculatedPropertyReturn}\n />\n );\n case PropertyMenuView.ADD_CUSTOM_CALCULATION:\n return (\n <CustomCalculationAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n properties={convertToPropertyMap(groupProperties, calculatedProperties, customCalculations)}\n returnFn={customCalculationReturn}\n />\n );\n case PropertyMenuView.MODIFY_CUSTOM_CALCULATION:\n return (\n <CustomCalculationAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n properties={convertToPropertyMap(groupProperties, calculatedProperties, customCalculations, selectedCustomCalculation?.propertyName)}\n customCalculation={selectedCustomCalculation}\n returnFn={customCalculationReturn}\n />\n );\n default:\n return (\n <InformationPanelWrapper className='gmw-property-menu-wrapper'>\n <div className='gmw-property-header'>\n <WidgetHeader\n title={`${group.groupName ?? \"\"}`}\n returnFn={goBack}\n />\n <IconButton\n styleType='borderless'\n onClick={() => setIsInformationPanelOpen(true)}\n >\n <SvgProperties />\n </IconButton>\n </div>\n <div className='gmw-property-menu-container'>\n {!hideGroupProps && (\n <div className='gmw-property-table'>\n <GroupPropertyTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onGroupPropertyModify={onGroupPropertyModify}\n setSelectedGroupProperty={setSelectedGroupProperty}\n setGroupModifyView={setPropertyMenuView}\n isLoadingGroupProperties={isLoadingGroupProperties}\n groupProperties={groupProperties}\n refreshGroupProperties={refreshGroupProperties}\n selectedGroupProperty={selectedGroupProperty}\n />\n </div>\n )}\n\n {!hideCalculatedProps && (\n <div className='gmw-property-table'>\n <CalculatedPropertyTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onCalculatedPropertyModify={onCalculatedPropertyModify}\n setSelectedCalculatedProperty={setSelectedCalculatedProperty}\n setGroupModifyView={setPropertyMenuView}\n isLoadingCalculatedProperties={isLoadingCalculatedProperties}\n calculatedProperties={calculatedProperties}\n refreshCalculatedProperties={refreshCalculatedProperties}\n selectedCalculatedProperty={selectedCalculatedProperty}\n />\n </div>\n )}\n {!hideCustomCalculationProps && (\n <div className='gmw-property-table'>\n <CustomCalculationTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onCustomCalculationModify={onCustomCalculationModify}\n setSelectedCustomCalculation={setSelectedCustomCalculation}\n setGroupModifyView={setPropertyMenuView}\n isLoadingCustomCalculations={isLoadingCustomCalculations}\n customCalculations={customCalculations}\n refreshCustomCalculations={refreshCustomCalculations}\n selectedCustomCalculation={selectedCustomCalculation}\n />\n </div>\n )}\n </div>\n <InformationPanel\n className='gmw-information-panel'\n isOpen={isInformationPanelOpen}\n >\n <InformationPanelHeader\n onClose={() => setIsInformationPanelOpen(false)}\n >\n <Text variant='subheading'>{`${group.groupName ?? \"\"} Information`}</Text>\n </InformationPanelHeader>\n <InformationPanelBody>\n <div className='gmw-information-body'>\n <LabeledTextarea\n label='Query'\n rows={15}\n readOnly\n defaultValue={group.query ?? \"\"}\n />\n </div>\n </InformationPanelBody>\n </InformationPanel>\n </InformationPanelWrapper>\n );\n }\n};\n"]}
1
+ {"version":3,"file":"PropertyMenu.js","sourceRoot":"","sources":["../../../../src/widget/components/PropertyMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\n\nimport { WidgetHeader } from \"./utils\";\nimport {\n clearEmphasizedOverriddenElements,\n manufactureKeys,\n visualizeElements,\n visualizeElementsByKeys,\n zoomToElements,\n} from \"./viewerUtils\";\nimport type { IGroupTyped } from \"./Grouping\";\nimport \"./PropertyMenu.scss\";\nimport GroupPropertyAction from \"./GroupPropertyAction\";\nimport CalculatedPropertyAction from \"./CalculatedPropertyAction\";\nimport type { IGroupPropertyTyped } from \"./GroupPropertyTable\";\nimport GroupPropertyTable from \"./GroupPropertyTable\";\nimport type {\n ICalculatedPropertyTyped,\n} from \"./CalculatedPropertyTable\";\nimport CalculatedPropertyTable from \"./CalculatedPropertyTable\";\nimport {\n IconButton,\n InformationPanel,\n InformationPanelBody,\n InformationPanelHeader,\n InformationPanelWrapper,\n LabeledTextarea,\n ProgressRadial,\n Text,\n toaster,\n} from \"@itwin/itwinui-react\";\nimport type { CellProps } from \"react-table\";\nimport type {\n ICustomCalculationTyped,\n} from \"./CustomCalculationTable\";\nimport CustomCalculationTable from \"./CustomCalculationTable\";\nimport CustomCalculationAction from \"./CustomCalculationAction\";\nimport { KeySet } from \"@itwin/presentation-common\";\nimport { SvgProperties } from \"@itwin/itwinui-icons-react\";\nimport type { PossibleDataType, PropertyMap } from \"../../formula/Types\";\nimport { useCombinedFetchRefresh } from \"../hooks/useFetchData\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\n\ninterface PropertyModifyProps {\n iModelId: string;\n mappingId: string;\n group: IGroupTyped;\n goBack: () => Promise<void>;\n hideGroupProps?: boolean;\n hideCalculatedProps?: boolean;\n hideCustomCalculationProps?: boolean;\n}\n\nexport enum PropertyMenuView {\n DEFAULT = \"default\",\n ADD_GROUP_PROPERTY = \"add_group_property\",\n MODIFY_GROUP_PROPERTY = \"modify_group_property\",\n ADD_CALCULATED_PROPERTY = \"add_calculated_property\",\n MODIFY_CALCULATED_PROPERTY = \"modify_calculated_property\",\n ADD_CUSTOM_CALCULATION = \"add_custom_calculation\",\n MODIFY_CUSTOM_CALCULATION = \"modify_custom_calculation\",\n}\n\nconst stringToPossibleDataType = (str?: string): PossibleDataType => {\n if (!str)\n return \"Undefined\";\n\n switch (str.toLowerCase()) {\n case \"double\":\n case \"number\": return \"Number\";\n case \"string\": return \"String\";\n case \"boolean\": return \"Boolean\";\n default: return \"Undefined\";\n }\n};\n\nconst convertToPropertyMap = (\n groupProperties: IGroupPropertyTyped[],\n calculatedProperties: ICalculatedPropertyTyped[],\n customCalculations: ICustomCalculationTyped[],\n selectedPropertyName?: string\n): PropertyMap => {\n const map: PropertyMap = {};\n const selectedLowerName = selectedPropertyName?.toLowerCase();\n\n groupProperties.forEach((p) => {\n const lowerName = p.propertyName?.toLowerCase();\n if (lowerName && lowerName !== selectedLowerName)\n map[lowerName] = stringToPossibleDataType(p.dataType);\n });\n\n calculatedProperties.forEach((p) => {\n const lowerName = p.propertyName?.toLowerCase();\n if (lowerName)\n map[lowerName] = \"Number\";\n });\n\n customCalculations.forEach((p) => {\n const lowerName = p.propertyName?.toLowerCase();\n if (lowerName && lowerName !== selectedLowerName)\n map[lowerName] = stringToPossibleDataType(p.dataType);\n });\n\n return map;\n};\n\nexport const PropertyMenu = ({\n iModelId,\n mappingId,\n group,\n goBack,\n hideGroupProps = false,\n hideCalculatedProps = false,\n hideCustomCalculationProps = false,\n}: PropertyModifyProps) => {\n const groupId = group.id;\n\n const { getAccessToken } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n\n const iModelConnection = useActiveIModelConnection() as IModelConnection;\n const [propertyMenuView, setPropertyMenuView] = useState<PropertyMenuView>(\n PropertyMenuView.DEFAULT,\n );\n const [selectedGroupProperty, setSelectedGroupProperty] =\n useState<IGroupPropertyTyped | undefined>(undefined);\n const [selectedCalculatedProperty, setSelectedCalculatedProperty] =\n useState<ICalculatedPropertyTyped | undefined>(undefined);\n const [selectedCustomCalculation, setSelectedCustomCalculation] =\n useState<ICustomCalculationTyped | undefined>(undefined);\n const [isInformationPanelOpen, setIsInformationPanelOpen] =\n useState<boolean>(false);\n const [resolvedHiliteIds, setResolvedHiliteIds] = useState<string[]>([]);\n const [keySet, setKeySet] = useState<KeySet>();\n const [isLoading, setIsLoading] = useState<boolean>(true);\n\n const fetchGroupProperties = useMemo(\n () => {\n return async () => mappingClient.getGroupProperties((await getAccessToken()), iModelId, mappingId, groupId);\n },\n [getAccessToken, mappingClient, iModelId, mappingId, groupId],\n );\n const { isLoading: isLoadingGroupProperties, data: groupProperties, refreshData: refreshGroupProperties } =\n useCombinedFetchRefresh<IGroupPropertyTyped>(fetchGroupProperties);\n\n const fetchCalculatedProperties = useMemo(\n () => {\n return async () => mappingClient.getCalculatedProperties((await getAccessToken()), iModelId, mappingId, groupId);\n },\n [getAccessToken, mappingClient, iModelId, mappingId, groupId],\n );\n const { isLoading: isLoadingCalculatedProperties, data: calculatedProperties, refreshData: refreshCalculatedProperties } =\n useCombinedFetchRefresh<ICalculatedPropertyTyped>(fetchCalculatedProperties);\n\n const fetchCustomCalculations = useMemo(\n () => {\n return async () => mappingClient.getCustomCalculations((await getAccessToken()), iModelId, mappingId, groupId);\n },\n [getAccessToken, mappingClient, iModelId, mappingId, groupId],\n );\n const { isLoading: isLoadingCustomCalculations, data: customCalculations, refreshData: refreshCustomCalculations } =\n useCombinedFetchRefresh<ICustomCalculationTyped>(fetchCustomCalculations);\n\n useEffect(() => {\n const initialize = async () => {\n try {\n const query = group.query;\n const queryRowCount = await iModelConnection.queryRowCount(query);\n if (queryRowCount === 0) {\n toaster.warning(\"The query is valid but produced no results.\");\n await goBack();\n }\n const keys = await manufactureKeys(query, iModelConnection);\n setKeySet(keys);\n Presentation.selection.clearSelection(\n \"GroupingMappingWidget\",\n iModelConnection,\n );\n clearEmphasizedOverriddenElements();\n const resolvedIds = await visualizeElementsByKeys(keys, \"red\");\n await zoomToElements(resolvedIds);\n setResolvedHiliteIds(resolvedIds);\n setIsLoading(false);\n } catch {\n toaster.negative(`Could not load ${group.groupName}.`);\n await goBack();\n }\n };\n void initialize();\n }, [iModelConnection, group.query, goBack, group.groupName]);\n\n const onGroupPropertyModify = useCallback(\n (value: CellProps<IGroupPropertyTyped>) => {\n setSelectedGroupProperty(value.row.original);\n setPropertyMenuView(PropertyMenuView.MODIFY_GROUP_PROPERTY);\n },\n [],\n );\n\n const onCalculatedPropertyModify = useCallback(\n (value: CellProps<ICalculatedPropertyTyped>) => {\n setSelectedCalculatedProperty(value.row.original);\n setPropertyMenuView(PropertyMenuView.MODIFY_CALCULATED_PROPERTY);\n },\n [],\n );\n\n const onCustomCalculationModify = useCallback(\n (value: CellProps<ICustomCalculationTyped>) => {\n setSelectedCustomCalculation(value.row.original);\n setPropertyMenuView(PropertyMenuView.MODIFY_CUSTOM_CALCULATION);\n },\n [],\n );\n\n const groupPropertyReturn = useCallback(async (modified: boolean) => {\n setPropertyMenuView(PropertyMenuView.DEFAULT);\n modified && await refreshGroupProperties();\n }, [refreshGroupProperties]);\n\n const calculatedPropertyReturn = useCallback(async (modified: boolean) => {\n visualizeElements(resolvedHiliteIds, \"red\");\n await zoomToElements(resolvedHiliteIds);\n setPropertyMenuView(PropertyMenuView.DEFAULT);\n modified && await refreshCalculatedProperties();\n }, [resolvedHiliteIds, refreshCalculatedProperties]);\n\n const customCalculationReturn = useCallback(async (modified: boolean) => {\n setPropertyMenuView(PropertyMenuView.DEFAULT);\n modified && await refreshCustomCalculations();\n }, [refreshCustomCalculations]);\n\n if (isLoading) {\n return (\n <div className='gmw-loading-overlay'>\n <Text>Loading Group</Text>\n <ProgressRadial indeterminate />\n <Text>Please wait...</Text>\n </div>\n );\n }\n\n switch (propertyMenuView) {\n case PropertyMenuView.ADD_GROUP_PROPERTY:\n return (\n <GroupPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n keySet={keySet ?? new KeySet()}\n returnFn={groupPropertyReturn}\n />\n );\n case PropertyMenuView.MODIFY_GROUP_PROPERTY:\n return (\n <GroupPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n keySet={keySet ?? new KeySet()}\n groupPropertyId={selectedGroupProperty?.id ?? \"\"}\n groupPropertyName={selectedGroupProperty?.propertyName ?? \"\"}\n returnFn={groupPropertyReturn}\n />\n );\n case PropertyMenuView.ADD_CALCULATED_PROPERTY:\n return (\n <CalculatedPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n ids={resolvedHiliteIds}\n returnFn={calculatedPropertyReturn}\n />\n );\n case PropertyMenuView.MODIFY_CALCULATED_PROPERTY:\n return (\n <CalculatedPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n property={selectedCalculatedProperty}\n ids={resolvedHiliteIds}\n returnFn={calculatedPropertyReturn}\n />\n );\n case PropertyMenuView.ADD_CUSTOM_CALCULATION:\n return (\n <CustomCalculationAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n properties={convertToPropertyMap(groupProperties, calculatedProperties, customCalculations)}\n returnFn={customCalculationReturn}\n />\n );\n case PropertyMenuView.MODIFY_CUSTOM_CALCULATION:\n return (\n <CustomCalculationAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n properties={convertToPropertyMap(groupProperties, calculatedProperties, customCalculations, selectedCustomCalculation?.propertyName)}\n customCalculation={selectedCustomCalculation}\n returnFn={customCalculationReturn}\n />\n );\n default:\n return (\n <InformationPanelWrapper className='gmw-property-menu-wrapper'>\n <div className='gmw-property-header'>\n <WidgetHeader\n title={`${group.groupName}`}\n returnFn={goBack}\n />\n <IconButton\n styleType='borderless'\n onClick={() => setIsInformationPanelOpen(true)}\n >\n <SvgProperties />\n </IconButton>\n </div>\n <div className='gmw-property-menu-container'>\n {!hideGroupProps && (\n <div className='gmw-property-table'>\n <GroupPropertyTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onGroupPropertyModify={onGroupPropertyModify}\n setSelectedGroupProperty={setSelectedGroupProperty}\n setGroupModifyView={setPropertyMenuView}\n isLoadingGroupProperties={isLoadingGroupProperties}\n groupProperties={groupProperties}\n refreshGroupProperties={refreshGroupProperties}\n selectedGroupProperty={selectedGroupProperty}\n />\n </div>\n )}\n\n {!hideCalculatedProps && (\n <div className='gmw-property-table'>\n <CalculatedPropertyTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onCalculatedPropertyModify={onCalculatedPropertyModify}\n setSelectedCalculatedProperty={setSelectedCalculatedProperty}\n setGroupModifyView={setPropertyMenuView}\n isLoadingCalculatedProperties={isLoadingCalculatedProperties}\n calculatedProperties={calculatedProperties}\n refreshCalculatedProperties={refreshCalculatedProperties}\n selectedCalculatedProperty={selectedCalculatedProperty}\n />\n </div>\n )}\n {!hideCustomCalculationProps && (\n <div className='gmw-property-table'>\n <CustomCalculationTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onCustomCalculationModify={onCustomCalculationModify}\n setSelectedCustomCalculation={setSelectedCustomCalculation}\n setGroupModifyView={setPropertyMenuView}\n isLoadingCustomCalculations={isLoadingCustomCalculations}\n customCalculations={customCalculations}\n refreshCustomCalculations={refreshCustomCalculations}\n selectedCustomCalculation={selectedCustomCalculation}\n />\n </div>\n )}\n </div>\n <InformationPanel\n className='gmw-information-panel'\n isOpen={isInformationPanelOpen}\n >\n <InformationPanelHeader\n onClose={() => setIsInformationPanelOpen(false)}\n >\n <Text variant='subheading'>{`${group.groupName} Information`}</Text>\n </InformationPanelHeader>\n <InformationPanelBody>\n <div className='gmw-information-body'>\n <LabeledTextarea\n label='Query'\n rows={15}\n readOnly\n defaultValue={group.query}\n />\n </div>\n </InformationPanelBody>\n </InformationPanel>\n </InformationPanelWrapper>\n );\n }\n};\n"]}
@@ -1,9 +1,9 @@
1
1
  /// <reference types="react" />
2
- import type { MappingType } from "./Mapping";
2
+ import type { IMappingTyped } from "./Mapping";
3
3
  import "./SelectMapping.scss";
4
4
  interface SelectMappingsProps {
5
5
  iModelId: string;
6
- onSelect: (selectedMappings: MappingType[]) => void;
6
+ onSelect: (selectedMappings: IMappingTyped[]) => void;
7
7
  onCancel: () => void;
8
8
  backFn: () => void;
9
9
  }
@@ -25,11 +25,11 @@ const MappingClientContext_1 = require("./context/MappingClientContext");
25
25
  require("./SelectMapping.scss");
26
26
  const utils_1 = require("./utils");
27
27
  const GroupingApiConfigContext_1 = require("./context/GroupingApiConfigContext");
28
- const fetchMappings = async (setMappings, iModelId, setIsLoading, getAccessToken, mappingClient) => {
28
+ const fetchMappings = async (setMappings, iModelId, setIsLoading, getAccessToken, mappingsClient) => {
29
29
  try {
30
30
  setIsLoading(true);
31
31
  const accessToken = await getAccessToken();
32
- const mappings = await mappingClient.getMappings(accessToken, iModelId);
32
+ const mappings = await mappingsClient.getMappings(accessToken, iModelId);
33
33
  setMappings(mappings);
34
34
  }
35
35
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"SelectMappings.js","sourceRoot":"","sources":["../../../../src/widget/components/SelectMappings.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type {\n TablePaginatorRendererProps,\n} from \"@itwin/itwinui-react\";\nimport {\n Button,\n Table,\n tableFilters,\n TablePaginator,\n} from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport type { MappingType } from \"./Mapping\";\nimport \"./SelectMapping.scss\";\nimport { handleError } from \"./utils\";\nimport type { IMappingClient } from \"../IMappingClient\";\nimport type { GetAccessTokenFn } from \"./context/GroupingApiConfigContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<Mapping[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n getAccessToken: GetAccessTokenFn,\n mappingClient: IMappingClient\n) => {\n try {\n setIsLoading(true);\n const accessToken = await getAccessToken();\n const mappings = await mappingClient.getMappings(accessToken, iModelId);\n setMappings(mappings);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\ninterface SelectMappingsProps {\n iModelId: string;\n onSelect: (selectedMappings: MappingType[]) => void;\n onCancel: () => void;\n backFn: () => void;\n}\n\nconst SelectMappings = ({\n iModelId,\n onSelect,\n onCancel,\n backFn,\n}: SelectMappingsProps) => {\n const { getAccessToken } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [selectedMappings, setSelectedMappings] = useState<MappingType[]>([]);\n const [mappings, setMappings] = useState<Mapping[]>([]);\n\n useEffect(() => {\n void fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient);\n }, [getAccessToken, mappingClient, iModelId, setIsLoading]);\n\n const mappingsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"mappingName\",\n Header: \"Mapping Name\",\n accessor: \"mappingName\",\n Filter: tableFilters.TextFilter(),\n },\n {\n id: \"description\",\n Header: \"Description\",\n accessor: \"description\",\n Filter: tableFilters.TextFilter(),\n },\n ],\n },\n ],\n []\n );\n\n const pageSizeList = useMemo(() => [10, 25, 50], []);\n const paginator = useCallback(\n (props: TablePaginatorRendererProps) => (\n <TablePaginator {...props} pageSizeList={pageSizeList} />\n ),\n [pageSizeList]\n );\n\n return (\n <div className='gmw-select-mapping-container'>\n <Table<MappingType>\n data={mappings}\n columns={mappingsColumns}\n className='gmw-select-mapping-table'\n emptyTableContent='No Mappings available.'\n isSortable\n isSelectable\n isLoading={isLoading}\n onSelect={(selectData: MappingType[] | undefined) => {\n selectData && setSelectedMappings(selectData);\n }}\n paginatorRenderer={paginator}\n />\n <div className='gmw-import-action-panel'>\n <Button onClick={backFn}>Back</Button>\n <Button\n styleType='high-visibility'\n onClick={() => {\n onSelect(selectedMappings);\n }}\n disabled={isLoading || selectedMappings.length === 0}\n >\n Next\n </Button>\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </div>\n );\n};\n\nexport default SelectMappings;\n"]}
1
+ {"version":3,"file":"SelectMappings.js","sourceRoot":"","sources":["../../../../src/widget/components/SelectMappings.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type {\n TablePaginatorRendererProps,\n} from \"@itwin/itwinui-react\";\nimport {\n Button,\n Table,\n tableFilters,\n TablePaginator,\n} from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { IMappingsClient, Mapping } from \"@itwin/insights-client\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport type { IMappingTyped } from \"./Mapping\";\nimport \"./SelectMapping.scss\";\nimport { handleError } from \"./utils\";\nimport type { GetAccessTokenFn } from \"./context/GroupingApiConfigContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<Mapping[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n getAccessToken: GetAccessTokenFn,\n mappingsClient: IMappingsClient\n) => {\n try {\n setIsLoading(true);\n const accessToken = await getAccessToken();\n const mappings = await mappingsClient.getMappings(accessToken, iModelId);\n setMappings(mappings);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\ninterface SelectMappingsProps {\n iModelId: string;\n onSelect: (selectedMappings: IMappingTyped[]) => void;\n onCancel: () => void;\n backFn: () => void;\n}\n\nconst SelectMappings = ({\n iModelId,\n onSelect,\n onCancel,\n backFn,\n}: SelectMappingsProps) => {\n const { getAccessToken } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [selectedMappings, setSelectedMappings] = useState<IMappingTyped[]>([]);\n const [mappings, setMappings] = useState<Mapping[]>([]);\n\n useEffect(() => {\n void fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient);\n }, [getAccessToken, mappingClient, iModelId, setIsLoading]);\n\n const mappingsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"mappingName\",\n Header: \"Mapping Name\",\n accessor: \"mappingName\",\n Filter: tableFilters.TextFilter(),\n },\n {\n id: \"description\",\n Header: \"Description\",\n accessor: \"description\",\n Filter: tableFilters.TextFilter(),\n },\n ],\n },\n ],\n []\n );\n\n const pageSizeList = useMemo(() => [10, 25, 50], []);\n const paginator = useCallback(\n (props: TablePaginatorRendererProps) => (\n <TablePaginator {...props} pageSizeList={pageSizeList} />\n ),\n [pageSizeList]\n );\n\n return (\n <div className='gmw-select-mapping-container'>\n <Table<IMappingTyped>\n data={mappings}\n columns={mappingsColumns}\n className='gmw-select-mapping-table'\n emptyTableContent='No Mappings available.'\n isSortable\n isSelectable\n isLoading={isLoading}\n onSelect={(selectData: IMappingTyped[] | undefined) => {\n selectData && setSelectedMappings(selectData);\n }}\n paginatorRenderer={paginator}\n />\n <div className='gmw-import-action-panel'>\n <Button onClick={backFn}>Back</Button>\n <Button\n styleType='high-visibility'\n onClick={() => {\n onSelect(selectedMappings);\n }}\n disabled={isLoading || selectedMappings.length === 0}\n >\n Next\n </Button>\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </div>\n );\n};\n\nexport default SelectMappings;\n"]}
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ import type { GroupingMappingCustomUI } from "../customUI/GroupingMappingCustomUI";
3
+ export declare const createGroupingMappingCustomUI: (customUIs: GroupingMappingCustomUI[] | undefined) => GroupingMappingCustomUI[];
4
+ export declare const GroupingMappingCustomUIContext: import("react").Context<GroupingMappingCustomUI[]>;
5
+ export declare const useGroupingMappingCustomUI: () => GroupingMappingCustomUI[];
6
+ //# sourceMappingURL=GroupingMappingCustomUIContext.d.ts.map
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useGroupingMappingCustomUI = exports.GroupingMappingCustomUIContext = exports.createGroupingMappingCustomUI = void 0;
4
+ /*---------------------------------------------------------------------------------------------
5
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
+ * See LICENSE.md in the project root for license terms and full copyright notice.
7
+ *--------------------------------------------------------------------------------------------*/
8
+ const react_1 = require("react");
9
+ const createGroupingMappingCustomUI = (customUIs) => {
10
+ if (undefined === customUIs) {
11
+ return [];
12
+ }
13
+ return customUIs;
14
+ };
15
+ exports.createGroupingMappingCustomUI = createGroupingMappingCustomUI;
16
+ exports.GroupingMappingCustomUIContext = react_1.createContext([]);
17
+ const useGroupingMappingCustomUI = () => {
18
+ const context = react_1.useContext(exports.GroupingMappingCustomUIContext);
19
+ if (!context) {
20
+ throw new Error("useGroupingMappingCustomUI should be used within a GroupingMappingCustomUIContext provider");
21
+ }
22
+ return context;
23
+ };
24
+ exports.useGroupingMappingCustomUI = useGroupingMappingCustomUI;
25
+ //# sourceMappingURL=GroupingMappingCustomUIContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupingMappingCustomUIContext.js","sourceRoot":"","sources":["../../../../../src/widget/components/context/GroupingMappingCustomUIContext.ts"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F,iCAAkD;AAG3C,MAAM,6BAA6B,GAAG,CAC3C,SAAgD,EACrB,EAAE;IAC7B,IAAI,SAAS,KAAK,SAAS,EAAE;QAC3B,OAAO,EAAE,CAAC;KACX;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAPW,QAAA,6BAA6B,iCAOxC;AAEW,QAAA,8BAA8B,GAAG,qBAAa,CAA4B,EAAE,CAAC,CAAC;AAEpF,MAAM,0BAA0B,GAAG,GAAG,EAAE;IAC7C,MAAM,OAAO,GAAG,kBAAU,CAAC,sCAA8B,CAAC,CAAC;IAC3D,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;KACH;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AARW,QAAA,0BAA0B,8BAQrC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { createContext, useContext } from \"react\";\nimport type { GroupingMappingCustomUI } from \"../customUI/GroupingMappingCustomUI\";\n\nexport const createGroupingMappingCustomUI = (\n customUIs: GroupingMappingCustomUI[] | undefined,\n): GroupingMappingCustomUI[] => {\n if (undefined === customUIs) {\n return [];\n }\n return customUIs;\n};\n\nexport const GroupingMappingCustomUIContext = createContext<GroupingMappingCustomUI[]>([]);\n\nexport const useGroupingMappingCustomUI = () => {\n const context = useContext(GroupingMappingCustomUIContext);\n if (!context) {\n throw new Error(\n \"useGroupingMappingCustomUI should be used within a GroupingMappingCustomUIContext provider\",\n );\n }\n return context;\n};\n"]}
@@ -1,8 +1,8 @@
1
1
  /// <reference types="react" />
2
- import type { IMappingClient } from "../../IMappingClient";
2
+ import type { IMappingsClient } from "@itwin/insights-client";
3
3
  import type { ClientPrefix } from "./GroupingApiConfigContext";
4
- export declare const createDefaultMappingClient: (prefix?: ClientPrefix) => IMappingClient;
5
- export declare const createMappingClient: (clientProp: IMappingClient | ClientPrefix) => IMappingClient;
6
- export declare const MappingClientContext: import("react").Context<IMappingClient>;
7
- export declare const useMappingClient: () => IMappingClient;
4
+ export declare const createDefaultMappingClient: (prefix?: ClientPrefix) => IMappingsClient;
5
+ export declare const createMappingClient: (clientProp: IMappingsClient | ClientPrefix) => IMappingsClient;
6
+ export declare const MappingClientContext: import("react").Context<IMappingsClient>;
7
+ export declare const useMappingClient: () => IMappingsClient;
8
8
  //# sourceMappingURL=MappingClientContext.d.ts.map
@@ -1,10 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useMappingClient = exports.MappingClientContext = exports.createMappingClient = exports.createDefaultMappingClient = void 0;
4
- /*---------------------------------------------------------------------------------------------
5
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
- * See LICENSE.md in the project root for license terms and full copyright notice.
7
- *--------------------------------------------------------------------------------------------*/
8
4
  const insights_client_1 = require("@itwin/insights-client");
9
5
  const react_1 = require("react");
10
6
  const prefixUrl = (baseUrl, prefix) => {
@@ -15,7 +11,7 @@ const prefixUrl = (baseUrl, prefix) => {
15
11
  };
16
12
  const createDefaultMappingClient = (prefix) => {
17
13
  const url = prefixUrl(insights_client_1.REPORTING_BASE_PATH, prefix);
18
- return new insights_client_1.ReportingClient(url);
14
+ return new insights_client_1.MappingsClient(url);
19
15
  };
20
16
  exports.createDefaultMappingClient = createDefaultMappingClient;
21
17
  const createMappingClient = (clientProp) => {
@@ -1 +1 @@
1
- {"version":3,"file":"MappingClientContext.js","sourceRoot":"","sources":["../../../../../src/widget/components/context/MappingClientContext.ts"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F,4DAA8E;AAC9E,iCAAkD;AAIlD,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,MAAe,EAAE,EAAE;IACtD,IAAI,MAAM,IAAI,OAAO,EAAE;QACrB,OAAO,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,MAAM,kBAAkB,CAAC,CAAC;KACxE;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,MAAM,0BAA0B,GAAG,CAAC,MAAqB,EAAkB,EAAE;IAClF,MAAM,GAAG,GAAG,SAAS,CAAC,qCAAmB,EAAE,MAAM,CAAC,CAAC;IACnD,OAAO,IAAI,iCAAe,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC,CAAC;AAHW,QAAA,0BAA0B,8BAGrC;AAEK,MAAM,mBAAmB,GAAG,CAAC,UAAyC,EAAE,EAAE;IAC/E,IAAI,SAAS,KAAK,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAC9D,OAAO,kCAA0B,CAAC,UAA0B,CAAC,CAAC;KAC/D;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AALW,QAAA,mBAAmB,uBAK9B;AACW,QAAA,oBAAoB,GAAG,qBAAa,CAAiB,kCAA0B,EAAE,CAAC,CAAC;AAEzF,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,OAAO,GAAG,kBAAU,CAAC,4BAAoB,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;KACH;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AARW,QAAA,gBAAgB,oBAQ3B","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { REPORTING_BASE_PATH, ReportingClient } from \"@itwin/insights-client\";\nimport { createContext, useContext } from \"react\";\nimport type { IMappingClient } from \"../../IMappingClient\";\nimport type { ClientPrefix } from \"./GroupingApiConfigContext\";\n\nconst prefixUrl = (baseUrl?: string, prefix?: string) => {\n if (prefix && baseUrl) {\n return baseUrl.replace(\"api.bentley.com\", `${prefix}-api.bentley.com`);\n }\n return baseUrl;\n};\n\nexport const createDefaultMappingClient = (prefix?: ClientPrefix): IMappingClient => {\n const url = prefixUrl(REPORTING_BASE_PATH, prefix);\n return new ReportingClient(url);\n};\n\nexport const createMappingClient = (clientProp: IMappingClient | ClientPrefix) => {\n if (undefined === clientProp || typeof clientProp === \"string\") {\n return createDefaultMappingClient(clientProp as ClientPrefix);\n }\n return clientProp;\n};\nexport const MappingClientContext = createContext<IMappingClient>(createDefaultMappingClient());\n\nexport const useMappingClient = () => {\n const context = useContext(MappingClientContext);\n if (!context) {\n throw new Error(\n \"useMappingClient should be used within a MappingClientContext provider\"\n );\n }\n return context;\n};\n"]}
1
+ {"version":3,"file":"MappingClientContext.js","sourceRoot":"","sources":["../../../../../src/widget/components/context/MappingClientContext.ts"],"names":[],"mappings":";;;AAKA,4DAA6E;AAC7E,iCAAkD;AAGlD,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,MAAe,EAAE,EAAE;IACtD,IAAI,MAAM,IAAI,OAAO,EAAE;QACrB,OAAO,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,MAAM,kBAAkB,CAAC,CAAC;KACxE;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,MAAM,0BAA0B,GAAG,CAAC,MAAqB,EAAmB,EAAE;IACnF,MAAM,GAAG,GAAG,SAAS,CAAC,qCAAmB,EAAE,MAAM,CAAC,CAAC;IACnD,OAAO,IAAI,gCAAc,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC,CAAC;AAHW,QAAA,0BAA0B,8BAGrC;AAEK,MAAM,mBAAmB,GAAG,CAAC,UAA0C,EAAE,EAAE;IAChF,IAAI,SAAS,KAAK,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAC9D,OAAO,kCAA0B,CAAC,UAA0B,CAAC,CAAC;KAC/D;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AALW,QAAA,mBAAmB,uBAK9B;AACW,QAAA,oBAAoB,GAAG,qBAAa,CAAkB,kCAA0B,EAAE,CAAC,CAAC;AAE1F,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,OAAO,GAAG,kBAAU,CAAC,4BAAoB,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;KACH;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AARW,QAAA,gBAAgB,oBAQ3B","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { IMappingsClient} from \"@itwin/insights-client\";\nimport { MappingsClient, REPORTING_BASE_PATH } from \"@itwin/insights-client\";\nimport { createContext, useContext } from \"react\";\nimport type { ClientPrefix } from \"./GroupingApiConfigContext\";\n\nconst prefixUrl = (baseUrl?: string, prefix?: string) => {\n if (prefix && baseUrl) {\n return baseUrl.replace(\"api.bentley.com\", `${prefix}-api.bentley.com`);\n }\n return baseUrl;\n};\n\nexport const createDefaultMappingClient = (prefix?: ClientPrefix): IMappingsClient => {\n const url = prefixUrl(REPORTING_BASE_PATH, prefix);\n return new MappingsClient(url);\n};\n\nexport const createMappingClient = (clientProp: IMappingsClient | ClientPrefix) => {\n if (undefined === clientProp || typeof clientProp === \"string\") {\n return createDefaultMappingClient(clientProp as ClientPrefix);\n }\n return clientProp;\n};\nexport const MappingClientContext = createContext<IMappingsClient>(createDefaultMappingClient());\n\nexport const useMappingClient = () => {\n const context = useContext(MappingClientContext);\n if (!context) {\n throw new Error(\n \"useMappingClient should be used within a MappingClientContext provider\"\n );\n }\n return context;\n};\n"]}
@@ -0,0 +1,91 @@
1
+ import type { ReactElement } from "react";
2
+ export declare enum GroupingMappingCustomUIType {
3
+ Grouping = 0,
4
+ Context = 1
5
+ }
6
+ export declare type GroupingMappingCustomUI = GroupingCustomUI | ContextCustomUI;
7
+ /** Custom UI Definitions. */
8
+ export interface IGroupingMappingCustomUI {
9
+ /**
10
+ * See GroupingMappingCustomUIType.
11
+ */
12
+ type: GroupingMappingCustomUIType;
13
+ /**
14
+ * Unique identifier of the custom UI.
15
+ */
16
+ name: string;
17
+ /**
18
+ * Display label in the widget.
19
+ */
20
+ displayLabel: string;
21
+ /**
22
+ * Optional icon, will be shown before display label in widget.
23
+ */
24
+ icon?: ReactElement;
25
+ }
26
+ /**
27
+ * Context custom UI type definition.
28
+ */
29
+ export interface ContextCustomUI extends IGroupingMappingCustomUI {
30
+ /**
31
+ * See GroupingMappingCustomUIType.
32
+ */
33
+ type: GroupingMappingCustomUIType.Context;
34
+ /**
35
+ * User defined component for UI interaction with grouping mapping widget.
36
+ */
37
+ uiComponent?: (props: ContextCustomUIProps) => JSX.Element;
38
+ /**
39
+ * Callback function for context custom UI menu item click event.
40
+ */
41
+ onClick?: (groupId: string, mappingId: string, iModelId: string) => void;
42
+ }
43
+ /**
44
+ * Group custom UI type definition.
45
+ */
46
+ export interface GroupingCustomUI extends IGroupingMappingCustomUI {
47
+ /**
48
+ * See GroupingMappingCustomUIType.
49
+ */
50
+ type: GroupingMappingCustomUIType.Grouping;
51
+ /**
52
+ * Custom UI Component to build query interactively. Refer to SearchGroupingCustomUI/ManualGroupingCustomUI.
53
+ */
54
+ uiComponent: (props: GroupingCustomUIProps) => JSX.Element;
55
+ }
56
+ /** Custom UI Component props definitions. */
57
+ /**
58
+ * Context custom UI component arguments definition.
59
+ */
60
+ export interface ContextCustomUIProps {
61
+ /**
62
+ * IModel Id.
63
+ */
64
+ iModelId: string;
65
+ /**
66
+ * Mapping Id.
67
+ */
68
+ mappingId: string;
69
+ /**
70
+ * Group Id.
71
+ */
72
+ groupId: string;
73
+ }
74
+ /**
75
+ * Group custom UI component arguments definition.
76
+ */
77
+ export interface GroupingCustomUIProps {
78
+ /**
79
+ * To validate and update current query.
80
+ */
81
+ updateQuery: (query: string) => void;
82
+ /**
83
+ * To get the query loading status.
84
+ */
85
+ isUpdating?: boolean;
86
+ /**
87
+ * To reset the viewer.
88
+ */
89
+ resetView?: () => Promise<void>;
90
+ }
91
+ //# sourceMappingURL=GroupingMappingCustomUI.d.ts.map
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GroupingMappingCustomUIType = void 0;
4
+ var GroupingMappingCustomUIType;
5
+ (function (GroupingMappingCustomUIType) {
6
+ GroupingMappingCustomUIType[GroupingMappingCustomUIType["Grouping"] = 0] = "Grouping";
7
+ GroupingMappingCustomUIType[GroupingMappingCustomUIType["Context"] = 1] = "Context";
8
+ })(GroupingMappingCustomUIType = exports.GroupingMappingCustomUIType || (exports.GroupingMappingCustomUIType = {}));
9
+ //# sourceMappingURL=GroupingMappingCustomUI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupingMappingCustomUI.js","sourceRoot":"","sources":["../../../../../src/widget/components/customUI/GroupingMappingCustomUI.ts"],"names":[],"mappings":";;;AAMA,IAAY,2BAGX;AAHD,WAAY,2BAA2B;IACrC,qFAAQ,CAAA;IACR,mFAAO,CAAA;AACT,CAAC,EAHW,2BAA2B,GAA3B,mCAA2B,KAA3B,mCAA2B,QAGtC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { ReactElement } from \"react\";\n\nexport enum GroupingMappingCustomUIType {\n Grouping,\n Context,\n}\n\nexport type GroupingMappingCustomUI = GroupingCustomUI | ContextCustomUI;\n\n/** Custom UI Definitions. */\n\nexport interface IGroupingMappingCustomUI {\n /**\n * See GroupingMappingCustomUIType.\n */\n type: GroupingMappingCustomUIType;\n /**\n * Unique identifier of the custom UI.\n */\n name: string;\n /**\n * Display label in the widget.\n */\n displayLabel: string;\n /**\n * Optional icon, will be shown before display label in widget.\n */\n icon?: ReactElement;\n}\n\n/**\n * Context custom UI type definition.\n */\nexport interface ContextCustomUI extends IGroupingMappingCustomUI {\n /**\n * See GroupingMappingCustomUIType.\n */\n type: GroupingMappingCustomUIType.Context;\n /**\n * User defined component for UI interaction with grouping mapping widget.\n */\n uiComponent?: (props: ContextCustomUIProps) => JSX.Element;\n /**\n * Callback function for context custom UI menu item click event.\n */\n onClick?: (groupId: string, mappingId: string, iModelId: string) => void;\n}\n\n/**\n * Group custom UI type definition.\n */\nexport interface GroupingCustomUI extends IGroupingMappingCustomUI {\n /**\n * See GroupingMappingCustomUIType.\n */\n type: GroupingMappingCustomUIType.Grouping;\n /**\n * Custom UI Component to build query interactively. Refer to SearchGroupingCustomUI/ManualGroupingCustomUI.\n */\n uiComponent: (props: GroupingCustomUIProps) => JSX.Element;\n}\n\n/** Custom UI Component props definitions. */\n\n/**\n * Context custom UI component arguments definition.\n */\nexport interface ContextCustomUIProps {\n /**\n * IModel Id.\n */\n iModelId: string;\n /**\n * Mapping Id.\n */\n mappingId: string;\n /**\n * Group Id.\n */\n groupId: string;\n}\n\n/**\n * Group custom UI component arguments definition.\n */\nexport interface GroupingCustomUIProps {\n /**\n * To validate and update current query.\n */\n updateQuery: (query: string) => void;\n /**\n * To get the query loading status.\n */\n isUpdating?: boolean;\n /**\n * To reset the viewer.\n */\n resetView?: () => Promise<void>;\n}\n"]}
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ import "./ManualGroupingCustomUI.scss";
3
+ import type { GroupingCustomUIProps } from "./GroupingMappingCustomUI";
4
+ declare const ManualGroupingCustomUI: ({ updateQuery, isUpdating, resetView, }: GroupingCustomUIProps) => JSX.Element;
5
+ export default ManualGroupingCustomUI;
6
+ //# sourceMappingURL=ManualGroupingCustomUI.d.ts.map
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /*---------------------------------------------------------------------------------------------
7
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
8
+ * See LICENSE.md in the project root for license terms and full copyright notice.
9
+ *--------------------------------------------------------------------------------------------*/
10
+ const react_1 = __importDefault(require("react"));
11
+ const itwinui_react_1 = require("@itwin/itwinui-react");
12
+ const utils_1 = require("../utils");
13
+ require("./ManualGroupingCustomUI.scss");
14
+ const ManualGroupingCustomUI = ({ updateQuery, isUpdating, resetView, }) => {
15
+ const [manualInput, setManualInput] = react_1.default.useState("");
16
+ return (react_1.default.createElement("div", { className: 'gmw-manual-form' },
17
+ react_1.default.createElement(itwinui_react_1.Text, null, "Generate group using an ECSQL query. Please select ECInstanceId and ECClassId columns in the query."),
18
+ react_1.default.createElement(itwinui_react_1.LabeledTextarea, { label: 'Query', required: true, value: manualInput, onChange: (event) => setManualInput(event.target.value), disabled: isUpdating, placeholder: `E.g. "SELECT ECInstanceId, ECClassId FROM BisCore:PhysicalElement"` }),
19
+ react_1.default.createElement("div", { className: 'gmw-manual-actions' },
20
+ isUpdating && react_1.default.createElement(utils_1.LoadingSpinner, null),
21
+ react_1.default.createElement(itwinui_react_1.Button, { disabled: isUpdating, onClick: () => updateQuery(manualInput) }, "Apply"),
22
+ react_1.default.createElement(itwinui_react_1.Button, { disabled: isUpdating, onClick: async () => {
23
+ updateQuery("");
24
+ setManualInput("");
25
+ if (resetView) {
26
+ await resetView();
27
+ }
28
+ } }, "Clear"))));
29
+ };
30
+ exports.default = ManualGroupingCustomUI;
31
+ //# sourceMappingURL=ManualGroupingCustomUI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManualGroupingCustomUI.js","sourceRoot":"","sources":["../../../../../src/widget/components/customUI/ManualGroupingCustomUI.tsx"],"names":[],"mappings":";;;;;AAAA;;;+FAG+F;AAC/F,kDAA0B;AAC1B,wDAAqE;AACrE,oCAA0C;AAC1C,yCAAuC;AAGvC,MAAM,sBAAsB,GAAG,CAAC,EAC9B,WAAW,EACX,UAAU,EACV,SAAS,GACa,EAAE,EAAE;IAC1B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEzD,OAAO,CACL,uCAAK,SAAS,EAAC,iBAAiB;QAC9B,8BAAC,oBAAI,8GAEE;QACP,8BAAC,+BAAe,IACd,KAAK,EAAC,OAAO,EACb,QAAQ,QACR,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACvD,QAAQ,EAAE,UAAU,EACpB,WAAW,EAAE,oEAAoE,GACjF;QACF,uCAAK,SAAS,EAAC,oBAAoB;YAChC,UAAU,IAAI,8BAAC,sBAAc,OAAG;YACjC,8BAAC,sBAAM,IAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,YAE5D;YACT,8BAAC,sBAAM,IACL,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,KAAK,IAAI,EAAE;oBAClB,WAAW,CAAC,EAAE,CAAC,CAAC;oBAChB,cAAc,CAAC,EAAE,CAAC,CAAC;oBACnB,IAAI,SAAS,EAAE;wBACb,MAAM,SAAS,EAAE,CAAC;qBACnB;gBACH,CAAC,YAGM,CACL,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,sBAAsB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport { Button, LabeledTextarea, Text } from \"@itwin/itwinui-react\";\nimport { LoadingSpinner } from \"../utils\";\nimport \"./ManualGroupingCustomUI.scss\";\nimport type { GroupingCustomUIProps } from \"./GroupingMappingCustomUI\";\n\nconst ManualGroupingCustomUI = ({\n updateQuery,\n isUpdating,\n resetView,\n}: GroupingCustomUIProps) => {\n const [manualInput, setManualInput] = React.useState(\"\");\n\n return (\n <div className='gmw-manual-form'>\n <Text>\n Generate group using an ECSQL query. Please select ECInstanceId and ECClassId columns in the query.\n </Text>\n <LabeledTextarea\n label='Query'\n required\n value={manualInput}\n onChange={(event) => setManualInput(event.target.value)}\n disabled={isUpdating}\n placeholder={`E.g. \"SELECT ECInstanceId, ECClassId FROM BisCore:PhysicalElement\"`}\n />\n <div className='gmw-manual-actions'>\n {isUpdating && <LoadingSpinner />}\n <Button disabled={isUpdating} onClick={() => updateQuery(manualInput)}>\n Apply\n </Button>\n <Button\n disabled={isUpdating}\n onClick={async () => {\n updateQuery(\"\");\n setManualInput(\"\");\n if (resetView) {\n await resetView();\n }\n }}\n >\n Clear\n </Button>\n </div>\n </div>\n );\n};\n\nexport default ManualGroupingCustomUI;\n"]}
@@ -2,5 +2,16 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- export {};
6
- //# sourceMappingURL=IMappingClient.js.map
5
+ @import "~@itwin/itwinui-css/scss/variables";
6
+
7
+ .gmw-manual-form {
8
+ display: flex;
9
+ flex-direction: column;
10
+ gap: $iui-baseline;
11
+ margin-top: $iui-baseline;
12
+ > .gmw-manual-actions {
13
+ display: flex;
14
+ justify-content: flex-end;
15
+ gap: $iui-s;
16
+ }
17
+ }
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ import type { GroupingCustomUIProps } from "./GroupingMappingCustomUI";
3
+ import "./SearchGroupingCustomUI.scss";
4
+ declare const SearchGroupingCustomUI: ({ updateQuery, isUpdating, resetView, }: GroupingCustomUIProps) => JSX.Element;
5
+ export default SearchGroupingCustomUI;
6
+ //# sourceMappingURL=SearchGroupingCustomUI.d.ts.map