@things-factory/kpi 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/bootstrap.d.ts +2 -0
- package/dist-client/bootstrap.js +7 -0
- package/dist-client/bootstrap.js.map +1 -0
- package/dist-client/charts/kpi-boxplot-chart.d.ts +24 -0
- package/dist-client/charts/kpi-boxplot-chart.js +324 -0
- package/dist-client/charts/kpi-boxplot-chart.js.map +1 -0
- package/dist-client/charts/kpi-mini-trend-chart.d.ts +14 -0
- package/dist-client/charts/kpi-mini-trend-chart.js +148 -0
- package/dist-client/charts/kpi-mini-trend-chart.js.map +1 -0
- package/dist-client/charts/kpi-radar-chart.d.ts +16 -0
- package/dist-client/charts/kpi-radar-chart.js +138 -0
- package/dist-client/charts/kpi-radar-chart.js.map +1 -0
- package/dist-client/charts/kpi-trend-chart.d.ts +25 -0
- package/dist-client/charts/kpi-trend-chart.js +186 -0
- package/dist-client/charts/kpi-trend-chart.js.map +1 -0
- package/dist-client/google-map/common-google-map.d.ts +34 -0
- package/dist-client/google-map/common-google-map.js +333 -0
- package/dist-client/google-map/common-google-map.js.map +1 -0
- package/dist-client/google-map/google-map-loader.d.ts +8 -0
- package/dist-client/google-map/google-map-loader.js +22 -0
- package/dist-client/google-map/google-map-loader.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/kpi/kpi-grade-editor.d.ts +35 -0
- package/dist-client/pages/kpi/kpi-grade-editor.js +165 -0
- package/dist-client/pages/kpi/kpi-grade-editor.js.map +1 -0
- package/dist-client/pages/kpi/kpi-importer.d.ts +23 -0
- package/dist-client/pages/kpi/kpi-importer.js +92 -0
- package/dist-client/pages/kpi/kpi-importer.js.map +1 -0
- package/dist-client/pages/kpi/kpi-list-page.d.ts +136 -0
- package/dist-client/pages/kpi/kpi-list-page.js +948 -0
- package/dist-client/pages/kpi/kpi-list-page.js.map +1 -0
- package/dist-client/pages/kpi/kpi-overview-sample.d.ts +36 -0
- package/dist-client/pages/kpi/kpi-overview-sample.js +264 -0
- package/dist-client/pages/kpi/kpi-overview-sample.js.map +1 -0
- package/dist-client/pages/kpi/kpi-overview.d.ts +14 -0
- package/dist-client/pages/kpi/kpi-overview.js +361 -0
- package/dist-client/pages/kpi/kpi-overview.js.map +1 -0
- package/dist-client/pages/kpi/kpi-tree-page.d.ts +51 -0
- package/dist-client/pages/kpi/kpi-tree-page.js +355 -0
- package/dist-client/pages/kpi/kpi-tree-page.js.map +1 -0
- package/dist-client/pages/kpi/kpi-view.d.ts +12 -0
- package/dist-client/pages/kpi/kpi-view.js +193 -0
- package/dist-client/pages/kpi/kpi-view.js.map +1 -0
- package/dist-client/pages/kpi/kpi-viz-editor.d.ts +19 -0
- package/dist-client/pages/kpi/kpi-viz-editor.js +562 -0
- package/dist-client/pages/kpi/kpi-viz-editor.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.d.ts +17 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.js +279 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.d.ts +19 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.js +385 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.d.ts +23 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.js +465 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-chart-toggle.d.ts +8 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-chart-toggle.js +78 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-chart-toggle.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.d.ts +24 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.js +440 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.d.ts +33 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.js +444 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.d.ts +23 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.js +369 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-alert-panel.d.ts +18 -0
- package/dist-client/pages/kpi-dashboard/kpi-alert-panel.js +128 -0
- package/dist-client/pages/kpi-dashboard/kpi-alert-panel.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.d.ts +31 -0
- package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.js +493 -0
- package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-dashboard.d.ts +50 -0
- package/dist-client/pages/kpi-dashboard/kpi-dashboard.js +884 -0
- package/dist-client/pages/kpi-dashboard/kpi-dashboard.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-grade-visualization.d.ts +12 -0
- package/dist-client/pages/kpi-dashboard/kpi-grade-visualization.js +82 -0
- package/dist-client/pages/kpi-dashboard/kpi-grade-visualization.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-history-viewer.d.ts +11 -0
- package/dist-client/pages/kpi-dashboard/kpi-history-viewer.js +65 -0
- package/dist-client/pages/kpi-dashboard/kpi-history-viewer.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-list-summary.d.ts +13 -0
- package/dist-client/pages/kpi-dashboard/kpi-list-summary.js +115 -0
- package/dist-client/pages/kpi-dashboard/kpi-list-summary.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-performance-summary.d.ts +15 -0
- package/dist-client/pages/kpi-dashboard/kpi-performance-summary.js +146 -0
- package/dist-client/pages/kpi-dashboard/kpi-performance-summary.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-value-entry.d.ts +7 -0
- package/dist-client/pages/kpi-dashboard/kpi-value-entry.js +86 -0
- package/dist-client/pages/kpi-dashboard/kpi-value-entry.js.map +1 -0
- package/dist-client/pages/kpi-history/kpi-history-list-page.d.ts +21 -0
- package/dist-client/pages/kpi-history/kpi-history-list-page.js +160 -0
- package/dist-client/pages/kpi-history/kpi-history-list-page.js.map +1 -0
- package/dist-client/pages/kpi-metric/kpi-metric-importer.d.ts +23 -0
- package/dist-client/pages/kpi-metric/kpi-metric-importer.js +92 -0
- package/dist-client/pages/kpi-metric/kpi-metric-importer.js.map +1 -0
- package/dist-client/pages/kpi-metric/kpi-metric-list-page.d.ts +65 -0
- package/dist-client/pages/kpi-metric/kpi-metric-list-page.js +415 -0
- package/dist-client/pages/kpi-metric/kpi-metric-list-page.js.map +1 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.d.ts +52 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.js +678 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.js.map +1 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.d.ts +23 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.js +75 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.js.map +1 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.d.ts +64 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.js +311 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.js.map +1 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.d.ts +12 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.js +175 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.js.map +1 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-page.d.ts +35 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-page.js +161 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-page.js.map +1 -0
- package/dist-client/pages/kpi-statistic/kpi-statistic-editor-page.d.ts +47 -0
- package/dist-client/pages/kpi-statistic/kpi-statistic-editor-page.js +655 -0
- package/dist-client/pages/kpi-statistic/kpi-statistic-editor-page.js.map +1 -0
- package/dist-client/pages/kpi-statistic/kpi-statistic-importer.d.ts +23 -0
- package/dist-client/pages/kpi-statistic/kpi-statistic-importer.js +92 -0
- package/dist-client/pages/kpi-statistic/kpi-statistic-importer.js.map +1 -0
- package/dist-client/pages/kpi-statistic/kpi-statistic-list-page.d.ts +65 -0
- package/dist-client/pages/kpi-statistic/kpi-statistic-list-page.js +416 -0
- package/dist-client/pages/kpi-statistic/kpi-statistic-list-page.js.map +1 -0
- package/dist-client/pages/kpi-value/kpi-value-editor-page.d.ts +50 -0
- package/dist-client/pages/kpi-value/kpi-value-editor-page.js +700 -0
- package/dist-client/pages/kpi-value/kpi-value-editor-page.js.map +1 -0
- package/dist-client/pages/kpi-value/kpi-value-importer.d.ts +23 -0
- package/dist-client/pages/kpi-value/kpi-value-importer.js +92 -0
- package/dist-client/pages/kpi-value/kpi-value-importer.js.map +1 -0
- package/dist-client/pages/kpi-value/kpi-value-list-page.d.ts +73 -0
- package/dist-client/pages/kpi-value/kpi-value-list-page.js +403 -0
- package/dist-client/pages/kpi-value/kpi-value-list-page.js.map +1 -0
- package/dist-client/route.d.ts +1 -0
- package/dist-client/route.js +47 -0
- package/dist-client/route.js.map +1 -0
- package/dist-client/tsconfig.tsbuildinfo +1 -0
- package/dist-client/viewparts/kpi-metric-input.d.ts +23 -0
- package/dist-client/viewparts/kpi-metric-input.js +140 -0
- package/dist-client/viewparts/kpi-metric-input.js.map +1 -0
- package/dist-client/viewparts/kpi-metric-meta-editor.d.ts +36 -0
- package/dist-client/viewparts/kpi-metric-meta-editor.js +321 -0
- package/dist-client/viewparts/kpi-metric-meta-editor.js.map +1 -0
- package/dist-client/viewparts/metric-input-hint.d.ts +26 -0
- package/dist-client/viewparts/metric-input-hint.js +19 -0
- package/dist-client/viewparts/metric-input-hint.js.map +1 -0
- package/dist-client/viewparts/metric-input.test.d.ts +1 -0
- package/dist-client/viewparts/metric-input.test.js +43 -0
- package/dist-client/viewparts/metric-input.test.js.map +1 -0
- package/dist-client/viewparts/metric-renderer-registry.d.ts +18 -0
- package/dist-client/viewparts/metric-renderer-registry.js +29 -0
- package/dist-client/viewparts/metric-renderer-registry.js.map +1 -0
- package/dist-client/viewparts/ox-grist-editor-metric-input-hint.d.ts +19 -0
- package/dist-client/viewparts/ox-grist-editor-metric-input-hint.js +76 -0
- package/dist-client/viewparts/ox-grist-editor-metric-input-hint.js.map +1 -0
- package/dist-server/calculator/calculator.test.d.ts +1 -0
- package/dist-server/calculator/calculator.test.js +126 -0
- package/dist-server/calculator/calculator.test.js.map +1 -0
- package/dist-server/calculator/evaluator.d.ts +8 -0
- package/dist-server/calculator/evaluator.js +42 -0
- package/dist-server/calculator/evaluator.js.map +1 -0
- package/dist-server/calculator/functions.d.ts +3 -0
- package/dist-server/calculator/functions.js +62 -0
- package/dist-server/calculator/functions.js.map +1 -0
- package/dist-server/calculator/index.d.ts +6 -0
- package/dist-server/calculator/index.js +10 -0
- package/dist-server/calculator/index.js.map +1 -0
- package/dist-server/calculator/parser.d.ts +34 -0
- package/dist-server/calculator/parser.js +185 -0
- package/dist-server/calculator/parser.js.map +1 -0
- package/dist-server/calculator/provider.d.ts +8 -0
- package/dist-server/calculator/provider.js +13 -0
- package/dist-server/calculator/provider.js.map +1 -0
- package/dist-server/calculator/score.d.ts +21 -0
- package/dist-server/calculator/score.js +36 -0
- package/dist-server/calculator/score.js.map +1 -0
- package/dist-server/calculator/score.test.d.ts +1 -0
- package/dist-server/calculator/score.test.js +47 -0
- package/dist-server/calculator/score.test.js.map +1 -0
- package/dist-server/calculator/validate.d.ts +15 -0
- package/dist-server/calculator/validate.js +30 -0
- package/dist-server/calculator/validate.js.map +1 -0
- package/dist-server/calculator/validate.test.d.ts +1 -0
- package/dist-server/calculator/validate.test.js +45 -0
- package/dist-server/calculator/validate.test.js.map +1 -0
- package/dist-server/controllers/index.d.ts +2 -0
- package/dist-server/controllers/index.js +6 -0
- package/dist-server/controllers/index.js.map +1 -0
- package/dist-server/controllers/kpi-metric-value-provider.d.ts +11 -0
- package/dist-server/controllers/kpi-metric-value-provider.js +97 -0
- package/dist-server/controllers/kpi-metric-value-provider.js.map +1 -0
- package/dist-server/controllers/kpi-value-provider.d.ts +11 -0
- package/dist-server/controllers/kpi-value-provider.js +50 -0
- package/dist-server/controllers/kpi-value-provider.js.map +1 -0
- package/dist-server/index.d.ts +5 -0
- package/dist-server/index.js +9 -0
- package/dist-server/index.js.map +1 -0
- package/dist-server/migrations/1752190849680-seed-kpi-metrics.d.ts +6 -0
- package/dist-server/migrations/1752190849680-seed-kpi-metrics.js +102 -0
- package/dist-server/migrations/1752190849680-seed-kpi-metrics.js.map +1 -0
- package/dist-server/migrations/1752190849681-seed-kpi.d.ts +5 -0
- package/dist-server/migrations/1752190849681-seed-kpi.js +315 -0
- package/dist-server/migrations/1752190849681-seed-kpi.js.map +1 -0
- package/dist-server/migrations/1752192090123-add-grades-to-kpi.d.ts +7 -0
- package/dist-server/migrations/1752192090123-add-grades-to-kpi.js +51 -0
- package/dist-server/migrations/1752192090123-add-grades-to-kpi.js.map +1 -0
- package/dist-server/migrations/1752192090124-add-kpi-statistics.d.ts +5 -0
- package/dist-server/migrations/1752192090124-add-kpi-statistics.js +710 -0
- package/dist-server/migrations/1752192090124-add-kpi-statistics.js.map +1 -0
- package/dist-server/migrations/1752192090128-seed-kpi-org-scope.d.ts +6 -0
- package/dist-server/migrations/1752192090128-seed-kpi-org-scope.js +111 -0
- package/dist-server/migrations/1752192090128-seed-kpi-org-scope.js.map +1 -0
- package/dist-server/migrations/1752192090129-seed-kpi-values.d.ts +6 -0
- package/dist-server/migrations/1752192090129-seed-kpi-values.js +187 -0
- package/dist-server/migrations/1752192090129-seed-kpi-values.js.map +1 -0
- package/dist-server/migrations/1752192090200-add-meta-to-kpi-metric.d.ts +10 -0
- package/dist-server/migrations/1752192090200-add-meta-to-kpi-metric.js +26 -0
- package/dist-server/migrations/1752192090200-add-meta-to-kpi-metric.js.map +1 -0
- package/dist-server/migrations/1752192090201-backfill-kpi-metric-meta.d.ts +11 -0
- package/dist-server/migrations/1752192090201-backfill-kpi-metric-meta.js +54 -0
- package/dist-server/migrations/1752192090201-backfill-kpi-metric-meta.js.map +1 -0
- package/dist-server/migrations/grade-data/x11-performance-table.json +962 -0
- package/dist-server/migrations/grade-data/x12-performance-table.json +611 -0
- package/dist-server/migrations/grade-data/x14-performance-table.json +42 -0
- package/dist-server/migrations/grade-data/x21-performance-table.json +889 -0
- package/dist-server/migrations/grade-data/x22-performance-table.json +1064 -0
- package/dist-server/migrations/grade-data/x23-performance-table.json +42 -0
- package/dist-server/migrations/grade-data/x31-performance-table.json +644 -0
- package/dist-server/migrations/grade-data/x32-performance-table.json +993 -0
- package/dist-server/migrations/grade-data/x33-performance-table.json +195 -0
- package/dist-server/migrations/grade-data/x34-performance-table.json +12 -0
- package/dist-server/migrations/grade-data/x35-performance-table.json +42 -0
- package/dist-server/migrations/grade-data/x41-performance-table.json +825 -0
- package/dist-server/migrations/grade-data/x42-performance-table.json +786 -0
- package/dist-server/migrations/grade-data/x43-performance-table.json +12 -0
- package/dist-server/migrations/grade-data/x44-performance-table.json +42 -0
- package/dist-server/migrations/grade-data/x51-performance-table.json +924 -0
- package/dist-server/migrations/grade-data/x52-performance-table.json +42 -0
- package/dist-server/migrations/grade-data/x61-performance-table.json +261 -0
- package/dist-server/migrations/grade-data/x62-performance-table.json +42 -0
- package/dist-server/migrations/index.d.ts +1 -0
- package/dist-server/migrations/index.js +12 -0
- package/dist-server/migrations/index.js.map +1 -0
- package/dist-server/migrations/seed-data/kpi-metrics-seed.json +517 -0
- package/dist-server/migrations/seed-data/kpi-org-scope-seed.json +1676 -0
- package/dist-server/migrations/seed-data/kpi-scopes-seed.json +121 -0
- package/dist-server/migrations/seed-data/kpi-values-seed.json +402 -0
- package/dist-server/migrations/seed-data/kpis-seed.json +488 -0
- package/dist-server/migrations/seed-data/scope-definitions-seed.json +90 -0
- package/dist-server/routes.d.ts +1 -0
- package/dist-server/routes.js +72 -0
- package/dist-server/routes.js.map +1 -0
- package/dist-server/service/index.d.ts +15 -0
- package/dist-server/service/index.js +49 -0
- package/dist-server/service/index.js.map +1 -0
- package/dist-server/service/kpi/aggregate-kpi.d.ts +8 -0
- package/dist-server/service/kpi/aggregate-kpi.js +123 -0
- package/dist-server/service/kpi/aggregate-kpi.js.map +1 -0
- package/dist-server/service/kpi/event-subscriber.d.ts +9 -0
- package/dist-server/service/kpi/event-subscriber.js +31 -0
- package/dist-server/service/kpi/event-subscriber.js.map +1 -0
- package/dist-server/service/kpi/index.d.ts +8 -0
- package/dist-server/service/kpi/index.js +12 -0
- package/dist-server/service/kpi/index.js.map +1 -0
- package/dist-server/service/kpi/kpi-formula.service.d.ts +49 -0
- package/dist-server/service/kpi/kpi-formula.service.js +165 -0
- package/dist-server/service/kpi/kpi-formula.service.js.map +1 -0
- package/dist-server/service/kpi/kpi-grade.types.d.ts +22 -0
- package/dist-server/service/kpi/kpi-grade.types.js +3 -0
- package/dist-server/service/kpi/kpi-grade.types.js.map +1 -0
- package/dist-server/service/kpi/kpi-history.d.ts +29 -0
- package/dist-server/service/kpi/kpi-history.js +148 -0
- package/dist-server/service/kpi/kpi-history.js.map +1 -0
- package/dist-server/service/kpi/kpi-mutation.d.ts +14 -0
- package/dist-server/service/kpi/kpi-mutation.js +553 -0
- package/dist-server/service/kpi/kpi-mutation.js.map +1 -0
- package/dist-server/service/kpi/kpi-query.d.ts +24 -0
- package/dist-server/service/kpi/kpi-query.js +309 -0
- package/dist-server/service/kpi/kpi-query.js.map +1 -0
- package/dist-server/service/kpi/kpi-type.d.ts +48 -0
- package/dist-server/service/kpi/kpi-type.js +221 -0
- package/dist-server/service/kpi/kpi-type.js.map +1 -0
- package/dist-server/service/kpi/kpi.d.ts +130 -0
- package/dist-server/service/kpi/kpi.js +356 -0
- package/dist-server/service/kpi/kpi.js.map +1 -0
- package/dist-server/service/kpi-alert/index.d.ts +2 -0
- package/dist-server/service/kpi-alert/index.js +6 -0
- package/dist-server/service/kpi-alert/index.js.map +1 -0
- package/dist-server/service/kpi-alert/kpi-alert-query.d.ts +4 -0
- package/dist-server/service/kpi-alert/kpi-alert-query.js +72 -0
- package/dist-server/service/kpi-alert/kpi-alert-query.js.map +1 -0
- package/dist-server/service/kpi-alert/kpi-alert-type.d.ts +8 -0
- package/dist-server/service/kpi-alert/kpi-alert-type.js +33 -0
- package/dist-server/service/kpi-alert/kpi-alert-type.js.map +1 -0
- package/dist-server/service/kpi-metric/aggregate-kpi-metric.d.ts +8 -0
- package/dist-server/service/kpi-metric/aggregate-kpi-metric.js +126 -0
- package/dist-server/service/kpi-metric/aggregate-kpi-metric.js.map +1 -0
- package/dist-server/service/kpi-metric/index.d.ts +6 -0
- package/dist-server/service/kpi-metric/index.js +10 -0
- package/dist-server/service/kpi-metric/index.js.map +1 -0
- package/dist-server/service/kpi-metric/kpi-metric-meta.d.ts +46 -0
- package/dist-server/service/kpi-metric/kpi-metric-meta.js +27 -0
- package/dist-server/service/kpi-metric/kpi-metric-meta.js.map +1 -0
- package/dist-server/service/kpi-metric/kpi-metric-meta.test.d.ts +1 -0
- package/dist-server/service/kpi-metric/kpi-metric-meta.test.js +43 -0
- package/dist-server/service/kpi-metric/kpi-metric-meta.test.js.map +1 -0
- package/dist-server/service/kpi-metric/kpi-metric-mutation.d.ts +10 -0
- package/dist-server/service/kpi-metric/kpi-metric-mutation.js +296 -0
- package/dist-server/service/kpi-metric/kpi-metric-mutation.js.map +1 -0
- package/dist-server/service/kpi-metric/kpi-metric-query.d.ts +14 -0
- package/dist-server/service/kpi-metric/kpi-metric-query.js +126 -0
- package/dist-server/service/kpi-metric/kpi-metric-query.js.map +1 -0
- package/dist-server/service/kpi-metric/kpi-metric-type.d.ts +45 -0
- package/dist-server/service/kpi-metric/kpi-metric-type.js +177 -0
- package/dist-server/service/kpi-metric/kpi-metric-type.js.map +1 -0
- package/dist-server/service/kpi-metric/kpi-metric.d.ts +39 -0
- package/dist-server/service/kpi-metric/kpi-metric.js +174 -0
- package/dist-server/service/kpi-metric/kpi-metric.js.map +1 -0
- package/dist-server/service/kpi-metric-value/index.d.ts +6 -0
- package/dist-server/service/kpi-metric-value/index.js +10 -0
- package/dist-server/service/kpi-metric-value/index.js.map +1 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.d.ts +11 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.js +283 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.js.map +1 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-query.d.ts +13 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-query.js +106 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-query.js.map +1 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-type.d.ts +26 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-type.js +112 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-type.js.map +1 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value.d.ts +23 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value.js +107 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value.js.map +1 -0
- package/dist-server/service/kpi-org-scope/index.d.ts +5 -0
- package/dist-server/service/kpi-org-scope/index.js +9 -0
- package/dist-server/service/kpi-org-scope/index.js.map +1 -0
- package/dist-server/service/kpi-org-scope/kpi-org-scope-mutation.d.ts +8 -0
- package/dist-server/service/kpi-org-scope/kpi-org-scope-mutation.js +170 -0
- package/dist-server/service/kpi-org-scope/kpi-org-scope-mutation.js.map +1 -0
- package/dist-server/service/kpi-org-scope/kpi-org-scope-query.d.ts +14 -0
- package/dist-server/service/kpi-org-scope/kpi-org-scope-query.js +152 -0
- package/dist-server/service/kpi-org-scope/kpi-org-scope-query.js.map +1 -0
- package/dist-server/service/kpi-org-scope/kpi-org-scope-type.d.ts +26 -0
- package/dist-server/service/kpi-org-scope/kpi-org-scope-type.js +101 -0
- package/dist-server/service/kpi-org-scope/kpi-org-scope-type.js.map +1 -0
- package/dist-server/service/kpi-org-scope/kpi-org-scope.d.ts +26 -0
- package/dist-server/service/kpi-org-scope/kpi-org-scope.js +135 -0
- package/dist-server/service/kpi-org-scope/kpi-org-scope.js.map +1 -0
- package/dist-server/service/kpi-scope/index.d.ts +9 -0
- package/dist-server/service/kpi-scope/index.js +14 -0
- package/dist-server/service/kpi-scope/index.js.map +1 -0
- package/dist-server/service/kpi-scope/kpi-scope-mutation.d.ts +9 -0
- package/dist-server/service/kpi-scope/kpi-scope-mutation.js +140 -0
- package/dist-server/service/kpi-scope/kpi-scope-mutation.js.map +1 -0
- package/dist-server/service/kpi-scope/kpi-scope-query.d.ts +11 -0
- package/dist-server/service/kpi-scope/kpi-scope-query.js +89 -0
- package/dist-server/service/kpi-scope/kpi-scope-query.js.map +1 -0
- package/dist-server/service/kpi-scope/kpi-scope-type.d.ts +35 -0
- package/dist-server/service/kpi-scope/kpi-scope-type.js +138 -0
- package/dist-server/service/kpi-scope/kpi-scope-type.js.map +1 -0
- package/dist-server/service/kpi-scope/kpi-scope.d.ts +38 -0
- package/dist-server/service/kpi-scope/kpi-scope.js +144 -0
- package/dist-server/service/kpi-scope/kpi-scope.js.map +1 -0
- package/dist-server/service/kpi-statistic/index.d.ts +6 -0
- package/dist-server/service/kpi-statistic/index.js +10 -0
- package/dist-server/service/kpi-statistic/index.js.map +1 -0
- package/dist-server/service/kpi-statistic/kpi-statistic-batch.service.d.ts +43 -0
- package/dist-server/service/kpi-statistic/kpi-statistic-batch.service.js +181 -0
- package/dist-server/service/kpi-statistic/kpi-statistic-batch.service.js.map +1 -0
- package/dist-server/service/kpi-statistic/kpi-statistic-calculation.service.d.ts +50 -0
- package/dist-server/service/kpi-statistic/kpi-statistic-calculation.service.js +324 -0
- package/dist-server/service/kpi-statistic/kpi-statistic-calculation.service.js.map +1 -0
- package/dist-server/service/kpi-statistic/kpi-statistic-mutation.d.ts +14 -0
- package/dist-server/service/kpi-statistic/kpi-statistic-mutation.js +279 -0
- package/dist-server/service/kpi-statistic/kpi-statistic-mutation.js.map +1 -0
- package/dist-server/service/kpi-statistic/kpi-statistic-query.d.ts +17 -0
- package/dist-server/service/kpi-statistic/kpi-statistic-query.js +183 -0
- package/dist-server/service/kpi-statistic/kpi-statistic-query.js.map +1 -0
- package/dist-server/service/kpi-statistic/kpi-statistic-type.d.ts +59 -0
- package/dist-server/service/kpi-statistic/kpi-statistic-type.js +200 -0
- package/dist-server/service/kpi-statistic/kpi-statistic-type.js.map +1 -0
- package/dist-server/service/kpi-statistic/kpi-statistic.d.ts +42 -0
- package/dist-server/service/kpi-statistic/kpi-statistic.js +210 -0
- package/dist-server/service/kpi-statistic/kpi-statistic.js.map +1 -0
- package/dist-server/service/kpi-value/index.d.ts +6 -0
- package/dist-server/service/kpi-value/index.js +10 -0
- package/dist-server/service/kpi-value/index.js.map +1 -0
- package/dist-server/service/kpi-value/kpi-value-mutation.d.ts +13 -0
- package/dist-server/service/kpi-value/kpi-value-mutation.js +447 -0
- package/dist-server/service/kpi-value/kpi-value-mutation.js.map +1 -0
- package/dist-server/service/kpi-value/kpi-value-query.d.ts +22 -0
- package/dist-server/service/kpi-value/kpi-value-query.js +149 -0
- package/dist-server/service/kpi-value/kpi-value-query.js.map +1 -0
- package/dist-server/service/kpi-value/kpi-value-score.service.d.ts +24 -0
- package/dist-server/service/kpi-value/kpi-value-score.service.js +61 -0
- package/dist-server/service/kpi-value/kpi-value-score.service.js.map +1 -0
- package/dist-server/service/kpi-value/kpi-value-type.d.ts +33 -0
- package/dist-server/service/kpi-value/kpi-value-type.js +156 -0
- package/dist-server/service/kpi-value/kpi-value-type.js.map +1 -0
- package/dist-server/service/kpi-value/kpi-value.d.ts +32 -0
- package/dist-server/service/kpi-value/kpi-value.js +175 -0
- package/dist-server/service/kpi-value/kpi-value.js.map +1 -0
- package/dist-server/service/utils/value-date-util.d.ts +4 -0
- package/dist-server/service/utils/value-date-util.js +117 -0
- package/dist-server/service/utils/value-date-util.js.map +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KpiMetricValue = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const typeorm_1 = require("typeorm");
|
|
6
|
+
const type_graphql_1 = require("type-graphql");
|
|
7
|
+
const shell_1 = require("@things-factory/shell");
|
|
8
|
+
const kpi_metric_1 = require("../kpi-metric/kpi-metric");
|
|
9
|
+
const kpi_1 = require("../kpi/kpi");
|
|
10
|
+
const auth_base_1 = require("@things-factory/auth-base");
|
|
11
|
+
let KpiMetricValue = class KpiMetricValue {
|
|
12
|
+
};
|
|
13
|
+
exports.KpiMetricValue = KpiMetricValue;
|
|
14
|
+
tslib_1.__decorate([
|
|
15
|
+
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
|
|
16
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.ID),
|
|
17
|
+
tslib_1.__metadata("design:type", String)
|
|
18
|
+
], KpiMetricValue.prototype, "id", void 0);
|
|
19
|
+
tslib_1.__decorate([
|
|
20
|
+
(0, typeorm_1.ManyToOne)(() => shell_1.Domain),
|
|
21
|
+
(0, type_graphql_1.Field)(type => shell_1.Domain, { nullable: true }),
|
|
22
|
+
tslib_1.__metadata("design:type", shell_1.Domain)
|
|
23
|
+
], KpiMetricValue.prototype, "domain", void 0);
|
|
24
|
+
tslib_1.__decorate([
|
|
25
|
+
(0, typeorm_1.RelationId)((entity) => entity.domain),
|
|
26
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
27
|
+
tslib_1.__metadata("design:type", String)
|
|
28
|
+
], KpiMetricValue.prototype, "domainId", void 0);
|
|
29
|
+
tslib_1.__decorate([
|
|
30
|
+
(0, typeorm_1.ManyToOne)(() => kpi_metric_1.KpiMetric, { nullable: false, onDelete: 'CASCADE' }),
|
|
31
|
+
(0, typeorm_1.JoinColumn)({ name: 'metricId' }),
|
|
32
|
+
(0, type_graphql_1.Field)(type => kpi_metric_1.KpiMetric),
|
|
33
|
+
tslib_1.__metadata("design:type", kpi_metric_1.KpiMetric)
|
|
34
|
+
], KpiMetricValue.prototype, "metric", void 0);
|
|
35
|
+
tslib_1.__decorate([
|
|
36
|
+
(0, typeorm_1.RelationId)((entity) => entity.metric),
|
|
37
|
+
(0, type_graphql_1.Field)(),
|
|
38
|
+
tslib_1.__metadata("design:type", String)
|
|
39
|
+
], KpiMetricValue.prototype, "metricId", void 0);
|
|
40
|
+
tslib_1.__decorate([
|
|
41
|
+
(0, typeorm_1.Column)('float'),
|
|
42
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Float),
|
|
43
|
+
tslib_1.__metadata("design:type", Number)
|
|
44
|
+
], KpiMetricValue.prototype, "value", void 0);
|
|
45
|
+
tslib_1.__decorate([
|
|
46
|
+
(0, typeorm_1.Column)({ nullable: true }),
|
|
47
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
48
|
+
tslib_1.__metadata("design:type", String)
|
|
49
|
+
], KpiMetricValue.prototype, "unit", void 0);
|
|
50
|
+
tslib_1.__decorate([
|
|
51
|
+
(0, typeorm_1.Column)(),
|
|
52
|
+
(0, type_graphql_1.Field)({
|
|
53
|
+
description: 'Date or period for which this metric value is recorded (e.g., day: YYYY-MM-DD, month: YYYY-MM, range: YYYY-MM-DD~YYYY-MM-DD).'
|
|
54
|
+
}),
|
|
55
|
+
tslib_1.__metadata("design:type", String)
|
|
56
|
+
], KpiMetricValue.prototype, "valueDate", void 0);
|
|
57
|
+
tslib_1.__decorate([
|
|
58
|
+
(0, typeorm_1.Column)({ default: 'DAY' }),
|
|
59
|
+
(0, type_graphql_1.Field)(type => kpi_1.KpiPeriodType),
|
|
60
|
+
tslib_1.__metadata("design:type", String)
|
|
61
|
+
], KpiMetricValue.prototype, "periodType", void 0);
|
|
62
|
+
tslib_1.__decorate([
|
|
63
|
+
(0, typeorm_1.Column)({ default: '' }),
|
|
64
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'Organizational unit for this value (project, department, company, employee, etc.)' }),
|
|
65
|
+
tslib_1.__metadata("design:type", String)
|
|
66
|
+
], KpiMetricValue.prototype, "org", void 0);
|
|
67
|
+
tslib_1.__decorate([
|
|
68
|
+
(0, typeorm_1.Column)({ type: 'simple-json', nullable: true }),
|
|
69
|
+
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
|
|
70
|
+
tslib_1.__metadata("design:type", Object)
|
|
71
|
+
], KpiMetricValue.prototype, "meta", void 0);
|
|
72
|
+
tslib_1.__decorate([
|
|
73
|
+
(0, typeorm_1.CreateDateColumn)(),
|
|
74
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
75
|
+
tslib_1.__metadata("design:type", Date)
|
|
76
|
+
], KpiMetricValue.prototype, "createdAt", void 0);
|
|
77
|
+
tslib_1.__decorate([
|
|
78
|
+
(0, typeorm_1.UpdateDateColumn)(),
|
|
79
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
80
|
+
tslib_1.__metadata("design:type", Date)
|
|
81
|
+
], KpiMetricValue.prototype, "updatedAt", void 0);
|
|
82
|
+
tslib_1.__decorate([
|
|
83
|
+
(0, typeorm_1.ManyToOne)(() => auth_base_1.User, { nullable: true }),
|
|
84
|
+
(0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true }),
|
|
85
|
+
tslib_1.__metadata("design:type", auth_base_1.User)
|
|
86
|
+
], KpiMetricValue.prototype, "creator", void 0);
|
|
87
|
+
tslib_1.__decorate([
|
|
88
|
+
(0, typeorm_1.RelationId)((entity) => entity.creator),
|
|
89
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
90
|
+
tslib_1.__metadata("design:type", String)
|
|
91
|
+
], KpiMetricValue.prototype, "creatorId", void 0);
|
|
92
|
+
tslib_1.__decorate([
|
|
93
|
+
(0, typeorm_1.ManyToOne)(() => auth_base_1.User, { nullable: true }),
|
|
94
|
+
(0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true }),
|
|
95
|
+
tslib_1.__metadata("design:type", auth_base_1.User)
|
|
96
|
+
], KpiMetricValue.prototype, "updater", void 0);
|
|
97
|
+
tslib_1.__decorate([
|
|
98
|
+
(0, typeorm_1.RelationId)((entity) => entity.updater),
|
|
99
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
100
|
+
tslib_1.__metadata("design:type", String)
|
|
101
|
+
], KpiMetricValue.prototype, "updaterId", void 0);
|
|
102
|
+
exports.KpiMetricValue = KpiMetricValue = tslib_1.__decorate([
|
|
103
|
+
(0, typeorm_1.Entity)(),
|
|
104
|
+
(0, typeorm_1.Index)('ix_kpi_metric_value_latest', ['domain', 'metric', 'valueDate', 'org'], { unique: true }),
|
|
105
|
+
(0, type_graphql_1.ObjectType)({ description: 'Current value for each KPI metric (can be used for both state and history).' })
|
|
106
|
+
], KpiMetricValue);
|
|
107
|
+
//# sourceMappingURL=kpi-metric-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kpi-metric-value.js","sourceRoot":"","sources":["../../../server/service/kpi-metric-value/kpi-metric-value.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Entity,\n PrimaryGeneratedColumn,\n Column,\n ManyToOne,\n Index,\n JoinColumn,\n CreateDateColumn,\n UpdateDateColumn,\n RelationId\n} from 'typeorm'\nimport { ObjectType, Field, ID, Float } from 'type-graphql'\nimport { Domain, ScalarObject } from '@things-factory/shell'\nimport { KpiMetric } from '../kpi-metric/kpi-metric'\nimport { KpiPeriodType } from '../kpi/kpi'\nimport { User } from '@things-factory/auth-base'\n\n@Entity()\n@Index('ix_kpi_metric_value_latest', ['domain', 'metric', 'valueDate', 'org'], { unique: true })\n@ObjectType({ description: 'Current value for each KPI metric (can be used for both state and history).' })\nexport class KpiMetricValue {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n id: string\n\n @ManyToOne(() => Domain)\n @Field(type => Domain, { nullable: true })\n domain?: Domain\n\n @RelationId((entity: KpiMetricValue) => entity.domain)\n @Field({ nullable: true })\n domainId?: string\n\n @ManyToOne(() => KpiMetric, { nullable: false, onDelete: 'CASCADE' })\n @JoinColumn({ name: 'metricId' })\n @Field(type => KpiMetric)\n metric: KpiMetric\n\n @RelationId((entity: KpiMetricValue) => entity.metric)\n @Field()\n metricId: string\n\n @Column('float')\n @Field(type => Float)\n value: number\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n unit?: string\n\n @Column()\n @Field({\n description:\n 'Date or period for which this metric value is recorded (e.g., day: YYYY-MM-DD, month: YYYY-MM, range: YYYY-MM-DD~YYYY-MM-DD).'\n })\n valueDate: string\n\n @Column({ default: 'DAY' })\n @Field(type => KpiPeriodType)\n periodType: KpiPeriodType\n\n @Column({ default: '' })\n @Field({ nullable: true, description: 'Organizational unit for this value (project, department, company, employee, etc.)' })\n org?: string\n\n @Column({ type: 'simple-json', nullable: true })\n @Field(type => ScalarObject, { nullable: true })\n meta?: any\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(() => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((entity: KpiMetricValue) => entity.creator)\n @Field({ nullable: true })\n creatorId?: string\n\n @ManyToOne(() => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((entity: KpiMetricValue) => entity.updater)\n @Field({ nullable: true })\n updaterId?: string\n}\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { KpiOrgScope } from './kpi-org-scope';
|
|
2
|
+
import { KpiOrgScopeQuery } from './kpi-org-scope-query';
|
|
3
|
+
import { KpiOrgScopeMutation } from './kpi-org-scope-mutation';
|
|
4
|
+
export declare const entities: (typeof KpiOrgScope)[];
|
|
5
|
+
export declare const resolvers: (typeof KpiOrgScopeQuery | typeof KpiOrgScopeMutation)[];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolvers = exports.entities = void 0;
|
|
4
|
+
const kpi_org_scope_1 = require("./kpi-org-scope");
|
|
5
|
+
const kpi_org_scope_query_1 = require("./kpi-org-scope-query");
|
|
6
|
+
const kpi_org_scope_mutation_1 = require("./kpi-org-scope-mutation");
|
|
7
|
+
exports.entities = [kpi_org_scope_1.KpiOrgScope];
|
|
8
|
+
exports.resolvers = [kpi_org_scope_query_1.KpiOrgScopeQuery, kpi_org_scope_mutation_1.KpiOrgScopeMutation];
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/kpi-org-scope/index.ts"],"names":[],"mappings":";;;AAAA,mDAA6C;AAC7C,+DAAwD;AACxD,qEAA8D;AAEjD,QAAA,QAAQ,GAAG,CAAC,2BAAW,CAAC,CAAA;AACxB,QAAA,SAAS,GAAG,CAAC,sCAAgB,EAAE,4CAAmB,CAAC,CAAA","sourcesContent":["import { KpiOrgScope } from './kpi-org-scope'\nimport { KpiOrgScopeQuery } from './kpi-org-scope-query'\nimport { KpiOrgScopeMutation } from './kpi-org-scope-mutation'\n\nexport const entities = [KpiOrgScope]\nexport const resolvers = [KpiOrgScopeQuery, KpiOrgScopeMutation]\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { KpiOrgScope } from './kpi-org-scope';
|
|
2
|
+
import { NewKpiOrgScope, KpiOrgScopePatch } from './kpi-org-scope-type';
|
|
3
|
+
export declare class KpiOrgScopeMutation {
|
|
4
|
+
createKpiOrgScope(kpiOrgScope: NewKpiOrgScope, context: ResolverContext): Promise<KpiOrgScope>;
|
|
5
|
+
updateMultipleKpiOrgScope(patches: KpiOrgScopePatch[], context: ResolverContext): Promise<KpiOrgScope[]>;
|
|
6
|
+
deleteKpiOrgScopes(ids: string[], context: ResolverContext): Promise<boolean>;
|
|
7
|
+
bulkUpsertKpiOrgScopes(orgScopes: NewKpiOrgScope[], context: ResolverContext): Promise<KpiOrgScope[]>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KpiOrgScopeMutation = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const type_graphql_1 = require("type-graphql");
|
|
6
|
+
const typeorm_1 = require("typeorm");
|
|
7
|
+
const shell_1 = require("@things-factory/shell");
|
|
8
|
+
const kpi_org_scope_1 = require("./kpi-org-scope");
|
|
9
|
+
const kpi_org_scope_type_1 = require("./kpi-org-scope-type");
|
|
10
|
+
let KpiOrgScopeMutation = class KpiOrgScopeMutation {
|
|
11
|
+
async createKpiOrgScope(kpiOrgScope, context) {
|
|
12
|
+
const { domain, user, tx } = context.state;
|
|
13
|
+
// Check if org already exists for this domain
|
|
14
|
+
const existingOrgScope = await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).findOne({
|
|
15
|
+
where: { domain: { id: domain.id }, org: kpiOrgScope.org }
|
|
16
|
+
});
|
|
17
|
+
if (existingOrgScope) {
|
|
18
|
+
throw new Error(`Organization '${kpiOrgScope.org}' already has a scope mapping in this domain`);
|
|
19
|
+
}
|
|
20
|
+
const entity = {
|
|
21
|
+
...kpiOrgScope,
|
|
22
|
+
domain,
|
|
23
|
+
creator: user,
|
|
24
|
+
updater: user
|
|
25
|
+
};
|
|
26
|
+
return await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).save(entity);
|
|
27
|
+
}
|
|
28
|
+
async updateMultipleKpiOrgScope(patches, context) {
|
|
29
|
+
const { domain, user, tx } = context.state;
|
|
30
|
+
const ids = patches.map(patch => patch.id);
|
|
31
|
+
const existingOrgScopes = await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).find({
|
|
32
|
+
where: {
|
|
33
|
+
domain: { id: domain.id },
|
|
34
|
+
id: (0, typeorm_1.In)(ids)
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
if (existingOrgScopes.length !== patches.length) {
|
|
38
|
+
throw new Error('Some org-scope mappings not found or not accessible');
|
|
39
|
+
}
|
|
40
|
+
const updatedOrgScopes = [];
|
|
41
|
+
for (const patch of patches) {
|
|
42
|
+
const existingOrgScope = existingOrgScopes.find(os => os.id === patch.id);
|
|
43
|
+
if (!existingOrgScope)
|
|
44
|
+
continue;
|
|
45
|
+
// Check if org is being changed and if new org already exists
|
|
46
|
+
if (patch.org && patch.org !== existingOrgScope.org) {
|
|
47
|
+
const duplicateOrgScope = await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).findOne({
|
|
48
|
+
where: {
|
|
49
|
+
domain: { id: domain.id },
|
|
50
|
+
org: patch.org,
|
|
51
|
+
id: (0, typeorm_1.In)(ids.filter(id => id !== patch.id))
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
if (duplicateOrgScope) {
|
|
55
|
+
throw new Error(`Organization '${patch.org}' already has a scope mapping in this domain`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const updatedEntity = {
|
|
59
|
+
...existingOrgScope,
|
|
60
|
+
...patch,
|
|
61
|
+
updater: user,
|
|
62
|
+
updatedAt: new Date()
|
|
63
|
+
};
|
|
64
|
+
const savedOrgScope = await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).save(updatedEntity);
|
|
65
|
+
updatedOrgScopes.push(savedOrgScope);
|
|
66
|
+
}
|
|
67
|
+
return updatedOrgScopes;
|
|
68
|
+
}
|
|
69
|
+
async deleteKpiOrgScopes(ids, context) {
|
|
70
|
+
const { domain, tx } = context.state;
|
|
71
|
+
const existingOrgScopes = await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).find({
|
|
72
|
+
where: {
|
|
73
|
+
domain: { id: domain.id },
|
|
74
|
+
id: (0, typeorm_1.In)(ids)
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
if (existingOrgScopes.length === 0) {
|
|
78
|
+
throw new Error('No org-scope mappings found to delete');
|
|
79
|
+
}
|
|
80
|
+
// Soft delete
|
|
81
|
+
await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).softDelete(existingOrgScopes.map(os => os.id));
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
async bulkUpsertKpiOrgScopes(orgScopes, context) {
|
|
85
|
+
const { domain, user, tx } = context.state;
|
|
86
|
+
const orgs = orgScopes.map(os => os.org);
|
|
87
|
+
const existingOrgScopes = await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).find({
|
|
88
|
+
where: {
|
|
89
|
+
domain: { id: domain.id },
|
|
90
|
+
org: (0, typeorm_1.In)(orgs)
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
const results = [];
|
|
94
|
+
for (const orgScopeData of orgScopes) {
|
|
95
|
+
const existing = existingOrgScopes.find(os => os.org === orgScopeData.org);
|
|
96
|
+
if (existing) {
|
|
97
|
+
// Update existing
|
|
98
|
+
const updatedEntity = {
|
|
99
|
+
...existing,
|
|
100
|
+
...orgScopeData,
|
|
101
|
+
updater: user,
|
|
102
|
+
updatedAt: new Date()
|
|
103
|
+
};
|
|
104
|
+
const updated = await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).save(updatedEntity);
|
|
105
|
+
results.push(updated);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// Create new
|
|
109
|
+
const newEntity = {
|
|
110
|
+
...orgScopeData,
|
|
111
|
+
domain,
|
|
112
|
+
creator: user,
|
|
113
|
+
updater: user
|
|
114
|
+
};
|
|
115
|
+
const saved = await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).save(newEntity);
|
|
116
|
+
results.push(saved);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return results;
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
exports.KpiOrgScopeMutation = KpiOrgScopeMutation;
|
|
123
|
+
tslib_1.__decorate([
|
|
124
|
+
(0, type_graphql_1.Directive)('@privilege(category: "kpi", privilege: "mutation", domainOwnerGranted: true, superUserGranted: true)'),
|
|
125
|
+
(0, type_graphql_1.Directive)('@transaction'),
|
|
126
|
+
(0, type_graphql_1.Mutation)(returns => kpi_org_scope_1.KpiOrgScope, { description: 'Create a new KPI org-scope mapping with the provided details.' }),
|
|
127
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('kpiOrgScope', { description: 'Input object containing details for the new org-scope mapping.' })),
|
|
128
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
129
|
+
tslib_1.__metadata("design:type", Function),
|
|
130
|
+
tslib_1.__metadata("design:paramtypes", [kpi_org_scope_type_1.NewKpiOrgScope, Object]),
|
|
131
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
132
|
+
], KpiOrgScopeMutation.prototype, "createKpiOrgScope", null);
|
|
133
|
+
tslib_1.__decorate([
|
|
134
|
+
(0, type_graphql_1.Directive)('@privilege(category: "kpi", privilege: "mutation", domainOwnerGranted: true, superUserGranted: true)'),
|
|
135
|
+
(0, type_graphql_1.Directive)('@transaction'),
|
|
136
|
+
(0, type_graphql_1.Mutation)(returns => [kpi_org_scope_1.KpiOrgScope], {
|
|
137
|
+
description: 'Update multiple KPI org-scope mappings with the provided patches.'
|
|
138
|
+
}),
|
|
139
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('patches', type => [kpi_org_scope_type_1.KpiOrgScopePatch], {
|
|
140
|
+
description: 'Array of patch objects for updating org-scope mappings.'
|
|
141
|
+
})),
|
|
142
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
143
|
+
tslib_1.__metadata("design:type", Function),
|
|
144
|
+
tslib_1.__metadata("design:paramtypes", [Array, Object]),
|
|
145
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
146
|
+
], KpiOrgScopeMutation.prototype, "updateMultipleKpiOrgScope", null);
|
|
147
|
+
tslib_1.__decorate([
|
|
148
|
+
(0, type_graphql_1.Directive)('@privilege(category: "kpi", privilege: "mutation", domainOwnerGranted: true, superUserGranted: true)'),
|
|
149
|
+
(0, type_graphql_1.Directive)('@transaction'),
|
|
150
|
+
(0, type_graphql_1.Mutation)(returns => Boolean, { description: 'Delete KPI org-scope mappings by their IDs.' }),
|
|
151
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('ids', type => [String], { description: 'Array of org-scope mapping IDs to delete.' })),
|
|
152
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
153
|
+
tslib_1.__metadata("design:type", Function),
|
|
154
|
+
tslib_1.__metadata("design:paramtypes", [Array, Object]),
|
|
155
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
156
|
+
], KpiOrgScopeMutation.prototype, "deleteKpiOrgScopes", null);
|
|
157
|
+
tslib_1.__decorate([
|
|
158
|
+
(0, type_graphql_1.Directive)('@privilege(category: "kpi", privilege: "mutation", domainOwnerGranted: true, superUserGranted: true)'),
|
|
159
|
+
(0, type_graphql_1.Directive)('@transaction'),
|
|
160
|
+
(0, type_graphql_1.Mutation)(returns => [kpi_org_scope_1.KpiOrgScope], { description: 'Bulk create or update KPI org-scope mappings.' }),
|
|
161
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('orgScopes', type => [kpi_org_scope_type_1.NewKpiOrgScope], { description: 'Array of org-scope mapping data for bulk upsert.' })),
|
|
162
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
163
|
+
tslib_1.__metadata("design:type", Function),
|
|
164
|
+
tslib_1.__metadata("design:paramtypes", [Array, Object]),
|
|
165
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
166
|
+
], KpiOrgScopeMutation.prototype, "bulkUpsertKpiOrgScopes", null);
|
|
167
|
+
exports.KpiOrgScopeMutation = KpiOrgScopeMutation = tslib_1.__decorate([
|
|
168
|
+
(0, type_graphql_1.Resolver)(kpi_org_scope_1.KpiOrgScope)
|
|
169
|
+
], KpiOrgScopeMutation);
|
|
170
|
+
//# sourceMappingURL=kpi-org-scope-mutation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kpi-org-scope-mutation.js","sourceRoot":"","sources":["../../../server/service/kpi-org-scope/kpi-org-scope-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\nimport { getRepository } from '@things-factory/shell'\n\nimport { KpiOrgScope } from './kpi-org-scope'\nimport { NewKpiOrgScope, KpiOrgScopePatch } from './kpi-org-scope-type'\n\n@Resolver(KpiOrgScope)\nexport class KpiOrgScopeMutation {\n @Directive('@privilege(category: \"kpi\", privilege: \"mutation\", domainOwnerGranted: true, superUserGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => KpiOrgScope, { description: 'Create a new KPI org-scope mapping with the provided details.' })\n async createKpiOrgScope(\n @Arg('kpiOrgScope', { description: 'Input object containing details for the new org-scope mapping.' })\n kpiOrgScope: NewKpiOrgScope,\n @Ctx() context: ResolverContext\n ): Promise<KpiOrgScope> {\n const { domain, user, tx } = context.state\n\n // Check if org already exists for this domain\n const existingOrgScope = await getRepository(KpiOrgScope, tx).findOne({\n where: { domain: { id: domain.id }, org: kpiOrgScope.org }\n })\n\n if (existingOrgScope) {\n throw new Error(`Organization '${kpiOrgScope.org}' already has a scope mapping in this domain`)\n }\n\n const entity: Partial<KpiOrgScope> = {\n ...kpiOrgScope,\n domain,\n creator: user,\n updater: user\n }\n\n return await getRepository(KpiOrgScope, tx).save(entity)\n }\n\n @Directive('@privilege(category: \"kpi\", privilege: \"mutation\", domainOwnerGranted: true, superUserGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [KpiOrgScope], {\n description: 'Update multiple KPI org-scope mappings with the provided patches.'\n })\n async updateMultipleKpiOrgScope(\n @Arg('patches', type => [KpiOrgScopePatch], {\n description: 'Array of patch objects for updating org-scope mappings.'\n })\n patches: KpiOrgScopePatch[],\n @Ctx() context: ResolverContext\n ): Promise<KpiOrgScope[]> {\n const { domain, user, tx } = context.state\n\n const ids = patches.map(patch => patch.id)\n const existingOrgScopes = await getRepository(KpiOrgScope, tx).find({\n where: {\n domain: { id: domain.id },\n id: In(ids)\n }\n })\n\n if (existingOrgScopes.length !== patches.length) {\n throw new Error('Some org-scope mappings not found or not accessible')\n }\n\n const updatedOrgScopes: KpiOrgScope[] = []\n\n for (const patch of patches) {\n const existingOrgScope = existingOrgScopes.find(os => os.id === patch.id)\n if (!existingOrgScope) continue\n\n // Check if org is being changed and if new org already exists\n if (patch.org && patch.org !== existingOrgScope.org) {\n const duplicateOrgScope = await getRepository(KpiOrgScope, tx).findOne({\n where: {\n domain: { id: domain.id },\n org: patch.org,\n id: In(ids.filter(id => id !== patch.id))\n }\n })\n if (duplicateOrgScope) {\n throw new Error(`Organization '${patch.org}' already has a scope mapping in this domain`)\n }\n }\n\n const updatedEntity: Partial<KpiOrgScope> = {\n ...existingOrgScope,\n ...patch,\n updater: user,\n updatedAt: new Date()\n }\n\n const savedOrgScope = await getRepository(KpiOrgScope, tx).save(updatedEntity)\n updatedOrgScopes.push(savedOrgScope)\n }\n\n return updatedOrgScopes\n }\n\n @Directive('@privilege(category: \"kpi\", privilege: \"mutation\", domainOwnerGranted: true, superUserGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'Delete KPI org-scope mappings by their IDs.' })\n async deleteKpiOrgScopes(\n @Arg('ids', type => [String], { description: 'Array of org-scope mapping IDs to delete.' }) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n const existingOrgScopes = await getRepository(KpiOrgScope, tx).find({\n where: {\n domain: { id: domain.id },\n id: In(ids)\n }\n })\n\n if (existingOrgScopes.length === 0) {\n throw new Error('No org-scope mappings found to delete')\n }\n\n // Soft delete\n await getRepository(KpiOrgScope, tx).softDelete(existingOrgScopes.map(os => os.id))\n\n return true\n }\n\n @Directive('@privilege(category: \"kpi\", privilege: \"mutation\", domainOwnerGranted: true, superUserGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [KpiOrgScope], { description: 'Bulk create or update KPI org-scope mappings.' })\n async bulkUpsertKpiOrgScopes(\n @Arg('orgScopes', type => [NewKpiOrgScope], { description: 'Array of org-scope mapping data for bulk upsert.' })\n orgScopes: NewKpiOrgScope[],\n @Ctx() context: ResolverContext\n ): Promise<KpiOrgScope[]> {\n const { domain, user, tx } = context.state\n\n const orgs = orgScopes.map(os => os.org)\n const existingOrgScopes = await getRepository(KpiOrgScope, tx).find({\n where: {\n domain: { id: domain.id },\n org: In(orgs)\n }\n })\n\n const results: KpiOrgScope[] = []\n\n for (const orgScopeData of orgScopes) {\n const existing = existingOrgScopes.find(os => os.org === orgScopeData.org)\n\n if (existing) {\n // Update existing\n const updatedEntity: Partial<KpiOrgScope> = {\n ...existing,\n ...orgScopeData,\n updater: user,\n updatedAt: new Date()\n }\n const updated = await getRepository(KpiOrgScope, tx).save(updatedEntity)\n results.push(updated)\n } else {\n // Create new\n const newEntity: Partial<KpiOrgScope> = {\n ...orgScopeData,\n domain,\n creator: user,\n updater: user\n }\n const saved = await getRepository(KpiOrgScope, tx).save(newEntity)\n results.push(saved)\n }\n }\n\n return results\n }\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Domain, ListParam } from '@things-factory/shell';
|
|
2
|
+
import { User } from '@things-factory/auth-base';
|
|
3
|
+
import { KpiOrgScope } from './kpi-org-scope';
|
|
4
|
+
import { KpiOrgScopeList } from './kpi-org-scope-type';
|
|
5
|
+
export declare class KpiOrgScopeQuery {
|
|
6
|
+
kpiOrgScope(id: string, context: ResolverContext): Promise<KpiOrgScope>;
|
|
7
|
+
kpiOrgScopes(params: ListParam, context: ResolverContext): Promise<KpiOrgScopeList>;
|
|
8
|
+
kpiOrgScopeValues(scopeField: 'scope01' | 'scope02' | 'scope03' | 'scope04' | 'scope05', context: ResolverContext, searchTerm?: string): Promise<string[]>;
|
|
9
|
+
kpiOrgValues(context: ResolverContext, searchTerm?: string): Promise<string[]>;
|
|
10
|
+
kpiOrgScopeByOrg(org: string, context: ResolverContext): Promise<KpiOrgScope | undefined>;
|
|
11
|
+
domain(kpiOrgScope: KpiOrgScope): Promise<Domain>;
|
|
12
|
+
creator(kpiOrgScope: KpiOrgScope): Promise<User>;
|
|
13
|
+
updater(kpiOrgScope: KpiOrgScope): Promise<User>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KpiOrgScopeQuery = 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 auth_base_1 = require("@things-factory/auth-base");
|
|
8
|
+
const kpi_org_scope_1 = require("./kpi-org-scope");
|
|
9
|
+
const kpi_org_scope_type_1 = require("./kpi-org-scope-type");
|
|
10
|
+
let KpiOrgScopeQuery = class KpiOrgScopeQuery {
|
|
11
|
+
async kpiOrgScope(id, context) {
|
|
12
|
+
const { domain } = context.state;
|
|
13
|
+
return await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope).findOne({
|
|
14
|
+
where: { domain: { id: domain.id }, id }
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
async kpiOrgScopes(params, context) {
|
|
18
|
+
const { domain } = context.state;
|
|
19
|
+
const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
|
|
20
|
+
domain,
|
|
21
|
+
params,
|
|
22
|
+
repository: await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope),
|
|
23
|
+
searchables: ['org', 'scope01', 'scope02', 'scope03', 'scope04', 'scope05']
|
|
24
|
+
});
|
|
25
|
+
const [items, total] = await queryBuilder.getManyAndCount();
|
|
26
|
+
return { items, total };
|
|
27
|
+
}
|
|
28
|
+
async kpiOrgScopeValues(scopeField, context, searchTerm) {
|
|
29
|
+
const { domain } = context.state;
|
|
30
|
+
const queryBuilder = (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope)
|
|
31
|
+
.createQueryBuilder('orgScope')
|
|
32
|
+
.select(`DISTINCT orgScope.${scopeField}`, 'value')
|
|
33
|
+
.where('orgScope.domain_id = :domainId', { domainId: domain.id })
|
|
34
|
+
.andWhere(`orgScope.${scopeField} IS NOT NULL`)
|
|
35
|
+
.andWhere(`orgScope.${scopeField} != ''`)
|
|
36
|
+
.andWhere('orgScope.active = true');
|
|
37
|
+
if (searchTerm) {
|
|
38
|
+
queryBuilder.andWhere(`orgScope.${scopeField} ILIKE :searchTerm`, {
|
|
39
|
+
searchTerm: `%${searchTerm}%`
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
const results = await queryBuilder.getRawMany();
|
|
43
|
+
return results.map(r => r.value).filter(v => v);
|
|
44
|
+
}
|
|
45
|
+
async kpiOrgValues(context, searchTerm) {
|
|
46
|
+
const { domain } = context.state;
|
|
47
|
+
const queryBuilder = (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope)
|
|
48
|
+
.createQueryBuilder('orgScope')
|
|
49
|
+
.select('DISTINCT orgScope.org', 'value')
|
|
50
|
+
.where('orgScope.domain_id = :domainId', { domainId: domain.id })
|
|
51
|
+
.andWhere('orgScope.active = true');
|
|
52
|
+
if (searchTerm) {
|
|
53
|
+
queryBuilder.andWhere('orgScope.org ILIKE :searchTerm', {
|
|
54
|
+
searchTerm: `%${searchTerm}%`
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
const results = await queryBuilder.getRawMany();
|
|
58
|
+
return results.map(r => r.value);
|
|
59
|
+
}
|
|
60
|
+
async kpiOrgScopeByOrg(org, context) {
|
|
61
|
+
const { domain } = context.state;
|
|
62
|
+
return await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope).findOne({
|
|
63
|
+
where: { domain: { id: domain.id }, org }
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
async domain(kpiOrgScope) {
|
|
67
|
+
return kpiOrgScope.domainId && (await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({ id: kpiOrgScope.domainId }));
|
|
68
|
+
}
|
|
69
|
+
async creator(kpiOrgScope) {
|
|
70
|
+
return kpiOrgScope.creatorId && (await (0, shell_1.getRepository)(auth_base_1.User).findOneBy({ id: kpiOrgScope.creatorId }));
|
|
71
|
+
}
|
|
72
|
+
async updater(kpiOrgScope) {
|
|
73
|
+
return kpiOrgScope.updaterId && (await (0, shell_1.getRepository)(auth_base_1.User).findOneBy({ id: kpiOrgScope.updaterId }));
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
exports.KpiOrgScopeQuery = KpiOrgScopeQuery;
|
|
77
|
+
tslib_1.__decorate([
|
|
78
|
+
(0, type_graphql_1.Directive)('@privilege(category: "kpi", privilege: "query", domainOwnerGranted: true, superUserGranted: true)'),
|
|
79
|
+
(0, type_graphql_1.Query)(returns => kpi_org_scope_1.KpiOrgScope, {
|
|
80
|
+
nullable: true,
|
|
81
|
+
description: 'Fetch a single KPI org-scope mapping by its unique identifier.'
|
|
82
|
+
}),
|
|
83
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('id', { description: 'Unique identifier of the org-scope mapping to fetch.' })),
|
|
84
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
85
|
+
tslib_1.__metadata("design:type", Function),
|
|
86
|
+
tslib_1.__metadata("design:paramtypes", [String, Object]),
|
|
87
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
88
|
+
], KpiOrgScopeQuery.prototype, "kpiOrgScope", null);
|
|
89
|
+
tslib_1.__decorate([
|
|
90
|
+
(0, type_graphql_1.Directive)('@privilege(category: "kpi", privilege: "query", domainOwnerGranted: true, superUserGranted: true)'),
|
|
91
|
+
(0, type_graphql_1.Query)(returns => kpi_org_scope_type_1.KpiOrgScopeList, {
|
|
92
|
+
description: 'Fetch multiple KPI org-scope mappings with filters and pagination'
|
|
93
|
+
}),
|
|
94
|
+
tslib_1.__param(0, (0, type_graphql_1.Args)(type => shell_1.ListParam)),
|
|
95
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
96
|
+
tslib_1.__metadata("design:type", Function),
|
|
97
|
+
tslib_1.__metadata("design:paramtypes", [shell_1.ListParam, Object]),
|
|
98
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
99
|
+
], KpiOrgScopeQuery.prototype, "kpiOrgScopes", null);
|
|
100
|
+
tslib_1.__decorate([
|
|
101
|
+
(0, type_graphql_1.Directive)('@privilege(category: "kpi", privilege: "query", domainOwnerGranted: true, superUserGranted: true)'),
|
|
102
|
+
(0, type_graphql_1.Query)(returns => [String], { description: 'Get distinct values for a specific scope field' }),
|
|
103
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('scopeField', { description: 'Scope field to get distinct values from' })),
|
|
104
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
105
|
+
tslib_1.__param(2, (0, type_graphql_1.Arg)('searchTerm', { nullable: true, description: 'Optional search term to filter values' })),
|
|
106
|
+
tslib_1.__metadata("design:type", Function),
|
|
107
|
+
tslib_1.__metadata("design:paramtypes", [String, Object, String]),
|
|
108
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
109
|
+
], KpiOrgScopeQuery.prototype, "kpiOrgScopeValues", null);
|
|
110
|
+
tslib_1.__decorate([
|
|
111
|
+
(0, type_graphql_1.Directive)('@privilege(category: "kpi", privilege: "query", domainOwnerGranted: true, superUserGranted: true)'),
|
|
112
|
+
(0, type_graphql_1.Query)(returns => [String], { description: 'Get distinct org values' }),
|
|
113
|
+
tslib_1.__param(0, (0, type_graphql_1.Ctx)()),
|
|
114
|
+
tslib_1.__param(1, (0, type_graphql_1.Arg)('searchTerm', { nullable: true, description: 'Optional search term to filter org values' })),
|
|
115
|
+
tslib_1.__metadata("design:type", Function),
|
|
116
|
+
tslib_1.__metadata("design:paramtypes", [Object, String]),
|
|
117
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
118
|
+
], KpiOrgScopeQuery.prototype, "kpiOrgValues", null);
|
|
119
|
+
tslib_1.__decorate([
|
|
120
|
+
(0, type_graphql_1.Directive)('@privilege(category: "kpi", privilege: "query", domainOwnerGranted: true, superUserGranted: true)'),
|
|
121
|
+
(0, type_graphql_1.Query)(returns => kpi_org_scope_1.KpiOrgScope, { nullable: true, description: 'Find org-scope mapping by org identifier' }),
|
|
122
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('org', { description: 'Organization identifier to search for' })),
|
|
123
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
124
|
+
tslib_1.__metadata("design:type", Function),
|
|
125
|
+
tslib_1.__metadata("design:paramtypes", [String, Object]),
|
|
126
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
127
|
+
], KpiOrgScopeQuery.prototype, "kpiOrgScopeByOrg", null);
|
|
128
|
+
tslib_1.__decorate([
|
|
129
|
+
(0, type_graphql_1.FieldResolver)(type => shell_1.Domain),
|
|
130
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
131
|
+
tslib_1.__metadata("design:type", Function),
|
|
132
|
+
tslib_1.__metadata("design:paramtypes", [kpi_org_scope_1.KpiOrgScope]),
|
|
133
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
134
|
+
], KpiOrgScopeQuery.prototype, "domain", null);
|
|
135
|
+
tslib_1.__decorate([
|
|
136
|
+
(0, type_graphql_1.FieldResolver)(type => auth_base_1.User),
|
|
137
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
138
|
+
tslib_1.__metadata("design:type", Function),
|
|
139
|
+
tslib_1.__metadata("design:paramtypes", [kpi_org_scope_1.KpiOrgScope]),
|
|
140
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
141
|
+
], KpiOrgScopeQuery.prototype, "creator", null);
|
|
142
|
+
tslib_1.__decorate([
|
|
143
|
+
(0, type_graphql_1.FieldResolver)(type => auth_base_1.User),
|
|
144
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
145
|
+
tslib_1.__metadata("design:type", Function),
|
|
146
|
+
tslib_1.__metadata("design:paramtypes", [kpi_org_scope_1.KpiOrgScope]),
|
|
147
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
148
|
+
], KpiOrgScopeQuery.prototype, "updater", null);
|
|
149
|
+
exports.KpiOrgScopeQuery = KpiOrgScopeQuery = tslib_1.__decorate([
|
|
150
|
+
(0, type_graphql_1.Resolver)(kpi_org_scope_1.KpiOrgScope)
|
|
151
|
+
], KpiOrgScopeQuery);
|
|
152
|
+
//# sourceMappingURL=kpi-org-scope-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kpi-org-scope-query.js","sourceRoot":"","sources":["../../../server/service/kpi-org-scope/kpi-org-scope-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\nimport { KpiOrgScope } from './kpi-org-scope'\nimport { KpiOrgScopeList } from './kpi-org-scope-type'\n\n@Resolver(KpiOrgScope)\nexport class KpiOrgScopeQuery {\n @Directive('@privilege(category: \"kpi\", privilege: \"query\", domainOwnerGranted: true, superUserGranted: true)')\n @Query(returns => KpiOrgScope!, {\n nullable: true,\n description: 'Fetch a single KPI org-scope mapping by its unique identifier.'\n })\n async kpiOrgScope(\n @Arg('id', { description: 'Unique identifier of the org-scope mapping to fetch.' }) id: string,\n @Ctx() context: ResolverContext\n ): Promise<KpiOrgScope> {\n const { domain } = context.state\n\n return await getRepository(KpiOrgScope).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Directive('@privilege(category: \"kpi\", privilege: \"query\", domainOwnerGranted: true, superUserGranted: true)')\n @Query(returns => KpiOrgScopeList, {\n description: 'Fetch multiple KPI org-scope mappings with filters and pagination'\n })\n async kpiOrgScopes(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<KpiOrgScopeList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n domain,\n params,\n repository: await getRepository(KpiOrgScope),\n searchables: ['org', 'scope01', 'scope02', 'scope03', 'scope04', 'scope05']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"kpi\", privilege: \"query\", domainOwnerGranted: true, superUserGranted: true)')\n @Query(returns => [String], { description: 'Get distinct values for a specific scope field' })\n async kpiOrgScopeValues(\n @Arg('scopeField', { description: 'Scope field to get distinct values from' })\n scopeField: 'scope01' | 'scope02' | 'scope03' | 'scope04' | 'scope05',\n @Ctx() context: ResolverContext,\n @Arg('searchTerm', { nullable: true, description: 'Optional search term to filter values' }) searchTerm?: string\n ): Promise<string[]> {\n const { domain } = context.state\n\n const queryBuilder = getRepository(KpiOrgScope)\n .createQueryBuilder('orgScope')\n .select(`DISTINCT orgScope.${scopeField}`, 'value')\n .where('orgScope.domain_id = :domainId', { domainId: domain.id })\n .andWhere(`orgScope.${scopeField} IS NOT NULL`)\n .andWhere(`orgScope.${scopeField} != ''`)\n .andWhere('orgScope.active = true')\n\n if (searchTerm) {\n queryBuilder.andWhere(`orgScope.${scopeField} ILIKE :searchTerm`, {\n searchTerm: `%${searchTerm}%`\n })\n }\n\n const results = await queryBuilder.getRawMany()\n return results.map(r => r.value).filter(v => v)\n }\n\n @Directive('@privilege(category: \"kpi\", privilege: \"query\", domainOwnerGranted: true, superUserGranted: true)')\n @Query(returns => [String], { description: 'Get distinct org values' })\n async kpiOrgValues(\n @Ctx() context: ResolverContext,\n @Arg('searchTerm', { nullable: true, description: 'Optional search term to filter org values' }) searchTerm?: string\n ): Promise<string[]> {\n const { domain } = context.state\n\n const queryBuilder = getRepository(KpiOrgScope)\n .createQueryBuilder('orgScope')\n .select('DISTINCT orgScope.org', 'value')\n .where('orgScope.domain_id = :domainId', { domainId: domain.id })\n .andWhere('orgScope.active = true')\n\n if (searchTerm) {\n queryBuilder.andWhere('orgScope.org ILIKE :searchTerm', {\n searchTerm: `%${searchTerm}%`\n })\n }\n\n const results = await queryBuilder.getRawMany()\n return results.map(r => r.value)\n }\n\n @Directive('@privilege(category: \"kpi\", privilege: \"query\", domainOwnerGranted: true, superUserGranted: true)')\n @Query(returns => KpiOrgScope, { nullable: true, description: 'Find org-scope mapping by org identifier' })\n async kpiOrgScopeByOrg(\n @Arg('org', { description: 'Organization identifier to search for' }) org: string,\n @Ctx() context: ResolverContext\n ): Promise<KpiOrgScope | undefined> {\n const { domain } = context.state\n\n return await getRepository(KpiOrgScope).findOne({\n where: { domain: { id: domain.id }, org }\n })\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() kpiOrgScope: KpiOrgScope): Promise<Domain> {\n return kpiOrgScope.domainId && (await getRepository(Domain).findOneBy({ id: kpiOrgScope.domainId }))\n }\n\n @FieldResolver(type => User)\n async creator(@Root() kpiOrgScope: KpiOrgScope): Promise<User> {\n return kpiOrgScope.creatorId && (await getRepository(User).findOneBy({ id: kpiOrgScope.creatorId }))\n }\n\n @FieldResolver(type => User)\n async updater(@Root() kpiOrgScope: KpiOrgScope): Promise<User> {\n return kpiOrgScope.updaterId && (await getRepository(User).findOneBy({ id: kpiOrgScope.updaterId }))\n }\n}\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { KpiOrgScope } from './kpi-org-scope';
|
|
2
|
+
export declare class NewKpiOrgScope {
|
|
3
|
+
org: string;
|
|
4
|
+
scope01?: string;
|
|
5
|
+
scope02?: string;
|
|
6
|
+
scope03?: string;
|
|
7
|
+
scope04?: string;
|
|
8
|
+
scope05?: string;
|
|
9
|
+
displayName?: string;
|
|
10
|
+
active?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare class KpiOrgScopePatch {
|
|
13
|
+
id: string;
|
|
14
|
+
org?: string;
|
|
15
|
+
scope01?: string;
|
|
16
|
+
scope02?: string;
|
|
17
|
+
scope03?: string;
|
|
18
|
+
scope04?: string;
|
|
19
|
+
scope05?: string;
|
|
20
|
+
displayName?: string;
|
|
21
|
+
active?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare class KpiOrgScopeList {
|
|
24
|
+
items: KpiOrgScope[];
|
|
25
|
+
total: number;
|
|
26
|
+
}
|