@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.
Files changed (250) hide show
  1. package/.rush/temp/package-deps_rebuild.json +38 -34
  2. package/.rush/temp/shrinkwrap-deps.json +14 -6
  3. package/CHANGELOG.json +30 -0
  4. package/CHANGELOG.md +17 -1
  5. package/coverage/clover.xml +605 -610
  6. package/coverage/coverage-final.json +28 -27
  7. package/coverage/lcov-report/index.html +31 -31
  8. package/coverage/lcov-report/src/ReportsConfigWidget.ts.html +10 -10
  9. package/coverage/lcov-report/src/index.html +1 -1
  10. package/coverage/lcov-report/src/test/index.html +1 -1
  11. package/coverage/lcov-report/src/test/test-utils.tsx.html +22 -22
  12. package/coverage/lcov-report/src/widget/ReportsConfigUiProvider.tsx.html +7 -7
  13. package/coverage/lcov-report/src/widget/components/ActionPanel.tsx.html +29 -41
  14. package/coverage/lcov-report/src/widget/components/AddMappingsModal.tsx.html +31 -37
  15. package/coverage/lcov-report/src/widget/components/BulkExtractor.ts.html +270 -162
  16. package/coverage/lcov-report/src/widget/components/Constants.ts.html +4 -4
  17. package/coverage/lcov-report/src/widget/components/DeleteModal.tsx.html +21 -21
  18. package/coverage/lcov-report/src/widget/components/ExtractionStates/FailedExtractionState.tsx.html +6 -6
  19. package/coverage/lcov-report/src/widget/components/ExtractionStates/QueuedExtractionState.tsx.html +14 -14
  20. package/coverage/lcov-report/src/widget/components/ExtractionStates/RunningExtractionState.tsx.html +15 -15
  21. package/coverage/lcov-report/src/widget/components/ExtractionStates/StartingExtractionState.tsx.html +14 -14
  22. package/coverage/lcov-report/src/widget/components/ExtractionStates/SucceededExtractionState.tsx.html +22 -19
  23. package/coverage/lcov-report/src/widget/components/ExtractionStates/index.html +43 -43
  24. package/coverage/lcov-report/src/widget/components/ExtractionStatus.tsx.html +57 -57
  25. package/coverage/lcov-report/src/widget/components/ExtractionToast.tsx.html +208 -0
  26. package/coverage/lcov-report/src/widget/components/HorizontalTile.tsx.html +8 -8
  27. package/coverage/lcov-report/src/widget/components/LocalizedTablePaginator.tsx.html +8 -8
  28. package/coverage/lcov-report/src/widget/components/ReportAction.tsx.html +14 -20
  29. package/coverage/lcov-report/src/widget/components/ReportHorizontalTile.tsx.html +30 -33
  30. package/coverage/lcov-report/src/widget/components/ReportMappingHorizontalTile.tsx.html +469 -0
  31. package/coverage/lcov-report/src/widget/components/ReportMappings.tsx.html +183 -231
  32. package/coverage/lcov-report/src/widget/components/Reports.tsx.html +73 -43
  33. package/coverage/lcov-report/src/widget/components/ReportsContainer.tsx.html +10 -10
  34. package/coverage/lcov-report/src/widget/components/SearchBar.tsx.html +10 -10
  35. package/coverage/lcov-report/src/widget/components/SelectIModel.tsx.html +31 -31
  36. package/coverage/lcov-report/src/widget/components/index.html +100 -85
  37. package/coverage/lcov-report/src/widget/components/utils.tsx.html +32 -32
  38. package/coverage/lcov-report/src/widget/context/ReportsApiConfigContext.tsx.html +8 -8
  39. package/coverage/lcov-report/src/widget/context/index.html +1 -1
  40. package/coverage/lcov-report/src/widget/hooks/index.html +1 -1
  41. package/coverage/lcov-report/src/widget/hooks/useValidator.ts.html +7 -7
  42. package/coverage/lcov-report/src/widget/index.html +1 -1
  43. package/coverage/lcov.info +990 -1003
  44. package/jest.config.js +6 -0
  45. package/lib/cjs/test/AddMappingModal.test.d.ts +2 -0
  46. package/lib/cjs/test/AddMappingModal.test.d.ts.map +1 -0
  47. package/lib/cjs/test/AddMappingModal.test.js +277 -0
  48. package/lib/cjs/test/AddMappingModal.test.js.map +1 -0
  49. package/lib/cjs/test/BulkExtractor.test.d.ts +2 -0
  50. package/lib/cjs/test/BulkExtractor.test.d.ts.map +1 -0
  51. package/lib/cjs/test/BulkExtractor.test.js +182 -0
  52. package/lib/cjs/test/BulkExtractor.test.js.map +1 -0
  53. package/lib/cjs/test/DeleteModal.test.d.ts +2 -0
  54. package/lib/cjs/test/DeleteModal.test.d.ts.map +1 -0
  55. package/lib/cjs/test/DeleteModal.test.js +93 -0
  56. package/lib/cjs/test/DeleteModal.test.js.map +1 -0
  57. package/lib/cjs/test/ReportAction.test.js +2 -3
  58. package/lib/cjs/test/ReportAction.test.js.map +1 -1
  59. package/lib/cjs/test/ReportMappingHorizontalTile.test.d.ts +2 -0
  60. package/lib/cjs/test/ReportMappingHorizontalTile.test.d.ts.map +1 -0
  61. package/lib/cjs/test/ReportMappingHorizontalTile.test.js +340 -0
  62. package/lib/cjs/test/ReportMappingHorizontalTile.test.js.map +1 -0
  63. package/lib/cjs/test/ReportMappings.test.js +115 -267
  64. package/lib/cjs/test/ReportMappings.test.js.map +1 -1
  65. package/lib/cjs/test/Reports.test.js +1 -1
  66. package/lib/cjs/test/Reports.test.js.map +1 -1
  67. package/lib/cjs/tsconfig.tsbuildinfo +1 -1
  68. package/lib/cjs/widget/components/ActionPanel.d.ts.map +1 -1
  69. package/lib/cjs/widget/components/ActionPanel.js +4 -5
  70. package/lib/cjs/widget/components/ActionPanel.js.map +1 -1
  71. package/lib/cjs/widget/components/AddMappingsModal.d.ts +2 -2
  72. package/lib/cjs/widget/components/AddMappingsModal.d.ts.map +1 -1
  73. package/lib/cjs/widget/components/AddMappingsModal.js +5 -4
  74. package/lib/cjs/widget/components/AddMappingsModal.js.map +1 -1
  75. package/lib/cjs/widget/components/AddMappingsModal.scss +4 -3
  76. package/lib/cjs/widget/components/BulkExtractor.d.ts +18 -9
  77. package/lib/cjs/widget/components/BulkExtractor.d.ts.map +1 -1
  78. package/lib/cjs/widget/components/BulkExtractor.js +86 -57
  79. package/lib/cjs/widget/components/BulkExtractor.js.map +1 -1
  80. package/lib/cjs/widget/components/DeleteModal.js +1 -1
  81. package/lib/cjs/widget/components/DeleteModal.js.map +1 -1
  82. package/lib/cjs/widget/components/DeleteModal.scss +4 -3
  83. package/lib/cjs/widget/components/ExtractionStates/RunningExtractionState.js +1 -1
  84. package/lib/cjs/widget/components/ExtractionStates/RunningExtractionState.js.map +1 -1
  85. package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.d.ts.map +1 -1
  86. package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.js +1 -1
  87. package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.js.map +1 -1
  88. package/lib/cjs/widget/components/ExtractionStatus.scss +15 -1
  89. package/lib/cjs/widget/components/ExtractionToast.d.ts +11 -0
  90. package/lib/cjs/widget/components/ExtractionToast.d.ts.map +1 -0
  91. package/lib/cjs/widget/components/ExtractionToast.js +33 -0
  92. package/lib/cjs/widget/components/ExtractionToast.js.map +1 -0
  93. package/lib/cjs/widget/components/HorizontalTile.scss +1 -1
  94. package/lib/cjs/widget/components/ReportAction.d.ts.map +1 -1
  95. package/lib/cjs/widget/components/ReportAction.js +3 -3
  96. package/lib/cjs/widget/components/ReportAction.js.map +1 -1
  97. package/lib/cjs/widget/components/ReportAction.scss +2 -2
  98. package/lib/cjs/widget/components/ReportHorizontalTile.d.ts.map +1 -1
  99. package/lib/cjs/widget/components/ReportHorizontalTile.js +1 -2
  100. package/lib/cjs/widget/components/ReportHorizontalTile.js.map +1 -1
  101. package/lib/cjs/widget/components/ReportMappingHorizontalTile.d.ts +13 -0
  102. package/lib/cjs/widget/components/ReportMappingHorizontalTile.d.ts.map +1 -0
  103. package/lib/cjs/widget/components/ReportMappingHorizontalTile.js +82 -0
  104. package/lib/cjs/widget/components/ReportMappingHorizontalTile.js.map +1 -0
  105. package/lib/cjs/widget/components/ReportMappings.d.ts +3 -1
  106. package/lib/cjs/widget/components/ReportMappings.d.ts.map +1 -1
  107. package/lib/cjs/widget/components/ReportMappings.js +39 -40
  108. package/lib/cjs/widget/components/ReportMappings.js.map +1 -1
  109. package/lib/cjs/widget/components/ReportMappings.scss +7 -7
  110. package/lib/cjs/widget/components/Reports.d.ts.map +1 -1
  111. package/lib/cjs/widget/components/Reports.js +13 -6
  112. package/lib/cjs/widget/components/Reports.js.map +1 -1
  113. package/lib/cjs/widget/components/Reports.scss +1 -1
  114. package/lib/cjs/widget/components/ReportsContainer.js +1 -1
  115. package/lib/cjs/widget/components/ReportsContainer.js.map +1 -1
  116. package/lib/cjs/widget/components/ReportsContainer.scss +2 -2
  117. package/lib/cjs/widget/components/SelectIModel.js +2 -2
  118. package/lib/cjs/widget/components/SelectIModel.js.map +1 -1
  119. package/lib/cjs/widget/components/SelectIModel.scss +4 -3
  120. package/lib/cjs/widget/components/utils.js +1 -1
  121. package/lib/cjs/widget/components/utils.js.map +1 -1
  122. package/lib/cjs/widget/components/utils.scss +2 -2
  123. package/lib/esm/test/AddMappingModal.test.d.ts +2 -0
  124. package/lib/esm/test/AddMappingModal.test.d.ts.map +1 -0
  125. package/lib/esm/test/AddMappingModal.test.js +253 -0
  126. package/lib/esm/test/AddMappingModal.test.js.map +1 -0
  127. package/lib/esm/test/BulkExtractor.test.d.ts +2 -0
  128. package/lib/esm/test/BulkExtractor.test.d.ts.map +1 -0
  129. package/lib/esm/test/BulkExtractor.test.js +158 -0
  130. package/lib/esm/test/BulkExtractor.test.js.map +1 -0
  131. package/lib/esm/test/DeleteModal.test.d.ts +2 -0
  132. package/lib/esm/test/DeleteModal.test.d.ts.map +1 -0
  133. package/lib/esm/test/DeleteModal.test.js +69 -0
  134. package/lib/esm/test/DeleteModal.test.js.map +1 -0
  135. package/lib/esm/test/ReportAction.test.js +2 -3
  136. package/lib/esm/test/ReportAction.test.js.map +1 -1
  137. package/lib/esm/test/ReportMappingHorizontalTile.test.d.ts +2 -0
  138. package/lib/esm/test/ReportMappingHorizontalTile.test.d.ts.map +1 -0
  139. package/lib/esm/test/ReportMappingHorizontalTile.test.js +316 -0
  140. package/lib/esm/test/ReportMappingHorizontalTile.test.js.map +1 -0
  141. package/lib/esm/test/ReportMappings.test.js +117 -269
  142. package/lib/esm/test/ReportMappings.test.js.map +1 -1
  143. package/lib/esm/test/Reports.test.js +1 -1
  144. package/lib/esm/test/Reports.test.js.map +1 -1
  145. package/lib/esm/tsconfig.tsbuildinfo +1 -1
  146. package/lib/esm/widget/components/ActionPanel.d.ts.map +1 -1
  147. package/lib/esm/widget/components/ActionPanel.js +4 -5
  148. package/lib/esm/widget/components/ActionPanel.js.map +1 -1
  149. package/lib/esm/widget/components/AddMappingsModal.d.ts +2 -2
  150. package/lib/esm/widget/components/AddMappingsModal.d.ts.map +1 -1
  151. package/lib/esm/widget/components/AddMappingsModal.js +4 -5
  152. package/lib/esm/widget/components/AddMappingsModal.js.map +1 -1
  153. package/lib/esm/widget/components/AddMappingsModal.scss +4 -3
  154. package/lib/esm/widget/components/BulkExtractor.d.ts +18 -9
  155. package/lib/esm/widget/components/BulkExtractor.d.ts.map +1 -1
  156. package/lib/esm/widget/components/BulkExtractor.js +86 -57
  157. package/lib/esm/widget/components/BulkExtractor.js.map +1 -1
  158. package/lib/esm/widget/components/DeleteModal.js +1 -1
  159. package/lib/esm/widget/components/DeleteModal.js.map +1 -1
  160. package/lib/esm/widget/components/DeleteModal.scss +4 -3
  161. package/lib/esm/widget/components/ExtractionStates/RunningExtractionState.js +1 -1
  162. package/lib/esm/widget/components/ExtractionStates/RunningExtractionState.js.map +1 -1
  163. package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.d.ts.map +1 -1
  164. package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.js +1 -1
  165. package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.js.map +1 -1
  166. package/lib/esm/widget/components/ExtractionStatus.scss +15 -1
  167. package/lib/esm/widget/components/ExtractionToast.d.ts +11 -0
  168. package/lib/esm/widget/components/ExtractionToast.d.ts.map +1 -0
  169. package/lib/esm/widget/components/ExtractionToast.js +25 -0
  170. package/lib/esm/widget/components/ExtractionToast.js.map +1 -0
  171. package/lib/esm/widget/components/HorizontalTile.scss +1 -1
  172. package/lib/esm/widget/components/ReportAction.d.ts.map +1 -1
  173. package/lib/esm/widget/components/ReportAction.js +3 -3
  174. package/lib/esm/widget/components/ReportAction.js.map +1 -1
  175. package/lib/esm/widget/components/ReportAction.scss +2 -2
  176. package/lib/esm/widget/components/ReportHorizontalTile.d.ts.map +1 -1
  177. package/lib/esm/widget/components/ReportHorizontalTile.js +1 -2
  178. package/lib/esm/widget/components/ReportHorizontalTile.js.map +1 -1
  179. package/lib/esm/widget/components/ReportMappingHorizontalTile.d.ts +13 -0
  180. package/lib/esm/widget/components/ReportMappingHorizontalTile.d.ts.map +1 -0
  181. package/lib/esm/widget/components/ReportMappingHorizontalTile.js +75 -0
  182. package/lib/esm/widget/components/ReportMappingHorizontalTile.js.map +1 -0
  183. package/lib/esm/widget/components/ReportMappings.d.ts +3 -1
  184. package/lib/esm/widget/components/ReportMappings.d.ts.map +1 -1
  185. package/lib/esm/widget/components/ReportMappings.js +40 -41
  186. package/lib/esm/widget/components/ReportMappings.js.map +1 -1
  187. package/lib/esm/widget/components/ReportMappings.scss +7 -7
  188. package/lib/esm/widget/components/Reports.d.ts.map +1 -1
  189. package/lib/esm/widget/components/Reports.js +15 -8
  190. package/lib/esm/widget/components/Reports.js.map +1 -1
  191. package/lib/esm/widget/components/Reports.scss +1 -1
  192. package/lib/esm/widget/components/ReportsContainer.js +1 -1
  193. package/lib/esm/widget/components/ReportsContainer.js.map +1 -1
  194. package/lib/esm/widget/components/ReportsContainer.scss +2 -2
  195. package/lib/esm/widget/components/SelectIModel.js +2 -2
  196. package/lib/esm/widget/components/SelectIModel.js.map +1 -1
  197. package/lib/esm/widget/components/SelectIModel.scss +4 -3
  198. package/lib/esm/widget/components/utils.js +1 -1
  199. package/lib/esm/widget/components/utils.js.map +1 -1
  200. package/lib/esm/widget/components/utils.scss +2 -2
  201. package/lib/public/locales/en/ReportsConfigWidget.json +5 -0
  202. package/package.json +7 -4
  203. package/public/locales/en/ReportsConfigWidget.json +5 -0
  204. package/reports-config-widget-react.build.error.log +10 -6
  205. package/reports-config-widget-react.build.log +51 -46
  206. package/src/test/AddMappingModal.test.tsx +315 -0
  207. package/src/test/BulkExtractor.test.ts +301 -0
  208. package/src/test/DeleteModal.test.tsx +118 -0
  209. package/src/test/ReportAction.test.tsx +2 -4
  210. package/src/test/ReportMappingHorizontalTile.test.tsx +451 -0
  211. package/src/test/ReportMappings.test.tsx +154 -549
  212. package/src/test/Reports.test.tsx +1 -1
  213. package/src/widget/components/ActionPanel.tsx +19 -23
  214. package/src/widget/components/AddMappingsModal.scss +4 -3
  215. package/src/widget/components/AddMappingsModal.tsx +4 -6
  216. package/src/widget/components/BulkExtractor.ts +97 -61
  217. package/src/widget/components/DeleteModal.scss +4 -3
  218. package/src/widget/components/DeleteModal.tsx +1 -1
  219. package/src/widget/components/ExtractionStates/RunningExtractionState.tsx +1 -1
  220. package/src/widget/components/ExtractionStates/SucceededExtractionState.tsx +1 -0
  221. package/src/widget/components/ExtractionStatus.scss +15 -1
  222. package/src/widget/components/ExtractionToast.tsx +41 -0
  223. package/src/widget/components/HorizontalTile.scss +1 -1
  224. package/src/widget/components/ReportAction.scss +2 -2
  225. package/src/widget/components/ReportAction.tsx +1 -3
  226. package/src/widget/components/ReportHorizontalTile.tsx +1 -2
  227. package/src/widget/components/ReportMappingHorizontalTile.tsx +128 -0
  228. package/src/widget/components/ReportMappings.scss +7 -7
  229. package/src/widget/components/ReportMappings.tsx +89 -105
  230. package/src/widget/components/Reports.scss +1 -1
  231. package/src/widget/components/Reports.tsx +18 -8
  232. package/src/widget/components/ReportsContainer.scss +2 -2
  233. package/src/widget/components/ReportsContainer.tsx +1 -1
  234. package/src/widget/components/SelectIModel.scss +4 -3
  235. package/src/widget/components/SelectIModel.tsx +2 -2
  236. package/src/widget/components/utils.scss +2 -2
  237. package/src/widget/components/utils.tsx +1 -1
  238. package/coverage/lcov-report/src/widget/components/Extraction.tsx.html +0 -1030
  239. package/lib/cjs/widget/components/Extraction.d.ts +0 -28
  240. package/lib/cjs/widget/components/Extraction.d.ts.map +0 -1
  241. package/lib/cjs/widget/components/Extraction.js +0 -190
  242. package/lib/cjs/widget/components/Extraction.js.map +0 -1
  243. package/lib/cjs/widget/components/Extraction.scss +0 -39
  244. package/lib/esm/widget/components/Extraction.d.ts +0 -28
  245. package/lib/esm/widget/components/Extraction.d.ts.map +0 -1
  246. package/lib/esm/widget/components/Extraction.js +0 -166
  247. package/lib/esm/widget/components/Extraction.js.map +0 -1
  248. package/lib/esm/widget/components/Extraction.scss +0 -39
  249. package/src/widget/components/Extraction.scss +0 -39
  250. package/src/widget/components/Extraction.tsx +0 -315
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">16.45% </span>
26
+ <span class="strong">85% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>13/79</span>
28
+ <span class='fraction'>85/100</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
33
+ <span class="strong">76.19% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/13</span>
35
+ <span class='fraction'>16/21</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">6.66% </span>
40
+ <span class="strong">86.66% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>1/15</span>
42
+ <span class='fraction'>13/15</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">16.66% </span>
47
+ <span class="strong">85.41% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>13/78</span>
49
+ <span class='fraction'>82/96</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line high'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -219,16 +219,52 @@
219
219
  <a name='L154'></a><a href='#L154'>154</a>
