@things-factory/kpi 10.1.247 → 10.1.248

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. package/package.json +3 -3
  2. package/dist-client/bootstrap.d.ts +0 -2
  3. package/dist-client/bootstrap.js +0 -7
  4. package/dist-client/bootstrap.js.map +0 -1
  5. package/dist-client/charts/kpi-boxplot-chart.d.ts +0 -24
  6. package/dist-client/charts/kpi-boxplot-chart.js +0 -324
  7. package/dist-client/charts/kpi-boxplot-chart.js.map +0 -1
  8. package/dist-client/charts/kpi-mini-trend-chart.d.ts +0 -14
  9. package/dist-client/charts/kpi-mini-trend-chart.js +0 -148
  10. package/dist-client/charts/kpi-mini-trend-chart.js.map +0 -1
  11. package/dist-client/charts/kpi-radar-chart.d.ts +0 -16
  12. package/dist-client/charts/kpi-radar-chart.js +0 -138
  13. package/dist-client/charts/kpi-radar-chart.js.map +0 -1
  14. package/dist-client/charts/kpi-trend-chart.d.ts +0 -25
  15. package/dist-client/charts/kpi-trend-chart.js +0 -186
  16. package/dist-client/charts/kpi-trend-chart.js.map +0 -1
  17. package/dist-client/google-map/common-google-map.d.ts +0 -34
  18. package/dist-client/google-map/common-google-map.js +0 -333
  19. package/dist-client/google-map/common-google-map.js.map +0 -1
  20. package/dist-client/google-map/google-map-loader.d.ts +0 -8
  21. package/dist-client/google-map/google-map-loader.js +0 -22
  22. package/dist-client/google-map/google-map-loader.js.map +0 -1
  23. package/dist-client/index.d.ts +0 -1
  24. package/dist-client/index.js +0 -2
  25. package/dist-client/index.js.map +0 -1
  26. package/dist-client/pages/kpi/kpi-grade-editor.d.ts +0 -35
  27. package/dist-client/pages/kpi/kpi-grade-editor.js +0 -165
  28. package/dist-client/pages/kpi/kpi-grade-editor.js.map +0 -1
  29. package/dist-client/pages/kpi/kpi-importer.d.ts +0 -23
  30. package/dist-client/pages/kpi/kpi-importer.js +0 -92
  31. package/dist-client/pages/kpi/kpi-importer.js.map +0 -1
  32. package/dist-client/pages/kpi/kpi-list-page.d.ts +0 -136
  33. package/dist-client/pages/kpi/kpi-list-page.js +0 -948
  34. package/dist-client/pages/kpi/kpi-list-page.js.map +0 -1
  35. package/dist-client/pages/kpi/kpi-overview-sample.d.ts +0 -36
  36. package/dist-client/pages/kpi/kpi-overview-sample.js +0 -264
  37. package/dist-client/pages/kpi/kpi-overview-sample.js.map +0 -1
  38. package/dist-client/pages/kpi/kpi-overview.d.ts +0 -14
  39. package/dist-client/pages/kpi/kpi-overview.js +0 -361
  40. package/dist-client/pages/kpi/kpi-overview.js.map +0 -1
  41. package/dist-client/pages/kpi/kpi-tree-page.d.ts +0 -51
  42. package/dist-client/pages/kpi/kpi-tree-page.js +0 -355
  43. package/dist-client/pages/kpi/kpi-tree-page.js.map +0 -1
  44. package/dist-client/pages/kpi/kpi-view.d.ts +0 -12
  45. package/dist-client/pages/kpi/kpi-view.js +0 -193
  46. package/dist-client/pages/kpi/kpi-view.js.map +0 -1
  47. package/dist-client/pages/kpi/kpi-viz-editor.d.ts +0 -19
  48. package/dist-client/pages/kpi/kpi-viz-editor.js +0 -562
  49. package/dist-client/pages/kpi/kpi-viz-editor.js.map +0 -1
  50. package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.d.ts +0 -17
  51. package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.js +0 -279
  52. package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.js.map +0 -1
  53. package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.d.ts +0 -19
  54. package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.js +0 -385
  55. package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.js.map +0 -1
  56. package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.d.ts +0 -23
  57. package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.js +0 -465
  58. package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.js.map +0 -1
  59. package/dist-client/pages/kpi-dashboard/components/kpi-chart-toggle.d.ts +0 -8
  60. package/dist-client/pages/kpi-dashboard/components/kpi-chart-toggle.js +0 -78
  61. package/dist-client/pages/kpi-dashboard/components/kpi-chart-toggle.js.map +0 -1
  62. package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.d.ts +0 -24
  63. package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.js +0 -440
  64. package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.js.map +0 -1
  65. package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.d.ts +0 -33
  66. package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.js +0 -444
  67. package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.js.map +0 -1
  68. package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.d.ts +0 -23
  69. package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.js +0 -369
  70. package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.js.map +0 -1
  71. package/dist-client/pages/kpi-dashboard/kpi-alert-panel.d.ts +0 -18
  72. package/dist-client/pages/kpi-dashboard/kpi-alert-panel.js +0 -128
  73. package/dist-client/pages/kpi-dashboard/kpi-alert-panel.js.map +0 -1
  74. package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.d.ts +0 -31
  75. package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.js +0 -493
  76. package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.js.map +0 -1
  77. package/dist-client/pages/kpi-dashboard/kpi-dashboard.d.ts +0 -50
  78. package/dist-client/pages/kpi-dashboard/kpi-dashboard.js +0 -884
  79. package/dist-client/pages/kpi-dashboard/kpi-dashboard.js.map +0 -1
  80. package/dist-client/pages/kpi-dashboard/kpi-grade-visualization.d.ts +0 -12
  81. package/dist-client/pages/kpi-dashboard/kpi-grade-visualization.js +0 -82
  82. package/dist-client/pages/kpi-dashboard/kpi-grade-visualization.js.map +0 -1
  83. package/dist-client/pages/kpi-dashboard/kpi-history-viewer.d.ts +0 -11
  84. package/dist-client/pages/kpi-dashboard/kpi-history-viewer.js +0 -65
  85. package/dist-client/pages/kpi-dashboard/kpi-history-viewer.js.map +0 -1
  86. package/dist-client/pages/kpi-dashboard/kpi-list-summary.d.ts +0 -13
  87. package/dist-client/pages/kpi-dashboard/kpi-list-summary.js +0 -115
  88. package/dist-client/pages/kpi-dashboard/kpi-list-summary.js.map +0 -1
  89. package/dist-client/pages/kpi-dashboard/kpi-performance-summary.d.ts +0 -15
  90. package/dist-client/pages/kpi-dashboard/kpi-performance-summary.js +0 -146
  91. package/dist-client/pages/kpi-dashboard/kpi-performance-summary.js.map +0 -1
  92. package/dist-client/pages/kpi-dashboard/kpi-value-entry.d.ts +0 -7
  93. package/dist-client/pages/kpi-dashboard/kpi-value-entry.js +0 -86
  94. package/dist-client/pages/kpi-dashboard/kpi-value-entry.js.map +0 -1
  95. package/dist-client/pages/kpi-history/kpi-history-list-page.d.ts +0 -21
  96. package/dist-client/pages/kpi-history/kpi-history-list-page.js +0 -160
  97. package/dist-client/pages/kpi-history/kpi-history-list-page.js.map +0 -1
  98. package/dist-client/pages/kpi-metric/kpi-metric-importer.d.ts +0 -23
  99. package/dist-client/pages/kpi-metric/kpi-metric-importer.js +0 -92
  100. package/dist-client/pages/kpi-metric/kpi-metric-importer.js.map +0 -1
  101. package/dist-client/pages/kpi-metric/kpi-metric-list-page.d.ts +0 -65
  102. package/dist-client/pages/kpi-metric/kpi-metric-list-page.js +0 -415
  103. package/dist-client/pages/kpi-metric/kpi-metric-list-page.js.map +0 -1
  104. package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.d.ts +0 -52
  105. package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.js +0 -678
  106. package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.js.map +0 -1
  107. package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.d.ts +0 -23
  108. package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.js +0 -75
  109. package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.js.map +0 -1
  110. package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.d.ts +0 -64
  111. package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.js +0 -311
  112. package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.js.map +0 -1
  113. package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.d.ts +0 -12
  114. package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.js +0 -175
  115. package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.js.map +0 -1
  116. package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-page.d.ts +0 -35
  117. package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-page.js +0 -161
  118. package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-page.js.map +0 -1
  119. package/dist-client/pages/kpi-statistic/kpi-statistic-editor-page.d.ts +0 -47
  120. package/dist-client/pages/kpi-statistic/kpi-statistic-editor-page.js +0 -655
  121. package/dist-client/pages/kpi-statistic/kpi-statistic-editor-page.js.map +0 -1
  122. package/dist-client/pages/kpi-statistic/kpi-statistic-importer.d.ts +0 -23
  123. package/dist-client/pages/kpi-statistic/kpi-statistic-importer.js +0 -92
  124. package/dist-client/pages/kpi-statistic/kpi-statistic-importer.js.map +0 -1
  125. package/dist-client/pages/kpi-statistic/kpi-statistic-list-page.d.ts +0 -65
  126. package/dist-client/pages/kpi-statistic/kpi-statistic-list-page.js +0 -416
  127. package/dist-client/pages/kpi-statistic/kpi-statistic-list-page.js.map +0 -1
  128. package/dist-client/pages/kpi-value/kpi-value-editor-page.d.ts +0 -50
  129. package/dist-client/pages/kpi-value/kpi-value-editor-page.js +0 -700
  130. package/dist-client/pages/kpi-value/kpi-value-editor-page.js.map +0 -1
  131. package/dist-client/pages/kpi-value/kpi-value-importer.d.ts +0 -23
  132. package/dist-client/pages/kpi-value/kpi-value-importer.js +0 -92
  133. package/dist-client/pages/kpi-value/kpi-value-importer.js.map +0 -1
  134. package/dist-client/pages/kpi-value/kpi-value-list-page.d.ts +0 -73
  135. package/dist-client/pages/kpi-value/kpi-value-list-page.js +0 -403
  136. package/dist-client/pages/kpi-value/kpi-value-list-page.js.map +0 -1
  137. package/dist-client/route.d.ts +0 -1
  138. package/dist-client/route.js +0 -47
  139. package/dist-client/route.js.map +0 -1
  140. package/dist-client/tsconfig.tsbuildinfo +0 -1
  141. package/dist-client/viewparts/kpi-metric-input.d.ts +0 -23
  142. package/dist-client/viewparts/kpi-metric-input.js +0 -140
  143. package/dist-client/viewparts/kpi-metric-input.js.map +0 -1
  144. package/dist-client/viewparts/kpi-metric-meta-editor.d.ts +0 -36
  145. package/dist-client/viewparts/kpi-metric-meta-editor.js +0 -321
  146. package/dist-client/viewparts/kpi-metric-meta-editor.js.map +0 -1
  147. package/dist-client/viewparts/metric-input-hint.d.ts +0 -26
  148. package/dist-client/viewparts/metric-input-hint.js +0 -19
  149. package/dist-client/viewparts/metric-input-hint.js.map +0 -1
  150. package/dist-client/viewparts/metric-input.test.d.ts +0 -1
  151. package/dist-client/viewparts/metric-input.test.js +0 -43
  152. package/dist-client/viewparts/metric-input.test.js.map +0 -1
  153. package/dist-client/viewparts/metric-renderer-registry.d.ts +0 -18
  154. package/dist-client/viewparts/metric-renderer-registry.js +0 -29
  155. package/dist-client/viewparts/metric-renderer-registry.js.map +0 -1
  156. package/dist-client/viewparts/ox-grist-editor-metric-input-hint.d.ts +0 -19
  157. package/dist-client/viewparts/ox-grist-editor-metric-input-hint.js +0 -76
  158. package/dist-client/viewparts/ox-grist-editor-metric-input-hint.js.map +0 -1
  159. package/dist-server/calculator/calculator.test.d.ts +0 -1
  160. package/dist-server/calculator/calculator.test.js +0 -126
  161. package/dist-server/calculator/calculator.test.js.map +0 -1
  162. package/dist-server/calculator/evaluator.d.ts +0 -8
  163. package/dist-server/calculator/evaluator.js +0 -42
  164. package/dist-server/calculator/evaluator.js.map +0 -1
  165. package/dist-server/calculator/functions.d.ts +0 -3
  166. package/dist-server/calculator/functions.js +0 -62
  167. package/dist-server/calculator/functions.js.map +0 -1
  168. package/dist-server/calculator/index.d.ts +0 -6
  169. package/dist-server/calculator/index.js +0 -10
  170. package/dist-server/calculator/index.js.map +0 -1
  171. package/dist-server/calculator/parser.d.ts +0 -34
  172. package/dist-server/calculator/parser.js +0 -185
  173. package/dist-server/calculator/parser.js.map +0 -1
  174. package/dist-server/calculator/provider.d.ts +0 -8
  175. package/dist-server/calculator/provider.js +0 -13
  176. package/dist-server/calculator/provider.js.map +0 -1
  177. package/dist-server/calculator/score.d.ts +0 -21
  178. package/dist-server/calculator/score.js +0 -36
  179. package/dist-server/calculator/score.js.map +0 -1
  180. package/dist-server/calculator/score.test.d.ts +0 -1
  181. package/dist-server/calculator/score.test.js +0 -47
  182. package/dist-server/calculator/score.test.js.map +0 -1
  183. package/dist-server/calculator/validate.d.ts +0 -15
  184. package/dist-server/calculator/validate.js +0 -30
  185. package/dist-server/calculator/validate.js.map +0 -1
  186. package/dist-server/calculator/validate.test.d.ts +0 -1
  187. package/dist-server/calculator/validate.test.js +0 -45
  188. package/dist-server/calculator/validate.test.js.map +0 -1
  189. package/dist-server/controllers/index.d.ts +0 -2
  190. package/dist-server/controllers/index.js +0 -6
  191. package/dist-server/controllers/index.js.map +0 -1
  192. package/dist-server/controllers/kpi-metric-value-provider.d.ts +0 -11
  193. package/dist-server/controllers/kpi-metric-value-provider.js +0 -97
  194. package/dist-server/controllers/kpi-metric-value-provider.js.map +0 -1
  195. package/dist-server/controllers/kpi-value-provider.d.ts +0 -11
  196. package/dist-server/controllers/kpi-value-provider.js +0 -50
  197. package/dist-server/controllers/kpi-value-provider.js.map +0 -1
  198. package/dist-server/index.d.ts +0 -5
  199. package/dist-server/index.js +0 -9
  200. package/dist-server/index.js.map +0 -1
  201. package/dist-server/migrations/1752190849680-seed-kpi-metrics.d.ts +0 -6
  202. package/dist-server/migrations/1752190849680-seed-kpi-metrics.js +0 -102
  203. package/dist-server/migrations/1752190849680-seed-kpi-metrics.js.map +0 -1
  204. package/dist-server/migrations/1752190849681-seed-kpi.d.ts +0 -5
  205. package/dist-server/migrations/1752190849681-seed-kpi.js +0 -315
  206. package/dist-server/migrations/1752190849681-seed-kpi.js.map +0 -1
  207. package/dist-server/migrations/1752192090123-add-grades-to-kpi.d.ts +0 -7
  208. package/dist-server/migrations/1752192090123-add-grades-to-kpi.js +0 -51
  209. package/dist-server/migrations/1752192090123-add-grades-to-kpi.js.map +0 -1
  210. package/dist-server/migrations/1752192090124-add-kpi-statistics.d.ts +0 -5
  211. package/dist-server/migrations/1752192090124-add-kpi-statistics.js +0 -710
  212. package/dist-server/migrations/1752192090124-add-kpi-statistics.js.map +0 -1
  213. package/dist-server/migrations/1752192090128-seed-kpi-org-scope.d.ts +0 -6
  214. package/dist-server/migrations/1752192090128-seed-kpi-org-scope.js +0 -111
  215. package/dist-server/migrations/1752192090128-seed-kpi-org-scope.js.map +0 -1
  216. package/dist-server/migrations/1752192090129-seed-kpi-values.d.ts +0 -6
  217. package/dist-server/migrations/1752192090129-seed-kpi-values.js +0 -187
  218. package/dist-server/migrations/1752192090129-seed-kpi-values.js.map +0 -1
  219. package/dist-server/migrations/1752192090200-add-meta-to-kpi-metric.d.ts +0 -10
  220. package/dist-server/migrations/1752192090200-add-meta-to-kpi-metric.js +0 -26
  221. package/dist-server/migrations/1752192090200-add-meta-to-kpi-metric.js.map +0 -1
  222. package/dist-server/migrations/1752192090201-backfill-kpi-metric-meta.d.ts +0 -11
  223. package/dist-server/migrations/1752192090201-backfill-kpi-metric-meta.js +0 -54
  224. package/dist-server/migrations/1752192090201-backfill-kpi-metric-meta.js.map +0 -1
  225. package/dist-server/migrations/grade-data/x11-performance-table.json +0 -962
  226. package/dist-server/migrations/grade-data/x12-performance-table.json +0 -611
  227. package/dist-server/migrations/grade-data/x14-performance-table.json +0 -42
  228. package/dist-server/migrations/grade-data/x21-performance-table.json +0 -889
  229. package/dist-server/migrations/grade-data/x22-performance-table.json +0 -1064
  230. package/dist-server/migrations/grade-data/x23-performance-table.json +0 -42
  231. package/dist-server/migrations/grade-data/x31-performance-table.json +0 -644
  232. package/dist-server/migrations/grade-data/x32-performance-table.json +0 -993
  233. package/dist-server/migrations/grade-data/x33-performance-table.json +0 -195
  234. package/dist-server/migrations/grade-data/x34-performance-table.json +0 -12
  235. package/dist-server/migrations/grade-data/x35-performance-table.json +0 -42
  236. package/dist-server/migrations/grade-data/x41-performance-table.json +0 -825
  237. package/dist-server/migrations/grade-data/x42-performance-table.json +0 -786
  238. package/dist-server/migrations/grade-data/x43-performance-table.json +0 -12
  239. package/dist-server/migrations/grade-data/x44-performance-table.json +0 -42
  240. package/dist-server/migrations/grade-data/x51-performance-table.json +0 -924
  241. package/dist-server/migrations/grade-data/x52-performance-table.json +0 -42
  242. package/dist-server/migrations/grade-data/x61-performance-table.json +0 -261
  243. package/dist-server/migrations/grade-data/x62-performance-table.json +0 -42
  244. package/dist-server/migrations/index.d.ts +0 -1
  245. package/dist-server/migrations/index.js +0 -12
  246. package/dist-server/migrations/index.js.map +0 -1
  247. package/dist-server/migrations/seed-data/kpi-metrics-seed.json +0 -517
  248. package/dist-server/migrations/seed-data/kpi-org-scope-seed.json +0 -1676
  249. package/dist-server/migrations/seed-data/kpi-scopes-seed.json +0 -121
  250. package/dist-server/migrations/seed-data/kpi-values-seed.json +0 -402
  251. package/dist-server/migrations/seed-data/kpis-seed.json +0 -488
  252. package/dist-server/migrations/seed-data/scope-definitions-seed.json +0 -90
  253. package/dist-server/routes.d.ts +0 -1
  254. package/dist-server/routes.js +0 -72
  255. package/dist-server/routes.js.map +0 -1
  256. package/dist-server/service/index.d.ts +0 -15
  257. package/dist-server/service/index.js +0 -49
  258. package/dist-server/service/index.js.map +0 -1
  259. package/dist-server/service/kpi/aggregate-kpi.d.ts +0 -8
  260. package/dist-server/service/kpi/aggregate-kpi.js +0 -123
  261. package/dist-server/service/kpi/aggregate-kpi.js.map +0 -1
  262. package/dist-server/service/kpi/event-subscriber.d.ts +0 -9
  263. package/dist-server/service/kpi/event-subscriber.js +0 -31
  264. package/dist-server/service/kpi/event-subscriber.js.map +0 -1
  265. package/dist-server/service/kpi/index.d.ts +0 -8
  266. package/dist-server/service/kpi/index.js +0 -12
  267. package/dist-server/service/kpi/index.js.map +0 -1
  268. package/dist-server/service/kpi/kpi-formula.service.d.ts +0 -49
  269. package/dist-server/service/kpi/kpi-formula.service.js +0 -165
  270. package/dist-server/service/kpi/kpi-formula.service.js.map +0 -1
  271. package/dist-server/service/kpi/kpi-grade.types.d.ts +0 -22
  272. package/dist-server/service/kpi/kpi-grade.types.js +0 -3
  273. package/dist-server/service/kpi/kpi-grade.types.js.map +0 -1
  274. package/dist-server/service/kpi/kpi-history.d.ts +0 -29
  275. package/dist-server/service/kpi/kpi-history.js +0 -148
  276. package/dist-server/service/kpi/kpi-history.js.map +0 -1
  277. package/dist-server/service/kpi/kpi-mutation.d.ts +0 -14
  278. package/dist-server/service/kpi/kpi-mutation.js +0 -553
  279. package/dist-server/service/kpi/kpi-mutation.js.map +0 -1
  280. package/dist-server/service/kpi/kpi-query.d.ts +0 -24
  281. package/dist-server/service/kpi/kpi-query.js +0 -309
  282. package/dist-server/service/kpi/kpi-query.js.map +0 -1
  283. package/dist-server/service/kpi/kpi-type.d.ts +0 -48
  284. package/dist-server/service/kpi/kpi-type.js +0 -221
  285. package/dist-server/service/kpi/kpi-type.js.map +0 -1
  286. package/dist-server/service/kpi/kpi.d.ts +0 -130
  287. package/dist-server/service/kpi/kpi.js +0 -356
  288. package/dist-server/service/kpi/kpi.js.map +0 -1
  289. package/dist-server/service/kpi-alert/index.d.ts +0 -2
  290. package/dist-server/service/kpi-alert/index.js +0 -6
  291. package/dist-server/service/kpi-alert/index.js.map +0 -1
  292. package/dist-server/service/kpi-alert/kpi-alert-query.d.ts +0 -4
  293. package/dist-server/service/kpi-alert/kpi-alert-query.js +0 -72
  294. package/dist-server/service/kpi-alert/kpi-alert-query.js.map +0 -1
  295. package/dist-server/service/kpi-alert/kpi-alert-type.d.ts +0 -8
  296. package/dist-server/service/kpi-alert/kpi-alert-type.js +0 -33
  297. package/dist-server/service/kpi-alert/kpi-alert-type.js.map +0 -1
  298. package/dist-server/service/kpi-metric/aggregate-kpi-metric.d.ts +0 -8
  299. package/dist-server/service/kpi-metric/aggregate-kpi-metric.js +0 -126
  300. package/dist-server/service/kpi-metric/aggregate-kpi-metric.js.map +0 -1
  301. package/dist-server/service/kpi-metric/index.d.ts +0 -6
  302. package/dist-server/service/kpi-metric/index.js +0 -10
  303. package/dist-server/service/kpi-metric/index.js.map +0 -1
  304. package/dist-server/service/kpi-metric/kpi-metric-meta.d.ts +0 -46
  305. package/dist-server/service/kpi-metric/kpi-metric-meta.js +0 -27
  306. package/dist-server/service/kpi-metric/kpi-metric-meta.js.map +0 -1
  307. package/dist-server/service/kpi-metric/kpi-metric-meta.test.d.ts +0 -1
  308. package/dist-server/service/kpi-metric/kpi-metric-meta.test.js +0 -43
  309. package/dist-server/service/kpi-metric/kpi-metric-meta.test.js.map +0 -1
  310. package/dist-server/service/kpi-metric/kpi-metric-mutation.d.ts +0 -10
  311. package/dist-server/service/kpi-metric/kpi-metric-mutation.js +0 -296
  312. package/dist-server/service/kpi-metric/kpi-metric-mutation.js.map +0 -1
  313. package/dist-server/service/kpi-metric/kpi-metric-query.d.ts +0 -14
  314. package/dist-server/service/kpi-metric/kpi-metric-query.js +0 -126
  315. package/dist-server/service/kpi-metric/kpi-metric-query.js.map +0 -1
  316. package/dist-server/service/kpi-metric/kpi-metric-type.d.ts +0 -45
  317. package/dist-server/service/kpi-metric/kpi-metric-type.js +0 -177
  318. package/dist-server/service/kpi-metric/kpi-metric-type.js.map +0 -1
  319. package/dist-server/service/kpi-metric/kpi-metric.d.ts +0 -39
  320. package/dist-server/service/kpi-metric/kpi-metric.js +0 -174
  321. package/dist-server/service/kpi-metric/kpi-metric.js.map +0 -1
  322. package/dist-server/service/kpi-metric-value/index.d.ts +0 -6
  323. package/dist-server/service/kpi-metric-value/index.js +0 -10
  324. package/dist-server/service/kpi-metric-value/index.js.map +0 -1
  325. package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.d.ts +0 -11
  326. package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.js +0 -283
  327. package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.js.map +0 -1
  328. package/dist-server/service/kpi-metric-value/kpi-metric-value-query.d.ts +0 -13
  329. package/dist-server/service/kpi-metric-value/kpi-metric-value-query.js +0 -106
  330. package/dist-server/service/kpi-metric-value/kpi-metric-value-query.js.map +0 -1
  331. package/dist-server/service/kpi-metric-value/kpi-metric-value-type.d.ts +0 -26
  332. package/dist-server/service/kpi-metric-value/kpi-metric-value-type.js +0 -112
  333. package/dist-server/service/kpi-metric-value/kpi-metric-value-type.js.map +0 -1
  334. package/dist-server/service/kpi-metric-value/kpi-metric-value.d.ts +0 -23
  335. package/dist-server/service/kpi-metric-value/kpi-metric-value.js +0 -107
  336. package/dist-server/service/kpi-metric-value/kpi-metric-value.js.map +0 -1
  337. package/dist-server/service/kpi-org-scope/index.d.ts +0 -5
  338. package/dist-server/service/kpi-org-scope/index.js +0 -9
  339. package/dist-server/service/kpi-org-scope/index.js.map +0 -1
  340. package/dist-server/service/kpi-org-scope/kpi-org-scope-mutation.d.ts +0 -8
  341. package/dist-server/service/kpi-org-scope/kpi-org-scope-mutation.js +0 -170
  342. package/dist-server/service/kpi-org-scope/kpi-org-scope-mutation.js.map +0 -1
  343. package/dist-server/service/kpi-org-scope/kpi-org-scope-query.d.ts +0 -14
  344. package/dist-server/service/kpi-org-scope/kpi-org-scope-query.js +0 -152
  345. package/dist-server/service/kpi-org-scope/kpi-org-scope-query.js.map +0 -1
  346. package/dist-server/service/kpi-org-scope/kpi-org-scope-type.d.ts +0 -26
  347. package/dist-server/service/kpi-org-scope/kpi-org-scope-type.js +0 -101
  348. package/dist-server/service/kpi-org-scope/kpi-org-scope-type.js.map +0 -1
  349. package/dist-server/service/kpi-org-scope/kpi-org-scope.d.ts +0 -26
  350. package/dist-server/service/kpi-org-scope/kpi-org-scope.js +0 -135
  351. package/dist-server/service/kpi-org-scope/kpi-org-scope.js.map +0 -1
  352. package/dist-server/service/kpi-scope/index.d.ts +0 -9
  353. package/dist-server/service/kpi-scope/index.js +0 -14
  354. package/dist-server/service/kpi-scope/index.js.map +0 -1
  355. package/dist-server/service/kpi-scope/kpi-scope-mutation.d.ts +0 -9
  356. package/dist-server/service/kpi-scope/kpi-scope-mutation.js +0 -140
  357. package/dist-server/service/kpi-scope/kpi-scope-mutation.js.map +0 -1
  358. package/dist-server/service/kpi-scope/kpi-scope-query.d.ts +0 -11
  359. package/dist-server/service/kpi-scope/kpi-scope-query.js +0 -89
  360. package/dist-server/service/kpi-scope/kpi-scope-query.js.map +0 -1
  361. package/dist-server/service/kpi-scope/kpi-scope-type.d.ts +0 -35
  362. package/dist-server/service/kpi-scope/kpi-scope-type.js +0 -138
  363. package/dist-server/service/kpi-scope/kpi-scope-type.js.map +0 -1
  364. package/dist-server/service/kpi-scope/kpi-scope.d.ts +0 -38
  365. package/dist-server/service/kpi-scope/kpi-scope.js +0 -144
  366. package/dist-server/service/kpi-scope/kpi-scope.js.map +0 -1
  367. package/dist-server/service/kpi-statistic/index.d.ts +0 -6
  368. package/dist-server/service/kpi-statistic/index.js +0 -10
  369. package/dist-server/service/kpi-statistic/index.js.map +0 -1
  370. package/dist-server/service/kpi-statistic/kpi-statistic-batch.service.d.ts +0 -43
  371. package/dist-server/service/kpi-statistic/kpi-statistic-batch.service.js +0 -181
  372. package/dist-server/service/kpi-statistic/kpi-statistic-batch.service.js.map +0 -1
  373. package/dist-server/service/kpi-statistic/kpi-statistic-calculation.service.d.ts +0 -50
  374. package/dist-server/service/kpi-statistic/kpi-statistic-calculation.service.js +0 -324
  375. package/dist-server/service/kpi-statistic/kpi-statistic-calculation.service.js.map +0 -1
  376. package/dist-server/service/kpi-statistic/kpi-statistic-mutation.d.ts +0 -14
  377. package/dist-server/service/kpi-statistic/kpi-statistic-mutation.js +0 -279
  378. package/dist-server/service/kpi-statistic/kpi-statistic-mutation.js.map +0 -1
  379. package/dist-server/service/kpi-statistic/kpi-statistic-query.d.ts +0 -17
  380. package/dist-server/service/kpi-statistic/kpi-statistic-query.js +0 -183
  381. package/dist-server/service/kpi-statistic/kpi-statistic-query.js.map +0 -1
  382. package/dist-server/service/kpi-statistic/kpi-statistic-type.d.ts +0 -59
  383. package/dist-server/service/kpi-statistic/kpi-statistic-type.js +0 -200
  384. package/dist-server/service/kpi-statistic/kpi-statistic-type.js.map +0 -1
  385. package/dist-server/service/kpi-statistic/kpi-statistic.d.ts +0 -42
  386. package/dist-server/service/kpi-statistic/kpi-statistic.js +0 -210
  387. package/dist-server/service/kpi-statistic/kpi-statistic.js.map +0 -1
  388. package/dist-server/service/kpi-value/index.d.ts +0 -6
  389. package/dist-server/service/kpi-value/index.js +0 -10
  390. package/dist-server/service/kpi-value/index.js.map +0 -1
  391. package/dist-server/service/kpi-value/kpi-value-mutation.d.ts +0 -13
  392. package/dist-server/service/kpi-value/kpi-value-mutation.js +0 -447
  393. package/dist-server/service/kpi-value/kpi-value-mutation.js.map +0 -1
  394. package/dist-server/service/kpi-value/kpi-value-query.d.ts +0 -22
  395. package/dist-server/service/kpi-value/kpi-value-query.js +0 -149
  396. package/dist-server/service/kpi-value/kpi-value-query.js.map +0 -1
  397. package/dist-server/service/kpi-value/kpi-value-score.service.d.ts +0 -24
  398. package/dist-server/service/kpi-value/kpi-value-score.service.js +0 -61
  399. package/dist-server/service/kpi-value/kpi-value-score.service.js.map +0 -1
  400. package/dist-server/service/kpi-value/kpi-value-type.d.ts +0 -33
  401. package/dist-server/service/kpi-value/kpi-value-type.js +0 -156
  402. package/dist-server/service/kpi-value/kpi-value-type.js.map +0 -1
  403. package/dist-server/service/kpi-value/kpi-value.d.ts +0 -32
  404. package/dist-server/service/kpi-value/kpi-value.js +0 -175
  405. package/dist-server/service/kpi-value/kpi-value.js.map +0 -1
  406. package/dist-server/service/utils/value-date-util.d.ts +0 -4
  407. package/dist-server/service/utils/value-date-util.js +0 -117
  408. package/dist-server/service/utils/value-date-util.js.map +0 -1
  409. package/dist-server/tsconfig.tsbuildinfo +0 -1
