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