@itwin/grouping-mapping-widget 0.3.3 → 0.3.4

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.
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import "./BlockingOverlay.scss";
3
+ export interface BlockingOverlayProps {
4
+ isVisible: boolean;
5
+ }
6
+ export declare const BlockingOverlay: ({ isVisible }: BlockingOverlayProps) => JSX.Element;
7
+ //# sourceMappingURL=BlockingOverlay.d.ts.map
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BlockingOverlay = void 0;
7
+ /*---------------------------------------------------------------------------------------------
8
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
9
+ * See LICENSE.md in the project root for license terms and full copyright notice.
10
+ *--------------------------------------------------------------------------------------------*/
11
+ const classnames_1 = __importDefault(require("classnames"));
12
+ const react_1 = __importDefault(require("react"));
13
+ const utils_1 = require("./utils");
14
+ require("./BlockingOverlay.scss");
15
+ const BlockingOverlay = ({ isVisible }) => {
16
+ return (react_1.default.createElement("div", { className: classnames_1.default("group-mapping-blocking-overlay", isVisible && "visible") },
17
+ react_1.default.createElement("div", { className: "group-mapping-blocking-overlay-spinner" },
18
+ react_1.default.createElement(utils_1.LoadingSpinner, null))));
19
+ };
20
+ exports.BlockingOverlay = BlockingOverlay;
21
+ //# sourceMappingURL=BlockingOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockingOverlay.js","sourceRoot":"","sources":["../../../../src/widget/components/BlockingOverlay.tsx"],"names":[],"mappings":";;;;;;AAAA;;;+FAG+F;AAC/F,4DAAoC;AACpC,kDAA0B;AAC1B,mCAAyC;AACzC,kCAAgC;AAMzB,MAAM,eAAe,GAAG,CAAC,EAAE,SAAS,EAAwB,EAAE,EAAE;IACrE,OAAO,CACL,uCAAK,SAAS,EAAE,oBAAU,CAAC,gCAAgC,EAAE,SAAS,IAAI,SAAS,CAAC;QAClF,uCAAK,SAAS,EAAC,wCAAwC;YACrD,8BAAC,sBAAc,OAAG,CACd,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AARW,QAAA,eAAe,mBAQ1B","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 classnames from \"classnames\";\nimport React from \"react\";\nimport { LoadingSpinner } from \"./utils\";\nimport \"./BlockingOverlay.scss\";\n\nexport interface BlockingOverlayProps {\n isVisible: boolean;\n}\n\nexport const BlockingOverlay = ({ isVisible }: BlockingOverlayProps) => {\n return (\n <div className={classnames(\"group-mapping-blocking-overlay\", isVisible && \"visible\")}>\n <div className=\"group-mapping-blocking-overlay-spinner\">\n <LoadingSpinner />\n </div>\n </div>\n );\n};\n"]}
@@ -0,0 +1,26 @@
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 '~@itwin/itwinui-css/scss/variables';
6
+
7
+ .group-mapping-blocking-overlay {
8
+ background-color: black;
9
+ position: absolute;
10
+ height: inherit;
11
+ right: 6px;
12
+ left: 6px;
13
+ opacity: 60%;
14
+ z-index: 9999;
15
+ visibility: hidden;
16
+
17
+ &.visible {
18
+ visibility: visible;
19
+ }
20
+ }
21
+
22
+ .group-mapping-blocking-overlay-spinner {
23
+ display: flex;
24
+ justify-content: center;
25
+ height: inherit;
26
+ }
@@ -40,6 +40,7 @@ const MappingAction_1 = __importDefault(require("./MappingAction"));
40
40
  const MappingImportWizardModal_1 = require("./MappingImportWizardModal");
41
41
  const GroupingMapping_1 = require("./GroupingMapping");
42
42
  const insights_client_1 = require("@itwin/insights-client");
43
+ const BlockingOverlay_1 = require("./BlockingOverlay");
43
44
  var MappingView;
44
45
  (function (MappingView) {
45
46
  MappingView["MAPPINGS"] = "mappings";
@@ -62,12 +63,24 @@ const fetchMappings = async (setMappings, iModelId, setIsLoading, apiContext) =>
62
63
  setIsLoading(false);
63
64
  }
64
65
  };
66
+ const toggleExtraction = async (apiContext, iModelId, mapping) => {
67
+ var _a;
68
+ try {
69
+ const newState = !(mapping === null || mapping === void 0 ? void 0 : mapping.extractionEnabled);
70
+ const reportingClient = new insights_client_1.ReportingClient(apiContext.prefix);
71
+ await reportingClient.updateMapping(apiContext.accessToken, iModelId, (_a = mapping === null || mapping === void 0 ? void 0 : mapping.id) !== null && _a !== void 0 ? _a : "", { extractionEnabled: newState });
72
+ }
73
+ catch (error) {
74
+ utils_1.handleError(error.status);
75
+ }
76
+ };
65
77
  const Mappings = () => {
66
78
  var _a, _b;
67
79
  const apiContext = react_1.useContext(GroupingMapping_1.ApiContext);
68
80
  const iModelId = (_a = appui_react_1.useActiveIModelConnection()) === null || _a === void 0 ? void 0 : _a.iModelId;
69
81
  const [showDeleteModal, setShowDeleteModal] = react_1.useState(false);
70
82
  const [showImportModal, setShowImportModal] = react_1.useState(false);
83
+ const [showBlockingOverlay, setShowBlockingOverlay] = react_1.useState(false);
71
84
  const [mappingView, setMappingView] = react_1.useState(MappingView.MAPPINGS);
72
85
  const [selectedMapping, setSelectedMapping] = react_1.useState(undefined);
73
86
  const [isLoading, setIsLoading] = react_1.useState(true);
@@ -118,7 +131,15 @@ const Mappings = () => {
118
131
  setSelectedMapping(value.row.original);
119
132
  setMappingView(MappingView.MODIFYING);
120
133
  }, icon: react_1.default.createElement(itwinui_icons_react_1.SvgEdit, null) }, "Modify"),
