@itwin/grouping-mapping-widget 0.26.0 → 0.26.1
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/LICENSE.md +9 -9
- package/README.md +115 -115
- package/lib/cjs/WidgetShell/GroupingMapping.js +2 -4
- package/lib/cjs/WidgetShell/GroupingMapping.js.map +1 -1
- package/lib/cjs/WidgetShell/GroupingMappingContent.js +4 -4
- package/lib/cjs/WidgetShell/GroupingMappingContent.js.map +1 -1
- package/lib/cjs/WidgetShell/GroupingMappingHeader.d.ts +1 -1
- package/lib/cjs/WidgetShell/GroupingMappingHeader.js +5 -5
- package/lib/cjs/WidgetShell/GroupingMappingHeader.js.map +1 -1
- package/lib/cjs/WidgetShell/GroupingMappingWidget.js +1 -3
- package/lib/cjs/WidgetShell/GroupingMappingWidget.js.map +1 -1
- package/lib/cjs/WidgetShell/Router/GroupingMappingRouter.js +28 -8
- package/lib/cjs/WidgetShell/Router/GroupingMappingRouter.js.map +1 -1
- package/lib/cjs/WidgetShell/WidgetHeader/WidgetHeader.d.ts +1 -1
- package/lib/cjs/WidgetShell/WidgetHeader/WidgetHeader.js +7 -7
- package/lib/cjs/WidgetShell/WidgetHeader/WidgetHeader.js.map +1 -1
- package/lib/cjs/common/hooks/useIsMounted.js +3 -3
- package/lib/cjs/common/hooks/useIsMounted.js.map +1 -1
- package/lib/cjs/common/hooks/useMemoizedCollectionPick.js +3 -3
- package/lib/cjs/common/hooks/useMemoizedCollectionPick.js.map +1 -1
- package/lib/cjs/common/utils.js +3 -3
- package/lib/cjs/common/utils.js.map +1 -1
- package/lib/cjs/common/viewerUtils.js +2 -2
- package/lib/cjs/common/viewerUtils.js.map +1 -1
- package/lib/cjs/components/Constants.js +4 -4
- package/lib/cjs/components/Constants.js.map +1 -1
- package/lib/cjs/components/GroupingMappingContext.js +13 -4
- package/lib/cjs/components/GroupingMappingContext.js.map +1 -1
- package/lib/cjs/components/Groups/Editing/GroupAction.js +7 -9
- package/lib/cjs/components/Groups/Editing/GroupAction.js.map +1 -1
- package/lib/cjs/components/Groups/Editing/GroupDetails.d.ts +1 -1
- package/lib/cjs/components/Groups/Editing/GroupDetails.js +5 -7
- package/lib/cjs/components/Groups/Editing/GroupDetails.js.map +1 -1
- package/lib/cjs/components/Groups/Editing/GroupDetailsActionPanel.d.ts +1 -1
- package/lib/cjs/components/Groups/Editing/GroupDetailsActionPanel.js +4 -4
- package/lib/cjs/components/Groups/Editing/GroupDetailsActionPanel.js.map +1 -1
- package/lib/cjs/components/Groups/Editing/GroupDetailsStep.js +4 -4
- package/lib/cjs/components/Groups/Editing/GroupDetailsStep.js.map +1 -1
- package/lib/cjs/components/Groups/GroupColorLegend.js +3 -3
- package/lib/cjs/components/Groups/GroupColorLegend.js.map +1 -1
- package/lib/cjs/components/Groups/GroupListItem.js +3 -4
- package/lib/cjs/components/Groups/GroupListItem.js.map +1 -1
- package/lib/cjs/components/Groups/GroupListItem.scss +2 -2
- package/lib/cjs/components/Groups/GroupMenuActions.js +17 -6
- package/lib/cjs/components/Groups/GroupMenuActions.js.map +1 -1
- package/lib/cjs/components/Groups/GroupOverlapProgressBar.js.map +1 -1
- package/lib/cjs/components/Groups/Groups.js +3 -3
- package/lib/cjs/components/Groups/Groups.js.map +1 -1
- package/lib/cjs/components/Groups/GroupsAddButton.d.ts +1 -1
- package/lib/cjs/components/Groups/GroupsAddButton.js +4 -4
- package/lib/cjs/components/Groups/GroupsAddButton.js.map +1 -1
- package/lib/cjs/components/Groups/GroupsAddButton.scss +1 -1
- package/lib/cjs/components/Groups/GroupsShowHideButtons.d.ts +1 -1
- package/lib/cjs/components/Groups/GroupsShowHideButtons.js +2 -2
- package/lib/cjs/components/Groups/GroupsShowHideButtons.js.map +1 -1
- package/lib/cjs/components/Groups/GroupsView.js +8 -10
- package/lib/cjs/components/Groups/GroupsView.js.map +1 -1
- package/lib/cjs/components/Groups/GroupsView.scss +1 -1
- package/lib/cjs/components/Groups/GroupsVisualization.js +19 -20
- package/lib/cjs/components/Groups/GroupsVisualization.js.map +1 -1
- package/lib/cjs/components/Groups/GroupsVisualizationActions.js +4 -4
- package/lib/cjs/components/Groups/GroupsVisualizationActions.js.map +1 -1
- package/lib/cjs/components/Groups/OverlappedElementsInformationPanel.d.ts +1 -1
- package/lib/cjs/components/Groups/OverlappedElementsInformationPanel.js +4 -4
- package/lib/cjs/components/Groups/OverlappedElementsInformationPanel.js.map +1 -1
- package/lib/cjs/components/Groups/OverlappedElementsInformationPanel.scss +7 -7
- package/lib/cjs/components/Groups/QueryBuilder/QueryBuilder.js +13 -35
- package/lib/cjs/components/Groups/QueryBuilder/QueryBuilder.js.map +1 -1
- package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderActionPanel.js +4 -4
- package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderActionPanel.js.map +1 -1
- package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderCustomUI.d.ts +1 -1
- package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderCustomUI.js +4 -4
- package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderCustomUI.js.map +1 -1
- package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderStep.js +4 -4
- package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderStep.js.map +1 -1
- package/lib/cjs/components/Groups/ToggleGroupVisibility.js +3 -3
- package/lib/cjs/components/Groups/ToggleGroupVisibility.js.map +1 -1
- package/lib/cjs/components/Groups/groupsHelpers.js +8 -4
- package/lib/cjs/components/Groups/groupsHelpers.js.map +1 -1
- package/lib/cjs/components/Groups/hooks/useFetchGroups.js.map +1 -1
- package/lib/cjs/components/Groups/hooks/useGroupsOperations.d.ts +1 -1
- package/lib/cjs/components/Groups/hooks/useGroupsOperations.js +5 -5
- package/lib/cjs/components/Groups/hooks/useGroupsOperations.js.map +1 -1
- package/lib/cjs/components/Groups/hooks/useKeySetHiliteQueries.js.map +1 -1
- package/lib/cjs/components/Groups/hooks/useVisualization.js +2 -4
- package/lib/cjs/components/Groups/hooks/useVisualization.js.map +1 -1
- package/lib/cjs/components/Mappings/BlockingOverlay.js +3 -3
- package/lib/cjs/components/Mappings/BlockingOverlay.js.map +1 -1
- package/lib/cjs/components/Mappings/Editing/MappingAction.js +11 -15
- package/lib/cjs/components/Mappings/Editing/MappingAction.js.map +1 -1
- package/lib/cjs/components/Mappings/Extraction/ExtractionLogCustomFilter.d.ts +1 -1
- package/lib/cjs/components/Mappings/Extraction/ExtractionLogCustomFilter.js +1 -1
- package/lib/cjs/components/Mappings/Extraction/ExtractionLogCustomFilter.js.map +1 -1
- package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.js +9 -6
- package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.js.map +1 -1
- package/lib/cjs/components/Mappings/Extraction/ExtractionStates/QueuedExtractionState.js +3 -3
- package/lib/cjs/components/Mappings/Extraction/ExtractionStates/QueuedExtractionState.js.map +1 -1
- package/lib/cjs/components/Mappings/Extraction/ExtractionStates/RunningExtractionState.js +3 -3
- package/lib/cjs/components/Mappings/Extraction/ExtractionStates/RunningExtractionState.js.map +1 -1
- package/lib/cjs/components/Mappings/Extraction/ExtractionStates/StartingExtractionState.js +3 -3
- package/lib/cjs/components/Mappings/Extraction/ExtractionStates/StartingExtractionState.js.map +1 -1
- package/lib/cjs/components/Mappings/Extraction/ExtractionStates/TerminalExtractionState.js +3 -3
- package/lib/cjs/components/Mappings/Extraction/ExtractionStates/TerminalExtractionState.js.map +1 -1
- package/lib/cjs/components/Mappings/Extraction/ExtractionStatus.d.ts +1 -1
- package/lib/cjs/components/Mappings/Extraction/ExtractionStatus.js +9 -9
- package/lib/cjs/components/Mappings/Extraction/ExtractionStatus.js.map +1 -1
- package/lib/cjs/components/Mappings/Extraction/ExtractionStatusIcon.js +4 -4
- package/lib/cjs/components/Mappings/Extraction/ExtractionStatusIcon.js.map +1 -1
- package/lib/cjs/components/Mappings/Import/ConfirmMappingsImport.js +26 -30
- package/lib/cjs/components/Mappings/Import/ConfirmMappingsImport.js.map +1 -1
- package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.d.ts +1 -1
- package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.js +3 -3
- package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.js.map +1 -1
- package/lib/cjs/components/Mappings/Import/SelectIModel.d.ts +1 -1
- package/lib/cjs/components/Mappings/Import/SelectIModel.js +5 -5
- package/lib/cjs/components/Mappings/Import/SelectIModel.js.map +1 -1
- package/lib/cjs/components/Mappings/Import/SelectITwin.js +2 -2
- package/lib/cjs/components/Mappings/Import/SelectITwin.js.map +1 -1
- package/lib/cjs/components/Mappings/Import/SelectITwin.scss +1 -1
- package/lib/cjs/components/Mappings/Import/SelectMappings.d.ts +1 -1
- package/lib/cjs/components/Mappings/Import/SelectMappings.js +7 -7
- package/lib/cjs/components/Mappings/Import/SelectMappings.js.map +1 -1
- package/lib/cjs/components/Mappings/MappingListItem.js.map +1 -1
- package/lib/cjs/components/Mappings/MappingViewActionGroup.d.ts +1 -1
- package/lib/cjs/components/Mappings/MappingViewActionGroup.js +6 -6
- package/lib/cjs/components/Mappings/MappingViewActionGroup.js.map +1 -1
- package/lib/cjs/components/Mappings/Mappings.js +3 -3
- package/lib/cjs/components/Mappings/Mappings.js.map +1 -1
- package/lib/cjs/components/Mappings/MappingsView.js +13 -15
- package/lib/cjs/components/Mappings/MappingsView.js.map +1 -1
- package/lib/cjs/components/Mappings/hooks/useFetchExtractionStatus.js +3 -1
- package/lib/cjs/components/Mappings/hooks/useFetchExtractionStatus.js.map +1 -1
- package/lib/cjs/components/Mappings/hooks/useFetchMappingExtractionStatus.d.ts +1 -1
- package/lib/cjs/components/Mappings/hooks/useFetchMappingExtractionStatus.js +3 -3
- package/lib/cjs/components/Mappings/hooks/useFetchMappingExtractionStatus.js.map +1 -1
- package/lib/cjs/components/Mappings/hooks/useFetchMappings.js +1 -1
- package/lib/cjs/components/Mappings/hooks/useFetchMappings.js.map +1 -1
- package/lib/cjs/components/Mappings/hooks/useMappingsOperations.js +36 -18
- package/lib/cjs/components/Mappings/hooks/useMappingsOperations.js.map +1 -1
- package/lib/cjs/components/Mappings/hooks/useRunExtraction.d.ts +1 -1
- package/lib/cjs/components/Mappings/hooks/useRunExtraction.js +8 -6
- package/lib/cjs/components/Mappings/hooks/useRunExtraction.js.map +1 -1
- package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.d.ts +1 -1
- package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.js +8 -8
- package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.js.map +1 -1
- package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js +11 -13
- package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js.map +1 -1
- package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.js +1 -1
- package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.js.map +1 -1
- package/lib/cjs/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js +4 -6
- package/lib/cjs/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js.map +1 -1
- package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.d.ts +1 -1
- package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.js +27 -21
- package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.js.map +1 -1
- package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.scss +1 -1
- package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationTable.js +15 -11
- package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationTable.js.map +1 -1
- package/lib/cjs/components/Properties/GroupColorToggle.js +4 -4
- package/lib/cjs/components/Properties/GroupColorToggle.js.map +1 -1
- package/lib/cjs/components/Properties/GroupInformationPanel.js +3 -3
- package/lib/cjs/components/Properties/GroupInformationPanel.js.map +1 -1
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.d.ts +1 -1
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.js +20 -27
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.js.map +1 -1
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyListItem.d.ts +1 -1
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyListItem.js +5 -5
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyListItem.js.map +1 -1
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.d.ts +1 -1
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.js +14 -12
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.js.map +1 -1
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyUtils.js +20 -39
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyUtils.js.map +1 -1
- package/lib/cjs/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js +20 -29
- package/lib/cjs/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js.map +1 -1
- package/lib/cjs/components/Properties/GroupProperties/SaveModal.d.ts +1 -1
- package/lib/cjs/components/Properties/GroupProperties/SaveModal.js +7 -7
- package/lib/cjs/components/Properties/GroupProperties/SaveModal.js.map +1 -1
- package/lib/cjs/components/Properties/GroupProperties/SortableHorizontalTile.js +4 -4
- package/lib/cjs/components/Properties/GroupProperties/SortableHorizontalTile.js.map +1 -1
- package/lib/cjs/components/Properties/PropertyAction.js +9 -21
- package/lib/cjs/components/Properties/PropertyAction.js.map +1 -1
- package/lib/cjs/components/Properties/PropertyMenu.js +4 -4
- package/lib/cjs/components/Properties/PropertyMenu.js.map +1 -1
- package/lib/cjs/components/Properties/PropertyMenuWithVisualization.js +5 -5
- package/lib/cjs/components/Properties/PropertyMenuWithVisualization.js.map +1 -1
- package/lib/cjs/components/Properties/PropertyNameCell.d.ts +1 -1
- package/lib/cjs/components/Properties/PropertyNameCell.js +4 -4
- package/lib/cjs/components/Properties/PropertyNameCell.js.map +1 -1
- package/lib/cjs/components/Properties/PropertyTable.js +5 -6
- package/lib/cjs/components/Properties/PropertyTable.js.map +1 -1
- package/lib/cjs/components/Properties/PropertyTableToolbar.d.ts +1 -1
- package/lib/cjs/components/Properties/PropertyTableToolbar.js +4 -4
- package/lib/cjs/components/Properties/PropertyTableToolbar.js.map +1 -1
- package/lib/cjs/components/Properties/hooks/useFormulaValidation.js +3 -3
- package/lib/cjs/components/Properties/hooks/useFormulaValidation.js.map +1 -1
- package/lib/cjs/components/Properties/hooks/usePropertiesQuery.js.map +1 -1
- package/lib/cjs/components/Properties/hooks/useValidator.js +4 -4
- package/lib/cjs/components/Properties/hooks/useValidator.js.map +1 -1
- package/lib/cjs/components/SharedComponents/ActionPanel.d.ts +1 -1
- package/lib/cjs/components/SharedComponents/ActionPanel.js +9 -10
- package/lib/cjs/components/SharedComponents/ActionPanel.js.map +1 -1
- package/lib/cjs/components/SharedComponents/DeleteModal.d.ts +1 -1
- package/lib/cjs/components/SharedComponents/DeleteModal.js +9 -10
- package/lib/cjs/components/SharedComponents/DeleteModal.js.map +1 -1
- package/lib/cjs/components/SharedComponents/EmptyMessage.js +4 -4
- package/lib/cjs/components/SharedComponents/EmptyMessage.js.map +1 -1
- package/lib/cjs/components/SharedComponents/LoadingOverlay.js +4 -4
- package/lib/cjs/components/SharedComponents/LoadingOverlay.js.map +1 -1
- package/lib/cjs/components/SharedComponents/LoadingSpinner.js +3 -3
- package/lib/cjs/components/SharedComponents/LoadingSpinner.js.map +1 -1
- package/lib/cjs/components/SharedComponents/StatusIcon.js +3 -3
- package/lib/cjs/components/SharedComponents/StatusIcon.js.map +1 -1
- package/lib/cjs/components/context/ExtractionClientContext.js.map +1 -1
- package/lib/cjs/components/context/ExtractionStateJobContext.js +3 -3
- package/lib/cjs/components/context/ExtractionStateJobContext.js.map +1 -1
- package/lib/cjs/components/context/GroupHilitedElementsContext.js +3 -3
- package/lib/cjs/components/context/GroupHilitedElementsContext.js.map +1 -1
- package/lib/cjs/components/context/GroupingApiConfigContext.js.map +1 -1
- package/lib/cjs/components/context/GroupingMappingCustomUIContext.js +3 -3
- package/lib/cjs/components/context/GroupingMappingCustomUIContext.js.map +1 -1
- package/lib/cjs/components/context/GroupsClientContext.js.map +1 -1
- package/lib/cjs/components/context/IModelsClientContext.js.map +1 -1
- package/lib/cjs/components/context/ITwinsClientContext.js +3 -3
- package/lib/cjs/components/context/ITwinsClientContext.js.map +1 -1
- package/lib/cjs/components/context/MappingClientContext.js.map +1 -1
- package/lib/cjs/components/context/PropertiesClientContext.js.map +1 -1
- package/lib/cjs/components/context/PropertiesGroupColorContext.js +3 -3
- package/lib/cjs/components/context/PropertiesGroupColorContext.js.map +1 -1
- package/lib/cjs/components/context/PropertyGridWrapperContext.js +3 -3
- package/lib/cjs/components/context/PropertyGridWrapperContext.js.map +1 -1
- package/lib/cjs/components/customUI/DefaultGroupingUI.js +3 -3
- package/lib/cjs/components/customUI/DefaultGroupingUI.js.map +1 -1
- package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.d.ts +1 -1
- package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.js +13 -18
- package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
- package/lib/cjs/components/customUI/GroupingMappingCustomUI.js.map +1 -1
- package/lib/cjs/components/customUI/ManualGroupingCustomUI.d.ts +1 -1
- package/lib/cjs/components/customUI/ManualGroupingCustomUI.js +8 -8
- package/lib/cjs/components/customUI/ManualGroupingCustomUI.js.map +1 -1
- package/lib/cjs/components/customUI/SearchGroupingCustomUI.d.ts +1 -1
- package/lib/cjs/components/customUI/SearchGroupingCustomUI.js +16 -45
- package/lib/cjs/components/customUI/SearchGroupingCustomUI.js.map +1 -1
- package/lib/cjs/decorators/BboxDimensionsDecorator.js +3 -10
- package/lib/cjs/decorators/BboxDimensionsDecorator.js.map +1 -1
- package/lib/cjs/formula/FormulaDataTypeResolver.js +3 -3
- package/lib/cjs/formula/FormulaDataTypeResolver.js.map +1 -1
- package/lib/cjs/formula/FormulaFunctionProvider.js +146 -65
- package/lib/cjs/formula/FormulaFunctionProvider.js.map +1 -1
- package/lib/cjs/formula/FormulaOperatorsProvider.js +138 -44
- package/lib/cjs/formula/FormulaOperatorsProvider.js.map +1 -1
- package/lib/cjs/formula/FormulaSplitter.js +63 -13
- package/lib/cjs/formula/FormulaSplitter.js.map +1 -1
- package/lib/cjs/formula/FormulaTokensDataTypeResolver.js +7 -14
- package/lib/cjs/formula/FormulaTokensDataTypeResolver.js.map +1 -1
- package/lib/cjs/formula/IResult.js.map +1 -1
- package/lib/cjs/formula/InfixToPostfixConverter.js +4 -4
- package/lib/cjs/formula/InfixToPostfixConverter.js.map +1 -1
- package/lib/cjs/formula/InputStream.js +3 -3
- package/lib/cjs/formula/InputStream.js.map +1 -1
- package/lib/cjs/formula/ParenthesisValidator.js +3 -3
- package/lib/cjs/formula/ParenthesisValidator.js.map +1 -1
- package/lib/cjs/formula/Queue.js +3 -3
- package/lib/cjs/formula/Queue.js.map +1 -1
- package/lib/cjs/formula/Stack.js +3 -3
- package/lib/cjs/formula/Stack.js.map +1 -1
- package/lib/cjs/formula/StringBuilder.js +3 -3
- package/lib/cjs/formula/StringBuilder.js.map +1 -1
- package/lib/cjs/formula/Types.js.map +1 -1
- package/lib/cjs/formula/Utils.js +4 -4
- package/lib/cjs/formula/Utils.js.map +1 -1
- package/lib/cjs/grouping-mapping-widget.d.ts +4 -4
- package/lib/cjs/grouping-mapping-widget.js +3 -3
- package/lib/cjs/grouping-mapping-widget.js.map +1 -1
- package/lib/cjs/test/GroupPropertyUtils.test.js +27 -26
- package/lib/cjs/test/GroupPropertyUtils.test.js.map +1 -1
- package/lib/cjs/test/GroupingMappingCustomUI.test.js +4 -6
- package/lib/cjs/test/GroupingMappingCustomUI.test.js.map +1 -1
- package/lib/cjs/test/MockFactory.js +3 -3
- package/lib/cjs/test/MockFactory.js.map +1 -1
- package/lib/cjs/test/PropertyFieldsHelpers.js +3 -3
- package/lib/cjs/test/PropertyFieldsHelpers.js.map +1 -1
- package/lib/cjs/test/QueryBuilder.test.js +3 -3
- package/lib/cjs/test/QueryBuilder.test.js.map +1 -1
- package/lib/cjs/test/QueryBuilder.testdata.js +3 -3
- package/lib/cjs/test/QueryBuilder.testdata.js.map +1 -1
- package/lib/cjs/test/QueryBuilderTestData.js.map +1 -1
- package/lib/cjs/test/WidgetHeader.test.js +3 -3
- package/lib/cjs/test/WidgetHeader.test.js.map +1 -1
- package/lib/cjs/test/test-utils.js +4 -4
- package/lib/cjs/test/test-utils.js.map +1 -1
- package/lib/esm/WidgetShell/GroupingMapping.js +3 -5
- package/lib/esm/WidgetShell/GroupingMapping.js.map +1 -1
- package/lib/esm/WidgetShell/GroupingMappingContent.js +4 -4
- package/lib/esm/WidgetShell/GroupingMappingContent.js.map +1 -1
- package/lib/esm/WidgetShell/GroupingMappingHeader.d.ts +1 -1
- package/lib/esm/WidgetShell/GroupingMappingHeader.js +5 -5
- package/lib/esm/WidgetShell/GroupingMappingHeader.js.map +1 -1
- package/lib/esm/WidgetShell/GroupingMappingWidget.js +2 -4
- package/lib/esm/WidgetShell/GroupingMappingWidget.js.map +1 -1
- package/lib/esm/WidgetShell/Router/GroupingMappingRouter.js +28 -8
- package/lib/esm/WidgetShell/Router/GroupingMappingRouter.js.map +1 -1
- package/lib/esm/WidgetShell/WidgetHeader/WidgetHeader.d.ts +1 -1
- package/lib/esm/WidgetShell/WidgetHeader/WidgetHeader.js +7 -7
- package/lib/esm/WidgetShell/WidgetHeader/WidgetHeader.js.map +1 -1
- package/lib/esm/common/hooks/useIsMounted.js +3 -3
- package/lib/esm/common/hooks/useIsMounted.js.map +1 -1
- package/lib/esm/common/hooks/useMemoizedCollectionPick.js +3 -3
- package/lib/esm/common/hooks/useMemoizedCollectionPick.js.map +1 -1
- package/lib/esm/common/utils.js +3 -3
- package/lib/esm/common/utils.js.map +1 -1
- package/lib/esm/common/viewerUtils.js +2 -2
- package/lib/esm/common/viewerUtils.js.map +1 -1
- package/lib/esm/components/Constants.js +4 -4
- package/lib/esm/components/Constants.js.map +1 -1
- package/lib/esm/components/GroupingMappingContext.js +14 -5
- package/lib/esm/components/GroupingMappingContext.js.map +1 -1
- package/lib/esm/components/Groups/Editing/GroupAction.js +8 -10
- package/lib/esm/components/Groups/Editing/GroupAction.js.map +1 -1
- package/lib/esm/components/Groups/Editing/GroupDetails.d.ts +1 -1
- package/lib/esm/components/Groups/Editing/GroupDetails.js +5 -7
- package/lib/esm/components/Groups/Editing/GroupDetails.js.map +1 -1
- package/lib/esm/components/Groups/Editing/GroupDetailsActionPanel.d.ts +1 -1
- package/lib/esm/components/Groups/Editing/GroupDetailsActionPanel.js +4 -4
- package/lib/esm/components/Groups/Editing/GroupDetailsActionPanel.js.map +1 -1
- package/lib/esm/components/Groups/Editing/GroupDetailsStep.js +4 -4
- package/lib/esm/components/Groups/Editing/GroupDetailsStep.js.map +1 -1
- package/lib/esm/components/Groups/GroupColorLegend.js +3 -3
- package/lib/esm/components/Groups/GroupColorLegend.js.map +1 -1
- package/lib/esm/components/Groups/GroupListItem.js +3 -4
- package/lib/esm/components/Groups/GroupListItem.js.map +1 -1
- package/lib/esm/components/Groups/GroupListItem.scss +2 -2
- package/lib/esm/components/Groups/GroupMenuActions.js +17 -6
- package/lib/esm/components/Groups/GroupMenuActions.js.map +1 -1
- package/lib/esm/components/Groups/GroupOverlapProgressBar.js.map +1 -1
- package/lib/esm/components/Groups/Groups.js +3 -3
- package/lib/esm/components/Groups/Groups.js.map +1 -1
- package/lib/esm/components/Groups/GroupsAddButton.d.ts +1 -1
- package/lib/esm/components/Groups/GroupsAddButton.js +4 -4
- package/lib/esm/components/Groups/GroupsAddButton.js.map +1 -1
- package/lib/esm/components/Groups/GroupsAddButton.scss +1 -1
- package/lib/esm/components/Groups/GroupsShowHideButtons.d.ts +1 -1
- package/lib/esm/components/Groups/GroupsShowHideButtons.js +2 -2
- package/lib/esm/components/Groups/GroupsShowHideButtons.js.map +1 -1
- package/lib/esm/components/Groups/GroupsView.js +10 -12
- package/lib/esm/components/Groups/GroupsView.js.map +1 -1
- package/lib/esm/components/Groups/GroupsView.scss +1 -1
- package/lib/esm/components/Groups/GroupsVisualization.js +21 -22
- package/lib/esm/components/Groups/GroupsVisualization.js.map +1 -1
- package/lib/esm/components/Groups/GroupsVisualizationActions.js +4 -4
- package/lib/esm/components/Groups/GroupsVisualizationActions.js.map +1 -1
- package/lib/esm/components/Groups/OverlappedElementsInformationPanel.d.ts +1 -1
- package/lib/esm/components/Groups/OverlappedElementsInformationPanel.js +5 -5
- package/lib/esm/components/Groups/OverlappedElementsInformationPanel.js.map +1 -1
- package/lib/esm/components/Groups/OverlappedElementsInformationPanel.scss +7 -7
- package/lib/esm/components/Groups/QueryBuilder/QueryBuilder.js +13 -35
- package/lib/esm/components/Groups/QueryBuilder/QueryBuilder.js.map +1 -1
- package/lib/esm/components/Groups/QueryBuilder/QueryBuilderActionPanel.js +4 -4
- package/lib/esm/components/Groups/QueryBuilder/QueryBuilderActionPanel.js.map +1 -1
- package/lib/esm/components/Groups/QueryBuilder/QueryBuilderCustomUI.d.ts +1 -1
- package/lib/esm/components/Groups/QueryBuilder/QueryBuilderCustomUI.js +4 -4
- package/lib/esm/components/Groups/QueryBuilder/QueryBuilderCustomUI.js.map +1 -1
- package/lib/esm/components/Groups/QueryBuilder/QueryBuilderStep.js +4 -4
- package/lib/esm/components/Groups/QueryBuilder/QueryBuilderStep.js.map +1 -1
- package/lib/esm/components/Groups/ToggleGroupVisibility.js +3 -3
- package/lib/esm/components/Groups/ToggleGroupVisibility.js.map +1 -1
- package/lib/esm/components/Groups/groupsHelpers.js +9 -5
- package/lib/esm/components/Groups/groupsHelpers.js.map +1 -1
- package/lib/esm/components/Groups/hooks/useFetchGroups.js.map +1 -1
- package/lib/esm/components/Groups/hooks/useGroupsOperations.d.ts +1 -1
- package/lib/esm/components/Groups/hooks/useGroupsOperations.js +5 -5
- package/lib/esm/components/Groups/hooks/useGroupsOperations.js.map +1 -1
- package/lib/esm/components/Groups/hooks/useKeySetHiliteQueries.js.map +1 -1
- package/lib/esm/components/Groups/hooks/useVisualization.js +3 -5
- package/lib/esm/components/Groups/hooks/useVisualization.js.map +1 -1
- package/lib/esm/components/Mappings/BlockingOverlay.js +3 -3
- package/lib/esm/components/Mappings/BlockingOverlay.js.map +1 -1
- package/lib/esm/components/Mappings/Editing/MappingAction.js +11 -15
- package/lib/esm/components/Mappings/Editing/MappingAction.js.map +1 -1
- package/lib/esm/components/Mappings/Extraction/ExtractionLogCustomFilter.d.ts +1 -1
- package/lib/esm/components/Mappings/Extraction/ExtractionLogCustomFilter.js +1 -1
- package/lib/esm/components/Mappings/Extraction/ExtractionLogCustomFilter.js.map +1 -1
- package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.js +9 -6
- package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.js.map +1 -1
- package/lib/esm/components/Mappings/Extraction/ExtractionStates/QueuedExtractionState.js +3 -3
- package/lib/esm/components/Mappings/Extraction/ExtractionStates/QueuedExtractionState.js.map +1 -1
- package/lib/esm/components/Mappings/Extraction/ExtractionStates/RunningExtractionState.js +3 -3
- package/lib/esm/components/Mappings/Extraction/ExtractionStates/RunningExtractionState.js.map +1 -1
- package/lib/esm/components/Mappings/Extraction/ExtractionStates/StartingExtractionState.js +3 -3
- package/lib/esm/components/Mappings/Extraction/ExtractionStates/StartingExtractionState.js.map +1 -1
- package/lib/esm/components/Mappings/Extraction/ExtractionStates/TerminalExtractionState.js +3 -3
- package/lib/esm/components/Mappings/Extraction/ExtractionStates/TerminalExtractionState.js.map +1 -1
- package/lib/esm/components/Mappings/Extraction/ExtractionStatus.d.ts +1 -1
- package/lib/esm/components/Mappings/Extraction/ExtractionStatus.js +9 -9
- package/lib/esm/components/Mappings/Extraction/ExtractionStatus.js.map +1 -1
- package/lib/esm/components/Mappings/Extraction/ExtractionStatusIcon.js +4 -4
- package/lib/esm/components/Mappings/Extraction/ExtractionStatusIcon.js.map +1 -1
- package/lib/esm/components/Mappings/Import/ConfirmMappingsImport.js +27 -31
- package/lib/esm/components/Mappings/Import/ConfirmMappingsImport.js.map +1 -1
- package/lib/esm/components/Mappings/Import/MappingImportWizardModal.d.ts +1 -1
- package/lib/esm/components/Mappings/Import/MappingImportWizardModal.js +3 -3
- package/lib/esm/components/Mappings/Import/MappingImportWizardModal.js.map +1 -1
- package/lib/esm/components/Mappings/Import/SelectIModel.d.ts +1 -1
- package/lib/esm/components/Mappings/Import/SelectIModel.js +5 -5
- package/lib/esm/components/Mappings/Import/SelectIModel.js.map +1 -1
- package/lib/esm/components/Mappings/Import/SelectITwin.js +2 -2
- package/lib/esm/components/Mappings/Import/SelectITwin.js.map +1 -1
- package/lib/esm/components/Mappings/Import/SelectITwin.scss +1 -1
- package/lib/esm/components/Mappings/Import/SelectMappings.d.ts +1 -1
- package/lib/esm/components/Mappings/Import/SelectMappings.js +8 -8
- package/lib/esm/components/Mappings/Import/SelectMappings.js.map +1 -1
- package/lib/esm/components/Mappings/MappingListItem.js.map +1 -1
- package/lib/esm/components/Mappings/MappingViewActionGroup.d.ts +1 -1
- package/lib/esm/components/Mappings/MappingViewActionGroup.js +8 -8
- package/lib/esm/components/Mappings/MappingViewActionGroup.js.map +1 -1
- package/lib/esm/components/Mappings/Mappings.js +3 -3
- package/lib/esm/components/Mappings/Mappings.js.map +1 -1
- package/lib/esm/components/Mappings/MappingsView.js +15 -17
- package/lib/esm/components/Mappings/MappingsView.js.map +1 -1
- package/lib/esm/components/Mappings/hooks/useFetchExtractionStatus.js +3 -1
- package/lib/esm/components/Mappings/hooks/useFetchExtractionStatus.js.map +1 -1
- package/lib/esm/components/Mappings/hooks/useFetchMappingExtractionStatus.d.ts +1 -1
- package/lib/esm/components/Mappings/hooks/useFetchMappingExtractionStatus.js +3 -3
- package/lib/esm/components/Mappings/hooks/useFetchMappingExtractionStatus.js.map +1 -1
- package/lib/esm/components/Mappings/hooks/useFetchMappings.js +1 -1
- package/lib/esm/components/Mappings/hooks/useFetchMappings.js.map +1 -1
- package/lib/esm/components/Mappings/hooks/useMappingsOperations.js +36 -18
- package/lib/esm/components/Mappings/hooks/useMappingsOperations.js.map +1 -1
- package/lib/esm/components/Mappings/hooks/useRunExtraction.d.ts +1 -1
- package/lib/esm/components/Mappings/hooks/useRunExtraction.js +8 -6
- package/lib/esm/components/Mappings/hooks/useRunExtraction.js.map +1 -1
- package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.d.ts +1 -1
- package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.js +9 -9
- package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.js.map +1 -1
- package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js +13 -15
- package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js.map +1 -1
- package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.js +2 -2
- package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.js.map +1 -1
- package/lib/esm/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js +5 -7
- package/lib/esm/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js.map +1 -1
- package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.d.ts +1 -1
- package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.js +28 -22
- package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.js.map +1 -1
- package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.scss +1 -1
- package/lib/esm/components/Properties/CustomCalculations/CustomCalculationTable.js +17 -13
- package/lib/esm/components/Properties/CustomCalculations/CustomCalculationTable.js.map +1 -1
- package/lib/esm/components/Properties/GroupColorToggle.js +4 -4
- package/lib/esm/components/Properties/GroupColorToggle.js.map +1 -1
- package/lib/esm/components/Properties/GroupInformationPanel.js +3 -3
- package/lib/esm/components/Properties/GroupInformationPanel.js.map +1 -1
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.d.ts +1 -1
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.js +22 -29
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.js.map +1 -1
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyListItem.d.ts +1 -1
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyListItem.js +5 -5
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyListItem.js.map +1 -1
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.d.ts +1 -1
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.js +16 -14
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.js.map +1 -1
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyUtils.js +21 -40
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyUtils.js.map +1 -1
- package/lib/esm/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js +26 -35
- package/lib/esm/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js.map +1 -1
- package/lib/esm/components/Properties/GroupProperties/SaveModal.d.ts +1 -1
- package/lib/esm/components/Properties/GroupProperties/SaveModal.js +8 -8
- package/lib/esm/components/Properties/GroupProperties/SaveModal.js.map +1 -1
- package/lib/esm/components/Properties/GroupProperties/SortableHorizontalTile.js +4 -4
- package/lib/esm/components/Properties/GroupProperties/SortableHorizontalTile.js.map +1 -1
- package/lib/esm/components/Properties/PropertyAction.js +9 -21
- package/lib/esm/components/Properties/PropertyAction.js.map +1 -1
- package/lib/esm/components/Properties/PropertyMenu.js +4 -4
- package/lib/esm/components/Properties/PropertyMenu.js.map +1 -1
- package/lib/esm/components/Properties/PropertyMenuWithVisualization.js +5 -5
- package/lib/esm/components/Properties/PropertyMenuWithVisualization.js.map +1 -1
- package/lib/esm/components/Properties/PropertyNameCell.d.ts +1 -1
- package/lib/esm/components/Properties/PropertyNameCell.js +4 -4
- package/lib/esm/components/Properties/PropertyNameCell.js.map +1 -1
- package/lib/esm/components/Properties/PropertyTable.js +5 -6
- package/lib/esm/components/Properties/PropertyTable.js.map +1 -1
- package/lib/esm/components/Properties/PropertyTableToolbar.d.ts +1 -1
- package/lib/esm/components/Properties/PropertyTableToolbar.js +4 -4
- package/lib/esm/components/Properties/PropertyTableToolbar.js.map +1 -1
- package/lib/esm/components/Properties/hooks/useFormulaValidation.js +3 -3
- package/lib/esm/components/Properties/hooks/useFormulaValidation.js.map +1 -1
- package/lib/esm/components/Properties/hooks/usePropertiesQuery.js.map +1 -1
- package/lib/esm/components/Properties/hooks/useValidator.js +4 -4
- package/lib/esm/components/Properties/hooks/useValidator.js.map +1 -1
- package/lib/esm/components/SharedComponents/ActionPanel.d.ts +1 -1
- package/lib/esm/components/SharedComponents/ActionPanel.js +9 -10
- package/lib/esm/components/SharedComponents/ActionPanel.js.map +1 -1
- package/lib/esm/components/SharedComponents/DeleteModal.d.ts +1 -1
- package/lib/esm/components/SharedComponents/DeleteModal.js +10 -11
- package/lib/esm/components/SharedComponents/DeleteModal.js.map +1 -1
- package/lib/esm/components/SharedComponents/EmptyMessage.js +4 -4
- package/lib/esm/components/SharedComponents/EmptyMessage.js.map +1 -1
- package/lib/esm/components/SharedComponents/LoadingOverlay.js +4 -4
- package/lib/esm/components/SharedComponents/LoadingOverlay.js.map +1 -1
- package/lib/esm/components/SharedComponents/LoadingSpinner.js +3 -3
- package/lib/esm/components/SharedComponents/LoadingSpinner.js.map +1 -1
- package/lib/esm/components/SharedComponents/StatusIcon.js +3 -3
- package/lib/esm/components/SharedComponents/StatusIcon.js.map +1 -1
- package/lib/esm/components/context/ExtractionClientContext.js.map +1 -1
- package/lib/esm/components/context/ExtractionStateJobContext.js +3 -3
- package/lib/esm/components/context/ExtractionStateJobContext.js.map +1 -1
- package/lib/esm/components/context/GroupHilitedElementsContext.js +3 -3
- package/lib/esm/components/context/GroupHilitedElementsContext.js.map +1 -1
- package/lib/esm/components/context/GroupingApiConfigContext.js.map +1 -1
- package/lib/esm/components/context/GroupingMappingCustomUIContext.js +3 -3
- package/lib/esm/components/context/GroupingMappingCustomUIContext.js.map +1 -1
- package/lib/esm/components/context/GroupsClientContext.js.map +1 -1
- package/lib/esm/components/context/IModelsClientContext.js.map +1 -1
- package/lib/esm/components/context/ITwinsClientContext.js +3 -3
- package/lib/esm/components/context/ITwinsClientContext.js.map +1 -1
- package/lib/esm/components/context/MappingClientContext.js.map +1 -1
- package/lib/esm/components/context/PropertiesClientContext.js.map +1 -1
- package/lib/esm/components/context/PropertiesGroupColorContext.js +3 -3
- package/lib/esm/components/context/PropertiesGroupColorContext.js.map +1 -1
- package/lib/esm/components/context/PropertyGridWrapperContext.js +3 -3
- package/lib/esm/components/context/PropertyGridWrapperContext.js.map +1 -1
- package/lib/esm/components/customUI/DefaultGroupingUI.js +3 -3
- package/lib/esm/components/customUI/DefaultGroupingUI.js.map +1 -1
- package/lib/esm/components/customUI/GroupQueryBuilderCustomUI.d.ts +1 -1
- package/lib/esm/components/customUI/GroupQueryBuilderCustomUI.js +14 -19
- package/lib/esm/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
- package/lib/esm/components/customUI/GroupingMappingCustomUI.js.map +1 -1
- package/lib/esm/components/customUI/ManualGroupingCustomUI.d.ts +1 -1
- package/lib/esm/components/customUI/ManualGroupingCustomUI.js +8 -8
- package/lib/esm/components/customUI/ManualGroupingCustomUI.js.map +1 -1
- package/lib/esm/components/customUI/SearchGroupingCustomUI.d.ts +1 -1
- package/lib/esm/components/customUI/SearchGroupingCustomUI.js +16 -45
- package/lib/esm/components/customUI/SearchGroupingCustomUI.js.map +1 -1
- package/lib/esm/decorators/BboxDimensionsDecorator.js +5 -12
- package/lib/esm/decorators/BboxDimensionsDecorator.js.map +1 -1
- package/lib/esm/formula/FormulaDataTypeResolver.js +3 -3
- package/lib/esm/formula/FormulaDataTypeResolver.js.map +1 -1
- package/lib/esm/formula/FormulaFunctionProvider.js +146 -65
- package/lib/esm/formula/FormulaFunctionProvider.js.map +1 -1
- package/lib/esm/formula/FormulaOperatorsProvider.js +138 -44
- package/lib/esm/formula/FormulaOperatorsProvider.js.map +1 -1
- package/lib/esm/formula/FormulaSplitter.js +63 -13
- package/lib/esm/formula/FormulaSplitter.js.map +1 -1
- package/lib/esm/formula/FormulaTokensDataTypeResolver.js +7 -14
- package/lib/esm/formula/FormulaTokensDataTypeResolver.js.map +1 -1
- package/lib/esm/formula/IResult.js.map +1 -1
- package/lib/esm/formula/InfixToPostfixConverter.js +5 -5
- package/lib/esm/formula/InfixToPostfixConverter.js.map +1 -1
- package/lib/esm/formula/InputStream.js +3 -3
- package/lib/esm/formula/InputStream.js.map +1 -1
- package/lib/esm/formula/ParenthesisValidator.js +3 -3
- package/lib/esm/formula/ParenthesisValidator.js.map +1 -1
- package/lib/esm/formula/Queue.js +3 -3
- package/lib/esm/formula/Queue.js.map +1 -1
- package/lib/esm/formula/Stack.js +3 -3
- package/lib/esm/formula/Stack.js.map +1 -1
- package/lib/esm/formula/StringBuilder.js +3 -3
- package/lib/esm/formula/StringBuilder.js.map +1 -1
- package/lib/esm/formula/Types.js.map +1 -1
- package/lib/esm/formula/Utils.js +4 -4
- package/lib/esm/formula/Utils.js.map +1 -1
- package/lib/esm/grouping-mapping-widget.d.ts +4 -4
- package/lib/esm/grouping-mapping-widget.js +7 -7
- package/lib/esm/grouping-mapping-widget.js.map +1 -1
- package/lib/esm/test/GroupPropertyUtils.test.js +28 -27
- package/lib/esm/test/GroupPropertyUtils.test.js.map +1 -1
- package/lib/esm/test/GroupingMappingCustomUI.test.js +4 -6
- package/lib/esm/test/GroupingMappingCustomUI.test.js.map +1 -1
- package/lib/esm/test/MockFactory.js +3 -3
- package/lib/esm/test/MockFactory.js.map +1 -1
- package/lib/esm/test/PropertyFieldsHelpers.js +3 -3
- package/lib/esm/test/PropertyFieldsHelpers.js.map +1 -1
- package/lib/esm/test/QueryBuilder.test.js +3 -3
- package/lib/esm/test/QueryBuilder.test.js.map +1 -1
- package/lib/esm/test/QueryBuilder.testdata.js +3 -3
- package/lib/esm/test/QueryBuilder.testdata.js.map +1 -1
- package/lib/esm/test/QueryBuilderTestData.js.map +1 -1
- package/lib/esm/test/WidgetHeader.test.js +3 -3
- package/lib/esm/test/WidgetHeader.test.js.map +1 -1
- package/lib/esm/test/test-utils.js +4 -4
- package/lib/esm/test/test-utils.js.map +1 -1
- package/package.json +8 -4
|
@@ -25,9 +25,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.GroupQueryBuilderCustomUI = void 0;
|
|
27
27
|
/*---------------------------------------------------------------------------------------------
|
|
28
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
29
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
30
|
-
*--------------------------------------------------------------------------------------------*/
|
|
28
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
29
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
30
|
+
*--------------------------------------------------------------------------------------------*/
|
|
31
31
|
const react_1 = __importStar(require("react"));
|
|
32
32
|
const presentation_frontend_1 = require("@itwin/presentation-frontend");
|
|
33
33
|
const presentation_common_1 = require("@itwin/presentation-common");
|
|
@@ -59,7 +59,7 @@ const createPropertyDataProvider = async (keys, iModelConnection) => {
|
|
|
59
59
|
* A default group query builder for the Grouping Mapping Widget that uses the property grid to generate queries.
|
|
60
60
|
* @public
|
|
61
61
|
*/
|
|
62
|
-
const GroupQueryBuilderCustomUI = ({ updateQuery, isUpdating, resetView
|
|
62
|
+
const GroupQueryBuilderCustomUI = ({ updateQuery, isUpdating, resetView }) => {
|
|
63
63
|
const { iModelConnection } = (0, GroupingApiConfigContext_1.useGroupingMappingApiConfig)();
|
|
64
64
|
if (!iModelConnection) {
|
|
65
65
|
throw new Error("This component requires an active iModelConnection.");
|
|
@@ -78,9 +78,7 @@ const GroupQueryBuilderCustomUI = ({ updateQuery, isUpdating, resetView, }) => {
|
|
|
78
78
|
setDataProvider(dataProvider);
|
|
79
79
|
setQueryBuilder(new QueryBuilder_1.QueryBuilder(dataProvider));
|
|
80
80
|
};
|
|
81
|
-
return iModelConnection
|
|
82
|
-
? presentation_frontend_1.Presentation.selection.selectionChange.addListener(onSelectionChanged)
|
|
83
|
-
: () => { };
|
|
81
|
+
return iModelConnection ? presentation_frontend_1.Presentation.selection.selectionChange.addListener(onSelectionChanged) : () => { };
|
|
84
82
|
}, [iModelConnection]);
|
|
85
83
|
const onClickResetButton = async () => {
|
|
86
84
|
queryBuilder?.resetQueryBuilder();
|
|
@@ -99,17 +97,14 @@ const GroupQueryBuilderCustomUI = ({ updateQuery, isUpdating, resetView, }) => {
|
|
|
99
97
|
setQuery: updateQuery,
|
|
100
98
|
isUpdating: isUpdating ?? false,
|
|
101
99
|
}), [currentPropertyList, isUpdating, queryBuilder, updateQuery]);
|
|
102
|
-
const actionButtonRenderers = (0, react_1.useMemo)(() => [
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
react_1.default.createElement(components_react_1.VirtualizedPropertyGridWithDataProvider, { dataProvider: dataProvider, width: size.width, height: size.height, actionButtonRenderers: actionButtonRenderers }))),
|
|
111
|
-
react_1.default.createElement("div", { className: "gmw-select-reset-button" },
|
|
112
|
-
react_1.default.createElement(itwinui_react_1.Button, { styleType: "default", size: "small", onClick: onClickResetButton }, "Reset")))));
|
|
100
|
+
const actionButtonRenderers = (0, react_1.useMemo)(() => [({ property }) => react_1.default.createElement(PropertyAction_1.PropertyAction, { property: property })], []);
|
|
101
|
+
return (react_1.default.createElement("div", { className: "gmw-select-query-generator-container" }, !dataProvider || selectionKeySet.size === 0 ? (react_1.default.createElement(itwinui_react_1.Alert, { type: "informational" }, "Please select on an element within the viewer first, then select properties to generate a group query.")) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
102
|
+
react_1.default.createElement("div", { className: "gmw-select-property-grid-container" },
|
|
103
|
+
react_1.default.createElement(core_react_1.ResizableContainerObserver, { onResize: resize }),
|
|
104
|
+
react_1.default.createElement(PropertyGridWrapperContext_1.PropertyGridWrapperContext.Provider, { value: propertyContextValues },
|
|
105
|
+
react_1.default.createElement(components_react_1.VirtualizedPropertyGridWithDataProvider, { dataProvider: dataProvider, width: size.width, height: size.height, actionButtonRenderers: actionButtonRenderers }))),
|
|
106
|
+
react_1.default.createElement("div", { className: "gmw-select-reset-button" },
|
|
107
|
+
react_1.default.createElement(itwinui_react_1.Button, { styleType: "default", size: "small", onClick: onClickResetButton }, "Reset"))))));
|
|
113
108
|
};
|
|
114
109
|
exports.GroupQueryBuilderCustomUI = GroupQueryBuilderCustomUI;
|
|
115
110
|
//# sourceMappingURL=GroupQueryBuilderCustomUI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupQueryBuilderCustomUI.js","sourceRoot":"","sources":["../../../../src/components/customUI/GroupQueryBuilderCustomUI.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"GroupQueryBuilderCustomUI.js","sourceRoot":"","sources":["../../../../src/components/customUI/GroupQueryBuilderCustomUI.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 React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport type { ISelectionProvider, SelectionChangeEventArgs } from \"@itwin/presentation-frontend\";\nimport { KeySet } from \"@itwin/presentation-common\";\nimport \"./GroupQueryBuilderCustomUI.scss\";\nimport { QueryBuilder } from \"../Groups/QueryBuilder/QueryBuilder\";\nimport type { GroupingCustomUIProps } from \"./GroupingMappingCustomUI\";\nimport { DEFAULT_PROPERTY_GRID_RULESET, PresentationPropertyDataProvider } from \"@itwin/presentation-components\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { ActionButtonRendererProps } from \"@itwin/components-react\";\nimport { VirtualizedPropertyGridWithDataProvider } from \"@itwin/components-react\";\nimport { ResizableContainerObserver } from \"@itwin/core-react\";\nimport type { PropertyRecord } from \"@itwin/appui-abstract\";\nimport { PropertyGridWrapperContext } from \"../context/PropertyGridWrapperContext\";\nimport { PropertyAction } from \"../Properties/PropertyAction\";\nimport { Alert, Button } from \"@itwin/itwinui-react\";\nimport { useGroupingMappingApiConfig } from \"../context/GroupingApiConfigContext\";\nimport { IModelApp } from \"@itwin/core-frontend\";\n\nconst createPropertyDataProvider = async (keys: KeySet, iModelConnection: IModelConnection): Promise<PresentationPropertyDataProvider> => {\n const dataProvider = new PresentationPropertyDataProvider({\n imodel: iModelConnection,\n ruleset: DEFAULT_PROPERTY_GRID_RULESET,\n });\n dataProvider.keys = keys;\n dataProvider.isNestedPropertyCategoryGroupingEnabled = true;\n const data = await dataProvider.getData();\n const selectedCategory = data.categories.find(\n (category) => category.label === IModelApp.localization.getLocalizedString(\"Presentation:selectedItems.categoryLabel\"),\n );\n if (selectedCategory) {\n selectedCategory.expand = true;\n }\n return dataProvider;\n};\n\ninterface ContainerDimensions {\n width: number;\n height: number;\n}\n\n/**\n * A default group query builder for the Grouping Mapping Widget that uses the property grid to generate queries.\n * @public\n */\nexport const GroupQueryBuilderCustomUI = ({ updateQuery, isUpdating, resetView }: GroupingCustomUIProps) => {\n const { iModelConnection } = useGroupingMappingApiConfig();\n if (!iModelConnection) {\n throw new Error(\"This component requires an active iModelConnection.\");\n }\n const [size, setSize] = useState<ContainerDimensions>({ width: 0, height: 0 });\n const [dataProvider, setDataProvider] = useState<PresentationPropertyDataProvider | undefined>(undefined);\n const [currentPropertyList, setCurrentPropertyList] = useState<PropertyRecord[]>([]);\n const [selectionKeySet, setSelectionKeyset] = useState<KeySet>(new KeySet());\n const [queryBuilder, setQueryBuilder] = useState<QueryBuilder | undefined>();\n\n useEffect(() => {\n const onSelectionChanged = async (evt: SelectionChangeEventArgs, selectionProvider: ISelectionProvider) => {\n const selection = selectionProvider.getSelection(evt.imodel, evt.level);\n const keys = new KeySet(selection);\n setSelectionKeyset(keys);\n const dataProvider = await createPropertyDataProvider(keys, iModelConnection);\n setDataProvider(dataProvider);\n setQueryBuilder(new QueryBuilder(dataProvider));\n };\n\n return iModelConnection ? Presentation.selection.selectionChange.addListener(onSelectionChanged) : () => {};\n }, [iModelConnection]);\n\n const onClickResetButton = async () => {\n queryBuilder?.resetQueryBuilder();\n updateQuery(\"\");\n setCurrentPropertyList([]);\n if (resetView)\n await resetView().catch((e) =>\n /* eslint-disable no-console */\n console.error(e),\n );\n };\n\n const resize = useCallback((width, height) => setSize({ width, height }), []);\n\n const propertyContextValues = useMemo(\n () => ({\n currentPropertyList,\n setCurrentPropertyList,\n queryBuilder,\n setQuery: updateQuery,\n isUpdating: isUpdating ?? false,\n }),\n [currentPropertyList, isUpdating, queryBuilder, updateQuery],\n );\n\n const actionButtonRenderers = useMemo(() => [({ property }: ActionButtonRendererProps) => <PropertyAction property={property} />], []);\n\n return (\n <div className=\"gmw-select-query-generator-container\">\n {!dataProvider || selectionKeySet.size === 0 ? (\n <Alert type=\"informational\">Please select on an element within the viewer first, then select properties to generate a group query.</Alert>\n ) : (\n <>\n <div className=\"gmw-select-property-grid-container\">\n <ResizableContainerObserver onResize={resize} />\n <PropertyGridWrapperContext.Provider value={propertyContextValues}>\n <VirtualizedPropertyGridWithDataProvider\n dataProvider={dataProvider}\n width={size.width}\n height={size.height}\n actionButtonRenderers={actionButtonRenderers}\n />\n </PropertyGridWrapperContext.Provider>\n </div>\n <div className=\"gmw-select-reset-button\">\n <Button styleType=\"default\" size=\"small\" onClick={onClickResetButton}>\n Reset\n </Button>\n </div>\n </>\n )}\n </div>\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupingMappingCustomUI.js","sourceRoot":"","sources":["../../../../src/components/customUI/GroupingMappingCustomUI.ts"],"names":[],"mappings":";;;AAOA;;GAEG;AACH,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 {GroupMinimal, Mapping } from \"@itwin/insights-client\";\nimport type { ReactElement } from \"react\";\n\n/**\n * @public\n */\nexport enum GroupingMappingCustomUIType {\n Grouping,\n Context,\n}\n\n/**\n * @public\n */\nexport type GroupingMappingCustomUI = GroupingCustomUI | ContextCustomUI;\n\n/** Custom UI Definitions.\n * @public\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 * @public\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?: React.ComponentType<ContextCustomUIProps>;\n /**\n * Callback function for context custom UI menu item click event.\n */\n onClick?: (group: GroupMinimal, mapping: Mapping, iModelId: string) => void;\n}\n\n/**\n * Group custom UI type definition.\n * @public\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 * @public\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 * @public\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 * The initial query for the Group being edited.\n */\n initialEditModeQuery?: string;\n
|
|
1
|
+
{"version":3,"file":"GroupingMappingCustomUI.js","sourceRoot":"","sources":["../../../../src/components/customUI/GroupingMappingCustomUI.ts"],"names":[],"mappings":";;;AAOA;;GAEG;AACH,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 { GroupMinimal, Mapping } from \"@itwin/insights-client\";\nimport type { ReactElement } from \"react\";\n\n/**\n * @public\n */\nexport enum GroupingMappingCustomUIType {\n Grouping,\n Context,\n}\n\n/**\n * @public\n */\nexport type GroupingMappingCustomUI = GroupingCustomUI | ContextCustomUI;\n\n/** Custom UI Definitions.\n * @public\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 * @public\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?: React.ComponentType<ContextCustomUIProps>;\n /**\n * Callback function for context custom UI menu item click event.\n */\n onClick?: (group: GroupMinimal, mapping: Mapping, iModelId: string) => void;\n}\n\n/**\n * Group custom UI type definition.\n * @public\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 * @public\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 * @public\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 * The initial query for the Group being edited.\n */\n initialEditModeQuery?: string;\n}\n"]}
|
|
@@ -5,5 +5,5 @@ import type { GroupingCustomUIProps } from "./GroupingMappingCustomUI";
|
|
|
5
5
|
* A default group query builder for the Grouping Mapping Widget that uses a manual input to generate queries.
|
|
6
6
|
* @public
|
|
7
7
|
*/
|
|
8
|
-
export declare const ManualGroupingCustomUI: ({ updateQuery, isUpdating, resetView, initialEditModeQuery
|
|
8
|
+
export declare const ManualGroupingCustomUI: ({ updateQuery, isUpdating, resetView, initialEditModeQuery }: GroupingCustomUIProps) => JSX.Element;
|
|
9
9
|
//# sourceMappingURL=ManualGroupingCustomUI.d.ts.map
|
|
@@ -5,9 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ManualGroupingCustomUI = void 0;
|
|
7
7
|
/*---------------------------------------------------------------------------------------------
|
|
8
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
9
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
10
|
-
*--------------------------------------------------------------------------------------------*/
|
|
8
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
9
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
10
|
+
*--------------------------------------------------------------------------------------------*/
|
|
11
11
|
const react_1 = __importDefault(require("react"));
|
|
12
12
|
const itwinui_react_1 = require("@itwin/itwinui-react");
|
|
13
13
|
const LoadingSpinner_1 = require("../SharedComponents/LoadingSpinner");
|
|
@@ -16,12 +16,12 @@ require("./ManualGroupingCustomUI.scss");
|
|
|
16
16
|
* A default group query builder for the Grouping Mapping Widget that uses a manual input to generate queries.
|
|
17
17
|
* @public
|
|
18
18
|
*/
|
|
19
|
-
const ManualGroupingCustomUI = ({ updateQuery, isUpdating, resetView, initialEditModeQuery
|
|
19
|
+
const ManualGroupingCustomUI = ({ updateQuery, isUpdating, resetView, initialEditModeQuery }) => {
|
|
20
20
|
const [manualInput, setManualInput] = react_1.default.useState(initialEditModeQuery ?? "");
|
|
21
|
-
return (react_1.default.createElement("div", { className:
|
|
22
|
-
react_1.default.createElement(itwinui_react_1.Alert, { type:
|
|
23
|
-
react_1.default.createElement(itwinui_react_1.LabeledTextarea, { label:
|
|
24
|
-
react_1.default.createElement("div", { className:
|
|
21
|
+
return (react_1.default.createElement("div", { className: "gmw-manual-form" },
|
|
22
|
+
react_1.default.createElement(itwinui_react_1.Alert, { type: "informational" }, "Generate group using an ECSQL query. Please select ECInstanceId and ECClassId columns in the query."),
|
|
23
|
+
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"` }),
|
|
24
|
+
react_1.default.createElement("div", { className: "gmw-manual-actions" },
|
|
25
25
|
isUpdating && react_1.default.createElement(LoadingSpinner_1.LoadingSpinner, null),
|
|
26
26
|
react_1.default.createElement(itwinui_react_1.Button, { disabled: isUpdating, onClick: () => updateQuery(manualInput) }, "Apply"),
|
|
27
27
|
react_1.default.createElement(itwinui_react_1.Button, { disabled: isUpdating, onClick: async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManualGroupingCustomUI.js","sourceRoot":"","sources":["../../../../src/components/customUI/ManualGroupingCustomUI.tsx"],"names":[],"mappings":";;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"ManualGroupingCustomUI.js","sourceRoot":"","sources":["../../../../src/components/customUI/ManualGroupingCustomUI.tsx"],"names":[],"mappings":";;;;;;AAAA;;;gGAGgG;AAChG,kDAA0B;AAC1B,wDAAsE;AACtE,uEAAoE;AACpE,yCAAuC;AAGvC;;;GAGG;AACI,MAAM,sBAAsB,GAAG,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,oBAAoB,EAAyB,EAAE,EAAE;IAC5H,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;IAEjF,OAAO,CACL,uCAAK,SAAS,EAAC,iBAAiB;QAC9B,8BAAC,qBAAK,IAAC,IAAI,EAAC,eAAe,0GAA4G;QACvI,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,+BAAc,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;AAlCW,QAAA,sBAAsB,0BAkCjC","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 { Alert, Button, LabeledTextarea } from \"@itwin/itwinui-react\";\nimport { LoadingSpinner } from \"../SharedComponents/LoadingSpinner\";\nimport \"./ManualGroupingCustomUI.scss\";\nimport type { GroupingCustomUIProps } from \"./GroupingMappingCustomUI\";\n\n/**\n * A default group query builder for the Grouping Mapping Widget that uses a manual input to generate queries.\n * @public\n */\nexport const ManualGroupingCustomUI = ({ updateQuery, isUpdating, resetView, initialEditModeQuery }: GroupingCustomUIProps) => {\n const [manualInput, setManualInput] = React.useState(initialEditModeQuery ?? \"\");\n\n return (\n <div className=\"gmw-manual-form\">\n <Alert type=\"informational\">Generate group using an ECSQL query. Please select ECInstanceId and ECClassId columns in the query.</Alert>\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"]}
|
|
@@ -5,5 +5,5 @@ import "./SearchGroupingCustomUI.scss";
|
|
|
5
5
|
* A default group query builder for the Grouping Mapping Widget that uses a generic query template to search for elements.
|
|
6
6
|
* @public
|
|
7
7
|
*/
|
|
8
|
-
export declare const SearchGroupingCustomUI: ({ updateQuery, isUpdating, resetView
|
|
8
|
+
export declare const SearchGroupingCustomUI: ({ updateQuery, isUpdating, resetView }: GroupingCustomUIProps) => JSX.Element;
|
|
9
9
|
//# sourceMappingURL=SearchGroupingCustomUI.d.ts.map
|
|
@@ -5,9 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.SearchGroupingCustomUI = void 0;
|
|
7
7
|
/*---------------------------------------------------------------------------------------------
|
|
8
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
9
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
10
|
-
*--------------------------------------------------------------------------------------------*/
|
|
8
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
9
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
10
|
+
*--------------------------------------------------------------------------------------------*/
|
|
11
11
|
const react_1 = __importDefault(require("react"));
|
|
12
12
|
const itwinui_react_1 = require("@itwin/itwinui-react");
|
|
13
13
|
const LoadingSpinner_1 = require("../SharedComponents/LoadingSpinner");
|
|
@@ -16,13 +16,12 @@ require("./SearchGroupingCustomUI.scss");
|
|
|
16
16
|
* A default group query builder for the Grouping Mapping Widget that uses a generic query template to search for elements.
|
|
17
17
|
* @public
|
|
18
18
|
*/
|
|
19
|
-
const SearchGroupingCustomUI = ({ updateQuery, isUpdating, resetView
|
|
19
|
+
const SearchGroupingCustomUI = ({ updateQuery, isUpdating, resetView }) => {
|
|
20
20
|
const [searchInput, setSearchInput] = react_1.default.useState("");
|
|
21
21
|
const isWrappedInQuotes = (text) => {
|
|
22
22
|
return text.startsWith(`"`) && text.endsWith(`"`);
|
|
23
23
|
};
|
|
24
|
-
const needsAndOperator = (token, index, searchQuery) => isWrappedInQuotes(token) ||
|
|
25
|
-
(index === 1 && isWrappedInQuotes(searchQuery[0]));
|
|
24
|
+
const needsAndOperator = (token, index, searchQuery) => isWrappedInQuotes(token) || (index === 1 && isWrappedInQuotes(searchQuery[0]));
|
|
26
25
|
const generateSearchQuery = (searchQuery) => {
|
|
27
26
|
if (searchQuery.length === 0) {
|
|
28
27
|
updateQuery("");
|
|
@@ -33,56 +32,28 @@ const SearchGroupingCustomUI = ({ updateQuery, isUpdating, resetView, }) => {
|
|
|
33
32
|
generatedSearchQuery += `LEFT JOIN bis.PhysicalType pt ON be.TypeDefinition.Id = pt.ECInstanceID`;
|
|
34
33
|
generatedSearchQuery += ` WHERE `;
|
|
35
34
|
generatedSearchQuery += `((${searchQuery
|
|
36
|
-
.map((token, index) => `${index === 0
|
|
37
|
-
? ""
|
|
38
|
-
: needsAndOperator(token, index, searchQuery)
|
|
39
|
-
? "AND"
|
|
40
|
-
: "OR"} be.codevalue LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token}%'`)
|
|
35
|
+
.map((token, index) => `${index === 0 ? "" : needsAndOperator(token, index, searchQuery) ? "AND" : "OR"} be.codevalue LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token}%'`)
|
|
41
36
|
.join(" ")}) OR (${searchQuery
|
|
42
|
-
.map((token, index) => `${index === 0
|
|
43
|
-
? ""
|
|
44
|
-
: needsAndOperator(token, index, searchQuery)
|
|
45
|
-
? "AND"
|
|
46
|
-
: "OR"} be.userlabel LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token}%'`)
|
|
37
|
+
.map((token, index) => `${index === 0 ? "" : needsAndOperator(token, index, searchQuery) ? "AND" : "OR"} be.userlabel LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token}%'`)
|
|
47
38
|
.join(" ")})) OR ((${searchQuery
|
|
48
|
-
.map((token, index) => `${index === 0
|
|
49
|
-
? ""
|
|
50
|
-
: needsAndOperator(token, index, searchQuery)
|
|
51
|
-
? "AND"
|
|
52
|
-
: "OR"} cat.codevalue LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token}%'`)
|
|
39
|
+
.map((token, index) => `${index === 0 ? "" : needsAndOperator(token, index, searchQuery) ? "AND" : "OR"} cat.codevalue LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token}%'`)
|
|
53
40
|
.join(" ")}) OR (${searchQuery
|
|
54
|
-
.map((token, index) => `${index === 0
|
|
55
|
-
? ""
|
|
56
|
-
: needsAndOperator(token, index, searchQuery)
|
|
57
|
-
? "AND"
|
|
58
|
-
: "OR"} cat.userlabel LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token}%'`)
|
|
41
|
+
.map((token, index) => `${index === 0 ? "" : needsAndOperator(token, index, searchQuery) ? "AND" : "OR"} cat.userlabel LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token}%'`)
|
|
59
42
|
.join(" ")})) OR (${searchQuery
|
|
60
|
-
.map((token, index) => `${index === 0
|
|
61
|
-
? ""
|
|
62
|
-
: needsAndOperator(token, index, searchQuery)
|
|
63
|
-
? "AND"
|
|
64
|
-
: "OR"} ecc.name LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token}%'`)
|
|
43
|
+
.map((token, index) => `${index === 0 ? "" : needsAndOperator(token, index, searchQuery) ? "AND" : "OR"} ecc.name LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token}%'`)
|
|
65
44
|
.join(" ")})`;
|
|
66
45
|
// Physical Types
|
|
67
46
|
generatedSearchQuery += ` OR ((${searchQuery
|
|
68
|
-
.map((token, index) => `${index === 0
|
|
69
|
-
? ""
|
|
70
|
-
: needsAndOperator(token, index, searchQuery)
|
|
71
|
-
? "AND"
|
|
72
|
-
: "OR"} pt.codevalue LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token}%'`)
|
|
47
|
+
.map((token, index) => `${index === 0 ? "" : needsAndOperator(token, index, searchQuery) ? "AND" : "OR"} pt.codevalue LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token}%'`)
|
|
73
48
|
.join(" ")}) OR (${searchQuery
|
|
74
|
-
.map((token, index) => `${index === 0
|
|
75
|
-
? ""
|
|
76
|
-
: needsAndOperator(token, index, searchQuery)
|
|
77
|
-
? "AND"
|
|
78
|
-
: "OR"} pt.userlabel LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token}%'`)
|
|
49
|
+
.map((token, index) => `${index === 0 ? "" : needsAndOperator(token, index, searchQuery) ? "AND" : "OR"} pt.userlabel LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token}%'`)
|
|
79
50
|
.join(" ")})) `;
|
|
80
51
|
updateQuery(generatedSearchQuery);
|
|
81
52
|
};
|
|
82
|
-
return (react_1.default.createElement("div", { className:
|
|
83
|
-
react_1.default.createElement(itwinui_react_1.Alert, { type:
|
|
84
|
-
react_1.default.createElement(itwinui_react_1.LabeledTextarea, { label:
|
|
85
|
-
react_1.default.createElement("div", { className:
|
|
53
|
+
return (react_1.default.createElement("div", { className: "gmw-search-form" },
|
|
54
|
+
react_1.default.createElement(itwinui_react_1.Alert, { type: "informational" }, "Generate a query by keywords. Keywords wrapped in double quotes will be considered a required criteria."),
|
|
55
|
+
react_1.default.createElement(itwinui_react_1.LabeledTextarea, { label: "Query Keywords", required: true, value: searchInput, onChange: (event) => setSearchInput(event.target.value), disabled: isUpdating, placeholder: `E.g. "red" chair` }),
|
|
56
|
+
react_1.default.createElement("div", { className: "gmw-search-actions" },
|
|
86
57
|
isUpdating && react_1.default.createElement(LoadingSpinner_1.LoadingSpinner, null),
|
|
87
58
|
react_1.default.createElement(itwinui_react_1.Button, { disabled: isUpdating, onClick: () => generateSearchQuery(searchInput
|
|
88
59
|
? searchInput
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchGroupingCustomUI.js","sourceRoot":"","sources":["../../../../src/components/customUI/SearchGroupingCustomUI.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 React from \"react\";\nimport { Alert, Button, LabeledTextarea } from \"@itwin/itwinui-react\";\nimport type { GroupingCustomUIProps } from \"./GroupingMappingCustomUI\";\nimport { LoadingSpinner } from \"../SharedComponents/LoadingSpinner\";\nimport \"./SearchGroupingCustomUI.scss\";\n\n/**\n * A default group query builder for the Grouping Mapping Widget that uses a generic query template to search for elements.\n * @public\n */\nexport const SearchGroupingCustomUI = ({\n updateQuery,\n isUpdating,\n resetView,\n}: GroupingCustomUIProps) => {\n const [searchInput, setSearchInput] = React.useState(\"\");\n const isWrappedInQuotes = (text: string) => {\n return text.startsWith(`\"`) && text.endsWith(`\"`);\n };\n\n const needsAndOperator = (\n token: string,\n index: number,\n searchQuery: string[],\n ) =>\n isWrappedInQuotes(token) ||\n (index === 1 && isWrappedInQuotes(searchQuery[0]));\n\n const generateSearchQuery = (searchQuery: string[]) => {\n if (searchQuery.length === 0) {\n updateQuery(\"\");\n return;\n }\n\n let generatedSearchQuery = `SELECT be.ECInstanceId, be.ECClassId FROM bis.geometricelement3d be `;\n generatedSearchQuery += `LEFT JOIN bis.SpatialCategory cat ON be.Category.Id = cat.ECInstanceID LEFT JOIN ecdbmeta.ECClassDef ecc ON be.ECClassId = ecc.ECInstanceId `;\n generatedSearchQuery += `LEFT JOIN bis.PhysicalType pt ON be.TypeDefinition.Id = pt.ECInstanceID`;\n generatedSearchQuery += ` WHERE `;\n generatedSearchQuery += `((${searchQuery\n .map(\n (token, index) =>\n `${index === 0\n ? \"\"\n : needsAndOperator(token, index, searchQuery)\n ? \"AND\"\n : \"OR\"\n } be.codevalue LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token\n }%'`,\n )\n .join(\" \")}) OR (${searchQuery\n .map(\n (token, index) =>\n `${index === 0\n ? \"\"\n : needsAndOperator(token, index, searchQuery)\n ? \"AND\"\n : \"OR\"\n } be.userlabel LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token\n }%'`,\n )\n .join(\" \")})) OR ((${searchQuery\n .map(\n (token, index) =>\n `${index === 0\n ? \"\"\n : needsAndOperator(token, index, searchQuery)\n ? \"AND\"\n : \"OR\"\n } cat.codevalue LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token\n }%'`,\n )\n .join(\" \")}) OR (${searchQuery\n .map(\n (token, index) =>\n `${index === 0\n ? \"\"\n : needsAndOperator(token, index, searchQuery)\n ? \"AND\"\n : \"OR\"\n } cat.userlabel LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token\n }%'`,\n )\n .join(\" \")})) OR (${searchQuery\n .map(\n (token, index) =>\n `${index === 0\n ? \"\"\n : needsAndOperator(token, index, searchQuery)\n ? \"AND\"\n : \"OR\"\n } ecc.name LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token\n }%'`,\n )\n .join(\" \")})`;\n // Physical Types\n generatedSearchQuery += ` OR ((${searchQuery\n .map(\n (token, index) =>\n `${index === 0\n ? \"\"\n : needsAndOperator(token, index, searchQuery)\n ? \"AND\"\n : \"OR\"\n } pt.codevalue LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token\n }%'`,\n )\n .join(\" \")}) OR (${searchQuery\n .map(\n (token, index) =>\n `${index === 0\n ? \"\"\n : needsAndOperator(token, index, searchQuery)\n ? \"AND\"\n : \"OR\"\n } pt.userlabel LIKE '%${isWrappedInQuotes(token) ? token.slice(1, -1) : token\n }%'`,\n )\n .join(\" \")})) `;\n\n updateQuery(generatedSearchQuery);\n };\n\n return (\n <div className='gmw-search-form'>\n <Alert type='informational'>\n Generate a query by keywords. Keywords wrapped in double quotes will be\n considered a required criteria.\n </Alert>\n <LabeledTextarea\n label='Query Keywords'\n required\n value={searchInput}\n onChange={(event) => setSearchInput(event.target.value)}\n disabled={isUpdating}\n placeholder={`E.g. \"red\" chair`}\n />\n <div className='gmw-search-actions'>\n {isUpdating && <LoadingSpinner />}\n <Button\n disabled={isUpdating}\n onClick={() =>\n generateSearchQuery(\n searchInput\n ? searchInput\n .replace(/(\\r\\n|\\n|\\r)/gm, \"\")\n .trim()\n .split(\" \")\n : [],\n )\n }\n >\n Apply\n </Button>\n <Button\n disabled={isUpdating}\n onClick={async () => {\n updateQuery(\"\");\n setSearchInput(\"\");\n if (resetView) {\n await resetView();\n }\n }}\n >\n Clear\n </Button>\n </div>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SearchGroupingCustomUI.js","sourceRoot":"","sources":["../../../../src/components/customUI/SearchGroupingCustomUI.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 React from \"react\";\nimport { Alert, Button, LabeledTextarea } from \"@itwin/itwinui-react\";\nimport type { GroupingCustomUIProps } from \"./GroupingMappingCustomUI\";\nimport { LoadingSpinner } from \"../SharedComponents/LoadingSpinner\";\nimport \"./SearchGroupingCustomUI.scss\";\n\n/**\n * A default group query builder for the Grouping Mapping Widget that uses a generic query template to search for elements.\n * @public\n */\nexport const SearchGroupingCustomUI = ({ updateQuery, isUpdating, resetView }: GroupingCustomUIProps) => {\n const [searchInput, setSearchInput] = React.useState(\"\");\n const isWrappedInQuotes = (text: string) => {\n return text.startsWith(`\"`) && text.endsWith(`\"`);\n };\n\n const needsAndOperator = (token: string, index: number, searchQuery: string[]) =>\n isWrappedInQuotes(token) || (index === 1 && isWrappedInQuotes(searchQuery[0]));\n\n const generateSearchQuery = (searchQuery: string[]) => {\n if (searchQuery.length === 0) {\n updateQuery(\"\");\n return;\n }\n\n let generatedSearchQuery = `SELECT be.ECInstanceId, be.ECClassId FROM bis.geometricelement3d be `;\n generatedSearchQuery += `LEFT JOIN bis.SpatialCategory cat ON be.Category.Id = cat.ECInstanceID LEFT JOIN ecdbmeta.ECClassDef ecc ON be.ECClassId = ecc.ECInstanceId `;\n generatedSearchQuery += `LEFT JOIN bis.PhysicalType pt ON be.TypeDefinition.Id = pt.ECInstanceID`;\n generatedSearchQuery += ` WHERE `;\n generatedSearchQuery += `((${searchQuery\n .map(\n (token, index) =>\n `${index === 0 ? \"\" : needsAndOperator(token, index, searchQuery) ? \"AND\" : \"OR\"} be.codevalue LIKE '%${\n isWrappedInQuotes(token) ? token.slice(1, -1) : token\n }%'`,\n )\n .join(\" \")}) OR (${searchQuery\n .map(\n (token, index) =>\n `${index === 0 ? \"\" : needsAndOperator(token, index, searchQuery) ? \"AND\" : \"OR\"} be.userlabel LIKE '%${\n isWrappedInQuotes(token) ? token.slice(1, -1) : token\n }%'`,\n )\n .join(\" \")})) OR ((${searchQuery\n .map(\n (token, index) =>\n `${index === 0 ? \"\" : needsAndOperator(token, index, searchQuery) ? \"AND\" : \"OR\"} cat.codevalue LIKE '%${\n isWrappedInQuotes(token) ? token.slice(1, -1) : token\n }%'`,\n )\n .join(\" \")}) OR (${searchQuery\n .map(\n (token, index) =>\n `${index === 0 ? \"\" : needsAndOperator(token, index, searchQuery) ? \"AND\" : \"OR\"} cat.userlabel LIKE '%${\n isWrappedInQuotes(token) ? token.slice(1, -1) : token\n }%'`,\n )\n .join(\" \")})) OR (${searchQuery\n .map(\n (token, index) =>\n `${index === 0 ? \"\" : needsAndOperator(token, index, searchQuery) ? \"AND\" : \"OR\"} ecc.name LIKE '%${\n isWrappedInQuotes(token) ? token.slice(1, -1) : token\n }%'`,\n )\n .join(\" \")})`;\n // Physical Types\n generatedSearchQuery += ` OR ((${searchQuery\n .map(\n (token, index) =>\n `${index === 0 ? \"\" : needsAndOperator(token, index, searchQuery) ? \"AND\" : \"OR\"} pt.codevalue LIKE '%${\n isWrappedInQuotes(token) ? token.slice(1, -1) : token\n }%'`,\n )\n .join(\" \")}) OR (${searchQuery\n .map(\n (token, index) =>\n `${index === 0 ? \"\" : needsAndOperator(token, index, searchQuery) ? \"AND\" : \"OR\"} pt.userlabel LIKE '%${\n isWrappedInQuotes(token) ? token.slice(1, -1) : token\n }%'`,\n )\n .join(\" \")})) `;\n\n updateQuery(generatedSearchQuery);\n };\n\n return (\n <div className=\"gmw-search-form\">\n <Alert type=\"informational\">Generate a query by keywords. Keywords wrapped in double quotes will be considered a required criteria.</Alert>\n <LabeledTextarea\n label=\"Query Keywords\"\n required\n value={searchInput}\n onChange={(event) => setSearchInput(event.target.value)}\n disabled={isUpdating}\n placeholder={`E.g. \"red\" chair`}\n />\n <div className=\"gmw-search-actions\">\n {isUpdating && <LoadingSpinner />}\n <Button\n disabled={isUpdating}\n onClick={() =>\n generateSearchQuery(\n searchInput\n ? searchInput\n .replace(/(\\r\\n|\\n|\\r)/gm, \"\")\n .trim()\n .split(\" \")\n : [],\n )\n }\n >\n Apply\n </Button>\n <Button\n disabled={isUpdating}\n onClick={async () => {\n updateQuery(\"\");\n setSearchInput(\"\");\n if (resetView) {\n await resetView();\n }\n }}\n >\n Clear\n </Button>\n </div>\n </div>\n );\n};\n"]}
|
|
@@ -47,8 +47,7 @@ class BboxDimensionsDecorator {
|
|
|
47
47
|
async setContext(instanceId) {
|
|
48
48
|
// get locating info on the requested instance
|
|
49
49
|
const query = `SELECT bBoxHigh,bBoxLow,yaw,pitch,roll,origin FROM BisCore.SpatialElement WHERE ECInstanceId = ?`;
|
|
50
|
-
if (!core_frontend_1.IModelApp.viewManager.selectedView ||
|
|
51
|
-
!core_frontend_1.IModelApp.viewManager.selectedView.iModel) {
|
|
50
|
+
if (!core_frontend_1.IModelApp.viewManager.selectedView || !core_frontend_1.IModelApp.viewManager.selectedView.iModel) {
|
|
52
51
|
return false;
|
|
53
52
|
}
|
|
54
53
|
const params = new core_common_1.QueryBinder().bindId(1, instanceId);
|
|
@@ -243,10 +242,7 @@ class BboxDimensionsDecorator {
|
|
|
243
242
|
*/
|
|
244
243
|
buildLine(bbox, dim, tf) {
|
|
245
244
|
// fallback scenario
|
|
246
|
-
const fallback = [
|
|
247
|
-
core_geometry_1.LineSegment3d.create(bbox.low, bbox.high).cloneTransformed(tf),
|
|
248
|
-
[bbox.low, bbox.high],
|
|
249
|
-
];
|
|
245
|
+
const fallback = [core_geometry_1.LineSegment3d.create(bbox.low, bbox.high).cloneTransformed(tf), [bbox.low, bbox.high]];
|
|
250
246
|
if (!this.instance) {
|
|
251
247
|
// TODO: probably should have some warning here...
|
|
252
248
|
return fallback;
|
|
@@ -255,10 +251,7 @@ class BboxDimensionsDecorator {
|
|
|
255
251
|
const corners = this.instance.placement.getWorldCorners().points;
|
|
256
252
|
const targets = this.instance.pointMappings.get(dim);
|
|
257
253
|
if (targets) {
|
|
258
|
-
return [
|
|
259
|
-
core_geometry_1.LineSegment3d.create(corners[targets[0]], corners[targets[1]]),
|
|
260
|
-
[corners[targets[0]], corners[targets[1]]],
|
|
261
|
-
];
|
|
254
|
+
return [core_geometry_1.LineSegment3d.create(corners[targets[0]], corners[targets[1]]), [corners[targets[0]], corners[targets[1]]]];
|
|
262
255
|
}
|
|
263
256
|
else {
|
|
264
257
|
// TODO: probably should have some warning here...
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BboxDimensionsDecorator.js","sourceRoot":"","sources":["../../../src/decorators/BboxDimensionsDecorator.ts"],"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 CurvePrimitive,\n GeometryQuery} from \"@itwin/core-geometry\";\nimport {\n Angle,\n Arc3d,\n Box,\n CurveChainWithDistanceIndex,\n IndexedPolyface,\n IndexedPolyfaceVisitor,\n LineSegment3d,\n LineString3d,\n Loop,\n Path,\n Point3d,\n PolyfaceBuilder,\n Range3d,\n StrokeOptions,\n Transform,\n YawPitchRollAngles,\n} from \"@itwin/core-geometry\";\nimport {\n ColorByName,\n ColorDef,\n LinePixels,\n Placement3d,\n QueryBinder,\n QueryRowFormat,\n} from \"@itwin/core-common\";\nimport type {\n DecorateContext,\n Decorator,\n GraphicBuilder,\n RenderGraphic} from \"@itwin/core-frontend\";\nimport {\n GraphicBranch,\n GraphicType,\n IModelApp,\n Marker,\n} from \"@itwin/core-frontend\";\n\nexport enum BboxDimension {\n BoundingBoxShortestEdgeLength = \"Shortest Edge Length\",\n BoundingBoxIntermediateEdgeLength = \"Intermediate Edge Length\",\n BoundingBoxLongestEdgeLength = \"Longest Edge Length\",\n BoundingBoxShortestFaceDiagonalLength = \"Shortest Face Diagonal Length\",\n BoundingBoxIntermediateFaceDiagonalLength = \"Intermediate Face Diagonal Length\",\n BoundingBoxLongestFaceDiagonalLength = \"Longest Face Diagonal Length\",\n BoundingBoxDiagonalLength = \"Diagonal Length\",\n // SmallestFaceArea = \"Smallest Face Area\",\n // IntermediateFaceArea = \"Intermediate Face Area\",\n // LargestFaceArea = \"Largest Face Area\",\n // Volume = \"Volume\"\n}\n\ninterface CustomGeometryQuery {\n geometry: GeometryQuery;\n color: ColorDef;\n fill: boolean;\n fillColor: ColorDef;\n lineThickness: number;\n edges: boolean;\n linePixels: LinePixels;\n}\n\ninterface CustomPoint {\n point: Point3d;\n color: ColorDef;\n fill: boolean;\n lineThickness: number;\n}\n\ninterface SpatialElementQueryResult {\n bBoxHigh: Point3d;\n bBoxLow: Point3d;\n yaw: number;\n pitch: number;\n roll: number;\n origin: Point3d;\n}\n\ninterface InferredSpatialData {\n pointMappings: Map<BboxDimension, [number, number]>;\n placement: Placement3d;\n}\n\nexport class BboxDimensionsDecorator implements Decorator {\n private instance: InferredSpatialData | undefined;\n private graphics: RenderGraphic | undefined;\n private points: CustomPoint[] = [];\n private shapes: CustomGeometryQuery[] = [];\n private markers: Marker[] = [];\n\n private fill = false;\n private shapeColor: ColorDef = ColorDef.fromTbgr(\n ColorDef.withTransparency(ColorDef.create(ColorByName.cyan).tbgr, 200)\n );\n private pointColor: ColorDef = ColorDef.white;\n private lineColor: ColorDef = ColorDef.red;\n private fillColor: ColorDef = ColorDef.white;\n private shapeThickness = 1;\n private pointThickness = 8;\n private lineThickness = 4;\n private edges = true;\n private linePixels = LinePixels.Solid;\n\n /** Clear the current context. */\n public clearContext(): void {\n this.points = [];\n this.shapes = [];\n this.markers = [];\n this.graphics = undefined;\n IModelApp.viewManager.invalidateDecorationsAllViews();\n }\n\n /** Set the active instance used by the decorator. */\n public async setContext(instanceId: string): Promise<boolean> {\n // get locating info on the requested instance\n const query = `SELECT bBoxHigh,bBoxLow,yaw,pitch,roll,origin FROM BisCore.SpatialElement WHERE ECInstanceId = ?`;\n\n if (\n !IModelApp.viewManager.selectedView ||\n !IModelApp.viewManager.selectedView.iModel\n ) {\n return false;\n }\n\n const params = new QueryBinder().bindId(1, instanceId);\n const queryIterable = IModelApp.viewManager.selectedView?.iModel.query(\n query,\n params,\n { rowFormat: QueryRowFormat.UseJsPropertyNames }\n );\n\n const results: SpatialElementQueryResult[] = [];\n for await (const row of queryIterable) {\n results.push(row);\n }\n // if no results or more than one abort\n if (results.length !== 1) {\n // TODO: maybe report a warning or something\n return false;\n }\n\n // validate result\n const elem = results[0];\n if (!this.validateQueryResult(elem)) {\n return false;\n } else {\n this.instance = this.inferSpatialData(elem);\n return true;\n }\n }\n\n /** Get the calculated spatial lengths for all possible dimensions. */\n public getInferredSpatialData(): Map<BboxDimension, number> | undefined {\n if (!this.instance) {\n return;\n }\n\n // calculate each dimension\n const data = new Map<BboxDimension, number>();\n const corners = this.instance.placement.getWorldCorners().points;\n const mappings = this.instance.pointMappings;\n for (const dimKey in BboxDimension) {\n if (!Object.prototype.hasOwnProperty.call(BboxDimension, dimKey))\n continue;\n const dim = BboxDimension[dimKey as keyof typeof BboxDimension];\n if (mappings.has(dim)) {\n const points = mappings.get(dim);\n if (points) {\n data.set(dim, corners[points[0]].distance(corners[points[1]]));\n }\n }\n }\n\n return data;\n }\n\n /** Command to draw the BBox. */\n public drawContext(dim: BboxDimension): boolean {\n // check if valid instance set\n if (!this.instance) {\n return false;\n }\n this.clearContext();\n\n // add geometry to decorator\n const polyface = this.buildPolyface(\n this.instance.placement.bbox,\n this.instance.placement.transform\n );\n this.addGeometry(polyface);\n const [line, points] = this.buildLine(\n this.instance.placement.bbox,\n dim,\n this.instance.placement.transform\n );\n this.addLine(line);\n this.addPoints(points);\n\n return true;\n }\n\n /** Generates new graphics if needed, and adds them to the scene. */\n public decorate(context: DecorateContext): void {\n // const overrides = new ViewFlagOverrides();\n // overrides.setShowVisibleEdges(true);\n // overrides.setApplyLighting(true);\n const branch = new GraphicBranch(false);\n\n // branch.viewFlagOverrides.copyFrom(overrides);\n\n // context.viewFlags.visibleEdges = true;\n if (!this.graphics) {\n this.graphics = this.createGraphics(context);\n }\n\n if (this.graphics) {\n branch.add(this.graphics);\n }\n\n const graphic = context.createBranch(branch, Transform.identity);\n context.addDecoration(GraphicType.WorldOverlay, graphic);\n\n this.markers.forEach((marker) => {\n marker.addDecoration(context);\n });\n }\n\n // #region Helper Functions\n\n /** Calculate all BBox dimensions and properties and save. */\n private inferSpatialData(\n elem: SpatialElementQueryResult\n ): InferredSpatialData {\n // build placement from result\n const origin = new Point3d(elem.origin.x, elem.origin.y, elem.origin.z);\n const bBoxLow = new Point3d(elem.bBoxLow.x, elem.bBoxLow.y, elem.bBoxLow.z);\n const bBoxHigh = new Point3d(\n elem.bBoxHigh.x,\n elem.bBoxHigh.y,\n elem.bBoxHigh.z\n );\n const range = Range3d.create(bBoxLow, bBoxHigh);\n const ypra = new YawPitchRollAngles(\n Angle.createDegrees(elem.yaw),\n Angle.createDegrees(elem.pitch),\n Angle.createDegrees(elem.roll)\n );\n const placement = new Placement3d(origin, ypra, range);\n\n // determine dimension size ordering\n const pointMappings = new Map<BboxDimension, [number, number]>();\n pointMappings.set(BboxDimension.BoundingBoxDiagonalLength, [0, 7]);\n const corners = placement.getWorldCorners();\n const d01 = corners.distance(0, 1);\n const d02 = corners.distance(0, 2);\n const d04 = corners.distance(0, 4);\n if (d01 >= d02 && d02 >= d04) {\n pointMappings.set(BboxDimension.BoundingBoxLongestEdgeLength, [0, 1]);\n pointMappings.set(\n BboxDimension.BoundingBoxIntermediateEdgeLength,\n [0, 2]\n );\n pointMappings.set(BboxDimension.BoundingBoxShortestEdgeLength, [0, 4]);\n pointMappings.set(\n BboxDimension.BoundingBoxLongestFaceDiagonalLength,\n [0, 3]\n );\n pointMappings.set(\n BboxDimension.BoundingBoxIntermediateFaceDiagonalLength,\n [0, 5]\n );\n pointMappings.set(\n BboxDimension.BoundingBoxShortestFaceDiagonalLength,\n [0, 6]\n );\n } else if (d01 >= d04 && d04 >= d02) {\n pointMappings.set(BboxDimension.BoundingBoxLongestEdgeLength, [0, 1]);\n pointMappings.set(\n BboxDimension.BoundingBoxIntermediateEdgeLength,\n [0, 4]\n );\n pointMappings.set(BboxDimension.BoundingBoxShortestEdgeLength, [0, 2]);\n pointMappings.set(\n BboxDimension.BoundingBoxLongestFaceDiagonalLength,\n [0, 5]\n );\n pointMappings.set(\n BboxDimension.BoundingBoxIntermediateFaceDiagonalLength,\n [0, 3]\n );\n pointMappings.set(\n BboxDimension.BoundingBoxShortestFaceDiagonalLength,\n [0, 6]\n );\n } else if (d04 >= d02 && d02 >= d01) {\n pointMappings.set(BboxDimension.BoundingBoxLongestEdgeLength, [0, 4]);\n pointMappings.set(\n BboxDimension.BoundingBoxIntermediateEdgeLength,\n [0, 2]\n );\n pointMappings.set(BboxDimension.BoundingBoxShortestEdgeLength, [0, 1]);\n pointMappings.set(\n BboxDimension.BoundingBoxLongestFaceDiagonalLength,\n [0, 6]\n );\n pointMappings.set(\n BboxDimension.BoundingBoxIntermediateFaceDiagonalLength,\n [0, 5]\n );\n pointMappings.set(\n BboxDimension.BoundingBoxShortestFaceDiagonalLength,\n [0, 3]\n );\n } else if (d04 >= d01 && d01 >= d02) {\n pointMappings.set(BboxDimension.BoundingBoxLongestEdgeLength, [0, 4]);\n pointMappings.set(\n BboxDimension.BoundingBoxIntermediateEdgeLength,\n [0, 1]\n );\n pointMappings.set(BboxDimension.BoundingBoxShortestEdgeLength, [0, 2]);\n pointMappings.set(\n BboxDimension.BoundingBoxLongestFaceDiagonalLength,\n [0, 5]\n );\n pointMappings.set(\n BboxDimension.BoundingBoxIntermediateFaceDiagonalLength,\n [0, 6]\n );\n pointMappings.set(\n BboxDimension.BoundingBoxShortestFaceDiagonalLength,\n [0, 3]\n );\n } else if (d02 >= d01 && d01 >= d04) {\n pointMappings.set(BboxDimension.BoundingBoxLongestEdgeLength, [0, 2]);\n pointMappings.set(\n BboxDimension.BoundingBoxIntermediateEdgeLength,\n [0, 1]\n );\n pointMappings.set(BboxDimension.BoundingBoxShortestEdgeLength, [0, 4]);\n pointMappings.set(\n BboxDimension.BoundingBoxLongestFaceDiagonalLength,\n [0, 3]\n );\n pointMappings.set(\n BboxDimension.BoundingBoxIntermediateFaceDiagonalLength,\n [0, 6]\n );\n pointMappings.set(\n BboxDimension.BoundingBoxShortestFaceDiagonalLength,\n [0, 5]\n );\n } else if (d02 >= d04 && d04 >= d01) {\n pointMappings.set(BboxDimension.BoundingBoxLongestEdgeLength, [0, 2]);\n pointMappings.set(\n BboxDimension.BoundingBoxIntermediateEdgeLength,\n [0, 4]\n );\n pointMappings.set(BboxDimension.BoundingBoxShortestEdgeLength, [0, 1]);\n pointMappings.set(\n BboxDimension.BoundingBoxLongestFaceDiagonalLength,\n [0, 6]\n );\n pointMappings.set(\n BboxDimension.BoundingBoxIntermediateFaceDiagonalLength,\n [0, 3]\n );\n pointMappings.set(\n BboxDimension.BoundingBoxShortestFaceDiagonalLength,\n [0, 5]\n );\n } else {\n // Unreachable case\n }\n\n return { placement, pointMappings };\n }\n\n /** Validate if instance has all necessary properties. */\n private validateQueryResult(result: SpatialElementQueryResult): boolean {\n if (\n result?.bBoxHigh?.x !== undefined &&\n result?.bBoxHigh.y !== undefined &&\n result?.bBoxHigh.z !== undefined &&\n result?.bBoxLow?.x !== undefined &&\n result?.bBoxLow.y !== undefined &&\n result?.bBoxLow.z !== undefined &&\n result?.origin?.x !== undefined &&\n result?.origin.y !== undefined &&\n result?.origin.z !== undefined &&\n result?.yaw !== undefined &&\n result?.pitch !== undefined &&\n result?.roll !== undefined\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Takes a Bounding Box and builds a rectangular polyface.\n * @param bbox The desired Bounding Box.\n * @param tf Transformation on the Bounding Box if applicable.\n * @returns The bounding box geometry.\n */\n private buildPolyface(bbox: Range3d, tf: Transform): IndexedPolyface {\n const options = StrokeOptions.createForCurves();\n options.needParams = false;\n options.needNormals = true;\n const builder = PolyfaceBuilder.create(options);\n const box = Box.createRange(bbox, true)?.cloneTransformed(tf);\n if (box) {\n builder.addBox(box);\n }\n return builder.claimPolyface(false);\n }\n\n /**\n * Build a Lone geometry based on specified dimension.\n * @param bbox The desired Bounding Box.\n * @param dim The desired dimension to draw.\n * @param tf Transformation on the Bounding Box if applicable.\n * @returns The line geometry.\n */\n private buildLine(\n bbox: Range3d,\n dim: BboxDimension,\n tf: Transform\n ): [CurvePrimitive, Point3d[]] {\n // fallback scenario\n const fallback: [CurvePrimitive, Point3d[]] = [\n LineSegment3d.create(bbox.low, bbox.high).cloneTransformed(tf),\n [bbox.low, bbox.high],\n ];\n if (!this.instance) {\n // TODO: probably should have some warning here...\n return fallback;\n }\n\n // otherwise return appropriate dimensions\n const corners = this.instance.placement.getWorldCorners().points;\n const targets = this.instance.pointMappings.get(dim);\n if (targets) {\n return [\n LineSegment3d.create(corners[targets[0]], corners[targets[1]]),\n [corners[targets[0]], corners[targets[1]]],\n ];\n } else {\n // TODO: probably should have some warning here...\n return fallback;\n }\n }\n\n /**\n * Configure and add points to the dectorator.\n * @param point Definition of the points.\n */\n public addPoints(points: Point3d[]) {\n for (const point of points) {\n const styledPoint: CustomPoint = {\n point,\n color: this.pointColor,\n fill: this.fill,\n lineThickness: this.pointThickness,\n };\n this.points.push(styledPoint);\n }\n }\n\n /**\n * Configure and add a line to the decorator.\n * Length of the line is displayed as a label in the center.\n * @param line Definition of the line.\n */\n private addLine(line: LineSegment3d | CurvePrimitive) {\n const styledGeometry: CustomGeometryQuery = {\n geometry: line,\n color: this.lineColor,\n fill: true,\n fillColor: this.fillColor,\n lineThickness: this.lineThickness,\n edges: this.edges,\n linePixels: this.linePixels,\n };\n this.shapes.push(styledGeometry);\n\n const marker = new Marker(line.fractionToPoint(0.5), { x: 25, y: 25 });\n const label: HTMLDivElement = document.createElement(\"div\");\n label.textContent = `${line.quickLength().toFixed(3)}m`;\n label.style.backgroundColor = \"rgba(17,17,17,0.75)\";\n label.style.borderRadius = \"4px\";\n label.style.color = \"white\";\n label.style.padding = \"4px 8px\";\n marker.htmlElement = label;\n marker.visible = true;\n this.markers.push(marker);\n }\n\n /**\n * Configure and add a mesh to the decorator.\n * @param geometry Definition of the mesh.\n */\n private addGeometry(geometry: GeometryQuery) {\n const styledGeometry: CustomGeometryQuery = {\n geometry,\n color: this.shapeColor,\n fill: this.fill,\n fillColor: this.fillColor,\n lineThickness: this.shapeThickness,\n edges: this.edges,\n linePixels: this.linePixels,\n };\n this.shapes.push(styledGeometry);\n }\n\n /**\n * Iterate through the geometry and point lists, extracting each geometry and point, along with their styles\n * Adding them to the graphic builder which then creates new graphics\n * @param context\n * @returns\n */\n private createGraphics(context: DecorateContext): RenderGraphic | undefined {\n // Specifying an Id for the graphics tells the display system that all of the geometry belongs to the same entity, so that it knows to make sure the edges draw on top of the surfaces.\n const builder = context.createGraphicBuilder(\n GraphicType.Scene,\n undefined,\n context.viewport.iModel.transientIds.next\n );\n // Read-only now\n // builder.wantNormals = true;\n this.points.forEach((styledPoint) => {\n builder.setSymbology(\n styledPoint.color,\n styledPoint.fill ? styledPoint.color : ColorDef.white,\n styledPoint.lineThickness\n );\n const point = styledPoint.point;\n builder.addPointString([point]);\n });\n this.shapes.forEach((styledGeometry) => {\n const geometry = styledGeometry.geometry;\n builder.setSymbology(\n styledGeometry.color,\n styledGeometry.fill ? styledGeometry.fillColor : styledGeometry.color,\n styledGeometry.lineThickness,\n styledGeometry.linePixels\n );\n this.createGraphicsForGeometry(geometry, styledGeometry.edges, builder);\n });\n const graphic = builder.finish();\n return graphic;\n }\n private createGraphicsForGeometry(\n geometry: GeometryQuery,\n wantEdges: boolean,\n builder: GraphicBuilder\n ) {\n if (geometry instanceof LineString3d) {\n builder.addLineString(geometry.points);\n } else if (geometry instanceof Loop) {\n builder.addLoop(geometry);\n if (wantEdges) {\n // Since decorators don't natively support visual edges,\n // We draw them manually as lines along each loop edge/arc\n builder.setSymbology(ColorDef.black, ColorDef.black, 2);\n const curves = geometry.children;\n curves.forEach((value) => {\n if (value instanceof LineString3d) {\n let edges = value.points;\n const endPoint = value.pointAt(0);\n if (endPoint) {\n edges = edges.concat([endPoint]);\n }\n builder.addLineString(edges);\n } else if (value instanceof Arc3d) {\n builder.addArc(value, false, false);\n }\n });\n }\n } else if (geometry instanceof Path) {\n builder.addPath(geometry);\n } else if (geometry instanceof IndexedPolyface) {\n builder.addPolyface(geometry, false);\n if (wantEdges) {\n // Since decorators don't natively support visual edges,\n // We draw them manually as lines along each facet edge\n builder.setSymbology(ColorDef.black, ColorDef.black, 2);\n const visitor = IndexedPolyfaceVisitor.create(geometry, 1);\n let flag = true;\n while (flag) {\n const numIndices = visitor.pointCount;\n for (let i = 0; i < numIndices - 1; i++) {\n const point1 = visitor.getPoint(i);\n const point2 = visitor.getPoint(i + 1);\n if (point1 && point2) {\n builder.addLineString([point1, point2]);\n }\n }\n flag = visitor.moveToNextFacet();\n }\n }\n } else if (geometry instanceof LineSegment3d) {\n const pointA = geometry.point0Ref;\n const pointB = geometry.point1Ref;\n const lineString = [pointA, pointB];\n builder.addLineString(lineString);\n } else if (geometry instanceof Arc3d) {\n builder.addArc(geometry, false, false);\n } else if (geometry instanceof CurveChainWithDistanceIndex) {\n this.createGraphicsForGeometry(geometry.path, wantEdges, builder);\n }\n }\n\n // #endregion\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BboxDimensionsDecorator.js","sourceRoot":"","sources":["../../../src/decorators/BboxDimensionsDecorator.ts"],"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 { CurvePrimitive, GeometryQuery } from \"@itwin/core-geometry\";\nimport {\n Angle,\n Arc3d,\n Box,\n CurveChainWithDistanceIndex,\n IndexedPolyface,\n IndexedPolyfaceVisitor,\n LineSegment3d,\n LineString3d,\n Loop,\n Path,\n Point3d,\n PolyfaceBuilder,\n Range3d,\n StrokeOptions,\n Transform,\n YawPitchRollAngles,\n} from \"@itwin/core-geometry\";\nimport { ColorByName, ColorDef, LinePixels, Placement3d, QueryBinder, QueryRowFormat } from \"@itwin/core-common\";\nimport type { DecorateContext, Decorator, GraphicBuilder, RenderGraphic } from \"@itwin/core-frontend\";\nimport { GraphicBranch, GraphicType, IModelApp, Marker } from \"@itwin/core-frontend\";\n\nexport enum BboxDimension {\n BoundingBoxShortestEdgeLength = \"Shortest Edge Length\",\n BoundingBoxIntermediateEdgeLength = \"Intermediate Edge Length\",\n BoundingBoxLongestEdgeLength = \"Longest Edge Length\",\n BoundingBoxShortestFaceDiagonalLength = \"Shortest Face Diagonal Length\",\n BoundingBoxIntermediateFaceDiagonalLength = \"Intermediate Face Diagonal Length\",\n BoundingBoxLongestFaceDiagonalLength = \"Longest Face Diagonal Length\",\n BoundingBoxDiagonalLength = \"Diagonal Length\",\n // SmallestFaceArea = \"Smallest Face Area\",\n // IntermediateFaceArea = \"Intermediate Face Area\",\n // LargestFaceArea = \"Largest Face Area\",\n // Volume = \"Volume\"\n}\n\ninterface CustomGeometryQuery {\n geometry: GeometryQuery;\n color: ColorDef;\n fill: boolean;\n fillColor: ColorDef;\n lineThickness: number;\n edges: boolean;\n linePixels: LinePixels;\n}\n\ninterface CustomPoint {\n point: Point3d;\n color: ColorDef;\n fill: boolean;\n lineThickness: number;\n}\n\ninterface SpatialElementQueryResult {\n bBoxHigh: Point3d;\n bBoxLow: Point3d;\n yaw: number;\n pitch: number;\n roll: number;\n origin: Point3d;\n}\n\ninterface InferredSpatialData {\n pointMappings: Map<BboxDimension, [number, number]>;\n placement: Placement3d;\n}\n\nexport class BboxDimensionsDecorator implements Decorator {\n private instance: InferredSpatialData | undefined;\n private graphics: RenderGraphic | undefined;\n private points: CustomPoint[] = [];\n private shapes: CustomGeometryQuery[] = [];\n private markers: Marker[] = [];\n\n private fill = false;\n private shapeColor: ColorDef = ColorDef.fromTbgr(ColorDef.withTransparency(ColorDef.create(ColorByName.cyan).tbgr, 200));\n private pointColor: ColorDef = ColorDef.white;\n private lineColor: ColorDef = ColorDef.red;\n private fillColor: ColorDef = ColorDef.white;\n private shapeThickness = 1;\n private pointThickness = 8;\n private lineThickness = 4;\n private edges = true;\n private linePixels = LinePixels.Solid;\n\n /** Clear the current context. */\n public clearContext(): void {\n this.points = [];\n this.shapes = [];\n this.markers = [];\n this.graphics = undefined;\n IModelApp.viewManager.invalidateDecorationsAllViews();\n }\n\n /** Set the active instance used by the decorator. */\n public async setContext(instanceId: string): Promise<boolean> {\n // get locating info on the requested instance\n const query = `SELECT bBoxHigh,bBoxLow,yaw,pitch,roll,origin FROM BisCore.SpatialElement WHERE ECInstanceId = ?`;\n\n if (!IModelApp.viewManager.selectedView || !IModelApp.viewManager.selectedView.iModel) {\n return false;\n }\n\n const params = new QueryBinder().bindId(1, instanceId);\n const queryIterable = IModelApp.viewManager.selectedView?.iModel.query(query, params, { rowFormat: QueryRowFormat.UseJsPropertyNames });\n\n const results: SpatialElementQueryResult[] = [];\n for await (const row of queryIterable) {\n results.push(row);\n }\n // if no results or more than one abort\n if (results.length !== 1) {\n // TODO: maybe report a warning or something\n return false;\n }\n\n // validate result\n const elem = results[0];\n if (!this.validateQueryResult(elem)) {\n return false;\n } else {\n this.instance = this.inferSpatialData(elem);\n return true;\n }\n }\n\n /** Get the calculated spatial lengths for all possible dimensions. */\n public getInferredSpatialData(): Map<BboxDimension, number> | undefined {\n if (!this.instance) {\n return;\n }\n\n // calculate each dimension\n const data = new Map<BboxDimension, number>();\n const corners = this.instance.placement.getWorldCorners().points;\n const mappings = this.instance.pointMappings;\n for (const dimKey in BboxDimension) {\n if (!Object.prototype.hasOwnProperty.call(BboxDimension, dimKey)) continue;\n const dim = BboxDimension[dimKey as keyof typeof BboxDimension];\n if (mappings.has(dim)) {\n const points = mappings.get(dim);\n if (points) {\n data.set(dim, corners[points[0]].distance(corners[points[1]]));\n }\n }\n }\n\n return data;\n }\n\n /** Command to draw the BBox. */\n public drawContext(dim: BboxDimension): boolean {\n // check if valid instance set\n if (!this.instance) {\n return false;\n }\n this.clearContext();\n\n // add geometry to decorator\n const polyface = this.buildPolyface(this.instance.placement.bbox, this.instance.placement.transform);\n this.addGeometry(polyface);\n const [line, points] = this.buildLine(this.instance.placement.bbox, dim, this.instance.placement.transform);\n this.addLine(line);\n this.addPoints(points);\n\n return true;\n }\n\n /** Generates new graphics if needed, and adds them to the scene. */\n public decorate(context: DecorateContext): void {\n // const overrides = new ViewFlagOverrides();\n // overrides.setShowVisibleEdges(true);\n // overrides.setApplyLighting(true);\n const branch = new GraphicBranch(false);\n\n // branch.viewFlagOverrides.copyFrom(overrides);\n\n // context.viewFlags.visibleEdges = true;\n if (!this.graphics) {\n this.graphics = this.createGraphics(context);\n }\n\n if (this.graphics) {\n branch.add(this.graphics);\n }\n\n const graphic = context.createBranch(branch, Transform.identity);\n context.addDecoration(GraphicType.WorldOverlay, graphic);\n\n this.markers.forEach((marker) => {\n marker.addDecoration(context);\n });\n }\n\n // #region Helper Functions\n\n /** Calculate all BBox dimensions and properties and save. */\n private inferSpatialData(elem: SpatialElementQueryResult): InferredSpatialData {\n // build placement from result\n const origin = new Point3d(elem.origin.x, elem.origin.y, elem.origin.z);\n const bBoxLow = new Point3d(elem.bBoxLow.x, elem.bBoxLow.y, elem.bBoxLow.z);\n const bBoxHigh = new Point3d(elem.bBoxHigh.x, elem.bBoxHigh.y, elem.bBoxHigh.z);\n const range = Range3d.create(bBoxLow, bBoxHigh);\n const ypra = new YawPitchRollAngles(Angle.createDegrees(elem.yaw), Angle.createDegrees(elem.pitch), Angle.createDegrees(elem.roll));\n const placement = new Placement3d(origin, ypra, range);\n\n // determine dimension size ordering\n const pointMappings = new Map<BboxDimension, [number, number]>();\n pointMappings.set(BboxDimension.BoundingBoxDiagonalLength, [0, 7]);\n const corners = placement.getWorldCorners();\n const d01 = corners.distance(0, 1);\n const d02 = corners.distance(0, 2);\n const d04 = corners.distance(0, 4);\n if (d01 >= d02 && d02 >= d04) {\n pointMappings.set(BboxDimension.BoundingBoxLongestEdgeLength, [0, 1]);\n pointMappings.set(BboxDimension.BoundingBoxIntermediateEdgeLength, [0, 2]);\n pointMappings.set(BboxDimension.BoundingBoxShortestEdgeLength, [0, 4]);\n pointMappings.set(BboxDimension.BoundingBoxLongestFaceDiagonalLength, [0, 3]);\n pointMappings.set(BboxDimension.BoundingBoxIntermediateFaceDiagonalLength, [0, 5]);\n pointMappings.set(BboxDimension.BoundingBoxShortestFaceDiagonalLength, [0, 6]);\n } else if (d01 >= d04 && d04 >= d02) {\n pointMappings.set(BboxDimension.BoundingBoxLongestEdgeLength, [0, 1]);\n pointMappings.set(BboxDimension.BoundingBoxIntermediateEdgeLength, [0, 4]);\n pointMappings.set(BboxDimension.BoundingBoxShortestEdgeLength, [0, 2]);\n pointMappings.set(BboxDimension.BoundingBoxLongestFaceDiagonalLength, [0, 5]);\n pointMappings.set(BboxDimension.BoundingBoxIntermediateFaceDiagonalLength, [0, 3]);\n pointMappings.set(BboxDimension.BoundingBoxShortestFaceDiagonalLength, [0, 6]);\n } else if (d04 >= d02 && d02 >= d01) {\n pointMappings.set(BboxDimension.BoundingBoxLongestEdgeLength, [0, 4]);\n pointMappings.set(BboxDimension.BoundingBoxIntermediateEdgeLength, [0, 2]);\n pointMappings.set(BboxDimension.BoundingBoxShortestEdgeLength, [0, 1]);\n pointMappings.set(BboxDimension.BoundingBoxLongestFaceDiagonalLength, [0, 6]);\n pointMappings.set(BboxDimension.BoundingBoxIntermediateFaceDiagonalLength, [0, 5]);\n pointMappings.set(BboxDimension.BoundingBoxShortestFaceDiagonalLength, [0, 3]);\n } else if (d04 >= d01 && d01 >= d02) {\n pointMappings.set(BboxDimension.BoundingBoxLongestEdgeLength, [0, 4]);\n pointMappings.set(BboxDimension.BoundingBoxIntermediateEdgeLength, [0, 1]);\n pointMappings.set(BboxDimension.BoundingBoxShortestEdgeLength, [0, 2]);\n pointMappings.set(BboxDimension.BoundingBoxLongestFaceDiagonalLength, [0, 5]);\n pointMappings.set(BboxDimension.BoundingBoxIntermediateFaceDiagonalLength, [0, 6]);\n pointMappings.set(BboxDimension.BoundingBoxShortestFaceDiagonalLength, [0, 3]);\n } else if (d02 >= d01 && d01 >= d04) {\n pointMappings.set(BboxDimension.BoundingBoxLongestEdgeLength, [0, 2]);\n pointMappings.set(BboxDimension.BoundingBoxIntermediateEdgeLength, [0, 1]);\n pointMappings.set(BboxDimension.BoundingBoxShortestEdgeLength, [0, 4]);\n pointMappings.set(BboxDimension.BoundingBoxLongestFaceDiagonalLength, [0, 3]);\n pointMappings.set(BboxDimension.BoundingBoxIntermediateFaceDiagonalLength, [0, 6]);\n pointMappings.set(BboxDimension.BoundingBoxShortestFaceDiagonalLength, [0, 5]);\n } else if (d02 >= d04 && d04 >= d01) {\n pointMappings.set(BboxDimension.BoundingBoxLongestEdgeLength, [0, 2]);\n pointMappings.set(BboxDimension.BoundingBoxIntermediateEdgeLength, [0, 4]);\n pointMappings.set(BboxDimension.BoundingBoxShortestEdgeLength, [0, 1]);\n pointMappings.set(BboxDimension.BoundingBoxLongestFaceDiagonalLength, [0, 6]);\n pointMappings.set(BboxDimension.BoundingBoxIntermediateFaceDiagonalLength, [0, 3]);\n pointMappings.set(BboxDimension.BoundingBoxShortestFaceDiagonalLength, [0, 5]);\n } else {\n // Unreachable case\n }\n\n return { placement, pointMappings };\n }\n\n /** Validate if instance has all necessary properties. */\n private validateQueryResult(result: SpatialElementQueryResult): boolean {\n if (\n result?.bBoxHigh?.x !== undefined &&\n result?.bBoxHigh.y !== undefined &&\n result?.bBoxHigh.z !== undefined &&\n result?.bBoxLow?.x !== undefined &&\n result?.bBoxLow.y !== undefined &&\n result?.bBoxLow.z !== undefined &&\n result?.origin?.x !== undefined &&\n result?.origin.y !== undefined &&\n result?.origin.z !== undefined &&\n result?.yaw !== undefined &&\n result?.pitch !== undefined &&\n result?.roll !== undefined\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Takes a Bounding Box and builds a rectangular polyface.\n * @param bbox The desired Bounding Box.\n * @param tf Transformation on the Bounding Box if applicable.\n * @returns The bounding box geometry.\n */\n private buildPolyface(bbox: Range3d, tf: Transform): IndexedPolyface {\n const options = StrokeOptions.createForCurves();\n options.needParams = false;\n options.needNormals = true;\n const builder = PolyfaceBuilder.create(options);\n const box = Box.createRange(bbox, true)?.cloneTransformed(tf);\n if (box) {\n builder.addBox(box);\n }\n return builder.claimPolyface(false);\n }\n\n /**\n * Build a Lone geometry based on specified dimension.\n * @param bbox The desired Bounding Box.\n * @param dim The desired dimension to draw.\n * @param tf Transformation on the Bounding Box if applicable.\n * @returns The line geometry.\n */\n private buildLine(bbox: Range3d, dim: BboxDimension, tf: Transform): [CurvePrimitive, Point3d[]] {\n // fallback scenario\n const fallback: [CurvePrimitive, Point3d[]] = [LineSegment3d.create(bbox.low, bbox.high).cloneTransformed(tf), [bbox.low, bbox.high]];\n if (!this.instance) {\n // TODO: probably should have some warning here...\n return fallback;\n }\n\n // otherwise return appropriate dimensions\n const corners = this.instance.placement.getWorldCorners().points;\n const targets = this.instance.pointMappings.get(dim);\n if (targets) {\n return [LineSegment3d.create(corners[targets[0]], corners[targets[1]]), [corners[targets[0]], corners[targets[1]]]];\n } else {\n // TODO: probably should have some warning here...\n return fallback;\n }\n }\n\n /**\n * Configure and add points to the dectorator.\n * @param point Definition of the points.\n */\n public addPoints(points: Point3d[]) {\n for (const point of points) {\n const styledPoint: CustomPoint = {\n point,\n color: this.pointColor,\n fill: this.fill,\n lineThickness: this.pointThickness,\n };\n this.points.push(styledPoint);\n }\n }\n\n /**\n * Configure and add a line to the decorator.\n * Length of the line is displayed as a label in the center.\n * @param line Definition of the line.\n */\n private addLine(line: LineSegment3d | CurvePrimitive) {\n const styledGeometry: CustomGeometryQuery = {\n geometry: line,\n color: this.lineColor,\n fill: true,\n fillColor: this.fillColor,\n lineThickness: this.lineThickness,\n edges: this.edges,\n linePixels: this.linePixels,\n };\n this.shapes.push(styledGeometry);\n\n const marker = new Marker(line.fractionToPoint(0.5), { x: 25, y: 25 });\n const label: HTMLDivElement = document.createElement(\"div\");\n label.textContent = `${line.quickLength().toFixed(3)}m`;\n label.style.backgroundColor = \"rgba(17,17,17,0.75)\";\n label.style.borderRadius = \"4px\";\n label.style.color = \"white\";\n label.style.padding = \"4px 8px\";\n marker.htmlElement = label;\n marker.visible = true;\n this.markers.push(marker);\n }\n\n /**\n * Configure and add a mesh to the decorator.\n * @param geometry Definition of the mesh.\n */\n private addGeometry(geometry: GeometryQuery) {\n const styledGeometry: CustomGeometryQuery = {\n geometry,\n color: this.shapeColor,\n fill: this.fill,\n fillColor: this.fillColor,\n lineThickness: this.shapeThickness,\n edges: this.edges,\n linePixels: this.linePixels,\n };\n this.shapes.push(styledGeometry);\n }\n\n /**\n * Iterate through the geometry and point lists, extracting each geometry and point, along with their styles\n * Adding them to the graphic builder which then creates new graphics\n * @param context\n * @returns\n */\n private createGraphics(context: DecorateContext): RenderGraphic | undefined {\n // Specifying an Id for the graphics tells the display system that all of the geometry belongs to the same entity, so that it knows to make sure the edges draw on top of the surfaces.\n const builder = context.createGraphicBuilder(GraphicType.Scene, undefined, context.viewport.iModel.transientIds.next);\n // Read-only now\n // builder.wantNormals = true;\n this.points.forEach((styledPoint) => {\n builder.setSymbology(styledPoint.color, styledPoint.fill ? styledPoint.color : ColorDef.white, styledPoint.lineThickness);\n const point = styledPoint.point;\n builder.addPointString([point]);\n });\n this.shapes.forEach((styledGeometry) => {\n const geometry = styledGeometry.geometry;\n builder.setSymbology(\n styledGeometry.color,\n styledGeometry.fill ? styledGeometry.fillColor : styledGeometry.color,\n styledGeometry.lineThickness,\n styledGeometry.linePixels,\n );\n this.createGraphicsForGeometry(geometry, styledGeometry.edges, builder);\n });\n const graphic = builder.finish();\n return graphic;\n }\n private createGraphicsForGeometry(geometry: GeometryQuery, wantEdges: boolean, builder: GraphicBuilder) {\n if (geometry instanceof LineString3d) {\n builder.addLineString(geometry.points);\n } else if (geometry instanceof Loop) {\n builder.addLoop(geometry);\n if (wantEdges) {\n // Since decorators don't natively support visual edges,\n // We draw them manually as lines along each loop edge/arc\n builder.setSymbology(ColorDef.black, ColorDef.black, 2);\n const curves = geometry.children;\n curves.forEach((value) => {\n if (value instanceof LineString3d) {\n let edges = value.points;\n const endPoint = value.pointAt(0);\n if (endPoint) {\n edges = edges.concat([endPoint]);\n }\n builder.addLineString(edges);\n } else if (value instanceof Arc3d) {\n builder.addArc(value, false, false);\n }\n });\n }\n } else if (geometry instanceof Path) {\n builder.addPath(geometry);\n } else if (geometry instanceof IndexedPolyface) {\n builder.addPolyface(geometry, false);\n if (wantEdges) {\n // Since decorators don't natively support visual edges,\n // We draw them manually as lines along each facet edge\n builder.setSymbology(ColorDef.black, ColorDef.black, 2);\n const visitor = IndexedPolyfaceVisitor.create(geometry, 1);\n let flag = true;\n while (flag) {\n const numIndices = visitor.pointCount;\n for (let i = 0; i < numIndices - 1; i++) {\n const point1 = visitor.getPoint(i);\n const point2 = visitor.getPoint(i + 1);\n if (point1 && point2) {\n builder.addLineString([point1, point2]);\n }\n }\n flag = visitor.moveToNextFacet();\n }\n }\n } else if (geometry instanceof LineSegment3d) {\n const pointA = geometry.point0Ref;\n const pointB = geometry.point1Ref;\n const lineString = [pointA, pointB];\n builder.addLineString(lineString);\n } else if (geometry instanceof Arc3d) {\n builder.addArc(geometry, false, false);\n } else if (geometry instanceof CurveChainWithDistanceIndex) {\n this.createGraphicsForGeometry(geometry.path, wantEdges, builder);\n }\n }\n\n // #endregion\n}\n"]}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolveFormulaDataType = void 0;
|
|
4
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
|
-
*--------------------------------------------------------------------------------------------*/
|
|
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
8
|
const FormulaSplitter_1 = require("./FormulaSplitter");
|
|
9
9
|
const FormulaTokensDataTypeResolver_1 = require("./FormulaTokensDataTypeResolver");
|
|
10
10
|
const InfixToPostfixConverter_1 = require("./InfixToPostfixConverter");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormulaDataTypeResolver.js","sourceRoot":"","sources":["../../../src/formula/FormulaDataTypeResolver.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"FormulaDataTypeResolver.js","sourceRoot":"","sources":["../../../src/formula/FormulaDataTypeResolver.ts"],"names":[],"mappings":";;;AAAA;;;gGAGgG;AAChG,uDAAiD;AACjD,mFAAwE;AACxE,uEAAkE;AAElE,iEAA+E;AAG/E;;;;;;;;GAQG;AACH,SAAgB,sBAAsB,CAAC,WAAmB,EAAE,OAAe,EAAE,UAAuB;IAClG,MAAM,gBAAgB,GAAG,IAAA,0CAAmB,EAAC,OAAO,CAAC,CAAC;IACtD,IAAI,uCAAgB,CAAC,SAAS,KAAK,gBAAgB,EAAE;QACnD,OAAO,EAAE,YAAY,EAAE,0CAA0C,EAAE,CAAC;KACrE;SAAM,IAAI,uCAAgB,CAAC,SAAS,KAAK,gBAAgB,EAAE;QAC1D,OAAO,EAAE,YAAY,EAAE,0CAA0C,EAAE,CAAC;KACrE;IAED,IAAI,kBAAkB,CAAC;IACvB,IAAI;QACF,kBAAkB,GAAG,IAAA,8BAAY,EAAC,OAAO,CAAC,CAAC;KAC5C;IAAC,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,YAAY,KAAK,EAAE;YACvB,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC;SACrC;aAAM;YACL,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YACpC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC;SAC3C;KACF;IAED,MAAM,oBAAoB,GAAG,IAAA,+CAAqB,EAAC,kBAAkB,CAAC,CAAC;IAEvE,IAAI,SAAS,KAAK,oBAAoB,CAAC,KAAK,EAAE;QAC5C,OAAO,EAAE,YAAY,EAAE,oBAAoB,CAAC,YAAY,IAAI,gBAAgB,EAAE,CAAC;KAChF;IAED,OAAO,IAAA,qDAAqB,EAAC,WAAW,EAAE,oBAAoB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACpF,CAAC;AA5BD,wDA4BC","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 { splitFormula } from \"./FormulaSplitter\";\nimport { resolveTokensDataType } from \"./FormulaTokensDataTypeResolver\";\nimport { convertInfixToPostfix } from \"./InfixToPostfixConverter\";\nimport type { IResult } from \"./IResult\";\nimport { ParenthesisState, validateParenthesis } from \"./ParenthesisValidator\";\nimport type { DataType, PropertyMap } from \"./Types\";\n\n/**\n * Resolves DataType of the given formula.\n * @param formulaName Name of the current formula. Expected to be lowercase.\n * @param formula The formula itself.\n * @param properties All available properties or variables with their data types\n * that could be used in formula. Names are expected to be lowercase.\n * @returns `dataType` if formula is valid. `errorMessage` otherwise.\n * @public\n */\nexport function resolveFormulaDataType(formulaName: string, formula: string, properties: PropertyMap): IResult<DataType> {\n const parenthesisState = validateParenthesis(formula);\n if (ParenthesisState.NotClosed === parenthesisState) {\n return { errorMessage: \"Opened but not closed parenthesis found.\" };\n } else if (ParenthesisState.NotOpened === parenthesisState) {\n return { errorMessage: \"Closed but not opened parenthesis found.\" };\n }\n\n let infixFormulaTokens;\n try {\n infixFormulaTokens = splitFormula(formula);\n } catch (ex) {\n if (ex instanceof Error) {\n return { errorMessage: ex.message };\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Unknown error.\", ex);\n return { errorMessage: \"Unknown error.\" };\n }\n }\n\n const postfixFormulaTokens = convertInfixToPostfix(infixFormulaTokens);\n\n if (undefined === postfixFormulaTokens.value) {\n return { errorMessage: postfixFormulaTokens.errorMessage ?? \"Unknown error.\" };\n }\n\n return resolveTokensDataType(formulaName, postfixFormulaTokens.value, properties);\n}\n"]}
|