@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
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KpiOrgScopeMutation = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const type_graphql_1 = require("type-graphql");
6
+ const typeorm_1 = require("typeorm");
7
+ const shell_1 = require("@things-factory/shell");
8
+ const kpi_org_scope_1 = require("./kpi-org-scope");
9
+ const kpi_org_scope_type_1 = require("./kpi-org-scope-type");
10
+ let KpiOrgScopeMutation = class KpiOrgScopeMutation {
11
+ async createKpiOrgScope(kpiOrgScope, context) {
12
+ const { domain, user, tx } = context.state;
13
+ // Check if org already exists for this domain
14
+ const existingOrgScope = await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).findOne({
15
+ where: { domain: { id: domain.id }, org: kpiOrgScope.org }
16
+ });
17
+ if (existingOrgScope) {
18
+ throw new Error(`Organization '${kpiOrgScope.org}' already has a scope mapping in this domain`);
19
+ }
20
+ const entity = {
21
+ ...kpiOrgScope,
22
+ domain,
23
+ creator: user,
24
+ updater: user
25
+ };
26
+ return await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).save(entity);
27
+ }
28
+ async updateMultipleKpiOrgScope(patches, context) {
29
+ const { domain, user, tx } = context.state;
30
+ const ids = patches.map(patch => patch.id);
31
+ const existingOrgScopes = await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).find({
32
+ where: {
33
+ domain: { id: domain.id },
34
+ id: (0, typeorm_1.In)(ids)
35
+ }
36
+ });
37
+ if (existingOrgScopes.length !== patches.length) {
38
+ throw new Error('Some org-scope mappings not found or not accessible');
39
+ }
40
+ const updatedOrgScopes = [];
41
+ for (const patch of patches) {
42
+ const existingOrgScope = existingOrgScopes.find(os => os.id === patch.id);
43
+ if (!existingOrgScope)
44
+ continue;
45
+ // Check if org is being changed and if new org already exists
46
+ if (patch.org && patch.org !== existingOrgScope.org) {
47
+ const duplicateOrgScope = await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).findOne({
48
+ where: {
49
+ domain: { id: domain.id },
50
+ org: patch.org,
51
+ id: (0, typeorm_1.In)(ids.filter(id => id !== patch.id))
52
+ }
53
+ });
54
+ if (duplicateOrgScope) {
55
+ throw new Error(`Organization '${patch.org}' already has a scope mapping in this domain`);
56
+ }
57
+ }
58
+ const updatedEntity = {
59
+ ...existingOrgScope,
60
+ ...patch,
61
+ updater: user,
62
+ updatedAt: new Date()
63
+ };
64
+ const savedOrgScope = await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).save(updatedEntity);
65
+ updatedOrgScopes.push(savedOrgScope);
66
+ }
67
+ return updatedOrgScopes;
68
+ }
69
+ async deleteKpiOrgScopes(ids, context) {
70
+ const { domain, tx } = context.state;
71
+ const existingOrgScopes = await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).find({
72
+ where: {
73
+ domain: { id: domain.id },
74
+ id: (0, typeorm_1.In)(ids)
75
+ }
76
+ });
77
+ if (existingOrgScopes.length === 0) {
78
+ throw new Error('No org-scope mappings found to delete');
79
+ }
80
+ // Soft delete
81
+ await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).softDelete(existingOrgScopes.map(os => os.id));
82
+ return true;
83
+ }
84
+ async bulkUpsertKpiOrgScopes(orgScopes, context) {
85
+ const { domain, user, tx } = context.state;
86
+ const orgs = orgScopes.map(os => os.org);
87
+ const existingOrgScopes = await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).find({
88
+ where: {
89
+ domain: { id: domain.id },
90
+ org: (0, typeorm_1.In)(orgs)
91
+ }
92
+ });
93
+ const results = [];
94
+ for (const orgScopeData of orgScopes) {
95
+ const existing = existingOrgScopes.find(os => os.org === orgScopeData.org);
96
+ if (existing) {
97
+ // Update existing
98
+ const updatedEntity = {
99
+ ...existing,
100
+ ...orgScopeData,
101
+ updater: user,
102
+ updatedAt: new Date()
103
+ };
104
+ const updated = await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).save(updatedEntity);
105
+ results.push(updated);
106
+ }
107
+ else {
108
+ // Create new
109
+ const newEntity = {
110
+ ...orgScopeData,
111
+ domain,
112
+ creator: user,
113
+ updater: user
114
+ };
115
+ const saved = await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope, tx).save(newEntity);
116
+ results.push(saved);
117
+ }
118
+ }
119
+ return results;
120
+ }
121
+ };
122
+ exports.KpiOrgScopeMutation = KpiOrgScopeMutation;
123
+ tslib_1.__decorate([
124
+ (0, type_graphql_1.Directive)('@privilege(category: "kpi", privilege: "mutation", domainOwnerGranted: true, superUserGranted: true)'),
125
+ (0, type_graphql_1.Directive)('@transaction'),
126
+ (0, type_graphql_1.Mutation)(returns => kpi_org_scope_1.KpiOrgScope, { description: 'Create a new KPI org-scope mapping with the provided details.' }),
127
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('kpiOrgScope', { description: 'Input object containing details for the new org-scope mapping.' })),
128
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
129
+ tslib_1.__metadata("design:type", Function),
130
+ tslib_1.__metadata("design:paramtypes", [kpi_org_scope_type_1.NewKpiOrgScope, Object]),
131
+ tslib_1.__metadata("design:returntype", Promise)
132
+ ], KpiOrgScopeMutation.prototype, "createKpiOrgScope", null);
133
+ tslib_1.__decorate([
134
+ (0, type_graphql_1.Directive)('@privilege(category: "kpi", privilege: "mutation", domainOwnerGranted: true, superUserGranted: true)'),
135
+ (0, type_graphql_1.Directive)('@transaction'),
136
+ (0, type_graphql_1.Mutation)(returns => [kpi_org_scope_1.KpiOrgScope], {
137
+ description: 'Update multiple KPI org-scope mappings with the provided patches.'
138
+ }),
139
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('patches', type => [kpi_org_scope_type_1.KpiOrgScopePatch], {
140
+ description: 'Array of patch objects for updating org-scope mappings.'
141
+ })),
142
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
143
+ tslib_1.__metadata("design:type", Function),
144
+ tslib_1.__metadata("design:paramtypes", [Array, Object]),
145
+ tslib_1.__metadata("design:returntype", Promise)
146
+ ], KpiOrgScopeMutation.prototype, "updateMultipleKpiOrgScope", null);
147
+ tslib_1.__decorate([
148
+ (0, type_graphql_1.Directive)('@privilege(category: "kpi", privilege: "mutation", domainOwnerGranted: true, superUserGranted: true)'),
149
+ (0, type_graphql_1.Directive)('@transaction'),
150
+ (0, type_graphql_1.Mutation)(returns => Boolean, { description: 'Delete KPI org-scope mappings by their IDs.' }),
151
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('ids', type => [String], { description: 'Array of org-scope mapping IDs to delete.' })),
152
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
153
+ tslib_1.__metadata("design:type", Function),
154
+ tslib_1.__metadata("design:paramtypes", [Array, Object]),
155
+ tslib_1.__metadata("design:returntype", Promise)
156
+ ], KpiOrgScopeMutation.prototype, "deleteKpiOrgScopes", null);
157
+ tslib_1.__decorate([
158
+ (0, type_graphql_1.Directive)('@privilege(category: "kpi", privilege: "mutation", domainOwnerGranted: true, superUserGranted: true)'),
159
+ (0, type_graphql_1.Directive)('@transaction'),
160
+ (0, type_graphql_1.Mutation)(returns => [kpi_org_scope_1.KpiOrgScope], { description: 'Bulk create or update KPI org-scope mappings.' }),
161
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('orgScopes', type => [kpi_org_scope_type_1.NewKpiOrgScope], { description: 'Array of org-scope mapping data for bulk upsert.' })),
162
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
163
+ tslib_1.__metadata("design:type", Function),
164
+ tslib_1.__metadata("design:paramtypes", [Array, Object]),
165
+ tslib_1.__metadata("design:returntype", Promise)
166
+ ], KpiOrgScopeMutation.prototype, "bulkUpsertKpiOrgScopes", null);
167
+ exports.KpiOrgScopeMutation = KpiOrgScopeMutation = tslib_1.__decorate([
168
+ (0, type_graphql_1.Resolver)(kpi_org_scope_1.KpiOrgScope)
169
+ ], KpiOrgScopeMutation);
170
+ //# sourceMappingURL=kpi-org-scope-mutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kpi-org-scope-mutation.js","sourceRoot":"","sources":["../../../server/service/kpi-org-scope/kpi-org-scope-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\nimport { getRepository } from '@things-factory/shell'\n\nimport { KpiOrgScope } from './kpi-org-scope'\nimport { NewKpiOrgScope, KpiOrgScopePatch } from './kpi-org-scope-type'\n\n@Resolver(KpiOrgScope)\nexport class KpiOrgScopeMutation {\n @Directive('@privilege(category: \"kpi\", privilege: \"mutation\", domainOwnerGranted: true, superUserGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => KpiOrgScope, { description: 'Create a new KPI org-scope mapping with the provided details.' })\n async createKpiOrgScope(\n @Arg('kpiOrgScope', { description: 'Input object containing details for the new org-scope mapping.' })\n kpiOrgScope: NewKpiOrgScope,\n @Ctx() context: ResolverContext\n ): Promise<KpiOrgScope> {\n const { domain, user, tx } = context.state\n\n // Check if org already exists for this domain\n const existingOrgScope = await getRepository(KpiOrgScope, tx).findOne({\n where: { domain: { id: domain.id }, org: kpiOrgScope.org }\n })\n\n if (existingOrgScope) {\n throw new Error(`Organization '${kpiOrgScope.org}' already has a scope mapping in this domain`)\n }\n\n const entity: Partial<KpiOrgScope> = {\n ...kpiOrgScope,\n domain,\n creator: user,\n updater: user\n }\n\n return await getRepository(KpiOrgScope, tx).save(entity)\n }\n\n @Directive('@privilege(category: \"kpi\", privilege: \"mutation\", domainOwnerGranted: true, superUserGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [KpiOrgScope], {\n description: 'Update multiple KPI org-scope mappings with the provided patches.'\n })\n async updateMultipleKpiOrgScope(\n @Arg('patches', type => [KpiOrgScopePatch], {\n description: 'Array of patch objects for updating org-scope mappings.'\n })\n patches: KpiOrgScopePatch[],\n @Ctx() context: ResolverContext\n ): Promise<KpiOrgScope[]> {\n const { domain, user, tx } = context.state\n\n const ids = patches.map(patch => patch.id)\n const existingOrgScopes = await getRepository(KpiOrgScope, tx).find({\n where: {\n domain: { id: domain.id },\n id: In(ids)\n }\n })\n\n if (existingOrgScopes.length !== patches.length) {\n throw new Error('Some org-scope mappings not found or not accessible')\n }\n\n const updatedOrgScopes: KpiOrgScope[] = []\n\n for (const patch of patches) {\n const existingOrgScope = existingOrgScopes.find(os => os.id === patch.id)\n if (!existingOrgScope) continue\n\n // Check if org is being changed and if new org already exists\n if (patch.org && patch.org !== existingOrgScope.org) {\n const duplicateOrgScope = await getRepository(KpiOrgScope, tx).findOne({\n where: {\n domain: { id: domain.id },\n org: patch.org,\n id: In(ids.filter(id => id !== patch.id))\n }\n })\n if (duplicateOrgScope) {\n throw new Error(`Organization '${patch.org}' already has a scope mapping in this domain`)\n }\n }\n\n const updatedEntity: Partial<KpiOrgScope> = {\n ...existingOrgScope,\n ...patch,\n updater: user,\n updatedAt: new Date()\n }\n\n const savedOrgScope = await getRepository(KpiOrgScope, tx).save(updatedEntity)\n updatedOrgScopes.push(savedOrgScope)\n }\n\n return updatedOrgScopes\n }\n\n @Directive('@privilege(category: \"kpi\", privilege: \"mutation\", domainOwnerGranted: true, superUserGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'Delete KPI org-scope mappings by their IDs.' })\n async deleteKpiOrgScopes(\n @Arg('ids', type => [String], { description: 'Array of org-scope mapping IDs to delete.' }) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n const existingOrgScopes = await getRepository(KpiOrgScope, tx).find({\n where: {\n domain: { id: domain.id },\n id: In(ids)\n }\n })\n\n if (existingOrgScopes.length === 0) {\n throw new Error('No org-scope mappings found to delete')\n }\n\n // Soft delete\n await getRepository(KpiOrgScope, tx).softDelete(existingOrgScopes.map(os => os.id))\n\n return true\n }\n\n @Directive('@privilege(category: \"kpi\", privilege: \"mutation\", domainOwnerGranted: true, superUserGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [KpiOrgScope], { description: 'Bulk create or update KPI org-scope mappings.' })\n async bulkUpsertKpiOrgScopes(\n @Arg('orgScopes', type => [NewKpiOrgScope], { description: 'Array of org-scope mapping data for bulk upsert.' })\n orgScopes: NewKpiOrgScope[],\n @Ctx() context: ResolverContext\n ): Promise<KpiOrgScope[]> {\n const { domain, user, tx } = context.state\n\n const orgs = orgScopes.map(os => os.org)\n const existingOrgScopes = await getRepository(KpiOrgScope, tx).find({\n where: {\n domain: { id: domain.id },\n org: In(orgs)\n }\n })\n\n const results: KpiOrgScope[] = []\n\n for (const orgScopeData of orgScopes) {\n const existing = existingOrgScopes.find(os => os.org === orgScopeData.org)\n\n if (existing) {\n // Update existing\n const updatedEntity: Partial<KpiOrgScope> = {\n ...existing,\n ...orgScopeData,\n updater: user,\n updatedAt: new Date()\n }\n const updated = await getRepository(KpiOrgScope, tx).save(updatedEntity)\n results.push(updated)\n } else {\n // Create new\n const newEntity: Partial<KpiOrgScope> = {\n ...orgScopeData,\n domain,\n creator: user,\n updater: user\n }\n const saved = await getRepository(KpiOrgScope, tx).save(newEntity)\n results.push(saved)\n }\n }\n\n return results\n }\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import { Domain, ListParam } from '@things-factory/shell';
2
+ import { User } from '@things-factory/auth-base';
3
+ import { KpiOrgScope } from './kpi-org-scope';
4
+ import { KpiOrgScopeList } from './kpi-org-scope-type';
5
+ export declare class KpiOrgScopeQuery {
6
+ kpiOrgScope(id: string, context: ResolverContext): Promise<KpiOrgScope>;
7
+ kpiOrgScopes(params: ListParam, context: ResolverContext): Promise<KpiOrgScopeList>;
8
+ kpiOrgScopeValues(scopeField: 'scope01' | 'scope02' | 'scope03' | 'scope04' | 'scope05', context: ResolverContext, searchTerm?: string): Promise<string[]>;
9
+ kpiOrgValues(context: ResolverContext, searchTerm?: string): Promise<string[]>;
10
+ kpiOrgScopeByOrg(org: string, context: ResolverContext): Promise<KpiOrgScope | undefined>;
11
+ domain(kpiOrgScope: KpiOrgScope): Promise<Domain>;
12
+ creator(kpiOrgScope: KpiOrgScope): Promise<User>;
13
+ updater(kpiOrgScope: KpiOrgScope): Promise<User>;
14
+ }
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KpiOrgScopeQuery = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const type_graphql_1 = require("type-graphql");
6
+ const shell_1 = require("@things-factory/shell");
7
+ const auth_base_1 = require("@things-factory/auth-base");
8
+ const kpi_org_scope_1 = require("./kpi-org-scope");
9
+ const kpi_org_scope_type_1 = require("./kpi-org-scope-type");
10
+ let KpiOrgScopeQuery = class KpiOrgScopeQuery {
11
+ async kpiOrgScope(id, context) {
12
+ const { domain } = context.state;
13
+ return await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope).findOne({
14
+ where: { domain: { id: domain.id }, id }
15
+ });
16
+ }
17
+ async kpiOrgScopes(params, context) {
18
+ const { domain } = context.state;
19
+ const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
20
+ domain,
21
+ params,
22
+ repository: await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope),
23
+ searchables: ['org', 'scope01', 'scope02', 'scope03', 'scope04', 'scope05']
24
+ });
25
+ const [items, total] = await queryBuilder.getManyAndCount();
26
+ return { items, total };
27
+ }
28
+ async kpiOrgScopeValues(scopeField, context, searchTerm) {
29
+ const { domain } = context.state;
30
+ const queryBuilder = (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope)
31
+ .createQueryBuilder('orgScope')
32
+ .select(`DISTINCT orgScope.${scopeField}`, 'value')
33
+ .where('orgScope.domain_id = :domainId', { domainId: domain.id })
34
+ .andWhere(`orgScope.${scopeField} IS NOT NULL`)
35
+ .andWhere(`orgScope.${scopeField} != ''`)
36
+ .andWhere('orgScope.active = true');
37
+ if (searchTerm) {
38
+ queryBuilder.andWhere(`orgScope.${scopeField} ILIKE :searchTerm`, {
39
+ searchTerm: `%${searchTerm}%`
40
+ });
41
+ }
42
+ const results = await queryBuilder.getRawMany();
43
+ return results.map(r => r.value).filter(v => v);
44
+ }
45
+ async kpiOrgValues(context, searchTerm) {
46
+ const { domain } = context.state;
47
+ const queryBuilder = (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope)
48
+ .createQueryBuilder('orgScope')
49
+ .select('DISTINCT orgScope.org', 'value')
50
+ .where('orgScope.domain_id = :domainId', { domainId: domain.id })
51
+ .andWhere('orgScope.active = true');
52
+ if (searchTerm) {
53
+ queryBuilder.andWhere('orgScope.org ILIKE :searchTerm', {
54
+ searchTerm: `%${searchTerm}%`
55
+ });
56
+ }
57
+ const results = await queryBuilder.getRawMany();
58
+ return results.map(r => r.value);
59
+ }
60
+ async kpiOrgScopeByOrg(org, context) {
61
+ const { domain } = context.state;
62
+ return await (0, shell_1.getRepository)(kpi_org_scope_1.KpiOrgScope).findOne({
63
+ where: { domain: { id: domain.id }, org }
64
+ });
65
+ }
66
+ async domain(kpiOrgScope) {
67
+ return kpiOrgScope.domainId && (await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({ id: kpiOrgScope.domainId }));
68
+ }
69
+ async creator(kpiOrgScope) {
70
+ return kpiOrgScope.creatorId && (await (0, shell_1.getRepository)(auth_base_1.User).findOneBy({ id: kpiOrgScope.creatorId }));
71
+ }
72
+ async updater(kpiOrgScope) {
73
+ return kpiOrgScope.updaterId && (await (0, shell_1.getRepository)(auth_base_1.User).findOneBy({ id: kpiOrgScope.updaterId }));
74
+ }
75
+ };
76
+ exports.KpiOrgScopeQuery = KpiOrgScopeQuery;
77
+ tslib_1.__decorate([
78
+ (0, type_graphql_1.Directive)('@privilege(category: "kpi", privilege: "query", domainOwnerGranted: true, superUserGranted: true)'),
79
+ (0, type_graphql_1.Query)(returns => kpi_org_scope_1.KpiOrgScope, {
80
+ nullable: true,
81
+ description: 'Fetch a single KPI org-scope mapping by its unique identifier.'
82
+ }),
83
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('id', { description: 'Unique identifier of the org-scope mapping to fetch.' })),
84
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
85
+ tslib_1.__metadata("design:type", Function),
86
+ tslib_1.__metadata("design:paramtypes", [String, Object]),
87
+ tslib_1.__metadata("design:returntype", Promise)
88
+ ], KpiOrgScopeQuery.prototype, "kpiOrgScope", null);
89
+ tslib_1.__decorate([
90
+ (0, type_graphql_1.Directive)('@privilege(category: "kpi", privilege: "query", domainOwnerGranted: true, superUserGranted: true)'),
91
+ (0, type_graphql_1.Query)(returns => kpi_org_scope_type_1.KpiOrgScopeList, {
92
+ description: 'Fetch multiple KPI org-scope mappings with filters and pagination'
93
+ }),
94
+ tslib_1.__param(0, (0, type_graphql_1.Args)(type => shell_1.ListParam)),
95
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
96
+ tslib_1.__metadata("design:type", Function),
97
+ tslib_1.__metadata("design:paramtypes", [shell_1.ListParam, Object]),
98
+ tslib_1.__metadata("design:returntype", Promise)
99
+ ], KpiOrgScopeQuery.prototype, "kpiOrgScopes", null);
100
+ tslib_1.__decorate([
101
+ (0, type_graphql_1.Directive)('@privilege(category: "kpi", privilege: "query", domainOwnerGranted: true, superUserGranted: true)'),
102
+ (0, type_graphql_1.Query)(returns => [String], { description: 'Get distinct values for a specific scope field' }),
103
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('scopeField', { description: 'Scope field to get distinct values from' })),
104
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
105
+ tslib_1.__param(2, (0, type_graphql_1.Arg)('searchTerm', { nullable: true, description: 'Optional search term to filter values' })),
106
+ tslib_1.__metadata("design:type", Function),
107
+ tslib_1.__metadata("design:paramtypes", [String, Object, String]),
108
+ tslib_1.__metadata("design:returntype", Promise)
109
+ ], KpiOrgScopeQuery.prototype, "kpiOrgScopeValues", null);
110
+ tslib_1.__decorate([
111
+ (0, type_graphql_1.Directive)('@privilege(category: "kpi", privilege: "query", domainOwnerGranted: true, superUserGranted: true)'),
112
+ (0, type_graphql_1.Query)(returns => [String], { description: 'Get distinct org values' }),
113
+ tslib_1.__param(0, (0, type_graphql_1.Ctx)()),
114
+ tslib_1.__param(1, (0, type_graphql_1.Arg)('searchTerm', { nullable: true, description: 'Optional search term to filter org values' })),
115
+ tslib_1.__metadata("design:type", Function),
116
+ tslib_1.__metadata("design:paramtypes", [Object, String]),
117
+ tslib_1.__metadata("design:returntype", Promise)
118
+ ], KpiOrgScopeQuery.prototype, "kpiOrgValues", null);
119
+ tslib_1.__decorate([
120
+ (0, type_graphql_1.Directive)('@privilege(category: "kpi", privilege: "query", domainOwnerGranted: true, superUserGranted: true)'),
121
+ (0, type_graphql_1.Query)(returns => kpi_org_scope_1.KpiOrgScope, { nullable: true, description: 'Find org-scope mapping by org identifier' }),
122
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('org', { description: 'Organization identifier to search for' })),
123
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
124
+ tslib_1.__metadata("design:type", Function),
125
+ tslib_1.__metadata("design:paramtypes", [String, Object]),
126
+ tslib_1.__metadata("design:returntype", Promise)
127
+ ], KpiOrgScopeQuery.prototype, "kpiOrgScopeByOrg", null);
128
+ tslib_1.__decorate([
129
+ (0, type_graphql_1.FieldResolver)(type => shell_1.Domain),
130
+ tslib_1.__param(0, (0, type_graphql_1.Root)()),
131
+ tslib_1.__metadata("design:type", Function),
132
+ tslib_1.__metadata("design:paramtypes", [kpi_org_scope_1.KpiOrgScope]),
133
+ tslib_1.__metadata("design:returntype", Promise)
134
+ ], KpiOrgScopeQuery.prototype, "domain", null);
135
+ tslib_1.__decorate([
136
+ (0, type_graphql_1.FieldResolver)(type => auth_base_1.User),
137
+ tslib_1.__param(0, (0, type_graphql_1.Root)()),
138
+ tslib_1.__metadata("design:type", Function),
139
+ tslib_1.__metadata("design:paramtypes", [kpi_org_scope_1.KpiOrgScope]),
140
+ tslib_1.__metadata("design:returntype", Promise)
141
+ ], KpiOrgScopeQuery.prototype, "creator", null);
142
+ tslib_1.__decorate([
143
+ (0, type_graphql_1.FieldResolver)(type => auth_base_1.User),
144
+ tslib_1.__param(0, (0, type_graphql_1.Root)()),
145
+ tslib_1.__metadata("design:type", Function),
146
+ tslib_1.__metadata("design:paramtypes", [kpi_org_scope_1.KpiOrgScope]),
147
+ tslib_1.__metadata("design:returntype", Promise)
148
+ ], KpiOrgScopeQuery.prototype, "updater", null);
149
+ exports.KpiOrgScopeQuery = KpiOrgScopeQuery = tslib_1.__decorate([
150
+ (0, type_graphql_1.Resolver)(kpi_org_scope_1.KpiOrgScope)
151
+ ], KpiOrgScopeQuery);
152
+ //# sourceMappingURL=kpi-org-scope-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kpi-org-scope-query.js","sourceRoot":"","sources":["../../../server/service/kpi-org-scope/kpi-org-scope-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\nimport { KpiOrgScope } from './kpi-org-scope'\nimport { KpiOrgScopeList } from './kpi-org-scope-type'\n\n@Resolver(KpiOrgScope)\nexport class KpiOrgScopeQuery {\n @Directive('@privilege(category: \"kpi\", privilege: \"query\", domainOwnerGranted: true, superUserGranted: true)')\n @Query(returns => KpiOrgScope!, {\n nullable: true,\n description: 'Fetch a single KPI org-scope mapping by its unique identifier.'\n })\n async kpiOrgScope(\n @Arg('id', { description: 'Unique identifier of the org-scope mapping to fetch.' }) id: string,\n @Ctx() context: ResolverContext\n ): Promise<KpiOrgScope> {\n const { domain } = context.state\n\n return await getRepository(KpiOrgScope).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Directive('@privilege(category: \"kpi\", privilege: \"query\", domainOwnerGranted: true, superUserGranted: true)')\n @Query(returns => KpiOrgScopeList, {\n description: 'Fetch multiple KPI org-scope mappings with filters and pagination'\n })\n async kpiOrgScopes(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<KpiOrgScopeList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n domain,\n params,\n repository: await getRepository(KpiOrgScope),\n searchables: ['org', 'scope01', 'scope02', 'scope03', 'scope04', 'scope05']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"kpi\", privilege: \"query\", domainOwnerGranted: true, superUserGranted: true)')\n @Query(returns => [String], { description: 'Get distinct values for a specific scope field' })\n async kpiOrgScopeValues(\n @Arg('scopeField', { description: 'Scope field to get distinct values from' })\n scopeField: 'scope01' | 'scope02' | 'scope03' | 'scope04' | 'scope05',\n @Ctx() context: ResolverContext,\n @Arg('searchTerm', { nullable: true, description: 'Optional search term to filter values' }) searchTerm?: string\n ): Promise<string[]> {\n const { domain } = context.state\n\n const queryBuilder = getRepository(KpiOrgScope)\n .createQueryBuilder('orgScope')\n .select(`DISTINCT orgScope.${scopeField}`, 'value')\n .where('orgScope.domain_id = :domainId', { domainId: domain.id })\n .andWhere(`orgScope.${scopeField} IS NOT NULL`)\n .andWhere(`orgScope.${scopeField} != ''`)\n .andWhere('orgScope.active = true')\n\n if (searchTerm) {\n queryBuilder.andWhere(`orgScope.${scopeField} ILIKE :searchTerm`, {\n searchTerm: `%${searchTerm}%`\n })\n }\n\n const results = await queryBuilder.getRawMany()\n return results.map(r => r.value).filter(v => v)\n }\n\n @Directive('@privilege(category: \"kpi\", privilege: \"query\", domainOwnerGranted: true, superUserGranted: true)')\n @Query(returns => [String], { description: 'Get distinct org values' })\n async kpiOrgValues(\n @Ctx() context: ResolverContext,\n @Arg('searchTerm', { nullable: true, description: 'Optional search term to filter org values' }) searchTerm?: string\n ): Promise<string[]> {\n const { domain } = context.state\n\n const queryBuilder = getRepository(KpiOrgScope)\n .createQueryBuilder('orgScope')\n .select('DISTINCT orgScope.org', 'value')\n .where('orgScope.domain_id = :domainId', { domainId: domain.id })\n .andWhere('orgScope.active = true')\n\n if (searchTerm) {\n queryBuilder.andWhere('orgScope.org ILIKE :searchTerm', {\n searchTerm: `%${searchTerm}%`\n })\n }\n\n const results = await queryBuilder.getRawMany()\n return results.map(r => r.value)\n }\n\n @Directive('@privilege(category: \"kpi\", privilege: \"query\", domainOwnerGranted: true, superUserGranted: true)')\n @Query(returns => KpiOrgScope, { nullable: true, description: 'Find org-scope mapping by org identifier' })\n async kpiOrgScopeByOrg(\n @Arg('org', { description: 'Organization identifier to search for' }) org: string,\n @Ctx() context: ResolverContext\n ): Promise<KpiOrgScope | undefined> {\n const { domain } = context.state\n\n return await getRepository(KpiOrgScope).findOne({\n where: { domain: { id: domain.id }, org }\n })\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() kpiOrgScope: KpiOrgScope): Promise<Domain> {\n return kpiOrgScope.domainId && (await getRepository(Domain).findOneBy({ id: kpiOrgScope.domainId }))\n }\n\n @FieldResolver(type => User)\n async creator(@Root() kpiOrgScope: KpiOrgScope): Promise<User> {\n return kpiOrgScope.creatorId && (await getRepository(User).findOneBy({ id: kpiOrgScope.creatorId }))\n }\n\n @FieldResolver(type => User)\n async updater(@Root() kpiOrgScope: KpiOrgScope): Promise<User> {\n return kpiOrgScope.updaterId && (await getRepository(User).findOneBy({ id: kpiOrgScope.updaterId }))\n }\n}\n"]}
@@ -0,0 +1,26 @@
1
+ import { KpiOrgScope } from './kpi-org-scope';
2
+ export declare class NewKpiOrgScope {
3
+ org: string;
4
+ scope01?: string;
5
+ scope02?: string;
6
+ scope03?: string;
7
+ scope04?: string;
8
+ scope05?: string;
9
+ displayName?: string;
10
+ active?: boolean;
11
+ }
12
+ export declare class KpiOrgScopePatch {
13
+ id: string;
14
+ org?: string;
15
+ scope01?: string;
16
+ scope02?: string;
17
+ scope03?: string;
18
+ scope04?: string;
19
+ scope05?: string;
20
+ displayName?: string;
21
+ active?: boolean;
22
+ }
23
+ export declare class KpiOrgScopeList {
24
+ items: KpiOrgScope[];
25
+ total: number;
26
+ }
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KpiOrgScopeList = exports.KpiOrgScopePatch = exports.NewKpiOrgScope = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const type_graphql_1 = require("type-graphql");
6
+ const kpi_org_scope_1 = require("./kpi-org-scope");
7
+ let NewKpiOrgScope = class NewKpiOrgScope {
8
+ };
9
+ exports.NewKpiOrgScope = NewKpiOrgScope;
10
+ tslib_1.__decorate([
11
+ (0, type_graphql_1.Field)({ description: 'Organizational unit identifier' }),
12
+ tslib_1.__metadata("design:type", String)
13
+ ], NewKpiOrgScope.prototype, "org", void 0);
14
+ tslib_1.__decorate([
15
+ (0, type_graphql_1.Field)({ nullable: true, description: 'First scope dimension' }),
16
+ tslib_1.__metadata("design:type", String)
17
+ ], NewKpiOrgScope.prototype, "scope01", void 0);
18
+ tslib_1.__decorate([
19
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Second scope dimension' }),
20
+ tslib_1.__metadata("design:type", String)
21
+ ], NewKpiOrgScope.prototype, "scope02", void 0);
22
+ tslib_1.__decorate([
23
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Third scope dimension' }),
24
+ tslib_1.__metadata("design:type", String)
25
+ ], NewKpiOrgScope.prototype, "scope03", void 0);
26
+ tslib_1.__decorate([
27
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Fourth scope dimension' }),
28
+ tslib_1.__metadata("design:type", String)
29
+ ], NewKpiOrgScope.prototype, "scope04", void 0);
30
+ tslib_1.__decorate([
31
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Fifth scope dimension' }),
32
+ tslib_1.__metadata("design:type", String)
33
+ ], NewKpiOrgScope.prototype, "scope05", void 0);
34
+ tslib_1.__decorate([
35
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Human-readable name or description' }),
36
+ tslib_1.__metadata("design:type", String)
37
+ ], NewKpiOrgScope.prototype, "displayName", void 0);
38
+ tslib_1.__decorate([
39
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Active status' }),
40
+ tslib_1.__metadata("design:type", Boolean)
41
+ ], NewKpiOrgScope.prototype, "active", void 0);
42
+ exports.NewKpiOrgScope = NewKpiOrgScope = tslib_1.__decorate([
43
+ (0, type_graphql_1.InputType)({ description: 'Input type for creating a new KPI org-scope mapping' })
44
+ ], NewKpiOrgScope);
45
+ let KpiOrgScopePatch = class KpiOrgScopePatch {
46
+ };
47
+ exports.KpiOrgScopePatch = KpiOrgScopePatch;
48
+ tslib_1.__decorate([
49
+ (0, type_graphql_1.Field)(type => type_graphql_1.ID, { description: 'ID of the org-scope mapping to update' }),
50
+ tslib_1.__metadata("design:type", String)
51
+ ], KpiOrgScopePatch.prototype, "id", void 0);
52
+ tslib_1.__decorate([
53
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Organizational unit identifier' }),
54
+ tslib_1.__metadata("design:type", String)
55
+ ], KpiOrgScopePatch.prototype, "org", void 0);
56
+ tslib_1.__decorate([
57
+ (0, type_graphql_1.Field)({ nullable: true, description: 'First scope dimension' }),
58
+ tslib_1.__metadata("design:type", String)
59
+ ], KpiOrgScopePatch.prototype, "scope01", void 0);
60
+ tslib_1.__decorate([
61
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Second scope dimension' }),
62
+ tslib_1.__metadata("design:type", String)
63
+ ], KpiOrgScopePatch.prototype, "scope02", void 0);
64
+ tslib_1.__decorate([
65
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Third scope dimension' }),
66
+ tslib_1.__metadata("design:type", String)
67
+ ], KpiOrgScopePatch.prototype, "scope03", void 0);
68
+ tslib_1.__decorate([
69
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Fourth scope dimension' }),
70
+ tslib_1.__metadata("design:type", String)
71
+ ], KpiOrgScopePatch.prototype, "scope04", void 0);
72
+ tslib_1.__decorate([
73
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Fifth scope dimension' }),
74
+ tslib_1.__metadata("design:type", String)
75
+ ], KpiOrgScopePatch.prototype, "scope05", void 0);
76
+ tslib_1.__decorate([
77
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Human-readable name or description' }),
78
+ tslib_1.__metadata("design:type", String)
79
+ ], KpiOrgScopePatch.prototype, "displayName", void 0);
80
+ tslib_1.__decorate([
81
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Active status' }),
82
+ tslib_1.__metadata("design:type", Boolean)
83
+ ], KpiOrgScopePatch.prototype, "active", void 0);
84
+ exports.KpiOrgScopePatch = KpiOrgScopePatch = tslib_1.__decorate([
85
+ (0, type_graphql_1.InputType)({ description: 'Input type for updating an existing KPI org-scope mapping' })
86
+ ], KpiOrgScopePatch);
87
+ let KpiOrgScopeList = class KpiOrgScopeList {
88
+ };
89
+ exports.KpiOrgScopeList = KpiOrgScopeList;
90
+ tslib_1.__decorate([
91
+ (0, type_graphql_1.Field)(type => [kpi_org_scope_1.KpiOrgScope], { description: 'Array of KPI org-scope mappings' }),
92
+ tslib_1.__metadata("design:type", Array)
93
+ ], KpiOrgScopeList.prototype, "items", void 0);
94
+ tslib_1.__decorate([
95
+ (0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'Total count of items' }),
96
+ tslib_1.__metadata("design:type", Number)
97
+ ], KpiOrgScopeList.prototype, "total", void 0);
98
+ exports.KpiOrgScopeList = KpiOrgScopeList = tslib_1.__decorate([
99
+ (0, type_graphql_1.ObjectType)({ description: 'List of KPI org-scope mappings with pagination' })
100
+ ], KpiOrgScopeList);
101
+ //# sourceMappingURL=kpi-org-scope-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kpi-org-scope-type.js","sourceRoot":"","sources":["../../../server/service/kpi-org-scope/kpi-org-scope-type.ts"],"names":[],"mappings":"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","sourcesContent":["import { InputType, Field, ID, ObjectType, Int } from 'type-graphql'\nimport { KpiOrgScope } from './kpi-org-scope'\n\n@InputType({ description: 'Input type for creating a new KPI org-scope mapping' })\nexport class NewKpiOrgScope {\n @Field({ description: 'Organizational unit identifier' })\n org: string\n\n @Field({ nullable: true, description: 'First scope dimension' })\n scope01?: string\n\n @Field({ nullable: true, description: 'Second scope dimension' })\n scope02?: string\n\n @Field({ nullable: true, description: 'Third scope dimension' })\n scope03?: string\n\n @Field({ nullable: true, description: 'Fourth scope dimension' })\n scope04?: string\n\n @Field({ nullable: true, description: 'Fifth scope dimension' })\n scope05?: string\n\n @Field({ nullable: true, description: 'Human-readable name or description' })\n displayName?: string\n\n @Field({ nullable: true, description: 'Active status' })\n active?: boolean\n}\n\n@InputType({ description: 'Input type for updating an existing KPI org-scope mapping' })\nexport class KpiOrgScopePatch {\n @Field(type => ID, { description: 'ID of the org-scope mapping to update' })\n id: string\n\n @Field({ nullable: true, description: 'Organizational unit identifier' })\n org?: string\n\n @Field({ nullable: true, description: 'First scope dimension' })\n scope01?: string\n\n @Field({ nullable: true, description: 'Second scope dimension' })\n scope02?: string\n\n @Field({ nullable: true, description: 'Third scope dimension' })\n scope03?: string\n\n @Field({ nullable: true, description: 'Fourth scope dimension' })\n scope04?: string\n\n @Field({ nullable: true, description: 'Fifth scope dimension' })\n scope05?: string\n\n @Field({ nullable: true, description: 'Human-readable name or description' })\n displayName?: string\n\n @Field({ nullable: true, description: 'Active status' })\n active?: boolean\n}\n\n@ObjectType({ description: 'List of KPI org-scope mappings with pagination' })\nexport class KpiOrgScopeList {\n @Field(type => [KpiOrgScope], { description: 'Array of KPI org-scope mappings' })\n items: KpiOrgScope[]\n\n @Field(type => Int, { description: 'Total count of items' })\n total: number\n}\n"]}
@@ -0,0 +1,26 @@
1
+ import { EntityManager } from 'typeorm';
2
+ import { Domain } from '@things-factory/shell';
3
+ import { User } from '@things-factory/auth-base';
4
+ export declare class KpiOrgScope {
5
+ readonly id: string;
6
+ domain?: Domain;
7
+ domainId?: string;
8
+ entityType: string;
9
+ entityId: string;
10
+ entityName: string;
11
+ org?: string;
12
+ scope01?: string;
13
+ scope02?: string;
14
+ scope03?: string;
15
+ scope04?: string;
16
+ scope05?: string;
17
+ createdAt?: Date;
18
+ updatedAt?: Date;
19
+ creator?: User;
20
+ creatorId?: string;
21
+ updater?: User;
22
+ updaterId?: string;
23
+ getReferencedEntity(entityManager: EntityManager): Promise<any>;
24
+ validateEntityReference(entityManager: EntityManager): Promise<boolean>;
25
+ get displayName(): string;
26
+ }