121
- react_1.default.createElement(itwinui_react_1.MenuItem, { key: 1, onClick: () => {
134
+ react_1.default.createElement(itwinui_react_1.MenuItem, { key: 1, onClick: async () => {
135
+ setSelectedMapping(value.row.original);
136
+ setShowBlockingOverlay(true);
137
+ close();
138
+ await toggleExtraction(apiContext, iModelId, value.row.original);
139
+ await refresh();
140
+ setShowBlockingOverlay(false);
141
+ }, icon: react_1.default.createElement(itwinui_icons_react_1.SvgProcess, null) }, value.row.original.extractionEnabled ? "Disable extraction" : "Enable extraction"),
142
+ react_1.default.createElement(itwinui_react_1.MenuItem, { key: 2, onClick: () => {
122
143
  setSelectedMapping(value.row.original);
123
144
  setShowDeleteModal(true);
124
145
  close();
@@ -133,7 +154,7 @@ const Mappings = () => {
133
154
  },
134
155
  ],
135
156
  },
136
- ], []);
157
+ ], [apiContext, iModelId, refresh]);
137
158
  switch (mappingView) {
138
159
  case MappingView.ADDING:
139
160
  return react_1.default.createElement(MappingAction_1.default, { iModelId: iModelId, returnFn: refresh });
@@ -143,6 +164,7 @@ const Mappings = () => {
143
164
  return (react_1.default.createElement(Grouping_1.Groupings, { mapping: selectedMapping, goBack: refresh }));
144
165
  default:
145
166
  return (react_1.default.createElement(react_1.default.Fragment, null,
167
+ react_1.default.createElement(BlockingOverlay_1.BlockingOverlay, { isVisible: showBlockingOverlay }),
146
168
  react_1.default.createElement(utils_1.WidgetHeader, { title: "Mappings" }),
147
169
  react_1.default.createElement("div", { className: "mappings-container" },
148
170
  react_1.default.createElement("div", { className: "table-toolbar" },
@@ -1 +1 @@
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 { Presentation } from \"@itwin/presentation-frontend\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport {\n SvgAdd,\n SvgDelete,\n SvgEdit,\n SvgImport,\n SvgMore,\n} from \"@itwin/itwinui-icons-react\";\nimport {\n Button,\n ButtonGroup,\n DropdownMenu,\n IconButton,\n MenuItem,\n Table,\n} from \"@itwin/itwinui-react\";\nimport type { CellProps } from \"react-table\";\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../utils\";\nimport { handleError, onSelectionChanged, WidgetHeader } from \"./utils\";\nimport \"./Mapping.scss\";\nimport DeleteModal from \"./DeleteModal\";\nimport { Groupings } from \"./Grouping\";\nimport MappingAction from \"./MappingAction\";\nimport { MappingImportWizardModal } from \"./MappingImportWizardModal\";\nimport type { Api } from \"./GroupingMapping\";\nimport { ApiContext } from \"./GroupingMapping\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { ReportingClient } from \"@itwin/insights-client\";\n\nexport type MappingType = CreateTypeFromInterface<Mapping>;\n\nenum MappingView {\n MAPPINGS = \"mappings\",\n GROUPS = \"groups\",\n ADDING = \"adding\",\n MODIFYING = \"modifying\",\n IMPORT = \"import\",\n}\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<Mapping[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n apiContext: Api\n) => {\n try {\n setIsLoading(true);\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n const mappings = await reportingClientApi.getMappings(apiContext.accessToken, iModelId);\n setMappings(mappings);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\nexport const Mappings = () => {\n const apiContext = useContext(ApiContext);\n const iModelId = useActiveIModelConnection()?.iModelId as string;\n const [showDeleteModal, setShowDeleteModal] = useState<boolean>(false);\n const [showImportModal, setShowImportModal] = useState<boolean>(false);\n const [mappingView, setMappingView] = useState<MappingView>(\n MappingView.MAPPINGS\n );\n const [selectedMapping, setSelectedMapping] = useState<\n Mapping | undefined\n >(undefined);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [mappings, setMappings] = useState<Mapping[]>([]);\n\n useEffect(() => {\n void fetchMappings(setMappings, iModelId, setIsLoading, apiContext);\n }, [apiContext, iModelId, setIsLoading]);\n\n useEffect(() => {\n const removeListener =\n Presentation.selection.selectionChange.addListener(onSelectionChanged);\n return () => {\n removeListener();\n };\n }, []);\n\n const refresh = useCallback(async () => {\n setMappingView(MappingView.MAPPINGS);\n setSelectedMapping(undefined);\n setMappings([]);\n await fetchMappings(setMappings, iModelId, setIsLoading, apiContext);\n }, [apiContext, iModelId, setMappings]);\n\n const addMapping = async () => {\n setMappingView(MappingView.ADDING);\n };\n\n const mappingsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"mappingName\",\n Header: \"Mapping Name\",\n accessor: \"mappingName\",\n Cell: (value: CellProps<{ mappingName: string }>) => (\n <div\n className=\"iui-anchor\"\n onClick={() => {\n setSelectedMapping(value.row.original);\n setMappingView(MappingView.GROUPS);\n }}\n >\n {value.row.original.mappingName}\n </div>\n ),\n },\n {\n id: \"description\",\n Header: \"Description\",\n accessor: \"description\",\n },\n {\n id: \"dropdown\",\n Header: \"\",\n width: 80,\n Cell: (value: CellProps<MappingType>) => {\n return (\n <DropdownMenu\n menuItems={(close: () => void) => [\n <MenuItem\n key={0}\n onClick={() => {\n setSelectedMapping(value.row.original);\n setMappingView(MappingView.MODIFYING);\n }}\n icon={<SvgEdit />}\n >\n Modify\n </MenuItem>,\n\n <MenuItem\n key={1}\n onClick={() => {\n setSelectedMapping(value.row.original);\n setShowDeleteModal(true);\n close();\n }}\n icon={<SvgDelete />}\n >\n Remove\n </MenuItem>,\n ]}\n >\n <IconButton styleType=\"borderless\">\n <SvgMore\n style={{\n width: \"16px\",\n height: \"16px\",\n }}\n />\n </IconButton>\n </DropdownMenu>\n );\n },\n },\n ],\n },\n ],\n []\n );\n\n switch (mappingView) {\n case MappingView.ADDING:\n return <MappingAction iModelId={iModelId} returnFn={refresh} />;\n case MappingView.MODIFYING:\n return (\n <MappingAction\n iModelId={iModelId}\n mapping={selectedMapping}\n returnFn={refresh}\n />\n );\n case MappingView.GROUPS:\n return (\n <Groupings\n mapping={selectedMapping as Mapping}\n goBack={refresh}\n />\n );\n default:\n return (\n <>\n <WidgetHeader title=\"Mappings\" />\n <div className=\"mappings-container\">\n <div className=\"table-toolbar\">\n <Button\n startIcon={<SvgAdd />}\n onClick={async () => addMapping()}\n styleType=\"high-visibility\"\n >\n New\n </Button>\n <ButtonGroup onClick={() => setShowImportModal(true)}>\n <IconButton title=\"Import Mappings\">\n <SvgImport />\n </IconButton>\n </ButtonGroup>\n </div>\n <Table<MappingType>\n data={mappings}\n density=\"extra-condensed\"\n columns={mappingsColumns}\n emptyTableContent=\"No Mappings available.\"\n isSortable\n isLoading={isLoading}\n />\n </div>\n <DeleteModal\n entityName={selectedMapping?.mappingName ?? \"\"}\n show={showDeleteModal}\n setShow={setShowDeleteModal}\n onDelete={async () => {\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n await reportingClientApi.deleteMapping(\n apiContext.accessToken,\n iModelId,\n selectedMapping?.id ?? \"\"\n );\n }}\n refresh={refresh}\n />\n <MappingImportWizardModal\n show={showImportModal}\n setShow={setShowImportModal}\n onFinish={refresh}\n />\n </>\n );\n }\n};\n"]}
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 { Presentation } from \"@itwin/presentation-frontend\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport {\n SvgAdd,\n SvgDelete,\n SvgEdit,\n SvgImport,\n SvgMore,\n SvgProcess,\n} from \"@itwin/itwinui-icons-react\";\nimport {\n Button,\n ButtonGroup,\n DropdownMenu,\n IconButton,\n MenuItem,\n Table,\n} from \"@itwin/itwinui-react\";\nimport type { CellProps } from \"react-table\";\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../utils\";\nimport { handleError, onSelectionChanged, WidgetHeader } from \"./utils\";\nimport \"./Mapping.scss\";\nimport DeleteModal from \"./DeleteModal\";\nimport { Groupings } from \"./Grouping\";\nimport MappingAction from \"./MappingAction\";\nimport { MappingImportWizardModal } from \"./MappingImportWizardModal\";\nimport type { Api } from \"./GroupingMapping\";\nimport { ApiContext } from \"./GroupingMapping\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { ReportingClient } from \"@itwin/insights-client\";\nimport { BlockingOverlay } from \"./BlockingOverlay\";\n\nexport type MappingType = CreateTypeFromInterface<Mapping>;\n\nenum MappingView {\n MAPPINGS = \"mappings\",\n GROUPS = \"groups\",\n ADDING = \"adding\",\n MODIFYING = \"modifying\",\n IMPORT = \"import\",\n}\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<Mapping[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n apiContext: Api\n) => {\n try {\n setIsLoading(true);\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n const mappings = await reportingClientApi.getMappings(apiContext.accessToken, iModelId);\n setMappings(mappings);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\nconst toggleExtraction = async (apiContext: Api, iModelId: string, mapping: Mapping) => {\n try {\n const newState = !mapping?.extractionEnabled;\n const reportingClient = new ReportingClient(apiContext.prefix);\n await reportingClient.updateMapping(\n apiContext.accessToken,\n iModelId,\n mapping?.id ?? \"\",\n { extractionEnabled: newState }\n );\n } catch (error: any) {\n handleError(error.status);\n }\n};\n\nexport const Mappings = () => {\n const apiContext = useContext(ApiContext);\n const iModelId = useActiveIModelConnection()?.iModelId as string;\n const [showDeleteModal, setShowDeleteModal] = useState<boolean>(false);\n const [showImportModal, setShowImportModal] = useState<boolean>(false);\n const [showBlockingOverlay, setShowBlockingOverlay] = useState<boolean>(false);\n const [mappingView, setMappingView] = useState<MappingView>(\n MappingView.MAPPINGS\n );\n const [selectedMapping, setSelectedMapping] = useState<\n Mapping | undefined\n >(undefined);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [mappings, setMappings] = useState<Mapping[]>([]);\n\n useEffect(() => {\n void fetchMappings(setMappings, iModelId, setIsLoading, apiContext);\n }, [apiContext, iModelId, setIsLoading]);\n\n useEffect(() => {\n const removeListener =\n Presentation.selection.selectionChange.addListener(onSelectionChanged);\n return () => {\n removeListener();\n };\n }, []);\n\n const refresh = useCallback(async () => {\n setMappingView(MappingView.MAPPINGS);\n setSelectedMapping(undefined);\n setMappings([]);\n await fetchMappings(setMappings, iModelId, setIsLoading, apiContext);\n }, [apiContext, iModelId, setMappings]);\n\n const addMapping = async () => {\n setMappingView(MappingView.ADDING);\n };\n\n const mappingsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"mappingName\",\n Header: \"Mapping Name\",\n accessor: \"mappingName\",\n Cell: (value: CellProps<{ mappingName: string }>) => (\n <div\n className=\"iui-anchor\"\n onClick={() => {\n setSelectedMapping(value.row.original);\n setMappingView(MappingView.GROUPS);\n }}\n >\n {value.row.original.mappingName}\n </div>\n ),\n },\n {\n id: \"description\",\n Header: \"Description\",\n accessor: \"description\",\n },\n {\n id: \"dropdown\",\n Header: \"\",\n width: 80,\n Cell: (value: CellProps<MappingType>) => {\n return (\n <DropdownMenu\n menuItems={(close: () => void) => [\n <MenuItem\n key={0}\n onClick={() => {\n setSelectedMapping(value.row.original);\n setMappingView(MappingView.MODIFYING);\n }}\n icon={<SvgEdit />}\n >\n Modify\n </MenuItem>,\n\n <MenuItem\n key={1}\n onClick={async () => {\n setSelectedMapping(value.row.original);\n setShowBlockingOverlay(true);\n close();\n await toggleExtraction(apiContext, iModelId, value.row.original);\n await refresh();\n setShowBlockingOverlay(false);\n }}\n icon={<SvgProcess />}\n >\n {value.row.original.extractionEnabled ? \"Disable extraction\" : \"Enable extraction\"}\n </MenuItem>,\n\n <MenuItem\n key={2}\n onClick={() => {\n setSelectedMapping(value.row.original);\n setShowDeleteModal(true);\n close();\n }}\n icon={<SvgDelete />}\n >\n Remove\n </MenuItem>,\n ]}\n >\n <IconButton styleType=\"borderless\">\n <SvgMore\n style={{\n width: \"16px\",\n height: \"16px\",\n }}\n />\n </IconButton>\n </DropdownMenu>\n );\n },\n },\n ],\n },\n ],\n [apiContext, iModelId, refresh]\n );\n\n switch (mappingView) {\n case MappingView.ADDING:\n return <MappingAction iModelId={iModelId} returnFn={refresh} />;\n case MappingView.MODIFYING:\n return (\n <MappingAction\n iModelId={iModelId}\n mapping={selectedMapping}\n returnFn={refresh}\n />\n );\n case MappingView.GROUPS:\n return (\n <Groupings\n mapping={selectedMapping as Mapping}\n goBack={refresh}\n />\n );\n default:\n return (\n <>\n <BlockingOverlay isVisible={showBlockingOverlay} />\n <WidgetHeader title=\"Mappings\" />\n <div className=\"mappings-container\">\n <div className=\"table-toolbar\">\n <Button\n startIcon={<SvgAdd />}\n onClick={async () => addMapping()}\n styleType=\"high-visibility\"\n >\n New\n </Button>\n <ButtonGroup onClick={() => setShowImportModal(true)}>\n <IconButton title=\"Import Mappings\">\n <SvgImport />\n </IconButton>\n </ButtonGroup>\n </div>\n <Table<MappingType>\n data={mappings}\n density=\"extra-condensed\"\n columns={mappingsColumns}\n emptyTableContent=\"No Mappings available.\"\n isSortable\n isLoading={isLoading}\n />\n </div>\n <DeleteModal\n entityName={selectedMapping?.mappingName ?? \"\"}\n show={showDeleteModal}\n setShow={setShowDeleteModal}\n onDelete={async () => {\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n await reportingClientApi.deleteMapping(\n apiContext.accessToken,\n iModelId,\n selectedMapping?.id ?? \"\"\n );\n }}\n refresh={refresh}\n />\n <MappingImportWizardModal\n show={showImportModal}\n setShow={setShowImportModal}\n onFinish={refresh}\n />\n </>\n );\n }\n};\n"]}
@@ -35,11 +35,12 @@ require("./MappingAction.scss");
35
35
  const GroupingMapping_1 = require("./GroupingMapping");
36
36
  const insights_client_1 = require("@itwin/insights-client");
37
37
  const MappingAction = ({ iModelId, mapping, returnFn }) => {
38
- var _a, _b;
38
+ var _a, _b, _c;
39
39
  const apiContext = react_1.useContext(GroupingMapping_1.ApiContext);
40
40
  const [values, setValues] = react_1.useState({
41
41
  name: (_a = mapping === null || mapping === void 0 ? void 0 : mapping.mappingName) !== null && _a !== void 0 ? _a : "",
42
42
  description: (_b = mapping === null || mapping === void 0 ? void 0 : mapping.description) !== null && _b !== void 0 ? _b : "",
43
+ extractionEnabled: (_c = mapping === null || mapping === void 0 ? void 0 : mapping.extractionEnabled) !== null && _c !== void 0 ? _c : true,
43
44
  });
44
45
  const [validator, showValidationMessage] = useValidator_1.default();
45
46
  const [isLoading, setIsLoading] = react_1.useState(false);
@@ -57,10 +58,12 @@ const MappingAction = ({ iModelId, mapping, returnFn }) => {
57
58
  ? await reportingClientApi.updateMapping(apiContext.accessToken, iModelId, (_a = mapping.id) !== null && _a !== void 0 ? _a : "", {
58
59
  mappingName: values.name,
59
60
  description: values.description,
61
+ extractionEnabled: values.extractionEnabled,
60
62
  })
61
63
  : await reportingClientApi.createMapping(apiContext.accessToken, iModelId, {
62
64
  mappingName: values.name,
63
65
  description: values.description,
66
+ extractionEnabled: values.extractionEnabled,
64
67
  });
65
68
  await returnFn();
66
69
  }
@@ -87,6 +90,9 @@ const MappingAction = ({ iModelId, mapping, returnFn }) => {
87
90
  } }),
88
91
  react_1.default.createElement(itwinui_react_1.LabeledInput, { id: 'description', name: 'description', label: 'Description', value: values.description, onChange: (event) => {
89
92
  utils_1.handleInputChange(event, values, setValues);
93
+ } }),
94
+ react_1.default.createElement(itwinui_react_1.ToggleSwitch, { id: 'extractionEnabled', name: 'extractionEnabled', label: 'Extraction enabled', labelPosition: "left", checked: values.extractionEnabled, onChange: (event) => {
95
+ setValues({ ...values, extractionEnabled: event.currentTarget.checked });
90
96
  } }))),
