@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,444 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { LitElement, html, css } from 'lit';
|
|
3
|
+
import { customElement, property, state } from 'lit/decorators.js';
|
|
4
|
+
import '../../../google-map/common-google-map.js';
|
|
5
|
+
let KpiMapPanel = class KpiMapPanel extends LitElement {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.selectedCategory = '전체 KPI';
|
|
9
|
+
this.mapData = [];
|
|
10
|
+
this.map = null;
|
|
11
|
+
this.startYear = '전체';
|
|
12
|
+
this.startMonth = '전체';
|
|
13
|
+
this.endYear = '전체';
|
|
14
|
+
this.endMonth = '전체';
|
|
15
|
+
}
|
|
16
|
+
static { this.styles = css `
|
|
17
|
+
:host {
|
|
18
|
+
display: flex;
|
|
19
|
+
background: #f8f9fa;
|
|
20
|
+
overflow: hidden;
|
|
21
|
+
position: relative;
|
|
22
|
+
min-height: 500px;
|
|
23
|
+
}
|
|
24
|
+
.map-overlay {
|
|
25
|
+
position: absolute;
|
|
26
|
+
top: 16px;
|
|
27
|
+
left: 16px;
|
|
28
|
+
z-index: 10;
|
|
29
|
+
background: rgba(255, 255, 255, 0.95);
|
|
30
|
+
border-radius: 8px;
|
|
31
|
+
padding: 12px 16px;
|
|
32
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
33
|
+
backdrop-filter: blur(4px);
|
|
34
|
+
}
|
|
35
|
+
.category-buttons {
|
|
36
|
+
display: flex;
|
|
37
|
+
gap: 8px;
|
|
38
|
+
flex-wrap: wrap;
|
|
39
|
+
}
|
|
40
|
+
.category-button {
|
|
41
|
+
padding: 6px 12px;
|
|
42
|
+
border: 1px solid #ced4da;
|
|
43
|
+
background: #fff;
|
|
44
|
+
border-radius: 4px;
|
|
45
|
+
cursor: pointer;
|
|
46
|
+
font-size: 0.85rem;
|
|
47
|
+
transition: all 0.2s;
|
|
48
|
+
white-space: nowrap;
|
|
49
|
+
}
|
|
50
|
+
.category-button.active {
|
|
51
|
+
background: #667eea;
|
|
52
|
+
color: white;
|
|
53
|
+
border-color: #667eea;
|
|
54
|
+
}
|
|
55
|
+
.category-button:hover {
|
|
56
|
+
background: #f8f9fa;
|
|
57
|
+
}
|
|
58
|
+
.category-button.active:hover {
|
|
59
|
+
background: #5a6fd8;
|
|
60
|
+
}
|
|
61
|
+
.period-form {
|
|
62
|
+
margin-top: 12px;
|
|
63
|
+
padding-top: 12px;
|
|
64
|
+
border-top: 1px solid #e9ecef;
|
|
65
|
+
}
|
|
66
|
+
.period-row {
|
|
67
|
+
display: flex;
|
|
68
|
+
align-items: center;
|
|
69
|
+
gap: 8px;
|
|
70
|
+
margin-bottom: 8px;
|
|
71
|
+
}
|
|
72
|
+
.period-label {
|
|
73
|
+
font-size: 0.85rem;
|
|
74
|
+
font-weight: 600;
|
|
75
|
+
color: #495057;
|
|
76
|
+
min-width: 40px;
|
|
77
|
+
}
|
|
78
|
+
.period-select {
|
|
79
|
+
padding: 4px 8px;
|
|
80
|
+
border: 1px solid #ced4da;
|
|
81
|
+
border-radius: 4px;
|
|
82
|
+
background: white;
|
|
83
|
+
font-size: 0.8rem;
|
|
84
|
+
cursor: pointer;
|
|
85
|
+
}
|
|
86
|
+
.period-select:focus {
|
|
87
|
+
outline: none;
|
|
88
|
+
border-color: #667eea;
|
|
89
|
+
}
|
|
90
|
+
.period-separator {
|
|
91
|
+
font-size: 0.85rem;
|
|
92
|
+
color: #6c757d;
|
|
93
|
+
margin: 0 4px;
|
|
94
|
+
}
|
|
95
|
+
.map-container {
|
|
96
|
+
flex: 1;
|
|
97
|
+
position: relative;
|
|
98
|
+
overflow: hidden;
|
|
99
|
+
}
|
|
100
|
+
.map-controls {
|
|
101
|
+
position: absolute;
|
|
102
|
+
top: 16px;
|
|
103
|
+
right: 16px;
|
|
104
|
+
display: flex;
|
|
105
|
+
flex-direction: column;
|
|
106
|
+
gap: 8px;
|
|
107
|
+
z-index: 10;
|
|
108
|
+
}
|
|
109
|
+
.map-control-button {
|
|
110
|
+
width: 40px;
|
|
111
|
+
height: 40px;
|
|
112
|
+
background: white;
|
|
113
|
+
border: 1px solid #ced4da;
|
|
114
|
+
border-radius: 6px;
|
|
115
|
+
cursor: pointer;
|
|
116
|
+
display: flex;
|
|
117
|
+
align-items: center;
|
|
118
|
+
justify-content: center;
|
|
119
|
+
font-size: 1.2rem;
|
|
120
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
121
|
+
}
|
|
122
|
+
.map-control-button:hover {
|
|
123
|
+
background: #f8f9fa;
|
|
124
|
+
}
|
|
125
|
+
.map-scale-direction {
|
|
126
|
+
position: absolute;
|
|
127
|
+
bottom: 16px;
|
|
128
|
+
right: 16px;
|
|
129
|
+
background: white;
|
|
130
|
+
padding: 8px 12px;
|
|
131
|
+
border-radius: 6px;
|
|
132
|
+
border: 1px solid #ced4da;
|
|
133
|
+
font-size: 0.8rem;
|
|
134
|
+
color: #666;
|
|
135
|
+
z-index: 10;
|
|
136
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
137
|
+
text-align: center;
|
|
138
|
+
}
|
|
139
|
+
.north-arrow {
|
|
140
|
+
font-size: 1rem;
|
|
141
|
+
margin-bottom: 4px;
|
|
142
|
+
}
|
|
143
|
+
.scale-info {
|
|
144
|
+
font-size: 0.7rem;
|
|
145
|
+
}
|
|
146
|
+
common-google-map {
|
|
147
|
+
width: 100%;
|
|
148
|
+
height: 100%;
|
|
149
|
+
}
|
|
150
|
+
`; }
|
|
151
|
+
// mapData를 지도 마커 형식으로 변환
|
|
152
|
+
get mapLocations() {
|
|
153
|
+
return (this.mapData?.map(item => ({
|
|
154
|
+
lat: item.lat,
|
|
155
|
+
lng: item.lng,
|
|
156
|
+
title: item.region,
|
|
157
|
+
region: item.region, // 지역명 추가
|
|
158
|
+
// 커스텀 마커 콘텐츠 생성
|
|
159
|
+
markerContent: `
|
|
160
|
+
<div style="
|
|
161
|
+
background: white;
|
|
162
|
+
border-radius: 8px;
|
|
163
|
+
padding: 8px 12px;
|
|
164
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
|
|
165
|
+
border: 1px solid #e9ecef;
|
|
166
|
+
min-width: 80px;
|
|
167
|
+
text-align: center;
|
|
168
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
169
|
+
cursor: pointer;
|
|
170
|
+
">
|
|
171
|
+
<div style="
|
|
172
|
+
font-size: 11px;
|
|
173
|
+
font-weight: 600;
|
|
174
|
+
color: #495057;
|
|
175
|
+
margin-bottom: 2px;
|
|
176
|
+
white-space: nowrap;
|
|
177
|
+
">${item.region}</div>
|
|
178
|
+
<div style="
|
|
179
|
+
font-size: 13px;
|
|
180
|
+
font-weight: 700;
|
|
181
|
+
color: #212529;
|
|
182
|
+
margin-bottom: 2px;
|
|
183
|
+
">${item.kpi}</div>
|
|
184
|
+
<div style="
|
|
185
|
+
font-size: 10px;
|
|
186
|
+
color: ${item.change > 0 ? '#dc3545' : '#198754'};
|
|
187
|
+
font-weight: 500;
|
|
188
|
+
">${item.change > 0 ? '▲' : '▼'} ${Math.abs(item.change)}%</div>
|
|
189
|
+
</div>
|
|
190
|
+
`,
|
|
191
|
+
content: `
|
|
192
|
+
<div style="padding: 12px; min-width: 200px;">
|
|
193
|
+
<h3 style="margin: 0 0 8px 0; font-size: 16px; color: #212529;">${item.region}</h3>
|
|
194
|
+
<div style="margin-bottom: 8px;">
|
|
195
|
+
<span style="font-size: 14px; color: #6c757d;">KPI: </span>
|
|
196
|
+
<span style="font-size: 16px; font-weight: 600; color: #212529;">${item.kpi}</span>
|
|
197
|
+
</div>
|
|
198
|
+
<div style="
|
|
199
|
+
font-size: 14px;
|
|
200
|
+
color: ${item.change > 0 ? '#dc3545' : '#198754'};
|
|
201
|
+
font-weight: 500;
|
|
202
|
+
">
|
|
203
|
+
${item.change > 0 ? '▲' : '▼'} ${Math.abs(item.change)}% 변화
|
|
204
|
+
</div>
|
|
205
|
+
</div>
|
|
206
|
+
`
|
|
207
|
+
})) || []);
|
|
208
|
+
}
|
|
209
|
+
onCategoryButtonClick(category) {
|
|
210
|
+
this.dispatchEvent(new CustomEvent('category-change', {
|
|
211
|
+
detail: { category },
|
|
212
|
+
bubbles: true,
|
|
213
|
+
composed: true
|
|
214
|
+
}));
|
|
215
|
+
}
|
|
216
|
+
onMapChange(event) {
|
|
217
|
+
this.map = event.detail;
|
|
218
|
+
}
|
|
219
|
+
onRegionClick(event) {
|
|
220
|
+
this.dispatchEvent(new CustomEvent('region-click', {
|
|
221
|
+
detail: event.detail,
|
|
222
|
+
bubbles: true,
|
|
223
|
+
composed: true
|
|
224
|
+
}));
|
|
225
|
+
}
|
|
226
|
+
zoomIn() {
|
|
227
|
+
if (this.map) {
|
|
228
|
+
this.map.setZoom(this.map.getZoom() + 1);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
zoomOut() {
|
|
232
|
+
if (this.map) {
|
|
233
|
+
this.map.setZoom(this.map.getZoom() - 1);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
resetView() {
|
|
237
|
+
if (this.map) {
|
|
238
|
+
this.map.setCenter({ lat: 36.5, lng: 127.5 });
|
|
239
|
+
this.map.setZoom(7);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
onPeriodChange() {
|
|
243
|
+
this.dispatchEvent(new CustomEvent('period-change', {
|
|
244
|
+
detail: {
|
|
245
|
+
startYear: this.startYear,
|
|
246
|
+
startMonth: this.startMonth,
|
|
247
|
+
endYear: this.endYear,
|
|
248
|
+
endMonth: this.endMonth
|
|
249
|
+
},
|
|
250
|
+
bubbles: true,
|
|
251
|
+
composed: true
|
|
252
|
+
}));
|
|
253
|
+
}
|
|
254
|
+
render() {
|
|
255
|
+
return html `
|
|
256
|
+
<div class="map-overlay">
|
|
257
|
+
<div class="category-buttons">
|
|
258
|
+
<button
|
|
259
|
+
class="category-button ${this.selectedCategory === '전체 KPI' ? 'active' : ''}"
|
|
260
|
+
@click=${() => this.onCategoryButtonClick('전체 KPI')}
|
|
261
|
+
>
|
|
262
|
+
전체 KPI
|
|
263
|
+
</button>
|
|
264
|
+
<button
|
|
265
|
+
class="category-button ${this.selectedCategory === '일정 성과' ? 'active' : ''}"
|
|
266
|
+
@click=${() => this.onCategoryButtonClick('일정 성과')}
|
|
267
|
+
>
|
|
268
|
+
일정 성과
|
|
269
|
+
</button>
|
|
270
|
+
<button
|
|
271
|
+
class="category-button ${this.selectedCategory === '비용 성과' ? 'active' : ''}"
|
|
272
|
+
@click=${() => this.onCategoryButtonClick('비용 성과')}
|
|
273
|
+
>
|
|
274
|
+
비용 성과
|
|
275
|
+
</button>
|
|
276
|
+
<button
|
|
277
|
+
class="category-button ${this.selectedCategory === '품질 성과' ? 'active' : ''}"
|
|
278
|
+
@click=${() => this.onCategoryButtonClick('품질 성과')}
|
|
279
|
+
>
|
|
280
|
+
품질 성과
|
|
281
|
+
</button>
|
|
282
|
+
<button
|
|
283
|
+
class="category-button ${this.selectedCategory === '안전 성과' ? 'active' : ''}"
|
|
284
|
+
@click=${() => this.onCategoryButtonClick('안전 성과')}
|
|
285
|
+
>
|
|
286
|
+
안전 성과
|
|
287
|
+
</button>
|
|
288
|
+
<button
|
|
289
|
+
class="category-button ${this.selectedCategory === '환경 성과' ? 'active' : ''}"
|
|
290
|
+
@click=${() => this.onCategoryButtonClick('환경 성과')}
|
|
291
|
+
>
|
|
292
|
+
환경 성과
|
|
293
|
+
</button>
|
|
294
|
+
</div>
|
|
295
|
+
|
|
296
|
+
<!-- 기간 선택 폼 -->
|
|
297
|
+
<div class="period-form">
|
|
298
|
+
<div class="period-row">
|
|
299
|
+
<span class="period-label">기간:</span>
|
|
300
|
+
<select
|
|
301
|
+
class="period-select"
|
|
302
|
+
.value=${this.startYear}
|
|
303
|
+
@change=${(e) => {
|
|
304
|
+
this.startYear = e.target.value;
|
|
305
|
+
this.onPeriodChange();
|
|
306
|
+
}}
|
|
307
|
+
>
|
|
308
|
+
<option value="2026">2026년</option>
|
|
309
|
+
<option value="2025">2025년</option>
|
|
310
|
+
<option value="2024">2024년</option>
|
|
311
|
+
<option value="2023">2023년</option>
|
|
312
|
+
<option value="2022">2022년</option>
|
|
313
|
+
</select>
|
|
314
|
+
<select
|
|
315
|
+
class="period-select"
|
|
316
|
+
.value=${this.startMonth}
|
|
317
|
+
@change=${(e) => {
|
|
318
|
+
this.startMonth = e.target.value;
|
|
319
|
+
this.onPeriodChange();
|
|
320
|
+
}}
|
|
321
|
+
>
|
|
322
|
+
<option value="전체">전체</option>
|
|
323
|
+
<option value="1">1월</option>
|
|
324
|
+
<option value="2">2월</option>
|
|
325
|
+
<option value="3">3월</option>
|
|
326
|
+
<option value="4">4월</option>
|
|
327
|
+
<option value="5">5월</option>
|
|
328
|
+
<option value="6">6월</option>
|
|
329
|
+
<option value="7">7월</option>
|
|
330
|
+
<option value="8">8월</option>
|
|
331
|
+
<option value="9">9월</option>
|
|
332
|
+
<option value="10">10월</option>
|
|
333
|
+
<option value="11">11월</option>
|
|
334
|
+
<option value="12">12월</option>
|
|
335
|
+
</select>
|
|
336
|
+
<span class="period-separator">~</span>
|
|
337
|
+
<select
|
|
338
|
+
class="period-select"
|
|
339
|
+
.value=${this.endYear}
|
|
340
|
+
@change=${(e) => {
|
|
341
|
+
this.endYear = e.target.value;
|
|
342
|
+
this.onPeriodChange();
|
|
343
|
+
}}
|
|
344
|
+
>
|
|
345
|
+
<option value="2026">2026년</option>
|
|
346
|
+
<option value="2025">2025년</option>
|
|
347
|
+
<option value="2024">2024년</option>
|
|
348
|
+
<option value="2023">2023년</option>
|
|
349
|
+
<option value="2022">2022년</option>
|
|
350
|
+
</select>
|
|
351
|
+
<select
|
|
352
|
+
class="period-select"
|
|
353
|
+
.value=${this.endMonth}
|
|
354
|
+
@change=${(e) => {
|
|
355
|
+
this.endMonth = e.target.value;
|
|
356
|
+
this.onPeriodChange();
|
|
357
|
+
}}
|
|
358
|
+
>
|
|
359
|
+
<option value="전체">전체</option>
|
|
360
|
+
<option value="1">1월</option>
|
|
361
|
+
<option value="2">2월</option>
|
|
362
|
+
<option value="3">3월</option>
|
|
363
|
+
<option value="4">4월</option>
|
|
364
|
+
<option value="5">5월</option>
|
|
365
|
+
<option value="6">6월</option>
|
|
366
|
+
<option value="7">7월</option>
|
|
367
|
+
<option value="8">8월</option>
|
|
368
|
+
<option value="9">9월</option>
|
|
369
|
+
<option value="10">10월</option>
|
|
370
|
+
<option value="11">11월</option>
|
|
371
|
+
<option value="12">12월</option>
|
|
372
|
+
</select>
|
|
373
|
+
</div>
|
|
374
|
+
</div>
|
|
375
|
+
</div>
|
|
376
|
+
|
|
377
|
+
<div class="map-container">
|
|
378
|
+
<!-- 지도 컨트롤 (오른쪽 상단) -->
|
|
379
|
+
<div class="map-controls">
|
|
380
|
+
<button class="map-control-button" title="확대" @click=${() => this.zoomIn()}>+</button>
|
|
381
|
+
<button class="map-control-button" title="축소" @click=${() => this.zoomOut()}>-</button>
|
|
382
|
+
<button class="map-control-button" title="뷰 초기화" @click=${() => this.resetView()}>⌖</button>
|
|
383
|
+
</div>
|
|
384
|
+
|
|
385
|
+
<!-- 스케일 및 방향 정보 (오른쪽 하단) -->
|
|
386
|
+
<div class="map-scale-direction">
|
|
387
|
+
<div class="north-arrow">↑ N</div>
|
|
388
|
+
<div class="scale-info">25km</div>
|
|
389
|
+
</div>
|
|
390
|
+
|
|
391
|
+
<!-- 공통 Google Maps 컴포넌트 사용 -->
|
|
392
|
+
<common-google-map
|
|
393
|
+
.center=${{ lat: 36.5, lng: 127.5 }}
|
|
394
|
+
.zoom=${7}
|
|
395
|
+
.locations=${this.mapLocations}
|
|
396
|
+
.clusterZoom=${10}
|
|
397
|
+
.controls=${{
|
|
398
|
+
zoomControl: false,
|
|
399
|
+
mapTypeControl: false,
|
|
400
|
+
scaleControl: false,
|
|
401
|
+
streetViewControl: false,
|
|
402
|
+
rotateControl: false,
|
|
403
|
+
fullscreenControl: false
|
|
404
|
+
}}
|
|
405
|
+
@map-change=${this.onMapChange}
|
|
406
|
+
@region-click=${this.onRegionClick}
|
|
407
|
+
></common-google-map>
|
|
408
|
+
</div>
|
|
409
|
+
`;
|
|
410
|
+
}
|
|
411
|
+
};
|
|
412
|
+
__decorate([
|
|
413
|
+
property({ type: String }),
|
|
414
|
+
__metadata("design:type", Object)
|
|
415
|
+
], KpiMapPanel.prototype, "selectedCategory", void 0);
|
|
416
|
+
__decorate([
|
|
417
|
+
property({ type: Array }),
|
|
418
|
+
__metadata("design:type", Array)
|
|
419
|
+
], KpiMapPanel.prototype, "mapData", void 0);
|
|
420
|
+
__decorate([
|
|
421
|
+
state(),
|
|
422
|
+
__metadata("design:type", Object)
|
|
423
|
+
], KpiMapPanel.prototype, "map", void 0);
|
|
424
|
+
__decorate([
|
|
425
|
+
state(),
|
|
426
|
+
__metadata("design:type", Object)
|
|
427
|
+
], KpiMapPanel.prototype, "startYear", void 0);
|
|
428
|
+
__decorate([
|
|
429
|
+
state(),
|
|
430
|
+
__metadata("design:type", Object)
|
|
431
|
+
], KpiMapPanel.prototype, "startMonth", void 0);
|
|
432
|
+
__decorate([
|
|
433
|
+
state(),
|
|
434
|
+
__metadata("design:type", Object)
|
|
435
|
+
], KpiMapPanel.prototype, "endYear", void 0);
|
|
436
|
+
__decorate([
|
|
437
|
+
state(),
|
|
438
|
+
__metadata("design:type", Object)
|
|
439
|
+
], KpiMapPanel.prototype, "endMonth", void 0);
|
|
440
|
+
KpiMapPanel = __decorate([
|
|
441
|
+
customElement('kpi-map-panel')
|
|
442
|
+
], KpiMapPanel);
|
|
443
|
+
export { KpiMapPanel };
|
|
444
|
+
//# sourceMappingURL=kpi-map-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kpi-map-panel.js","sourceRoot":"","sources":["../../../../client/pages/kpi-dashboard/components/kpi-map-panel.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, css, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\nimport '../../../google-map/common-google-map.js'\n\ndeclare global {\n interface Window {\n google: any\n }\n}\n\n@customElement('kpi-map-panel')\nexport class KpiMapPanel extends LitElement {\n static styles = css`\n :host {\n display: flex;\n background: #f8f9fa;\n overflow: hidden;\n position: relative;\n min-height: 500px;\n }\n .map-overlay {\n position: absolute;\n top: 16px;\n left: 16px;\n z-index: 10;\n background: rgba(255, 255, 255, 0.95);\n border-radius: 8px;\n padding: 12px 16px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n backdrop-filter: blur(4px);\n }\n .category-buttons {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n }\n .category-button {\n padding: 6px 12px;\n border: 1px solid #ced4da;\n background: #fff;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.85rem;\n transition: all 0.2s;\n white-space: nowrap;\n }\n .category-button.active {\n background: #667eea;\n color: white;\n border-color: #667eea;\n }\n .category-button:hover {\n background: #f8f9fa;\n }\n .category-button.active:hover {\n background: #5a6fd8;\n }\n .period-form {\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid #e9ecef;\n }\n .period-row {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n }\n .period-label {\n font-size: 0.85rem;\n font-weight: 600;\n color: #495057;\n min-width: 40px;\n }\n .period-select {\n padding: 4px 8px;\n border: 1px solid #ced4da;\n border-radius: 4px;\n background: white;\n font-size: 0.8rem;\n cursor: pointer;\n }\n .period-select:focus {\n outline: none;\n border-color: #667eea;\n }\n .period-separator {\n font-size: 0.85rem;\n color: #6c757d;\n margin: 0 4px;\n }\n .map-container {\n flex: 1;\n position: relative;\n overflow: hidden;\n }\n .map-controls {\n position: absolute;\n top: 16px;\n right: 16px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n z-index: 10;\n }\n .map-control-button {\n width: 40px;\n height: 40px;\n background: white;\n border: 1px solid #ced4da;\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.2rem;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n }\n .map-control-button:hover {\n background: #f8f9fa;\n }\n .map-scale-direction {\n position: absolute;\n bottom: 16px;\n right: 16px;\n background: white;\n padding: 8px 12px;\n border-radius: 6px;\n border: 1px solid #ced4da;\n font-size: 0.8rem;\n color: #666;\n z-index: 10;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n text-align: center;\n }\n .north-arrow {\n font-size: 1rem;\n margin-bottom: 4px;\n }\n .scale-info {\n font-size: 0.7rem;\n }\n common-google-map {\n width: 100%;\n height: 100%;\n }\n `\n\n @property({ type: String }) selectedCategory = '전체 KPI'\n @property({ type: Array }) mapData: any[] = []\n\n @state() private map: any = null\n @state() private startYear = '전체'\n @state() private startMonth = '전체'\n @state() private endYear = '전체'\n @state() private endMonth = '전체'\n\n // mapData를 지도 마커 형식으로 변환\n get mapLocations() {\n return (\n this.mapData?.map(item => ({\n lat: item.lat,\n lng: item.lng,\n title: item.region,\n region: item.region, // 지역명 추가\n // 커스텀 마커 콘텐츠 생성\n markerContent: `\n <div style=\"\n background: white;\n border-radius: 8px;\n padding: 8px 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n border: 1px solid #e9ecef;\n min-width: 80px;\n text-align: center;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n cursor: pointer;\n \">\n <div style=\"\n font-size: 11px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 2px;\n white-space: nowrap;\n \">${item.region}</div>\n <div style=\"\n font-size: 13px;\n font-weight: 700;\n color: #212529;\n margin-bottom: 2px;\n \">${item.kpi}</div>\n <div style=\"\n font-size: 10px;\n color: ${item.change > 0 ? '#dc3545' : '#198754'};\n font-weight: 500;\n \">${item.change > 0 ? '▲' : '▼'} ${Math.abs(item.change)}%</div>\n </div>\n `,\n content: `\n <div style=\"padding: 12px; min-width: 200px;\">\n <h3 style=\"margin: 0 0 8px 0; font-size: 16px; color: #212529;\">${item.region}</h3>\n <div style=\"margin-bottom: 8px;\">\n <span style=\"font-size: 14px; color: #6c757d;\">KPI: </span>\n <span style=\"font-size: 16px; font-weight: 600; color: #212529;\">${item.kpi}</span>\n </div>\n <div style=\"\n font-size: 14px;\n color: ${item.change > 0 ? '#dc3545' : '#198754'};\n font-weight: 500;\n \">\n ${item.change > 0 ? '▲' : '▼'} ${Math.abs(item.change)}% 변화\n </div>\n </div>\n `\n })) || []\n )\n }\n\n private onCategoryButtonClick(category: string) {\n this.dispatchEvent(\n new CustomEvent('category-change', {\n detail: { category },\n bubbles: true,\n composed: true\n })\n )\n }\n\n private onMapChange(event: CustomEvent) {\n this.map = event.detail\n }\n\n private onRegionClick(event: CustomEvent) {\n this.dispatchEvent(\n new CustomEvent('region-click', {\n detail: event.detail,\n bubbles: true,\n composed: true\n })\n )\n }\n\n private zoomIn() {\n if (this.map) {\n this.map.setZoom(this.map.getZoom() + 1)\n }\n }\n\n private zoomOut() {\n if (this.map) {\n this.map.setZoom(this.map.getZoom() - 1)\n }\n }\n\n private resetView() {\n if (this.map) {\n this.map.setCenter({ lat: 36.5, lng: 127.5 })\n this.map.setZoom(7)\n }\n }\n\n private onPeriodChange() {\n this.dispatchEvent(\n new CustomEvent('period-change', {\n detail: {\n startYear: this.startYear,\n startMonth: this.startMonth,\n endYear: this.endYear,\n endMonth: this.endMonth\n },\n bubbles: true,\n composed: true\n })\n )\n }\n\n render() {\n return html`\n <div class=\"map-overlay\">\n <div class=\"category-buttons\">\n <button\n class=\"category-button ${this.selectedCategory === '전체 KPI' ? 'active' : ''}\"\n @click=${() => this.onCategoryButtonClick('전체 KPI')}\n >\n 전체 KPI\n </button>\n <button\n class=\"category-button ${this.selectedCategory === '일정 성과' ? 'active' : ''}\"\n @click=${() => this.onCategoryButtonClick('일정 성과')}\n >\n 일정 성과\n </button>\n <button\n class=\"category-button ${this.selectedCategory === '비용 성과' ? 'active' : ''}\"\n @click=${() => this.onCategoryButtonClick('비용 성과')}\n >\n 비용 성과\n </button>\n <button\n class=\"category-button ${this.selectedCategory === '품질 성과' ? 'active' : ''}\"\n @click=${() => this.onCategoryButtonClick('품질 성과')}\n >\n 품질 성과\n </button>\n <button\n class=\"category-button ${this.selectedCategory === '안전 성과' ? 'active' : ''}\"\n @click=${() => this.onCategoryButtonClick('안전 성과')}\n >\n 안전 성과\n </button>\n <button\n class=\"category-button ${this.selectedCategory === '환경 성과' ? 'active' : ''}\"\n @click=${() => this.onCategoryButtonClick('환경 성과')}\n >\n 환경 성과\n </button>\n </div>\n\n <!-- 기간 선택 폼 -->\n <div class=\"period-form\">\n <div class=\"period-row\">\n <span class=\"period-label\">기간:</span>\n <select\n class=\"period-select\"\n .value=${this.startYear}\n @change=${(e: Event) => {\n this.startYear = (e.target as HTMLSelectElement).value\n this.onPeriodChange()\n }}\n >\n <option value=\"2026\">2026년</option>\n <option value=\"2025\">2025년</option>\n <option value=\"2024\">2024년</option>\n <option value=\"2023\">2023년</option>\n <option value=\"2022\">2022년</option>\n </select>\n <select\n class=\"period-select\"\n .value=${this.startMonth}\n @change=${(e: Event) => {\n this.startMonth = (e.target as HTMLSelectElement).value\n this.onPeriodChange()\n }}\n >\n <option value=\"전체\">전체</option>\n <option value=\"1\">1월</option>\n <option value=\"2\">2월</option>\n <option value=\"3\">3월</option>\n <option value=\"4\">4월</option>\n <option value=\"5\">5월</option>\n <option value=\"6\">6월</option>\n <option value=\"7\">7월</option>\n <option value=\"8\">8월</option>\n <option value=\"9\">9월</option>\n <option value=\"10\">10월</option>\n <option value=\"11\">11월</option>\n <option value=\"12\">12월</option>\n </select>\n <span class=\"period-separator\">~</span>\n <select\n class=\"period-select\"\n .value=${this.endYear}\n @change=${(e: Event) => {\n this.endYear = (e.target as HTMLSelectElement).value\n this.onPeriodChange()\n }}\n >\n <option value=\"2026\">2026년</option>\n <option value=\"2025\">2025년</option>\n <option value=\"2024\">2024년</option>\n <option value=\"2023\">2023년</option>\n <option value=\"2022\">2022년</option>\n </select>\n <select\n class=\"period-select\"\n .value=${this.endMonth}\n @change=${(e: Event) => {\n this.endMonth = (e.target as HTMLSelectElement).value\n this.onPeriodChange()\n }}\n >\n <option value=\"전체\">전체</option>\n <option value=\"1\">1월</option>\n <option value=\"2\">2월</option>\n <option value=\"3\">3월</option>\n <option value=\"4\">4월</option>\n <option value=\"5\">5월</option>\n <option value=\"6\">6월</option>\n <option value=\"7\">7월</option>\n <option value=\"8\">8월</option>\n <option value=\"9\">9월</option>\n <option value=\"10\">10월</option>\n <option value=\"11\">11월</option>\n <option value=\"12\">12월</option>\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"map-container\">\n <!-- 지도 컨트롤 (오른쪽 상단) -->\n <div class=\"map-controls\">\n <button class=\"map-control-button\" title=\"확대\" @click=${() => this.zoomIn()}>+</button>\n <button class=\"map-control-button\" title=\"축소\" @click=${() => this.zoomOut()}>-</button>\n <button class=\"map-control-button\" title=\"뷰 초기화\" @click=${() => this.resetView()}>⌖</button>\n </div>\n\n <!-- 스케일 및 방향 정보 (오른쪽 하단) -->\n <div class=\"map-scale-direction\">\n <div class=\"north-arrow\">↑ N</div>\n <div class=\"scale-info\">25km</div>\n </div>\n\n <!-- 공통 Google Maps 컴포넌트 사용 -->\n <common-google-map\n .center=${{ lat: 36.5, lng: 127.5 }}\n .zoom=${7}\n .locations=${this.mapLocations}\n .clusterZoom=${10}\n .controls=${{\n zoomControl: false,\n mapTypeControl: false,\n scaleControl: false,\n streetViewControl: false,\n rotateControl: false,\n fullscreenControl: false\n }}\n @map-change=${this.onMapChange}\n @region-click=${this.onRegionClick}\n ></common-google-map>\n </div>\n `\n }\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { LitElement, nothing } from 'lit';
|
|
2
|
+
import '../../../charts/kpi-radar-chart.js';
|
|
3
|
+
import '../../../charts/kpi-boxplot-chart.js';
|
|
4
|
+
import '../../../charts/kpi-trend-chart.js';
|
|
5
|
+
export declare class KpiRegionPopup extends LitElement {
|
|
6
|
+
static styles: import("lit").CSSResult;
|
|
7
|
+
selectedRegion: string | null;
|
|
8
|
+
selectedChartType: string;
|
|
9
|
+
selectedPeriod: string;
|
|
10
|
+
startDate: string;
|
|
11
|
+
endDate: string;
|
|
12
|
+
private chartData;
|
|
13
|
+
private chartCategories;
|
|
14
|
+
private trendData;
|
|
15
|
+
connectedCallback(): void;
|
|
16
|
+
private generateChartData;
|
|
17
|
+
private generateTrendData;
|
|
18
|
+
private onClose;
|
|
19
|
+
private onChartTypeChange;
|
|
20
|
+
private onPeriodChange;
|
|
21
|
+
private onDateRangeChange;
|
|
22
|
+
render(): import("lit-html").TemplateResult<1> | typeof nothing;
|
|
23
|
+
}
|