@itwin/reports-config-widget-react 0.2.0 → 0.3.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.
Files changed (288) hide show
  1. package/.rush/temp/operation/rebuild/all.log +9 -0
  2. package/.rush/temp/operation/rebuild/state.json +3 -0
  3. package/.rush/temp/package-deps_rebuild.json +36 -32
  4. package/.rush/temp/shrinkwrap-deps.json +90 -36
  5. package/CHANGELOG.json +33 -0
  6. package/CHANGELOG.md +18 -1
  7. package/lib/cjs/reports-config-widget-react.d.ts +5 -0
  8. package/lib/cjs/reports-config-widget-react.d.ts.map +1 -1
  9. package/lib/cjs/reports-config-widget-react.js +11 -0
  10. package/lib/cjs/reports-config-widget-react.js.map +1 -1
  11. package/lib/cjs/test/AddMappingModal.test.js +15 -28
  12. package/lib/cjs/test/AddMappingModal.test.js.map +1 -1
  13. package/lib/cjs/test/BulkExtractor.test.js +13 -19
  14. package/lib/cjs/test/BulkExtractor.test.js.map +1 -1
  15. package/lib/cjs/test/DeleteModal.test.d.ts.map +1 -1
  16. package/lib/cjs/test/DeleteModal.test.js +4 -62
  17. package/lib/cjs/test/DeleteModal.test.js.map +1 -1
  18. package/lib/cjs/test/ReportAction.test.js +13 -78
  19. package/lib/cjs/test/ReportAction.test.js.map +1 -1
  20. package/lib/cjs/test/ReportMappingHorizontalTile.test.js +2 -35
  21. package/lib/cjs/test/ReportMappingHorizontalTile.test.js.map +1 -1
  22. package/lib/cjs/test/ReportMappings.test.d.ts.map +1 -1
  23. package/lib/cjs/test/ReportMappings.test.js +38 -91
  24. package/lib/cjs/test/ReportMappings.test.js.map +1 -1
  25. package/lib/cjs/test/Reports.test.js +19 -72
  26. package/lib/cjs/test/Reports.test.js.map +1 -1
  27. package/lib/cjs/test/test-utils.d.ts +3 -8
  28. package/lib/cjs/test/test-utils.d.ts.map +1 -1
  29. package/lib/cjs/test/test-utils.js +8 -33
  30. package/lib/cjs/test/test-utils.js.map +1 -1
  31. package/lib/cjs/tsconfig.tsbuildinfo +1 -1
  32. package/lib/cjs/widget/components/ActionPanel.d.ts +1 -1
  33. package/lib/cjs/widget/components/ActionPanel.d.ts.map +1 -1
  34. package/lib/cjs/widget/components/ActionPanel.js +4 -4
  35. package/lib/cjs/widget/components/ActionPanel.js.map +1 -1
  36. package/lib/cjs/widget/components/AddMappingsModal.d.ts +4 -4
  37. package/lib/cjs/widget/components/AddMappingsModal.d.ts.map +1 -1
  38. package/lib/cjs/widget/components/AddMappingsModal.js +23 -22
  39. package/lib/cjs/widget/components/AddMappingsModal.js.map +1 -1
  40. package/lib/cjs/widget/components/BulkExtractor.d.ts +4 -4
  41. package/lib/cjs/widget/components/BulkExtractor.d.ts.map +1 -1
  42. package/lib/cjs/widget/components/BulkExtractor.js +6 -6
  43. package/lib/cjs/widget/components/BulkExtractor.js.map +1 -1
  44. package/lib/cjs/widget/components/DeleteModal.d.ts +4 -5
  45. package/lib/cjs/widget/components/DeleteModal.d.ts.map +1 -1
  46. package/lib/cjs/widget/components/DeleteModal.js +9 -13
  47. package/lib/cjs/widget/components/DeleteModal.js.map +1 -1
  48. package/lib/cjs/widget/components/HorizontalTile.scss +6 -3
  49. package/lib/cjs/widget/components/ReportAction.d.ts +4 -5
  50. package/lib/cjs/widget/components/ReportAction.d.ts.map +1 -1
  51. package/lib/cjs/widget/components/ReportAction.js +15 -15
  52. package/lib/cjs/widget/components/ReportAction.js.map +1 -1
  53. package/lib/cjs/widget/components/ReportHorizontalTile.d.ts +4 -4
  54. package/lib/cjs/widget/components/ReportHorizontalTile.d.ts.map +1 -1
  55. package/lib/cjs/widget/components/ReportHorizontalTile.js +27 -12
  56. package/lib/cjs/widget/components/ReportHorizontalTile.js.map +1 -1
  57. package/lib/cjs/widget/components/ReportMappingHorizontalTile.d.ts +1 -1
  58. package/lib/cjs/widget/components/ReportMappingHorizontalTile.d.ts.map +1 -1
  59. package/lib/cjs/widget/components/ReportMappingHorizontalTile.js +24 -9
  60. package/lib/cjs/widget/components/ReportMappingHorizontalTile.js.map +1 -1
  61. package/lib/cjs/widget/components/ReportMappings.d.ts +4 -6
  62. package/lib/cjs/widget/components/ReportMappings.d.ts.map +1 -1
  63. package/lib/cjs/widget/components/ReportMappings.js +37 -47
  64. package/lib/cjs/widget/components/ReportMappings.js.map +1 -1
  65. package/lib/cjs/widget/components/ReportMappings.scss +3 -3
  66. package/lib/cjs/widget/components/Reports.d.ts +6 -1
  67. package/lib/cjs/widget/components/Reports.d.ts.map +1 -1
  68. package/lib/cjs/widget/components/Reports.js +42 -83
  69. package/lib/cjs/widget/components/Reports.js.map +1 -1
  70. package/lib/cjs/widget/components/ReportsConfigContext.d.ts +18 -0
  71. package/lib/cjs/widget/components/ReportsConfigContext.d.ts.map +1 -0
  72. package/lib/cjs/widget/components/ReportsConfigContext.js +87 -0
  73. package/lib/cjs/widget/components/ReportsConfigContext.js.map +1 -0
  74. package/lib/cjs/widget/components/ReportsContainer.d.ts +14 -0
  75. package/lib/cjs/widget/components/ReportsContainer.d.ts.map +1 -1
  76. package/lib/cjs/widget/components/ReportsContainer.js +28 -16
  77. package/lib/cjs/widget/components/ReportsContainer.js.map +1 -1
  78. package/lib/cjs/widget/components/ReportsHeader.d.ts +7 -0
  79. package/lib/cjs/widget/components/ReportsHeader.d.ts.map +1 -0
  80. package/lib/cjs/widget/components/ReportsHeader.js +20 -0
  81. package/lib/cjs/widget/components/ReportsHeader.js.map +1 -0
  82. package/lib/cjs/widget/components/ReportsRouter.d.ts +8 -0
  83. package/lib/cjs/widget/components/ReportsRouter.d.ts.map +1 -0
  84. package/lib/cjs/widget/components/ReportsRouter.js +52 -0
  85. package/lib/cjs/widget/components/ReportsRouter.js.map +1 -0
  86. package/lib/cjs/widget/components/SearchBar.js +1 -2
  87. package/lib/cjs/widget/components/SearchBar.js.map +1 -1
  88. package/lib/cjs/widget/components/SearchBar.scss +1 -1
  89. package/lib/cjs/widget/components/SelectIModel.d.ts +3 -3
  90. package/lib/cjs/widget/components/SelectIModel.d.ts.map +1 -1
  91. package/lib/cjs/widget/components/SelectIModel.js +6 -26
  92. package/lib/cjs/widget/components/SelectIModel.js.map +1 -1
  93. package/lib/cjs/widget/components/utils.d.ts +1 -1
  94. package/lib/cjs/widget/components/utils.d.ts.map +1 -1
  95. package/lib/cjs/widget/components/utils.js.map +1 -1
  96. package/lib/cjs/widget/context/BulkExtractorContext.d.ts +10 -0
  97. package/lib/cjs/widget/context/BulkExtractorContext.d.ts.map +1 -0
  98. package/lib/cjs/widget/context/{ReportsApiConfigContext.js → BulkExtractorContext.js} +7 -10
  99. package/lib/cjs/widget/context/BulkExtractorContext.js.map +1 -0
  100. package/lib/cjs/widget/context/ReportsConfigApiContext.d.ts +16 -0
  101. package/lib/cjs/widget/context/ReportsConfigApiContext.d.ts.map +1 -0
  102. package/lib/cjs/widget/context/ReportsConfigApiContext.js +43 -0
  103. package/lib/cjs/widget/context/ReportsConfigApiContext.js.map +1 -0
  104. package/lib/esm/reports-config-widget-react.d.ts +5 -0
  105. package/lib/esm/reports-config-widget-react.d.ts.map +1 -1
  106. package/lib/esm/reports-config-widget-react.js +5 -0
  107. package/lib/esm/reports-config-widget-react.js.map +1 -1
  108. package/lib/esm/test/AddMappingModal.test.js +16 -29
  109. package/lib/esm/test/AddMappingModal.test.js.map +1 -1
  110. package/lib/esm/test/BulkExtractor.test.js +14 -17
  111. package/lib/esm/test/BulkExtractor.test.js.map +1 -1
  112. package/lib/esm/test/DeleteModal.test.d.ts.map +1 -1
  113. package/lib/esm/test/DeleteModal.test.js +5 -44
  114. package/lib/esm/test/DeleteModal.test.js.map +1 -1
  115. package/lib/esm/test/ReportAction.test.js +14 -60
  116. package/lib/esm/test/ReportAction.test.js.map +1 -1
  117. package/lib/esm/test/ReportMappingHorizontalTile.test.js +3 -36
  118. package/lib/esm/test/ReportMappingHorizontalTile.test.js.map +1 -1
  119. package/lib/esm/test/ReportMappings.test.d.ts.map +1 -1
  120. package/lib/esm/test/ReportMappings.test.js +37 -90
  121. package/lib/esm/test/ReportMappings.test.js.map +1 -1
  122. package/lib/esm/test/Reports.test.js +20 -54
  123. package/lib/esm/test/Reports.test.js.map +1 -1
  124. package/lib/esm/test/test-utils.d.ts +3 -8
  125. package/lib/esm/test/test-utils.d.ts.map +1 -1
  126. package/lib/esm/test/test-utils.js +7 -31
  127. package/lib/esm/test/test-utils.js.map +1 -1
  128. package/lib/esm/tsconfig.tsbuildinfo +1 -1
  129. package/lib/esm/widget/components/ActionPanel.d.ts +1 -1
  130. package/lib/esm/widget/components/ActionPanel.d.ts.map +1 -1
  131. package/lib/esm/widget/components/ActionPanel.js +4 -4
  132. package/lib/esm/widget/components/ActionPanel.js.map +1 -1
  133. package/lib/esm/widget/components/AddMappingsModal.d.ts +4 -4
  134. package/lib/esm/widget/components/AddMappingsModal.d.ts.map +1 -1
  135. package/lib/esm/widget/components/AddMappingsModal.js +25 -24
  136. package/lib/esm/widget/components/AddMappingsModal.js.map +1 -1
  137. package/lib/esm/widget/components/BulkExtractor.d.ts +4 -4
  138. package/lib/esm/widget/components/BulkExtractor.d.ts.map +1 -1
  139. package/lib/esm/widget/components/BulkExtractor.js +7 -8
  140. package/lib/esm/widget/components/BulkExtractor.js.map +1 -1
  141. package/lib/esm/widget/components/DeleteModal.d.ts +4 -5
  142. package/lib/esm/widget/components/DeleteModal.d.ts.map +1 -1
  143. package/lib/esm/widget/components/DeleteModal.js +9 -13
  144. package/lib/esm/widget/components/DeleteModal.js.map +1 -1
  145. package/lib/esm/widget/components/HorizontalTile.scss +6 -3
  146. package/lib/esm/widget/components/ReportAction.d.ts +4 -5
  147. package/lib/esm/widget/components/ReportAction.d.ts.map +1 -1
  148. package/lib/esm/widget/components/ReportAction.js +14 -16
  149. package/lib/esm/widget/components/ReportAction.js.map +1 -1
  150. package/lib/esm/widget/components/ReportHorizontalTile.d.ts +4 -4
  151. package/lib/esm/widget/components/ReportHorizontalTile.d.ts.map +1 -1
  152. package/lib/esm/widget/components/ReportHorizontalTile.js +4 -5
  153. package/lib/esm/widget/components/ReportHorizontalTile.js.map +1 -1
  154. package/lib/esm/widget/components/ReportMappingHorizontalTile.d.ts +1 -1
  155. package/lib/esm/widget/components/ReportMappingHorizontalTile.d.ts.map +1 -1
  156. package/lib/esm/widget/components/ReportMappingHorizontalTile.js +1 -2
  157. package/lib/esm/widget/components/ReportMappingHorizontalTile.js.map +1 -1
  158. package/lib/esm/widget/components/ReportMappings.d.ts +4 -6
  159. package/lib/esm/widget/components/ReportMappings.d.ts.map +1 -1
  160. package/lib/esm/widget/components/ReportMappings.js +39 -49
  161. package/lib/esm/widget/components/ReportMappings.js.map +1 -1
  162. package/lib/esm/widget/components/ReportMappings.scss +3 -3
  163. package/lib/esm/widget/components/Reports.d.ts +6 -1
  164. package/lib/esm/widget/components/Reports.d.ts.map +1 -1
  165. package/lib/esm/widget/components/Reports.js +45 -86
  166. package/lib/esm/widget/components/Reports.js.map +1 -1
  167. package/lib/esm/widget/components/ReportsConfigContext.d.ts +18 -0
  168. package/lib/esm/widget/components/ReportsConfigContext.d.ts.map +1 -0
  169. package/lib/esm/widget/components/ReportsConfigContext.js +64 -0
  170. package/lib/esm/widget/components/ReportsConfigContext.js.map +1 -0
  171. package/lib/esm/widget/components/ReportsContainer.d.ts +14 -0
  172. package/lib/esm/widget/components/ReportsContainer.d.ts.map +1 -1
  173. package/lib/esm/widget/components/ReportsContainer.js +28 -17
  174. package/lib/esm/widget/components/ReportsContainer.js.map +1 -1
  175. package/lib/esm/widget/components/ReportsHeader.d.ts +7 -0
  176. package/lib/esm/widget/components/ReportsHeader.d.ts.map +1 -0
  177. package/lib/esm/widget/components/ReportsHeader.js +13 -0
  178. package/lib/esm/widget/components/ReportsHeader.js.map +1 -0
  179. package/lib/esm/widget/components/ReportsRouter.d.ts +8 -0
  180. package/lib/esm/widget/components/ReportsRouter.d.ts.map +1 -0
  181. package/lib/esm/widget/components/ReportsRouter.js +45 -0
  182. package/lib/esm/widget/components/ReportsRouter.js.map +1 -0
  183. package/lib/esm/widget/components/SearchBar.js +1 -2
  184. package/lib/esm/widget/components/SearchBar.js.map +1 -1
  185. package/lib/esm/widget/components/SearchBar.scss +1 -1
  186. package/lib/esm/widget/components/SelectIModel.d.ts +3 -3
  187. package/lib/esm/widget/components/SelectIModel.d.ts.map +1 -1
  188. package/lib/esm/widget/components/SelectIModel.js +7 -27
  189. package/lib/esm/widget/components/SelectIModel.js.map +1 -1
  190. package/lib/esm/widget/components/utils.d.ts +1 -1
  191. package/lib/esm/widget/components/utils.d.ts.map +1 -1
  192. package/lib/esm/widget/components/utils.js.map +1 -1
  193. package/lib/esm/widget/context/BulkExtractorContext.d.ts +10 -0
  194. package/lib/esm/widget/context/BulkExtractorContext.d.ts.map +1 -0
  195. package/lib/esm/widget/context/BulkExtractorContext.js +11 -0
  196. package/lib/esm/widget/context/BulkExtractorContext.js.map +1 -0
  197. package/lib/esm/widget/context/ReportsConfigApiContext.d.ts +16 -0
  198. package/lib/esm/widget/context/ReportsConfigApiContext.d.ts.map +1 -0
  199. package/lib/esm/widget/context/ReportsConfigApiContext.js +20 -0
  200. package/lib/esm/widget/context/ReportsConfigApiContext.js.map +1 -0
  201. package/lib/public/locales/en/ReportsConfigWidget.json +2 -1
  202. package/package.json +4 -4
  203. package/public/locales/en/ReportsConfigWidget.json +2 -1
  204. package/reports-config-widget-react.build.error.log +1 -14
  205. package/reports-config-widget-react.build.log +2 -60
  206. package/src/reports-config-widget-react.ts +6 -0
  207. package/src/test/AddMappingModal.test.tsx +20 -37
  208. package/src/test/BulkExtractor.test.ts +15 -17
  209. package/src/test/DeleteModal.test.tsx +4 -73
  210. package/src/test/ReportAction.test.tsx +17 -90
  211. package/src/test/ReportMappingHorizontalTile.test.tsx +3 -54
  212. package/src/test/ReportMappings.test.tsx +50 -135
  213. package/src/test/Reports.test.tsx +21 -80
  214. package/src/test/test-utils.tsx +9 -49
  215. package/src/widget/components/ActionPanel.tsx +16 -14
  216. package/src/widget/components/AddMappingsModal.tsx +39 -39
  217. package/src/widget/components/BulkExtractor.ts +11 -10
  218. package/src/widget/components/DeleteModal.tsx +14 -20
  219. package/src/widget/components/HorizontalTile.scss +6 -3
  220. package/src/widget/components/ReportAction.tsx +15 -30
  221. package/src/widget/components/ReportHorizontalTile.tsx +10 -11
  222. package/src/widget/components/ReportMappingHorizontalTile.tsx +2 -3
  223. package/src/widget/components/ReportMappings.scss +3 -3
  224. package/src/widget/components/ReportMappings.tsx +66 -69
  225. package/src/widget/components/Reports.tsx +143 -187
  226. package/src/widget/components/ReportsConfigContext.tsx +95 -0
  227. package/src/widget/components/ReportsContainer.tsx +47 -21
  228. package/src/widget/components/ReportsHeader.tsx +27 -0
  229. package/src/widget/components/ReportsRouter.tsx +63 -0
  230. package/src/widget/components/SearchBar.scss +1 -1
  231. package/src/widget/components/SearchBar.tsx +2 -2
  232. package/src/widget/components/SelectIModel.tsx +11 -29
  233. package/src/widget/components/utils.tsx +1 -1
  234. package/src/widget/context/{ReportsApiConfigContext.tsx → BulkExtractorContext.tsx} +9 -10
  235. package/src/widget/context/ReportsConfigApiContext.tsx +39 -0
  236. package/coverage/clover.xml +0 -838
  237. package/coverage/coverage-final.json +0 -29
  238. package/coverage/lcov-report/base.css +0 -224
  239. package/coverage/lcov-report/block-navigation.js +0 -87
  240. package/coverage/lcov-report/favicon.png +0 -0
  241. package/coverage/lcov-report/index.html +0 -206
  242. package/coverage/lcov-report/prettify.css +0 -1
  243. package/coverage/lcov-report/prettify.js +0 -2
  244. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  245. package/coverage/lcov-report/sorter.js +0 -196
  246. package/coverage/lcov-report/src/ReportsConfigWidget.ts.html +0 -193
  247. package/coverage/lcov-report/src/index.html +0 -116
  248. package/coverage/lcov-report/src/test/index.html +0 -116
  249. package/coverage/lcov-report/src/test/test-utils.tsx.html +0 -316
  250. package/coverage/lcov-report/src/widget/ReportsConfigUiProvider.tsx.html +0 -286
  251. package/coverage/lcov-report/src/widget/components/ActionPanel.tsx.html +0 -241
  252. package/coverage/lcov-report/src/widget/components/AddMappingsModal.tsx.html +0 -604
  253. package/coverage/lcov-report/src/widget/components/BulkExtractor.ts.html +0 -661
  254. package/coverage/lcov-report/src/widget/components/Constants.ts.html +0 -106
  255. package/coverage/lcov-report/src/widget/components/DeleteModal.tsx.html +0 -385
  256. package/coverage/lcov-report/src/widget/components/ExtractionStates/FailedExtractionState.tsx.html +0 -187
  257. package/coverage/lcov-report/src/widget/components/ExtractionStates/QueuedExtractionState.tsx.html +0 -145
  258. package/coverage/lcov-report/src/widget/components/ExtractionStates/RunningExtractionState.tsx.html +0 -139
  259. package/coverage/lcov-report/src/widget/components/ExtractionStates/StartingExtractionState.tsx.html +0 -151
  260. package/coverage/lcov-report/src/widget/components/ExtractionStates/SucceededExtractionState.tsx.html +0 -190
  261. package/coverage/lcov-report/src/widget/components/ExtractionStates/index.html +0 -176
  262. package/coverage/lcov-report/src/widget/components/ExtractionStatus.tsx.html +0 -295
  263. package/coverage/lcov-report/src/widget/components/ExtractionToast.tsx.html +0 -208
  264. package/coverage/lcov-report/src/widget/components/HorizontalTile.tsx.html +0 -289
  265. package/coverage/lcov-report/src/widget/components/LocalizedTablePaginator.tsx.html +0 -262
  266. package/coverage/lcov-report/src/widget/components/ReportAction.tsx.html +0 -517
  267. package/coverage/lcov-report/src/widget/components/ReportHorizontalTile.tsx.html +0 -475
  268. package/coverage/lcov-report/src/widget/components/ReportMappingHorizontalTile.tsx.html +0 -469
  269. package/coverage/lcov-report/src/widget/components/ReportMappings.tsx.html +0 -1078
  270. package/coverage/lcov-report/src/widget/components/Reports.tsx.html +0 -877
  271. package/coverage/lcov-report/src/widget/components/ReportsContainer.tsx.html +0 -223
  272. package/coverage/lcov-report/src/widget/components/SearchBar.tsx.html +0 -271
  273. package/coverage/lcov-report/src/widget/components/SelectIModel.tsx.html +0 -391
  274. package/coverage/lcov-report/src/widget/components/index.html +0 -371
  275. package/coverage/lcov-report/src/widget/components/utils.tsx.html +0 -562
  276. package/coverage/lcov-report/src/widget/context/ReportsApiConfigContext.tsx.html +0 -166
  277. package/coverage/lcov-report/src/widget/context/index.html +0 -116
  278. package/coverage/lcov-report/src/widget/hooks/index.html +0 -116
  279. package/coverage/lcov-report/src/widget/hooks/useValidator.ts.html +0 -295
  280. package/coverage/lcov-report/src/widget/index.html +0 -116
  281. package/coverage/lcov.info +0 -1594
  282. package/lib/cjs/widget/context/ReportsApiConfigContext.d.ts +0 -9
  283. package/lib/cjs/widget/context/ReportsApiConfigContext.d.ts.map +0 -1
  284. package/lib/cjs/widget/context/ReportsApiConfigContext.js.map +0 -1
  285. package/lib/esm/widget/context/ReportsApiConfigContext.d.ts +0 -9
  286. package/lib/esm/widget/context/ReportsApiConfigContext.d.ts.map +0 -1
  287. package/lib/esm/widget/context/ReportsApiConfigContext.js +0 -14
  288. package/lib/esm/widget/context/ReportsApiConfigContext.js.map +0 -1
