@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,678 +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 KpiMetricValueEditorPage = class KpiMetricValueEditorPage extends localize(i18next)(ScopedElementsMixin(PageView)) {
15
- constructor() {
16
- super(...arguments);
17
- this.org = '';
18
- this.startDate = '';
19
- this.endDate = '';
20
- this.metrics = [];
21
- this.dates = [];
22
- this.loading = false;
23
- this.error = '';
24
- this.editingCell = null;
25
- this._existingValues = [];
26
- }
27
- static { this.styles = [
28
- CommonHeaderStyles,
29
- ScrollbarStyles,
30
- css `
31
- :host { display: flex;
32
- flex-direction: column;
33
- padding: 20px;
34
- overflow-x: auto;
35
- }
36
-
37
- .header { display: flex;
38
- gap: 16px;
39
- align-items: center;
40
- margin-bottom: 20px;
41
- padding: 16px;
42
- background: var(--md-sys-color-surface-container);
43
- border-radius: 8px;
44
- }
45
-
46
- .controls { display: flex;
47
- gap: 12px;
48
- align-items: center;
49
- }
50
-
51
- .table-container { flex: 1;
52
- overflow: auto;
53
- border: 1px solid var(--md-sys-color-outline);
54
- border-radius: 8px;
55
- }
56
-
57
- table { width: 100%;
58
- border-collapse: collapse;
59
- min-width: max-content;
60
- }
61
-
62
- th { background: var(--md-sys-color-surface-container-low);
63
- font-weight: 500;
64
- padding: 8px 12px;
65
- border: 1px solid var(--md-sys-color-outline-variant);
66
- min-width: 80px;
67
- height: 120px;
68
- vertical-align: middle;
69
- }
70
-
71
- td { padding: 8px 12px;
72
- border: 1px solid var(--md-sys-color-outline-variant);
73
- min-width: 80px;
74
- height: 60px;
75
- text-align: right;
76
- vertical-align: middle;
77
- }
78
-
79
- .metric-header { position: sticky;
80
- left: 0;
81
- top: 0;
82
- z-index: 3;
83
- }
84
-
85
- .metric-name { position: sticky;
86
- left: 0;
87
- background: var(--md-sys-color-surface);
88
- font-weight: 500;
89
- min-width: 200px;
90
- text-align: left;
91
- z-index: 2;
92
- }
93
-
94
- tr:hover { background: var(--md-sys-color-surface-container-high);
95
- }
96
-
97
- th.date-header { position: sticky;
98
- top: 0;
99
- z-index: 2;
100
- text-align: center;
101
- font-size: 11px;
102
- color: var(--md-sys-color-on-surface-variant);
103
- writing-mode: vertical-rl;
104
- text-orientation: mixed;
105
- min-height: 120px;
106
- display: flex;
107
- align-items: center;
108
- justify-content: center;
109
- }
110
-
111
- td.editable-cell { cursor: pointer;
112
- background: var(--md-sys-color-primary-container);
113
- color: var(--md-sys-color-on-primary-container);
114
- }
115
-
116
- td.editable-cell:hover { background: var(--md-sys-color-primary-container);
117
- }
118
-
119
- td.highlighted-cell { background: var(--md-sys-color-secondary-container);
120
- color: var(--md-sys-color-on-secondary-container);
121
- font-weight: 500;
122
- }
123
-
124
- td.highlighted-cell:hover { background: var(--md-sys-color-secondary-container);
125
- }
126
-
127
- td.disabled-cell { background: var(--md-sys-color-surface-container);
128
- color: var(--md-sys-color-on-surface-variant);
129
- cursor: not-allowed;
130
- }
131
-
132
- .value-input { width: 100%;
133
- text-align: center;
134
- border: none;
135
- background: transparent;
136
- color: inherit;
137
- font-size: 12px;
138
- padding: 2px;
139
- }
140
-
141
- .value-input:focus { outline: 2px solid var(--md-sys-color-primary);
142
- border-radius: 4px;
143
- }
144
-
145
- .period-type-badge { font-size: 10px;
146
- padding: 2px 6px;
147
- border-radius: 4px;
148
- background: var(--md-sys-color-tertiary-container);
149
- color: var(--md-sys-color-on-tertiary-container);
150
- margin-left: 8px;
151
- }
152
-
153
- .loading { display: flex;
154
- justify-content: center;
155
- align-items: center;
156
- height: 200px;
157
- color: var(--md-sys-color-on-surface-variant);
158
- }
159
-
160
- .error { color: var(--md-sys-color-error);
161
- padding: 16px;
162
- text-align: center;
163
- }
164
-
165
- .legend { display: flex;
166
- gap: 16px;
167
- margin-top: 16px;
168
- font-size: 12px;
169
- }
170
-
171
- .legend-item { display: flex;
172
- align-items: center;
173
- gap: 4px;
174
- }
175
-
176
- .legend-color { width: 16px;
177
- height: 16px;
178
- border-radius: 2px;
179
- }
180
- `
181
- ]; }
182
- get context() {
183
- return { title: i18next.t('title.kpi metric value editor'),
184
- actions: [
185
- { title: i18next.t('button.save'),
186
- action: this._saveValues.bind(this),
187
- ...CommonButtonStyles.save
188
- },
189
- { title: i18next.t('button.cancel'),
190
- action: this._cancel.bind(this),
191
- ...CommonButtonStyles.cancel
192
- }
193
- ]
194
- };
195
- }
196
- render() {
197
- if (this.loading) {
198
- return html `
199
- <div class="loading">
200
- <md-icon>hourglass_empty</md-icon>
201
- <span>데이터를 불러오는 중...</span>
202
- </div>
203
- `;
204
- }
205
- if (this.error) {
206
- return html `
207
- <div class="error">
208
- <md-icon>error</md-icon>
209
- <span>${this.error}</span>
210
- </div>
211
- `;
212
- }
213
- return html `
214
- <div class="header">
215
- <div class="controls">
216
- <md-outlined-text-field
217
- label="그룹"
218
- .value=${this.org}
219
- @input=${(e) => (this.org = e.target.value)}
220
- style="width: 150px;"
221
- ></md-outlined-text-field>
222
-
223
- <md-outlined-text-field
224
- label="시작일"
225
- type="date"
226
- .value=${this.startDate}
227
- @input=${(e) => (this.startDate = e.target.value)}
228
- style="width: 150px;"
229
- ></md-outlined-text-field>
230
-
231
- <md-outlined-text-field
232
- label="종료일"
233
- type="date"
234
- .value=${this.endDate}
235
- @input=${(e) => (this.endDate = e.target.value)}
236
- style="width: 150px;"
237
- ></md-outlined-text-field>
238
-
239
- <md-elevated-button @click=${this._loadData}>
240
- <md-icon slot="icon">refresh</md-icon>
241
- 새로고침
242
- </md-elevated-button>
243
- </div>
244
- </div>
245
-
246
- <div class="table-container">
247
- <table style="border-collapse: collapse; width: 100%;">
248
- <thead>
249
- <tr>
250
- <th
251
- style="border: 1px solid #ccc; padding: 8px; background: #f5f5f5; min-width: 200px; left: 0; top: 0;"
252
- class="metric-header"
253
- >
254
- Metric명
255
- </th>
256
- ${this.dates.map(date => html `
257
- <th
258
- style="border: 1px solid #ccc; padding: 8px; background: #f5f5f5; min-width: 80px; position: sticky; top: 0;"
259
- >
260
- ${this._formatDate(date)}
261
- </th>
262
- `)}
263
- </tr>
264
- </thead>
265
- <tbody>
266
- ${this.metrics.map(metric => html `
267
- <tr>
268
- <td
269
- style="border: 1px solid #ccc; padding: 8px; background: #fff; min-width: 200px;"
270
- class="metric-name"
271
- >
272
- ${metric.metricName}
273
- <span
274
- style="font-size: 10px; padding: 2px 6px; background: #e0e0e0; border-radius: 4px; margin-left: 8px;"
275
- >${metric.periodType}</span
276
- >
277
- </td>
278
- ${this.dates.map(date => html `
279
- <td
280
- style="border: 1px solid #ccc; padding: 8px; background: #e3f2fd; text-align: center; min-width: 80px; cursor: pointer;"
281
- @click=${() => this._startEdit(metric.metricId, date)}
282
- >
283
- ${this._renderCellContent(metric, date)}
284
- </td>
285
- `)}
286
- </tr>
287
- `)}
288
- </tbody>
289
- </table>
290
- </div>
291
-
292
- <div class="legend">
293
- <div class="legend-item">
294
- <div class="legend-color" style="background: var(--md-sys-color-primary-container);"></div>
295
- <span>편집 가능</span>
296
- </div>
297
- <div class="legend-item">
298
- <div class="legend-color" style="background: var(--md-sys-color-secondary-container);"></div>
299
- <span>하이라이트 (PeriodType에 따라)</span>
300
- </div>
301
- <div class="legend-item">
302
- <div class="legend-color" style="background: var(--md-sys-color-surface-container);"></div>
303
- <span>편집 불가</span>
304
- </div>
305
- </div>
306
- `;
307
- }
308
- _renderCellContent(metric, date) {
309
- const isEditing = this.editingCell?.metricId === metric.metricId && this.editingCell?.date === date;
310
- // periodType에 따라 값을 가져오는 방식 결정
311
- let value = null;
312
- if (metric.periodType === 'DAY') { // DAY인 경우 해당 날짜의 값을 사용
313
- value = metric.values[date]?.value;
314
- }
315
- else if (metric.periodType === 'WEEK') { // WEEK인 경우 해당 주의 월요일의 값을 사용
316
- const weekKey = this._getWeekKey(date);
317
- value = metric.values[weekKey]?.value;
318
- }
319
- else if (metric.periodType === 'MONTH') { // MONTH인 경우 해당 월의 값을 사용
320
- const monthKey = this._getMonthKey(date);
321
- value = metric.values[monthKey]?.value;
322
- }
323
- else if (metric.periodType === 'QUARTER') { // QUARTER인 경우 해당 분기의 값을 사용
324
- const quarterKey = this._getQuarterKey(date);
325
- value = metric.values[quarterKey]?.value;
326
- }
327
- else if (metric.periodType === 'YEAR') { // YEAR인 경우 해당 연도의 값을 사용
328
- const yearKey = this._getYearKey(date);
329
- value = metric.values[yearKey]?.value;
330
- }
331
- else { // 기본값: DAY와 동일
332
- value = metric.values[date]?.value;
333
- }
334
- if (isEditing) {
335
- console.log('Rendering input for editing, value:', value);
336
- return html `
337
- <input
338
- type="number"
339
- step="0.01"
340
- .value=${(value || '').toString()}
341
- @blur=${(e) => this._finishEdit(metric.metricId, date, parseFloat(e.target.value) || 0)}
342
- @keydown=${(e) => e.key === 'Enter' && e.target.blur()}
343
- style="width: 100%; text-align: center; border: none; background: transparent;"
344
- autofocus
345
- />
346
- `;
347
- }
348
- return html `
349
- <div style="display: flex; flex-direction: column; gap: 2px;">
350
- <span style="font-weight: 500; color: ${value !== null && value !== undefined ? 'inherit' : '#999'};">
351
- ${value !== null && value !== undefined ? value.toLocaleString() : '클릭하여 입력'}
352
- </span>
353
- </div>
354
- `;
355
- }
356
- _formatDate(date) {
357
- const d = new Date(date);
358
- return d.toLocaleDateString('ko-KR', { month: 'numeric', day: 'numeric' });
359
- }
360
- _startEdit(metricId, date) {
361
- this.editingCell = { metricId, date };
362
- }
363
- _finishEdit(metricId, date, value) {
364
- const metric = this.metrics.find(m => m.metricId === metricId);
365
- if (metric) { // periodType에 따라 저장할 키 결정
366
- let storageKey = date;
367
- if (metric.periodType === 'WEEK') {
368
- storageKey = this._getWeekKey(date);
369
- }
370
- else if (metric.periodType === 'MONTH') {
371
- storageKey = this._getMonthKey(date);
372
- }
373
- else if (metric.periodType === 'QUARTER') {
374
- storageKey = this._getQuarterKey(date);
375
- }
376
- else if (metric.periodType === 'YEAR') {
377
- storageKey = this._getYearKey(date);
378
- }
379
- if (!metric.values[storageKey]) {
380
- metric.values[storageKey] = { value: 0, isDirty: false };
381
- }
382
- // 값이 변경되었는지 확인
383
- const originalValue = this._findExistingValue(metricId, storageKey)?.value;
384
- const isChanged = originalValue !== value;
385
- metric.values[storageKey].value = value;
386
- metric.values[storageKey].isDirty = isChanged;
387
- }
388
- this.editingCell = null;
389
- }
390
- async _loadData() {
391
- if (!this.startDate || !this.endDate) {
392
- this.error = '시작일, 종료일을 모두 입력해주세요.';
393
- return;
394
- }
395
- this.loading = true;
396
- this.error = '';
397
- try { // KPI Metric 목록 조회
398
- const metricsResponse = await client.query({ query: gql `
399
- query ($filters: [Filter!]) { kpiMetrics(filters: $filters) { items { id
400
- name
401
- periodType
402
- active
403
- }
404
- total
405
- }
406
- }
407
- `,
408
- variables: { filters: [{ name: 'active', operator: 'eq', value: true }]
409
- }
410
- });
411
- // KPI Metric Value 데이터 조회
412
- const valuesResponse = await client.query({ query: gql `
413
- query ($filters: [Filter!]) { kpiMetricValues(filters: $filters) { items { id
414
- metricId
415
- valueDate
416
- value
417
- org
418
- }
419
- total
420
- }
421
- }
422
- `,
423
- variables: { filters: [
424
- ...(this.org ? [{ name: 'org', operator: 'eq', value: this.org }] : []),
425
- { name: 'valueDate', operator: 'between', value: [this.startDate, this.endDate] }
426
- ]
427
- }
428
- });
429
- // 날짜 배열 생성
430
- this.dates = this._generateDateArray(this.startDate, this.endDate);
431
- // KPI Metric 목록을 기준으로 데이터 구성
432
- this.metrics = metricsResponse.data.kpiMetrics.items.map((metric) => ({ metricId: metric.id,
433
- metricName: metric.name,
434
- periodType: metric.periodType,
435
- values: {}
436
- }));
437
- // 기존 KPI Metric Value 데이터 저장
438
- this._existingValues = valuesResponse.data.kpiMetricValues.items;
439
- // KPI Metric Value 데이터를 해당 Metric에 매핑
440
- valuesResponse.data.kpiMetricValues.items.forEach((value) => {
441
- const metric = this.metrics.find(m => m.metricId === value.metricId);
442
- if (metric) {
443
- metric.values[value.valueDate] = { value: value.value,
444
- isDirty: false
445
- };
446
- }
447
- });
448
- // KPI Metric Value가 없는 Metric도 빈 값으로 초기화
449
- this.metrics.forEach(metric => {
450
- this.dates.forEach(date => {
451
- if (!metric.values[date]) {
452
- metric.values[date] = { value: null, isDirty: false };
453
- }
454
- });
455
- });
456
- this.requestUpdate();
457
- }
458
- catch (error) {
459
- console.error('데이터 로드 중 오류:', error);
460
- this.error = '데이터를 불러오는 중 오류가 발생했습니다.';
461
- }
462
- finally {
463
- this.loading = false;
464
- }
465
- }
466
- _generateDateArray(startDate, endDate) {
467
- const dates = [];
468
- const start = new Date(startDate);
469
- const end = new Date(endDate);
470
- // 일별로 생성 (기본)
471
- for (let d = new Date(start); d <= end; d.setDate(d.getDate() + 1)) {
472
- dates.push(d.toLocaleDateString('sv-SE'));
473
- }
474
- return dates;
475
- }
476
- async _saveValues() {
477
- try {
478
- const patches = [];
479
- this.metrics.forEach(metric => {
480
- Object.entries(metric.values).forEach(([date, data]) => {
481
- if (data.isDirty && data.value !== null && data.value !== undefined) {
482
- const existingValue = this._findExistingValue(metric.metricId, date);
483
- if (existingValue) {
484
- patches.push({ id: existingValue.id,
485
- value: data.value,
486
- org: this.org,
487
- cuFlag: 'M'
488
- });
489
- }
490
- else {
491
- console.log('Creating new value for metric:', metric.metricName, 'periodType:', metric.periodType, 'date:', date);
492
- const normalizedDate = this._normalizeDateByPeriodType(date, metric.periodType);
493
- console.log('Normalized date:', normalizedDate);
494
- patches.push({ metricId: metric.metricId,
495
- valueDate: normalizedDate,
496
- value: data.value,
497
- org: this.org,
498
- cuFlag: '+'
499
- });
500
- }
501
- }
502
- });
503
- });
504
- if (patches.length === 0) {
505
- notify({ message: '저장할 데이터가 없습니다.' });
506
- return;
507
- }
508
- // 디버깅: patches 내용 확인
509
- console.log('Sending patches:', patches);
510
- // 단일 mutation으로 생성과 업데이트 처리
511
- const response = await client.mutate({ mutation: gql `
512
- mutation ($patches: [KpiMetricValuePatch!]!) { updateMultipleKpiMetricValue(patches: $patches) { id
513
- value
514
- valueDate
515
- metricId
516
- }
517
- }
518
- `,
519
- variables: { patches }
520
- });
521
- if (!response.errors) { // 저장 후 dirty 상태 해제
522
- response.data.updateMultipleKpiMetricValue.forEach((savedValue) => {
523
- const metric = this.metrics.find(m => m.metricId === savedValue.metricId);
524
- if (metric && metric.values[savedValue.valueDate]) {
525
- metric.values[savedValue.valueDate].isDirty = false;
526
- }
527
- });
528
- notify({ message: 'KPI Metric 값이 성공적으로 저장되었습니다.' });
529
- this.requestUpdate();
530
- }
531
- }
532
- catch (error) {
533
- console.error('저장 중 오류:', error);
534
- notify({ message: '저장 중 오류가 발생했습니다.' });
535
- }
536
- }
537
- _findExistingValue(metricId, date) {
538
- return this._existingValues?.find((v) => v.metricId === metricId && v.valueDate === date);
539
- }
540
- _getMonthKey(date) {
541
- const dateObj = new Date(date);
542
- return `${dateObj.getFullYear()}-${String(dateObj.getMonth() + 1).padStart(2, '0')}`;
543
- }
544
- _getQuarterKey(date) {
545
- const dateObj = new Date(date);
546
- const quarter = Math.floor(dateObj.getMonth() / 3) + 1;
547
- return `${dateObj.getFullYear()}-Q${quarter}`;
548
- }
549
- _getYearKey(date) {
550
- const dateObj = new Date(date);
551
- return `${dateObj.getFullYear()}`;
552
- }
553
- _getWeekKey(date) {
554
- const dateObj = new Date(date);
555
- const dayOfWeek = dateObj.getDay();
556
- const daysToMonday = dayOfWeek === 0 ? 6 : dayOfWeek - 1;
557
- const monday = new Date(dateObj);
558
- monday.setDate(dateObj.getDate() - daysToMonday);
559
- return monday.toLocaleDateString('sv-SE');
560
- }
561
- _getMondayOfWeek(date) {
562
- const dateObj = new Date(date);
563
- const dayOfWeek = dateObj.getDay();
564
- const daysToMonday = dayOfWeek === 0 ? 6 : dayOfWeek - 1;
565
- const monday = new Date(dateObj);
566
- monday.setDate(dateObj.getDate() - daysToMonday);
567
- return monday.toLocaleDateString('sv-SE');
568
- }
569
- _getFirstDayOfMonth(date) {
570
- const dateObj = new Date(date);
571
- return new Date(dateObj.getFullYear(), dateObj.getMonth(), 1).toLocaleDateString('sv-SE');
572
- }
573
- _getFirstDayOfQuarter(date) {
574
- const dateObj = new Date(date);
575
- const quarter = Math.floor(dateObj.getMonth() / 3);
576
- const firstMonthOfQuarter = quarter * 3;
577
- return new Date(dateObj.getFullYear(), firstMonthOfQuarter, 1).toLocaleDateString('sv-SE');
578
- }
579
- _getFirstDayOfYear(date) {
580
- const dateObj = new Date(date);
581
- return new Date(dateObj.getFullYear(), 0, 1).toLocaleDateString('sv-SE');
582
- }
583
- _normalizeDateByPeriodType(date, periodType) {
584
- console.log('Normalizing date:', date, 'for periodType:', periodType);
585
- const dateObj = new Date(date);
586
- switch (periodType) {
587
- case 'DAY':
588
- console.log('DAY - returning original date:', date);
589
- return date; // 그대로 사용
590
- case 'WEEK':
591
- // 해당 주의 월요일로 설정
592
- const dayOfWeek = dateObj.getDay();
593
- const daysToMonday = dayOfWeek === 0 ? 6 : dayOfWeek - 1; // 일요일이면 6일 전, 아니면 dayOfWeek - 1
594
- const monday = new Date(dateObj);
595
- monday.setDate(dateObj.getDate() - daysToMonday);
596
- const weeklyDate = monday.toLocaleDateString('sv-SE');
597
- console.log('WEEK - returning monday:', weeklyDate);
598
- return weeklyDate;
599
- case 'MONTH':
600
- // 년-월 형식으로 설정 (예: "2025-01")
601
- const monthlyDate = `${dateObj.getFullYear()}-${String(dateObj.getMonth() + 1).padStart(2, '0')}`;
602
- console.log('MONTH - returning year-month format:', monthlyDate);
603
- return monthlyDate;
604
- case 'QUARTER':
605
- // 분기 형식으로 설정 (예: "2025-Q1")
606
- const quarter = Math.floor(dateObj.getMonth() / 3) + 1;
607
- const quarterlyDate = `${dateObj.getFullYear()}-Q${quarter}`;
608
- console.log('QUARTER - returning quarter format:', quarterlyDate);
609
- return quarterlyDate;
610
- case 'YEAR':
611
- // 년도 형식으로 설정 (예: "2025")
612
- const yearlyDate = `${dateObj.getFullYear()}`;
613
- console.log('YEAR - returning year format:', yearlyDate);
614
- return yearlyDate;
615
- default:
616
- console.log('DEFAULT - returning original date:', date);
617
- return date; // 기본값
618
- }
619
- }
620
- _cancel() {
621
- this.editingCell = null;
622
- this._loadData(); // 원본 데이터로 복원
623
- }
624
- async pageInitialized(lifecycle) {
625
- if (!this.startDate) {
626
- const today = new Date();
627
- const oneMonthAgo = new Date(today.getFullYear(), today.getMonth() - 1, today.getDate());
628
- this.startDate = oneMonthAgo.toLocaleDateString('sv-SE');
629
- }
630
- if (!this.endDate) {
631
- const today = new Date();
632
- this.endDate = today.toLocaleDateString('sv-SE');
633
- }
634
- // 페이지 초기화 시 자동으로 데이터 로드
635
- await this._loadData();
636
- }
637
- };
638
- __decorate([
639
- property({ type: String }),
640
- __metadata("design:type", String)
641
- ], KpiMetricValueEditorPage.prototype, "org", void 0);
642
- __decorate([
643
- property({ type: String }),
644
- __metadata("design:type", String)
645
- ], KpiMetricValueEditorPage.prototype, "startDate", void 0);
646
- __decorate([
647
- property({ type: String }),
648
- __metadata("design:type", String)
649
- ], KpiMetricValueEditorPage.prototype, "endDate", void 0);
650
- __decorate([
651
- state(),
652
- __metadata("design:type", Array)
653
- ], KpiMetricValueEditorPage.prototype, "metrics", void 0);
654
- __decorate([
655
- state(),
656
- __metadata("design:type", Array)
657
- ], KpiMetricValueEditorPage.prototype, "dates", void 0);
658
- __decorate([
659
- state(),
660
- __metadata("design:type", Boolean)
661
- ], KpiMetricValueEditorPage.prototype, "loading", void 0);
662
- __decorate([
663
- state(),
664
- __metadata("design:type", String)
665
- ], KpiMetricValueEditorPage.prototype, "error", void 0);
666
- __decorate([
667
- state(),
668
- __metadata("design:type", Object)
669
- ], KpiMetricValueEditorPage.prototype, "editingCell", void 0);
670
- __decorate([
671
- state(),
672
- __metadata("design:type", Array)
673
- ], KpiMetricValueEditorPage.prototype, "_existingValues", void 0);
674
- KpiMetricValueEditorPage = __decorate([
675
- customElement('kpi-metric-value-editor-page')
676
- ], KpiMetricValueEditorPage);
677
- export { KpiMetricValueEditorPage };
678
- //# sourceMappingURL=kpi-metric-value-editor-page.js.map