@things-factory/dataset 9.0.0-beta.24 → 9.0.0-beta.27

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 (345) hide show
  1. package/package.json +12 -12
  2. package/dist-client/activities/activity-data-collect-edit.d.ts +0 -19
  3. package/dist-client/activities/activity-data-collect-edit.js +0 -105
  4. package/dist-client/activities/activity-data-collect-edit.js.map +0 -1
  5. package/dist-client/activities/activity-data-collect-view.d.ts +0 -16
  6. package/dist-client/activities/activity-data-collect-view.js +0 -94
  7. package/dist-client/activities/activity-data-collect-view.js.map +0 -1
  8. package/dist-client/activities/activity-data-review-edit.d.ts +0 -18
  9. package/dist-client/activities/activity-data-review-edit.js +0 -279
  10. package/dist-client/activities/activity-data-review-edit.js.map +0 -1
  11. package/dist-client/activities/activity-data-review-view.d.ts +0 -14
  12. package/dist-client/activities/activity-data-review-view.js +0 -224
  13. package/dist-client/activities/activity-data-review-view.js.map +0 -1
  14. package/dist-client/activities/activity-ooc-resolve-edit.d.ts +0 -2
  15. package/dist-client/activities/activity-ooc-resolve-edit.js +0 -196
  16. package/dist-client/activities/activity-ooc-resolve-edit.js.map +0 -1
  17. package/dist-client/activities/activity-ooc-resolve-view.d.ts +0 -14
  18. package/dist-client/activities/activity-ooc-resolve-view.js +0 -146
  19. package/dist-client/activities/activity-ooc-resolve-view.js.map +0 -1
  20. package/dist-client/activities/activity-ooc-review-edit.d.ts +0 -2
  21. package/dist-client/activities/activity-ooc-review-edit.js +0 -176
  22. package/dist-client/activities/activity-ooc-review-edit.js.map +0 -1
  23. package/dist-client/activities/activity-ooc-review-view.d.ts +0 -1
  24. package/dist-client/activities/activity-ooc-review-view.js +0 -133
  25. package/dist-client/activities/activity-ooc-review-view.js.map +0 -1
  26. package/dist-client/bootstrap.d.ts +0 -10
  27. package/dist-client/bootstrap.js +0 -26
  28. package/dist-client/bootstrap.js.map +0 -1
  29. package/dist-client/components/data-entry-form.d.ts +0 -20
  30. package/dist-client/components/data-entry-form.js +0 -108
  31. package/dist-client/components/data-entry-form.js.map +0 -1
  32. package/dist-client/index.d.ts +0 -1
  33. package/dist-client/index.js +0 -2
  34. package/dist-client/index.js.map +0 -1
  35. package/dist-client/pages/data-archive/data-archive-list-page.d.ts +0 -67
  36. package/dist-client/pages/data-archive/data-archive-list-page.js +0 -272
  37. package/dist-client/pages/data-archive/data-archive-list-page.js.map +0 -1
  38. package/dist-client/pages/data-archive/data-archive-request-popup.d.ts +0 -1
  39. package/dist-client/pages/data-archive/data-archive-request-popup.js +0 -160
  40. package/dist-client/pages/data-archive/data-archive-request-popup.js.map +0 -1
  41. package/dist-client/pages/data-entry/checklist-entry-page.d.ts +0 -21
  42. package/dist-client/pages/data-entry/checklist-entry-page.js +0 -209
  43. package/dist-client/pages/data-entry/checklist-entry-page.js.map +0 -1
  44. package/dist-client/pages/data-entry/data-entry-list-page.d.ts +0 -38
  45. package/dist-client/pages/data-entry/data-entry-list-page.js +0 -448
  46. package/dist-client/pages/data-entry/data-entry-list-page.js.map +0 -1
  47. package/dist-client/pages/data-key-set/data-key-item-list.d.ts +0 -19
  48. package/dist-client/pages/data-key-set/data-key-item-list.js +0 -182
  49. package/dist-client/pages/data-key-set/data-key-item-list.js.map +0 -1
  50. package/dist-client/pages/data-key-set/data-key-set-importer.d.ts +0 -10
  51. package/dist-client/pages/data-key-set/data-key-set-importer.js +0 -94
  52. package/dist-client/pages/data-key-set/data-key-set-importer.js.map +0 -1
  53. package/dist-client/pages/data-key-set/data-key-set-list-page.d.ts +0 -64
  54. package/dist-client/pages/data-key-set/data-key-set-list-page.js +0 -405
  55. package/dist-client/pages/data-key-set/data-key-set-list-page.js.map +0 -1
  56. package/dist-client/pages/data-ooc/data-ooc-list-page.d.ts +0 -72
  57. package/dist-client/pages/data-ooc/data-ooc-list-page.js +0 -545
  58. package/dist-client/pages/data-ooc/data-ooc-list-page.js.map +0 -1
  59. package/dist-client/pages/data-ooc/data-ooc-page.d.ts +0 -18
  60. package/dist-client/pages/data-ooc/data-ooc-page.js +0 -163
  61. package/dist-client/pages/data-ooc/data-ooc-page.js.map +0 -1
  62. package/dist-client/pages/data-ooc/data-ooc-view.d.ts +0 -19
  63. package/dist-client/pages/data-ooc/data-ooc-view.js +0 -232
  64. package/dist-client/pages/data-ooc/data-ooc-view.js.map +0 -1
  65. package/dist-client/pages/data-ooc/data-oocs-page.d.ts +0 -18
  66. package/dist-client/pages/data-ooc/data-oocs-page.js +0 -200
  67. package/dist-client/pages/data-ooc/data-oocs-page.js.map +0 -1
  68. package/dist-client/pages/data-report/data-report-embed-page.d.ts +0 -36
  69. package/dist-client/pages/data-report/data-report-embed-page.js +0 -101
  70. package/dist-client/pages/data-report/data-report-embed-page.js.map +0 -1
  71. package/dist-client/pages/data-report/data-report-list-page.d.ts +0 -38
  72. package/dist-client/pages/data-report/data-report-list-page.js +0 -441
  73. package/dist-client/pages/data-report/data-report-list-page.js.map +0 -1
  74. package/dist-client/pages/data-report/data-report-samples-page.d.ts +0 -32
  75. package/dist-client/pages/data-report/data-report-samples-page.js +0 -166
  76. package/dist-client/pages/data-report/data-report-samples-page.js.map +0 -1
  77. package/dist-client/pages/data-report/jasper-report-oocs-page.d.ts +0 -2
  78. package/dist-client/pages/data-report/jasper-report-oocs-page.js +0 -101
  79. package/dist-client/pages/data-report/jasper-report-oocs-page.js.map +0 -1
  80. package/dist-client/pages/data-report/jasper-report-samples-crosstab-page.d.ts +0 -2
  81. package/dist-client/pages/data-report/jasper-report-samples-crosstab-page.js +0 -101
  82. package/dist-client/pages/data-report/jasper-report-samples-crosstab-page.js.map +0 -1
  83. package/dist-client/pages/data-report/jasper-report-samples-page.d.ts +0 -2
  84. package/dist-client/pages/data-report/jasper-report-samples-page.js +0 -101
  85. package/dist-client/pages/data-report/jasper-report-samples-page.js.map +0 -1
  86. package/dist-client/pages/data-sample/data-sample-list-page.d.ts +0 -70
  87. package/dist-client/pages/data-sample/data-sample-list-page.js +0 -437
  88. package/dist-client/pages/data-sample/data-sample-list-page.js.map +0 -1
  89. package/dist-client/pages/data-sample/data-sample-page.d.ts +0 -17
  90. package/dist-client/pages/data-sample/data-sample-page.js +0 -57
  91. package/dist-client/pages/data-sample/data-sample-page.js.map +0 -1
  92. package/dist-client/pages/data-sample/data-sample-search-page.d.ts +0 -59
  93. package/dist-client/pages/data-sample/data-sample-search-page.js +0 -421
  94. package/dist-client/pages/data-sample/data-sample-search-page.js.map +0 -1
  95. package/dist-client/pages/data-sample/data-sample-view.d.ts +0 -21
  96. package/dist-client/pages/data-sample/data-sample-view.js +0 -285
  97. package/dist-client/pages/data-sample/data-sample-view.js.map +0 -1
  98. package/dist-client/pages/data-sample/data-samples-page.d.ts +0 -21
  99. package/dist-client/pages/data-sample/data-samples-page.js +0 -249
  100. package/dist-client/pages/data-sample/data-samples-page.js.map +0 -1
  101. package/dist-client/pages/data-sensor/data-sensor-list-page.d.ts +0 -58
  102. package/dist-client/pages/data-sensor/data-sensor-list-page.js +0 -455
  103. package/dist-client/pages/data-sensor/data-sensor-list-page.js.map +0 -1
  104. package/dist-client/pages/data-set/data-item-list.d.ts +0 -1
  105. package/dist-client/pages/data-set/data-item-list.js +0 -306
  106. package/dist-client/pages/data-set/data-item-list.js.map +0 -1
  107. package/dist-client/pages/data-set/data-set-importer.d.ts +0 -11
  108. package/dist-client/pages/data-set/data-set-importer.js +0 -97
  109. package/dist-client/pages/data-set/data-set-importer.js.map +0 -1
  110. package/dist-client/pages/data-set/data-set-list-page.d.ts +0 -83
  111. package/dist-client/pages/data-set/data-set-list-page.js +0 -1048
  112. package/dist-client/pages/data-set/data-set-list-page.js.map +0 -1
  113. package/dist-client/pages/data-summary/data-summary-list-page.d.ts +0 -59
  114. package/dist-client/pages/data-summary/data-summary-list-page.js +0 -361
  115. package/dist-client/pages/data-summary/data-summary-list-page.js.map +0 -1
  116. package/dist-client/pages/data-summary/data-summary-period-page.d.ts +0 -81
  117. package/dist-client/pages/data-summary/data-summary-period-page.js +0 -459
  118. package/dist-client/pages/data-summary/data-summary-period-page.js.map +0 -1
  119. package/dist-client/pages/data-summary/data-summary-search-page.d.ts +0 -78
  120. package/dist-client/pages/data-summary/data-summary-search-page.js +0 -413
  121. package/dist-client/pages/data-summary/data-summary-search-page.js.map +0 -1
  122. package/dist-client/pages/data-summary/data-summary-view.d.ts +0 -1
  123. package/dist-client/pages/data-summary/data-summary-view.js +0 -114
  124. package/dist-client/pages/data-summary/data-summary-view.js.map +0 -1
  125. package/dist-client/route.d.ts +0 -1
  126. package/dist-client/route.js +0 -74
  127. package/dist-client/route.js.map +0 -1
  128. package/dist-client/tsconfig.tsbuildinfo +0 -1
  129. package/dist-server/activities/activity-data-collect.d.ts +0 -42
  130. package/dist-server/activities/activity-data-collect.js +0 -87
  131. package/dist-server/activities/activity-data-collect.js.map +0 -1
  132. package/dist-server/activities/activity-data-review.d.ts +0 -42
  133. package/dist-server/activities/activity-data-review.js +0 -87
  134. package/dist-server/activities/activity-data-review.js.map +0 -1
  135. package/dist-server/activities/activity-ooc-resolve.d.ts +0 -42
  136. package/dist-server/activities/activity-ooc-resolve.js +0 -104
  137. package/dist-server/activities/activity-ooc-resolve.js.map +0 -1
  138. package/dist-server/activities/activity-ooc-review.d.ts +0 -42
  139. package/dist-server/activities/activity-ooc-review.js +0 -82
  140. package/dist-server/activities/activity-ooc-review.js.map +0 -1
  141. package/dist-server/activities/index.d.ts +0 -1
  142. package/dist-server/activities/index.js +0 -11
  143. package/dist-server/activities/index.js.map +0 -1
  144. package/dist-server/controllers/create-data-ooc.d.ts +0 -4
  145. package/dist-server/controllers/create-data-ooc.js +0 -65
  146. package/dist-server/controllers/create-data-ooc.js.map +0 -1
  147. package/dist-server/controllers/create-data-sample.d.ts +0 -3
  148. package/dist-server/controllers/create-data-sample.js +0 -268
  149. package/dist-server/controllers/create-data-sample.js.map +0 -1
  150. package/dist-server/controllers/data-use-case.d.ts +0 -36
  151. package/dist-server/controllers/data-use-case.js +0 -63
  152. package/dist-server/controllers/data-use-case.js.map +0 -1
  153. package/dist-server/controllers/finalize-data-collection.d.ts +0 -4
  154. package/dist-server/controllers/finalize-data-collection.js +0 -328
  155. package/dist-server/controllers/finalize-data-collection.js.map +0 -1
  156. package/dist-server/controllers/index.d.ts +0 -6
  157. package/dist-server/controllers/index.js +0 -10
  158. package/dist-server/controllers/index.js.map +0 -1
  159. package/dist-server/controllers/issue-data-collection-task.d.ts +0 -2
  160. package/dist-server/controllers/issue-data-collection-task.js +0 -57
  161. package/dist-server/controllers/issue-data-collection-task.js.map +0 -1
  162. package/dist-server/controllers/issue-ooc-resolve.d.ts +0 -3
  163. package/dist-server/controllers/issue-ooc-resolve.js +0 -49
  164. package/dist-server/controllers/issue-ooc-resolve.js.map +0 -1
  165. package/dist-server/controllers/issue-ooc-review.d.ts +0 -3
  166. package/dist-server/controllers/issue-ooc-review.js +0 -47
  167. package/dist-server/controllers/issue-ooc-review.js.map +0 -1
  168. package/dist-server/controllers/jasper-report.d.ts +0 -1
  169. package/dist-server/controllers/jasper-report.js +0 -163
  170. package/dist-server/controllers/jasper-report.js.map +0 -1
  171. package/dist-server/controllers/query-data-summary-by-period.d.ts +0 -3
  172. package/dist-server/controllers/query-data-summary-by-period.js +0 -157
  173. package/dist-server/controllers/query-data-summary-by-period.js.map +0 -1
  174. package/dist-server/controllers/shiny-report.d.ts +0 -1
  175. package/dist-server/controllers/shiny-report.js +0 -35
  176. package/dist-server/controllers/shiny-report.js.map +0 -1
  177. package/dist-server/engine/index.d.ts +0 -1
  178. package/dist-server/engine/index.js +0 -4
  179. package/dist-server/engine/index.js.map +0 -1
  180. package/dist-server/engine/task/create-data-sample.d.ts +0 -1
  181. package/dist-server/engine/task/create-data-sample.js +0 -81
  182. package/dist-server/engine/task/create-data-sample.js.map +0 -1
  183. package/dist-server/engine/task/index.d.ts +0 -2
  184. package/dist-server/engine/task/index.js +0 -5
  185. package/dist-server/engine/task/index.js.map +0 -1
  186. package/dist-server/engine/task/issue-collect-data.d.ts +0 -1
  187. package/dist-server/engine/task/issue-collect-data.js +0 -40
  188. package/dist-server/engine/task/issue-collect-data.js.map +0 -1
  189. package/dist-server/index.d.ts +0 -6
  190. package/dist-server/index.js +0 -10
  191. package/dist-server/index.js.map +0 -1
  192. package/dist-server/routes.d.ts +0 -1
  193. package/dist-server/routes.js +0 -140
  194. package/dist-server/routes.js.map +0 -1
  195. package/dist-server/service/data-archive/data-archive-mutation.d.ts +0 -16
  196. package/dist-server/service/data-archive/data-archive-mutation.js +0 -227
  197. package/dist-server/service/data-archive/data-archive-mutation.js.map +0 -1
  198. package/dist-server/service/data-archive/data-archive-query.d.ts +0 -11
  199. package/dist-server/service/data-archive/data-archive-query.js +0 -83
  200. package/dist-server/service/data-archive/data-archive-query.js.map +0 -1
  201. package/dist-server/service/data-archive/data-archive-type.d.ts +0 -23
  202. package/dist-server/service/data-archive/data-archive-type.js +0 -74
  203. package/dist-server/service/data-archive/data-archive-type.js.map +0 -1
  204. package/dist-server/service/data-archive/data-archive.d.ts +0 -19
  205. package/dist-server/service/data-archive/data-archive.js +0 -79
  206. package/dist-server/service/data-archive/data-archive.js.map +0 -1
  207. package/dist-server/service/data-archive/index.d.ts +0 -5
  208. package/dist-server/service/data-archive/index.js +0 -9
  209. package/dist-server/service/data-archive/index.js.map +0 -1
  210. package/dist-server/service/data-key-set/data-key-item-type.d.ts +0 -12
  211. package/dist-server/service/data-key-set/data-key-item-type.js +0 -50
  212. package/dist-server/service/data-key-set/data-key-item-type.js.map +0 -1
  213. package/dist-server/service/data-key-set/data-key-set-mutation.d.ts +0 -10
  214. package/dist-server/service/data-key-set/data-key-set-mutation.js +0 -168
  215. package/dist-server/service/data-key-set/data-key-set-mutation.js.map +0 -1
  216. package/dist-server/service/data-key-set/data-key-set-query.d.ts +0 -12
  217. package/dist-server/service/data-key-set/data-key-set-query.js +0 -98
  218. package/dist-server/service/data-key-set/data-key-set-query.js.map +0 -1
  219. package/dist-server/service/data-key-set/data-key-set-type.d.ts +0 -28
  220. package/dist-server/service/data-key-set/data-key-set-type.js +0 -100
  221. package/dist-server/service/data-key-set/data-key-set-type.js.map +0 -1
  222. package/dist-server/service/data-key-set/data-key-set.d.ts +0 -22
  223. package/dist-server/service/data-key-set/data-key-set.js +0 -99
  224. package/dist-server/service/data-key-set/data-key-set.js.map +0 -1
  225. package/dist-server/service/data-key-set/index.d.ts +0 -5
  226. package/dist-server/service/data-key-set/index.js +0 -9
  227. package/dist-server/service/data-key-set/index.js.map +0 -1
  228. package/dist-server/service/data-ooc/data-ooc-mutation.d.ts +0 -6
  229. package/dist-server/service/data-ooc/data-ooc-mutation.js +0 -81
  230. package/dist-server/service/data-ooc/data-ooc-mutation.js.map +0 -1
  231. package/dist-server/service/data-ooc/data-ooc-query.d.ts +0 -22
  232. package/dist-server/service/data-ooc/data-ooc-query.js +0 -165
  233. package/dist-server/service/data-ooc/data-ooc-query.js.map +0 -1
  234. package/dist-server/service/data-ooc/data-ooc-subscription.d.ts +0 -7
  235. package/dist-server/service/data-ooc/data-ooc-subscription.js +0 -51
  236. package/dist-server/service/data-ooc/data-ooc-subscription.js.map +0 -1
  237. package/dist-server/service/data-ooc/data-ooc-type.d.ts +0 -27
  238. package/dist-server/service/data-ooc/data-ooc-type.js +0 -102
  239. package/dist-server/service/data-ooc/data-ooc-type.js.map +0 -1
  240. package/dist-server/service/data-ooc/data-ooc.d.ts +0 -63
  241. package/dist-server/service/data-ooc/data-ooc.js +0 -304
  242. package/dist-server/service/data-ooc/data-ooc.js.map +0 -1
  243. package/dist-server/service/data-ooc/index.d.ts +0 -6
  244. package/dist-server/service/data-ooc/index.js +0 -10
  245. package/dist-server/service/data-ooc/index.js.map +0 -1
  246. package/dist-server/service/data-sample/data-sample-mutation.d.ts +0 -5
  247. package/dist-server/service/data-sample/data-sample-mutation.js +0 -28
  248. package/dist-server/service/data-sample/data-sample-mutation.js.map +0 -1
  249. package/dist-server/service/data-sample/data-sample-query.d.ts +0 -22
  250. package/dist-server/service/data-sample/data-sample-query.js +0 -249
  251. package/dist-server/service/data-sample/data-sample-query.js.map +0 -1
  252. package/dist-server/service/data-sample/data-sample-type.d.ts +0 -18
  253. package/dist-server/service/data-sample/data-sample-type.js +0 -68
  254. package/dist-server/service/data-sample/data-sample-type.js.map +0 -1
  255. package/dist-server/service/data-sample/data-sample.d.ts +0 -45
  256. package/dist-server/service/data-sample/data-sample.js +0 -221
  257. package/dist-server/service/data-sample/data-sample.js.map +0 -1
  258. package/dist-server/service/data-sample/index.d.ts +0 -5
  259. package/dist-server/service/data-sample/index.js +0 -9
  260. package/dist-server/service/data-sample/index.js.map +0 -1
  261. package/dist-server/service/data-sensor/data-sensor-mutation.d.ts +0 -9
  262. package/dist-server/service/data-sensor/data-sensor-mutation.js +0 -109
  263. package/dist-server/service/data-sensor/data-sensor-mutation.js.map +0 -1
  264. package/dist-server/service/data-sensor/data-sensor-query.d.ts +0 -16
  265. package/dist-server/service/data-sensor/data-sensor-query.js +0 -115
  266. package/dist-server/service/data-sensor/data-sensor-query.js.map +0 -1
  267. package/dist-server/service/data-sensor/data-sensor-type.d.ts +0 -38
  268. package/dist-server/service/data-sensor/data-sensor-type.js +0 -146
  269. package/dist-server/service/data-sensor/data-sensor-type.js.map +0 -1
  270. package/dist-server/service/data-sensor/data-sensor.d.ts +0 -31
  271. package/dist-server/service/data-sensor/data-sensor.js +0 -148
  272. package/dist-server/service/data-sensor/data-sensor.js.map +0 -1
  273. package/dist-server/service/data-sensor/index.d.ts +0 -5
  274. package/dist-server/service/data-sensor/index.js +0 -9
  275. package/dist-server/service/data-sensor/index.js.map +0 -1
  276. package/dist-server/service/data-set/data-item-type.d.ts +0 -62
  277. package/dist-server/service/data-set/data-item-type.js +0 -199
  278. package/dist-server/service/data-set/data-item-type.js.map +0 -1
  279. package/dist-server/service/data-set/data-set-mutation.d.ts +0 -20
  280. package/dist-server/service/data-set/data-set-mutation.js +0 -474
  281. package/dist-server/service/data-set/data-set-mutation.js.map +0 -1
  282. package/dist-server/service/data-set/data-set-query.d.ts +0 -39
  283. package/dist-server/service/data-set/data-set-query.js +0 -545
  284. package/dist-server/service/data-set/data-set-query.js.map +0 -1
  285. package/dist-server/service/data-set/data-set-type.d.ts +0 -75
  286. package/dist-server/service/data-set/data-set-type.js +0 -274
  287. package/dist-server/service/data-set/data-set-type.js.map +0 -1
  288. package/dist-server/service/data-set/data-set.d.ts +0 -95
  289. package/dist-server/service/data-set/data-set.js +0 -375
  290. package/dist-server/service/data-set/data-set.js.map +0 -1
  291. package/dist-server/service/data-set/index.d.ts +0 -5
  292. package/dist-server/service/data-set/index.js +0 -9
  293. package/dist-server/service/data-set/index.js.map +0 -1
  294. package/dist-server/service/data-set-history/data-set-history-query.d.ts +0 -21
  295. package/dist-server/service/data-set-history/data-set-history-query.js +0 -177
  296. package/dist-server/service/data-set-history/data-set-history-query.js.map +0 -1
  297. package/dist-server/service/data-set-history/data-set-history-type.d.ts +0 -5
  298. package/dist-server/service/data-set-history/data-set-history-type.js +0 -21
  299. package/dist-server/service/data-set-history/data-set-history-type.js.map +0 -1
  300. package/dist-server/service/data-set-history/data-set-history.d.ts +0 -53
  301. package/dist-server/service/data-set-history/data-set-history.js +0 -246
  302. package/dist-server/service/data-set-history/data-set-history.js.map +0 -1
  303. package/dist-server/service/data-set-history/event-subscriber.d.ts +0 -7
  304. package/dist-server/service/data-set-history/event-subscriber.js +0 -21
  305. package/dist-server/service/data-set-history/event-subscriber.js.map +0 -1
  306. package/dist-server/service/data-set-history/index.d.ts +0 -6
  307. package/dist-server/service/data-set-history/index.js +0 -10
  308. package/dist-server/service/data-set-history/index.js.map +0 -1
  309. package/dist-server/service/data-spec/data-spec-manager.d.ts +0 -10
  310. package/dist-server/service/data-spec/data-spec-manager.js +0 -20
  311. package/dist-server/service/data-spec/data-spec-manager.js.map +0 -1
  312. package/dist-server/service/data-spec/data-spec-query.d.ts +0 -5
  313. package/dist-server/service/data-spec/data-spec-query.js +0 -37
  314. package/dist-server/service/data-spec/data-spec-query.js.map +0 -1
  315. package/dist-server/service/data-spec/data-spec.d.ts +0 -19
  316. package/dist-server/service/data-spec/data-spec.js +0 -69
  317. package/dist-server/service/data-spec/data-spec.js.map +0 -1
  318. package/dist-server/service/data-spec/index.d.ts +0 -4
  319. package/dist-server/service/data-spec/index.js +0 -8
  320. package/dist-server/service/data-spec/index.js.map +0 -1
  321. package/dist-server/service/data-summary/data-summary-mutation.d.ts +0 -6
  322. package/dist-server/service/data-summary/data-summary-mutation.js +0 -72
  323. package/dist-server/service/data-summary/data-summary-mutation.js.map +0 -1
  324. package/dist-server/service/data-summary/data-summary-query.d.ts +0 -19
  325. package/dist-server/service/data-summary/data-summary-query.js +0 -214
  326. package/dist-server/service/data-summary/data-summary-query.js.map +0 -1
  327. package/dist-server/service/data-summary/data-summary-type.d.ts +0 -33
  328. package/dist-server/service/data-summary/data-summary-type.js +0 -137
  329. package/dist-server/service/data-summary/data-summary-type.js.map +0 -1
  330. package/dist-server/service/data-summary/data-summary.d.ts +0 -38
  331. package/dist-server/service/data-summary/data-summary.js +0 -200
  332. package/dist-server/service/data-summary/data-summary.js.map +0 -1
  333. package/dist-server/service/data-summary/index.d.ts +0 -6
  334. package/dist-server/service/data-summary/index.js +0 -10
  335. package/dist-server/service/data-summary/index.js.map +0 -1
  336. package/dist-server/service/index.d.ts +0 -14
  337. package/dist-server/service/index.js +0 -54
  338. package/dist-server/service/index.js.map +0 -1
  339. package/dist-server/tsconfig.tsbuildinfo +0 -1
  340. package/dist-server/utils/config-resolver.d.ts +0 -1
  341. package/dist-server/utils/config-resolver.js +0 -32
  342. package/dist-server/utils/config-resolver.js.map +0 -1
  343. package/dist-server/utils/index.d.ts +0 -1
  344. package/dist-server/utils/index.js +0 -5
  345. package/dist-server/utils/index.js.map +0 -1
