@itwin/reports-config-widget-react 0.4.0 → 0.5.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/CHANGELOG.json +15 -0
- package/CHANGELOG.md +11 -2
- package/coverage/clover.xml +111 -102
- package/coverage/coverage-final.json +12 -12
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +20 -20
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/src/ReportsConfigWidget.ts.html +2 -2
- package/coverage/lcov-report/src/index.html +1 -1
- package/coverage/lcov-report/src/test/index.html +15 -15
- package/coverage/lcov-report/src/test/test-utils.tsx.html +194 -11
- package/coverage/lcov-report/src/widget/ReportsConfigUiProvider.tsx.html +1 -1
- package/coverage/lcov-report/src/widget/components/ActionPanel.tsx.html +1 -1
- package/coverage/lcov-report/src/widget/components/AddMappingsModal.tsx.html +1 -1
- package/coverage/lcov-report/src/widget/components/BulkExtractor.ts.html +1 -1
- package/coverage/lcov-report/src/widget/components/Constants.ts.html +13 -7
- package/coverage/lcov-report/src/widget/components/DeleteModal.tsx.html +4 -4
- package/coverage/lcov-report/src/widget/components/ExtractionStates/FailedExtractionState.tsx.html +1 -1
- package/coverage/lcov-report/src/widget/components/ExtractionStates/QueuedExtractionState.tsx.html +1 -1
- package/coverage/lcov-report/src/widget/components/ExtractionStates/RunningExtractionState.tsx.html +1 -1
- package/coverage/lcov-report/src/widget/components/ExtractionStates/StartingExtractionState.tsx.html +1 -1
- package/coverage/lcov-report/src/widget/components/ExtractionStates/SucceededExtractionState.tsx.html +1 -1
- package/coverage/lcov-report/src/widget/components/ExtractionStates/index.html +1 -1
- package/coverage/lcov-report/src/widget/components/ExtractionStatus.tsx.html +1 -1
- package/coverage/lcov-report/src/widget/components/ExtractionToast.tsx.html +1 -1
- package/coverage/lcov-report/src/widget/components/HorizontalTile.tsx.html +3 -3
- package/coverage/lcov-report/src/widget/components/LocalizedTablePaginator.tsx.html +1 -1
- package/coverage/lcov-report/src/widget/components/ReportAction.tsx.html +1 -1
- package/coverage/lcov-report/src/widget/components/ReportHorizontalTile.tsx.html +15 -15
- package/coverage/lcov-report/src/widget/components/ReportMappingHorizontalTile.tsx.html +1 -1
- package/coverage/lcov-report/src/widget/components/ReportMappings.tsx.html +1 -1
- package/coverage/lcov-report/src/widget/components/Reports.tsx.html +34 -34
- package/coverage/lcov-report/src/widget/components/ReportsConfigContext.tsx.html +12 -9
- package/coverage/lcov-report/src/widget/components/ReportsContainer.tsx.html +1 -1
- package/coverage/lcov-report/src/widget/components/ReportsHeader.tsx.html +1 -1
- package/coverage/lcov-report/src/widget/components/ReportsRouter.tsx.html +1 -1
- package/coverage/lcov-report/src/widget/components/SearchBar.tsx.html +4 -4
- package/coverage/lcov-report/src/widget/components/SelectIModel.tsx.html +2 -2
- package/coverage/lcov-report/src/widget/components/index.html +18 -18
- package/coverage/lcov-report/src/widget/components/utils.tsx.html +8 -8
- package/coverage/lcov-report/src/widget/context/BulkExtractorContext.tsx.html +4 -4
- package/coverage/lcov-report/src/widget/context/ReportsConfigApiContext.tsx.html +4 -4
- package/coverage/lcov-report/src/widget/context/index.html +1 -1
- package/coverage/lcov-report/src/widget/hooks/index.html +1 -1
- package/coverage/lcov-report/src/widget/hooks/useValidator.ts.html +1 -1
- package/coverage/lcov-report/src/widget/index.html +1 -1
- package/coverage/lcov.info +207 -194
- package/lib/cjs/reports-config-widget-react.js +5 -1
- package/lib/cjs/reports-config-widget-react.js.map +1 -1
- package/lib/cjs/test/AddMappingModal.test.js +15 -64
- package/lib/cjs/test/AddMappingModal.test.js.map +1 -1
- package/lib/cjs/test/BulkExtractor.test.js +5 -1
- package/lib/cjs/test/BulkExtractor.test.js.map +1 -1
- package/lib/cjs/test/ReportMappingHorizontalTile.test.js +13 -62
- package/lib/cjs/test/ReportMappingHorizontalTile.test.js.map +1 -1
- package/lib/cjs/test/ReportMappings.test.js +19 -67
- package/lib/cjs/test/ReportMappings.test.js.map +1 -1
- package/lib/cjs/test/Reports.test.js +51 -47
- package/lib/cjs/test/Reports.test.js.map +1 -1
- package/lib/cjs/test/test-utils.d.ts +30 -0
- package/lib/cjs/test/test-utils.d.ts.map +1 -1
- package/lib/cjs/test/test-utils.js +64 -2
- package/lib/cjs/test/test-utils.js.map +1 -1
- package/lib/cjs/tsconfig.tsbuildinfo +1 -1
- package/lib/cjs/widget/ReportsConfigUiProvider.js +5 -1
- package/lib/cjs/widget/ReportsConfigUiProvider.js.map +1 -1
- package/lib/cjs/widget/components/ActionPanel.js +5 -1
- package/lib/cjs/widget/components/ActionPanel.js.map +1 -1
- package/lib/cjs/widget/components/AddMappingsModal.js +5 -1
- package/lib/cjs/widget/components/AddMappingsModal.js.map +1 -1
- package/lib/cjs/widget/components/Constants.d.ts +1 -0
- package/lib/cjs/widget/components/Constants.d.ts.map +1 -1
- package/lib/cjs/widget/components/Constants.js +2 -1
- package/lib/cjs/widget/components/Constants.js.map +1 -1
- package/lib/cjs/widget/components/DeleteModal.js +5 -1
- package/lib/cjs/widget/components/DeleteModal.js.map +1 -1
- package/lib/cjs/widget/components/ExtractionStatus.js +5 -1
- package/lib/cjs/widget/components/ExtractionStatus.js.map +1 -1
- package/lib/cjs/widget/components/LocalizedTablePaginator.js +5 -1
- package/lib/cjs/widget/components/LocalizedTablePaginator.js.map +1 -1
- package/lib/cjs/widget/components/ReportAction.js +5 -1
- package/lib/cjs/widget/components/ReportAction.js.map +1 -1
- package/lib/cjs/widget/components/ReportHorizontalTile.js +5 -1
- package/lib/cjs/widget/components/ReportHorizontalTile.js.map +1 -1
- package/lib/cjs/widget/components/ReportMappingHorizontalTile.js +5 -1
- package/lib/cjs/widget/components/ReportMappingHorizontalTile.js.map +1 -1
- package/lib/cjs/widget/components/ReportMappings.js +5 -1
- package/lib/cjs/widget/components/ReportMappings.js.map +1 -1
- package/lib/cjs/widget/components/Reports.js +5 -1
- package/lib/cjs/widget/components/Reports.js.map +1 -1
- package/lib/cjs/widget/components/ReportsConfigContext.d.ts.map +1 -1
- package/lib/cjs/widget/components/ReportsConfigContext.js +7 -2
- package/lib/cjs/widget/components/ReportsConfigContext.js.map +1 -1
- package/lib/cjs/widget/components/ReportsContainer.js +5 -1
- package/lib/cjs/widget/components/ReportsContainer.js.map +1 -1
- package/lib/cjs/widget/components/SearchBar.js +5 -1
- package/lib/cjs/widget/components/SearchBar.js.map +1 -1
- package/lib/cjs/widget/components/SelectIModel.js +6 -2
- package/lib/cjs/widget/components/SelectIModel.js.map +1 -1
- package/lib/cjs/widget/context/BulkExtractorContext.js +5 -1
- package/lib/cjs/widget/context/BulkExtractorContext.js.map +1 -1
- package/lib/cjs/widget/context/ReportsConfigApiContext.js +5 -1
- package/lib/cjs/widget/context/ReportsConfigApiContext.js.map +1 -1
- package/lib/esm/test/AddMappingModal.test.js +1 -54
- package/lib/esm/test/AddMappingModal.test.js.map +1 -1
- package/lib/esm/test/ReportMappingHorizontalTile.test.js +2 -55
- package/lib/esm/test/ReportMappingHorizontalTile.test.js.map +1 -1
- package/lib/esm/test/ReportMappings.test.js +2 -54
- package/lib/esm/test/ReportMappings.test.js.map +1 -1
- package/lib/esm/test/Reports.test.js +28 -47
- package/lib/esm/test/Reports.test.js.map +1 -1
- package/lib/esm/test/test-utils.d.ts +30 -0
- package/lib/esm/test/test-utils.d.ts.map +1 -1
- package/lib/esm/test/test-utils.js +58 -0
- package/lib/esm/test/test-utils.js.map +1 -1
- package/lib/esm/tsconfig.tsbuildinfo +1 -1
- package/lib/esm/widget/components/Constants.d.ts +1 -0
- package/lib/esm/widget/components/Constants.d.ts.map +1 -1
- package/lib/esm/widget/components/Constants.js +1 -0
- package/lib/esm/widget/components/Constants.js.map +1 -1
- package/lib/esm/widget/components/ReportsConfigContext.d.ts.map +1 -1
- package/lib/esm/widget/components/ReportsConfigContext.js +3 -2
- package/lib/esm/widget/components/ReportsConfigContext.js.map +1 -1
- package/lib/esm/widget/components/SelectIModel.js +1 -1
- package/lib/esm/widget/components/SelectIModel.js.map +1 -1
- package/package.json +30 -29
- package/src/test/AddMappingModal.test.tsx +7 -57
- package/src/test/ReportMappingHorizontalTile.test.tsx +6 -58
- package/src/test/ReportMappings.test.tsx +7 -58
- package/src/test/Reports.test.tsx +32 -110
- package/src/test/test-utils.tsx +62 -1
- package/src/widget/components/Constants.ts +2 -0
- package/src/widget/components/ReportsConfigContext.tsx +3 -2
- package/src/widget/components/SelectIModel.tsx +1 -1
- package/.rush/temp/operation/rebuild/all.log +0 -9
- package/.rush/temp/operation/rebuild/state.json +0 -3
- package/.rush/temp/package-deps_rebuild.json +0 -68
- package/.rush/temp/shrinkwrap-deps.json +0 -898
- package/reports-config-widget-react.build.error.log +0 -14
- package/reports-config-widget-react.build.log +0 -63
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Constants.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/Constants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,eAAO,MAAM,eAAe,OAAO,CAAC;AACpC,eAAO,MAAM,kBAAkB,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"Constants.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/Constants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,eAAO,MAAM,eAAe,OAAO,CAAC;AACpC,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,eAAO,MAAM,gBAAgB,oCAAmC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Constants.js","sourceRoot":"","sources":["../../../../src/widget/components/Constants.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAC1C,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,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*--------------------------------------------------------------------------------------------*/\nexport const STATUS_CHECK_INTERVAL = 5000;\nexport const ANIMATION_DELAY = \"5s\";\nexport const ANIMATION_DURATION = \"1s\";\n"]}
|
|
1
|
+
{"version":3,"file":"Constants.js","sourceRoot":"","sources":["../../../../src/widget/components/Constants.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAC1C,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEvC,MAAM,CAAC,MAAM,gBAAgB,GAAE,iCAAiC,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*--------------------------------------------------------------------------------------------*/\nexport const STATUS_CHECK_INTERVAL = 5000;\nexport const ANIMATION_DELAY = \"5s\";\nexport const ANIMATION_DURATION = \"1s\";\n\nexport const IMODELS_BASE_URL= \"https://api.bentley.com/imodels\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReportsConfigContext.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/ReportsConfigContext.tsx"],"names":[],"mappings":"AAMA,OAAO,
|
|
1
|
+
{"version":3,"file":"ReportsConfigContext.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/ReportsConfigContext.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAuB,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE9G,OAAO,KAAoD,MAAM,OAAO,CAAC;AAEzE,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKhD,MAAM,WAAW,yBAAyB;IACxC,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAKD,eAAO,MAAM,oBAAoB,UAAW,yBAAyB,gBA0DpE,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { IModelApp } from "@itwin/core-frontend";
|
|
6
|
-
import {
|
|
6
|
+
import { IModelsClient } from "@itwin/imodels-client-management";
|
|
7
7
|
import { ExtractionClient, MappingsClient, REPORTING_BASE_PATH, ReportsClient } from "@itwin/insights-client";
|
|
8
8
|
import { toaster } from "@itwin/itwinui-react";
|
|
9
9
|
import React, { useCallback, useEffect, useMemo, useState } from "react";
|
|
@@ -11,13 +11,14 @@ import { BulkExtractorContext } from "../context/BulkExtractorContext";
|
|
|
11
11
|
import { ReportsConfigApiContext } from "../context/ReportsConfigApiContext";
|
|
12
12
|
import { REPORTS_CONFIG_BASE_URL } from "../ReportsConfigUiProvider";
|
|
13
13
|
import { BulkExtractor } from "./BulkExtractor";
|
|
14
|
+
import { IMODELS_BASE_URL } from "./Constants";
|
|
14
15
|
import { FailedExtractionToast, SuccessfulExtractionToast } from "./ExtractionToast";
|
|
15
16
|
import { generateUrl } from "./utils";
|
|
16
17
|
const authorizationClientGetAccessToken = async () => (await IModelApp.authorizationClient?.getAccessToken()) ?? "";
|
|
17
18
|
export const ReportsConfigContext = (props) => {
|
|
18
19
|
const reportsBaseUrl = useCallback(() => generateUrl(REPORTING_BASE_PATH, props.baseUrl || REPORTS_CONFIG_BASE_URL), [props.baseUrl]);
|
|
19
20
|
const iModelClientOptions = useMemo(() => ({
|
|
20
|
-
api: { baseUrl: generateUrl(
|
|
21
|
+
api: { baseUrl: generateUrl(IMODELS_BASE_URL, props.baseUrl ?? REPORTS_CONFIG_BASE_URL) },
|
|
21
22
|
}), [props.baseUrl]);
|
|
22
23
|
const [extractionClient, setExtractionClient] = useState(props.extractionClient ?? new ExtractionClient(reportsBaseUrl()));
|
|
23
24
|
const [apiConfig, setApiConfig] = useState({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReportsConfigContext.js","sourceRoot":"","sources":["../../../../src/widget/components/ReportsConfigContext.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ReportsConfigContext.js","sourceRoot":"","sources":["../../../../src/widget/components/ReportsConfigContext.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 { IModelApp } from \"@itwin/core-frontend\";\nimport type { IModelsClientOptions } from \"@itwin/imodels-client-management\";\nimport { IModelsClient } from \"@itwin/imodels-client-management\";\nimport { ExtractionClient, MappingsClient, REPORTING_BASE_PATH, ReportsClient } from \"@itwin/insights-client\";\nimport { toaster } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { BulkExtractorContext } from \"../context/BulkExtractorContext\";\nimport type {\n GetAccessTokenFn,\n ReportsConfigApiProps,\n} from \"../context/ReportsConfigApiContext\";\nimport { ReportsConfigApiContext } from \"../context/ReportsConfigApiContext\";\nimport { REPORTS_CONFIG_BASE_URL } from \"../ReportsConfigUiProvider\";\nimport { BulkExtractor } from \"./BulkExtractor\";\nimport { IMODELS_BASE_URL } from \"./Constants\";\nimport { FailedExtractionToast, SuccessfulExtractionToast } from \"./ExtractionToast\";\nimport { generateUrl } from \"./utils\";\n\nexport interface ReportsConfigContextProps {\n getAccessToken?: GetAccessTokenFn;\n baseUrl?: string;\n iTwinId: string;\n bulkExtractor?: BulkExtractor;\n reportsClient?: ReportsClient;\n mappingsClient?: MappingsClient;\n extractionClient?: ExtractionClient;\n iModelsClient?: IModelsClient;\n children?: React.ReactNode;\n}\n\nconst authorizationClientGetAccessToken = async () =>\n (await IModelApp.authorizationClient?.getAccessToken()) ?? \"\";\n\nexport const ReportsConfigContext = (props: ReportsConfigContextProps) => {\n const reportsBaseUrl = useCallback(() => generateUrl(\n REPORTING_BASE_PATH,\n props.baseUrl || REPORTS_CONFIG_BASE_URL\n ), [props.baseUrl]);\n const iModelClientOptions: IModelsClientOptions = useMemo(() => ({\n api: { baseUrl: generateUrl(IMODELS_BASE_URL, props.baseUrl ?? REPORTS_CONFIG_BASE_URL) },\n }), [props.baseUrl]);\n const [extractionClient, setExtractionClient] = useState<ExtractionClient>(\n props.extractionClient ?? new ExtractionClient(reportsBaseUrl())\n );\n\n const [apiConfig, setApiConfig] = useState<ReportsConfigApiProps>({\n getAccessToken: props.getAccessToken ?? authorizationClientGetAccessToken,\n baseUrl: reportsBaseUrl(),\n iTwinId: props.iTwinId,\n reportsClient: props.reportsClient ?? new ReportsClient(reportsBaseUrl()),\n mappingsClient: props.mappingsClient ?? new MappingsClient(reportsBaseUrl()),\n iModelsClient: props.iModelsClient ?? new IModelsClient(iModelClientOptions),\n });\n\n useEffect(() => {\n if (!props.extractionClient) {\n setExtractionClient(props.extractionClient ?? new ExtractionClient(reportsBaseUrl()));\n }\n }, [props.extractionClient, reportsBaseUrl]);\n\n const successfulExtractionToast = (iModelName: string, odataFeedUrl: string) => {\n toaster.positive(<SuccessfulExtractionToast iModelName={iModelName} odataFeedUrl={odataFeedUrl} />);\n };\n\n const failedExtractionToast = (iModelName: string) => {\n toaster.negative(<FailedExtractionToast iModelName={iModelName} />);\n };\n\n const bulkExtractor = useMemo(\n () => ({ bulkExtractor: props.bulkExtractor ?? new BulkExtractor(apiConfig.reportsClient, extractionClient, apiConfig.getAccessToken, successfulExtractionToast, failedExtractionToast) }),\n [apiConfig.getAccessToken, apiConfig.reportsClient, extractionClient, props.bulkExtractor]\n );\n\n useEffect(() => {\n setApiConfig(() => ({\n getAccessToken: props.getAccessToken ?? authorizationClientGetAccessToken,\n baseUrl: props.baseUrl || REPORTS_CONFIG_BASE_URL,\n iTwinId: props.iTwinId,\n reportsClient: props.reportsClient ?? new ReportsClient(reportsBaseUrl()),\n mappingsClient: props.mappingsClient ?? new MappingsClient(reportsBaseUrl()),\n iModelsClient: props.iModelsClient ?? new IModelsClient(iModelClientOptions),\n }));\n }, [props.getAccessToken, props.baseUrl, props.iTwinId, props.reportsClient, props.mappingsClient, props.iModelsClient, reportsBaseUrl, iModelClientOptions]);\n\n return (\n <ReportsConfigApiContext.Provider value={apiConfig}>\n <BulkExtractorContext.Provider value={bulkExtractor}>\n {props.children}\n </BulkExtractorContext.Provider>\n </ReportsConfigApiContext.Provider>\n );\n};\n"]}
|
|
@@ -9,7 +9,7 @@ const fetchIModels = async (setiModels, iTwinId, iModelsClient, getAccessToken)
|
|
|
9
9
|
const accessToken = await getAccessToken();
|
|
10
10
|
const authorization = AccessTokenAdapter.toAuthorizationCallback(accessToken);
|
|
11
11
|
const getiModelListParams = {
|
|
12
|
-
urlParams: {
|
|
12
|
+
urlParams: { iTwinId },
|
|
13
13
|
authorization,
|
|
14
14
|
};
|
|
15
15
|
const iModels = await toArray(iModelsClient.iModels.getMinimalList(getiModelListParams));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectIModel.js","sourceRoot":"","sources":["../../../../src/widget/components/SelectIModel.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAMpE,OAAO,EACL,OAAO,GACR,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,qBAAqB,CAAC;AAE7B,MAAM,YAAY,GAAG,KAAK,EACxB,UAAiE,EACjE,OAAe,EACf,aAA4B,EAC5B,cAA0C,EAC1C,EAAE;IACF,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;IAC3C,MAAM,aAAa,GAAG,kBAAkB,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAC9E,MAAM,mBAAmB,GAAwB;QAC/C,SAAS,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"SelectIModel.js","sourceRoot":"","sources":["../../../../src/widget/components/SelectIModel.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAMpE,OAAO,EACL,OAAO,GACR,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,qBAAqB,CAAC;AAE7B,MAAM,YAAY,GAAG,KAAK,EACxB,UAAiE,EACjE,OAAe,EACf,aAA4B,EAC5B,cAA0C,EAC1C,EAAE;IACF,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;IAC3C,MAAM,aAAa,GAAG,kBAAkB,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAC9E,MAAM,mBAAmB,GAAwB;QAC/C,SAAS,EAAE,EAAE,OAAO,EAAE;QACtB,aAAa;KACd,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAC3B,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAC1D,CAAC;IACF,UAAU,CAAC,OAAO,CAAC,CAAC;AACtB,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,gBAAgB,EAChB,mBAAmB,GACC,EAAE,EAAE;IACxB,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,mBAAmB,EAAE,CAAC;IACzE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAkB,EAAE,CAAC,CAAC;IAE5D,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,YAAY,CAAC,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IACxE,CAAC,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAEzD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC9B,KAAK,EAAE,MAAM,CAAC,WAAW;YACzB,KAAK,EAAE,MAAM,CAAC,EAAE;SACjB,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACL,6BAAK,SAAS,EAAC,mBAAmB;QAChC,oBAAC,KAAK,IAAC,OAAO,EAAC,aAAa,IACzB,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CAClD,kCAAkC,CACnC,CACK;QACR,6BAAK,SAAS,EAAC,cAAc;YAC3B,oBAAC,QAAQ,IACP,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBAC7B,CAAC,EACD,UAAU,EAAE;oBACV,EAAE,EAAE,aAAa;iBAClB,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,GACzC,CACE,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 type { AccessToken } from \"@itwin/core-bentley\";\nimport { AccessTokenAdapter } from \"@itwin/imodels-access-frontend\";\nimport type {\n GetIModelListParams,\n IModelsClient,\n MinimalIModel,\n} from \"@itwin/imodels-client-management\";\nimport {\n toArray,\n} from \"@itwin/imodels-client-management\";\nimport { ComboBox, Label } from \"@itwin/itwinui-react\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { ReportsConfigWidget } from \"../../ReportsConfigWidget\";\nimport { useReportsConfigApi } from \"../context/ReportsConfigApiContext\";\nimport \"./SelectIModel.scss\";\n\nconst fetchIModels = async (\n setiModels: React.Dispatch<React.SetStateAction<MinimalIModel[]>>,\n iTwinId: string,\n iModelsClient: IModelsClient,\n getAccessToken: () => Promise<AccessToken>\n) => {\n const accessToken = await getAccessToken();\n const authorization = AccessTokenAdapter.toAuthorizationCallback(accessToken);\n const getiModelListParams: GetIModelListParams = {\n urlParams: { iTwinId },\n authorization,\n };\n const iModels = await toArray(\n iModelsClient.iModels.getMinimalList(getiModelListParams)\n );\n setiModels(iModels);\n};\n\ninterface SelectedIModelProps {\n selectedIModelId?: string;\n setSelectedIModelId: (iModelId: string) => void;\n}\n\nexport const SelectIModel = ({\n selectedIModelId,\n setSelectedIModelId,\n}: SelectedIModelProps) => {\n const { iTwinId, getAccessToken, iModelsClient } = useReportsConfigApi();\n const [iModels, setIModels] = useState<MinimalIModel[]>([]);\n\n useEffect(() => {\n void fetchIModels(setIModels, iTwinId, iModelsClient, getAccessToken);\n }, [getAccessToken, iModelsClient, iTwinId, setIModels]);\n\n const iModelOptions = useMemo(() => {\n return iModels.map((iModel) => ({\n label: iModel.displayName,\n value: iModel.id,\n }));\n }, [iModels]);\n\n return (\n <div className=\"rcw-select-imodel\">\n <Label htmlFor=\"combo-input\">\n {ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:SelectIModel\"\n )}\n </Label>\n <div className=\"rcw-combobox\">\n <ComboBox<string>\n options={iModelOptions}\n value={selectedIModelId}\n onChange={(value) => {\n setSelectedIModelId(value);\n }}\n inputProps={{\n id: \"combo-input\",\n }}\n style={{ flexGrow: 1, maxWidth: \"395px\" }}\n />\n </div>\n </div>\n );\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itwin/reports-config-widget-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "An iTwin.js 3D Viewer Widget that interfaces with the iTwin Reporting Platform.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Bentley",
|
|
@@ -22,6 +22,24 @@
|
|
|
22
22
|
"main": "lib/cjs/reports-config-widget-react.js",
|
|
23
23
|
"module": "lib/esm/reports-config-widget-react.js",
|
|
24
24
|
"typings": "lib/cjs/reports-config-widget-react",
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "npm run -s dual-build && npm run -s copy:assets",
|
|
27
|
+
"build:cjs": "tsc 1>&2 --outDir lib/cjs",
|
|
28
|
+
"build:esm": "tsc 1>&2 --module ES2020 --outDir lib/esm",
|
|
29
|
+
"clean": "rimraf lib",
|
|
30
|
+
"copy:assets": "npm run -s copy:public && npm run -s copy:cjs && npm run -s copy:esm",
|
|
31
|
+
"copy:cjs": "cpx \"./src/**/*.scss\" ./lib/cjs",
|
|
32
|
+
"copy:esm": "cpx \"./src/**/*.scss\" ./lib/esm",
|
|
33
|
+
"copy:public": "cpx \"./public/**/*\" ./lib/public",
|
|
34
|
+
"cover": "npm test -- --coverage",
|
|
35
|
+
"dual-build": "npm run -s build:cjs && npm run -s build:esm",
|
|
36
|
+
"lint": "eslint -f visualstudio \"./src/**/*.{ts,tsx}\" 1>&2",
|
|
37
|
+
"lint:fix": "npm run lint -- --fix",
|
|
38
|
+
"pseudolocalize": "betools pseudolocalize --englishDir ./public/locales/en --out ./public/locales/en-PSEUDO",
|
|
39
|
+
"rebuild": "npm run clean && npm run build",
|
|
40
|
+
"test": "jest",
|
|
41
|
+
"test:watch": "jest --watch "
|
|
42
|
+
},
|
|
25
43
|
"eslintConfig": {
|
|
26
44
|
"plugins": [
|
|
27
45
|
"@itwin"
|
|
@@ -37,8 +55,9 @@
|
|
|
37
55
|
}
|
|
38
56
|
},
|
|
39
57
|
"dependencies": {
|
|
40
|
-
"@itwin/imodels-access-
|
|
41
|
-
"@itwin/imodels-
|
|
58
|
+
"@itwin/imodels-access-common": "^4.1.4",
|
|
59
|
+
"@itwin/imodels-access-frontend": "^4.1.4",
|
|
60
|
+
"@itwin/imodels-client-management": "^4.2.3",
|
|
42
61
|
"@itwin/insights-client": "^0.4.0",
|
|
43
62
|
"@itwin/itwinui-icons-color-react": "^2.1.0",
|
|
44
63
|
"@itwin/itwinui-icons-react": "^2.4.0",
|
|
@@ -61,7 +80,9 @@
|
|
|
61
80
|
"@itwin/core-orbitgt": "^4.0.0",
|
|
62
81
|
"@itwin/core-quantity": "^4.0.0",
|
|
63
82
|
"@itwin/core-react": "^4.0.0",
|
|
83
|
+
"@itwin/core-telemetry": "^4.0.0",
|
|
64
84
|
"@itwin/eslint-plugin": "^3.7.8",
|
|
85
|
+
"@itwin/ecschema-metadata": "^4.0.0",
|
|
65
86
|
"@itwin/imodel-components-react": "^4.0.0",
|
|
66
87
|
"@itwin/presentation-common": "^4.0.0",
|
|
67
88
|
"@itwin/presentation-frontend": "^4.0.0",
|
|
@@ -84,20 +105,19 @@
|
|
|
84
105
|
"cpx2": "^3.0.0",
|
|
85
106
|
"eslint": "^7.32.0",
|
|
86
107
|
"eslint-plugin-node": "^11.1.0",
|
|
87
|
-
"eslint-plugin-react": "^7.
|
|
108
|
+
"eslint-plugin-react": "^7.33.2",
|
|
88
109
|
"eslint-plugin-react-hooks": "^4.2.0",
|
|
89
110
|
"jest": "^27.5.1",
|
|
90
111
|
"jest-cli": "^27.5.1",
|
|
91
112
|
"jest-transform-stub": "^2.0.0",
|
|
92
|
-
"msw": "^0.39.2",
|
|
93
113
|
"react": "^17.0.2",
|
|
94
114
|
"react-dom": "^17.0.2",
|
|
95
|
-
"react-redux": "^7.2.
|
|
96
|
-
"redux": "^4.0
|
|
115
|
+
"react-redux": "^7.2.2",
|
|
116
|
+
"redux": "^4.1.0",
|
|
97
117
|
"rimraf": "^3.0.2",
|
|
98
118
|
"ts-jest": "^27.1.3",
|
|
99
119
|
"typemoq": "^2.1.0",
|
|
100
|
-
"typescript": "~4.
|
|
120
|
+
"typescript": "~4.6.0",
|
|
101
121
|
"xmlhttprequest": "^1.8.0"
|
|
102
122
|
},
|
|
103
123
|
"peerDependencies": {
|
|
@@ -108,24 +128,5 @@
|
|
|
108
128
|
"react": "^17.0.2",
|
|
109
129
|
"react-dom": "^17.0.2",
|
|
110
130
|
"react-redux": "^7.2.0"
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
"build": "npm run -s dual-build && npm run -s copy:assets",
|
|
114
|
-
"build:cjs": "tsc 1>&2 --outDir lib/cjs",
|
|
115
|
-
"build:esm": "tsc 1>&2 --module ES2020 --outDir lib/esm",
|
|
116
|
-
"clean": "rimraf lib",
|
|
117
|
-
"copy:assets": "npm run -s copy:public && npm run -s copy:cjs && npm run -s copy:esm",
|
|
118
|
-
"copy:cjs": "cpx \"./src/**/*.scss\" ./lib/cjs",
|
|
119
|
-
"copy:esm": "cpx \"./src/**/*.scss\" ./lib/esm",
|
|
120
|
-
"copy:public": "cpx \"./public/**/*\" ./lib/public",
|
|
121
|
-
"cover": "npm test -- --coverage",
|
|
122
|
-
"dual-build": "npm run -s build:cjs && npm run -s build:esm",
|
|
123
|
-
"lint": "eslint -f visualstudio \"./src/**/*.{ts,tsx}\" 1>&2",
|
|
124
|
-
"lint:fix": "npm run lint -- --fix",
|
|
125
|
-
"pseudolocalize": "betools pseudolocalize --englishDir ./public/locales/en --out ./public/locales/en-PSEUDO",
|
|
126
|
-
"rebuild": "npm run clean && npm run build",
|
|
127
|
-
"test": "jest",
|
|
128
|
-
"test:watch": "jest --watch "
|
|
129
|
-
},
|
|
130
|
-
"readme": "# @itwin/reports-config-widget-react\r\n\r\nCopyright © Bentley Systems, Incorporated. All rights reserved.\r\nThe Reports Config widget is a UI component for iTwin Viewer applications that simplifies how users (and developers) interface with the [Reporting Platform APIs](https://developer.bentley.com/apis/insights/overview/). This widget is one piece of the Reporting story that focuses on the configuration of Reports and the extraction thereof. It complements the [Grouping & Mapping Widget](https://www.npmjs.com/package/@itwin/grouping-mapping-widget).\r\nThe reports-config-widget-react package provides a UiProvider class - `ReportsConfigProvider` - which can be passed into the `uiProviders` prop of the iTwin Viewer's `<Viewer />` component.\r\n\r\n## Getting Started\r\n\r\nThis is not a standalone UI and requires a parent iTwin Viewer application to work as intended.\r\nA guide on how to create a basic iTwin Viewer application can be found here: <https://www.itwinjs.org/learning/tutorials/develop-web-viewer/>.\r\nThis package provides a viewer 'widget'. Documentation on how to add a widget to your application can be found here: <https://developer.bentley.com/tutorials/itwin-viewer-hello-world/#2-your-first-ui-widget>.\r\n\r\n## Permissions and Scopes\r\n\r\nThe SPA client used by your iTwin viewer must have these additional scopes:\r\n\r\n- `insights:read`\r\n- `insights:modify`\r\n- `projects:read`\r\n\r\nIn addition, users must have the `imodels_read` and `imodels_write` [permissions](https://developer.bentley.com/apis/insights/operations/create-mapping/#authorization) assigned at either the Project or iModel level. Further instruction on how to create roles and assign permissions can be found in the [iTwin Platform Projects API documentation](https://developer.bentley.com/apis/projects/tutorials/).\r\n\r\n## Sample usage\r\n\r\n### Call ReportsConfigWidget.initialize() **_before_** making use of the provider\r\n\r\n```ts\r\nimport { ReportsConfigProvider, ReportsConfigWidget } from '@itwin/reports-config-widget-react'\r\n\r\n...\r\n\r\nawait ReportsConfigWidget.initialize(IModelApp.localization);\r\n\r\n<Viewer\r\n ...\r\n uiProviders={[new ReportsConfigProvider()]}\r\n/>\r\n```\r\n"
|
|
131
|
-
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
@@ -7,6 +7,11 @@ import faker from "@faker-js/faker";
|
|
|
7
7
|
import "@testing-library/jest-dom";
|
|
8
8
|
import { ReportsConfigWidget } from "../ReportsConfigWidget";
|
|
9
9
|
import {
|
|
10
|
+
mockIModelId1,
|
|
11
|
+
mockIModelId2,
|
|
12
|
+
mockIModelsResponse,
|
|
13
|
+
mockITwinId,
|
|
14
|
+
mockReportId,
|
|
10
15
|
render,
|
|
11
16
|
screen,
|
|
12
17
|
waitFor,
|
|
@@ -20,65 +25,10 @@ import type {
|
|
|
20
25
|
ReportsClient,
|
|
21
26
|
} from "@itwin/insights-client";
|
|
22
27
|
import type { ReportMappingAndMapping } from "../widget/components/ReportMappings";
|
|
23
|
-
import type { GetSingleIModelParams,
|
|
24
|
-
import { IModelState } from "@itwin/imodels-client-management";
|
|
28
|
+
import type { GetSingleIModelParams, IModelsClient } from "@itwin/imodels-client-management";
|
|
25
29
|
import { AddMappingsModal } from "../widget/components/AddMappingsModal";
|
|
26
30
|
import { EmptyLocalization } from "@itwin/core-common";
|
|
27
|
-
|
|
28
|
-
const mockITwinId = faker.datatype.uuid();
|
|
29
|
-
const mockIModelId1 = faker.datatype.uuid();
|
|
30
|
-
const mockIModelId2 = faker.datatype.uuid();
|
|
31
|
-
|
|
32
|
-
const mockReportId = faker.datatype.uuid();
|
|
33
|
-
|
|
34
|
-
const mockIModelsResponse = [
|
|
35
|
-
{
|
|
36
|
-
iModel: {
|
|
37
|
-
id: mockIModelId1,
|
|
38
|
-
displayName: "rAnDoMdIsPlAynAmE1",
|
|
39
|
-
name: "rAnDomName1",
|
|
40
|
-
description: "rAnDoMDeScRiPtIoN1",
|
|
41
|
-
createdDateTime: "2021-10-04T22:13:50.397Z",
|
|
42
|
-
state: IModelState.Initialized,
|
|
43
|
-
projectId: mockITwinId,
|
|
44
|
-
extent: null,
|
|
45
|
-
_links: {
|
|
46
|
-
creator: {
|
|
47
|
-
href: "",
|
|
48
|
-
},
|
|
49
|
-
namedVersions: {
|
|
50
|
-
href: "",
|
|
51
|
-
},
|
|
52
|
-
changesets: {
|
|
53
|
-
href: "",
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
},
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
iModel: {
|
|
60
|
-
id: mockIModelId2,
|
|
61
|
-
displayName: "rAnDoMdIsPlAynAmE2",
|
|
62
|
-
name: "rAnDomName2",
|
|
63
|
-
description: "rAnDoMDeScRiPtIoN2",
|
|
64
|
-
createdDateTime: "2021-10-04T22:13:50.397Z",
|
|
65
|
-
state: IModelState.Initialized,
|
|
66
|
-
projectId: mockITwinId,
|
|
67
|
-
extent: null,
|
|
68
|
-
_links: {
|
|
69
|
-
creator: {
|
|
70
|
-
href: "",
|
|
71
|
-
},
|
|
72
|
-
namedVersions: {
|
|
73
|
-
href: "",
|
|
74
|
-
},
|
|
75
|
-
changesets: {
|
|
76
|
-
href: "",
|
|
77
|
-
},
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
];
|
|
31
|
+
import type { IModelOperations, OperationOptions } from "@itwin/imodels-client-management/lib/operations";
|
|
82
32
|
|
|
83
33
|
const mockProjectIModels = {
|
|
84
34
|
iModels: mockIModelsResponse.map((iModel) => ({
|
|
@@ -8,6 +8,9 @@ import "@testing-library/jest-dom";
|
|
|
8
8
|
import { ReportsConfigWidget } from "../ReportsConfigWidget";
|
|
9
9
|
import {
|
|
10
10
|
fireEvent,
|
|
11
|
+
mockIModelId1,
|
|
12
|
+
mockIModelsResponse,
|
|
13
|
+
mockReportId,
|
|
11
14
|
render,
|
|
12
15
|
screen,
|
|
13
16
|
waitFor,
|
|
@@ -19,69 +22,13 @@ import type {
|
|
|
19
22
|
ReportMappingCollection,
|
|
20
23
|
} from "@itwin/insights-client";
|
|
21
24
|
import type { ReportMappingAndMapping } from "../widget/components/ReportMappings";
|
|
22
|
-
import type { GetSingleIModelParams
|
|
23
|
-
import { IModelState } from "@itwin/imodels-client-management";
|
|
25
|
+
import type { GetSingleIModelParams } from "@itwin/imodels-client-management";
|
|
24
26
|
import { BeEvent } from "@itwin/core-bentley";
|
|
25
27
|
import { ExtractionStates } from "../widget/components/ExtractionStatus";
|
|
26
28
|
import { ReportMappingHorizontalTile } from "../widget/components/ReportMappingHorizontalTile";
|
|
27
29
|
import { EmptyLocalization } from "@itwin/core-common";
|
|
28
30
|
import type { BulkExtractor } from "../widget/components/BulkExtractor";
|
|
29
|
-
|
|
30
|
-
const mockITwinId = faker.datatype.uuid();
|
|
31
|
-
// Lets work with two iModels for now.
|
|
32
|
-
const mockIModelId1 = faker.datatype.uuid();
|
|
33
|
-
const mockIModelId2 = faker.datatype.uuid();
|
|
34
|
-
|
|
35
|
-
const mockReportId = faker.datatype.uuid();
|
|
36
|
-
|
|
37
|
-
const mockIModelsResponse = [
|
|
38
|
-
{
|
|
39
|
-
iModel: {
|
|
40
|
-
id: mockIModelId1,
|
|
41
|
-
displayName: "rAnDoMdIsPlAynAmE1",
|
|
42
|
-
name: "rAnDomName1",
|
|
43
|
-
description: "rAnDoMDeScRiPtIoN1",
|
|
44
|
-
createdDateTime: "2021-10-04T22:13:50.397Z",
|
|
45
|
-
state: IModelState.Initialized,
|
|
46
|
-
projectId: mockITwinId,
|
|
47
|
-
extent: null,
|
|
48
|
-
_links: {
|
|
49
|
-
creator: {
|
|
50
|
-
href: "",
|
|
51
|
-
},
|
|
52
|
-
namedVersions: {
|
|
53
|
-
href: "",
|
|
54
|
-
},
|
|
55
|
-
changesets: {
|
|
56
|
-
href: "",
|
|
57
|
-
},
|
|
58
|
-
},
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
iModel: {
|
|
63
|
-
id: mockIModelId2,
|
|
64
|
-
displayName: "rAnDoMdIsPlAynAmE2",
|
|
65
|
-
name: "rAnDomName2",
|
|
66
|
-
description: "rAnDoMDeScRiPtIoN2",
|
|
67
|
-
createdDateTime: "2021-10-04T22:13:50.397Z",
|
|
68
|
-
state: IModelState.Initialized,
|
|
69
|
-
projectId: mockITwinId,
|
|
70
|
-
extent: null,
|
|
71
|
-
_links: {
|
|
72
|
-
creator: {
|
|
73
|
-
href: "",
|
|
74
|
-
},
|
|
75
|
-
namedVersions: {
|
|
76
|
-
href: "",
|
|
77
|
-
},
|
|
78
|
-
changesets: {
|
|
79
|
-
href: "",
|
|
80
|
-
},
|
|
81
|
-
},
|
|
82
|
-
},
|
|
83
|
-
},
|
|
84
|
-
];
|
|
31
|
+
import type { IModelOperations, OperationOptions } from "@itwin/imodels-client-management/lib/operations";
|
|
85
32
|
|
|
86
33
|
const mockProjectIModels = {
|
|
87
34
|
iModels: mockIModelsResponse.map((iModel) => ({
|
|
@@ -191,6 +138,7 @@ const mockBulkExtractor = moq.Mock.ofType<BulkExtractor>();
|
|
|
191
138
|
const mockIModelsClient = moq.Mock.ofType<IModelOperations<OperationOptions>>();
|
|
192
139
|
|
|
193
140
|
jest.mock("../widget/components/Constants.ts", () => ({
|
|
141
|
+
...jest.requireActual("../widget/components/Constants.ts"),
|
|
194
142
|
STATUS_CHECK_INTERVAL: 10,
|
|
195
143
|
}));
|
|
196
144
|
|
|
@@ -7,7 +7,10 @@ import "@testing-library/jest-dom";
|
|
|
7
7
|
import { ReportsConfigWidget } from "../ReportsConfigWidget";
|
|
8
8
|
import {
|
|
9
9
|
act,
|
|
10
|
-
|
|
10
|
+
mockIModelId1,
|
|
11
|
+
mockIModelId2,
|
|
12
|
+
mockIModelsResponse,
|
|
13
|
+
mockReportId,
|
|
11
14
|
render,
|
|
12
15
|
screen,
|
|
13
16
|
waitFor,
|
|
@@ -26,68 +29,13 @@ import {
|
|
|
26
29
|
ReportsClient,
|
|
27
30
|
} from "@itwin/insights-client";
|
|
28
31
|
import { ReportMappings } from "../widget/components/ReportMappings";
|
|
29
|
-
import type { GetSingleIModelParams,
|
|
30
|
-
import { IModelState } from "@itwin/imodels-client-management";
|
|
32
|
+
import type { GetSingleIModelParams, IModelsClient } from "@itwin/imodels-client-management";
|
|
31
33
|
import { BulkExtractor } from "../widget/components/BulkExtractor";
|
|
32
34
|
import type { ReportMappingHorizontalTileProps } from "../widget/components/ReportMappingHorizontalTile";
|
|
33
35
|
import { Text } from "@itwin/itwinui-react";
|
|
34
36
|
import { EmptyLocalization } from "@itwin/core-common";
|
|
35
37
|
import type { AddMappingsModalProps } from "../widget/components/AddMappingsModal";
|
|
36
|
-
|
|
37
|
-
// Lets work with two iModels for now.
|
|
38
|
-
const mockIModelId1 = "mockIModelId1";
|
|
39
|
-
const mockIModelId2 = "mockIModelId2";
|
|
40
|
-
|
|
41
|
-
const mockReportId = "mockReportId";
|
|
42
|
-
|
|
43
|
-
const mockIModelsResponse = [
|
|
44
|
-
{
|
|
45
|
-
iModel: {
|
|
46
|
-
id: mockIModelId1,
|
|
47
|
-
displayName: "rAnDoMdIsPlAynAmE1",
|
|
48
|
-
name: "rAnDomName1",
|
|
49
|
-
description: "rAnDoMDeScRiPtIoN1",
|
|
50
|
-
createdDateTime: "2021-10-04T22:13:50.397Z",
|
|
51
|
-
state: IModelState.Initialized,
|
|
52
|
-
projectId: mockITwinId,
|
|
53
|
-
extent: null,
|
|
54
|
-
_links: {
|
|
55
|
-
creator: {
|
|
56
|
-
href: "",
|
|
57
|
-
},
|
|
58
|
-
namedVersions: {
|
|
59
|
-
href: "",
|
|
60
|
-
},
|
|
61
|
-
changesets: {
|
|
62
|
-
href: "",
|
|
63
|
-
},
|
|
64
|
-
},
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
iModel: {
|
|
69
|
-
id: mockIModelId2,
|
|
70
|
-
displayName: "rAnDoMdIsPlAynAmE2",
|
|
71
|
-
name: "rAnDomName2",
|
|
72
|
-
description: "rAnDoMDeScRiPtIoN2",
|
|
73
|
-
createdDateTime: "2021-10-04T22:13:50.397Z",
|
|
74
|
-
state: IModelState.Initialized,
|
|
75
|
-
projectId: mockITwinId,
|
|
76
|
-
extent: null,
|
|
77
|
-
_links: {
|
|
78
|
-
creator: {
|
|
79
|
-
href: "",
|
|
80
|
-
},
|
|
81
|
-
namedVersions: {
|
|
82
|
-
href: "",
|
|
83
|
-
},
|
|
84
|
-
changesets: {
|
|
85
|
-
href: "",
|
|
86
|
-
},
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
},
|
|
90
|
-
];
|
|
38
|
+
import type { IModelOperations, OperationOptions } from "@itwin/imodels-client-management/lib/operations";
|
|
91
39
|
|
|
92
40
|
const mockProjectIModels = {
|
|
93
41
|
iModels: mockIModelsResponse.map((iModel) => ({
|
|
@@ -188,6 +136,7 @@ const mockMappingsFactory = (
|
|
|
188
136
|
};
|
|
189
137
|
|
|
190
138
|
jest.mock("../widget/components/Constants.ts", () => ({
|
|
139
|
+
...jest.requireActual("../widget/components/Constants.ts"),
|
|
191
140
|
STATUS_CHECK_INTERVAL: 10,
|
|
192
141
|
}));
|
|
193
142
|
|