@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
@@ -1,537 +0,0 @@
1
- import '@material/web/icon/icon.js'
2
- import '@material/web/button/elevated-button.js'
3
- import '@operato/data-grist/ox-grist.js'
4
- import '@operato/data-grist/ox-filters-form.js'
5
- import '@operato/data-grist/ox-record-creator.js'
6
-
7
- import { CommonButtonStyles, CommonHeaderStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles'
8
- import { PageView, store } from '@operato/shell'
9
- import { css, html } from 'lit'
10
- import { customElement, property, query, state } from 'lit/decorators.js'
11
- import { ScopedElementsMixin } from '@open-wc/scoped-elements'
12
- import { ColumnConfig, DataGrist, FetchOption } from '@operato/data-grist'
13
- import { client } from '@operato/graphql'
14
- import { i18next, localize } from '@operato/i18n'
15
- import { notify, openPopup } from '@operato/layout'
16
- import { OxPopup, OxPrompt } from '@operato/popup'
17
- import { isMobileDevice } from '@operato/utils'
18
-
19
- import { connect } from 'pwa-helpers/connect-mixin'
20
- import gql from 'graphql-tag'
21
-
22
- import { KpiCategoryImporter } from './kpi-category-importer'
23
- import { KpiCategoryValueCalculator } from './kpi-category-value-calculator'
24
-
25
- @customElement('kpi-category-list-page')
26
- export class KpiCategoryListPage extends connect(store)(localize(i18next)(ScopedElementsMixin(PageView))) {
27
- static styles = [
28
- ScrollbarStyles,
29
- CommonGristStyles,
30
- CommonHeaderStyles,
31
- css`
32
- :host {
33
- display: flex;
34
-
35
- width: 100%;
36
-
37
- --grid-record-emphasized-background-color: #8b0000;
38
- --grid-record-emphasized-color: #ff6b6b;
39
- }
40
-
41
- ox-grist {
42
- overflow-y: auto;
43
- flex: 1;
44
- }
45
-
46
- ox-filters-form {
47
- flex: 1;
48
- }
49
- `
50
- ]
51
-
52
- static get scopedElements() {
53
- return {
54
- 'kpi-category-importer': KpiCategoryImporter,
55
- 'kpi-category-value-calculator': KpiCategoryValueCalculator
56
- }
57
- }
58
-
59
- @property({ type: Object }) gristConfig: any
60
- @property({ type: String }) mode: 'CARD' | 'GRID' | 'LIST' = isMobileDevice() ? 'CARD' : 'GRID'
61
-
62
- @query('ox-grist') private grist!: DataGrist
63
-
64
- @state() availableVariables: any[] = []
65
- @state() availableVariablesLoaded = false
66
-
67
- async getAvailableVariables() {
68
- if (this.availableVariablesLoaded) {
69
- return this.availableVariables
70
- }
71
- const response = await client.query({
72
- query: gql`
73
- query {
74
- kpis {
75
- items {
76
- name
77
- description
78
- }
79
- }
80
- }
81
- `
82
- })
83
- this.availableVariables = (response.data.kpis.items || []).map(kpi => ({
84
- name: kpi.name,
85
- description: kpi.description,
86
- type: 'kpi',
87
- unit: ''
88
- }))
89
- this.availableVariablesLoaded = true
90
- return this.availableVariables
91
- }
92
-
93
- get context() {
94
- return {
95
- title: i18next.t('title.kpi category list'),
96
- search: {
97
- handler: (search: string) => {
98
- this.grist.searchText = search
99
- },
100
- value: this.grist.searchText
101
- },
102
- filter: {
103
- handler: () => {
104
- this.grist.toggleHeadroom()
105
- }
106
- },
107
- help: 'kpi/kpi-category',
108
- actions: [
109
- {
110
- title: i18next.t('button.save'),
111
- action: this._updateKpiCategory.bind(this),
112
- ...CommonButtonStyles.save
113
- },
114
- {
115
- title: i18next.t('button.delete'),
116
- action: this._deleteKpiCategory.bind(this),
117
- ...CommonButtonStyles.delete
118
- }
119
- ],
120
- exportable: {
121
- name: i18next.t('title.kpi category list'),
122
- data: this.exportHandler.bind(this)
123
- },
124
- importable: {
125
- handler: this.importHandler.bind(this)
126
- }
127
- }
128
- }
129
-
130
- render() {
131
- const mode = this.mode || (isMobileDevice() ? 'CARD' : 'GRID')
132
-
133
- return html`
134
- <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
135
- <div slot="headroom" class="header">
136
- <div class="filters">
137
- <ox-filters-form autofocus without-search></ox-filters-form>
138
-
139
- <div id="modes">
140
- <md-icon @click=${() => (this.mode = 'GRID')} ?active=${mode == 'GRID'}>grid_on</md-icon>
141
- <md-icon @click=${() => (this.mode = 'LIST')} ?active=${mode == 'LIST'}>format_list_bulleted</md-icon>
142
- <md-icon @click=${() => (this.mode = 'CARD')} ?active=${mode == 'CARD'}>apps</md-icon>
143
- </div>
144
-
145
- <ox-record-creator id="add" .callback=${this.creationCallback.bind(this)}>
146
- <button>
147
- <md-icon>add</md-icon>
148
- </button>
149
- </ox-record-creator>
150
- </div>
151
- </div>
152
- </ox-grist>
153
- `
154
- }
155
-
156
- connectedCallback() {
157
- super.connectedCallback()
158
- this.fetchKpis()
159
- }
160
-
161
- async pageInitialized(lifecycle: any) {
162
- this.gristConfig = {
163
- list: {
164
- fields: [
165
- 'name',
166
- 'description',
167
- 'active',
168
- 'formula',
169
- 'weight',
170
- 'periodType',
171
- 'createdAt',
172
- 'updatedAt',
173
- 'creator',
174
- 'updater'
175
- ],
176
- details: [
177
- 'name',
178
- 'description',
179
- 'active',
180
- 'formula',
181
- 'weight',
182
- 'periodType',
183
- 'createdAt',
184
- 'updatedAt',
185
- 'creator',
186
- 'updater'
187
- ]
188
- },
189
- columns: [
190
- { type: 'gutter', gutterName: 'sequence' },
191
- { type: 'gutter', gutterName: 'row-selector', multiple: true },
192
- {
193
- type: 'gutter',
194
- gutterName: 'button',
195
- icon: 'calculate',
196
- title: '실적값 계산',
197
- handlers: {
198
- click: (columns, data, column, record, rowIndex) => {
199
- this.openCalculator(record)
200
- }
201
- }
202
- },
203
- {
204
- type: 'string',
205
- name: 'name',
206
- header: '이름',
207
- record: { editable: true },
208
- filter: 'search',
209
- sortable: true,
210
- width: 120
211
- },
212
- {
213
- type: 'string',
214
- name: 'description',
215
- header: i18next.t('field.description'),
216
- record: { editable: true },
217
- filter: 'search',
218
- width: 200
219
- },
220
- {
221
- type: 'formula',
222
- name: 'formula',
223
- header: '산식',
224
- record: {
225
- editable: true,
226
- availableVariables: async () => {
227
- return await this.getAvailableVariables()
228
- }
229
- },
230
- width: 320
231
- },
232
- {
233
- type: 'number',
234
- name: 'weight',
235
- header: '가중치',
236
- record: { editable: true },
237
- width: 80
238
- },
239
- {
240
- type: 'select',
241
- name: 'periodType',
242
- header: '계산주기',
243
- record: {
244
- editable: true,
245
- options: [
246
- { value: '', display: '' },
247
- { value: 'DAY', display: '일' },
248
- { value: 'WEEK', display: '주' },
249
- { value: 'MONTH', display: '월' },
250
- { value: 'QUARTER', display: '분기' },
251
- { value: 'YEAR', display: '년' },
252
- { value: 'RANGE', display: '범위' },
253
- { value: 'ALLTIME', display: '전체' }
254
- ]
255
- },
256
-
257
- width: 80
258
- },
259
- {
260
- type: 'checkbox',
261
- name: 'active',
262
- label: true,
263
- header: i18next.t('field.active'),
264
- record: { editable: true },
265
- filter: true,
266
- sortable: true,
267
- width: 60
268
- },
269
- { type: 'datetime', name: 'createdAt', header: '생성일', record: { editable: false }, width: 180 },
270
- {
271
- type: 'datetime',
272
- name: 'updatedAt',
273
- header: i18next.t('field.updated_at'),
274
- record: { editable: false },
275
- sortable: true,
276
- width: 180
277
- },
278
- {
279
- type: 'resource-object',
280
- name: 'creator',
281
- header: '생성자',
282
- record: { editable: false, renderer: (v, c, r) => r.creator?.name },
283
- width: 120
284
- },
285
- {
286
- type: 'resource-object',
287
- name: 'updater',
288
- header: i18next.t('field.updater'),
289
- record: { editable: false, renderer: (v, c, r) => r.updater?.name },
290
- sortable: true,
291
- width: 120
292
- }
293
- ],
294
- rows: {
295
- appendable: false,
296
- selectable: {
297
- multiple: true
298
- }
299
- },
300
- sorters: [{ name: 'name' }]
301
- }
302
- }
303
-
304
- async pageUpdated(changes: any, lifecycle: any) {
305
- if (this.active) {
306
- // do something here when this page just became as active
307
- }
308
- }
309
-
310
- async fetchHandler({ page = 1, limit = 100, sortings = [], filters = [] }: FetchOption) {
311
- const response = await client.query({
312
- query: gql`
313
- query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
314
- responses: kpiCategories(filters: $filters, pagination: $pagination, sortings: $sortings) {
315
- items {
316
- id
317
- name
318
- description
319
- active
320
- formula
321
- weight
322
- periodType
323
- updater {
324
- id
325
- name
326
- }
327
- updatedAt
328
- creator {
329
- id
330
- name
331
- }
332
- createdAt
333
- }
334
- total
335
- }
336
- }
337
- `,
338
- variables: {
339
- filters,
340
- pagination: { page, limit },
341
- sortings
342
- }
343
- })
344
-
345
- return {
346
- total: response.data.responses.total || 0,
347
- records: response.data.responses.items || []
348
- }
349
- }
350
-
351
- async fetchKpis() {
352
- const response = await client.query({
353
- query: gql`
354
- query {
355
- kpis {
356
- items {
357
- name
358
- description
359
- }
360
- }
361
- }
362
- `
363
- })
364
-
365
- if (!response.errors) {
366
- this.availableVariables = (response.data.kpis.items || []).map(kpi => ({
367
- name: kpi.name,
368
- description: kpi.description,
369
- type: 'kpi',
370
- unit: ''
371
- }))
372
- }
373
- }
374
-
375
- async _deleteKpiCategory() {
376
- if (
377
- await OxPrompt.open({
378
- title: i18next.t('text.are_you_sure'),
379
- text: i18next.t('text.sure_to_x', { x: i18next.t('text.delete') }),
380
- confirmButton: { text: i18next.t('button.confirm') },
381
- cancelButton: { text: i18next.t('button.cancel') }
382
- })
383
- ) {
384
- const ids = this.grist.selected.map(record => record.id)
385
- if (ids && ids.length > 0) {
386
- const response = await client.mutate({
387
- mutation: gql`
388
- mutation ($ids: [String!]!) {
389
- deleteKpiCategories(ids: $ids)
390
- }
391
- `,
392
- variables: {
393
- ids
394
- }
395
- })
396
-
397
- if (!response.errors) {
398
- this.grist.fetch()
399
- notify({
400
- message: i18next.t('text.info_x_successfully', { x: i18next.t('text.delete') })
401
- })
402
- }
403
- }
404
- }
405
- }
406
-
407
- async _updateKpiCategory() {
408
- let patches = this.grist.dirtyRecords
409
- if (patches && patches.length) {
410
- patches = patches.map(patch => {
411
- let patchField: any = patch.id ? { id: patch.id } : {}
412
- const dirtyFields = patch.__dirtyfields__
413
- for (let key in dirtyFields) {
414
- patchField[key] = dirtyFields[key].after
415
- }
416
- patchField.cuFlag = patch.__dirty__
417
-
418
- return patchField
419
- })
420
-
421
- const response = await client.mutate({
422
- mutation: gql`
423
- mutation ($patches: [KpiCategoryPatch!]!) {
424
- updateMultipleKpiCategory(patches: $patches) {
425
- name
426
- }
427
- }
428
- `,
429
- variables: {
430
- patches
431
- }
432
- })
433
-
434
- if (!response.errors) {
435
- this.grist.fetch()
436
- }
437
- }
438
- }
439
-
440
- async creationCallback(kpiCategory) {
441
- try {
442
- const response = await client.query({
443
- query: gql`
444
- mutation ($kpiCategory: NewKpiCategory!) {
445
- createKpiCategory(kpiCategory: $kpiCategory) {
446
- id
447
- }
448
- }
449
- `,
450
- variables: {
451
- kpiCategory
452
- },
453
- context: {
454
- hasUpload: true
455
- }
456
- })
457
-
458
- if (!response.errors) {
459
- this.grist.fetch()
460
- document.dispatchEvent(
461
- new CustomEvent('notify', {
462
- detail: {
463
- message: i18next.t('text.data_created_successfully')
464
- }
465
- })
466
- )
467
- }
468
-
469
- return true
470
- } catch (ex) {
471
- console.error(ex)
472
- document.dispatchEvent(
473
- new CustomEvent('notify', {
474
- detail: {
475
- type: 'error',
476
- message: i18next.t('text.error')
477
- }
478
- })
479
- )
480
- return false
481
- }
482
- }
483
-
484
- async exportHandler() {
485
- const exportTargets = this.grist.selected.length ? this.grist.selected : this.grist.dirtyData.records
486
- const targetFieldSet = new Set(['id', 'name', 'description', 'active'])
487
-
488
- return exportTargets.map(kpiCategory => {
489
- let tempObj = {}
490
- for (const field of targetFieldSet) {
491
- tempObj[field] = kpiCategory[field]
492
- }
493
-
494
- return tempObj
495
- })
496
- }
497
-
498
- async importHandler(records) {
499
- const popup = openPopup(
500
- html`
501
- <kpi-category-importer
502
- .kpiCategories=${records}
503
- @imported=${() => {
504
- history.back()
505
- this.grist.fetch()
506
- }}
507
- ></kpi-category-importer>
508
- `,
509
- {
510
- backdrop: true,
511
- size: 'large',
512
- title: i18next.t('title.import kpi-category')
513
- }
514
- )
515
-
516
- popup.onclosed = () => {
517
- this.grist.fetch()
518
- }
519
- }
520
-
521
- private async openCalculator(record: any) {
522
- const popup = openPopup(
523
- html`
524
- <kpi-category-value-calculator
525
- .categoryId=${record.id}
526
- .categoryName=${record.name}
527
- @closed=${() => popup.close()}
528
- ></kpi-category-value-calculator>
529
- `,
530
- {
531
- backdrop: true,
532
- size: 'large',
533
- title: i18next.t('title.calculate kpi value')
534
- }
535
- )
536
- }
537
- }