220
220
  <a name='L155'></a><a href='#L155'>155</a>
221
221
  <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
223
259
  <span class="cline-any cline-neutral">&nbsp;</span>
224
260
  <span class="cline-any cline-neutral">&nbsp;</span>
225
261
  <span class="cline-any cline-neutral">&nbsp;</span>
226
- <span class="cline-any cline-yes">4x</span>
262
+ <span class="cline-any cline-yes">8x</span>
227
263
  <span class="cline-any cline-neutral">&nbsp;</span>
228
- <span class="cline-any cline-yes">4x</span>
264
+ <span class="cline-any cline-yes">8x</span>
229
265
  <span class="cline-any cline-neutral">&nbsp;</span>
230
- <span class="cline-any cline-yes">4x</span>
231
- <span class="cline-any cline-yes">4x</span>
266
+ <span class="cline-any cline-yes">8x</span>
267
+ <span class="cline-any cline-yes">8x</span>
232
268
  <span class="cline-any cline-neutral">&nbsp;</span>
233
269
  <span class="cline-any cline-neutral">&nbsp;</span>
234
270
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -236,90 +272,104 @@
236
272
  <span class="cline-any cline-neutral">&nbsp;</span>
237
273
  <span class="cline-any cline-neutral">&nbsp;</span>
