@things-factory/dataset 8.0.40 → 9.0.0-9.0.0-beta.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/dist-client/bootstrap.d.ts +8 -8
  2. package/dist-client/bootstrap.js +8 -8
  3. package/dist-client/bootstrap.js.map +1 -1
  4. package/dist-client/components/data-entry-form.js.map +1 -1
  5. package/dist-client/pages/data-archive/data-archive-list-page.d.ts +1 -1
  6. package/dist-client/pages/data-archive/data-archive-list-page.js +1 -1
  7. package/dist-client/pages/data-archive/data-archive-list-page.js.map +1 -1
  8. package/dist-client/pages/data-entry/data-entry-list-page.js +2 -2
  9. package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -1
  10. package/dist-client/pages/data-key-set/data-key-set-list-page.d.ts +1 -1
  11. package/dist-client/pages/data-key-set/data-key-set-list-page.js +1 -1
  12. package/dist-client/pages/data-key-set/data-key-set-list-page.js.map +1 -1
  13. package/dist-client/pages/data-report/data-report-list-page.js +1 -1
  14. package/dist-client/pages/data-report/data-report-list-page.js.map +1 -1
  15. package/dist-client/pages/data-set/data-set-list-page.js +2 -5
  16. package/dist-client/pages/data-set/data-set-list-page.js.map +1 -1
  17. package/dist-client/pages/data-summary/data-summary-period-page.js +53 -37
  18. package/dist-client/pages/data-summary/data-summary-period-page.js.map +1 -1
  19. package/dist-client/tsconfig.tsbuildinfo +1 -1
  20. package/dist-server/activities/activity-data-review.js +9 -9
  21. package/dist-server/activities/activity-data-review.js.map +1 -1
  22. package/dist-server/activities/activity-ooc-resolve.js +3 -3
  23. package/dist-server/activities/activity-ooc-resolve.js.map +1 -1
  24. package/dist-server/activities/activity-ooc-review.js +5 -5
  25. package/dist-server/activities/activity-ooc-review.js.map +1 -1
  26. package/dist-server/activities/index.js +5 -5
  27. package/dist-server/activities/index.js.map +1 -1
  28. package/dist-server/controllers/create-data-ooc.d.ts +3 -3
  29. package/dist-server/controllers/create-data-ooc.js +4 -6
  30. package/dist-server/controllers/create-data-ooc.js.map +1 -1
  31. package/dist-server/controllers/create-data-sample.d.ts +2 -2
  32. package/dist-server/controllers/create-data-sample.js +13 -13
  33. package/dist-server/controllers/create-data-sample.js.map +1 -1
  34. package/dist-server/controllers/data-use-case.d.ts +2 -2
  35. package/dist-server/controllers/data-use-case.js.map +1 -1
  36. package/dist-server/controllers/finalize-data-collection.d.ts +1 -1
  37. package/dist-server/controllers/finalize-data-collection.js +21 -21
  38. package/dist-server/controllers/finalize-data-collection.js.map +1 -1
  39. package/dist-server/controllers/index.d.ts +6 -6
  40. package/dist-server/controllers/index.js +6 -6
  41. package/dist-server/controllers/index.js.map +1 -1
  42. package/dist-server/controllers/issue-data-collection-task.js +3 -3
  43. package/dist-server/controllers/issue-data-collection-task.js.map +1 -1
  44. package/dist-server/controllers/issue-ooc-review.d.ts +2 -2
  45. package/dist-server/controllers/issue-ooc-review.js +2 -2
  46. package/dist-server/controllers/issue-ooc-review.js.map +1 -1
  47. package/dist-server/controllers/jasper-report.js +2 -2
  48. package/dist-server/controllers/jasper-report.js.map +1 -1
  49. package/dist-server/controllers/query-data-summary-by-period.d.ts +2 -2
  50. package/dist-server/controllers/query-data-summary-by-period.js +23 -17
  51. package/dist-server/controllers/query-data-summary-by-period.js.map +1 -1
  52. package/dist-server/controllers/shiny-report.js +2 -2
  53. package/dist-server/controllers/shiny-report.js.map +1 -1
  54. package/dist-server/engine/index.d.ts +1 -1
  55. package/dist-server/engine/index.js +1 -1
  56. package/dist-server/engine/index.js.map +1 -1
  57. package/dist-server/engine/task/create-data-sample.js +4 -4
  58. package/dist-server/engine/task/create-data-sample.js.map +1 -1
  59. package/dist-server/engine/task/index.d.ts +2 -2
  60. package/dist-server/engine/task/index.js +2 -2
  61. package/dist-server/engine/task/index.js.map +1 -1
  62. package/dist-server/engine/task/issue-collect-data.js +2 -2
  63. package/dist-server/engine/task/issue-collect-data.js.map +1 -1
  64. package/dist-server/index.d.ts +6 -6
  65. package/dist-server/index.js +6 -6
  66. package/dist-server/index.js.map +1 -1
  67. package/dist-server/routes.js +12 -12
  68. package/dist-server/routes.js.map +1 -1
  69. package/dist-server/service/data-archive/data-archive-mutation.d.ts +2 -2
  70. package/dist-server/service/data-archive/data-archive-mutation.js +22 -22
  71. package/dist-server/service/data-archive/data-archive-mutation.js.map +1 -1
  72. package/dist-server/service/data-archive/data-archive-query.d.ts +2 -2
  73. package/dist-server/service/data-archive/data-archive-query.js +10 -10
  74. package/dist-server/service/data-archive/data-archive-query.js.map +1 -1
  75. package/dist-server/service/data-archive/data-archive-type.d.ts +1 -1
  76. package/dist-server/service/data-archive/data-archive-type.js +2 -2
  77. package/dist-server/service/data-archive/data-archive-type.js.map +1 -1
  78. package/dist-server/service/data-archive/index.d.ts +3 -3
  79. package/dist-server/service/data-archive/index.js +5 -5
  80. package/dist-server/service/data-archive/index.js.map +1 -1
  81. package/dist-server/service/data-key-set/data-key-set-mutation.d.ts +2 -2
  82. package/dist-server/service/data-key-set/data-key-set-mutation.js +20 -20
  83. package/dist-server/service/data-key-set/data-key-set-mutation.js.map +1 -1
  84. package/dist-server/service/data-key-set/data-key-set-query.d.ts +2 -2
  85. package/dist-server/service/data-key-set/data-key-set-query.js +12 -12
  86. package/dist-server/service/data-key-set/data-key-set-query.js.map +1 -1
  87. package/dist-server/service/data-key-set/data-key-set-type.d.ts +3 -3
  88. package/dist-server/service/data-key-set/data-key-set-type.js +6 -6
  89. package/dist-server/service/data-key-set/data-key-set-type.js.map +1 -1
  90. package/dist-server/service/data-key-set/data-key-set.d.ts +2 -2
  91. package/dist-server/service/data-key-set/data-key-set.js +3 -3
  92. package/dist-server/service/data-key-set/data-key-set.js.map +1 -1
  93. package/dist-server/service/data-key-set/index.d.ts +3 -3
  94. package/dist-server/service/data-key-set/index.js +5 -5
  95. package/dist-server/service/data-key-set/index.js.map +1 -1
  96. package/dist-server/service/data-ooc/data-ooc-mutation.d.ts +2 -2
  97. package/dist-server/service/data-ooc/data-ooc-mutation.js +11 -11
  98. package/dist-server/service/data-ooc/data-ooc-mutation.js.map +1 -1
  99. package/dist-server/service/data-ooc/data-ooc-query.d.ts +5 -5
  100. package/dist-server/service/data-ooc/data-ooc-query.js +27 -27
  101. package/dist-server/service/data-ooc/data-ooc-query.js.map +1 -1
  102. package/dist-server/service/data-ooc/data-ooc-subscription.d.ts +1 -1
  103. package/dist-server/service/data-ooc/data-ooc-subscription.js +3 -3
  104. package/dist-server/service/data-ooc/data-ooc-subscription.js.map +1 -1
  105. package/dist-server/service/data-ooc/data-ooc-type.d.ts +1 -1
  106. package/dist-server/service/data-ooc/data-ooc-type.js +4 -4
  107. package/dist-server/service/data-ooc/data-ooc-type.js.map +1 -1
  108. package/dist-server/service/data-ooc/data-ooc.d.ts +3 -3
  109. package/dist-server/service/data-ooc/data-ooc.js +10 -10
  110. package/dist-server/service/data-ooc/data-ooc.js.map +1 -1
  111. package/dist-server/service/data-ooc/index.d.ts +4 -4
  112. package/dist-server/service/data-ooc/index.js +6 -6
  113. package/dist-server/service/data-ooc/index.js.map +1 -1
  114. package/dist-server/service/data-sample/data-sample-mutation.d.ts +2 -2
  115. package/dist-server/service/data-sample/data-sample-mutation.js +7 -7
  116. package/dist-server/service/data-sample/data-sample-mutation.js.map +1 -1
  117. package/dist-server/service/data-sample/data-sample-query.d.ts +6 -6
  118. package/dist-server/service/data-sample/data-sample-query.js +44 -37
  119. package/dist-server/service/data-sample/data-sample-query.js.map +1 -1
  120. package/dist-server/service/data-sample/data-sample-type.d.ts +1 -1
  121. package/dist-server/service/data-sample/data-sample-type.js +2 -2
  122. package/dist-server/service/data-sample/data-sample-type.js.map +1 -1
  123. package/dist-server/service/data-sample/data-sample.d.ts +3 -3
  124. package/dist-server/service/data-sample/data-sample.js +10 -10
  125. package/dist-server/service/data-sample/data-sample.js.map +1 -1
  126. package/dist-server/service/data-sample/index.d.ts +3 -3
  127. package/dist-server/service/data-sample/index.js +5 -5
  128. package/dist-server/service/data-sample/index.js.map +1 -1
  129. package/dist-server/service/data-sensor/data-sensor-mutation.d.ts +2 -2
  130. package/dist-server/service/data-sensor/data-sensor-mutation.js +14 -14
  131. package/dist-server/service/data-sensor/data-sensor-mutation.js.map +1 -1
  132. package/dist-server/service/data-sensor/data-sensor-query.d.ts +3 -3
  133. package/dist-server/service/data-sensor/data-sensor-query.js +16 -16
  134. package/dist-server/service/data-sensor/data-sensor-query.js.map +1 -1
  135. package/dist-server/service/data-sensor/data-sensor-type.d.ts +1 -1
  136. package/dist-server/service/data-sensor/data-sensor-type.js +2 -2
  137. package/dist-server/service/data-sensor/data-sensor-type.js.map +1 -1
  138. package/dist-server/service/data-sensor/data-sensor.d.ts +1 -1
  139. package/dist-server/service/data-sensor/data-sensor.js +3 -3
  140. package/dist-server/service/data-sensor/data-sensor.js.map +1 -1
  141. package/dist-server/service/data-sensor/index.d.ts +3 -3
  142. package/dist-server/service/data-sensor/index.js +5 -5
  143. package/dist-server/service/data-sensor/index.js.map +1 -1
  144. package/dist-server/service/data-set/data-set-mutation.d.ts +2 -2
  145. package/dist-server/service/data-set/data-set-mutation.js +32 -32
  146. package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
  147. package/dist-server/service/data-set/data-set-query.d.ts +4 -4
  148. package/dist-server/service/data-set/data-set-query.js +44 -44
  149. package/dist-server/service/data-set/data-set-query.js.map +1 -1
  150. package/dist-server/service/data-set/data-set-type.d.ts +2 -2
  151. package/dist-server/service/data-set/data-set-type.js +5 -5
  152. package/dist-server/service/data-set/data-set-type.js.map +1 -1
  153. package/dist-server/service/data-set/data-set.d.ts +2 -2
  154. package/dist-server/service/data-set/data-set.js +6 -6
  155. package/dist-server/service/data-set/data-set.js.map +1 -1
  156. package/dist-server/service/data-set/index.d.ts +3 -3
  157. package/dist-server/service/data-set/index.js +5 -5
  158. package/dist-server/service/data-set/index.js.map +1 -1
  159. package/dist-server/service/data-set-history/data-set-history-query.d.ts +4 -4
  160. package/dist-server/service/data-set-history/data-set-history-query.js +22 -22
  161. package/dist-server/service/data-set-history/data-set-history-query.js.map +1 -1
  162. package/dist-server/service/data-set-history/data-set-history-type.d.ts +1 -1
  163. package/dist-server/service/data-set-history/data-set-history-type.js +2 -2
  164. package/dist-server/service/data-set-history/data-set-history-type.js.map +1 -1
  165. package/dist-server/service/data-set-history/data-set-history.d.ts +2 -2
  166. package/dist-server/service/data-set-history/data-set-history.js +3 -3
  167. package/dist-server/service/data-set-history/data-set-history.js.map +1 -1
  168. package/dist-server/service/data-set-history/event-subscriber.d.ts +2 -2
  169. package/dist-server/service/data-set-history/event-subscriber.js +4 -4
  170. package/dist-server/service/data-set-history/event-subscriber.js.map +1 -1
  171. package/dist-server/service/data-set-history/index.d.ts +3 -3
  172. package/dist-server/service/data-set-history/index.js +6 -6
  173. package/dist-server/service/data-set-history/index.js.map +1 -1
  174. package/dist-server/service/data-spec/data-spec-manager.d.ts +1 -1
  175. package/dist-server/service/data-spec/data-spec-manager.js.map +1 -1
  176. package/dist-server/service/data-spec/data-spec-query.d.ts +1 -1
  177. package/dist-server/service/data-spec/data-spec-query.js +9 -9
  178. package/dist-server/service/data-spec/data-spec-query.js.map +1 -1
  179. package/dist-server/service/data-spec/index.d.ts +2 -2
  180. package/dist-server/service/data-spec/index.js +4 -4
  181. package/dist-server/service/data-spec/index.js.map +1 -1
  182. package/dist-server/service/data-summary/data-summary-mutation.js +11 -8
  183. package/dist-server/service/data-summary/data-summary-mutation.js.map +1 -1
  184. package/dist-server/service/data-summary/data-summary-query.d.ts +5 -5
  185. package/dist-server/service/data-summary/data-summary-query.js +31 -31
  186. package/dist-server/service/data-summary/data-summary-query.js.map +1 -1
  187. package/dist-server/service/data-summary/data-summary-type.d.ts +1 -1
  188. package/dist-server/service/data-summary/data-summary-type.js +2 -2
  189. package/dist-server/service/data-summary/data-summary-type.js.map +1 -1
  190. package/dist-server/service/data-summary/data-summary.d.ts +2 -2
  191. package/dist-server/service/data-summary/data-summary.js +6 -6
  192. package/dist-server/service/data-summary/data-summary.js.map +1 -1
  193. package/dist-server/service/data-summary/index.d.ts +3 -3
  194. package/dist-server/service/data-summary/index.js +5 -5
  195. package/dist-server/service/data-summary/index.js.map +1 -1
  196. package/dist-server/service/index.d.ts +12 -12
  197. package/dist-server/service/index.js +37 -37
  198. package/dist-server/service/index.js.map +1 -1
  199. package/dist-server/tsconfig.tsbuildinfo +1 -1
  200. package/dist-server/utils/index.d.ts +1 -1
  201. package/dist-server/utils/index.js +1 -1
  202. package/dist-server/utils/index.js.map +1 -1
  203. package/package.json +26 -26
  204. package/translations/en.json +2 -0
  205. package/translations/ja.json +2 -0
  206. package/translations/ko.json +2 -0
  207. package/translations/ms.json +2 -0
  208. package/translations/zh.json +2 -0
  209. package/client/activities/activity-data-collect-edit.ts +0 -158
  210. package/client/activities/activity-data-collect-view.ts +0 -91
  211. package/client/activities/activity-data-review-edit.ts +0 -299
  212. package/client/activities/activity-data-review-view.ts +0 -249
  213. package/client/activities/activity-ooc-resolve-edit.ts +0 -202
  214. package/client/activities/activity-ooc-resolve-view.ts +0 -150
  215. package/client/activities/activity-ooc-review-edit.ts +0 -197
  216. package/client/activities/activity-ooc-review-view.ts +0 -136
  217. package/client/bootstrap.ts +0 -35
  218. package/client/components/checklist-entry-form.ts +0 -109
  219. package/client/components/data-entry-form.ts +0 -109
  220. package/client/index.ts +0 -1
  221. package/client/pages/data-archive/data-archive-list-page.ts +0 -277
  222. package/client/pages/data-archive/data-archive-request-popup.ts +0 -177
  223. package/client/pages/data-entry/data-entry-list-page.ts +0 -477
  224. package/client/pages/data-key-set/data-key-item-list.ts +0 -183
  225. package/client/pages/data-key-set/data-key-set-importer.ts +0 -89
  226. package/client/pages/data-key-set/data-key-set-list-page.ts +0 -413
  227. package/client/pages/data-ooc/data-ooc-list-page.ts +0 -549
  228. package/client/pages/data-ooc/data-ooc-page.ts +0 -167
  229. package/client/pages/data-ooc/data-ooc-view.ts +0 -239
  230. package/client/pages/data-ooc/data-oocs-page.ts +0 -200
  231. package/client/pages/data-report/data-report-embed-page.ts +0 -108
  232. package/client/pages/data-report/data-report-list-page.ts +0 -454
  233. package/client/pages/data-report/data-report-samples-page.ts +0 -174
  234. package/client/pages/data-report/jasper-report-oocs-page.ts +0 -110
  235. package/client/pages/data-report/jasper-report-samples-crosstab-page.ts +0 -110
  236. package/client/pages/data-report/jasper-report-samples-page.ts +0 -110
  237. package/client/pages/data-sample/data-sample-list-page.ts +0 -442
  238. package/client/pages/data-sample/data-sample-page.ts +0 -55
  239. package/client/pages/data-sample/data-sample-search-page.ts +0 -424
  240. package/client/pages/data-sample/data-sample-view.ts +0 -319
  241. package/client/pages/data-sample/data-samples-page.ts +0 -249
  242. package/client/pages/data-sensor/data-sensor-list-page.ts +0 -480
  243. package/client/pages/data-set/data-item-list.ts +0 -313
  244. package/client/pages/data-set/data-set-importer.ts +0 -89
  245. package/client/pages/data-set/data-set-list-page.ts +0 -1135
  246. package/client/pages/data-summary/data-summary-list-page.ts +0 -363
  247. package/client/pages/data-summary/data-summary-period-page.ts +0 -439
  248. package/client/pages/data-summary/data-summary-search-page.ts +0 -426
  249. package/client/pages/data-summary/data-summary-view.ts +0 -133
  250. package/client/route.ts +0 -91
  251. package/client/tsconfig.json +0 -13
  252. package/server/activities/activity-data-collect.ts +0 -100
  253. package/server/activities/activity-data-review.ts +0 -109
  254. package/server/activities/activity-ooc-resolve.ts +0 -123
  255. package/server/activities/activity-ooc-review.ts +0 -95
  256. package/server/activities/index.ts +0 -11
  257. package/server/controllers/create-data-ooc.ts +0 -80
  258. package/server/controllers/create-data-sample.ts +0 -323
  259. package/server/controllers/data-use-case.ts +0 -98
  260. package/server/controllers/finalize-data-collection.ts +0 -420
  261. package/server/controllers/index.ts +0 -6
  262. package/server/controllers/issue-data-collection-task.ts +0 -70
  263. package/server/controllers/issue-ooc-resolve.ts +0 -58
  264. package/server/controllers/issue-ooc-review.ts +0 -52
  265. package/server/controllers/jasper-report.ts +0 -186
  266. package/server/controllers/query-data-summary-by-period.ts +0 -178
  267. package/server/controllers/shiny-report.ts +0 -54
  268. package/server/engine/index.ts +0 -1
  269. package/server/engine/task/create-data-sample.ts +0 -100
  270. package/server/engine/task/index.ts +0 -2
  271. package/server/engine/task/issue-collect-data.ts +0 -45
  272. package/server/index.ts +0 -8
  273. package/server/routes.ts +0 -188
  274. package/server/service/data-archive/data-archive-mutation.ts +0 -273
  275. package/server/service/data-archive/data-archive-query.ts +0 -58
  276. package/server/service/data-archive/data-archive-type.ts +0 -48
  277. package/server/service/data-archive/data-archive.ts +0 -69
  278. package/server/service/data-archive/index.ts +0 -6
  279. package/server/service/data-key-set/data-key-item-type.ts +0 -31
  280. package/server/service/data-key-set/data-key-set-mutation.ts +0 -201
  281. package/server/service/data-key-set/data-key-set-query.ts +0 -68
  282. package/server/service/data-key-set/data-key-set-type.ts +0 -70
  283. package/server/service/data-key-set/data-key-set.ts +0 -86
  284. package/server/service/data-key-set/index.ts +0 -6
  285. package/server/service/data-ooc/data-ooc-mutation.ts +0 -154
  286. package/server/service/data-ooc/data-ooc-query.ts +0 -106
  287. package/server/service/data-ooc/data-ooc-subscription.ts +0 -48
  288. package/server/service/data-ooc/data-ooc-type.ts +0 -71
  289. package/server/service/data-ooc/data-ooc.ts +0 -259
  290. package/server/service/data-ooc/index.ts +0 -7
  291. package/server/service/data-sample/data-sample-mutation.ts +0 -18
  292. package/server/service/data-sample/data-sample-query.ts +0 -215
  293. package/server/service/data-sample/data-sample-type.ts +0 -47
  294. package/server/service/data-sample/data-sample.ts +0 -193
  295. package/server/service/data-sample/index.ts +0 -6
  296. package/server/service/data-sensor/data-sensor-mutation.ts +0 -116
  297. package/server/service/data-sensor/data-sensor-query.ts +0 -76
  298. package/server/service/data-sensor/data-sensor-type.ts +0 -116
  299. package/server/service/data-sensor/data-sensor.ts +0 -134
  300. package/server/service/data-sensor/index.ts +0 -6
  301. package/server/service/data-set/data-item-type.ts +0 -169
  302. package/server/service/data-set/data-set-mutation.ts +0 -552
  303. package/server/service/data-set/data-set-query.ts +0 -461
  304. package/server/service/data-set/data-set-type.ts +0 -204
  305. package/server/service/data-set/data-set.ts +0 -331
  306. package/server/service/data-set/index.ts +0 -6
  307. package/server/service/data-set-history/data-set-history-query.ts +0 -126
  308. package/server/service/data-set-history/data-set-history-type.ts +0 -12
  309. package/server/service/data-set-history/data-set-history.ts +0 -217
  310. package/server/service/data-set-history/event-subscriber.ts +0 -17
  311. package/server/service/data-set-history/index.ts +0 -7
  312. package/server/service/data-spec/data-spec-manager.ts +0 -21
  313. package/server/service/data-spec/data-spec-query.ts +0 -21
  314. package/server/service/data-spec/data-spec.ts +0 -45
  315. package/server/service/data-spec/index.ts +0 -5
  316. package/server/service/data-summary/data-summary-mutation.ts +0 -45
  317. package/server/service/data-summary/data-summary-query.ts +0 -179
  318. package/server/service/data-summary/data-summary-type.ts +0 -86
  319. package/server/service/data-summary/data-summary.ts +0 -170
  320. package/server/service/data-summary/index.ts +0 -7
  321. package/server/service/index.ts +0 -57
  322. package/server/tsconfig.json +0 -10
  323. package/server/utils/config-resolver.ts +0 -29
  324. package/server/utils/index.ts +0 -1
