@itwin/grouping-mapping-widget 0.17.4 → 0.18.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/formula/FormulaDataTypeResolver.js +4 -4
- package/lib/cjs/formula/FormulaDataTypeResolver.js.map +1 -1
- package/lib/cjs/formula/FormulaFunctionProvider.js +4 -4
- package/lib/cjs/formula/FormulaFunctionProvider.js.map +1 -1
- package/lib/cjs/formula/FormulaSplitter.js +12 -12
- package/lib/cjs/formula/FormulaSplitter.js.map +1 -1
- package/lib/cjs/formula/FormulaTokensDataTypeResolver.js +6 -6
- package/lib/cjs/formula/FormulaTokensDataTypeResolver.js.map +1 -1
- package/lib/cjs/formula/InfixToPostfixConverter.js +11 -11
- package/lib/cjs/formula/InfixToPostfixConverter.js.map +1 -1
- package/lib/cjs/grouping-mapping-widget.d.ts +3 -1
- package/lib/cjs/grouping-mapping-widget.js +7 -3
- package/lib/cjs/grouping-mapping-widget.js.map +1 -1
- package/lib/cjs/test/GroupPropertyUtils.test.js +74 -74
- package/lib/cjs/test/GroupPropertyUtils.test.js.map +1 -1
- package/lib/cjs/test/GroupingMappingCustomUI.test.js +9 -9
- package/lib/cjs/test/GroupingMappingCustomUI.test.js.map +1 -1
- package/lib/cjs/test/PropertyFieldsHelpers.js +8 -8
- package/lib/cjs/test/PropertyFieldsHelpers.js.map +1 -1
- package/lib/cjs/test/WidgetHeader.test.js +2 -2
- package/lib/cjs/test/WidgetHeader.test.js.map +1 -1
- package/lib/cjs/test/test-utils.js +1 -1
- package/lib/cjs/test/test-utils.js.map +1 -1
- package/lib/cjs/widget/components/BlockingOverlay.js +1 -1
- package/lib/cjs/widget/components/BlockingOverlay.js.map +1 -1
- package/lib/cjs/widget/components/CalculatedPropertyAction.js +7 -7
- package/lib/cjs/widget/components/CalculatedPropertyAction.js.map +1 -1
- package/lib/cjs/widget/components/CalculatedPropertyActionWithVisuals.js +21 -21
- package/lib/cjs/widget/components/CalculatedPropertyActionWithVisuals.js.map +1 -1
- package/lib/cjs/widget/components/CalculatedPropertyTable.js +4 -4
- package/lib/cjs/widget/components/CalculatedPropertyTable.js.map +1 -1
- package/lib/cjs/widget/components/ConfirmMappingsImport.d.ts +1 -1
- package/lib/cjs/widget/components/ConfirmMappingsImport.js +8 -8
- package/lib/cjs/widget/components/ConfirmMappingsImport.js.map +1 -1
- package/lib/cjs/widget/components/CustomCalculationAction.js +20 -18
- package/lib/cjs/widget/components/CustomCalculationAction.js.map +1 -1
- package/lib/cjs/widget/components/CustomCalculationTable.js +4 -4
- package/lib/cjs/widget/components/CustomCalculationTable.js.map +1 -1
- package/lib/cjs/widget/components/DeleteModal.js +2 -2
- package/lib/cjs/widget/components/DeleteModal.js.map +1 -1
- package/lib/cjs/widget/components/GroupAction.js +16 -16
- package/lib/cjs/widget/components/GroupAction.js.map +1 -1
- package/lib/cjs/widget/components/GroupColorLegend.js +1 -1
- package/lib/cjs/widget/components/GroupColorLegend.js.map +1 -1
- package/lib/cjs/widget/components/GroupColorToggle.js +9 -9
- package/lib/cjs/widget/components/GroupColorToggle.js.map +1 -1
- package/lib/cjs/widget/components/GroupDetails.js +3 -3
- package/lib/cjs/widget/components/GroupDetails.js.map +1 -1
- package/lib/cjs/widget/components/GroupMenuActions.js +2 -2
- package/lib/cjs/widget/components/GroupMenuActions.js.map +1 -1
- package/lib/cjs/widget/components/GroupPropertyAction.js +35 -35
- package/lib/cjs/widget/components/GroupPropertyAction.js.map +1 -1
- package/lib/cjs/widget/components/GroupPropertyTable.js +4 -4
- package/lib/cjs/widget/components/GroupPropertyTable.js.map +1 -1
- package/lib/cjs/widget/components/GroupPropertyUtils.js +2 -2
- package/lib/cjs/widget/components/GroupPropertyUtils.js.map +1 -1
- package/lib/cjs/widget/components/Grouping.d.ts +2 -1
- package/lib/cjs/widget/components/Grouping.js +16 -13
- package/lib/cjs/widget/components/Grouping.js.map +1 -1
- package/lib/cjs/widget/components/Grouping.scss +8 -0
- package/lib/cjs/widget/components/GroupingMapping.js +5 -5
- package/lib/cjs/widget/components/GroupingMapping.js.map +1 -1
- package/lib/cjs/widget/components/GroupingMappingContent.js +4 -4
- package/lib/cjs/widget/components/GroupingMappingContent.js.map +1 -1
- package/lib/cjs/widget/components/GroupingMappingContext.js +24 -21
- package/lib/cjs/widget/components/GroupingMappingContext.js.map +1 -1
- package/lib/cjs/widget/components/GroupingMappingRouter.js +3 -3
- package/lib/cjs/widget/components/GroupingMappingRouter.js.map +1 -1
- package/lib/cjs/widget/components/GroupsShowHideButtons.js +3 -3
- package/lib/cjs/widget/components/GroupsShowHideButtons.js.map +1 -1
- package/lib/cjs/widget/components/GroupsVisualization.js +38 -28
- package/lib/cjs/widget/components/GroupsVisualization.js.map +1 -1
- package/lib/cjs/widget/components/GroupsVisualizationActions.js +1 -1
- package/lib/cjs/widget/components/GroupsVisualizationActions.js.map +1 -1
- package/lib/cjs/widget/components/HorizontalTile.js +1 -1
- package/lib/cjs/widget/components/HorizontalTile.js.map +1 -1
- package/lib/cjs/widget/components/MappingAction.js +9 -9
- package/lib/cjs/widget/components/MappingAction.js.map +1 -1
- package/lib/cjs/widget/components/MappingImportWizardModal.d.ts +2 -2
- package/lib/cjs/widget/components/MappingImportWizardModal.js +13 -13
- package/lib/cjs/widget/components/MappingImportWizardModal.js.map +1 -1
- package/lib/cjs/widget/components/MappingViewActionGroup.d.ts +12 -0
- package/lib/cjs/widget/components/MappingViewActionGroup.js +34 -0
- package/lib/cjs/widget/components/MappingViewActionGroup.js.map +1 -0
- package/lib/cjs/widget/components/Mappings.d.ts +13 -0
- package/lib/cjs/widget/components/Mappings.js +45 -0
- package/lib/cjs/widget/components/Mappings.js.map +1 -0
- package/lib/cjs/widget/components/MappingsView.d.ts +33 -0
- package/lib/cjs/widget/components/MappingsView.js +54 -0
- package/lib/cjs/widget/components/MappingsView.js.map +1 -0
- package/lib/{esm/widget/components/Mapping.scss → cjs/widget/components/MappingsView.scss} +6 -2
- package/lib/cjs/widget/components/PropertyAction.js +7 -7
- package/lib/cjs/widget/components/PropertyAction.js.map +1 -1
- package/lib/cjs/widget/components/PropertyMenu.js +9 -9
- package/lib/cjs/widget/components/PropertyMenu.js.map +1 -1
- package/lib/cjs/widget/components/PropertyMenuWithVisualization.js +1 -1
- package/lib/cjs/widget/components/PropertyMenuWithVisualization.js.map +1 -1
- package/lib/cjs/widget/components/PropertyTable.js +4 -4
- package/lib/cjs/widget/components/PropertyTable.js.map +1 -1
- package/lib/cjs/widget/components/SelectIModel.js +9 -9
- package/lib/cjs/widget/components/SelectIModel.js.map +1 -1
- package/lib/cjs/widget/components/SelectITwin.js +10 -10
- package/lib/cjs/widget/components/SelectITwin.js.map +1 -1
- package/lib/cjs/widget/components/SelectMappings.d.ts +1 -1
- package/lib/cjs/widget/components/SelectMappings.js +10 -10
- package/lib/cjs/widget/components/SelectMappings.js.map +1 -1
- package/lib/cjs/widget/components/SharedCalculatedPropertyForms.js +1 -1
- package/lib/cjs/widget/components/SharedCalculatedPropertyForms.js.map +1 -1
- package/lib/cjs/widget/components/SortableHorizontalTile.js +2 -2
- package/lib/cjs/widget/components/SortableHorizontalTile.js.map +1 -1
- package/lib/cjs/widget/components/StatusIcon.js +1 -1
- package/lib/cjs/widget/components/StatusIcon.js.map +1 -1
- package/lib/cjs/widget/components/context/GroupHilitedElementsContext.d.ts +2 -0
- package/lib/cjs/widget/components/context/GroupHilitedElementsContext.js +2 -0
- package/lib/cjs/widget/components/context/GroupHilitedElementsContext.js.map +1 -1
- package/lib/cjs/widget/components/context/GroupingApiConfigContext.js +1 -1
- package/lib/cjs/widget/components/context/GroupingApiConfigContext.js.map +1 -1
- package/lib/cjs/widget/components/context/GroupingMappingCustomUIContext.js +2 -2
- package/lib/cjs/widget/components/context/GroupingMappingCustomUIContext.js.map +1 -1
- package/lib/cjs/widget/components/context/IModelsClientContext.js +2 -2
- package/lib/cjs/widget/components/context/IModelsClientContext.js.map +1 -1
- package/lib/cjs/widget/components/context/ITwinsClientContext.js +2 -2
- package/lib/cjs/widget/components/context/ITwinsClientContext.js.map +1 -1
- package/lib/cjs/widget/components/context/MappingClientContext.js +3 -3
- package/lib/cjs/widget/components/context/MappingClientContext.js.map +1 -1
- package/lib/cjs/widget/components/customUI/GroupQueryBuilderCustomUI.js +10 -10
- package/lib/cjs/widget/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
- package/lib/cjs/widget/components/groupsHelpers.d.ts +1 -1
- package/lib/cjs/widget/components/groupsHelpers.js +14 -13
- package/lib/cjs/widget/components/groupsHelpers.js.map +1 -1
- package/lib/cjs/widget/components/hooks/useMappingsOperations.d.ts +19 -0
- package/lib/cjs/widget/components/hooks/useMappingsOperations.js +61 -0
- package/lib/cjs/widget/components/hooks/useMappingsOperations.js.map +1 -0
- package/lib/cjs/widget/components/utils.d.ts +1 -0
- package/lib/cjs/widget/components/utils.js +19 -23
- package/lib/cjs/widget/components/utils.js.map +1 -1
- package/lib/cjs/widget/components/viewerUtils.js +12 -12
- package/lib/cjs/widget/components/viewerUtils.js.map +1 -1
- package/lib/cjs/widget/hooks/useFetchData.js +6 -6
- package/lib/cjs/widget/hooks/useFetchData.js.map +1 -1
- package/lib/cjs/widget/hooks/useFormulaValidation.js +4 -4
- package/lib/cjs/widget/hooks/useFormulaValidation.js.map +1 -1
- package/lib/cjs/widget/hooks/useValidator.js +1 -1
- package/lib/cjs/widget/hooks/useValidator.js.map +1 -1
- package/lib/cjs/widget/hooks/useVisualization.js +15 -15
- package/lib/cjs/widget/hooks/useVisualization.js.map +1 -1
- package/lib/esm/grouping-mapping-widget.d.ts +3 -1
- package/lib/esm/grouping-mapping-widget.js +3 -1
- package/lib/esm/grouping-mapping-widget.js.map +1 -1
- package/lib/esm/widget/components/ConfirmMappingsImport.d.ts +1 -1
- package/lib/esm/widget/components/ConfirmMappingsImport.js.map +1 -1
- package/lib/esm/widget/components/CustomCalculationAction.js +3 -1
- package/lib/esm/widget/components/CustomCalculationAction.js.map +1 -1
- package/lib/esm/widget/components/Grouping.d.ts +2 -1
- package/lib/esm/widget/components/Grouping.js +7 -4
- package/lib/esm/widget/components/Grouping.js.map +1 -1
- package/lib/esm/widget/components/Grouping.scss +8 -0
- package/lib/esm/widget/components/GroupingMappingContext.js +4 -1
- package/lib/esm/widget/components/GroupingMappingContext.js.map +1 -1
- package/lib/esm/widget/components/GroupingMappingRouter.js +1 -1
- package/lib/esm/widget/components/GroupingMappingRouter.js.map +1 -1
- package/lib/esm/widget/components/GroupsVisualization.js +14 -4
- package/lib/esm/widget/components/GroupsVisualization.js.map +1 -1
- package/lib/esm/widget/components/MappingImportWizardModal.d.ts +2 -2
- package/lib/esm/widget/components/MappingImportWizardModal.js.map +1 -1
- package/lib/esm/widget/components/MappingViewActionGroup.d.ts +12 -0
- package/lib/esm/widget/components/MappingViewActionGroup.js +27 -0
- package/lib/esm/widget/components/MappingViewActionGroup.js.map +1 -0
- package/lib/esm/widget/components/Mappings.d.ts +13 -0
- package/lib/esm/widget/components/Mappings.js +22 -0
- package/lib/esm/widget/components/Mappings.js.map +1 -0
- package/lib/esm/widget/components/MappingsView.d.ts +33 -0
- package/lib/esm/widget/components/MappingsView.js +47 -0
- package/lib/esm/widget/components/MappingsView.js.map +1 -0
- package/lib/{cjs/widget/components/Mapping.scss → esm/widget/components/MappingsView.scss} +6 -2
- package/lib/esm/widget/components/SelectMappings.d.ts +1 -1
- package/lib/esm/widget/components/SelectMappings.js.map +1 -1
- package/lib/esm/widget/components/context/GroupHilitedElementsContext.d.ts +2 -0
- package/lib/esm/widget/components/context/GroupHilitedElementsContext.js +2 -0
- package/lib/esm/widget/components/context/GroupHilitedElementsContext.js.map +1 -1
- package/lib/esm/widget/components/groupsHelpers.d.ts +1 -1
- package/lib/esm/widget/components/groupsHelpers.js +4 -3
- package/lib/esm/widget/components/groupsHelpers.js.map +1 -1
- package/lib/esm/widget/components/hooks/useMappingsOperations.d.ts +19 -0
- package/lib/esm/widget/components/hooks/useMappingsOperations.js +57 -0
- package/lib/esm/widget/components/hooks/useMappingsOperations.js.map +1 -0
- package/lib/esm/widget/components/utils.d.ts +1 -0
- package/lib/esm/widget/components/utils.js +17 -22
- package/lib/esm/widget/components/utils.js.map +1 -1
- package/lib/esm/widget/hooks/useFormulaValidation.js +1 -1
- package/lib/esm/widget/hooks/useFormulaValidation.js.map +1 -1
- package/lib/esm/widget/hooks/useVisualization.js +3 -3
- package/lib/esm/widget/hooks/useVisualization.js.map +1 -1
- package/package.json +2 -2
- package/lib/cjs/widget/components/Mapping.d.ts +0 -24
- package/lib/cjs/widget/components/Mapping.js +0 -136
- package/lib/cjs/widget/components/Mapping.js.map +0 -1
- package/lib/esm/widget/components/Mapping.d.ts +0 -24
- package/lib/esm/widget/components/Mapping.js +0 -110
- package/lib/esm/widget/components/Mapping.js.map +0 -1
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
-
};
|
|
24
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.Mappings = void 0;
|
|
26
|
-
/*---------------------------------------------------------------------------------------------
|
|
27
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
28
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
29
|
-
*--------------------------------------------------------------------------------------------*/
|
|
30
|
-
const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
|
|
31
|
-
const itwinui_react_1 = require("@itwin/itwinui-react");
|
|
32
|
-
const react_1 = __importStar(require("react"));
|
|
33
|
-
const utils_1 = require("./utils");
|
|
34
|
-
require("./Mapping.scss");
|
|
35
|
-
const DeleteModal_1 = __importDefault(require("./DeleteModal"));
|
|
36
|
-
const MappingImportWizardModal_1 = require("./MappingImportWizardModal");
|
|
37
|
-
const MappingClientContext_1 = require("./context/MappingClientContext");
|
|
38
|
-
const BlockingOverlay_1 = require("./BlockingOverlay");
|
|
39
|
-
const HorizontalTile_1 = require("./HorizontalTile");
|
|
40
|
-
const GroupingApiConfigContext_1 = require("./context/GroupingApiConfigContext");
|
|
41
|
-
const defaultDisplayStrings = {
|
|
42
|
-
mappings: "Mappings",
|
|
43
|
-
iTwins: "iTwins",
|
|
44
|
-
iTwinNumber: "Number",
|
|
45
|
-
iTwinName: "Name",
|
|
46
|
-
iTwinStatus: "Status",
|
|
47
|
-
iModels: "iModels",
|
|
48
|
-
iModelName: "Name",
|
|
49
|
-
iModelDescription: "Description",
|
|
50
|
-
};
|
|
51
|
-
const fetchMappings = async (setMappings, iModelId, setIsLoading, getAccessToken, mappingsClient) => {
|
|
52
|
-
try {
|
|
53
|
-
setIsLoading(true);
|
|
54
|
-
const accessToken = await getAccessToken();
|
|
55
|
-
const mappings = await mappingsClient.getMappings(accessToken, iModelId);
|
|
56
|
-
setMappings(mappings.sort((a, b) => a.mappingName.localeCompare(b.mappingName)));
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
utils_1.handleError(error.status);
|
|
60
|
-
}
|
|
61
|
-
finally {
|
|
62
|
-
setIsLoading(false);
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
const toggleExtraction = async (getAccessToken, mappingsClient, iModelId, mapping) => {
|
|
66
|
-
try {
|
|
67
|
-
const newState = !mapping.extractionEnabled;
|
|
68
|
-
const accessToken = await getAccessToken();
|
|
69
|
-
await mappingsClient.updateMapping(accessToken, iModelId, mapping.id, {
|
|
70
|
-
extractionEnabled: newState,
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
utils_1.handleError(error.status);
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
const Mappings = ({ onClickAddMapping, onClickMappingTitle, onClickMappingModify, displayStrings: userDisplayStrings, }) => {
|
|
78
|
-
const { getAccessToken, iModelId } = GroupingApiConfigContext_1.useGroupingMappingApiConfig();
|
|
79
|
-
const mappingClient = MappingClientContext_1.useMappingClient();
|
|
80
|
-
const [showDeleteModal, setShowDeleteModal] = react_1.useState(undefined);
|
|
81
|
-
const [showImportModal, setShowImportModal] = react_1.useState(false);
|
|
82
|
-
const [showBlockingOverlay, setShowBlockingOverlay] = react_1.useState(false);
|
|
83
|
-
const [isLoading, setIsLoading] = react_1.useState(true);
|
|
84
|
-
const [mappings, setMappings] = react_1.useState([]);
|
|
85
|
-
const displayStrings = react_1.default.useMemo(() => ({ ...defaultDisplayStrings, ...userDisplayStrings }), [userDisplayStrings]);
|
|
86
|
-
react_1.useEffect(() => {
|
|
87
|
-
void fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient);
|
|
88
|
-
}, [getAccessToken, mappingClient, iModelId, setIsLoading]);
|
|
89
|
-
const refresh = react_1.useCallback(async () => {
|
|
90
|
-
setMappings([]);
|
|
91
|
-
await fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient);
|
|
92
|
-
}, [getAccessToken, mappingClient, iModelId, setMappings]);
|
|
93
|
-
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
94
|
-
react_1.default.createElement(BlockingOverlay_1.BlockingOverlay, { isVisible: showBlockingOverlay }),
|
|
95
|
-
react_1.default.createElement("div", { className: "gmw-mappings-container" },
|
|
96
|
-
react_1.default.createElement("div", { className: "gmw-table-toolbar" },
|
|
97
|
-
react_1.default.createElement("div", { className: "gmw-button-spacing" },
|
|
98
|
-
onClickAddMapping &&
|
|
99
|
-
react_1.default.createElement(itwinui_react_1.Button, { startIcon: react_1.default.createElement(itwinui_icons_react_1.SvgAdd, null), onClick: onClickAddMapping, styleType: "high-visibility", title: 'New Mapping' }, "New"),
|
|
100
|
-
react_1.default.createElement(itwinui_react_1.IconButton, { title: `Import ${displayStrings.mappings}`, onClick: () => setShowImportModal(true) },
|
|
101
|
-
react_1.default.createElement(itwinui_icons_react_1.SvgImport, null))),
|
|
102
|
-
react_1.default.createElement(itwinui_react_1.IconButton, { title: "Refresh", onClick: refresh, disabled: isLoading, styleType: 'borderless' },
|
|
103
|
-
react_1.default.createElement(itwinui_icons_react_1.SvgRefresh, null))),
|
|
104
|
-
isLoading ? (react_1.default.createElement(utils_1.LoadingOverlay, null)) : mappings.length === 0 ? (react_1.default.createElement(utils_1.EmptyMessage, { message: `No ${displayStrings.mappings} available.` })) : (react_1.default.createElement("div", { className: "gmw-mappings-list" }, mappings
|
|
105
|
-
.map((mapping) => (react_1.default.createElement(HorizontalTile_1.HorizontalTile, { key: mapping.id, title: mapping.mappingName ? mapping.mappingName : "Untitled", subText: mapping.description ?? "", subtextToolTip: mapping.description ?? "", titleTooltip: mapping.mappingName, onClickTitle: onClickMappingTitle ? () => onClickMappingTitle(mapping) : undefined, actionGroup: react_1.default.createElement(itwinui_react_1.DropdownMenu, { menuItems: (close) => [
|
|
106
|
-
onClickMappingModify ? (react_1.default.createElement(itwinui_react_1.MenuItem, { key: 0, onClick: () => {
|
|
107
|
-
onClickMappingModify(mapping);
|
|
108
|
-
close();
|
|
109
|
-
}, icon: react_1.default.createElement(itwinui_icons_react_1.SvgEdit, null) }, "Modify")) : [],
|
|
110
|
-
react_1.default.createElement(itwinui_react_1.MenuItem, { key: 1, onClick: async () => {
|
|
111
|
-
setShowBlockingOverlay(true);
|
|
112
|
-
close();
|
|
113
|
-
await toggleExtraction(getAccessToken, mappingClient, iModelId, mapping);
|
|
114
|
-
await refresh();
|
|
115
|
-
setShowBlockingOverlay(false);
|
|
116
|
-
}, icon: react_1.default.createElement(itwinui_icons_react_1.SvgProcess, null) }, mapping.extractionEnabled
|
|
117
|
-
? "Disable extraction"
|
|
118
|
-
: "Enable extraction"),
|
|
119
|
-
react_1.default.createElement(itwinui_react_1.MenuItem, { key: 2, onClick: () => {
|
|
120
|
-
setShowDeleteModal(mapping);
|
|
121
|
-
close();
|
|
122
|
-
}, icon: react_1.default.createElement(itwinui_icons_react_1.SvgDelete, null) }, "Remove"),
|
|
123
|
-
].flatMap((m) => m) },
|
|
124
|
-
react_1.default.createElement(itwinui_react_1.IconButton, { styleType: "borderless", title: 'Mapping Options' },
|
|
125
|
-
react_1.default.createElement(itwinui_icons_react_1.SvgMore, { style: {
|
|
126
|
-
width: "16px",
|
|
127
|
-
height: "16px",
|
|
128
|
-
} }))) })))))),
|
|
129
|
-
react_1.default.createElement(DeleteModal_1.default, { entityName: showDeleteModal?.mappingName, onClose: () => setShowDeleteModal(undefined), onDelete: async () => {
|
|
130
|
-
const accessToken = await getAccessToken();
|
|
131
|
-
await mappingClient.deleteMapping(accessToken, iModelId, showDeleteModal?.id ?? "");
|
|
132
|
-
}, refresh: refresh }),
|
|
133
|
-
react_1.default.createElement(MappingImportWizardModal_1.MappingImportWizardModal, { show: showImportModal, setShow: setShowImportModal, onFinish: refresh, displayStrings: displayStrings })));
|
|
134
|
-
};
|
|
135
|
-
exports.Mappings = Mappings;
|
|
136
|
-
//# sourceMappingURL=Mapping.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Mapping.js","sourceRoot":"","sources":["../../../../src/widget/components/Mapping.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 {\n SvgAdd,\n SvgDelete,\n SvgEdit,\n SvgImport,\n SvgMore,\n SvgProcess,\n SvgRefresh,\n} from \"@itwin/itwinui-icons-react\";\nimport {\n Button,\n DropdownMenu,\n IconButton,\n MenuItem,\n} from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport {\n EmptyMessage,\n handleError,\n LoadingOverlay,\n} from \"./utils\";\nimport \"./Mapping.scss\";\nimport DeleteModal from \"./DeleteModal\";\nimport { MappingImportWizardModal } from \"./MappingImportWizardModal\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport type { IMappingsClient, Mapping } from \"@itwin/insights-client\";\nimport { BlockingOverlay } from \"./BlockingOverlay\";\nimport { HorizontalTile } from \"./HorizontalTile\";\nimport type { GetAccessTokenFn } from \"./context/GroupingApiConfigContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\nimport type { CreateTypeFromInterface } from \"../utils\";\n\nexport type IMappingTyped = CreateTypeFromInterface<Mapping>;\n\nconst defaultDisplayStrings = {\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};\nexport interface MappingsProps {\n onClickAddMapping?: () => void;\n onClickMappingTitle?: (mapping: Mapping) => void;\n onClickMappingModify?: (mapping: Mapping) => void;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n}\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<Mapping[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n getAccessToken: GetAccessTokenFn,\n mappingsClient: IMappingsClient\n) => {\n try {\n setIsLoading(true);\n const accessToken = await getAccessToken();\n const mappings = await mappingsClient.getMappings(accessToken, iModelId);\n setMappings(mappings.sort((a, b) => a.mappingName.localeCompare(b.mappingName)));\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\nconst toggleExtraction = async (\n getAccessToken: GetAccessTokenFn,\n mappingsClient: IMappingsClient,\n iModelId: string,\n mapping: Mapping\n) => {\n try {\n const newState = !mapping.extractionEnabled;\n const accessToken = await getAccessToken();\n await mappingsClient.updateMapping(accessToken, iModelId, mapping.id, {\n extractionEnabled: newState,\n });\n } catch (error: any) {\n handleError(error.status);\n }\n};\n\nexport const Mappings = ({\n onClickAddMapping,\n onClickMappingTitle,\n onClickMappingModify,\n displayStrings: userDisplayStrings,\n}: MappingsProps) => {\n const { getAccessToken, iModelId } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const [showDeleteModal, setShowDeleteModal] = useState<Mapping | undefined>(undefined);\n const [showImportModal, setShowImportModal] = useState<boolean>(false);\n const [showBlockingOverlay, setShowBlockingOverlay] =\n useState<boolean>(false);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [mappings, setMappings] = useState<Mapping[]>([]);\n const displayStrings = React.useMemo(\n () => ({ ...defaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n useEffect(() => {\n void fetchMappings(\n setMappings,\n iModelId,\n setIsLoading,\n getAccessToken,\n mappingClient\n );\n }, [getAccessToken, mappingClient, iModelId, setIsLoading]);\n\n const refresh = useCallback(async () => {\n setMappings([]);\n await fetchMappings(\n setMappings,\n iModelId,\n setIsLoading,\n getAccessToken,\n mappingClient\n );\n }, [getAccessToken, mappingClient, iModelId, setMappings]);\n\n return (\n <>\n <BlockingOverlay isVisible={showBlockingOverlay} />\n <div className=\"gmw-mappings-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 <IconButton\n title={`Import ${displayStrings.mappings}`}\n onClick={() => setShowImportModal(true)}\n >\n <SvgImport />\n </IconButton>\n </div>\n <IconButton\n title=\"Refresh\"\n onClick={refresh}\n disabled={isLoading}\n styleType='borderless'\n >\n <SvgRefresh />\n </IconButton>\n </div>\n {isLoading ? (\n <LoadingOverlay />\n ) : mappings.length === 0 ? (\n <EmptyMessage message={`No ${displayStrings.mappings} available.`} />\n ) : (\n <div className=\"gmw-mappings-list\">\n {mappings\n .map((mapping) => (\n <HorizontalTile\n key={mapping.id}\n title={\n mapping.mappingName ? mapping.mappingName : \"Untitled\"\n }\n subText={mapping.description ?? \"\"}\n subtextToolTip={mapping.description ?? \"\"}\n titleTooltip={mapping.mappingName}\n onClickTitle={onClickMappingTitle ? () => onClickMappingTitle(mapping) : undefined}\n actionGroup={\n <DropdownMenu\n menuItems={(close: () => void) => [\n onClickMappingModify ? (\n <MenuItem\n key={0}\n onClick={() => {\n onClickMappingModify(mapping);\n close();\n }}\n icon={<SvgEdit />}\n >\n Modify\n </MenuItem>\n ) : [],\n <MenuItem\n key={1}\n onClick={async () => {\n setShowBlockingOverlay(true);\n close();\n await toggleExtraction(\n getAccessToken,\n mappingClient,\n iModelId,\n mapping\n );\n await refresh();\n setShowBlockingOverlay(false);\n }}\n icon={<SvgProcess />}\n >\n {mapping.extractionEnabled\n ? \"Disable extraction\"\n : \"Enable extraction\"}\n </MenuItem>,\n <MenuItem\n key={2}\n onClick={() => {\n setShowDeleteModal(mapping);\n close();\n }}\n icon={<SvgDelete />}\n >\n Remove\n </MenuItem>,\n ].flatMap((m) => m)}\n >\n <IconButton styleType=\"borderless\" title='Mapping Options'>\n <SvgMore\n style={{\n width: \"16px\",\n height: \"16px\",\n }}\n />\n </IconButton>\n </DropdownMenu>\n }\n />\n ))}\n </div>\n )}\n </div>\n <DeleteModal\n entityName={showDeleteModal?.mappingName}\n onClose={() => setShowDeleteModal(undefined)}\n onDelete={async () => {\n const accessToken = await getAccessToken();\n await mappingClient.deleteMapping(\n accessToken,\n iModelId,\n showDeleteModal?.id ?? \"\"\n );\n }}\n refresh={refresh}\n />\n <MappingImportWizardModal\n show={showImportModal}\n setShow={setShowImportModal}\n onFinish={refresh}\n displayStrings={displayStrings}\n />\n </>\n );\n};\n"]}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import "./Mapping.scss";
|
|
3
|
-
import type { Mapping } from "@itwin/insights-client";
|
|
4
|
-
import type { CreateTypeFromInterface } from "../utils";
|
|
5
|
-
export declare type IMappingTyped = CreateTypeFromInterface<Mapping>;
|
|
6
|
-
declare const defaultDisplayStrings: {
|
|
7
|
-
mappings: string;
|
|
8
|
-
iTwins: string;
|
|
9
|
-
iTwinNumber: string;
|
|
10
|
-
iTwinName: string;
|
|
11
|
-
iTwinStatus: string;
|
|
12
|
-
iModels: string;
|
|
13
|
-
iModelName: string;
|
|
14
|
-
iModelDescription: string;
|
|
15
|
-
};
|
|
16
|
-
export interface MappingsProps {
|
|
17
|
-
onClickAddMapping?: () => void;
|
|
18
|
-
onClickMappingTitle?: (mapping: Mapping) => void;
|
|
19
|
-
onClickMappingModify?: (mapping: Mapping) => void;
|
|
20
|
-
displayStrings?: Partial<typeof defaultDisplayStrings>;
|
|
21
|
-
}
|
|
22
|
-
export declare const Mappings: ({ onClickAddMapping, onClickMappingTitle, onClickMappingModify, displayStrings: userDisplayStrings, }: MappingsProps) => JSX.Element;
|
|
23
|
-
export {};
|
|
24
|
-
//# sourceMappingURL=Mapping.d.ts.map
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { SvgAdd, SvgDelete, SvgEdit, SvgImport, SvgMore, SvgProcess, SvgRefresh, } from "@itwin/itwinui-icons-react";
|
|
6
|
-
import { Button, DropdownMenu, IconButton, MenuItem, } from "@itwin/itwinui-react";
|
|
7
|
-
import React, { useCallback, useEffect, useState } from "react";
|
|
8
|
-
import { EmptyMessage, handleError, LoadingOverlay, } from "./utils";
|
|
9
|
-
import "./Mapping.scss";
|
|
10
|
-
import DeleteModal from "./DeleteModal";
|
|
11
|
-
import { MappingImportWizardModal } from "./MappingImportWizardModal";
|
|
12
|
-
import { useMappingClient } from "./context/MappingClientContext";
|
|
13
|
-
import { BlockingOverlay } from "./BlockingOverlay";
|
|
14
|
-
import { HorizontalTile } from "./HorizontalTile";
|
|
15
|
-
import { useGroupingMappingApiConfig } from "./context/GroupingApiConfigContext";
|
|
16
|
-
const defaultDisplayStrings = {
|
|
17
|
-
mappings: "Mappings",
|
|
18
|
-
iTwins: "iTwins",
|
|
19
|
-
iTwinNumber: "Number",
|
|
20
|
-
iTwinName: "Name",
|
|
21
|
-
iTwinStatus: "Status",
|
|
22
|
-
iModels: "iModels",
|
|
23
|
-
iModelName: "Name",
|
|
24
|
-
iModelDescription: "Description",
|
|
25
|
-
};
|
|
26
|
-
const fetchMappings = async (setMappings, iModelId, setIsLoading, getAccessToken, mappingsClient) => {
|
|
27
|
-
try {
|
|
28
|
-
setIsLoading(true);
|
|
29
|
-
const accessToken = await getAccessToken();
|
|
30
|
-
const mappings = await mappingsClient.getMappings(accessToken, iModelId);
|
|
31
|
-
setMappings(mappings.sort((a, b) => a.mappingName.localeCompare(b.mappingName)));
|
|
32
|
-
}
|
|
33
|
-
catch (error) {
|
|
34
|
-
handleError(error.status);
|
|
35
|
-
}
|
|
36
|
-
finally {
|
|
37
|
-
setIsLoading(false);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
const toggleExtraction = async (getAccessToken, mappingsClient, iModelId, mapping) => {
|
|
41
|
-
try {
|
|
42
|
-
const newState = !mapping.extractionEnabled;
|
|
43
|
-
const accessToken = await getAccessToken();
|
|
44
|
-
await mappingsClient.updateMapping(accessToken, iModelId, mapping.id, {
|
|
45
|
-
extractionEnabled: newState,
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
catch (error) {
|
|
49
|
-
handleError(error.status);
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
export const Mappings = ({ onClickAddMapping, onClickMappingTitle, onClickMappingModify, displayStrings: userDisplayStrings, }) => {
|
|
53
|
-
const { getAccessToken, iModelId } = useGroupingMappingApiConfig();
|
|
54
|
-
const mappingClient = useMappingClient();
|
|
55
|
-
const [showDeleteModal, setShowDeleteModal] = useState(undefined);
|
|
56
|
-
const [showImportModal, setShowImportModal] = useState(false);
|
|
57
|
-
const [showBlockingOverlay, setShowBlockingOverlay] = useState(false);
|
|
58
|
-
const [isLoading, setIsLoading] = useState(true);
|
|
59
|
-
const [mappings, setMappings] = useState([]);
|
|
60
|
-
const displayStrings = React.useMemo(() => ({ ...defaultDisplayStrings, ...userDisplayStrings }), [userDisplayStrings]);
|
|
61
|
-
useEffect(() => {
|
|
62
|
-
void fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient);
|
|
63
|
-
}, [getAccessToken, mappingClient, iModelId, setIsLoading]);
|
|
64
|
-
const refresh = useCallback(async () => {
|
|
65
|
-
setMappings([]);
|
|
66
|
-
await fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient);
|
|
67
|
-
}, [getAccessToken, mappingClient, iModelId, setMappings]);
|
|
68
|
-
return (React.createElement(React.Fragment, null,
|
|
69
|
-
React.createElement(BlockingOverlay, { isVisible: showBlockingOverlay }),
|
|
70
|
-
React.createElement("div", { className: "gmw-mappings-container" },
|
|
71
|
-
React.createElement("div", { className: "gmw-table-toolbar" },
|
|
72
|
-
React.createElement("div", { className: "gmw-button-spacing" },
|
|
73
|
-
onClickAddMapping &&
|
|
74
|
-
React.createElement(Button, { startIcon: React.createElement(SvgAdd, null), onClick: onClickAddMapping, styleType: "high-visibility", title: 'New Mapping' }, "New"),
|
|
75
|
-
React.createElement(IconButton, { title: `Import ${displayStrings.mappings}`, onClick: () => setShowImportModal(true) },
|
|
76
|
-
React.createElement(SvgImport, null))),
|
|
77
|
-
React.createElement(IconButton, { title: "Refresh", onClick: refresh, disabled: isLoading, styleType: 'borderless' },
|
|
78
|
-
React.createElement(SvgRefresh, null))),
|
|
79
|
-
isLoading ? (React.createElement(LoadingOverlay, null)) : mappings.length === 0 ? (React.createElement(EmptyMessage, { message: `No ${displayStrings.mappings} available.` })) : (React.createElement("div", { className: "gmw-mappings-list" }, mappings
|
|
80
|
-
.map((mapping) => (React.createElement(HorizontalTile, { key: mapping.id, title: mapping.mappingName ? mapping.mappingName : "Untitled", subText: mapping.description ?? "", subtextToolTip: mapping.description ?? "", titleTooltip: mapping.mappingName, onClickTitle: onClickMappingTitle ? () => onClickMappingTitle(mapping) : undefined, actionGroup: React.createElement(DropdownMenu, { menuItems: (close) => [
|
|
81
|
-
onClickMappingModify ? (React.createElement(MenuItem, { key: 0, onClick: () => {
|
|
82
|
-
onClickMappingModify(mapping);
|
|
83
|
-
close();
|
|
84
|
-
}, icon: React.createElement(SvgEdit, null) }, "Modify")) : [],
|
|
85
|
-
React.createElement(MenuItem, { key: 1, onClick: async () => {
|
|
86
|
-
setShowBlockingOverlay(true);
|
|
87
|
-
close();
|
|
88
|
-
await toggleExtraction(getAccessToken, mappingClient, iModelId, mapping);
|
|
89
|
-
await refresh();
|
|
90
|
-
setShowBlockingOverlay(false);
|
|
91
|
-
}, icon: React.createElement(SvgProcess, null) }, mapping.extractionEnabled
|
|
92
|
-
? "Disable extraction"
|
|
93
|
-
: "Enable extraction"),
|
|
94
|
-
React.createElement(MenuItem, { key: 2, onClick: () => {
|
|
95
|
-
setShowDeleteModal(mapping);
|
|
96
|
-
close();
|
|
97
|
-
}, icon: React.createElement(SvgDelete, null) }, "Remove"),
|
|
98
|
-
].flatMap((m) => m) },
|
|
99
|
-
React.createElement(IconButton, { styleType: "borderless", title: 'Mapping Options' },
|
|
100
|
-
React.createElement(SvgMore, { style: {
|
|
101
|
-
width: "16px",
|
|
102
|
-
height: "16px",
|
|
103
|
-
} }))) })))))),
|
|
104
|
-
React.createElement(DeleteModal, { entityName: showDeleteModal?.mappingName, onClose: () => setShowDeleteModal(undefined), onDelete: async () => {
|
|
105
|
-
const accessToken = await getAccessToken();
|
|
106
|
-
await mappingClient.deleteMapping(accessToken, iModelId, showDeleteModal?.id ?? "");
|
|
107
|
-
}, refresh: refresh }),
|
|
108
|
-
React.createElement(MappingImportWizardModal, { show: showImportModal, setShow: setShowImportModal, onFinish: refresh, displayStrings: displayStrings })));
|
|
109
|
-
};
|
|
110
|
-
//# sourceMappingURL=Mapping.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Mapping.js","sourceRoot":"","sources":["../../../../src/widget/components/Mapping.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 {\n SvgAdd,\n SvgDelete,\n SvgEdit,\n SvgImport,\n SvgMore,\n SvgProcess,\n SvgRefresh,\n} from \"@itwin/itwinui-icons-react\";\nimport {\n Button,\n DropdownMenu,\n IconButton,\n MenuItem,\n} from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport {\n EmptyMessage,\n handleError,\n LoadingOverlay,\n} from \"./utils\";\nimport \"./Mapping.scss\";\nimport DeleteModal from \"./DeleteModal\";\nimport { MappingImportWizardModal } from \"./MappingImportWizardModal\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport type { IMappingsClient, Mapping } from \"@itwin/insights-client\";\nimport { BlockingOverlay } from \"./BlockingOverlay\";\nimport { HorizontalTile } from \"./HorizontalTile\";\nimport type { GetAccessTokenFn } from \"./context/GroupingApiConfigContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\nimport type { CreateTypeFromInterface } from \"../utils\";\n\nexport type IMappingTyped = CreateTypeFromInterface<Mapping>;\n\nconst defaultDisplayStrings = {\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};\nexport interface MappingsProps {\n onClickAddMapping?: () => void;\n onClickMappingTitle?: (mapping: Mapping) => void;\n onClickMappingModify?: (mapping: Mapping) => void;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n}\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<Mapping[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n getAccessToken: GetAccessTokenFn,\n mappingsClient: IMappingsClient\n) => {\n try {\n setIsLoading(true);\n const accessToken = await getAccessToken();\n const mappings = await mappingsClient.getMappings(accessToken, iModelId);\n setMappings(mappings.sort((a, b) => a.mappingName.localeCompare(b.mappingName)));\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\nconst toggleExtraction = async (\n getAccessToken: GetAccessTokenFn,\n mappingsClient: IMappingsClient,\n iModelId: string,\n mapping: Mapping\n) => {\n try {\n const newState = !mapping.extractionEnabled;\n const accessToken = await getAccessToken();\n await mappingsClient.updateMapping(accessToken, iModelId, mapping.id, {\n extractionEnabled: newState,\n });\n } catch (error: any) {\n handleError(error.status);\n }\n};\n\nexport const Mappings = ({\n onClickAddMapping,\n onClickMappingTitle,\n onClickMappingModify,\n displayStrings: userDisplayStrings,\n}: MappingsProps) => {\n const { getAccessToken, iModelId } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const [showDeleteModal, setShowDeleteModal] = useState<Mapping | undefined>(undefined);\n const [showImportModal, setShowImportModal] = useState<boolean>(false);\n const [showBlockingOverlay, setShowBlockingOverlay] =\n useState<boolean>(false);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [mappings, setMappings] = useState<Mapping[]>([]);\n const displayStrings = React.useMemo(\n () => ({ ...defaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n useEffect(() => {\n void fetchMappings(\n setMappings,\n iModelId,\n setIsLoading,\n getAccessToken,\n mappingClient\n );\n }, [getAccessToken, mappingClient, iModelId, setIsLoading]);\n\n const refresh = useCallback(async () => {\n setMappings([]);\n await fetchMappings(\n setMappings,\n iModelId,\n setIsLoading,\n getAccessToken,\n mappingClient\n );\n }, [getAccessToken, mappingClient, iModelId, setMappings]);\n\n return (\n <>\n <BlockingOverlay isVisible={showBlockingOverlay} />\n <div className=\"gmw-mappings-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 <IconButton\n title={`Import ${displayStrings.mappings}`}\n onClick={() => setShowImportModal(true)}\n >\n <SvgImport />\n </IconButton>\n </div>\n <IconButton\n title=\"Refresh\"\n onClick={refresh}\n disabled={isLoading}\n styleType='borderless'\n >\n <SvgRefresh />\n </IconButton>\n </div>\n {isLoading ? (\n <LoadingOverlay />\n ) : mappings.length === 0 ? (\n <EmptyMessage message={`No ${displayStrings.mappings} available.`} />\n ) : (\n <div className=\"gmw-mappings-list\">\n {mappings\n .map((mapping) => (\n <HorizontalTile\n key={mapping.id}\n title={\n mapping.mappingName ? mapping.mappingName : \"Untitled\"\n }\n subText={mapping.description ?? \"\"}\n subtextToolTip={mapping.description ?? \"\"}\n titleTooltip={mapping.mappingName}\n onClickTitle={onClickMappingTitle ? () => onClickMappingTitle(mapping) : undefined}\n actionGroup={\n <DropdownMenu\n menuItems={(close: () => void) => [\n onClickMappingModify ? (\n <MenuItem\n key={0}\n onClick={() => {\n onClickMappingModify(mapping);\n close();\n }}\n icon={<SvgEdit />}\n >\n Modify\n </MenuItem>\n ) : [],\n <MenuItem\n key={1}\n onClick={async () => {\n setShowBlockingOverlay(true);\n close();\n await toggleExtraction(\n getAccessToken,\n mappingClient,\n iModelId,\n mapping\n );\n await refresh();\n setShowBlockingOverlay(false);\n }}\n icon={<SvgProcess />}\n >\n {mapping.extractionEnabled\n ? \"Disable extraction\"\n : \"Enable extraction\"}\n </MenuItem>,\n <MenuItem\n key={2}\n onClick={() => {\n setShowDeleteModal(mapping);\n close();\n }}\n icon={<SvgDelete />}\n >\n Remove\n </MenuItem>,\n ].flatMap((m) => m)}\n >\n <IconButton styleType=\"borderless\" title='Mapping Options'>\n <SvgMore\n style={{\n width: \"16px\",\n height: \"16px\",\n }}\n />\n </IconButton>\n </DropdownMenu>\n }\n />\n ))}\n </div>\n )}\n </div>\n <DeleteModal\n entityName={showDeleteModal?.mappingName}\n onClose={() => setShowDeleteModal(undefined)}\n onDelete={async () => {\n const accessToken = await getAccessToken();\n await mappingClient.deleteMapping(\n accessToken,\n iModelId,\n showDeleteModal?.id ?? \"\"\n );\n }}\n refresh={refresh}\n />\n <MappingImportWizardModal\n show={showImportModal}\n setShow={setShowImportModal}\n onFinish={refresh}\n displayStrings={displayStrings}\n />\n </>\n );\n};\n"]}
|