@@ -3,7 +3,7 @@ import "./ActionPanel.scss";
3
3
  export interface ActionPanelProps {
4
4
  actionLabel: string;
5
5
  onAction: () => Promise<void>;
6
- onCancel: () => void;
6
+ onCancel?: () => void;
7
7
  isCancelDisabled?: boolean;
8
8
  isSavingDisabled?: boolean;
9
9
  isLoading?: boolean;
@@ -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,WAuBrB,CAAC;AAEF,eAAe,WAAW,CAAC"}
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,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,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,WAyBrB,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
5
  import { Button } from "@itwin/itwinui-react";
6
6
  import * as React from "react";
7
7
  import { ReportsConfigWidget } from "../../ReportsConfigWidget";
@@ -11,7 +11,7 @@ const ActionPanel = ({ actionLabel, onAction, onCancel, isCancelDisabled = false
11
11
  return (React.createElement("div", { className: "rcw-action-panel" },
12
12
  isLoading && React.createElement(LoadingSpinner, null),
13
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"))));
14
+ onCancel && (React.createElement(Button, { styleType: "default", type: "button", onClick: onCancel, disabled: isCancelDisabled || isLoading }, ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Cancel")))));
15
15
  };
16
16
  export default ActionPanel;
17
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,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"]}
1
+ {"version":3,"file":"ActionPanel.js","sourceRoot":"","sources":["../../../../src/widget/components/ActionPanel.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,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;QACR,QAAQ,IAAI,CACX,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,CACV,CACG,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 {onCancel && (\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 )}\n </div>\n );\n};\n\nexport default ActionPanel;\n"]}
@@ -4,12 +4,12 @@ import "./AddMappingsModal.scss";
4
4
  import type { ReportMappingAndMapping } from "./ReportMappings";
5
5
  import type { CreateTypeFromInterface } from "./utils";
6
6
  export declare type MappingType = CreateTypeFromInterface<Mapping>;
7
- interface AddMappingsModalProps {
7
+ export interface AddMappingsModalProps {
8
8
  reportId: string;
9
9
  existingMappings: ReportMappingAndMapping[];
10
10
  show: boolean;
11
- returnFn: () => Promise<void>;
11
+ onClose: () => Promise<void>;
12
+ defaultIModelId?: string;
12
13
  }
13
- export declare const AddMappingsModal: ({ reportId, existingMappings, show, returnFn, }: AddMappingsModalProps) => JSX.Element;
14
- export {};
14
+ export declare const AddMappingsModal: ({ reportId, existingMappings, show, onClose, defaultIModelId, }: AddMappingsModalProps) => JSX.Element;
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,eAAO,MAAM,gBAAgB,oDAK1B,qBAAqB,gBAmHvB,CAAC"}
1
+ {"version":3,"file":"AddMappingsModal.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/AddMappingsModal.tsx"],"names":[],"mappings":";AAMA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,wBAAwB,CAAC;AAEtE,OAAO,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAGhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAKvD,oBAAY,WAAW,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAwB3D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,uBAAuB,EAAE,CAAC;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,gBAAgB,oEAM1B,qBAAqB,gBAoHvB,CAAC"}
@@ -3,21 +3,19 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { Modal, Table, tableFilters } from "@itwin/itwinui-react";
6
- import React, { useEffect, useMemo, useState } from "react";
7
- import { MappingsClient, REPORTING_BASE_PATH, ReportsClient } from "@itwin/insights-client";
6
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
8
7
  import ActionPanel from "./ActionPanel";
9
8
  import "./AddMappingsModal.scss";
10
9
  import { LocalizedTablePaginator } from "./LocalizedTablePaginator";
11
- import { useReportsApiConfig } from "../context/ReportsApiConfigContext";
10
+ import { useReportsConfigApi } from "../context/ReportsConfigApiContext";
12
11
  import { SelectIModel } from "./SelectIModel";
13
- import { generateUrl, handleError } from "./utils";
12
+ import { handleError } from "./utils";
14
13
  import { ReportsConfigWidget } from "../../ReportsConfigWidget";
15
- const fetchMappings = async (setMappings, iModelId, setIsLoading, apiContext) => {
14
+ const fetchMappings = async (setMappings, iModelId, setIsLoading, mappingsClient, getAccessToken) => {
16
15
  try {
17
16
  setIsLoading(true);
18
- const mappingsClientApi = new MappingsClient(generateUrl(REPORTING_BASE_PATH, apiContext.baseUrl));
19
- const accessToken = await apiContext.getAccessToken();
20
- const mappings = await mappingsClientApi.getMappings(accessToken, iModelId);
17
+ const accessToken = await getAccessToken();
18
+ const mappings = await mappingsClient.getMappings(accessToken, iModelId);
21
19
  setMappings(mappings);
22
20
  }
23
21
  catch (error) {
@@ -27,17 +25,17 @@ const fetchMappings = async (setMappings, iModelId, setIsLoading, apiContext) =>
27
25
  setIsLoading(false);
28
26
  }
29
27
  };
30
- export const AddMappingsModal = ({ reportId, existingMappings, show, returnFn, }) => {
28
+ export const AddMappingsModal = ({ reportId, existingMappings, show, onClose, defaultIModelId, }) => {
31
29
  const [isLoading, setIsLoading] = useState(false);
32
- const [selectedMappings, setSelectedMappings] = useState([]);
33
- const [selectedIModelId, setSelectediModelId] = useState("");
30
+ const selectedMappings = useRef([]);
31
+ const [selectedIModelId, setSelectediModelId] = useState(defaultIModelId);
34
32
  const [mappings, setMappings] = useState([]);
35
- const apiConfig = useReportsApiConfig();
33
+ const { getAccessToken, mappingsClient, reportsClient } = useReportsConfigApi();
36
34
  useEffect(() => {
37
35
  if (selectedIModelId) {
38
- void fetchMappings(setMappings, selectedIModelId, setIsLoading, apiConfig);
36
+ void fetchMappings(setMappings, selectedIModelId, setIsLoading, mappingsClient, getAccessToken);
39
37
  }
40
- }, [apiConfig, selectedIModelId, setIsLoading]);
38
+ }, [getAccessToken, mappingsClient, selectedIModelId, setIsLoading]);
41
39
  const mappingsColumns = useMemo(() => [
42
40
  {
43
41
  Header: "Table",
@@ -62,15 +60,14 @@ export const AddMappingsModal = ({ reportId, existingMappings, show, returnFn, }
62
60
  if (!selectedIModelId)
63
61
  return;
64
62
  setIsLoading(true);
65
- const reportsClientApi = new ReportsClient(generateUrl(REPORTING_BASE_PATH, apiConfig.baseUrl));
66
- const accessToken = await apiConfig.getAccessToken();
67
- for (const mapping of selectedMappings) {
68
- await reportsClientApi.createReportMapping(accessToken, reportId, {
63
+ const accessToken = await getAccessToken();
64
+ for (const mapping of selectedMappings.current) {
65
+ await reportsClient.createReportMapping(accessToken, reportId, {
69
66
  imodelId: selectedIModelId,
70
67
  mappingId: mapping.id,
71
68
  });
72
69
  }
73
- await returnFn();
70
+ await onClose();
74
71
  }
75
72
  catch (error) {
76
73
  handleError(error.status);
@@ -79,14 +76,18 @@ export const AddMappingsModal = ({ reportId, existingMappings, show, returnFn, }
79
76
  setIsLoading(false);
80
77
  }
81
78
  };
79
+ const onSelect = useCallback((selectData) => {
80
+ if (selectData)
81
+ selectedMappings.current = selectData;
82
+ }, []);
83
+ const tableData = useMemo(() => isLoading ? [] : mappings, [isLoading, mappings]);
84
+ const isRowDisabled = useCallback((rowData) => existingMappings.some((v) => v.mappingId === rowData.id), [existingMappings]);
82
85
  return (React.createElement(Modal, { title: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:AddMappings"), isOpen: show, isDismissible: !isLoading, onClose: async () => {
83
- await returnFn();
86
+ await onClose();
84
87
  }, style: { display: "flex", flexDirection: "column", maxHeight: "77vh" } },
85
88
  React.createElement("div", { className: "rcw-add-mappings-container" },
86
89
  React.createElement(SelectIModel, { selectedIModelId: selectedIModelId, setSelectedIModelId: setSelectediModelId }),
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
- selectData && setSelectedMappings(selectData);
89
- }, paginatorRenderer: LocalizedTablePaginator })),
90
- React.createElement(ActionPanel, { actionLabel: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Add"), onAction: onSave, onCancel: returnFn, isSavingDisabled: selectedMappings.length === 0, isLoading: isLoading })));
90
+ React.createElement(Table, { data: tableData, columns: mappingsColumns, className: "rcw-add-mappings-table", emptyTableContent: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:NoMappingsAvailable"), isSortable: true, isSelectable: true, isLoading: isLoading, isRowDisabled: isRowDisabled, onSelect: onSelect, paginatorRenderer: LocalizedTablePaginator })),
91
+ React.createElement(ActionPanel, { actionLabel: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Add"), onAction: onSave, isLoading: isLoading })));
91
92
  };
92
93
  //# sourceMappingURL=AddMappingsModal.js.map
@@ -1 +1 @@
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"]}
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, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport type { Mapping, MappingsClient } from \"@itwin/insights-client\";\nimport ActionPanel from \"./ActionPanel\";\nimport \"./AddMappingsModal.scss\";\nimport { LocalizedTablePaginator } from \"./LocalizedTablePaginator\";\nimport type { ReportMappingAndMapping } from \"./ReportMappings\";\nimport { useReportsConfigApi } from \"../context/ReportsConfigApiContext\";\nimport { SelectIModel } from \"./SelectIModel\";\nimport type { CreateTypeFromInterface } from \"./utils\";\nimport { handleError } from \"./utils\";\nimport { ReportsConfigWidget } from \"../../ReportsConfigWidget\";\nimport type { AccessToken } from \"@itwin/core-bentley\";\n\nexport type MappingType = CreateTypeFromInterface<Mapping>;\n\nconst fetchMappings = async (\n setMappings: (mappings: Mapping[]) => void,\n iModelId: string,\n setIsLoading: (isLoading: boolean) => void,\n mappingsClient: MappingsClient,\n getAccessToken: () => Promise<AccessToken>\n) => {\n try {\n setIsLoading(true);\n const accessToken = await getAccessToken();\n const mappings = await mappingsClient.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\nexport interface AddMappingsModalProps {\n reportId: string;\n existingMappings: ReportMappingAndMapping[];\n show: boolean;\n onClose: () => Promise<void>;\n defaultIModelId?: string;\n}\n\nexport const AddMappingsModal = ({\n reportId,\n existingMappings,\n show,\n onClose,\n defaultIModelId,\n}: AddMappingsModalProps) => {\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const selectedMappings = useRef<Mapping[]>([]);\n const [selectedIModelId, setSelectediModelId] = useState<string | undefined>(defaultIModelId);\n const [mappings, setMappings] = useState<Mapping[]>([]);\n const { getAccessToken, mappingsClient, reportsClient } = useReportsConfigApi();\n\n useEffect(() => {\n if (selectedIModelId) {\n void fetchMappings(\n setMappings,\n selectedIModelId,\n setIsLoading,\n mappingsClient,\n getAccessToken\n );\n }\n }, [getAccessToken, mappingsClient, 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 accessToken = await getAccessToken();\n for (const mapping of selectedMappings.current) {\n await reportsClient.createReportMapping(accessToken, reportId, {\n imodelId: selectedIModelId,\n mappingId: mapping.id,\n });\n }\n\n await onClose();\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n };\n\n const onSelect = useCallback((selectData: Mapping[] | undefined) => {\n if (selectData) selectedMappings.current = selectData;\n }, []);\n\n const tableData = useMemo(() => isLoading ? [] : mappings, [isLoading, mappings]);\n const isRowDisabled = useCallback((rowData: MappingType) =>\n existingMappings.some((v) => v.mappingId === rowData.id), [existingMappings]);\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 onClose();\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={tableData}\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={isRowDisabled}\n onSelect={onSelect}\n paginatorRenderer={LocalizedTablePaginator}\n />\n </div>\n {/* Add button permanently enabled as a workaround to the warning stating that the table and parent component are being rendered at the same time. */}\n <ActionPanel\n actionLabel={ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:Add\"\n )}\n onAction={onSave}\n isLoading={isLoading}\n />\n </Modal>\n );\n};\n"]}
@@ -1,13 +1,13 @@
1
1
  /// <reference types="react" />
2
- import type { ReportMapping } from "@itwin/insights-client";
3
- import type { ReportsApiConfig } from "../context/ReportsApiConfigContext";
2
+ import type { ExtractionClient, ReportMapping, ReportsClient } from "@itwin/insights-client";
4
3
  import { ExtractionStates } from "./ExtractionStatus";
4
+ import type { AccessToken } from "@itwin/core-bentley";
5
5
  export declare type ReportMappingAndMapping = ReportMapping & {
6
6
  mappingName: string;
7
7
  mappingDescription: string;
8
8
  iModelName: string;
9
9
  };
10
- export default class BulkExtractor {
10
+ export declare class BulkExtractor {
11
11
  private _reportsClientApi;
12
12
  private _extractionClientApi;
13
13
  private _accessToken;
@@ -20,7 +20,7 @@ export default class BulkExtractor {
20
20
  private _failedExtractionToast;
21
21
  private _setJobRunning;
22
22
  private _iModels;
23
- constructor(apiConfig: ReportsApiConfig, successfulExtractionToast: (iModelName: string, odataFeedUrl: string) => void, failedExtractionToast: (iModelName: string) => void);
23
+ constructor(reportsClient: ReportsClient, extractionClient: ExtractionClient, getAccessToken: () => Promise<AccessToken>, successfulExtractionToast: (iModelName: string, odataFeedUrl: string) => void, failedExtractionToast: (iModelName: string) => void);
24
24
  private fetchStates;
25
25
  getReportState(reportId: string): Promise<ExtractionStates>;
26
26
  getIModelState(iModelId: string, iModelName: string, odataFeedUrl: string): Promise<ExtractionStates>;
@@ -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,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"}
1
+ {"version":3,"file":"BulkExtractor.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/BulkExtractor.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,oBAAY,uBAAuB,GAAG,aAAa,GAAG;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qBAAa,aAAa;IACxB,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,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,EAC1C,yBAAyB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,EAC7E,qBAAqB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI;YASvC,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"}
@@ -2,22 +2,21 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- import { ExtractionClient, ExtractorState, REPORTING_BASE_PATH, ReportsClient } from "@itwin/insights-client";
6
- import { generateUrl, handleError } from "./utils";
5
+ import { ExtractorState } from "@itwin/insights-client";
6
+ import { handleError } from "./utils";
7
7
  import { ExtractionStates } from "./ExtractionStatus";
8
8
  import { STATUS_CHECK_INTERVAL } from "./Constants";
9
- export default class BulkExtractor {
10
- constructor(apiConfig, successfulExtractionToast, failedExtractionToast) {
9
+ export class BulkExtractor {
10
+ constructor(reportsClient, extractionClient, getAccessToken, successfulExtractionToast, failedExtractionToast) {
11
11
  this._reportIModels = new Map(); // key: reportId, value: iModels
12
12
  this._iModelStates = new Map(); // key: iModelId, value: state
13
13
  this._timeFetched = new Date();
14
14
  this._iModelRun = new Map(); // key: iModelId, value: runId
15
15
  this._iModelToast = new Set();
16
16
  this._iModels = [];
17
- const url = generateUrl(REPORTING_BASE_PATH, apiConfig.baseUrl);
18
- this._reportsClientApi = new ReportsClient(url);
19
- this._extractionClientApi = new ExtractionClient(url);
20
- this._accessToken = apiConfig.getAccessToken;
17
+ this._reportsClientApi = reportsClient;
18
+ this._extractionClientApi = extractionClient;
19
+ this._accessToken = getAccessToken;
21
20
  this._successfulExtractionToast = successfulExtractionToast;
22
21
  this._failedExtractionToast = failedExtractionToast;
23
22
  }
@@ -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 _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"]}
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 { ExtractorState } from \"@itwin/insights-client\";\nimport type { ExtractionClient, ReportMapping, ReportsClient } from \"@itwin/insights-client\";\nimport { handleError } from \"./utils\";\nimport { ExtractionStates } from \"./ExtractionStatus\";\nimport { STATUS_CHECK_INTERVAL } from \"./Constants\";\nimport type { AccessToken } from \"@itwin/core-bentley\";\n\nexport type ReportMappingAndMapping = ReportMapping & {\n mappingName: string;\n mappingDescription: string;\n iModelName: string;\n};\n\nexport 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 reportsClient: ReportsClient,\n extractionClient: ExtractionClient,\n getAccessToken: () => Promise<AccessToken>,\n successfulExtractionToast: (iModelName: string, odataFeedUrl: string) => void,\n failedExtractionToast: (iModelName: string) => void,\n ) {\n this._reportsClientApi = reportsClient;\n this._extractionClientApi = extractionClient;\n this._accessToken = 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"]}
@@ -1,12 +1,11 @@
1
- import React from "react";
1
+ /// <reference types="react" />
2
2
  import "./DeleteModal.scss";
3
3
  export interface DeleteModalProps {
4
- entityName: string;
5
- show: boolean;
6
- setShow: React.Dispatch<React.SetStateAction<boolean>>;
4
+ entityName?: string;
5
+ onClose: () => void;
7
6
  onDelete: () => Promise<void>;
8
7
  refresh: () => Promise<void>;
9
8
  }
10
- export declare const DeleteModal: ({ entityName, show, setShow, onDelete, refresh, }: DeleteModalProps) => JSX.Element;
9
+ export declare const DeleteModal: ({ entityName, onClose, onDelete, refresh, }: DeleteModalProps) => JSX.Element;
11
10
  export default DeleteModal;
12
11
  //# sourceMappingURL=DeleteModal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteModal.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/DeleteModal.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,oBAAoB,CAAC;AAG5B,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,eAAO,MAAM,WAAW,sDAMrB,gBAAgB,gBAkElB,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"DeleteModal.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/DeleteModal.tsx"],"names":[],"mappings":";AAcA,OAAO,oBAAoB,CAAC;AAG5B,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,eAAO,MAAM,WAAW,gDAKrB,gBAAgB,gBA8DlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -7,36 +7,32 @@ import React, { useState } from "react";
7
7
  import { ReportsConfigWidget } from "../../ReportsConfigWidget";
8
8
  import "./DeleteModal.scss";
9
9
  import { handleError, LoadingSpinner } from "./utils";
10
- export const DeleteModal = ({ entityName, show, setShow, onDelete, refresh, }) => {
11
- const [isLoading, setIsLoading] = useState(false);
10
+ export const DeleteModal = ({ entityName, onClose, onDelete, refresh, }) => {
11
+ const [isDeleting, setIsDeleting] = useState(false);
12
12
  const deleteCallback = async () => {
13
13
  try {
14
- setIsLoading(true);
14
+ setIsDeleting(true);
15
15
  await onDelete();
16
- setShow(false);
17
16
  await refresh();
17
+ onClose();
18
18
  }
19
19
  catch (error) {
20
20
  handleError(error.status);
21
21
  }
22
22
  finally {
23
- setIsLoading(false);
23
+ setIsDeleting(false);
24
24
  }
25
25
  };
26
- return (React.createElement(Modal, { title: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Confirm"), isOpen: show, isDismissible: !isLoading, onClose: () => {
27
- setShow(false);
28
- } },
26
+ return (React.createElement(Modal, { title: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Confirm"), isOpen: !!entityName, isDismissible: !isDeleting, onClose: onClose },
29
27
  React.createElement(ModalContent, null,
30
28
  React.createElement("div", { className: "rcw-delete-modal-body-text" },
31
29
  React.createElement(Leading, null, ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:AreYouSureYouWantToDelete")),
32
30
  React.createElement("strong", null, React.createElement(MiddleTextTruncation, { text: `${entityName}?` })))),
33
31
  React.createElement(ModalButtonBar, null,
34
- isLoading && (React.createElement("div", { className: "rcw-loading-delete", "data-testid": "rcw-loading-delete" },
32
+ isDeleting && (React.createElement("div", { className: "rcw-loading-delete", "data-testid": "rcw-loading-delete" },
35
33
  React.createElement(LoadingSpinner, null))),
36
- React.createElement(Button, { styleType: "high-visibility", onClick: deleteCallback, disabled: isLoading }, ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Delete")),
37
- React.createElement(Button, { styleType: "default", onClick: () => {
38
- setShow(false);
39
- }, disabled: isLoading }, ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Cancel")))));
34
+ React.createElement(Button, { styleType: "high-visibility", onClick: deleteCallback, disabled: isDeleting }, ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Delete")),
35
+ React.createElement(Button, { styleType: "default", onClick: onClose, disabled: isDeleting }, ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Cancel")))));
40
36
  };
41
37
  export default DeleteModal;
42
38
  //# sourceMappingURL=DeleteModal.js.map
@@ -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,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"]}
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;AAStD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,UAAU,EACV,OAAO,EACP,QAAQ,EACR,OAAO,GACU,EAAE,EAAE;IACrB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAE7D,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;QAChC,IAAI;YACF,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,MAAM,QAAQ,EAAE,CAAC;YACjB,MAAM,OAAO,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;SACX;QAAC,OAAO,KAAU,EAAE;YACnB,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC3B;gBAAS;YACR,aAAa,CAAC,KAAK,CAAC,CAAC;SACtB;IACH,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,KAAK,IACJ,KAAK,EAAE,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CACxD,6BAA6B,CAC9B,EACD,MAAM,EAAE,CAAC,CAAC,UAAU,EACpB,aAAa,EAAE,CAAC,UAAU,EAC1B,OAAO,EAAE,OAAO;QAEhB,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,UAAU,IAAI,CACb,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,UAAU,IAEnB,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CAClD,4BAA4B,CAC7B,CACM;YACT,oBAAC,MAAM,IACL,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,UAAU,IAEnB,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 onClose: () => void;\n onDelete: () => Promise<void>;\n refresh: () => Promise<void>;\n}\n\nexport const DeleteModal = ({\n entityName,\n onClose,\n onDelete,\n refresh,\n}: DeleteModalProps) => {\n const [isDeleting, setIsDeleting] = useState<boolean>(false);\n\n const deleteCallback = async () => {\n try {\n setIsDeleting(true);\n await onDelete();\n await refresh();\n onClose();\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsDeleting(false);\n }\n };\n\n return (\n <Modal\n title={ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:Confirm\"\n )}\n isOpen={!!entityName}\n isDismissible={!isDeleting}\n onClose={onClose}\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 {isDeleting && (\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={isDeleting}\n >\n {ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:Delete\"\n )}\n </Button>\n <Button\n styleType=\"default\"\n onClick={onClose}\n disabled={isDeleting}\n >\n {ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:Cancel\"\n )}\n </Button>\n </ModalButtonBar>\n </Modal>\n );\n};\n\nexport default DeleteModal;\n"]}
@@ -12,6 +12,7 @@
12
12
  border-radius: 5px;
13
13
  background-color: var(--iui-color-background-2);
14
14
  height: $iui-baseline * 4;
15
+ min-height: 44px;
15
16
  padding: 5.5px $iui-s;
16
17
 
17
18
  .rcw-body-container {
@@ -44,9 +45,11 @@
44
45
  &-selected {
45
46
  @include themed {
46
47
  border: 1px solid t(iui-color-foreground-primary);
47
- background: linear-gradient(rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-6)),
48
- rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-6))),
48
+ background: linear-gradient(
49
+ rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-6)),
50
+ rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-6))
51
+ ),
49
52
  linear-gradient(t(iui-color-background-1), t(iui-color-background-1));
50
53
  }
51
54
  }
52
- }
55
+ }
@@ -1,11 +1,10 @@
1
1
  /// <reference types="react" />
2
2
  import "./ReportAction.scss";
3
3
  import type { Report } from "@itwin/insights-client";
4
- interface ReportActionProps {
5
- iTwinId: string;
4
+ export interface ReportActionProps {
6
5
  report?: Report;
7
- returnFn: () => Promise<void>;
6
+ onSaveSuccess: () => void;
7
+ onClickCancel?: () => void;
8
8
  }
9
- declare const ReportAction: ({ iTwinId, report, returnFn }: ReportActionProps) => JSX.Element;
10
- export default ReportAction;
9
+ export declare const ReportAction: ({ report, onSaveSuccess, onClickCancel }: ReportActionProps) => JSX.Element;
11
10
  //# sourceMappingURL=ReportAction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReportAction.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/ReportAction.tsx"],"names":[],"mappings":";AAcA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAKrD,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,QAAA,MAAM,YAAY,kCAAmC,iBAAiB,gBAmHrE,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"ReportAction.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/ReportAction.tsx"],"names":[],"mappings":";AAYA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAIrD,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,eAAO,MAAM,YAAY,6CAA8C,iBAAiB,gBAwGvF,CAAC"}
@@ -6,14 +6,13 @@ import { Fieldset, LabeledInput, Small } from "@itwin/itwinui-react";
6
6
  import React, { useState } from "react";
7
7
  import ActionPanel from "./ActionPanel";
8
8
  import useValidator, { NAME_REQUIREMENTS } from "../hooks/useValidator";
9
- import { generateUrl, handleError, handleInputChange, WidgetHeader, } from "./utils";
9
+ import { handleError, handleInputChange, } from "./utils";
10
10
  import "./ReportAction.scss";
11
- import { REPORTING_BASE_PATH, ReportsClient } from "@itwin/insights-client";
12
- import { useReportsApiConfig } from "../context/ReportsApiConfigContext";
11
+ import { useReportsConfigApi } from "../context/ReportsConfigApiContext";
13
12
  import { ReportsConfigWidget } from "../../ReportsConfigWidget";
14
- const ReportAction = ({ iTwinId, report, returnFn }) => {
13
+ export const ReportAction = ({ report, onSaveSuccess, onClickCancel }) => {
15
14
  var _a, _b;
16
- const apiConfig = useReportsApiConfig();
15
+ const { iTwinId, getAccessToken, reportsClient } = useReportsConfigApi();
17
16
  const [values, setValues] = useState({
18
17
  name: (_a = report === null || report === void 0 ? void 0 : report.displayName) !== null && _a !== void 0 ? _a : "",
19
18
  description: (_b = report === null || report === void 0 ? void 0 : report.description) !== null && _b !== void 0 ? _b : "",
@@ -21,26 +20,29 @@ const ReportAction = ({ iTwinId, report, returnFn }) => {
21
20
  const [validator, showValidationMessage] = useValidator();
22
21
  const [isLoading, setIsLoading] = useState(false);
23
22
  const onSave = async () => {
24
- var _a;
23
+ var _a, _b, _c;
25
24
  try {
26
25
  if (!validator.allValid()) {
27
26
  showValidationMessage(true);
28
27
  return;
29
28
  }
30
29
  setIsLoading(true);
31
- const reportsClientApi = new ReportsClient(generateUrl(REPORTING_BASE_PATH, apiConfig.baseUrl));
32
- const accessToken = await apiConfig.getAccessToken();
30
+ const accessToken = await getAccessToken();
33
31
  report
34
- ? await reportsClientApi.updateReport(accessToken, (_a = report.id) !== null && _a !== void 0 ? _a : "", {
32
+ ? await reportsClient.updateReport(accessToken, (_a = report.id) !== null && _a !== void 0 ? _a : "", {
35
33
  displayName: values.name,
36
34
  description: values.description,
37
35
  })
38
- : await reportsClientApi.createReport(accessToken, {
36
+ : await reportsClient.createReport(accessToken, {
39
37
  displayName: values.name,
40
38
  description: values.description,
41
39
  projectId: iTwinId,
42
40
  });
43
- await returnFn();
41
+ onSaveSuccess();
42
+ setValues({
43
+ name: (_b = report === null || report === void 0 ? void 0 : report.displayName) !== null && _b !== void 0 ? _b : "",
44
+ description: (_c = report === null || report === void 0 ? void 0 : report.description) !== null && _c !== void 0 ? _c : "",
45
+ });
44
46
  }
45
47
  catch (error) {
46
48
  handleError(error.status);
@@ -51,9 +53,6 @@ const ReportAction = ({ iTwinId, report, returnFn }) => {
51
53
  }
52
54
  };
53
55
  return (React.createElement(React.Fragment, null,
54
- React.createElement(WidgetHeader, { title: report
55
- ? ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:ModifyReport")
56
- : ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:AddReport"), returnFn: returnFn }),
57
56
  React.createElement("div", { className: "rcw-details-form-container" },
58
57
  React.createElement(Fieldset, { legend: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:ReportDetails"), className: "rcw-details-form" },
59
58
  React.createElement(Small, { className: "field-legend" }, ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:MandatoryFields")),
@@ -71,7 +70,6 @@ const ReportAction = ({ iTwinId, report, returnFn }) => {
71
70
  React.createElement(LabeledInput, { name: "description", label: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Description"), value: values.description, onChange: (event) => {
72
71
  handleInputChange(event, values, setValues);
73
72
  }, disabled: isLoading }))),
74
- React.createElement(ActionPanel, { actionLabel: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Add"), onAction: onSave, onCancel: returnFn, isSavingDisabled: !values.name, isLoading: isLoading })));
73
+ React.createElement(ActionPanel, { actionLabel: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Add"), onAction: onSave, onCancel: onClickCancel, isSavingDisabled: !values.name, isLoading: isLoading })));
75
74
  };
76
- export default ReportAction;
77
75
  //# sourceMappingURL=ReportAction.js.map