@@ -1,461 +0,0 @@
1
- import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
- import { Brackets, In } from 'typeorm'
3
-
4
- import { Attachment } from '@things-factory/attachment-base'
5
- import { Role, User } from '@things-factory/auth-base'
6
- import { Board } from '@things-factory/board-service'
7
- import { ApprovalLineItem } from '@things-factory/organization'
8
- import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
9
- import { AssigneeItem } from '@things-factory/worklist'
10
- import { Scenario } from '@things-factory/integration-base'
11
-
12
- import { DataKeySet } from '../data-key-set/data-key-set'
13
- import { DataSample } from '../data-sample/data-sample'
14
- import { DataItem } from './data-item-type'
15
- import { DataSet, DataSetState } from './data-set'
16
- import { DataSetList } from './data-set-type'
17
-
18
- var parser = require('cron-parser')
19
-
20
- @Resolver(DataSet)
21
- export class DataSetQuery {
22
- // 데이터셋을 ID로 조회
23
- @Directive('@privilege(category: "data-set", privilege: "query", domainOwnerGranted: true)')
24
- @Query(returns => DataSet, { description: 'To fetch a DataSet' })
25
- async dataSet(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<DataSet> {
26
- const { domain } = context.state
27
-
28
- return await getRepository(DataSet).findOne({
29
- where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id }
30
- })
31
- }
32
-
33
- // 데이터셋을 이름으로 조회
34
- @Directive('@privilege(category: "data-set", privilege: "query", domainOwnerGranted: true)')
35
- @Query(returns => DataSet, { description: 'To fetch a DataSet by name' })
36
- async dataSetByName(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<DataSet> {
37
- const { domain } = context.state
38
-
39
- return await getRepository(DataSet).findOne({
40
- where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, name }
41
- })
42
- }
43
-
44
- // 여러 데이터셋을 조회
45
- @Directive('@privilege(category: "data-set", privilege: "query", domainOwnerGranted: true)')
46
- @Query(returns => DataSetList, { description: 'To fetch multiple DataSets' })
47
- async dataSets(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<DataSetList> {
48
- const { domain } = context.state
49
-
50
- const queryBuilder = getQueryBuilderFromListParams({
51
- repository: getRepository(DataSet),
52
- params,
53
- domain,
54
- alias: 'dataset',
55
- searchables: ['name', 'description', 'tag', 'supervisoryRole']
56
- })
57
-
58
- const [items, total] = await queryBuilder.getManyAndCount()
59
-
60
- return { items, total }
61
- }
62
-
63
- // 데이터 입력을 위한 데이터셋 조회
64
- @Query(returns => DataSetList, { description: 'To fetch multiple DataSets for data entry manually' })
65
- async dataSetsForEntry(
66
- @Args(type => ListParam) params: ListParam,
67
- @Ctx() context: ResolverContext
68
- ): Promise<DataSetList> {
69
- var { domain, user } = context.state
70
-
71
- // 조회한 사용자가 entry-role을 가진 data-set 리스트만 반환
72
- user = await getRepository(User).findOne({
73
- where: { id: user.id },
74
- relations: ['roles']
75
- })
76
-
77
- const roles = user.roles
78
- .filter(role => role.domainId === domain.id || (domain.parentId && role.domainId === domain.parentId))
79
- .map(role => role.id)
80
-
81
- if (!roles.length) {
82
- return { items: [], total: 0 }
83
- }
84
-
85
- const [items, total] = await getQueryBuilderFromListParams({
86
- repository: getRepository(DataSet),
87
- params,
88
- domain,
89
- alias: 'dataset',
90
- searchables: ['name', 'description']
91
- })
92
- .andWhere('dataset.active = :active', { active: true })
93
- .andWhere(
94
- new Brackets(qb => {
95
- qb.where('dataset.supervisoryRole IN (:...roles)').orWhere('dataset.entryRole IN (:...roles)')
96
- })
97
- )
98
- .setParameter('roles', roles)
99
- .getManyAndCount()
100
-
101
- return {
102
- items,
103
- total
104
- }
105
- }
106
-
107
- // 데이터 보고를 위한 데이터셋 조회
108
- @Query(returns => DataSetList, { description: 'To fetch multiple DataSets to see data report' })
109
- async dataSetsForReport(
110
- @Args(type => ListParam) params: ListParam,
111
- @Ctx() context: ResolverContext
112
- ): Promise<DataSetList> {
113
- var { domain, user } = context.state
114
-
115
- // 조회한 사용자가 supervisory 역할을 가진 data-set 리스트만 반환
116
- user = await getRepository(User).findOne({
117
- where: { id: user.id },
118
- relations: ['roles']
119
- })
120
- const roles = user.roles.filter(role => role.domainId === domain.id).map(role => role.id)
121
-
122
- if (!roles.length) {
123
- return { items: [], total: 0 }
124
- }
125
-
126
- const [items, total] = await getQueryBuilderFromListParams({
127
- repository: getRepository(DataSet),
128
- params,
129
- domain,
130
- alias: 'dataset',
131
- searchables: ['name', 'description']
132
- })
133
- .andWhere(`dataset.active = :active`, { active: true })
134
- .andWhere('dataset.supervisoryRole IN (:...roles)', { roles })
135
- .getManyAndCount()
136
-
137
- return { items, total }
138
- }
139
-
140
- // 데이터셋의 상태를 조회
141
- @FieldResolver(type => DataSetState)
142
- async status(@Root() dataSet: DataSet): Promise<DataSetState> {
143
- // 스케줄러 서비스에서 정보 가져오기
144
- return {
145
- id: '',
146
- scheduleId: '',
147
- state: '',
148
- startedAt: new Date(),
149
- nextSchedule: new Date()
150
- }
151
- }
152
-
153
- // 데이터셋의 데이터 항목을 조회
154
- @FieldResolver(type => [DataItem])
155
- async dataItems(@Root() dataSet: DataSet): Promise<DataItem[]> {
156
- if (dataSet.dataItems instanceof Array) {
157
- return dataSet.dataItems.filter(item => item.name)
158
- }
159
-
160
- return []
161
- }
162
-
163
- // 데이터셋의 entry 역할을 조회
164
- @FieldResolver(type => Role)
165
- async entryRole(@Root() dataSet: DataSet): Promise<Role> {
166
- return (
167
- dataSet.entryRole ||
168
- (dataSet.entryRoleId &&
169
- (await getRepository(Role).findOneBy({
170
- id: dataSet.entryRoleId
171
- })))
172
- )
173
- }
174
-
175
- // 데이터셋의 supervisory 역할을 조회
176
- @FieldResolver(type => Role, { description: 'Retrieves the supervisory role for the dataset' })
177
- async supervisoryRole(@Root() dataSet: DataSet): Promise<Role> {
178
- return (
179
- dataSet.supervisoryRole ||
180
- (dataSet.supervisoryRoleId &&
181
- (await getRepository(Role).findOneBy({
182
- id: dataSet.supervisoryRoleId
183
- })))
184
- )
185
- }
186
-
187
- // 데이터셋의 resolver 역할을 조회
188
- @FieldResolver(type => Role, { description: 'Retrieves the resolver role for the dataset' })
189
- async resolverRole(@Root() dataSet: DataSet): Promise<Role> {
190
- return (
191
- dataSet.resolverRole ||
192
- (dataSet.resolverRoleId &&
193
- (await getRepository(Role).findOneBy({
194
- id: dataSet.resolverRoleId
195
- })))
196
- )
197
- }
198
-
199
- @FieldResolver(type => [AssigneeItem], { description: 'Retrieves the assignee items for the dataset' })
200
- async assignees(@Root() dataSet: DataSet, @Ctx() context: ResolverContext): Promise<AssigneeItem[]> {
201
- const { domain, user } = context.state
202
- const { assignees } = dataSet
203
-
204
- if (!assignees || !(assignees instanceof Array)) {
205
- return null
206
- }
207
-
208
- var assigneeItemList = []
209
-
210
- for (let item of assignees) {
211
- // "value" deprecated. to be removed
212
- var { type, assignee, value } = item
213
- var id = assignee?.id || id
214
-
215
- switch (type) {
216
- case 'Employee':
217
- assignee = id && (await getRepository('Employee').findOneBy({ domain: { id: domain.id }, id }))
218
- break
219
- case 'Department':
220
- assignee = id && (await getRepository('Department').findOneBy({ domain: { id: domain.id }, id }))
221
- break
222
- case 'Role':
223
- assignee = id && (await getRepository('Role').findOneBy({ domain: { id: domain.id }, id }))
224
- break
225
- case 'Myself':
226
- assignee = user
227
- break
228
- case 'MyDepartment':
229
- case 'MySupervisor':
230
- break
231
- default:
232
- }
233
-
234
- id ? assigneeItemList.push({ type, assignee }) : assigneeItemList.push({ type })
235
- }
236
-
237
- return assigneeItemList
238
- }
239
-
240
- @FieldResolver(type => [ApprovalLineItem], { description: 'Retrieves the approval line items for the dataset' })
241
- async approvalLine(@Root() dataSet: DataSet, @Ctx() context: ResolverContext): Promise<ApprovalLineItem[]> {
242
- const { domain, user } = context.state
243
- const { reviewApprovalLine } = dataSet
244
-
245
- if (!reviewApprovalLine || !(reviewApprovalLine instanceof Array)) {
246
- return null
247
- }
248
-
249
- var approvalLineItems = []
250
-
251
- for (let item of reviewApprovalLine) {
252
- // "value" deprecated. to be removed
253
- var { type, approver, value } = item
254
- var id = approver?.id || value
255
- approver = null
256
-
257
- switch (type) {
258
- case 'Employee':
259
- approver = id && (await getRepository('Employee').findOneBy({ domain: { id: domain.id }, id }))
260
- break
261
- case 'Department':
262
- approver = id && (await getRepository('Department').findOneBy({ domain: { id: domain.id }, id }))
263
- break
264
- case 'Role':
265
- approver = id && (await getRepository('Role').findOneBy({ domain: { id: domain.id }, id }))
266
- break
267
- case 'Myself':
268
- approver = user
269
- break
270
- case 'MyDepartment':
271
- case 'MySupervisor':
272
- break
273
- default:
274
- }
275
-
276
- id ? approvalLineItems.push({ type, approver }) : approvalLineItems.push({ type })
277
- }
278
-
279
- return approvalLineItems
280
- }
281
-
282
- @FieldResolver(type => Board, { nullable: true, description: 'Retrieves the entry board for the dataset' })
283
- async entryBoard(@Root() dataSet: DataSet): Promise<Board> {
284
- if (dataSet.entryType == 'board' && dataSet.entryView) {
285
- return await getRepository(Board).findOneBy({ id: dataSet.entryView })
286
- }
287
- }
288
-
289
- @FieldResolver(type => Board, { nullable: true, description: 'Retrieves the monitor board for the dataset' })
290
- async monitorBoard(@Root() dataSet: DataSet): Promise<Board> {
291
- if (dataSet.monitorType == 'board' && dataSet.monitorView) {
292
- return await getRepository(Board).findOneBy({ id: dataSet.monitorView })
293
- }
294
- }
295
-
296
- @FieldResolver(type => DataKeySet, { nullable: true, description: 'Retrieves the data key set for the dataset' })
297
- async dataKeySet(@Root() dataSet: DataSet): Promise<DataKeySet> {
298
- return (
299
- dataSet.dataKeySet ||
300
- (dataSet.dataKeySetId &&
301
- (await getRepository(DataKeySet).findOneBy({
302
- id: dataSet.dataKeySetId
303
- })))
304
- )
305
- }
306
-
307
- @FieldResolver(type => Scenario, { description: 'Retrieves the normal scenario for the dataset.' })
308
- async normalScenario(@Root() dataSet: DataSet): Promise<Scenario> {
309
- return (
310
- dataSet.normalScenario ||
311
- (dataSet.normalScenarioId &&
312
- (await getRepository(Scenario).findOneBy({
313
- id: dataSet.normalScenarioId
314
- })))
315
- )
316
- }
317
-
318
- @FieldResolver(type => Scenario, { description: 'Retrieves the outlier scenario for the dataset.' })
319
- async outlierScenario(@Root() dataSet: DataSet): Promise<Scenario> {
320
- return (
321
- dataSet.outlierScenario ||
322
- (dataSet.outlierScenarioId &&
323
- (await getRepository(Scenario).findOneBy({
324
- id: dataSet.outlierScenarioId
325
- })))
326
- )
327
- }
328
-
329
- // 데이터셋의 도메인을 조회
330
- @FieldResolver(type => Domain)
331
- async domain(@Root() dataSet: DataSet): Promise<Domain> {
332
- return dataSet.domainId && (await getRepository(Domain).findOneBy({ id: dataSet.domainId }))
333
- }
334
-
335
- // 데이터셋의 업데이트한 사용자를 조회
336
- @FieldResolver(type => User)
337
- async updater(@Root() dataSet: DataSet): Promise<User> {
338
- return dataSet.updaterId && (await getRepository(User).findOneBy({ id: dataSet.updaterId }))
339
- }
340
-
341
- // 데이터셋의 생성자를 조회
342
- @FieldResolver(type => User)
343
- async creator(@Root() dataSet: DataSet): Promise<User> {
344
- return dataSet.creatorId && (await getRepository(User).findOneBy({ id: dataSet.creatorId }))
345
- }
346
-
347
- @FieldResolver(type => Date, { nullable: true, description: 'Retrieves the latest collection time for the dataset.' })
348
- async latestCollectedAt(@Root() dataSet: DataSet): Promise<Date> {
349
- const sample = await getRepository(DataSample).findOne({
350
- select: ['id', 'collectedAt'],
351
- where: { dataSet: { id: dataSet.id } },
352
- order: { collectedAt: 'DESC' }
353
- })
354
-
355
- return sample?.collectedAt
356
- }
357
-
358
- @FieldResolver(type => Date, { nullable: true, description: 'Retrieves the next schedule time for the dataset.' })
359
- async nextSchedule(@Root() dataSet: DataSet): Promise<Date> {
360
- const { domainId, schedule, timezone } = dataSet
361
-
362
- if (!schedule) {
363
- return
364
- }
365
-
366
- var interval = parser.parseExpression(schedule, {
367
- tz: timezone || ((await getRepository(Domain).findOneBy({ id: domainId })) as Domain).timezone || 'UTC'
368
- })
369
-
370
- return interval.next().toDate()
371
- }
372
-
373
- @FieldResolver(type => Date, { nullable: true, description: 'Retrieves the previous schedule time for the dataset.' })
374
- async prevSchedule(@Root() dataSet: DataSet): Promise<Date> {
375
- const { domainId, schedule, timezone } = dataSet
376
-
377
- if (!schedule) {
378
- return
379
- }
380
-
381
- var interval = parser.parseExpression(schedule, {
382
- tz: timezone || ((await getRepository(Domain).findOneBy({ id: domainId })) as Domain).timezone || 'UTC'
383
- })
384
-
385
- return interval.prev().toDate()
386
- }
387
-
388
- @FieldResolver(type => Date, {
389
- nullable: true,
390
- description: 'Retrieves the next summary schedule time for the dataset.'
391
- })
392
- async nextSummarySchedule(@Root() dataSet: DataSet): Promise<Date> {
393
- const { domainId, summarySchedule, timezone } = dataSet
394
-
395
- if (!summarySchedule) {
396
- return
397
- }
398
-
399
- var interval = parser.parseExpression(summarySchedule, {
400
- tz: timezone || ((await getRepository(Domain).findOneBy({ id: domainId })) as Domain).timezone || 'UTC'
401
- })
402
-
403
- return interval.next().toDate()
404
-
405
- // FIXME: getSchedules 의 파라미터를 수정해야한다. scheduler 가 없거나 커넥션이 끊겨있어서 오래걸리는 문제는 어떻게 ?? 비동기로 처리한다. 어떻게???
406
- // client: {
407
- // application: Application,
408
- // group: `${domain.id}`,
409
- // type: 'data-set',
410
- // key: dataSet.id,
411
- // operation: 'summary'
412
- // }
413
- // const schedule = getSchedules('name', 'group', false)
414
- // return schedule.nextSchedule
415
- }
416
-
417
- @FieldResolver(type => String, { description: 'Retrieves the report template for the dataset.' })
418
- async reportTemplate(@Root() dataset: DataSet): Promise<string | undefined> {
419
- const attachment: Attachment = await getRepository(Attachment).findOne({
420
- where: {
421
- domain: { id: dataset.domainId },
422
- refType: `${DataSet.name}-report-template`,
423
- refBy: dataset.id
424
- }
425
- })
426
-
427
- return attachment?.path
428
- }
429
-
430
- @FieldResolver(returns => Boolean, { description: 'Whether the user is a supervisor for this dataset' })
431
- async isSupervisor(@Root() dataset: DataSet, @Ctx() context: ResolverContext): Promise<boolean> {
432
- const { user, domain } = context.state
433
-
434
- const foundUser = await getRepository(User).findOne({
435
- where: { id: user.id },
436
- relations: ['roles']
437
- })
438
-
439
- const roles = foundUser.roles
440
- .filter(role => role.domainId === domain.id || (domain.parentId && role.domainId === domain.parentId))
441
- .map(role => role.id)
442
-
443
- return roles.includes(dataset.supervisoryRoleId)
444
- }
445
-
446
- @FieldResolver(returns => Boolean, { description: 'Whether the user is allowed to enter data for this dataset' })
447
- async isEntryAllowed(@Root() dataset: DataSet, @Ctx() context: ResolverContext): Promise<boolean> {
448
- const { user, domain } = context.state
449
-
450
- const foundUser = await getRepository(User).findOne({
451
- where: { id: user.id },
452
- relations: ['roles']
453
- })
454
-
455
- const roles = foundUser.roles
456
- .filter(role => role.domainId === domain.id || (domain.parentId && role.domainId === domain.parentId))
457
- .map(role => role.id)
458
-
459
- return roles.includes(dataset.entryRoleId)
460
- }
461
- }
@@ -1,204 +0,0 @@
1
- import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'
2
- import GraphQLUpload from 'graphql-upload/GraphQLUpload.js'
3
- import { Field, ID, InputType, Int, ObjectType } from 'type-graphql'
4
-
5
- import { ApprovalLineItem } from '@things-factory/organization'
6
- import { ObjectRef, ScalarObject } from '@things-factory/shell'
7
-
8
- import { DataItemPatch } from './data-item-type'
9
- import { DataSet, DataSetEntryType, DataSetMonitorType, DataSetReportType, DataSetSummaryPeriodType } from './data-set'
10
-
11
- @InputType()
12
- export class NewDataSet {
13
- @Field()
14
- name: string
15
-
16
- @Field({ nullable: true })
17
- description?: string
18
-
19
- @Field({ nullable: true, description: 'A tag name of data to be published when a data sample created' })
20
- tag?: string
21
-
22
- @Field(type => ObjectRef, { nullable: true })
23
- dataKeySet?: ObjectRef
24
-
25
- @Field(type => ObjectRef, { nullable: true })
26
- entryRole?: ObjectRef
27
-
28
- @Field(type => ObjectRef, { nullable: true })
29
- supervisoryRole?: ObjectRef
30
-
31
- @Field(type => ObjectRef, { nullable: true })
32
- resolverRole?: ObjectRef
33
-
34
- @Field(type => ScalarObject, { nullable: true })
35
- reviewApprovalLine?: ApprovalLineItem[]
36
-
37
- @Field(type => ScalarObject, { nullable: true })
38
- outlierApprovalLine?: ApprovalLineItem[]
39
-
40
- @Field(type => ObjectRef, { nullable: true })
41
- normalScenario?: ObjectRef
42
-
43
- @Field(type => ObjectRef, { nullable: true })
44
- outlierScenario?: ObjectRef
45
-
46
- @Field({ nullable: true })
47
- active?: boolean
48
-
49
- @Field({ nullable: true })
50
- type?: 'manual' | 'automatic' | string
51
-
52
- @Field({ nullable: true })
53
- useCase?: string
54
-
55
- @Field(type => ScalarObject, { nullable: true })
56
- partitionKeys?: { [key: string]: any }
57
-
58
- @Field(type => [DataItemPatch], { nullable: true })
59
- dataItems?: DataItemPatch[]
60
-
61
- @Field({ nullable: true })
62
- schedule?: string
63
-
64
- @Field({ nullable: true })
65
- timezone?: string
66
-
67
- @Field({ nullable: true })
68
- requiresReview?: boolean
69
-
70
- @Field({ nullable: true })
71
- entryType?: DataSetEntryType
72
-
73
- @Field({ nullable: true })
74
- entryView?: string
75
-
76
- @Field({ nullable: true })
77
- monitorType?: DataSetMonitorType
78
-
79
- @Field({ nullable: true })
80
- monitorView?: string
81
-
82
- @Field({ nullable: true })
83
- reportType?: DataSetReportType
84
-
85
- @Field({ nullable: true })
86
- reportView?: string
87
-
88
- @Field(type => GraphQLUpload, { nullable: true })
89
- reportTemplate?: FileUpload
90
-
91
- @Field({ nullable: true })
92
- summaryPeriod?: DataSetSummaryPeriodType
93
-
94
- @Field({
95
- nullable: true,
96
- description: 'The maximum allowed time limit (in seconds) for completing the data entry operation'
97
- })
98
- timeLimit?: number
99
- }
100
-
101
- @InputType()
102
- export class DataSetPatch {
103
- @Field(type => ID, { nullable: true })
104
- id?: string
105
-
106
- @Field({ nullable: true })
107
- name?: string
108
-
109
- @Field({ nullable: true })
110
- description?: string
111
-
112
- @Field({ nullable: true, description: 'A tag name of data to be published when a data sample created' })
113
- tag?: string
114
-
115
- @Field(type => ObjectRef, { nullable: true })
116
- dataKeySet?: ObjectRef
117
-
118
- @Field(type => ObjectRef, { nullable: true })
119
- supervisoryRole?: ObjectRef
120
-
121
- @Field(type => ObjectRef, { nullable: true })
122
- entryRole?: ObjectRef
123
-
124
- @Field(type => ObjectRef, { nullable: true })
125
- resolverRole?: ObjectRef
126
-
127
- @Field(type => ScalarObject, { nullable: true })
128
- reviewApprovalLine?: ApprovalLineItem[]
129
-
130
- @Field(type => ScalarObject, { nullable: true })
131
- outlierApprovalLine?: ApprovalLineItem[]
132
-
133
- @Field(type => ObjectRef, { nullable: true })
134
- normalScenario?: ObjectRef
135
-
136
- @Field(type => ObjectRef, { nullable: true })
137
- outlierScenario?: ObjectRef
138
-
139
- @Field({ nullable: true })
140
- active?: boolean
141
-
142
- @Field({ nullable: true })
143
- type?: 'manual' | 'automatic' | string
144
-
145
- @Field({ nullable: true })
146
- useCase?: string
147
-
148
- @Field(type => ScalarObject, { nullable: true })
149
- partitionKeys?: { [key: string]: any }
150
-
151
- @Field(type => [DataItemPatch], { nullable: true })
152
- dataItems?: DataItemPatch[]
153
-
154
- @Field({ nullable: true })
155
- schedule?: string
156
-
157
- @Field({ nullable: true })
158
- timezone?: string
159
-
160
- @Field({ nullable: true })
161
- requiresReview?: boolean
162
-
163
- @Field({ nullable: true })
164
- entryType?: DataSetEntryType
165
-
166
- @Field({ nullable: true })
167
- entryView?: string
168
-
169
- @Field({ nullable: true })
170
- monitorType?: DataSetMonitorType
171
-
172
- @Field({ nullable: true })
173
- monitorView?: string
174
-
175
- @Field({ nullable: true })
176
- reportType?: DataSetReportType
177
-
178
- @Field({ nullable: true })
179
- reportView?: string
180
-
181
- @Field(type => GraphQLUpload, { nullable: true })
182
- reportTemplate?: FileUpload
183
-
184
- @Field({ nullable: true })
185
- summaryPeriod?: DataSetSummaryPeriodType
186
-
187
- @Field({
188
- nullable: true,
189
- description: 'The maximum allowed time limit (in seconds) for completing the data entry operation'
190
- })
191
- timeLimit?: number
192
-
193
- @Field()
194
- cuFlag: string
195
- }
196
-
197
- @ObjectType()
198
- export class DataSetList {
199
- @Field(type => [DataSet])
200
- items: DataSet[]
201
-
202
- @Field(type => Int)
203
- total: number
204
- }