238
274
  <span class="cline-any cline-neutral">&nbsp;</span>
239
- <span class="cline-any cline-yes">4x</span>
240
- <span class="cline-any cline-yes">15x</span>
275
+ <span class="cline-any cline-yes">8x</span>
241
276
  <span class="cline-any cline-neutral">&nbsp;</span>
242
277
  <span class="cline-any cline-neutral">&nbsp;</span>
243
278
  <span class="cline-any cline-neutral">&nbsp;</span>
244
- <span class="cline-any cline-yes">15x</span>
245
- <span class="cline-any cline-yes">15x</span>
246
279
  <span class="cline-any cline-neutral">&nbsp;</span>
280
+ <span class="cline-any cline-yes">19x</span>
281
+ <span class="cline-any cline-yes">19x</span>
282
+ <span class="cline-any cline-yes">19x</span>
283
+ <span class="cline-any cline-yes">19x</span>
284
+ <span class="cline-any cline-yes">19x</span>
247
285
  <span class="cline-any cline-neutral">&nbsp;</span>
248
286
  <span class="cline-any cline-neutral">&nbsp;</span>
249
- <span class="cline-any cline-yes">15x</span>
250
- <span class="cline-any cline-yes">15x</span>
251
- <span class="cline-any cline-yes">15x</span>
252
- <span class="cline-any cline-yes">15x</span>
253
- <span class="cline-any cline-yes">15x</span>
254
287
  <span class="cline-any cline-neutral">&nbsp;</span>