91
97
  react_1.default.createElement(ActionPanel_1.default, { onSave: onSave, onCancel: returnFn, isSavingDisabled: !values.name, isLoading: isLoading })));
92
98
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MappingAction.js","sourceRoot":"","sources":["../../../../src/widget/components/MappingAction.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 { Fieldset, LabeledInput, Small } from \"@itwin/itwinui-react\";\nimport React, { useContext, useState } from \"react\";\nimport ActionPanel from \"./ActionPanel\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../hooks/useValidator\";\nimport { handleError, handleInputChange, WidgetHeader } from \"./utils\";\nimport \"./MappingAction.scss\";\nimport { ApiContext } from \"./GroupingMapping\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { ReportingClient } from \"@itwin/insights-client\";\n\ninterface MappingActionProps {\n iModelId: string;\n mapping?: Mapping;\n returnFn: () => Promise<void>;\n}\n\nconst MappingAction = ({ iModelId, mapping, returnFn }: MappingActionProps) => {\n const apiContext = useContext(ApiContext);\n const [values, setValues] = useState({\n name: mapping?.mappingName ?? \"\",\n description: mapping?.description ?? \"\",\n });\n const [validator, showValidationMessage] = useValidator();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n\n // TODO ERRORED STATE\n const onSave = async () => {\n try {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n setIsLoading(true);\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n mapping\n ? await reportingClientApi.updateMapping(apiContext.accessToken, iModelId, mapping.id ?? \"\", {\n mappingName: values.name,\n description: values.description,\n })\n : await reportingClientApi.createMapping(apiContext.accessToken, iModelId, {\n mappingName: values.name,\n description: values.description,\n });\n await returnFn();\n } catch (error: any) {\n handleError(error.status);\n setIsLoading(false);\n }\n };\n\n return (\n <>\n <WidgetHeader\n title={mapping ? \"Modify Mapping\" : \"Add Mapping\"}\n returnFn={returnFn}\n />\n <div className='details-form-container'>\n <Fieldset legend='Mapping Details' className='details-form'>\n <Small className='field-legend'>\n Asterisk * indicates mandatory fields.\n </Small>\n <LabeledInput\n id='name'\n name='name'\n label='Name'\n value={values.name}\n required\n onChange={(event) => {\n handleInputChange(event, values, setValues);\n validator.showMessageFor(\"name\");\n }}\n message={validator.message(\"name\", values.name, NAME_REQUIREMENTS)}\n status={\n validator.message(\"name\", values.name, NAME_REQUIREMENTS)\n ? \"negative\"\n : undefined\n }\n onBlur={() => {\n validator.showMessageFor(\"name\");\n }}\n onBlurCapture={(event) => {\n handleInputChange(event, values, setValues);\n validator.showMessageFor(\"name\");\n }}\n />\n <LabeledInput\n id='description'\n name='description'\n label='Description'\n value={values.description}\n onChange={(event) => {\n handleInputChange(event, values, setValues);\n }}\n />\n </Fieldset>\n </div>\n <ActionPanel\n onSave={onSave}\n onCancel={returnFn}\n isSavingDisabled={!values.name}\n isLoading={isLoading}\n />\n </>\n );\n};\n\nexport default MappingAction;\n"]}
1
+ {"version":3,"file":"MappingAction.js","sourceRoot":"","sources":["../../../../src/widget/components/MappingAction.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 { Fieldset, LabeledInput, Small, ToggleSwitch } from \"@itwin/itwinui-react\";\nimport React, { useContext, useState } from \"react\";\nimport ActionPanel from \"./ActionPanel\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../hooks/useValidator\";\nimport { handleError, handleInputChange, WidgetHeader } from \"./utils\";\nimport \"./MappingAction.scss\";\nimport { ApiContext } from \"./GroupingMapping\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { ReportingClient } from \"@itwin/insights-client\";\n\ninterface MappingActionProps {\n iModelId: string;\n mapping?: Mapping;\n returnFn: () => Promise<void>;\n}\n\nconst MappingAction = ({ iModelId, mapping, returnFn }: MappingActionProps) => {\n const apiContext = useContext(ApiContext);\n const [values, setValues] = useState({\n name: mapping?.mappingName ?? \"\",\n description: mapping?.description ?? \"\",\n extractionEnabled: mapping?.extractionEnabled ?? true,\n });\n const [validator, showValidationMessage] = useValidator();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n\n // TODO ERRORED STATE\n const onSave = async () => {\n try {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n setIsLoading(true);\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n mapping\n ? await reportingClientApi.updateMapping(apiContext.accessToken, iModelId, mapping.id ?? \"\", {\n mappingName: values.name,\n description: values.description,\n extractionEnabled: values.extractionEnabled,\n })\n : await reportingClientApi.createMapping(apiContext.accessToken, iModelId, {\n mappingName: values.name,\n description: values.description,\n extractionEnabled: values.extractionEnabled,\n });\n await returnFn();\n } catch (error: any) {\n handleError(error.status);\n setIsLoading(false);\n }\n };\n\n return (\n <>\n <WidgetHeader\n title={mapping ? \"Modify Mapping\" : \"Add Mapping\"}\n returnFn={returnFn}\n />\n <div className='details-form-container'>\n <Fieldset legend='Mapping Details' className='details-form'>\n <Small className='field-legend'>\n Asterisk * indicates mandatory fields.\n </Small>\n <LabeledInput\n id='name'\n name='name'\n label='Name'\n value={values.name}\n required\n onChange={(event) => {\n handleInputChange(event, values, setValues);\n validator.showMessageFor(\"name\");\n }}\n message={validator.message(\"name\", values.name, NAME_REQUIREMENTS)}\n status={\n validator.message(\"name\", values.name, NAME_REQUIREMENTS)\n ? \"negative\"\n : undefined\n }\n onBlur={() => {\n validator.showMessageFor(\"name\");\n }}\n onBlurCapture={(event) => {\n handleInputChange(event, values, setValues);\n validator.showMessageFor(\"name\");\n }}\n />\n <LabeledInput\n id='description'\n name='description'\n label='Description'\n value={values.description}\n onChange={(event) => {\n handleInputChange(event, values, setValues);\n }}\n />\n <ToggleSwitch\n id='extractionEnabled'\n name='extractionEnabled'\n label='Extraction enabled'\n labelPosition=\"left\"\n checked={values.extractionEnabled}\n onChange={(event) => {\n setValues({ ...values, extractionEnabled: event.currentTarget.checked });\n }}\n />\n </Fieldset>\n </div>\n <ActionPanel\n onSave={onSave}\n onCancel={returnFn}\n isSavingDisabled={!values.name}\n isLoading={isLoading}\n />\n </>\n );\n};\n\nexport default MappingAction;\n"]}
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import "./BlockingOverlay.scss";
3
+ export interface BlockingOverlayProps {
4
+ isVisible: boolean;
5
+ }
6
+ export declare const BlockingOverlay: ({ isVisible }: BlockingOverlayProps) => JSX.Element;
7
+ //# sourceMappingURL=BlockingOverlay.d.ts.map
@@ -0,0 +1,14 @@
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 classnames from "classnames";
6
+ import React from "react";
7
+ import { LoadingSpinner } from "./utils";
8
+ import "./BlockingOverlay.scss";
9
+ export const BlockingOverlay = ({ isVisible }) => {
10
+ return (React.createElement("div", { className: classnames("group-mapping-blocking-overlay", isVisible && "visible") },
11
+ React.createElement("div", { className: "group-mapping-blocking-overlay-spinner" },
12
+ React.createElement(LoadingSpinner, null))));
13
+ };
14
+ //# sourceMappingURL=BlockingOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockingOverlay.js","sourceRoot":"","sources":["../../../../src/widget/components/BlockingOverlay.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,wBAAwB,CAAC;AAMhC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,SAAS,EAAwB,EAAE,EAAE;IACrE,OAAO,CACL,6BAAK,SAAS,EAAE,UAAU,CAAC,gCAAgC,EAAE,SAAS,IAAI,SAAS,CAAC;QAClF,6BAAK,SAAS,EAAC,wCAAwC;YACrD,oBAAC,cAAc,OAAG,CACd,CACF,CACP,CAAC;AACJ,CAAC,CAAC","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 classnames from \"classnames\";\nimport React from \"react\";\nimport { LoadingSpinner } from \"./utils\";\nimport \"./BlockingOverlay.scss\";\n\nexport interface BlockingOverlayProps {\n isVisible: boolean;\n}\n\nexport const BlockingOverlay = ({ isVisible }: BlockingOverlayProps) => {\n return (\n <div className={classnames(\"group-mapping-blocking-overlay\", isVisible && \"visible\")}>\n <div className=\"group-mapping-blocking-overlay-spinner\">\n <LoadingSpinner />\n </div>\n </div>\n );\n};\n"]}
@@ -0,0 +1,26 @@
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 '~@itwin/itwinui-css/scss/variables';
6
+
7
+ .group-mapping-blocking-overlay {
8
+ background-color: black;
9
+ position: absolute;
10
+ height: inherit;
11
+ right: 6px;
12
+ left: 6px;
13
+ opacity: 60%;
14
+ z-index: 9999;
15
+ visibility: hidden;
16
+
17
+ &.visible {
18
+ visibility: visible;
19
+ }
20
+ }
21
+
22
+ .group-mapping-blocking-overlay-spinner {
23
+ display: flex;
24
+ justify-content: center;
25
+ height: inherit;
26
+ }
@@ -4,7 +4,7 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { Presentation } from "@itwin/presentation-frontend";
6
6
  import { useActiveIModelConnection } from "@itwin/appui-react";
