@things-factory/dataset 10.1.247 → 10.1.248

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 (351) hide show
  1. package/package.json +4 -4
  2. package/dist-client/activities/activity-data-collect-edit.d.ts +0 -26
  3. package/dist-client/activities/activity-data-collect-edit.js +0 -156
  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 -20
  9. package/dist-client/activities/activity-data-review-edit.js +0 -300
  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 -16
  12. package/dist-client/activities/activity-data-review-view.js +0 -247
  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 -203
  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 -154
  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 -3
  21. package/dist-client/activities/activity-ooc-review-edit.js +0 -197
  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 -139
  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/checklist-entry-form.d.ts +0 -21
  30. package/dist-client/components/checklist-entry-form.js +0 -107
  31. package/dist-client/components/checklist-entry-form.js.map +0 -1
  32. package/dist-client/components/data-entry-form.d.ts +0 -21
  33. package/dist-client/components/data-entry-form.js +0 -107
  34. package/dist-client/components/data-entry-form.js.map +0 -1
  35. package/dist-client/index.d.ts +0 -1
  36. package/dist-client/index.js +0 -2
  37. package/dist-client/index.js.map +0 -1
  38. package/dist-client/pages/data-archive/data-archive-list-page.d.ts +0 -55
  39. package/dist-client/pages/data-archive/data-archive-list-page.js +0 -234
  40. package/dist-client/pages/data-archive/data-archive-list-page.js.map +0 -1
  41. package/dist-client/pages/data-archive/data-archive-request-popup.d.ts +0 -1
  42. package/dist-client/pages/data-archive/data-archive-request-popup.js +0 -160
  43. package/dist-client/pages/data-archive/data-archive-request-popup.js.map +0 -1
  44. package/dist-client/pages/data-entry/data-entry-list-page.d.ts +0 -31
  45. package/dist-client/pages/data-entry/data-entry-list-page.js +0 -383
  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 -183
  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 -93
  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 -56
  54. package/dist-client/pages/data-key-set/data-key-set-list-page.js +0 -335
  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 -67
  57. package/dist-client/pages/data-ooc/data-ooc-list-page.js +0 -484
  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 -166
  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 -234
  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 -198
  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 -104
  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 -30
  72. package/dist-client/pages/data-report/data-report-list-page.js +0 -370
  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 -26
  75. package/dist-client/pages/data-report/data-report-samples-page.js +0 -151
  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 -104
  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 -104
  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 -104
  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 -62
  87. package/dist-client/pages/data-sample/data-sample-list-page.js +0 -372
  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 -51
  93. package/dist-client/pages/data-sample/data-sample-search-page.js +0 -364
  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 -23
  96. package/dist-client/pages/data-sample/data-sample-view.js +0 -309
  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 -247
  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 -50
  102. package/dist-client/pages/data-sensor/data-sensor-list-page.js +0 -395
  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 -321
  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 -96
  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 -77
  111. package/dist-client/pages/data-set/data-set-list-page.js +0 -1065
  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 -51
  114. package/dist-client/pages/data-summary/data-summary-list-page.js +0 -308
  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 -73
  117. package/dist-client/pages/data-summary/data-summary-period-page.js +0 -413
  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 -70
  120. package/dist-client/pages/data-summary/data-summary-search-page.js +0 -360
  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/pages/sure-to.d.ts +0 -1
  126. package/dist-client/pages/sure-to.js +0 -10
  127. package/dist-client/pages/sure-to.js.map +0 -1
  128. package/dist-client/route.d.ts +0 -1
  129. package/dist-client/route.js +0 -71
  130. package/dist-client/route.js.map +0 -1
  131. package/dist-client/tsconfig.tsbuildinfo +0 -1
  132. package/dist-server/activities/activity-data-collect.d.ts +0 -42
  133. package/dist-server/activities/activity-data-collect.js +0 -89
  134. package/dist-server/activities/activity-data-collect.js.map +0 -1
  135. package/dist-server/activities/activity-data-review.d.ts +0 -42
  136. package/dist-server/activities/activity-data-review.js +0 -101
  137. package/dist-server/activities/activity-data-review.js.map +0 -1
  138. package/dist-server/activities/activity-ooc-resolve.d.ts +0 -42
  139. package/dist-server/activities/activity-ooc-resolve.js +0 -110
  140. package/dist-server/activities/activity-ooc-resolve.js.map +0 -1
  141. package/dist-server/activities/activity-ooc-review.d.ts +0 -42
  142. package/dist-server/activities/activity-ooc-review.js +0 -91
  143. package/dist-server/activities/activity-ooc-review.js.map +0 -1
  144. package/dist-server/activities/index.d.ts +0 -1
  145. package/dist-server/activities/index.js +0 -11
  146. package/dist-server/activities/index.js.map +0 -1
  147. package/dist-server/controllers/create-data-ooc.d.ts +0 -4
  148. package/dist-server/controllers/create-data-ooc.js +0 -73
  149. package/dist-server/controllers/create-data-ooc.js.map +0 -1
  150. package/dist-server/controllers/create-data-sample.d.ts +0 -3
  151. package/dist-server/controllers/create-data-sample.js +0 -341
  152. package/dist-server/controllers/create-data-sample.js.map +0 -1
  153. package/dist-server/controllers/data-use-case.d.ts +0 -36
  154. package/dist-server/controllers/data-use-case.js +0 -62
  155. package/dist-server/controllers/data-use-case.js.map +0 -1
  156. package/dist-server/controllers/finalize-data-collection.d.ts +0 -4
  157. package/dist-server/controllers/finalize-data-collection.js +0 -354
  158. package/dist-server/controllers/finalize-data-collection.js.map +0 -1
  159. package/dist-server/controllers/index.d.ts +0 -6
  160. package/dist-server/controllers/index.js +0 -10
  161. package/dist-server/controllers/index.js.map +0 -1
  162. package/dist-server/controllers/issue-data-collection-task.d.ts +0 -2
  163. package/dist-server/controllers/issue-data-collection-task.js +0 -64
  164. package/dist-server/controllers/issue-data-collection-task.js.map +0 -1
  165. package/dist-server/controllers/issue-ooc-resolve.d.ts +0 -3
  166. package/dist-server/controllers/issue-ooc-resolve.js +0 -55
  167. package/dist-server/controllers/issue-ooc-resolve.js.map +0 -1
  168. package/dist-server/controllers/issue-ooc-review.d.ts +0 -3
  169. package/dist-server/controllers/issue-ooc-review.js +0 -52
  170. package/dist-server/controllers/issue-ooc-review.js.map +0 -1
  171. package/dist-server/controllers/jasper-report.d.ts +0 -1
  172. package/dist-server/controllers/jasper-report.js +0 -166
  173. package/dist-server/controllers/jasper-report.js.map +0 -1
  174. package/dist-server/controllers/query-data-summary-by-period.d.ts +0 -3
  175. package/dist-server/controllers/query-data-summary-by-period.js +0 -163
  176. package/dist-server/controllers/query-data-summary-by-period.js.map +0 -1
  177. package/dist-server/controllers/shiny-report.d.ts +0 -1
  178. package/dist-server/controllers/shiny-report.js +0 -40
  179. package/dist-server/controllers/shiny-report.js.map +0 -1
  180. package/dist-server/engine/index.d.ts +0 -1
  181. package/dist-server/engine/index.js +0 -4
  182. package/dist-server/engine/index.js.map +0 -1
  183. package/dist-server/engine/task/create-data-sample.d.ts +0 -1
  184. package/dist-server/engine/task/create-data-sample.js +0 -81
  185. package/dist-server/engine/task/create-data-sample.js.map +0 -1
  186. package/dist-server/engine/task/index.d.ts +0 -2
  187. package/dist-server/engine/task/index.js +0 -5
  188. package/dist-server/engine/task/index.js.map +0 -1
  189. package/dist-server/engine/task/issue-collect-data.d.ts +0 -1
  190. package/dist-server/engine/task/issue-collect-data.js +0 -40
  191. package/dist-server/engine/task/issue-collect-data.js.map +0 -1
  192. package/dist-server/index.d.ts +0 -6
  193. package/dist-server/index.js +0 -10
  194. package/dist-server/index.js.map +0 -1
  195. package/dist-server/routes.d.ts +0 -1
  196. package/dist-server/routes.js +0 -152
  197. package/dist-server/routes.js.map +0 -1
  198. package/dist-server/service/data-archive/data-archive-mutation.d.ts +0 -16
  199. package/dist-server/service/data-archive/data-archive-mutation.js +0 -278
  200. package/dist-server/service/data-archive/data-archive-mutation.js.map +0 -1
  201. package/dist-server/service/data-archive/data-archive-query.d.ts +0 -11
  202. package/dist-server/service/data-archive/data-archive-query.js +0 -97
  203. package/dist-server/service/data-archive/data-archive-query.js.map +0 -1
  204. package/dist-server/service/data-archive/data-archive-type.d.ts +0 -23
  205. package/dist-server/service/data-archive/data-archive-type.js +0 -77
  206. package/dist-server/service/data-archive/data-archive-type.js.map +0 -1
  207. package/dist-server/service/data-archive/data-archive.d.ts +0 -19
  208. package/dist-server/service/data-archive/data-archive.js +0 -84
  209. package/dist-server/service/data-archive/data-archive.js.map +0 -1
  210. package/dist-server/service/data-archive/index.d.ts +0 -5
  211. package/dist-server/service/data-archive/index.js +0 -9
  212. package/dist-server/service/data-archive/index.js.map +0 -1
  213. package/dist-server/service/data-key-set/data-key-item-type.d.ts +0 -12
  214. package/dist-server/service/data-key-set/data-key-item-type.js +0 -52
  215. package/dist-server/service/data-key-set/data-key-item-type.js.map +0 -1
  216. package/dist-server/service/data-key-set/data-key-set-mutation.d.ts +0 -10
  217. package/dist-server/service/data-key-set/data-key-set-mutation.js +0 -203
  218. package/dist-server/service/data-key-set/data-key-set-mutation.js.map +0 -1
  219. package/dist-server/service/data-key-set/data-key-set-query.d.ts +0 -12
  220. package/dist-server/service/data-key-set/data-key-set-query.js +0 -117
  221. package/dist-server/service/data-key-set/data-key-set-query.js.map +0 -1
  222. package/dist-server/service/data-key-set/data-key-set-type.d.ts +0 -28
  223. package/dist-server/service/data-key-set/data-key-set-type.js +0 -106
  224. package/dist-server/service/data-key-set/data-key-set-type.js.map +0 -1
  225. package/dist-server/service/data-key-set/data-key-set.d.ts +0 -22
  226. package/dist-server/service/data-key-set/data-key-set.js +0 -104
  227. package/dist-server/service/data-key-set/data-key-set.js.map +0 -1
  228. package/dist-server/service/data-key-set/index.d.ts +0 -5
  229. package/dist-server/service/data-key-set/index.js +0 -9
  230. package/dist-server/service/data-key-set/index.js.map +0 -1
  231. package/dist-server/service/data-ooc/data-ooc-mutation.d.ts +0 -6
  232. package/dist-server/service/data-ooc/data-ooc-mutation.js +0 -96
  233. package/dist-server/service/data-ooc/data-ooc-mutation.js.map +0 -1
  234. package/dist-server/service/data-ooc/data-ooc-query.d.ts +0 -23
  235. package/dist-server/service/data-ooc/data-ooc-query.js +0 -209
  236. package/dist-server/service/data-ooc/data-ooc-query.js.map +0 -1
  237. package/dist-server/service/data-ooc/data-ooc-subscription.d.ts +0 -12
  238. package/dist-server/service/data-ooc/data-ooc-subscription.js +0 -64
  239. package/dist-server/service/data-ooc/data-ooc-subscription.js.map +0 -1
  240. package/dist-server/service/data-ooc/data-ooc-type.d.ts +0 -27
  241. package/dist-server/service/data-ooc/data-ooc-type.js +0 -111
  242. package/dist-server/service/data-ooc/data-ooc-type.js.map +0 -1
  243. package/dist-server/service/data-ooc/data-ooc.d.ts +0 -63
  244. package/dist-server/service/data-ooc/data-ooc.js +0 -310
  245. package/dist-server/service/data-ooc/data-ooc.js.map +0 -1
  246. package/dist-server/service/data-ooc/index.d.ts +0 -6
  247. package/dist-server/service/data-ooc/index.js +0 -10
  248. package/dist-server/service/data-ooc/index.js.map +0 -1
  249. package/dist-server/service/data-sample/data-sample-mutation.d.ts +0 -5
  250. package/dist-server/service/data-sample/data-sample-mutation.js +0 -30
  251. package/dist-server/service/data-sample/data-sample-mutation.js.map +0 -1
  252. package/dist-server/service/data-sample/data-sample-query.d.ts +0 -22
  253. package/dist-server/service/data-sample/data-sample-query.js +0 -274
  254. package/dist-server/service/data-sample/data-sample-query.js.map +0 -1
  255. package/dist-server/service/data-sample/data-sample-type.d.ts +0 -18
  256. package/dist-server/service/data-sample/data-sample-type.js +0 -68
  257. package/dist-server/service/data-sample/data-sample-type.js.map +0 -1
  258. package/dist-server/service/data-sample/data-sample.d.ts +0 -45
  259. package/dist-server/service/data-sample/data-sample.js +0 -226
  260. package/dist-server/service/data-sample/data-sample.js.map +0 -1
  261. package/dist-server/service/data-sample/index.d.ts +0 -5
  262. package/dist-server/service/data-sample/index.js +0 -9
  263. package/dist-server/service/data-sample/index.js.map +0 -1
  264. package/dist-server/service/data-sensor/data-sensor-mutation.d.ts +0 -9
  265. package/dist-server/service/data-sensor/data-sensor-mutation.js +0 -137
  266. package/dist-server/service/data-sensor/data-sensor-mutation.js.map +0 -1
  267. package/dist-server/service/data-sensor/data-sensor-query.d.ts +0 -16
  268. package/dist-server/service/data-sensor/data-sensor-query.js +0 -137
  269. package/dist-server/service/data-sensor/data-sensor-query.js.map +0 -1
  270. package/dist-server/service/data-sensor/data-sensor-type.d.ts +0 -42
  271. package/dist-server/service/data-sensor/data-sensor-type.js +0 -162
  272. package/dist-server/service/data-sensor/data-sensor-type.js.map +0 -1
  273. package/dist-server/service/data-sensor/data-sensor.d.ts +0 -33
  274. package/dist-server/service/data-sensor/data-sensor.js +0 -160
  275. package/dist-server/service/data-sensor/data-sensor.js.map +0 -1
  276. package/dist-server/service/data-sensor/index.d.ts +0 -5
  277. package/dist-server/service/data-sensor/index.js +0 -9
  278. package/dist-server/service/data-sensor/index.js.map +0 -1
  279. package/dist-server/service/data-set/data-item-type.d.ts +0 -321
  280. package/dist-server/service/data-set/data-item-type.js +0 -458
  281. package/dist-server/service/data-set/data-item-type.js.map +0 -1
  282. package/dist-server/service/data-set/data-set-mutation.d.ts +0 -20
  283. package/dist-server/service/data-set/data-set-mutation.js +0 -551
  284. package/dist-server/service/data-set/data-set-mutation.js.map +0 -1
  285. package/dist-server/service/data-set/data-set-query.d.ts +0 -39
  286. package/dist-server/service/data-set/data-set-query.js +0 -565
  287. package/dist-server/service/data-set/data-set-query.js.map +0 -1
  288. package/dist-server/service/data-set/data-set-type.d.ts +0 -75
  289. package/dist-server/service/data-set/data-set-type.js +0 -276
  290. package/dist-server/service/data-set/data-set-type.js.map +0 -1
  291. package/dist-server/service/data-set/data-set.d.ts +0 -96
  292. package/dist-server/service/data-set/data-set.js +0 -380
  293. package/dist-server/service/data-set/data-set.js.map +0 -1
  294. package/dist-server/service/data-set/index.d.ts +0 -5
  295. package/dist-server/service/data-set/index.js +0 -9
  296. package/dist-server/service/data-set/index.js.map +0 -1
  297. package/dist-server/service/data-set-history/data-set-history-query.d.ts +0 -21
  298. package/dist-server/service/data-set-history/data-set-history-query.js +0 -183
  299. package/dist-server/service/data-set-history/data-set-history-query.js.map +0 -1
  300. package/dist-server/service/data-set-history/data-set-history-type.d.ts +0 -5
  301. package/dist-server/service/data-set-history/data-set-history-type.js +0 -21
  302. package/dist-server/service/data-set-history/data-set-history-type.js.map +0 -1
  303. package/dist-server/service/data-set-history/data-set-history.d.ts +0 -53
  304. package/dist-server/service/data-set-history/data-set-history.js +0 -265
  305. package/dist-server/service/data-set-history/data-set-history.js.map +0 -1
  306. package/dist-server/service/data-set-history/event-subscriber.d.ts +0 -7
  307. package/dist-server/service/data-set-history/event-subscriber.js +0 -21
  308. package/dist-server/service/data-set-history/event-subscriber.js.map +0 -1
  309. package/dist-server/service/data-set-history/index.d.ts +0 -6
  310. package/dist-server/service/data-set-history/index.js +0 -10
  311. package/dist-server/service/data-set-history/index.js.map +0 -1
  312. package/dist-server/service/data-spec/data-spec-manager.d.ts +0 -10
  313. package/dist-server/service/data-spec/data-spec-manager.js +0 -20
  314. package/dist-server/service/data-spec/data-spec-manager.js.map +0 -1
  315. package/dist-server/service/data-spec/data-spec-query.d.ts +0 -5
  316. package/dist-server/service/data-spec/data-spec-query.js +0 -37
  317. package/dist-server/service/data-spec/data-spec-query.js.map +0 -1
  318. package/dist-server/service/data-spec/data-spec.d.ts +0 -19
  319. package/dist-server/service/data-spec/data-spec.js +0 -79
  320. package/dist-server/service/data-spec/data-spec.js.map +0 -1
  321. package/dist-server/service/data-spec/index.d.ts +0 -4
  322. package/dist-server/service/data-spec/index.js +0 -8
  323. package/dist-server/service/data-spec/index.js.map +0 -1
  324. package/dist-server/service/data-summary/data-summary-mutation.d.ts +0 -6
  325. package/dist-server/service/data-summary/data-summary-mutation.js +0 -76
  326. package/dist-server/service/data-summary/data-summary-mutation.js.map +0 -1
  327. package/dist-server/service/data-summary/data-summary-query.d.ts +0 -19
  328. package/dist-server/service/data-summary/data-summary-query.js +0 -237
  329. package/dist-server/service/data-summary/data-summary-query.js.map +0 -1
  330. package/dist-server/service/data-summary/data-summary-type.d.ts +0 -33
  331. package/dist-server/service/data-summary/data-summary-type.js +0 -139
  332. package/dist-server/service/data-summary/data-summary-type.js.map +0 -1
  333. package/dist-server/service/data-summary/data-summary.d.ts +0 -38
  334. package/dist-server/service/data-summary/data-summary.js +0 -202
  335. package/dist-server/service/data-summary/data-summary.js.map +0 -1
  336. package/dist-server/service/data-summary/index.d.ts +0 -6
  337. package/dist-server/service/data-summary/index.js +0 -10
  338. package/dist-server/service/data-summary/index.js.map +0 -1
  339. package/dist-server/service/index.d.ts +0 -14
  340. package/dist-server/service/index.js +0 -54
  341. package/dist-server/service/index.js.map +0 -1
  342. package/dist-server/tsconfig.tsbuildinfo +0 -1
  343. package/dist-server/utils/config-resolver.d.ts +0 -1
  344. package/dist-server/utils/config-resolver.js +0 -32
  345. package/dist-server/utils/config-resolver.js.map +0 -1
  346. package/dist-server/utils/index.d.ts +0 -2
  347. package/dist-server/utils/index.js +0 -6
  348. package/dist-server/utils/index.js.map +0 -1
  349. package/dist-server/utils/media-validation.d.ts +0 -51
  350. package/dist-server/utils/media-validation.js +0 -148
  351. package/dist-server/utils/media-validation.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"issue-ooc-review.js","sourceRoot":"","sources":["../../server/controllers/issue-ooc-review.ts"],"names":[],"mappings":";;AAUA,wCAiDC;AA3DD,iDAAiE;AACjE,qCAA4B;AAE5B,yDAAgD;AAChD,uDAAmD;AACnD,0DAAsD;AAGtD,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;IAC/B,MAAM,SAAS,GAAG,MAAM,IAAA,iCAAyB,EAAC,MAAM,CAAC,CAAA;IAEzD,IAAI,UAAU,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,IAAI,CAAC;QACrD,KAAK,EAAE;YACL,MAAM,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,SAAS,CAAC,EAAE;YAC7B,IAAI,EAAE,YAAY;SACnB;KACF,CAAC,CAAA;IAEF,IAAI,QAAQ,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CACxE,CAAC,CAAC,CAAC,CAAA;IAEJ,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,SAAS,CAAC,EAAE;gBAC7B,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,aAAa,EAAE,CAAC,YAAY,CAAC;gBAC7B,UAAU,EAAE,CAAC;gBACb,UAAU,EAAE,CAAC;gBACb,YAAY,EAAE,EAAE;aACjB,CAAA;YAED,MAAM,sBAAsB,GAAG,MAAM,IAAA,aAAK,EAAC,gBAAuB,EAAE,OAAO,CAAC,CAAA;YAC5E,MAAM,EAAE,CAAC,aAAa,CAAC,qBAAO,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,sBAAsB,EAAE,CAAC,CAAA;QACxF,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 { getDomainIdsWithAncestors } from '@things-factory/shell'\nimport { In } from 'typeorm'\n\nimport { Role } from '@things-factory/auth-base'\nimport { Activity } from '@things-factory/worklist'\nimport { issue } from '@things-factory/worklist/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 const domainIds = await getDomainIdsWithAncestors(domain)\n\n var activities = await tx.getRepository(Activity).find({\n where: {\n domain: { id: In(domainIds) },\n name: 'OOC Review'\n }\n })\n\n var activity = [...activities].sort(\n (a, b) => domainIds.indexOf(a.domainId) - domainIds.indexOf(b.domainId)\n )[0]\n\n if (activity) {\n const assigneeRole =\n dataSet.supervisoryRoleId &&\n (await tx.getRepository(Role).findOneBy({\n domain: { id: In(domainIds) },\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 assigneeRoles: [assigneeRole],\n threadsMin: 1,\n threadsMax: 1,\n approvalLine: []\n }\n\n const reviewActivityInstance = await issue(activityInstance as any, context)\n await tx.getRepository(DataOoc).update({ id: dataOoc.id }, { reviewActivityInstance })\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>;