288
+ <span class="cline-any cline-yes">19x</span>
255
289
  <span class="cline-any cline-neutral">&nbsp;</span>
256
290
  <span class="cline-any cline-neutral">&nbsp;</span>
257
- <span class="cline-any cline-no">&nbsp;</span>
258
- <span class="cline-any cline-no">&nbsp;</span>
259
291
  <span class="cline-any cline-neutral">&nbsp;</span>
260
- <span class="cline-any cline-no">&nbsp;</span>
261
- <span class="cline-any cline-no">&nbsp;</span>
262
- <span class="cline-any cline-no">&nbsp;</span>
263
- <span class="cline-any cline-no">&nbsp;</span>
264
- <span class="cline-any cline-no">&nbsp;</span>
265
292
  <span class="cline-any cline-neutral">&nbsp;</span>
266
293
  <span class="cline-any cline-neutral">&nbsp;</span>
267
- <span class="cline-any cline-no">&nbsp;</span>
268
- <span class="cline-any cline-no">&nbsp;</span>
269
- <span class="cline-any cline-no">&nbsp;</span>
270
- <span class="cline-any cline-no">&nbsp;</span>
271
- <span class="cline-any cline-no">&nbsp;</span>
272
294
  <span class="cline-any cline-neutral">&nbsp;</span>
273
- <span class="cline-any cline-no">&nbsp;</span>
274
- <span class="cline-any cline-no">&nbsp;</span>
275
- <span class="cline-any cline-no">&nbsp;</span>
295
+ <span class="cline-any cline-yes">19x</span>
296
+ <span class="cline-any cline-yes">19x</span>
297
+ <span class="cline-any cline-yes">19x</span>
298
+ <span class="cline-any cline-yes">19x</span>
299
+ <span class="cline-any cline-yes">19x</span>
300
+ <span class="cline-any cline-yes">19x</span>
276
301
  <span class="cline-any cline-neutral">&nbsp;</span>
277
302
  <span class="cline-any cline-neutral">&nbsp;</span>
278
- <span class="cline-any cline-no">&nbsp;</span>
279
- <span class="cline-any cline-no">&nbsp;</span>
280
303
  <span class="cline-any cline-neutral">&nbsp;</span>
281
- <span class="cline-any cline-no">&nbsp;</span>
304
+ <span class="cline-any cline-yes">17x</span>
305
+ <span class="cline-any cline-yes">20x</span>
306
+ <span class="cline-any cline-yes">20x</span>
307
+ <span class="cline-any cline-yes">4x</span>
282
308
  <span class="cline-any cline-neutral">&nbsp;</span>
309
+ <span class="cline-any cline-yes">20x</span>
283
310
  <span class="cline-any cline-neutral">&nbsp;</span>
284
311
  <span class="cline-any cline-neutral">&nbsp;</span>
285
- <span class="cline-any cline-no">&nbsp;</span>
286
312
  <span class="cline-any cline-neutral">&nbsp;</span>
287
313
  <span class="cline-any cline-neutral">&nbsp;</span>
314
+ <span class="cline-any cline-yes">7x</span>
315
+ <span class="cline-any cline-yes">7x</span>
316
+ <span class="cline-any cline-yes">7x</span>
288
317
  <span class="cline-any cline-neutral">&nbsp;</span>
289
- <span class="cline-any cline-no">&nbsp;</span>
290
- <span class="cline-any cline-no">&nbsp;</span>
291
- <span class="cline-any cline-no">&nbsp;</span>
292
318
  <span class="cline-any cline-neutral">&nbsp;</span>
293
- <span class="cline-any cline-no">&nbsp;</span>
319
+ <span class="cline-any cline-yes">7x</span>
320
+ <span class="cline-any cline-yes">7x</span>
321
+ <span class="cline-any cline-yes">6x</span>
322
+ <span class="cline-any cline-yes">6x</span>
323
+ <span class="cline-any cline-yes">8x</span>
324
+ <span class="cline-any cline-yes">8x</span>
325
+ <span class="cline-any cline-yes">8x</span>
294
326
  <span class="cline-any cline-neutral">&nbsp;</span>
327
+ <span class="cline-any cline-yes">6x</span>
295
328
  <span class="cline-any cline-neutral">&nbsp;</span>
296
- <span class="cline-any cline-no">&nbsp;</span>
297
329
  <span class="cline-any cline-neutral">&nbsp;</span>
