@things-factory/dataset 10.1.248 → 10.1.249
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/dist-client/activities/activity-data-collect-edit.d.ts +26 -0
- package/dist-client/activities/activity-data-collect-edit.js +156 -0
- package/dist-client/activities/activity-data-collect-edit.js.map +1 -0
- package/dist-client/activities/activity-data-collect-view.d.ts +16 -0
- package/dist-client/activities/activity-data-collect-view.js +94 -0
- package/dist-client/activities/activity-data-collect-view.js.map +1 -0
- package/dist-client/activities/activity-data-review-edit.d.ts +20 -0
- package/dist-client/activities/activity-data-review-edit.js +300 -0
- package/dist-client/activities/activity-data-review-edit.js.map +1 -0
- package/dist-client/activities/activity-data-review-view.d.ts +16 -0
- package/dist-client/activities/activity-data-review-view.js +247 -0
- package/dist-client/activities/activity-data-review-view.js.map +1 -0
- package/dist-client/activities/activity-ooc-resolve-edit.d.ts +2 -0
- package/dist-client/activities/activity-ooc-resolve-edit.js +203 -0
- package/dist-client/activities/activity-ooc-resolve-edit.js.map +1 -0
- package/dist-client/activities/activity-ooc-resolve-view.d.ts +14 -0
- package/dist-client/activities/activity-ooc-resolve-view.js +154 -0
- package/dist-client/activities/activity-ooc-resolve-view.js.map +1 -0
- package/dist-client/activities/activity-ooc-review-edit.d.ts +3 -0
- package/dist-client/activities/activity-ooc-review-edit.js +197 -0
- package/dist-client/activities/activity-ooc-review-edit.js.map +1 -0
- package/dist-client/activities/activity-ooc-review-view.d.ts +1 -0
- package/dist-client/activities/activity-ooc-review-view.js +139 -0
- package/dist-client/activities/activity-ooc-review-view.js.map +1 -0
- package/dist-client/bootstrap.d.ts +10 -0
- package/dist-client/bootstrap.js +26 -0
- package/dist-client/bootstrap.js.map +1 -0
- package/dist-client/components/checklist-entry-form.d.ts +21 -0
- package/dist-client/components/checklist-entry-form.js +107 -0
- package/dist-client/components/checklist-entry-form.js.map +1 -0
- package/dist-client/components/data-entry-form.d.ts +21 -0
- package/dist-client/components/data-entry-form.js +107 -0
- package/dist-client/components/data-entry-form.js.map +1 -0
- package/dist-client/index.d.ts +1 -0
- package/dist-client/index.js +2 -0
- package/dist-client/index.js.map +1 -0
- package/dist-client/pages/data-archive/data-archive-list-page.d.ts +55 -0
- package/dist-client/pages/data-archive/data-archive-list-page.js +234 -0
- package/dist-client/pages/data-archive/data-archive-list-page.js.map +1 -0
- package/dist-client/pages/data-archive/data-archive-request-popup.d.ts +1 -0
- package/dist-client/pages/data-archive/data-archive-request-popup.js +160 -0
- package/dist-client/pages/data-archive/data-archive-request-popup.js.map +1 -0
- package/dist-client/pages/data-entry/data-entry-list-page.d.ts +31 -0
- package/dist-client/pages/data-entry/data-entry-list-page.js +383 -0
- package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -0
- package/dist-client/pages/data-key-set/data-key-item-list.d.ts +19 -0
- package/dist-client/pages/data-key-set/data-key-item-list.js +183 -0
- package/dist-client/pages/data-key-set/data-key-item-list.js.map +1 -0
- package/dist-client/pages/data-key-set/data-key-set-importer.d.ts +10 -0
- package/dist-client/pages/data-key-set/data-key-set-importer.js +93 -0
- package/dist-client/pages/data-key-set/data-key-set-importer.js.map +1 -0
- package/dist-client/pages/data-key-set/data-key-set-list-page.d.ts +56 -0
- package/dist-client/pages/data-key-set/data-key-set-list-page.js +335 -0
- package/dist-client/pages/data-key-set/data-key-set-list-page.js.map +1 -0
- package/dist-client/pages/data-ooc/data-ooc-list-page.d.ts +67 -0
- package/dist-client/pages/data-ooc/data-ooc-list-page.js +484 -0
- package/dist-client/pages/data-ooc/data-ooc-list-page.js.map +1 -0
- package/dist-client/pages/data-ooc/data-ooc-page.d.ts +18 -0
- package/dist-client/pages/data-ooc/data-ooc-page.js +166 -0
- package/dist-client/pages/data-ooc/data-ooc-page.js.map +1 -0
- package/dist-client/pages/data-ooc/data-ooc-view.d.ts +19 -0
- package/dist-client/pages/data-ooc/data-ooc-view.js +234 -0
- package/dist-client/pages/data-ooc/data-ooc-view.js.map +1 -0
- package/dist-client/pages/data-ooc/data-oocs-page.d.ts +18 -0
- package/dist-client/pages/data-ooc/data-oocs-page.js +198 -0
- package/dist-client/pages/data-ooc/data-oocs-page.js.map +1 -0
- package/dist-client/pages/data-report/data-report-embed-page.d.ts +36 -0
- package/dist-client/pages/data-report/data-report-embed-page.js +104 -0
- package/dist-client/pages/data-report/data-report-embed-page.js.map +1 -0
- package/dist-client/pages/data-report/data-report-list-page.d.ts +30 -0
- package/dist-client/pages/data-report/data-report-list-page.js +370 -0
- package/dist-client/pages/data-report/data-report-list-page.js.map +1 -0
- package/dist-client/pages/data-report/data-report-samples-page.d.ts +26 -0
- package/dist-client/pages/data-report/data-report-samples-page.js +151 -0
- package/dist-client/pages/data-report/data-report-samples-page.js.map +1 -0
- package/dist-client/pages/data-report/jasper-report-oocs-page.d.ts +2 -0
- package/dist-client/pages/data-report/jasper-report-oocs-page.js +104 -0
- package/dist-client/pages/data-report/jasper-report-oocs-page.js.map +1 -0
- package/dist-client/pages/data-report/jasper-report-samples-crosstab-page.d.ts +2 -0
- package/dist-client/pages/data-report/jasper-report-samples-crosstab-page.js +104 -0
- package/dist-client/pages/data-report/jasper-report-samples-crosstab-page.js.map +1 -0
- package/dist-client/pages/data-report/jasper-report-samples-page.d.ts +2 -0
- package/dist-client/pages/data-report/jasper-report-samples-page.js +104 -0
- package/dist-client/pages/data-report/jasper-report-samples-page.js.map +1 -0
- package/dist-client/pages/data-sample/data-sample-list-page.d.ts +62 -0
- package/dist-client/pages/data-sample/data-sample-list-page.js +372 -0
- package/dist-client/pages/data-sample/data-sample-list-page.js.map +1 -0
- package/dist-client/pages/data-sample/data-sample-page.d.ts +17 -0
- package/dist-client/pages/data-sample/data-sample-page.js +57 -0
- package/dist-client/pages/data-sample/data-sample-page.js.map +1 -0
- package/dist-client/pages/data-sample/data-sample-search-page.d.ts +51 -0
- package/dist-client/pages/data-sample/data-sample-search-page.js +364 -0
- package/dist-client/pages/data-sample/data-sample-search-page.js.map +1 -0
- package/dist-client/pages/data-sample/data-sample-view.d.ts +23 -0
- package/dist-client/pages/data-sample/data-sample-view.js +309 -0
- package/dist-client/pages/data-sample/data-sample-view.js.map +1 -0
- package/dist-client/pages/data-sample/data-samples-page.d.ts +21 -0
- package/dist-client/pages/data-sample/data-samples-page.js +247 -0
- package/dist-client/pages/data-sample/data-samples-page.js.map +1 -0
- package/dist-client/pages/data-sensor/data-sensor-list-page.d.ts +50 -0
- package/dist-client/pages/data-sensor/data-sensor-list-page.js +395 -0
- package/dist-client/pages/data-sensor/data-sensor-list-page.js.map +1 -0
- package/dist-client/pages/data-set/data-item-list.d.ts +1 -0
- package/dist-client/pages/data-set/data-item-list.js +321 -0
- package/dist-client/pages/data-set/data-item-list.js.map +1 -0
- package/dist-client/pages/data-set/data-set-importer.d.ts +11 -0
- package/dist-client/pages/data-set/data-set-importer.js +96 -0
- package/dist-client/pages/data-set/data-set-importer.js.map +1 -0
- package/dist-client/pages/data-set/data-set-list-page.d.ts +77 -0
- package/dist-client/pages/data-set/data-set-list-page.js +1065 -0
- package/dist-client/pages/data-set/data-set-list-page.js.map +1 -0
- package/dist-client/pages/data-summary/data-summary-list-page.d.ts +51 -0
- package/dist-client/pages/data-summary/data-summary-list-page.js +308 -0
- package/dist-client/pages/data-summary/data-summary-list-page.js.map +1 -0
- package/dist-client/pages/data-summary/data-summary-period-page.d.ts +73 -0
- package/dist-client/pages/data-summary/data-summary-period-page.js +413 -0
- package/dist-client/pages/data-summary/data-summary-period-page.js.map +1 -0
- package/dist-client/pages/data-summary/data-summary-search-page.d.ts +70 -0
- package/dist-client/pages/data-summary/data-summary-search-page.js +360 -0
- package/dist-client/pages/data-summary/data-summary-search-page.js.map +1 -0
- package/dist-client/pages/data-summary/data-summary-view.d.ts +1 -0
- package/dist-client/pages/data-summary/data-summary-view.js +114 -0
- package/dist-client/pages/data-summary/data-summary-view.js.map +1 -0
- package/dist-client/pages/sure-to.d.ts +1 -0
- package/dist-client/pages/sure-to.js +10 -0
- package/dist-client/pages/sure-to.js.map +1 -0
- package/dist-client/route.d.ts +1 -0
- package/dist-client/route.js +71 -0
- package/dist-client/route.js.map +1 -0
- package/dist-client/tsconfig.tsbuildinfo +1 -0
- package/dist-server/activities/activity-data-collect.d.ts +42 -0
- package/dist-server/activities/activity-data-collect.js +89 -0
- package/dist-server/activities/activity-data-collect.js.map +1 -0
- package/dist-server/activities/activity-data-review.d.ts +42 -0
- package/dist-server/activities/activity-data-review.js +101 -0
- package/dist-server/activities/activity-data-review.js.map +1 -0
- package/dist-server/activities/activity-ooc-resolve.d.ts +42 -0
- package/dist-server/activities/activity-ooc-resolve.js +110 -0
- package/dist-server/activities/activity-ooc-resolve.js.map +1 -0
- package/dist-server/activities/activity-ooc-review.d.ts +42 -0
- package/dist-server/activities/activity-ooc-review.js +91 -0
- package/dist-server/activities/activity-ooc-review.js.map +1 -0
- package/dist-server/activities/index.d.ts +1 -0
- package/dist-server/activities/index.js +11 -0
- package/dist-server/activities/index.js.map +1 -0
- package/dist-server/controllers/create-data-ooc.d.ts +4 -0
- package/dist-server/controllers/create-data-ooc.js +73 -0
- package/dist-server/controllers/create-data-ooc.js.map +1 -0
- package/dist-server/controllers/create-data-sample.d.ts +3 -0
- package/dist-server/controllers/create-data-sample.js +341 -0
- package/dist-server/controllers/create-data-sample.js.map +1 -0
- package/dist-server/controllers/data-use-case.d.ts +36 -0
- package/dist-server/controllers/data-use-case.js +62 -0
- package/dist-server/controllers/data-use-case.js.map +1 -0
- package/dist-server/controllers/finalize-data-collection.d.ts +4 -0
- package/dist-server/controllers/finalize-data-collection.js +354 -0
- package/dist-server/controllers/finalize-data-collection.js.map +1 -0
- package/dist-server/controllers/index.d.ts +6 -0
- package/dist-server/controllers/index.js +10 -0
- package/dist-server/controllers/index.js.map +1 -0
- package/dist-server/controllers/issue-data-collection-task.d.ts +2 -0
- package/dist-server/controllers/issue-data-collection-task.js +64 -0
- package/dist-server/controllers/issue-data-collection-task.js.map +1 -0
- package/dist-server/controllers/issue-ooc-resolve.d.ts +3 -0
- package/dist-server/controllers/issue-ooc-resolve.js +55 -0
- package/dist-server/controllers/issue-ooc-resolve.js.map +1 -0
- package/dist-server/controllers/issue-ooc-review.d.ts +3 -0
- package/dist-server/controllers/issue-ooc-review.js +52 -0
- package/dist-server/controllers/issue-ooc-review.js.map +1 -0
- package/dist-server/controllers/jasper-report.d.ts +1 -0
- package/dist-server/controllers/jasper-report.js +166 -0
- package/dist-server/controllers/jasper-report.js.map +1 -0
- package/dist-server/controllers/query-data-summary-by-period.d.ts +3 -0
- package/dist-server/controllers/query-data-summary-by-period.js +163 -0
- package/dist-server/controllers/query-data-summary-by-period.js.map +1 -0
- package/dist-server/controllers/shiny-report.d.ts +1 -0
- package/dist-server/controllers/shiny-report.js +40 -0
- package/dist-server/controllers/shiny-report.js.map +1 -0
- package/dist-server/engine/index.d.ts +1 -0
- package/dist-server/engine/index.js +4 -0
- package/dist-server/engine/index.js.map +1 -0
- package/dist-server/engine/task/create-data-sample.d.ts +1 -0
- package/dist-server/engine/task/create-data-sample.js +81 -0
- package/dist-server/engine/task/create-data-sample.js.map +1 -0
- package/dist-server/engine/task/index.d.ts +2 -0
- package/dist-server/engine/task/index.js +5 -0
- package/dist-server/engine/task/index.js.map +1 -0
- package/dist-server/engine/task/issue-collect-data.d.ts +1 -0
- package/dist-server/engine/task/issue-collect-data.js +40 -0
- package/dist-server/engine/task/issue-collect-data.js.map +1 -0
- package/dist-server/index.d.ts +6 -0
- package/dist-server/index.js +10 -0
- package/dist-server/index.js.map +1 -0
- package/dist-server/routes.d.ts +1 -0
- package/dist-server/routes.js +152 -0
- package/dist-server/routes.js.map +1 -0
- package/dist-server/service/data-archive/data-archive-mutation.d.ts +16 -0
- package/dist-server/service/data-archive/data-archive-mutation.js +278 -0
- package/dist-server/service/data-archive/data-archive-mutation.js.map +1 -0
- package/dist-server/service/data-archive/data-archive-query.d.ts +11 -0
- package/dist-server/service/data-archive/data-archive-query.js +97 -0
- package/dist-server/service/data-archive/data-archive-query.js.map +1 -0
- package/dist-server/service/data-archive/data-archive-type.d.ts +23 -0
- package/dist-server/service/data-archive/data-archive-type.js +77 -0
- package/dist-server/service/data-archive/data-archive-type.js.map +1 -0
- package/dist-server/service/data-archive/data-archive.d.ts +19 -0
- package/dist-server/service/data-archive/data-archive.js +84 -0
- package/dist-server/service/data-archive/data-archive.js.map +1 -0
- package/dist-server/service/data-archive/index.d.ts +5 -0
- package/dist-server/service/data-archive/index.js +9 -0
- package/dist-server/service/data-archive/index.js.map +1 -0
- package/dist-server/service/data-key-set/data-key-item-type.d.ts +12 -0
- package/dist-server/service/data-key-set/data-key-item-type.js +52 -0
- package/dist-server/service/data-key-set/data-key-item-type.js.map +1 -0
- package/dist-server/service/data-key-set/data-key-set-mutation.d.ts +10 -0
- package/dist-server/service/data-key-set/data-key-set-mutation.js +203 -0
- package/dist-server/service/data-key-set/data-key-set-mutation.js.map +1 -0
- package/dist-server/service/data-key-set/data-key-set-query.d.ts +12 -0
- package/dist-server/service/data-key-set/data-key-set-query.js +117 -0
- package/dist-server/service/data-key-set/data-key-set-query.js.map +1 -0
- package/dist-server/service/data-key-set/data-key-set-type.d.ts +28 -0
- package/dist-server/service/data-key-set/data-key-set-type.js +106 -0
- package/dist-server/service/data-key-set/data-key-set-type.js.map +1 -0
- package/dist-server/service/data-key-set/data-key-set.d.ts +22 -0
- package/dist-server/service/data-key-set/data-key-set.js +104 -0
- package/dist-server/service/data-key-set/data-key-set.js.map +1 -0
- package/dist-server/service/data-key-set/index.d.ts +5 -0
- package/dist-server/service/data-key-set/index.js +9 -0
- package/dist-server/service/data-key-set/index.js.map +1 -0
- package/dist-server/service/data-ooc/data-ooc-mutation.d.ts +6 -0
- package/dist-server/service/data-ooc/data-ooc-mutation.js +96 -0
- package/dist-server/service/data-ooc/data-ooc-mutation.js.map +1 -0
- package/dist-server/service/data-ooc/data-ooc-query.d.ts +23 -0
- package/dist-server/service/data-ooc/data-ooc-query.js +209 -0
- package/dist-server/service/data-ooc/data-ooc-query.js.map +1 -0
- package/dist-server/service/data-ooc/data-ooc-subscription.d.ts +12 -0
- package/dist-server/service/data-ooc/data-ooc-subscription.js +64 -0
- package/dist-server/service/data-ooc/data-ooc-subscription.js.map +1 -0
- package/dist-server/service/data-ooc/data-ooc-type.d.ts +27 -0
- package/dist-server/service/data-ooc/data-ooc-type.js +111 -0
- package/dist-server/service/data-ooc/data-ooc-type.js.map +1 -0
- package/dist-server/service/data-ooc/data-ooc.d.ts +63 -0
- package/dist-server/service/data-ooc/data-ooc.js +310 -0
- package/dist-server/service/data-ooc/data-ooc.js.map +1 -0
- package/dist-server/service/data-ooc/index.d.ts +6 -0
- package/dist-server/service/data-ooc/index.js +10 -0
- package/dist-server/service/data-ooc/index.js.map +1 -0
- package/dist-server/service/data-sample/data-sample-mutation.d.ts +5 -0
- package/dist-server/service/data-sample/data-sample-mutation.js +30 -0
- package/dist-server/service/data-sample/data-sample-mutation.js.map +1 -0
- package/dist-server/service/data-sample/data-sample-query.d.ts +22 -0
- package/dist-server/service/data-sample/data-sample-query.js +274 -0
- package/dist-server/service/data-sample/data-sample-query.js.map +1 -0
- package/dist-server/service/data-sample/data-sample-type.d.ts +18 -0
- package/dist-server/service/data-sample/data-sample-type.js +68 -0
- package/dist-server/service/data-sample/data-sample-type.js.map +1 -0
- package/dist-server/service/data-sample/data-sample.d.ts +45 -0
- package/dist-server/service/data-sample/data-sample.js +226 -0
- package/dist-server/service/data-sample/data-sample.js.map +1 -0
- package/dist-server/service/data-sample/index.d.ts +5 -0
- package/dist-server/service/data-sample/index.js +9 -0
- package/dist-server/service/data-sample/index.js.map +1 -0
- package/dist-server/service/data-sensor/data-sensor-mutation.d.ts +9 -0
- package/dist-server/service/data-sensor/data-sensor-mutation.js +137 -0
- package/dist-server/service/data-sensor/data-sensor-mutation.js.map +1 -0
- package/dist-server/service/data-sensor/data-sensor-query.d.ts +16 -0
- package/dist-server/service/data-sensor/data-sensor-query.js +137 -0
- package/dist-server/service/data-sensor/data-sensor-query.js.map +1 -0
- package/dist-server/service/data-sensor/data-sensor-type.d.ts +42 -0
- package/dist-server/service/data-sensor/data-sensor-type.js +162 -0
- package/dist-server/service/data-sensor/data-sensor-type.js.map +1 -0
- package/dist-server/service/data-sensor/data-sensor.d.ts +33 -0
- package/dist-server/service/data-sensor/data-sensor.js +160 -0
- package/dist-server/service/data-sensor/data-sensor.js.map +1 -0
- package/dist-server/service/data-sensor/index.d.ts +5 -0
- package/dist-server/service/data-sensor/index.js +9 -0
- package/dist-server/service/data-sensor/index.js.map +1 -0
- package/dist-server/service/data-set/data-item-type.d.ts +321 -0
- package/dist-server/service/data-set/data-item-type.js +458 -0
- package/dist-server/service/data-set/data-item-type.js.map +1 -0
- package/dist-server/service/data-set/data-set-mutation.d.ts +20 -0
- package/dist-server/service/data-set/data-set-mutation.js +551 -0
- package/dist-server/service/data-set/data-set-mutation.js.map +1 -0
- package/dist-server/service/data-set/data-set-query.d.ts +39 -0
- package/dist-server/service/data-set/data-set-query.js +565 -0
- package/dist-server/service/data-set/data-set-query.js.map +1 -0
- package/dist-server/service/data-set/data-set-type.d.ts +75 -0
- package/dist-server/service/data-set/data-set-type.js +276 -0
- package/dist-server/service/data-set/data-set-type.js.map +1 -0
- package/dist-server/service/data-set/data-set.d.ts +96 -0
- package/dist-server/service/data-set/data-set.js +380 -0
- package/dist-server/service/data-set/data-set.js.map +1 -0
- package/dist-server/service/data-set/index.d.ts +5 -0
- package/dist-server/service/data-set/index.js +9 -0
- package/dist-server/service/data-set/index.js.map +1 -0
- package/dist-server/service/data-set-history/data-set-history-query.d.ts +21 -0
- package/dist-server/service/data-set-history/data-set-history-query.js +183 -0
- package/dist-server/service/data-set-history/data-set-history-query.js.map +1 -0
- package/dist-server/service/data-set-history/data-set-history-type.d.ts +5 -0
- package/dist-server/service/data-set-history/data-set-history-type.js +21 -0
- package/dist-server/service/data-set-history/data-set-history-type.js.map +1 -0
- package/dist-server/service/data-set-history/data-set-history.d.ts +53 -0
- package/dist-server/service/data-set-history/data-set-history.js +265 -0
- package/dist-server/service/data-set-history/data-set-history.js.map +1 -0
- package/dist-server/service/data-set-history/event-subscriber.d.ts +7 -0
- package/dist-server/service/data-set-history/event-subscriber.js +21 -0
- package/dist-server/service/data-set-history/event-subscriber.js.map +1 -0
- package/dist-server/service/data-set-history/index.d.ts +6 -0
- package/dist-server/service/data-set-history/index.js +10 -0
- package/dist-server/service/data-set-history/index.js.map +1 -0
- package/dist-server/service/data-spec/data-spec-manager.d.ts +10 -0
- package/dist-server/service/data-spec/data-spec-manager.js +20 -0
- package/dist-server/service/data-spec/data-spec-manager.js.map +1 -0
- package/dist-server/service/data-spec/data-spec-query.d.ts +5 -0
- package/dist-server/service/data-spec/data-spec-query.js +37 -0
- package/dist-server/service/data-spec/data-spec-query.js.map +1 -0
- package/dist-server/service/data-spec/data-spec.d.ts +19 -0
- package/dist-server/service/data-spec/data-spec.js +79 -0
- package/dist-server/service/data-spec/data-spec.js.map +1 -0
- package/dist-server/service/data-spec/index.d.ts +4 -0
- package/dist-server/service/data-spec/index.js +8 -0
- package/dist-server/service/data-spec/index.js.map +1 -0
- package/dist-server/service/data-summary/data-summary-mutation.d.ts +6 -0
- package/dist-server/service/data-summary/data-summary-mutation.js +76 -0
- package/dist-server/service/data-summary/data-summary-mutation.js.map +1 -0
- package/dist-server/service/data-summary/data-summary-query.d.ts +19 -0
- package/dist-server/service/data-summary/data-summary-query.js +237 -0
- package/dist-server/service/data-summary/data-summary-query.js.map +1 -0
- package/dist-server/service/data-summary/data-summary-type.d.ts +33 -0
- package/dist-server/service/data-summary/data-summary-type.js +139 -0
- package/dist-server/service/data-summary/data-summary-type.js.map +1 -0
- package/dist-server/service/data-summary/data-summary.d.ts +38 -0
- package/dist-server/service/data-summary/data-summary.js +202 -0
- package/dist-server/service/data-summary/data-summary.js.map +1 -0
- package/dist-server/service/data-summary/index.d.ts +6 -0
- package/dist-server/service/data-summary/index.js +10 -0
- package/dist-server/service/data-summary/index.js.map +1 -0
- package/dist-server/service/index.d.ts +14 -0
- package/dist-server/service/index.js +54 -0
- package/dist-server/service/index.js.map +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -0
- package/dist-server/utils/config-resolver.d.ts +1 -0
- package/dist-server/utils/config-resolver.js +32 -0
- package/dist-server/utils/config-resolver.js.map +1 -0
- package/dist-server/utils/index.d.ts +2 -0
- package/dist-server/utils/index.js +6 -0
- package/dist-server/utils/index.js.map +1 -0
- package/dist-server/utils/media-validation.d.ts +51 -0
- package/dist-server/utils/media-validation.js +148 -0
- package/dist-server/utils/media-validation.js.map +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DataSampleQuery = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const typeorm_1 = require("typeorm");
|
|
6
|
+
const type_graphql_1 = require("type-graphql");
|
|
7
|
+
const auth_base_1 = require("@things-factory/auth-base");
|
|
8
|
+
const shell_1 = require("@things-factory/shell");
|
|
9
|
+
const worklist_1 = require("@things-factory/worklist");
|
|
10
|
+
const data_key_set_js_1 = require("../data-key-set/data-key-set.js");
|
|
11
|
+
const data_set_history_js_1 = require("../data-set-history/data-set-history.js");
|
|
12
|
+
const data_item_type_js_1 = require("../data-set/data-item-type.js");
|
|
13
|
+
const data_set_js_1 = require("../data-set/data-set.js");
|
|
14
|
+
const data_ooc_js_1 = require("../data-ooc/data-ooc.js");
|
|
15
|
+
const data_sample_js_1 = require("./data-sample.js");
|
|
16
|
+
const data_sample_type_js_1 = require("./data-sample-type.js");
|
|
17
|
+
let DataSampleQuery = class DataSampleQuery {
|
|
18
|
+
async dataSample(id, context) {
|
|
19
|
+
const { domain } = context.state;
|
|
20
|
+
const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
|
|
21
|
+
return await (0, shell_1.getRepository)(data_sample_js_1.DataSample).findOne({
|
|
22
|
+
where: { domain: { id: (0, typeorm_1.In)(domainIds) }, id }
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
async dataSamples(params, context) {
|
|
26
|
+
const { domain } = context.state;
|
|
27
|
+
const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
|
|
28
|
+
const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
|
|
29
|
+
repository: (0, shell_1.getRepository)(data_sample_js_1.DataSample),
|
|
30
|
+
params,
|
|
31
|
+
domain: undefined,
|
|
32
|
+
searchables: ['name', 'description']
|
|
33
|
+
});
|
|
34
|
+
queryBuilder.andWhere(`${queryBuilder.alias}.domain IN (:...ancestorDomainIds)`, {
|
|
35
|
+
ancestorDomainIds: domainIds
|
|
36
|
+
});
|
|
37
|
+
const [items, total] = await queryBuilder.getManyAndCount();
|
|
38
|
+
return { items, total };
|
|
39
|
+
}
|
|
40
|
+
async dataSamplesByDataSet(dataSetId, params, context) {
|
|
41
|
+
const { domain } = context.state;
|
|
42
|
+
const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
|
|
43
|
+
const dataSet = await (0, shell_1.getRepository)(data_set_js_1.DataSet).findOne({
|
|
44
|
+
where: { domain: { id: (0, typeorm_1.In)(domainIds) }, id: dataSetId },
|
|
45
|
+
relations: ['dataKeySet']
|
|
46
|
+
});
|
|
47
|
+
if (!dataSet) {
|
|
48
|
+
throw new Error(`dataSet not found by the given dataSetId(${dataSetId})`);
|
|
49
|
+
}
|
|
50
|
+
const dataKeyItems = dataSet.dataKeySet?.dataKeyItems || [];
|
|
51
|
+
const searchables = dataKeyItems.map((item, index) => `key0${index + 1}`);
|
|
52
|
+
const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
|
|
53
|
+
repository: (0, shell_1.getRepository)(data_sample_js_1.DataSample),
|
|
54
|
+
params,
|
|
55
|
+
domain: undefined,
|
|
56
|
+
alias: 'sample',
|
|
57
|
+
searchables: ['name', 'description'].concat(searchables)
|
|
58
|
+
})
|
|
59
|
+
.andWhere('sample.domain IN (:...ancestorDomainIds)', { ancestorDomainIds: domainIds })
|
|
60
|
+
.innerJoin('sample.dataSet', 'ds', 'ds.id = :dataSetId', { dataSetId });
|
|
61
|
+
const [items, total] = await queryBuilder.getManyAndCount();
|
|
62
|
+
return { items, total };
|
|
63
|
+
}
|
|
64
|
+
async dataSamplesByDataKeySet(dataKeySetId, params, context) {
|
|
65
|
+
const { domain } = context.state;
|
|
66
|
+
const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
|
|
67
|
+
const dataKeySet = await (0, shell_1.getRepository)(data_key_set_js_1.DataKeySet).findOneBy({ id: dataKeySetId });
|
|
68
|
+
const dataKeyItems = dataKeySet?.dataKeyItems || [];
|
|
69
|
+
const searchables = dataKeyItems.map((item, index) => `key0${index + 1}`);
|
|
70
|
+
const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
|
|
71
|
+
repository: (0, shell_1.getRepository)(data_sample_js_1.DataSample),
|
|
72
|
+
params,
|
|
73
|
+
domain: undefined,
|
|
74
|
+
alias: 'sample',
|
|
75
|
+
searchables: ['name', 'description'].concat(searchables)
|
|
76
|
+
})
|
|
77
|
+
.andWhere('sample.domain IN (:...ancestorDomainIds)', { ancestorDomainIds: domainIds })
|
|
78
|
+
.innerJoin('sample.dataSet', 'ds', 'ds.dataKeySet = :dataKeySetId', { dataKeySetId });
|
|
79
|
+
const [items, total] = await queryBuilder.getManyAndCount();
|
|
80
|
+
return { items, total };
|
|
81
|
+
}
|
|
82
|
+
async dataSamplesByPeriod(period, dataSetName, params, context) {
|
|
83
|
+
const { domain } = context.state;
|
|
84
|
+
const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
|
|
85
|
+
const { date, month } = params.filters.reduce((acc, filter) => {
|
|
86
|
+
if (filter.name === 'date')
|
|
87
|
+
acc.date = filter.value;
|
|
88
|
+
if (filter.name === 'month')
|
|
89
|
+
acc.month = filter.value;
|
|
90
|
+
return acc;
|
|
91
|
+
}, { date: null, month: null });
|
|
92
|
+
const { from, to } = await (0, shell_1.getISOStringsForPeriod)(period, { date, month }, context);
|
|
93
|
+
const dataSet = await (0, shell_1.getRepository)(data_set_js_1.DataSet).findOne({
|
|
94
|
+
where: { domain: { id: (0, typeorm_1.In)(domainIds) }, name: dataSetName },
|
|
95
|
+
relations: ['dataKeySet']
|
|
96
|
+
});
|
|
97
|
+
if (!dataSet) {
|
|
98
|
+
throw new Error(`dataSet not found by the given dataSetName(${dataSetName})`);
|
|
99
|
+
}
|
|
100
|
+
const { filters = [] } = params || {};
|
|
101
|
+
const alteredFilters = filters.concat([
|
|
102
|
+
{
|
|
103
|
+
name: 'collectedAt',
|
|
104
|
+
operator: 'between',
|
|
105
|
+
value: [from, to]
|
|
106
|
+
}
|
|
107
|
+
]);
|
|
108
|
+
const dataKeyItems = dataSet.dataKeySet?.dataKeyItems || [];
|
|
109
|
+
const searchables = dataKeyItems.map((item, index) => `key0${index + 1}`);
|
|
110
|
+
const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
|
|
111
|
+
repository: (0, shell_1.getRepository)(data_sample_js_1.DataSample),
|
|
112
|
+
params: {
|
|
113
|
+
...params,
|
|
114
|
+
filters: alteredFilters
|
|
115
|
+
},
|
|
116
|
+
domain: undefined,
|
|
117
|
+
alias: 'sample',
|
|
118
|
+
searchables: ['name', 'description'].concat(searchables)
|
|
119
|
+
})
|
|
120
|
+
.andWhere('sample.domain IN (:...ancestorDomainIds)', { ancestorDomainIds: domainIds })
|
|
121
|
+
.innerJoin('sample.dataSet', 'ds', 'ds.id = :dataSetId', { dataSetId: dataSet.id });
|
|
122
|
+
const [items, total] = await queryBuilder.getManyAndCount();
|
|
123
|
+
return { items, total };
|
|
124
|
+
}
|
|
125
|
+
async dataItems(dataSample) {
|
|
126
|
+
const dataSetHistory = dataSample.dataSetId &&
|
|
127
|
+
(await (0, shell_1.getRepository)(data_set_history_js_1.DataSetHistory).findOne({
|
|
128
|
+
where: {
|
|
129
|
+
originalId: dataSample.dataSetId,
|
|
130
|
+
version: dataSample.dataSetVersion
|
|
131
|
+
}
|
|
132
|
+
}));
|
|
133
|
+
return dataSetHistory?.dataItems.filter(item => item.active) || [];
|
|
134
|
+
}
|
|
135
|
+
async dataSet(dataSample) {
|
|
136
|
+
return dataSample.dataSetId && (await (0, shell_1.getRepository)(data_set_js_1.DataSet).findOneBy({ id: dataSample.dataSetId }));
|
|
137
|
+
}
|
|
138
|
+
async dataOoc(dataSample) {
|
|
139
|
+
if (dataSample.ooc || dataSample.oos) {
|
|
140
|
+
return await (0, shell_1.getRepository)(data_ooc_js_1.DataOoc).findOneBy({ dataSample: { id: dataSample.id } });
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
async reviewActivityInstance(dataSample) {
|
|
144
|
+
return (dataSample.reviewActivityInstanceId &&
|
|
145
|
+
(await (0, shell_1.getRepository)(worklist_1.ActivityInstance).findOneBy({ id: dataSample.reviewActivityInstanceId })));
|
|
146
|
+
}
|
|
147
|
+
async domain(dataSample) {
|
|
148
|
+
return dataSample.domainId && (await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({ id: dataSample.domainId }));
|
|
149
|
+
}
|
|
150
|
+
async updater(dataSample) {
|
|
151
|
+
return dataSample.updaterId && (await (0, shell_1.getRepository)(auth_base_1.User).findOneBy({ id: dataSample.updaterId }));
|
|
152
|
+
}
|
|
153
|
+
async creator(dataSample) {
|
|
154
|
+
return dataSample.creatorId && (await (0, shell_1.getRepository)(auth_base_1.User).findOneBy({ id: dataSample.creatorId }));
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
exports.DataSampleQuery = DataSampleQuery;
|
|
158
|
+
tslib_1.__decorate([
|
|
159
|
+
(0, type_graphql_1.Directive)('@privilege(category: "data-sample", privilege: "query", domainOwnerGranted: true)'),
|
|
160
|
+
(0, type_graphql_1.Query)(returns => data_sample_js_1.DataSample, {
|
|
161
|
+
description: 'Retrieves a single data sample by its unique identifier. This query fetches detailed information about a specific data sample including its values, metadata, collection timestamp, and associated dataset information.'
|
|
162
|
+
}),
|
|
163
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
|
|
164
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
165
|
+
tslib_1.__metadata("design:type", Function),
|
|
166
|
+
tslib_1.__metadata("design:paramtypes", [String, Object]),
|
|
167
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
168
|
+
], DataSampleQuery.prototype, "dataSample", null);
|
|
169
|
+
tslib_1.__decorate([
|
|
170
|
+
(0, type_graphql_1.Directive)('@privilege(category: "data-sample", privilege: "query", domainOwnerGranted: true)'),
|
|
171
|
+
(0, type_graphql_1.Query)(returns => data_sample_type_js_1.DataSampleList, {
|
|
172
|
+
description: 'Retrieves multiple data samples with pagination and filtering support. This query allows searching samples by name and description, and is used for listing and browsing collected data samples across all datasets.'
|
|
173
|
+
}),
|
|
174
|
+
tslib_1.__param(0, (0, type_graphql_1.Args)(type => shell_1.ListParam)),
|
|
175
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
176
|
+
tslib_1.__metadata("design:type", Function),
|
|
177
|
+
tslib_1.__metadata("design:paramtypes", [shell_1.ListParam, Object]),
|
|
178
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
179
|
+
], DataSampleQuery.prototype, "dataSamples", null);
|
|
180
|
+
tslib_1.__decorate([
|
|
181
|
+
(0, type_graphql_1.Directive)('@privilege(category: "data-sample", privilege: "query", domainOwnerGranted: true)'),
|
|
182
|
+
(0, type_graphql_1.Query)(returns => data_sample_type_js_1.DataSampleList, {
|
|
183
|
+
description: "Retrieves data samples that belong to a specific dataset. This query filters samples by dataset ID and includes searchable fields based on the dataset's key configuration, allowing for targeted data analysis within a particular dataset context."
|
|
184
|
+
}),
|
|
185
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('dataSetId')),
|
|
186
|
+
tslib_1.__param(1, (0, type_graphql_1.Args)(type => shell_1.ListParam)),
|
|
187
|
+
tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
|
|
188
|
+
tslib_1.__metadata("design:type", Function),
|
|
189
|
+
tslib_1.__metadata("design:paramtypes", [String, shell_1.ListParam, Object]),
|
|
190
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
191
|
+
], DataSampleQuery.prototype, "dataSamplesByDataSet", null);
|
|
192
|
+
tslib_1.__decorate([
|
|
193
|
+
(0, type_graphql_1.Directive)('@privilege(category: "data-sample", privilege: "query", domainOwnerGranted: true)'),
|
|
194
|
+
(0, type_graphql_1.Query)(returns => data_sample_type_js_1.DataSampleList, {
|
|
195
|
+
description: 'Retrieves data samples that belong to datasets using a specific data key set. This query filters samples by key set ID and enables cross-dataset analysis based on shared key configurations, useful for comparing data across related datasets.'
|
|
196
|
+
}),
|
|
197
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('dataKeySetId')),
|
|
198
|
+
tslib_1.__param(1, (0, type_graphql_1.Args)(type => shell_1.ListParam)),
|
|
199
|
+
tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
|
|
200
|
+
tslib_1.__metadata("design:type", Function),
|
|
201
|
+
tslib_1.__metadata("design:paramtypes", [String, shell_1.ListParam, Object]),
|
|
202
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
203
|
+
], DataSampleQuery.prototype, "dataSamplesByDataKeySet", null);
|
|
204
|
+
tslib_1.__decorate([
|
|
205
|
+
(0, type_graphql_1.Query)(returns => data_sample_type_js_1.DataSampleList, {
|
|
206
|
+
description: 'Retrieves data samples within a specified time period for a given dataset. This query supports various period options (today, this month, 30 days, etc.) and is essential for time-based data analysis, trend monitoring, and historical data review.'
|
|
207
|
+
}),
|
|
208
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('period')),
|
|
209
|
+
tslib_1.__param(1, (0, type_graphql_1.Arg)('dataSetName')),
|
|
210
|
+
tslib_1.__param(2, (0, type_graphql_1.Args)(type => shell_1.ListParam)),
|
|
211
|
+
tslib_1.__param(3, (0, type_graphql_1.Ctx)()),
|
|
212
|
+
tslib_1.__metadata("design:type", Function),
|
|
213
|
+
tslib_1.__metadata("design:paramtypes", [String, String, shell_1.ListParam, Object]),
|
|
214
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
215
|
+
], DataSampleQuery.prototype, "dataSamplesByPeriod", null);
|
|
216
|
+
tslib_1.__decorate([
|
|
217
|
+
(0, type_graphql_1.FieldResolver)(type => [data_item_type_js_1.DataItem], {
|
|
218
|
+
description: 'Retrieves the data items (field definitions) associated with this data sample. These items define the structure and validation rules for the sample data, including field names, types, and constraints.'
|
|
219
|
+
}),
|
|
220
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
221
|
+
tslib_1.__metadata("design:type", Function),
|
|
222
|
+
tslib_1.__metadata("design:paramtypes", [data_sample_js_1.DataSample]),
|
|
223
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
224
|
+
], DataSampleQuery.prototype, "dataItems", null);
|
|
225
|
+
tslib_1.__decorate([
|
|
226
|
+
(0, type_graphql_1.FieldResolver)(type => data_set_js_1.DataSet, {
|
|
227
|
+
description: 'Retrieves the dataset that this data sample belongs to. This field resolver provides access to the dataset configuration, metadata, and settings associated with the sample.'
|
|
228
|
+
}),
|
|
229
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
230
|
+
tslib_1.__metadata("design:type", Function),
|
|
231
|
+
tslib_1.__metadata("design:paramtypes", [data_sample_js_1.DataSample]),
|
|
232
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
233
|
+
], DataSampleQuery.prototype, "dataSet", null);
|
|
234
|
+
tslib_1.__decorate([
|
|
235
|
+
(0, type_graphql_1.FieldResolver)(type => data_ooc_js_1.DataOoc, {
|
|
236
|
+
description: 'Retrieves the out-of-control (OOC) record associated with this data sample, if it exists. This field resolver is used when the sample has been flagged as out of control or out of specification, providing access to the corrective action workflow.'
|
|
237
|
+
}),
|
|
238
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
239
|
+
tslib_1.__metadata("design:type", Function),
|
|
240
|
+
tslib_1.__metadata("design:paramtypes", [data_sample_js_1.DataSample]),
|
|
241
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
242
|
+
], DataSampleQuery.prototype, "dataOoc", null);
|
|
243
|
+
tslib_1.__decorate([
|
|
244
|
+
(0, type_graphql_1.FieldResolver)(type => worklist_1.ActivityInstance),
|
|
245
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
246
|
+
tslib_1.__metadata("design:type", Function),
|
|
247
|
+
tslib_1.__metadata("design:paramtypes", [data_sample_js_1.DataSample]),
|
|
248
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
249
|
+
], DataSampleQuery.prototype, "reviewActivityInstance", null);
|
|
250
|
+
tslib_1.__decorate([
|
|
251
|
+
(0, type_graphql_1.FieldResolver)(type => shell_1.Domain),
|
|
252
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
253
|
+
tslib_1.__metadata("design:type", Function),
|
|
254
|
+
tslib_1.__metadata("design:paramtypes", [data_sample_js_1.DataSample]),
|
|
255
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
256
|
+
], DataSampleQuery.prototype, "domain", null);
|
|
257
|
+
tslib_1.__decorate([
|
|
258
|
+
(0, type_graphql_1.FieldResolver)(type => auth_base_1.User),
|
|
259
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
260
|
+
tslib_1.__metadata("design:type", Function),
|
|
261
|
+
tslib_1.__metadata("design:paramtypes", [data_sample_js_1.DataSample]),
|
|
262
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
263
|
+
], DataSampleQuery.prototype, "updater", null);
|
|
264
|
+
tslib_1.__decorate([
|
|
265
|
+
(0, type_graphql_1.FieldResolver)(type => auth_base_1.User),
|
|
266
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
267
|
+
tslib_1.__metadata("design:type", Function),
|
|
268
|
+
tslib_1.__metadata("design:paramtypes", [data_sample_js_1.DataSample]),
|
|
269
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
270
|
+
], DataSampleQuery.prototype, "creator", null);
|
|
271
|
+
exports.DataSampleQuery = DataSampleQuery = tslib_1.__decorate([
|
|
272
|
+
(0, type_graphql_1.Resolver)(data_sample_js_1.DataSample)
|
|
273
|
+
], DataSampleQuery);
|
|
274
|
+
//# sourceMappingURL=data-sample-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-sample-query.js","sourceRoot":"","sources":["../../../server/service/data-sample/data-sample-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { In } from 'typeorm'\nimport { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\n\nimport { User } from '@things-factory/auth-base'\nimport {\n Domain,\n getQueryBuilderFromListParams,\n getRepository,\n getISOStringsForPeriod,\n ListParam,\n getDomainIdsWithAncestors\n} from '@things-factory/shell'\nimport { ActivityInstance } from '@things-factory/worklist'\n\nimport { DataKeySet } from '../data-key-set/data-key-set.js'\nimport { DataSetHistory } from '../data-set-history/data-set-history.js'\nimport { DataItem } from '../data-set/data-item-type.js'\nimport { DataSet } from '../data-set/data-set.js'\nimport { DataOoc } from '../data-ooc/data-ooc.js'\nimport { DataSample } from './data-sample.js'\nimport { DataSampleList } from './data-sample-type.js'\n\n@Resolver(DataSample)\nexport class DataSampleQuery {\n @Directive('@privilege(category: \"data-sample\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => DataSample, {\n description:\n 'Retrieves a single data sample by its unique identifier. This query fetches detailed information about a specific data sample including its values, metadata, collection timestamp, and associated dataset information.'\n })\n async dataSample(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<DataSample> {\n const { domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n return await getRepository(DataSample).findOne({\n where: { domain: { id: In(domainIds) }, id }\n })\n }\n\n @Directive('@privilege(category: \"data-sample\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => DataSampleList, {\n description:\n 'Retrieves multiple data samples with pagination and filtering support. This query allows searching samples by name and description, and is used for listing and browsing collected data samples across all datasets.'\n })\n async dataSamples(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<DataSampleList> {\n const { domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(DataSample),\n params,\n domain: undefined,\n searchables: ['name', 'description']\n })\n\n queryBuilder.andWhere(`${queryBuilder.alias}.domain IN (:...ancestorDomainIds)`, {\n ancestorDomainIds: domainIds\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"data-sample\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => DataSampleList, {\n description:\n \"Retrieves data samples that belong to a specific dataset. This query filters samples by dataset ID and includes searchable fields based on the dataset's key configuration, allowing for targeted data analysis within a particular dataset context.\"\n })\n async dataSamplesByDataSet(\n @Arg('dataSetId') dataSetId: string,\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<DataSampleList> {\n const { domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n const dataSet = await getRepository(DataSet).findOne({\n where: { domain: { id: In(domainIds) }, id: dataSetId },\n relations: ['dataKeySet']\n })\n\n if (!dataSet) {\n throw new Error(`dataSet not found by the given dataSetId(${dataSetId})`)\n }\n\n const dataKeyItems = dataSet.dataKeySet?.dataKeyItems || []\n const searchables = dataKeyItems.map((item, index) => `key0${index + 1}`)\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(DataSample),\n params,\n domain: undefined,\n alias: 'sample',\n searchables: ['name', 'description'].concat(searchables)\n })\n .andWhere('sample.domain IN (:...ancestorDomainIds)', { ancestorDomainIds: domainIds })\n .innerJoin('sample.dataSet', 'ds', 'ds.id = :dataSetId', { dataSetId })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"data-sample\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => DataSampleList, {\n description:\n 'Retrieves data samples that belong to datasets using a specific data key set. This query filters samples by key set ID and enables cross-dataset analysis based on shared key configurations, useful for comparing data across related datasets.'\n })\n async dataSamplesByDataKeySet(\n @Arg('dataKeySetId') dataKeySetId: string,\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<DataSampleList> {\n const { domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n const dataKeySet = await getRepository(DataKeySet).findOneBy({ id: dataKeySetId })\n const dataKeyItems = dataKeySet?.dataKeyItems || []\n const searchables = dataKeyItems.map((item, index) => `key0${index + 1}`)\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(DataSample),\n params,\n domain: undefined,\n alias: 'sample',\n searchables: ['name', 'description'].concat(searchables)\n })\n .andWhere('sample.domain IN (:...ancestorDomainIds)', { ancestorDomainIds: domainIds })\n .innerJoin('sample.dataSet', 'ds', 'ds.dataKeySet = :dataKeySetId', { dataKeySetId })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Query(returns => DataSampleList, {\n description:\n 'Retrieves data samples within a specified time period for a given dataset. This query supports various period options (today, this month, 30 days, etc.) and is essential for time-based data analysis, trend monitoring, and historical data review.'\n })\n async dataSamplesByPeriod(\n @Arg('period') period: 'today' | 'this month' | '30 days' | 'this year' | '12 months' | 'date range' | 'month',\n @Arg('dataSetName') dataSetName: string,\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<DataSampleList> {\n const { domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\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 getISOStringsForPeriod(period, { date, month }, context)\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(`dataSet not found by the given dataSetName(${dataSetName})`)\n }\n\n const { filters = [] } = params || {}\n const alteredFilters = filters.concat([\n {\n name: 'collectedAt',\n operator: 'between',\n value: [from, to]\n }\n ])\n\n const dataKeyItems = dataSet.dataKeySet?.dataKeyItems || []\n const searchables = dataKeyItems.map((item, index) => `key0${index + 1}`)\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(DataSample),\n params: {\n ...params,\n filters: alteredFilters\n },\n domain: undefined,\n alias: 'sample',\n searchables: ['name', 'description'].concat(searchables)\n })\n .andWhere('sample.domain IN (:...ancestorDomainIds)', { ancestorDomainIds: domainIds })\n .innerJoin('sample.dataSet', 'ds', 'ds.id = :dataSetId', { dataSetId: dataSet.id })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => [DataItem], {\n description:\n 'Retrieves the data items (field definitions) associated with this data sample. These items define the structure and validation rules for the sample data, including field names, types, and constraints.'\n })\n async dataItems(@Root() dataSample: DataSample): Promise<DataItem[]> {\n const dataSetHistory: DataSetHistory =\n dataSample.dataSetId &&\n (await getRepository(DataSetHistory).findOne({\n where: {\n originalId: dataSample.dataSetId,\n version: dataSample.dataSetVersion\n }\n }))\n\n return dataSetHistory?.dataItems.filter(item => item.active) || []\n }\n\n @FieldResolver(type => DataSet, {\n description:\n 'Retrieves the dataset that this data sample belongs to. This field resolver provides access to the dataset configuration, metadata, and settings associated with the sample.'\n })\n async dataSet(@Root() dataSample: DataSample): Promise<DataSet> {\n return dataSample.dataSetId && (await getRepository(DataSet).findOneBy({ id: dataSample.dataSetId }))\n }\n\n @FieldResolver(type => DataOoc, {\n description:\n 'Retrieves the out-of-control (OOC) record associated with this data sample, if it exists. This field resolver is used when the sample has been flagged as out of control or out of specification, providing access to the corrective action workflow.'\n })\n async dataOoc(@Root() dataSample: DataSample): Promise<DataOoc> {\n if (dataSample.ooc || dataSample.oos) {\n return await getRepository(DataOoc).findOneBy({ dataSample: { id: dataSample.id } })\n }\n }\n\n @FieldResolver(type => ActivityInstance)\n async reviewActivityInstance(@Root() dataSample: DataSample): Promise<ActivityInstance> {\n return (\n dataSample.reviewActivityInstanceId &&\n (await getRepository(ActivityInstance).findOneBy({ id: dataSample.reviewActivityInstanceId }))\n )\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() dataSample: DataSample): Promise<Domain> {\n return dataSample.domainId && (await getRepository(Domain).findOneBy({ id: dataSample.domainId }))\n }\n\n @FieldResolver(type => User)\n async updater(@Root() dataSample: DataSample): Promise<User> {\n return dataSample.updaterId && (await getRepository(User).findOneBy({ id: dataSample.updaterId }))\n }\n\n @FieldResolver(type => User)\n async creator(@Root() dataSample: DataSample): Promise<User> {\n return dataSample.creatorId && (await getRepository(User).findOneBy({ id: dataSample.creatorId }))\n }\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ObjectRef } from '@things-factory/shell';
|
|
2
|
+
import { DataSample } from './data-sample.js';
|
|
3
|
+
export declare class NewDataSample {
|
|
4
|
+
name?: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
dataSet?: ObjectRef;
|
|
7
|
+
dataSetVersion?: number;
|
|
8
|
+
data?: any;
|
|
9
|
+
rawData?: string;
|
|
10
|
+
source?: string;
|
|
11
|
+
workDate?: string;
|
|
12
|
+
workShift?: string;
|
|
13
|
+
collectedAt?: Date;
|
|
14
|
+
}
|
|
15
|
+
export declare class DataSampleList {
|
|
16
|
+
items: DataSample[];
|
|
17
|
+
total: number;
|
|
18
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DataSampleList = exports.NewDataSample = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const type_graphql_1 = require("type-graphql");
|
|
6
|
+
const shell_1 = require("@things-factory/shell");
|
|
7
|
+
const data_sample_js_1 = require("./data-sample.js");
|
|
8
|
+
let NewDataSample = class NewDataSample {
|
|
9
|
+
};
|
|
10
|
+
exports.NewDataSample = NewDataSample;
|
|
11
|
+
tslib_1.__decorate([
|
|
12
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'Optional name for the data sample.' }),
|
|
13
|
+
tslib_1.__metadata("design:type", String)
|
|
14
|
+
], NewDataSample.prototype, "name", void 0);
|
|
15
|
+
tslib_1.__decorate([
|
|
16
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'Optional description of the data sample.' }),
|
|
17
|
+
tslib_1.__metadata("design:type", String)
|
|
18
|
+
], NewDataSample.prototype, "description", void 0);
|
|
19
|
+
tslib_1.__decorate([
|
|
20
|
+
(0, type_graphql_1.Field)(type => shell_1.ObjectRef, { nullable: true, description: 'Reference to the dataset this sample belongs to.' }),
|
|
21
|
+
tslib_1.__metadata("design:type", shell_1.ObjectRef)
|
|
22
|
+
], NewDataSample.prototype, "dataSet", void 0);
|
|
23
|
+
tslib_1.__decorate([
|
|
24
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'Version of the dataset when this sample was collected.' }),
|
|
25
|
+
tslib_1.__metadata("design:type", Number)
|
|
26
|
+
], NewDataSample.prototype, "dataSetVersion", void 0);
|
|
27
|
+
tslib_1.__decorate([
|
|
28
|
+
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true, description: 'The actual collected data values for this sample.' }),
|
|
29
|
+
tslib_1.__metadata("design:type", Object)
|
|
30
|
+
], NewDataSample.prototype, "data", void 0);
|
|
31
|
+
tslib_1.__decorate([
|
|
32
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'Raw data string before processing or transformation.' }),
|
|
33
|
+
tslib_1.__metadata("design:type", String)
|
|
34
|
+
], NewDataSample.prototype, "rawData", void 0);
|
|
35
|
+
tslib_1.__decorate([
|
|
36
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'Source of the data sample (e.g., sensor ID, manual entry, external system).' }),
|
|
37
|
+
tslib_1.__metadata("design:type", String)
|
|
38
|
+
], NewDataSample.prototype, "source", void 0);
|
|
39
|
+
tslib_1.__decorate([
|
|
40
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'Work date when the data sample was collected.' }),
|
|
41
|
+
tslib_1.__metadata("design:type", String)
|
|
42
|
+
], NewDataSample.prototype, "workDate", void 0);
|
|
43
|
+
tslib_1.__decorate([
|
|
44
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'Work shift when the data sample was collected.' }),
|
|
45
|
+
tslib_1.__metadata("design:type", String)
|
|
46
|
+
], NewDataSample.prototype, "workShift", void 0);
|
|
47
|
+
tslib_1.__decorate([
|
|
48
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'Timestamp when the data sample was collected.' }),
|
|
49
|
+
tslib_1.__metadata("design:type", Date)
|
|
50
|
+
], NewDataSample.prototype, "collectedAt", void 0);
|
|
51
|
+
exports.NewDataSample = NewDataSample = tslib_1.__decorate([
|
|
52
|
+
(0, type_graphql_1.InputType)()
|
|
53
|
+
], NewDataSample);
|
|
54
|
+
let DataSampleList = class DataSampleList {
|
|
55
|
+
};
|
|
56
|
+
exports.DataSampleList = DataSampleList;
|
|
57
|
+
tslib_1.__decorate([
|
|
58
|
+
(0, type_graphql_1.Field)(type => [data_sample_js_1.DataSample], { description: 'List of data samples.' }),
|
|
59
|
+
tslib_1.__metadata("design:type", Array)
|
|
60
|
+
], DataSampleList.prototype, "items", void 0);
|
|
61
|
+
tslib_1.__decorate([
|
|
62
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'Total number of data samples in the list.' }),
|
|
63
|
+
tslib_1.__metadata("design:type", Number)
|
|
64
|
+
], DataSampleList.prototype, "total", void 0);
|
|
65
|
+
exports.DataSampleList = DataSampleList = tslib_1.__decorate([
|
|
66
|
+
(0, type_graphql_1.ObjectType)({ description: 'Represents a paginated list of data samples.' })
|
|
67
|
+
], DataSampleList);
|
|
68
|
+
//# sourceMappingURL=data-sample-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-sample-type.js","sourceRoot":"","sources":["../../../server/service/data-sample/data-sample-type.ts"],"names":[],"mappings":";;;;AAAA,+CAAgE;AAEhE,iDAA+D;AAE/D,qDAA6C;AAGtC,IAAM,aAAa,GAAnB,MAAM,aAAa;CA8BzB,CAAA;AA9BY,sCAAa;AAExB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;;2CAChE;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC;;kDAC/D;AAGpB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,kDAAkD,EAAE,CAAC;sCACpG,iBAAS;8CAAA;AAGnB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,wDAAwD,EAAE,CAAC;;qDAC1E;AAGvB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,mDAAmD,EAAE,CAAC;;2CACxG;AAGV;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,sDAAsD,EAAE,CAAC;;8CAC/E;AAGhB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,6EAA6E,EAAE,CAAC;;6CACvG;AAGf;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,+CAA+C,EAAE,CAAC;;+CACvE;AAGjB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,gDAAgD,EAAE,CAAC;;gDACvE;AAGlB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,+CAA+C,EAAE,CAAC;sCAC1E,IAAI;kDAAA;wBA7BP,aAAa;IADzB,IAAA,wBAAS,GAAE;GACC,aAAa,CA8BzB;AAGM,IAAM,cAAc,GAApB,MAAM,cAAc;CAM1B,CAAA;AANY,wCAAc;AAEzB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,2BAAU,CAAC,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;;6CACnD;AAGnB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,EAAE,EAAE,WAAW,EAAE,2CAA2C,EAAE,CAAC;;6CACpE;yBALF,cAAc;IAD1B,IAAA,yBAAU,EAAC,EAAE,WAAW,EAAE,8CAA8C,EAAE,CAAC;GAC/D,cAAc,CAM1B","sourcesContent":["import { Field, InputType, Int, ObjectType } from 'type-graphql'\n\nimport { ObjectRef, ScalarObject } from '@things-factory/shell'\n\nimport { DataSample } from './data-sample.js'\n\n@InputType()\nexport class NewDataSample {\n @Field({ nullable: true, description: 'Optional name for the data sample.' })\n name?: string\n\n @Field({ nullable: true, description: 'Optional description of the data sample.' })\n description?: string\n\n @Field(type => ObjectRef, { nullable: true, description: 'Reference to the dataset this sample belongs to.' })\n dataSet?: ObjectRef\n\n @Field({ nullable: true, description: 'Version of the dataset when this sample was collected.' })\n dataSetVersion?: number\n\n @Field(type => ScalarObject, { nullable: true, description: 'The actual collected data values for this sample.' })\n data?: any\n\n @Field({ nullable: true, description: 'Raw data string before processing or transformation.' })\n rawData?: string\n\n @Field({ nullable: true, description: 'Source of the data sample (e.g., sensor ID, manual entry, external system).' })\n source?: string\n\n @Field({ nullable: true, description: 'Work date when the data sample was collected.' })\n workDate?: string\n\n @Field({ nullable: true, description: 'Work shift when the data sample was collected.' })\n workShift?: string\n\n @Field({ nullable: true, description: 'Timestamp when the data sample was collected.' })\n collectedAt?: Date\n}\n\n@ObjectType({ description: 'Represents a paginated list of data samples.' })\nexport class DataSampleList {\n @Field(type => [DataSample], { description: 'List of data samples.' })\n items: DataSample[]\n\n @Field(type => Int, { description: 'Total number of data samples in the list.' })\n total: number\n}\n"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { User } from '@things-factory/auth-base';
|
|
2
|
+
import { Domain } from '@things-factory/shell';
|
|
3
|
+
import { ActivityInstance } from '@things-factory/worklist';
|
|
4
|
+
import { DataItem } from '../data-set/data-item-type.js';
|
|
5
|
+
import { DataSet } from '../data-set/data-set.js';
|
|
6
|
+
import { DataOoc } from '../data-ooc/data-ooc.js';
|
|
7
|
+
export declare class DataSample {
|
|
8
|
+
readonly id: string;
|
|
9
|
+
domain?: Domain;
|
|
10
|
+
domainId?: string;
|
|
11
|
+
name: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
type?: string;
|
|
14
|
+
useCase?: string;
|
|
15
|
+
partitionKeys?: {
|
|
16
|
+
[key: string]: any;
|
|
17
|
+
};
|
|
18
|
+
dataSet?: DataSet;
|
|
19
|
+
dataSetId?: string;
|
|
20
|
+
dataSetVersion?: number;
|
|
21
|
+
data?: any;
|
|
22
|
+
judgment?: any;
|
|
23
|
+
dataItems?: DataItem[];
|
|
24
|
+
rawData?: string;
|
|
25
|
+
source?: string;
|
|
26
|
+
ooc?: boolean;
|
|
27
|
+
oos?: boolean;
|
|
28
|
+
key01?: string;
|
|
29
|
+
key02?: string;
|
|
30
|
+
key03?: string;
|
|
31
|
+
key04?: string;
|
|
32
|
+
key05?: string;
|
|
33
|
+
workDate?: string;
|
|
34
|
+
workShift?: string;
|
|
35
|
+
reviewActivityInstance?: ActivityInstance;
|
|
36
|
+
reviewActivityInstanceId?: string;
|
|
37
|
+
dataOoc?: DataOoc;
|
|
38
|
+
collectedAt?: Date;
|
|
39
|
+
createdAt?: Date;
|
|
40
|
+
updatedAt?: Date;
|
|
41
|
+
creator?: User;
|
|
42
|
+
creatorId?: string;
|
|
43
|
+
updater?: User;
|
|
44
|
+
updaterId?: string;
|
|
45
|
+
}
|