@@ -1,166 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renderJasperReport = renderJasperReport;
4
- const tslib_1 = require("tslib");
5
- const form_data_1 = tslib_1.__importDefault(require("form-data"));
6
- const node_fetch_1 = tslib_1.__importDefault(require("node-fetch"));
7
- const config_resolver_js_1 = require("../utils/config-resolver.js");
8
- const attachment_base_1 = require("@things-factory/attachment-base");
9
- const aws_base_1 = require("@things-factory/aws-base");
10
- const env_1 = require("@things-factory/env");
11
- const dataReportConfig = env_1.config.get('dataReport');
12
- const { jasper: { endpoint: ENDPOINT, datasource: { database: DATABASE } } } = dataReportConfig || {
13
- jasper: {
14
- endpoint: {},
15
- datasource: {}
16
- }
17
- };
18
- function transformValuesToRows(queryResult) {
19
- var parseData = [];
20
- let index = 1;
21
- for (let i = 0; i < queryResult.Items.length; i++) {
22
- var j = 0;
23
- const data = JSON.parse(queryResult.Items[i].data);
24
- const spec = JSON.parse(queryResult.Items[i].spec);
25
- for (let key in data) {
26
- if (Array.isArray(data[key])) {
27
- for (j = 0; j < data[key].length; j++) {
28
- for (let specKey in spec) {
29
- if (key === specKey) {
30
- parseData.push({
31
- item: spec[specKey].name,
32
- index: index + j,
33
- value: String(data[key][j])
34
- });
35
- }
36
- }
37
- }
38
- }
39
- else {
40
- parseData.push({
41
- item: key,
42
- index,
43
- value: String(data[key])
44
- });
45
- }
46
- }
47
- if (j !== 0) {
48
- index = index + j;
49
- }
50
- else {
51
- index = index + 1;
52
- }
53
- }
54
- }
55
- /** @todo considering trasformation in lambda, as massive dataset */
56
- function pivotData(rows) {
57
- let parsedData = [];
58
- let index = 1;
59
- for (let i = 0; i < rows.length; i++) {
60
- let j = 0;
61
- const data = JSON.parse(rows[i].data);
62
- const spec = JSON.parse(rows[i].spec);
63
- for (let key in data) {
64
- /** @todo rule to display or not, about unspecified spec */
65
- const value = data[key];
66
- !spec[key]?.hidden &&
67
- parsedData.push({
68
- item: spec[key]?.name || key,
69
- index,
70
- value: Array.isArray(value) ? value.join(', ') : value
71
- });
72
- }
73
- if (j !== 0) {
74
- index = index + j;
75
- }
76
- else {
77
- index = index + 1;
78
- }
79
- }
80
- return parsedData;
81
- }
82
- function parseJsonDataField(rows) {
83
- let parsedData = [];
84
- for (let i = 0; i < rows.length; i++) {
85
- const row = rows[i];
86
- const data = JSON.parse(row.data);
87
- for (let key in data) {
88
- if (Array.isArray(data[key])) {
89
- data[key] = data[key].toString();
90
- }
91
- }
92
- delete row.data;
93
- parsedData.push({ ...row, ...data });
94
- }
95
- return parsedData;
96
- }
97
- const athenaClient = new aws_base_1.AthenaController();
98
- async function queryAthena(params) {
99
- const { table, domain, datasetId, startDate, endDate, workShift, timezone } = params;
100
- const queryData = {
101
- sql: `SELECT ds.name, ds.description, ds.data, dsh.data_items as spec, ds.workdate, ds.workshift,
102
- DATE_FORMAT(
103
- FROM_UNIXTIME(collected_at / 1000 / 1000) AT TIME ZONE '${timezone || 'UTC'}',
104
- '%Y-%m-%d %H:%i:%s'
105
- ) AS dscollected_at
106
- FROM ${table} ds
107
- JOIN data_set_histories dsh
108
- ON (ds.datasetid = dsh.original_id
109
- and ds.data_set_version = dsh.version)
110
- WHERE ds.domain='${domain}'
111
- AND ds.datasetid = '${datasetId}'
112
- AND ds.workdate >= '${startDate}'
113
- AND ds.workdate <= '${endDate}'
114
- ${workShift ? "AND ds.workshift = '" + workShift + "'" : ''}
115
- ORDER BY ds.collected_at`,
116
- db: DATABASE
117
- };
118
- // and json_extract_scalar(data, '$.dauid') = 'A8032AD81730'
119
- return await athenaClient.query(queryData);
120
- }
121
- async function renderJasperReport(context) {
122
- const { state: { domain }, query } = context;
123
- const template = await attachment_base_1.STORAGE.readFile(query['reportTemplate'] || 'dynamic_header_sample.jrxml', 'utf-8');
124
- let templateType = query['templateType'] || 'crosstab';
125
- let parsedData = [];
126
- // @todo: get dataset timezone
127
- /**
128
- * const variables = await gql(dataSet(id:${dataSetId}) {
129
- * name, description, partition_keys, timezone
130
- * })
131
- */
132
- query['domain'] = domain?.subdomain;
133
- query['timezone'] = domain?.timezone;
134
- const queryResult = await queryAthena(query);
135
- const rows = queryResult.Items;
136
- if (!rows.length) {
137
- return '<h3>Not found result.</h3>';
138
- }
139
- else {
140
- const firstRow = rows[0];
141
- // uses the first row values as data-set has no history data.
142
- const parameters = {
143
- name: firstRow.name,
144
- description: firstRow.description,
145
- ...query
146
- };
147
- if (templateType === 'crosstab') {
148
- parsedData = pivotData(rows);
149
- }
150
- else {
151
- parsedData = parseJsonDataField(rows);
152
- }
153
- const formData = new form_data_1.default();
154
- formData.append('template', template);
155
- formData.append('jsonString', JSON.stringify(parsedData));
156
- formData.append('parameters', JSON.stringify(parameters));
157
- const { reportView } = query;
158
- const url = (0, config_resolver_js_1.getEndpointUrl)(ENDPOINT, reportView);
159
- const response = await (0, node_fetch_1.default)(url, {
160
- method: 'POST',
161
- body: formData
162
- });
163
- return await response.text();
164
- }
165
- }
166
- //# sourceMappingURL=jasper-report.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jasper-report.js","sourceRoot":"","sources":["../../server/controllers/jasper-report.ts"],"names":[],"mappings":"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","sourcesContent":["import FormData from 'form-data'\nimport fetch from 'node-fetch'\n\nimport { getEndpointUrl } from '../utils/config-resolver.js'\n\nimport { STORAGE } from '@things-factory/attachment-base'\nimport { AthenaController } from '@things-factory/aws-base'\nimport { config } from '@things-factory/env'\n\nconst dataReportConfig = config.get('dataReport')\nconst {\n jasper: {\n endpoint: ENDPOINT,\n datasource: { database: DATABASE }\n }\n} = dataReportConfig || {\n jasper: {\n endpoint: {},\n datasource: {}\n }\n}\n\nfunction transformValuesToRows(queryResult) {\n var parseData = []\n let index = 1\n for (let i = 0; i < queryResult.Items.length; i++) {\n var j = 0\n const data = JSON.parse(queryResult.Items[i].data)\n const spec = JSON.parse(queryResult.Items[i].spec)\n\n for (let key in data) {\n if (Array.isArray(data[key])) {\n for (j = 0; j < data[key].length; j++) {\n for (let specKey in spec) {\n if (key === specKey) {\n parseData.push({\n item: spec[specKey].name,\n index: index + j,\n value: String(data[key][j])\n })\n }\n }\n }\n } else {\n parseData.push({\n item: key,\n index,\n value: String(data[key])\n })\n }\n }\n if (j !== 0) {\n index = index + j\n } else {\n index = index + 1\n }\n }\n}\n\n/** @todo considering trasformation in lambda, as massive dataset */\nfunction pivotData(rows) {\n let parsedData = []\n let index = 1\n for (let i = 0; i < rows.length; i++) {\n let j = 0\n const data = JSON.parse(rows[i].data)\n const spec = JSON.parse(rows[i].spec)\n\n for (let key in data) {\n /** @todo rule to display or not, about unspecified spec */\n const value = data[key]\n !spec[key]?.hidden &&\n parsedData.push({\n item: spec[key]?.name || key,\n index,\n value: Array.isArray(value) ? value.join(', ') : value\n })\n }\n if (j !== 0) {\n index = index + j\n } else {\n index = index + 1\n }\n }\n\n return parsedData\n}\n\nfunction parseJsonDataField(rows) {\n let parsedData = []\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i]\n const data = JSON.parse(row.data)\n for (let key in data) {\n if (Array.isArray(data[key])) {\n data[key] = data[key].toString()\n }\n }\n delete row.data\n parsedData.push({ ...row, ...data })\n }\n\n return parsedData\n}\n\nconst athenaClient = new AthenaController()\n\nasync function queryAthena(params) {\n const { table, domain, datasetId, startDate, endDate, workShift, timezone } = params\n const queryData = {\n sql: `SELECT ds.name, ds.description, ds.data, dsh.data_items as spec, ds.workdate, ds.workshift,\n DATE_FORMAT(\n FROM_UNIXTIME(collected_at / 1000 / 1000) AT TIME ZONE '${timezone || 'UTC'}', \n '%Y-%m-%d %H:%i:%s'\n ) AS dscollected_at\n FROM ${table} ds\n JOIN data_set_histories dsh \n ON (ds.datasetid = dsh.original_id\n and ds.data_set_version = dsh.version)\n WHERE ds.domain='${domain}' \n AND ds.datasetid = '${datasetId}'\n AND ds.workdate >= '${startDate}'\n AND ds.workdate <= '${endDate}'\n ${workShift ? \"AND ds.workshift = '\" + workShift + \"'\" : ''}\n ORDER BY ds.collected_at`,\n db: DATABASE\n }\n // and json_extract_scalar(data, '$.dauid') = 'A8032AD81730'\n\n return await athenaClient.query(queryData)\n}\n\nexport async function renderJasperReport(context: any) {\n const {\n state: { domain },\n query\n } = context\n\n const template = await STORAGE.readFile(query['reportTemplate'] || 'dynamic_header_sample.jrxml', 'utf-8')\n let templateType = query['templateType'] || 'crosstab'\n let parsedData = []\n\n // @todo: get dataset timezone\n /**\n * const variables = await gql(dataSet(id:${dataSetId}) {\n * name, description, partition_keys, timezone\n * })\n */\n\n query['domain'] = domain?.subdomain\n query['timezone'] = domain?.timezone\n const queryResult = await queryAthena(query)\n const rows = queryResult.Items\n\n if (!rows.length) {\n return '<h3>Not found result.</h3>'\n } else {\n const firstRow = rows[0]\n // uses the first row values as data-set has no history data.\n const parameters = {\n name: firstRow.name,\n description: firstRow.description,\n ...query\n }\n\n if (templateType === 'crosstab') {\n parsedData = pivotData(rows)\n } else {\n parsedData = parseJsonDataField(rows)\n }\n\n const formData = new FormData()\n formData.append('template', template)\n formData.append('jsonString', JSON.stringify(parsedData))\n formData.append('parameters', JSON.stringify(parameters))\n\n const { reportView } = query\n const url = getEndpointUrl(ENDPOINT, reportView)\n const response = await fetch(url, {\n method: 'POST',\n body: formData\n })\n\n return await response.text()\n }\n}\n"]}
@@ -1,3 +0,0 @@
1
- import { ListParam } from '@things-factory/shell';
2
- import { DataSummary } from '../service/data-summary/data-summary.js';
3
- export declare function queryDataSummaryByPeriod(period: 'today' | 'this month' | '30 days' | 'this year' | '12 months' | 'date range' | 'month', dataSetName: string, dataKeys: string[] | null, params: ListParam, context: ResolverContext): Promise<DataSummary[]>;
@@ -1,163 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.queryDataSummaryByPeriod = queryDataSummaryByPeriod;
4
- const typeorm_1 = require("typeorm");
5
- const shell_1 = require("@things-factory/shell");
6
- const data_set_js_1 = require("../service/data-set/data-set.js");
7
- const data_summary_js_1 = require("../service/data-summary/data-summary.js");
8
- const STAT_FUNCTION_MAP = {
9
- sum: 'sum',
10
- mean: 'mean',
11
- stddev: 'standardDeviation',
12
- variance: 'variance',
13
- min: 'min',
14
- max: 'max',
15
- range: 'range',
16
- median: 'median',
17
- mode: 'mode'
18
- };
19
- async function queryDataSummaryByPeriod(period, dataSetName, dataKeys, params, context) {
20
- const { domain, user, tx } = context.state;
21
- const { t } = context;
22
- const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
23
- const dataSet = await (0, shell_1.getRepository)(data_set_js_1.DataSet).findOne({
24
- where: { domain: { id: (0, typeorm_1.In)(domainIds) }, name: dataSetName },
25
- relations: ['dataKeySet']
26
- });
27
- if (!dataSet) {
28
- throw new Error(t('error.dataset not found', { dataSetName }));
29
- }
30
- // limitations
31
- const summaryPeriodType = dataSet.summaryPeriod;
32
- if ((summaryPeriodType == data_set_js_1.DataSetSummaryPeriodType.Day || summaryPeriodType == data_set_js_1.DataSetSummaryPeriodType.WorkDate) &&
33
- period == 'today') {
34
- throw new Error(t('error.summary not supported', { dataSetName, period: t(`label.period-${period}`) }));
35
- }
36
- // dataKeys 가 설정되지 않았다면, dataSet의 dataKeySet을 그대로 적용한다는 의미임.
37
- // dataKeys == [] 라면, dataKeySet을 적용하지 않는다는 의미임.
38
- // dataKeys에는 dataKeySet의 dataKey 값을 따라야 한다.
39
- const dataKeyItems = !dataSet.dataKeySet?.dataKeyItems
40
- ? []
41
- : dataKeys
42
- ? dataKeys
43
- .map(dataKey => {
44
- return dataSet.dataKeySet.dataKeyItems.find(item => item.dataKey == dataKey);
45
- })
46
- .filter(Boolean)
47
- : dataSet.dataKeySet.dataKeyItems;
48
- const searchables = dataKeyItems.map((item, index) => `key0${index + 1}`);
49
- const dataItems = dataSet.dataItems.filter(item => item.agg);
50
- const { date, month } = params.filters.reduce((acc, filter) => {
51
- if (filter.name === 'date')
52
- acc.date = filter.value;
53
- if (filter.name === 'month')
54
- acc.month = filter.value;
55
- return acc;
56
- }, { date: null, month: null });
57
- const { from, to } = await (0, shell_1.getTimesForPeriod)(period, { date, month }, context);
58
- const selectPeriod = queryBuilder => {
59
- if (period == 'today') {
60
- queryBuilder.addSelect('summary.date', 'date').addSelect('summary.period', 'period');
61
- }
62
- else if (['this year', '12 months'].includes(period)) {
63
- queryBuilder.addSelect('SUBSTRING(summary.date, 1, 7) AS month');
64
- }
65
- else {
66
- queryBuilder.addSelect('summary.date', 'date');
67
- }
68
- return queryBuilder;
69
- };
70
- const selectKeys = dataKeyItems.map((item, index) => {
71
- const aliasName = `key0${index + 1}`;
72
- const columnName = `summary.${aliasName}`;
73
- return `${columnName} as ${aliasName}`;
74
- });
75
- const selectData = dataItems.map((item, index) => {
76
- const aliasName = `data0${index + 1}`;
77
- const columnName = `summary.${aliasName}`;
78
- switch (item.agg) {
79
- case STAT_FUNCTION_MAP.sum:
80
- return `SUM(${columnName}) as ${aliasName}`;
81
- case STAT_FUNCTION_MAP.mean:
82
- // 일차 mean 된 값들을 다시 계산하므로, 무의미할 수 있다.
83
- return `AVG(${columnName}) as ${aliasName}`;
84
- case STAT_FUNCTION_MAP.stddev:
85
- // 일차 stddev 된 값들을 다시 계산하므로, 무의미할 수 있다.
86
- return `STDDEV(${columnName}) as ${aliasName}`;
87
- case STAT_FUNCTION_MAP.variance:
88
- // 일차 variance 된 값들을 다시 계산하므로, 무의미할 수 있다.
89
- return `VARIANCE(${columnName}) as ${aliasName}`;
90
- case STAT_FUNCTION_MAP.min:
91
- return `MIN(${columnName}) as ${aliasName}`;
92
- case STAT_FUNCTION_MAP.max:
93
- return `MAX(${columnName}) as ${aliasName}`;
94
- case STAT_FUNCTION_MAP.range:
95
- // 일차 range 값들을 다시 계산하므로, 무의미할 수 있다.
96
- return `MAX(${columnName}) - MIN(${columnName}) as ${aliasName}`;
97
- case STAT_FUNCTION_MAP.mode:
98
- // not guaranteed
99
- return `MODE() WITHIN GROUP (ORDER BY ${columnName})`;
100
- default:
101
- return `AVG(${columnName}) as ${aliasName}`;
102
- }
103
- });
104
- const groupByPeriod = period == 'today'
105
- ? 'summary.date, summary.period'
106
- : ['this year', '12 months'].includes(period)
107
- ? 'SUBSTRING(summary.date, 1, 7)'
108
- : 'summary.date';
109
- const groupByKeys = dataKeyItems
110
- .map((item, index) => {
111
- return `summary.key0${index + 1}`;
112
- })
113
- .join(', ');
114
- const desc = false;
115
- var orderByPeriod = period == 'today'
116
- ? [
117
- { name: 'date', desc },
118
- { name: 'period', desc }
119
- ]
120
- : ['this year', '12 months'].includes(period)
121
- ? [{ name: 'month', desc }]
122
- : [{ name: 'date', desc }];
123
- if (params?.sortings && params.sortings.length > 0) {
124
- orderByPeriod = params.sortings;
125
- }
126
- var queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
127
- repository: (0, shell_1.getRepository)(data_summary_js_1.DataSummary),
128
- params: {
129
- ...params,
130
- filters: params?.filters?.filter(({ name }) => name !== 'date' && name !== 'month') || [],
131
- sortings: []
132
- },
133
- domain: undefined,
134
- alias: 'summary',
135
- searchables: searchables
136
- })
137
- .select('summary.dataSet')
138
- .addSelect(selectData)
139
- .addSelect('SUM(summary.count)', 'count')
140
- .addSelect('SUM(summary.countOoc)', 'countOoc')
141
- .addSelect('SUM(summary.countOos)', 'countOos');
142
- queryBuilder = selectPeriod(queryBuilder)
143
- .innerJoin('summary.dataSet', 'ds', 'ds.id = :dataSetName', {
144
- dataSetName: dataSet.id
145
- })
146
- .andWhere('summary.domain IN (:...ancestorDomainIds)', { ancestorDomainIds: domainIds })
147
- .andWhere('summary.date >= :from', { from })
148
- .andWhere('summary.date < :to', { to })
149
- .addGroupBy('summary.dataSet')
150
- .addGroupBy(groupByPeriod);
151
- if (dataKeyItems.length > 0) {
152
- queryBuilder.addSelect(selectKeys).addGroupBy(groupByKeys);
153
- }
154
- /* The rows are groups: the list's own order would name a column they do not group - only the period's order is theirs. */
155
- queryBuilder.orderBy();
156
- orderByPeriod.map(orderBy => {
157
- const { name: sort, desc } = orderBy;
158
- queryBuilder.addOrderBy(sort, desc ? 'DESC' : 'ASC');
159
- });
160
- const items = await queryBuilder.getRawMany();
161
- return items;
162
- }
163
- //# sourceMappingURL=query-data-summary-by-period.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-data-summary-by-period.js","sourceRoot":"","sources":["../../server/controllers/query-data-summary-by-period.ts"],"names":[],"mappings":"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","sourcesContent":["import { In } from 'typeorm'\n\nimport {\n getQueryBuilderFromListParams,\n getRepository,\n getTimesForPeriod,\n ListParam,\n Sorting,\n getDomainIdsWithAncestors\n} from '@things-factory/shell'\n\nimport { DataSet, DataSetSummaryPeriodType } from '../service/data-set/data-set.js'\nimport { DataSummary } from '../service/data-summary/data-summary.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\nexport async function queryDataSummaryByPeriod(\n period: 'today' | 'this month' | '30 days' | 'this year' | '12 months' | 'date range' | 'month',\n dataSetName: string,\n dataKeys: string[] | null,\n params: ListParam,\n context: ResolverContext\n): Promise<DataSummary[]> {\n const { domain, user, tx } = context.state\n const { t } = context\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n const dataSet = await getRepository(DataSet).findOne({\n where: { domain: { id: In(domainIds) }, name: dataSetName },\n relations: ['dataKeySet']\n })\n\n if (!dataSet) {\n throw new Error(t('error.dataset not found', { dataSetName }))\n }\n\n // limitations\n const summaryPeriodType = dataSet.summaryPeriod\n if (\n (summaryPeriodType == DataSetSummaryPeriodType.Day || summaryPeriodType == DataSetSummaryPeriodType.WorkDate) &&\n period == 'today'\n ) {\n throw new Error(t('error.summary not supported', { dataSetName, period: t(`label.period-${period}`) }))\n }\n\n // dataKeys 가 설정되지 않았다면, dataSet의 dataKeySet을 그대로 적용한다는 의미임.\n // dataKeys == [] 라면, dataKeySet을 적용하지 않는다는 의미임.\n // dataKeys에는 dataKeySet의 dataKey 값을 따라야 한다.\n const dataKeyItems = !dataSet.dataKeySet?.dataKeyItems\n ? []\n : dataKeys\n ? dataKeys\n .map(dataKey => {\n return dataSet.dataKeySet.dataKeyItems.find(item => item.dataKey == dataKey)\n })\n .filter(Boolean)\n : dataSet.dataKeySet.dataKeyItems\n\n const searchables = dataKeyItems.map((item, index) => `key0${index + 1}`)\n const dataItems = dataSet.dataItems.filter(item => item.agg)\n\n const { date, month } = params.filters.reduce(\n (acc, filter) => {\n if (filter.name === 'date') acc.date = filter.value\n if (filter.name === 'month') acc.month = filter.value\n return acc\n },\n { date: null, month: null }\n )\n\n const { from, to } = await getTimesForPeriod(period, { date, month }, context)\n\n const selectPeriod = queryBuilder => {\n if (period == 'today') {\n queryBuilder.addSelect('summary.date', 'date').addSelect('summary.period', 'period')\n } else if (['this year', '12 months'].includes(period)) {\n queryBuilder.addSelect('SUBSTRING(summary.date, 1, 7) AS month')\n } else {\n queryBuilder.addSelect('summary.date', 'date')\n }\n\n return queryBuilder\n }\n const selectKeys = dataKeyItems.map((item, index) => {\n const aliasName = `key0${index + 1}`\n const columnName = `summary.${aliasName}`\n\n return `${columnName} as ${aliasName}`\n }) as string[]\n const selectData = dataItems.map((item, index) => {\n const aliasName = `data0${index + 1}`\n const columnName = `summary.${aliasName}`\n\n switch (item.agg) {\n case STAT_FUNCTION_MAP.sum:\n return `SUM(${columnName}) as ${aliasName}`\n case STAT_FUNCTION_MAP.mean:\n // 일차 mean 된 값들을 다시 계산하므로, 무의미할 수 있다.\n return `AVG(${columnName}) as ${aliasName}`\n case STAT_FUNCTION_MAP.stddev:\n // 일차 stddev 된 값들을 다시 계산하므로, 무의미할 수 있다.\n return `STDDEV(${columnName}) as ${aliasName}`\n case STAT_FUNCTION_MAP.variance:\n // 일차 variance 된 값들을 다시 계산하므로, 무의미할 수 있다.\n return `VARIANCE(${columnName}) as ${aliasName}`\n case STAT_FUNCTION_MAP.min:\n return `MIN(${columnName}) as ${aliasName}`\n case STAT_FUNCTION_MAP.max:\n return `MAX(${columnName}) as ${aliasName}`\n case STAT_FUNCTION_MAP.range:\n // 일차 range 값들을 다시 계산하므로, 무의미할 수 있다.\n return `MAX(${columnName}) - MIN(${columnName}) as ${aliasName}`\n case STAT_FUNCTION_MAP.mode:\n // not guaranteed\n return `MODE() WITHIN GROUP (ORDER BY ${columnName})`\n default:\n return `AVG(${columnName}) as ${aliasName}`\n }\n })\n\n const groupByPeriod =\n period == 'today'\n ? 'summary.date, summary.period'\n : ['this year', '12 months'].includes(period)\n ? 'SUBSTRING(summary.date, 1, 7)'\n : 'summary.date'\n const groupByKeys = dataKeyItems\n .map((item, index) => {\n return `summary.key0${index + 1}`\n })\n .join(', ')\n\n const desc = false\n var orderByPeriod: Sorting[] =\n period == 'today'\n ? [\n { name: 'date', desc },\n { name: 'period', desc }\n ]\n : ['this year', '12 months'].includes(period)\n ? [{ name: 'month', desc }]\n : [{ name: 'date', desc }]\n\n if (params?.sortings && params.sortings.length > 0) {\n orderByPeriod = params.sortings\n }\n\n var queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(DataSummary),\n params: {\n ...params,\n filters: params?.filters?.filter(({ name }) => name !== 'date' && name !== 'month') || [],\n sortings: []\n },\n domain: undefined,\n alias: 'summary',\n searchables: searchables\n })\n .select('summary.dataSet')\n .addSelect(selectData)\n .addSelect('SUM(summary.count)', 'count')\n .addSelect('SUM(summary.countOoc)', 'countOoc')\n .addSelect('SUM(summary.countOos)', 'countOos')\n\n queryBuilder = selectPeriod(queryBuilder)\n .innerJoin('summary.dataSet', 'ds', 'ds.id = :dataSetName', {\n dataSetName: dataSet.id\n })\n .andWhere('summary.domain IN (:...ancestorDomainIds)', { ancestorDomainIds: domainIds })\n .andWhere('summary.date >= :from', { from })\n .andWhere('summary.date < :to', { to })\n .addGroupBy('summary.dataSet')\n .addGroupBy(groupByPeriod)\n\n if (dataKeyItems.length > 0) {\n queryBuilder.addSelect(selectKeys).addGroupBy(groupByKeys)\n }\n\n /* The rows are groups: the list's own order would name a column they do not group - only the period's order is theirs. */\n queryBuilder.orderBy()\n orderByPeriod.map(orderBy => {\n const { name: sort, desc } = orderBy\n queryBuilder.addOrderBy(sort, desc ? 'DESC' : 'ASC')\n })\n\n const items = await queryBuilder.getRawMany()\n\n return items\n}\n"]}
@@ -1 +0,0 @@
1
- export declare function renderShinyReport(context: any): Promise<string>;
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renderShinyReport = renderShinyReport;
4
- const tslib_1 = require("tslib");
5
- const env_1 = require("@things-factory/env");
6
- const config_resolver_js_1 = require("../utils/config-resolver.js");
7
- const debug_1 = tslib_1.__importDefault(require("debug"));
8
- const debug = (0, debug_1.default)('things-factory:dataset:shiny-report');
9
- const dataReportConfig = env_1.config.get('dataReport');
10
- const { shiny: { endpoint: ENDPOINT, datasource: { database: DATABASE } } } = Object.assign({
11
- shiny: {
12
- endpoint: {},
13
- datasource: {}
14
- }
15
- }, dataReportConfig);
16
- async function renderShinyReport(context) {
17
- debug('render:context', context);
18
- try {
19
- const cookies = new URLSearchParams(context.header.cookie.replace(/; /g, '&'));
20
- const token = cookies.get('access_token');
21
- const { state: { domain }, query, response } = context;
22
- const urlParams = new URLSearchParams({
23
- token,
24
- ...query,
25
- database: DATABASE,
26
- domain: domain?.subdomain
27
- }).toString();
28
- const subpath = query?.reportView || '';
29
- if (!subpath) {
30
- return (context.body = '');
31
- }
32
- const url = (0, config_resolver_js_1.getEndpointUrl)(ENDPOINT, subpath);
33
- const reportUrl = `${url}/?${urlParams}`;
34
- response.redirect(reportUrl);
35
- }
36
- catch (ex) {
37
- context.body = `Error: ${ex.message} || ''`;
38
- }
39
- }
40
- //# sourceMappingURL=shiny-report.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shiny-report.js","sourceRoot":"","sources":["../../server/controllers/shiny-report.ts"],"names":[],"mappings":";;AAqBA,8CAgCC;;AArDD,6CAA4C;AAC5C,oEAA4D;AAE5D,0DAA4B;AAC5B,MAAM,KAAK,GAAG,IAAA,eAAQ,EAAC,qCAAqC,CAAC,CAAA;AAC7D,MAAM,gBAAgB,GAAG,YAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AACjD,MAAM,EACJ,KAAK,EAAE,EACL,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EACnC,EACF,GAAG,MAAM,CAAC,MAAM,CACf;IACE,KAAK,EAAE;QACL,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,EAAE;KACf;CACF,EACD,gBAAgB,CACjB,CAAA;AAEM,KAAK,UAAU,iBAAiB,CAAC,OAAY;IAClD,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;IAEhC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;QAC9E,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QACzC,MAAM,EACJ,KAAK,EAAE,EAAE,MAAM,EAAE,EACjB,KAAK,EACL,QAAQ,EACT,GAAG,OAAO,CAAA;QAEX,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC;YACpC,KAAK;YACL,GAAG,KAAK;YACR,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,MAAM,EAAE,SAAS;SAC1B,CAAC,CAAC,QAAQ,EAAE,CAAA;QAEb,MAAM,OAAO,GAAG,KAAK,EAAE,UAAU,IAAI,EAAE,CAAA;QAEvC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;QAC5B,CAAC;QAED,MAAM,GAAG,GAAG,IAAA,mCAAc,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC7C,MAAM,SAAS,GAAG,GAAG,GAAG,KAAK,SAAS,EAAE,CAAA;QAExC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IAC9B,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE,CAAC,OAAO,QAAQ,CAAA;IAC7C,CAAC;AACH,CAAC","sourcesContent":["import { config } from '@things-factory/env'\nimport { getEndpointUrl } from '../utils/config-resolver.js'\n\nimport debugLib from 'debug'\nconst debug = debugLib('things-factory:dataset:shiny-report')\nconst dataReportConfig = config.get('dataReport')\nconst {\n shiny: {\n endpoint: ENDPOINT,\n datasource: { database: DATABASE }\n }\n} = Object.assign(\n {\n shiny: {\n endpoint: {},\n datasource: {}\n }\n },\n dataReportConfig\n)\n\nexport async function renderShinyReport(context: any) {\n debug('render:context', context)\n\n try {\n const cookies = new URLSearchParams(context.header.cookie.replace(/; /g, '&'))\n const token = cookies.get('access_token')\n const {\n state: { domain },\n query,\n response\n } = context\n\n const urlParams = new URLSearchParams({\n token,\n ...query,\n database: DATABASE,\n domain: domain?.subdomain\n }).toString()\n\n const subpath = query?.reportView || ''\n\n if (!subpath) {\n return (context.body = '')\n }\n\n const url = getEndpointUrl(ENDPOINT, subpath)\n const reportUrl = `${url}/?${urlParams}`\n\n response.redirect(reportUrl)\n } catch (ex) {\n context.body = `Error: ${ex.message} || ''`\n }\n}\n"]}
@@ -1 +0,0 @@
1
- import './task/index.js';
@@ -1,4 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- require("./task/index.js");
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/engine/index.ts"],"names":[],"mappings":";;AAAA,2BAAwB","sourcesContent":["import './task/index.js'\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,81 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const integration_base_1 = require("@things-factory/integration-base");
5
- const shell_1 = require("@things-factory/shell");
6
- const utils_1 = require("@things-factory/utils");
7
- const i18next_1 = tslib_1.__importDefault(require("i18next"));
8
- const data_set_js_1 = require("../../service/data-set/data-set.js");
9
- const create_data_sample_js_1 = require("../../controllers/create-data-sample.js");
10
- async function CreateDataSample(step, context) {
11
- const { data, domain, user, lng } = context;
12
- var { params: { dataset: dataSetId, source: sourceAccessor, rawData: rawDataAccessor, data: dataAccessor, timestamp: timestampAccessor } } = step;
13
- if (!dataSetId) {
14
- throw new Error(`no dataset found`);
15
- }
16
- // make new data-sample
17
- return await (0, shell_1.getDataSource)().transaction(async (tx) => {
18
- const dataSet = await tx.getRepository(data_set_js_1.DataSet).findOne({
19
- where: {
20
- id: dataSetId
21
- }
22
- });
23
- var source = await (0, utils_1.access)(sourceAccessor, data);
24
- var extractedData = await (0, utils_1.access)(dataAccessor, data);
25
- var extractedRawData = rawDataAccessor && (await (0, utils_1.access)(rawDataAccessor, data));
26
- var timestamp = timestampAccessor && (await (0, utils_1.access)(timestampAccessor, data));
27
- const dataSample = await (0, create_data_sample_js_1.createDataSample)({
28
- dataSet,
29
- data: extractedData,
30
- rawData: extractedRawData,
31
- source,
32
- collectedAt: new Date(timestamp || new Date())
33
- }, {
34
- t: i18next_1.default.t,
35
- state: {
36
- domain,
37
- user,
38
- lng,
39
- tx
40
- }
41
- });
42
- return {
43
- data: dataSample
44
- };
45
- });
46
- }
47
- CreateDataSample.parameterSpec = [
48
- {
49
- type: 'entity-selector',
50
- name: 'dataset',
51
- label: 'data-set',
52
- property: {
53
- queryName: 'dataSets',
54
- valueKey: 'id'
55
- }
56
- },
57
- {
58
- type: 'string',
59
- name: 'source',
60
- label: 'source'
61
- },
62
- {
63
- type: 'string',
64
- name: 'rawData',
65
- label: 'raw-data'
66
- },
67
- {
68
- type: 'string',
69
- name: 'data',
70
- label: 'data'
71
- },
72
- {
73
- type: 'string',
74
- name: 'timestamp',
75
- label: 'timestamp'
76
- }
77
- ];
78
- CreateDataSample.connectorFree = true;
79
- CreateDataSample.help = 'dataset/task/create-data-sample';
80
- integration_base_1.TaskRegistry.registerTaskHandler('create-data-sample', CreateDataSample);
81
- //# sourceMappingURL=create-data-sample.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-data-sample.js","sourceRoot":"","sources":["../../../server/engine/task/create-data-sample.ts"],"names":[],"mappings":";;;AAAA,uEAAmF;AACnF,iDAAqD;AACrD,iDAA8C;AAC9C,8DAA6B;AAE7B,oEAA4D;AAC5D,mFAA0E;AAE1E,KAAK,UAAU,gBAAgB,CAAC,IAAe,EAAE,OAAgB;IAC/D,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;IAC3C,IAAI,EACF,MAAM,EAAE,EACN,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,iBAAiB,EAC7B,EACF,GAAG,IAAI,CAAA;IAER,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACrC,CAAC;IAED,uBAAuB;IACvB,OAAO,MAAM,IAAA,qBAAa,GAAE,CAAC,WAAW,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;QAClD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,qBAAO,CAAC,CAAC,OAAO,CAAC;YACtD,KAAK,EAAE;gBACL,EAAE,EAAE,SAAS;aACd;SACF,CAAC,CAAA;QAEF,IAAI,MAAM,GAAG,MAAM,IAAA,cAAM,EAAC,cAAc,EAAE,IAAI,CAAC,CAAA;QAC/C,IAAI,aAAa,GAAG,MAAM,IAAA,cAAM,EAAC,YAAY,EAAE,IAAI,CAAC,CAAA;QACpD,IAAI,gBAAgB,GAAG,eAAe,IAAI,CAAC,MAAM,IAAA,cAAM,EAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAA;QAC/E,IAAI,SAAS,GAAG,iBAAiB,IAAI,CAAC,MAAM,IAAA,cAAM,EAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAA;QAE5E,MAAM,UAAU,GAAG,MAAM,IAAA,wCAAgB,EACvC;YACE,OAAO;YACP,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,gBAAgB;YACzB,MAAM;YACN,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC;SAC/C,EACD;YACE,CAAC,EAAE,iBAAO,CAAC,CAAC;YACZ,KAAK,EAAE;gBACL,MAAM;gBACN,IAAI;gBACJ,GAAG;gBACH,EAAE;aACH;SACF,CACF,CAAA;QAED,OAAO;YACL,IAAI,EAAE,UAAU;SACjB,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,gBAAgB,CAAC,aAAa,GAAG;IAC/B;QACE,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE;YACR,SAAS,EAAE,UAAU;YACrB,QAAQ,EAAE,IAAI;SACf;KACF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,UAAU;KAClB;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,MAAM;KACd;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,WAAW;KACnB;CACF,CAAA;AAED,gBAAgB,CAAC,aAAa,GAAG,IAAI,CAAA;AACrC,gBAAgB,CAAC,IAAI,GAAG,iCAAiC,CAAA;AAEzD,+BAAY,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAA","sourcesContent":["import { TaskRegistry, InputStep, Context } from '@things-factory/integration-base'\nimport { getDataSource } from '@things-factory/shell'\nimport { access } from '@things-factory/utils'\nimport i18next from 'i18next'\n\nimport { DataSet } from '../../service/data-set/data-set.js'\nimport { createDataSample } from '../../controllers/create-data-sample.js'\n\nasync function CreateDataSample(step: InputStep, context: Context) {\n const { data, domain, user, lng } = context\n var {\n params: {\n dataset: dataSetId,\n source: sourceAccessor,\n rawData: rawDataAccessor,\n data: dataAccessor,\n timestamp: timestampAccessor\n }\n } = step\n\n if (!dataSetId) {\n throw new Error(`no dataset found`)\n }\n\n // make new data-sample\n return await getDataSource().transaction(async tx => {\n const dataSet = await tx.getRepository(DataSet).findOne({\n where: {\n id: dataSetId\n }\n })\n\n var source = await access(sourceAccessor, data)\n var extractedData = await access(dataAccessor, data)\n var extractedRawData = rawDataAccessor && (await access(rawDataAccessor, data))\n var timestamp = timestampAccessor && (await access(timestampAccessor, data))\n\n const dataSample = await createDataSample(\n {\n dataSet,\n data: extractedData,\n rawData: extractedRawData,\n source,\n collectedAt: new Date(timestamp || new Date())\n },\n {\n t: i18next.t,\n state: {\n domain,\n user,\n lng,\n tx\n }\n }\n )\n\n return {\n data: dataSample\n }\n })\n}\n\nCreateDataSample.parameterSpec = [\n {\n type: 'entity-selector',\n name: 'dataset',\n label: 'data-set',\n property: {\n queryName: 'dataSets',\n valueKey: 'id'\n }\n },\n {\n type: 'string',\n name: 'source',\n label: 'source'\n },\n {\n type: 'string',\n name: 'rawData',\n label: 'raw-data'\n },\n {\n type: 'string',\n name: 'data',\n label: 'data'\n },\n {\n type: 'string',\n name: 'timestamp',\n label: 'timestamp'\n }\n]\n\nCreateDataSample.connectorFree = true\nCreateDataSample.help = 'dataset/task/create-data-sample'\n\nTaskRegistry.registerTaskHandler('create-data-sample', CreateDataSample)\n"]}
@@ -1,2 +0,0 @@
1
- import './create-data-sample.js';
2
- import './issue-collect-data.js';
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- require("./create-data-sample.js");
4
- require("./issue-collect-data.js");
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/engine/task/index.ts"],"names":[],"mappings":";;AAAA,mCAAgC;AAChC,mCAAgC","sourcesContent":["import './create-data-sample.js'\nimport './issue-collect-data.js'\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const integration_base_1 = require("@things-factory/integration-base");
5
- const issue_data_collection_task_js_1 = require("../../controllers/issue-data-collection-task.js");
6
- const i18next_1 = tslib_1.__importDefault(require("i18next"));
7
- async function IssueCollectData(step, context) {
8
- const { logger, data, domain, user, lng } = context;
9
- var { params: { dataset: dataSetId } } = step;
10
- if (!dataSetId) {
11
- throw new Error(`no dataset found`);
12
- }
13
- const activityInstance = await (0, issue_data_collection_task_js_1.issueDataCollectionTask)(domain.id, dataSetId, {
14
- t: i18next_1.default.t,
15
- state: {
16
- domain,
17
- user,
18
- lng,
19
- tx: undefined
20
- }
21
- });
22
- return {
23
- data: activityInstance
24
- };
25
- }
26
- IssueCollectData.parameterSpec = [
27
- {
28
- type: 'entity-selector',
29
- name: 'dataset',
30
- label: 'data-set',
31
- property: {
32
- queryName: 'dataSets',
33
- valueKey: 'id'
34
- }
35
- }
36
- ];
37
- IssueCollectData.connectorFree = true;
38
- IssueCollectData.help = 'dataset/task/issue-collect-data';
39
- integration_base_1.TaskRegistry.registerTaskHandler('issue-collect-data', IssueCollectData);
40
- //# sourceMappingURL=issue-collect-data.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"issue-collect-data.js","sourceRoot":"","sources":["../../../server/engine/task/issue-collect-data.ts"],"names":[],"mappings":";;;AAAA,uEAAmF;AACnF,mGAAyF;AACzF,8DAA6B;AAE7B,KAAK,UAAU,gBAAgB,CAAC,IAAe,EAAE,OAAgB;IAC/D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;IACnD,IAAI,EACF,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAC/B,GAAG,IAAI,CAAA;IAER,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,IAAA,uDAAuB,EAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE;QAC3E,CAAC,EAAE,iBAAO,CAAC,CAAC;QACZ,KAAK,EAAE;YACL,MAAM;YACN,IAAI;YACJ,GAAG;YACH,EAAE,EAAE,SAAS;SACd;KACF,CAAC,CAAA;IAEF,OAAO;QACL,IAAI,EAAE,gBAAgB;KACvB,CAAA;AACH,CAAC;AAED,gBAAgB,CAAC,aAAa,GAAG;IAC/B;QACE,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE;YACR,SAAS,EAAE,UAAU;YACrB,QAAQ,EAAE,IAAI;SACf;KACF;CACF,CAAA;AAED,gBAAgB,CAAC,aAAa,GAAG,IAAI,CAAA;AACrC,gBAAgB,CAAC,IAAI,GAAG,iCAAiC,CAAA;AAEzD,+BAAY,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAA","sourcesContent":["import { TaskRegistry, InputStep, Context } from '@things-factory/integration-base'\nimport { issueDataCollectionTask } from '../../controllers/issue-data-collection-task.js'\nimport i18next from 'i18next'\n\nasync function IssueCollectData(step: InputStep, context: Context) {\n const { logger, data, domain, user, lng } = context\n var {\n params: { dataset: dataSetId }\n } = step\n\n if (!dataSetId) {\n throw new Error(`no dataset found`)\n }\n\n const activityInstance = await issueDataCollectionTask(domain.id, dataSetId, {\n t: i18next.t,\n state: {\n domain,\n user,\n lng,\n tx: undefined\n }\n })\n\n return {\n data: activityInstance\n }\n}\n\nIssueCollectData.parameterSpec = [\n {\n type: 'entity-selector',\n name: 'dataset',\n label: 'data-set',\n property: {\n queryName: 'dataSets',\n valueKey: 'id'\n }\n }\n]\n\nIssueCollectData.connectorFree = true\nIssueCollectData.help = 'dataset/task/issue-collect-data'\n\nTaskRegistry.registerTaskHandler('issue-collect-data', IssueCollectData)\n"]}
@@ -1,6 +0,0 @@
1
- import './routes.js';
2
- import './activities/index.js';
3
- import './engine/index.js';
4
- export * from './controllers/index.js';
5
- export * from './service/index.js';
6
- export * from './service/data-spec/data-spec-manager.js';