298
330
  <span class="cline-any cline-neutral">&nbsp;</span>
331
+ <span class="cline-any cline-yes">10x</span>
332
+ <span class="cline-any cline-yes">10x</span>
333
+ <span class="cline-any cline-yes">10x</span>
299
334
  <span class="cline-any cline-neutral">&nbsp;</span>
300
- <span class="cline-any cline-no">&nbsp;</span>
301
335
  <span class="cline-any cline-neutral">&nbsp;</span>
336
+ <span class="cline-any cline-yes">10x</span>
337
+ <span class="cline-any cline-yes">10x</span>
338
+ <span class="cline-any cline-yes">9x</span>
339
+ <span class="cline-any cline-yes">9x</span>
340
+ <span class="cline-any cline-yes">1x</span>
341
+ <span class="cline-any cline-yes">1x</span>
342
+ <span class="cline-any cline-yes">1x</span>
343
+ <span class="cline-any cline-yes">8x</span>
344
+ <span class="cline-any cline-yes">1x</span>
345
+ <span class="cline-any cline-yes">1x</span>
346
+ <span class="cline-any cline-yes">1x</span>
302
347
  <span class="cline-any cline-neutral">&nbsp;</span>
303
348
  <span class="cline-any cline-neutral">&nbsp;</span>
304
- <span class="cline-any cline-no">&nbsp;</span>
305
- <span class="cline-any cline-no">&nbsp;</span>
349
+ <span class="cline-any cline-yes">9x</span>
306
350
  <span class="cline-any cline-neutral">&nbsp;</span>
307
- <span class="cline-any cline-no">&nbsp;</span>
308
- <span class="cline-any cline-no">&nbsp;</span>
309
351
  <span class="cline-any cline-neutral">&nbsp;</span>
310
- <span class="cline-any cline-no">&nbsp;</span>
311
- <span class="cline-any cline-no">&nbsp;</span>
312
352
  <span class="cline-any cline-neutral">&nbsp;</span>
313
- <span class="cline-any cline-no">&nbsp;</span>
314
- <span class="cline-any cline-no">&nbsp;</span>
353
+ <span class="cline-any cline-yes">15x</span>
354
+ <span class="cline-any cline-yes">2x</span>
315
355
  <span class="cline-any cline-neutral">&nbsp;</span>
316
- <span class="cline-any cline-no">&nbsp;</span>
356
+ <span class="cline-any cline-yes">13x</span>
357
+ <span class="cline-any cline-yes">5x</span>
317
358
  <span class="cline-any cline-neutral">&nbsp;</span>
359
+ <span class="cline-any cline-yes">8x</span>
360
+ <span class="cline-any cline-yes">6x</span>
318
361
  <span class="cline-any cline-neutral">&nbsp;</span>
362
+ <span class="cline-any cline-yes">2x</span>
363
+ <span class="cline-any cline-yes">2x</span>
319
364
  <span class="cline-any cline-neutral">&nbsp;</span>
320
365
  <span class="cline-any cline-no">&nbsp;</span>
321
- <span class="cline-any cline-no">&nbsp;</span>
322
- <span class="cline-any cline-no">&nbsp;</span>
366
+ <span class="cline-any cline-neutral">&nbsp;</span>
367
+ <span class="cline-any cline-neutral">&nbsp;</span>
368
+ <span class="cline-any cline-neutral">&nbsp;</span>
369
+ <span class="cline-any cline-yes">20x</span>
370
+ <span class="cline-any cline-yes">20x</span>
371
+ <span class="cline-any cline-yes">20x</span>
372
+ <span class="cline-any cline-yes">20x</span>
323
373
  <span class="cline-any cline-neutral">&nbsp;</span>
324
374
  <span class="cline-any cline-no">&nbsp;</span>
325
375
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -327,52 +377,74 @@
327
377
  <span class="cline-any cline-neutral">&nbsp;</span>
328
378
  <span class="cline-any cline-neutral">&nbsp;</span>
329
379
  <span class="cline-any cline-neutral">&nbsp;</span>
380
+ <span class="cline-any cline-yes">14x</span>
330
381
  <span class="cline-any cline-no">&nbsp;</span>
331
382
  <span class="cline-any cline-no">&nbsp;</span>
332
383
  <span class="cline-any cline-no">&nbsp;</span>
333
384
  <span class="cline-any cline-no">&nbsp;</span>
334
385
  <span class="cline-any cline-no">&nbsp;</span>
335
386
  <span class="cline-any cline-neutral">&nbsp;</span>
336
- <span class="cline-any cline-no">&nbsp;</span>
337
387
  <span class="cline-any cline-neutral">&nbsp;</span>
338
- <span class="cline-any cline-no">&nbsp;</span>
339
- <span class="cline-any cline-no">&nbsp;</span>
388
+ <span class="cline-any cline-neutral">&nbsp;</span>
340
389
  <span class="cline-any cline-no">&nbsp;</span>
341
390
  <span class="cline-any cline-neutral">&nbsp;</span>
342
391
  <span class="cline-any cline-neutral">&nbsp;</span>
343
- <span class="cline-any cline-no">&nbsp;</span>
344
- <span class="cline-any cline-no">&nbsp;</span>
345
- <span class="cline-any cline-no">&nbsp;</span>
346
- <span class="cline-any cline-no">&nbsp;</span>
347
- <span class="cline-any cline-no">&nbsp;</span>
348
- <span class="cline-any cline-no">&nbsp;</span>
349
- <span class="cline-any cline-no">&nbsp;</span>
350
- <span class="cline-any cline-no">&nbsp;</span>
392
+ <span class="cline-any cline-neutral">&nbsp;</span>
393
+ <span class="cline-any cline-neutral">&nbsp;</span>
394
+ <span class="cline-any cline-yes">5x</span>
395
+ <span class="cline-any cline-yes">5x</span>
396
+ <span class="cline-any cline-yes">5x</span>
397
+ <span class="cline-any cline-yes">5x</span>
398
+ <span class="cline-any cline-yes">5x</span>
399
+ <span class="cline-any cline-neutral">&nbsp;</span>
400
+ <span class="cline-any cline-yes">5x</span>
401
+ <span class="cline-any cline-neutral">&nbsp;</span>
402
+ <span class="cline-any cline-yes">5x</span>
403
+ <span class="cline-any cline-yes">7x</span>
404
+ <span class="cline-any cline-neutral">&nbsp;</span>
405
+ <span class="cline-any cline-neutral">&nbsp;</span>
406
+ <span class="cline-any cline-neutral">&nbsp;</span>
407
+ <span class="cline-any cline-neutral">&nbsp;</span>
408
+ <span class="cline-any cline-yes">12x</span>
409
+ <span class="cline-any cline-yes">12x</span>
410
+ <span class="cline-any cline-neutral">&nbsp;</span>
411
+ <span class="cline-any cline-neutral">&nbsp;</span>
412
+ <span class="cline-any cline-neutral">&nbsp;</span>
413
+ <span class="cline-any cline-yes">12x</span>
414
+ <span class="cline-any cline-yes">12x</span>
415
+ <span class="cline-any cline-neutral">&nbsp;</span>
351
416
  <span class="cline-any cline-no">&nbsp;</span>
