@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,169 +0,0 @@
1
- import { Field, InputType, Int, ObjectType, registerEnumType } from 'type-graphql'
2
-
3
- import { ScalarObject } from '@things-factory/shell'
4
-
5
- export enum DataItemType {
6
- number = 'number',
7
- text = 'text',
8
- boolean = 'boolean',
9
- select = 'select',
10
- radio = 'radio',
11
- date = 'date',
12
- datetime = 'datetime',
13
- file = 'file',
14
- signature = 'signature'
15
- }
16
-
17
- registerEnumType(DataItemType, {
18
- name: 'DataItemType',
19
- description: 'type enumeration of a data-item'
20
- })
21
-
22
- export enum DataItemStatType {
23
- sum = 'sum',
24
- mean = 'mean',
25
- stddev = 'stddev',
26
- variance = 'variance',
27
- min = 'min',
28
- max = 'max',
29
- range = 'range',
30
- median = 'median',
31
- mode = 'mode'
32
- }
33
-
34
- registerEnumType(DataItemStatType, {
35
- name: 'DataItemStatType',
36
- description: 'stat/agg type enumeration of a data-item'
37
- })
38
-
39
- @ObjectType({ description: 'Entity for DataItem' })
40
- export class DataItem {
41
- @Field({ description: 'The name of the data item' })
42
- name: string
43
-
44
- @Field({ nullable: true, description: 'A description of the data item' })
45
- description?: string
46
-
47
- @Field({
48
- nullable: true,
49
- description:
50
- 'Specifies a key name to be used as a property in a JSON-like object, representing a subfield of a dataset record.'
51
- })
52
- tag?: string
53
-
54
- @Field({
55
- nullable: true,
56
- description:
57
- 'Specifies a grouping identifier for data items with related content, allowing them to be displayed as subgroups within the overall dataset.'
58
- })
59
- group?: string
60
-
61
- @Field({
62
- nullable: true,
63
- description:
64
- 'Specifies a secondary grouping identifier for data items with related content, allowing them to be displayed as subgroups within the overall dataset.'
65
- })
66
- subgroup?: string
67
-
68
- @Field({ nullable: true, description: 'Indicates if the data item is active' })
69
- active?: boolean
70
-
71
- @Field({ nullable: true, description: 'Indicates if the data item is hidden' })
72
- hidden?: boolean
73
-
74
- @Field({ nullable: true, description: 'The type of the data item' })
75
- type?: DataItemType
76
-
77
- @Field(type => ScalarObject, { nullable: true, description: 'Options associated with the data item type' })
78
- options?: { [option: string]: any }
79
-
80
- @Field({
81
- nullable: true,
82
- description: 'The grouping logic for data finalize in the given field during periodic task deadlines.'
83
- })
84
- stat?: DataItemStatType
85
-
86
- @Field({
87
- nullable: true,
88
- description: 'Aggregation functions to be used in data summarizing logic for a given period.'
89
- })
90
- agg?: DataItemStatType
91
-
92
- @Field({ nullable: true, description: 'The unit of measurement for the data item' })
93
- unit?: string
94
-
95
- @Field(type => Int, { nullable: true, description: 'The maximum number of data values allowed for this field' })
96
- quota?: number
97
-
98
- @Field(type => ScalarObject, {
99
- nullable: true,
100
- description: 'Specifies the valid ranges and parameters for this data item.'
101
- })
102
- spec?: { [key: string]: any }
103
- }
104
-
105
- @InputType()
106
- export class DataItemPatch {
107
- @Field({ nullable: true, description: 'The name of the data item' })
108
- name?: string
109
-
110
- @Field({ nullable: true, description: 'A description of the data item' })
111
- description?: string
112
-
113
- @Field({
114
- nullable: true,
115
- description:
116
- 'Specifies a key name to be used as a property in a JSON-like object, representing a subfield of a dataset record.'
117
- })
118
- tag?: string
119
-
120
- @Field({
121
- nullable: true,
122
- description:
123
- 'Specifies a grouping identifier for data items with related content, allowing them to be displayed as subgroups within the overall dataset.'
124
- })
125
- group?: string
126
-
127
- @Field({
128
- nullable: true,
129
- description:
130
- 'Specifies a secondary grouping identifier for data items with related content, allowing them to be displayed as subgroups within the overall dataset.'
131
- })
132
- subgroup?: string
133
-
134
- @Field(type => DataItemType, { nullable: true, description: 'The type of the data item' })
135
- type?: DataItemType
136
-
137
- @Field(type => ScalarObject, { nullable: true, description: 'Options associated with the data item type' })
138
- options?: { [option: string]: any }
139
-
140
- @Field({
141
- nullable: true,
142
- description: 'The grouping logic for data summarization in the given field during periodic task deadlines.'
143
- })
144
- stat?: DataItemStatType
145
-
146
- @Field({
147
- nullable: true,
148
- description: 'Aggregation functions to be used in data summarizing logic for a given period.'
149
- })
150
- agg?: DataItemStatType
151
-
152
- @Field({ nullable: true, description: 'The unit of measurement for the data item' })
153
- unit?: string
154
-
155
- @Field(type => Int, { nullable: true, description: 'The maximum number of data values allowed for this field' })
156
- quota?: number
157
-
158
- @Field({ nullable: true, description: 'Indicates if the data item is active' })
159
- active?: boolean
160
-
161
- @Field({ nullable: true, description: 'Indicates if the data item is hidden' })
162
- hidden?: boolean
163
-
164
- @Field(type => ScalarObject, {
165
- nullable: true,
166
- description: 'Specifies the valid ranges and parameters for this data item.'
167
- })
168
- spec?: { [key: string]: any }
169
- }
@@ -1,552 +0,0 @@
1
- import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
2
- import { In } from 'typeorm'
3
-
4
- import { getRepository } from '@things-factory/shell'
5
- import { User } from '@things-factory/auth-base'
6
- import { createAttachment, deleteAttachmentsByRef } from '@things-factory/attachment-base'
7
- import { ApprovalLineItem, OrgMemberTargetType } from '@things-factory/organization'
8
- import { Application, CallbackBase, registerSchedule, unregisterSchedule } from '@things-factory/scheduler-client'
9
-
10
- import { getDataFinalizeCrontabSchedule } from '../../controllers/finalize-data-collection'
11
- import { DataSet } from './data-set'
12
- import { DataSetPatch, NewDataSet } from './data-set-type'
13
- import { issueDataCollectionTask } from '../../controllers/issue-data-collection-task'
14
-
15
- const crypto = require('crypto')
16
-
17
- function getApprovalLineValue(patch: NewDataSet | DataSetPatch): ApprovalLineItem[] {
18
- const { reviewApprovalLine } = patch
19
-
20
- if (!('reviewApprovalLine' in patch)) {
21
- /* reviewApprovalLine 언급되지 않았다면, 업데이트하지 않는다. */
22
- return
23
- }
24
-
25
- if (!reviewApprovalLine || !(reviewApprovalLine instanceof Array)) {
26
- /* approvalLine의 값이 없거나 배열이 아니라면, 클리어시킨다. */
27
- return null
28
- }
29
-
30
- return reviewApprovalLine
31
- .map(m => {
32
- return {
33
- type: m.type,
34
- approver: m.approver
35
- } as ApprovalLineItem
36
- })
37
- .filter(m => m.type)
38
- .filter(m => {
39
- switch (m.type) {
40
- case OrgMemberTargetType.Employee:
41
- case OrgMemberTargetType.Department:
42
- case OrgMemberTargetType.Role:
43
- return !!m.approver?.id
44
- default:
45
- return true
46
- }
47
- })
48
- }
49
-
50
- function getOutlierApprovalLineValue(patch: NewDataSet | DataSetPatch): ApprovalLineItem[] {
51
- const { outlierApprovalLine } = patch
52
-
53
- if (!('outlierApprovalLine' in patch)) {
54
- /* approvalLine이 언급되지 않았다면, 업데이트하지 않는다. */
55
- return
56
- }
57
-
58
- if (!outlierApprovalLine || !(outlierApprovalLine instanceof Array)) {
59
- /* approvalLine의 값이 없거나 배열이 아니라면, 클리어시킨다. */
60
- return null
61
- }
62
-
63
- return outlierApprovalLine
64
- .map(m => {
65
- return {
66
- type: m.type,
67
- approver: m.approver
68
- } as ApprovalLineItem
69
- })
70
- .filter(m => m.type)
71
- .filter(m => {
72
- switch (m.type) {
73
- case OrgMemberTargetType.Employee:
74
- case OrgMemberTargetType.Department:
75
- case OrgMemberTargetType.Role:
76
- return !!m.approver?.id
77
- default:
78
- return true
79
- }
80
- })
81
- }
82
-
83
- @Resolver(DataSet)
84
- export class DataSetMutation {
85
- @Directive('@privilege(category: "data-set", privilege: "mutation", domainOwnerGranted: true)')
86
- @Directive('@transaction')
87
- @Mutation(returns => DataSet, { description: 'To create new DataSet' })
88
- async createDataSet(@Arg('dataSet') dataSet: NewDataSet, @Ctx() context: ResolverContext): Promise<DataSet> {
89
- const { domain, user, tx } = context.state
90
- const dataSetRepo = getRepository(DataSet, tx)
91
-
92
- const result = await dataSetRepo.save({
93
- ...dataSet,
94
- approvalLine: getApprovalLineValue(dataSet),
95
- outlierApprovalLineValue: getOutlierApprovalLineValue(dataSet),
96
- version: 1,
97
- domain,
98
- creator: user,
99
- updater: user
100
- })
101
-
102
- await this._createAttachment(context, dataSet.reportTemplate, { ref: result, cuFlag: '+' })
103
-
104
- return result
105
- }
106
-
107
- @Directive('@privilege(category: "data-set", privilege: "mutation", domainOwnerGranted: true)')
108
- @Directive('@transaction')
109
- @Mutation(returns => DataSet, { description: 'To modify DataSet information' })
110
- async updateDataSet(
111
- @Arg('id') id: string,
112
- @Arg('patch') patch: DataSetPatch,
113
- @Ctx() context: ResolverContext
114
- ): Promise<DataSet> {
115
- const { domain, user, tx } = context.state
116
- const dataSetRepo = getRepository(DataSet, tx)
117
-
118
- const dataSet = await dataSetRepo.findOne({
119
- where: { domain: { id: domain.id }, id },
120
- relations: ['domain', 'dataKeySet', 'entryRole', 'supervisoryRole', 'creator', 'updater']
121
- /* history에 항상 반영될 수 있도록 relations가 있어야 함. */
122
- })
123
-
124
- const result = await dataSetRepo.save({
125
- ...dataSet,
126
- ...patch,
127
- approvalLine: getApprovalLineValue(patch),
128
- outlierApprovalLineValue: getOutlierApprovalLineValue(patch),
129
- updater: user
130
- })
131
-
132
- await this._createAttachment(context, dataSet.reportTemplate, { ref: result, cuFlag: 'M' })
133
-
134
- return result
135
- }
136
-
137
- @Directive('@privilege(category: "data-set", privilege: "mutation", domainOwnerGranted: true)')
138
- @Directive('@transaction')
139
- @Mutation(returns => [DataSet], { description: "To modify multiple DataSets' information" })
140
- async updateMultipleDataSet(
141
- @Arg('patches', type => [DataSetPatch]) patches: DataSetPatch[],
142
- @Ctx() context: ResolverContext
143
- ): Promise<DataSet[]> {
144
- const { domain, user, tx } = context.state
145
- const dataSetRepo = getRepository(DataSet, tx)
146
-
147
- let results = []
148
- const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
149
- const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
150
-
151
- if (_createRecords.length > 0) {
152
- const cuFlag = '+'
153
- for (let i = 0; i < _createRecords.length; i++) {
154
- const newRecord = _createRecords[i]
155
-
156
- const result = await dataSetRepo.save({
157
- ...newRecord,
158
- approvalLine: getApprovalLineValue(newRecord),
159
- outlierApprovalLineValue: getOutlierApprovalLineValue(newRecord),
160
- domain,
161
- creator: user,
162
- updater: user
163
- })
164
-
165
- await this._createAttachment(context, newRecord.reportTemplate, { ref: result, cuFlag })
166
-
167
- results.push({
168
- ...result,
169
- cuFlag
170
- })
171
- }
172
- }
173
-
174
- if (_updateRecords.length > 0) {
175
- const cuFlag = 'M'
176
- for (let i = 0; i < _updateRecords.length; i++) {
177
- const updateRecord = _updateRecords[i]
178
- const dataSet = await dataSetRepo.findOne({
179
- where: { id: updateRecord.id },
180
- /* history에 항상 반영될 수 있도록 relations가 있어야 함. */
181
- relations: ['domain', 'dataKeySet', 'entryRole', 'supervisoryRole', 'creator', 'updater']
182
- })
183
-
184
- const result = await dataSetRepo.save({
185
- ...dataSet,
186
- ...updateRecord,
187
- approvalLine: getApprovalLineValue(updateRecord),
188
- outlierApprovalLineValue: getOutlierApprovalLineValue(updateRecord),
189
- updater: user
190
- })
191
-
192
- await this._createAttachment(context, updateRecord.reportTemplate, { ref: result, cuFlag })
193
-
194
- results.push({
195
- ...result,
196
- cuFlag
197
- })
198
- }
199
- }
200
-
201
- return results
202
- }
203
-
204
- @Directive('@privilege(category: "data-set", privilege: "mutation", domainOwnerGranted: true)')
205
- @Directive('@transaction')
206
- @Mutation(returns => Boolean, { description: 'To delete DataSet' })
207
- async deleteDataSet(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
208
- const { domain, tx } = context.state
209
-
210
- await getRepository(DataSet, tx).softDelete({ domain: { id: domain.id }, id })
211
- await deleteAttachmentsByRef(null, { refBys: [`report-${id}`] }, context)
212
-
213
- return true
214
- }
215
-
216
- @Directive('@privilege(category: "data-set", privilege: "mutation", domainOwnerGranted: true)')
217
- @Directive('@transaction')
218
- @Mutation(returns => Boolean, { description: 'To delete multiple dataSets' })
219
- async deleteDataSets(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<boolean> {
220
- const { domain, tx } = context.state
221
-
222
- await getRepository(DataSet, tx).softDelete({
223
- domain: { id: domain.id },
224
- id: In(ids)
225
- })
226
-
227
- await deleteAttachmentsByRef(null, { refBys: ids.map(id => `report-${id}`) }, context)
228
-
229
- return true
230
- }
231
-
232
- @Directive('@transaction')
233
- @Mutation(returns => Boolean, { description: 'To issue data-collection task for the given dataset' })
234
- async issueDataCollection(@Arg('dataSetId') dataSetId: string, @Ctx() context: ResolverContext): Promise<boolean> {
235
- const { domain, tx, user } = context.state
236
-
237
- const dataSet = await getRepository(DataSet, tx).findOne({
238
- where: {
239
- domain: {
240
- id: In([domain.id, domain.parentId].filter(Boolean))
241
- },
242
- id: dataSetId
243
- }
244
- })
245
-
246
- const { supervisoryRoleId, entryRoleId } = dataSet
247
- const allowedRoles = [supervisoryRoleId, entryRoleId].filter(Boolean)
248
-
249
- const me = await getRepository(User, tx).findOne({
250
- where: { id: user.id },
251
- relations: ['roles']
252
- })
253
-
254
- if (!me.roles.find(role => allowedRoles.includes(role.id))) {
255
- throw new Error(`You don't have permission to issue data collection task for this dataset.`)
256
- }
257
-
258
- const activityInstance = await issueDataCollectionTask(domain.id, dataSet.id, context)
259
-
260
- return !!activityInstance
261
- }
262
-
263
- @Directive('@transaction')
264
- @Mutation(returns => DataSet, { description: 'To start data collection schedule for the given dataset' })
265
- async startDataCollectionSchedule(
266
- @Arg('dataSetId') dataSetId: string,
267
- @Ctx() context: ResolverContext
268
- ): Promise<DataSet> {
269
- const { domain, tx } = context.state
270
-
271
- var repository = getRepository(DataSet, tx)
272
- var dataSet = await repository.findOne({
273
- where: { domain: { id: domain.id }, id: dataSetId }
274
- })
275
-
276
- if (!dataSet) {
277
- throw new Error(
278
- context.t('error.data-set not found', {
279
- dataSet: dataSetId
280
- })
281
- )
282
- }
283
-
284
- try {
285
- var handle = await registerSchedule({
286
- name: dataSet.name,
287
- client: {
288
- application: Application,
289
- group: `${domain.id}`,
290
- type: 'data-set',
291
- key: dataSet.id,
292
- operation: 'schedule'
293
- },
294
- type: 'cron',
295
- schedule: dataSet.schedule,
296
- timezone: dataSet.timezone,
297
- task: {
298
- type: 'rest',
299
- connection: {
300
- host: `${CallbackBase}/callback-schedule-for-dataset`,
301
- headers: {
302
- 'Content-Type': 'application/json',
303
- accept: '*/*'
304
- }
305
- },
306
- data: {
307
- domainId: domain.id,
308
- dataSetId
309
- },
310
- history_check: true,
311
- failed_policy: 'retry_dlq',
312
- max_retry_count: 3,
313
- retry_period: 60
314
- }
315
- })
316
-
317
- return await repository.save({
318
- ...dataSet,
319
- scheduleId: handle
320
- })
321
- } catch (err) {
322
- console.error('startDataCollectionSchedule', err)
323
- }
324
- }
325
-
326
- @Directive('@transaction')
327
- @Mutation(returns => DataSet, {
328
- nullable: true,
329
- description: 'To stop data collection schedule for the given dataset'
330
- })
331
- async stopDataCollectionSchedule(
332
- @Arg('dataSetId') dataSetId: string,
333
- @Ctx() context: ResolverContext
334
- ): Promise<DataSet | undefined> {
335
- const { domain, tx } = context.state
336
-
337
- var repository = getRepository(DataSet, tx)
338
- var dataSet = await repository.findOne({
339
- where: { domain: { id: domain.id }, id: dataSetId }
340
- })
341
-
342
- if (!dataSet) {
343
- throw new Error(
344
- context.t('error.data-set not found', {
345
- dataSet: dataSetId
346
- })
347
- )
348
- }
349
-
350
- try {
351
- await unregisterSchedule(dataSet.scheduleId)
352
-
353
- return await repository.save({
354
- ...dataSet,
355
- scheduleId: null
356
- })
357
- } catch (err) {
358
- console.error('stopDataCollectionSchedule', err)
359
- }
360
- }
361
-
362
- @Directive('@transaction')
363
- @Mutation(returns => DataSet, { description: 'To start data summary schedule for the given dataset' })
364
- async startDataSummarySchedule(
365
- @Arg('dataSetId') dataSetId: string,
366
- @Ctx() context: ResolverContext
367
- ): Promise<DataSet> {
368
- const { domain, tx } = context.state
369
-
370
- var repository = getRepository(DataSet, tx)
371
- var dataSet = await repository.findOne({
372
- where: { domain: { id: domain.id }, id: dataSetId }
373
- })
374
-
375
- if (!dataSet) {
376
- throw new Error(
377
- context.t('error.data-set not found', {
378
- dataSet: dataSetId
379
- })
380
- )
381
- }
382
-
383
- if (!dataSet.summaryPeriod) {
384
- throw new Error(
385
- context.t('error.data-set summary-period not set', {
386
- dataSet: dataSetId
387
- })
388
- )
389
- }
390
-
391
- const schedule = await getDataFinalizeCrontabSchedule(dataSet, context)
392
-
393
- try {
394
- var handle = await registerSchedule({
395
- name: dataSet.name,
396
- client: {
397
- application: Application,
398
- group: `${domain.id}`,
399
- type: 'data-set',
400
- key: dataSet.id,
401
- operation: 'summary'
402
- },
403
- type: 'cron',
404
- schedule,
405
- timezone: dataSet.timezone,
406
- task: {
407
- type: 'rest',
408
- connection: {
409
- host: `${CallbackBase}/callback-schedule-for-dataset-summary`,
410
- headers: {
411
- 'Content-Type': 'application/json',
412
- accept: '*/*'
413
- }
414
- },
415
- data: {
416
- domainId: domain.id,
417
- dataSetId
418
- },
419
- history_check: true,
420
- failed_policy: 'retry_dlq',
421
- max_retry_count: 3,
422
- retry_period: 60
423
- }
424
- })
425
-
426
- return await repository.save({
427
- ...dataSet,
428
- summarySchedule: schedule,
429
- summaryScheduleId: handle
430
- })
431
- } catch (err) {
432
- console.error('startDataSummarySchedule', err)
433
- }
434
- }
435
-
436
- @Directive('@transaction')
437
- @Mutation(returns => DataSet, {
438
- nullable: true,
439
- description: 'To stop data summary schedule for the given dataset'
440
- })
441
- async stopDataSummarySchedule(
442
- @Arg('dataSetId') dataSetId: string,
443
- @Ctx() context: ResolverContext
444
- ): Promise<DataSet | undefined> {
445
- const { domain, tx } = context.state
446
-
447
- var repository = getRepository(DataSet, tx)
448
- var dataSet = await repository.findOne({
449
- where: { domain: { id: domain.id }, id: dataSetId }
450
- })
451
-
452
- if (!dataSet) {
453
- throw new Error(
454
- context.t('error.data-set not found', {
455
- dataSet: dataSetId
456
- })
457
- )
458
- }
459
-
460
- try {
461
- await unregisterSchedule(dataSet.summaryScheduleId)
462
-
463
- return await repository.save({
464
- ...dataSet,
465
- summarySchedule: null,
466
- summaryScheduleId: null
467
- })
468
- } catch (err) {
469
- console.error('stopDataSummarySchedule', err)
470
- }
471
- }
472
-
473
- @Directive('@privilege(category: "data-set", privilege: "mutation", domainOwnerGranted: true)')
474
- @Directive('@transaction')
475
- @Mutation(returns => Boolean, { description: 'To import multiple data-sets' })
476
- async importDataSets(
477
- @Arg('dataSets', type => [DataSetPatch]) dataSets: DataSet[],
478
- @Ctx() context: ResolverContext
479
- ): Promise<boolean> {
480
- const { domain, tx } = context.state
481
- const dataSetRepo = getRepository(DataSet, tx)
482
-
483
- await Promise.all(
484
- dataSets.map(async (dataSet: DataSet) => {
485
- const createdDataSet: DataSet = await dataSetRepo.save({
486
- domain,
487
- ...dataSet
488
- })
489
- })
490
- )
491
-
492
- return true
493
- }
494
-
495
- @Directive('@privilege(category: "data-set", privilege: "mutation", domainOwnerGranted: true)')
496
- @Directive('@transaction')
497
- @Mutation(returns => [DataSet], { description: 'To copy multiple data-sets' })
498
- async copyDataSets(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<DataSet[]> {
499
- const { domain, user, tx } = context.state
500
- const dataSetRepo = getRepository(DataSet, tx)
501
-
502
- const originals = await dataSetRepo.find({
503
- where: {
504
- id: In(ids),
505
- domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }
506
- },
507
- relations: ['domain', 'supervisoryRole', 'entryRole', 'dataKeySet']
508
- })
509
-
510
- if (originals.length == 0) {
511
- return []
512
- }
513
-
514
- var newCopys = originals.map(dataSet => {
515
- let dataSetId = crypto.randomUUID()
516
-
517
- return {
518
- ...dataSet,
519
- id: dataSetId,
520
- name: dataSet.name + ' (' + dataSetId + ')',
521
- active: false,
522
- version: 1,
523
- domain,
524
- creator: user,
525
- updater: user,
526
- updatedAt: undefined,
527
- createdAt: undefined
528
- }
529
- })
530
-
531
- var copiedDataSets = await dataSetRepo.save(newCopys)
532
-
533
- return copiedDataSets
534
- }
535
-
536
- async _createAttachment(context, attachment, { ref, cuFlag }) {
537
- if (attachment) {
538
- cuFlag == 'M' && (await deleteAttachmentsByRef(null, { refBys: [ref.id] }, context))
539
- await createAttachment(
540
- null,
541
- {
542
- attachment: {
543
- file: attachment,
544
- refType: `${DataSet.name}-report-template`,
545
- refBy: ref.id
546
- }
547
- },
548
- context
549
- )
550
- }
551
- }
552
- }