@things-factory/kpi 9.0.31 → 9.0.32

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 (324) hide show
  1. package/README.md +1 -2
  2. package/client/charts/kpi-boxplot-chart.ts +182 -42
  3. package/client/charts/kpi-radar-chart.ts +9 -9
  4. package/client/pages/kpi/kpi-list-page.ts +196 -32
  5. package/client/pages/kpi/kpi-overview.ts +9 -11
  6. package/client/pages/kpi/kpi-tree-page.ts +409 -0
  7. package/client/pages/kpi/kpi-view.ts +187 -0
  8. package/client/pages/kpi-dashboard/cards/kpi-level1-card.ts +1 -1
  9. package/client/pages/kpi-dashboard/cards/kpi-level2-comparison.ts +1 -1
  10. package/client/pages/kpi-dashboard/cards/kpi-level3-comparison.ts +1 -1
  11. package/client/pages/kpi-dashboard/components/kpi-left-panel.ts +198 -160
  12. package/client/pages/kpi-dashboard/components/kpi-map-panel.ts +133 -0
  13. package/client/pages/kpi-dashboard/components/kpi-region-popup.ts +3 -2
  14. package/client/pages/kpi-dashboard/kpi-dashboard-map.ts +4 -3
  15. package/client/pages/kpi-dashboard/kpi-dashboard.ts +28 -30
  16. package/client/pages/kpi-history/kpi-history-list-page.ts +11 -11
  17. package/client/pages/kpi-metric/kpi-metric-list-page.ts +10 -2
  18. package/client/pages/kpi-metric-value/kpi-metric-value-editor-page.ts +7 -7
  19. package/client/pages/kpi-metric-value/kpi-metric-value-importer.ts +2 -2
  20. package/client/pages/kpi-metric-value/kpi-metric-value-list-page.ts +16 -8
  21. package/client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.ts +5 -5
  22. package/client/pages/kpi-statistic/kpi-statistic-editor-page.ts +1 -2
  23. package/client/pages/kpi-statistic/kpi-statistic-list-page.ts +10 -2
  24. package/client/pages/kpi-value/kpi-value-editor-page.ts +11 -7
  25. package/client/pages/kpi-value/kpi-value-list-page.ts +31 -7
  26. package/client/route.ts +2 -9
  27. package/design-entities.md +8 -12
  28. package/dist-client/charts/kpi-boxplot-chart.d.ts +2 -0
  29. package/dist-client/charts/kpi-boxplot-chart.js +168 -42
  30. package/dist-client/charts/kpi-boxplot-chart.js.map +1 -1
  31. package/dist-client/charts/kpi-radar-chart.js +9 -9
  32. package/dist-client/charts/kpi-radar-chart.js.map +1 -1
  33. package/dist-client/pages/kpi/kpi-list-page.d.ts +19 -3
  34. package/dist-client/pages/kpi/kpi-list-page.js +188 -32
  35. package/dist-client/pages/kpi/kpi-list-page.js.map +1 -1
  36. package/dist-client/pages/kpi/kpi-overview.js +9 -11
  37. package/dist-client/pages/kpi/kpi-overview.js.map +1 -1
  38. package/dist-client/pages/kpi/kpi-tree-page.d.ts +59 -0
  39. package/dist-client/pages/kpi/kpi-tree-page.js +403 -0
  40. package/dist-client/pages/kpi/kpi-tree-page.js.map +1 -0
  41. package/dist-client/pages/kpi/kpi-view.d.ts +12 -0
  42. package/dist-client/pages/kpi/kpi-view.js +191 -0
  43. package/dist-client/pages/kpi/kpi-view.js.map +1 -0
  44. package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.js +1 -1
  45. package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.js.map +1 -1
  46. package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.js +1 -1
  47. package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.js.map +1 -1
  48. package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.js +1 -1
  49. package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.js.map +1 -1
  50. package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.d.ts +3 -1
  51. package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.js +197 -161
  52. package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.js.map +1 -1
  53. package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.d.ts +5 -0
  54. package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.js +146 -0
  55. package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.js.map +1 -1
  56. package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.js +3 -2
  57. package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.js.map +1 -1
  58. package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.js +4 -3
  59. package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.js.map +1 -1
  60. package/dist-client/pages/kpi-dashboard/kpi-dashboard.js +28 -30
  61. package/dist-client/pages/kpi-dashboard/kpi-dashboard.js.map +1 -1
  62. package/dist-client/pages/kpi-history/kpi-history-list-page.d.ts +6 -1
  63. package/dist-client/pages/kpi-history/kpi-history-list-page.js +11 -11
  64. package/dist-client/pages/kpi-history/kpi-history-list-page.js.map +1 -1
  65. package/dist-client/pages/kpi-metric/kpi-metric-list-page.d.ts +5 -0
  66. package/dist-client/pages/kpi-metric/kpi-metric-list-page.js +10 -2
  67. package/dist-client/pages/kpi-metric/kpi-metric-list-page.js.map +1 -1
  68. package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.d.ts +1 -1
  69. package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.js +8 -8
  70. package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.js.map +1 -1
  71. package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.js +2 -2
  72. package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.js.map +1 -1
  73. package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.d.ts +5 -0
  74. package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.js +16 -8
  75. package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.js.map +1 -1
  76. package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.d.ts +1 -1
  77. package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.js +6 -6
  78. package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.js.map +1 -1
  79. package/dist-client/pages/kpi-statistic/kpi-statistic-editor-page.js +1 -2
  80. package/dist-client/pages/kpi-statistic/kpi-statistic-editor-page.js.map +1 -1
  81. package/dist-client/pages/kpi-statistic/kpi-statistic-list-page.d.ts +5 -0
  82. package/dist-client/pages/kpi-statistic/kpi-statistic-list-page.js +10 -2
  83. package/dist-client/pages/kpi-statistic/kpi-statistic-list-page.js.map +1 -1
  84. package/dist-client/pages/kpi-value/kpi-value-editor-page.d.ts +2 -1
  85. package/dist-client/pages/kpi-value/kpi-value-editor-page.js +16 -8
  86. package/dist-client/pages/kpi-value/kpi-value-editor-page.js.map +1 -1
  87. package/dist-client/pages/kpi-value/kpi-value-list-page.d.ts +5 -0
  88. package/dist-client/pages/kpi-value/kpi-value-list-page.js +31 -7
  89. package/dist-client/pages/kpi-value/kpi-value-list-page.js.map +1 -1
  90. package/dist-client/route.d.ts +1 -1
  91. package/dist-client/route.js +2 -8
  92. package/dist-client/route.js.map +1 -1
  93. package/dist-client/tsconfig.tsbuildinfo +1 -1
  94. package/dist-server/controllers/kpi-metric-value-provider.d.ts +1 -1
  95. package/dist-server/controllers/kpi-metric-value-provider.js +4 -4
  96. package/dist-server/controllers/kpi-metric-value-provider.js.map +1 -1
  97. package/dist-server/controllers/kpi-value-provider.d.ts +1 -1
  98. package/dist-server/controllers/kpi-value-provider.js +3 -3
  99. package/dist-server/controllers/kpi-value-provider.js.map +1 -1
  100. package/dist-server/migrations/1752190849680-seed-kpi-metrics.d.ts +6 -0
  101. package/dist-server/migrations/1752190849680-seed-kpi-metrics.js +101 -0
  102. package/dist-server/migrations/1752190849680-seed-kpi-metrics.js.map +1 -0
  103. package/dist-server/migrations/1752190849681-seed-kpi.d.ts +5 -0
  104. package/dist-server/migrations/1752190849681-seed-kpi.js +315 -0
  105. package/dist-server/migrations/1752190849681-seed-kpi.js.map +1 -0
  106. package/dist-server/migrations/1752192090123-add-grades-to-kpi.d.ts +7 -0
  107. package/dist-server/migrations/1752192090123-add-grades-to-kpi.js +51 -0
  108. package/dist-server/migrations/1752192090123-add-grades-to-kpi.js.map +1 -0
  109. package/dist-server/migrations/1752192090124-add-kpi-statistics.d.ts +5 -0
  110. package/dist-server/migrations/1752192090124-add-kpi-statistics.js +710 -0
  111. package/dist-server/migrations/1752192090124-add-kpi-statistics.js.map +1 -0
  112. package/dist-server/migrations/1752192090128-seed-kpi-org-scope.d.ts +6 -0
  113. package/dist-server/migrations/1752192090128-seed-kpi-org-scope.js +111 -0
  114. package/dist-server/migrations/1752192090128-seed-kpi-org-scope.js.map +1 -0
  115. package/dist-server/migrations/1752192090129-seed-kpi-values.d.ts +6 -0
  116. package/dist-server/migrations/1752192090129-seed-kpi-values.js +187 -0
  117. package/dist-server/migrations/1752192090129-seed-kpi-values.js.map +1 -0
  118. package/dist-server/migrations/grade-data/x11-performance-table.json +962 -0
  119. package/dist-server/migrations/grade-data/x12-performance-table.json +611 -0
  120. package/dist-server/migrations/grade-data/x14-performance-table.json +42 -0
  121. package/dist-server/migrations/grade-data/x21-performance-table.json +889 -0
  122. package/dist-server/migrations/grade-data/x22-performance-table.json +1064 -0
  123. package/dist-server/migrations/grade-data/x23-performance-table.json +42 -0
  124. package/dist-server/migrations/grade-data/x31-performance-table.json +644 -0
  125. package/dist-server/migrations/grade-data/x32-performance-table.json +993 -0
  126. package/dist-server/migrations/grade-data/x33-performance-table.json +195 -0
  127. package/dist-server/migrations/grade-data/x34-performance-table.json +12 -0
  128. package/dist-server/migrations/grade-data/x35-performance-table.json +42 -0
  129. package/dist-server/migrations/grade-data/x41-performance-table.json +825 -0
  130. package/dist-server/migrations/grade-data/x42-performance-table.json +786 -0
  131. package/dist-server/migrations/grade-data/x43-performance-table.json +12 -0
  132. package/dist-server/migrations/grade-data/x44-performance-table.json +42 -0
  133. package/dist-server/migrations/grade-data/x51-performance-table.json +924 -0
  134. package/dist-server/migrations/grade-data/x52-performance-table.json +42 -0
  135. package/dist-server/migrations/grade-data/x61-performance-table.json +261 -0
  136. package/dist-server/migrations/grade-data/x62-performance-table.json +42 -0
  137. package/dist-server/migrations/seed-data/kpi-metrics-seed.json +454 -0
  138. package/dist-server/migrations/seed-data/kpi-org-scope-seed.json +1676 -0
  139. package/dist-server/migrations/seed-data/kpi-values-seed.json +402 -0
  140. package/dist-server/migrations/seed-data/kpis-seed.json +488 -0
  141. package/dist-server/service/index.d.ts +3 -7
  142. package/dist-server/service/index.js +5 -12
  143. package/dist-server/service/index.js.map +1 -1
  144. package/dist-server/service/kpi/aggregate-kpi.js +30 -13
  145. package/dist-server/service/kpi/aggregate-kpi.js.map +1 -1
  146. package/dist-server/service/kpi/kpi-formula.service.d.ts +15 -0
  147. package/dist-server/service/kpi/kpi-formula.service.js +90 -0
  148. package/dist-server/service/kpi/kpi-formula.service.js.map +1 -1
  149. package/dist-server/service/kpi/kpi-history.d.ts +0 -3
  150. package/dist-server/service/kpi/kpi-history.js +0 -10
  151. package/dist-server/service/kpi/kpi-history.js.map +1 -1
  152. package/dist-server/service/kpi/kpi-mutation.d.ts +1 -1
  153. package/dist-server/service/kpi/kpi-mutation.js +57 -20
  154. package/dist-server/service/kpi/kpi-mutation.js.map +1 -1
  155. package/dist-server/service/kpi/kpi-query.d.ts +7 -3
  156. package/dist-server/service/kpi/kpi-query.js +126 -10
  157. package/dist-server/service/kpi/kpi-query.js.map +1 -1
  158. package/dist-server/service/kpi/kpi-type.d.ts +4 -2
  159. package/dist-server/service/kpi/kpi-type.js +12 -4
  160. package/dist-server/service/kpi/kpi-type.js.map +1 -1
  161. package/dist-server/service/kpi/kpi.d.ts +4 -3
  162. package/dist-server/service/kpi/kpi.js +20 -8
  163. package/dist-server/service/kpi/kpi.js.map +1 -1
  164. package/dist-server/service/kpi-metric/aggregate-kpi-metric.js +46 -11
  165. package/dist-server/service/kpi-metric/aggregate-kpi-metric.js.map +1 -1
  166. package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.d.ts +1 -1
  167. package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.js +6 -6
  168. package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.js.map +1 -1
  169. package/dist-server/service/kpi-metric-value/kpi-metric-value-type.d.ts +2 -2
  170. package/dist-server/service/kpi-metric-value/kpi-metric-value-type.js +4 -4
  171. package/dist-server/service/kpi-metric-value/kpi-metric-value-type.js.map +1 -1
  172. package/dist-server/service/kpi-metric-value/kpi-metric-value.d.ts +1 -1
  173. package/dist-server/service/kpi-metric-value/kpi-metric-value.js +3 -3
  174. package/dist-server/service/kpi-metric-value/kpi-metric-value.js.map +1 -1
  175. package/dist-server/service/kpi-org-scope/index.d.ts +9 -0
  176. package/dist-server/service/kpi-org-scope/index.js +14 -0
  177. package/dist-server/service/kpi-org-scope/index.js.map +1 -0
  178. package/dist-server/service/kpi-org-scope/kpi-org-scope-mutation.d.ts +8 -0
  179. package/dist-server/service/kpi-org-scope/kpi-org-scope-mutation.js +170 -0
  180. package/dist-server/service/kpi-org-scope/kpi-org-scope-mutation.js.map +1 -0
  181. package/dist-server/service/kpi-org-scope/kpi-org-scope-query.d.ts +14 -0
  182. package/dist-server/service/kpi-org-scope/kpi-org-scope-query.js +152 -0
  183. package/dist-server/service/kpi-org-scope/kpi-org-scope-query.js.map +1 -0
  184. package/dist-server/service/kpi-org-scope/kpi-org-scope-type.d.ts +26 -0
  185. package/dist-server/service/kpi-org-scope/kpi-org-scope-type.js +101 -0
  186. package/dist-server/service/kpi-org-scope/kpi-org-scope-type.js.map +1 -0
  187. package/dist-server/service/kpi-org-scope/kpi-org-scope.d.ts +26 -0
  188. package/dist-server/service/kpi-org-scope/kpi-org-scope.js +135 -0
  189. package/dist-server/service/kpi-org-scope/kpi-org-scope.js.map +1 -0
  190. package/dist-server/service/kpi-statistic/kpi-statistic.d.ts +1 -0
  191. package/dist-server/service/kpi-statistic/kpi-statistic.js +11 -0
  192. package/dist-server/service/kpi-statistic/kpi-statistic.js.map +1 -1
  193. package/dist-server/service/kpi-value/kpi-value-mutation.js +71 -7
  194. package/dist-server/service/kpi-value/kpi-value-mutation.js.map +1 -1
  195. package/dist-server/service/kpi-value/kpi-value-type.d.ts +4 -2
  196. package/dist-server/service/kpi-value/kpi-value-type.js +12 -4
  197. package/dist-server/service/kpi-value/kpi-value-type.js.map +1 -1
  198. package/dist-server/service/kpi-value/kpi-value.d.ts +3 -1
  199. package/dist-server/service/kpi-value/kpi-value.js +11 -5
  200. package/dist-server/service/kpi-value/kpi-value.js.map +1 -1
  201. package/dist-server/service/utils/value-date-util.d.ts +1 -0
  202. package/dist-server/service/utils/value-date-util.js +41 -0
  203. package/dist-server/service/utils/value-date-util.js.map +1 -1
  204. package/dist-server/tsconfig.json +10 -0
  205. package/dist-server/tsconfig.tsbuildinfo +1 -1
  206. package/package.json +7 -6
  207. package/server/@types/index.d.ts +11 -0
  208. package/server/controllers/kpi-metric-value-provider.ts +5 -5
  209. package/server/controllers/kpi-value-provider.ts +4 -4
  210. package/server/migrations/1752190849680-seed-kpi-metrics.ts +124 -0
  211. package/server/migrations/1752190849681-seed-kpi.ts +356 -0
  212. package/server/migrations/1752192090123-add-grades-to-kpi.ts +67 -0
  213. package/server/migrations/1752192090124-add-kpi-statistics.ts +719 -0
  214. package/server/migrations/1752192090128-seed-kpi-org-scope.ts +132 -0
  215. package/server/migrations/1752192090129-seed-kpi-values.ts +207 -0
  216. package/server/migrations/grade-data/x11-performance-table.json +962 -0
  217. package/server/migrations/grade-data/x12-performance-table.json +611 -0
  218. package/server/migrations/grade-data/x14-performance-table.json +42 -0
  219. package/server/migrations/grade-data/x21-performance-table.json +889 -0
  220. package/server/migrations/grade-data/x22-performance-table.json +1064 -0
  221. package/server/migrations/grade-data/x23-performance-table.json +42 -0
  222. package/server/migrations/grade-data/x31-performance-table.json +644 -0
  223. package/server/migrations/grade-data/x32-performance-table.json +993 -0
  224. package/server/migrations/grade-data/x33-performance-table.json +195 -0
  225. package/server/migrations/grade-data/x34-performance-table.json +12 -0
  226. package/server/migrations/grade-data/x35-performance-table.json +42 -0
  227. package/server/migrations/grade-data/x41-performance-table.json +825 -0
  228. package/server/migrations/grade-data/x42-performance-table.json +786 -0
  229. package/server/migrations/grade-data/x43-performance-table.json +12 -0
  230. package/server/migrations/grade-data/x44-performance-table.json +42 -0
  231. package/server/migrations/grade-data/x51-performance-table.json +924 -0
  232. package/server/migrations/grade-data/x52-performance-table.json +42 -0
  233. package/server/migrations/grade-data/x61-performance-table.json +261 -0
  234. package/server/migrations/grade-data/x62-performance-table.json +42 -0
  235. package/server/migrations/seed-data/kpi-metrics-seed.json +454 -0
  236. package/server/migrations/seed-data/kpi-org-scope-seed.json +1676 -0
  237. package/server/migrations/seed-data/kpi-values-seed.json +402 -0
  238. package/server/migrations/seed-data/kpis-seed.json +488 -0
  239. package/server/service/index.ts +5 -12
  240. package/server/service/kpi/aggregate-kpi.ts +31 -13
  241. package/server/service/kpi/kpi-formula.service.ts +101 -0
  242. package/server/service/kpi/kpi-history.ts +0 -8
  243. package/server/service/kpi/kpi-mutation.ts +59 -19
  244. package/server/service/kpi/kpi-query.ts +118 -8
  245. package/server/service/kpi/kpi-type.ts +10 -4
  246. package/server/service/kpi/kpi.ts +17 -7
  247. package/server/service/kpi-metric/aggregate-kpi-metric.ts +55 -11
  248. package/server/service/kpi-metric-value/kpi-metric-value-mutation.ts +6 -6
  249. package/server/service/kpi-metric-value/kpi-metric-value-type.ts +4 -4
  250. package/server/service/kpi-metric-value/kpi-metric-value.ts +3 -3
  251. package/server/service/kpi-org-scope/index.ts +11 -0
  252. package/server/service/kpi-org-scope/kpi-org-scope-mutation.ts +173 -0
  253. package/server/service/kpi-org-scope/kpi-org-scope-query.ts +127 -0
  254. package/server/service/kpi-org-scope/kpi-org-scope-type.ts +68 -0
  255. package/server/service/kpi-org-scope/kpi-org-scope.ts +123 -0
  256. package/server/service/kpi-statistic/kpi-statistic.ts +10 -0
  257. package/server/service/kpi-value/kpi-value-mutation.ts +73 -7
  258. package/server/service/kpi-value/kpi-value-type.ts +10 -4
  259. package/server/service/kpi-value/kpi-value.ts +10 -5
  260. package/server/service/utils/value-date-util.ts +47 -0
  261. package/server/types/global.d.ts +8 -0
  262. package/things-factory.config.js +1 -0
  263. package/translations/en.json +15 -3
  264. package/translations/ja.json +13 -3
  265. package/translations/ko.json +15 -3
  266. package/translations/ms.json +13 -3
  267. package/translations/zh.json +13 -3
  268. package/client/pages/kpi-category/kpi-category-importer.ts +0 -90
  269. package/client/pages/kpi-category/kpi-category-list-page.ts +0 -537
  270. package/client/pages/kpi-category/kpi-category-value-calculator.ts +0 -233
  271. package/client/pages/kpi-category-value/kpi-category-value-list-page.ts +0 -404
  272. package/dist-client/pages/kpi-category/kpi-category-importer.d.ts +0 -23
  273. package/dist-client/pages/kpi-category/kpi-category-importer.js +0 -92
  274. package/dist-client/pages/kpi-category/kpi-category-importer.js.map +0 -1
  275. package/dist-client/pages/kpi-category/kpi-category-list-page.d.ts +0 -74
  276. package/dist-client/pages/kpi-category/kpi-category-list-page.js +0 -517
  277. package/dist-client/pages/kpi-category/kpi-category-list-page.js.map +0 -1
  278. package/dist-client/pages/kpi-category/kpi-category-value-calculator.d.ts +0 -13
  279. package/dist-client/pages/kpi-category/kpi-category-value-calculator.js +0 -256
  280. package/dist-client/pages/kpi-category/kpi-category-value-calculator.js.map +0 -1
  281. package/dist-client/pages/kpi-category-value/kpi-category-value-list-page.d.ts +0 -63
  282. package/dist-client/pages/kpi-category-value/kpi-category-value-list-page.js +0 -393
  283. package/dist-client/pages/kpi-category-value/kpi-category-value-list-page.js.map +0 -1
  284. package/dist-server/service/kpi-category/index.d.ts +0 -6
  285. package/dist-server/service/kpi-category/index.js +0 -10
  286. package/dist-server/service/kpi-category/index.js.map +0 -1
  287. package/dist-server/service/kpi-category/kpi-category-mutation.d.ts +0 -9
  288. package/dist-server/service/kpi-category/kpi-category-mutation.js +0 -221
  289. package/dist-server/service/kpi-category/kpi-category-mutation.js.map +0 -1
  290. package/dist-server/service/kpi-category/kpi-category-query.d.ts +0 -18
  291. package/dist-server/service/kpi-category/kpi-category-query.js +0 -115
  292. package/dist-server/service/kpi-category/kpi-category-query.js.map +0 -1
  293. package/dist-server/service/kpi-category/kpi-category-type.d.ts +0 -24
  294. package/dist-server/service/kpi-category/kpi-category-type.js +0 -100
  295. package/dist-server/service/kpi-category/kpi-category-type.js.map +0 -1
  296. package/dist-server/service/kpi-category/kpi-category.d.ts +0 -22
  297. package/dist-server/service/kpi-category/kpi-category.js +0 -106
  298. package/dist-server/service/kpi-category/kpi-category.js.map +0 -1
  299. package/dist-server/service/kpi-category-value/index.d.ts +0 -6
  300. package/dist-server/service/kpi-category-value/index.js +0 -10
  301. package/dist-server/service/kpi-category-value/index.js.map +0 -1
  302. package/dist-server/service/kpi-category-value/kpi-category-value-mutation.d.ts +0 -8
  303. package/dist-server/service/kpi-category-value/kpi-category-value-mutation.js +0 -102
  304. package/dist-server/service/kpi-category-value/kpi-category-value-mutation.js.map +0 -1
  305. package/dist-server/service/kpi-category-value/kpi-category-value-query.d.ts +0 -13
  306. package/dist-server/service/kpi-category-value/kpi-category-value-query.js +0 -91
  307. package/dist-server/service/kpi-category-value/kpi-category-value-query.js.map +0 -1
  308. package/dist-server/service/kpi-category-value/kpi-category-value-type.d.ts +0 -19
  309. package/dist-server/service/kpi-category-value/kpi-category-value-type.js +0 -73
  310. package/dist-server/service/kpi-category-value/kpi-category-value-type.js.map +0 -1
  311. package/dist-server/service/kpi-category-value/kpi-category-value.d.ts +0 -19
  312. package/dist-server/service/kpi-category-value/kpi-category-value.js +0 -91
  313. package/dist-server/service/kpi-category-value/kpi-category-value.js.map +0 -1
  314. package/helps/kpi/kpi-category.md +0 -160
  315. package/server/service/kpi-category/index.ts +0 -7
  316. package/server/service/kpi-category/kpi-category-mutation.ts +0 -217
  317. package/server/service/kpi-category/kpi-category-query.ts +0 -87
  318. package/server/service/kpi-category/kpi-category-type.ts +0 -73
  319. package/server/service/kpi-category/kpi-category.ts +0 -95
  320. package/server/service/kpi-category-value/index.ts +0 -7
  321. package/server/service/kpi-category-value/kpi-category-value-mutation.ts +0 -88
  322. package/server/service/kpi-category-value/kpi-category-value-query.ts +0 -62
  323. package/server/service/kpi-category-value/kpi-category-value-type.ts +0 -48
  324. package/server/service/kpi-category-value/kpi-category-value.ts +0 -79