352
417
  <span class="cline-any cline-neutral">&nbsp;</span>
353
418
  <span class="cline-any cline-no">&nbsp;</span>
354
419
  <span class="cline-any cline-neutral">&nbsp;</span>
355
420
  <span class="cline-any cline-neutral">&nbsp;</span>
356
421
  <span class="cline-any cline-neutral">&nbsp;</span>
422
+ <span class="cline-any cline-yes">3x</span>
423
+ <span class="cline-any cline-neutral">&nbsp;</span>
424
+ <span class="cline-any cline-neutral">&nbsp;</span>
357
425
  <span class="cline-any cline-neutral">&nbsp;</span>
358
426
  <span class="cline-any cline-no">&nbsp;</span>
359
427
  <span class="cline-any cline-no">&nbsp;</span>
428
+ <span class="cline-any cline-no">&nbsp;</span>
360
429
  <span class="cline-any cline-neutral">&nbsp;</span>
361
430
  <span class="cline-any cline-neutral">&nbsp;</span>
362
431
  <span class="cline-any cline-neutral">&nbsp;</span>
363
- <span class="cline-any cline-no">&nbsp;</span>
432
+ <span class="cline-any cline-yes">11x</span>
433
+ <span class="cline-any cline-yes">12x</span>
434
+ <span class="cline-any cline-yes">12x</span>
435
+ <span class="cline-any cline-yes">12x</span>
436
+ <span class="cline-any cline-yes">12x</span>
364
437
  <span class="cline-any cline-neutral">&nbsp;</span>
365
- <span class="cline-any cline-no">&nbsp;</span>
438
+ <span class="cline-any cline-yes">12x</span>
366
439
  <span class="cline-any cline-neutral">&nbsp;</span>
367
- <span class="cline-any cline-no">&nbsp;</span>
368
440
  <span class="cline-any cline-neutral">&nbsp;</span>
369
441
  <span class="cline-any cline-neutral">&nbsp;</span>
370
442
  <span class="cline-any cline-neutral">&nbsp;</span>
371
- <span class="cline-any cline-no">&nbsp;</span>
443
+ <span class="cline-any cline-yes">5x</span>
372
444
  <span class="cline-any cline-neutral">&nbsp;</span>
373
445
  <span class="cline-any cline-neutral">&nbsp;</span>
374
446
  <span class="cline-any cline-neutral">&nbsp;</span>
375
- <span class="cline-any cline-no">&nbsp;</span>
447
+ <span class="cline-any cline-yes">8x</span>
376
448
  <span class="cline-any cline-neutral">&nbsp;</span>
377
449
  <span class="cline-any cline-neutral">&nbsp;</span>
378
450
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*---------------------------------------------------------------------------------------------
@@ -393,142 +465,178 @@ export type ReportMappingAndMapping = ReportMapping &amp; {
393
465
  };
394
466
  &nbsp;