7
- import { SvgAdd, SvgDelete, SvgEdit, SvgImport, SvgMore, } from "@itwin/itwinui-icons-react";
7
+ import { SvgAdd, SvgDelete, SvgEdit, SvgImport, SvgMore, SvgProcess, } from "@itwin/itwinui-icons-react";
8
8
  import { Button, ButtonGroup, DropdownMenu, IconButton, MenuItem, Table, } from "@itwin/itwinui-react";
9
9
  import React, { useCallback, useContext, useEffect, useMemo, useState } from "react";
10
10
  import { handleError, onSelectionChanged, WidgetHeader } from "./utils";
@@ -15,6 +15,7 @@ import MappingAction from "./MappingAction";
15
15
  import { MappingImportWizardModal } from "./MappingImportWizardModal";
16
16
  import { ApiContext } from "./GroupingMapping";
17
17
  import { ReportingClient } from "@itwin/insights-client";
18
+ import { BlockingOverlay } from "./BlockingOverlay";
18
19
  var MappingView;
19
20
  (function (MappingView) {
20
21
  MappingView["MAPPINGS"] = "mappings";
@@ -37,12 +38,24 @@ const fetchMappings = async (setMappings, iModelId, setIsLoading, apiContext) =>
37
38
  setIsLoading(false);
38
39
  }
39
40
  };
