@hitsoft/kadooglu-keops 0.0.1

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 (381) hide show
  1. package/README.md +24 -0
  2. package/config/enums/index.d.ts +1 -0
  3. package/config/enums/route-names.d.ts +23 -0
  4. package/config/index.d.ts +5 -0
  5. package/config/kadooglu-keops-config.module.d.ts +8 -0
  6. package/config/providers/index.d.ts +1 -0
  7. package/config/providers/route.provider.d.ts +8 -0
  8. package/config/public-api.d.ts +3 -0
  9. package/esm2020/config/enums/index.mjs +2 -0
  10. package/esm2020/config/enums/route-names.mjs +2 -0
  11. package/esm2020/config/hitsoft-kadooglu-keops-config.mjs +5 -0
  12. package/esm2020/config/kadooglu-keops-config.module.mjs +18 -0
  13. package/esm2020/config/providers/index.mjs +2 -0
  14. package/esm2020/config/providers/route.provider.mjs +212 -0
  15. package/esm2020/config/public-api.mjs +4 -0
  16. package/esm2020/hitsoft-kadooglu-keops.mjs +5 -0
  17. package/esm2020/lib/features/container-definitions/components/container-definition-form.component.mjs +81 -0
  18. package/esm2020/lib/features/container-definitions/components/container-definitions.component.mjs +69 -0
  19. package/esm2020/lib/features/container-definitions/hit-container-definitions-routing.module.mjs +29 -0
  20. package/esm2020/lib/features/container-definitions/hit-container-definitions.module.mjs +58 -0
  21. package/esm2020/lib/features/container-loading-counts/components/container-loading-counts.component.mjs +104 -0
  22. package/esm2020/lib/features/container-loading-counts/hit-container-loading-counts-routing.module.mjs +29 -0
  23. package/esm2020/lib/features/container-loading-counts/hit-container-loading-counts.module.mjs +49 -0
  24. package/esm2020/lib/features/container-loading-scenarios/components/container-loading-scenarios.component.mjs +106 -0
  25. package/esm2020/lib/features/container-loading-scenarios/container-loading-scenario-l10n-helper.mjs +10 -0
  26. package/esm2020/lib/features/container-loading-scenarios/hit-container-loading-scenarios-routing.module.mjs +29 -0
  27. package/esm2020/lib/features/container-loading-scenarios/hit-container-loading-scenarios.module.mjs +49 -0
  28. package/esm2020/lib/features/container-mix-types/components/container-mix-type-form.component.mjs +78 -0
  29. package/esm2020/lib/features/container-mix-types/components/container-mix-types.component.mjs +69 -0
  30. package/esm2020/lib/features/container-mix-types/hit-container-mix-types-routing.module.mjs +29 -0
  31. package/esm2020/lib/features/container-mix-types/hit-container-mix-types.module.mjs +58 -0
  32. package/esm2020/lib/features/container-pallet-capacities/components/container-pallet-capacities.component.mjs +95 -0
  33. package/esm2020/lib/features/container-pallet-capacities/components/container-pallet-capacity-form.component.mjs +91 -0
  34. package/esm2020/lib/features/container-pallet-capacities/hit-container-pallet-capacities-routing.module.mjs +29 -0
  35. package/esm2020/lib/features/container-pallet-capacities/hit-container-pallet-capacities.module.mjs +58 -0
  36. package/esm2020/lib/features/cost-calculation/components/cost-calculation-inputs.component.mjs +103 -0
  37. package/esm2020/lib/features/cost-calculation/components/cost-calculation-result-sum.component.mjs +36 -0
  38. package/esm2020/lib/features/cost-calculation/components/cost-calculation-results.component.mjs +32 -0
  39. package/esm2020/lib/features/cost-calculation/components/cost-calculation.component.mjs +167 -0
  40. package/esm2020/lib/features/cost-calculation/cost-calculation.models.mjs +2 -0
  41. package/esm2020/lib/features/cost-calculation/engine/currency.utils.mjs +21 -0
  42. package/esm2020/lib/features/cost-calculation/engine/formulas.mjs +55 -0
  43. package/esm2020/lib/features/cost-calculation/engine/index.mjs +4 -0
  44. package/esm2020/lib/features/cost-calculation/engine/item-resolver.mjs +38 -0
  45. package/esm2020/lib/features/cost-calculation/engine/models.mjs +20 -0
  46. package/esm2020/lib/features/cost-calculation/engine/stage-builder.mjs +56 -0
  47. package/esm2020/lib/features/cost-calculation/hit-cost-calculation-routing.module.mjs +29 -0
  48. package/esm2020/lib/features/cost-calculation/hit-cost-calculation.module.mjs +64 -0
  49. package/esm2020/lib/features/cost-groups/components/cost-group-form.component.mjs +121 -0
  50. package/esm2020/lib/features/cost-groups/components/cost-groups.component.mjs +92 -0
  51. package/esm2020/lib/features/cost-groups/cost-group-role-l10n-helper.mjs +20 -0
  52. package/esm2020/lib/features/cost-groups/hit-cost-groups-routing.module.mjs +29 -0
  53. package/esm2020/lib/features/cost-groups/hit-cost-groups.module.mjs +58 -0
  54. package/esm2020/lib/features/cost-items/components/cost-item-form.component.mjs +88 -0
  55. package/esm2020/lib/features/cost-items/components/cost-items.component.mjs +73 -0
  56. package/esm2020/lib/features/cost-items/cost-item-l10n-helper.mjs +7 -0
  57. package/esm2020/lib/features/cost-items/hit-cost-items-routing.module.mjs +29 -0
  58. package/esm2020/lib/features/cost-items/hit-cost-items.module.mjs +58 -0
  59. package/esm2020/lib/features/cost-parameter-categories/components/cost-parameter-categories.component.mjs +73 -0
  60. package/esm2020/lib/features/cost-parameter-categories/components/cost-parameter-category-form.component.mjs +93 -0
  61. package/esm2020/lib/features/cost-parameter-categories/cost-parameter-category-l10n-helper.mjs +9 -0
  62. package/esm2020/lib/features/cost-parameter-categories/hit-cost-parameter-categories-routing.module.mjs +29 -0
  63. package/esm2020/lib/features/cost-parameter-categories/hit-cost-parameter-categories.module.mjs +58 -0
  64. package/esm2020/lib/features/cost-parameters/components/cost-parameter-form.component.mjs +131 -0
  65. package/esm2020/lib/features/cost-parameters/components/cost-parameters.component.mjs +93 -0
  66. package/esm2020/lib/features/cost-parameters/cost-parameter-l10n-helper.mjs +7 -0
  67. package/esm2020/lib/features/cost-parameters/hit-cost-parameters-routing.module.mjs +29 -0
  68. package/esm2020/lib/features/cost-parameters/hit-cost-parameters.module.mjs +61 -0
  69. package/esm2020/lib/features/exchange-rates/components/central-bank-rates.component.mjs +17 -0
  70. package/esm2020/lib/features/exchange-rates/components/exchange-rates.component.mjs +30 -0
  71. package/esm2020/lib/features/exchange-rates/components/fixed-rates-form.component.mjs +84 -0
  72. package/esm2020/lib/features/exchange-rates/hit-exchange-rates-routing.module.mjs +29 -0
  73. package/esm2020/lib/features/exchange-rates/hit-exchange-rates.module.mjs +65 -0
  74. package/esm2020/lib/features/index.mjs +15 -0
  75. package/esm2020/lib/features/packaging-materials/components/packaging-material-form.component.mjs +87 -0
  76. package/esm2020/lib/features/packaging-materials/components/packaging-materials.component.mjs +69 -0
  77. package/esm2020/lib/features/packaging-materials/hit-packaging-materials-routing.module.mjs +29 -0
  78. package/esm2020/lib/features/packaging-materials/hit-packaging-materials.module.mjs +58 -0
  79. package/esm2020/lib/features/packaging-prices/components/packaging-price-form.component.mjs +154 -0
  80. package/esm2020/lib/features/packaging-prices/components/packaging-price-lines.component.mjs +89 -0
  81. package/esm2020/lib/features/packaging-prices/components/packaging-prices.component.mjs +86 -0
  82. package/esm2020/lib/features/packaging-prices/hit-packaging-prices-routing.module.mjs +29 -0
  83. package/esm2020/lib/features/packaging-prices/hit-packaging-prices.module.mjs +71 -0
  84. package/esm2020/lib/features/packaging-prices/packaging-price-calculator.mjs +36 -0
  85. package/esm2020/lib/features/packaging-prices/packaging-price-excel.service.mjs +32 -0
  86. package/esm2020/lib/features/packaging-prices/packaging-price-form.factory.mjs +31 -0
  87. package/esm2020/lib/features/packaging-prices/packaging-price-lines.builder.mjs +49 -0
  88. package/esm2020/lib/features/packaging-types/components/packaging-type-form.component.mjs +78 -0
  89. package/esm2020/lib/features/packaging-types/components/packaging-types.component.mjs +69 -0
  90. package/esm2020/lib/features/packaging-types/hit-packaging-types-routing.module.mjs +29 -0
  91. package/esm2020/lib/features/packaging-types/hit-packaging-types.module.mjs +58 -0
  92. package/esm2020/lib/features/pallet-definitions/components/pallet-definition-form.component.mjs +80 -0
  93. package/esm2020/lib/features/pallet-definitions/components/pallet-definitions.component.mjs +69 -0
  94. package/esm2020/lib/features/pallet-definitions/hit-pallet-definitions-routing.module.mjs +29 -0
  95. package/esm2020/lib/features/pallet-definitions/hit-pallet-definitions.module.mjs +58 -0
  96. package/esm2020/lib/features/price-parameter-types/components/price-parameter-type-form.component.mjs +79 -0
  97. package/esm2020/lib/features/price-parameter-types/components/price-parameter-types.component.mjs +69 -0
  98. package/esm2020/lib/features/price-parameter-types/hit-price-parameter-types-routing.module.mjs +29 -0
  99. package/esm2020/lib/features/price-parameter-types/hit-price-parameter-types.module.mjs +58 -0
  100. package/esm2020/lib/features/sap-sales-persons/components/sap-sales-person-form.component.mjs +69 -0
  101. package/esm2020/lib/features/sap-sales-persons/components/sap-sales-persons.component.mjs +53 -0
  102. package/esm2020/lib/features/sap-sales-persons/hit-sap-sales-persons-routing.module.mjs +29 -0
  103. package/esm2020/lib/features/sap-sales-persons/hit-sap-sales-persons.module.mjs +61 -0
  104. package/esm2020/lib/features/settings/components/cost-settings.component.mjs +48 -0
  105. package/esm2020/lib/kadooglu-keops-routing.module.mjs +53 -0
  106. package/esm2020/lib/kadooglu-keops.module.mjs +53 -0
  107. package/esm2020/lib/proxy/container-definitions/dtos/index.mjs +2 -0
  108. package/esm2020/lib/proxy/container-definitions/dtos/models.mjs +2 -0
  109. package/esm2020/lib/proxy/container-definitions/index.mjs +3 -0
  110. package/esm2020/lib/proxy/container-loading-counts/dtos/index.mjs +2 -0
  111. package/esm2020/lib/proxy/container-loading-counts/dtos/models.mjs +2 -0
  112. package/esm2020/lib/proxy/container-loading-counts/index.mjs +4 -0
  113. package/esm2020/lib/proxy/container-loading-counts/loading-target-kind.enum.mjs +8 -0
  114. package/esm2020/lib/proxy/container-loading-scenarios/dtos/index.mjs +2 -0
  115. package/esm2020/lib/proxy/container-loading-scenarios/dtos/models.mjs +2 -0
  116. package/esm2020/lib/proxy/container-loading-scenarios/index.mjs +4 -0
  117. package/esm2020/lib/proxy/container-loading-scenarios/pallet-status.enum.mjs +8 -0
  118. package/esm2020/lib/proxy/container-mix-types/dtos/index.mjs +2 -0
  119. package/esm2020/lib/proxy/container-mix-types/dtos/models.mjs +2 -0
  120. package/esm2020/lib/proxy/container-mix-types/index.mjs +3 -0
  121. package/esm2020/lib/proxy/container-pallet-capacities/dtos/index.mjs +2 -0
  122. package/esm2020/lib/proxy/container-pallet-capacities/dtos/models.mjs +2 -0
  123. package/esm2020/lib/proxy/container-pallet-capacities/index.mjs +3 -0
  124. package/esm2020/lib/proxy/controllers/container-definition.service.mjs +40 -0
  125. package/esm2020/lib/proxy/controllers/container-loading-count.service.mjs +31 -0
  126. package/esm2020/lib/proxy/controllers/container-loading-scenario.service.mjs +27 -0
  127. package/esm2020/lib/proxy/controllers/container-mix-type.service.mjs +40 -0
  128. package/esm2020/lib/proxy/controllers/container-pallet-capacity.service.mjs +40 -0
  129. package/esm2020/lib/proxy/controllers/cost-group.service.mjs +40 -0
  130. package/esm2020/lib/proxy/controllers/cost-item.service.mjs +40 -0
  131. package/esm2020/lib/proxy/controllers/cost-parameter-category.service.mjs +40 -0
  132. package/esm2020/lib/proxy/controllers/cost-parameter.service.mjs +40 -0
  133. package/esm2020/lib/proxy/controllers/cost-settings.service.mjs +27 -0
  134. package/esm2020/lib/proxy/controllers/exchange-rate.service.mjs +27 -0
  135. package/esm2020/lib/proxy/controllers/index.mjs +19 -0
  136. package/esm2020/lib/proxy/controllers/item.service.mjs +23 -0
  137. package/esm2020/lib/proxy/controllers/packaging-material.service.mjs +40 -0
  138. package/esm2020/lib/proxy/controllers/packaging-price.service.mjs +55 -0
  139. package/esm2020/lib/proxy/controllers/packaging-type.service.mjs +40 -0
  140. package/esm2020/lib/proxy/controllers/pallet-definition.service.mjs +40 -0
  141. package/esm2020/lib/proxy/controllers/price-parameter-type.service.mjs +40 -0
  142. package/esm2020/lib/proxy/controllers/sap-sales-person.service.mjs +27 -0
  143. package/esm2020/lib/proxy/cost-groups/cost-group-role.enum.mjs +10 -0
  144. package/esm2020/lib/proxy/cost-groups/dtos/index.mjs +2 -0
  145. package/esm2020/lib/proxy/cost-groups/dtos/models.mjs +2 -0
  146. package/esm2020/lib/proxy/cost-groups/index.mjs +4 -0
  147. package/esm2020/lib/proxy/cost-items/cost-item-calculation-type.enum.mjs +9 -0
  148. package/esm2020/lib/proxy/cost-items/cost-item-system-code.enum.mjs +20 -0
  149. package/esm2020/lib/proxy/cost-items/dtos/index.mjs +2 -0
  150. package/esm2020/lib/proxy/cost-items/dtos/models.mjs +2 -0
  151. package/esm2020/lib/proxy/cost-items/index.mjs +5 -0
  152. package/esm2020/lib/proxy/cost-parameter-categories/cost-parameter-category-parent-code.enum.mjs +11 -0
  153. package/esm2020/lib/proxy/cost-parameter-categories/dtos/index.mjs +2 -0
  154. package/esm2020/lib/proxy/cost-parameter-categories/dtos/models.mjs +2 -0
  155. package/esm2020/lib/proxy/cost-parameter-categories/index.mjs +4 -0
  156. package/esm2020/lib/proxy/cost-parameters/cost-parameter-status.enum.mjs +9 -0
  157. package/esm2020/lib/proxy/cost-parameters/dtos/index.mjs +2 -0
  158. package/esm2020/lib/proxy/cost-parameters/dtos/models.mjs +2 -0
  159. package/esm2020/lib/proxy/cost-parameters/index.mjs +4 -0
  160. package/esm2020/lib/proxy/currencies/currency.enum.mjs +9 -0
  161. package/esm2020/lib/proxy/currencies/index.mjs +2 -0
  162. package/esm2020/lib/proxy/exchange-rates/dtos/index.mjs +2 -0
  163. package/esm2020/lib/proxy/exchange-rates/dtos/models.mjs +2 -0
  164. package/esm2020/lib/proxy/exchange-rates/exchange-rate-source.enum.mjs +8 -0
  165. package/esm2020/lib/proxy/exchange-rates/index.mjs +4 -0
  166. package/esm2020/lib/proxy/index.mjs +22 -0
  167. package/esm2020/lib/proxy/items/dtos/index.mjs +2 -0
  168. package/esm2020/lib/proxy/items/dtos/models.mjs +2 -0
  169. package/esm2020/lib/proxy/items/index.mjs +3 -0
  170. package/esm2020/lib/proxy/packaging-materials/dtos/index.mjs +2 -0
  171. package/esm2020/lib/proxy/packaging-materials/dtos/models.mjs +2 -0
  172. package/esm2020/lib/proxy/packaging-materials/index.mjs +3 -0
  173. package/esm2020/lib/proxy/packaging-prices/dtos/index.mjs +2 -0
  174. package/esm2020/lib/proxy/packaging-prices/dtos/models.mjs +2 -0
  175. package/esm2020/lib/proxy/packaging-prices/index.mjs +3 -0
  176. package/esm2020/lib/proxy/packaging-types/dtos/index.mjs +2 -0
  177. package/esm2020/lib/proxy/packaging-types/dtos/models.mjs +2 -0
  178. package/esm2020/lib/proxy/packaging-types/index.mjs +3 -0
  179. package/esm2020/lib/proxy/pallet-definitions/dtos/index.mjs +2 -0
  180. package/esm2020/lib/proxy/pallet-definitions/dtos/models.mjs +2 -0
  181. package/esm2020/lib/proxy/pallet-definitions/index.mjs +3 -0
  182. package/esm2020/lib/proxy/price-parameter-types/dtos/index.mjs +2 -0
  183. package/esm2020/lib/proxy/price-parameter-types/dtos/models.mjs +2 -0
  184. package/esm2020/lib/proxy/price-parameter-types/index.mjs +3 -0
  185. package/esm2020/lib/proxy/sales-persons/dtos/index.mjs +2 -0
  186. package/esm2020/lib/proxy/sales-persons/dtos/models.mjs +2 -0
  187. package/esm2020/lib/proxy/sales-persons/index.mjs +3 -0
  188. package/esm2020/lib/proxy/settings/index.mjs +2 -0
  189. package/esm2020/lib/proxy/settings/models.mjs +2 -0
  190. package/esm2020/lib/utils/currency.utils.mjs +8 -0
  191. package/esm2020/lib/utils/date.utils.mjs +12 -0
  192. package/esm2020/lib/utils/number.utils.mjs +9 -0
  193. package/esm2020/public-api.mjs +7 -0
  194. package/fesm2015/hitsoft-kadooglu-keops-config.mjs +235 -0
  195. package/fesm2015/hitsoft-kadooglu-keops-config.mjs.map +1 -0
  196. package/fesm2015/hitsoft-kadooglu-keops.mjs +5243 -0
  197. package/fesm2015/hitsoft-kadooglu-keops.mjs.map +1 -0
  198. package/fesm2020/hitsoft-kadooglu-keops-config.mjs +235 -0
  199. package/fesm2020/hitsoft-kadooglu-keops-config.mjs.map +1 -0
  200. package/fesm2020/hitsoft-kadooglu-keops.mjs +5196 -0
  201. package/fesm2020/hitsoft-kadooglu-keops.mjs.map +1 -0
  202. package/index.d.ts +5 -0
  203. package/lib/features/container-definitions/components/container-definition-form.component.d.ts +25 -0
  204. package/lib/features/container-definitions/components/container-definitions.component.d.ts +23 -0
  205. package/lib/features/container-definitions/hit-container-definitions-routing.module.d.ts +7 -0
  206. package/lib/features/container-definitions/hit-container-definitions.module.d.ts +18 -0
  207. package/lib/features/container-loading-counts/components/container-loading-counts.component.d.ts +29 -0
  208. package/lib/features/container-loading-counts/hit-container-loading-counts-routing.module.d.ts +7 -0
  209. package/lib/features/container-loading-counts/hit-container-loading-counts.module.d.ts +15 -0
  210. package/lib/features/container-loading-scenarios/components/container-loading-scenarios.component.d.ts +40 -0
  211. package/lib/features/container-loading-scenarios/container-loading-scenario-l10n-helper.d.ts +3 -0
  212. package/lib/features/container-loading-scenarios/hit-container-loading-scenarios-routing.module.d.ts +7 -0
  213. package/lib/features/container-loading-scenarios/hit-container-loading-scenarios.module.d.ts +15 -0
  214. package/lib/features/container-mix-types/components/container-mix-type-form.component.d.ts +25 -0
  215. package/lib/features/container-mix-types/components/container-mix-types.component.d.ts +23 -0
  216. package/lib/features/container-mix-types/hit-container-mix-types-routing.module.d.ts +7 -0
  217. package/lib/features/container-mix-types/hit-container-mix-types.module.d.ts +18 -0
  218. package/lib/features/container-pallet-capacities/components/container-pallet-capacities.component.d.ts +33 -0
  219. package/lib/features/container-pallet-capacities/components/container-pallet-capacity-form.component.d.ts +29 -0
  220. package/lib/features/container-pallet-capacities/hit-container-pallet-capacities-routing.module.d.ts +7 -0
  221. package/lib/features/container-pallet-capacities/hit-container-pallet-capacities.module.d.ts +18 -0
  222. package/lib/features/cost-calculation/components/cost-calculation-inputs.component.d.ts +43 -0
  223. package/lib/features/cost-calculation/components/cost-calculation-result-sum.component.d.ts +16 -0
  224. package/lib/features/cost-calculation/components/cost-calculation-results.component.d.ts +12 -0
  225. package/lib/features/cost-calculation/components/cost-calculation.component.d.ts +51 -0
  226. package/lib/features/cost-calculation/cost-calculation.models.d.ts +18 -0
  227. package/lib/features/cost-calculation/engine/currency.utils.d.ts +4 -0
  228. package/lib/features/cost-calculation/engine/formulas.d.ts +7 -0
  229. package/lib/features/cost-calculation/engine/index.d.ts +3 -0
  230. package/lib/features/cost-calculation/engine/item-resolver.d.ts +4 -0
  231. package/lib/features/cost-calculation/engine/models.d.ts +64 -0
  232. package/lib/features/cost-calculation/engine/stage-builder.d.ts +4 -0
  233. package/lib/features/cost-calculation/hit-cost-calculation-routing.module.d.ts +7 -0
  234. package/lib/features/cost-calculation/hit-cost-calculation.module.d.ts +19 -0
  235. package/lib/features/cost-groups/components/cost-group-form.component.d.ts +33 -0
  236. package/lib/features/cost-groups/components/cost-groups.component.d.ts +31 -0
  237. package/lib/features/cost-groups/cost-group-role-l10n-helper.d.ts +7 -0
  238. package/lib/features/cost-groups/hit-cost-groups-routing.module.d.ts +7 -0
  239. package/lib/features/cost-groups/hit-cost-groups.module.d.ts +18 -0
  240. package/lib/features/cost-items/components/cost-item-form.component.d.ts +30 -0
  241. package/lib/features/cost-items/components/cost-items.component.d.ts +24 -0
  242. package/lib/features/cost-items/cost-item-l10n-helper.d.ts +2 -0
  243. package/lib/features/cost-items/hit-cost-items-routing.module.d.ts +7 -0
  244. package/lib/features/cost-items/hit-cost-items.module.d.ts +18 -0
  245. package/lib/features/cost-parameter-categories/components/cost-parameter-categories.component.d.ts +24 -0
  246. package/lib/features/cost-parameter-categories/components/cost-parameter-category-form.component.d.ts +29 -0
  247. package/lib/features/cost-parameter-categories/cost-parameter-category-l10n-helper.d.ts +2 -0
  248. package/lib/features/cost-parameter-categories/hit-cost-parameter-categories-routing.module.d.ts +7 -0
  249. package/lib/features/cost-parameter-categories/hit-cost-parameter-categories.module.d.ts +18 -0
  250. package/lib/features/cost-parameters/components/cost-parameter-form.component.d.ts +39 -0
  251. package/lib/features/cost-parameters/components/cost-parameters.component.d.ts +30 -0
  252. package/lib/features/cost-parameters/cost-parameter-l10n-helper.d.ts +2 -0
  253. package/lib/features/cost-parameters/hit-cost-parameters-routing.module.d.ts +7 -0
  254. package/lib/features/cost-parameters/hit-cost-parameters.module.d.ts +18 -0
  255. package/lib/features/exchange-rates/components/central-bank-rates.component.d.ts +7 -0
  256. package/lib/features/exchange-rates/components/exchange-rates.component.d.ts +13 -0
  257. package/lib/features/exchange-rates/components/fixed-rates-form.component.d.ts +26 -0
  258. package/lib/features/exchange-rates/hit-exchange-rates-routing.module.d.ts +7 -0
  259. package/lib/features/exchange-rates/hit-exchange-rates.module.d.ts +19 -0
  260. package/lib/features/index.d.ts +10 -0
  261. package/lib/features/packaging-materials/components/packaging-material-form.component.d.ts +29 -0
  262. package/lib/features/packaging-materials/components/packaging-materials.component.d.ts +23 -0
  263. package/lib/features/packaging-materials/hit-packaging-materials-routing.module.d.ts +7 -0
  264. package/lib/features/packaging-materials/hit-packaging-materials.module.d.ts +18 -0
  265. package/lib/features/packaging-prices/components/packaging-price-form.component.d.ts +44 -0
  266. package/lib/features/packaging-prices/components/packaging-price-lines.component.d.ts +26 -0
  267. package/lib/features/packaging-prices/components/packaging-prices.component.d.ts +27 -0
  268. package/lib/features/packaging-prices/hit-packaging-prices-routing.module.d.ts +7 -0
  269. package/lib/features/packaging-prices/hit-packaging-prices.module.d.ts +19 -0
  270. package/lib/features/packaging-prices/packaging-price-calculator.d.ts +8 -0
  271. package/lib/features/packaging-prices/packaging-price-excel.service.d.ts +15 -0
  272. package/lib/features/packaging-prices/packaging-price-form.factory.d.ts +5 -0
  273. package/lib/features/packaging-prices/packaging-price-lines.builder.d.ts +21 -0
  274. package/lib/features/packaging-types/components/packaging-type-form.component.d.ts +25 -0
  275. package/lib/features/packaging-types/components/packaging-types.component.d.ts +23 -0
  276. package/lib/features/packaging-types/hit-packaging-types-routing.module.d.ts +7 -0
  277. package/lib/features/packaging-types/hit-packaging-types.module.d.ts +18 -0
  278. package/lib/features/pallet-definitions/components/pallet-definition-form.component.d.ts +25 -0
  279. package/lib/features/pallet-definitions/components/pallet-definitions.component.d.ts +23 -0
  280. package/lib/features/pallet-definitions/hit-pallet-definitions-routing.module.d.ts +7 -0
  281. package/lib/features/pallet-definitions/hit-pallet-definitions.module.d.ts +18 -0
  282. package/lib/features/price-parameter-types/components/price-parameter-type-form.component.d.ts +25 -0
  283. package/lib/features/price-parameter-types/components/price-parameter-types.component.d.ts +23 -0
  284. package/lib/features/price-parameter-types/hit-price-parameter-types-routing.module.d.ts +7 -0
  285. package/lib/features/price-parameter-types/hit-price-parameter-types.module.d.ts +18 -0
  286. package/lib/features/sap-sales-persons/components/sap-sales-person-form.component.d.ts +26 -0
  287. package/lib/features/sap-sales-persons/components/sap-sales-persons.component.d.ts +24 -0
  288. package/lib/features/sap-sales-persons/hit-sap-sales-persons-routing.module.d.ts +7 -0
  289. package/lib/features/sap-sales-persons/hit-sap-sales-persons.module.d.ts +18 -0
  290. package/lib/features/settings/components/cost-settings.component.d.ts +17 -0
  291. package/lib/kadooglu-keops-routing.module.d.ts +7 -0
  292. package/lib/kadooglu-keops.module.d.ts +18 -0
  293. package/lib/proxy/container-definitions/dtos/index.d.ts +1 -0
  294. package/lib/proxy/container-definitions/dtos/models.d.ts +22 -0
  295. package/lib/proxy/container-definitions/index.d.ts +2 -0
  296. package/lib/proxy/container-loading-counts/dtos/index.d.ts +1 -0
  297. package/lib/proxy/container-loading-counts/dtos/models.d.ts +23 -0
  298. package/lib/proxy/container-loading-counts/index.d.ts +3 -0
  299. package/lib/proxy/container-loading-counts/loading-target-kind.enum.d.ts +5 -0
  300. package/lib/proxy/container-loading-scenarios/dtos/index.d.ts +1 -0
  301. package/lib/proxy/container-loading-scenarios/dtos/models.d.ts +22 -0
  302. package/lib/proxy/container-loading-scenarios/index.d.ts +3 -0
  303. package/lib/proxy/container-loading-scenarios/pallet-status.enum.d.ts +5 -0
  304. package/lib/proxy/container-mix-types/dtos/index.d.ts +1 -0
  305. package/lib/proxy/container-mix-types/dtos/models.d.ts +13 -0
  306. package/lib/proxy/container-mix-types/index.d.ts +2 -0
  307. package/lib/proxy/container-pallet-capacities/dtos/index.d.ts +1 -0
  308. package/lib/proxy/container-pallet-capacities/dtos/models.d.ts +22 -0
  309. package/lib/proxy/container-pallet-capacities/index.d.ts +2 -0
  310. package/lib/proxy/controllers/container-definition.service.d.ts +15 -0
  311. package/lib/proxy/controllers/container-loading-count.service.d.ts +13 -0
  312. package/lib/proxy/controllers/container-loading-scenario.service.d.ts +12 -0
  313. package/lib/proxy/controllers/container-mix-type.service.d.ts +15 -0
  314. package/lib/proxy/controllers/container-pallet-capacity.service.d.ts +15 -0
  315. package/lib/proxy/controllers/cost-group.service.d.ts +15 -0
  316. package/lib/proxy/controllers/cost-item.service.d.ts +15 -0
  317. package/lib/proxy/controllers/cost-parameter-category.service.d.ts +15 -0
  318. package/lib/proxy/controllers/cost-parameter.service.d.ts +15 -0
  319. package/lib/proxy/controllers/cost-settings.service.d.ts +12 -0
  320. package/lib/proxy/controllers/exchange-rate.service.d.ts +12 -0
  321. package/lib/proxy/controllers/index.d.ts +18 -0
  322. package/lib/proxy/controllers/item.service.d.ts +11 -0
  323. package/lib/proxy/controllers/packaging-material.service.d.ts +15 -0
  324. package/lib/proxy/controllers/packaging-price.service.d.ts +18 -0
  325. package/lib/proxy/controllers/packaging-type.service.d.ts +15 -0
  326. package/lib/proxy/controllers/pallet-definition.service.d.ts +15 -0
  327. package/lib/proxy/controllers/price-parameter-type.service.d.ts +15 -0
  328. package/lib/proxy/controllers/sap-sales-person.service.d.ts +12 -0
  329. package/lib/proxy/cost-groups/cost-group-role.enum.d.ts +7 -0
  330. package/lib/proxy/cost-groups/dtos/index.d.ts +1 -0
  331. package/lib/proxy/cost-groups/dtos/models.d.ts +21 -0
  332. package/lib/proxy/cost-groups/index.d.ts +3 -0
  333. package/lib/proxy/cost-items/cost-item-calculation-type.enum.d.ts +6 -0
  334. package/lib/proxy/cost-items/cost-item-system-code.enum.d.ts +17 -0
  335. package/lib/proxy/cost-items/dtos/index.d.ts +1 -0
  336. package/lib/proxy/cost-items/dtos/models.d.ts +20 -0
  337. package/lib/proxy/cost-items/index.d.ts +4 -0
  338. package/lib/proxy/cost-parameter-categories/cost-parameter-category-parent-code.enum.d.ts +8 -0
  339. package/lib/proxy/cost-parameter-categories/dtos/index.d.ts +1 -0
  340. package/lib/proxy/cost-parameter-categories/dtos/models.d.ts +14 -0
  341. package/lib/proxy/cost-parameter-categories/index.d.ts +3 -0
  342. package/lib/proxy/cost-parameters/cost-parameter-status.enum.d.ts +6 -0
  343. package/lib/proxy/cost-parameters/dtos/index.d.ts +1 -0
  344. package/lib/proxy/cost-parameters/dtos/models.d.ts +44 -0
  345. package/lib/proxy/cost-parameters/index.d.ts +3 -0
  346. package/lib/proxy/currencies/currency.enum.d.ts +6 -0
  347. package/lib/proxy/currencies/index.d.ts +1 -0
  348. package/lib/proxy/exchange-rates/dtos/index.d.ts +1 -0
  349. package/lib/proxy/exchange-rates/dtos/models.d.ts +17 -0
  350. package/lib/proxy/exchange-rates/exchange-rate-source.enum.d.ts +5 -0
  351. package/lib/proxy/exchange-rates/index.d.ts +3 -0
  352. package/lib/proxy/index.d.ts +21 -0
  353. package/lib/proxy/items/dtos/index.d.ts +1 -0
  354. package/lib/proxy/items/dtos/models.d.ts +4 -0
  355. package/lib/proxy/items/index.d.ts +2 -0
  356. package/lib/proxy/packaging-materials/dtos/index.d.ts +1 -0
  357. package/lib/proxy/packaging-materials/dtos/models.d.ts +14 -0
  358. package/lib/proxy/packaging-materials/index.d.ts +2 -0
  359. package/lib/proxy/packaging-prices/dtos/index.d.ts +1 -0
  360. package/lib/proxy/packaging-prices/dtos/models.d.ts +54 -0
  361. package/lib/proxy/packaging-prices/index.d.ts +2 -0
  362. package/lib/proxy/packaging-types/dtos/index.d.ts +1 -0
  363. package/lib/proxy/packaging-types/dtos/models.d.ts +13 -0
  364. package/lib/proxy/packaging-types/index.d.ts +2 -0
  365. package/lib/proxy/pallet-definitions/dtos/index.d.ts +1 -0
  366. package/lib/proxy/pallet-definitions/dtos/models.d.ts +19 -0
  367. package/lib/proxy/pallet-definitions/index.d.ts +2 -0
  368. package/lib/proxy/price-parameter-types/dtos/index.d.ts +1 -0
  369. package/lib/proxy/price-parameter-types/dtos/models.d.ts +19 -0
  370. package/lib/proxy/price-parameter-types/index.d.ts +2 -0
  371. package/lib/proxy/sales-persons/dtos/index.d.ts +1 -0
  372. package/lib/proxy/sales-persons/dtos/models.d.ts +10 -0
  373. package/lib/proxy/sales-persons/index.d.ts +2 -0
  374. package/lib/proxy/settings/index.d.ts +1 -0
  375. package/lib/proxy/settings/models.d.ts +3 -0
  376. package/lib/utils/currency.utils.d.ts +6 -0
  377. package/lib/utils/date.utils.d.ts +9 -0
  378. package/lib/utils/number.utils.d.ts +1 -0
  379. package/package.json +41 -0
  380. package/public-api.d.ts +3 -0
  381. package/src/lib/proxy/README.md +17 -0