395
467
  export default class BulkExtractor {
396
- private _reportRunIds = new Map&lt;string, string[]&gt;();
397
468
  private _reportsClientApi: ReportsClient;
398
469
  private _extractionClientApi: ExtractionClient;
399
470
  private _accessToken: () =&gt; Promise&lt;string&gt;;
400
- private _reportStates = new Map&lt;string, ExtractionStates&gt;();
471
+ &nbsp;
472
+ private _reportIModels = new Map&lt;string, string[]&gt;(); // key: reportId, value: iModels
473
+ private _iModelStates = new Map&lt;string, ExtractorState&gt;(); // key: iModelId, value: state
401
474
  private _timeFetched = new Date();
402
- private _reportIds: string[];
475
+ private _iModelRun = new Map&lt;string, string&gt;(); // key: iModelId, value: runId
476
+ private _iModelToast = new Set&lt;string&gt;();
477
+ private _successfulExtractionToast: (iModelName: string, odataFeedUrl: string) =&gt; void;
478
+ private _failedExtractionToast: (iModelName: string) =&gt; void;
479
+ private _setJobRunning: React.Dispatch&lt;React.SetStateAction&lt;boolean&gt;&gt; | undefined;
480
+ private _iModels: string[] = [];
403
481
  &nbsp;
404
- constructor(apiConfig: ReportsApiConfig, reportIds: string[]) {
482
+ constructor(
483
+ apiConfig: ReportsApiConfig,
484
+ successfulExtractionToast: (iModelName: string, odataFeedUrl: string) =&gt; void,
485
+ failedExtractionToast: (iModelName: string) =&gt; void,
486
+ ) {
405
487
  const url = generateUrl(REPORTING_BASE_PATH, apiConfig.baseUrl);
406
488
  this._reportsClientApi = new ReportsClient(url);
407
489
  this._extractionClientApi = new ExtractionClient(url);
408
490
  this._accessToken = apiConfig.getAccessToken;
409
- this._reportIds = reportIds;
491
+ this._successfulExtractionToast = successfulExtractionToast;
492
+ this._failedExtractionToast = failedExtractionToast;
410
493
  }
411
494
  &nbsp;
412
- private <span class="fstat-no" title="function not covered" >async </span>getStates(reportIds: string[]): Promise&lt;Map&lt;string, ExtractionStates&gt;&gt; {
413
- const stateByReportId = <span class="cstat-no" title="statement not covered" >new Map&lt;string, ExtractionStates&gt;();</span>
414
- const stateByRunId = <span class="cstat-no" title="statement not covered" >new Map&lt;string, ExtractorState&gt;();</span>
415
- &nbsp;
416
- <span class="cstat-no" title="statement not covered" > for (const reportId of reportIds) {</span>
417
- const runs = <span class="cstat-no" title="statement not covered" >this._reportRunIds.get(reportId);</span>
418
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!runs) {</span>
419
- <span class="cstat-no" title="statement not covered" > stateByReportId.set(reportId, ExtractionStates.None);</span>
420
- <span class="cstat-no" title="statement not covered" > continue;</span>
421
- }
422
- &nbsp;
423
- const states: ExtractorState[] = <span class="cstat-no" title="statement not covered" >[];</span>
424
- <span class="cstat-no" title="statement not covered" > for (const runId of runs) {</span>
425
- const state = <span class="cstat-no" title="statement not covered" >stateByRunId.get(runId);</span>
426
- <span class="cstat-no" title="statement not covered" > if (state) {</span>
427
- <span class="cstat-no" title="statement not covered" > states.push(state);</span>
428
- } else {
429
- const runState = <span class="cstat-no" title="statement not covered" >await this.getSingleState(runId, await this._accessToken());</span>
430
- <span class="cstat-no" title="statement not covered" > states.push(runState);</span>
431
- <span class="cstat-no" title="statement not covered" > stateByRunId.set(runId, runState);</span>
432
- }
495
+ private async fetchStates(): Promise&lt;void&gt; {
496
+ for (const [iModelId, runId] of this._iModelRun) {
497
+ const state = await this.getState(runId);
498
+ if (state === ExtractorState.Succeeded || state === ExtractorState.Failed) {
499
+ this._iModelRun.delete(iModelId);
433
500
  }
434
- const finalState = <span class="cstat-no" title="statement not covered" >BulkExtractor.getFinalState(states);</span>
435
- <span class="cstat-no" title="statement not covered" > stateByReportId.set(reportId, finalState);</span>
501
+ this._iModelStates.set(iModelId, state);
436
502
  }
437
- <span class="cstat-no" title="statement not covered" > return stateByReportId;</span>
438
503
  }
439
504
  &nbsp;
440
- private <span class="fstat-no" title="function not covered" >async </span>fetchStates(): Promise&lt;void&gt; {
441
- <span class="cstat-no" title="statement not covered" > this._reportStates = await this.getStates(this._reportIds);</span>
442
- }
505
+ public async getReportState(reportId: string): Promise&lt;ExtractionStates&gt; {
506
+ if ((new Date().getTime() - this._timeFetched.getTime()) &gt; STATUS_CHECK_INTERVAL) {
507
+ this._timeFetched = new Date();
508
+ await this.fetchStates();
509
+ }
443
510
  &nbsp;
444
- public <span class="fstat-no" title="function not covered" >getState(</span>reportId: string): ExtractionStates {
445
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if ((new Date().getTime() - this._timeFetched.getTime()) &gt; STATUS_CHECK_INTERVAL) {</span>
446
- <span class="cstat-no" title="statement not covered" > this._timeFetched = new Date();</span>
447
- <span class="cstat-no" title="statement not covered" > this.fetchStates().catch(<span class="fstat-no" title="function not covered" >(e</span>) =&gt;</span>
448
- /* eslint-disable no-console */
449
- <span class="cstat-no" title="statement not covered" > console.error(e)</span>
450
- );
511
+ const iModels = this._reportIModels.get(reportId);
512
+ if (!iModels) return ExtractionStates.None;
513
+ const states: ExtractorState[] = [];
514
+ for (const iModelId of iModels) {
515
+ const state = this._iModelStates.get(iModelId);
516
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!state) <span class="cstat-no" title="statement not covered" >continue;</span>
517
+ states.push(state);
451
518
  }
452
- <span class="cstat-no" title="statement not covered" > return this._reportStates.get(reportId) ?? ExtractionStates.None;</span>
519
+ return BulkExtractor.getFinalState(states);
453
520
  }
454
521
  &nbsp;
455
- public <span class="fstat-no" title="function not covered" >clearJob(</span>reportId: string): void {
456
- <span class="cstat-no" title="statement not covered" > this._reportRunIds.delete(reportId);</span>
522
+ public async getIModelState(iModelId: string, iModelName: string, odataFeedUrl: string): Promise&lt;ExtractionStates&gt; {
523
+ if ((new Date().getTime() - this._timeFetched.getTime()) &gt; STATUS_CHECK_INTERVAL) {
524
+ this._timeFetched = new Date();
525
+ await this.fetchStates();
526
+ }
527
+ &nbsp;
528
+ const state = this._iModelStates.get(iModelId);
529
+ if (!state) return ExtractionStates.None;
530
+ if (!this._iModelToast.has(iModelId)) {
531
+ if (state === ExtractorState.Succeeded) {
532
+ this._successfulExtractionToast(iModelName, odataFeedUrl);
533
+ this._iModelToast.add(iModelId);
534
+ this.checkRunning();
535
+ } else if (state === ExtractorState.Failed) {
536
+ this._failedExtractionToast(iModelName);
537
+ this._iModelToast.add(iModelId);
538
+ this.checkRunning();
539
+ }
540
+ }
541
+ return BulkExtractor.getFinalState([state]);
457
542
  }
458
543
  &nbsp;
459
- private <span class="fstat-no" title="function not covered" >static </span>getFinalState(states: ExtractorState[]): ExtractionStates {
460
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (states.includes(ExtractorState.Failed))</span>
461
- <span class="cstat-no" title="statement not covered" > return ExtractionStates.Failed;</span>
544
+ private static getFinalState(states: ExtractorState[]): ExtractionStates {
545
+ if (states.includes(ExtractorState.Failed))
546
+ return ExtractionStates.Failed;
462
547
  &nbsp;
463
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (states.includes(ExtractorState.Queued))</span>
464
- <span class="cstat-no" title="statement not covered" > return ExtractionStates.Queued;</span>
548
+ if (states.includes(ExtractorState.Queued))
549
+ return ExtractionStates.Queued;
465
550
  &nbsp;
466
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (states.includes(ExtractorState.Running))</span>
467
- <span class="cstat-no" title="statement not covered" > return ExtractionStates.Running;</span>
551
+ if (states.includes(ExtractorState.Running))
552
+ return ExtractionStates.Running;
468
553
  &nbsp;
469
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (states.includes(ExtractorState.Succeeded))</span>
470
- <span class="cstat-no" title="statement not covered" > return ExtractionStates.Succeeded;</span>
554
+ if (states.includes(ExtractorState.Succeeded))
555
+ return ExtractionStates.Succeeded;
471
556
  &nbsp;
472
557
  <span class="cstat-no" title="statement not covered" > return ExtractionStates.Failed;</span>
473
558
  }
474
559
  &nbsp;
475
- private <span class="fstat-no" title="function not covered" >async </span>getSingleState(runId: string, accessToken: string): Promise&lt;ExtractorState&gt; {
476
- <span class="cstat-no" title="statement not covered" > try {</span>
477
- const response = <span class="cstat-no" title="statement not covered" >await this._extractionClientApi.getExtractionStatus(accessToken, runId);</span>
478
- <span class="cstat-no" title="statement not covered" > return response.state;</span>
560
+ private async getState(runId: string): Promise&lt;ExtractorState&gt; {
561
+ try {
562
+ const accessToken = await this._accessToken();
563
+ const response = await this._extractionClientApi.getExtractionStatus(accessToken, runId);
564
+ return response.state;
479
565
  } catch (error: any) {
480
566
  <span class="cstat-no" title="statement not covered" > handleError(error.status);</span>
481
567
  }
482
568
  <span class="cstat-no" title="statement not covered" > return ExtractorState.Failed;</span>
483
569
  }
484
570
  &nbsp;
485
- public <span class="fstat-no" title="function not covered" >async </span>startJobs(reportIds: string[]): Promise&lt;void&gt; {
486
- const reportIModelIds = <span class="cstat-no" title="statement not covered" >new Map&lt;string, string[]&gt;();</span>
487
- <span class="cstat-no" title="statement not covered" > for (const reportId of reportIds) {</span>
488
- const reportIModels = <span class="cstat-no" title="statement not covered" >await this.fetchReportIModels(reportId);</span>
489
- <span class="cstat-no" title="statement not covered" > reportIModelIds.set(reportId, reportIModels);</span>
490
- <span class="cstat-no" title="statement not covered" > this._reportStates.set(reportId, ExtractionStates.Starting);</span>
491
- }
492
- const iModels = <span class="cstat-no" title="statement not covered" >new Set(Array.from(reportIModelIds.values()).flat());</span>
493
- const extractionMapPromise =
494
- <span class="cstat-no" title="statement not covered" > Array.from(iModels).map(<span class="fstat-no" title="function not covered" >async </span>(iModel): Promise&lt;[string, string | undefined]&gt; =&gt; {</span>
495
- const run = <span class="cstat-no" title="statement not covered" >await this.runExtraction(iModel);</span>
496
- <span class="cstat-no" title="statement not covered" > return [iModel, run];</span>
571
+ private checkRunning(): void {
572
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (this._setJobRunning) {
573
+ let allFinished = <span class="cstat-no" title="statement not covered" >true;</span>
574
+ <span class="cstat-no" title="statement not covered" > this._iModels.forEach(<span class="fstat-no" title="function not covered" >(i</span>ModelId) =&gt; {</span>
575
+ const state = <span class="cstat-no" title="statement not covered" >this._iModelStates.get(iModelId);</span>
576
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (state === ExtractorState.Queued || state === ExtractorState.Running) {</span>
577
+ <span class="cstat-no" title="statement not covered" > allFinished = false;</span>
578
+ }
497
579
  });
498
580
  &nbsp;
499
- const extractionMap = <span class="cstat-no" title="statement not covered" >await Promise.all(extractionMapPromise);</span>
500
- const extractionByIModel = <span class="cstat-no" title="statement not covered" >new Map&lt;string, string | undefined&gt;(extractionMap);</span>
501
- <span class="cstat-no" title="statement not covered" > reportIds.forEach(<span class="fstat-no" title="function not covered" >(r</span>eportId) =&gt; {</span>
502
- const reportIModels = <span class="cstat-no" title="statement not covered" >reportIModelIds.get(reportId)!;</span>
503
- const runs: string[] = <span class="cstat-no" title="statement not covered" >[];</span>
504
- <span class="cstat-no" title="statement not covered" > reportIModels.forEach(<span class="fstat-no" title="function not covered" >(i</span>ModelId) =&gt; {</span>
505
- const runId = <span class="cstat-no" title="statement not covered" >extractionByIModel.get(iModelId);</span>
506
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (runId)</span>
507
- <span class="cstat-no" title="statement not covered" > runs.push(runId);</span>
508
- });
509
- <span class="cstat-no" title="statement not covered" > this._reportRunIds.set(reportId, runs);</span>
510
- });
581
+ <span class="cstat-no" title="statement not covered" > this._setJobRunning(!allFinished);</span>
582
+ }
511
583
  }
512
584
  &nbsp;
513
- private <span class="fstat-no" title="function not covered" >async </span>runExtraction(iModelId: string): Promise&lt;string | undefined&gt; {
514
- <span class="cstat-no" title="statement not covered" > try {</span>
515
- const response = <span class="cstat-no" title="statement not covered" >await this._extractionClientApi.runExtraction(</span>
585
+ public async runReportExtractions(reportIds: string[]): Promise&lt;void&gt; {
586
+ const reportIModelIds = new Map&lt;string, string[]&gt;();
587
+ for (const reportId of reportIds) {
588
+ const reportIModels = await this.fetchReportIModels(reportId);
589
+ reportIModelIds.set(reportId, reportIModels);
590
+ this._reportIModels.set(reportId, reportIModels);
591
+ }
592
+ const iModels = new Set(Array.from(reportIModelIds.values()).flat());
593
+ &nbsp;
594
+ for (const iModel of iModels) {
595
+ await this.runIModelExtractions([iModel]);
596
+ }
597
+ }
598
+ &nbsp;
599
+ private async runExtraction(iModelId: string): Promise&lt;string | undefined&gt; {
600
+ try {
601
+ const response = await this._extractionClientApi.runExtraction(
516
602
  await this._accessToken(),
517
603
  iModelId
518
604
  );
519
- <span class="cstat-no" title="statement not covered" > return response.id;</span>
605
+ this._iModelToast.delete(iModelId);
606
+ return response.id;
520
607
  } catch (error: any) {
521
608
  <span class="cstat-no" title="statement not covered" > handleError(error.status);</span>
522
609
  }
523
610
  <span class="cstat-no" title="statement not covered" > return undefined;</span>
524
611
  }
525
612
  &nbsp;
526
- private <span class="fstat-no" title="function not covered" >async </span>fetchReportIModels(reportId: string): Promise&lt;string[]&gt; {
527
- const reportMappings = <span class="cstat-no" title="statement not covered" >await this._reportsClientApi.getReportMappings(</span>
613
+ public async runIModelExtraction(iModelId: string): Promise&lt;void&gt; {
614
+ return this.runIModelExtractions([iModelId]);
615
+ }
616
+ &nbsp;
617
+ public <span class="fstat-no" title="function not covered" >setHook(</span>setJobRunning: React.Dispatch&lt;React.SetStateAction&lt;boolean&gt;&gt;, iModels: string[]): void {
618
+ <span class="cstat-no" title="statement not covered" > this._setJobRunning = setJobRunning;</span>
619
+ <span class="cstat-no" title="statement not covered" > this._iModels = iModels;</span>
620
+ <span class="cstat-no" title="statement not covered" > this.checkRunning();</span>
621
+ }
622
+ &nbsp;
623
+ public async runIModelExtractions(iModels: string[]): Promise&lt;void&gt; {
624
+ for (const iModelId of iModels) {
625
+ const run = await this.runExtraction(iModelId);
626
+ if (run) {
627
+ this._iModelStates.set(iModelId, ExtractorState.Queued);
628
+ this._iModelRun.set(iModelId, run);
629
+ }
630
+ this.checkRunning();
631
+ }
632
+ }
633
+ &nbsp;
634
+ private async fetchReportIModels(reportId: string): Promise&lt;string[]&gt; {
635
+ const reportMappings = await this._reportsClientApi.getReportMappings(
528
636
  await this._accessToken(),
529
637
  reportId
530
638
  );
531
- <span class="cstat-no" title="statement not covered" > return reportMappings.map(<span class="fstat-no" title="function not covered" >(x</span>) =&gt; <span class="cstat-no" title="statement not covered" >x.imodelId)</span>;</span>
639
+ return reportMappings.map((x) =&gt; x.imodelId);
532
640
  }
533
641
  }
534
642
  &nbsp;</pre></td></tr></table></pre>
@@ -538,7 +646,7 @@ export default class BulkExtractor {
538
646
  <div class='footer quiet pad2 space-top1 center small'>
539
647
  Code coverage generated by
540
648
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
541
- at Mon Oct 31 2022 19:03:26 GMT+0000 (Coordinated Universal Time)
649
+ at Tue Mar 07 2023 15:47:40 GMT+0000 (Coordinated Universal Time)
542
650
  </div>
543
651
  <script src="../../../prettify.js"></script>
544
652
  <script>