41
+ const toggleExtraction = async (apiContext, iModelId, mapping) => {
42
+ var _a;
43
+ try {
44
+ const newState = !(mapping === null || mapping === void 0 ? void 0 : mapping.extractionEnabled);
45
+ const reportingClient = new ReportingClient(apiContext.prefix);
46
+ await reportingClient.updateMapping(apiContext.accessToken, iModelId, (_a = mapping === null || mapping === void 0 ? void 0 : mapping.id) !== null && _a !== void 0 ? _a : "", { extractionEnabled: newState });
47
+ }
48
+ catch (error) {
49
+ handleError(error.status);
50
+ }
51
+ };
40
52
  export const Mappings = () => {
41
53
  var _a, _b;
42
54
  const apiContext = useContext(ApiContext);
43
55
  const iModelId = (_a = useActiveIModelConnection()) === null || _a === void 0 ? void 0 : _a.iModelId;
44
56
  const [showDeleteModal, setShowDeleteModal] = useState(false);
45
57
  const [showImportModal, setShowImportModal] = useState(false);
58
+ const [showBlockingOverlay, setShowBlockingOverlay] = useState(false);
46
59
  const [mappingView, setMappingView] = useState(MappingView.MAPPINGS);
47
60
  const [selectedMapping, setSelectedMapping] = useState(undefined);
48
61
  const [isLoading, setIsLoading] = useState(true);
@@ -93,7 +106,15 @@ export const Mappings = () => {
93
106
  setSelectedMapping(value.row.original);
94
107
  setMappingView(MappingView.MODIFYING);
95
108
  }, icon: React.createElement(SvgEdit, null) }, "Modify"),