@@ -1,328 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDataFinalizeCrontabSchedule = getDataFinalizeCrontabSchedule;
4
- exports.finalizeLatestDataCollection = finalizeLatestDataCollection;
5
- exports.finalizeDataCollection = finalizeDataCollection;
6
- const tslib_1 = require("tslib");
7
- const statistics = require('simple-statistics');
8
- const deepClone = require('lodash/cloneDeep');
9
- const moment_timezone_1 = tslib_1.__importDefault(require("moment-timezone"));
10
- const typeorm_1 = require("typeorm");
11
- const shell_1 = require("@things-factory/shell");
12
- const env_1 = require("@things-factory/env");
13
- const work_shift_1 = require("@things-factory/work-shift");
14
- const data_sample_js_1 = require("../service/data-sample/data-sample.js");
15
- const data_set_js_1 = require("../service/data-set/data-set.js");
16
- const data_summary_js_1 = require("../service/data-summary/data-summary.js");
17
- const STAT_FUNCTION_MAP = {
18
- sum: 'sum',
19
- mean: 'mean',
20
- stddev: 'standardDeviation',
21
- variance: 'variance',
22
- min: 'min',
23
- max: 'max',
24
- range: 'range',
25
- median: 'median',
26
- mode: 'mode'
27
- };
28
- const compareKeys = (dataKeyItems, summary, sample) => {
29
- return dataKeyItems.every((item, index) => {
30
- const prop = `key0${index + 1}`;
31
- return sample[prop] === summary[prop];
32
- });
33
- };
34
- const buildKeysFromSample = (dataKeyItems, sample) => {
35
- return dataKeyItems.reduce((sum, item, index) => {
36
- const prop = `key0${index + 1}`;
37
- sum[prop] = sample[prop];
38
- return sum;
39
- }, {});
40
- };
41
- const buildKeySortingList = (dataKeyItems) => {
42
- return dataKeyItems.reduce((sum, item, index) => {
43
- const name = `key0${index + 1}`;
44
- sum.push({ name, desc: true });
45
- return sum;
46
- }, []);
47
- };
48
- const calculateSummary = (dataItems, base) => {
49
- return dataItems.reduce((summary, item) => {
50
- const tag = item.tag;
51
- const data = base[tag]
52
- .flat(Infinity)
53
- .map(Number)
54
- .filter(item => !isNaN(item));
55
- if (data.length > 0) {
56
- try {
57
- switch (item.stat) {
58
- case 'range':
59
- summary[tag] = statistics.max(data) - statistics.min(data);
60
- break;
61
- default:
62
- const functionName = STAT_FUNCTION_MAP[item.stat];
63
- summary[tag] = (functionName && statistics[functionName](data)) || '';
64
- }
65
- }
66
- catch (err) {
67
- summary[tag] = null;
68
- console.error(err);
69
- }
70
- }
71
- else {
72
- summary[tag] = null;
73
- }
74
- return summary;
75
- }, {});
76
- };
77
- const fillSummaryResult = (dataSummary, dataItems, base) => {
78
- const summary = calculateSummary(dataItems, base);
79
- dataSummary.summary = summary;
80
- dataItems.slice(0, 4).forEach((dataItem, idx) => {
81
- const value = Number(summary[dataItem.tag]);
82
- dataSummary[`data0${idx + 1}`] = isNaN(value) ? null : value;
83
- });
84
- };
85
- async function getLatestTimesForPeriod(periodType, context) {
86
- const { domain } = context.state;
87
- const now = (0, moment_timezone_1.default)();
88
- if (periodType == data_set_js_1.DataSetSummaryPeriodType.Hour) {
89
- const begin = now.clone().subtract(1, 'hour').startOf('hour');
90
- const end = now.clone().startOf('hour');
91
- const date = begin.clone().tz(domain.timezone);
92
- return {
93
- date: date.format('YYYY-MM-DD'),
94
- period: date.format('HH'),
95
- range: [begin.toDate(), end.toDate()]
96
- };
97
- }
98
- else if (periodType == data_set_js_1.DataSetSummaryPeriodType.WorkShift) {
99
- const { workDate, workShift, shiftRange } = await (0, work_shift_1.getLatestWorkDateAndShift)(domain, new Date());
100
- return { date: workDate, period: workShift, range: shiftRange };
101
- }
102
- else if (periodType == data_set_js_1.DataSetSummaryPeriodType.WorkDate) {
103
- const { workDate, dateRange } = await (0, work_shift_1.getLatestWorkDateAndShift)(domain, new Date());
104
- return { date: workDate, range: dateRange };
105
- }
106
- else if (periodType == data_set_js_1.DataSetSummaryPeriodType.Day) {
107
- const begin = now.clone().subtract(1, 'day').startOf('day');
108
- const end = now.clone().startOf('day');
109
- const date = begin.clone().tz(domain.timezone);
110
- return {
111
- date: date.format('YYYY-MM-DD'),
112
- range: [begin.toDate(), end.toDate()]
113
- };
114
- }
115
- }
116
- async function getTimesForPeriod(periodType, date, period, context) {
117
- const { domain } = context.state;
118
- if (periodType == data_set_js_1.DataSetSummaryPeriodType.Hour) {
119
- const theDate = moment_timezone_1.default.tz(`${date} ${period}:00:00`, 'YYYY-MM-DD HH:mm:ss', domain.timezone);
120
- const begin = theDate.clone().startOf('hour').toDate();
121
- const end = theDate.clone().add(+1, 'hour').startOf('hour').toDate();
122
- return {
123
- date,
124
- period,
125
- range: [begin, end]
126
- };
127
- }
128
- else if (periodType == data_set_js_1.DataSetSummaryPeriodType.WorkShift) {
129
- const range = await (0, work_shift_1.getDateRangeForWorkShift)(domain, date, period);
130
- return { date, period, range };
131
- }
132
- else if (periodType == data_set_js_1.DataSetSummaryPeriodType.WorkDate) {
133
- const range = await (0, work_shift_1.getDateRangeForWorkDate)(domain, date);
134
- return { date, range };
135
- }
136
- else if (periodType == data_set_js_1.DataSetSummaryPeriodType.Day) {
137
- const theDate = moment_timezone_1.default.tz(`${date} 00:00:00`, 'YYYY-MM-DD HH:mm:ss', domain.timezone);
138
- const begin = theDate.clone().startOf('day').toDate();
139
- const end = theDate.clone().add(1, 'day').startOf('day').toDate();
140
- return {
141
- date: (0, moment_timezone_1.default)(begin).tz(domain.timezone).format('YYYY-MM-DD'),
142
- range: [begin, end]
143
- };
144
- }
145
- }
146
- async function getDataFinalizeCrontabSchedule(dataSet, context) {
147
- const { domain, user, tx } = context.state;
148
- try {
149
- const { summaryPeriod } = dataSet;
150
- if (summaryPeriod == data_set_js_1.DataSetSummaryPeriodType.Hour) {
151
- return '0 5 * * * *';
152
- }
153
- else if (summaryPeriod == data_set_js_1.DataSetSummaryPeriodType.WorkShift) {
154
- return await (0, work_shift_1.getSummaryScheduleForWorkShift)(domain);
155
- }
156
- else if (summaryPeriod == data_set_js_1.DataSetSummaryPeriodType.WorkDate) {
157
- return await (0, work_shift_1.getSummaryScheduleForWorkDate)(domain);
158
- }
159
- else if (summaryPeriod == data_set_js_1.DataSetSummaryPeriodType.Day) {
160
- return '0 10 0 * * *';
161
- }
162
- }
163
- catch (err) {
164
- console.error(err);
165
- }
166
- }
167
- async function finalizeLatestDataCollection(dataSetId, context) {
168
- var _a;
169
- const { domain, user, tx } = context.state;
170
- try {
171
- const dataSet = await tx.getRepository(data_set_js_1.DataSet).findOne({
172
- where: { domain: { id: (0, typeorm_1.In)([domain.id, domain.parentId].filter(Boolean)) }, id: dataSetId },
173
- relations: ['dataKeySet']
174
- });
175
- const dataKeyItems = ((_a = dataSet.dataKeySet) === null || _a === void 0 ? void 0 : _a.dataKeyItems) || [];
176
- const dataItems = dataSet.dataItems.filter(item => item.stat);
177
- const initialSummary = dataItems.reduce((sum, item) => {
178
- sum[item.tag] = [];
179
- return sum;
180
- }, {});
181
- const { date, period, range } = await getLatestTimesForPeriod(dataSet.summaryPeriod, context);
182
- const limit = 100;
183
- var page = 1;
184
- var summaries = [];
185
- var summary;
186
- do {
187
- const samples = await (0, shell_1.getQueryBuilderFromListParams)({
188
- repository: tx.getRepository(data_sample_js_1.DataSample),
189
- domain,
190
- params: {
191
- filters: [{ name: 'dataSetId', operator: 'eq', value: dataSetId }],
192
- pagination: { page, limit },
193
- sortings: [...buildKeySortingList(dataKeyItems), { name: 'collectedAt', desc: true }]
194
- },
195
- alias: 'datasample'
196
- })
197
- // The 'Between' operator includes the 'to' time in the filtering, making it unsuitable for the desired use case.
198
- // .andWhere({ collectedAt: Between.apply(null, range) })
199
- .andWhere('datasample.collectedAt >= :from', { from: range[0] })
200
- .andWhere('datasample.collectedAt < :to', { to: range[1] })
201
- .getMany();
202
- for (const sample of samples) {
203
- if (!summary || !compareKeys(dataKeyItems, summary, sample)) {
204
- if (summary) {
205
- fillSummaryResult(summary, dataItems, summary.summary);
206
- summaries.push(summary);
207
- }
208
- summary = Object.assign(Object.assign({ domain, name: dataSet.name, description: dataSet.description, date,
209
- period,
210
- dataSet }, buildKeysFromSample(dataKeyItems, sample)), { count: 0, countOoc: 0, countOos: 0, summary: deepClone(initialSummary), updater: user, creator: user });
211
- }
212
- summary.count++;
213
- sample.ooc && summary.countOoc++;
214
- sample.oos && summary.countOos++;
215
- dataItems.forEach(item => {
216
- summary.summary[item.tag].push(sample.data[item.tag]);
217
- });
218
- }
219
- if (samples.length < limit) {
220
- if (summary) {
221
- fillSummaryResult(summary, dataItems, summary.summary);
222
- summaries.push(summary);
223
- }
224
- break;
225
- }
226
- page++;
227
- } while (true);
228
- tx.getRepository(data_summary_js_1.DataSummary).upsert(summaries, [
229
- 'domain',
230
- 'dataSet',
231
- 'key01',
232
- 'key02',
233
- 'key03',
234
- 'key04',
235
- 'key05',
236
- 'date',
237
- 'period'
238
- ]);
239
- return true;
240
- }
241
- catch (e) {
242
- env_1.logger.error(e);
243
- }
244
- return false;
245
- }
246
- async function finalizeDataCollection(dataSetId, date, period, context) {
247
- var _a;
248
- const { domain, user, tx } = context.state;
249
- try {
250
- const dataSet = dataSetId &&
251
- (await tx.getRepository(data_set_js_1.DataSet).findOne({
252
- where: { domain: (0, typeorm_1.In)([domain.id, domain.parentId].filter(Boolean)), id: dataSetId },
253
- relations: ['dataKeySet']
254
- }));
255
- const dataKeyItems = ((_a = dataSet.dataKeySet) === null || _a === void 0 ? void 0 : _a.dataKeyItems) || [];
256
- const dataItems = dataSet.dataItems.filter(item => item.stat);
257
- const initialSummary = dataItems.reduce((sum, item) => {
258
- sum[item.tag] = [];
259
- return sum;
260
- }, {});
261
- const times = await getTimesForPeriod(dataSet.summaryPeriod, date, period, context);
262
- const range = times.range;
263
- period = times.period;
264
- const limit = 100;
265
- var page = 1;
266
- var summaries = [];
267
- var summary;
268
- do {
269
- const samples = await (0, shell_1.getQueryBuilderFromListParams)({
270
- repository: tx.getRepository(data_sample_js_1.DataSample),
271
- params: {
272
- filters: [{ name: 'dataSetId', operator: 'eq', value: dataSetId }],
273
- pagination: { page, limit },
274
- sortings: [...buildKeySortingList(dataKeyItems), { name: 'collectedAt', desc: true }]
275
- },
276
- domain,
277
- alias: 'datasample'
278
- })
279
- // The 'Between' operator includes the 'to' time in the filtering, making it unsuitable for the desired use case.
280
- // .andWhere({ collectedAt: Between.apply(null, range) })
281
- .andWhere('datasample.collectedAt >= :from', { from: range[0] })
282
- .andWhere('datasample.collectedAt < :to', { to: range[1] })
283
- .getMany();
284
- for (const sample of samples) {
285
- if (!summary || !compareKeys(dataKeyItems, summary, sample)) {
286
- if (summary) {
287
- fillSummaryResult(summary, dataItems, summary.summary);
288
- summaries.push(summary);
289
- }
290
- summary = Object.assign(Object.assign({ domain, name: dataSet.name, description: dataSet.description, date,
291
- period,
292
- dataSet }, buildKeysFromSample(dataKeyItems, sample)), { count: 0, countOoc: 0, countOos: 0, summary: deepClone(initialSummary), updater: user, creator: user });
293
- }
294
- summary.count++;
295
- sample.ooc && summary.countOoc++;
296
- sample.oos && summary.countOos++;
297
- dataItems.forEach(item => {
298
- summary.summary[item.tag].push(sample.data[item.tag]);
299
- });
300
- }
301
- if (samples.length < limit) {
302
- if (summary) {
303
- fillSummaryResult(summary, dataItems, summary.summary);
304
- summaries.push(summary);
305
- }
306
- break;
307
- }
308
- page++;
309
- } while (true);
310
- tx.getRepository(data_summary_js_1.DataSummary).upsert(summaries, [
311
- 'domain',
312
- 'dataSet',
313
- 'key01',
314
- 'key02',
315
- 'key03',
316
- 'key04',
317
- 'key05',
318
- 'date',
319
- 'period'
320
- ]);
321
- return true;
322
- }
323
- catch (e) {
324
- env_1.logger.error(e);
325
- }
326
- return false;
327
- }
328
- //# sourceMappingURL=finalize-data-collection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"finalize-data-collection.js","sourceRoot":"","sources":["../../server/controllers/finalize-data-collection.ts"],"names":[],"mappings":"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","sourcesContent":["const statistics = require('simple-statistics')\nconst deepClone = require('lodash/cloneDeep')\n\nimport moment from 'moment-timezone'\nimport { In } from 'typeorm'\n\nimport { Sorting, getQueryBuilderFromListParams } from '@things-factory/shell'\nimport { logger } from '@things-factory/env'\nimport {\n getDateRangeForWorkDate,\n getDateRangeForWorkShift,\n getLatestWorkDateAndShift,\n getSummaryScheduleForWorkDate,\n getSummaryScheduleForWorkShift\n} from '@things-factory/work-shift'\n\nimport { DataSample } from '../service/data-sample/data-sample.js'\nimport { DataSet, DataSetSummaryPeriodType } from '../service/data-set/data-set.js'\n\nimport { DataSummary } from '../service/data-summary/data-summary.js'\nimport { DataKeyItem } from '../service/data-key-set/data-key-item-type.js'\n\nimport { DataItem } from '../service/data-set/data-item-type.js'\n\nconst STAT_FUNCTION_MAP = {\n sum: 'sum',\n mean: 'mean',\n stddev: 'standardDeviation',\n variance: 'variance',\n min: 'min',\n max: 'max',\n range: 'range',\n median: 'median',\n mode: 'mode'\n}\n\nconst compareKeys = (dataKeyItems: DataKeyItem[], summary: Partial<DataSummary>, sample: DataSample): boolean => {\n return dataKeyItems.every((item, index) => {\n const prop = `key0${index + 1}`\n return sample[prop] === summary[prop]\n })\n}\n\nconst buildKeysFromSample = (dataKeyItems: DataKeyItem[], sample: DataSample): Partial<DataSummary> => {\n return dataKeyItems.reduce((sum, item, index) => {\n const prop = `key0${index + 1}`\n sum[prop] = sample[prop]\n\n return sum\n }, {} as Partial<DataSummary>)\n}\n\nconst buildKeySortingList = (dataKeyItems: DataKeyItem[]): Sorting[] => {\n return dataKeyItems.reduce((sum, item, index) => {\n const name = `key0${index + 1}`\n sum.push({ name, desc: true })\n return sum\n }, [])\n}\n\nconst calculateSummary = (dataItems: DataItem[], base: { [tag: string]: any[] }) => {\n return dataItems.reduce((summary, item) => {\n const tag = item.tag\n\n const data = base[tag]\n .flat(Infinity)\n .map(Number)\n .filter(item => !isNaN(item))\n\n if (data.length > 0) {\n try {\n switch (item.stat) {\n case 'range':\n summary[tag] = statistics.max(data) - statistics.min(data)\n break\n\n default:\n const functionName = STAT_FUNCTION_MAP[item.stat]\n summary[tag] = (functionName && statistics[functionName](data)) || ''\n }\n } catch (err) {\n summary[tag] = null\n console.error(err)\n }\n } else {\n summary[tag] = null\n }\n\n return summary\n }, {})\n}\n\nconst fillSummaryResult = (\n dataSummary: Partial<DataSummary>,\n dataItems: DataItem[],\n base: { [tag: string]: any[] }\n): void => {\n const summary = calculateSummary(dataItems, base)\n\n dataSummary.summary = summary\n dataItems.slice(0, 4).forEach((dataItem, idx) => {\n const value = Number(summary[dataItem.tag])\n dataSummary[`data0${idx + 1}`] = isNaN(value) ? null : value\n })\n}\n\nasync function getLatestTimesForPeriod(\n periodType: DataSetSummaryPeriodType,\n context: ResolverContext\n): Promise<{ date?: string; period?: string; range: Date[] }> {\n const { domain } = context.state\n const now = moment()\n\n if (periodType == DataSetSummaryPeriodType.Hour) {\n const begin = now.clone().subtract(1, 'hour').startOf('hour')\n const end = now.clone().startOf('hour')\n const date = begin.clone().tz(domain.timezone)\n\n return {\n date: date.format('YYYY-MM-DD'),\n period: date.format('HH'),\n range: [begin.toDate(), end.toDate()]\n }\n } else if (periodType == DataSetSummaryPeriodType.WorkShift) {\n const { workDate, workShift, shiftRange } = await getLatestWorkDateAndShift(domain, new Date())\n\n return { date: workDate, period: workShift, range: shiftRange }\n } else if (periodType == DataSetSummaryPeriodType.WorkDate) {\n const { workDate, dateRange } = await getLatestWorkDateAndShift(domain, new Date())\n\n return { date: workDate, range: dateRange }\n } else if (periodType == DataSetSummaryPeriodType.Day) {\n const begin = now.clone().subtract(1, 'day').startOf('day')\n const end = now.clone().startOf('day')\n const date = begin.clone().tz(domain.timezone)\n\n return {\n date: date.format('YYYY-MM-DD'),\n range: [begin.toDate(), end.toDate()]\n }\n }\n}\n\nasync function getTimesForPeriod(\n periodType: DataSetSummaryPeriodType,\n date: string,\n period: string,\n context: ResolverContext\n): Promise<{ date?: string; period?: string; range: Date[] }> {\n const { domain } = context.state\n\n if (periodType == DataSetSummaryPeriodType.Hour) {\n const theDate = moment.tz(`${date} ${period}:00:00`, 'YYYY-MM-DD HH:mm:ss', domain.timezone)\n\n const begin = theDate.clone().startOf('hour').toDate()\n const end = theDate.clone().add(+1, 'hour').startOf('hour').toDate()\n\n return {\n date,\n period,\n range: [begin, end]\n }\n } else if (periodType == DataSetSummaryPeriodType.WorkShift) {\n const range = await getDateRangeForWorkShift(domain, date, period)\n\n return { date, period, range }\n } else if (periodType == DataSetSummaryPeriodType.WorkDate) {\n const range = await getDateRangeForWorkDate(domain, date)\n\n return { date, range }\n } else if (periodType == DataSetSummaryPeriodType.Day) {\n const theDate = moment.tz(`${date} 00:00:00`, 'YYYY-MM-DD HH:mm:ss', domain.timezone)\n\n const begin = theDate.clone().startOf('day').toDate()\n const end = theDate.clone().add(1, 'day').startOf('day').toDate()\n\n return {\n date: moment(begin).tz(domain.timezone).format('YYYY-MM-DD'),\n range: [begin, end]\n }\n }\n}\n\nexport async function getDataFinalizeCrontabSchedule(dataSet: DataSet, context: ResolverContext): Promise<string> {\n const { domain, user, tx } = context.state\n\n try {\n const { summaryPeriod } = dataSet\n\n if (summaryPeriod == DataSetSummaryPeriodType.Hour) {\n return '0 5 * * * *'\n } else if (summaryPeriod == DataSetSummaryPeriodType.WorkShift) {\n return await getSummaryScheduleForWorkShift(domain)\n } else if (summaryPeriod == DataSetSummaryPeriodType.WorkDate) {\n return await getSummaryScheduleForWorkDate(domain)\n } else if (summaryPeriod == DataSetSummaryPeriodType.Day) {\n return '0 10 0 * * *'\n }\n } catch (err) {\n console.error(err)\n }\n}\n\nexport async function finalizeLatestDataCollection(dataSetId: string, context: ResolverContext): Promise<boolean> {\n const { domain, user, tx } = context.state\n\n try {\n const dataSet = await tx.getRepository(DataSet).findOne({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id: dataSetId },\n relations: ['dataKeySet']\n })\n\n const dataKeyItems = dataSet.dataKeySet?.dataKeyItems || []\n const dataItems = dataSet.dataItems.filter(item => item.stat)\n const initialSummary = dataItems.reduce((sum, item) => {\n sum[item.tag] = []\n return sum\n }, {})\n\n const { date, period, range } = await getLatestTimesForPeriod(dataSet.summaryPeriod, context)\n const limit = 100\n var page = 1\n\n var summaries: Partial<DataSummary>[] = []\n var summary: Partial<DataSummary>\n\n do {\n const samples = await getQueryBuilderFromListParams({\n repository: tx.getRepository(DataSample),\n domain,\n params: {\n filters: [{ name: 'dataSetId', operator: 'eq', value: dataSetId }],\n pagination: { page, limit },\n sortings: [...buildKeySortingList(dataKeyItems), { name: 'collectedAt', desc: true }]\n },\n alias: 'datasample'\n })\n // The 'Between' operator includes the 'to' time in the filtering, making it unsuitable for the desired use case.\n // .andWhere({ collectedAt: Between.apply(null, range) })\n .andWhere('datasample.collectedAt >= :from', { from: range[0] })\n .andWhere('datasample.collectedAt < :to', { to: range[1] })\n .getMany()\n\n for (const sample of samples) {\n if (!summary || !compareKeys(dataKeyItems, summary, sample)) {\n if (summary) {\n fillSummaryResult(summary, dataItems, summary.summary)\n summaries.push(summary)\n }\n\n summary = {\n domain,\n name: dataSet.name,\n description: dataSet.description,\n date,\n period,\n dataSet,\n ...buildKeysFromSample(dataKeyItems, sample),\n count: 0,\n countOoc: 0,\n countOos: 0,\n summary: deepClone(initialSummary),\n updater: user,\n creator: user\n }\n }\n\n summary.count++\n sample.ooc && summary.countOoc++\n sample.oos && summary.countOos++\n\n dataItems.forEach(item => {\n summary.summary[item.tag].push(sample.data[item.tag])\n })\n }\n\n if (samples.length < limit) {\n if (summary) {\n fillSummaryResult(summary, dataItems, summary.summary)\n summaries.push(summary)\n }\n break\n }\n\n page++\n } while (true)\n\n tx.getRepository(DataSummary).upsert(summaries, [\n 'domain',\n 'dataSet',\n 'key01',\n 'key02',\n 'key03',\n 'key04',\n 'key05',\n 'date',\n 'period'\n ])\n\n return true\n } catch (e) {\n logger.error(e)\n }\n\n return false\n}\n\nexport async function finalizeDataCollection(\n dataSetId: string,\n date: string,\n period: string,\n context: ResolverContext\n): Promise<boolean> {\n const { domain, user, tx } = context.state\n\n try {\n const dataSet =\n dataSetId &&\n (await tx.getRepository(DataSet).findOne({\n where: { domain: In([domain.id, domain.parentId].filter(Boolean)), id: dataSetId },\n relations: ['dataKeySet']\n }))\n\n const dataKeyItems = dataSet.dataKeySet?.dataKeyItems || []\n const dataItems = dataSet.dataItems.filter(item => item.stat)\n const initialSummary = dataItems.reduce((sum, item) => {\n sum[item.tag] = []\n return sum\n }, {})\n\n const times = await getTimesForPeriod(dataSet.summaryPeriod, date, period, context)\n const range = times.range\n period = times.period\n\n const limit = 100\n var page = 1\n\n var summaries: Partial<DataSummary>[] = []\n var summary: Partial<DataSummary>\n\n do {\n const samples = await getQueryBuilderFromListParams({\n repository: tx.getRepository(DataSample),\n params: {\n filters: [{ name: 'dataSetId', operator: 'eq', value: dataSetId }],\n pagination: { page, limit },\n sortings: [...buildKeySortingList(dataKeyItems), { name: 'collectedAt', desc: true }]\n },\n domain,\n alias: 'datasample'\n })\n // The 'Between' operator includes the 'to' time in the filtering, making it unsuitable for the desired use case.\n // .andWhere({ collectedAt: Between.apply(null, range) })\n .andWhere('datasample.collectedAt >= :from', { from: range[0] })\n .andWhere('datasample.collectedAt < :to', { to: range[1] })\n .getMany()\n\n for (const sample of samples) {\n if (!summary || !compareKeys(dataKeyItems, summary, sample)) {\n if (summary) {\n fillSummaryResult(summary, dataItems, summary.summary)\n summaries.push(summary)\n }\n\n summary = {\n domain,\n name: dataSet.name,\n description: dataSet.description,\n date,\n period,\n dataSet,\n ...buildKeysFromSample(dataKeyItems, sample),\n count: 0,\n countOoc: 0,\n countOos: 0,\n summary: deepClone(initialSummary),\n updater: user,\n creator: user\n }\n }\n\n summary.count++\n sample.ooc && summary.countOoc++\n sample.oos && summary.countOos++\n\n dataItems.forEach(item => {\n summary.summary[item.tag].push(sample.data[item.tag])\n })\n }\n\n if (samples.length < limit) {\n if (summary) {\n fillSummaryResult(summary, dataItems, summary.summary)\n summaries.push(summary)\n }\n break\n }\n\n page++\n } while (true)\n\n tx.getRepository(DataSummary).upsert(summaries, [\n 'domain',\n 'dataSet',\n 'key01',\n 'key02',\n 'key03',\n 'key04',\n 'key05',\n 'date',\n 'period'\n ])\n\n return true\n } catch (e) {\n logger.error(e)\n }\n\n return false\n}\n"]}
@@ -1,6 +0,0 @@
1
- export * from './create-data-sample.js';
2
- export * from './create-data-ooc.js';
3
- export * from './issue-ooc-review.js';
4
- export * from './issue-ooc-resolve.js';
5
- export * from './data-use-case.js';
6
- export * from './query-data-summary-by-period.js';
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./create-data-sample.js"), exports);
5
- tslib_1.__exportStar(require("./create-data-ooc.js"), exports);
6
- tslib_1.__exportStar(require("./issue-ooc-review.js"), exports);
7
- tslib_1.__exportStar(require("./issue-ooc-resolve.js"), exports);
8
- tslib_1.__exportStar(require("./data-use-case.js"), exports);
9
- tslib_1.__exportStar(require("./query-data-summary-by-period.js"), exports);
10
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/controllers/index.ts"],"names":[],"mappings":";;;AAAA,kEAAuC;AACvC,+DAAoC;AACpC,gEAAqC;AACrC,iEAAsC;AACtC,6DAAkC;AAClC,4EAAiD","sourcesContent":["export * from './create-data-sample.js'\nexport * from './create-data-ooc.js'\nexport * from './issue-ooc-review.js'\nexport * from './issue-ooc-resolve.js'\nexport * from './data-use-case.js'\nexport * from './query-data-summary-by-period.js'\n"]}
@@ -1,2 +0,0 @@
1
- import { ActivityInstance } from '@things-factory/worklist';
2
- export declare function issueDataCollectionTask(domainId: string, dataSetId: string, context: ResolverContext): Promise<ActivityInstance | void>;
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.issueDataCollectionTask = issueDataCollectionTask;
4
- const typeorm_1 = require("typeorm");
5
- const shell_1 = require("@things-factory/shell");
6
- const worklist_1 = require("@things-factory/worklist");
7
- const data_set_js_1 = require("../service/data-set/data-set.js");
8
- async function issueDataCollectionTask(domainId, dataSetId, context) {
9
- await (0, shell_1.getDataSource)().transaction(async (tx) => {
10
- const domain = await tx.getRepository(shell_1.Domain).findOneBy({ id: domainId });
11
- if (!domain) {
12
- throw new Error(`domain(${domainId}) not found`);
13
- }
14
- const dataSet = await tx.getRepository(data_set_js_1.DataSet).findOne({
15
- where: {
16
- domain: {
17
- id: (0, typeorm_1.In)([domain.id, domain.parentId].filter(Boolean))
18
- },
19
- id: dataSetId
20
- },
21
- relations: ['entryRole']
22
- });
23
- const activity = (await tx.getRepository(worklist_1.Activity).findOneBy({
24
- domain: { id: (0, typeorm_1.In)([domain.id, domain.parentId].filter(Boolean)) },
25
- name: 'Collect Data'
26
- }));
27
- if (activity) {
28
- const { entryRole, timeLimit } = dataSet;
29
- /* 해당 dataset에 대한 데이타 수집 태스크를 dataset entryRole에게 할당한다. */
30
- if (entryRole) {
31
- const activityInstance = {
32
- name: `[Data 수집] ${dataSet.name}`,
33
- description: dataSet.description,
34
- activityId: activity.id,
35
- dueAt: new Date(Date.now() + (timeLimit || activity.standardTime || 24 * 60 * 60) * 1000),
36
- input: {
37
- dataSetId: dataSet.id,
38
- dataSetName: dataSet.name
39
- },
40
- assigneeRole: entryRole,
41
- threadsMin: 1,
42
- threadsMax: 1
43
- };
44
- context.state = Object.assign(Object.assign({}, context.state), { domain,
45
- tx });
46
- return await (0, worklist_1.issue)(activityInstance, context);
47
- }
48
- else {
49
- throw new Error(`Data Entry Role not set. So Data Collect Activity for ${dataSet.name}($dataSet.id) could not be issued.`);
50
- }
51
- }
52
- else {
53
- throw new Error(`Data Collect Activity is not installed.`);
54
- }
55
- });
56
- }
57
- //# sourceMappingURL=issue-data-collection-task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"issue-data-collection-task.js","sourceRoot":"","sources":["../../server/controllers/issue-data-collection-task.ts"],"names":[],"mappings":";;AAOA,0DA8DC;AArED,qCAA4B;AAE5B,iDAA6D;AAC7D,uDAA4E;AAE5E,iEAAyD;AAElD,KAAK,UAAU,uBAAuB,CAC3C,QAAgB,EAChB,SAAiB,EACjB,OAAwB;IAExB,MAAM,IAAA,qBAAa,GAAE,CAAC,WAAW,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;QAC3C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;QAEzE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,UAAU,QAAQ,aAAa,CAAC,CAAA;QAClD,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,qBAAO,CAAC,CAAC,OAAO,CAAC;YACtD,KAAK,EAAE;gBACL,MAAM,EAAE;oBACN,EAAE,EAAE,IAAA,YAAE,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;iBACrD;gBACD,EAAE,EAAE,SAAS;aACd;YACD,SAAS,EAAE,CAAC,WAAW,CAAC;SACzB,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC;YAC3D,MAAM,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE;YAChE,IAAI,EAAE,cAAc;SACrB,CAAC,CAAa,CAAA;QAEf,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;YAExC,0DAA0D;YAC1D,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,gBAAgB,GAAG;oBACvB,IAAI,EAAE,aAAa,OAAO,CAAC,IAAI,EAAE;oBACjC,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,UAAU,EAAE,QAAQ,CAAC,EAAE;oBACvB,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,IAAI,QAAQ,CAAC,YAAY,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;oBACzF,KAAK,EAAE;wBACL,SAAS,EAAE,OAAO,CAAC,EAAE;wBACrB,WAAW,EAAE,OAAO,CAAC,IAAI;qBAC1B;oBACD,YAAY,EAAE,SAAS;oBACvB,UAAU,EAAE,CAAC;oBACb,UAAU,EAAE,CAAC;iBACd,CAAA;gBAED,OAAO,CAAC,KAAK,mCACR,OAAO,CAAC,KAAK,KAChB,MAAM;oBACN,EAAE,GACH,CAAA;gBAED,OAAO,MAAM,IAAA,gBAAK,EAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;YAC/C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CACb,yDAAyD,OAAO,CAAC,IAAI,oCAAoC,CAC1G,CAAA;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAC5D,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { In } from 'typeorm'\n\nimport { Domain, getDataSource } from '@things-factory/shell'\nimport { Activity, ActivityInstance, issue } from '@things-factory/worklist'\n\nimport { DataSet } from '../service/data-set/data-set.js'\n\nexport async function issueDataCollectionTask(\n domainId: string,\n dataSetId: string,\n context: ResolverContext\n): Promise<ActivityInstance | void> {\n await getDataSource().transaction(async tx => {\n const domain = await tx.getRepository(Domain).findOneBy({ id: domainId })\n\n if (!domain) {\n throw new Error(`domain(${domainId}) not found`)\n }\n\n const dataSet = await tx.getRepository(DataSet).findOne({\n where: {\n domain: {\n id: In([domain.id, domain.parentId].filter(Boolean))\n },\n id: dataSetId\n },\n relations: ['entryRole']\n })\n\n const activity = (await tx.getRepository(Activity).findOneBy({\n domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },\n name: 'Collect Data'\n })) as Activity\n\n if (activity) {\n const { entryRole, timeLimit } = dataSet\n\n /* 해당 dataset에 대한 데이타 수집 태스크를 dataset entryRole에게 할당한다. */\n if (entryRole) {\n const activityInstance = {\n name: `[Data 수집] ${dataSet.name}`,\n description: dataSet.description,\n activityId: activity.id,\n dueAt: new Date(Date.now() + (timeLimit || activity.standardTime || 24 * 60 * 60) * 1000),\n input: {\n dataSetId: dataSet.id,\n dataSetName: dataSet.name\n },\n assigneeRole: entryRole,\n threadsMin: 1,\n threadsMax: 1\n }\n\n context.state = {\n ...context.state,\n domain,\n tx\n }\n\n return await issue(activityInstance, context)\n } else {\n throw new Error(\n `Data Entry Role not set. So Data Collect Activity for ${dataSet.name}($dataSet.id) could not be issued.`\n )\n }\n } else {\n throw new Error(`Data Collect Activity is not installed.`)\n }\n })\n}\n"]}
@@ -1,3 +0,0 @@
1
- import { DataOoc } from '../service/data-ooc/data-ooc.js';
2
- import { DataSet } from '../service/data-set/data-set.js';
3
- export declare function issueOocResolve(dataOoc: DataOoc, dataSet: DataSet, correctiveInstruction: string, context: ResolverContext): Promise<void>;
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.issueOocResolve = issueOocResolve;
4
- const typeorm_1 = require("typeorm");
5
- const worklist_1 = require("@things-factory/worklist");
6
- const issue_1 = require("@things-factory/worklist/dist-server/controllers/activity-instance/issue");
7
- const auth_base_1 = require("@things-factory/auth-base");
8
- const data_ooc_js_1 = require("../service/data-ooc/data-ooc.js");
9
- async function issueOocResolve(dataOoc, dataSet, correctiveInstruction, context) {
10
- const { domain, user, tx } = context.state;
11
- const { resolverRoleId, outlierApprovalLine } = dataSet;
12
- const activity = (await tx.getRepository(worklist_1.Activity).findOneBy({
13
- domain: domain.parentId ? (0, typeorm_1.In)([domain.id, domain.parentId]) : { id: domain.id },
14
- name: 'OOC Resolve'
15
- }));
16
- if (activity) {
17
- const assigneeRole = resolverRoleId &&
18
- (await tx.getRepository(auth_base_1.Role).findOneBy({
19
- domain: { id: (0, typeorm_1.In)([domain.id, domain.parentId].filter(Boolean)) },
20
- id: resolverRoleId
21
- }));
22
- /* 해당 dataset의 작업 담당자(resolverRole)에게 OOC 해결을 위한 태스크를 지시한다. */
23
- if (assigneeRole) {
24
- const activityInstance = {
25
- name: `[OOC 조치] ${dataSet.name}`,
26
- description: dataSet.description,
27
- activityId: activity.id,
28
- dueAt: new Date(Date.now() + (activity.standardTime || 24 * 60 * 60) * 1000),
29
- input: {
30
- dataOocId: dataOoc.id,
31
- instruction: correctiveInstruction
32
- },
33
- assigneeRole,
34
- threadsMin: 1,
35
- threadsMax: 1,
36
- approvalLine: outlierApprovalLine
37
- };
38
- dataOoc.resolveActivityInstance = await (0, issue_1.issue)(activityInstance, context);
39
- await tx.getRepository(data_ooc_js_1.DataOoc).save(dataOoc);
40
- }
41
- else {
42
- console.error(`Assignees are not set. So, Data OOC Resolve task for ${dataOoc.name}(${dataOoc.id}) could not be issued.`);
43
- }
44
- }
45
- else {
46
- console.error('OOC Resolve Activity not installed.');
47
- }
48
- }
49
- //# sourceMappingURL=issue-ooc-resolve.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"issue-ooc-resolve.js","sourceRoot":"","sources":["../../server/controllers/issue-ooc-resolve.ts"],"names":[],"mappings":";;AAQA,0CAiDC;AAzDD,qCAA4B;AAC5B,uDAAmD;AACnD,oGAAgG;AAChG,yDAAgD;AAEhD,iEAAyD;AAGlD,KAAK,UAAU,eAAe,CACnC,OAAgB,EAChB,OAAgB,EAChB,qBAA6B,EAC7B,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC1C,MAAM,EAAE,cAAc,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAA;IAEvD,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC;QAC3D,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,YAAE,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;QAC9E,IAAI,EAAE,aAAa;KACpB,CAAC,CAAa,CAAA;IAEf,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,YAAY,GAChB,cAAc;YACd,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAC,SAAS,CAAC;gBACtC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE;gBAChE,EAAE,EAAE,cAAc;aACnB,CAAC,CAAC,CAAA;QAEL,8DAA8D;QAC9D,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,gBAAgB,GAAG;gBACvB,IAAI,EAAE,YAAY,OAAO,CAAC,IAAI,EAAE;gBAChC,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,UAAU,EAAE,QAAQ,CAAC,EAAE;gBACvB,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;gBAC5E,KAAK,EAAE;oBACL,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,WAAW,EAAE,qBAAqB;iBACnC;gBACD,YAAY;gBACZ,UAAU,EAAE,CAAC;gBACb,UAAU,EAAE,CAAC;gBACb,YAAY,EAAE,mBAAmB;aAClC,CAAA;YAED,OAAO,CAAC,uBAAuB,GAAG,MAAM,IAAA,aAAK,EAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;YACxE,MAAM,EAAE,CAAC,aAAa,CAAC,qBAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CACX,wDAAwD,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,wBAAwB,CAC3G,CAAA;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACtD,CAAC;AACH,CAAC","sourcesContent":["import { In } from 'typeorm'\nimport { Activity } from '@things-factory/worklist'\nimport { issue } from '@things-factory/worklist/dist-server/controllers/activity-instance/issue'\nimport { Role } from '@things-factory/auth-base'\n\nimport { DataOoc } from '../service/data-ooc/data-ooc.js'\nimport { DataSet } from '../service/data-set/data-set.js'\n\nexport async function issueOocResolve(\n dataOoc: DataOoc,\n dataSet: DataSet,\n correctiveInstruction: string,\n context: ResolverContext\n): Promise<void> {\n const { domain, user, tx } = context.state\n const { resolverRoleId, outlierApprovalLine } = dataSet\n\n const activity = (await tx.getRepository(Activity).findOneBy({\n domain: domain.parentId ? In([domain.id, domain.parentId]) : { id: domain.id },\n name: 'OOC Resolve'\n })) as Activity\n\n if (activity) {\n const assigneeRole =\n resolverRoleId &&\n (await tx.getRepository(Role).findOneBy({\n domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },\n id: resolverRoleId\n }))\n\n /* 해당 dataset의 작업 담당자(resolverRole)에게 OOC 해결을 위한 태스크를 지시한다. */\n if (assigneeRole) {\n const activityInstance = {\n name: `[OOC 조치] ${dataSet.name}`,\n description: dataSet.description,\n activityId: activity.id,\n dueAt: new Date(Date.now() + (activity.standardTime || 24 * 60 * 60) * 1000),\n input: {\n dataOocId: dataOoc.id,\n instruction: correctiveInstruction\n },\n assigneeRole,\n threadsMin: 1,\n threadsMax: 1,\n approvalLine: outlierApprovalLine\n }\n\n dataOoc.resolveActivityInstance = await issue(activityInstance, context)\n await tx.getRepository(DataOoc).save(dataOoc)\n } else {\n console.error(\n `Assignees are not set. So, Data OOC Resolve task for ${dataOoc.name}(${dataOoc.id}) could not be issued.`\n )\n }\n } else {\n console.error('OOC Resolve Activity not installed.')\n }\n}\n"]}
@@ -1,3 +0,0 @@
1
- import { DataSet } from '../service/data-set/data-set.js';
2
- import { DataOoc } from '../service/data-ooc/data-ooc.js';
3
- export declare function issueOocReview(dataOoc: DataOoc, dataSet: DataSet, context: ResolverContext): Promise<void>;
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.issueOocReview = issueOocReview;
4
- const typeorm_1 = require("typeorm");
5
- const auth_base_1 = require("@things-factory/auth-base");
6
- const worklist_1 = require("@things-factory/worklist");
7
- const issue_1 = require("@things-factory/worklist/dist-server/controllers/activity-instance/issue");
8
- const data_ooc_js_1 = require("../service/data-ooc/data-ooc.js");
9
- async function issueOocReview(dataOoc, dataSet, context) {
10
- const { domain, tx } = context.state;
11
- const { collectedAt } = dataOoc;
12
- const activity = (await tx.getRepository(worklist_1.Activity).findOneBy({
13
- domain: domain.parentId ? { id: (0, typeorm_1.In)([domain.id, domain.parentId]) } : { id: domain.id },
14
- name: 'OOC Review'
15
- }));
16
- if (activity) {
17
- const assigneeRole = dataSet.supervisoryRoleId &&
18
- (await tx.getRepository(auth_base_1.Role).findOneBy({
19
- domain: { id: (0, typeorm_1.In)([domain.id, domain.parentId].filter(Boolean)) },
20
- id: dataSet.supervisoryRoleId
21
- }));
22
- if (assigneeRole) {
23
- const activityInstance = {
24
- name: `[OOC 검토] ${dataSet.name}`,
25
- description: dataSet.description,
26
- activityId: activity.id,
27
- dueAt: new Date(collectedAt.getTime() + (activity.standardTime || 24 * 60 * 60) * 1000),
28
- input: {
29
- dataOocId: dataOoc.id
30
- },
31
- assigneeRole,
32
- threadsMin: 1,
33
- threadsMax: 1,
34
- approvalLine: []
35
- };
36
- dataOoc.reviewActivityInstance = await (0, issue_1.issue)(activityInstance, context);
37
- await tx.getRepository(data_ooc_js_1.DataOoc).save(dataOoc);
38
- }
39
- else {
40
- console.error(`Assignees are not set. So Data OOC Review task for ${dataOoc.name}(${dataOoc.id}) could not be issued.`);
41
- }
42
- }
43
- else {
44
- console.warn('OOC Review Activity not installed.');
45
- }
46
- }
47
- //# sourceMappingURL=issue-ooc-review.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"issue-ooc-review.js","sourceRoot":"","sources":["../../server/controllers/issue-ooc-review.ts"],"names":[],"mappings":";;AASA,wCA0CC;AAnDD,qCAA4B;AAE5B,yDAAgD;AAChD,uDAAmD;AACnD,oGAAgG;AAGhG,iEAAyD;AAElD,KAAK,UAAU,cAAc,CAAC,OAAgB,EAAE,OAAgB,EAAE,OAAwB;IAC/F,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IACpC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;IAE/B,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC;QAC3D,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;QACtF,IAAI,EAAE,YAAY;KACnB,CAAC,CAAa,CAAA;IAEf,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,YAAY,GAChB,OAAO,CAAC,iBAAiB;YACzB,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAC,SAAS,CAAC;gBACtC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE;gBAChE,EAAE,EAAE,OAAO,CAAC,iBAAiB;aAC9B,CAAC,CAAC,CAAA;QAEL,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,gBAAgB,GAAG;gBACvB,IAAI,EAAE,YAAY,OAAO,CAAC,IAAI,EAAE;gBAChC,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,UAAU,EAAE,QAAQ,CAAC,EAAE;gBACvB,KAAK,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;gBACvF,KAAK,EAAE;oBACL,SAAS,EAAE,OAAO,CAAC,EAAE;iBACtB;gBACD,YAAY;gBACZ,UAAU,EAAE,CAAC;gBACb,UAAU,EAAE,CAAC;gBACb,YAAY,EAAE,EAAE;aACjB,CAAA;YAED,OAAO,CAAC,sBAAsB,GAAG,MAAM,IAAA,aAAK,EAAC,gBAAuB,EAAE,OAAO,CAAC,CAAA;YAC9E,MAAM,EAAE,CAAC,aAAa,CAAC,qBAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CACX,sDAAsD,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,wBAAwB,CACzG,CAAA;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;IACpD,CAAC;AACH,CAAC","sourcesContent":["import { In } from 'typeorm'\n\nimport { Role } from '@things-factory/auth-base'\nimport { Activity } from '@things-factory/worklist'\nimport { issue } from '@things-factory/worklist/dist-server/controllers/activity-instance/issue'\n\nimport { DataSet } from '../service/data-set/data-set.js'\nimport { DataOoc } from '../service/data-ooc/data-ooc.js'\n\nexport async function issueOocReview(dataOoc: DataOoc, dataSet: DataSet, context: ResolverContext): Promise<void> {\n const { domain, tx } = context.state\n const { collectedAt } = dataOoc\n\n const activity = (await tx.getRepository(Activity).findOneBy({\n domain: domain.parentId ? { id: In([domain.id, domain.parentId]) } : { id: domain.id },\n name: 'OOC Review'\n })) as Activity\n\n if (activity) {\n const assigneeRole =\n dataSet.supervisoryRoleId &&\n (await tx.getRepository(Role).findOneBy({\n domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },\n id: dataSet.supervisoryRoleId\n }))\n\n if (assigneeRole) {\n const activityInstance = {\n name: `[OOC 검토] ${dataSet.name}`,\n description: dataSet.description,\n activityId: activity.id,\n dueAt: new Date(collectedAt.getTime() + (activity.standardTime || 24 * 60 * 60) * 1000),\n input: {\n dataOocId: dataOoc.id\n },\n assigneeRole,\n threadsMin: 1,\n threadsMax: 1,\n approvalLine: []\n }\n\n dataOoc.reviewActivityInstance = await issue(activityInstance as any, context)\n await tx.getRepository(DataOoc).save(dataOoc)\n } else {\n console.error(\n `Assignees are not set. So Data OOC Review task for ${dataOoc.name}(${dataOoc.id}) could not be issued.`\n )\n }\n } else {\n console.warn('OOC Review Activity not installed.')\n }\n}\n"]}
@@ -1 +0,0 @@
1
- export declare function renderJasperReport(context: any): Promise<string>;