@itwin/grouping-mapping-widget 0.15.0 → 0.16.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/README.md +1 -1
- package/lib/cjs/widget/GroupingMappingWidget.d.ts +3 -3
- package/lib/cjs/widget/GroupingMappingWidget.js +5 -6
- package/lib/cjs/widget/GroupingMappingWidget.js.map +1 -1
- package/lib/cjs/widget/components/GroupPropertyAction.js +4 -6
- package/lib/cjs/widget/components/GroupPropertyAction.js.map +1 -1
- package/lib/cjs/widget/components/Mapping.d.ts +7 -0
- package/lib/cjs/widget/components/Mapping.js +7 -0
- package/lib/cjs/widget/components/Mapping.js.map +1 -1
- package/lib/cjs/widget/components/MappingImportWizardModal.d.ts +7 -0
- package/lib/cjs/widget/components/MappingImportWizardModal.js +38 -20
- package/lib/cjs/widget/components/MappingImportWizardModal.js.map +1 -1
- package/lib/cjs/widget/components/MappingImportWizardModal.scss +8 -1
- package/lib/cjs/widget/components/SelectIModel.d.ts +9 -4
- package/lib/cjs/widget/components/SelectIModel.js +71 -16
- package/lib/cjs/widget/components/SelectIModel.js.map +1 -1
- package/lib/cjs/widget/components/SelectIModel.scss +2 -2
- package/lib/cjs/widget/components/SelectITwin.d.ts +18 -0
- package/lib/cjs/widget/components/SelectITwin.js +115 -0
- package/lib/cjs/widget/components/SelectITwin.js.map +1 -0
- package/lib/{esm/widget/components/SelectProject.scss → cjs/widget/components/SelectITwin.scss} +6 -16
- package/lib/cjs/widget/components/SelectMapping.scss +1 -2
- package/lib/cjs/widget/components/context/IModelsClientContext.d.ts +7 -0
- package/lib/cjs/widget/components/context/IModelsClientContext.js +32 -0
- package/lib/cjs/widget/components/context/IModelsClientContext.js.map +1 -0
- package/lib/cjs/widget/components/context/ITwinsClientContext.d.ts +7 -0
- package/lib/cjs/widget/components/context/ITwinsClientContext.js +31 -0
- package/lib/cjs/widget/components/context/ITwinsClientContext.js.map +1 -0
- package/lib/esm/widget/GroupingMappingWidget.d.ts +3 -3
- package/lib/esm/widget/GroupingMappingWidget.js +4 -5
- package/lib/esm/widget/GroupingMappingWidget.js.map +1 -1
- package/lib/esm/widget/components/GroupPropertyAction.js +4 -6
- package/lib/esm/widget/components/GroupPropertyAction.js.map +1 -1
- package/lib/esm/widget/components/Mapping.d.ts +7 -0
- package/lib/esm/widget/components/Mapping.js +7 -0
- package/lib/esm/widget/components/Mapping.js.map +1 -1
- package/lib/esm/widget/components/MappingImportWizardModal.d.ts +7 -0
- package/lib/esm/widget/components/MappingImportWizardModal.js +38 -20
- package/lib/esm/widget/components/MappingImportWizardModal.js.map +1 -1
- package/lib/esm/widget/components/MappingImportWizardModal.scss +8 -1
- package/lib/esm/widget/components/SelectIModel.d.ts +9 -4
- package/lib/esm/widget/components/SelectIModel.js +73 -18
- package/lib/esm/widget/components/SelectIModel.js.map +1 -1
- package/lib/esm/widget/components/SelectIModel.scss +2 -2
- package/lib/esm/widget/components/SelectITwin.d.ts +18 -0
- package/lib/esm/widget/components/SelectITwin.js +94 -0
- package/lib/esm/widget/components/SelectITwin.js.map +1 -0
- package/lib/{cjs/widget/components/SelectProject.scss → esm/widget/components/SelectITwin.scss} +6 -16
- package/lib/esm/widget/components/SelectMapping.scss +1 -2
- package/lib/esm/widget/components/context/IModelsClientContext.d.ts +7 -0
- package/lib/esm/widget/components/context/IModelsClientContext.js +27 -0
- package/lib/esm/widget/components/context/IModelsClientContext.js.map +1 -0
- package/lib/esm/widget/components/context/ITwinsClientContext.d.ts +7 -0
- package/lib/esm/widget/components/context/ITwinsClientContext.js +26 -0
- package/lib/esm/widget/components/context/ITwinsClientContext.js.map +1 -0
- package/package.json +31 -30
- package/lib/cjs/widget/components/SelectProject.d.ts +0 -10
- package/lib/cjs/widget/components/SelectProject.js +0 -86
- package/lib/cjs/widget/components/SelectProject.js.map +0 -1
- package/lib/esm/widget/components/SelectProject.d.ts +0 -10
- package/lib/esm/widget/components/SelectProject.js +0 -65
- package/lib/esm/widget/components/SelectProject.js.map +0 -1
|
@@ -19,26 +19,81 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
19
19
|
return result;
|
|
20
20
|
};
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
const imodel_browser_react_1 = require("@itwin/imodel-browser-react");
|
|
23
22
|
const itwinui_react_1 = require("@itwin/itwinui-react");
|
|
24
23
|
const react_1 = __importStar(require("react"));
|
|
25
|
-
const GroupingApiConfigContext_1 = require("./context/GroupingApiConfigContext");
|
|
26
24
|
require("./SelectIModel.scss");
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
25
|
+
const GroupingApiConfigContext_1 = require("./context/GroupingApiConfigContext");
|
|
26
|
+
const IModelsClientContext_1 = require("./context/IModelsClientContext");
|
|
27
|
+
const utils_1 = require("./utils");
|
|
28
|
+
const defaultDisplayStrings = {
|
|
29
|
+
iModels: "iModels",
|
|
30
|
+
iModelName: "Name",
|
|
31
|
+
iModelDescription: "Description",
|
|
32
|
+
};
|
|
33
|
+
const fetchIModels = async (setIModels, setIsLoading, getAccessToken, iTwinId, iModelsClient) => {
|
|
34
|
+
try {
|
|
35
|
+
setIModels([]);
|
|
36
|
+
setIsLoading(true);
|
|
37
|
+
const iModelIterator = iModelsClient.iModels.getRepresentationList({
|
|
38
|
+
authorization: async () => {
|
|
39
|
+
const token = await getAccessToken();
|
|
40
|
+
const splitToken = token.split(" ");
|
|
41
|
+
return {
|
|
42
|
+
scheme: splitToken[0],
|
|
43
|
+
token: splitToken[1],
|
|
44
|
+
};
|
|
45
|
+
},
|
|
46
|
+
urlParams: {
|
|
47
|
+
iTwinId,
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
const iModels = [];
|
|
51
|
+
for await (const iModel of iModelIterator) {
|
|
52
|
+
iModels.push(iModel);
|
|
53
|
+
}
|
|
54
|
+
setIModels(iModels);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
utils_1.handleError(error.status);
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
setIsLoading(false);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const SelectIModel = ({ iTwinId: iTwinId, onSelect, onCancel, backFn, displayStrings: userDisplayStrings, }) => {
|
|
64
|
+
const { getAccessToken } = GroupingApiConfigContext_1.useGroupingMappingApiConfig();
|
|
65
|
+
const iModelsClient = IModelsClientContext_1.useIModelsClient();
|
|
66
|
+
const [isLoading, setIsLoading] = react_1.useState(true);
|
|
67
|
+
const [iModels, setIModels] = react_1.useState([]);
|
|
32
68
|
react_1.useEffect(() => {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
69
|
+
void fetchIModels(setIModels, setIsLoading, getAccessToken, iTwinId, iModelsClient);
|
|
70
|
+
}, [getAccessToken, iModelsClient, setIsLoading, iTwinId]);
|
|
71
|
+
const displayStrings = react_1.default.useMemo(() => ({ ...defaultDisplayStrings, ...userDisplayStrings }), [userDisplayStrings]);
|
|
72
|
+
const iModelsColumns = react_1.useMemo(() => [
|
|
73
|
+
{
|
|
74
|
+
Header: "Table",
|
|
75
|
+
columns: [
|
|
76
|
+
{
|
|
77
|
+
id: "iModelName",
|
|
78
|
+
Header: `${displayStrings.iModelName}`,
|
|
79
|
+
accessor: "name",
|
|
80
|
+
Filter: itwinui_react_1.tableFilters.TextFilter(),
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
id: "iModelDescription",
|
|
84
|
+
Header: `${displayStrings.iModelDescription}`,
|
|
85
|
+
accessor: "description",
|
|
86
|
+
Filter: itwinui_react_1.tableFilters.TextFilter(),
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
},
|
|
90
|
+
], [displayStrings.iModelName, displayStrings.iModelDescription]);
|
|
91
|
+
const pageSizeList = react_1.useMemo(() => [10, 25, 50], []);
|
|
92
|
+
const paginator = react_1.useCallback((props) => (react_1.default.createElement(itwinui_react_1.TablePaginator, { ...props, pageSizeList: pageSizeList })), [pageSizeList]);
|
|
93
|
+
return (react_1.default.createElement("div", { className: 'gmw-select-imodel-table-container' },
|
|
94
|
+
react_1.default.createElement(itwinui_react_1.Table, { data: iModels, columns: iModelsColumns, className: 'gmw-select-imodel-table', emptyTableContent: `No ${displayStrings.iModels} available.`, isSortable: true, isLoading: isLoading, onRowClick: (_, row) => {
|
|
95
|
+
onSelect(row.original.id);
|
|
96
|
+
}, paginatorRenderer: paginator }),
|
|
42
97
|
react_1.default.createElement("div", { className: 'gmw-import-action-panel' },
|
|
43
98
|
react_1.default.createElement(itwinui_react_1.Button, { onClick: backFn }, "Back"),
|
|
44
99
|
react_1.default.createElement(itwinui_react_1.Button, { onClick: onCancel }, "Cancel"))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectIModel.js","sourceRoot":"","sources":["../../../../src/widget/components/SelectIModel.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"SelectIModel.js","sourceRoot":"","sources":["../../../../src/widget/components/SelectIModel.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { EntityListIterator, IModel, IModelsClient } from \"@itwin/imodels-client-management\";\nimport type { TablePaginatorRendererProps } from \"@itwin/itwinui-react\";\nimport { Button, Table, tableFilters, TablePaginator } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../utils\";\nimport \"./SelectIModel.scss\";\nimport type { GetAccessTokenFn } from \"./context/GroupingApiConfigContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\nimport { useIModelsClient } from \"./context/IModelsClientContext\";\nimport { handleError } from \"./utils\";\n\ntype IIModelTyped = CreateTypeFromInterface<IModel>;\n\nconst defaultDisplayStrings = {\n iModels: \"iModels\",\n iModelName: \"Name\",\n iModelDescription: \"Description\",\n};\n\nconst fetchIModels = async (\n setIModels: (iModels: IModel[]) => void,\n setIsLoading: (isLoading: boolean) => void,\n getAccessToken: GetAccessTokenFn,\n iTwinId: string,\n iModelsClient: IModelsClient,\n) => {\n try {\n setIModels([]);\n setIsLoading(true);\n const iModelIterator: EntityListIterator<IModel> = iModelsClient.iModels.getRepresentationList({\n authorization: async () => {\n const token = await getAccessToken();\n const splitToken = token.split(\" \");\n return {\n scheme: splitToken[0],\n token: splitToken[1],\n };\n },\n urlParams: {\n iTwinId,\n },\n });\n const iModels: IModel[] = [];\n for await (const iModel of iModelIterator) {\n iModels.push(iModel);\n }\n setIModels(iModels);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\ninterface SelectIModelProps {\n iTwinId: string;\n onSelect: (iModelId: string) => void;\n onCancel: () => void;\n backFn: () => void;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n}\nconst SelectIModel = ({\n iTwinId: iTwinId,\n onSelect,\n onCancel,\n backFn,\n displayStrings: userDisplayStrings,\n}: SelectIModelProps) => {\n const { getAccessToken } = useGroupingMappingApiConfig();\n const iModelsClient = useIModelsClient();\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [iModels, setIModels] = useState<IModel[]>([]);\n\n useEffect(() => {\n void fetchIModels(setIModels, setIsLoading, getAccessToken, iTwinId, iModelsClient);\n }, [getAccessToken, iModelsClient, setIsLoading, iTwinId]);\n\n const displayStrings = React.useMemo(\n () => ({ ...defaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n const iModelsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"iModelName\",\n Header: `${displayStrings.iModelName}`,\n accessor: \"name\",\n Filter: tableFilters.TextFilter(),\n },\n {\n id: \"iModelDescription\",\n Header: `${displayStrings.iModelDescription}`,\n accessor: \"description\",\n Filter: tableFilters.TextFilter(),\n },\n ],\n },\n ],\n [displayStrings.iModelName, displayStrings.iModelDescription]\n );\n\n const pageSizeList = useMemo(() => [10, 25, 50], []);\n const paginator = useCallback(\n (props: TablePaginatorRendererProps) => (\n <TablePaginator {...props} pageSizeList={pageSizeList} />\n ),\n [pageSizeList]\n );\n\n return (\n <div className='gmw-select-imodel-table-container'>\n <Table<IIModelTyped>\n data={iModels}\n columns={iModelsColumns}\n className='gmw-select-imodel-table'\n emptyTableContent={`No ${displayStrings.iModels} available.`}\n isSortable\n isLoading={isLoading}\n onRowClick={(_, row) => {\n onSelect(row.original.id);\n }}\n paginatorRenderer={paginator}\n />\n <div className='gmw-import-action-panel'>\n <Button onClick={backFn}>Back</Button>\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </div>\n );\n};\n\nexport default SelectIModel;\n"]}
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
@import '~@itwin/itwinui-css/scss/variables';
|
|
6
6
|
|
|
7
|
-
.gmw-imodel-
|
|
7
|
+
.gmw-select-imodel-table-container {
|
|
8
8
|
display: flex;
|
|
9
9
|
flex-direction: column;
|
|
10
10
|
flex-grow: 1;
|
|
11
11
|
min-height: 0;
|
|
12
12
|
|
|
13
|
-
.gmw-imodel-
|
|
13
|
+
.gmw-select-imodel-table {
|
|
14
14
|
overflow: auto;
|
|
15
15
|
flex-grow: 1;
|
|
16
16
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import "./SelectITwin.scss";
|
|
3
|
+
declare const defaultDisplayStrings: {
|
|
4
|
+
iTwins: string;
|
|
5
|
+
iTwinNumber: string;
|
|
6
|
+
iTwinName: string;
|
|
7
|
+
iTwinStatus: string;
|
|
8
|
+
};
|
|
9
|
+
interface SelectITwinProps {
|
|
10
|
+
onSelect: (iTwinId: string) => void;
|
|
11
|
+
onCancel: () => void;
|
|
12
|
+
onChangeITwinType: (iTwinType: number) => void;
|
|
13
|
+
displayStrings?: Partial<typeof defaultDisplayStrings>;
|
|
14
|
+
defaultITwinType?: number;
|
|
15
|
+
}
|
|
16
|
+
declare const SelectITwin: ({ onSelect, onCancel, onChangeITwinType, displayStrings: userDisplayStrings, defaultITwinType, }: SelectITwinProps) => JSX.Element;
|
|
17
|
+
export default SelectITwin;
|
|
18
|
+
//# sourceMappingURL=SelectITwin.d.ts.map
|
|
@@ -0,0 +1,115 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
const itwins_client_1 = require("@itwin/itwins-client");
|
|
23
|
+
const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
|
|
24
|
+
const itwinui_react_1 = require("@itwin/itwinui-react");
|
|
25
|
+
const react_1 = __importStar(require("react"));
|
|
26
|
+
require("./SelectITwin.scss");
|
|
27
|
+
const GroupingApiConfigContext_1 = require("./context/GroupingApiConfigContext");
|
|
28
|
+
const ITwinsClientContext_1 = require("./context/ITwinsClientContext");
|
|
29
|
+
const utils_1 = require("./utils");
|
|
30
|
+
const defaultDisplayStrings = {
|
|
31
|
+
iTwins: "iTwins",
|
|
32
|
+
iTwinNumber: "Number",
|
|
33
|
+
iTwinName: "Name",
|
|
34
|
+
iTwinStatus: "Status",
|
|
35
|
+
};
|
|
36
|
+
const tabsWithIcons = [
|
|
37
|
+
react_1.default.createElement(itwinui_react_1.Tab, { key: "favorite", label: "Favorite iTwins", startIcon: react_1.default.createElement(itwinui_icons_react_1.SvgStarHollow, null) }),
|
|
38
|
+
react_1.default.createElement(itwinui_react_1.Tab, { key: "recents", label: "Recent iTwins", startIcon: react_1.default.createElement(itwinui_icons_react_1.SvgCalendar, null) }),
|
|
39
|
+
react_1.default.createElement(itwinui_react_1.Tab, { key: "all", label: "My iTwins", startIcon: react_1.default.createElement(itwinui_icons_react_1.SvgList, null) }),
|
|
40
|
+
];
|
|
41
|
+
const fetchITwins = async (setITwins, setIsLoading, getAccessToken, iTwinsClient, iTwinType) => {
|
|
42
|
+
try {
|
|
43
|
+
setITwins([]);
|
|
44
|
+
setIsLoading(true);
|
|
45
|
+
const accessToken = await getAccessToken();
|
|
46
|
+
let iTwinsResponse;
|
|
47
|
+
switch (iTwinType) {
|
|
48
|
+
case 0:
|
|
49
|
+
iTwinsResponse = await iTwinsClient.queryFavoritesAsync(accessToken, itwins_client_1.ITwinSubClass.Project);
|
|
50
|
+
break;
|
|
51
|
+
case 1:
|
|
52
|
+
iTwinsResponse = await iTwinsClient.queryRecentsAsync(accessToken, itwins_client_1.ITwinSubClass.Project);
|
|
53
|
+
break;
|
|
54
|
+
default:
|
|
55
|
+
iTwinsResponse = await iTwinsClient.queryAsync(accessToken, itwins_client_1.ITwinSubClass.Project);
|
|
56
|
+
}
|
|
57
|
+
setITwins(iTwinsResponse.data);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
utils_1.handleError(error.status);
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
setIsLoading(false);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
const SelectITwin = ({ onSelect, onCancel, onChangeITwinType, displayStrings: userDisplayStrings, defaultITwinType = 0, }) => {
|
|
67
|
+
const { getAccessToken } = GroupingApiConfigContext_1.useGroupingMappingApiConfig();
|
|
68
|
+
const iTwinsClient = ITwinsClientContext_1.useITwinsClient();
|
|
69
|
+
const [isLoading, setIsLoading] = react_1.useState(true);
|
|
70
|
+
const [iTwins, setITwins] = react_1.useState([]);
|
|
71
|
+
const [iTwinType, setITwinType] = react_1.useState(defaultITwinType);
|
|
72
|
+
react_1.useEffect(() => {
|
|
73
|
+
void fetchITwins(setITwins, setIsLoading, getAccessToken, iTwinsClient, iTwinType);
|
|
74
|
+
}, [getAccessToken, iTwinsClient, setIsLoading, iTwinType]);
|
|
75
|
+
const displayStrings = react_1.default.useMemo(() => ({ ...defaultDisplayStrings, ...userDisplayStrings }), [userDisplayStrings]);
|
|
76
|
+
const iTwinsColumns = react_1.useMemo(() => [
|
|
77
|
+
{
|
|
78
|
+
Header: "Table",
|
|
79
|
+
columns: [
|
|
80
|
+
{
|
|
81
|
+
id: "iTwinNumber",
|
|
82
|
+
Header: `${displayStrings.iTwinNumber}`,
|
|
83
|
+
accessor: "number",
|
|
84
|
+
Filter: itwinui_react_1.tableFilters.TextFilter(),
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
id: "iTwinName",
|
|
88
|
+
Header: `${displayStrings.iTwinName}`,
|
|
89
|
+
accessor: "displayName",
|
|
90
|
+
Filter: itwinui_react_1.tableFilters.TextFilter(),
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
id: "iTwinStatus",
|
|
94
|
+
Header: `${displayStrings.iTwinStatus}`,
|
|
95
|
+
accessor: "status",
|
|
96
|
+
Filter: itwinui_react_1.tableFilters.TextFilter(),
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
},
|
|
100
|
+
], [displayStrings.iTwinNumber, displayStrings.iTwinName, displayStrings.iTwinStatus]);
|
|
101
|
+
const pageSizeList = react_1.useMemo(() => [10, 25, 50], []);
|
|
102
|
+
const paginator = react_1.useCallback((props) => (react_1.default.createElement(itwinui_react_1.TablePaginator, { ...props, pageSizeList: pageSizeList })), [pageSizeList]);
|
|
103
|
+
return (react_1.default.createElement("div", { className: "gmw-select-itwin-table-container" },
|
|
104
|
+
react_1.default.createElement(itwinui_react_1.HorizontalTabs, { labels: tabsWithIcons, onTabSelected: (type) => {
|
|
105
|
+
onChangeITwinType(type);
|
|
106
|
+
setITwinType(type);
|
|
107
|
+
}, activeIndex: iTwinType, type: "borderless", contentClassName: "gmw-table-holding-tab" }),
|
|
108
|
+
react_1.default.createElement(itwinui_react_1.Table, { data: iTwins, columns: iTwinsColumns, className: 'gmw-select-itwin-table', emptyTableContent: `No ${displayStrings.iTwins} available.`, isSortable: true, isLoading: isLoading, onRowClick: (_, row) => {
|
|
109
|
+
onSelect(row.original.id);
|
|
110
|
+
}, paginatorRenderer: paginator }),
|
|
111
|
+
react_1.default.createElement("div", { className: "gmw-import-action-panel" },
|
|
112
|
+
react_1.default.createElement(itwinui_react_1.Button, { onClick: onCancel }, "Cancel"))));
|
|
113
|
+
};
|
|
114
|
+
exports.default = SelectITwin;
|
|
115
|
+
//# sourceMappingURL=SelectITwin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectITwin.js","sourceRoot":"","sources":["../../../../src/widget/components/SelectITwin.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { ITwin, ITwinsAccessClient, ITwinsAPIResponse } from \"@itwin/itwins-client\";\nimport { ITwinSubClass } from \"@itwin/itwins-client\";\nimport { SvgCalendar, SvgList, SvgStarHollow } from \"@itwin/itwinui-icons-react\";\nimport type { TablePaginatorRendererProps } from \"@itwin/itwinui-react\";\nimport { Button, HorizontalTabs, Tab, Table, tableFilters, TablePaginator } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../utils\";\nimport \"./SelectITwin.scss\";\nimport type { GetAccessTokenFn } from \"./context/GroupingApiConfigContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\nimport { useITwinsClient } from \"./context/ITwinsClientContext\";\nimport { handleError } from \"./utils\";\n\ntype IITwinTyped = CreateTypeFromInterface<ITwin>;\n\nconst defaultDisplayStrings = {\n iTwins: \"iTwins\",\n iTwinNumber: \"Number\",\n iTwinName: \"Name\",\n iTwinStatus: \"Status\",\n};\n\nconst tabsWithIcons = [\n <Tab key=\"favorite\" label=\"Favorite iTwins\" startIcon={<SvgStarHollow />} />,\n <Tab key=\"recents\" label=\"Recent iTwins\" startIcon={<SvgCalendar />} />,\n <Tab key=\"all\" label=\"My iTwins\" startIcon={<SvgList />} />,\n];\n\nconst fetchITwins = async (\n setITwins: (iTwins: ITwin[]) => void,\n setIsLoading: (isLoading: boolean) => void,\n getAccessToken: GetAccessTokenFn,\n iTwinsClient: ITwinsAccessClient,\n iTwinType: number,\n) => {\n try {\n setITwins([]);\n setIsLoading(true);\n const accessToken = await getAccessToken();\n let iTwinsResponse: ITwinsAPIResponse<ITwin[]>;\n switch (iTwinType) {\n case 0:\n iTwinsResponse = await iTwinsClient.queryFavoritesAsync(accessToken, ITwinSubClass.Project);\n break;\n case 1:\n iTwinsResponse = await iTwinsClient.queryRecentsAsync(accessToken, ITwinSubClass.Project);\n break;\n default:\n iTwinsResponse = await iTwinsClient.queryAsync(accessToken, ITwinSubClass.Project);\n }\n setITwins(iTwinsResponse.data!);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\ninterface SelectITwinProps {\n onSelect: (iTwinId: string) => void;\n onCancel: () => void;\n onChangeITwinType: (iTwinType: number) => void;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n defaultITwinType?: number;\n}\nconst SelectITwin = ({\n onSelect,\n onCancel,\n onChangeITwinType,\n displayStrings: userDisplayStrings,\n defaultITwinType = 0,\n}: SelectITwinProps) => {\n const { getAccessToken } = useGroupingMappingApiConfig();\n const iTwinsClient = useITwinsClient();\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [iTwins, setITwins] = useState<ITwin[]>([]);\n const [iTwinType, setITwinType] = useState<number>(defaultITwinType);\n\n useEffect(() => {\n void fetchITwins(setITwins, setIsLoading, getAccessToken, iTwinsClient, iTwinType);\n }, [getAccessToken, iTwinsClient, setIsLoading, iTwinType]);\n\n const displayStrings = React.useMemo(\n () => ({ ...defaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n const iTwinsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"iTwinNumber\",\n Header: `${displayStrings.iTwinNumber}`,\n accessor: \"number\",\n Filter: tableFilters.TextFilter(),\n },\n {\n id: \"iTwinName\",\n Header: `${displayStrings.iTwinName}`,\n accessor: \"displayName\",\n Filter: tableFilters.TextFilter(),\n },\n {\n id: \"iTwinStatus\",\n Header: `${displayStrings.iTwinStatus}`,\n accessor: \"status\",\n Filter: tableFilters.TextFilter(),\n },\n ],\n },\n ],\n [displayStrings.iTwinNumber, displayStrings.iTwinName, displayStrings.iTwinStatus]\n );\n\n const pageSizeList = useMemo(() => [10, 25, 50], []);\n const paginator = useCallback(\n (props: TablePaginatorRendererProps) => (\n <TablePaginator {...props} pageSizeList={pageSizeList} />\n ),\n [pageSizeList]\n );\n\n return (\n <div className=\"gmw-select-itwin-table-container\">\n <HorizontalTabs\n labels={tabsWithIcons}\n onTabSelected={(type) => {\n onChangeITwinType(type);\n setITwinType(type);\n }}\n activeIndex={iTwinType}\n type={\"borderless\"}\n contentClassName=\"gmw-table-holding-tab\">\n </HorizontalTabs>\n <Table<IITwinTyped>\n data={iTwins}\n columns={iTwinsColumns}\n className='gmw-select-itwin-table'\n emptyTableContent={`No ${displayStrings.iTwins} available.`}\n isSortable\n isLoading={isLoading}\n onRowClick={(_, row) => {\n onSelect(row.original.id!);\n }}\n paginatorRenderer={paginator}\n />\n <div className=\"gmw-import-action-panel\">\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </div>\n );\n};\n\nexport default SelectITwin;\n"]}
|
package/lib/{esm/widget/components/SelectProject.scss → cjs/widget/components/SelectITwin.scss}
RENAMED
|
@@ -4,30 +4,20 @@
|
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
@import '~@itwin/itwinui-css/scss/variables';
|
|
6
6
|
|
|
7
|
-
.gmw-select-
|
|
7
|
+
.gmw-select-itwin-table-container {
|
|
8
8
|
display: flex;
|
|
9
9
|
flex-direction: column;
|
|
10
10
|
flex-grow: 1;
|
|
11
11
|
min-height: 0;
|
|
12
12
|
|
|
13
|
-
.gmw-
|
|
14
|
-
margin-left: auto;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
.gmw-project-grid {
|
|
18
|
-
overflow: auto;
|
|
19
|
-
flex-grow: 1;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.gmw-grid-holding-tab {
|
|
13
|
+
.gmw-table-holding-tab {
|
|
23
14
|
display: flex;
|
|
24
15
|
flex-direction: column;
|
|
25
16
|
gap: $iui-baseline;
|
|
26
17
|
}
|
|
27
18
|
|
|
28
|
-
.gmw-select-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
padding: $iui-baseline * 2 $iui-m $iui-baseline;
|
|
19
|
+
.gmw-select-itwin-table {
|
|
20
|
+
overflow: auto;
|
|
21
|
+
flex-grow: 1;
|
|
32
22
|
}
|
|
33
|
-
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IModelsClient } from "@itwin/imodels-client-management";
|
|
3
|
+
import type { ClientPrefix } from "./GroupingApiConfigContext";
|
|
4
|
+
export declare const createIModelsClient: (prefix?: ClientPrefix) => IModelsClient;
|
|
5
|
+
export declare const IModelsClientContext: import("react").Context<IModelsClient>;
|
|
6
|
+
export declare const useIModelsClient: () => IModelsClient;
|
|
7
|
+
//# sourceMappingURL=IModelsClientContext.d.ts.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useIModelsClient = exports.IModelsClientContext = exports.createIModelsClient = void 0;
|
|
4
|
+
const imodels_client_management_1 = require("@itwin/imodels-client-management");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const baseUrl = "https://api.bentley.com/imodels";
|
|
7
|
+
const prefixUrl = (baseUrl, prefix) => {
|
|
8
|
+
if (prefix && baseUrl) {
|
|
9
|
+
return baseUrl.replace("api.bentley.com", `${prefix}-api.bentley.com`);
|
|
10
|
+
}
|
|
11
|
+
return baseUrl;
|
|
12
|
+
};
|
|
13
|
+
const createIModelsClient = (prefix) => {
|
|
14
|
+
const url = prefixUrl(baseUrl, prefix);
|
|
15
|
+
const options = {
|
|
16
|
+
api: {
|
|
17
|
+
baseUrl: url,
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
return new imodels_client_management_1.IModelsClient(options);
|
|
21
|
+
};
|
|
22
|
+
exports.createIModelsClient = createIModelsClient;
|
|
23
|
+
exports.IModelsClientContext = react_1.createContext(exports.createIModelsClient());
|
|
24
|
+
const useIModelsClient = () => {
|
|
25
|
+
const context = react_1.useContext(exports.IModelsClientContext);
|
|
26
|
+
if (!context) {
|
|
27
|
+
throw new Error("useIModelsClient should be used within an IModelsClientContext provider");
|
|
28
|
+
}
|
|
29
|
+
return context;
|
|
30
|
+
};
|
|
31
|
+
exports.useIModelsClient = useIModelsClient;
|
|
32
|
+
//# sourceMappingURL=IModelsClientContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IModelsClientContext.js","sourceRoot":"","sources":["../../../../../src/widget/components/context/IModelsClientContext.ts"],"names":[],"mappings":";;;AAKA,gFAAiE;AACjE,iCAAkD;AAGlD,MAAM,OAAO,GAAW,iCAAiC,CAAC;AAE1D,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,MAAe,EAAE,EAAE;IACtD,IAAI,MAAM,IAAI,OAAO,EAAE;QACrB,OAAO,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,MAAM,kBAAkB,CAAC,CAAC;KACxE;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,MAAM,mBAAmB,GAAG,CAAC,MAAqB,EAAiB,EAAE;IAC1E,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,OAAO,GAAyB;QACpC,GAAG,EAAE;YACH,OAAO,EAAE,GAAG;SACb;KACF,CAAC;IACF,OAAO,IAAI,yCAAa,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC,CAAC;AARW,QAAA,mBAAmB,uBAQ9B;AAEW,QAAA,oBAAoB,GAAG,qBAAa,CAAgB,2BAAmB,EAAE,CAAC,CAAC;AAEjF,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,OAAO,GAAG,kBAAU,CAAC,4BAAoB,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E,CAAC;KACH;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AARW,QAAA,gBAAgB,oBAQ3B","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { IModelsClientOptions } from \"@itwin/imodels-client-management\";\nimport { IModelsClient } from \"@itwin/imodels-client-management\";\nimport { createContext, useContext } from \"react\";\nimport type { ClientPrefix } from \"./GroupingApiConfigContext\";\n\nconst baseUrl: string = \"https://api.bentley.com/imodels\";\n\nconst prefixUrl = (baseUrl?: string, prefix?: string) => {\n if (prefix && baseUrl) {\n return baseUrl.replace(\"api.bentley.com\", `${prefix}-api.bentley.com`);\n }\n return baseUrl;\n};\n\nexport const createIModelsClient = (prefix?: ClientPrefix): IModelsClient => {\n const url = prefixUrl(baseUrl, prefix);\n const options: IModelsClientOptions = {\n api: {\n baseUrl: url,\n },\n };\n return new IModelsClient(options);\n};\n\nexport const IModelsClientContext = createContext<IModelsClient>(createIModelsClient());\n\nexport const useIModelsClient = () => {\n const context = useContext(IModelsClientContext);\n if (!context) {\n throw new Error(\n \"useIModelsClient should be used within an IModelsClientContext provider\"\n );\n }\n return context;\n};\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ITwinsAccessClient } from "@itwin/itwins-client";
|
|
3
|
+
import type { ClientPrefix } from "./GroupingApiConfigContext";
|
|
4
|
+
export declare const createITwinsClient: (prefix?: ClientPrefix) => ITwinsAccessClient;
|
|
5
|
+
export declare const ITwinsClientContext: import("react").Context<ITwinsAccessClient>;
|
|
6
|
+
export declare const useITwinsClient: () => ITwinsAccessClient;
|
|
7
|
+
//# sourceMappingURL=ITwinsClientContext.d.ts.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useITwinsClient = exports.ITwinsClientContext = exports.createITwinsClient = void 0;
|
|
4
|
+
/*---------------------------------------------------------------------------------------------
|
|
5
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
6
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
7
|
+
*--------------------------------------------------------------------------------------------*/
|
|
8
|
+
const itwins_client_1 = require("@itwin/itwins-client");
|
|
9
|
+
const react_1 = require("react");
|
|
10
|
+
const baseUrl = "https://api.bentley.com/itwins";
|
|
11
|
+
const prefixUrl = (baseUrl, prefix) => {
|
|
12
|
+
if (prefix && baseUrl) {
|
|
13
|
+
return baseUrl.replace("api.bentley.com", `${prefix}-api.bentley.com`);
|
|
14
|
+
}
|
|
15
|
+
return baseUrl;
|
|
16
|
+
};
|
|
17
|
+
const createITwinsClient = (prefix) => {
|
|
18
|
+
const url = prefixUrl(baseUrl, prefix);
|
|
19
|
+
return new itwins_client_1.ITwinsAccessClient(url);
|
|
20
|
+
};
|
|
21
|
+
exports.createITwinsClient = createITwinsClient;
|
|
22
|
+
exports.ITwinsClientContext = react_1.createContext(exports.createITwinsClient());
|
|
23
|
+
const useITwinsClient = () => {
|
|
24
|
+
const context = react_1.useContext(exports.ITwinsClientContext);
|
|
25
|
+
if (!context) {
|
|
26
|
+
throw new Error("useITwinsClient should be used within an ITwinsClientContext provider");
|
|
27
|
+
}
|
|
28
|
+
return context;
|
|
29
|
+
};
|
|
30
|
+
exports.useITwinsClient = useITwinsClient;
|
|
31
|
+
//# sourceMappingURL=ITwinsClientContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITwinsClientContext.js","sourceRoot":"","sources":["../../../../../src/widget/components/context/ITwinsClientContext.ts"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F,wDAA0D;AAC1D,iCAAkD;AAGlD,MAAM,OAAO,GAAW,gCAAgC,CAAC;AAEzD,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,MAAe,EAAE,EAAE;IACtD,IAAI,MAAM,IAAI,OAAO,EAAE;QACrB,OAAO,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,MAAM,kBAAkB,CAAC,CAAC;KACxE;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAAG,CAAC,MAAqB,EAAsB,EAAE;IAC9E,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvC,OAAO,IAAI,kCAAkB,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC,CAAC;AAHW,QAAA,kBAAkB,sBAG7B;AAEW,QAAA,mBAAmB,GAAG,qBAAa,CAAqB,0BAAkB,EAAE,CAAC,CAAC;AAEpF,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,OAAO,GAAG,kBAAU,CAAC,2BAAmB,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;KACH;IACD,OAAO,OAAO,CAAC;AACjB,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 { ITwinsAccessClient } from \"@itwin/itwins-client\";\nimport { createContext, useContext } from \"react\";\nimport type { ClientPrefix } from \"./GroupingApiConfigContext\";\n\nconst baseUrl: string = \"https://api.bentley.com/itwins\";\n\nconst prefixUrl = (baseUrl?: string, prefix?: string) => {\n if (prefix && baseUrl) {\n return baseUrl.replace(\"api.bentley.com\", `${prefix}-api.bentley.com`);\n }\n return baseUrl;\n};\n\nexport const createITwinsClient = (prefix?: ClientPrefix): ITwinsAccessClient => {\n const url = prefixUrl(baseUrl, prefix);\n return new ITwinsAccessClient(url);\n};\n\nexport const ITwinsClientContext = createContext<ITwinsAccessClient>(createITwinsClient());\n\nexport const useITwinsClient = () => {\n const context = useContext(ITwinsClientContext);\n if (!context) {\n throw new Error(\n \"useITwinsClient should be used within an ITwinsClientContext provider\"\n );\n }\n return context;\n};\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import {
|
|
1
|
+
import type { CommonWidgetProps, UiItemsProvider } from "@itwin/appui-react";
|
|
2
|
+
import { StagePanelLocation, StagePanelSection } from "@itwin/appui-react";
|
|
3
3
|
import type { GroupingMappingProps } from "./components/GroupingMapping";
|
|
4
4
|
export declare class GroupingMappingProvider implements UiItemsProvider {
|
|
5
5
|
private readonly _props;
|
|
6
6
|
readonly id = "GroupingMappingProvider";
|
|
7
7
|
constructor(_props?: GroupingMappingProps);
|
|
8
|
-
provideWidgets(_stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection
|
|
8
|
+
provideWidgets(_stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection): ReadonlyArray<CommonWidgetProps>;
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=GroupingMappingWidget.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { StagePanelLocation, StagePanelSection, StageUsage, } from "@itwin/appui-react";
|
|
2
2
|
import React from "react";
|
|
3
3
|
import GroupingMapping from "./components/GroupingMapping";
|
|
4
4
|
export class GroupingMappingProvider {
|
|
@@ -6,12 +6,11 @@ export class GroupingMappingProvider {
|
|
|
6
6
|
this._props = _props;
|
|
7
7
|
this.id = "GroupingMappingProvider";
|
|
8
8
|
}
|
|
9
|
-
provideWidgets(_stageId, stageUsage, location, section
|
|
9
|
+
provideWidgets(_stageId, stageUsage, location, section) {
|
|
10
10
|
const widgets = [];
|
|
11
|
-
if (
|
|
11
|
+
if (location === StagePanelLocation.Left &&
|
|
12
12
|
section === StagePanelSection.Start &&
|
|
13
|
-
stageUsage === StageUsage.General)
|
|
14
|
-
zonelocation === AbstractZoneLocation.CenterLeft) {
|
|
13
|
+
stageUsage === StageUsage.General) {
|
|
15
14
|
const GroupingMappingWidget = {
|
|
16
15
|
id: "GroupingMappingWidget",
|
|
17
16
|
label: "Grouping & Mapping",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupingMappingWidget.js","sourceRoot":"","sources":["../../../src/widget/GroupingMappingWidget.tsx"],"names":[],"mappings":"AAQA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"GroupingMappingWidget.js","sourceRoot":"","sources":["../../../src/widget/GroupingMappingWidget.tsx"],"names":[],"mappings":"AAQA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,GACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAE3D,MAAM,OAAO,uBAAuB;IAGlC,YAA6B,SAA+B,EAAE;QAAjC,WAAM,GAAN,MAAM,CAA2B;QAF9C,OAAE,GAAG,yBAAyB,CAAC;IAEmB,CAAC;IAE5D,cAAc,CACnB,QAAgB,EAChB,UAAkB,EAClB,QAA4B,EAC5B,OAA2B;QAE3B,MAAM,OAAO,GAAwB,EAAE,CAAC;QACxC,IAAI,QAAQ,KAAK,kBAAkB,CAAC,IAAI;YACpC,OAAO,KAAK,iBAAiB,CAAC,KAAK;YACnC,UAAU,KAAK,UAAU,CAAC,OAAO,EACnC;YACA,MAAM,qBAAqB,GAAsB;gBAC/C,EAAE,EAAE,uBAAuB;gBAC3B,KAAK,EAAE,oBAAoB;gBAC3B,gBAAgB,EAAE,GAAG,EAAE;oBACrB,OAAO,oBAAC,eAAe,OAAK,IAAI,CAAC,MAAM,GAAI,CAAC;gBAC9C,CAAC;aACF,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;SACrC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type {\n CommonWidgetProps,\n UiItemsProvider,\n} from \"@itwin/appui-react\";\nimport {\n StagePanelLocation,\n StagePanelSection,\n StageUsage,\n} from \"@itwin/appui-react\";\nimport React from \"react\";\nimport type { GroupingMappingProps } from \"./components/GroupingMapping\";\nimport GroupingMapping from \"./components/GroupingMapping\";\n\nexport class GroupingMappingProvider implements UiItemsProvider {\n public readonly id = \"GroupingMappingProvider\";\n\n constructor(private readonly _props: GroupingMappingProps = {}) { }\n\n public provideWidgets(\n _stageId: string,\n stageUsage: string,\n location: StagePanelLocation,\n section?: StagePanelSection,\n ): ReadonlyArray<CommonWidgetProps> {\n const widgets: CommonWidgetProps[] = [];\n if (location === StagePanelLocation.Left &&\n section === StagePanelSection.Start &&\n stageUsage === StageUsage.General\n ) {\n const GroupingMappingWidget: CommonWidgetProps = {\n id: \"GroupingMappingWidget\",\n label: \"Grouping & Mapping\",\n getWidgetContent: () => {\n return <GroupingMapping {...this._props} />;\n },\n };\n\n widgets.push(GroupingMappingWidget);\n }\n\n return widgets;\n }\n}\n"]}
|
|
@@ -20,8 +20,7 @@ import SortableHorizontalTile from "./SortableHorizontalTile";
|
|
|
20
20
|
import Split from "react-split";
|
|
21
21
|
import "./GroupPropertyAction.scss";
|
|
22
22
|
import { convertPresentationFields, convertToECProperties, fetchPresentationDescriptor, findProperties, } from "./GroupPropertyUtils";
|
|
23
|
-
import {
|
|
24
|
-
import { getHiliteIdsAndKeysetFromGroup } from "./groupsHelpers";
|
|
23
|
+
import { manufactureKeys } from "./viewerUtils";
|
|
25
24
|
export const quantityTypesSelectionOptions = [
|
|
26
25
|
{ value: QuantityType.Area, label: "Area" },
|
|
27
26
|
{ value: QuantityType.Distance, label: "Distance" },
|
|
@@ -35,7 +34,6 @@ export const quantityTypesSelectionOptions = [
|
|
|
35
34
|
export const GroupPropertyAction = ({ mappingId, group, groupProperty, onSaveSuccess, onClickCancel, }) => {
|
|
36
35
|
const { getAccessToken, iModelId, iModelConnection } = useGroupingMappingApiConfig();
|
|
37
36
|
const mappingClient = useMappingClient();
|
|
38
|
-
const { hilitedElementsQueryCache } = useGroupHilitedElementsContext();
|
|
39
37
|
const [propertyName, setPropertyName] = useState("");
|
|
40
38
|
const [dataType, setDataType] = useState(DataType.Undefined);
|
|
41
39
|
const [quantityType, setQuantityType] = useState(QuantityType.Undefined);
|
|
@@ -82,8 +80,8 @@ export const GroupPropertyAction = ({ mappingId, group, groupProperty, onSaveSuc
|
|
|
82
80
|
setIsLoading(true);
|
|
83
81
|
if (!iModelConnection)
|
|
84
82
|
return;
|
|
85
|
-
const result = await
|
|
86
|
-
const descriptor = await fetchPresentationDescriptor(iModelConnection, result
|
|
83
|
+
const result = await manufactureKeys(group.query, iModelConnection);
|
|
84
|
+
const descriptor = await fetchPresentationDescriptor(iModelConnection, result);
|
|
87
85
|
// Only allow primitives and structs
|
|
88
86
|
const propertyFields = (_a = descriptor === null || descriptor === void 0 ? void 0 : descriptor.fields.filter((field) => field.type.valueFormat === PropertyValueFormat.Primitive ||
|
|
89
87
|
field.type.valueFormat === PropertyValueFormat.Struct)) !== null && _a !== void 0 ? _a : [];
|
|
@@ -110,7 +108,7 @@ export const GroupPropertyAction = ({ mappingId, group, groupProperty, onSaveSuc
|
|
|
110
108
|
setIsLoading(false);
|
|
111
109
|
};
|
|
112
110
|
void generateProperties();
|
|
113
|
-
}, [getAccessToken, mappingClient, iModelConnection, iModelId, groupProperty,
|
|
111
|
+
}, [getAccessToken, mappingClient, iModelConnection, iModelId, groupProperty, mappingId, group]);
|
|
114
112
|
const onSave = async () => {
|
|
115
113
|
if (!validator.allValid()) {
|
|
116
114
|
showValidationMessage(true);
|