96
- React.createElement(MenuItem, { key: 1, onClick: () => {
109
+ React.createElement(MenuItem, { key: 1, onClick: async () => {
110
+ setSelectedMapping(value.row.original);
111
+ setShowBlockingOverlay(true);
112
+ close();
113
+ await toggleExtraction(apiContext, iModelId, value.row.original);
114
+ await refresh();
115
+ setShowBlockingOverlay(false);
116
+ }, icon: React.createElement(SvgProcess, null) }, value.row.original.extractionEnabled ? "Disable extraction" : "Enable extraction"),
117
+ React.createElement(MenuItem, { key: 2, onClick: () => {
97
118
  setSelectedMapping(value.row.original);
98
119
  setShowDeleteModal(true);
99
120
  close();
@@ -108,7 +129,7 @@ export const Mappings = () => {
108
129
  },
109
130
  ],
110
131
  },
111
- ], []);
132
+ ], [apiContext, iModelId, refresh]);
112
133
  switch (mappingView) {
113
134
  case MappingView.ADDING:
114
135
  return React.createElement(MappingAction, { iModelId: iModelId, returnFn: refresh });
@@ -118,6 +139,7 @@ export const Mappings = () => {
118
139
  return (React.createElement(Groupings, { mapping: selectedMapping, goBack: refresh }));
119
140
  default:
120
141
  return (React.createElement(React.Fragment, null,
142
+ React.createElement(BlockingOverlay, { isVisible: showBlockingOverlay }),
121
143
  React.createElement(WidgetHeader, { title: "Mappings" }),
122
144
  React.createElement("div", { className: "mappings-container" },
123
145
  React.createElement("div", { className: "table-toolbar" },
@@ -1 +1 @@
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 { Presentation } from \"@itwin/presentation-frontend\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport {\n SvgAdd,\n SvgDelete,\n SvgEdit,\n SvgImport,\n SvgMore,\n} from \"@itwin/itwinui-icons-react\";\nimport {\n Button,\n ButtonGroup,\n DropdownMenu,\n IconButton,\n MenuItem,\n Table,\n} from \"@itwin/itwinui-react\";\nimport type { CellProps } from \"react-table\";\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../utils\";\nimport { handleError, onSelectionChanged, WidgetHeader } from \"./utils\";\nimport \"./Mapping.scss\";\nimport DeleteModal from \"./DeleteModal\";\nimport { Groupings } from \"./Grouping\";\nimport MappingAction from \"./MappingAction\";\nimport { MappingImportWizardModal } from \"./MappingImportWizardModal\";\nimport type { Api } from \"./GroupingMapping\";\nimport { ApiContext } from \"./GroupingMapping\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { ReportingClient } from \"@itwin/insights-client\";\n\nexport type MappingType = CreateTypeFromInterface<Mapping>;\n\nenum MappingView {\n MAPPINGS = \"mappings\",\n GROUPS = \"groups\",\n ADDING = \"adding\",\n MODIFYING = \"modifying\",\n IMPORT = \"import\",\n}\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<Mapping[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n apiContext: Api\n) => {\n try {\n setIsLoading(true);\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n const mappings = await reportingClientApi.getMappings(apiContext.accessToken, iModelId);\n setMappings(mappings);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\nexport const Mappings = () => {\n const apiContext = useContext(ApiContext);\n const iModelId = useActiveIModelConnection()?.iModelId as string;\n const [showDeleteModal, setShowDeleteModal] = useState<boolean>(false);\n const [showImportModal, setShowImportModal] = useState<boolean>(false);\n const [mappingView, setMappingView] = useState<MappingView>(\n MappingView.MAPPINGS\n );\n const [selectedMapping, setSelectedMapping] = useState<\n Mapping | undefined\n >(undefined);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [mappings, setMappings] = useState<Mapping[]>([]);\n\n useEffect(() => {\n void fetchMappings(setMappings, iModelId, setIsLoading, apiContext);\n }, [apiContext, iModelId, setIsLoading]);\n\n useEffect(() => {\n const removeListener =\n Presentation.selection.selectionChange.addListener(onSelectionChanged);\n return () => {\n removeListener();\n };\n }, []);\n\n const refresh = useCallback(async () => {\n setMappingView(MappingView.MAPPINGS);\n setSelectedMapping(undefined);\n setMappings([]);\n await fetchMappings(setMappings, iModelId, setIsLoading, apiContext);\n }, [apiContext, iModelId, setMappings]);\n\n const addMapping = async () => {\n setMappingView(MappingView.ADDING);\n };\n\n const mappingsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"mappingName\",\n Header: \"Mapping Name\",\n accessor: \"mappingName\",\n Cell: (value: CellProps<{ mappingName: string }>) => (\n <div\n className=\"iui-anchor\"\n onClick={() => {\n setSelectedMapping(value.row.original);\n setMappingView(MappingView.GROUPS);\n }}\n >\n {value.row.original.mappingName}\n </div>\n ),\n },\n {\n id: \"description\",\n Header: \"Description\",\n accessor: \"description\",\n },\n {\n id: \"dropdown\",\n Header: \"\",\n width: 80,\n Cell: (value: CellProps<MappingType>) => {\n return (\n <DropdownMenu\n menuItems={(close: () => void) => [\n <MenuItem\n key={0}\n onClick={() => {\n setSelectedMapping(value.row.original);\n setMappingView(MappingView.MODIFYING);\n }}\n icon={<SvgEdit />}\n >\n Modify\n </MenuItem>,\n\n <MenuItem\n key={1}\n onClick={() => {\n setSelectedMapping(value.row.original);\n setShowDeleteModal(true);\n close();\n }}\n icon={<SvgDelete />}\n >\n Remove\n </MenuItem>,\n ]}\n >\n <IconButton styleType=\"borderless\">\n <SvgMore\n style={{\n width: \"16px\",\n height: \"16px\",\n }}\n />\n </IconButton>\n </DropdownMenu>\n );\n },\n },\n ],\n },\n ],\n []\n );\n\n switch (mappingView) {\n case MappingView.ADDING:\n return <MappingAction iModelId={iModelId} returnFn={refresh} />;\n case MappingView.MODIFYING:\n return (\n <MappingAction\n iModelId={iModelId}\n mapping={selectedMapping}\n returnFn={refresh}\n />\n );\n case MappingView.GROUPS:\n return (\n <Groupings\n mapping={selectedMapping as Mapping}\n goBack={refresh}\n />\n );\n default:\n return (\n <>\n <WidgetHeader title=\"Mappings\" />\n <div className=\"mappings-container\">\n <div className=\"table-toolbar\">\n <Button\n startIcon={<SvgAdd />}\n onClick={async () => addMapping()}\n styleType=\"high-visibility\"\n >\n New\n </Button>\n <ButtonGroup onClick={() => setShowImportModal(true)}>\n <IconButton title=\"Import Mappings\">\n <SvgImport />\n </IconButton>\n </ButtonGroup>\n </div>\n <Table<MappingType>\n data={mappings}\n density=\"extra-condensed\"\n columns={mappingsColumns}\n emptyTableContent=\"No Mappings available.\"\n isSortable\n isLoading={isLoading}\n />\n </div>\n <DeleteModal\n entityName={selectedMapping?.mappingName ?? \"\"}\n show={showDeleteModal}\n setShow={setShowDeleteModal}\n onDelete={async () => {\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n await reportingClientApi.deleteMapping(\n apiContext.accessToken,\n iModelId,\n selectedMapping?.id ?? \"\"\n );\n }}\n refresh={refresh}\n />\n <MappingImportWizardModal\n show={showImportModal}\n setShow={setShowImportModal}\n onFinish={refresh}\n />\n </>\n );\n }\n};\n"]}
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 { Presentation } from \"@itwin/presentation-frontend\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport {\n SvgAdd,\n SvgDelete,\n SvgEdit,\n SvgImport,\n SvgMore,\n SvgProcess,\n} from \"@itwin/itwinui-icons-react\";\nimport {\n Button,\n ButtonGroup,\n DropdownMenu,\n IconButton,\n MenuItem,\n Table,\n} from \"@itwin/itwinui-react\";\nimport type { CellProps } from \"react-table\";\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../utils\";\nimport { handleError, onSelectionChanged, WidgetHeader } from \"./utils\";\nimport \"./Mapping.scss\";\nimport DeleteModal from \"./DeleteModal\";\nimport { Groupings } from \"./Grouping\";\nimport MappingAction from \"./MappingAction\";\nimport { MappingImportWizardModal } from \"./MappingImportWizardModal\";\nimport type { Api } from \"./GroupingMapping\";\nimport { ApiContext } from \"./GroupingMapping\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { ReportingClient } from \"@itwin/insights-client\";\nimport { BlockingOverlay } from \"./BlockingOverlay\";\n\nexport type MappingType = CreateTypeFromInterface<Mapping>;\n\nenum MappingView {\n MAPPINGS = \"mappings\",\n GROUPS = \"groups\",\n ADDING = \"adding\",\n MODIFYING = \"modifying\",\n IMPORT = \"import\",\n}\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<Mapping[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n apiContext: Api\n) => {\n try {\n setIsLoading(true);\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n const mappings = await reportingClientApi.getMappings(apiContext.accessToken, iModelId);\n setMappings(mappings);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\nconst toggleExtraction = async (apiContext: Api, iModelId: string, mapping: Mapping) => {\n try {\n const newState = !mapping?.extractionEnabled;\n const reportingClient = new ReportingClient(apiContext.prefix);\n await reportingClient.updateMapping(\n apiContext.accessToken,\n iModelId,\n mapping?.id ?? \"\",\n { extractionEnabled: newState }\n );\n } catch (error: any) {\n handleError(error.status);\n }\n};\n\nexport const Mappings = () => {\n const apiContext = useContext(ApiContext);\n const iModelId = useActiveIModelConnection()?.iModelId as string;\n const [showDeleteModal, setShowDeleteModal] = useState<boolean>(false);\n const [showImportModal, setShowImportModal] = useState<boolean>(false);\n const [showBlockingOverlay, setShowBlockingOverlay] = useState<boolean>(false);\n const [mappingView, setMappingView] = useState<MappingView>(\n MappingView.MAPPINGS\n );\n const [selectedMapping, setSelectedMapping] = useState<\n Mapping | undefined\n >(undefined);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [mappings, setMappings] = useState<Mapping[]>([]);\n\n useEffect(() => {\n void fetchMappings(setMappings, iModelId, setIsLoading, apiContext);\n }, [apiContext, iModelId, setIsLoading]);\n\n useEffect(() => {\n const removeListener =\n Presentation.selection.selectionChange.addListener(onSelectionChanged);\n return () => {\n removeListener();\n };\n }, []);\n\n const refresh = useCallback(async () => {\n setMappingView(MappingView.MAPPINGS);\n setSelectedMapping(undefined);\n setMappings([]);\n await fetchMappings(setMappings, iModelId, setIsLoading, apiContext);\n }, [apiContext, iModelId, setMappings]);\n\n const addMapping = async () => {\n setMappingView(MappingView.ADDING);\n };\n\n const mappingsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"mappingName\",\n Header: \"Mapping Name\",\n accessor: \"mappingName\",\n Cell: (value: CellProps<{ mappingName: string }>) => (\n <div\n className=\"iui-anchor\"\n onClick={() => {\n setSelectedMapping(value.row.original);\n setMappingView(MappingView.GROUPS);\n }}\n >\n {value.row.original.mappingName}\n </div>\n ),\n },\n {\n id: \"description\",\n Header: \"Description\",\n accessor: \"description\",\n },\n {\n id: \"dropdown\",\n Header: \"\",\n width: 80,\n Cell: (value: CellProps<MappingType>) => {\n return (\n <DropdownMenu\n menuItems={(close: () => void) => [\n <MenuItem\n key={0}\n onClick={() => {\n setSelectedMapping(value.row.original);\n setMappingView(MappingView.MODIFYING);\n }}\n icon={<SvgEdit />}\n >\n Modify\n </MenuItem>,\n\n <MenuItem\n key={1}\n onClick={async () => {\n setSelectedMapping(value.row.original);\n setShowBlockingOverlay(true);\n close();\n await toggleExtraction(apiContext, iModelId, value.row.original);\n await refresh();\n setShowBlockingOverlay(false);\n }}\n icon={<SvgProcess />}\n >\n {value.row.original.extractionEnabled ? \"Disable extraction\" : \"Enable extraction\"}\n </MenuItem>,\n\n <MenuItem\n key={2}\n onClick={() => {\n setSelectedMapping(value.row.original);\n setShowDeleteModal(true);\n close();\n }}\n icon={<SvgDelete />}\n >\n Remove\n </MenuItem>,\n ]}\n >\n <IconButton styleType=\"borderless\">\n <SvgMore\n style={{\n width: \"16px\",\n height: \"16px\",\n }}\n />\n </IconButton>\n </DropdownMenu>\n );\n },\n },\n ],\n },\n ],\n [apiContext, iModelId, refresh]\n );\n\n switch (mappingView) {\n case MappingView.ADDING:\n return <MappingAction iModelId={iModelId} returnFn={refresh} />;\n case MappingView.MODIFYING:\n return (\n <MappingAction\n iModelId={iModelId}\n mapping={selectedMapping}\n returnFn={refresh}\n />\n );\n case MappingView.GROUPS:\n return (\n <Groupings\n mapping={selectedMapping as Mapping}\n goBack={refresh}\n />\n );\n default:\n return (\n <>\n <BlockingOverlay isVisible={showBlockingOverlay} />\n <WidgetHeader title=\"Mappings\" />\n <div className=\"mappings-container\">\n <div className=\"table-toolbar\">\n <Button\n startIcon={<SvgAdd />}\n onClick={async () => addMapping()}\n styleType=\"high-visibility\"\n >\n New\n </Button>\n <ButtonGroup onClick={() => setShowImportModal(true)}>\n <IconButton title=\"Import Mappings\">\n <SvgImport />\n </IconButton>\n </ButtonGroup>\n </div>\n <Table<MappingType>\n data={mappings}\n density=\"extra-condensed\"\n columns={mappingsColumns}\n emptyTableContent=\"No Mappings available.\"\n isSortable\n isLoading={isLoading}\n />\n </div>\n <DeleteModal\n entityName={selectedMapping?.mappingName ?? \"\"}\n show={showDeleteModal}\n setShow={setShowDeleteModal}\n onDelete={async () => {\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n await reportingClientApi.deleteMapping(\n apiContext.accessToken,\n iModelId,\n selectedMapping?.id ?? \"\"\n );\n }}\n refresh={refresh}\n />\n <MappingImportWizardModal\n show={showImportModal}\n setShow={setShowImportModal}\n onFinish={refresh}\n />\n </>\n );\n }\n};\n"]}
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- import { Fieldset, LabeledInput, Small } from "@itwin/itwinui-react";
5
+ import { Fieldset, LabeledInput, Small, ToggleSwitch } from "@itwin/itwinui-react";
6
6
  import React, { useContext, useState } from "react";
7
7
  import ActionPanel from "./ActionPanel";
8
8
  import useValidator, { NAME_REQUIREMENTS } from "../hooks/useValidator";
@@ -11,11 +11,12 @@ import "./MappingAction.scss";
11
11
  import { ApiContext } from "./GroupingMapping";
12
12
  import { ReportingClient } from "@itwin/insights-client";
13
13
  const MappingAction = ({ iModelId, mapping, returnFn }) => {
14
- var _a, _b;
14
+ var _a, _b, _c;
15
15
  const apiContext = useContext(ApiContext);
16
16
  const [values, setValues] = useState({
17
17
  name: (_a = mapping === null || mapping === void 0 ? void 0 : mapping.mappingName) !== null && _a !== void 0 ? _a : "",
18
18
  description: (_b = mapping === null || mapping === void 0 ? void 0 : mapping.description) !== null && _b !== void 0 ? _b : "",
19
+ extractionEnabled: (_c = mapping === null || mapping === void 0 ? void 0 : mapping.extractionEnabled) !== null && _c !== void 0 ? _c : true,
19
20
  });
20
21
  const [validator, showValidationMessage] = useValidator();
21
22
  const [isLoading, setIsLoading] = useState(false);
@@ -33,10 +34,12 @@ const MappingAction = ({ iModelId, mapping, returnFn }) => {
33
34
  ? await reportingClientApi.updateMapping(apiContext.accessToken, iModelId, (_a = mapping.id) !== null && _a !== void 0 ? _a : "", {
34
35
  mappingName: values.name,
35
36
  description: values.description,
37
+ extractionEnabled: values.extractionEnabled,
36
38
  })
37
39
  : await reportingClientApi.createMapping(apiContext.accessToken, iModelId, {
38
40
  mappingName: values.name,
39
41
  description: values.description,
42
+ extractionEnabled: values.extractionEnabled,
40
43
  });
41
44
  await returnFn();
42
45
  }
@@ -63,6 +66,9 @@ const MappingAction = ({ iModelId, mapping, returnFn }) => {
63
66
  } }),
64
67
  React.createElement(LabeledInput, { id: 'description', name: 'description', label: 'Description', value: values.description, onChange: (event) => {
65
68
  handleInputChange(event, values, setValues);
69
+ } }),
70
+ React.createElement(ToggleSwitch, { id: 'extractionEnabled', name: 'extractionEnabled', label: 'Extraction enabled', labelPosition: "left", checked: values.extractionEnabled, onChange: (event) => {
71
+ setValues({ ...values, extractionEnabled: event.currentTarget.checked });
66
72
  } }))),