@@ -0,0 +1,103 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { CostItemCalculationType } from '@proxy/cost-items/cost-item-calculation-type.enum';
3
+ import { Currency } from '@proxy/currencies/currency.enum';
4
+ import { CURRENCY_OPTIONS } from '../../../utils/currency.utils';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "@angular/forms";
8
+ import * as i3 from "devextreme-angular";
9
+ import * as i4 from "devextreme-angular/core";
10
+ import * as i5 from "@abp/ng.core";
11
+ export class CostCalculationInputsComponent {
12
+ constructor() {
13
+ this.RateType = CostItemCalculationType.Rate;
14
+ this.currencyOptions = CURRENCY_OPTIONS;
15
+ this.itemsDataSource = null;
16
+ this.parameters = [];
17
+ this.stages = [];
18
+ this.selectedItemCode = null;
19
+ this.selectedItemCodeChange = new EventEmitter();
20
+ this.selectedParameterCode = null;
21
+ this.selectedParameterCodeChange = new EventEmitter();
22
+ this.rawOilPrice = 0;
23
+ this.rawOilPriceChange = new EventEmitter();
24
+ this.rawOilCurrency = Currency.USD;
25
+ this.rawOilCurrencyChange = new EventEmitter();
26
+ this.systemRateUsd = 0;
27
+ this.systemRateEur = 0;
28
+ this.rateUsd = 0;
29
+ this.rateUsdChange = new EventEmitter();
30
+ this.rateEur = 0;
31
+ this.rateEurChange = new EventEmitter();
32
+ this.itemChange = new EventEmitter();
33
+ this.parameterChange = new EventEmitter();
34
+ this.recalc = new EventEmitter();
35
+ }
36
+ onItemSelected() {
37
+ this.selectedItemCodeChange.emit(this.selectedItemCode);
38
+ this.itemChange.emit();
39
+ }
40
+ onParameterSelected() {
41
+ this.selectedParameterCodeChange.emit(this.selectedParameterCode);
42
+ this.parameterChange.emit();
43
+ }
44
+ onRawOilPriceChange() { this.emitAndRecalc(this.rawOilPriceChange, this.rawOilPrice); }
45
+ onRawOilCurrencyChange() { this.emitAndRecalc(this.rawOilCurrencyChange, this.rawOilCurrency); }
46
+ onRateUsdChange() { this.emitAndRecalc(this.rateUsdChange, this.rateUsd); }
47
+ onRateEurChange() { this.emitAndRecalc(this.rateEurChange, this.rateEur); }
48
+ emitAndRecalc(emitter, value) {
49
+ emitter.emit(value);
50
+ this.recalc.emit();
51
+ }
52
+ }
53
+ CostCalculationInputsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationInputsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
54
+ CostCalculationInputsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CostCalculationInputsComponent, selector: "lib-cost-calculation-inputs", inputs: { itemsDataSource: "itemsDataSource", itemDisplayExpr: "itemDisplayExpr", parameters: "parameters", parameterDisplayExpr: "parameterDisplayExpr", stages: "stages", selectedItemCode: "selectedItemCode", selectedParameterCode: "selectedParameterCode", rawOilPrice: "rawOilPrice", rawOilCurrency: "rawOilCurrency", systemRateUsd: "systemRateUsd", systemRateEur: "systemRateEur", rateUsd: "rateUsd", rateEur: "rateEur" }, outputs: { selectedItemCodeChange: "selectedItemCodeChange", selectedParameterCodeChange: "selectedParameterCodeChange", rawOilPriceChange: "rawOilPriceChange", rawOilCurrencyChange: "rawOilCurrencyChange", rateUsdChange: "rateUsdChange", rateEurChange: "rateEurChange", itemChange: "itemChange", parameterChange: "parameterChange", recalc: "recalc" }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-header fw-bold\">{{ 'Keops::CostCalculations:Inputs' | abpLocalization }}</div>\r\n <div class=\"card-body pt-0\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:Item' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"itemsDataSource\"\r\n valueExpr=\"code\"\r\n [displayExpr]=\"itemDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [searchExpr]=\"['code', 'name']\"\r\n searchMode=\"contains\"\r\n [searchTimeout]=\"200\"\r\n [minSearchLength]=\"0\"\r\n [showDataBeforeSearch]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedItemCode\"\r\n (onValueChanged)=\"onItemSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n >\r\n <div *dxTemplate=\"let it of 'item'\" class=\"text-truncate\" [title]=\"itemDisplayExpr(it)\">\r\n {{ itemDisplayExpr(it) }}\r\n </div>\r\n </dx-select-box>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:CostParameter' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"parameters\"\r\n valueExpr=\"code\"\r\n [displayExpr]=\"parameterDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedParameterCode\"\r\n (onValueChanged)=\"onParameterSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n ></dx-select-box>\r\n </div>\r\n\r\n <div class=\"border rounded p-2 mb-3\">\r\n <div class=\"text-uppercase small mb-2\">{{ 'Keops::CostCalculations:Rates' | abpLocalization }}</div>\r\n\r\n <div class=\"row g-2 mb-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemUsdRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateUsd | number }}</div>\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemEurRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateEur | number }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row g-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:UsdRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateUsd\" (ngModelChange)=\"onRateUsdChange()\" />\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:EurRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateEur\" (ngModelChange)=\"onRateEurChange()\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:RawOilPrice' | abpLocalization }}</label>\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" [(ngModel)]=\"rawOilPrice\" (ngModelChange)=\"onRawOilPriceChange()\" />\r\n <select\r\n class=\"form-select flex-grow-0 w-auto\"\r\n [(ngModel)]=\"rawOilCurrency\"\r\n (ngModelChange)=\"onRawOilCurrencyChange()\"\r\n >\r\n <option *ngFor=\"let c of currencyOptions\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let stage of stages\">\r\n <div class=\"mb-2\">\r\n <div class=\"text-muted text-uppercase small fw-bold border-bottom pb-1\">\r\n <span>{{ stage.groupCode }} - </span>\r\n <span>{{ stage.groupName }}</span>\r\n </div>\r\n </div>\r\n <div class=\"mb-2\" *ngFor=\"let item of stage.items\">\r\n <label class=\"form-label small mb-1\">\r\n {{ item.costItemName }}\r\n </label>\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" [(ngModel)]=\"item.value\" (ngModelChange)=\"recalc.emit()\" />\r\n <span class=\"input-group-text\" *ngIf=\"item.calculationType === RateType\">%</span>\r\n <select\r\n *ngIf=\"item.calculationType !== RateType\"\r\n class=\"form-select flex-grow-0 w-auto\"\r\n [(ngModel)]=\"item.currency\"\r\n (ngModelChange)=\"recalc.emit()\"\r\n >\r\n <option *ngFor=\"let c of currencyOptions\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"mb-2 text-muted small fst-italic\" *ngIf=\"stage.items.length === 0\">\r\n \u2014 {{ 'Keops::CostCalculations:NoItems' | abpLocalization }} \u2014\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "directive", type: i4.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i5.LocalizationPipe, name: "abpLocalization" }] });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationInputsComponent, decorators: [{
56
+ type: Component,
57
+ args: [{ selector: 'lib-cost-calculation-inputs', template: "<div class=\"card\">\r\n <div class=\"card-header fw-bold\">{{ 'Keops::CostCalculations:Inputs' | abpLocalization }}</div>\r\n <div class=\"card-body pt-0\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:Item' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"itemsDataSource\"\r\n valueExpr=\"code\"\r\n [displayExpr]=\"itemDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [searchExpr]=\"['code', 'name']\"\r\n searchMode=\"contains\"\r\n [searchTimeout]=\"200\"\r\n [minSearchLength]=\"0\"\r\n [showDataBeforeSearch]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedItemCode\"\r\n (onValueChanged)=\"onItemSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n >\r\n <div *dxTemplate=\"let it of 'item'\" class=\"text-truncate\" [title]=\"itemDisplayExpr(it)\">\r\n {{ itemDisplayExpr(it) }}\r\n </div>\r\n </dx-select-box>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:CostParameter' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"parameters\"\r\n valueExpr=\"code\"\r\n [displayExpr]=\"parameterDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedParameterCode\"\r\n (onValueChanged)=\"onParameterSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n ></dx-select-box>\r\n </div>\r\n\r\n <div class=\"border rounded p-2 mb-3\">\r\n <div class=\"text-uppercase small mb-2\">{{ 'Keops::CostCalculations:Rates' | abpLocalization }}</div>\r\n\r\n <div class=\"row g-2 mb-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemUsdRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateUsd | number }}</div>\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemEurRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateEur | number }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row g-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:UsdRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateUsd\" (ngModelChange)=\"onRateUsdChange()\" />\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:EurRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateEur\" (ngModelChange)=\"onRateEurChange()\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:RawOilPrice' | abpLocalization }}</label>\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" [(ngModel)]=\"rawOilPrice\" (ngModelChange)=\"onRawOilPriceChange()\" />\r\n <select\r\n class=\"form-select flex-grow-0 w-auto\"\r\n [(ngModel)]=\"rawOilCurrency\"\r\n (ngModelChange)=\"onRawOilCurrencyChange()\"\r\n >\r\n <option *ngFor=\"let c of currencyOptions\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let stage of stages\">\r\n <div class=\"mb-2\">\r\n <div class=\"text-muted text-uppercase small fw-bold border-bottom pb-1\">\r\n <span>{{ stage.groupCode }} - </span>\r\n <span>{{ stage.groupName }}</span>\r\n </div>\r\n </div>\r\n <div class=\"mb-2\" *ngFor=\"let item of stage.items\">\r\n <label class=\"form-label small mb-1\">\r\n {{ item.costItemName }}\r\n </label>\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" [(ngModel)]=\"item.value\" (ngModelChange)=\"recalc.emit()\" />\r\n <span class=\"input-group-text\" *ngIf=\"item.calculationType === RateType\">%</span>\r\n <select\r\n *ngIf=\"item.calculationType !== RateType\"\r\n class=\"form-select flex-grow-0 w-auto\"\r\n [(ngModel)]=\"item.currency\"\r\n (ngModelChange)=\"recalc.emit()\"\r\n >\r\n <option *ngFor=\"let c of currencyOptions\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"mb-2 text-muted small fst-italic\" *ngIf=\"stage.items.length === 0\">\r\n \u2014 {{ 'Keops::CostCalculations:NoItems' | abpLocalization }} \u2014\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n" }]
58
+ }], propDecorators: { itemsDataSource: [{
59
+ type: Input
60
+ }], itemDisplayExpr: [{
61
+ type: Input
62
+ }], parameters: [{
63
+ type: Input
64
+ }], parameterDisplayExpr: [{
65
+ type: Input
66
+ }], stages: [{
67
+ type: Input
68
+ }], selectedItemCode: [{
69
+ type: Input
70
+ }], selectedItemCodeChange: [{
71
+ type: Output
72
+ }], selectedParameterCode: [{
73
+ type: Input
74
+ }], selectedParameterCodeChange: [{
75
+ type: Output
76
+ }], rawOilPrice: [{
77
+ type: Input
78
+ }], rawOilPriceChange: [{
79
+ type: Output
80
+ }], rawOilCurrency: [{
81
+ type: Input
82
+ }], rawOilCurrencyChange: [{
83
+ type: Output
84
+ }], systemRateUsd: [{
85
+ type: Input
86
+ }], systemRateEur: [{
87
+ type: Input
88
+ }], rateUsd: [{
89
+ type: Input
90
+ }], rateUsdChange: [{
91
+ type: Output
92
+ }], rateEur: [{
93
+ type: Input
94
+ }], rateEurChange: [{
95
+ type: Output
96
+ }], itemChange: [{
97
+ type: Output
98
+ }], parameterChange: [{
99
+ type: Output
100
+ }], recalc: [{
101
+ type: Output
102
+ }] } });
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1jYWxjdWxhdGlvbi1pbnB1dHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9jb3N0LWNhbGN1bGF0aW9uL2NvbXBvbmVudHMvY29zdC1jYWxjdWxhdGlvbi1pbnB1dHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9jb3N0LWNhbGN1bGF0aW9uL2NvbXBvbmVudHMvY29zdC1jYWxjdWxhdGlvbi1pbnB1dHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUl2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7QUFNakUsTUFBTSxPQUFPLDhCQUE4QjtJQUozQztRQUtXLGFBQVEsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUM7UUFDeEMsb0JBQWUsR0FBRyxnQkFBZ0IsQ0FBQztRQUVuQyxvQkFBZSxHQUFzQixJQUFJLENBQUM7UUFHMUMsZUFBVSxHQUF1QixFQUFFLENBQUM7UUFHcEMsV0FBTSxHQUEyQixFQUFFLENBQUM7UUFFcEMscUJBQWdCLEdBQWtCLElBQUksQ0FBQztRQUN0QywyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUU1RCwwQkFBcUIsR0FBa0IsSUFBSSxDQUFDO1FBQzNDLGdDQUEyQixHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBRWpFLGdC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cG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBEYXRhU291cmNlIGZyb20gJ2RldmV4dHJlbWUvZGF0YS9kYXRhX3NvdXJjZSc7XHJcbmltcG9ydCB7IENvc3RQYXJhbWV0ZXJEdG8gfSBmcm9tICdAcHJveHkvY29zdC1wYXJhbWV0ZXJzL2R0b3MnO1xyXG5pbXBvcnQgeyBJdGVtRHRvIH0gZnJvbSAnQHByb3h5L2l0ZW1zL2R0b3MnO1xyXG5pbXBvcnQgeyBDb3N0SXRlbUNhbGN1bGF0aW9uVHlwZSB9IGZyb20gJ0Bwcm94eS9jb3N0LWl0ZW1zL2Nvc3QtaXRlbS1jYWxjdWxhdGlvbi10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBDdXJyZW5jeSB9IGZyb20gJ0Bwcm94eS9jdXJyZW5jaWVzL2N1cnJlbmN5LmVudW0nO1xyXG5pbXBvcnQgeyBDb3N0Q2FsY3VsYXRpb25TdGFnZSB9IGZyb20gJy4uL2Nvc3QtY2FsY3VsYXRpb24ubW9kZWxzJztcclxuaW1wb3J0IHsgQ1VSUkVOQ1lfT1BUSU9OUyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2N1cnJlbmN5LnV0aWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNvc3QtY2FsY3VsYXRpb24taW5wdXRzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29zdC1jYWxjdWxhdGlvbi1pbnB1dHMuY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29zdENhbGN1bGF0aW9uSW5wdXRzQ29tcG9uZW50IHtcclxuICByZWFkb25seSBSYXRlVHlwZSA9IENvc3RJdGVtQ2FsY3VsYXRpb25UeXBlLlJhdGU7XHJcbiAgcmVhZG9ubHkgY3VycmVuY3lPcHRpb25zID0gQ1VSUkVOQ1lfT1BUSU9OUztcclxuXHJcbiAgQElucHV0KCkgaXRlbXNEYXRhU291cmNlOiBEYXRhU291cmNlIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgaXRlbURpc3BsYXlFeHByITogKGl0ZW06IEl0ZW1EdG8pID0+IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgcGFyYW1ldGVyczogQ29zdFBhcmFtZXRlckR0b1tdID0gW107XHJcbiAgQElucHV0KCkgcGFyYW1ldGVyRGlzcGxheUV4cHIhOiAocDogQ29zdFBhcmFtZXRlckR0bykgPT4gc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBzdGFnZXM6IENvc3RDYWxjdWxhdGlvblN0YWdlW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtQ29kZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbUNvZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkUGFyYW1ldGVyQ29kZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUGFyYW1ldGVyQ29kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4oKTtcclxuXHJcbiAgQElucHV0KCkgcmF3T2lsUHJpY2UgPSAwO1xyXG4gIEBPdXRwdXQoKSByYXdPaWxQcmljZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICBASW5wdXQoKSByYXdPaWxDdXJyZW5jeTogQ3VycmVuY3kgPSBDdXJyZW5jeS5VU0Q7XHJcbiAgQE91dHB1dCgpIHJhd09pbEN1cnJlbmN5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDdXJyZW5jeT4oKTtcclxuXHJcbiAgQElucHV0KCkgc3lzdGVtUmF0ZVVzZCA9IDA7XHJcbiAgQElucHV0KCkgc3lzdGVtUmF0ZUV1ciA9IDA7XHJcblxyXG4gIEBJbnB1dCgpIHJhdGVVc2QgPSAwO1xyXG4gIEBPdXRwdXQoKSByYXRlVXNkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHJhdGVFdXIgPSAwO1xyXG4gIEBPdXRwdXQoKSByYXRlRXVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBpdGVtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBwYXJhbWV0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIHJlY2FsYyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgb25JdGVtU2VsZWN0ZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbUNvZGVDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbUNvZGUpO1xyXG4gICAgdGhpcy5pdGVtQ2hhbmdlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uUGFyYW1ldGVyU2VsZWN0ZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUGFyYW1ldGVyQ29kZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRQYXJhbWV0ZXJDb2RlKTtcclxuICAgIHRoaXMucGFyYW1ldGVyQ2hhbmdlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uUmF3T2lsUHJpY2VDaGFuZ2UoKTogdm9pZCB7IHRoaXMuZW1pdEFuZFJlY2FsYyh0aGlzLnJhd09pbFByaWNlQ2hhbmdlLCB0aGlzLnJhd09pbFByaWNlKTsgfVxyXG4gIG9uUmF3T2lsQ3VycmVuY3lDaGFuZ2UoKTogdm9pZCB7IHRoaXMuZW1pdEFuZFJlY2FsYyh0aGlzLnJhd09pbEN1cnJlbmN5Q2hhbmdlLCB0aGlzLnJhd09pbEN1cnJlbmN5KTsgfVxyXG4gIG9uUmF0ZVVzZENoYW5nZSgpOiB2b2lkIHsgdGhpcy5lbWl0QW5kUmVjYWxjKHRoaXMucmF0ZVVzZENoYW5nZSwgdGhpcy5yYXRlVXNkKTsgfVxyXG4gIG9uUmF0ZUV1ckNoYW5nZSgpOiB2b2lkIHsgdGhpcy5lbWl0QW5kUmVjYWxjKHRoaXMucmF0ZUV1ckNoYW5nZSwgdGhpcy5yYXRlRXVyKTsgfVxyXG5cclxuICBwcml2YXRlIGVtaXRBbmRSZWNhbGM8VD4oZW1pdHRlcjogRXZlbnRFbWl0dGVyPFQ+LCB2YWx1ZTogVCk6IHZvaWQge1xyXG4gICAgZW1pdHRlci5lbWl0KHZhbHVlKTtcclxuICAgIHRoaXMucmVjYWxjLmVtaXQoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZnctYm9sZFwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpJbnB1dHMnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwdC0wXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOkl0ZW0nIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgPGR4LXNlbGVjdC1ib3hcclxuICAgICAgICBbZGF0YVNvdXJjZV09XCJpdGVtc0RhdGFTb3VyY2VcIlxyXG4gICAgICAgIHZhbHVlRXhwcj1cImNvZGVcIlxyXG4gICAgICAgIFtkaXNwbGF5RXhwcl09XCJpdGVtRGlzcGxheUV4cHJcIlxyXG4gICAgICAgIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgIFtzZWFyY2hFeHByXT1cIlsnY29kZScsICduYW1lJ11cIlxyXG4gICAgICAgIHNlYXJjaE1vZGU9XCJjb250YWluc1wiXHJcbiAgICAgICAgW3NlYXJjaFRpbWVvdXRdPVwiMjAwXCJcclxuICAgICAgICBbbWluU2VhcmNoTGVuZ3RoXT1cIjBcIlxyXG4gICAgICAgIFtzaG93RGF0YUJlZm9yZVNlYXJjaF09XCJ0cnVlXCJcclxuICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgIFsodmFsdWUpXT1cInNlbGVjdGVkSXRlbUNvZGVcIlxyXG4gICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJvbkl0ZW1TZWxlY3RlZCgpXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0tlb3BzOjpTZWxlY3RBbk9wdGlvbicgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBpdCBvZiAnaXRlbSdcIiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIiBbdGl0bGVdPVwiaXRlbURpc3BsYXlFeHByKGl0KVwiPlxyXG4gICAgICAgICAge3sgaXRlbURpc3BsYXlFeHByKGl0KSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2R4LXNlbGVjdC1ib3g+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOkNvc3RQYXJhbWV0ZXInIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgPGR4LXNlbGVjdC1ib3hcclxuICAgICAgICBbZGF0YVNvdXJjZV09XCJwYXJhbWV0ZXJzXCJcclxuICAgICAgICB2YWx1ZUV4cHI9XCJjb2RlXCJcclxuICAgICAgICBbZGlzcGxheUV4cHJdPVwicGFyYW1ldGVyRGlzcGxheUV4cHJcIlxyXG4gICAgICAgIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgIFtzaG93Q2xlYXJCdXR0b25dPVwidHJ1ZVwiXHJcbiAgICAgICAgWyh2YWx1ZSldPVwic2VsZWN0ZWRQYXJhbWV0ZXJDb2RlXCJcclxuICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwib25QYXJhbWV0ZXJTZWxlY3RlZCgpXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0tlb3BzOjpTZWxlY3RBbk9wdGlvbicgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICA+PC9keC1zZWxlY3QtYm94PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMiBtYi0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXVwcGVyY2FzZSBzbWFsbCBtYi0yXCI+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOlJhdGVzJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBnLTIgbWItMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBzbWFsbCBtYi0xXCI+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOlN5c3RlbVVzZFJhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+e3sgc3lzdGVtUmF0ZVVzZCB8IG51bWJlciB9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBzbWFsbCBtYi0xXCI+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOlN5c3RlbUV1clJhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+e3sgc3lzdGVtUmF0ZUV1ciB8IG51bWJlciB9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZy0yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIHNtYWxsIG1iLTFcIj57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6VXNkUmF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX08L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBbKG5nTW9kZWwpXT1cInJhdGVVc2RcIiAobmdNb2RlbENoYW5nZSk9XCJvblJhdGVVc2RDaGFuZ2UoKVwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIHNtYWxsIG1iLTFcIj57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6RXVyUmF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX08L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBbKG5nTW9kZWwpXT1cInJhdGVFdXJcIiAobmdNb2RlbENoYW5nZSk9XCJvblJhdGVFdXJDaGFuZ2UoKVwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpSYXdPaWxQcmljZScgfCBhYnBMb2NhbGl6YXRpb24gfX08L2xhYmVsPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJyYXdPaWxQcmljZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uUmF3T2lsUHJpY2VDaGFuZ2UoKVwiIC8+XHJcbiAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmbGV4LWdyb3ctMCB3LWF1dG9cIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJyYXdPaWxDdXJyZW5jeVwiXHJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblJhd09pbEN1cnJlbmN5Q2hhbmdlKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGMgb2YgY3VycmVuY3lPcHRpb25zXCIgW25nVmFsdWVdPVwiYy52YWx1ZVwiPnt7IGMubGFiZWwgfX08L29wdGlvbj5cclxuICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdGFnZSBvZiBzdGFnZXNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCB0ZXh0LXVwcGVyY2FzZSBzbWFsbCBmdy1ib2xkIGJvcmRlci1ib3R0b20gcGItMVwiPlxyXG4gICAgICAgICAgPHNwYW4+e3sgc3RhZ2UuZ3JvdXBDb2RlIH19IC0gPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4+e3sgc3RhZ2UuZ3JvdXBOYW1lIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzdGFnZS5pdGVtc1wiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgc21hbGwgbWItMVwiPlxyXG4gICAgICAgICAge3sgaXRlbS5jb3N0SXRlbU5hbWUgfX1cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiaXRlbS52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cInJlY2FsYy5lbWl0KClcIiAvPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCIgKm5nSWY9XCJpdGVtLmNhbGN1bGF0aW9uVHlwZSA9PT0gUmF0ZVR5cGVcIj4lPC9zcGFuPlxyXG4gICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAqbmdJZj1cIml0ZW0uY2FsY3VsYXRpb25UeXBlICE9PSBSYXRlVHlwZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZmxleC1ncm93LTAgdy1hdXRvXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmN1cnJlbmN5XCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicmVjYWxjLmVtaXQoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGMgb2YgY3VycmVuY3lPcHRpb25zXCIgW25nVmFsdWVdPVwiYy52YWx1ZVwiPnt7IGMubGFiZWwgfX08L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTIgdGV4dC1tdXRlZCBzbWFsbCBmc3QtaXRhbGljXCIgKm5nSWY9XCJzdGFnZS5pdGVtcy5sZW5ndGggPT09IDBcIj5cclxuICAgICAgICDigJQge3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOk5vSXRlbXMnIHwgYWJwTG9jYWxpemF0aW9uIH19IOKAlFxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,36 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { CostGroupRole } from '@proxy/cost-groups/cost-group-role.enum';
3
+ import { costGroupRoleTotalLabels } from '../../cost-groups/cost-group-role-l10n-helper';
4
+ import { addAmounts } from '../engine';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "@abp/ng.core";
8
+ export class CostCalculationResultSumComponent {
9
+ constructor() {
10
+ this.roleGroups = [];
11
+ }
12
+ get summaryCards() {
13
+ const production = this.roleGroups.find(g => g.role === CostGroupRole.Production)
14
+ ?.roleTotal ?? { try: 0, usd: 0, eur: 0 };
15
+ const operating = this.roleGroups.find(g => g.role === CostGroupRole.Operating)?.roleTotal ?? {
16
+ try: 0,
17
+ usd: 0,
18
+ eur: 0,
19
+ };
20
+ const total = addAmounts(...this.roleGroups.map(g => g.roleTotal));
21
+ return [
22
+ { label: costGroupRoleTotalLabels[CostGroupRole.Production], amount: production },
23
+ { label: costGroupRoleTotalLabels[CostGroupRole.Operating], amount: operating },
24
+ { label: 'Keops::CostCalculations:TotalSalePrice', amount: total, highlight: true },
25
+ ];
26
+ }
27
+ }
28
+ CostCalculationResultSumComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationResultSumComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
+ CostCalculationResultSumComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CostCalculationResultSumComponent, selector: "lib-cost-calculation-result-sum", inputs: { roleGroups: "roleGroups" }, ngImport: i0, template: "<div class=\"row mb-3\">\r\n <div class=\"col-md-4\" *ngFor=\"let card of summaryCards\">\r\n <div class=\"card h-100\" [class.border-warning]=\"card.highlight\">\r\n <div class=\"card-body\">\r\n <div class=\"text-muted text-uppercase small fw-bold\">\r\n {{ card.label | abpLocalization }}\r\n </div>\r\n <div class=\"fs-4 fw-bold\">$ {{ card.amount.usd | number }}</div>\r\n <div class=\"text-muted small\">\u20AC {{ card.amount.eur | number }}</div>\r\n <div class=\"text-muted small\">\u20BA {{ card.amount.try | number }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationResultSumComponent, decorators: [{
31
+ type: Component,
32
+ args: [{ selector: 'lib-cost-calculation-result-sum', template: "<div class=\"row mb-3\">\r\n <div class=\"col-md-4\" *ngFor=\"let card of summaryCards\">\r\n <div class=\"card h-100\" [class.border-warning]=\"card.highlight\">\r\n <div class=\"card-body\">\r\n <div class=\"text-muted text-uppercase small fw-bold\">\r\n {{ card.label | abpLocalization }}\r\n </div>\r\n <div class=\"fs-4 fw-bold\">$ {{ card.amount.usd | number }}</div>\r\n <div class=\"text-muted small\">\u20AC {{ card.amount.eur | number }}</div>\r\n <div class=\"text-muted small\">\u20BA {{ card.amount.try | number }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
33
+ }], propDecorators: { roleGroups: [{
34
+ type: Input
35
+ }] } });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1jYWxjdWxhdGlvbi1yZXN1bHQtc3VtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1LWtlb3BzL3NyYy9saWIvZmVhdHVyZXMvY29zdC1jYWxjdWxhdGlvbi9jb21wb25lbnRzL2Nvc3QtY2FsY3VsYXRpb24tcmVzdWx0LXN1bS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS1rZW9wcy9zcmMvbGliL2ZlYXR1cmVzL2Nvc3QtY2FsY3VsYXRpb24vY29tcG9uZW50cy9jb3N0LWNhbGN1bGF0aW9uLXJlc3VsdC1zdW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxXQUFXLENBQUM7Ozs7QUFNbEQsTUFBTSxPQUFPLGlDQUFpQztJQUo5QztRQUtXLGVBQVUsR0FBZ0IsRUFBRSxDQUFDO0tBaUJ2QztJQWZDLElBQUksWUFBWTtRQUNkLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsVUFBVSxDQUFDO1lBQy9FLEVBQUUsU0FBUyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM1QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFNBQVMsSUFBSTtZQUM1RixHQUFHLEVBQUUsQ0FBQztZQUNOLEdBQUcsRUFBRSxDQUFDO1lBQ04sR0FBRyxFQUFFLENBQUM7U0FDUCxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNuRSxPQUFPO1lBQ0wsRUFBRSxLQUFLLEVBQUUsd0JBQXdCLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUU7WUFDakYsRUFBRSxLQUFLLEVBQUUsd0JBQXdCLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7WUFDL0UsRUFBRSxLQUFLLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO1NBQ3BGLENBQUM7SUFDSixDQUFDOzs4SEFqQlUsaUNBQWlDO2tIQUFqQyxpQ0FBaUMsNkdDVDlDLG9vQkFjQTsyRkRMYSxpQ0FBaUM7a0JBSjdDLFNBQVM7K0JBQ0UsaUNBQWlDOzhCQUlsQyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb3N0R3JvdXBSb2xlIH0gZnJvbSAnQHByb3h5L2Nvc3QtZ3JvdXBzL2Nvc3QtZ3JvdXAtcm9sZS5lbnVtJztcclxuaW1wb3J0IHsgY29zdEdyb3VwUm9sZVRvdGFsTGFiZWxzIH0gZnJvbSAnLi4vLi4vY29zdC1ncm91cHMvY29zdC1ncm91cC1yb2xlLWwxMG4taGVscGVyJztcclxuaW1wb3J0IHsgYWRkQW1vdW50cywgUm9sZUdyb3VwIH0gZnJvbSAnLi4vZW5naW5lJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNvc3QtY2FsY3VsYXRpb24tcmVzdWx0LXN1bScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Nvc3QtY2FsY3VsYXRpb24tcmVzdWx0LXN1bS5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3N0Q2FsY3VsYXRpb25SZXN1bHRTdW1Db21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHJvbGVHcm91cHM6IFJvbGVHcm91cFtdID0gW107XHJcblxyXG4gIGdldCBzdW1tYXJ5Q2FyZHMoKSB7XHJcbiAgICBjb25zdCBwcm9kdWN0aW9uID0gdGhpcy5yb2xlR3JvdXBzLmZpbmQoZyA9PiBnLnJvbGUgPT09IENvc3RHcm91cFJvbGUuUHJvZHVjdGlvbilcclxuICAgICAgPy5yb2xlVG90YWwgPz8geyB0cnk6IDAsIHVzZDogMCwgZXVyOiAwIH07XHJcbiAgICBjb25zdCBvcGVyYXRpbmcgPSB0aGlzLnJvbGVHcm91cHMuZmluZChnID0+IGcucm9sZSA9PT0gQ29zdEdyb3VwUm9sZS5PcGVyYXRpbmcpPy5yb2xlVG90YWwgPz8ge1xyXG4gICAgICB0cnk6IDAsXHJcbiAgICAgIHVzZDogMCxcclxuICAgICAgZXVyOiAwLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHRvdGFsID0gYWRkQW1vdW50cyguLi50aGlzLnJvbGVHcm91cHMubWFwKGcgPT4gZy5yb2xlVG90YWwpKTtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIHsgbGFiZWw6IGNvc3RHcm91cFJvbGVUb3RhbExhYmVsc1tDb3N0R3JvdXBSb2xlLlByb2R1Y3Rpb25dLCBhbW91bnQ6IHByb2R1Y3Rpb24gfSxcclxuICAgICAgeyBsYWJlbDogY29zdEdyb3VwUm9sZVRvdGFsTGFiZWxzW0Nvc3RHcm91cFJvbGUuT3BlcmF0aW5nXSwgYW1vdW50OiBvcGVyYXRpbmcgfSxcclxuICAgICAgeyBsYWJlbDogJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOlRvdGFsU2FsZVByaWNlJywgYW1vdW50OiB0b3RhbCwgaGlnaGxpZ2h0OiB0cnVlIH0sXHJcbiAgICBdO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cclxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIiAqbmdGb3I9XCJsZXQgY2FyZCBvZiBzdW1tYXJ5Q2FyZHNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGgtMTAwXCIgW2NsYXNzLmJvcmRlci13YXJuaW5nXT1cImNhcmQuaGlnaGxpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCB0ZXh0LXVwcGVyY2FzZSBzbWFsbCBmdy1ib2xkXCI+XHJcbiAgICAgICAgICB7eyBjYXJkLmxhYmVsIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLTQgZnctYm9sZFwiPiQge3sgY2FyZC5hbW91bnQudXNkIHwgbnVtYmVyIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGxcIj7igqwge3sgY2FyZC5hbW91bnQuZXVyIHwgbnVtYmVyIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGxcIj7igroge3sgY2FyZC5hbW91bnQudHJ5IHwgbnVtYmVyIH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,32 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { costGroupRoleTotalLabels } from '../../cost-groups/cost-group-role-l10n-helper';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@abp/ng.core";
6
+ export class CostCalculationResultsComponent {
7
+ constructor() {
8
+ this.result = null;
9
+ this.roleGroups = [];
10
+ this.itemName = null;
11
+ this.rateUsd = 0;
12
+ this.rateEur = 0;
13
+ this.costGroupRoleTotalLabels = costGroupRoleTotalLabels;
14
+ }
15
+ }
16
+ CostCalculationResultsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationResultsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ CostCalculationResultsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CostCalculationResultsComponent, selector: "lib-cost-calculation-results", inputs: { result: "result", roleGroups: "roleGroups", itemName: "itemName", rateUsd: "rateUsd", rateEur: "rateEur" }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-header d-flex justify-content-between align-items-center\">\r\n <span class=\"fw-bold\">{{ 'Keops::CostCalculations:Results' | abpLocalization }}</span>\r\n <span class=\"text-muted small\">\r\n <span>{{ 'Keops::CostCalculations:UsdRate' | abpLocalization }}: <strong>{{ rateUsd | number }}</strong></span>\r\n <span class=\"mx-2\">\u00B7</span>\r\n <span>{{ 'Keops::CostCalculations:EurRate' | abpLocalization }}: <strong>{{ rateEur | number }}</strong></span>\r\n </span>\r\n </div>\r\n <div class=\"card-body\" *ngIf=\"result; else noResult\">\r\n <table class=\"table table-bordered mb-0\">\r\n <thead class=\"table-dark\">\r\n <tr>\r\n <th>{{ itemName || ('Keops::CostCalculations:Item' | abpLocalization) }}</th>\r\n <th class=\"text-end\">TRY</th>\r\n <th class=\"text-end\">USD</th>\r\n <th class=\"text-end\">EUR</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table-light fw-bold\">\r\n <td>{{ 'Keops::CostCalculations:RawOil' | abpLocalization }}</td>\r\n <td class=\"text-end\">{{ result.rawOil.try | number }}</td>\r\n <td class=\"text-end\">{{ result.rawOil.usd | number }}</td>\r\n <td class=\"text-end\">{{ result.rawOil.eur | number }}</td>\r\n </tr>\r\n\r\n <ng-container *ngFor=\"let group of roleGroups\">\r\n <ng-container *ngFor=\"let stage of group.stages\">\r\n <tr class=\"table-secondary fw-semibold\">\r\n <td colspan=\"4\">{{ stage.groupCode }} - {{ stage.groupName }}</td>\r\n </tr>\r\n <tr *ngFor=\"let line of stage.lines\">\r\n <td class=\"ps-3\">\r\n {{ line.costItemName }}\r\n <span *ngIf=\"line.ratePercent != null\" class=\"text-muted\">(%{{ line.ratePercent }})</span>\r\n </td>\r\n <td class=\"text-end\">{{ line.amount.try | number }}</td>\r\n <td class=\"text-end\">{{ line.amount.usd | number }}</td>\r\n <td class=\"text-end\">{{ line.amount.eur | number }}</td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"table-info fw-bold\">\r\n <td>{{ costGroupRoleTotalLabels[group.role] | abpLocalization }}</td>\r\n <td class=\"text-end\">{{ group.roleTotal.try | number }}</td>\r\n <td class=\"text-end\">{{ group.roleTotal.usd | number }}</td>\r\n <td class=\"text-end\">{{ group.roleTotal.eur | number }}</td>\r\n </tr>\r\n </ng-container>\r\n\r\n <tr class=\"table-warning fw-bold\" *ngIf=\"result\">\r\n <td>{{ 'Keops::CostCalculations:TotalSalePrice' | abpLocalization }}</td>\r\n <td class=\"text-end\">{{ result.totalSalePrice.try | number }}</td>\r\n <td class=\"text-end\">{{ result.totalSalePrice.usd | number }}</td>\r\n <td class=\"text-end\">{{ result.totalSalePrice.eur | number }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <ng-template #noResult>\r\n <div class=\"card-body p-4 text-center text-muted\">\r\n {{ 'Keops::CostCalculations:CostParameter' | abpLocalization }} \u2026\r\n </div>\r\n </ng-template>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationResultsComponent, decorators: [{
19
+ type: Component,
20
+ args: [{ selector: 'lib-cost-calculation-results', template: "<div class=\"card\">\r\n <div class=\"card-header d-flex justify-content-between align-items-center\">\r\n <span class=\"fw-bold\">{{ 'Keops::CostCalculations:Results' | abpLocalization }}</span>\r\n <span class=\"text-muted small\">\r\n <span>{{ 'Keops::CostCalculations:UsdRate' | abpLocalization }}: <strong>{{ rateUsd | number }}</strong></span>\r\n <span class=\"mx-2\">\u00B7</span>\r\n <span>{{ 'Keops::CostCalculations:EurRate' | abpLocalization }}: <strong>{{ rateEur | number }}</strong></span>\r\n </span>\r\n </div>\r\n <div class=\"card-body\" *ngIf=\"result; else noResult\">\r\n <table class=\"table table-bordered mb-0\">\r\n <thead class=\"table-dark\">\r\n <tr>\r\n <th>{{ itemName || ('Keops::CostCalculations:Item' | abpLocalization) }}</th>\r\n <th class=\"text-end\">TRY</th>\r\n <th class=\"text-end\">USD</th>\r\n <th class=\"text-end\">EUR</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table-light fw-bold\">\r\n <td>{{ 'Keops::CostCalculations:RawOil' | abpLocalization }}</td>\r\n <td class=\"text-end\">{{ result.rawOil.try | number }}</td>\r\n <td class=\"text-end\">{{ result.rawOil.usd | number }}</td>\r\n <td class=\"text-end\">{{ result.rawOil.eur | number }}</td>\r\n </tr>\r\n\r\n <ng-container *ngFor=\"let group of roleGroups\">\r\n <ng-container *ngFor=\"let stage of group.stages\">\r\n <tr class=\"table-secondary fw-semibold\">\r\n <td colspan=\"4\">{{ stage.groupCode }} - {{ stage.groupName }}</td>\r\n </tr>\r\n <tr *ngFor=\"let line of stage.lines\">\r\n <td class=\"ps-3\">\r\n {{ line.costItemName }}\r\n <span *ngIf=\"line.ratePercent != null\" class=\"text-muted\">(%{{ line.ratePercent }})</span>\r\n </td>\r\n <td class=\"text-end\">{{ line.amount.try | number }}</td>\r\n <td class=\"text-end\">{{ line.amount.usd | number }}</td>\r\n <td class=\"text-end\">{{ line.amount.eur | number }}</td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"table-info fw-bold\">\r\n <td>{{ costGroupRoleTotalLabels[group.role] | abpLocalization }}</td>\r\n <td class=\"text-end\">{{ group.roleTotal.try | number }}</td>\r\n <td class=\"text-end\">{{ group.roleTotal.usd | number }}</td>\r\n <td class=\"text-end\">{{ group.roleTotal.eur | number }}</td>\r\n </tr>\r\n </ng-container>\r\n\r\n <tr class=\"table-warning fw-bold\" *ngIf=\"result\">\r\n <td>{{ 'Keops::CostCalculations:TotalSalePrice' | abpLocalization }}</td>\r\n <td class=\"text-end\">{{ result.totalSalePrice.try | number }}</td>\r\n <td class=\"text-end\">{{ result.totalSalePrice.usd | number }}</td>\r\n <td class=\"text-end\">{{ result.totalSalePrice.eur | number }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <ng-template #noResult>\r\n <div class=\"card-body p-4 text-center text-muted\">\r\n {{ 'Keops::CostCalculations:CostParameter' | abpLocalization }} \u2026\r\n </div>\r\n </ng-template>\r\n</div>\r\n" }]
21
+ }], propDecorators: { result: [{
22
+ type: Input
23
+ }], roleGroups: [{
24
+ type: Input
25
+ }], itemName: [{
26
+ type: Input
27
+ }], rateUsd: [{
28
+ type: Input
29
+ }], rateEur: [{
30
+ type: Input
31
+ }] } });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1jYWxjdWxhdGlvbi1yZXN1bHRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1LWtlb3BzL3NyYy9saWIvZmVhdHVyZXMvY29zdC1jYWxjdWxhdGlvbi9jb21wb25lbnRzL2Nvc3QtY2FsY3VsYXRpb24tcmVzdWx0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS1rZW9wcy9zcmMvbGliL2ZlYXR1cmVzL2Nvc3QtY2FsY3VsYXRpb24vY29tcG9uZW50cy9jb3N0LWNhbGN1bGF0aW9uLXJlc3VsdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7Ozs7QUFPekYsTUFBTSxPQUFPLCtCQUErQjtJQUo1QztRQUtXLFdBQU0sR0FBc0IsSUFBSSxDQUFDO1FBQ2pDLGVBQVUsR0FBZ0IsRUFBRSxDQUFDO1FBQzdCLGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBQy9CLFlBQU8sR0FBRyxDQUFDLENBQUM7UUFDWixZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBRVosNkJBQXdCLEdBQUcsd0JBQXdCLENBQUM7S0FDOUQ7OzRIQVJZLCtCQUErQjtnSEFBL0IsK0JBQStCLDBMQ1I1Qyx3dUdBaUVBOzJGRHpEYSwrQkFBK0I7a0JBSjNDLFNBQVM7K0JBQ0UsOEJBQThCOzhCQUkvQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvc3RHcm91cFJvbGVUb3RhbExhYmVscyB9IGZyb20gJy4uLy4uL2Nvc3QtZ3JvdXBzL2Nvc3QtZ3JvdXAtcm9sZS1sMTBuLWhlbHBlcic7XHJcbmltcG9ydCB7IENvc3RSZXN1bHQsIFJvbGVHcm91cCB9IGZyb20gJy4uL2VuZ2luZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jb3N0LWNhbGN1bGF0aW9uLXJlc3VsdHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3N0LWNhbGN1bGF0aW9uLXJlc3VsdHMuY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29zdENhbGN1bGF0aW9uUmVzdWx0c0NvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgcmVzdWx0OiBDb3N0UmVzdWx0IHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcm9sZUdyb3VwczogUm9sZUdyb3VwW10gPSBbXTtcclxuICBASW5wdXQoKSBpdGVtTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcmF0ZVVzZCA9IDA7XHJcbiAgQElucHV0KCkgcmF0ZUV1ciA9IDA7XHJcblxyXG4gIHJlYWRvbmx5IGNvc3RHcm91cFJvbGVUb3RhbExhYmVscyA9IGNvc3RHcm91cFJvbGVUb3RhbExhYmVscztcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGRcIj57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6UmVzdWx0cycgfCBhYnBMb2NhbGl6YXRpb24gfX08L3NwYW4+XHJcbiAgICA8c3BhbiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGxcIj5cclxuICAgICAgPHNwYW4+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOlVzZFJhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19OiA8c3Ryb25nPnt7IHJhdGVVc2QgfCBudW1iZXIgfX08L3N0cm9uZz48L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibXgtMlwiPsK3PC9zcGFuPlxyXG4gICAgICA8c3Bhbj57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6RXVyUmF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX06IDxzdHJvbmc+e3sgcmF0ZUV1ciB8IG51bWJlciB9fTwvc3Ryb25nPjwvc3Bhbj5cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCIgKm5nSWY9XCJyZXN1bHQ7IGVsc2Ugbm9SZXN1bHRcIj5cclxuICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkIG1iLTBcIj5cclxuICAgICAgPHRoZWFkIGNsYXNzPVwidGFibGUtZGFya1wiPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0aD57eyBpdGVtTmFtZSB8fCAoJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOkl0ZW0nIHwgYWJwTG9jYWxpemF0aW9uKSB9fTwvdGg+XHJcbiAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWVuZFwiPlRSWTwvdGg+XHJcbiAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWVuZFwiPlVTRDwvdGg+XHJcbiAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWVuZFwiPkVVUjwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90aGVhZD5cclxuICAgICAgPHRib2R5PlxyXG4gICAgICAgIDx0ciBjbGFzcz1cInRhYmxlLWxpZ2h0IGZ3LWJvbGRcIj5cclxuICAgICAgICAgIDx0ZD57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6UmF3T2lsJyB8IGFicExvY2FsaXphdGlvbiB9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IHJlc3VsdC5yYXdPaWwudHJ5IHwgbnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+e3sgcmVzdWx0LnJhd09pbC51c2QgfCBudW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj57eyByZXN1bHQucmF3T2lsLmV1ciB8IG51bWJlciB9fTwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXAgb2Ygcm9sZUdyb3Vwc1wiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RhZ2Ugb2YgZ3JvdXAuc3RhZ2VzXCI+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInRhYmxlLXNlY29uZGFyeSBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNFwiPnt7IHN0YWdlLmdyb3VwQ29kZSB9fSAtIHt7IHN0YWdlLmdyb3VwTmFtZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgbGluZSBvZiBzdGFnZS5saW5lc1wiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInBzLTNcIj5cclxuICAgICAgICAgICAgICAgIHt7IGxpbmUuY29zdEl0ZW1OYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxpbmUucmF0ZVBlcmNlbnQgIT0gbnVsbFwiIGNsYXNzPVwidGV4dC1tdXRlZFwiPigle3sgbGluZS5yYXRlUGVyY2VudCB9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IGxpbmUuYW1vdW50LnRyeSB8IG51bWJlciB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj57eyBsaW5lLmFtb3VudC51c2QgfCBudW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+e3sgbGluZS5hbW91bnQuZXVyIHwgbnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPHRyIGNsYXNzPVwidGFibGUtaW5mbyBmdy1ib2xkXCI+XHJcbiAgICAgICAgICAgIDx0ZD57eyBjb3N0R3JvdXBSb2xlVG90YWxMYWJlbHNbZ3JvdXAucm9sZV0gfCBhYnBMb2NhbGl6YXRpb24gfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IGdyb3VwLnJvbGVUb3RhbC50cnkgfCBudW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IGdyb3VwLnJvbGVUb3RhbC51c2QgfCBudW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IGdyb3VwLnJvbGVUb3RhbC5ldXIgfCBudW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPHRyIGNsYXNzPVwidGFibGUtd2FybmluZyBmdy1ib2xkXCIgKm5nSWY9XCJyZXN1bHRcIj5cclxuICAgICAgICAgIDx0ZD57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6VG90YWxTYWxlUHJpY2UnIHwgYWJwTG9jYWxpemF0aW9uIH19PC90ZD5cclxuICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+e3sgcmVzdWx0LnRvdGFsU2FsZVByaWNlLnRyeSB8IG51bWJlciB9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IHJlc3VsdC50b3RhbFNhbGVQcmljZS51c2QgfCBudW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj57eyByZXN1bHQudG90YWxTYWxlUHJpY2UuZXVyIHwgbnVtYmVyIH19PC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L3Rib2R5PlxyXG4gICAgPC90YWJsZT5cclxuICA8L2Rpdj5cclxuICA8bmctdGVtcGxhdGUgI25vUmVzdWx0PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTQgdGV4dC1jZW50ZXIgdGV4dC1tdXRlZFwiPlxyXG4gICAgICB7eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6Q29zdFBhcmFtZXRlcicgfCBhYnBMb2NhbGl6YXRpb24gfX0g4oCmXHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,167 @@
1
+ import { Component, ViewEncapsulation } from '@angular/core';
2
+ import { forkJoin } from 'rxjs';
3
+ import DataSource from 'devextreme/data/data_source';
4
+ import ArrayStore from 'devextreme/data/array_store';
5
+ import { ExchangeRateSource } from '@proxy/exchange-rates/exchange-rate-source.enum';
6
+ import { Currency } from '@proxy/currencies/currency.enum';
7
+ import { CostItemCalculationType } from '@proxy/cost-items/cost-item-calculation-type.enum';
8
+ import { buildRoleGroups, calculateCost } from '../engine';
9
+ import { parseDecimal } from '../../../utils/number.utils';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@proxy/controllers";
12
+ import * as i2 from "@abp/ng.components/page";
13
+ import * as i3 from "./cost-calculation-inputs.component";
14
+ import * as i4 from "./cost-calculation-results.component";
15
+ import * as i5 from "./cost-calculation-result-sum.component";
16
+ import * as i6 from "@abp/ng.core";
17
+ export class CostCalculationComponent {
18
+ constructor(parameterService, costItemService, costGroupService, exchangeRateService, itemService) {
19
+ this.parameterService = parameterService;
20
+ this.costItemService = costItemService;
21
+ this.costGroupService = costGroupService;
22
+ this.exchangeRateService = exchangeRateService;
23
+ this.itemService = itemService;
24
+ this.itemCodePrefix = '05';
25
+ this.productItems = [];
26
+ this.itemsDataSource = null;
27
+ this.selectedItemCode = null;
28
+ this.selectedItemName = null;
29
+ this.parameters = [];
30
+ this.selectedParameterCode = null;
31
+ this.rawOilPrice = 0;
32
+ this.rawOilCurrency = Currency.USD;
33
+ this.systemRateUsd = 0;
34
+ this.systemRateEur = 0;
35
+ this.rateUsd = 0;
36
+ this.rateEur = 0;
37
+ this.stages = [];
38
+ this.result = null;
39
+ this.roleGroups = [];
40
+ this.costItemsByCode = new Map();
41
+ this.groups = [];
42
+ this.productGroupNames = new Map();
43
+ this.regionNames = new Map();
44
+ this.itemDisplayExpr = (item) => item ? [item.code, item.name].filter(Boolean).join(' — ') : '';
45
+ this.parameterDisplayExpr = (p) => (p ? this.parameterLabel(p) : '');
46
+ }
47
+ ngOnInit() {
48
+ this.calculate();
49
+ forkJoin({
50
+ parameters: this.parameterService.getList(),
51
+ costItems: this.costItemService.getList(),
52
+ groups: this.costGroupService.getList(),
53
+ rate: this.exchangeRateService.get(),
54
+ lookups: this.parameterService.getCodeLookups(),
55
+ items: this.itemService.getList(this.itemCodePrefix),
56
+ }).subscribe(({ parameters, costItems, groups, rate, lookups, items }) => {
57
+ this.parameters = parameters ?? [];
58
+ this.productItems = items ?? [];
59
+ this.itemsDataSource = new DataSource({
60
+ store: new ArrayStore({ key: 'code', data: this.productItems }),
61
+ paginate: true,
62
+ pageSize: 50,
63
+ });
64
+ this.productGroupNames = this.toNameMap(lookups?.productGroups);
65
+ this.regionNames = this.toNameMap(lookups?.regions);
66
+ this.costItemsByCode = new Map();
67
+ for (const ci of costItems ?? []) {
68
+ if (ci.code)
69
+ this.costItemsByCode.set(ci.code, ci);
70
+ }
71
+ this.groups = (groups ?? []).slice().sort((a, b) => a.displayOrder - b.displayOrder);
72
+ const [usd, eur] = this.resolveRates(rate);
73
+ this.systemRateUsd = usd;
74
+ this.systemRateEur = eur;
75
+ this.rateUsd = usd;
76
+ this.rateEur = eur;
77
+ this.calculate();
78
+ });
79
+ }
80
+ parameterLabel(p) {
81
+ const productGroup = this.productGroupNames.get(p.productGroup ?? '') ?? p.productGroup;
82
+ const region = this.regionNames.get(p.region ?? '') ?? p.region;
83
+ return [productGroup, region].filter(Boolean).join(' — ') || (p.code ?? '');
84
+ }
85
+ onItemChange() {
86
+ const item = this.productItems.find(x => x.code === this.selectedItemCode);
87
+ this.selectedItemName = item?.name ?? null;
88
+ }
89
+ toNameMap(options) {
90
+ const map = new Map();
91
+ for (const option of options ?? []) {
92
+ if (option.code)
93
+ map.set(option.code, option.name ?? option.code);
94
+ }
95
+ return map;
96
+ }
97
+ onParameterChange() {
98
+ const parameter = this.parameters.find(p => p.code === this.selectedParameterCode);
99
+ this.stages = parameter ? this.buildStages(parameter) : [];
100
+ this.calculate();
101
+ }
102
+ buildValuesByCode(parameter) {
103
+ const map = new Map();
104
+ for (const item of parameter.items ?? []) {
105
+ if (item.costItemCode) {
106
+ map.set(item.costItemCode, { value: parseDecimal(item.value), currency: item.currency });
107
+ }
108
+ }
109
+ return map;
110
+ }
111
+ buildStages(parameter) {
112
+ const valuesByCode = this.buildValuesByCode(parameter);
113
+ return this.groups.map(group => {
114
+ const items = [];
115
+ for (const code of group.itemCodes ?? []) {
116
+ const costItem = this.costItemsByCode.get(code);
117
+ if (!costItem)
118
+ continue;
119
+ const stored = valuesByCode.get(code);
120
+ const isRate = costItem.calculationType === CostItemCalculationType.Rate;
121
+ items.push({
122
+ costItemCode: code,
123
+ costItemName: costItem.name ?? code,
124
+ calculationType: costItem.calculationType,
125
+ systemCode: costItem.systemCode ?? undefined,
126
+ currency: stored?.currency ?? (isRate ? undefined : Currency.TRY),
127
+ value: stored?.value ?? 0,
128
+ });
129
+ }
130
+ return {
131
+ groupCode: group.code ?? '',
132
+ groupName: group.name ?? '',
133
+ displayOrder: group.displayOrder,
134
+ groupRole: group.groupRole,
135
+ items,
136
+ };
137
+ });
138
+ }
139
+ calculate() {
140
+ this.result = calculateCost({
141
+ rawOilPrice: parseDecimal(this.rawOilPrice),
142
+ rawOilCurrency: this.rawOilCurrency,
143
+ rateUsd: parseDecimal(this.rateUsd),
144
+ rateEur: parseDecimal(this.rateEur),
145
+ stages: this.stages,
146
+ });
147
+ this.roleGroups = buildRoleGroups(this.result.rawOil, this.result.stages);
148
+ }
149
+ print() {
150
+ window.print();
151
+ }
152
+ resolveRates(rate) {
153
+ if (!rate)
154
+ return [0, 0];
155
+ if (rate.source === ExchangeRateSource.Fixed) {
156
+ return [rate.fixedUsdRate ?? 0, rate.fixedEurRate ?? 0];
157
+ }
158
+ return [rate.cbExchangeRate?.usdBuyingRate ?? 0, rate.cbExchangeRate?.eurBuyingRate ?? 0];
159
+ }
160
+ }
161
+ CostCalculationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationComponent, deps: [{ token: i1.CostParameterService }, { token: i1.CostItemService }, { token: i1.CostGroupService }, { token: i1.ExchangeRateService }, { token: i1.ItemService }], target: i0.ɵɵFactoryTarget.Component });
162
+ CostCalculationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CostCalculationComponent, selector: "lib-cost-calculation", ngImport: i0, template: "<abp-page [title]=\"'Keops::CostCalculations:Title' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row justify-content-end mx-0\">\r\n <div class=\"col-auto px-1 pt-0 pt-md-2\">\r\n <button class=\"btn btn-outline-primary\" type=\"button\" (click)=\"print()\" [disabled]=\"!result\">\r\n <i class=\"fa fa-print me-1\"></i>\r\n <span>{{ 'Keops::CostCalculations:Print' | abpLocalization }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-4 mb-3\">\r\n <lib-cost-calculation-inputs\r\n [itemsDataSource]=\"itemsDataSource\"\r\n [itemDisplayExpr]=\"itemDisplayExpr\"\r\n [parameters]=\"parameters\"\r\n [parameterDisplayExpr]=\"parameterDisplayExpr\"\r\n [stages]=\"stages\"\r\n [(selectedItemCode)]=\"selectedItemCode\"\r\n [(selectedParameterCode)]=\"selectedParameterCode\"\r\n [(rawOilPrice)]=\"rawOilPrice\"\r\n [(rawOilCurrency)]=\"rawOilCurrency\"\r\n [systemRateUsd]=\"systemRateUsd\"\r\n [systemRateEur]=\"systemRateEur\"\r\n [(rateUsd)]=\"rateUsd\"\r\n [(rateEur)]=\"rateEur\"\r\n (itemChange)=\"onItemChange()\"\r\n (parameterChange)=\"onParameterChange()\"\r\n (recalc)=\"calculate()\"\r\n ></lib-cost-calculation-inputs>\r\n </div>\r\n\r\n <div class=\"col-lg-8 mb-3\">\r\n <div class=\"d-print-none\">\r\n <lib-cost-calculation-result-sum [roleGroups]=\"roleGroups\"></lib-cost-calculation-result-sum>\r\n </div>\r\n <div id=\"cost-calculation-results\">\r\n <lib-cost-calculation-results [result]=\"result\" [roleGroups]=\"roleGroups\" [itemName]=\"selectedItemName\" [rateUsd]=\"rateUsd\" [rateEur]=\"rateEur\"></lib-cost-calculation-results>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n", styles: ["@media print{body *{visibility:hidden}#cost-calculation-results,#cost-calculation-results *{visibility:visible}#cost-calculation-results{position:absolute;inset:0;width:100%}}\n"], dependencies: [{ kind: "component", type: i2.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i2.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "component", type: i3.CostCalculationInputsComponent, selector: "lib-cost-calculation-inputs", inputs: ["itemsDataSource", "itemDisplayExpr", "parameters", "parameterDisplayExpr", "stages", "selectedItemCode", "selectedParameterCode", "rawOilPrice", "rawOilCurrency", "systemRateUsd", "systemRateEur", "rateUsd", "rateEur"], outputs: ["selectedItemCodeChange", "selectedParameterCodeChange", "rawOilPriceChange", "rawOilCurrencyChange", "rateUsdChange", "rateEurChange", "itemChange", "parameterChange", "recalc"] }, { kind: "component", type: i4.CostCalculationResultsComponent, selector: "lib-cost-calculation-results", inputs: ["result", "roleGroups", "itemName", "rateUsd", "rateEur"] }, { kind: "component", type: i5.CostCalculationResultSumComponent, selector: "lib-cost-calculation-result-sum", inputs: ["roleGroups"] }, { kind: "pipe", type: i6.LocalizationPipe, name: "abpLocalization" }], encapsulation: i0.ViewEncapsulation.None });
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationComponent, decorators: [{
164
+ type: Component,
165
+ args: [{ selector: 'lib-cost-calculation', encapsulation: ViewEncapsulation.None, template: "<abp-page [title]=\"'Keops::CostCalculations:Title' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row justify-content-end mx-0\">\r\n <div class=\"col-auto px-1 pt-0 pt-md-2\">\r\n <button class=\"btn btn-outline-primary\" type=\"button\" (click)=\"print()\" [disabled]=\"!result\">\r\n <i class=\"fa fa-print me-1\"></i>\r\n <span>{{ 'Keops::CostCalculations:Print' | abpLocalization }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-4 mb-3\">\r\n <lib-cost-calculation-inputs\r\n [itemsDataSource]=\"itemsDataSource\"\r\n [itemDisplayExpr]=\"itemDisplayExpr\"\r\n [parameters]=\"parameters\"\r\n [parameterDisplayExpr]=\"parameterDisplayExpr\"\r\n [stages]=\"stages\"\r\n [(selectedItemCode)]=\"selectedItemCode\"\r\n [(selectedParameterCode)]=\"selectedParameterCode\"\r\n [(rawOilPrice)]=\"rawOilPrice\"\r\n [(rawOilCurrency)]=\"rawOilCurrency\"\r\n [systemRateUsd]=\"systemRateUsd\"\r\n [systemRateEur]=\"systemRateEur\"\r\n [(rateUsd)]=\"rateUsd\"\r\n [(rateEur)]=\"rateEur\"\r\n (itemChange)=\"onItemChange()\"\r\n (parameterChange)=\"onParameterChange()\"\r\n (recalc)=\"calculate()\"\r\n ></lib-cost-calculation-inputs>\r\n </div>\r\n\r\n <div class=\"col-lg-8 mb-3\">\r\n <div class=\"d-print-none\">\r\n <lib-cost-calculation-result-sum [roleGroups]=\"roleGroups\"></lib-cost-calculation-result-sum>\r\n </div>\r\n <div id=\"cost-calculation-results\">\r\n <lib-cost-calculation-results [result]=\"result\" [roleGroups]=\"roleGroups\" [itemName]=\"selectedItemName\" [rateUsd]=\"rateUsd\" [rateEur]=\"rateEur\"></lib-cost-calculation-results>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n", styles: ["@media print{body *{visibility:hidden}#cost-calculation-results,#cost-calculation-results *{visibility:visible}#cost-calculation-results{position:absolute;inset:0;width:100%}}\n"] }]
166
+ }], ctorParameters: function () { return [{ type: i1.CostParameterService }, { type: i1.CostItemService }, { type: i1.CostGroupService }, { type: i1.ExchangeRateService }, { type: i1.ItemService }]; } });
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1jYWxjdWxhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS1rZW9wcy9zcmMvbGliL2ZlYXR1cmVzL2Nvc3QtY2FsY3VsYXRpb24vY29tcG9uZW50cy9jb3N0LWNhbGN1bGF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1LWtlb3BzL3NyYy9saWIvZmVhdHVyZXMvY29zdC1jYWxjdWxhdGlvbi9jb21wb25lbnRzL2Nvc3QtY2FsY3VsYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sVUFBVSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JELE9BQU8sVUFBVSxNQUFNLDZCQUE2QixDQUFDO0FBYXJELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBeUIsTUFBTSxXQUFXLENBQUM7QUFFbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7OztBQVEzRCxNQUFNLE9BQU8sd0JBQXdCO0lBNEJuQyxZQUNtQixnQkFBc0MsRUFDdEMsZUFBZ0MsRUFDaEMsZ0JBQWtDLEVBQ2xDLG1CQUF3QyxFQUN4QyxXQUF3QjtRQUp4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXNCO1FBQ3RDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNo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SUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7WUFDNUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDekQ7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxhQUFhLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsYUFBYSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVGLENBQUM7O3FIQXBLVSx3QkFBd0I7eUdBQXhCLHdCQUF3Qiw0REM3QnJDLDQ1REE0Q0E7MkZEZmEsd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNFLHNCQUFzQixpQkFHakIsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgRGF0YVNvdXJjZSBmcm9tICdkZXZleHRyZW1lL2RhdGEvZGF0YV9zb3VyY2UnO1xyXG5pbXBvcnQgQXJyYXlTdG9yZSBmcm9tICdkZXZleHRyZW1lL2RhdGEvYXJyYXlfc3RvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvc3RHcm91cFNlcnZpY2UsXHJcbiAgQ29zdEl0ZW1TZXJ2aWNlLFxyXG4gIENvc3RQYXJhbWV0ZXJTZXJ2aWNlLFxyXG4gIEV4Y2hhbmdlUmF0ZVNlcnZpY2UsXHJcbiAgSXRlbVNlcnZpY2UsXHJcbn0gZnJvbSAnQHByb3h5L2NvbnRyb2xsZXJzJztcclxuaW1wb3J0IHsgSXRlbUR0byB9IGZyb20gJ0Bwcm94eS9pdGVtcy9kdG9zJztcclxuaW1wb3J0IHsgQ29zdFBhcmFtZXRlckNhdGVnb3J5TG9va3VwRHRvLCBDb3N0UGFyYW1ldGVyRHRvIH0gZnJvbSAnQHByb3h5L2Nvc3QtcGFyYW1ldGVycy9kdG9zJztcclxuaW1wb3J0IHsgQ29zdEl0ZW1EdG8gfSBmcm9tICdAcHJveHkvY29zdC1pdGVtcy9kdG9zJztcclxuaW1wb3J0IHsgQ29zdEdyb3VwRHRvIH0gZnJvbSAnQHByb3h5L2Nvc3QtZ3JvdXBzL2R0b3MnO1xyXG5pbXBvcnQgeyBFeGNoYW5nZVJhdGVEdG8gfSBmcm9tICdAcHJveHkvZXhjaGFuZ2UtcmF0ZXMvZHRvcyc7XHJcbmltcG9ydCB7IEV4Y2hhbmdlUmF0ZVNvdXJjZSB9IGZyb20gJ0Bwcm94eS9leGNoYW5nZS1yYXRlcy9leGNoYW5nZS1yYXRlLXNvdXJjZS5lbnVtJztcclxuaW1wb3J0IHsgQ3VycmVuY3kgfSBmcm9tICdAcHJveHkvY3VycmVuY2llcy9jdXJyZW5jeS5lbnVtJztcclxuaW1wb3J0IHsgQ29zdEl0ZW1DYWxjdWxhdGlvblR5cGUgfSBmcm9tICdAcHJveHkvY29zdC1pdGVtcy9jb3N0LWl0ZW0tY2FsY3VsYXRpb24tdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgYnVpbGRSb2xlR3JvdXBzLCBjYWxjdWxhdGVDb3N0LCBDb3N0UmVzdWx0LCBSb2xlR3JvdXAgfSBmcm9tICcuLi9lbmdpbmUnO1xyXG5pbXBvcnQgeyBDb3N0Q2FsY3VsYXRpb25JdGVtLCBDb3N0Q2FsY3VsYXRpb25TdGFnZSB9IGZyb20gJy4uL2Nvc3QtY2FsY3VsYXRpb24ubW9kZWxzJztcclxuaW1wb3J0IHsgcGFyc2VEZWNpbWFsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvbnVtYmVyLnV0aWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNvc3QtY2FsY3VsYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3N0LWNhbGN1bGF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3N0LWNhbGN1bGF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvc3RDYWxjdWxhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcmVhZG9ubHkgaXRlbUNvZGVQcmVmaXggPSAnMDUnO1xyXG4gIHByb2R1Y3RJdGVtczogSXRlbUR0b1tdID0gW107XHJcbiAgaXRlbXNEYXRhU291cmNlOiBEYXRhU291cmNlIHwgbnVsbCA9IG51bGw7XHJcbiAgc2VsZWN0ZWRJdGVtQ29kZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgc2VsZWN0ZWRJdGVtTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHBhcmFtZXRlcnM6IENvc3RQYXJhbWV0ZXJEdG9bXSA9IFtdO1xyXG4gIHNlbGVjdGVkUGFyYW1ldGVyQ29kZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHJhd09pbFByaWNlID0gMDtcclxuICByYXdPaWxDdXJyZW5jeSA9IEN1cnJlbmN5LlVTRDtcclxuXHJcbiAgc3lzdGVtUmF0ZVVzZCA9IDA7XHJcbiAgc3lzdGVtUmF0ZUV1ciA9IDA7XHJcblxyXG4gIHJhdGVVc2QgPSAwO1xyXG4gIHJhdGVFdXIgPSAwO1xyXG5cclxuICBzdGFnZXM6IENvc3RDYWxjdWxhdGlvblN0YWdlW10gPSBbXTtcclxuICByZXN1bHQ6IENvc3RSZXN1bHQgfCBudWxsID0gbnVsbDtcclxuICByb2xlR3JvdXBzOiBSb2xlR3JvdXBbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIGNvc3RJdGVtc0J5Q29kZSA9IG5ldyBNYXA8c3RyaW5nLCBDb3N0SXRlbUR0bz4oKTtcclxuICBwcml2YXRlIGdyb3VwczogQ29zdEdyb3VwRHRvW10gPSBbXTtcclxuICBwcml2YXRlIHByb2R1Y3RHcm91cE5hbWVzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuICBwcml2YXRlIHJlZ2lvbk5hbWVzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhcmFtZXRlclNlcnZpY2U6IENvc3RQYXJhbWV0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3N0SXRlbVNlcnZpY2U6IENvc3RJdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29zdEdyb3VwU2VydmljZTogQ29zdEdyb3VwU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXhjaGFuZ2VSYXRlU2VydmljZTogRXhjaGFuZ2VSYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaXRlbVNlcnZpY2U6IEl0ZW1TZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbGN1bGF0ZSgpO1xyXG5cclxuICAgIGZvcmtKb2luKHtcclxuICAgICAgcGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldExpc3QoKSxcclxuICAgICAgY29zdEl0ZW1zOiB0aGlzLmNvc3RJdGVtU2VydmljZS5nZXRMaXN0KCksXHJcbiAgICAgIGdyb3VwczogdGhpcy5jb3N0R3JvdXBTZXJ2aWNlLmdldExpc3QoKSxcclxuICAgICAgcmF0ZTogdGhpcy5leGNoYW5nZVJhdGVTZXJ2aWNlLmdldCgpLFxyXG4gICAgICBsb29rdXBzOiB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0Q29kZUxvb2t1cHMoKSxcclxuICAgICAgaXRlbXM6IHRoaXMuaXRlbVNlcnZpY2UuZ2V0TGlzdCh0aGlzLml0ZW1Db2RlUHJlZml4KSxcclxuICAgIH0pLnN1YnNjcmliZSgoeyBwYXJhbWV0ZXJzLCBjb3N0SXRlbXMsIGdyb3VwcywgcmF0ZSwgbG9va3VwcywgaXRlbXMgfSkgPT4ge1xyXG4gICAgICB0aGlzLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzID8/IFtdO1xyXG4gICAgICB0aGlzLnByb2R1Y3RJdGVtcyA9IGl0ZW1zID8/IFtdO1xyXG4gICAgICB0aGlzLml0ZW1zRGF0YVNvdXJjZSA9IG5ldyBEYXRhU291cmNlKHtcclxuICAgICAgICBzdG9yZTogbmV3IEFycmF5U3RvcmUoeyBrZXk6ICdjb2RlJywgZGF0YTogdGhpcy5wcm9kdWN0SXRlbXMgfSksXHJcbiAgICAgICAgcGFnaW5hdGU6IHRydWUsXHJcbiAgICAgICAgcGFnZVNpemU6IDUwLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMucHJvZHVjdEdyb3VwTmFtZXMgPSB0aGlzLnRvTmFtZU1hcChsb29rdXBzPy5wcm9kdWN0R3JvdXBzKTtcclxuICAgICAgdGhpcy5yZWdpb25OYW1lcyA9IHRoaXMudG9OYW1lTWFwKGxvb2t1cHM/LnJlZ2lvbnMpO1xyXG5cclxuICAgICAgdGhpcy5jb3N0SXRlbXNCeUNvZGUgPSBuZXcgTWFwPHN0cmluZywgQ29zdEl0ZW1EdG8+KCk7XHJcbiAgICAgIGZvciAoY29uc3QgY2kgb2YgY29zdEl0ZW1zID8/IFtdKSB7XHJcbiAgICAgICAgaWYgKGNpLmNvZGUpIHRoaXMuY29zdEl0ZW1zQnlDb2RlLnNldChjaS5jb2RlLCBjaSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZ3JvdXBzID0gKGdyb3VwcyA/PyBbXSkuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiBhLmRpc3BsYXlPcmRlciAtIGIuZGlzcGxheU9yZGVyKTtcclxuXHJcbiAgICAgIGNvbnN0IFt1c2QsIGV1cl0gPSB0aGlzLnJlc29sdmVSYXRlcyhyYXRlKTtcclxuICAgICAgdGhpcy5zeXN0ZW1SYXRlVXNkID0gdXNkO1xyXG4gICAgICB0aGlzLnN5c3RlbVJhdGVFdXIgPSBldXI7XHJcbiAgICAgIHRoaXMucmF0ZVVzZCA9IHVzZDtcclxuICAgICAgdGhpcy5yYXRlRXVyID0gZXVyO1xyXG5cclxuICAgICAgdGhpcy5jYWxjdWxhdGUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcGFyYW1ldGVyTGFiZWwocDogQ29zdFBhcmFtZXRlckR0byk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBwcm9kdWN0R3JvdXAgPSB0aGlzLnByb2R1Y3RHcm91cE5hbWVzLmdldChwLnByb2R1Y3RHcm91cCA/PyAnJykgPz8gcC5wcm9kdWN0R3JvdXA7XHJcbiAgICBjb25zdCByZWdpb24gPSB0aGlzLnJlZ2lvbk5hbWVzLmdldChwLnJlZ2lvbiA/PyAnJykgPz8gcC5yZWdpb247XHJcbiAgICByZXR1cm4gW3Byb2R1Y3RHcm91cCwgcmVnaW9uXS5maWx0ZXIoQm9vbGVhbikuam9pbignIOKAlCAnKSB8fCAocC5jb2RlID8/ICcnKTtcclxuICB9XHJcblxyXG4gIG9uSXRlbUNoYW5nZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnByb2R1Y3RJdGVtcy5maW5kKHggPT4geC5jb2RlID09PSB0aGlzLnNlbGVjdGVkSXRlbUNvZGUpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1OYW1lID0gaXRlbT8ubmFtZSA/PyBudWxsO1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgaXRlbURpc3BsYXlFeHByID0gKGl0ZW06IEl0ZW1EdG8pOiBzdHJpbmcgPT5cclxuICAgIGl0ZW0gPyBbaXRlbS5jb2RlLCBpdGVtLm5hbWVdLmZpbHRlcihCb29sZWFuKS5qb2luKCcg4oCUICcpIDogJyc7XHJcblxyXG4gIHJlYWRvbmx5IHBhcmFtZXRlckRpc3BsYXlFeHByID0gKHA6IENvc3RQYXJhbWV0ZXJEdG8pOiBzdHJpbmcgPT4gKHAgPyB0aGlzLnBhcmFtZXRlckxhYmVsKHApIDogJycpO1xyXG5cclxuICBwcml2YXRlIHRvTmFtZU1hcChvcHRpb25zOiBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlMb29rdXBEdG9bXSB8IHVuZGVmaW5lZCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMgPz8gW10pIHtcclxuICAgICAgaWYgKG9wdGlvbi5jb2RlKSBtYXAuc2V0KG9wdGlvbi5jb2RlLCBvcHRpb24ubmFtZSA/PyBvcHRpb24uY29kZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWFwO1xyXG4gIH1cclxuXHJcbiAgb25QYXJhbWV0ZXJDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXJhbWV0ZXIgPSB0aGlzLnBhcmFtZXRlcnMuZmluZChwID0+IHAuY29kZSA9PT0gdGhpcy5zZWxlY3RlZFBhcmFtZXRlckNvZGUpO1xyXG4gICAgdGhpcy5zdGFnZXMgPSBwYXJhbWV0ZXIgPyB0aGlzLmJ1aWxkU3RhZ2VzKHBhcmFtZXRlcikgOiBbXTtcclxuICAgIHRoaXMuY2FsY3VsYXRlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkVmFsdWVzQnlDb2RlKHBhcmFtZXRlcjogQ29zdFBhcmFtZXRlckR0byk6IE1hcDxzdHJpbmcsIHsgdmFsdWU6IG51bWJlcjsgY3VycmVuY3k/OiBDdXJyZW5jeSB9PiB7XHJcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgeyB2YWx1ZTogbnVtYmVyOyBjdXJyZW5jeT86IEN1cnJlbmN5IH0+KCk7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgcGFyYW1ldGVyLml0ZW1zID8/IFtdKSB7XHJcbiAgICAgIGlmIChpdGVtLmNvc3RJdGVtQ29kZSkge1xyXG4gICAgICAgIG1hcC5zZXQoaXRlbS5jb3N0SXRlbUNvZGUsIHsgdmFsdWU6IHBhcnNlRGVjaW1hbChpdGVtLnZhbHVlKSwgY3VycmVuY3k6IGl0ZW0uY3VycmVuY3kgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBtYXA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkU3RhZ2VzKHBhcmFtZXRlcjogQ29zdFBhcmFtZXRlckR0byk6IENvc3RDYWxjdWxhdGlvblN0YWdlW10ge1xyXG4gICAgY29uc3QgdmFsdWVzQnlDb2RlID0gdGhpcy5idWlsZFZhbHVlc0J5Q29kZShwYXJhbWV0ZXIpO1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBzLm1hcChncm91cCA9PiB7XHJcbiAgICAgIGNvbnN0IGl0ZW1zOiBDb3N0Q2FsY3VsYXRpb25JdGVtW10gPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBjb2RlIG9mIGdyb3VwLml0ZW1Db2RlcyA/PyBbXSkge1xyXG4gICAgICAgIGNvbnN0IGNvc3RJdGVtID0gdGhpcy5jb3N0SXRlbXNCeUNvZGUuZ2V0KGNvZGUpO1xyXG4gICAgICAgIGlmICghY29zdEl0ZW0pIGNvbnRpbnVlO1xyXG4gICAgICAgIGNvbnN0IHN0b3JlZCA9IHZhbHVlc0J5Q29kZS5nZXQoY29kZSk7XHJcbiAgICAgICAgY29uc3QgaXNSYXRlID0gY29zdEl0ZW0uY2FsY3VsYXRpb25UeXBlID09PSBDb3N0SXRlbUNhbGN1bGF0aW9uVHlwZS5SYXRlO1xyXG4gICAgICAgIGl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgY29zdEl0ZW1Db2RlOiBjb2RlLFxyXG4gICAgICAgICAgY29zdEl0ZW1OYW1lOiBjb3N0SXRlbS5uYW1lID8/IGNvZGUsXHJcbiAgICAgICAgICBjYWxjdWxhdGlvblR5cGU6IGNvc3RJdGVtLmNhbGN1bGF0aW9uVHlwZSxcclxuICAgICAgICAgIHN5c3RlbUNvZGU6IGNvc3RJdGVtLnN5c3RlbUNvZGUgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgY3VycmVuY3k6IHN0b3JlZD8uY3VycmVuY3kgPz8gKGlzUmF0ZSA/IHVuZGVmaW5lZCA6IEN1cnJlbmN5LlRSWSksXHJcbiAgICAgICAgICB2YWx1ZTogc3RvcmVkPy52YWx1ZSA/PyAwLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZ3JvdXBDb2RlOiBncm91cC5jb2RlID8/ICcnLFxyXG4gICAgICAgIGdyb3VwTmFtZTogZ3JvdXAubmFtZSA/PyAnJyxcclxuICAgICAgICBkaXNwbGF5T3JkZXI6IGdyb3VwLmRpc3BsYXlPcmRlcixcclxuICAgICAgICBncm91cFJvbGU6IGdyb3VwLmdyb3VwUm9sZSxcclxuICAgICAgICBpdGVtcyxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXN1bHQgPSBjYWxjdWxhdGVDb3N0KHtcclxuICAgICAgcmF3T2lsUHJpY2U6IHBhcnNlRGVjaW1hbCh0aGlzLnJhd09pbFByaWNlKSxcclxuICAgICAgcmF3T2lsQ3VycmVuY3k6IHRoaXMucmF3T2lsQ3VycmVuY3ksXHJcbiAgICAgIHJhdGVVc2Q6IHBhcnNlRGVjaW1hbCh0aGlzLnJhdGVVc2QpLFxyXG4gICAgICByYXRlRXVyOiBwYXJzZURlY2ltYWwodGhpcy5yYXRlRXVyKSxcclxuICAgICAgc3RhZ2VzOiB0aGlzLnN0YWdlcyxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yb2xlR3JvdXBzID0gYnVpbGRSb2xlR3JvdXBzKHRoaXMucmVzdWx0LnJhd09pbCwgdGhpcy5yZXN1bHQuc3RhZ2VzKTtcclxuICB9XHJcblxyXG4gIHByaW50KCk6IHZvaWQge1xyXG4gICAgd2luZG93LnByaW50KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc29sdmVSYXRlcyhyYXRlOiBFeGNoYW5nZVJhdGVEdG8pOiBbbnVtYmVyLCBudW1iZXJdIHtcclxuICAgIGlmICghcmF0ZSkgcmV0dXJuIFswLCAwXTtcclxuICAgIGlmIChyYXRlLnNvdXJjZSA9PT0gRXhjaGFuZ2VSYXRlU291cmNlLkZpeGVkKSB7XHJcbiAgICAgIHJldHVybiBbcmF0ZS5maXhlZFVzZFJhdGUgPz8gMCwgcmF0ZS5maXhlZEV1clJhdGUgPz8gMF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW3JhdGUuY2JFeGNoYW5nZVJhdGU/LnVzZEJ1eWluZ1JhdGUgPz8gMCwgcmF0ZS5jYkV4Y2hhbmdlUmF0ZT8uZXVyQnV5aW5nUmF0ZSA/PyAwXTtcclxuICB9XHJcbn1cclxuIiwiPGFicC1wYWdlIFt0aXRsZV09XCInS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6VGl0bGUnIHwgYWJwTG9jYWxpemF0aW9uXCI+XHJcbiAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyIGNsYXNzPVwiY29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1lbmQgbXgtMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gcHgtMSBwdC0wIHB0LW1kLTJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInByaW50KClcIiBbZGlzYWJsZWRdPVwiIXJlc3VsdFwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wcmludCBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgPHNwYW4+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOlByaW50JyB8IGFicExvY2FsaXphdGlvbiB9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTQgbWItM1wiPlxyXG4gICAgICA8bGliLWNvc3QtY2FsY3VsYXRpb24taW5wdXRzXHJcbiAgICAgICAgW2l0ZW1zRGF0YVNvdXJjZV09XCJpdGVtc0RhdGFTb3VyY2VcIlxyXG4gICAgICAgIFtpdGVtRGlzcGxheUV4cHJdPVwiaXRlbURpc3BsYXlFeHByXCJcclxuICAgICAgICBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzXCJcclxuICAgICAgICBbcGFyYW1ldGVyRGlzcGxheUV4cHJdPVwicGFyYW1ldGVyRGlzcGxheUV4cHJcIlxyXG4gICAgICAgIFtzdGFnZXNdPVwic3RhZ2VzXCJcclxuICAgICAgICBbKHNlbGVjdGVkSXRlbUNvZGUpXT1cInNlbGVjdGVkSXRlbUNvZGVcIlxyXG4gICAgICAgIFsoc2VsZWN0ZWRQYXJhbWV0ZXJDb2RlKV09XCJzZWxlY3RlZFBhcmFtZXRlckNvZGVcIlxyXG4gICAgICAgIFsocmF3T2lsUHJpY2UpXT1cInJhd09pbFByaWNlXCJcclxuICAgICAgICBbKHJhd09pbEN1cnJlbmN5KV09XCJyYXdPaWxDdXJyZW5jeVwiXHJcbiAgICAgICAgW3N5c3RlbVJhdGVVc2RdPVwic3lzdGVtUmF0ZVVzZFwiXHJcbiAgICAgICAgW3N5c3RlbVJhdGVFdXJdPVwic3lzdGVtUmF0ZUV1clwiXHJcbiAgICAgICAgWyhyYXRlVXNkKV09XCJyYXRlVXNkXCJcclxuICAgICAgICBbKHJhdGVFdXIpXT1cInJhdGVFdXJcIlxyXG4gICAgICAgIChpdGVtQ2hhbmdlKT1cIm9uSXRlbUNoYW5nZSgpXCJcclxuICAgICAgICAocGFyYW1ldGVyQ2hhbmdlKT1cIm9uUGFyYW1ldGVyQ2hhbmdlKClcIlxyXG4gICAgICAgIChyZWNhbGMpPVwiY2FsY3VsYXRlKClcIlxyXG4gICAgICA+PC9saWItY29zdC1jYWxjdWxhdGlvbi1pbnB1dHM+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTggbWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1wcmludC1ub25lXCI+XHJcbiAgICAgICAgPGxpYi1jb3N0LWNhbGN1bGF0aW9uLXJlc3VsdC1zdW0gW3JvbGVHcm91cHNdPVwicm9sZUdyb3Vwc1wiPjwvbGliLWNvc3QtY2FsY3VsYXRpb24tcmVzdWx0LXN1bT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgaWQ9XCJjb3N0LWNhbGN1bGF0aW9uLXJlc3VsdHNcIj5cclxuICAgICAgICA8bGliLWNvc3QtY2FsY3VsYXRpb24tcmVzdWx0cyBbcmVzdWx0XT1cInJlc3VsdFwiIFtyb2xlR3JvdXBzXT1cInJvbGVHcm91cHNcIiBbaXRlbU5hbWVdPVwic2VsZWN0ZWRJdGVtTmFtZVwiIFtyYXRlVXNkXT1cInJhdGVVc2RcIiBbcmF0ZUV1cl09XCJyYXRlRXVyXCI+PC9saWItY29zdC1jYWxjdWxhdGlvbi1yZXN1bHRzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1jYWxjdWxhdGlvbi5tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS1rZW9wcy9zcmMvbGliL2ZlYXR1cmVzL2Nvc3QtY2FsY3VsYXRpb24vY29zdC1jYWxjdWxhdGlvbi5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvc3RJdGVtQ2FsY3VsYXRpb25UeXBlIH0gZnJvbSAnQHByb3h5L2Nvc3QtaXRlbXMvY29zdC1pdGVtLWNhbGN1bGF0aW9uLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IEN1cnJlbmN5IH0gZnJvbSAnQHByb3h5L2N1cnJlbmNpZXMvY3VycmVuY3kuZW51bSc7XHJcbmltcG9ydCB7IENvc3RHcm91cFJvbGUgfSBmcm9tICdAcHJveHkvY29zdC1ncm91cHMvY29zdC1ncm91cC1yb2xlLmVudW0nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb3N0Q2FsY3VsYXRpb25JdGVtIHtcclxuICBjb3N0SXRlbUNvZGU6IHN0cmluZztcclxuICBjb3N0SXRlbU5hbWU6IHN0cmluZztcclxuICBjYWxjdWxhdGlvblR5cGU6IENvc3RJdGVtQ2FsY3VsYXRpb25UeXBlO1xyXG4gIHN5c3RlbUNvZGU/OiBudW1iZXI7XHJcbiAgY3VycmVuY3k/OiBDdXJyZW5jeTtcclxuICB2YWx1ZTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvc3RDYWxjdWxhdGlvblN0YWdlIHtcclxuICBncm91cENvZGU6IHN0cmluZztcclxuICBncm91cE5hbWU6IHN0cmluZztcclxuICBkaXNwbGF5T3JkZXI6IG51bWJlcjtcclxuICBncm91cFJvbGU6IENvc3RHcm91cFJvbGU7XHJcbiAgaXRlbXM6IENvc3RDYWxjdWxhdGlvbkl0ZW1bXTtcclxufVxyXG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { Currency } from '@proxy/currencies/currency.enum';
2
+ export function toAmount(baseUsd, rateUsd, rateEur) {
3
+ return {
4
+ usd: baseUsd,
5
+ try: baseUsd * rateUsd,
6
+ eur: rateEur > 0 ? (baseUsd * rateUsd) / rateEur : 0,
7
+ };
8
+ }
9
+ export function toBaseUsd(value, currency, rateUsd, rateEur) {
10
+ switch (currency) {
11
+ case Currency.USD:
12
+ return value;
13
+ case Currency.TRY:
14
+ return rateUsd <= 0 ? 0 : value / rateUsd;
15
+ case Currency.EUR:
16
+ return rateUsd <= 0 ? 0 : (value * rateEur) / rateUsd;
17
+ default:
18
+ return value;
19
+ }
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS1rZW9wcy9zcmMvbGliL2ZlYXR1cmVzL2Nvc3QtY2FsY3VsYXRpb24vZW5naW5lL2N1cnJlbmN5LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUczRCxNQUFNLFVBQVUsUUFBUSxDQUFDLE9BQWUsRUFBRSxPQUFlLEVBQUUsT0FBZTtJQUN4RSxPQUFPO1FBQ0wsR0FBRyxFQUFFLE9BQU87UUFDWixHQUFHLEVBQUUsT0FBTyxHQUFHLE9BQU87UUFDdEIsR0FBRyxFQUFFLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNyRCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQ3ZCLEtBQWEsRUFDYixRQUE4QixFQUM5QixPQUFlLEVBQ2YsT0FBZTtJQUVmLFFBQVEsUUFBUSxFQUFFO1FBQ2hCLEtBQUssUUFBUSxDQUFDLEdBQUc7WUFDZixPQUFPLEtBQUssQ0FBQztRQUNmLEtBQUssUUFBUSxDQUFDLEdBQUc7WUFDZixPQUFPLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztRQUM1QyxLQUFLLFFBQVEsQ0FBQyxHQUFHO1lBQ2YsT0FBTyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUN4RDtZQUNFLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1cnJlbmN5IH0gZnJvbSAnQHByb3h5L2N1cnJlbmNpZXMvY3VycmVuY3kuZW51bSc7XHJcbmltcG9ydCB7IENvc3RBbW91bnQgfSBmcm9tICcuL21vZGVscyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdG9BbW91bnQoYmFzZVVzZDogbnVtYmVyLCByYXRlVXNkOiBudW1iZXIsIHJhdGVFdXI6IG51bWJlcik6IENvc3RBbW91bnQge1xyXG4gIHJldHVybiB7XHJcbiAgICB1c2Q6IGJhc2VVc2QsXHJcbiAgICB0cnk6IGJhc2VVc2QgKiByYXRlVXNkLFxyXG4gICAgZXVyOiByYXRlRXVyID4gMCA/IChiYXNlVXNkICogcmF0ZVVzZCkgLyByYXRlRXVyIDogMCxcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdG9CYXNlVXNkKFxyXG4gIHZhbHVlOiBudW1iZXIsXHJcbiAgY3VycmVuY3k6IEN1cnJlbmN5IHwgdW5kZWZpbmVkLFxyXG4gIHJhdGVVc2Q6IG51bWJlcixcclxuICByYXRlRXVyOiBudW1iZXIsXHJcbik6IG51bWJlciB7XHJcbiAgc3dpdGNoIChjdXJyZW5jeSkge1xyXG4gICAgY2FzZSBDdXJyZW5jeS5VU0Q6XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIGNhc2UgQ3VycmVuY3kuVFJZOlxyXG4gICAgICByZXR1cm4gcmF0ZVVzZCA8PSAwID8gMCA6IHZhbHVlIC8gcmF0ZVVzZDtcclxuICAgIGNhc2UgQ3VycmVuY3kuRVVSOlxyXG4gICAgICByZXR1cm4gcmF0ZVVzZCA8PSAwID8gMCA6ICh2YWx1ZSAqIHJhdGVFdXIpIC8gcmF0ZVVzZDtcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,55 @@
1
+ import { toAmount, toBaseUsd } from './currency.utils';
2
+ import { indexItemsBySystemCode, resolveItems } from './item-resolver';
3
+ import { buildComputedBaseByCode, buildCostStages } from './stage-builder';
4
+ export function calculateLoss(rawOilUsd, resolvedItems) {
5
+ return (((rawOilUsd + resolvedItems.port + resolvedItems.inspectionCustoms + resolvedItems.freight) *
6
+ resolvedItems.lossRate) /
7
+ 100);
8
+ }
9
+ export function calculateProductionCost(rawOilUsd, resolvedItems, loss) {
10
+ return (rawOilUsd +
11
+ resolvedItems.port +
12
+ resolvedItems.inspectionCustoms +
13
+ resolvedItems.freight +
14
+ loss +
15
+ resolvedItems.refineryOverhead +
16
+ resolvedItems.refineryAuxMaterials +
17
+ resolvedItems.fillingPackagingOverhead);
18
+ }
19
+ export function calculateTotalCost(productionCost, resolvedItems) {
20
+ return (productionCost +
21
+ resolvedItems.packaging +
22
+ resolvedItems.salesMarketing +
23
+ resolvedItems.generalAdmin +
24
+ resolvedItems.finance +
25
+ resolvedItems.contingency +
26
+ resolvedItems.variableDepreciation);
27
+ }
28
+ export function calculateProfit(totalCost, profitRate) {
29
+ return (totalCost * profitRate) / 100;
30
+ }
31
+ export function calculateTotalSalePrice(totalCost, profit) {
32
+ return totalCost + profit;
33
+ }
34
+ export function calculateCost(request) {
35
+ const { rateUsd, rateEur } = request;
36
+ const rawOilUsd = toBaseUsd(request.rawOilPrice, request.rawOilCurrency, rateUsd, rateEur);
37
+ const itemsByCode = indexItemsBySystemCode(request.stages);
38
+ const resolvedItems = resolveItems(itemsByCode, rateUsd, rateEur);
39
+ const loss = calculateLoss(rawOilUsd, resolvedItems);
40
+ const productionCost = calculateProductionCost(rawOilUsd, resolvedItems, loss);
41
+ const totalCost = calculateTotalCost(productionCost, resolvedItems);
42
+ const profit = calculateProfit(totalCost, resolvedItems.profitRate);
43
+ const totalSalePrice = calculateTotalSalePrice(totalCost, profit);
44
+ const computedBaseByCode = buildComputedBaseByCode(resolvedItems, loss, profit);
45
+ const stages = buildCostStages(request.stages, computedBaseByCode, itemsByCode, rateUsd, rateEur);
46
+ return {
47
+ rawOil: toAmount(rawOilUsd, rateUsd, rateEur),
48
+ stages,
49
+ productionCost: toAmount(productionCost, rateUsd, rateEur),
50
+ totalCost: toAmount(totalCost, rateUsd, rateEur),
51
+ profit: toAmount(profit, rateUsd, rateEur),
52
+ totalSalePrice: toAmount(totalSalePrice, rateUsd, rateEur),
53
+ };
54
+ }
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXVsYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS1rZW9wcy9zcmMvbGliL2ZlYXR1cmVzL2Nvc3QtY2FsY3VsYXRpb24vZW5naW5lL2Zvcm11bGFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUczRSxNQUFNLFVBQVUsYUFBYSxDQUFDLFNBQWlCLEVBQUUsYUFBNEI7SUFDM0UsT0FBTyxDQUNMLENBQUMsQ0FBQyxTQUFTLEdBQUcsYUFBYSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsaUJBQWlCLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUN6RixhQUFhLENBQUMsUUFBUSxDQUFDO1FBQ3pCLEdBQUcsQ0FDSixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsU0FBaUIsRUFDakIsYUFBNEIsRUFDNUIsSUFBWTtJQUVaLE9BQU8sQ0FDTCxTQUFTO1FBQ1QsYUFBYSxDQUFDLElBQUk7UUFDbEIsYUFBYSxDQUFDLGlCQUFpQjtRQUMvQixhQUFhLENBQUMsT0FBTztRQUNyQixJQUFJO1FBQ0osYUFBYSxDQUFDLGdCQUFnQjtRQUM5QixhQUFhLENBQUMsb0JBQW9CO1FBQ2xDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FDdkMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsY0FBc0IsRUFBRSxhQUE0QjtJQUNyRixPQUFPLENBQ0wsY0FBYztRQUNkLGFBQWEsQ0FBQyxTQUFTO1FBQ3ZCLGFBQWEsQ0FBQyxjQUFjO1FBQzVCLGFBQWEsQ0FBQyxZQUFZO1FBQzFCLGFBQWEsQ0FBQyxPQUFPO1FBQ3JCLGFBQWEsQ0FBQyxXQUFXO1FBQ3pCLGFBQWEsQ0FBQyxvQkFBb0IsQ0FDbkMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLFNBQWlCLEVBQUUsVUFBa0I7SUFDbkUsT0FBTyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDeEMsQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxTQUFpQixFQUFFLE1BQWM7SUFDdkUsT0FBTyxTQUFTLEdBQUcsTUFBTSxDQUFDO0FBQzVCLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLE9BQXNCO0lBQ2xELE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ3JDLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNGLE1BQU0sV0FBVyxHQUFHLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRCxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVsRSxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sY0FBYyxHQUFHLHVCQUF1QixDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0UsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sY0FBYyxHQUFHLHVCQUF1QixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUVsRSxNQUFNLGtCQUFrQixHQUFHLHVCQUF1QixDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEYsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVsRyxPQUFPO1FBQ0wsTUFBTSxFQUFFLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUM3QyxNQUFNO1FBQ04sY0FBYyxFQUFFLFFBQVEsQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUMxRCxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ2hELE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUM7UUFDMUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQztLQUMzRCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRvQW1vdW50LCB0b0Jhc2VVc2QgfSBmcm9tICcuL2N1cnJlbmN5LnV0aWxzJztcclxuaW1wb3J0IHsgaW5kZXhJdGVtc0J5U3lzdGVtQ29kZSwgcmVzb2x2ZUl0ZW1zIH0gZnJvbSAnLi9pdGVtLXJlc29sdmVyJztcclxuaW1wb3J0IHsgYnVpbGRDb21wdXRlZEJhc2VCeUNvZGUsIGJ1aWxkQ29zdFN0YWdlcyB9IGZyb20gJy4vc3RhZ2UtYnVpbGRlcic7XHJcbmltcG9ydCB7IENvc3RSZXN1bHQsIEVuZ2luZVJlcXVlc3QsIFJlc29sdmVkSXRlbXMgfSBmcm9tICcuL21vZGVscyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlTG9zcyhyYXdPaWxVc2Q6IG51bWJlciwgcmVzb2x2ZWRJdGVtczogUmVzb2x2ZWRJdGVtcyk6IG51bWJlciB7XHJcbiAgcmV0dXJuIChcclxuICAgICgocmF3T2lsVXNkICsgcmVzb2x2ZWRJdGVtcy5wb3J0ICsgcmVzb2x2ZWRJdGVtcy5pbnNwZWN0aW9uQ3VzdG9tcyArIHJlc29sdmVkSXRlbXMuZnJlaWdodCkgKlxyXG4gICAgICByZXNvbHZlZEl0ZW1zLmxvc3NSYXRlKSAvXHJcbiAgICAxMDBcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlUHJvZHVjdGlvbkNvc3QoXHJcbiAgcmF3T2lsVXNkOiBudW1iZXIsXHJcbiAgcmVzb2x2ZWRJdGVtczogUmVzb2x2ZWRJdGVtcyxcclxuICBsb3NzOiBudW1iZXIsXHJcbik6IG51bWJlciB7XHJcbiAgcmV0dXJuIChcclxuICAgIHJhd09pbFVzZCArXHJcbiAgICByZXNvbHZlZEl0ZW1zLnBvcnQgK1xyXG4gICAgcmVzb2x2ZWRJdGVtcy5pbnNwZWN0aW9uQ3VzdG9tcyArXHJcbiAgICByZXNvbHZlZEl0ZW1zLmZyZWlnaHQgK1xyXG4gICAgbG9zcyArXHJcbiAgICByZXNvbHZlZEl0ZW1zLnJlZmluZXJ5T3ZlcmhlYWQgK1xyXG4gICAgcmVzb2x2ZWRJdGVtcy5yZWZpbmVyeUF1eE1hdGVyaWFscyArXHJcbiAgICByZXNvbHZlZEl0ZW1zLmZpbGxpbmdQYWNrYWdpbmdPdmVyaGVhZFxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVUb3RhbENvc3QocHJvZHVjdGlvbkNvc3Q6IG51bWJlciwgcmVzb2x2ZWRJdGVtczogUmVzb2x2ZWRJdGVtcyk6IG51bWJlciB7XHJcbiAgcmV0dXJuIChcclxuICAgIHByb2R1Y3Rpb25Db3N0ICtcclxuICAgIHJlc29sdmVkSXRlbXMucGFja2FnaW5nICtcclxuICAgIHJlc29sdmVkSXRlbXMuc2FsZXNNYXJrZXRpbmcgK1xyXG4gICAgcmVzb2x2ZWRJdGVtcy5nZW5lcmFsQWRtaW4gK1xyXG4gICAgcmVzb2x2ZWRJdGVtcy5maW5hbmNlICtcclxuICAgIHJlc29sdmVkSXRlbXMuY29udGluZ2VuY3kgK1xyXG4gICAgcmVzb2x2ZWRJdGVtcy52YXJpYWJsZURlcHJlY2lhdGlvblxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVQcm9maXQodG90YWxDb3N0OiBudW1iZXIsIHByb2ZpdFJhdGU6IG51bWJlcik6IG51bWJlciB7XHJcbiAgcmV0dXJuICh0b3RhbENvc3QgKiBwcm9maXRSYXRlKSAvIDEwMDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZVRvdGFsU2FsZVByaWNlKHRvdGFsQ29zdDogbnVtYmVyLCBwcm9maXQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgcmV0dXJuIHRvdGFsQ29zdCArIHByb2ZpdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUNvc3QocmVxdWVzdDogRW5naW5lUmVxdWVzdCk6IENvc3RSZXN1bHQge1xyXG4gIGNvbnN0IHsgcmF0ZVVzZCwgcmF0ZUV1ciB9ID0gcmVxdWVzdDtcclxuICBjb25zdCByYXdPaWxVc2QgPSB0b0Jhc2VVc2QocmVxdWVzdC5yYXdPaWxQcmljZSwgcmVxdWVzdC5yYXdPaWxDdXJyZW5jeSwgcmF0ZVVzZCwgcmF0ZUV1cik7XHJcbiAgY29uc3QgaXRlbXNCeUNvZGUgPSBpbmRleEl0ZW1zQnlTeXN0ZW1Db2RlKHJlcXVlc3Quc3RhZ2VzKTtcclxuICBjb25zdCByZXNvbHZlZEl0ZW1zID0gcmVzb2x2ZUl0ZW1zKGl0ZW1zQnlDb2RlLCByYXRlVXNkLCByYXRlRXVyKTtcclxuXHJcbiAgY29uc3QgbG9zcyA9IGNhbGN1bGF0ZUxvc3MocmF3T2lsVXNkLCByZXNvbHZlZEl0ZW1zKTtcclxuICBjb25zdCBwcm9kdWN0aW9uQ29zdCA9IGNhbGN1bGF0ZVByb2R1Y3Rpb25Db3N0KHJhd09pbFVzZCwgcmVzb2x2ZWRJdGVtcywgbG9zcyk7XHJcbiAgY29uc3QgdG90YWxDb3N0ID0gY2FsY3VsYXRlVG90YWxDb3N0KHByb2R1Y3Rpb25Db3N0LCByZXNvbHZlZEl0ZW1zKTtcclxuICBjb25zdCBwcm9maXQgPSBjYWxjdWxhdGVQcm9maXQodG90YWxDb3N0LCByZXNvbHZlZEl0ZW1zLnByb2ZpdFJhdGUpO1xyXG4gIGNvbnN0IHRvdGFsU2FsZVByaWNlID0gY2FsY3VsYXRlVG90YWxTYWxlUHJpY2UodG90YWxDb3N0LCBwcm9maXQpO1xyXG5cclxuICBjb25zdCBjb21wdXRlZEJhc2VCeUNvZGUgPSBidWlsZENvbXB1dGVkQmFzZUJ5Q29kZShyZXNvbHZlZEl0ZW1zLCBsb3NzLCBwcm9maXQpO1xyXG4gIGNvbnN0IHN0YWdlcyA9IGJ1aWxkQ29zdFN0YWdlcyhyZXF1ZXN0LnN0YWdlcywgY29tcHV0ZWRCYXNlQnlDb2RlLCBpdGVtc0J5Q29kZSwgcmF0ZVVzZCwgcmF0ZUV1cik7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICByYXdPaWw6IHRvQW1vdW50KHJhd09pbFVzZCwgcmF0ZVVzZCwgcmF0ZUV1ciksXHJcbiAgICBzdGFnZXMsXHJcbiAgICBwcm9kdWN0aW9uQ29zdDogdG9BbW91bnQocHJvZHVjdGlvbkNvc3QsIHJhdGVVc2QsIHJhdGVFdXIpLFxyXG4gICAgdG90YWxDb3N0OiB0b0Ftb3VudCh0b3RhbENvc3QsIHJhdGVVc2QsIHJhdGVFdXIpLFxyXG4gICAgcHJvZml0OiB0b0Ftb3VudChwcm9maXQsIHJhdGVVc2QsIHJhdGVFdXIpLFxyXG4gICAgdG90YWxTYWxlUHJpY2U6IHRvQW1vdW50KHRvdGFsU2FsZVByaWNlLCByYXRlVXNkLCByYXRlRXVyKSxcclxuICB9O1xyXG59XHJcbiJdfQ==