@@ -186,15 +186,15 @@ export class KpiDashboardPage extends PageView {
186
186
  minData[category] = Math.min(...values)
187
187
  maxData[category] = Math.max(...values)
188
188
  avgData[category] = values.reduce((a, b) => a + b, 0) / values.length
189
- aData[category] = data.find(d => d.category === category && d.group === 'A')?.value ?? avgData[category]
189
+ aData[category] = data.find(d => d.category === category && d.org === 'A')?.value ?? avgData[category]
190
190
  })
191
- // kpi-radar-chart가 기대하는 구조로 변환: [{group, category, value} ...]
191
+ // kpi-radar-chart가 기대하는 구조로 변환: [{org, category, value} ...]
192
192
  const result: any[] = []
193
193
  categories.forEach(category => {
194
- result.push({ group: 'Min', category, value: minData[category] })
195
- result.push({ group: 'Max', category, value: maxData[category] })
196
- result.push({ group: 'Avg', category, value: avgData[category] })
197
- result.push({ group: 'A', category, value: aData[category] })
194
+ result.push({ org: 'Min', category, value: minData[category] })
195
+ result.push({ org: 'Max', category, value: maxData[category] })
196
+ result.push({ org: 'Avg', category, value: avgData[category] })
197
+ result.push({ org: 'A', category, value: aData[category] })
198
198
  })
