@itwin/grouping-mapping-widget 0.5.2 → 0.5.3

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.
@@ -285,7 +285,9 @@ const Groupings = ({ mapping, goBack }) => {
285
285
  react_1.default.createElement(itwinui_icons_react_1.SvgVisibilityShow, null)),
286
286
  react_1.default.createElement(itwinui_react_1.IconButton, { title: "Hide All", onClick: hideAll, disabled: isLoadingQuery, styleType: "borderless", className: "group-view-icon" },
287
287
  react_1.default.createElement(itwinui_icons_react_1.SvgVisibilityHide, null)))),
288
- isLoading ? (react_1.default.createElement(utils_1.LoadingOverlay, null)) : groups.length === 0 ? (react_1.default.createElement(utils_1.EmptyMessage, { message: "No Groups available." })) : (react_1.default.createElement("div", { className: "group-list" }, groups.map((g) => (react_1.default.createElement(GroupTile_1.GroupTile, { key: g.id, title: g.groupName ? g.groupName : "Untitled", subText: g.description, actionGroup: react_1.default.createElement("div", { className: "actions" },
288
+ isLoading ? (react_1.default.createElement(utils_1.LoadingOverlay, null)) : groups.length === 0 ? (react_1.default.createElement(utils_1.EmptyMessage, { message: "No Groups available." })) : (react_1.default.createElement("div", { className: "group-list" }, groups
289
+ .sort((a, b) => { var _a, _b, _c; return (_c = (_a = a.groupName) === null || _a === void 0 ? void 0 : _a.localeCompare((_b = b.groupName) !== null && _b !== void 0 ? _b : "")) !== null && _c !== void 0 ? _c : 1; })
290
+ .map((g) => (react_1.default.createElement(GroupTile_1.GroupTile, { key: g.id, title: g.groupName ? g.groupName : "Untitled", subText: g.description, actionGroup: react_1.default.createElement("div", { className: "actions" },
289
291
  g.id && hiddenGroupsIds.includes(g.id) ? (react_1.default.createElement(itwinui_react_1.IconButton, { disabled: isLoadingQuery, styleType: "borderless", className: "group-view-icon", onClick: async () => {
290
292
  await showGroup(g);
291
293
  setHiddenGroupsIds(hiddenGroupsIds.filter((id) => g.id !== id));
@@ -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, {\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 {\n groups\n .sort((a, b) => a.groupName?.localeCompare(b.groupName ?? \"\") ?? 1)\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 {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"]}
@@ -260,7 +260,9 @@ export const Groupings = ({ mapping, goBack }) => {
260
260
  React.createElement(SvgVisibilityShow, null)),
261
261
  React.createElement(IconButton, { title: "Hide All", onClick: hideAll, disabled: isLoadingQuery, styleType: "borderless", className: "group-view-icon" },
262
262
  React.createElement(SvgVisibilityHide, null)))),
263
- isLoading ? (React.createElement(LoadingOverlay, null)) : groups.length === 0 ? (React.createElement(EmptyMessage, { message: "No Groups available." })) : (React.createElement("div", { className: "group-list" }, groups.map((g) => (React.createElement(GroupTile, { key: g.id, title: g.groupName ? g.groupName : "Untitled", subText: g.description, actionGroup: React.createElement("div", { className: "actions" },
263
+ isLoading ? (React.createElement(LoadingOverlay, null)) : groups.length === 0 ? (React.createElement(EmptyMessage, { message: "No Groups available." })) : (React.createElement("div", { className: "group-list" }, groups
264
+ .sort((a, b) => { var _a, _b, _c; return (_c = (_a = a.groupName) === null || _a === void 0 ? void 0 : _a.localeCompare((_b = b.groupName) !== null && _b !== void 0 ? _b : "")) !== null && _c !== void 0 ? _c : 1; })
265
+ .map((g) => (React.createElement(GroupTile, { key: g.id, title: g.groupName ? g.groupName : "Untitled", subText: g.description, actionGroup: React.createElement("div", { className: "actions" },
264
266
  g.id && hiddenGroupsIds.includes(g.id) ? (React.createElement(IconButton, { disabled: isLoadingQuery, styleType: "borderless", className: "group-view-icon", onClick: async () => {
265
267
  await showGroup(g);
266
268
  setHiddenGroupsIds(hiddenGroupsIds.filter((id) => g.id !== id));
@@ -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, {\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 {\n groups\n .sort((a, b) => a.groupName?.localeCompare(b.groupName ?? \"\") ?? 1)\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 {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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/grouping-mapping-widget",
3
- "version": "0.5.2",
3
+ "version": "0.5.3",
4
4
  "description": "An iTwin.js 3D Viewer Widget that interfaces with the iTwin Reporting Platform.",
5
5
  "keywords": [
6
6
  "Bentley",