@itwin/reports-config-widget-react 0.1.0 → 0.2.1
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/.rush/temp/package-deps_rebuild.json +38 -34
- package/.rush/temp/shrinkwrap-deps.json +14 -6
- package/CHANGELOG.json +30 -0
- package/CHANGELOG.md +17 -1
- package/coverage/clover.xml +605 -610
- package/coverage/coverage-final.json +28 -27
- package/coverage/lcov-report/index.html +31 -31
- package/coverage/lcov-report/src/ReportsConfigWidget.ts.html +10 -10
- package/coverage/lcov-report/src/index.html +1 -1
- package/coverage/lcov-report/src/test/index.html +1 -1
- package/coverage/lcov-report/src/test/test-utils.tsx.html +22 -22
- package/coverage/lcov-report/src/widget/ReportsConfigUiProvider.tsx.html +7 -7
- package/coverage/lcov-report/src/widget/components/ActionPanel.tsx.html +29 -41
- package/coverage/lcov-report/src/widget/components/AddMappingsModal.tsx.html +31 -37
- package/coverage/lcov-report/src/widget/components/BulkExtractor.ts.html +270 -162
- package/coverage/lcov-report/src/widget/components/Constants.ts.html +4 -4
- package/coverage/lcov-report/src/widget/components/DeleteModal.tsx.html +21 -21
- package/coverage/lcov-report/src/widget/components/ExtractionStates/FailedExtractionState.tsx.html +6 -6
- package/coverage/lcov-report/src/widget/components/ExtractionStates/QueuedExtractionState.tsx.html +14 -14
- package/coverage/lcov-report/src/widget/components/ExtractionStates/RunningExtractionState.tsx.html +15 -15
- package/coverage/lcov-report/src/widget/components/ExtractionStates/StartingExtractionState.tsx.html +14 -14
- package/coverage/lcov-report/src/widget/components/ExtractionStates/SucceededExtractionState.tsx.html +22 -19
- package/coverage/lcov-report/src/widget/components/ExtractionStates/index.html +43 -43
- package/coverage/lcov-report/src/widget/components/ExtractionStatus.tsx.html +57 -57
- package/coverage/lcov-report/src/widget/components/ExtractionToast.tsx.html +208 -0
- package/coverage/lcov-report/src/widget/components/HorizontalTile.tsx.html +8 -8
- package/coverage/lcov-report/src/widget/components/LocalizedTablePaginator.tsx.html +8 -8
- package/coverage/lcov-report/src/widget/components/ReportAction.tsx.html +14 -20
- package/coverage/lcov-report/src/widget/components/ReportHorizontalTile.tsx.html +30 -33
- package/coverage/lcov-report/src/widget/components/ReportMappingHorizontalTile.tsx.html +469 -0
- package/coverage/lcov-report/src/widget/components/ReportMappings.tsx.html +183 -231
- package/coverage/lcov-report/src/widget/components/Reports.tsx.html +73 -43
- package/coverage/lcov-report/src/widget/components/ReportsContainer.tsx.html +10 -10
- package/coverage/lcov-report/src/widget/components/SearchBar.tsx.html +10 -10
- package/coverage/lcov-report/src/widget/components/SelectIModel.tsx.html +31 -31
- package/coverage/lcov-report/src/widget/components/index.html +100 -85
- package/coverage/lcov-report/src/widget/components/utils.tsx.html +32 -32
- package/coverage/lcov-report/src/widget/context/ReportsApiConfigContext.tsx.html +8 -8
- 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 +7 -7
- package/coverage/lcov-report/src/widget/index.html +1 -1
- package/coverage/lcov.info +990 -1003
- package/jest.config.js +6 -0
- package/lib/cjs/test/AddMappingModal.test.d.ts +2 -0
- package/lib/cjs/test/AddMappingModal.test.d.ts.map +1 -0
- package/lib/cjs/test/AddMappingModal.test.js +277 -0
- package/lib/cjs/test/AddMappingModal.test.js.map +1 -0
- package/lib/cjs/test/BulkExtractor.test.d.ts +2 -0
- package/lib/cjs/test/BulkExtractor.test.d.ts.map +1 -0
- package/lib/cjs/test/BulkExtractor.test.js +182 -0
- package/lib/cjs/test/BulkExtractor.test.js.map +1 -0
- package/lib/cjs/test/DeleteModal.test.d.ts +2 -0
- package/lib/cjs/test/DeleteModal.test.d.ts.map +1 -0
- package/lib/cjs/test/DeleteModal.test.js +93 -0
- package/lib/cjs/test/DeleteModal.test.js.map +1 -0
- package/lib/cjs/test/ReportAction.test.js +2 -3
- package/lib/cjs/test/ReportAction.test.js.map +1 -1
- package/lib/cjs/test/ReportMappingHorizontalTile.test.d.ts +2 -0
- package/lib/cjs/test/ReportMappingHorizontalTile.test.d.ts.map +1 -0
- package/lib/cjs/test/ReportMappingHorizontalTile.test.js +340 -0
- package/lib/cjs/test/ReportMappingHorizontalTile.test.js.map +1 -0
- package/lib/cjs/test/ReportMappings.test.js +115 -267
- package/lib/cjs/test/ReportMappings.test.js.map +1 -1
- package/lib/cjs/test/Reports.test.js +1 -1
- package/lib/cjs/test/Reports.test.js.map +1 -1
- package/lib/cjs/tsconfig.tsbuildinfo +1 -1
- package/lib/cjs/widget/components/ActionPanel.d.ts.map +1 -1
- package/lib/cjs/widget/components/ActionPanel.js +4 -5
- package/lib/cjs/widget/components/ActionPanel.js.map +1 -1
- package/lib/cjs/widget/components/AddMappingsModal.d.ts +2 -2
- package/lib/cjs/widget/components/AddMappingsModal.d.ts.map +1 -1
- package/lib/cjs/widget/components/AddMappingsModal.js +5 -4
- package/lib/cjs/widget/components/AddMappingsModal.js.map +1 -1
- package/lib/cjs/widget/components/AddMappingsModal.scss +4 -3
- package/lib/cjs/widget/components/BulkExtractor.d.ts +18 -9
- package/lib/cjs/widget/components/BulkExtractor.d.ts.map +1 -1
- package/lib/cjs/widget/components/BulkExtractor.js +86 -57
- package/lib/cjs/widget/components/BulkExtractor.js.map +1 -1
- package/lib/cjs/widget/components/DeleteModal.js +1 -1
- package/lib/cjs/widget/components/DeleteModal.js.map +1 -1
- package/lib/cjs/widget/components/DeleteModal.scss +4 -3
- package/lib/cjs/widget/components/ExtractionStates/RunningExtractionState.js +1 -1
- package/lib/cjs/widget/components/ExtractionStates/RunningExtractionState.js.map +1 -1
- package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.d.ts.map +1 -1
- package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.js +1 -1
- package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.js.map +1 -1
- package/lib/cjs/widget/components/ExtractionStatus.scss +15 -1
- package/lib/cjs/widget/components/ExtractionToast.d.ts +11 -0
- package/lib/cjs/widget/components/ExtractionToast.d.ts.map +1 -0
- package/lib/cjs/widget/components/ExtractionToast.js +33 -0
- package/lib/cjs/widget/components/ExtractionToast.js.map +1 -0
- package/lib/cjs/widget/components/HorizontalTile.scss +1 -1
- package/lib/cjs/widget/components/ReportAction.d.ts.map +1 -1
- package/lib/cjs/widget/components/ReportAction.js +3 -3
- package/lib/cjs/widget/components/ReportAction.js.map +1 -1
- package/lib/cjs/widget/components/ReportAction.scss +2 -2
- package/lib/cjs/widget/components/ReportHorizontalTile.d.ts.map +1 -1
- package/lib/cjs/widget/components/ReportHorizontalTile.js +1 -2
- package/lib/cjs/widget/components/ReportHorizontalTile.js.map +1 -1
- package/lib/cjs/widget/components/ReportMappingHorizontalTile.d.ts +13 -0
- package/lib/cjs/widget/components/ReportMappingHorizontalTile.d.ts.map +1 -0
- package/lib/cjs/widget/components/ReportMappingHorizontalTile.js +82 -0
- package/lib/cjs/widget/components/ReportMappingHorizontalTile.js.map +1 -0
- package/lib/cjs/widget/components/ReportMappings.d.ts +3 -1
- package/lib/cjs/widget/components/ReportMappings.d.ts.map +1 -1
- package/lib/cjs/widget/components/ReportMappings.js +39 -40
- package/lib/cjs/widget/components/ReportMappings.js.map +1 -1
- package/lib/cjs/widget/components/ReportMappings.scss +7 -7
- package/lib/cjs/widget/components/Reports.d.ts.map +1 -1
- package/lib/cjs/widget/components/Reports.js +13 -6
- package/lib/cjs/widget/components/Reports.js.map +1 -1
- package/lib/cjs/widget/components/Reports.scss +1 -1
- package/lib/cjs/widget/components/ReportsContainer.js +1 -1
- package/lib/cjs/widget/components/ReportsContainer.js.map +1 -1
- package/lib/cjs/widget/components/ReportsContainer.scss +2 -2
- package/lib/cjs/widget/components/SelectIModel.js +2 -2
- package/lib/cjs/widget/components/SelectIModel.js.map +1 -1
- package/lib/cjs/widget/components/SelectIModel.scss +4 -3
- package/lib/cjs/widget/components/utils.js +1 -1
- package/lib/cjs/widget/components/utils.js.map +1 -1
- package/lib/cjs/widget/components/utils.scss +2 -2
- package/lib/esm/test/AddMappingModal.test.d.ts +2 -0
- package/lib/esm/test/AddMappingModal.test.d.ts.map +1 -0
- package/lib/esm/test/AddMappingModal.test.js +253 -0
- package/lib/esm/test/AddMappingModal.test.js.map +1 -0
- package/lib/esm/test/BulkExtractor.test.d.ts +2 -0
- package/lib/esm/test/BulkExtractor.test.d.ts.map +1 -0
- package/lib/esm/test/BulkExtractor.test.js +158 -0
- package/lib/esm/test/BulkExtractor.test.js.map +1 -0
- package/lib/esm/test/DeleteModal.test.d.ts +2 -0
- package/lib/esm/test/DeleteModal.test.d.ts.map +1 -0
- package/lib/esm/test/DeleteModal.test.js +69 -0
- package/lib/esm/test/DeleteModal.test.js.map +1 -0
- package/lib/esm/test/ReportAction.test.js +2 -3
- package/lib/esm/test/ReportAction.test.js.map +1 -1
- package/lib/esm/test/ReportMappingHorizontalTile.test.d.ts +2 -0
- package/lib/esm/test/ReportMappingHorizontalTile.test.d.ts.map +1 -0
- package/lib/esm/test/ReportMappingHorizontalTile.test.js +316 -0
- package/lib/esm/test/ReportMappingHorizontalTile.test.js.map +1 -0
- package/lib/esm/test/ReportMappings.test.js +117 -269
- package/lib/esm/test/ReportMappings.test.js.map +1 -1
- package/lib/esm/test/Reports.test.js +1 -1
- package/lib/esm/test/Reports.test.js.map +1 -1
- package/lib/esm/tsconfig.tsbuildinfo +1 -1
- package/lib/esm/widget/components/ActionPanel.d.ts.map +1 -1
- package/lib/esm/widget/components/ActionPanel.js +4 -5
- package/lib/esm/widget/components/ActionPanel.js.map +1 -1
- package/lib/esm/widget/components/AddMappingsModal.d.ts +2 -2
- package/lib/esm/widget/components/AddMappingsModal.d.ts.map +1 -1
- package/lib/esm/widget/components/AddMappingsModal.js +4 -5
- package/lib/esm/widget/components/AddMappingsModal.js.map +1 -1
- package/lib/esm/widget/components/AddMappingsModal.scss +4 -3
- package/lib/esm/widget/components/BulkExtractor.d.ts +18 -9
- package/lib/esm/widget/components/BulkExtractor.d.ts.map +1 -1
- package/lib/esm/widget/components/BulkExtractor.js +86 -57
- package/lib/esm/widget/components/BulkExtractor.js.map +1 -1
- package/lib/esm/widget/components/DeleteModal.js +1 -1
- package/lib/esm/widget/components/DeleteModal.js.map +1 -1
- package/lib/esm/widget/components/DeleteModal.scss +4 -3
- package/lib/esm/widget/components/ExtractionStates/RunningExtractionState.js +1 -1
- package/lib/esm/widget/components/ExtractionStates/RunningExtractionState.js.map +1 -1
- package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.d.ts.map +1 -1
- package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.js +1 -1
- package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.js.map +1 -1
- package/lib/esm/widget/components/ExtractionStatus.scss +15 -1
- package/lib/esm/widget/components/ExtractionToast.d.ts +11 -0
- package/lib/esm/widget/components/ExtractionToast.d.ts.map +1 -0
- package/lib/esm/widget/components/ExtractionToast.js +25 -0
- package/lib/esm/widget/components/ExtractionToast.js.map +1 -0
- package/lib/esm/widget/components/HorizontalTile.scss +1 -1
- package/lib/esm/widget/components/ReportAction.d.ts.map +1 -1
- package/lib/esm/widget/components/ReportAction.js +3 -3
- package/lib/esm/widget/components/ReportAction.js.map +1 -1
- package/lib/esm/widget/components/ReportAction.scss +2 -2
- package/lib/esm/widget/components/ReportHorizontalTile.d.ts.map +1 -1
- package/lib/esm/widget/components/ReportHorizontalTile.js +1 -2
- package/lib/esm/widget/components/ReportHorizontalTile.js.map +1 -1
- package/lib/esm/widget/components/ReportMappingHorizontalTile.d.ts +13 -0
- package/lib/esm/widget/components/ReportMappingHorizontalTile.d.ts.map +1 -0
- package/lib/esm/widget/components/ReportMappingHorizontalTile.js +75 -0
- package/lib/esm/widget/components/ReportMappingHorizontalTile.js.map +1 -0
- package/lib/esm/widget/components/ReportMappings.d.ts +3 -1
- package/lib/esm/widget/components/ReportMappings.d.ts.map +1 -1
- package/lib/esm/widget/components/ReportMappings.js +40 -41
- package/lib/esm/widget/components/ReportMappings.js.map +1 -1
- package/lib/esm/widget/components/ReportMappings.scss +7 -7
- package/lib/esm/widget/components/Reports.d.ts.map +1 -1
- package/lib/esm/widget/components/Reports.js +15 -8
- package/lib/esm/widget/components/Reports.js.map +1 -1
- package/lib/esm/widget/components/Reports.scss +1 -1
- package/lib/esm/widget/components/ReportsContainer.js +1 -1
- package/lib/esm/widget/components/ReportsContainer.js.map +1 -1
- package/lib/esm/widget/components/ReportsContainer.scss +2 -2
- package/lib/esm/widget/components/SelectIModel.js +2 -2
- package/lib/esm/widget/components/SelectIModel.js.map +1 -1
- package/lib/esm/widget/components/SelectIModel.scss +4 -3
- package/lib/esm/widget/components/utils.js +1 -1
- package/lib/esm/widget/components/utils.js.map +1 -1
- package/lib/esm/widget/components/utils.scss +2 -2
- package/lib/public/locales/en/ReportsConfigWidget.json +5 -0
- package/package.json +7 -4
- package/public/locales/en/ReportsConfigWidget.json +5 -0
- package/reports-config-widget-react.build.error.log +10 -6
- package/reports-config-widget-react.build.log +51 -46
- package/src/test/AddMappingModal.test.tsx +315 -0
- package/src/test/BulkExtractor.test.ts +301 -0
- package/src/test/DeleteModal.test.tsx +118 -0
- package/src/test/ReportAction.test.tsx +2 -4
- package/src/test/ReportMappingHorizontalTile.test.tsx +451 -0
- package/src/test/ReportMappings.test.tsx +154 -549
- package/src/test/Reports.test.tsx +1 -1
- package/src/widget/components/ActionPanel.tsx +19 -23
- package/src/widget/components/AddMappingsModal.scss +4 -3
- package/src/widget/components/AddMappingsModal.tsx +4 -6
- package/src/widget/components/BulkExtractor.ts +97 -61
- package/src/widget/components/DeleteModal.scss +4 -3
- package/src/widget/components/DeleteModal.tsx +1 -1
- package/src/widget/components/ExtractionStates/RunningExtractionState.tsx +1 -1
- package/src/widget/components/ExtractionStates/SucceededExtractionState.tsx +1 -0
- package/src/widget/components/ExtractionStatus.scss +15 -1
- package/src/widget/components/ExtractionToast.tsx +41 -0
- package/src/widget/components/HorizontalTile.scss +1 -1
- package/src/widget/components/ReportAction.scss +2 -2
- package/src/widget/components/ReportAction.tsx +1 -3
- package/src/widget/components/ReportHorizontalTile.tsx +1 -2
- package/src/widget/components/ReportMappingHorizontalTile.tsx +128 -0
- package/src/widget/components/ReportMappings.scss +7 -7
- package/src/widget/components/ReportMappings.tsx +89 -105
- package/src/widget/components/Reports.scss +1 -1
- package/src/widget/components/Reports.tsx +18 -8
- package/src/widget/components/ReportsContainer.scss +2 -2
- package/src/widget/components/ReportsContainer.tsx +1 -1
- package/src/widget/components/SelectIModel.scss +4 -3
- package/src/widget/components/SelectIModel.tsx +2 -2
- package/src/widget/components/utils.scss +2 -2
- package/src/widget/components/utils.tsx +1 -1
- package/coverage/lcov-report/src/widget/components/Extraction.tsx.html +0 -1030
- package/lib/cjs/widget/components/Extraction.d.ts +0 -28
- package/lib/cjs/widget/components/Extraction.d.ts.map +0 -1
- package/lib/cjs/widget/components/Extraction.js +0 -190
- package/lib/cjs/widget/components/Extraction.js.map +0 -1
- package/lib/cjs/widget/components/Extraction.scss +0 -39
- package/lib/esm/widget/components/Extraction.d.ts +0 -28
- package/lib/esm/widget/components/Extraction.d.ts.map +0 -1
- package/lib/esm/widget/components/Extraction.js +0 -166
- package/lib/esm/widget/components/Extraction.js.map +0 -1
- package/lib/esm/widget/components/Extraction.scss +0 -39
- package/src/widget/components/Extraction.scss +0 -39
- package/src/widget/components/Extraction.tsx +0 -315
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionPanel.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/ActionPanel.tsx"],"names":[],"mappings":";AAOA,OAAO,oBAAoB,CAAC;AAG5B,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,WAAW,wFAOd,gBAAgB,KAAG,
|
|
1
|
+
{"version":3,"file":"ActionPanel.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/ActionPanel.tsx"],"names":[],"mappings":";AAOA,OAAO,oBAAoB,CAAC;AAG5B,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,WAAW,wFAOd,gBAAgB,KAAG,WAuBrB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -8,11 +8,10 @@ import { ReportsConfigWidget } from "../../ReportsConfigWidget";
|
|
|
8
8
|
import "./ActionPanel.scss";
|
|
9
9
|
import { LoadingSpinner } from "./utils";
|
|
10
10
|
const ActionPanel = ({ actionLabel, onAction, onCancel, isCancelDisabled = false, isSavingDisabled = false, isLoading = false, }) => {
|
|
11
|
-
return (React.createElement("div", {
|
|
12
|
-
React.createElement(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
React.createElement(Button, { styleType: "default", type: "button", id: "cancel", onClick: onCancel, disabled: isCancelDisabled || isLoading }, ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Cancel")))));
|
|
11
|
+
return (React.createElement("div", { className: "rcw-action-panel" },
|
|
12
|
+
isLoading && React.createElement(LoadingSpinner, null),
|
|
13
|
+
React.createElement(Button, { disabled: isSavingDisabled || isLoading, styleType: "high-visibility", onClick: onAction }, actionLabel),
|
|
14
|
+
React.createElement(Button, { styleType: "default", type: "button", onClick: onCancel, disabled: isCancelDisabled || isLoading }, ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Cancel"))));
|
|
16
15
|
};
|
|
17
16
|
export default ActionPanel;
|
|
18
17
|
//# sourceMappingURL=ActionPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionPanel.js","sourceRoot":"","sources":["../../../../src/widget/components/ActionPanel.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAWzC,MAAM,WAAW,GAAG,CAAC,EACnB,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,gBAAgB,GAAG,KAAK,EACxB,gBAAgB,GAAG,KAAK,EACxB,SAAS,GAAG,KAAK,GACA,EAAe,EAAE;IAClC,OAAO,CACL,6BAAK,
|
|
1
|
+
{"version":3,"file":"ActionPanel.js","sourceRoot":"","sources":["../../../../src/widget/components/ActionPanel.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAWzC,MAAM,WAAW,GAAG,CAAC,EACnB,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,gBAAgB,GAAG,KAAK,EACxB,gBAAgB,GAAG,KAAK,EACxB,SAAS,GAAG,KAAK,GACA,EAAe,EAAE;IAClC,OAAO,CACL,6BAAK,SAAS,EAAC,kBAAkB;QAC9B,SAAS,IAAI,oBAAC,cAAc,OAAG;QAChC,oBAAC,MAAM,IACL,QAAQ,EAAE,gBAAgB,IAAI,SAAS,EACvC,SAAS,EAAC,iBAAiB,EAC3B,OAAO,EAAE,QAAQ,IAEhB,WAAW,CACL;QACT,oBAAC,MAAM,IACL,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,gBAAgB,IAAI,SAAS,IAEtC,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CAClD,4BAA4B,CAC7B,CACM,CACL,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,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 { Button } from \"@itwin/itwinui-react\";\nimport * as React from \"react\";\nimport { ReportsConfigWidget } from \"../../ReportsConfigWidget\";\nimport \"./ActionPanel.scss\";\nimport { LoadingSpinner } from \"./utils\";\n\nexport interface ActionPanelProps {\n actionLabel: string;\n onAction: () => Promise<void>;\n onCancel: () => void;\n isCancelDisabled?: boolean;\n isSavingDisabled?: boolean;\n isLoading?: boolean;\n}\n\nconst ActionPanel = ({\n actionLabel,\n onAction,\n onCancel,\n isCancelDisabled = false,\n isSavingDisabled = false,\n isLoading = false,\n}: ActionPanelProps): JSX.Element => {\n return (\n <div className=\"rcw-action-panel\">\n {isLoading && <LoadingSpinner />}\n <Button\n disabled={isSavingDisabled || isLoading}\n styleType=\"high-visibility\"\n onClick={onAction}\n >\n {actionLabel}\n </Button>\n <Button\n styleType=\"default\"\n type=\"button\"\n onClick={onCancel}\n disabled={isCancelDisabled || isLoading}\n >\n {ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:Cancel\"\n )}\n </Button>\n </div>\n );\n};\n\nexport default ActionPanel;\n"]}
|
|
@@ -10,6 +10,6 @@ interface AddMappingsModalProps {
|
|
|
10
10
|
show: boolean;
|
|
11
11
|
returnFn: () => Promise<void>;
|
|
12
12
|
}
|
|
13
|
-
declare const AddMappingsModal: ({ reportId, existingMappings, show, returnFn, }: AddMappingsModalProps) => JSX.Element;
|
|
14
|
-
export
|
|
13
|
+
export declare const AddMappingsModal: ({ reportId, existingMappings, show, returnFn, }: AddMappingsModalProps) => JSX.Element;
|
|
14
|
+
export {};
|
|
15
15
|
//# sourceMappingURL=AddMappingsModal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddMappingsModal.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/AddMappingsModal.tsx"],"names":[],"mappings":";AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAIhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAIvD,oBAAY,WAAW,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;AA0B3D,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,uBAAuB,EAAE,CAAC;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,
|
|
1
|
+
{"version":3,"file":"AddMappingsModal.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/AddMappingsModal.tsx"],"names":[],"mappings":";AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAIhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAIvD,oBAAY,WAAW,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;AA0B3D,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,uBAAuB,EAAE,CAAC;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,eAAO,MAAM,gBAAgB,oDAK1B,qBAAqB,gBAmHvB,CAAC"}
|
|
@@ -27,8 +27,8 @@ const fetchMappings = async (setMappings, iModelId, setIsLoading, apiContext) =>
|
|
|
27
27
|
setIsLoading(false);
|
|
28
28
|
}
|
|
29
29
|
};
|
|
30
|
-
const AddMappingsModal = ({ reportId, existingMappings, show, returnFn, }) => {
|
|
31
|
-
const [isLoading, setIsLoading] = useState(
|
|
30
|
+
export const AddMappingsModal = ({ reportId, existingMappings, show, returnFn, }) => {
|
|
31
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
32
32
|
const [selectedMappings, setSelectedMappings] = useState([]);
|
|
33
33
|
const [selectedIModelId, setSelectediModelId] = useState("");
|
|
34
34
|
const [mappings, setMappings] = useState([]);
|
|
@@ -82,12 +82,11 @@ const AddMappingsModal = ({ reportId, existingMappings, show, returnFn, }) => {
|
|
|
82
82
|
return (React.createElement(Modal, { title: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:AddMappings"), isOpen: show, isDismissible: !isLoading, onClose: async () => {
|
|
83
83
|
await returnFn();
|
|
84
84
|
}, style: { display: "flex", flexDirection: "column", maxHeight: "77vh" } },
|
|
85
|
-
React.createElement("div", { className: "add-mappings-container" },
|
|
85
|
+
React.createElement("div", { className: "rcw-add-mappings-container" },
|
|
86
86
|
React.createElement(SelectIModel, { selectedIModelId: selectedIModelId, setSelectedIModelId: setSelectediModelId }),
|
|
87
|
-
React.createElement(Table, { data: isLoading ? [] : mappings, columns: mappingsColumns, className: "add-mappings-table", emptyTableContent: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:NoMappingsAvailable"), isSortable: true, isSelectable: true, isLoading: isLoading, isRowDisabled: (rowData) => existingMappings.some((v) => v.mappingId === rowData.id), onSelect: (selectData) => {
|
|
87
|
+
React.createElement(Table, { data: isLoading ? [] : mappings, columns: mappingsColumns, className: "rcw-add-mappings-table", emptyTableContent: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:NoMappingsAvailable"), isSortable: true, isSelectable: true, isLoading: isLoading, isRowDisabled: (rowData) => existingMappings.some((v) => v.mappingId === rowData.id), onSelect: (selectData) => {
|
|
88
88
|
selectData && setSelectedMappings(selectData);
|
|
89
89
|
}, paginatorRenderer: LocalizedTablePaginator })),
|
|
90
90
|
React.createElement(ActionPanel, { actionLabel: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Add"), onAction: onSave, onCancel: returnFn, isSavingDisabled: selectedMappings.length === 0, isLoading: isLoading })));
|
|
91
91
|
};
|
|
92
|
-
export default AddMappingsModal;
|
|
93
92
|
//# sourceMappingURL=AddMappingsModal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddMappingsModal.js","sourceRoot":"","sources":["../../../../src/widget/components/AddMappingsModal.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5F,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAIhE,MAAM,aAAa,GAAG,KAAK,EACzB,WAA4D,EAC5D,QAAgB,EAChB,YAA2D,EAC3D,UAA4B,EAC5B,EAAE;IACF,IAAI;QACF,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,MAAM,iBAAiB,GAAG,IAAI,cAAc,CAC1C,WAAW,CAAC,mBAAmB,EAAE,UAAU,CAAC,OAAO,CAAC,CACrD,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAClD,WAAW,EACX,QAAQ,CACT,CAAC;QACF,WAAW,CAAC,QAAQ,CAAC,CAAC;KACvB;IAAC,OAAO,KAAU,EAAE;QACnB,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KAC3B;YAAS;QACR,YAAY,CAAC,KAAK,CAAC,CAAC;KACrB;AACH,CAAC,CAAC;AASF,MAAM,gBAAgB,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"AddMappingsModal.js","sourceRoot":"","sources":["../../../../src/widget/components/AddMappingsModal.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 { Modal, Table, tableFilters } from \"@itwin/itwinui-react\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { MappingsClient, REPORTING_BASE_PATH, ReportsClient } from \"@itwin/insights-client\";\nimport ActionPanel from \"./ActionPanel\";\nimport \"./AddMappingsModal.scss\";\nimport { LocalizedTablePaginator } from \"./LocalizedTablePaginator\";\nimport type { ReportMappingAndMapping } from \"./ReportMappings\";\nimport type { ReportsApiConfig } from \"../context/ReportsApiConfigContext\";\nimport { useReportsApiConfig } from \"../context/ReportsApiConfigContext\";\nimport { SelectIModel } from \"./SelectIModel\";\nimport type { CreateTypeFromInterface } from \"./utils\";\nimport { generateUrl, handleError } from \"./utils\";\nimport { ReportsConfigWidget } from \"../../ReportsConfigWidget\";\n\nexport type MappingType = CreateTypeFromInterface<Mapping>;\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<Mapping[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n apiContext: ReportsApiConfig\n) => {\n try {\n setIsLoading(true);\n const mappingsClientApi = new MappingsClient(\n generateUrl(REPORTING_BASE_PATH, apiContext.baseUrl)\n );\n const accessToken = await apiContext.getAccessToken();\n const mappings = await mappingsClientApi.getMappings(\n accessToken,\n iModelId\n );\n setMappings(mappings);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\ninterface AddMappingsModalProps {\n reportId: string;\n existingMappings: ReportMappingAndMapping[];\n show: boolean;\n returnFn: () => Promise<void>;\n}\n\nexport const AddMappingsModal = ({\n reportId,\n existingMappings,\n show,\n returnFn,\n}: AddMappingsModalProps) => {\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [selectedMappings, setSelectedMappings] = useState<Mapping[]>([]);\n const [selectedIModelId, setSelectediModelId] = useState<string>(\"\");\n const [mappings, setMappings] = useState<Mapping[]>([]);\n const apiConfig = useReportsApiConfig();\n\n useEffect(() => {\n if (selectedIModelId) {\n void fetchMappings(\n setMappings,\n selectedIModelId,\n setIsLoading,\n apiConfig\n );\n }\n }, [apiConfig, selectedIModelId, setIsLoading]);\n\n const mappingsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"mappingName\",\n Header: ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:MappingName\"\n ),\n accessor: \"mappingName\",\n Filter: tableFilters.TextFilter(),\n },\n {\n id: \"description\",\n Header: ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:Description\"\n ),\n accessor: \"description\",\n Filter: tableFilters.TextFilter(),\n },\n ],\n },\n ],\n []\n );\n\n const onSave = async () => {\n try {\n if (!selectedIModelId) return;\n setIsLoading(true);\n const reportsClientApi = new ReportsClient(\n generateUrl(REPORTING_BASE_PATH, apiConfig.baseUrl)\n );\n const accessToken = await apiConfig.getAccessToken();\n for (const mapping of selectedMappings) {\n await reportsClientApi.createReportMapping(accessToken, reportId, {\n imodelId: selectedIModelId,\n mappingId: mapping.id,\n });\n }\n\n await returnFn();\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <Modal\n title={ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:AddMappings\"\n )}\n isOpen={show}\n isDismissible={!isLoading}\n onClose={async () => {\n await returnFn();\n }}\n style={{ display: \"flex\", flexDirection: \"column\", maxHeight: \"77vh\" }}\n >\n <div className=\"rcw-add-mappings-container\">\n <SelectIModel\n selectedIModelId={selectedIModelId}\n setSelectedIModelId={setSelectediModelId}\n />\n <Table<MappingType>\n data={isLoading ? [] : mappings}\n columns={mappingsColumns}\n className=\"rcw-add-mappings-table\"\n emptyTableContent={ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:NoMappingsAvailable\"\n )}\n isSortable\n isSelectable\n isLoading={isLoading}\n isRowDisabled={(rowData) =>\n existingMappings.some((v) => v.mappingId === rowData.id)\n }\n onSelect={(selectData: Mapping[] | undefined) => {\n selectData && setSelectedMappings(selectData);\n }}\n paginatorRenderer={LocalizedTablePaginator}\n />\n </div>\n <ActionPanel\n actionLabel={ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:Add\"\n )}\n onAction={onSave}\n onCancel={returnFn}\n isSavingDisabled={selectedMappings.length === 0}\n isLoading={isLoading}\n />\n </Modal>\n );\n};\n"]}
|
|
@@ -4,15 +4,16 @@
|
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
@import "~@itwin/itwinui-css/scss/variables";
|
|
6
6
|
|
|
7
|
-
.add-mappings-container {
|
|
7
|
+
.rcw-add-mappings-container {
|
|
8
8
|
display: flex;
|
|
9
9
|
flex-direction: column;
|
|
10
10
|
gap: $iui-baseline;
|
|
11
11
|
width: 45vw;
|
|
12
12
|
min-width: 100%;
|
|
13
13
|
overflow: auto;
|
|
14
|
-
|
|
14
|
+
|
|
15
|
+
.rcw-add-mappings-table {
|
|
15
16
|
flex-grow: 1;
|
|
16
17
|
overflow: auto;
|
|
17
18
|
}
|
|
18
|
-
}
|
|
19
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import type { ReportMapping } from "@itwin/insights-client";
|
|
2
3
|
import type { ReportsApiConfig } from "../context/ReportsApiConfigContext";
|
|
3
4
|
import { ExtractionStates } from "./ExtractionStatus";
|
|
@@ -7,22 +8,30 @@ export declare type ReportMappingAndMapping = ReportMapping & {
|
|
|
7
8
|
iModelName: string;
|
|
8
9
|
};
|
|
9
10
|
export default class BulkExtractor {
|
|
10
|
-
private _reportRunIds;
|
|
11
11
|
private _reportsClientApi;
|
|
12
12
|
private _extractionClientApi;
|
|
13
13
|
private _accessToken;
|
|
14
|
-
private
|
|
14
|
+
private _reportIModels;
|
|
15
|
+
private _iModelStates;
|
|
15
16
|
private _timeFetched;
|
|
16
|
-
private
|
|
17
|
-
|
|
18
|
-
private
|
|
17
|
+
private _iModelRun;
|
|
18
|
+
private _iModelToast;
|
|
19
|
+
private _successfulExtractionToast;
|
|
20
|
+
private _failedExtractionToast;
|
|
21
|
+
private _setJobRunning;
|
|
22
|
+
private _iModels;
|
|
23
|
+
constructor(apiConfig: ReportsApiConfig, successfulExtractionToast: (iModelName: string, odataFeedUrl: string) => void, failedExtractionToast: (iModelName: string) => void);
|
|
19
24
|
private fetchStates;
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
getReportState(reportId: string): Promise<ExtractionStates>;
|
|
26
|
+
getIModelState(iModelId: string, iModelName: string, odataFeedUrl: string): Promise<ExtractionStates>;
|
|
22
27
|
private static getFinalState;
|
|
23
|
-
private
|
|
24
|
-
|
|
28
|
+
private getState;
|
|
29
|
+
private checkRunning;
|
|
30
|
+
runReportExtractions(reportIds: string[]): Promise<void>;
|
|
25
31
|
private runExtraction;
|
|
32
|
+
runIModelExtraction(iModelId: string): Promise<void>;
|
|
33
|
+
setHook(setJobRunning: React.Dispatch<React.SetStateAction<boolean>>, iModels: string[]): void;
|
|
34
|
+
runIModelExtractions(iModels: string[]): Promise<void>;
|
|
26
35
|
private fetchReportIModels;
|
|
27
36
|
}
|
|
28
37
|
//# sourceMappingURL=BulkExtractor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulkExtractor.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/BulkExtractor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,oBAAY,uBAAuB,GAAG,aAAa,GAAG;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,aAAa;IAChC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"BulkExtractor.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/BulkExtractor.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,oBAAY,uBAAuB,GAAG,aAAa,GAAG;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,aAAa;IAChC,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,oBAAoB,CAAmB;IAC/C,OAAO,CAAC,YAAY,CAAwB;IAE5C,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,0BAA0B,CAAqD;IACvF,OAAO,CAAC,sBAAsB,CAA+B;IAC7D,OAAO,CAAC,cAAc,CAA4D;IAClF,OAAO,CAAC,QAAQ,CAAgB;gBAG9B,SAAS,EAAE,gBAAgB,EAC3B,yBAAyB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,EAC7E,qBAAqB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI;YAUvC,WAAW;IAUZ,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiB3D,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsBlH,OAAO,CAAC,MAAM,CAAC,aAAa;YAgBd,QAAQ;IAWtB,OAAO,CAAC,YAAY;IAcP,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAcvD,aAAa;IAcd,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAMxF,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAWrD,kBAAkB;CAOjC"}
|
|
@@ -7,57 +7,67 @@ import { generateUrl, handleError } from "./utils";
|
|
|
7
7
|
import { ExtractionStates } from "./ExtractionStatus";
|
|
8
8
|
import { STATUS_CHECK_INTERVAL } from "./Constants";
|
|
9
9
|
export default class BulkExtractor {
|
|
10
|
-
constructor(apiConfig,
|
|
11
|
-
this.
|
|
12
|
-
this.
|
|
10
|
+
constructor(apiConfig, successfulExtractionToast, failedExtractionToast) {
|
|
11
|
+
this._reportIModels = new Map(); // key: reportId, value: iModels
|
|
12
|
+
this._iModelStates = new Map(); // key: iModelId, value: state
|
|
13
13
|
this._timeFetched = new Date();
|
|
14
|
+
this._iModelRun = new Map(); // key: iModelId, value: runId
|
|
15
|
+
this._iModelToast = new Set();
|
|
16
|
+
this._iModels = [];
|
|
14
17
|
const url = generateUrl(REPORTING_BASE_PATH, apiConfig.baseUrl);
|
|
15
18
|
this._reportsClientApi = new ReportsClient(url);
|
|
16
19
|
this._extractionClientApi = new ExtractionClient(url);
|
|
17
20
|
this._accessToken = apiConfig.getAccessToken;
|
|
18
|
-
this.
|
|
21
|
+
this._successfulExtractionToast = successfulExtractionToast;
|
|
22
|
+
this._failedExtractionToast = failedExtractionToast;
|
|
19
23
|
}
|
|
20
|
-
async
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (!runs) {
|
|
26
|
-
stateByReportId.set(reportId, ExtractionStates.None);
|
|
27
|
-
continue;
|
|
28
|
-
}
|
|
29
|
-
const states = [];
|
|
30
|
-
for (const runId of runs) {
|
|
31
|
-
const state = stateByRunId.get(runId);
|
|
32
|
-
if (state) {
|
|
33
|
-
states.push(state);
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
const runState = await this.getSingleState(runId, await this._accessToken());
|
|
37
|
-
states.push(runState);
|
|
38
|
-
stateByRunId.set(runId, runState);
|
|
39
|
-
}
|
|
24
|
+
async fetchStates() {
|
|
25
|
+
for (const [iModelId, runId] of this._iModelRun) {
|
|
26
|
+
const state = await this.getState(runId);
|
|
27
|
+
if (state === ExtractorState.Succeeded || state === ExtractorState.Failed) {
|
|
28
|
+
this._iModelRun.delete(iModelId);
|
|
40
29
|
}
|
|
41
|
-
|
|
42
|
-
stateByReportId.set(reportId, finalState);
|
|
30
|
+
this._iModelStates.set(iModelId, state);
|
|
43
31
|
}
|
|
44
|
-
return stateByReportId;
|
|
45
|
-
}
|
|
46
|
-
async fetchStates() {
|
|
47
|
-
this._reportStates = await this.getStates(this._reportIds);
|
|
48
32
|
}
|
|
49
|
-
|
|
50
|
-
var _a;
|
|
33
|
+
async getReportState(reportId) {
|
|
51
34
|
if ((new Date().getTime() - this._timeFetched.getTime()) > STATUS_CHECK_INTERVAL) {
|
|
52
35
|
this._timeFetched = new Date();
|
|
53
|
-
this.fetchStates()
|
|
54
|
-
|
|
55
|
-
|
|
36
|
+
await this.fetchStates();
|
|
37
|
+
}
|
|
38
|
+
const iModels = this._reportIModels.get(reportId);
|
|
39
|
+
if (!iModels)
|
|
40
|
+
return ExtractionStates.None;
|
|
41
|
+
const states = [];
|
|
42
|
+
for (const iModelId of iModels) {
|
|
43
|
+
const state = this._iModelStates.get(iModelId);
|
|
44
|
+
if (!state)
|
|
45
|
+
continue;
|
|
46
|
+
states.push(state);
|
|
56
47
|
}
|
|
57
|
-
return
|
|
48
|
+
return BulkExtractor.getFinalState(states);
|
|
58
49
|
}
|
|
59
|
-
|
|
60
|
-
this.
|
|
50
|
+
async getIModelState(iModelId, iModelName, odataFeedUrl) {
|
|
51
|
+
if ((new Date().getTime() - this._timeFetched.getTime()) > STATUS_CHECK_INTERVAL) {
|
|
52
|
+
this._timeFetched = new Date();
|
|
53
|
+
await this.fetchStates();
|
|
54
|
+
}
|
|
55
|
+
const state = this._iModelStates.get(iModelId);
|
|
56
|
+
if (!state)
|
|
57
|
+
return ExtractionStates.None;
|
|
58
|
+
if (!this._iModelToast.has(iModelId)) {
|
|
59
|
+
if (state === ExtractorState.Succeeded) {
|
|
60
|
+
this._successfulExtractionToast(iModelName, odataFeedUrl);
|
|
61
|
+
this._iModelToast.add(iModelId);
|
|
62
|
+
this.checkRunning();
|
|
63
|
+
}
|
|
64
|
+
else if (state === ExtractorState.Failed) {
|
|
65
|
+
this._failedExtractionToast(iModelName);
|
|
66
|
+
this._iModelToast.add(iModelId);
|
|
67
|
+
this.checkRunning();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return BulkExtractor.getFinalState([state]);
|
|
61
71
|
}
|
|
62
72
|
static getFinalState(states) {
|
|
63
73
|
if (states.includes(ExtractorState.Failed))
|
|
@@ -70,8 +80,9 @@ export default class BulkExtractor {
|
|
|
70
80
|
return ExtractionStates.Succeeded;
|
|
71
81
|
return ExtractionStates.Failed;
|
|
72
82
|
}
|
|
73
|
-
async
|
|
83
|
+
async getState(runId) {
|
|
74
84
|
try {
|
|
85
|
+
const accessToken = await this._accessToken();
|
|
75
86
|
const response = await this._extractionClientApi.getExtractionStatus(accessToken, runId);
|
|
76
87
|
return response.state;
|
|
77
88
|
}
|
|
@@ -80,34 +91,34 @@ export default class BulkExtractor {
|
|
|
80
91
|
}
|
|
81
92
|
return ExtractorState.Failed;
|
|
82
93
|
}
|
|
83
|
-
|
|
94
|
+
checkRunning() {
|
|
95
|
+
if (this._setJobRunning) {
|
|
96
|
+
let allFinished = true;
|
|
97
|
+
this._iModels.forEach((iModelId) => {
|
|
98
|
+
const state = this._iModelStates.get(iModelId);
|
|
99
|
+
if (state === ExtractorState.Queued || state === ExtractorState.Running) {
|
|
100
|
+
allFinished = false;
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
this._setJobRunning(!allFinished);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
async runReportExtractions(reportIds) {
|
|
84
107
|
const reportIModelIds = new Map();
|
|
85
108
|
for (const reportId of reportIds) {
|
|
86
109
|
const reportIModels = await this.fetchReportIModels(reportId);
|
|
87
110
|
reportIModelIds.set(reportId, reportIModels);
|
|
88
|
-
this.
|
|
111
|
+
this._reportIModels.set(reportId, reportIModels);
|
|
89
112
|
}
|
|
90
113
|
const iModels = new Set(Array.from(reportIModelIds.values()).flat());
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
});
|
|
95
|
-
const extractionMap = await Promise.all(extractionMapPromise);
|
|
96
|
-
const extractionByIModel = new Map(extractionMap);
|
|
97
|
-
reportIds.forEach((reportId) => {
|
|
98
|
-
const reportIModels = reportIModelIds.get(reportId);
|
|
99
|
-
const runs = [];
|
|
100
|
-
reportIModels.forEach((iModelId) => {
|
|
101
|
-
const runId = extractionByIModel.get(iModelId);
|
|
102
|
-
if (runId)
|
|
103
|
-
runs.push(runId);
|
|
104
|
-
});
|
|
105
|
-
this._reportRunIds.set(reportId, runs);
|
|
106
|
-
});
|
|
114
|
+
for (const iModel of iModels) {
|
|
115
|
+
await this.runIModelExtractions([iModel]);
|
|
116
|
+
}
|
|
107
117
|
}
|
|
108
118
|
async runExtraction(iModelId) {
|
|
109
119
|
try {
|
|
110
120
|
const response = await this._extractionClientApi.runExtraction(await this._accessToken(), iModelId);
|
|
121
|
+
this._iModelToast.delete(iModelId);
|
|
111
122
|
return response.id;
|
|
112
123
|
}
|
|
113
124
|
catch (error) {
|
|
@@ -115,6 +126,24 @@ export default class BulkExtractor {
|
|
|
115
126
|
}
|
|
116
127
|
return undefined;
|
|
117
128
|
}
|
|
129
|
+
async runIModelExtraction(iModelId) {
|
|
130
|
+
return this.runIModelExtractions([iModelId]);
|
|
131
|
+
}
|
|
132
|
+
setHook(setJobRunning, iModels) {
|
|
133
|
+
this._setJobRunning = setJobRunning;
|
|
134
|
+
this._iModels = iModels;
|
|
135
|
+
this.checkRunning();
|
|
136
|
+
}
|
|
137
|
+
async runIModelExtractions(iModels) {
|
|
138
|
+
for (const iModelId of iModels) {
|
|
139
|
+
const run = await this.runExtraction(iModelId);
|
|
140
|
+
if (run) {
|
|
141
|
+
this._iModelStates.set(iModelId, ExtractorState.Queued);
|
|
142
|
+
this._iModelRun.set(iModelId, run);
|
|
143
|
+
}
|
|
144
|
+
this.checkRunning();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
118
147
|
async fetchReportIModels(reportId) {
|
|
119
148
|
const reportMappings = await this._reportsClientApi.getReportMappings(await this._accessToken(), reportId);
|
|
120
149
|
return reportMappings.map((x) => x.imodelId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulkExtractor.js","sourceRoot":"","sources":["../../../../src/widget/components/BulkExtractor.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { ExtractionClient, ExtractorState, REPORTING_BASE_PATH, ReportsClient } from \"@itwin/insights-client\";\nimport type { ReportMapping } from \"@itwin/insights-client\";\nimport { generateUrl, handleError } from \"./utils\";\nimport type { ReportsApiConfig } from \"../context/ReportsApiConfigContext\";\nimport { ExtractionStates } from \"./ExtractionStatus\";\nimport { STATUS_CHECK_INTERVAL } from \"./Constants\";\n\nexport type ReportMappingAndMapping = ReportMapping & {\n mappingName: string;\n mappingDescription: string;\n iModelName: string;\n};\n\nexport default class BulkExtractor {\n private _reportRunIds = new Map<string, string[]>();\n private _reportsClientApi: ReportsClient;\n private _extractionClientApi: ExtractionClient;\n private _accessToken: () => Promise<string>;\n private _reportStates = new Map<string, ExtractionStates>();\n private _timeFetched = new Date();\n private _reportIds: string[];\n\n constructor(apiConfig: ReportsApiConfig, reportIds: string[]) {\n const url = generateUrl(REPORTING_BASE_PATH, apiConfig.baseUrl);\n this._reportsClientApi = new ReportsClient(url);\n this._extractionClientApi = new ExtractionClient(url);\n this._accessToken = apiConfig.getAccessToken;\n this._reportIds = reportIds;\n }\n\n private async getStates(reportIds: string[]): Promise<Map<string, ExtractionStates>> {\n const stateByReportId = new Map<string, ExtractionStates>();\n const stateByRunId = new Map<string, ExtractorState>();\n\n for (const reportId of reportIds) {\n const runs = this._reportRunIds.get(reportId);\n if (!runs) {\n stateByReportId.set(reportId, ExtractionStates.None);\n continue;\n }\n\n const states: ExtractorState[] = [];\n for (const runId of runs) {\n const state = stateByRunId.get(runId);\n if (state) {\n states.push(state);\n } else {\n const runState = await this.getSingleState(runId, await this._accessToken());\n states.push(runState);\n stateByRunId.set(runId, runState);\n }\n }\n const finalState = BulkExtractor.getFinalState(states);\n stateByReportId.set(reportId, finalState);\n }\n return stateByReportId;\n }\n\n private async fetchStates(): Promise<void> {\n this._reportStates = await this.getStates(this._reportIds);\n }\n\n public getState(reportId: string): ExtractionStates {\n if ((new Date().getTime() - this._timeFetched.getTime()) > STATUS_CHECK_INTERVAL) {\n this._timeFetched = new Date();\n this.fetchStates().catch((e) =>\n /* eslint-disable no-console */\n console.error(e)\n );\n }\n return this._reportStates.get(reportId) ?? ExtractionStates.None;\n }\n\n public clearJob(reportId: string): void {\n this._reportRunIds.delete(reportId);\n }\n\n private static getFinalState(states: ExtractorState[]): ExtractionStates {\n if (states.includes(ExtractorState.Failed))\n return ExtractionStates.Failed;\n\n if (states.includes(ExtractorState.Queued))\n return ExtractionStates.Queued;\n\n if (states.includes(ExtractorState.Running))\n return ExtractionStates.Running;\n\n if (states.includes(ExtractorState.Succeeded))\n return ExtractionStates.Succeeded;\n\n return ExtractionStates.Failed;\n }\n\n private async getSingleState(runId: string, accessToken: string): Promise<ExtractorState> {\n try {\n const response = await this._extractionClientApi.getExtractionStatus(accessToken, runId);\n return response.state;\n } catch (error: any) {\n handleError(error.status);\n }\n return ExtractorState.Failed;\n }\n\n public async startJobs(reportIds: string[]): Promise<void> {\n const reportIModelIds = new Map<string, string[]>();\n for (const reportId of reportIds) {\n const reportIModels = await this.fetchReportIModels(reportId);\n reportIModelIds.set(reportId, reportIModels);\n this._reportStates.set(reportId, ExtractionStates.Starting);\n }\n const iModels = new Set(Array.from(reportIModelIds.values()).flat());\n const extractionMapPromise =\n Array.from(iModels).map(async (iModel): Promise<[string, string | undefined]> => {\n const run = await this.runExtraction(iModel);\n return [iModel, run];\n });\n\n const extractionMap = await Promise.all(extractionMapPromise);\n const extractionByIModel = new Map<string, string | undefined>(extractionMap);\n reportIds.forEach((reportId) => {\n const reportIModels = reportIModelIds.get(reportId)!;\n const runs: string[] = [];\n reportIModels.forEach((iModelId) => {\n const runId = extractionByIModel.get(iModelId);\n if (runId)\n runs.push(runId);\n });\n this._reportRunIds.set(reportId, runs);\n });\n }\n\n private async runExtraction(iModelId: string): Promise<string | undefined> {\n try {\n const response = await this._extractionClientApi.runExtraction(\n await this._accessToken(),\n iModelId\n );\n return response.id;\n } catch (error: any) {\n handleError(error.status);\n }\n return undefined;\n }\n\n private async fetchReportIModels(reportId: string): Promise<string[]> {\n const reportMappings = await this._reportsClientApi.getReportMappings(\n await this._accessToken(),\n reportId\n );\n return reportMappings.map((x) => x.imodelId);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BulkExtractor.js","sourceRoot":"","sources":["../../../../src/widget/components/BulkExtractor.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { ExtractionClient, ExtractorState, REPORTING_BASE_PATH, ReportsClient } from \"@itwin/insights-client\";\nimport type { ReportMapping } from \"@itwin/insights-client\";\nimport { generateUrl, handleError } from \"./utils\";\nimport type { ReportsApiConfig } from \"../context/ReportsApiConfigContext\";\nimport { ExtractionStates } from \"./ExtractionStatus\";\nimport { STATUS_CHECK_INTERVAL } from \"./Constants\";\n\nexport type ReportMappingAndMapping = ReportMapping & {\n mappingName: string;\n mappingDescription: string;\n iModelName: string;\n};\n\nexport default class BulkExtractor {\n private _reportsClientApi: ReportsClient;\n private _extractionClientApi: ExtractionClient;\n private _accessToken: () => Promise<string>;\n\n private _reportIModels = new Map<string, string[]>(); // key: reportId, value: iModels\n private _iModelStates = new Map<string, ExtractorState>(); // key: iModelId, value: state\n private _timeFetched = new Date();\n private _iModelRun = new Map<string, string>(); // key: iModelId, value: runId\n private _iModelToast = new Set<string>();\n private _successfulExtractionToast: (iModelName: string, odataFeedUrl: string) => void;\n private _failedExtractionToast: (iModelName: string) => void;\n private _setJobRunning: React.Dispatch<React.SetStateAction<boolean>> | undefined;\n private _iModels: string[] = [];\n\n constructor(\n apiConfig: ReportsApiConfig,\n successfulExtractionToast: (iModelName: string, odataFeedUrl: string) => void,\n failedExtractionToast: (iModelName: string) => void,\n ) {\n const url = generateUrl(REPORTING_BASE_PATH, apiConfig.baseUrl);\n this._reportsClientApi = new ReportsClient(url);\n this._extractionClientApi = new ExtractionClient(url);\n this._accessToken = apiConfig.getAccessToken;\n this._successfulExtractionToast = successfulExtractionToast;\n this._failedExtractionToast = failedExtractionToast;\n }\n\n private async fetchStates(): Promise<void> {\n for (const [iModelId, runId] of this._iModelRun) {\n const state = await this.getState(runId);\n if (state === ExtractorState.Succeeded || state === ExtractorState.Failed) {\n this._iModelRun.delete(iModelId);\n }\n this._iModelStates.set(iModelId, state);\n }\n }\n\n public async getReportState(reportId: string): Promise<ExtractionStates> {\n if ((new Date().getTime() - this._timeFetched.getTime()) > STATUS_CHECK_INTERVAL) {\n this._timeFetched = new Date();\n await this.fetchStates();\n }\n\n const iModels = this._reportIModels.get(reportId);\n if (!iModels) return ExtractionStates.None;\n const states: ExtractorState[] = [];\n for (const iModelId of iModels) {\n const state = this._iModelStates.get(iModelId);\n if (!state) continue;\n states.push(state);\n }\n return BulkExtractor.getFinalState(states);\n }\n\n public async getIModelState(iModelId: string, iModelName: string, odataFeedUrl: string): Promise<ExtractionStates> {\n if ((new Date().getTime() - this._timeFetched.getTime()) > STATUS_CHECK_INTERVAL) {\n this._timeFetched = new Date();\n await this.fetchStates();\n }\n\n const state = this._iModelStates.get(iModelId);\n if (!state) return ExtractionStates.None;\n if (!this._iModelToast.has(iModelId)) {\n if (state === ExtractorState.Succeeded) {\n this._successfulExtractionToast(iModelName, odataFeedUrl);\n this._iModelToast.add(iModelId);\n this.checkRunning();\n } else if (state === ExtractorState.Failed) {\n this._failedExtractionToast(iModelName);\n this._iModelToast.add(iModelId);\n this.checkRunning();\n }\n }\n return BulkExtractor.getFinalState([state]);\n }\n\n private static getFinalState(states: ExtractorState[]): ExtractionStates {\n if (states.includes(ExtractorState.Failed))\n return ExtractionStates.Failed;\n\n if (states.includes(ExtractorState.Queued))\n return ExtractionStates.Queued;\n\n if (states.includes(ExtractorState.Running))\n return ExtractionStates.Running;\n\n if (states.includes(ExtractorState.Succeeded))\n return ExtractionStates.Succeeded;\n\n return ExtractionStates.Failed;\n }\n\n private async getState(runId: string): Promise<ExtractorState> {\n try {\n const accessToken = await this._accessToken();\n const response = await this._extractionClientApi.getExtractionStatus(accessToken, runId);\n return response.state;\n } catch (error: any) {\n handleError(error.status);\n }\n return ExtractorState.Failed;\n }\n\n private checkRunning(): void {\n if (this._setJobRunning) {\n let allFinished = true;\n this._iModels.forEach((iModelId) => {\n const state = this._iModelStates.get(iModelId);\n if (state === ExtractorState.Queued || state === ExtractorState.Running) {\n allFinished = false;\n }\n });\n\n this._setJobRunning(!allFinished);\n }\n }\n\n public async runReportExtractions(reportIds: string[]): Promise<void> {\n const reportIModelIds = new Map<string, string[]>();\n for (const reportId of reportIds) {\n const reportIModels = await this.fetchReportIModels(reportId);\n reportIModelIds.set(reportId, reportIModels);\n this._reportIModels.set(reportId, reportIModels);\n }\n const iModels = new Set(Array.from(reportIModelIds.values()).flat());\n\n for (const iModel of iModels) {\n await this.runIModelExtractions([iModel]);\n }\n }\n\n private async runExtraction(iModelId: string): Promise<string | undefined> {\n try {\n const response = await this._extractionClientApi.runExtraction(\n await this._accessToken(),\n iModelId\n );\n this._iModelToast.delete(iModelId);\n return response.id;\n } catch (error: any) {\n handleError(error.status);\n }\n return undefined;\n }\n\n public async runIModelExtraction(iModelId: string): Promise<void> {\n return this.runIModelExtractions([iModelId]);\n }\n\n public setHook(setJobRunning: React.Dispatch<React.SetStateAction<boolean>>, iModels: string[]): void {\n this._setJobRunning = setJobRunning;\n this._iModels = iModels;\n this.checkRunning();\n }\n\n public async runIModelExtractions(iModels: string[]): Promise<void> {\n for (const iModelId of iModels) {\n const run = await this.runExtraction(iModelId);\n if (run) {\n this._iModelStates.set(iModelId, ExtractorState.Queued);\n this._iModelRun.set(iModelId, run);\n }\n this.checkRunning();\n }\n }\n\n private async fetchReportIModels(reportId: string): Promise<string[]> {\n const reportMappings = await this._reportsClientApi.getReportMappings(\n await this._accessToken(),\n reportId\n );\n return reportMappings.map((x) => x.imodelId);\n }\n}\n"]}
|
|
@@ -27,7 +27,7 @@ export const DeleteModal = ({ entityName, show, setShow, onDelete, refresh, }) =
|
|
|
27
27
|
setShow(false);
|
|
28
28
|
} },
|
|
29
29
|
React.createElement(ModalContent, null,
|
|
30
|
-
React.createElement("div", { className: "delete-modal-body-text" },
|
|
30
|
+
React.createElement("div", { className: "rcw-delete-modal-body-text" },
|
|
31
31
|
React.createElement(Leading, null, ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:AreYouSureYouWantToDelete")),
|
|
32
32
|
React.createElement("strong", null, React.createElement(MiddleTextTruncation, { text: `${entityName}?` })))),
|
|
33
33
|
React.createElement(ModalButtonBar, null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteModal.js","sourceRoot":"","sources":["../../../../src/widget/components/DeleteModal.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EACL,MAAM,EACN,OAAO,EACP,oBAAoB,EACpB,KAAK,EACL,cAAc,EACd,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAUtD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,UAAU,EACV,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,OAAO,GACU,EAAE,EAAE;IACrB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAE3D,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;QAChC,IAAI;YACF,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM,QAAQ,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,MAAM,OAAO,EAAE,CAAC;SACjB;QAAC,OAAO,KAAU,EAAE;YACnB,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC3B;gBAAS;YACR,YAAY,CAAC,KAAK,CAAC,CAAC;SACrB;IACH,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,KAAK,IACJ,KAAK,EAAE,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CACxD,6BAA6B,CAC9B,EACD,MAAM,EAAE,IAAI,EACZ,aAAa,EAAE,CAAC,SAAS,EACzB,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;QAED,oBAAC,YAAY;YACX,6BAAK,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"DeleteModal.js","sourceRoot":"","sources":["../../../../src/widget/components/DeleteModal.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EACL,MAAM,EACN,OAAO,EACP,oBAAoB,EACpB,KAAK,EACL,cAAc,EACd,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAUtD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,UAAU,EACV,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,OAAO,GACU,EAAE,EAAE;IACrB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAE3D,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;QAChC,IAAI;YACF,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM,QAAQ,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,MAAM,OAAO,EAAE,CAAC;SACjB;QAAC,OAAO,KAAU,EAAE;YACnB,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC3B;gBAAS;YACR,YAAY,CAAC,KAAK,CAAC,CAAC;SACrB;IACH,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,KAAK,IACJ,KAAK,EAAE,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CACxD,6BAA6B,CAC9B,EACD,MAAM,EAAE,IAAI,EACZ,aAAa,EAAE,CAAC,SAAS,EACzB,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;QAED,oBAAC,YAAY;YACX,6BAAK,SAAS,EAAC,4BAA4B;gBACzC,oBAAC,OAAO,QACL,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CAClD,+CAA+C,CAChD,CACO;gBACV,oCAAS,oBAAC,oBAAoB,IAAC,IAAI,EAAE,GAAG,UAAU,GAAG,GAAI,CAAU,CAC/D,CACO;QACf,oBAAC,cAAc;YACZ,SAAS,IAAI,CACZ,6BAAK,SAAS,EAAC,oBAAoB,iBAAa,oBAAoB;gBAClE,oBAAC,cAAc,OAAG,CACd,CACP;YACD,oBAAC,MAAM,IACL,SAAS,EAAC,iBAAiB,EAC3B,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,SAAS,IAElB,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CAClD,4BAA4B,CAC7B,CACM;YACT,oBAAC,MAAM,IACL,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,GAAG,EAAE;oBACZ,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjB,CAAC,EACD,QAAQ,EAAE,SAAS,IAElB,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CAClD,4BAA4B,CAC7B,CACM,CACM,CACX,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,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 {\n Button,\n Leading,\n MiddleTextTruncation,\n Modal,\n ModalButtonBar,\n ModalContent,\n} from \"@itwin/itwinui-react\";\nimport React, { useState } from \"react\";\nimport { ReportsConfigWidget } from \"../../ReportsConfigWidget\";\nimport \"./DeleteModal.scss\";\nimport { handleError, LoadingSpinner } from \"./utils\";\n\nexport interface DeleteModalProps {\n entityName: string;\n show: boolean;\n setShow: React.Dispatch<React.SetStateAction<boolean>>;\n onDelete: () => Promise<void>;\n refresh: () => Promise<void>;\n}\n\nexport const DeleteModal = ({\n entityName,\n show,\n setShow,\n onDelete,\n refresh,\n}: DeleteModalProps) => {\n const [isLoading, setIsLoading] = useState<boolean>(false);\n\n const deleteCallback = async () => {\n try {\n setIsLoading(true);\n await onDelete();\n setShow(false);\n await refresh();\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <Modal\n title={ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:Confirm\"\n )}\n isOpen={show}\n isDismissible={!isLoading}\n onClose={() => {\n setShow(false);\n }}\n >\n <ModalContent>\n <div className=\"rcw-delete-modal-body-text\">\n <Leading>\n {ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:AreYouSureYouWantToDelete\"\n )}\n </Leading>\n <strong>{<MiddleTextTruncation text={`${entityName}?`} />}</strong>\n </div>\n </ModalContent>\n <ModalButtonBar>\n {isLoading && (\n <div className=\"rcw-loading-delete\" data-testid=\"rcw-loading-delete\">\n <LoadingSpinner />\n </div>\n )}\n <Button\n styleType=\"high-visibility\"\n onClick={deleteCallback}\n disabled={isLoading}\n >\n {ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:Delete\"\n )}\n </Button>\n <Button\n styleType=\"default\"\n onClick={() => {\n setShow(false);\n }}\n disabled={isLoading}\n >\n {ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:Cancel\"\n )}\n </Button>\n </ModalButtonBar>\n </Modal>\n );\n};\n\nexport default DeleteModal;\n"]}
|
|
@@ -4,15 +4,16 @@
|
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
@import "~@itwin/itwinui-css/scss/variables";
|
|
6
6
|
|
|
7
|
-
.delete-modal-body-text {
|
|
7
|
+
.rcw-delete-modal-body-text {
|
|
8
8
|
display: flex;
|
|
9
9
|
gap: $iui-xs;
|
|
10
10
|
flex-wrap: wrap;
|
|
11
|
-
|
|
11
|
+
|
|
12
|
+
>strong {
|
|
12
13
|
min-width: 0px;
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
.rcw-loading-delete {
|
|
17
18
|
margin-right: $iui-s;
|
|
18
|
-
}
|
|
19
|
+
}
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
import React from "react";
|
|
6
6
|
import { ProgressRadial } from "@itwin/itwinui-react";
|
|
7
7
|
import { ReportsConfigWidget } from "../../../ReportsConfigWidget";
|
|
8
|
-
export const RunningExtractionState = () => (React.createElement("div", { title: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Running"), className: "rcw-extraction-status" },
|
|
8
|
+
export const RunningExtractionState = () => (React.createElement("div", { title: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Running"), className: "rcw-extraction-status-running" },
|
|
9
9
|
React.createElement(ProgressRadial, { size: "x-small", indeterminate: true })));
|
|
10
10
|
//# sourceMappingURL=RunningExtractionState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunningExtractionState.js","sourceRoot":"","sources":["../../../../../src/widget/components/ExtractionStates/RunningExtractionState.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC,CAC1C,6BACE,KAAK,EAAE,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CACxD,6BAA6B,CAC9B,EACD,SAAS,EAAC
|
|
1
|
+
{"version":3,"file":"RunningExtractionState.js","sourceRoot":"","sources":["../../../../../src/widget/components/ExtractionStates/RunningExtractionState.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC,CAC1C,6BACE,KAAK,EAAE,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CACxD,6BAA6B,CAC9B,EACD,SAAS,EAAC,+BAA+B;IAEzC,oBAAC,cAAc,IAAC,IAAI,EAAC,SAAS,EAAC,aAAa,SAAG,CAC3C,CACP,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 React from \"react\";\nimport { ProgressRadial } from \"@itwin/itwinui-react\";\nimport { ReportsConfigWidget } from \"../../../ReportsConfigWidget\";\n\nexport const RunningExtractionState = () => (\n <div\n title={ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:Running\"\n )}\n className=\"rcw-extraction-status-running\"\n >\n <ProgressRadial size=\"x-small\" indeterminate />\n </div>\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SucceededExtractionState.d.ts","sourceRoot":"","sources":["../../../../../src/widget/components/ExtractionStates/SucceededExtractionState.tsx"],"names":[],"mappings":";AASA,UAAU,oBAAoB;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,eAAO,MAAM,wBAAwB,kCAAmC,oBAAoB,
|
|
1
|
+
{"version":3,"file":"SucceededExtractionState.d.ts","sourceRoot":"","sources":["../../../../../src/widget/components/ExtractionStates/SucceededExtractionState.tsx"],"names":[],"mappings":";AASA,UAAU,oBAAoB;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,eAAO,MAAM,wBAAwB,kCAAmC,oBAAoB,gBAoB3F,CAAC"}
|
|
@@ -7,7 +7,7 @@ import { SvgStatusSuccess } from "@itwin/itwinui-icons-color-react";
|
|
|
7
7
|
import { ReportsConfigWidget } from "../../../ReportsConfigWidget";
|
|
8
8
|
import { ANIMATION_DELAY, ANIMATION_DURATION } from "../Constants";
|
|
9
9
|
export const SucceededExtractionState = ({ animation, onAnimationEnd }) => (React.createElement("div", { title: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Success"), className: "rcw-extraction-status" },
|
|
10
|
-
React.createElement("div", { className: `rcw-status-icon`, style: {
|
|
10
|
+
React.createElement("div", { className: `rcw-status-icon`, "data-testid": "rcw-success-animation", style: {
|
|
11
11
|
animationName: animation ? "rcw-fade-out" : "",
|
|
12
12
|
animationDelay: ANIMATION_DELAY,
|
|
13
13
|
animationDuration: ANIMATION_DURATION,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SucceededExtractionState.js","sourceRoot":"","sources":["../../../../../src/widget/components/ExtractionStates/SucceededExtractionState.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAOnE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAwB,EAAE,EAAE,CAAC,CAC/F,6BACE,KAAK,EAAE,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CACxD,6BAA6B,CAC9B,EACD,SAAS,EAAC,uBAAuB;IAEjC,6BACE,SAAS,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"SucceededExtractionState.js","sourceRoot":"","sources":["../../../../../src/widget/components/ExtractionStates/SucceededExtractionState.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAOnE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAwB,EAAE,EAAE,CAAC,CAC/F,6BACE,KAAK,EAAE,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CACxD,6BAA6B,CAC9B,EACD,SAAS,EAAC,uBAAuB;IAEjC,6BACE,SAAS,EAAE,iBAAiB,iBAChB,uBAAuB,EACnC,KAAK,EAAE;YACL,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;YAC9C,cAAc,EAAE,eAAe;YAC/B,iBAAiB,EAAE,kBAAkB;SACtC,EACD,cAAc,EAAE,cAAc;QAE9B,oBAAC,gBAAgB,OAAG,CAChB,CACF,CACP,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 React from \"react\";\nimport { SvgStatusSuccess } from \"@itwin/itwinui-icons-color-react\";\nimport { ReportsConfigWidget } from \"../../../ReportsConfigWidget\";\nimport { ANIMATION_DELAY, ANIMATION_DURATION } from \"../Constants\";\n\ninterface ExtractionStateProps {\n animation: boolean;\n onAnimationEnd: () => void;\n}\n\nexport const SucceededExtractionState = ({ animation, onAnimationEnd }: ExtractionStateProps) => (\n <div\n title={ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:Success\"\n )}\n className=\"rcw-extraction-status\"\n >\n <div\n className={`rcw-status-icon`}\n data-testid=\"rcw-success-animation\"\n style={{\n animationName: animation ? \"rcw-fade-out\" : \"\",\n animationDelay: ANIMATION_DELAY,\n animationDuration: ANIMATION_DURATION,\n }}\n onAnimationEnd={onAnimationEnd}\n >\n <SvgStatusSuccess />\n </div>\n </div>\n);\n"]}
|
|
@@ -6,10 +6,24 @@
|
|
|
6
6
|
|
|
7
7
|
.rcw-extraction-status {
|
|
8
8
|
align-items: center;
|
|
9
|
-
margin: auto $iui-s * 2;
|
|
10
9
|
height: 38px;
|
|
11
10
|
display: flex;
|
|
12
11
|
|
|
12
|
+
.rcw-status-icon {
|
|
13
|
+
width: $iui-icons-default;
|
|
14
|
+
height: $iui-icons-default;
|
|
15
|
+
align-items: center;
|
|
16
|
+
margin: auto $iui-xs * 3;
|
|
17
|
+
display: flex;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.rcw-extraction-status-running {
|
|
22
|
+
align-items: center;
|
|
23
|
+
height: 38px;
|
|
24
|
+
display: flex;
|
|
25
|
+
margin: auto $iui-xs * 3;
|
|
26
|
+
|
|
13
27
|
.rcw-status-icon {
|
|
14
28
|
width: $iui-icons-default;
|
|
15
29
|
height: $iui-icons-default;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
interface SuccessfulExtractionToastProps extends ExtractionToastProps {
|
|
3
|
+
odataFeedUrl: string;
|
|
4
|
+
}
|
|
5
|
+
interface ExtractionToastProps {
|
|
6
|
+
iModelName: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const SuccessfulExtractionToast: ({ iModelName, odataFeedUrl }: SuccessfulExtractionToastProps) => JSX.Element;
|
|
9
|
+
export declare const FailedExtractionToast: ({ iModelName }: ExtractionToastProps) => JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=ExtractionToast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExtractionToast.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/ExtractionToast.tsx"],"names":[],"mappings":";AAQA,UAAU,8BAA+B,SAAQ,oBAAoB;IACnE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,oBAAoB;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,yBAAyB,iCAAkC,8BAA8B,gBAgBrG,CAAC;AAEF,eAAO,MAAM,qBAAqB,mBAAoB,oBAAoB,gBAMzE,CAAC"}
|