67
73
  React.createElement(ActionPanel, { onSave: onSave, onCancel: returnFn, isSavingDisabled: !values.name, isLoading: isLoading })));
68
74
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MappingAction.js","sourceRoot":"","sources":["../../../../src/widget/components/MappingAction.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 { Fieldset, LabeledInput, Small } from \"@itwin/itwinui-react\";\nimport React, { useContext, useState } from \"react\";\nimport ActionPanel from \"./ActionPanel\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../hooks/useValidator\";\nimport { handleError, handleInputChange, WidgetHeader } from \"./utils\";\nimport \"./MappingAction.scss\";\nimport { ApiContext } from \"./GroupingMapping\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { ReportingClient } from \"@itwin/insights-client\";\n\ninterface MappingActionProps {\n iModelId: string;\n mapping?: Mapping;\n returnFn: () => Promise<void>;\n}\n\nconst MappingAction = ({ iModelId, mapping, returnFn }: MappingActionProps) => {\n const apiContext = useContext(ApiContext);\n const [values, setValues] = useState({\n name: mapping?.mappingName ?? \"\",\n description: mapping?.description ?? \"\",\n });\n const [validator, showValidationMessage] = useValidator();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n\n // TODO ERRORED STATE\n const onSave = async () => {\n try {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n setIsLoading(true);\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n mapping\n ? await reportingClientApi.updateMapping(apiContext.accessToken, iModelId, mapping.id ?? \"\", {\n mappingName: values.name,\n description: values.description,\n })\n : await reportingClientApi.createMapping(apiContext.accessToken, iModelId, {\n mappingName: values.name,\n description: values.description,\n });\n await returnFn();\n } catch (error: any) {\n handleError(error.status);\n setIsLoading(false);\n }\n };\n\n return (\n <>\n <WidgetHeader\n title={mapping ? \"Modify Mapping\" : \"Add Mapping\"}\n returnFn={returnFn}\n />\n <div className='details-form-container'>\n <Fieldset legend='Mapping Details' className='details-form'>\n <Small className='field-legend'>\n Asterisk * indicates mandatory fields.\n </Small>\n <LabeledInput\n id='name'\n name='name'\n label='Name'\n value={values.name}\n required\n onChange={(event) => {\n handleInputChange(event, values, setValues);\n validator.showMessageFor(\"name\");\n }}\n message={validator.message(\"name\", values.name, NAME_REQUIREMENTS)}\n status={\n validator.message(\"name\", values.name, NAME_REQUIREMENTS)\n ? \"negative\"\n : undefined\n }\n onBlur={() => {\n validator.showMessageFor(\"name\");\n }}\n onBlurCapture={(event) => {\n handleInputChange(event, values, setValues);\n validator.showMessageFor(\"name\");\n }}\n />\n <LabeledInput\n id='description'\n name='description'\n label='Description'\n value={values.description}\n onChange={(event) => {\n handleInputChange(event, values, setValues);\n }}\n />\n </Fieldset>\n </div>\n <ActionPanel\n onSave={onSave}\n onCancel={returnFn}\n isSavingDisabled={!values.name}\n isLoading={isLoading}\n />\n </>\n );\n};\n\nexport default MappingAction;\n"]}
1
+ {"version":3,"file":"MappingAction.js","sourceRoot":"","sources":["../../../../src/widget/components/MappingAction.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 { Fieldset, LabeledInput, Small, ToggleSwitch } from \"@itwin/itwinui-react\";\nimport React, { useContext, useState } from \"react\";\nimport ActionPanel from \"./ActionPanel\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../hooks/useValidator\";\nimport { handleError, handleInputChange, WidgetHeader } from \"./utils\";\nimport \"./MappingAction.scss\";\nimport { ApiContext } from \"./GroupingMapping\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { ReportingClient } from \"@itwin/insights-client\";\n\ninterface MappingActionProps {\n iModelId: string;\n mapping?: Mapping;\n returnFn: () => Promise<void>;\n}\n\nconst MappingAction = ({ iModelId, mapping, returnFn }: MappingActionProps) => {\n const apiContext = useContext(ApiContext);\n const [values, setValues] = useState({\n name: mapping?.mappingName ?? \"\",\n description: mapping?.description ?? \"\",\n extractionEnabled: mapping?.extractionEnabled ?? true,\n });\n const [validator, showValidationMessage] = useValidator();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n\n // TODO ERRORED STATE\n const onSave = async () => {\n try {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n setIsLoading(true);\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n mapping\n ? await reportingClientApi.updateMapping(apiContext.accessToken, iModelId, mapping.id ?? \"\", {\n mappingName: values.name,\n description: values.description,\n extractionEnabled: values.extractionEnabled,\n })\n : await reportingClientApi.createMapping(apiContext.accessToken, iModelId, {\n mappingName: values.name,\n description: values.description,\n extractionEnabled: values.extractionEnabled,\n });\n await returnFn();\n } catch (error: any) {\n handleError(error.status);\n setIsLoading(false);\n }\n };\n\n return (\n <>\n <WidgetHeader\n title={mapping ? \"Modify Mapping\" : \"Add Mapping\"}\n returnFn={returnFn}\n />\n <div className='details-form-container'>\n <Fieldset legend='Mapping Details' className='details-form'>\n <Small className='field-legend'>\n Asterisk * indicates mandatory fields.\n </Small>\n <LabeledInput\n id='name'\n name='name'\n label='Name'\n value={values.name}\n required\n onChange={(event) => {\n handleInputChange(event, values, setValues);\n validator.showMessageFor(\"name\");\n }}\n message={validator.message(\"name\", values.name, NAME_REQUIREMENTS)}\n status={\n validator.message(\"name\", values.name, NAME_REQUIREMENTS)\n ? \"negative\"\n : undefined\n }\n onBlur={() => {\n validator.showMessageFor(\"name\");\n }}\n onBlurCapture={(event) => {\n handleInputChange(event, values, setValues);\n validator.showMessageFor(\"name\");\n }}\n />\n <LabeledInput\n id='description'\n name='description'\n label='Description'\n value={values.description}\n onChange={(event) => {\n handleInputChange(event, values, setValues);\n }}\n />\n <ToggleSwitch\n id='extractionEnabled'\n name='extractionEnabled'\n label='Extraction enabled'\n labelPosition=\"left\"\n checked={values.extractionEnabled}\n onChange={(event) => {\n setValues({ ...values, extractionEnabled: event.currentTarget.checked });\n }}\n />\n </Fieldset>\n </div>\n <ActionPanel\n onSave={onSave}\n onCancel={returnFn}\n isSavingDisabled={!values.name}\n isLoading={isLoading}\n />\n </>\n );\n};\n\nexport default MappingAction;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/grouping-mapping-widget",
3
- "version": "0.3.3",
3
+ "version": "0.3.4",
4
4
  "description": "An iTwin.js 3D Viewer Widget that interfaces with the iTwin Reporting Platform.",
5
5
  "keywords": [
6
6
  "Bentley",