@itwin/grouping-mapping-widget 0.5.2 → 0.5.5
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/lib/cjs/widget/components/GroupAction.js +1 -2
- package/lib/cjs/widget/components/GroupAction.js.map +1 -1
- package/lib/cjs/widget/components/GroupPropertyAction.js +1 -3
- package/lib/cjs/widget/components/GroupPropertyAction.js.map +1 -1
- package/lib/cjs/widget/components/Grouping.js +18 -17
- package/lib/cjs/widget/components/Grouping.js.map +1 -1
- package/lib/cjs/widget/components/PropertyMenu.js +4 -3
- package/lib/cjs/widget/components/PropertyMenu.js.map +1 -1
- package/lib/cjs/widget/components/viewerUtils.d.ts +7 -7
- package/lib/cjs/widget/components/viewerUtils.js +32 -51
- package/lib/cjs/widget/components/viewerUtils.js.map +1 -1
- package/lib/esm/widget/components/GroupAction.js +3 -4
- package/lib/esm/widget/components/GroupAction.js.map +1 -1
- package/lib/esm/widget/components/GroupPropertyAction.js +2 -4
- package/lib/esm/widget/components/GroupPropertyAction.js.map +1 -1
- package/lib/esm/widget/components/Grouping.js +22 -21
- package/lib/esm/widget/components/Grouping.js.map +1 -1
- package/lib/esm/widget/components/PropertyMenu.js +5 -4
- package/lib/esm/widget/components/PropertyMenu.js.map +1 -1
- package/lib/esm/widget/components/viewerUtils.d.ts +7 -7
- package/lib/esm/widget/components/viewerUtils.js +27 -46
- package/lib/esm/widget/components/viewerUtils.js.map +1 -1
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grouping.js","sourceRoot":"","sources":["../../../../src/widget/components/Grouping.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 { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport React, {\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport type { CreateTypeFromInterface } from \"../utils\";\nimport {\n Button,\n ButtonGroup,\n DropdownMenu,\n IconButton,\n MenuItem,\n ProgressRadial,\n Surface,\n toaster,\n ToggleSwitch,\n} from \"@itwin/itwinui-react\";\nimport {\n SvgAdd,\n SvgDelete,\n SvgEdit,\n SvgList,\n SvgMore,\n SvgVisibilityHide,\n SvgVisibilityShow,\n} from \"@itwin/itwinui-icons-react\";\nimport DeleteModal from \"./DeleteModal\";\nimport \"./Grouping.scss\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { PropertyMenu } from \"./PropertyMenu\";\nimport {\n clearEmphasizedElements,\n clearEmphasizedOverriddenElements,\n clearHiddenElements,\n clearOverriddenElements,\n emphasizeElements,\n getHiliteIds,\n hideElements,\n hideElementsById,\n overrideElements,\n zoomToElements,\n} from \"./viewerUtils\";\nimport {\n EmptyMessage,\n fetchIdsFromQuery,\n handleError,\n LoadingOverlay,\n WidgetHeader,\n} from \"./utils\";\nimport GroupAction from \"./GroupAction\";\nimport type { Group, Mapping } from \"@itwin/insights-client\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport { FeatureOverrideType } from \"@itwin/core-common\";\nimport { GroupTile } from \"./GroupTile\";\nimport type { IMappingClient } from \"../IMappingClient\";\nimport type { GetAccessTokenFn } from \"./context/GroupingApiConfigContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\n\nexport type GroupType = CreateTypeFromInterface<Group>;\n\nenum GroupsView {\n GROUPS = \"groups\",\n MODIFYING = \"modifying\",\n ADD = \"ADD\",\n PROPERTIES = \"properties\",\n}\n\ninterface GroupsTreeProps {\n mapping: Mapping;\n goBack: () => Promise<void>;\n}\n\nconst goldenAngle = 180 * (3 - Math.sqrt(5));\n\nconst fetchGroups = async (\n setGroups: React.Dispatch<React.SetStateAction<GroupType[]>>,\n iModelId: string,\n mappingId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n getAccessToken: GetAccessTokenFn,\n mappingClient: IMappingClient,\n): Promise<Group[] | undefined> => {\n try {\n setIsLoading(true);\n const accessToken = await getAccessToken();\n const groups = await mappingClient.getGroups(\n accessToken,\n iModelId,\n mappingId,\n );\n setGroups(groups);\n return groups;\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n return undefined;\n};\n\nexport const Groupings = ({ mapping, goBack }: GroupsTreeProps) => {\n const iModelConnection = useActiveIModelConnection() as IModelConnection;\n const { getAccessToken } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const iModelId = useActiveIModelConnection()?.iModelId as string;\n const [showDeleteModal, setShowDeleteModal] = useState<boolean>(false);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [groupsView, setGroupsView] = useState<GroupsView>(GroupsView.GROUPS);\n const [selectedGroup, setSelectedGroup] = useState<GroupType | undefined>(\n undefined,\n );\n const hilitedElements = useRef<Map<string, string[]>>(new Map());\n const [isLoadingQuery, setLoadingQuery] = useState<boolean>(false);\n const [groups, setGroups] = useState<Group[]>([]);\n const [hiddenGroupsIds, setHiddenGroupsIds] = useState<string[]>([]);\n const [showGroupColor, setShowGroupColor] = useState<boolean>(false);\n\n useEffect(() => {\n void fetchGroups(\n setGroups,\n iModelId,\n mapping.id ?? \"\",\n setIsLoading,\n getAccessToken,\n mappingClient,\n );\n }, [getAccessToken, mappingClient, iModelId, mapping.id, setIsLoading]);\n\n const getGroupColor = function (index: number) {\n return `hsl(${index * goldenAngle + 60}, 100%, 50%)`;\n };\n\n const getHiliteIdsFromGroups = useCallback(async (groups: Group[]) => {\n let allIds: string[] = [];\n for (const group of groups) {\n const query = group.query ?? \"\";\n let currentIds: string[] = [];\n if (hilitedElements.current.has(query)) {\n currentIds = hilitedElements.current.get(query) ?? [];\n } else {\n try {\n const ids: string[] = await fetchIdsFromQuery(\n query,\n iModelConnection,\n );\n if (ids.length === 0) {\n toaster.warning(\n `${group.groupName}'s query is valid but produced no results.`,\n );\n }\n currentIds = await getHiliteIds(ids, iModelConnection);\n hilitedElements.current.set(query, currentIds);\n } catch {\n toaster.negative(\n `Could not hide/show ${group.groupName}. Query could not be resolved.`,\n );\n }\n }\n allIds = allIds.concat(currentIds);\n }\n return allIds;\n }, [iModelConnection, hilitedElements]);\n\n const visualizeGroupColors = useCallback(\n async (viewGroups: Group[]) => {\n setLoadingQuery(true);\n clearEmphasizedOverriddenElements();\n let allIds: string[] = [];\n for (const group of viewGroups) {\n const index =\n viewGroups.length > groups.length\n ? viewGroups.findIndex((g) => g.id === group.id)\n : groups.findIndex((g) => g.id === group.id);\n const hilitedIds = await getHiliteIdsFromGroups([group]);\n overrideElements(\n hilitedIds,\n getGroupColor(index),\n FeatureOverrideType.ColorAndAlpha,\n );\n emphasizeElements(hilitedIds, undefined);\n if (!hiddenGroupsIds.includes(group.id ?? \"\")) {\n allIds = allIds.concat(hilitedIds);\n }\n }\n\n await zoomToElements(allIds);\n setLoadingQuery(false);\n },\n [groups, hiddenGroupsIds, getHiliteIdsFromGroups],\n );\n\n const hideGroups = useCallback(\n async (viewGroups: Group[], zoomTo: boolean = true) => {\n setLoadingQuery(true);\n let allIds: string[] = [];\n for (const viewGroup of viewGroups) {\n const query = viewGroup.query ?? \"\";\n if (hilitedElements.current.has(query)) {\n const hilitedIds = hilitedElements.current.get(query) ?? [];\n hideElements(hilitedIds);\n allIds = allIds.concat(hilitedIds);\n } else {\n try {\n const ids: string[] = await fetchIdsFromQuery(\n query,\n iModelConnection,\n );\n if (ids.length === 0) {\n toaster.warning(\n `${viewGroup.groupName}'s query is valid but produced no results.`,\n );\n }\n const hiliteIds = await hideElementsById(\n ids,\n iModelConnection,\n false,\n );\n hilitedElements.current.set(query, hiliteIds);\n allIds = allIds.concat(hiliteIds);\n } catch {\n toaster.negative(\n `Could not hide/show ${viewGroup.groupName}. Query could not be resolved.`,\n );\n }\n }\n }\n if (zoomTo) {\n await zoomToElements(allIds);\n }\n setLoadingQuery(false);\n },\n [iModelConnection],\n );\n\n const showGroup = useCallback(\n async (viewGroup: Group) => {\n clearHiddenElements();\n\n // hide group Ids filter\n const newHiddenGroups: Group[] = hiddenGroupsIds\n .map((id) => groups.find((g) => g.id === id))\n .filter((g): g is Group => !!g && g.id !== viewGroup.id);\n\n // view group Ids filter\n const viewIds = await getHiliteIdsFromGroups(\n groups.filter((g) => !newHiddenGroups.find((hg) => hg.id === g.id)),\n );\n let hiddenIds = await getHiliteIdsFromGroups(newHiddenGroups);\n hiddenIds = hiddenIds.filter((id) => !viewIds.includes(id));\n hideElements(hiddenIds);\n await zoomToElements(viewIds);\n },\n [groups, hiddenGroupsIds, getHiliteIdsFromGroups],\n );\n\n const addGroup = () => {\n clearEmphasizedElements();\n setGroupsView(GroupsView.ADD);\n };\n\n const onModify = async (group: Group) => {\n setSelectedGroup(group);\n setGroupsView(GroupsView.MODIFYING);\n if (group?.id && hiddenGroupsIds.includes(group.id)) {\n await showGroup(group);\n setHiddenGroupsIds(hiddenGroupsIds.filter((id) => id !== group.id));\n }\n clearEmphasizedElements();\n };\n\n const openProperties = async (group: Group) => {\n setSelectedGroup(group);\n setGroupsView(GroupsView.PROPERTIES);\n if (group?.id && hiddenGroupsIds.includes(group.id)) {\n await showGroup(group);\n setHiddenGroupsIds(hiddenGroupsIds.filter((id) => id !== group.id));\n }\n };\n\n const refresh = useCallback(async () => {\n setGroupsView(GroupsView.GROUPS);\n setSelectedGroup(undefined);\n setGroups([]);\n const groups = await fetchGroups(\n setGroups,\n iModelId,\n mapping.id ?? \"\",\n setIsLoading,\n getAccessToken,\n mappingClient,\n );\n if (groups) {\n if (showGroupColor) {\n await visualizeGroupColors(groups);\n } else {\n clearEmphasizedOverriddenElements();\n }\n }\n }, [\n getAccessToken,\n mappingClient,\n iModelId,\n mapping.id,\n setGroups,\n showGroupColor,\n visualizeGroupColors,\n ]);\n\n const resetView = async () => {\n if (groups) {\n if (showGroupColor) {\n await visualizeGroupColors(groups);\n } else {\n clearOverriddenElements();\n }\n clearEmphasizedElements();\n }\n };\n\n const showAll = async () => {\n setLoadingQuery(true);\n\n clearHiddenElements();\n setHiddenGroupsIds([]);\n const allIds = await getHiliteIdsFromGroups(groups);\n await zoomToElements(allIds);\n\n setLoadingQuery(false);\n };\n\n const hideAll = useCallback(async () => {\n await hideGroups(groups);\n setHiddenGroupsIds(\n groups.map((g) => g.id).filter((id): id is string => !!id),\n );\n }, [setHiddenGroupsIds, groups, hideGroups]);\n\n const toggleGroupColor = useCallback(\n async (e: any) => {\n if (e.target.checked) {\n await visualizeGroupColors(groups);\n setShowGroupColor(true);\n } else {\n clearEmphasizedOverriddenElements();\n setShowGroupColor(false);\n }\n },\n [groups, visualizeGroupColors, setShowGroupColor],\n );\n\n const propertyMenuGoBack = useCallback(async () => {\n setGroupsView(GroupsView.GROUPS);\n await refresh();\n }, [refresh]);\n\n switch (groupsView) {\n case GroupsView.ADD:\n return (\n <GroupAction\n iModelId={iModelId}\n mappingId={mapping.id ?? \"\"}\n goBack={async () => {\n setGroupsView(GroupsView.GROUPS);\n await refresh();\n }}\n resetView={resetView}\n />\n );\n case GroupsView.MODIFYING:\n return selectedGroup ? (\n <GroupAction\n iModelId={iModelId}\n mappingId={mapping.id ?? \"\"}\n group={selectedGroup}\n goBack={async () => {\n setGroupsView(GroupsView.GROUPS);\n await refresh();\n }}\n resetView={resetView}\n />\n ) : null;\n case GroupsView.PROPERTIES:\n return selectedGroup ? (\n <PropertyMenu\n iModelId={iModelId}\n mappingId={mapping.id ?? \"\"}\n group={selectedGroup}\n goBack={propertyMenuGoBack}\n />\n ) : null;\n default:\n return (\n <>\n <WidgetHeader\n title={mapping.mappingName ?? \"\"}\n disabled={isLoading || isLoadingQuery}\n returnFn={async () => {\n clearEmphasizedOverriddenElements();\n await goBack();\n }}\n />\n <Surface className=\"groups-container\">\n <div className=\"toolbar\">\n <Button\n startIcon={\n isLoadingQuery ? (\n <ProgressRadial size=\"small\" indeterminate />\n ) : (\n <SvgAdd />\n )\n }\n styleType=\"high-visibility\"\n disabled={isLoadingQuery}\n onClick={addGroup}\n >\n {isLoadingQuery ? \"Loading Group(s)\" : \"Add Group\"}\n </Button>\n <ButtonGroup className=\"toolbar-buttons\">\n <ToggleSwitch\n label=\"Color by Group\"\n labelPosition=\"left\"\n className=\"group-view-icon toggle\"\n disabled={isLoadingQuery}\n checked={showGroupColor}\n onChange={toggleGroupColor}\n ></ToggleSwitch>\n <IconButton\n title=\"Show All\"\n onClick={showAll}\n disabled={isLoadingQuery}\n styleType=\"borderless\"\n className=\"group-view-icon\"\n >\n <SvgVisibilityShow />\n </IconButton>\n <IconButton\n title=\"Hide All\"\n onClick={hideAll}\n disabled={isLoadingQuery}\n styleType=\"borderless\"\n className=\"group-view-icon\"\n >\n <SvgVisibilityHide />\n </IconButton>\n </ButtonGroup>\n </div>\n {isLoading ? (\n <LoadingOverlay />\n ) : groups.length === 0 ? (\n <EmptyMessage message=\"No Groups available.\" />\n ) : (\n <div className=\"group-list\">\n {groups.map((g) => (\n <GroupTile\n key={g.id}\n title={g.groupName ? g.groupName : \"Untitled\"}\n subText={g.description}\n actionGroup={\n <div className=\"actions\">\n {g.id && hiddenGroupsIds.includes(g.id) ? (\n <IconButton\n disabled={isLoadingQuery}\n styleType=\"borderless\"\n className=\"group-view-icon\"\n onClick={async () => {\n await showGroup(g);\n setHiddenGroupsIds(\n hiddenGroupsIds.filter((id) => g.id !== id),\n );\n }}\n >\n <SvgVisibilityHide />\n </IconButton>\n ) : (\n <IconButton\n disabled={isLoadingQuery}\n styleType=\"borderless\"\n className=\"group-view-icon\"\n onClick={async () => {\n await hideGroups([g]);\n setHiddenGroupsIds(\n hiddenGroupsIds.concat(g.id ? [g.id] : []),\n );\n }}\n >\n <SvgVisibilityShow />\n </IconButton>\n )}\n <DropdownMenu\n disabled={isLoadingQuery}\n menuItems={(close: () => void) => [\n <MenuItem\n key={0}\n onClick={async () => onModify(g)}\n icon={<SvgEdit />}\n >\n Modify\n </MenuItem>,\n <MenuItem\n key={1}\n onClick={async () => openProperties(g)}\n icon={<SvgList />}\n >\n Properties\n </MenuItem>,\n <MenuItem\n key={2}\n onClick={() => {\n setSelectedGroup(g);\n setShowDeleteModal(true);\n close();\n }}\n icon={<SvgDelete />}\n >\n Remove\n </MenuItem>,\n ]}\n >\n <IconButton\n disabled={isLoadingQuery}\n styleType=\"borderless\"\n >\n <SvgMore\n style={{\n width: \"16px\",\n height: \"16px\",\n }}\n />\n </IconButton>\n </DropdownMenu>\n </div>\n }\n onClickTitle={\n isLoadingQuery ? undefined : async () => openProperties(g)\n }\n />\n ))}\n </div>\n )}\n </Surface>\n <DeleteModal\n entityName={selectedGroup?.groupName ?? \"\"}\n show={showDeleteModal}\n setShow={setShowDeleteModal}\n onDelete={async () => {\n const accessToken = await getAccessToken();\n await mappingClient.deleteGroup(\n accessToken,\n iModelId,\n mapping.id ?? \"\",\n selectedGroup?.id ?? \"\",\n );\n }}\n refresh={refresh}\n />\n </>\n );\n }\n};\n"]}
|
|
1
|
+
{"version":3,"file":"Grouping.js","sourceRoot":"","sources":["../../../../src/widget/components/Grouping.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 { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../utils\";\nimport {\n Button,\n ButtonGroup,\n DropdownMenu,\n IconButton,\n MenuItem,\n ProgressRadial,\n Surface,\n toaster,\n ToggleSwitch,\n} from \"@itwin/itwinui-react\";\nimport {\n SvgAdd,\n SvgDelete,\n SvgEdit,\n SvgList,\n SvgMore,\n SvgRectangle,\n SvgVisibilityHide,\n SvgVisibilityShow,\n} from \"@itwin/itwinui-icons-react\";\nimport DeleteModal from \"./DeleteModal\";\nimport \"./Grouping.scss\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { PropertyMenu } from \"./PropertyMenu\";\nimport {\n clearEmphasizedElements,\n clearEmphasizedOverriddenElements,\n clearHiddenElements,\n clearOverriddenElements,\n emphasizeElements,\n getHiliteIds,\n hideElements,\n hideElementsByQuery,\n overrideElements,\n zoomToElements,\n} from \"./viewerUtils\";\nimport {\n EmptyMessage,\n handleError,\n LoadingOverlay,\n WidgetHeader,\n} from \"./utils\";\nimport GroupAction from \"./GroupAction\";\nimport type { Group, Mapping } from \"@itwin/insights-client\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport { FeatureOverrideType } from \"@itwin/core-common\";\nimport { GroupTile } from \"./GroupTile\";\nimport type { IMappingClient } from \"../IMappingClient\";\nimport type { GetAccessTokenFn } from \"./context/GroupingApiConfigContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\n\nexport type GroupType = CreateTypeFromInterface<Group>;\n\nenum GroupsView {\n GROUPS = \"groups\",\n MODIFYING = \"modifying\",\n ADD = \"ADD\",\n PROPERTIES = \"properties\",\n}\n\ninterface GroupsTreeProps {\n mapping: Mapping;\n goBack: () => Promise<void>;\n}\n\nconst goldenAngle = 180 * (3 - Math.sqrt(5));\n\nconst fetchGroups = async (\n setGroups: React.Dispatch<React.SetStateAction<GroupType[]>>,\n iModelId: string,\n mappingId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n getAccessToken: GetAccessTokenFn,\n mappingClient: IMappingClient,\n): Promise<Group[] | undefined> => {\n try {\n setIsLoading(true);\n const accessToken = await getAccessToken();\n const groups = await mappingClient.getGroups(\n accessToken,\n iModelId,\n mappingId,\n );\n setGroups(groups);\n return groups;\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n return undefined;\n};\n\nexport const Groupings = ({ mapping, goBack }: GroupsTreeProps) => {\n const iModelConnection = useActiveIModelConnection() as IModelConnection;\n const { getAccessToken } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const iModelId = useActiveIModelConnection()?.iModelId as string;\n const [showDeleteModal, setShowDeleteModal] = useState<boolean>(false);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [groupsView, setGroupsView] = useState<GroupsView>(GroupsView.GROUPS);\n const [selectedGroup, setSelectedGroup] = useState<GroupType | undefined>(\n undefined,\n );\n const hilitedElements = useRef<Map<string, string[]>>(new Map());\n const [isLoadingQuery, setLoadingQuery] = useState<boolean>(false);\n const [groups, setGroups] = useState<Group[]>([]);\n const [hiddenGroupsIds, setHiddenGroupsIds] = useState<string[]>([]);\n const [showGroupColor, setShowGroupColor] = useState<boolean>(false);\n\n useEffect(() => {\n void fetchGroups(\n setGroups,\n iModelId,\n mapping.id ?? \"\",\n setIsLoading,\n getAccessToken,\n mappingClient,\n );\n }, [getAccessToken, mappingClient, iModelId, mapping.id, setIsLoading]);\n\n const getGroupColor = function (index: number) {\n return `hsl(${index * goldenAngle + 60}, 100%, 50%)`;\n };\n\n const getHiliteIdsFromGroups = useCallback(\n async (groups: Group[]) => {\n let allIds: string[] = [];\n for (const group of groups) {\n const query = group.query ?? \"\";\n let currentIds: string[] = [];\n if (hilitedElements.current.has(query)) {\n currentIds = hilitedElements.current.get(query) ?? [];\n } else {\n try {\n const queryRowCount = await iModelConnection.queryRowCount(query);\n if (queryRowCount === 0) {\n toaster.warning(\n `${group.groupName}'s query is valid but produced no results.`,\n );\n }\n currentIds = await getHiliteIds(query, iModelConnection);\n hilitedElements.current.set(query, currentIds);\n } catch {\n toaster.negative(\n `Could not hide/show ${group.groupName}. Query could not be resolved.`,\n );\n }\n }\n allIds = allIds.concat(currentIds);\n }\n return allIds;\n },\n [iModelConnection, hilitedElements],\n );\n\n const visualizeGroupColors = useCallback(\n async (viewGroups: Group[]) => {\n setLoadingQuery(true);\n clearEmphasizedOverriddenElements();\n let allIds: string[] = [];\n for (const group of viewGroups) {\n const index =\n viewGroups.length > groups.length\n ? viewGroups.findIndex((g) => g.id === group.id)\n : groups.findIndex((g) => g.id === group.id);\n const hilitedIds = await getHiliteIdsFromGroups([group]);\n overrideElements(\n hilitedIds,\n getGroupColor(index),\n FeatureOverrideType.ColorAndAlpha,\n );\n emphasizeElements(hilitedIds, undefined);\n if (!hiddenGroupsIds.includes(group.id ?? \"\")) {\n allIds = allIds.concat(hilitedIds);\n }\n }\n\n await zoomToElements(allIds);\n setLoadingQuery(false);\n },\n [groups, hiddenGroupsIds, getHiliteIdsFromGroups],\n );\n\n const hideGroups = useCallback(\n async (viewGroups: Group[]) => {\n setLoadingQuery(true);\n for (const viewGroup of viewGroups) {\n const query = viewGroup.query ?? \"\";\n if (hilitedElements.current.has(query)) {\n const hilitedIds = hilitedElements.current.get(query) ?? [];\n hideElements(hilitedIds);\n } else {\n try {\n const queryRowCount = await iModelConnection.queryRowCount(query);\n if (queryRowCount === 0) {\n toaster.warning(\n `${viewGroup.groupName}'s query is valid but produced no results.`,\n );\n }\n const hiliteIds = await hideElementsByQuery(\n query,\n iModelConnection,\n false,\n );\n hilitedElements.current.set(query, hiliteIds);\n } catch {\n toaster.negative(\n `Could not hide/show ${viewGroup.groupName}. Query could not be resolved.`,\n );\n }\n }\n }\n setLoadingQuery(false);\n },\n [iModelConnection],\n );\n\n const showGroup = useCallback(\n async (viewGroup: Group) => {\n clearHiddenElements();\n\n // hide group Ids filter\n const newHiddenGroups: Group[] = hiddenGroupsIds\n .map((id) => groups.find((g) => g.id === id))\n .filter((g): g is Group => !!g && g.id !== viewGroup.id);\n\n // view group Ids filter\n const viewIds = await getHiliteIdsFromGroups(\n groups.filter((g) => !newHiddenGroups.find((hg) => hg.id === g.id)),\n );\n let hiddenIds = await getHiliteIdsFromGroups(newHiddenGroups);\n hiddenIds = hiddenIds.filter((id) => !viewIds.includes(id));\n hideElements(hiddenIds);\n },\n [groups, hiddenGroupsIds, getHiliteIdsFromGroups],\n );\n\n const addGroup = () => {\n clearEmphasizedElements();\n setGroupsView(GroupsView.ADD);\n };\n\n const onModify = async (group: Group) => {\n setSelectedGroup(group);\n setGroupsView(GroupsView.MODIFYING);\n if (group?.id && hiddenGroupsIds.includes(group.id)) {\n await showGroup(group);\n setHiddenGroupsIds(hiddenGroupsIds.filter((id) => id !== group.id));\n }\n clearEmphasizedElements();\n };\n\n const openProperties = async (group: Group) => {\n setSelectedGroup(group);\n setGroupsView(GroupsView.PROPERTIES);\n if (group?.id && hiddenGroupsIds.includes(group.id)) {\n await showGroup(group);\n setHiddenGroupsIds(hiddenGroupsIds.filter((id) => id !== group.id));\n }\n };\n\n const refresh = useCallback(async () => {\n setGroupsView(GroupsView.GROUPS);\n setSelectedGroup(undefined);\n setGroups([]);\n const groups = await fetchGroups(\n setGroups,\n iModelId,\n mapping.id ?? \"\",\n setIsLoading,\n getAccessToken,\n mappingClient,\n );\n if (groups) {\n if (showGroupColor) {\n await visualizeGroupColors(groups);\n } else {\n clearEmphasizedOverriddenElements();\n }\n }\n }, [\n getAccessToken,\n mappingClient,\n iModelId,\n mapping.id,\n setGroups,\n showGroupColor,\n visualizeGroupColors,\n ]);\n\n const resetView = async () => {\n if (groups) {\n if (showGroupColor) {\n await visualizeGroupColors(groups);\n } else {\n clearOverriddenElements();\n }\n clearEmphasizedElements();\n }\n };\n\n const showAll = async () => {\n setLoadingQuery(true);\n\n clearHiddenElements();\n setHiddenGroupsIds([]);\n const allIds = await getHiliteIdsFromGroups(groups);\n await zoomToElements(allIds);\n\n setLoadingQuery(false);\n };\n\n const hideAll = useCallback(async () => {\n await hideGroups(groups);\n setHiddenGroupsIds(\n groups.map((g) => g.id).filter((id): id is string => !!id),\n );\n const allIds = await getHiliteIdsFromGroups(groups);\n await zoomToElements(allIds);\n }, [setHiddenGroupsIds, groups, hideGroups, getHiliteIdsFromGroups]);\n\n const toggleGroupColor = useCallback(\n async (e: any) => {\n if (e.target.checked) {\n await visualizeGroupColors(groups);\n setShowGroupColor(true);\n } else {\n clearEmphasizedOverriddenElements();\n setShowGroupColor(false);\n }\n },\n [groups, visualizeGroupColors, setShowGroupColor],\n );\n\n const propertyMenuGoBack = useCallback(async () => {\n setGroupsView(GroupsView.GROUPS);\n await refresh();\n }, [refresh]);\n\n switch (groupsView) {\n case GroupsView.ADD:\n return (\n <GroupAction\n iModelId={iModelId}\n mappingId={mapping.id ?? \"\"}\n goBack={async () => {\n setGroupsView(GroupsView.GROUPS);\n await refresh();\n }}\n resetView={resetView}\n />\n );\n case GroupsView.MODIFYING:\n return selectedGroup ? (\n <GroupAction\n iModelId={iModelId}\n mappingId={mapping.id ?? \"\"}\n group={selectedGroup}\n goBack={async () => {\n setGroupsView(GroupsView.GROUPS);\n await refresh();\n }}\n resetView={resetView}\n />\n ) : null;\n case GroupsView.PROPERTIES:\n return selectedGroup ? (\n <PropertyMenu\n iModelId={iModelId}\n mappingId={mapping.id ?? \"\"}\n group={selectedGroup}\n goBack={propertyMenuGoBack}\n />\n ) : null;\n default:\n return (\n <>\n <WidgetHeader\n title={mapping.mappingName ?? \"\"}\n disabled={isLoading || isLoadingQuery}\n returnFn={async () => {\n clearEmphasizedOverriddenElements();\n await goBack();\n }}\n />\n <Surface className=\"groups-container\">\n <div className=\"toolbar\">\n <Button\n startIcon={\n isLoadingQuery ? (\n <ProgressRadial size=\"small\" indeterminate />\n ) : (\n <SvgAdd />\n )\n }\n styleType=\"high-visibility\"\n disabled={isLoadingQuery}\n onClick={addGroup}\n >\n {isLoadingQuery ? \"Loading Group(s)\" : \"Add Group\"}\n </Button>\n <ButtonGroup className=\"toolbar-buttons\">\n <ToggleSwitch\n label=\"Color by Group\"\n labelPosition=\"left\"\n className=\"group-view-icon toggle\"\n disabled={isLoadingQuery}\n checked={showGroupColor}\n onChange={toggleGroupColor}\n ></ToggleSwitch>\n <IconButton\n title=\"Show All\"\n onClick={showAll}\n disabled={isLoadingQuery}\n styleType=\"borderless\"\n className=\"group-view-icon\"\n >\n <SvgVisibilityShow />\n </IconButton>\n <IconButton\n title=\"Hide All\"\n onClick={hideAll}\n disabled={isLoadingQuery}\n styleType=\"borderless\"\n className=\"group-view-icon\"\n >\n <SvgVisibilityHide />\n </IconButton>\n </ButtonGroup>\n </div>\n {isLoading ? (\n <LoadingOverlay />\n ) : groups.length === 0 ? (\n <EmptyMessage message=\"No Groups available.\" />\n ) : (\n <div className=\"group-list\">\n {groups\n .sort(\n (a, b) =>\n a.groupName?.localeCompare(b.groupName ?? \"\") ?? 1,\n )\n .map((g) => (\n <GroupTile\n key={g.id}\n title={g.groupName ? g.groupName : \"Untitled\"}\n subText={g.description}\n actionGroup={\n <div className=\"actions\">\n {showGroupColor && (\n <IconButton\n styleType=\"borderless\"\n className=\"group-view-icon\"\n >\n <SvgRectangle\n stroke-width=\"100\"\n stroke={getGroupColor(\n groups.findIndex(\n (group) => g.id === group.id,\n ),\n )}\n />\n </IconButton>\n )}\n {g.id && hiddenGroupsIds.includes(g.id) ? (\n <IconButton\n disabled={isLoadingQuery}\n styleType=\"borderless\"\n className=\"group-view-icon\"\n onClick={async () => {\n await showGroup(g);\n setHiddenGroupsIds(\n hiddenGroupsIds.filter((id) => g.id !== id),\n );\n }}\n >\n <SvgVisibilityHide />\n </IconButton>\n ) : (\n <IconButton\n disabled={isLoadingQuery}\n styleType=\"borderless\"\n className=\"group-view-icon\"\n onClick={async () => {\n await hideGroups([g]);\n setHiddenGroupsIds(\n hiddenGroupsIds.concat(g.id ? [g.id] : []),\n );\n }}\n >\n <SvgVisibilityShow />\n </IconButton>\n )}\n <DropdownMenu\n disabled={isLoadingQuery}\n menuItems={(close: () => void) => [\n <MenuItem\n key={0}\n onClick={async () => onModify(g)}\n icon={<SvgEdit />}\n >\n Modify\n </MenuItem>,\n <MenuItem\n key={1}\n onClick={async () => openProperties(g)}\n icon={<SvgList />}\n >\n Properties\n </MenuItem>,\n <MenuItem\n key={2}\n onClick={() => {\n setSelectedGroup(g);\n setShowDeleteModal(true);\n close();\n }}\n icon={<SvgDelete />}\n >\n Remove\n </MenuItem>,\n ]}\n >\n <IconButton\n disabled={isLoadingQuery}\n styleType=\"borderless\"\n >\n <SvgMore\n style={{\n width: \"16px\",\n height: \"16px\",\n }}\n />\n </IconButton>\n </DropdownMenu>\n </div>\n }\n onClickTitle={\n isLoadingQuery\n ? undefined\n : async () => openProperties(g)\n }\n />\n ))}\n </div>\n )}\n </Surface>\n <DeleteModal\n entityName={selectedGroup?.groupName ?? \"\"}\n show={showDeleteModal}\n setShow={setShowDeleteModal}\n onDelete={async () => {\n const accessToken = await getAccessToken();\n await mappingClient.deleteGroup(\n accessToken,\n iModelId,\n mapping.id ?? \"\",\n selectedGroup?.id ?? \"\",\n );\n }}\n refresh={refresh}\n />\n </>\n );\n }\n};\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Presentation } from "@itwin/presentation-frontend";
|
|
2
2
|
import { useActiveIModelConnection } from "@itwin/appui-react";
|
|
3
3
|
import React, { useCallback, useEffect, useMemo, useState } from "react";
|
|
4
|
-
import {
|
|
4
|
+
import { WidgetHeader } from "./utils";
|
|
5
5
|
import { clearEmphasizedOverriddenElements, manufactureKeys, visualizeElements, visualizeElementsByKeys, zoomToElements, } from "./viewerUtils";
|
|
6
6
|
import "./PropertyMenu.scss";
|
|
7
7
|
import GroupPropertyAction from "./GroupPropertyAction";
|
|
@@ -90,12 +90,13 @@ export const PropertyMenu = ({ iModelId, mappingId, group, goBack, hideGroupProp
|
|
|
90
90
|
const initialize = async () => {
|
|
91
91
|
var _a;
|
|
92
92
|
try {
|
|
93
|
-
const
|
|
94
|
-
|
|
93
|
+
const query = (_a = group.query) !== null && _a !== void 0 ? _a : "";
|
|
94
|
+
const queryRowCount = await iModelConnection.queryRowCount(query);
|
|
95
|
+
if (queryRowCount === 0) {
|
|
95
96
|
toaster.warning("The query is valid but produced no results.");
|
|
96
97
|
await goBack();
|
|
97
98
|
}
|
|
98
|
-
const keys = await manufactureKeys(
|
|
99
|
+
const keys = await manufactureKeys(query, iModelConnection);
|
|
99
100
|
setKeySet(keys);
|
|
100
101
|
Presentation.selection.clearSelection("GroupingMappingWidget", iModelConnection);
|
|
101
102
|
clearEmphasizedOverriddenElements();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropertyMenu.js","sourceRoot":"","sources":["../../../../src/widget/components/PropertyMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\n\nimport { fetchIdsFromQuery, WidgetHeader } from \"./utils\";\nimport {\n clearEmphasizedOverriddenElements,\n manufactureKeys,\n visualizeElements,\n visualizeElementsByKeys,\n zoomToElements,\n} from \"./viewerUtils\";\nimport type { GroupType } from \"./Grouping\";\nimport \"./PropertyMenu.scss\";\nimport GroupPropertyAction from \"./GroupPropertyAction\";\nimport CalculatedPropertyAction from \"./CalculatedPropertyAction\";\nimport type { GroupPropertyType } from \"./GroupPropertyTable\";\nimport GroupPropertyTable from \"./GroupPropertyTable\";\nimport type {\n CalculatedPropertyType,\n} from \"./CalculatedPropertyTable\";\nimport CalculatedPropertyTable from \"./CalculatedPropertyTable\";\nimport {\n IconButton,\n InformationPanel,\n InformationPanelBody,\n InformationPanelHeader,\n InformationPanelWrapper,\n LabeledTextarea,\n ProgressRadial,\n Text,\n toaster,\n} from \"@itwin/itwinui-react\";\nimport type { CellProps } from \"react-table\";\nimport type {\n CustomCalculationType,\n} from \"./CustomCalculationTable\";\nimport CustomCalculationTable from \"./CustomCalculationTable\";\nimport CustomCalculationAction from \"./CustomCalculationAction\";\nimport { KeySet } from \"@itwin/presentation-common\";\nimport { SvgProperties } from \"@itwin/itwinui-icons-react\";\nimport type { PossibleDataType, PropertyMap } from \"../../formula/Types\";\nimport { useCombinedFetchRefresh } from \"../hooks/useFetchData\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\n\ninterface PropertyModifyProps {\n iModelId: string;\n mappingId: string;\n group: GroupType;\n goBack: () => Promise<void>;\n hideGroupProps?: boolean;\n hideCalculatedProps?: boolean;\n hideCustomCalculationProps?: boolean;\n}\n\nexport enum PropertyMenuView {\n DEFAULT = \"default\",\n ADD_GROUP_PROPERTY = \"add_group_property\",\n MODIFY_GROUP_PROPERTY = \"modify_group_property\",\n ADD_CALCULATED_PROPERTY = \"add_calculated_property\",\n MODIFY_CALCULATED_PROPERTY = \"modify_calculated_property\",\n ADD_CUSTOM_CALCULATION = \"add_custom_calculation\",\n MODIFY_CUSTOM_CALCULATION = \"modify_custom_calculation\",\n}\n\nconst stringToPossibleDataType = (str?: string): PossibleDataType => {\n if (!str)\n return \"Undefined\";\n\n switch (str.toLowerCase()) {\n case \"double\":\n case \"number\": return \"Number\";\n case \"string\": return \"String\";\n case \"boolean\": return \"Boolean\";\n default: return \"Undefined\";\n }\n};\n\nconst convertToPropertyMap = (\n groupProperties: GroupPropertyType[],\n calculatedProperties: CalculatedPropertyType[],\n customCalculations: CustomCalculationType[],\n selectedPropertyName?: string\n): PropertyMap => {\n const map: PropertyMap = {};\n const selectedLowerName = selectedPropertyName?.toLowerCase();\n\n groupProperties.forEach((p) => {\n const lowerName = p.propertyName?.toLowerCase();\n if (lowerName && lowerName !== selectedLowerName)\n map[lowerName] = stringToPossibleDataType(p.dataType);\n });\n\n calculatedProperties.forEach((p) => {\n const lowerName = p.propertyName?.toLowerCase();\n if (lowerName)\n map[lowerName] = \"Number\";\n });\n\n customCalculations.forEach((p) => {\n const lowerName = p.propertyName?.toLowerCase();\n if (lowerName && lowerName !== selectedLowerName)\n map[lowerName] = stringToPossibleDataType(p.dataType);\n });\n\n return map;\n};\n\nexport const PropertyMenu = ({\n iModelId,\n mappingId,\n group,\n goBack,\n hideGroupProps = false,\n hideCalculatedProps = false,\n hideCustomCalculationProps = false,\n}: PropertyModifyProps) => {\n const groupId = group.id ?? \"\";\n\n const { getAccessToken } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n\n const iModelConnection = useActiveIModelConnection() as IModelConnection;\n const [propertyMenuView, setPropertyMenuView] = useState<PropertyMenuView>(\n PropertyMenuView.DEFAULT,\n );\n const [selectedGroupProperty, setSelectedGroupProperty] =\n useState<GroupPropertyType | undefined>(undefined);\n const [selectedCalculatedProperty, setSelectedCalculatedProperty] =\n useState<CalculatedPropertyType | undefined>(undefined);\n const [selectedCustomCalculation, setSelectedCustomCalculation] =\n useState<CustomCalculationType | undefined>(undefined);\n const [isInformationPanelOpen, setIsInformationPanelOpen] =\n useState<boolean>(false);\n const [resolvedHiliteIds, setResolvedHiliteIds] = useState<string[]>([]);\n const [keySet, setKeySet] = useState<KeySet>();\n const [isLoading, setIsLoading] = useState<boolean>(true);\n\n const fetchGroupProperties = useMemo(\n () => {\n return async () => mappingClient.getGroupProperties((await getAccessToken()), iModelId, mappingId, groupId);\n },\n [getAccessToken, mappingClient, iModelId, mappingId, groupId],\n );\n const { isLoading: isLoadingGroupProperties, data: groupProperties, refreshData: refreshGroupProperties } =\n useCombinedFetchRefresh<GroupPropertyType>(fetchGroupProperties);\n\n const fetchCalculatedProperties = useMemo(\n () => {\n return async () => mappingClient.getCalculatedProperties((await getAccessToken()), iModelId, mappingId, groupId);\n },\n [getAccessToken, mappingClient, iModelId, mappingId, groupId],\n );\n const { isLoading: isLoadingCalculatedProperties, data: calculatedProperties, refreshData: refreshCalculatedProperties } =\n useCombinedFetchRefresh<CalculatedPropertyType>(fetchCalculatedProperties);\n\n const fetchCustomCalculations = useMemo(\n () => {\n return async () => mappingClient.getCustomCalculations((await getAccessToken()), iModelId, mappingId, groupId);\n },\n [getAccessToken, mappingClient, iModelId, mappingId, groupId],\n );\n const { isLoading: isLoadingCustomCalculations, data: customCalculations, refreshData: refreshCustomCalculations } =\n useCombinedFetchRefresh<CustomCalculationType>(fetchCustomCalculations);\n\n useEffect(() => {\n const initialize = async () => {\n try {\n const ids = await fetchIdsFromQuery(group.query ?? \"\", iModelConnection);\n if (ids.length === 0) {\n toaster.warning(\"The query is valid but produced no results.\");\n await goBack();\n }\n const keys = await manufactureKeys(ids, iModelConnection);\n setKeySet(keys);\n Presentation.selection.clearSelection(\n \"GroupingMappingWidget\",\n iModelConnection,\n );\n clearEmphasizedOverriddenElements();\n const resolvedIds = await visualizeElementsByKeys(keys, \"red\");\n await zoomToElements(resolvedIds);\n setResolvedHiliteIds(resolvedIds);\n setIsLoading(false);\n } catch {\n toaster.negative(`Could not load ${group.groupName}.`);\n await goBack();\n }\n };\n void initialize();\n }, [iModelConnection, group.query, goBack, group.groupName]);\n\n const onGroupPropertyModify = useCallback(\n (value: CellProps<GroupPropertyType>) => {\n setSelectedGroupProperty(value.row.original);\n setPropertyMenuView(PropertyMenuView.MODIFY_GROUP_PROPERTY);\n },\n [],\n );\n\n const onCalculatedPropertyModify = useCallback(\n (value: CellProps<CalculatedPropertyType>) => {\n setSelectedCalculatedProperty(value.row.original);\n setPropertyMenuView(PropertyMenuView.MODIFY_CALCULATED_PROPERTY);\n },\n [],\n );\n\n const onCustomCalculationModify = useCallback(\n (value: CellProps<CustomCalculationType>) => {\n setSelectedCustomCalculation(value.row.original);\n setPropertyMenuView(PropertyMenuView.MODIFY_CUSTOM_CALCULATION);\n },\n [],\n );\n\n const groupPropertyReturn = useCallback(async (modified: boolean) => {\n setPropertyMenuView(PropertyMenuView.DEFAULT);\n modified && await refreshGroupProperties();\n }, [refreshGroupProperties]);\n\n const calculatedPropertyReturn = useCallback(async (modified: boolean) => {\n visualizeElements(resolvedHiliteIds, \"red\");\n await zoomToElements(resolvedHiliteIds);\n setPropertyMenuView(PropertyMenuView.DEFAULT);\n modified && await refreshCalculatedProperties();\n }, [resolvedHiliteIds, refreshCalculatedProperties]);\n\n const customCalculationReturn = useCallback(async (modified: boolean) => {\n setPropertyMenuView(PropertyMenuView.DEFAULT);\n modified && await refreshCustomCalculations();\n }, [refreshCustomCalculations]);\n\n if (isLoading) {\n return (\n <div className='loading-overlay'>\n <Text>Loading Group</Text>\n <ProgressRadial indeterminate />\n <Text>Please wait...</Text>\n </div>\n );\n }\n\n switch (propertyMenuView) {\n case PropertyMenuView.ADD_GROUP_PROPERTY:\n return (\n <GroupPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n keySet={keySet ?? new KeySet()}\n returnFn={groupPropertyReturn}\n />\n );\n case PropertyMenuView.MODIFY_GROUP_PROPERTY:\n return (\n <GroupPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n keySet={keySet ?? new KeySet()}\n groupPropertyId={selectedGroupProperty?.id ?? \"\"}\n groupPropertyName={selectedGroupProperty?.propertyName ?? \"\"}\n returnFn={groupPropertyReturn}\n />\n );\n case PropertyMenuView.ADD_CALCULATED_PROPERTY:\n return (\n <CalculatedPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n ids={resolvedHiliteIds}\n returnFn={calculatedPropertyReturn}\n />\n );\n case PropertyMenuView.MODIFY_CALCULATED_PROPERTY:\n return (\n <CalculatedPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n property={selectedCalculatedProperty}\n ids={resolvedHiliteIds}\n returnFn={calculatedPropertyReturn}\n />\n );\n case PropertyMenuView.ADD_CUSTOM_CALCULATION:\n return (\n <CustomCalculationAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n properties={convertToPropertyMap(groupProperties, calculatedProperties, customCalculations)}\n returnFn={customCalculationReturn}\n />\n );\n case PropertyMenuView.MODIFY_CUSTOM_CALCULATION:\n return (\n <CustomCalculationAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n properties={convertToPropertyMap(groupProperties, calculatedProperties, customCalculations, selectedCustomCalculation?.propertyName)}\n customCalculation={selectedCustomCalculation}\n returnFn={customCalculationReturn}\n />\n );\n default:\n return (\n <InformationPanelWrapper className='property-menu-wrapper'>\n <div className='property-header'>\n <WidgetHeader\n title={`${group.groupName ?? \"\"}`}\n returnFn={goBack}\n />\n <IconButton\n styleType='borderless'\n onClick={() => setIsInformationPanelOpen(true)}\n >\n <SvgProperties />\n </IconButton>\n </div>\n <div className='property-menu-container'>\n {!hideGroupProps && (\n <div className='property-table'>\n <GroupPropertyTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onGroupPropertyModify={onGroupPropertyModify}\n setSelectedGroupProperty={setSelectedGroupProperty}\n setGroupModifyView={setPropertyMenuView}\n isLoadingGroupProperties={isLoadingGroupProperties}\n groupProperties={groupProperties}\n refreshGroupProperties={refreshGroupProperties}\n selectedGroupProperty={selectedGroupProperty}\n />\n </div>\n )}\n\n {!hideCalculatedProps && (\n <div className='property-table'>\n <CalculatedPropertyTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onCalculatedPropertyModify={onCalculatedPropertyModify}\n setSelectedCalculatedProperty={setSelectedCalculatedProperty}\n setGroupModifyView={setPropertyMenuView}\n isLoadingCalculatedProperties={isLoadingCalculatedProperties}\n calculatedProperties={calculatedProperties}\n refreshCalculatedProperties={refreshCalculatedProperties}\n selectedCalculatedProperty={selectedCalculatedProperty}\n />\n </div>\n )}\n {!hideCustomCalculationProps && (\n <div className='property-table'>\n <CustomCalculationTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onCustomCalculationModify={onCustomCalculationModify}\n setSelectedCustomCalculation={setSelectedCustomCalculation}\n setGroupModifyView={setPropertyMenuView}\n isLoadingCustomCalculations={isLoadingCustomCalculations}\n customCalculations={customCalculations}\n refreshCustomCalculations={refreshCustomCalculations}\n selectedCustomCalculation={selectedCustomCalculation}\n />\n </div>\n )}\n </div>\n <InformationPanel\n className='information-panel'\n isOpen={isInformationPanelOpen}\n >\n <InformationPanelHeader\n onClose={() => setIsInformationPanelOpen(false)}\n >\n <Text variant='subheading'>{`${group.groupName ?? \"\"} Information`}</Text>\n </InformationPanelHeader>\n <InformationPanelBody>\n <div className='information-body'>\n <LabeledTextarea\n label='Query'\n rows={15}\n readOnly\n defaultValue={group.query ?? \"\"}\n />\n </div>\n </InformationPanelBody>\n </InformationPanel>\n </InformationPanelWrapper>\n );\n }\n};\n"]}
|
|
1
|
+
{"version":3,"file":"PropertyMenu.js","sourceRoot":"","sources":["../../../../src/widget/components/PropertyMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\n\nimport { WidgetHeader } from \"./utils\";\nimport {\n clearEmphasizedOverriddenElements,\n manufactureKeys,\n visualizeElements,\n visualizeElementsByKeys,\n zoomToElements,\n} from \"./viewerUtils\";\nimport type { GroupType } from \"./Grouping\";\nimport \"./PropertyMenu.scss\";\nimport GroupPropertyAction from \"./GroupPropertyAction\";\nimport CalculatedPropertyAction from \"./CalculatedPropertyAction\";\nimport type { GroupPropertyType } from \"./GroupPropertyTable\";\nimport GroupPropertyTable from \"./GroupPropertyTable\";\nimport type {\n CalculatedPropertyType,\n} from \"./CalculatedPropertyTable\";\nimport CalculatedPropertyTable from \"./CalculatedPropertyTable\";\nimport {\n IconButton,\n InformationPanel,\n InformationPanelBody,\n InformationPanelHeader,\n InformationPanelWrapper,\n LabeledTextarea,\n ProgressRadial,\n Text,\n toaster,\n} from \"@itwin/itwinui-react\";\nimport type { CellProps } from \"react-table\";\nimport type {\n CustomCalculationType,\n} from \"./CustomCalculationTable\";\nimport CustomCalculationTable from \"./CustomCalculationTable\";\nimport CustomCalculationAction from \"./CustomCalculationAction\";\nimport { KeySet } from \"@itwin/presentation-common\";\nimport { SvgProperties } from \"@itwin/itwinui-icons-react\";\nimport type { PossibleDataType, PropertyMap } from \"../../formula/Types\";\nimport { useCombinedFetchRefresh } from \"../hooks/useFetchData\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\n\ninterface PropertyModifyProps {\n iModelId: string;\n mappingId: string;\n group: GroupType;\n goBack: () => Promise<void>;\n hideGroupProps?: boolean;\n hideCalculatedProps?: boolean;\n hideCustomCalculationProps?: boolean;\n}\n\nexport enum PropertyMenuView {\n DEFAULT = \"default\",\n ADD_GROUP_PROPERTY = \"add_group_property\",\n MODIFY_GROUP_PROPERTY = \"modify_group_property\",\n ADD_CALCULATED_PROPERTY = \"add_calculated_property\",\n MODIFY_CALCULATED_PROPERTY = \"modify_calculated_property\",\n ADD_CUSTOM_CALCULATION = \"add_custom_calculation\",\n MODIFY_CUSTOM_CALCULATION = \"modify_custom_calculation\",\n}\n\nconst stringToPossibleDataType = (str?: string): PossibleDataType => {\n if (!str)\n return \"Undefined\";\n\n switch (str.toLowerCase()) {\n case \"double\":\n case \"number\": return \"Number\";\n case \"string\": return \"String\";\n case \"boolean\": return \"Boolean\";\n default: return \"Undefined\";\n }\n};\n\nconst convertToPropertyMap = (\n groupProperties: GroupPropertyType[],\n calculatedProperties: CalculatedPropertyType[],\n customCalculations: CustomCalculationType[],\n selectedPropertyName?: string\n): PropertyMap => {\n const map: PropertyMap = {};\n const selectedLowerName = selectedPropertyName?.toLowerCase();\n\n groupProperties.forEach((p) => {\n const lowerName = p.propertyName?.toLowerCase();\n if (lowerName && lowerName !== selectedLowerName)\n map[lowerName] = stringToPossibleDataType(p.dataType);\n });\n\n calculatedProperties.forEach((p) => {\n const lowerName = p.propertyName?.toLowerCase();\n if (lowerName)\n map[lowerName] = \"Number\";\n });\n\n customCalculations.forEach((p) => {\n const lowerName = p.propertyName?.toLowerCase();\n if (lowerName && lowerName !== selectedLowerName)\n map[lowerName] = stringToPossibleDataType(p.dataType);\n });\n\n return map;\n};\n\nexport const PropertyMenu = ({\n iModelId,\n mappingId,\n group,\n goBack,\n hideGroupProps = false,\n hideCalculatedProps = false,\n hideCustomCalculationProps = false,\n}: PropertyModifyProps) => {\n const groupId = group.id ?? \"\";\n\n const { getAccessToken } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n\n const iModelConnection = useActiveIModelConnection() as IModelConnection;\n const [propertyMenuView, setPropertyMenuView] = useState<PropertyMenuView>(\n PropertyMenuView.DEFAULT,\n );\n const [selectedGroupProperty, setSelectedGroupProperty] =\n useState<GroupPropertyType | undefined>(undefined);\n const [selectedCalculatedProperty, setSelectedCalculatedProperty] =\n useState<CalculatedPropertyType | undefined>(undefined);\n const [selectedCustomCalculation, setSelectedCustomCalculation] =\n useState<CustomCalculationType | undefined>(undefined);\n const [isInformationPanelOpen, setIsInformationPanelOpen] =\n useState<boolean>(false);\n const [resolvedHiliteIds, setResolvedHiliteIds] = useState<string[]>([]);\n const [keySet, setKeySet] = useState<KeySet>();\n const [isLoading, setIsLoading] = useState<boolean>(true);\n\n const fetchGroupProperties = useMemo(\n () => {\n return async () => mappingClient.getGroupProperties((await getAccessToken()), iModelId, mappingId, groupId);\n },\n [getAccessToken, mappingClient, iModelId, mappingId, groupId],\n );\n const { isLoading: isLoadingGroupProperties, data: groupProperties, refreshData: refreshGroupProperties } =\n useCombinedFetchRefresh<GroupPropertyType>(fetchGroupProperties);\n\n const fetchCalculatedProperties = useMemo(\n () => {\n return async () => mappingClient.getCalculatedProperties((await getAccessToken()), iModelId, mappingId, groupId);\n },\n [getAccessToken, mappingClient, iModelId, mappingId, groupId],\n );\n const { isLoading: isLoadingCalculatedProperties, data: calculatedProperties, refreshData: refreshCalculatedProperties } =\n useCombinedFetchRefresh<CalculatedPropertyType>(fetchCalculatedProperties);\n\n const fetchCustomCalculations = useMemo(\n () => {\n return async () => mappingClient.getCustomCalculations((await getAccessToken()), iModelId, mappingId, groupId);\n },\n [getAccessToken, mappingClient, iModelId, mappingId, groupId],\n );\n const { isLoading: isLoadingCustomCalculations, data: customCalculations, refreshData: refreshCustomCalculations } =\n useCombinedFetchRefresh<CustomCalculationType>(fetchCustomCalculations);\n\n useEffect(() => {\n const initialize = async () => {\n try {\n const query = group.query ?? \"\";\n const queryRowCount = await iModelConnection.queryRowCount(query);\n if (queryRowCount === 0) {\n toaster.warning(\"The query is valid but produced no results.\");\n await goBack();\n }\n const keys = await manufactureKeys(query, iModelConnection);\n setKeySet(keys);\n Presentation.selection.clearSelection(\n \"GroupingMappingWidget\",\n iModelConnection,\n );\n clearEmphasizedOverriddenElements();\n const resolvedIds = await visualizeElementsByKeys(keys, \"red\");\n await zoomToElements(resolvedIds);\n setResolvedHiliteIds(resolvedIds);\n setIsLoading(false);\n } catch {\n toaster.negative(`Could not load ${group.groupName}.`);\n await goBack();\n }\n };\n void initialize();\n }, [iModelConnection, group.query, goBack, group.groupName]);\n\n const onGroupPropertyModify = useCallback(\n (value: CellProps<GroupPropertyType>) => {\n setSelectedGroupProperty(value.row.original);\n setPropertyMenuView(PropertyMenuView.MODIFY_GROUP_PROPERTY);\n },\n [],\n );\n\n const onCalculatedPropertyModify = useCallback(\n (value: CellProps<CalculatedPropertyType>) => {\n setSelectedCalculatedProperty(value.row.original);\n setPropertyMenuView(PropertyMenuView.MODIFY_CALCULATED_PROPERTY);\n },\n [],\n );\n\n const onCustomCalculationModify = useCallback(\n (value: CellProps<CustomCalculationType>) => {\n setSelectedCustomCalculation(value.row.original);\n setPropertyMenuView(PropertyMenuView.MODIFY_CUSTOM_CALCULATION);\n },\n [],\n );\n\n const groupPropertyReturn = useCallback(async (modified: boolean) => {\n setPropertyMenuView(PropertyMenuView.DEFAULT);\n modified && await refreshGroupProperties();\n }, [refreshGroupProperties]);\n\n const calculatedPropertyReturn = useCallback(async (modified: boolean) => {\n visualizeElements(resolvedHiliteIds, \"red\");\n await zoomToElements(resolvedHiliteIds);\n setPropertyMenuView(PropertyMenuView.DEFAULT);\n modified && await refreshCalculatedProperties();\n }, [resolvedHiliteIds, refreshCalculatedProperties]);\n\n const customCalculationReturn = useCallback(async (modified: boolean) => {\n setPropertyMenuView(PropertyMenuView.DEFAULT);\n modified && await refreshCustomCalculations();\n }, [refreshCustomCalculations]);\n\n if (isLoading) {\n return (\n <div className='loading-overlay'>\n <Text>Loading Group</Text>\n <ProgressRadial indeterminate />\n <Text>Please wait...</Text>\n </div>\n );\n }\n\n switch (propertyMenuView) {\n case PropertyMenuView.ADD_GROUP_PROPERTY:\n return (\n <GroupPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n keySet={keySet ?? new KeySet()}\n returnFn={groupPropertyReturn}\n />\n );\n case PropertyMenuView.MODIFY_GROUP_PROPERTY:\n return (\n <GroupPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n keySet={keySet ?? new KeySet()}\n groupPropertyId={selectedGroupProperty?.id ?? \"\"}\n groupPropertyName={selectedGroupProperty?.propertyName ?? \"\"}\n returnFn={groupPropertyReturn}\n />\n );\n case PropertyMenuView.ADD_CALCULATED_PROPERTY:\n return (\n <CalculatedPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n ids={resolvedHiliteIds}\n returnFn={calculatedPropertyReturn}\n />\n );\n case PropertyMenuView.MODIFY_CALCULATED_PROPERTY:\n return (\n <CalculatedPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n property={selectedCalculatedProperty}\n ids={resolvedHiliteIds}\n returnFn={calculatedPropertyReturn}\n />\n );\n case PropertyMenuView.ADD_CUSTOM_CALCULATION:\n return (\n <CustomCalculationAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n properties={convertToPropertyMap(groupProperties, calculatedProperties, customCalculations)}\n returnFn={customCalculationReturn}\n />\n );\n case PropertyMenuView.MODIFY_CUSTOM_CALCULATION:\n return (\n <CustomCalculationAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n properties={convertToPropertyMap(groupProperties, calculatedProperties, customCalculations, selectedCustomCalculation?.propertyName)}\n customCalculation={selectedCustomCalculation}\n returnFn={customCalculationReturn}\n />\n );\n default:\n return (\n <InformationPanelWrapper className='property-menu-wrapper'>\n <div className='property-header'>\n <WidgetHeader\n title={`${group.groupName ?? \"\"}`}\n returnFn={goBack}\n />\n <IconButton\n styleType='borderless'\n onClick={() => setIsInformationPanelOpen(true)}\n >\n <SvgProperties />\n </IconButton>\n </div>\n <div className='property-menu-container'>\n {!hideGroupProps && (\n <div className='property-table'>\n <GroupPropertyTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onGroupPropertyModify={onGroupPropertyModify}\n setSelectedGroupProperty={setSelectedGroupProperty}\n setGroupModifyView={setPropertyMenuView}\n isLoadingGroupProperties={isLoadingGroupProperties}\n groupProperties={groupProperties}\n refreshGroupProperties={refreshGroupProperties}\n selectedGroupProperty={selectedGroupProperty}\n />\n </div>\n )}\n\n {!hideCalculatedProps && (\n <div className='property-table'>\n <CalculatedPropertyTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onCalculatedPropertyModify={onCalculatedPropertyModify}\n setSelectedCalculatedProperty={setSelectedCalculatedProperty}\n setGroupModifyView={setPropertyMenuView}\n isLoadingCalculatedProperties={isLoadingCalculatedProperties}\n calculatedProperties={calculatedProperties}\n refreshCalculatedProperties={refreshCalculatedProperties}\n selectedCalculatedProperty={selectedCalculatedProperty}\n />\n </div>\n )}\n {!hideCustomCalculationProps && (\n <div className='property-table'>\n <CustomCalculationTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onCustomCalculationModify={onCustomCalculationModify}\n setSelectedCustomCalculation={setSelectedCustomCalculation}\n setGroupModifyView={setPropertyMenuView}\n isLoadingCustomCalculations={isLoadingCustomCalculations}\n customCalculations={customCalculations}\n refreshCustomCalculations={refreshCustomCalculations}\n selectedCustomCalculation={selectedCustomCalculation}\n />\n </div>\n )}\n </div>\n <InformationPanel\n className='information-panel'\n isOpen={isInformationPanelOpen}\n >\n <InformationPanelHeader\n onClose={() => setIsInformationPanelOpen(false)}\n >\n <Text variant='subheading'>{`${group.groupName ?? \"\"} Information`}</Text>\n </InformationPanelHeader>\n <InformationPanelBody>\n <div className='information-body'>\n <LabeledTextarea\n label='Query'\n rows={15}\n readOnly\n defaultValue={group.query ?? \"\"}\n />\n </div>\n </InformationPanelBody>\n </InformationPanel>\n </InformationPanelWrapper>\n );\n }\n};\n"]}
|
|
@@ -3,25 +3,25 @@ import type { FeatureAppearance } from "@itwin/core-common";
|
|
|
3
3
|
import { FeatureOverrideType } from "@itwin/core-common";
|
|
4
4
|
import { KeySet } from "@itwin/presentation-common";
|
|
5
5
|
export declare const isolateElementsByKeys: (keySet: KeySet, replace?: boolean) => Promise<string[]>;
|
|
6
|
-
export declare const
|
|
6
|
+
export declare const isolateElementsByQuery: (query: string, iModelConnection: IModelConnection, replace?: boolean) => Promise<string[]>;
|
|
7
7
|
export declare const isolateElements: (hilitedIds: string[], replace?: boolean) => void;
|
|
8
8
|
export declare const clearIsolatedElements: () => void;
|
|
9
|
-
export declare const
|
|
9
|
+
export declare const hideElementsByQuery: (query: string, iModelConnection: IModelConnection, replace?: boolean) => Promise<string[]>;
|
|
10
10
|
export declare const hideElements: (hilitedIds: string[], replace?: boolean) => void;
|
|
11
11
|
export declare const clearHiddenElements: () => void;
|
|
12
|
-
export declare const
|
|
12
|
+
export declare const overrideElementsByQuery: (iModelConnection: IModelConnection, query: string, color: string, overrideType?: FeatureOverrideType) => Promise<string[]>;
|
|
13
13
|
export declare const overrideElements: (hilitedIds: string[], color: string, overrideType?: FeatureOverrideType) => void;
|
|
14
14
|
export declare const clearOverriddenElements: () => void;
|
|
15
15
|
export declare const emphasizeElements: (hilitedIds: string[], defaultAppearance?: FeatureAppearance | undefined, replace?: boolean) => void;
|
|
16
|
-
export declare const
|
|
16
|
+
export declare const emphasisElementsByQuery: (iModelConnection: IModelConnection, query: string, defaultAppearance?: FeatureAppearance | undefined, replace?: boolean) => Promise<string[]>;
|
|
17
17
|
export declare const emphasizeElementsByKeys: (keySet: KeySet, defaultAppearance?: FeatureAppearance | undefined, replace?: boolean) => Promise<string[]>;
|
|
18
|
-
export declare const
|
|
18
|
+
export declare const visualizeElementsByQuery: (query: string, color: string, iModelConnection: IModelConnection, replace?: boolean, wantEmphasis?: boolean) => Promise<string[]>;
|
|
19
19
|
export declare const visualizeElementsByKeys: (keySet: KeySet, color: string, replace?: boolean, wantEmphasis?: boolean) => Promise<string[]>;
|
|
20
20
|
export declare const visualizeElements: (elementIds: string[], color: string, replace?: boolean, wantEmphasis?: boolean) => void;
|
|
21
21
|
export declare const transparentOverriddenElements: () => void;
|
|
22
22
|
export declare const zoomToElements: (elementIds: string[]) => Promise<void>;
|
|
23
|
-
export declare const getHiliteIds: (
|
|
24
|
-
export declare const manufactureKeys: (
|
|
23
|
+
export declare const getHiliteIds: (query: string, iModelConnection: IModelConnection) => Promise<string[]>;
|
|
24
|
+
export declare const manufactureKeys: (query: string, iModelConnection: IModelConnection) => Promise<KeySet>;
|
|
25
25
|
export declare const clearEmphasizedElements: () => void;
|
|
26
26
|
export declare const clearEmphasizedOverriddenElements: () => void;
|
|
27
27
|
export declare const clearAll: () => void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EmphasizeElements, IModelApp } from "@itwin/core-frontend";
|
|
2
|
-
import { ColorDef, FeatureOverrideType } from "@itwin/core-common";
|
|
2
|
+
import { ColorDef, FeatureOverrideType, QueryRowFormat } from "@itwin/core-common";
|
|
3
3
|
import { KeySet } from "@itwin/presentation-common";
|
|
4
4
|
import { HiliteSetProvider } from "@itwin/presentation-frontend";
|
|
5
5
|
export const isolateElementsByKeys = async (keySet, replace = false) => {
|
|
@@ -18,12 +18,12 @@ export const isolateElementsByKeys = async (keySet, replace = false) => {
|
|
|
18
18
|
}
|
|
19
19
|
return [];
|
|
20
20
|
};
|
|
21
|
-
export const
|
|
21
|
+
export const isolateElementsByQuery = async (query, iModelConnection, replace = false) => {
|
|
22
22
|
if (!IModelApp.viewManager.selectedView) {
|
|
23
23
|
return [];
|
|
24
24
|
}
|
|
25
25
|
const vp = IModelApp.viewManager.selectedView;
|
|
26
|
-
const keySet = await manufactureKeys(
|
|
26
|
+
const keySet = await manufactureKeys(query, iModelConnection);
|
|
27
27
|
const hiliteProvider = HiliteSetProvider.create({
|
|
28
28
|
imodel: vp.iModel,
|
|
29
29
|
});
|
|
@@ -51,12 +51,12 @@ export const clearIsolatedElements = () => {
|
|
|
51
51
|
const emph = EmphasizeElements.getOrCreate(vp);
|
|
52
52
|
emph.clearIsolatedElements(vp);
|
|
53
53
|
};
|
|
54
|
-
export const
|
|
54
|
+
export const hideElementsByQuery = async (query, iModelConnection, replace = false) => {
|
|
55
55
|
if (!IModelApp.viewManager.selectedView) {
|
|
56
56
|
return [];
|
|
57
57
|
}
|
|
58
58
|
const vp = IModelApp.viewManager.selectedView;
|
|
59
|
-
const keySet = await manufactureKeys(
|
|
59
|
+
const keySet = await manufactureKeys(query, iModelConnection);
|
|
60
60
|
const hiliteProvider = HiliteSetProvider.create({
|
|
61
61
|
imodel: vp.iModel,
|
|
62
62
|
});
|
|
@@ -84,12 +84,12 @@ export const clearHiddenElements = () => {
|
|
|
84
84
|
const emph = EmphasizeElements.getOrCreate(vp);
|
|
85
85
|
emph.clearHiddenElements(vp);
|
|
86
86
|
};
|
|
87
|
-
export const
|
|
87
|
+
export const overrideElementsByQuery = async (iModelConnection, query, color, overrideType = FeatureOverrideType.ColorOnly) => {
|
|
88
88
|
if (!IModelApp.viewManager.selectedView) {
|
|
89
89
|
return [];
|
|
90
90
|
}
|
|
91
91
|
const vp = IModelApp.viewManager.selectedView;
|
|
92
|
-
const keySet = await manufactureKeys(
|
|
92
|
+
const keySet = await manufactureKeys(query, iModelConnection);
|
|
93
93
|
const hiliteProvider = HiliteSetProvider.create({
|
|
94
94
|
imodel: vp.iModel,
|
|
95
95
|
});
|
|
@@ -126,12 +126,12 @@ export const emphasizeElements = (hilitedIds, defaultAppearance = undefined, rep
|
|
|
126
126
|
emph.wantEmphasis = true;
|
|
127
127
|
emph.emphasizeElements(hilitedIds, vp, defaultAppearance, replace);
|
|
128
128
|
};
|
|
129
|
-
export const
|
|
129
|
+
export const emphasisElementsByQuery = async (iModelConnection, query, defaultAppearance = undefined, replace = false) => {
|
|
130
130
|
if (!IModelApp.viewManager.selectedView) {
|
|
131
131
|
return [];
|
|
132
132
|
}
|
|
133
133
|
const vp = IModelApp.viewManager.selectedView;
|
|
134
|
-
const keySet = await manufactureKeys(
|
|
134
|
+
const keySet = await manufactureKeys(query, iModelConnection);
|
|
135
135
|
const hiliteProvider = HiliteSetProvider.create({
|
|
136
136
|
imodel: vp.iModel,
|
|
137
137
|
});
|
|
@@ -159,12 +159,12 @@ export const emphasizeElementsByKeys = async (keySet, defaultAppearance = undefi
|
|
|
159
159
|
}
|
|
160
160
|
return [];
|
|
161
161
|
};
|
|
162
|
-
export const
|
|
162
|
+
export const visualizeElementsByQuery = async (query, color, iModelConnection, replace = false, wantEmphasis = true) => {
|
|
163
163
|
if (!IModelApp.viewManager.selectedView) {
|
|
164
164
|
return [];
|
|
165
165
|
}
|
|
166
166
|
const vp = IModelApp.viewManager.selectedView;
|
|
167
|
-
const keySet = await manufactureKeys(
|
|
167
|
+
const keySet = await manufactureKeys(query, iModelConnection);
|
|
168
168
|
const hiliteProvider = HiliteSetProvider.create({
|
|
169
169
|
imodel: vp.iModel,
|
|
170
170
|
});
|
|
@@ -230,12 +230,12 @@ export const zoomToElements = async (elementIds) => {
|
|
|
230
230
|
// viewChangeOpts.marginPercent = new MarginPercent(0.1, 0.1, 0.1, 0.1);
|
|
231
231
|
await vp.zoomToElements(elementIds, { ...viewChangeOpts });
|
|
232
232
|
};
|
|
233
|
-
export const getHiliteIds = async (
|
|
233
|
+
export const getHiliteIds = async (query, iModelConnection) => {
|
|
234
234
|
if (!IModelApp.viewManager.selectedView) {
|
|
235
235
|
return [];
|
|
236
236
|
}
|
|
237
237
|
const vp = IModelApp.viewManager.selectedView;
|
|
238
|
-
const keySet = await manufactureKeys(
|
|
238
|
+
const keySet = await manufactureKeys(query, iModelConnection);
|
|
239
239
|
const hiliteProvider = HiliteSetProvider.create({
|
|
240
240
|
imodel: vp.iModel,
|
|
241
241
|
});
|
|
@@ -245,39 +245,20 @@ export const getHiliteIds = async (elementIds, iModelConnection) => {
|
|
|
245
245
|
}
|
|
246
246
|
return [];
|
|
247
247
|
};
|
|
248
|
-
export const manufactureKeys = async (
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
if (currBatch.length > 0 && currBatch.length <= batchSize) {
|
|
263
|
-
batches.push(currBatch);
|
|
264
|
-
}
|
|
265
|
-
// retrieve element properties in batches
|
|
266
|
-
let elemProps = [];
|
|
267
|
-
for (const batch of batches) {
|
|
268
|
-
const props = await iModelConnection.elements.getProps(batch);
|
|
269
|
-
elemProps = elemProps.concat(props);
|
|
270
|
-
}
|
|
271
|
-
const isElementId = (elem) => {
|
|
272
|
-
return elem.id !== undefined;
|
|
273
|
-
};
|
|
274
|
-
// create keyset from the element properties
|
|
275
|
-
const keys = elemProps
|
|
276
|
-
.map((elem) => ({
|
|
277
|
-
id: elem.id,
|
|
278
|
-
className: elem.classFullName,
|
|
279
|
-
}))
|
|
280
|
-
.filter(isElementId);
|
|
248
|
+
export const manufactureKeys = async (query, iModelConnection) => {
|
|
249
|
+
query;
|
|
250
|
+
iModelConnection;
|
|
251
|
+
if (query === "") {
|
|
252
|
+
new KeySet();
|
|
253
|
+
}
|
|
254
|
+
const queryWithIdAndECClassName = `SELECT q.ECInstanceId, ec_classname(e.ECClassId) FROM (${query}) q JOIN BisCore.Element e on e.ECInstanceId = q.ECInstanceId`;
|
|
255
|
+
const rowIterator = iModelConnection.query(queryWithIdAndECClassName, undefined, {
|
|
256
|
+
rowFormat: QueryRowFormat.UseECSqlPropertyIndexes,
|
|
257
|
+
});
|
|
258
|
+
const keys = [];
|
|
259
|
+
for await (const value of rowIterator) {
|
|
260
|
+
keys.push({ id: value[0], className: value[1] });
|
|
261
|
+
}
|
|
281
262
|
return new KeySet(keys);
|
|
282
263
|
};
|
|
283
264
|
export const clearEmphasizedElements = () => {
|