@@ -1,655 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import '@material/web/icon/icon.js';
3
- import '@material/web/button/elevated-button.js';
4
- import '@material/web/textfield/outlined-text-field.js';
5
- import { CommonButtonStyles, CommonHeaderStyles, ScrollbarStyles } from '@operato/styles';
6
- import { PageView } from '@operato/shell';
7
- import { css, html } from 'lit';
8
- import { customElement, property, state } from 'lit/decorators.js';
9
- import { ScopedElementsMixin } from '@open-wc/scoped-elements';
10
- import { client } from '@operato/graphql';
11
- import { i18next, localize } from '@operato/i18n';
12
- import { notify } from '@operato/layout';
13
- import gql from 'graphql-tag';
14
- let KpiStatisticEditorPage = class KpiStatisticEditorPage extends localize(i18next)(ScopedElementsMixin(PageView)) {
15
- constructor() {
16
- super(...arguments);
17
- this.periodType = 'MONTH';
18
- this.valueDate = '';
19
- this.targetDate = ''; // 기준 날짜 (예: 2025-08-03)
20
- this.kpis = [];
21
- this.loading = false;
22
- this.error = '';
23
- this.editingCell = null;
24
- this._existingStatistics = [];
25
- // 통계 필드 정의
26
- this.statisticFields = [
27
- { name: 'count', label: 'Count', group: 'basic' },
28
- { name: 'sum', label: 'Sum', group: 'basic' },
29
- { name: 'range', label: 'Range', group: 'basic' },
30
- { name: 'mean', label: 'Mean', group: 'central' },
31
- { name: 'median', label: 'Median', group: 'central' },
32
- { name: 'minimum', label: 'Min', group: 'range' },
33
- { name: 'maximum', label: 'Max', group: 'range' },
34
- { name: 'standardDeviation', label: 'Std Dev', group: 'dispersion' },
35
- { name: 'variance', label: 'Variance', group: 'dispersion' },
36
- { name: 'percentile25', label: 'P25', group: 'percentile' },
37
- { name: 'percentile75', label: 'P75', group: 'percentile' },
38
- { name: 'iqr', label: 'IQR', group: 'percentile' },
39
- { name: 'lowerFence', label: 'Lower Fence', group: 'fence' },
40
- { name: 'upperFence', label: 'Upper Fence', group: 'fence' }
41
- ];
42
- }
43
- static { this.styles = [
44
- CommonHeaderStyles,
45
- ScrollbarStyles,
46
- css `
47
- :host { display: flex;
48
- flex-direction: column;
49
- padding: 20px;
50
- overflow-x: auto;
51
- }
52
-
53
- .header { display: flex;
54
- gap: 16px;
55
- align-items: center;
56
- margin-bottom: 20px;
57
- padding: 16px;
58
- background: var(--md-sys-color-surface-container);
59
- border-radius: 8px;
60
- }
61
-
62
- .controls { display: flex;
63
- gap: 12px;
64
- align-items: center;
65
- flex-wrap: wrap;
66
- }
67
-
68
- .table-container { flex: 1;
69
- overflow: auto;
70
- border: 1px solid var(--md-sys-color-outline);
71
- border-radius: 8px;
72
- }
73
-
74
- table { width: 100%;
75
- border-collapse: collapse;
76
- min-width: max-content;
77
- }
78
-
79
- th { background: var(--md-sys-color-surface-container-low);
80
- font-weight: 500;
81
- padding: 8px 12px;
82
- border: 1px solid var(--md-sys-color-outline-variant);
83
- min-width: 120px;
84
- height: 60px;
85
- vertical-align: middle;
86
- text-align: center;
87
- }
88
-
89
- td { padding: 8px 12px;
90
- border: 1px solid var(--md-sys-color-outline-variant);
91
- min-width: 120px;
92
- height: 60px;
93
- text-align: center;
94
- vertical-align: middle;
95
- }
96
-
97
- .kpi-header { position: sticky;
98
- left: 0;
99
- top: 0;
100
- z-index: 3;
101
- min-width: 200px;
102
- text-align: left;
103
- }
104
-
105
- .field-header { position: sticky;
106
- left: 0;
107
- top: 0;
108
- z-index: 2;
109
- min-width: 200px;
110
- text-align: center;
111
- }
112
-
113
- .kpi-name { position: sticky;
114
- left: 0;
115
- background: var(--md-sys-color-surface);
116
- font-weight: 500;
117
- min-width: 200px;
118
- text-align: left;
119
- z-index: 2;
120
- }
121
-
122
- tr:hover { background: var(--md-sys-color-surface-container-high);
123
- }
124
-
125
- td.editable-cell { cursor: pointer;
126
- background: var(--md-sys-color-primary-container);
127
- color: var(--md-sys-color-on-primary-container);
128
- }
129
-
130
- td.editable-cell:hover { background: var(--md-sys-color-primary-container);
131
- }
132
-
133
- td.highlighted-cell { background: var(--md-sys-color-secondary-container);
134
- color: var(--md-sys-color-on-secondary-container);
135
- font-weight: 500;
136
- }
137
-
138
- td.highlighted-cell:hover { background: var(--md-sys-color-secondary-container);
139
- }
140
-
141
- td.disabled-cell { background: var(--md-sys-color-surface-container);
142
- color: var(--md-sys-color-on-surface-variant);
143
- cursor: not-allowed;
144
- }
145
-
146
- .value-input { width: 100%;
147
- text-align: center;
148
- border: none;
149
- background: transparent;
150
- color: inherit;
151
- font-size: 12px;
152
- padding: 2px;
153
- }
154
-
155
- .value-input:focus { outline: 2px solid var(--md-sys-color-primary);
156
- border-radius: 4px;
157
- }
158
-
159
- .period-badge { font-size: 10px;
160
- padding: 2px 6px;
161
- border-radius: 4px;
162
- background: var(--md-sys-color-tertiary-container);
163
- color: var(--md-sys-color-on-tertiary-container);
164
- margin-left: 8px;
165
- }
166
-
167
- .loading { display: flex;
168
- justify-content: center;
169
- align-items: center;
170
- height: 200px;
171
- color: var(--md-sys-color-on-surface-variant);
172
- }
173
-
174
- .error { color: var(--md-sys-color-error);
175
- padding: 16px;
176
- text-align: center;
177
- }
178
-
179
- .legend { display: flex;
180
- gap: 16px;
181
- margin-top: 16px;
182
- font-size: 12px;
183
- }
184
-
185
- .legend-item { display: flex;
186
- align-items: center;
187
- gap: 4px;
188
- }
189
-
190
- .legend-color { width: 16px;
191
- height: 16px;
192
- border-radius: 2px;
193
- }
194
-
195
- .field-group { display: flex;
196
- flex-direction: column;
197
- gap: 4px;
198
- }
199
-
200
- .field-name { font-size: 10px;
201
- color: var(--md-sys-color-on-surface-variant);
202
- font-weight: 500;
203
- }
204
-
205
- .field-value { font-size: 12px;
206
- font-weight: 500;
207
- }
208
- `
209
- ]; }
210
- get context() {
211
- return { title: i18next.t('title.kpi statistic editor'),
212
- actions: [
213
- { title: i18next.t('button.save'),
214
- action: this._saveStatistics.bind(this),
215
- ...CommonButtonStyles.save
216
- },
217
- { title: i18next.t('button.cancel'),
218
- action: this._cancel.bind(this),
219
- ...CommonButtonStyles.cancel
220
- }
221
- ]
222
- };
223
- }
224
- render() {
225
- if (this.loading) {
226
- return html `
227
- <div class="loading">
228
- <md-icon>hourglass_empty</md-icon>
229
- <span>데이터를 불러오는 중...</span>
230
- </div>
231
- `;
232
- }
233
- if (this.error) {
234
- return html `
235
- <div class="error">
236
- <md-icon>error</md-icon>
237
- <span>${this.error}</span>
238
- </div>
239
- `;
240
- }
241
- return html `
242
- <div class="header">
243
- <div class="controls">
244
- <md-outlined-text-field
245
- label="기간 유형"
246
- .value=${this.periodType}
247
- @input=${(e) => this._onPeriodChange(e.target.value)}
248
- style="width: 120px;"
249
- ></md-outlined-text-field>
250
-
251
- <md-outlined-text-field
252
- label="기준 날짜"
253
- type="date"
254
- .value=${this.targetDate}
255
- @input=${(e) => this._onTargetDateChange(e.target.value)}
256
- style="width: 150px;"
257
- ></md-outlined-text-field>
258
-
259
- <md-outlined-text-field
260
- label="값 날짜"
261
- .value=${this.valueDate}
262
- @input=${(e) => (this.valueDate = e.target.value)}
263
- style="width: 150px;"
264
- readonly
265
- ></md-outlined-text-field>
266
-
267
- <md-elevated-button @click=${this._loadData}>
268
- <md-icon slot="icon">refresh</md-icon>
269
- 새로고침
270
- </md-elevated-button>
271
- </div>
272
- </div>
273
-
274
- <div class="table-container">
275
- <table>
276
- <thead>
277
- <tr>
278
- <th class="kpi-header">KPI명</th>
279
- ${this.statisticFields.map(field => html `
280
- <th class="field-header">
281
- <div class="field-group">
282
- <div class="field-name">${field.label}</div>
283
- <div class="field-value">${field.name}</div>
284
- </div>
285
- </th>
286
- `)}
287
- </tr>
288
- </thead>
289
- <tbody>
290
- ${this.kpis.map(kpi => html `
291
- <tr>
292
- <td class="kpi-name">
293
- ${kpi.kpi.name}
294
- <span class="period-badge">${kpi.periodType}</span>
295
- </td>
296
- ${this.statisticFields.map(field => html `
297
- <td
298
- class=${this._getCellClass(kpi, field.name)}
299
- @click=${() => this._startEdit(kpi.kpi.id, field.name)}
300
- >
301
- ${this._renderCellContent(kpi, field.name)}
302
- </td>
303
- `)}
304
- </tr>
305
- `)}
306
- </tbody>
307
- </table>
308
- </div>
309
-
310
- <div class="legend">
311
- <div class="legend-item">
312
- <div class="legend-color" style="background: var(--md-sys-color-primary-container);"></div>
313
- <span>편집 가능</span>
314
- </div>
315
- <div class="legend-item">
316
- <div class="legend-color" style="background: var(--md-sys-color-secondary-container);"></div>
317
- <span>하이라이트 (중요 필드)</span>
318
- </div>
319
- <div class="legend-item">
320
- <div class="legend-color" style="background: var(--md-sys-color-surface-container);"></div>
321
- <span>편집 불가</span>
322
- </div>
323
- </div>
324
- `;
325
- }
326
- _getCellClass(kpi, fieldName) {
327
- const isEditable = this._isFieldEditable(fieldName);
328
- const isHighlighted = this._isFieldHighlighted(fieldName);
329
- if (!isEditable) {
330
- return 'disabled-cell';
331
- }
332
- if (isHighlighted) {
333
- return 'highlighted-cell';
334
- }
335
- return 'editable-cell';
336
- }
337
- _isFieldEditable(fieldName) {
338
- return true;
339
- }
340
- _isFieldHighlighted(fieldName) {
341
- const importantFields = ['count', 'mean', 'median', 'minimum', 'maximum', 'standardDeviation'];
342
- return importantFields.includes(fieldName);
343
- }
344
- _renderCellContent(kpi, fieldName) {
345
- const isEditing = this.editingCell?.kpi?.id === kpi.kpi.id && this.editingCell?.field === fieldName;
346
- const value = kpi.statistics[fieldName];
347
- if (isEditing) {
348
- return html `
349
- <input
350
- class="value-input"
351
- type="number"
352
- step="0.01"
353
- .value=${(value || '').toString()}
354
- @blur=${(e) => this._finishEdit(kpi.kpi.id, fieldName, parseFloat(e.target.value) || null)}
355
- @keydown=${(e) => e.key === 'Enter' && e.target.blur()}
356
- autofocus
357
- />
358
- `;
359
- }
360
- return html `
361
- <span style="color: ${value !== null && value !== undefined ? 'inherit' : '#999'};">
362
- ${value !== null && value !== undefined ? value.toLocaleString() : '클릭하여 입력'}
363
- </span>
364
- `;
365
- }
366
- _startEdit(kpiId, fieldName) {
367
- this.editingCell = { kpi: { id: kpiId }, field: fieldName };
368
- }
369
- _finishEdit(kpiId, fieldName, value) {
370
- const kpi = this.kpis.find(k => k.kpi.id === kpiId);
371
- if (kpi) {
372
- const originalValue = this._findExistingStatistic(kpiId)?.[fieldName];
373
- const isChanged = originalValue !== value;
374
- kpi.statistics[fieldName] = value;
375
- kpi.statistics.isDirty = isChanged;
376
- }
377
- this.editingCell = null;
378
- }
379
- async _loadData() {
380
- if (!this.valueDate) {
381
- this.error = '값 날짜를 입력해주세요.';
382
- return;
383
- }
384
- this.loading = true;
385
- this.error = '';
386
- try { // KPI 목록 조회
387
- const kpisResponse = await client.query({ query: gql `
388
- query ($filters: [Filter!]) { kpis(filters: $filters) { items { id
389
- name
390
- periodType
391
- active
392
- category: parent { id
393
- name
394
- }
395
- }
396
- total
397
- }
398
- }
399
- `,
400
- variables: { filters: [{ name: 'active', operator: 'eq', value: true }]
401
- }
402
- });
403
- // 기존 KPI Statistic 데이터 조회
404
- const statisticsResponse = await client.query({ query: gql `
405
- query ($filters: [Filter!]) { kpiStatistics(filters: $filters) { items { id
406
- kpi { id
407
- name
408
- }
409
- valueDate
410
- periodType
411
- count
412
- sum
413
- range
414
- mean
415
- median
416
- minimum
417
- maximum
418
- standardDeviation
419
- variance
420
- percentile25
421
- percentile75
422
- iqr
423
- lowerFence
424
- upperFence
425
- additionalStatistics
426
- metadata
427
- }
428
- total
429
- }
430
- }
431
- `,
432
- variables: { filters: [
433
- { name: 'valueDate', operator: 'eq', value: this.valueDate },
434
- { name: 'periodType', operator: 'eq', value: this.periodType }
435
- ]
436
- }
437
- });
438
- // KPI 목록을 기준으로 데이터 구성 (카테고리별로 필터링)
439
- console.log('KPI 원본 데이터:', kpisResponse.data.kpis.items);
440
- const filteredKpis = kpisResponse.data.kpis.items;
441
- console.log('모든 KPI 포함:', filteredKpis);
442
- console.log('필터링된 KPI:', filteredKpis);
443
- this.kpis = filteredKpis.map((kpi) => ({ kpi: kpi,
444
- valueDate: this.valueDate,
445
- periodType: this.periodType,
446
- statistics: { count: null,
447
- sum: null,
448
- range: null,
449
- mean: null,
450
- median: null,
451
- minimum: null,
452
- maximum: null,
453
- standardDeviation: null,
454
- variance: null,
455
- percentile25: null,
456
- percentile75: null,
457
- iqr: null,
458
- lowerFence: null,
459
- upperFence: null,
460
- isDirty: false
461
- }
462
- }));
463
- // 기존 KPI Statistic 데이터 저장
464
- this._existingStatistics = statisticsResponse.data.kpiStatistics.items;
465
- console.log('기존 통계 데이터:', this._existingStatistics);
466
- // 기존 통계 데이터를 해당 KPI에 매핑
467
- statisticsResponse.data.kpiStatistics.items.forEach((statistic) => {
468
- const kpi = this.kpis.find(k => k.kpi.id === statistic.kpi.id); // KPI ID로 매칭
469
- console.log(`통계 데이터 매핑: statistic.kpi.id=${statistic.kpi.id}, 찾은 KPI:`, kpi?.kpi.name || '없음');
470
- if (kpi) {
471
- kpi.statistics = { count: statistic.count,
472
- sum: statistic.sum,
473
- range: statistic.range,
474
- mean: statistic.mean,
475
- median: statistic.median,
476
- minimum: statistic.minimum,
477
- maximum: statistic.maximum,
478
- standardDeviation: statistic.standardDeviation,
479
- variance: statistic.variance,
480
- percentile25: statistic.percentile25,
481
- percentile75: statistic.percentile75,
482
- iqr: statistic.iqr,
483
- lowerFence: statistic.lowerFence,
484
- upperFence: statistic.upperFence,
485
- isDirty: false
486
- };
487
- }
488
- });
489
- console.log('KPI 총 개수:', kpisResponse.data.kpis.total);
490
- console.log('KPI 목록:', kpisResponse.data.kpis.items);
491
- console.log('기존 통계 데이터:', this._existingStatistics);
492
- console.log('구성된 KPI 통계 데이터:', this.kpis);
493
- console.log('최종 KPI 배열 길이:', this.kpis.length);
494
- this.requestUpdate();
495
- }
496
- catch (error) {
497
- console.error('데이터 로드 중 오류:', error);
498
- this.error = '데이터를 불러오는 중 오류가 발생했습니다.';
499
- }
500
- finally {
501
- this.loading = false;
502
- }
503
- }
504
- async _saveStatistics() {
505
- try {
506
- const patches = [];
507
- this.kpis.forEach(kpi => {
508
- if (kpi.statistics.isDirty) {
509
- const existingStatistic = this._findExistingStatistic(kpi.kpi.id);
510
- if (existingStatistic) { // 기존 데이터 업데이트
511
- const { isDirty, ...statisticsWithoutDirty } = kpi.statistics;
512
- patches.push({ id: existingStatistic.id,
513
- ...statisticsWithoutDirty,
514
- cuFlag: 'M'
515
- });
516
- }
517
- else { // 새로운 데이터 생성
518
- const { isDirty, ...statisticsWithoutDirty } = kpi.statistics;
519
- patches.push({ kpi: { id: kpi.kpi.id
520
- },
521
- valueDate: kpi.valueDate,
522
- periodType: kpi.periodType,
523
- ...statisticsWithoutDirty,
524
- additionalStatistics: {},
525
- metadata: { calculationMethod: 'manual',
526
- lastCalculated: new Date(),
527
- dataCount: kpi.statistics.count || 0
528
- },
529
- cuFlag: '+'
530
- });
531
- }
532
- }
533
- });
534
- if (patches.length === 0) {
535
- notify({ message: '저장할 데이터가 없습니다.' });
536
- return;
537
- }
538
- const response = await client.mutate({ mutation: gql `
539
- mutation ($patches: [KpiStatisticPatch!]!) { updateMultipleKpiStatistic(patches: $patches) { id
540
- kpi { id
541
- name
542
- }
543
- valueDate
544
- periodType
545
- }
546
- }
547
- `,
548
- variables: { patches }
549
- });
550
- if (!response.errors) { // 저장 후 dirty 상태 해제
551
- this.kpis.forEach(kpi => {
552
- kpi.statistics.isDirty = false;
553
- });
554
- notify({ message: 'KPI 통계값이 성공적으로 저장되었습니다.' });
555
- this.requestUpdate();
556
- }
557
- }
558
- catch (error) {
559
- console.error('저장 중 오류:', error);
560
- notify({ message: '저장 중 오류가 발생했습니다.' });
561
- }
562
- }
563
- _findExistingStatistic(kpiId) {
564
- return this._existingStatistics?.find((s) => s.kpi === kpiId);
565
- }
566
- _onTargetDateChange(targetDate) {
567
- this.targetDate = targetDate;
568
- this._calculateDateRange();
569
- }
570
- _onPeriodChange(periodType) {
571
- this.periodType = periodType;
572
- this._calculateDateRange();
573
- }
574
- _calculateDateRange() {
575
- if (!this.targetDate || !this.periodType)
576
- return;
577
- const target = new Date(this.targetDate);
578
- let valueDate;
579
- switch (this.periodType) {
580
- case 'DAY':
581
- valueDate = target.toISOString().split('T')[0];
582
- break;
583
- case 'WEEK':
584
- // 해당 주의 월요일
585
- const dayOfWeek = target.getDay();
586
- const daysToMonday = dayOfWeek === 0 ? 6 : dayOfWeek - 1;
587
- const monday = new Date(target);
588
- monday.setDate(target.getDate() - daysToMonday);
589
- valueDate = monday.toISOString().split('T')[0];
590
- break;
591
- case 'MONTH':
592
- valueDate = `${target.getFullYear()}-${String(target.getMonth() + 1).padStart(2, '0')}`;
593
- break;
594
- case 'QUARTER':
595
- const quarter = Math.floor(target.getMonth() / 3) + 1;
596
- valueDate = `${target.getFullYear()}-Q${quarter}`;
597
- break;
598
- case 'YEAR':
599
- valueDate = target.getFullYear().toString();
600
- break;
601
- default:
602
- valueDate = target.toISOString().split('T')[0];
603
- }
604
- this.valueDate = valueDate;
605
- }
606
- _cancel() {
607
- this.editingCell = null;
608
- this._loadData(); // 원본 데이터로 복원
609
- }
610
- async pageInitialized(lifecycle) {
611
- if (!this.targetDate) {
612
- this.targetDate = new Date().toLocaleDateString('sv-SE');
613
- }
614
- // 기간 유형에 따라 날짜 범위 계산
615
- this._calculateDateRange();
616
- await this._loadData();
617
- }
618
- };
619
- __decorate([
620
- property({ type: String }),
621
- __metadata("design:type", String)
622
- ], KpiStatisticEditorPage.prototype, "periodType", void 0);
623
- __decorate([
624
- property({ type: String }),
625
- __metadata("design:type", String)
626
- ], KpiStatisticEditorPage.prototype, "valueDate", void 0);
627
- __decorate([
628
- property({ type: String }),
629
- __metadata("design:type", String)
630
- ], KpiStatisticEditorPage.prototype, "targetDate", void 0);
631
- __decorate([
632
- state(),
633
- __metadata("design:type", Array)
634
- ], KpiStatisticEditorPage.prototype, "kpis", void 0);
635
- __decorate([
636
- state(),
637
- __metadata("design:type", Boolean)
638
- ], KpiStatisticEditorPage.prototype, "loading", void 0);
639
- __decorate([
640
- state(),
641
- __metadata("design:type", String)
642
- ], KpiStatisticEditorPage.prototype, "error", void 0);
643
- __decorate([
644
- state(),
645
- __metadata("design:type", Object)
646
- ], KpiStatisticEditorPage.prototype, "editingCell", void 0);
647
- __decorate([
648
- state(),
649
- __metadata("design:type", Array)
650
- ], KpiStatisticEditorPage.prototype, "_existingStatistics", void 0);
651
- KpiStatisticEditorPage = __decorate([
652
- customElement('kpi-statistic-editor-page')
653
- ], KpiStatisticEditorPage);
654
- export { KpiStatisticEditorPage };
655
- //# sourceMappingURL=kpi-statistic-editor-page.js.map