@itwin/grouping-mapping-widget 0.20.0 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components/GroupingMappingContext.js +13 -3
- package/lib/cjs/components/GroupingMappingContext.js.map +1 -1
- package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.d.ts +1 -1
- package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.js.map +1 -1
- package/lib/cjs/components/Mappings/Extraction/ExtractionStatusIcon.d.ts +1 -1
- package/lib/cjs/components/Mappings/Extraction/ExtractionStatusIcon.js.map +1 -1
- package/lib/cjs/components/Mappings/Mappings.js +2 -2
- package/lib/cjs/components/Mappings/Mappings.js.map +1 -1
- package/lib/cjs/components/Mappings/MappingsView.d.ts +4 -4
- package/lib/cjs/components/Mappings/MappingsView.js +4 -4
- package/lib/cjs/components/Mappings/MappingsView.js.map +1 -1
- package/lib/cjs/components/Mappings/hooks/useMappingsOperations.d.ts +3 -11
- package/lib/cjs/components/Mappings/hooks/useMappingsOperations.js +32 -25
- package/lib/cjs/components/Mappings/hooks/useMappingsOperations.js.map +1 -1
- package/lib/cjs/components/context/ExtractionStatusDataContext.d.ts +20 -0
- package/lib/cjs/components/context/ExtractionStatusDataContext.js +26 -0
- package/lib/cjs/components/context/ExtractionStatusDataContext.js.map +1 -0
- package/lib/esm/components/GroupingMappingContext.js +13 -3
- package/lib/esm/components/GroupingMappingContext.js.map +1 -1
- package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.d.ts +1 -1
- package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.js.map +1 -1
- package/lib/esm/components/Mappings/Extraction/ExtractionStatusIcon.d.ts +1 -1
- package/lib/esm/components/Mappings/Extraction/ExtractionStatusIcon.js.map +1 -1
- package/lib/esm/components/Mappings/Mappings.js +2 -2
- package/lib/esm/components/Mappings/Mappings.js.map +1 -1
- package/lib/esm/components/Mappings/MappingsView.d.ts +4 -4
- package/lib/esm/components/Mappings/MappingsView.js +4 -4
- package/lib/esm/components/Mappings/MappingsView.js.map +1 -1
- package/lib/esm/components/Mappings/hooks/useMappingsOperations.d.ts +3 -11
- package/lib/esm/components/Mappings/hooks/useMappingsOperations.js +33 -26
- package/lib/esm/components/Mappings/hooks/useMappingsOperations.js.map +1 -1
- package/lib/esm/components/context/ExtractionStatusDataContext.d.ts +20 -0
- package/lib/esm/components/context/ExtractionStatusDataContext.js +22 -0
- package/lib/esm/components/context/ExtractionStatusDataContext.js.map +1 -0
- package/package.json +29 -30
|
@@ -33,6 +33,7 @@ const GroupHilitedElementsContext_1 = require("./context/GroupHilitedElementsCon
|
|
|
33
33
|
const PropertiesContext_1 = require("./context/PropertiesContext");
|
|
34
34
|
const appui_react_1 = require("@itwin/appui-react");
|
|
35
35
|
const ExtractionClientContext_1 = require("./context/ExtractionClientContext");
|
|
36
|
+
const ExtractionStatusDataContext_1 = require("./context/ExtractionStatusDataContext");
|
|
36
37
|
const authorizationClientGetAccessToken = async () => (await core_frontend_1.IModelApp.authorizationClient?.getAccessToken()) ?? "";
|
|
37
38
|
const GroupingMappingContext = (props) => {
|
|
38
39
|
const activeIModelConntextion = (0, appui_react_1.useActiveIModelConnection)();
|
|
@@ -60,6 +61,8 @@ const GroupingMappingContext = (props) => {
|
|
|
60
61
|
const [isOverlappedColored, setIsOverlappedColored] = (0, react_1.useState)(false);
|
|
61
62
|
const [currentHilitedGroups, setCurrentHilitedGroups] = (0, react_1.useState)(1);
|
|
62
63
|
const [overlappedElementGroupPairs, setOverlappedElementGroupPairs] = (0, react_1.useState)([]);
|
|
64
|
+
const [extractionStatusIcon, setExtractionStatusIcon] = (0, react_1.useState)({ iconStatus: undefined, iconMessage: "Loading..." });
|
|
65
|
+
const [extractionMessageData, setExtractionMessageData] = (0, react_1.useState)([]);
|
|
63
66
|
(0, react_1.useEffect)(() => {
|
|
64
67
|
setApiConfig(() => ({
|
|
65
68
|
prefix: props.prefix,
|
|
@@ -112,12 +115,19 @@ const GroupingMappingContext = (props) => {
|
|
|
112
115
|
customUIs,
|
|
113
116
|
setCustomUIs,
|
|
114
117
|
}), [customUIs]);
|
|
118
|
+
const extractionStatusDataValue = (0, react_1.useMemo)(() => ({
|
|
119
|
+
extractionStatusIcon,
|
|
120
|
+
extractionMessageData,
|
|
121
|
+
setExtractionMessageData,
|
|
122
|
+
setExtractionStatusIcon,
|
|
123
|
+
}), [extractionStatusIcon, extractionMessageData]);
|
|
115
124
|
return (react_1.default.createElement(GroupingApiConfigContext_1.GroupingMappingApiConfigContext.Provider, { value: apiConfig },
|
|
116
125
|
react_1.default.createElement(MappingClientContext_1.MappingClientContext.Provider, { value: mappingClient },
|
|
117
126
|
react_1.default.createElement(ExtractionClientContext_1.ExtractionClientContext.Provider, { value: extractionClient },
|
|
118
|
-
react_1.default.createElement(
|
|
119
|
-
react_1.default.createElement(
|
|
120
|
-
react_1.default.createElement(
|
|
127
|
+
react_1.default.createElement(ExtractionStatusDataContext_1.ExtractionStatusDataContext.Provider, { value: extractionStatusDataValue },
|
|
128
|
+
react_1.default.createElement(GroupingMappingCustomUIContext_1.GroupingMappingCustomUIContext.Provider, { value: customUIContextValue },
|
|
129
|
+
react_1.default.createElement(GroupHilitedElementsContext_1.GroupHilitedElementsContext.Provider, { value: hilitedElementsContextValue },
|
|
130
|
+
react_1.default.createElement(PropertiesContext_1.PropertiesContext.Provider, { value: propertiesContextValue }, props.children))))))));
|
|
121
131
|
};
|
|
122
132
|
exports.GroupingMappingContext = GroupingMappingContext;
|
|
123
133
|
//# sourceMappingURL=GroupingMappingContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupingMappingContext.js","sourceRoot":"","sources":["../../../src/components/GroupingMappingContext.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,+CAAoE;AAEpE,wDAAiD;AAMjD,iFAAqF;AACrF,yEAGwC;AAExC,6FAAyH;AAGzH,uFAAoF;AACpF,mEAAgE;AAChE,oDAA+D;AAC/D,+EAAoG;AAmCpG,MAAM,iCAAiC,GAAG,KAAK,IAAI,EAAE,CACnD,CAAC,MAAM,yBAAS,CAAC,mBAAmB,EAAE,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC;AAEzD,MAAM,sBAAsB,GAAG,CAAC,KAAkC,EAAE,EAAE;IAC3E,MAAM,uBAAuB,GAAG,IAAA,uCAAyB,GAAE,CAAC;IAC5D,MAAM,UAAU,GAAmC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;IAChF,MAAM,oBAAoB,GAAqC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,MAAM,CAAC;IACtG,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAkB,IAAA,0CAAmB,EAAC,UAAU,CAAC,CAAC,CAAC;IACrG,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,IAAA,gBAAQ,EAAoB,IAAA,gDAAsB,EAAC,oBAAoB,CAAC,CAAC,CAAC;IAC1H,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EACxC,IAAA,8DAA6B,EAAC,KAAK,CAAC,SAAS,CAAC,CAC/C,CAAC;IACF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAA2B;QACnE,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,iCAAiC;QACzE,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC,CAAC;IACH,MAAM,yBAAyB,GAAG,IAAA,cAAM,EAA8B,IAAI,GAAG,EAAE,CAAC,CAAC;IACjF,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAc,IAAI,GAAG,EAAE,CAAC,CAAC;IAC/E,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAC;IACrE,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAC;IAC/E,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAU,EAAE,CAAC,CAAC;IAClD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAkB,EAAE,CAAC,CAAC;IAC5E,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,IAAA,gBAAQ,EAAuB,EAAE,CAAC,CAAC;IAC3F,MAAM,CAAC,2BAA2B,EAAE,8BAA8B,CAAC,GAAG,IAAA,gBAAQ,EAAsB,EAAE,CAAC,CAAC;IACxG,MAAM,CAAC,wBAAwB,EAAE,2BAA2B,CAAC,GAAG,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,GAAG,IAAA,gBAAQ,EAAgC,IAAI,GAAG,EAAE,CAAC,CAAC;IAC/G,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,IAAA,gBAAQ,EAAsB,IAAI,GAAG,EAAE,CAAC,CAAC;IAC3F,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAC;IAC/E,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,IAAA,gBAAQ,EAAS,CAAC,CAAC,CAAC;IAC5E,MAAM,CAAC,2BAA2B,EAAE,8BAA8B,CAAC,GAAG,IAAA,gBAAQ,EAAgC,EAAE,CAAC,CAAC;IAElH,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,iCAAiC;YACzE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,uBAAuB;SACpE,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,uBAAuB,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAE1G,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,gBAAgB,CAAC,IAAA,0CAAmB,EAAC,UAAU,CAAC,CAAC,CAAC;IACpD,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,mBAAmB,CAAC,IAAA,gDAAsB,EAAC,oBAAoB,CAAC,CAAC,CAAC;IACpE,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAE3B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,YAAY,CAAC,IAAA,8DAA6B,EAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/D,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAEtB,MAAM,2BAA2B,GAAG,IAAA,eAAO,EACzC,GAAG,EAAE,CAAC,CAAC;QACL,cAAc;QACd,iBAAiB;QACjB,eAAe;QACf,kBAAkB;QAClB,yBAAyB;QACzB,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,2BAA2B;QAC3B,sBAAsB;QACtB,yBAAyB;QACzB,iBAAiB;QACjB,oBAAoB;QACpB,mBAAmB;QACnB,sBAAsB;QACtB,oBAAoB;QACpB,uBAAuB;QACvB,2BAA2B;QAC3B,8BAA8B;KAC/B,CAAC,EACF,CAAC,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,2BAA2B,CAAC,CACvL,CAAC;IAEF,MAAM,sBAAsB,GAAG,IAAA,eAAO,EACpC,GAAG,EAAE,CAAC,CAAC;QACL,cAAc,EAAE,mBAAmB;QACnC,iBAAiB,EAAE,sBAAsB;QACzC,eAAe;QACf,kBAAkB;QAClB,oBAAoB;QACpB,uBAAuB;QACvB,2BAA2B;QAC3B,8BAA8B;KAC/B,CAAC,EACF,CAAC,oBAAoB,EAAE,2BAA2B,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAC1F,CAAC;IAEF,MAAM,oBAAoB,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,SAAS;QACT,YAAY;KACb,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEjB,OAAO,CACL,8BAAC,0DAA+B,CAAC,QAAQ,IAAC,KAAK,EAAE,SAAS;QACxD,8BAAC,2CAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,aAAa;YACjD,8BAAC,iDAAuB,CAAC,QAAQ,IAAC,KAAK,EAAE,gBAAgB;gBACvD,8BAAC,+DAA8B,CAAC,QAAQ,IAAC,KAAK,EAAE,oBAAoB;oBAClE,8BAAC,yDAA2B,CAAC,QAAQ,IAAC,KAAK,EAAE,2BAA2B;wBACtE,8BAAC,qCAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,sBAAsB,IACtD,KAAK,CAAC,QAAQ,CACY,CACQ,CACC,CACT,CACL,CACS,CAC5C,CAAC;AACJ,CAAC,CAAC;AA7GW,QAAA,sBAAsB,0BA6GjC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport type {\n ClientPrefix,\n GetAccessTokenFn,\n GroupingMappingApiConfig,\n} from \"./context/GroupingApiConfigContext\";\nimport { GroupingMappingApiConfigContext } from \"./context/GroupingApiConfigContext\";\nimport {\n createMappingClient,\n MappingClientContext,\n} from \"./context/MappingClientContext\";\nimport type { CalculatedProperty, CustomCalculation, Group, GroupProperty, IExtractionClient, IMappingsClient } from \"@itwin/insights-client\";\nimport { createGroupingMappingCustomUI, GroupingMappingCustomUIContext } from \"./context/GroupingMappingCustomUIContext\";\nimport type { GroupingMappingCustomUI } from \"./customUI/GroupingMappingCustomUI\";\nimport type { OverlappedElementGroupPairs, OverlappedInfo, QueryCacheItem } from \"./context/GroupHilitedElementsContext\";\nimport { GroupHilitedElementsContext } from \"./context/GroupHilitedElementsContext\";\nimport { PropertiesContext } from \"./context/PropertiesContext\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { createExtractionClient, ExtractionClientContext } from \"./context/ExtractionClientContext\";\n\nexport interface GroupingMappingContextProps {\n /**\n * Custom callback to retrieve access token.\n */\n getAccessToken?: GetAccessTokenFn;\n /**\n * The iTwin iModel Id.\n */\n iModelId: string;\n /**\n * Used for iTwin and iModel APIs.\n * Also used for Mapping API if a custom {@link client} is not provided.\n */\n prefix?: ClientPrefix;\n /**\n * A custom implementation of MappingClient.\n */\n client?: IMappingsClient;\n /**\n * A custom implementation of ExtractionClient.\n */\n extractionClient?: IExtractionClient;\n /**\n * Custom UI to add and update groups or provide additional group context capabilities.\n */\n customUIs?: GroupingMappingCustomUI[];\n /**\n * A custom iModelConnection to use instead of the active iModelConnection from UiFramework.\n */\n iModelConnection?: IModelConnection;\n children?: React.ReactNode;\n}\n\nconst authorizationClientGetAccessToken = async () =>\n (await IModelApp.authorizationClient?.getAccessToken()) ?? \"\";\n\nexport const GroupingMappingContext = (props: GroupingMappingContextProps) => {\n const activeIModelConntextion = useActiveIModelConnection();\n const clientProp: IMappingsClient | ClientPrefix = props.client ?? props.prefix;\n const extractionClientProp: IExtractionClient | ClientPrefix = props.extractionClient ?? props.prefix;\n const [mappingClient, setMappingClient] = useState<IMappingsClient>(createMappingClient(clientProp));\n const [extractionClient, setExtractionClient] = useState<IExtractionClient>(createExtractionClient(extractionClientProp));\n const [customUIs, setCustomUIs] = useState<GroupingMappingCustomUI[]>(\n createGroupingMappingCustomUI(props.customUIs),\n );\n const [apiConfig, setApiConfig] = useState<GroupingMappingApiConfig>({\n getAccessToken: props.getAccessToken ?? authorizationClientGetAccessToken,\n iModelId: props.iModelId,\n prefix: props.prefix,\n });\n const hilitedElementsQueryCache = useRef<Map<string, QueryCacheItem>>(new Map());\n const [hiddenGroupsIds, setHiddenGroupsIds] = useState<Set<string>>(new Set());\n const [showGroupColor, setShowGroupColor] = useState<boolean>(false);\n const [propertiesShowGroup, setPropertiesShowGroup] = useState<boolean>(false);\n const [groups, setGroups] = useState<Group[]>([]);\n const [groupProperties, setGroupProperties] = useState<GroupProperty[]>([]);\n const [calculatedProperties, setCalculatedProperties] = useState<CalculatedProperty[]>([]);\n const [customCalculationProperties, setCustomCalculationProperties] = useState<CustomCalculation[]>([]);\n const [numberOfVisualizedGroups, setNumberOfVisualizedGroups] = useState(0);\n const [overlappedElementsInfo, setOverlappedElementsInfo] = useState<Map<string, OverlappedInfo[]>>(new Map());\n const [groupElementsInfo, setGroupElementsInfo] = useState<Map<string, number>>(new Map());\n const [isOverlappedColored, setIsOverlappedColored] = useState<boolean>(false);\n const [currentHilitedGroups, setCurrentHilitedGroups] = useState<number>(1);\n const [overlappedElementGroupPairs, setOverlappedElementGroupPairs] = useState<OverlappedElementGroupPairs[]>([]);\n\n useEffect(() => {\n setApiConfig(() => ({\n prefix: props.prefix,\n iModelId: props.iModelId,\n getAccessToken: props.getAccessToken ?? authorizationClientGetAccessToken,\n iModelConnection: props.iModelConnection ?? activeIModelConntextion,\n }));\n }, [activeIModelConntextion, props.getAccessToken, props.iModelConnection, props.iModelId, props.prefix]);\n\n useEffect(() => {\n setMappingClient(createMappingClient(clientProp));\n }, [clientProp]);\n\n useEffect(() => {\n setExtractionClient(createExtractionClient(extractionClientProp));\n }, [extractionClientProp]);\n\n useEffect(() => {\n setCustomUIs(createGroupingMappingCustomUI(props.customUIs));\n }, [props.customUIs]);\n\n const hilitedElementsContextValue = useMemo(\n () => ({\n showGroupColor,\n setShowGroupColor,\n hiddenGroupsIds,\n setHiddenGroupsIds,\n hilitedElementsQueryCache,\n groups,\n setGroups,\n numberOfVisualizedGroups,\n setNumberOfVisualizedGroups,\n overlappedElementsInfo,\n setOverlappedElementsInfo,\n groupElementsInfo,\n setGroupElementsInfo,\n isOverlappedColored,\n setIsOverlappedColored,\n currentHilitedGroups,\n setCurrentHilitedGroups,\n overlappedElementGroupPairs,\n setOverlappedElementGroupPairs,\n }),\n [showGroupColor, hiddenGroupsIds, groups, numberOfVisualizedGroups, overlappedElementsInfo, groupElementsInfo, isOverlappedColored, currentHilitedGroups, overlappedElementGroupPairs]\n );\n\n const propertiesContextValue = useMemo(\n () => ({\n showGroupColor: propertiesShowGroup,\n setShowGroupColor: setPropertiesShowGroup,\n groupProperties,\n setGroupProperties,\n calculatedProperties,\n setCalculatedProperties,\n customCalculationProperties,\n setCustomCalculationProperties,\n }),\n [calculatedProperties, customCalculationProperties, groupProperties, propertiesShowGroup]\n );\n\n const customUIContextValue = useMemo(() => ({\n customUIs,\n setCustomUIs,\n }), [customUIs]);\n\n return (\n <GroupingMappingApiConfigContext.Provider value={apiConfig}>\n <MappingClientContext.Provider value={mappingClient}>\n <ExtractionClientContext.Provider value={extractionClient}>\n <GroupingMappingCustomUIContext.Provider value={customUIContextValue}>\n <GroupHilitedElementsContext.Provider value={hilitedElementsContextValue}>\n <PropertiesContext.Provider value={propertiesContextValue}>\n {props.children}\n </PropertiesContext.Provider>\n </GroupHilitedElementsContext.Provider>\n </GroupingMappingCustomUIContext.Provider>\n </ExtractionClientContext.Provider>\n </MappingClientContext.Provider>\n </GroupingMappingApiConfigContext.Provider>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"GroupingMappingContext.js","sourceRoot":"","sources":["../../../src/components/GroupingMappingContext.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport type {\n ClientPrefix,\n GetAccessTokenFn,\n GroupingMappingApiConfig,\n} from \"./context/GroupingApiConfigContext\";\nimport { GroupingMappingApiConfigContext } from \"./context/GroupingApiConfigContext\";\nimport {\n createMappingClient,\n MappingClientContext,\n} from \"./context/MappingClientContext\";\nimport type { CalculatedProperty, CustomCalculation, Group, GroupProperty, IExtractionClient, IMappingsClient } from \"@itwin/insights-client\";\nimport { createGroupingMappingCustomUI, GroupingMappingCustomUIContext } from \"./context/GroupingMappingCustomUIContext\";\nimport type { GroupingMappingCustomUI } from \"./customUI/GroupingMappingCustomUI\";\nimport type { OverlappedElementGroupPairs, OverlappedInfo, QueryCacheItem } from \"./context/GroupHilitedElementsContext\";\nimport { GroupHilitedElementsContext } from \"./context/GroupHilitedElementsContext\";\nimport { PropertiesContext } from \"./context/PropertiesContext\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { createExtractionClient, ExtractionClientContext } from \"./context/ExtractionClientContext\";\nimport type { ExtractionMessageData, ExtractionStatusData, IExtractionStatusDataProps } from \"./context/ExtractionStatusDataContext\";\nimport { ExtractionStatusDataContext } from \"./context/ExtractionStatusDataContext\";\n\nexport interface GroupingMappingContextProps {\n /**\n * Custom callback to retrieve access token.\n */\n getAccessToken?: GetAccessTokenFn;\n /**\n * The iTwin iModel Id.\n */\n iModelId: string;\n /**\n * Used for iTwin and iModel APIs.\n * Also used for Mapping API if a custom {@link client} is not provided.\n */\n prefix?: ClientPrefix;\n /**\n * A custom implementation of MappingClient.\n */\n client?: IMappingsClient;\n /**\n * A custom implementation of ExtractionClient.\n */\n extractionClient?: IExtractionClient;\n /**\n * Custom UI to add and update groups or provide additional group context capabilities.\n */\n customUIs?: GroupingMappingCustomUI[];\n /**\n * A custom iModelConnection to use instead of the active iModelConnection from UiFramework.\n */\n iModelConnection?: IModelConnection;\n children?: React.ReactNode;\n}\n\nconst authorizationClientGetAccessToken = async () =>\n (await IModelApp.authorizationClient?.getAccessToken()) ?? \"\";\n\nexport const GroupingMappingContext = (props: GroupingMappingContextProps) => {\n const activeIModelConntextion = useActiveIModelConnection();\n const clientProp: IMappingsClient | ClientPrefix = props.client ?? props.prefix;\n const extractionClientProp: IExtractionClient | ClientPrefix = props.extractionClient ?? props.prefix;\n const [mappingClient, setMappingClient] = useState<IMappingsClient>(createMappingClient(clientProp));\n const [extractionClient, setExtractionClient] = useState<IExtractionClient>(createExtractionClient(extractionClientProp));\n const [customUIs, setCustomUIs] = useState<GroupingMappingCustomUI[]>(\n createGroupingMappingCustomUI(props.customUIs),\n );\n const [apiConfig, setApiConfig] = useState<GroupingMappingApiConfig>({\n getAccessToken: props.getAccessToken ?? authorizationClientGetAccessToken,\n iModelId: props.iModelId,\n prefix: props.prefix,\n });\n const hilitedElementsQueryCache = useRef<Map<string, QueryCacheItem>>(new Map());\n const [hiddenGroupsIds, setHiddenGroupsIds] = useState<Set<string>>(new Set());\n const [showGroupColor, setShowGroupColor] = useState<boolean>(false);\n const [propertiesShowGroup, setPropertiesShowGroup] = useState<boolean>(false);\n const [groups, setGroups] = useState<Group[]>([]);\n const [groupProperties, setGroupProperties] = useState<GroupProperty[]>([]);\n const [calculatedProperties, setCalculatedProperties] = useState<CalculatedProperty[]>([]);\n const [customCalculationProperties, setCustomCalculationProperties] = useState<CustomCalculation[]>([]);\n const [numberOfVisualizedGroups, setNumberOfVisualizedGroups] = useState(0);\n const [overlappedElementsInfo, setOverlappedElementsInfo] = useState<Map<string, OverlappedInfo[]>>(new Map());\n const [groupElementsInfo, setGroupElementsInfo] = useState<Map<string, number>>(new Map());\n const [isOverlappedColored, setIsOverlappedColored] = useState<boolean>(false);\n const [currentHilitedGroups, setCurrentHilitedGroups] = useState<number>(1);\n const [overlappedElementGroupPairs, setOverlappedElementGroupPairs] = useState<OverlappedElementGroupPairs[]>([]);\n const [extractionStatusIcon, setExtractionStatusIcon] = useState<ExtractionStatusData>({iconStatus: undefined, iconMessage: \"Loading...\"});\n const [extractionMessageData, setExtractionMessageData] = useState<ExtractionMessageData[]>([]);\n useEffect(() => {\n setApiConfig(() => ({\n prefix: props.prefix,\n iModelId: props.iModelId,\n getAccessToken: props.getAccessToken ?? authorizationClientGetAccessToken,\n iModelConnection: props.iModelConnection ?? activeIModelConntextion,\n }));\n }, [activeIModelConntextion, props.getAccessToken, props.iModelConnection, props.iModelId, props.prefix]);\n\n useEffect(() => {\n setMappingClient(createMappingClient(clientProp));\n }, [clientProp]);\n\n useEffect(() => {\n setExtractionClient(createExtractionClient(extractionClientProp));\n }, [extractionClientProp]);\n\n useEffect(() => {\n setCustomUIs(createGroupingMappingCustomUI(props.customUIs));\n }, [props.customUIs]);\n\n const hilitedElementsContextValue = useMemo(\n () => ({\n showGroupColor,\n setShowGroupColor,\n hiddenGroupsIds,\n setHiddenGroupsIds,\n hilitedElementsQueryCache,\n groups,\n setGroups,\n numberOfVisualizedGroups,\n setNumberOfVisualizedGroups,\n overlappedElementsInfo,\n setOverlappedElementsInfo,\n groupElementsInfo,\n setGroupElementsInfo,\n isOverlappedColored,\n setIsOverlappedColored,\n currentHilitedGroups,\n setCurrentHilitedGroups,\n overlappedElementGroupPairs,\n setOverlappedElementGroupPairs,\n }),\n [showGroupColor, hiddenGroupsIds, groups, numberOfVisualizedGroups, overlappedElementsInfo, groupElementsInfo, isOverlappedColored, currentHilitedGroups, overlappedElementGroupPairs]\n );\n\n const propertiesContextValue = useMemo(\n () => ({\n showGroupColor: propertiesShowGroup,\n setShowGroupColor: setPropertiesShowGroup,\n groupProperties,\n setGroupProperties,\n calculatedProperties,\n setCalculatedProperties,\n customCalculationProperties,\n setCustomCalculationProperties,\n }),\n [calculatedProperties, customCalculationProperties, groupProperties, propertiesShowGroup]\n );\n\n const customUIContextValue = useMemo(() => ({\n customUIs,\n setCustomUIs,\n }), [customUIs]);\n\n const extractionStatusDataValue: IExtractionStatusDataProps = useMemo (() => ({\n extractionStatusIcon,\n extractionMessageData,\n setExtractionMessageData,\n setExtractionStatusIcon,\n }), [extractionStatusIcon, extractionMessageData]);\n\n return (\n <GroupingMappingApiConfigContext.Provider value={apiConfig}>\n <MappingClientContext.Provider value={mappingClient}>\n <ExtractionClientContext.Provider value={extractionClient}>\n <ExtractionStatusDataContext.Provider value={extractionStatusDataValue}>\n <GroupingMappingCustomUIContext.Provider value={customUIContextValue}>\n <GroupHilitedElementsContext.Provider value={hilitedElementsContextValue}>\n <PropertiesContext.Provider value={propertiesContextValue}>\n {props.children}\n </PropertiesContext.Provider>\n </GroupHilitedElementsContext.Provider>\n </GroupingMappingCustomUIContext.Provider>\n </ExtractionStatusDataContext.Provider>\n </ExtractionClientContext.Provider>\n </MappingClientContext.Provider>\n </GroupingMappingApiConfigContext.Provider>\n );\n};\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type { ExtractionMessageData } from "
|
|
2
|
+
import type { ExtractionMessageData } from "../../context/ExtractionStatusDataContext";
|
|
3
3
|
import "./ExtractionMessageModal.scss";
|
|
4
4
|
export interface ExtractionMessageModalProps {
|
|
5
5
|
isOpen: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtractionMessageModal.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/Extraction/ExtractionMessageModal.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 { Button, DefaultCell, Icon, Modal, ModalButtonBar, ModalContent, Table, tableFilters, Text } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../../../common/utils\";\nimport type { ExtractionMessageData } from \"../hooks/useMappingsOperations\";\nimport \"./ExtractionMessageModal.scss\";\nimport { SvgClock } from \"@itwin/itwinui-icons-react\";\nimport type { CellRendererProps, Column } from \"react-table\";\nimport { StatusIcon } from \"../../SharedComponents/StatusIcon\";\nimport { ExtractionLogCustomFilter } from \"./ExtractionLogCustomFilter\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { useMappingClient } from \"../../context/MappingClientContext\";\nimport { useMappingsOperations } from \"../hooks/useMappingsOperations\";\nimport type { Group } from \"@itwin/insights-client\";\n\nexport interface ExtractionMessageModalProps {\n isOpen: boolean;\n onClose: () => void;\n extractionMessageData: ExtractionMessageData[];\n timestamp: string;\n}\n\nexport const ExtractionMessageModal = ({ isOpen, onClose, extractionMessageData, timestamp }: ExtractionMessageModalProps) => {\n const [formattedExtractionMessage, setFormattedExtractionMessage] = useState<ExtractionMessageData[]>([]);\n const groupingMappingApiConfig = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const { mappings } = useMappingsOperations({...groupingMappingApiConfig, mappingClient});\n const [formattedTimestamp, setFormattedTimestamp] = useState<string>(\"\");\n\n const getMappingName = useCallback(async (mappingId: string) => {\n return mappings.find((mapping) => {return mapping.id === mappingId;})?.mappingName ?? \"\";\n }, [mappings]);\n\n const getGroupNames = useCallback(async (mappingId: string, groupId: string, groupsCache: Map<string, Group[]>) => {\n const accessToken = await groupingMappingApiConfig.getAccessToken();\n if(!groupsCache.has(mappingId)){\n const groups = await mappingClient.getGroups(\n accessToken,\n groupingMappingApiConfig.iModelId,\n mappingId\n );\n groupsCache.set(mappingId, groups);\n }\n return groupsCache.get(mappingId)?.find((group) => {return group.id === groupId;})?.groupName ?? \"\";\n }, [groupingMappingApiConfig, mappingClient]);\n\n useEffect(() => {\n const formatMessages = async () => {\n const groupsCache = new Map<string,Group[]>();\n const extractionMessageDataPromises = extractionMessageData.map(async (extractionMessage) => {\n let replacedMessage = extractionMessage.message;\n if(extractionMessage.message.includes(\"iModel\")){\n replacedMessage = replacedMessage.replace(/iModel [\\w-]+/, \"iModel\");\n }\n if(replacedMessage.includes(\"MappingId:\")){\n const splittedMessage = replacedMessage.split(\" \");\n const mappingId = splittedMessage[splittedMessage.indexOf(\"MappingId:\") + 1];\n const groupId = splittedMessage[splittedMessage.indexOf(\"GroupId:\") + 1];\n const mappingName = getMappingName(mappingId);\n const groupName = await getGroupNames(mappingId, groupId, groupsCache);\n replacedMessage = replacedMessage.replace(/MappingId: [\\w-]+/, `Mapping: ${mappingName}`);\n replacedMessage = replacedMessage.replace(/GroupId: [\\w-]+/, `Group: ${groupName}`);\n }\n return {...extractionMessage, message: replacedMessage};\n });\n\n const newMessages = await Promise.all(extractionMessageDataPromises);\n setFormattedExtractionMessage(newMessages);\n };\n void formatMessages();\n }, [extractionMessageData, groupingMappingApiConfig, mappings, mappingClient, getGroupNames, getMappingName]);\n\n useEffect(() => {\n const newDateTime: Date = new Date(timestamp);\n const options: Intl.DateTimeFormatOptions = {\n day: \"numeric\", month: \"numeric\", year: \"numeric\",\n hour: \"2-digit\", minute: \"2-digit\",\n };\n setFormattedTimestamp(newDateTime.toLocaleString(undefined, options));\n }, [timestamp]);\n\n const translatedLabels = useMemo(() => ({\n filter: \"Filter\",\n clear: \"Clear\",\n }), []);\n\n const columns = useMemo(\n (): Column<CreateTypeFromInterface<ExtractionMessageData>>[] => [\n {\n id: \"category\",\n Header: \"Category\",\n accessor: \"category\",\n fieldType: \"text\",\n Filter: ExtractionLogCustomFilter,\n filter: \"equals\",\n },\n {\n id: \"level\",\n Header: \"Level\",\n accessor: \"level\",\n cellRenderer: ({ cellElementProps, cellProps }: CellRendererProps<CreateTypeFromInterface<ExtractionMessageData>>) => {\n const level = cellProps.row.original.level;\n return (\n <DefaultCell\n cellElementProps={cellElementProps}\n cellProps={cellProps}\n startIcon={\n level === \"Error\" ? (\n <StatusIcon status='error' />\n ) : level === \"Warning\" ? (\n <StatusIcon status='warning' />\n ) : level === \"Info\" ? (\n <StatusIcon status='informational' />\n ) : <StatusIcon status='trace' />\n }\n >\n {level}\n </DefaultCell>\n );\n },\n Filter: ExtractionLogCustomFilter,\n filter: \"equals\",\n },\n {\n id: \"message\",\n Header: \"Message\",\n accessor: \"message\",\n width: \"25vw\",\n fieldType: \"text\",\n Filter: tableFilters.TextFilter(translatedLabels),\n },\n ],\n [translatedLabels]\n );\n return (\n <Modal className=\"gmw-message-modal-container\"\n title=\"Extraction Logs\"\n isOpen={isOpen}\n onClose={onClose}\n closeOnExternalClick={false}\n >\n <ModalContent>\n <div className=\"gmw-timestamp-icon\">\n <Icon\n title=\"Extraction Timestamp\"\n size=\"medium\"\n >\n <SvgClock />\n </Icon>\n <Text>{formattedTimestamp}</Text>\n </div>\n <Table<CreateTypeFromInterface<ExtractionMessageData>>\n columns={columns}\n data={formattedExtractionMessage}\n emptyTableContent={\"\"}\n emptyFilteredTableContent=\"No results match filters.\"\n className=\"gmw-extraction-message-table-container\"\n />\n </ModalContent>\n <ModalButtonBar>\n <Button\n onClick={onClose}\n styleType=\"high-visibility\"\n >\n Close\n </Button>\n </ModalButtonBar>\n </Modal>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"ExtractionMessageModal.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/Extraction/ExtractionMessageModal.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,wDAAiI;AACjI,+CAAyE;AAGzE,yCAAuC;AACvC,oEAAsD;AAEtD,kEAA+D;AAC/D,2EAAwE;AACxE,qFAAqF;AACrF,6EAAsE;AACtE,0EAAuE;AAUhE,MAAM,sBAAsB,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAA+B,EAAE,EAAE;IAC3H,MAAM,CAAC,0BAA0B,EAAE,6BAA6B,CAAC,GAAG,IAAA,gBAAQ,EAA0B,EAAE,CAAC,CAAC;IAC1G,MAAM,wBAAwB,GAAG,IAAA,sDAA2B,GAAE,CAAC;IAC/D,MAAM,aAAa,GAAG,IAAA,uCAAgB,GAAE,CAAC;IACzC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,6CAAqB,EAAC,EAAC,GAAG,wBAAwB,EAAE,aAAa,EAAC,CAAC,CAAC;IACzF,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,IAAA,gBAAQ,EAAS,EAAE,CAAC,CAAC;IAEzE,MAAM,cAAc,GAAG,IAAA,mBAAW,EAAC,KAAK,EAAE,SAAiB,EAAE,EAAE;QAC7D,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,GAAE,OAAO,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,CAAA,CAAC,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC;IAC3F,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,aAAa,GAAG,IAAA,mBAAW,EAAC,KAAK,EAAE,SAAiB,EAAE,OAAe,EAAE,WAAiC,EAAE,EAAE;QAChH,MAAM,WAAW,GAAG,MAAM,wBAAwB,CAAC,cAAc,EAAE,CAAC;QACpE,IAAG,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAC1C,WAAW,EACX,wBAAwB,CAAC,QAAQ,EACjC,SAAS,CACV,CAAC;YACF,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;SACpC;QACD,OAAO,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,GAAE,OAAO,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,CAAA,CAAC,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;IACtG,CAAC,EAAE,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC,CAAC;IAE9C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;YAChC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC9C,MAAM,6BAA6B,GAAG,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE;gBAC1F,IAAI,eAAe,GAAG,iBAAiB,CAAC,OAAO,CAAC;gBAChD,IAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAC;oBAC9C,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;iBACtE;gBACD,IAAG,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAC;oBACxC,MAAM,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACnD,MAAM,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC7E,MAAM,OAAO,GAAG,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACzE,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;oBAC9C,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;oBACvE,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,mBAAmB,EAAE,YAAY,WAAW,EAAE,CAAC,CAAC;oBAC1F,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,iBAAiB,EAAE,UAAU,SAAS,EAAE,CAAC,CAAC;iBACrF;gBACD,OAAO,EAAC,GAAG,iBAAiB,EAAE,OAAO,EAAE,eAAe,EAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YACrE,6BAA6B,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC,CAAC;QACF,KAAK,cAAc,EAAE,CAAC;IACxB,CAAC,EAAE,CAAC,qBAAqB,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;IAE9G,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,WAAW,GAAS,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,OAAO,GAA+B;YAC1C,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS;YACjD,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS;SACnC,CAAC;QACF,qBAAqB,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IACxE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,gBAAgB,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAAC;QACtC,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,OAAO;KACf,CAAC,EAAE,EAAE,CAAC,CAAC;IAER,MAAM,OAAO,GAAG,IAAA,eAAO,EACrB,GAA6D,EAAE,CAAC;QAC9D;YACE,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,qDAAyB;YACjC,MAAM,EAAE,QAAQ;SACjB;QACD;YACE,EAAE,EAAE,OAAO;YACX,MAAM,EAAE,OAAO;YACf,QAAQ,EAAE,OAAO;YACjB,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAqE,EAAE,EAAE;gBACnH,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC3C,OAAO,CACL,8BAAC,2BAAW,IACV,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACpB,SAAS,EACP,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,CAClB,8BAAC,uBAAU,IAAC,MAAM,EAAC,OAAO,GAAG,CAC9B,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CACxB,8BAAC,uBAAU,IAAC,MAAM,EAAC,SAAS,GAAG,CAChC,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CACrB,8BAAC,uBAAU,IAAC,MAAM,EAAC,eAAe,GAAG,CACtC,CAAC,CAAC,CAAC,8BAAC,uBAAU,IAAC,MAAM,EAAC,OAAO,GAAG,IAGlC,KAAK,CACM,CACf,CAAC;YACJ,CAAC;YACD,MAAM,EAAE,qDAAyB;YACjC,MAAM,EAAE,QAAQ;SACjB;QACD;YACE,EAAE,EAAE,SAAS;YACb,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,MAAM;YACb,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,4BAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC;SAClD;KACF,EACD,CAAC,gBAAgB,CAAC,CACnB,CAAC;IACF,OAAO,CACL,8BAAC,qBAAK,IAAC,SAAS,EAAC,6BAA6B,EAC5C,KAAK,EAAC,iBAAiB,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,oBAAoB,EAAE,KAAK;QAE3B,8BAAC,4BAAY;YACX,uCAAK,SAAS,EAAC,oBAAoB;gBACjC,8BAAC,oBAAI,IACH,KAAK,EAAC,sBAAsB,EAC5B,IAAI,EAAC,QAAQ;oBAEb,8BAAC,8BAAQ,OAAG,CACP;gBACP,8BAAC,oBAAI,QAAE,kBAAkB,CAAQ,CAC7B;YACN,8BAAC,qBAAK,IACJ,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,0BAA0B,EAChC,iBAAiB,EAAE,EAAE,EACrB,yBAAyB,EAAC,2BAA2B,EACrD,SAAS,EAAC,wCAAwC,GAClD,CACW;QACf,8BAAC,8BAAc;YACb,8BAAC,sBAAM,IACL,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,iBAAiB,YAGpB,CACM,CACX,CACT,CAAC;AACJ,CAAC,CAAC;AAnJW,QAAA,sBAAsB,0BAmJjC","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 { Button, DefaultCell, Icon, Modal, ModalButtonBar, ModalContent, Table, tableFilters, Text } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../../../common/utils\";\nimport type { ExtractionMessageData } from \"../../context/ExtractionStatusDataContext\";\nimport \"./ExtractionMessageModal.scss\";\nimport { SvgClock } from \"@itwin/itwinui-icons-react\";\nimport type { CellRendererProps, Column } from \"react-table\";\nimport { StatusIcon } from \"../../SharedComponents/StatusIcon\";\nimport { ExtractionLogCustomFilter } from \"./ExtractionLogCustomFilter\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { useMappingClient } from \"../../context/MappingClientContext\";\nimport { useMappingsOperations } from \"../hooks/useMappingsOperations\";\nimport type { Group } from \"@itwin/insights-client\";\n\nexport interface ExtractionMessageModalProps {\n isOpen: boolean;\n onClose: () => void;\n extractionMessageData: ExtractionMessageData[];\n timestamp: string;\n}\n\nexport const ExtractionMessageModal = ({ isOpen, onClose, extractionMessageData, timestamp }: ExtractionMessageModalProps) => {\n const [formattedExtractionMessage, setFormattedExtractionMessage] = useState<ExtractionMessageData[]>([]);\n const groupingMappingApiConfig = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const { mappings } = useMappingsOperations({...groupingMappingApiConfig, mappingClient});\n const [formattedTimestamp, setFormattedTimestamp] = useState<string>(\"\");\n\n const getMappingName = useCallback(async (mappingId: string) => {\n return mappings.find((mapping) => {return mapping.id === mappingId;})?.mappingName ?? \"\";\n }, [mappings]);\n\n const getGroupNames = useCallback(async (mappingId: string, groupId: string, groupsCache: Map<string, Group[]>) => {\n const accessToken = await groupingMappingApiConfig.getAccessToken();\n if(!groupsCache.has(mappingId)){\n const groups = await mappingClient.getGroups(\n accessToken,\n groupingMappingApiConfig.iModelId,\n mappingId\n );\n groupsCache.set(mappingId, groups);\n }\n return groupsCache.get(mappingId)?.find((group) => {return group.id === groupId;})?.groupName ?? \"\";\n }, [groupingMappingApiConfig, mappingClient]);\n\n useEffect(() => {\n const formatMessages = async () => {\n const groupsCache = new Map<string,Group[]>();\n const extractionMessageDataPromises = extractionMessageData.map(async (extractionMessage) => {\n let replacedMessage = extractionMessage.message;\n if(extractionMessage.message.includes(\"iModel\")){\n replacedMessage = replacedMessage.replace(/iModel [\\w-]+/, \"iModel\");\n }\n if(replacedMessage.includes(\"MappingId:\")){\n const splittedMessage = replacedMessage.split(\" \");\n const mappingId = splittedMessage[splittedMessage.indexOf(\"MappingId:\") + 1];\n const groupId = splittedMessage[splittedMessage.indexOf(\"GroupId:\") + 1];\n const mappingName = getMappingName(mappingId);\n const groupName = await getGroupNames(mappingId, groupId, groupsCache);\n replacedMessage = replacedMessage.replace(/MappingId: [\\w-]+/, `Mapping: ${mappingName}`);\n replacedMessage = replacedMessage.replace(/GroupId: [\\w-]+/, `Group: ${groupName}`);\n }\n return {...extractionMessage, message: replacedMessage};\n });\n\n const newMessages = await Promise.all(extractionMessageDataPromises);\n setFormattedExtractionMessage(newMessages);\n };\n void formatMessages();\n }, [extractionMessageData, groupingMappingApiConfig, mappings, mappingClient, getGroupNames, getMappingName]);\n\n useEffect(() => {\n const newDateTime: Date = new Date(timestamp);\n const options: Intl.DateTimeFormatOptions = {\n day: \"numeric\", month: \"numeric\", year: \"numeric\",\n hour: \"2-digit\", minute: \"2-digit\",\n };\n setFormattedTimestamp(newDateTime.toLocaleString(undefined, options));\n }, [timestamp]);\n\n const translatedLabels = useMemo(() => ({\n filter: \"Filter\",\n clear: \"Clear\",\n }), []);\n\n const columns = useMemo(\n (): Column<CreateTypeFromInterface<ExtractionMessageData>>[] => [\n {\n id: \"category\",\n Header: \"Category\",\n accessor: \"category\",\n fieldType: \"text\",\n Filter: ExtractionLogCustomFilter,\n filter: \"equals\",\n },\n {\n id: \"level\",\n Header: \"Level\",\n accessor: \"level\",\n cellRenderer: ({ cellElementProps, cellProps }: CellRendererProps<CreateTypeFromInterface<ExtractionMessageData>>) => {\n const level = cellProps.row.original.level;\n return (\n <DefaultCell\n cellElementProps={cellElementProps}\n cellProps={cellProps}\n startIcon={\n level === \"Error\" ? (\n <StatusIcon status='error' />\n ) : level === \"Warning\" ? (\n <StatusIcon status='warning' />\n ) : level === \"Info\" ? (\n <StatusIcon status='informational' />\n ) : <StatusIcon status='trace' />\n }\n >\n {level}\n </DefaultCell>\n );\n },\n Filter: ExtractionLogCustomFilter,\n filter: \"equals\",\n },\n {\n id: \"message\",\n Header: \"Message\",\n accessor: \"message\",\n width: \"25vw\",\n fieldType: \"text\",\n Filter: tableFilters.TextFilter(translatedLabels),\n },\n ],\n [translatedLabels]\n );\n return (\n <Modal className=\"gmw-message-modal-container\"\n title=\"Extraction Logs\"\n isOpen={isOpen}\n onClose={onClose}\n closeOnExternalClick={false}\n >\n <ModalContent>\n <div className=\"gmw-timestamp-icon\">\n <Icon\n title=\"Extraction Timestamp\"\n size=\"medium\"\n >\n <SvgClock />\n </Icon>\n <Text>{formattedTimestamp}</Text>\n </div>\n <Table<CreateTypeFromInterface<ExtractionMessageData>>\n columns={columns}\n data={formattedExtractionMessage}\n emptyTableContent={\"\"}\n emptyFilteredTableContent=\"No results match filters.\"\n className=\"gmw-extraction-message-table-container\"\n />\n </ModalContent>\n <ModalButtonBar>\n <Button\n onClick={onClose}\n styleType=\"high-visibility\"\n >\n Close\n </Button>\n </ModalButtonBar>\n </Modal>\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtractionStatusIcon.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/Extraction/ExtractionStatusIcon.tsx"],"names":[],"mappings":";;;;;;AAAA;;;+FAG+F;AAC/F,wDAA+E;AAC/E,kDAA0B;AAC1B,oEAAwD;AAQjD,MAAM,oBAAoB,GAAG,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAA6B,EAAE,EAAE;IACtG,OAAO,CACL,8BAAC,uBAAO,IAAC,OAAO,EAAE,WAAW;QAC3B,8BAAC,0BAAU,IAAC,SAAS,EAAC,YAAY,EAAC,OAAO,EAAE,OAAO;YACjD,8BAAC,kCAAkB,IAAC,MAAM,EAAE,UAAU;gBACpC,8BAAC,gCAAU,OAAG,CACK,CACV,CACL,CACX,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,oBAAoB,wBAU/B","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 { IconButton, NotificationMarker, Tooltip } from \"@itwin/itwinui-react\";\nimport React from \"react\";\nimport { SvgProcess } from \"@itwin/itwinui-icons-react\";\n\nexport interface ExtractionStatusIconProps {\n iconStatus: \"negative\" | \"positive\" | \"warning\";\n onClick: () => void;\n iconMessage: string;\n}\n\nexport const ExtractionStatusIcon = ({ iconStatus, onClick, iconMessage }: ExtractionStatusIconProps) => {\n return (\n <Tooltip content={iconMessage}>\n <IconButton styleType='borderless' onClick={onClick}>\n <NotificationMarker status={iconStatus}>\n <SvgProcess />\n </NotificationMarker>\n </IconButton>\n </Tooltip>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"ExtractionStatusIcon.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/Extraction/ExtractionStatusIcon.tsx"],"names":[],"mappings":";;;;;;AAAA;;;+FAG+F;AAC/F,wDAA+E;AAC/E,kDAA0B;AAC1B,oEAAwD;AAQjD,MAAM,oBAAoB,GAAG,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAA6B,EAAE,EAAE;IACtG,OAAO,CACL,8BAAC,uBAAO,IAAC,OAAO,EAAE,WAAW;QAC3B,8BAAC,0BAAU,IAAC,SAAS,EAAC,YAAY,EAAC,OAAO,EAAE,OAAO;YACjD,8BAAC,kCAAkB,IAAC,MAAM,EAAE,UAAU;gBACpC,8BAAC,gCAAU,OAAG,CACK,CACV,CACL,CACX,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,oBAAoB,wBAU/B","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 { IconButton, NotificationMarker, Tooltip } from \"@itwin/itwinui-react\";\nimport React from \"react\";\nimport { SvgProcess } from \"@itwin/itwinui-icons-react\";\n\nexport interface ExtractionStatusIconProps {\n iconStatus: \"negative\" | \"positive\" | \"warning\" | undefined;\n onClick: () => void;\n iconMessage: string;\n}\n\nexport const ExtractionStatusIcon = ({ iconStatus, onClick, iconMessage }: ExtractionStatusIconProps) => {\n return (\n <Tooltip content={iconMessage}>\n <IconButton styleType='borderless' onClick={onClick}>\n <NotificationMarker status={iconStatus}>\n <SvgProcess />\n </NotificationMarker>\n </IconButton>\n </Tooltip>\n );\n};\n"]}
|
|
@@ -33,13 +33,13 @@ const itwinui_react_1 = require("@itwin/itwinui-react");
|
|
|
33
33
|
const Mappings = (props) => {
|
|
34
34
|
const groupingMappingApiConfig = (0, GroupingApiConfigContext_1.useGroupingMappingApiConfig)();
|
|
35
35
|
const mappingClient = (0, MappingClientContext_1.useMappingClient)();
|
|
36
|
-
const { mappings, isLoading,
|
|
36
|
+
const { mappings, isLoading, extractionStatusIcon, showExtractionMessageModal, extractionMessageData, setShowExtractionMessageModal, refresh, toggleExtraction, onDelete, setShowImportModal, showImportModal, setShowDeleteModal, showDeleteModal, isTogglingExtraction, errorMessage, setErrorMessage, } = (0, useMappingsOperations_1.useMappingsOperations)({ ...groupingMappingApiConfig, mappingClient });
|
|
37
37
|
const renderAlert = (0, react_1.useCallback)(() => {
|
|
38
38
|
if (!errorMessage)
|
|
39
39
|
return;
|
|
40
40
|
return (react_1.default.createElement(itwinui_react_1.Alert, { type: "negative", onClose: () => setErrorMessage(undefined) }, errorMessage));
|
|
41
41
|
}, [errorMessage, setErrorMessage]);
|
|
42
|
-
return (react_1.default.createElement(MappingsView_1.MappingsView, { mappings: mappings, isLoading: isLoading,
|
|
42
|
+
return (react_1.default.createElement(MappingsView_1.MappingsView, { mappings: mappings, isLoading: isLoading, extractionStatusData: extractionStatusIcon, showExtractionMessageModal: showExtractionMessageModal, extractionMessageData: extractionMessageData, setShowExtractionMessageModal: setShowExtractionMessageModal, onRefresh: refresh, onToggleExtraction: toggleExtraction, onDelete: onDelete, showImportModal: showImportModal, setShowImportModal: setShowImportModal, showDeleteModal: showDeleteModal, setShowDeleteModal: setShowDeleteModal, isTogglingExtraction: isTogglingExtraction, alert: renderAlert(), ...props }));
|
|
43
43
|
};
|
|
44
44
|
exports.Mappings = Mappings;
|
|
45
45
|
//# sourceMappingURL=Mappings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mappings.js","sourceRoot":"","sources":["../../../../src/components/Mappings/Mappings.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,+CAA2C;AAC3C,0EAAmE;AAEnE,kFAAkF;AAGlF,iDAA8C;AAC9C,yEAAsE;AACtE,wDAA6C;AAWtC,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAE,EAAE;IAC/C,MAAM,wBAAwB,GAAG,IAAA,sDAA2B,GAAE,CAAC;IAC/D,MAAM,aAAa,GAAG,IAAA,uCAAgB,GAAE,CAAC;IACzC,MAAM,EACJ,QAAQ,EACR,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"Mappings.js","sourceRoot":"","sources":["../../../../src/components/Mappings/Mappings.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,+CAA2C;AAC3C,0EAAmE;AAEnE,kFAAkF;AAGlF,iDAA8C;AAC9C,yEAAsE;AACtE,wDAA6C;AAWtC,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAE,EAAE;IAC/C,MAAM,wBAAwB,GAAG,IAAA,sDAA2B,GAAE,CAAC;IAC/D,MAAM,aAAa,GAAG,IAAA,uCAAgB,GAAE,CAAC;IACzC,MAAM,EACJ,QAAQ,EACR,SAAS,EACT,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,6BAA6B,EAC7B,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,eAAe,GAChB,GAAG,IAAA,6CAAqB,EAAC,EAAE,GAAG,wBAAwB,EAAE,aAAa,EAAE,CAAC,CAAC;IAE1E,MAAM,WAAW,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACnC,IAAI,CAAC,YAAY;YAAE,OAAO;QAC1B,OAAO,CACL,8BAAC,qBAAK,IAAC,IAAI,EAAC,UAAU,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,IAC7D,YAAY,CACP,CACT,CAAC;IACJ,CAAC,EAAE,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;IAEpC,OAAO,CACL,8BAAC,2BAAY,IACX,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,oBAAoB,EAC1C,0BAA0B,EAAE,0BAA0B,EACtD,qBAAqB,EAAE,qBAAqB,EAC5C,6BAA6B,EAAE,6BAA6B,EAC5D,SAAS,EAAE,OAAO,EAClB,kBAAkB,EAAE,gBAAgB,EACpC,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,kBAAkB,EACtC,oBAAoB,EAAE,oBAAoB,EAC1C,KAAK,EAAE,WAAW,EAAE,KAChB,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CAAC;AAnDW,QAAA,QAAQ,YAmDnB","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React, { useCallback } from \"react\";\nimport { useMappingClient } from \"../context/MappingClientContext\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { useGroupingMappingApiConfig } from \"../context/GroupingApiConfigContext\";\nimport type { CreateTypeFromInterface } from \"../../common/utils\";\nimport type { mappingViewDefaultDisplayStrings } from \"./MappingsView\";\nimport { MappingsView } from \"./MappingsView\";\nimport { useMappingsOperations } from \"./hooks/useMappingsOperations\";\nimport { Alert } from \"@itwin/itwinui-react\";\n\nexport type IMappingTyped = CreateTypeFromInterface<Mapping>;\n\nexport interface MappingsProps {\n onClickAddMapping?: () => void;\n onClickMappingTitle?: (mapping: Mapping) => void;\n onClickMappingModify?: (mapping: Mapping) => void;\n displayStrings?: Partial<typeof mappingViewDefaultDisplayStrings>;\n}\n\nexport const Mappings = (props: MappingsProps) => {\n const groupingMappingApiConfig = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const {\n mappings,\n isLoading,\n extractionStatusIcon,\n showExtractionMessageModal,\n extractionMessageData,\n setShowExtractionMessageModal,\n refresh,\n toggleExtraction,\n onDelete,\n setShowImportModal,\n showImportModal,\n setShowDeleteModal,\n showDeleteModal,\n isTogglingExtraction,\n errorMessage,\n setErrorMessage,\n } = useMappingsOperations({ ...groupingMappingApiConfig, mappingClient });\n\n const renderAlert = useCallback(() => {\n if (!errorMessage) return;\n return (\n <Alert type=\"negative\" onClose={() => setErrorMessage(undefined)}>\n {errorMessage}\n </Alert>\n );\n }, [errorMessage, setErrorMessage]);\n\n return (\n <MappingsView\n mappings={mappings}\n isLoading={isLoading}\n extractionStatusData={extractionStatusIcon}\n showExtractionMessageModal={showExtractionMessageModal}\n extractionMessageData={extractionMessageData}\n setShowExtractionMessageModal={setShowExtractionMessageModal}\n onRefresh={refresh}\n onToggleExtraction={toggleExtraction}\n onDelete={onDelete}\n showImportModal={showImportModal}\n setShowImportModal={setShowImportModal}\n showDeleteModal={showDeleteModal}\n setShowDeleteModal={setShowDeleteModal}\n isTogglingExtraction={isTogglingExtraction}\n alert={renderAlert()}\n {...props}\n />\n );\n};\n"]}
|
|
@@ -2,8 +2,8 @@ import React from "react";
|
|
|
2
2
|
import type { Alert } from "@itwin/itwinui-react";
|
|
3
3
|
import "./MappingsView.scss";
|
|
4
4
|
import type { Mapping } from "@itwin/insights-client";
|
|
5
|
-
import type { ExtractionMessageData } from "
|
|
6
|
-
import type {
|
|
5
|
+
import type { ExtractionMessageData } from "../context/ExtractionStatusDataContext";
|
|
6
|
+
import type { ExtractionStatusData } from "../context/ExtractionStatusDataContext";
|
|
7
7
|
export declare const mappingViewDefaultDisplayStrings: {
|
|
8
8
|
mappings: string;
|
|
9
9
|
iTwins: string;
|
|
@@ -17,7 +17,7 @@ export declare const mappingViewDefaultDisplayStrings: {
|
|
|
17
17
|
export interface MappingsViewProps {
|
|
18
18
|
mappings: Mapping[];
|
|
19
19
|
isLoading: boolean;
|
|
20
|
-
|
|
20
|
+
extractionStatusData: ExtractionStatusData;
|
|
21
21
|
showExtractionMessageModal: boolean;
|
|
22
22
|
extractionMessageData: ExtractionMessageData[];
|
|
23
23
|
setShowExtractionMessageModal: (show: boolean) => void;
|
|
@@ -35,5 +35,5 @@ export interface MappingsViewProps {
|
|
|
35
35
|
onClickMappingModify?: (mapping: Mapping) => void;
|
|
36
36
|
alert?: React.ReactElement<typeof Alert>;
|
|
37
37
|
}
|
|
38
|
-
export declare const MappingsView: ({ mappings, isLoading,
|
|
38
|
+
export declare const MappingsView: ({ mappings, isLoading, extractionStatusData, showExtractionMessageModal, extractionMessageData, setShowExtractionMessageModal, isTogglingExtraction, onRefresh, onToggleExtraction, onDelete, showDeleteModal, setShowDeleteModal, displayStrings: userDisplayStrings, showImportModal, setShowImportModal, onClickAddMapping, onClickMappingTitle, onClickMappingModify, alert, }: MappingsViewProps) => JSX.Element;
|
|
39
39
|
//# sourceMappingURL=MappingsView.d.ts.map
|
|
@@ -31,7 +31,7 @@ exports.mappingViewDefaultDisplayStrings = {
|
|
|
31
31
|
iModelName: "Name",
|
|
32
32
|
iModelDescription: "Description",
|
|
33
33
|
};
|
|
34
|
-
const MappingsView = ({ mappings, isLoading,
|
|
34
|
+
const MappingsView = ({ mappings, isLoading, extractionStatusData, showExtractionMessageModal, extractionMessageData, setShowExtractionMessageModal, isTogglingExtraction, onRefresh, onToggleExtraction, onDelete, showDeleteModal, setShowDeleteModal, displayStrings: userDisplayStrings, showImportModal, setShowImportModal, onClickAddMapping, onClickMappingTitle, onClickMappingModify, alert, }) => {
|
|
35
35
|
const displayStrings = react_1.default.useMemo(() => ({ ...exports.mappingViewDefaultDisplayStrings, ...userDisplayStrings }), [userDisplayStrings]);
|
|
36
36
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
37
37
|
react_1.default.createElement(BlockingOverlay_1.BlockingOverlay, { isVisible: isTogglingExtraction }),
|
|
@@ -43,11 +43,11 @@ const MappingsView = ({ mappings, isLoading, extractionIconData, showExtractionM
|
|
|
43
43
|
showImportModal !== undefined && setShowImportModal && react_1.default.createElement(itwinui_react_1.IconButton, { title: `Import ${displayStrings.mappings}`, onClick: () => setShowImportModal(true) },
|
|
44
44
|
react_1.default.createElement(itwinui_icons_react_1.SvgImport, null))),
|
|
45
45
|
react_1.default.createElement("div", { className: "gmw-button-spacing" },
|
|
46
|
-
react_1.default.createElement(ExtractionStatusIcon_1.ExtractionStatusIcon, { iconStatus:
|
|
47
|
-
if (
|
|
46
|
+
react_1.default.createElement(ExtractionStatusIcon_1.ExtractionStatusIcon, { iconStatus: extractionStatusData.iconStatus, onClick: () => {
|
|
47
|
+
if (extractionStatusData.iconStatus === "negative") {
|
|
48
48
|
setShowExtractionMessageModal(true);
|
|
49
49
|
}
|
|
50
|
-
}, iconMessage:
|
|
50
|
+
}, iconMessage: extractionStatusData.iconMessage }),
|
|
51
51
|
react_1.default.createElement(itwinui_react_1.IconButton, { title: "Refresh", onClick: onRefresh, disabled: isLoading, styleType: 'borderless' },
|
|
52
52
|
react_1.default.createElement(itwinui_icons_react_1.SvgRefresh, null)))),
|
|
53
53
|
alert,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MappingsView.js","sourceRoot":"","sources":["../../../../src/components/Mappings/MappingsView.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport type {\n Alert,\n} from \"@itwin/itwinui-react\";\nimport {\n Button,\n IconButton,\n} from \"@itwin/itwinui-react\";\nimport {\n SvgAdd,\n SvgImport,\n SvgRefresh,\n} from \"@itwin/itwinui-icons-react\";\nimport { EmptyMessage } from \"../SharedComponents/EmptyMessage\";\nimport { LoadingOverlay } from \"../SharedComponents/LoadingOverlay\";\nimport \"./MappingsView.scss\";\nimport DeleteModal from \"../SharedComponents/DeleteModal\";\nimport { MappingImportWizardModal } from \"./Import/MappingImportWizardModal\";\nimport { HorizontalTile } from \"../SharedComponents/HorizontalTile\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { BlockingOverlay } from \"./BlockingOverlay\";\nimport { MappingUIActionGroup } from \"./MappingViewActionGroup\";\nimport type { ExtractionMessageData } from \"./hooks/useMappingsOperations\";\nimport type { ExtractionIconData } from \"./hooks/useMappingsOperations\";\nimport { ExtractionStatusIcon } from \"./Extraction/ExtractionStatusIcon\";\nimport { ExtractionMessageModal } from \"./Extraction/ExtractionMessageModal\";\n\nexport const mappingViewDefaultDisplayStrings = {\n mappings: \"Mappings\",\n iTwins: \"iTwins\",\n iTwinNumber: \"Number\",\n iTwinName: \"Name\",\n iTwinStatus: \"Status\",\n iModels: \"iModels\",\n iModelName: \"Name\",\n iModelDescription: \"Description\",\n};\n\nexport interface MappingsViewProps {\n mappings: Mapping[];\n isLoading: boolean;\n extractionIconData: ExtractionIconData;\n showExtractionMessageModal: boolean;\n extractionMessageData: ExtractionMessageData[];\n setShowExtractionMessageModal: (show: boolean) => void;\n isTogglingExtraction: boolean;\n onRefresh: () => Promise<void>;\n onToggleExtraction: (mapping: Mapping) => Promise<void>;\n onDelete: (mapping: Mapping) => Promise<void>;\n showDeleteModal: Mapping | undefined;\n setShowDeleteModal: (mapping?: Mapping) => void;\n displayStrings?: Partial<typeof mappingViewDefaultDisplayStrings>;\n showImportModal?: boolean;\n setShowImportModal?: (show: boolean) => void;\n onClickAddMapping?: () => void;\n onClickMappingTitle?: (mapping: Mapping) => void;\n onClickMappingModify?: (mapping: Mapping) => void;\n alert?: React.ReactElement<typeof Alert>;\n}\n\nexport const MappingsView = ({\n mappings,\n isLoading,\n extractionIconData,\n showExtractionMessageModal,\n extractionMessageData,\n setShowExtractionMessageModal,\n isTogglingExtraction,\n onRefresh,\n onToggleExtraction,\n onDelete,\n showDeleteModal,\n setShowDeleteModal,\n displayStrings: userDisplayStrings,\n showImportModal,\n setShowImportModal,\n onClickAddMapping,\n onClickMappingTitle,\n onClickMappingModify,\n alert,\n}: MappingsViewProps) => {\n const displayStrings = React.useMemo(\n () => ({ ...mappingViewDefaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n return (\n <>\n <BlockingOverlay isVisible={isTogglingExtraction} />\n <div className=\"gmw-mappings-view-container\">\n <div className=\"gmw-table-toolbar\">\n <div className=\"gmw-button-spacing\">\n {onClickAddMapping &&\n <Button\n startIcon={<SvgAdd />}\n onClick={onClickAddMapping}\n styleType=\"high-visibility\"\n title=\"New Mapping\"\n >\n New\n </Button>\n }\n {showImportModal !== undefined && setShowImportModal && <IconButton\n title={`Import ${displayStrings.mappings}`}\n onClick={() => setShowImportModal(true)}\n >\n <SvgImport />\n </IconButton>\n }\n </div>\n <div className=\"gmw-button-spacing\">\n <ExtractionStatusIcon\n iconStatus={extractionIconData.iconStatus}\n onClick={() => {\n if (extractionIconData.iconStatus === \"negative\") {\n setShowExtractionMessageModal(true);\n }\n }}\n iconMessage={extractionIconData.iconMessage}\n />\n <IconButton\n title=\"Refresh\"\n onClick={onRefresh}\n disabled={isLoading}\n styleType='borderless'\n >\n <SvgRefresh />\n </IconButton>\n </div>\n </div>\n {alert}\n <div className='gmw-mappings-border' />\n {isLoading ? (\n <LoadingOverlay />\n ) : mappings.length === 0 ? (\n <EmptyMessage message={`No ${displayStrings.mappings} available.`} />\n ) : (\n <div className=\"gmw-mappings-list\">\n {mappings.map((mapping) => (\n <HorizontalTile\n key={mapping.id}\n title={mapping.mappingName ? mapping.mappingName : \"Untitled\"}\n subText={mapping.description ?? \"\"}\n subtextToolTip={mapping.description ?? \"\"}\n titleTooltip={mapping.mappingName}\n onClickTitle={onClickMappingTitle ? () => onClickMappingTitle(mapping) : undefined}\n actionGroup={\n <MappingUIActionGroup\n mapping={mapping}\n onToggleExtraction={onToggleExtraction}\n onRefresh={onRefresh}\n onClickMappingModify={onClickMappingModify}\n setShowDeleteModal={setShowDeleteModal}\n />\n }\n />\n ))}\n </div>\n )}\n </div>\n <ExtractionMessageModal\n isOpen={showExtractionMessageModal}\n onClose={() => setShowExtractionMessageModal(false)}\n extractionMessageData={extractionMessageData}\n timestamp={extractionMessageData.length === 0 ? \"\" : extractionMessageData[0].date}\n />\n {showDeleteModal &&\n <DeleteModal\n entityName={showDeleteModal?.mappingName}\n onClose={() => setShowDeleteModal(undefined)}\n onDelete={async () => {\n await onDelete(showDeleteModal);\n }}\n refresh={onRefresh}\n />\n }\n {showImportModal && setShowImportModal && <MappingImportWizardModal\n show={showImportModal}\n setShow={setShowImportModal}\n onFinish={onRefresh}\n displayStrings={displayStrings}\n />}\n </>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"MappingsView.js","sourceRoot":"","sources":["../../../../src/components/Mappings/MappingsView.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport type {\n Alert,\n} from \"@itwin/itwinui-react\";\nimport {\n Button,\n IconButton,\n} from \"@itwin/itwinui-react\";\nimport {\n SvgAdd,\n SvgImport,\n SvgRefresh,\n} from \"@itwin/itwinui-icons-react\";\nimport { EmptyMessage } from \"../SharedComponents/EmptyMessage\";\nimport { LoadingOverlay } from \"../SharedComponents/LoadingOverlay\";\nimport \"./MappingsView.scss\";\nimport DeleteModal from \"../SharedComponents/DeleteModal\";\nimport { MappingImportWizardModal } from \"./Import/MappingImportWizardModal\";\nimport { HorizontalTile } from \"../SharedComponents/HorizontalTile\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { BlockingOverlay } from \"./BlockingOverlay\";\nimport { MappingUIActionGroup } from \"./MappingViewActionGroup\";\nimport type { ExtractionMessageData } from \"../context/ExtractionStatusDataContext\";\nimport type { ExtractionStatusData } from \"../context/ExtractionStatusDataContext\";\nimport { ExtractionStatusIcon } from \"./Extraction/ExtractionStatusIcon\";\nimport { ExtractionMessageModal } from \"./Extraction/ExtractionMessageModal\";\n\nexport const mappingViewDefaultDisplayStrings = {\n mappings: \"Mappings\",\n iTwins: \"iTwins\",\n iTwinNumber: \"Number\",\n iTwinName: \"Name\",\n iTwinStatus: \"Status\",\n iModels: \"iModels\",\n iModelName: \"Name\",\n iModelDescription: \"Description\",\n};\n\nexport interface MappingsViewProps {\n mappings: Mapping[];\n isLoading: boolean;\n extractionStatusData: ExtractionStatusData;\n showExtractionMessageModal: boolean;\n extractionMessageData: ExtractionMessageData[];\n setShowExtractionMessageModal: (show: boolean) => void;\n isTogglingExtraction: boolean;\n onRefresh: () => Promise<void>;\n onToggleExtraction: (mapping: Mapping) => Promise<void>;\n onDelete: (mapping: Mapping) => Promise<void>;\n showDeleteModal: Mapping | undefined;\n setShowDeleteModal: (mapping?: Mapping) => void;\n displayStrings?: Partial<typeof mappingViewDefaultDisplayStrings>;\n showImportModal?: boolean;\n setShowImportModal?: (show: boolean) => void;\n onClickAddMapping?: () => void;\n onClickMappingTitle?: (mapping: Mapping) => void;\n onClickMappingModify?: (mapping: Mapping) => void;\n alert?: React.ReactElement<typeof Alert>;\n}\n\nexport const MappingsView = ({\n mappings,\n isLoading,\n extractionStatusData,\n showExtractionMessageModal,\n extractionMessageData,\n setShowExtractionMessageModal,\n isTogglingExtraction,\n onRefresh,\n onToggleExtraction,\n onDelete,\n showDeleteModal,\n setShowDeleteModal,\n displayStrings: userDisplayStrings,\n showImportModal,\n setShowImportModal,\n onClickAddMapping,\n onClickMappingTitle,\n onClickMappingModify,\n alert,\n}: MappingsViewProps) => {\n const displayStrings = React.useMemo(\n () => ({ ...mappingViewDefaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n return (\n <>\n <BlockingOverlay isVisible={isTogglingExtraction} />\n <div className=\"gmw-mappings-view-container\">\n <div className=\"gmw-table-toolbar\">\n <div className=\"gmw-button-spacing\">\n {onClickAddMapping &&\n <Button\n startIcon={<SvgAdd />}\n onClick={onClickAddMapping}\n styleType=\"high-visibility\"\n title=\"New Mapping\"\n >\n New\n </Button>\n }\n {showImportModal !== undefined && setShowImportModal && <IconButton\n title={`Import ${displayStrings.mappings}`}\n onClick={() => setShowImportModal(true)}\n >\n <SvgImport />\n </IconButton>\n }\n </div>\n <div className=\"gmw-button-spacing\">\n <ExtractionStatusIcon\n iconStatus={extractionStatusData.iconStatus}\n onClick={() => {\n if (extractionStatusData.iconStatus === \"negative\") {\n setShowExtractionMessageModal(true);\n }\n }}\n iconMessage={extractionStatusData.iconMessage}\n />\n <IconButton\n title=\"Refresh\"\n onClick={onRefresh}\n disabled={isLoading}\n styleType='borderless'\n >\n <SvgRefresh />\n </IconButton>\n </div>\n </div>\n {alert}\n <div className='gmw-mappings-border' />\n {isLoading ? (\n <LoadingOverlay />\n ) : mappings.length === 0 ? (\n <EmptyMessage message={`No ${displayStrings.mappings} available.`} />\n ) : (\n <div className=\"gmw-mappings-list\">\n {mappings.map((mapping) => (\n <HorizontalTile\n key={mapping.id}\n title={mapping.mappingName ? mapping.mappingName : \"Untitled\"}\n subText={mapping.description ?? \"\"}\n subtextToolTip={mapping.description ?? \"\"}\n titleTooltip={mapping.mappingName}\n onClickTitle={onClickMappingTitle ? () => onClickMappingTitle(mapping) : undefined}\n actionGroup={\n <MappingUIActionGroup\n mapping={mapping}\n onToggleExtraction={onToggleExtraction}\n onRefresh={onRefresh}\n onClickMappingModify={onClickMappingModify}\n setShowDeleteModal={setShowDeleteModal}\n />\n }\n />\n ))}\n </div>\n )}\n </div>\n <ExtractionMessageModal\n isOpen={showExtractionMessageModal}\n onClose={() => setShowExtractionMessageModal(false)}\n extractionMessageData={extractionMessageData}\n timestamp={extractionMessageData.length === 0 ? \"\" : extractionMessageData[0].date}\n />\n {showDeleteModal &&\n <DeleteModal\n entityName={showDeleteModal?.mappingName}\n onClose={() => setShowDeleteModal(undefined)}\n onDelete={async () => {\n await onDelete(showDeleteModal);\n }}\n refresh={onRefresh}\n />\n }\n {showImportModal && setShowImportModal && <MappingImportWizardModal\n show={showImportModal}\n setShow={setShowImportModal}\n onFinish={onRefresh}\n displayStrings={displayStrings}\n />}\n </>\n );\n};\n"]}
|
|
@@ -1,23 +1,15 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { IMappingsClient, Mapping } from "@itwin/insights-client";
|
|
3
3
|
import type { GroupingMappingApiConfig } from "../../context/GroupingApiConfigContext";
|
|
4
|
+
import type { ExtractionStatusData } from "../../context/ExtractionStatusDataContext";
|
|
5
|
+
import type { ExtractionMessageData } from "../../context/ExtractionStatusDataContext";
|
|
4
6
|
export interface MappingsOperationsProps extends GroupingMappingApiConfig {
|
|
5
7
|
mappingClient: IMappingsClient;
|
|
6
8
|
}
|
|
7
|
-
export interface ExtractionMessageData {
|
|
8
|
-
date: string;
|
|
9
|
-
category: string;
|
|
10
|
-
level: string;
|
|
11
|
-
message: string;
|
|
12
|
-
}
|
|
13
|
-
export interface ExtractionIconData {
|
|
14
|
-
iconStatus: "negative" | "positive" | "warning";
|
|
15
|
-
iconMessage: string;
|
|
16
|
-
}
|
|
17
9
|
export declare const useMappingsOperations: ({ iModelId, getAccessToken, mappingClient }: MappingsOperationsProps) => {
|
|
18
10
|
mappings: Mapping[];
|
|
19
11
|
isLoading: boolean;
|
|
20
|
-
|
|
12
|
+
extractionStatusIcon: ExtractionStatusData;
|
|
21
13
|
showExtractionMessageModal: boolean;
|
|
22
14
|
extractionMessageData: ExtractionMessageData[];
|
|
23
15
|
setShowExtractionMessageModal: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
@@ -8,6 +8,7 @@ exports.useMappingsOperations = void 0;
|
|
|
8
8
|
const react_1 = require("react");
|
|
9
9
|
const utils_1 = require("../../../common/utils");
|
|
10
10
|
const ExtractionClientContext_1 = require("../../context/ExtractionClientContext");
|
|
11
|
+
const ExtractionStatusDataContext_1 = require("../../context/ExtractionStatusDataContext");
|
|
11
12
|
const fetchMappings = async (setMappings, iModelId, setIsLoading, getAccessToken, mappingsClient, setErrorMessage) => {
|
|
12
13
|
try {
|
|
13
14
|
setIsLoading(true);
|
|
@@ -22,28 +23,25 @@ const fetchMappings = async (setMappings, iModelId, setIsLoading, getAccessToken
|
|
|
22
23
|
setIsLoading(false);
|
|
23
24
|
}
|
|
24
25
|
};
|
|
25
|
-
const fetchExtractionStatus = async (iModelId, getAccessToken, extractionClient,
|
|
26
|
-
setExtractionIconData({
|
|
27
|
-
iconStatus: "warning",
|
|
28
|
-
iconMessage: "Extraction status pending.",
|
|
29
|
-
});
|
|
26
|
+
const fetchExtractionStatus = async (iModelId, getAccessToken, extractionClient, setExtractionStatusIcon, setExtractionMessageData) => {
|
|
30
27
|
try {
|
|
28
|
+
setExtractionStatusIcon({
|
|
29
|
+
iconStatus: undefined,
|
|
30
|
+
iconMessage: "Loading...",
|
|
31
|
+
});
|
|
31
32
|
const accessToken = await getAccessToken();
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
const extraction = extractionClient.getExtractionHistoryIterator(accessToken, iModelId, 1);
|
|
34
|
+
const latestExtractionResult = await extraction.next();
|
|
35
|
+
if (latestExtractionResult.done) {
|
|
36
|
+
setExtractionStatusIcon({
|
|
35
37
|
iconStatus: "negative",
|
|
36
38
|
iconMessage: "No extraction found.",
|
|
37
39
|
});
|
|
38
40
|
}
|
|
39
41
|
else {
|
|
40
|
-
const jobId =
|
|
42
|
+
const jobId = latestExtractionResult.value.jobId;
|
|
41
43
|
const status = await extractionClient.getExtractionStatus(accessToken, jobId);
|
|
42
44
|
if (status.containsIssues) {
|
|
43
|
-
setExtractionIconData({
|
|
44
|
-
iconStatus: "negative",
|
|
45
|
-
iconMessage: "Extraction contains issues. Click to view extraction logs.",
|
|
46
|
-
});
|
|
47
45
|
const logs = await extractionClient.getExtractionLogs(accessToken, jobId);
|
|
48
46
|
const filteredLogs = logs.filter((log) => log.message !== null);
|
|
49
47
|
const extractionMessageData = filteredLogs.map((filteredLog) => ({
|
|
@@ -53,9 +51,13 @@ const fetchExtractionStatus = async (iModelId, getAccessToken, extractionClient,
|
|
|
53
51
|
message: String(filteredLog.message),
|
|
54
52
|
}));
|
|
55
53
|
setExtractionMessageData(extractionMessageData);
|
|
54
|
+
setExtractionStatusIcon({
|
|
55
|
+
iconStatus: "negative",
|
|
56
|
+
iconMessage: "Extraction contains issues. Click to view extraction logs.",
|
|
57
|
+
});
|
|
56
58
|
}
|
|
57
59
|
else {
|
|
58
|
-
|
|
60
|
+
setExtractionStatusIcon({
|
|
59
61
|
iconStatus: "positive",
|
|
60
62
|
iconMessage: "Extraction successful.",
|
|
61
63
|
});
|
|
@@ -63,7 +65,7 @@ const fetchExtractionStatus = async (iModelId, getAccessToken, extractionClient,
|
|
|
63
65
|
}
|
|
64
66
|
}
|
|
65
67
|
catch (error) {
|
|
66
|
-
|
|
68
|
+
setExtractionStatusIcon({
|
|
67
69
|
iconStatus: "negative",
|
|
68
70
|
iconMessage: "Operation failed. Please try again.",
|
|
69
71
|
});
|
|
@@ -77,22 +79,27 @@ const useMappingsOperations = ({ iModelId, getAccessToken, mappingClient }) => {
|
|
|
77
79
|
const extractionClient = (0, ExtractionClientContext_1.useExtractionClient)();
|
|
78
80
|
const [errorMessage, setErrorMessage] = (0, react_1.useState)(undefined);
|
|
79
81
|
const [isTogglingExtraction, setIsTogglingExtraction] = (0, react_1.useState)(false);
|
|
80
|
-
const
|
|
81
|
-
iconStatus: "warning",
|
|
82
|
-
iconMessage: "",
|
|
83
|
-
});
|
|
82
|
+
const { extractionStatusIcon, extractionMessageData, setExtractionStatusIcon, setExtractionMessageData } = (0, ExtractionStatusDataContext_1.useExtractionStatusDataContext)();
|
|
84
83
|
const [showExtractionMessageModal, setShowExtractionMessageModal] = (0, react_1.useState)(false);
|
|
85
|
-
const
|
|
84
|
+
const previousStatusIcon = (0, react_1.useRef)();
|
|
86
85
|
(0, react_1.useEffect)(() => {
|
|
87
86
|
void fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient, setErrorMessage);
|
|
88
87
|
}, [getAccessToken, mappingClient, iModelId]);
|
|
89
88
|
(0, react_1.useEffect)(() => {
|
|
90
|
-
|
|
91
|
-
}, [
|
|
89
|
+
previousStatusIcon.current = extractionStatusIcon;
|
|
90
|
+
}, [extractionStatusIcon]);
|
|
91
|
+
(0, react_1.useEffect)(() => {
|
|
92
|
+
if (previousStatusIcon.current?.iconStatus === undefined) {
|
|
93
|
+
void fetchExtractionStatus(iModelId, getAccessToken, extractionClient, setExtractionStatusIcon, setExtractionMessageData);
|
|
94
|
+
}
|
|
95
|
+
}, [iModelId, getAccessToken, extractionClient, isLoading, setExtractionStatusIcon, setExtractionMessageData]);
|
|
92
96
|
const refresh = (0, react_1.useCallback)(async () => {
|
|
93
97
|
setMappings([]);
|
|
94
|
-
await
|
|
95
|
-
|
|
98
|
+
await Promise.all([
|
|
99
|
+
fetchExtractionStatus(iModelId, getAccessToken, extractionClient, setExtractionStatusIcon, setExtractionMessageData),
|
|
100
|
+
fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient, setErrorMessage),
|
|
101
|
+
]);
|
|
102
|
+
}, [extractionClient, getAccessToken, mappingClient, iModelId, setExtractionMessageData, setExtractionStatusIcon]);
|
|
96
103
|
const toggleExtraction = (0, react_1.useCallback)(async (mapping) => {
|
|
97
104
|
try {
|
|
98
105
|
setIsTogglingExtraction(true);
|
|
@@ -114,7 +121,7 @@ const useMappingsOperations = ({ iModelId, getAccessToken, mappingClient }) => {
|
|
|
114
121
|
await mappingClient.deleteMapping(accessToken, iModelId, mapping.id);
|
|
115
122
|
await refresh();
|
|
116
123
|
};
|
|
117
|
-
return { mappings, isLoading,
|
|
124
|
+
return { mappings, isLoading, extractionStatusIcon, showExtractionMessageModal, extractionMessageData, setShowExtractionMessageModal, refresh, toggleExtraction, onDelete, setShowImportModal, showImportModal, setShowDeleteModal, showDeleteModal, isTogglingExtraction, errorMessage, setErrorMessage };
|
|
118
125
|
};
|
|
119
126
|
exports.useMappingsOperations = useMappingsOperations;
|
|
120
127
|
//# sourceMappingURL=useMappingsOperations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMappingsOperations.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/hooks/useMappingsOperations.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { useCallback, useEffect, useState } from \"react\";\nimport { getErrorMessage } from \"../../../common/utils\";\nimport type { IExtractionClient, IMappingsClient, Mapping } from \"@itwin/insights-client\";\nimport type { GroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport type { GetAccessTokenFn } from \"../../context/GroupingApiConfigContext\";\nimport { useExtractionClient } from \"../../context/ExtractionClientContext\";\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<Mapping[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n getAccessToken: GetAccessTokenFn,\n mappingsClient: IMappingsClient,\n setErrorMessage: (message: string | undefined) => void\n) => {\n try {\n setIsLoading(true);\n const accessToken = await getAccessToken();\n const mappings = await mappingsClient.getMappings(accessToken, iModelId);\n setMappings(mappings.sort((a, b) => a.mappingName.localeCompare(b.mappingName)));\n } catch (error: any) {\n setErrorMessage(getErrorMessage(error.status));\n } finally {\n setIsLoading(false);\n }\n};\n\nconst fetchExtractionStatus = async (\n iModelId: string,\n getAccessToken: GetAccessTokenFn,\n extractionClient: IExtractionClient,\n setExtractionIconData: React.Dispatch<React.SetStateAction<ExtractionIconData>>,\n setExtractionMessageData: React.Dispatch<React.SetStateAction<ExtractionMessageData[]>>\n) => {\n setExtractionIconData({\n iconStatus: \"warning\",\n iconMessage: \"Extraction status pending.\",\n });\n try {\n const accessToken = await getAccessToken();\n const extractions = await extractionClient.getExtractionHistory(accessToken, iModelId, 1);\n if (extractions.length === 0) {\n setExtractionIconData({\n iconStatus: \"negative\",\n iconMessage: \"No extraction found.\",\n });\n } else {\n const jobId = extractions[0].jobId;\n const status = await extractionClient.getExtractionStatus(accessToken, jobId);\n if (status.containsIssues) {\n setExtractionIconData({\n iconStatus: \"negative\",\n iconMessage: \"Extraction contains issues. Click to view extraction logs.\",\n });\n const logs = await extractionClient.getExtractionLogs(accessToken, jobId);\n const filteredLogs = logs.filter((log) => log.message !== null);\n const extractionMessageData = filteredLogs.map((filteredLog) => ({\n date: filteredLog.dateTime,\n category: filteredLog.category,\n level: filteredLog.level,\n message: String(filteredLog.message),\n }));\n setExtractionMessageData(extractionMessageData);\n } else {\n setExtractionIconData({\n iconStatus: \"positive\",\n iconMessage: \"Extraction successful.\",\n });\n }\n }\n } catch (error: any) {\n setExtractionIconData({\n iconStatus: \"negative\",\n iconMessage: \"Operation failed. Please try again.\",\n });\n }\n};\n\nexport interface MappingsOperationsProps extends GroupingMappingApiConfig {\n mappingClient: IMappingsClient;\n}\n\nexport interface ExtractionMessageData {\n date: string;\n category: string;\n level: string;\n message: string;\n}\n\nexport interface ExtractionIconData {\n iconStatus: \"negative\" | \"positive\" | \"warning\";\n iconMessage: string;\n}\n\nexport const useMappingsOperations = ({ iModelId, getAccessToken, mappingClient }: MappingsOperationsProps) => {\n const [showImportModal, setShowImportModal] = useState<boolean | undefined>(false);\n const [showDeleteModal, setShowDeleteModal] = useState<Mapping | undefined>(undefined);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [mappings, setMappings] = useState<Mapping[]>([]);\n const extractionClient = useExtractionClient();\n const [errorMessage, setErrorMessage] = useState<string | undefined>(undefined);\n const [isTogglingExtraction, setIsTogglingExtraction] = useState<boolean>(false);\n const [extractionIconData, setExtractionIconData] = useState<ExtractionIconData>({\n iconStatus: \"warning\",\n iconMessage: \"\",\n });\n const [showExtractionMessageModal, setShowExtractionMessageModal] = useState<boolean>(false);\n const [extractionMessageData, setExtractionMessageData] = useState<ExtractionMessageData[]>([]);\n\n useEffect(() => {\n void fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient, setErrorMessage);\n }, [getAccessToken, mappingClient, iModelId]);\n\n useEffect(() => {\n void fetchExtractionStatus(\n iModelId,\n getAccessToken,\n extractionClient,\n setExtractionIconData,\n setExtractionMessageData\n );\n }, [iModelId, getAccessToken, extractionClient]);\n\n const refresh = useCallback(async () => {\n setMappings([]);\n await fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient, setErrorMessage);\n }, [getAccessToken, mappingClient, iModelId]);\n\n const toggleExtraction = useCallback(async (mapping: Mapping) => {\n try {\n setIsTogglingExtraction(true);\n const newState = !mapping.extractionEnabled;\n const accessToken = await getAccessToken();\n await mappingClient.updateMapping(accessToken, iModelId, mapping.id, {\n extractionEnabled: newState,\n });\n } catch (error: any) {\n setErrorMessage(getErrorMessage(error.status));\n } finally {\n setIsTogglingExtraction(false);\n }\n }, [getAccessToken, iModelId, mappingClient]);\n\n const onDelete = async (mapping: Mapping) => {\n const accessToken = await getAccessToken();\n await mappingClient.deleteMapping(accessToken, iModelId, mapping.id);\n await refresh();\n };\n\n return { mappings, isLoading, extractionIconData, showExtractionMessageModal, extractionMessageData, setShowExtractionMessageModal, refresh, toggleExtraction, onDelete, setShowImportModal, showImportModal, setShowDeleteModal, showDeleteModal, isTogglingExtraction, errorMessage, setErrorMessage };\n};\n"]}
|
|
1
|
+
{"version":3,"file":"useMappingsOperations.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/hooks/useMappingsOperations.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { getErrorMessage } from \"../../../common/utils\";\nimport type { IExtractionClient, IMappingsClient, Mapping } from \"@itwin/insights-client\";\nimport type { GroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport type { GetAccessTokenFn } from \"../../context/GroupingApiConfigContext\";\nimport { useExtractionClient } from \"../../context/ExtractionClientContext\";\nimport type { ExtractionStatusData } from \"../../context/ExtractionStatusDataContext\";\nimport type { ExtractionMessageData } from \"../../context/ExtractionStatusDataContext\";\nimport { useExtractionStatusDataContext } from \"../../context/ExtractionStatusDataContext\";\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<Mapping[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n getAccessToken: GetAccessTokenFn,\n mappingsClient: IMappingsClient,\n setErrorMessage: (message: string | undefined) => void\n) => {\n try {\n setIsLoading(true);\n const accessToken = await getAccessToken();\n const mappings = await mappingsClient.getMappings(accessToken, iModelId);\n setMappings(mappings.sort((a, b) => a.mappingName.localeCompare(b.mappingName)));\n } catch (error: any) {\n setErrorMessage(getErrorMessage(error.status));\n } finally {\n setIsLoading(false);\n }\n};\n\nconst fetchExtractionStatus = async (\n iModelId: string,\n getAccessToken: GetAccessTokenFn,\n extractionClient: IExtractionClient,\n setExtractionStatusIcon: (extractionStatusIcon: ExtractionStatusData) => void,\n setExtractionMessageData: (extractionMessageData: ExtractionMessageData[]) => void\n) => {\n try {\n setExtractionStatusIcon({\n iconStatus: undefined,\n iconMessage: \"Loading...\",\n });\n const accessToken = await getAccessToken();\n const extraction = extractionClient.getExtractionHistoryIterator(accessToken, iModelId, 1);\n const latestExtractionResult = await extraction.next();\n if(latestExtractionResult.done){\n setExtractionStatusIcon({\n iconStatus: \"negative\",\n iconMessage: \"No extraction found.\",\n });\n } else {\n const jobId = latestExtractionResult.value.jobId;\n const status = await extractionClient.getExtractionStatus(accessToken, jobId);\n if (status.containsIssues) {\n const logs = await extractionClient.getExtractionLogs(accessToken, jobId);\n const filteredLogs = logs.filter((log) => log.message !== null);\n const extractionMessageData = filteredLogs.map((filteredLog) => ({\n date: filteredLog.dateTime,\n category: filteredLog.category,\n level: filteredLog.level,\n message: String(filteredLog.message),\n }));\n setExtractionMessageData(extractionMessageData);\n setExtractionStatusIcon({\n iconStatus: \"negative\",\n iconMessage: \"Extraction contains issues. Click to view extraction logs.\",\n });\n } else {\n setExtractionStatusIcon({\n iconStatus: \"positive\",\n iconMessage: \"Extraction successful.\",\n });\n }\n }\n } catch (error: any) {\n setExtractionStatusIcon({\n iconStatus: \"negative\",\n iconMessage: \"Operation failed. Please try again.\",\n });\n }\n};\n\nexport interface MappingsOperationsProps extends GroupingMappingApiConfig {\n mappingClient: IMappingsClient;\n}\n\nexport const useMappingsOperations = ({ iModelId, getAccessToken, mappingClient }: MappingsOperationsProps) => {\n const [showImportModal, setShowImportModal] = useState<boolean | undefined>(false);\n const [showDeleteModal, setShowDeleteModal] = useState<Mapping | undefined>(undefined);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [mappings, setMappings] = useState<Mapping[]>([]);\n const extractionClient = useExtractionClient();\n const [errorMessage, setErrorMessage] = useState<string | undefined>(undefined);\n const [isTogglingExtraction, setIsTogglingExtraction] = useState<boolean>(false);\n const {extractionStatusIcon, extractionMessageData, setExtractionStatusIcon, setExtractionMessageData} = useExtractionStatusDataContext();\n const [showExtractionMessageModal, setShowExtractionMessageModal] = useState<boolean>(false);\n const previousStatusIcon = useRef<ExtractionStatusData>();\n\n useEffect(() => {\n void fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient, setErrorMessage);\n }, [getAccessToken, mappingClient, iModelId]);\n\n useEffect(() => {\n previousStatusIcon.current = extractionStatusIcon;\n }, [extractionStatusIcon]);\n\n useEffect(() => {\n if(previousStatusIcon.current?.iconStatus === undefined) {\n void fetchExtractionStatus(\n iModelId,\n getAccessToken,\n extractionClient,\n setExtractionStatusIcon,\n setExtractionMessageData\n );\n }\n }, [iModelId, getAccessToken, extractionClient, isLoading, setExtractionStatusIcon, setExtractionMessageData]);\n\n const refresh = useCallback(async () => {\n setMappings([]);\n await Promise.all([\n fetchExtractionStatus(iModelId, getAccessToken, extractionClient, setExtractionStatusIcon, setExtractionMessageData),\n fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient, setErrorMessage),\n ]);\n }, [extractionClient, getAccessToken, mappingClient, iModelId, setExtractionMessageData, setExtractionStatusIcon]);\n\n const toggleExtraction = useCallback(async (mapping: Mapping) => {\n try {\n setIsTogglingExtraction(true);\n const newState = !mapping.extractionEnabled;\n const accessToken = await getAccessToken();\n await mappingClient.updateMapping(accessToken, iModelId, mapping.id, {\n extractionEnabled: newState,\n });\n } catch (error: any) {\n setErrorMessage(getErrorMessage(error.status));\n } finally {\n setIsTogglingExtraction(false);\n }\n }, [getAccessToken, iModelId, mappingClient]);\n\n const onDelete = async (mapping: Mapping) => {\n const accessToken = await getAccessToken();\n await mappingClient.deleteMapping(accessToken, iModelId, mapping.id);\n await refresh();\n };\n\n return { mappings, isLoading, extractionStatusIcon, showExtractionMessageModal, extractionMessageData, setShowExtractionMessageModal, refresh, toggleExtraction, onDelete, setShowImportModal, showImportModal, setShowDeleteModal, showDeleteModal, isTogglingExtraction, errorMessage, setErrorMessage };\n};\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export interface ExtractionStatusData {
|
|
3
|
+
iconStatus: "negative" | "positive" | "warning" | undefined;
|
|
4
|
+
iconMessage: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ExtractionMessageData {
|
|
7
|
+
date: string;
|
|
8
|
+
category: string;
|
|
9
|
+
level: string;
|
|
10
|
+
message: string;
|
|
11
|
+
}
|
|
12
|
+
export interface IExtractionStatusDataProps {
|
|
13
|
+
extractionStatusIcon: ExtractionStatusData;
|
|
14
|
+
extractionMessageData: ExtractionMessageData[];
|
|
15
|
+
setExtractionStatusIcon: (extractionStatusIcon: ExtractionStatusData | ((extractionStatusIcon: ExtractionStatusData) => ExtractionStatusData)) => void;
|
|
16
|
+
setExtractionMessageData: (extractionMessageData: ExtractionMessageData[]) => void;
|
|
17
|
+
}
|
|
18
|
+
export declare const ExtractionStatusDataContext: import("react").Context<IExtractionStatusDataProps>;
|
|
19
|
+
export declare const useExtractionStatusDataContext: () => IExtractionStatusDataProps;
|
|
20
|
+
//# sourceMappingURL=ExtractionStatusDataContext.d.ts.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useExtractionStatusDataContext = exports.ExtractionStatusDataContext = void 0;
|
|
4
|
+
/*---------------------------------------------------------------------------------------------
|
|
5
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
6
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
7
|
+
*--------------------------------------------------------------------------------------------*/
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
exports.ExtractionStatusDataContext = (0, react_1.createContext)({
|
|
10
|
+
extractionStatusIcon: {
|
|
11
|
+
iconStatus: undefined,
|
|
12
|
+
iconMessage: "",
|
|
13
|
+
},
|
|
14
|
+
extractionMessageData: [],
|
|
15
|
+
setExtractionStatusIcon: () => { },
|
|
16
|
+
setExtractionMessageData: () => { },
|
|
17
|
+
});
|
|
18
|
+
const useExtractionStatusDataContext = () => {
|
|
19
|
+
const context = (0, react_1.useContext)(exports.ExtractionStatusDataContext);
|
|
20
|
+
if (!context) {
|
|
21
|
+
throw new Error("useExtractionStatusIconContext should be used within a ExtractionStatusIconContext provider");
|
|
22
|
+
}
|
|
23
|
+
return context;
|
|
24
|
+
};
|
|
25
|
+
exports.useExtractionStatusDataContext = useExtractionStatusDataContext;
|
|
26
|
+
//# sourceMappingURL=ExtractionStatusDataContext.js.map
|