199
199
  return result
200
200
  }
@@ -221,9 +221,9 @@ export class KpiDashboardPage extends PageView {
221
221
  const q1 = sorted[Math.floor(sorted.length / 4)]
222
222
  const q3 = sorted[Math.floor((sorted.length * 3) / 4)]
223
223
  // value: A그룹의 실제값(강조)
224
- const value = data.find(d => d.category === category && d.group === 'A')?.value ?? mean
224
+ const value = data.find(d => d.category === category && d.org === 'A')?.value ?? mean
225
225
  return {
226
- group: category, // x축: 카테고리
226
+ org: category, // x축: 카테고리
227
227
  min,
228
228
  q1,
229
229
  median,
@@ -470,28 +470,26 @@ export class KpiDashboardPage extends PageView {
470
470
  const response = await client.query({
471
471
  query: gql`
472
472
  query {
473
- kpiCategories {
474
- items {
473
+ kpiCategories: kpisLevel1 {
474
+ id
475
+ name
476
+ kpis: children {
475
477
  id
476
478
  name
477
- kpis {
478
- id
479
- name
480
- value {
481
- value
482
- valueDate
483
- }
484
- targetValue
485
- unit
486
- grades
487
- vizType
488
- vizMeta
489
- histories(limit: 1) {
490
- version
491
- updatedAt
492
- updater {
493
- name
494
- }
479
+ value {
480
+ value
481
+ valueDate
482
+ }
483
+ targetValue
484
+ unit
485
+ grades
486
+ vizType
487
+ vizMeta
488
+ histories(limit: 1) {
489
+ version
490
+ updatedAt
491
+ updater {
492
+ name
495
493
  }
496
494
  }
497
495
  }
@@ -508,7 +506,7 @@ export class KpiDashboardPage extends PageView {
508
506
  }
509
507
  `
510
508
  })
511
- this.categories = response.data.kpiCategories.items || []
509
+ this.categories = response.data.kpiCategories || []
512
510
  this.alerts = response.data.kpiAlerts || []
513
511
  } catch (e) {
514
512
  this.error = 'KPI 카테고리 데이터를 불러오지 못했습니다.'
@@ -548,7 +546,7 @@ export class KpiDashboardPage extends PageView {
548
546
  id
549
547
  name
550
548
  unit
551
- category {
549
+ category: parent {
552
550
  id
553
551
  name
554
552
  }
@@ -7,6 +7,7 @@ import { client } from '@operato/graphql'
7
7
  import { i18next, localize } from '@operato/i18n'
8
8
  import { PageView } from '@operato/shell'
9
9
  import { gql } from '@apollo/client'
10
+ import { p13n } from '@operato/p13n'
10
11
 
11
12
  const KPI_HISTORY_LIST_QUERY = gql`
12
13
  query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
@@ -35,7 +36,7 @@ const KPI_HISTORY_LIST_QUERY = gql`
35
36
  `
36
37
 
37
38
  @customElement('kpi-history-list-page')
38
- export class KpiHistoryListPage extends localize(i18next)(PageView) {
39
+ export class KpiHistoryListPage extends p13n(localize(i18next)(PageView)) {
39
40
  static styles = css`
40
41
  :host {
41
42
  display: flex;
@@ -61,7 +62,6 @@ export class KpiHistoryListPage extends localize(i18next)(PageView) {
61
62
  'version',
62
63
  'name',
63
64
  'description',
64
- 'category',
65
65
  'formula',
66
66
  'active',
67
67
  'state',
@@ -75,7 +75,6 @@ export class KpiHistoryListPage extends localize(i18next)(PageView) {
75
75
  'version',
76
76
  'name',
77
77
  'description',
78
- 'category',
79
78
  'formula',
80
79
  'active',
81
80
  'state',
@@ -98,13 +97,6 @@ export class KpiHistoryListPage extends localize(i18next)(PageView) {
98
97
  { type: 'number', name: 'version', header: '버전', record: { editable: false }, width: 80 },
99
98
  { type: 'string', name: 'name', header: '이름', record: { editable: false }, width: 150 },
100
99
  { type: 'string', name: 'description', header: '설명', record: { editable: false }, width: 200 },
101
- {
102
- type: 'string',
103
- name: 'category',
104
- header: '카테고리',
105
- record: { editable: false, renderer: (v, c, r) => r.category?.name },
106
- width: 120
107
- },
108
100
  { type: 'formula', name: 'formula', header: '산식', record: { editable: false }, width: 200 },
109
101
  { type: 'checkbox', name: 'active', label: true, header: '활성', record: { editable: false }, width: 60 },
110
102
  { type: 'string', name: 'state', header: '상태', record: { editable: false }, width: 100 },
@@ -130,7 +122,15 @@ export class KpiHistoryListPage extends localize(i18next)(PageView) {
130
122
  @query('ox-grist') private grist!: DataGrist
131
123
 
132
124
  render() {
133
- return html` <ox-grist .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}></ox-grist> `
125
+ return html`
126
+ <ox-grist
127
+ .config=${this.gristConfig}
128
+ .fetchHandler=${this.fetchHandler.bind(this)}
129
+ .personalConfigProvider=${this.getPagePreferenceProvider('ox-grist')!}
130
+ >
131
+ <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
132
+ </ox-grist>
133
+ `
134
134
  }
135
135
 
136
136
  async fetchHandler({ page, limit, sortings = [], filters = [] }: FetchOption) {
@@ -15,6 +15,7 @@ import { i18next, localize } from '@operato/i18n'
15
15
  import { notify, openPopup } from '@operato/layout'
16
16
  import { OxPopup, OxPrompt } from '@operato/popup'
17
17
  import { isMobileDevice } from '@operato/utils'
18
+ import { p13n } from '@operato/p13n'
18
19
 
19
20
  import { connect } from 'pwa-helpers/connect-mixin'
20
21
  import gql from 'graphql-tag'
@@ -22,7 +23,7 @@ import gql from 'graphql-tag'
22
23
  import { KpiMetricImporter } from './kpi-metric-importer'
23
24
 
24
25
  @customElement('kpi-metric-list-page')
25
- export class KpiMetricListPage extends connect(store)(localize(i18next)(ScopedElementsMixin(PageView))) {
26
+ export class KpiMetricListPage extends connect(store)(p13n(localize(i18next)(ScopedElementsMixin(PageView)))) {
26
27
  static styles = [
27
28
  ScrollbarStyles,
28
29
  CommonGristStyles,
@@ -100,7 +101,12 @@ export class KpiMetricListPage extends connect(store)(localize(i18next)(ScopedEl
100
101
  const mode = this.mode || (isMobileDevice() ? 'CARD' : 'GRID')
101
102
 
102
103
  return html`
103
- <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
104
+ <ox-grist
105
+ .mode=${mode}
106
+ .config=${this.gristConfig}
107
+ .fetchHandler=${this.fetchHandler.bind(this)}
108
+ .personalConfigProvider=${this.getPagePreferenceProvider('ox-grist')!}
109
+ >
104
110
  <div slot="headroom" class="header">
105
111
  <div class="filters">
106
112
  <ox-filters-form autofocus without-search></ox-filters-form>
@@ -118,6 +124,8 @@ export class KpiMetricListPage extends connect(store)(localize(i18next)(ScopedEl
118
124
  </ox-record-creator>
119
125
  </div>
120
126
  </div>
127
+
128
+ <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
121
129
  </ox-grist>
122
130
  `
123
131
  }
@@ -209,7 +209,7 @@ export class KpiMetricValueEditorPage extends connect(store)(localize(i18next)(S
209
209
  `
210
210
  ]
211
211
 
212
- @property({ type: String }) group: string = ''
212
+ @property({ type: String }) org: string = ''
213
213
  @property({ type: String }) startDate: string = ''
214
214
  @property({ type: String }) endDate: string = ''
215
215
 
@@ -262,8 +262,8 @@ export class KpiMetricValueEditorPage extends connect(store)(localize(i18next)(S
262
262
  <div class="controls">
263
263
  <md-outlined-text-field
264
264
  label="그룹"
265
- .value=${this.group}
266
- @input=${(e: any) => (this.group = e.target.value)}
265
+ .value=${this.org}
266
+ @input=${(e: any) => (this.org = e.target.value)}
267
267
  style="width: 150px;"
268
268
  ></md-outlined-text-field>
269
269
 
@@ -492,7 +492,7 @@ export class KpiMetricValueEditorPage extends connect(store)(localize(i18next)(S
492
492
  metricId
493
493
  valueDate
494
494
  value
495
- group
495
+ org
496
496
  }
497
497
  total
498
498
  }
@@ -500,7 +500,7 @@ export class KpiMetricValueEditorPage extends connect(store)(localize(i18next)(S
500
500
  `,
501
501
  variables: {
502
502
  filters: [
503
- ...(this.group ? [{ name: 'group', operator: 'eq', value: this.group }] : []),
503
+ ...(this.org ? [{ name: 'org', operator: 'eq', value: this.org }] : []),
504
504
  { name: 'valueDate', operator: 'between', value: [this.startDate, this.endDate] }
505
505
  ]
506
506
  }
@@ -576,7 +576,7 @@ export class KpiMetricValueEditorPage extends connect(store)(localize(i18next)(S
576
576
  patches.push({
577
577
  id: existingValue.id,
578
578
  value: data.value,
579
- group: this.group,
579
+ org: this.org,
580
580
  cuFlag: 'M'
581
581
  })
582
582
  } else {
@@ -594,7 +594,7 @@ export class KpiMetricValueEditorPage extends connect(store)(localize(i18next)(S
594
594
  metricId: metric.metricId,
595
595
  valueDate: normalizedDate,
596
596
  value: data.value,
597
- group: this.group,
597
+ org: this.org,
598
598
  cuFlag: '+'
599
599
  })
600
600
  }
@@ -25,13 +25,13 @@ export class KpiMetricValueImporter extends LitElement {
25
25
 
26
26
  @property({ type: Array }) metricValues: any[] = []
27
27
  @property({ type: Object }) columns = {
28
- list: { fields: ['metric', 'value', 'valueDate', 'group', 'meta'] },
28
+ list: { fields: ['metric', 'value', 'valueDate', 'org', 'meta'] },
29
29
  pagination: { infinite: true },
30
30
  columns: [
31
31
  { type: 'string', name: 'metric', header: 'Metric', width: 150 },
32
32
  { type: 'number', name: 'value', header: '값', width: 120 },
33
33
  { type: 'date', name: 'valueDate', header: '날짜', width: 120 },
34
- { type: 'string', name: 'group', header: '그룹', width: 120 },
34
+ { type: 'string', name: 'org', header: '조직', width: 120 },
35
35
  { type: 'object', name: 'meta', header: '메타', width: 120 }
36
36
  ]
37
37
  }
@@ -16,12 +16,13 @@ import { i18next, localize } from '@operato/i18n'
16
16
  import { notify, openPopup } from '@operato/layout'
17
17
  import { OxPopup, OxPrompt } from '@operato/popup'
18
18
  import { isMobileDevice } from '@operato/utils'
19
+ import { p13n } from '@operato/p13n'
19
20
 
20
21
  import { connect } from 'pwa-helpers/connect-mixin'
21
22
  import gql from 'graphql-tag'
22
23
 
23
24
  @customElement('kpi-metric-value-list-page')
24
- export class KpiMetricValueListPage extends connect(store)(localize(i18next)(ScopedElementsMixin(PageView))) {
25
+ export class KpiMetricValueListPage extends connect(store)(p13n(localize(i18next)(ScopedElementsMixin(PageView)))) {
25
26
  static styles = [
26
27
  ScrollbarStyles,
27
28
  CommonGristStyles,
@@ -90,7 +91,12 @@ export class KpiMetricValueListPage extends connect(store)(localize(i18next)(Sco
90
91
  render() {
91
92
  const mode = this.mode || (isMobileDevice() ? 'CARD' : 'GRID')
92
93
  return html`
93
- <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
94
+ <ox-grist
95
+ .mode=${mode}
96
+ .config=${this.gristConfig}
97
+ .fetchHandler=${this.fetchHandler.bind(this)}
98
+ .personalConfigProvider=${this.getPagePreferenceProvider('ox-grist')!}
99
+ >
94
100
  <div slot="headroom" class="header">
95
101
  <div class="filters">
96
102
  <ox-filters-form autofocus without-search></ox-filters-form>
@@ -106,6 +112,8 @@ export class KpiMetricValueListPage extends connect(store)(localize(i18next)(Sco
106
112
  </ox-record-creator>
107
113
  </div>
108
114
  </div>
115
+
116
+ <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
109
117
  </ox-grist>
110
118
  `
111
119
  }
@@ -113,8 +121,8 @@ export class KpiMetricValueListPage extends connect(store)(localize(i18next)(Sco
113
121
  async pageInitialized() {
114
122
  this.gristConfig = {
115
123
  list: {
116
- fields: ['metric', 'valueDate', 'value', 'group', 'meta', 'createdAt', 'updatedAt', 'creator', 'updater'],
117
- details: ['metric', 'valueDate', 'value', 'group', 'meta', 'createdAt', 'updatedAt', 'creator', 'updater']
124
+ fields: ['metric', 'valueDate', 'value', 'org', 'meta', 'createdAt', 'updatedAt', 'creator', 'updater'],
125
+ details: ['metric', 'valueDate', 'value', 'org', 'meta', 'createdAt', 'updatedAt', 'creator', 'updater']
118
126
  },
119
127
  columns: [
120
128
  { type: 'gutter', gutterName: 'sequence' },
@@ -140,7 +148,7 @@ export class KpiMetricValueListPage extends connect(store)(localize(i18next)(Sco
140
148
  },
141
149
  { type: 'string', name: 'valueDate', header: '날짜', record: { editable: true }, width: 120 },
142
150
  { type: 'number', name: 'value', header: '값', record: { editable: true }, width: 120 },
143
- { type: 'string', name: 'group', header: '그룹', record: { editable: false }, width: 120 },
151
+ { type: 'string', name: 'org', header: '조직', record: { editable: false }, width: 120 },
144
152
  { type: 'object', name: 'meta', header: '메타', record: { editable: false }, width: 120 },
145
153
  { type: 'datetime', name: 'createdAt', header: '생성일', record: { editable: false }, width: 180 },
146
154
  { type: 'datetime', name: 'updatedAt', header: '수정일', record: { editable: false }, width: 180 },
@@ -189,7 +197,7 @@ export class KpiMetricValueListPage extends connect(store)(localize(i18next)(Sco
189
197
  valueDate
190
198
  value
191
199
  meta
192
- group
200
+ org
193
201
  updater {
194
202
  id
195
203
  name
@@ -307,7 +315,7 @@ export class KpiMetricValueListPage extends connect(store)(localize(i18next)(Sco
307
315
 
308
316
  async exportHandler() {
309
317
  const exportTargets = this.grist.selected.length ? this.grist.selected : this.grist.dirtyData.records
310
- const targetFieldSet = new Set(['id', 'metric', 'valueDate', 'value', 'group', 'meta'])
318
+ const targetFieldSet = new Set(['id', 'metric', 'valueDate', 'value', 'org', 'meta'])
311
319
  return exportTargets.map(metricValue => {
312
320
  let tempObj = {}
313
321
  for (const field of targetFieldSet) {
@@ -328,7 +336,7 @@ export class KpiMetricValueListPage extends connect(store)(localize(i18next)(Sco
328
336
  .metric=${metricValue.metric}
329
337
  .valueDate=${metricValue.valueDate}
330
338
  .value=${metricValue.value}
331
- .group=${metricValue.group}
339
+ .org=${metricValue.org}
332
340
  .meta=${metricValue.meta ? JSON.stringify(metricValue.meta) : ''}
333
341
  @saved=${() => {
334
342
  this.grist.fetch()
@@ -61,7 +61,7 @@ export class KpiMetricValueManualEntryForm extends LitElement {
61
61
  @property({ type: Object }) metric: any
62
62
  @state() valueDate = new Date().toISOString().slice(0, 10)
63
63
  @state() value = ''
64
- @state() group = ''
64
+ @state() org = ''
65
65
  @state() meta = ''
66
66
  @state() loading = false
67
67
 
@@ -80,7 +80,7 @@ export class KpiMetricValueManualEntryForm extends LitElement {
80
80
  </label>
81
81
  <label>
82
82
  그룹 (선택)
83
- <input type="text" .value=${this.group} @input=${e => (this.group = e.target.value)} />
83
+ <input type="text" .value=${this.org} @input=${e => (this.org = e.target.value)} />
84
84
  </label>
85
85
  <label>
86
86
  메타정보 (선택, JSON)
@@ -111,8 +111,8 @@ export class KpiMetricValueManualEntryForm extends LitElement {
111
111
  try {
112
112
  await client.mutate({
113
113
  mutation: gql`
114
- mutation ($metricName: String!, $value: Float!, $group: String, $meta: Object) {
115
- recordKpiMetricValue(metricName: $metricName, value: $value, meta: $meta, group: $group) {
114
+ mutation ($metricName: String!, $value: Float!, $org: String, $meta: Object) {
115
+ recordKpiMetricValue(metricName: $metricName, value: $value, meta: $meta, org: $org) {
116
116
  id
117
117
  }
118
118
  }
@@ -120,7 +120,7 @@ export class KpiMetricValueManualEntryForm extends LitElement {
120
120
  variables: {
121
121
  metricName: this.metric.name,
122
122
  value: parseFloat(this.value),
123
- group: this.group || undefined,
123
+ org: this.org || undefined,
124
124
  meta: parsedMeta
125
125
  }
126
126
  })
@@ -485,8 +485,7 @@ export class KpiStatisticEditorPage extends connect(store)(localize(i18next)(Sco
485
485
  name
486
486
  periodType
487
487
  active
488
- categoryId
489
- category {
488
+ category: parent {
490
489
  id
491
490
  name
492
491
  }
@@ -15,6 +15,7 @@ import { i18next, localize } from '@operato/i18n'
15
15
  import { notify, openPopup } from '@operato/layout'
16
16
  import { OxPopup, OxPrompt } from '@operato/popup'
17
17
  import { isMobileDevice } from '@operato/utils'
18
+ import { p13n } from '@operato/p13n'
18
19
 
19
20
  import { connect } from 'pwa-helpers/connect-mixin'
20
21
  import gql from 'graphql-tag'
@@ -22,7 +23,7 @@ import gql from 'graphql-tag'
22
23
  import { KpiStatisticImporter } from './kpi-statistic-importer.js'
23
24
 
24
25
  @customElement('kpi-statistic-list-page')
25
- export class KpiStatisticListPage extends connect(store)(localize(i18next)(ScopedElementsMixin(PageView))) {
26
+ export class KpiStatisticListPage extends connect(store)(p13n(localize(i18next)(ScopedElementsMixin(PageView)))) {
26
27
  static styles = [
27
28
  ScrollbarStyles,
28
29
  CommonGristStyles,
@@ -100,7 +101,12 @@ export class KpiStatisticListPage extends connect(store)(localize(i18next)(Scope
100
101
  const mode = this.mode || (isMobileDevice() ? 'CARD' : 'GRID')
101
102
 
102
103
  return html`
103
- <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
104
+ <ox-grist
105
+ .mode=${mode}
106
+ .config=${this.gristConfig}
107
+ .fetchHandler=${this.fetchHandler.bind(this)}
108
+ .personalConfigProvider=${this.getPagePreferenceProvider('ox-grist')!}
109
+ >
104
110
  <div slot="headroom" class="header">
105
111
  <div class="filters">
106
112
  <ox-filters-form autofocus without-search></ox-filters-form>
@@ -118,6 +124,8 @@ export class KpiStatisticListPage extends connect(store)(localize(i18next)(Scope
118
124
  </ox-record-creator>
119
125
  </div>
120
126
  </div>
127
+
128
+ <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
121
129
  </ox-grist>
122
130
  `
123
131
  }
@@ -210,7 +210,8 @@ export class KpiValueEditorPage extends connect(store)(localize(i18next)(ScopedE
210
210
  `
211
211
  ]
212
212
 
213
- @property({ type: String }) group: string = ''
213
+ @property({ type: String }) kpiOrgScopeId: string = ''
214
+ @property({ type: String }) org: string = '' // legacy support
214
215
  @property({ type: String }) startDate: string = ''
215
216
  @property({ type: String }) endDate: string = ''
216
217
 
@@ -263,8 +264,8 @@ export class KpiValueEditorPage extends connect(store)(localize(i18next)(ScopedE
263
264
  <div class="controls">
264
265
  <md-outlined-text-field
265
266
  label="그룹"
266
- .value=${this.group}
267
- @input=${(e: any) => (this.group = e.target.value)}
267
+ .value=${this.org}
268
+ @input=${(e: any) => (this.org = e.target.value)}
268
269
  style="width: 150px;"
269
270
  ></md-outlined-text-field>
270
271
 
@@ -591,7 +592,10 @@ export class KpiValueEditorPage extends connect(store)(localize(i18next)(ScopedE
591
592
  valueDate
592
593
  value
593
594
  score
594
- group
595
+ kpiOrgScope {
596
+ id
597
+ org
598
+ }
595
599
  }
596
600
  total
597
601
  }
@@ -599,7 +603,7 @@ export class KpiValueEditorPage extends connect(store)(localize(i18next)(ScopedE
599
603
  `,
600
604
  variables: {
601
605
  filters: [
602
- ...(this.group ? [{ name: 'group', operator: 'eq', value: this.group }] : []),
606
+ ...(this.org ? [{ name: 'org', operator: 'eq', value: this.org }] : []),
603
607
  { name: 'valueDate', operator: 'between', value: [this.startDate, this.endDate] }
604
608
  ]
605
609
  }
@@ -688,7 +692,7 @@ export class KpiValueEditorPage extends connect(store)(localize(i18next)(ScopedE
688
692
  patches.push({
689
693
  id: existingValue.id,
690
694
  value: data.value,
691
- group: this.group,
695
+ org: this.org,
692
696
  cuFlag: 'M'
693
697
  })
694
698
  } else {
@@ -697,7 +701,7 @@ export class KpiValueEditorPage extends connect(store)(localize(i18next)(ScopedE
697
701
  kpiId: kpi.kpiId,
698
702
  valueDate: date,
699
703
  value: data.value,
700
- group: this.group,
704
+ org: this.org,
701
705
  cuFlag: '+'
702
706
  })
703
707
  }
@@ -15,6 +15,7 @@ import { i18next, localize } from '@operato/i18n'
15
15
  import { notify, openPopup } from '@operato/layout'
16
16
  import { OxPopup, OxPrompt } from '@operato/popup'
17
17
  import { isMobileDevice } from '@operato/utils'
18
+ import { p13n } from '@operato/p13n'
18
19
 
19
20
  import { connect } from 'pwa-helpers/connect-mixin'
20
21
  import gql from 'graphql-tag'
@@ -22,7 +23,7 @@ import gql from 'graphql-tag'
22
23
  import { KpiValueImporter } from './kpi-value-importer'
23
24
 
24
25
  @customElement('kpi-value-list-page')
25
- export class KpiValueListPage extends connect(store)(localize(i18next)(ScopedElementsMixin(PageView))) {
26
+ export class KpiValueListPage extends connect(store)(p13n(localize(i18next)(ScopedElementsMixin(PageView)))) {
26
27
  static styles = [
27
28
  ScrollbarStyles,
28
29
  CommonGristStyles,
@@ -106,7 +107,12 @@ export class KpiValueListPage extends connect(store)(localize(i18next)(ScopedEle
106
107
  const mode = this.mode || (isMobileDevice() ? 'CARD' : 'GRID')
107
108
 
108
109
  return html`
109
- <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
110
+ <ox-grist
111
+ .mode=${mode}
112
+ .config=${this.gristConfig}
113
+ .fetchHandler=${this.fetchHandler.bind(this)}
114
+ .personalConfigProvider=${this.getPagePreferenceProvider('ox-grist')!}
115
+ >
110
116
  <div slot="headroom" class="header">
111
117
  <div class="filters">
112
118
  <ox-filters-form autofocus without-search></ox-filters-form>
@@ -124,6 +130,8 @@ export class KpiValueListPage extends connect(store)(localize(i18next)(ScopedEle
124
130
  </ox-record-creator>
125
131
  </div>
126
132
  </div>
133
+
134
+ <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
127
135
  </ox-grist>
128
136
  `
129
137
  }
@@ -137,7 +145,7 @@ export class KpiValueListPage extends connect(store)(localize(i18next)(ScopedEle
137
145
  'valueDate',
138
146
  'value',
139
147
  'score',
140
- 'group',
148
+ 'kpiOrgScope',
141
149
  'inputType',
142
150
  'source',
143
151
  'meta',
@@ -152,7 +160,7 @@ export class KpiValueListPage extends connect(store)(localize(i18next)(ScopedEle
152
160
  'valueDate',
153
161
  'value',
154
162
  'score',
155
- 'group',
163
+ 'kpiOrgScope',
156
164
  'inputType',
157
165
  'source',
158
166
  'meta',
@@ -188,7 +196,16 @@ export class KpiValueListPage extends connect(store)(localize(i18next)(ScopedEle
188
196
  { type: 'string', name: 'valueDate', header: '실적일', record: { editable: true }, width: 120 },
189
197
  { type: 'number', name: 'value', header: '실적값', record: { editable: true }, width: 120 },
190
198
  { type: 'number', name: 'score', header: '성과점수', record: { editable: false }, width: 120 },
191
- { type: 'string', name: 'group', header: '그룹', record: { editable: false }, width: 120 },
199
+ {
200
+ type: 'string',
201
+ name: 'kpiOrgScope',
202
+ header: '조직',
203
+ record: { editable: false },
204
+ width: 120,
205
+ renderer: (value, column, record, rowIndex, field) => {
206
+ return value?.entityName || value?.org || ''
207
+ }
208
+ },
192
209
  { type: 'string', name: 'inputType', header: '입력방식', record: { editable: false }, width: 100 },
193
210
  { type: 'string', name: 'source', header: '수집출처', record: { editable: false }, width: 120 },
194
211
  { type: 'object', name: 'meta', header: '메타', record: { editable: false }, width: 120 },
@@ -243,7 +260,10 @@ export class KpiValueListPage extends connect(store)(localize(i18next)(ScopedEle
243
260
  inputType
244
261
  source
245
262
  meta
246
- group
263
+ kpiOrgScope {
264
+ id
265
+ org
266
+ }
247
267
  updater {
248
268
  id
249
269
  name
@@ -362,7 +382,11 @@ export class KpiValueListPage extends connect(store)(localize(i18next)(ScopedEle
362
382
  value
363
383
  score
364
384
  valueDate
365
- group
385
+ kpiOrgScope {
386
+ id
387
+ entityName
388
+ org
389
+ }
366
390
  }
367
391
  }
368
392
  `,
package/client/route.ts CHANGED
@@ -12,17 +12,10 @@ export default function route(page: string) {
12
12
  import('./pages/kpi/kpi-list-page')
13
13
  return page
14
14
 
15
- case 'kpi-category-list':
16
- import('./pages/kpi-category/kpi-category-list-page')
15
+ case 'kpi-tree':
16
+ import('./pages/kpi/kpi-tree-page')
17
17
  return page
18
18
 
19
- case 'kpi-category-list':
20
- import('./pages/kpi-category/kpi-category-list-page')
21
- return page
22
-
23
- case 'kpi-category-value-list':
24
- import('./pages/kpi-category-value/kpi-category-value-list-page')
25
- return page
26
19
 
27
20
  case 'kpi-metric-list':
28
21
  import('./pages/kpi-metric/kpi-metric-list-page')