techlify-inventory-common 18.1.0 → 18.3.0

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 (216) hide show
  1. package/esm2022/lib/inventory-common/category/category-form/category-form.component.mjs +12 -12
  2. package/esm2022/lib/inventory-common/category/category-form-button/category-form-button.component.mjs +5 -5
  3. package/esm2022/lib/inventory-common/category/category-list-page/category-list-page.component.mjs +22 -26
  4. package/esm2022/lib/inventory-common/category/category-routing.module.mjs +10 -5
  5. package/esm2022/lib/inventory-common/category/category-view/category-view.component.mjs +46 -0
  6. package/esm2022/lib/inventory-common/category/category.module.mjs +23 -24
  7. package/esm2022/lib/inventory-common/category/category.service.mjs +6 -6
  8. package/esm2022/lib/inventory-common/inventory-common-routing.module.mjs +32 -18
  9. package/esm2022/lib/inventory-common/inventory-common.module.mjs +13 -9
  10. package/esm2022/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.mjs +12 -10
  11. package/esm2022/lib/inventory-common/inventory-value-report.service.mjs +21 -0
  12. package/esm2022/lib/inventory-common/location/location-delete-button/location-delete-button.component.mjs +68 -0
  13. package/esm2022/lib/inventory-common/location/location-form/location-form.component.mjs +86 -0
  14. package/esm2022/lib/inventory-common/location/location-form-button/location-form-button.component.mjs +35 -0
  15. package/esm2022/lib/inventory-common/location/location-information/location-information.component.mjs +34 -0
  16. package/esm2022/lib/inventory-common/location/location-list/location-list.component.mjs +121 -0
  17. package/esm2022/lib/inventory-common/location/location-product-statistics/location-product-statistics.component.mjs +127 -0
  18. package/esm2022/lib/inventory-common/location/location-routing.module.mjs +29 -0
  19. package/esm2022/lib/inventory-common/location/location-view/location-view.component.mjs +53 -0
  20. package/esm2022/lib/inventory-common/location/location.module.mjs +22 -0
  21. package/esm2022/lib/inventory-common/location/location.service.mjs +23 -0
  22. package/esm2022/lib/inventory-common/low-stock-report.service.mjs +23 -0
  23. package/esm2022/lib/inventory-common/material.module.mjs +37 -37
  24. package/esm2022/lib/inventory-common/measure/measure-delete/measure-delete-button/measure-delete-button.component.mjs +4 -4
  25. package/esm2022/lib/inventory-common/measure/measure-delete/measure-delete.module.mjs +4 -4
  26. package/esm2022/lib/inventory-common/measure/measure-form/measure-form/measure-form.component.mjs +14 -14
  27. package/esm2022/lib/inventory-common/measure/measure-form/measure-form-button/measure-form-button.component.mjs +5 -5
  28. package/esm2022/lib/inventory-common/measure/measure-form/measure-form.module.mjs +6 -6
  29. package/esm2022/lib/inventory-common/measure/measure-routing.module.mjs +5 -5
  30. package/esm2022/lib/inventory-common/measure/measure.module.mjs +10 -10
  31. package/esm2022/lib/inventory-common/measure/measure.service.mjs +6 -6
  32. package/esm2022/lib/inventory-common/measure/measures-list/measures-list.component.mjs +12 -18
  33. package/esm2022/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.component.mjs +13 -11
  34. package/esm2022/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.module.mjs +10 -24
  35. package/esm2022/lib/inventory-common/product/product-basic-info/product-basic-info.component.mjs +5 -5
  36. package/esm2022/lib/inventory-common/product/product-batch-update-form/product-batch-update-form.component.mjs +56 -0
  37. package/esm2022/lib/inventory-common/product/product-delete-button/product-delete-button.component.mjs +6 -6
  38. package/esm2022/lib/inventory-common/product/product-form/product-form.component.mjs +43 -45
  39. package/esm2022/lib/inventory-common/product/product-form-button/product-form-button.component.mjs +5 -5
  40. package/esm2022/lib/inventory-common/product/product-form.service.mjs +4 -4
  41. package/esm2022/lib/inventory-common/product/product-import-page/product-import-page.component.mjs +32 -32
  42. package/esm2022/lib/inventory-common/product/product-list/product-list.component.mjs +65 -87
  43. package/esm2022/lib/inventory-common/product/product-location/product-location-list/product-location-list.component.mjs +56 -0
  44. package/esm2022/lib/inventory-common/product/product-measure-form/product-measure-form.component.mjs +12 -12
  45. package/esm2022/lib/inventory-common/product/product-measures-list/product-measures-list.component.mjs +22 -28
  46. package/esm2022/lib/inventory-common/product/product-nav-bar/product-nav-bar.component.mjs +3 -3
  47. package/esm2022/lib/inventory-common/product/product-quick-search/product-quick-search.component.mjs +92 -0
  48. package/esm2022/lib/inventory-common/product/product-routing.module.mjs +17 -17
  49. package/esm2022/lib/inventory-common/product/product-statistics.service.mjs +23 -0
  50. package/esm2022/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.mjs +10 -16
  51. package/esm2022/lib/inventory-common/product/product-summary-chart/product-summary-chart.module.mjs +9 -20
  52. package/esm2022/lib/inventory-common/product/product-tax/product-tax-delete-button/product-tax-delete-button.component.mjs +6 -6
  53. package/esm2022/lib/inventory-common/product/product-tax/product-tax-form-button/product-tax-form-button.component.mjs +14 -14
  54. package/esm2022/lib/inventory-common/product/product-tax/product-tax-list/product-tax-list.component.mjs +6 -6
  55. package/esm2022/lib/inventory-common/product/product-tax/product-tax.module.mjs +9 -26
  56. package/esm2022/lib/inventory-common/product/product-tax/product-tax.service.mjs +6 -6
  57. package/esm2022/lib/inventory-common/product/product-view-page/product-view-page.component.mjs +9 -7
  58. package/esm2022/lib/inventory-common/product/product.module.mjs +37 -26
  59. package/esm2022/lib/inventory-common/product/product.service.mjs +7 -7
  60. package/esm2022/lib/inventory-common/product/widgets/product-category-badges/product-category-badges.component.mjs +15 -0
  61. package/esm2022/lib/inventory-common/product-batch.service.mjs +20 -0
  62. package/esm2022/lib/inventory-common/reports/inventory-value-report/inventory-value-report.component.mjs +168 -0
  63. package/esm2022/lib/inventory-common/reports/low-stock-report/low-stock-report.component.mjs +163 -0
  64. package/esm2022/lib/inventory-common/services/techlify-form-service.mjs +2 -2
  65. package/esm2022/lib/inventory-common/stock-issuances/stock-issuance-delete-button/stock-issuance-delete-button.component.mjs +6 -6
  66. package/esm2022/lib/inventory-common/stock-issuances/stock-issuance-delete-button/stock-issuance-delete-button.module.mjs +5 -5
  67. package/esm2022/lib/inventory-common/stock-issuances/stock-issuance.service.mjs +6 -6
  68. package/esm2022/lib/inventory-common/stock-issuances/stock-issuances-list/stock-issuances-list.component.mjs +84 -56
  69. package/esm2022/lib/inventory-common/stock-issuances/stock-issuances-list/stock-issuances-list.module.mjs +28 -12
  70. package/esm2022/lib/inventory-common/stock-issuances/stock-issuances-routing.module.mjs +5 -5
  71. package/esm2022/lib/inventory-common/stock-issuances/stock-issuances.module.mjs +14 -14
  72. package/esm2022/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form/stock-issue-form.component.mjs +14 -14
  73. package/esm2022/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form-button/stock-issue-form-button.component.mjs +5 -5
  74. package/esm2022/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form.module.mjs +13 -13
  75. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-delete-button/stock-receipt-delete-button.component.mjs +6 -6
  76. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form/stock-receipt-form.component.mjs +18 -18
  77. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form-button/stock-receipt-form-button.component.mjs +5 -5
  78. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form.module.mjs +12 -12
  79. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt.service.mjs +6 -6
  80. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-list-page/stock-receipts-list-page.component.mjs +82 -44
  81. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-routing.module.mjs +5 -5
  82. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts.module.mjs +24 -22
  83. package/esm2022/lib/inventory-common/stock-summary.service.mjs +5 -5
  84. package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-form/stock-transfer-form.component.mjs +105 -0
  85. package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-form-button/stock-transfer-form-button.component.mjs +38 -0
  86. package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-list/stock-transfer-list.component.mjs +77 -0
  87. package/esm2022/lib/inventory-common/stock-transfer/stock-transfer.service.mjs +18 -0
  88. package/esm2022/lib/inventory-common/supplier/payee-selector/payee-selector/payee-selector.component.mjs +9 -9
  89. package/esm2022/lib/inventory-common/supplier/payee-selector/payee-selector.module.mjs +10 -24
  90. package/esm2022/lib/inventory-common/supplier/supplier-delete-button/supplier-delete-button.component.mjs +64 -0
  91. package/esm2022/lib/inventory-common/supplier/supplier-form/supplier-form-button/supplier-form-button.component.mjs +43 -0
  92. package/esm2022/lib/inventory-common/supplier/supplier-form/supplier-form.component.mjs +24 -24
  93. package/esm2022/lib/inventory-common/supplier/supplier-form/supplier-form.service.mjs +4 -4
  94. package/esm2022/lib/inventory-common/supplier/supplier-information/supplier-information.component.mjs +16 -15
  95. package/esm2022/lib/inventory-common/supplier/supplier-routing.module.mjs +9 -16
  96. package/esm2022/lib/inventory-common/supplier/supplier-view/supplier-view.component.mjs +13 -14
  97. package/esm2022/lib/inventory-common/supplier/supplier.component.mjs +3 -3
  98. package/esm2022/lib/inventory-common/supplier/supplier.module.mjs +23 -15
  99. package/esm2022/lib/inventory-common/supplier/supplier.service.mjs +5 -5
  100. package/esm2022/lib/inventory-common/supplier/suppliers-list/suppliers-list.component.mjs +6 -65
  101. package/esm2022/lib/inventory-common/techlify-filter/techlify-filter.component.mjs +16 -18
  102. package/esm2022/lib/inventory-common/techlify-filter/techlify-filter.module.mjs +13 -9
  103. package/fesm2022/techlify-inventory-common-category.module-BsvJ6rVx.mjs +290 -0
  104. package/fesm2022/techlify-inventory-common-category.module-BsvJ6rVx.mjs.map +1 -0
  105. package/fesm2022/techlify-inventory-common-location.module-Cwx9mHKE.mjs +529 -0
  106. package/fesm2022/techlify-inventory-common-location.module-Cwx9mHKE.mjs.map +1 -0
  107. package/fesm2022/techlify-inventory-common-measure.module-C2v0-n_m.mjs +307 -0
  108. package/fesm2022/techlify-inventory-common-measure.module-C2v0-n_m.mjs.map +1 -0
  109. package/fesm2022/{techlify-inventory-common-stock-issuances.module-BQRRP-hW.mjs → techlify-inventory-common-stock-issuances.module-CPccetrp.mjs} +3 -5
  110. package/fesm2022/techlify-inventory-common-stock-issuances.module-CPccetrp.mjs.map +1 -0
  111. package/fesm2022/techlify-inventory-common-supplier.module-CYq-2pV1.mjs +464 -0
  112. package/fesm2022/techlify-inventory-common-supplier.module-CYq-2pV1.mjs.map +1 -0
  113. package/fesm2022/techlify-inventory-common-techlify-inventory-common-BMNkSTd6.mjs +3620 -0
  114. package/fesm2022/techlify-inventory-common-techlify-inventory-common-BMNkSTd6.mjs.map +1 -0
  115. package/fesm2022/techlify-inventory-common.mjs +1 -1
  116. package/lib/inventory-common/category/category-form/category-form.component.d.ts +4 -4
  117. package/lib/inventory-common/category/category-form-button/category-form-button.component.d.ts +2 -2
  118. package/lib/inventory-common/category/category-list-page/category-list-page.component.d.ts +4 -4
  119. package/lib/inventory-common/category/category-view/category-view.component.d.ts +16 -0
  120. package/lib/inventory-common/category/category.module.d.ts +12 -11
  121. package/lib/inventory-common/category/category.service.d.ts +1 -1
  122. package/lib/inventory-common/inventory-common.module.d.ts +2 -1
  123. package/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.d.ts +1 -1
  124. package/lib/inventory-common/inventory-value-report.service.d.ts +9 -0
  125. package/lib/inventory-common/location/location-delete-button/location-delete-button.component.d.ts +28 -0
  126. package/lib/inventory-common/location/location-form/location-form.component.d.ts +19 -0
  127. package/lib/inventory-common/location/location-form-button/location-form-button.component.d.ts +13 -0
  128. package/lib/inventory-common/location/location-information/location-information.component.d.ts +10 -0
  129. package/lib/inventory-common/location/location-list/location-list.component.d.ts +20 -0
  130. package/lib/inventory-common/location/location-product-statistics/location-product-statistics.component.d.ts +21 -0
  131. package/lib/inventory-common/location/location-routing.module.d.ts +7 -0
  132. package/lib/inventory-common/location/location-view/location-view.component.d.ts +16 -0
  133. package/lib/inventory-common/location/location.module.d.ts +8 -0
  134. package/lib/inventory-common/location/location.service.d.ts +10 -0
  135. package/lib/inventory-common/low-stock-report.service.d.ts +10 -0
  136. package/lib/inventory-common/measure/measure-delete/measure-delete-button/measure-delete-button.component.d.ts +3 -3
  137. package/lib/inventory-common/measure/measure-form/measure-form/measure-form.component.d.ts +4 -4
  138. package/lib/inventory-common/measure/measure-form/measure-form-button/measure-form-button.component.d.ts +2 -2
  139. package/lib/inventory-common/measure/measure.service.d.ts +1 -1
  140. package/lib/inventory-common/measure/measures-list/measures-list.component.d.ts +5 -5
  141. package/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.component.d.ts +3 -3
  142. package/lib/inventory-common/product/product-basic-info/product-basic-info.component.d.ts +2 -2
  143. package/lib/inventory-common/product/product-batch-update-form/product-batch-update-form.component.d.ts +18 -0
  144. package/lib/inventory-common/product/product-delete-button/product-delete-button.component.d.ts +4 -4
  145. package/lib/inventory-common/product/product-form/product-form.component.d.ts +6 -6
  146. package/lib/inventory-common/product/product-form-button/product-form-button.component.d.ts +3 -3
  147. package/lib/inventory-common/product/product-import-page/product-import-page.component.d.ts +2 -2
  148. package/lib/inventory-common/product/product-list/product-list.component.d.ts +15 -24
  149. package/lib/inventory-common/product/product-location/product-location-list/product-location-list.component.d.ts +15 -0
  150. package/lib/inventory-common/product/product-measure-form/product-measure-form.component.d.ts +6 -6
  151. package/lib/inventory-common/product/product-measures-list/product-measures-list.component.d.ts +7 -7
  152. package/lib/inventory-common/product/product-quick-search/product-quick-search.component.d.ts +15 -0
  153. package/lib/inventory-common/product/product-statistics.service.d.ts +9 -0
  154. package/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.d.ts +1 -1
  155. package/lib/inventory-common/product/product-tax/product-tax-delete-button/product-tax-delete-button.component.d.ts +4 -4
  156. package/lib/inventory-common/product/product-tax/product-tax-form-button/product-tax-form-button.component.d.ts +5 -5
  157. package/lib/inventory-common/product/product-tax/product-tax-list/product-tax-list.component.d.ts +2 -2
  158. package/lib/inventory-common/product/product-tax/product-tax.service.d.ts +1 -1
  159. package/lib/inventory-common/product/product-view-page/product-view-page.component.d.ts +4 -4
  160. package/lib/inventory-common/product/product.module.d.ts +16 -13
  161. package/lib/inventory-common/product/product.service.d.ts +2 -2
  162. package/lib/inventory-common/product/widgets/product-category-badges/product-category-badges.component.d.ts +6 -0
  163. package/lib/inventory-common/product-batch.service.d.ts +8 -0
  164. package/lib/inventory-common/reports/inventory-value-report/inventory-value-report.component.d.ts +26 -0
  165. package/lib/inventory-common/reports/low-stock-report/low-stock-report.component.d.ts +26 -0
  166. package/lib/inventory-common/stock-issuances/stock-issuance-delete-button/stock-issuance-delete-button.component.d.ts +4 -4
  167. package/lib/inventory-common/stock-issuances/stock-issuance.service.d.ts +1 -1
  168. package/lib/inventory-common/stock-issuances/stock-issuances-list/stock-issuances-list.component.d.ts +16 -8
  169. package/lib/inventory-common/stock-issuances/stock-issuances-list/stock-issuances-list.module.d.ts +3 -1
  170. package/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form/stock-issue-form.component.d.ts +4 -4
  171. package/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form-button/stock-issue-form-button.component.d.ts +2 -2
  172. package/lib/inventory-common/stock-receipts/stock-receipt-delete-button/stock-receipt-delete-button.component.d.ts +4 -4
  173. package/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form/stock-receipt-form.component.d.ts +4 -4
  174. package/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form-button/stock-receipt-form-button.component.d.ts +2 -2
  175. package/lib/inventory-common/stock-receipts/stock-receipt.service.d.ts +1 -1
  176. package/lib/inventory-common/stock-receipts/stock-receipts-list-page/stock-receipts-list-page.component.d.ts +12 -4
  177. package/lib/inventory-common/stock-receipts/stock-receipts.module.d.ts +2 -1
  178. package/lib/inventory-common/stock-summary.service.d.ts +1 -1
  179. package/lib/inventory-common/stock-transfer/stock-transfer-form/stock-transfer-form.component.d.ts +19 -0
  180. package/lib/inventory-common/stock-transfer/stock-transfer-form-button/stock-transfer-form-button.component.d.ts +14 -0
  181. package/lib/inventory-common/stock-transfer/stock-transfer-list/stock-transfer-list.component.d.ts +17 -0
  182. package/lib/inventory-common/stock-transfer/stock-transfer.service.d.ts +7 -0
  183. package/lib/inventory-common/supplier/payee-selector/payee-selector/payee-selector.component.d.ts +3 -3
  184. package/lib/inventory-common/supplier/supplier-delete-button/supplier-delete-button.component.d.ts +18 -0
  185. package/lib/inventory-common/supplier/supplier-form/supplier-form-button/supplier-form-button.component.d.ts +13 -0
  186. package/lib/inventory-common/supplier/supplier-form/supplier-form.component.d.ts +6 -6
  187. package/lib/inventory-common/supplier/supplier-information/supplier-information.component.d.ts +4 -4
  188. package/lib/inventory-common/supplier/supplier-view/supplier-view.component.d.ts +4 -4
  189. package/lib/inventory-common/supplier/supplier.component.d.ts +2 -2
  190. package/lib/inventory-common/supplier/supplier.module.d.ts +3 -1
  191. package/lib/inventory-common/supplier/supplier.service.d.ts +1 -1
  192. package/lib/inventory-common/supplier/suppliers-list/suppliers-list.component.d.ts +0 -8
  193. package/lib/inventory-common/techlify-filter/techlify-filter.component.d.ts +4 -4
  194. package/lib/inventory-common/techlify-filter/techlify-filter.module.d.ts +2 -1
  195. package/package.json +1 -1
  196. package/fesm2022/techlify-inventory-common-category.module-CNm2bEsx.mjs +0 -257
  197. package/fesm2022/techlify-inventory-common-category.module-CNm2bEsx.mjs.map +0 -1
  198. package/fesm2022/techlify-inventory-common-measure.module-BEaRHh5Z.mjs +0 -313
  199. package/fesm2022/techlify-inventory-common-measure.module-BEaRHh5Z.mjs.map +0 -1
  200. package/fesm2022/techlify-inventory-common-product.module-BV9Cy88x.mjs +0 -1168
  201. package/fesm2022/techlify-inventory-common-product.module-BV9Cy88x.mjs.map +0 -1
  202. package/fesm2022/techlify-inventory-common-stock-issuances-list.module-Dt6gx-ji.mjs +0 -436
  203. package/fesm2022/techlify-inventory-common-stock-issuances-list.module-Dt6gx-ji.mjs.map +0 -1
  204. package/fesm2022/techlify-inventory-common-stock-issuances.module-BQRRP-hW.mjs.map +0 -1
  205. package/fesm2022/techlify-inventory-common-stock-receipt-form.module-DND0GNlf.mjs +0 -302
  206. package/fesm2022/techlify-inventory-common-stock-receipt-form.module-DND0GNlf.mjs.map +0 -1
  207. package/fesm2022/techlify-inventory-common-stock-receipts.module-BvYaKITT.mjs +0 -253
  208. package/fesm2022/techlify-inventory-common-stock-receipts.module-BvYaKITT.mjs.map +0 -1
  209. package/fesm2022/techlify-inventory-common-supplier-form.component-DVBnhiyH.mjs +0 -177
  210. package/fesm2022/techlify-inventory-common-supplier-form.component-DVBnhiyH.mjs.map +0 -1
  211. package/fesm2022/techlify-inventory-common-supplier.module-Bwa7gx14.mjs +0 -608
  212. package/fesm2022/techlify-inventory-common-supplier.module-Bwa7gx14.mjs.map +0 -1
  213. package/fesm2022/techlify-inventory-common-techlify-form-service-CiVfwYTS.mjs +0 -14
  214. package/fesm2022/techlify-inventory-common-techlify-form-service-CiVfwYTS.mjs.map +0 -1
  215. package/fesm2022/techlify-inventory-common-techlify-inventory-common-GFYF7JCA.mjs +0 -495
  216. package/fesm2022/techlify-inventory-common-techlify-inventory-common-GFYF7JCA.mjs.map +0 -1
@@ -0,0 +1,121 @@
1
+ import { Component } from '@angular/core';
2
+ import { MatCard, MatCardContent } from '@angular/material/card';
3
+ import { SearchableSelectorModule, TechlifyListingControllerInterface } from 'ngx-techlify-core';
4
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
5
+ import { RouterLink } from '@angular/router';
6
+ import { debounceTime, distinctUntilChanged } from 'rxjs';
7
+ import { MatSort, MatSortHeader } from '@angular/material/sort';
8
+ import { DatePipe, NgIf } from '@angular/common';
9
+ import { InfiniteScrollDirective } from 'ngx-infinite-scroll';
10
+ import { MatCell, MatCellDef, MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, MatTable } from '@angular/material/table';
11
+ import { MatFormField, MatLabel } from '@angular/material/form-field';
12
+ import { MatInput } from '@angular/material/input';
13
+ import { MatProgressBar } from '@angular/material/progress-bar';
14
+ import { LocationFormButtonComponent } from '../location-form-button/location-form-button.component';
15
+ import { LocationDeleteButtonComponent } from '../location-delete-button/location-delete-button.component';
16
+ import * as i0 from "@angular/core";
17
+ import * as i1 from "../location.service";
18
+ import * as i2 from "@angular/forms";
19
+ import * as i3 from "ngx-techlify-core";
20
+ import * as i4 from "@angular/router";
21
+ export class LocationListComponent extends TechlifyListingControllerInterface {
22
+ service;
23
+ formBuilder;
24
+ requestHelperService;
25
+ activatedRoute;
26
+ displayedColumns = [
27
+ '#',
28
+ 'Title',
29
+ 'Address',
30
+ 'Description',
31
+ 'Actions',
32
+ ];
33
+ constructor(service, formBuilder, requestHelperService, activatedRoute) {
34
+ super();
35
+ this.service = service;
36
+ this.formBuilder = formBuilder;
37
+ this.requestHelperService = requestHelperService;
38
+ this.activatedRoute = activatedRoute;
39
+ this.lastPage = 0;
40
+ this.filterForm = this.formBuilder.group({
41
+ search: [''],
42
+ sort_by: ['id|desc'],
43
+ });
44
+ }
45
+ ngOnInit() {
46
+ this.requestHelperService.updateFormWithQueryParams(this.filterForm, {});
47
+ this.filterForm.valueChanges.pipe(debounceTime(800)).subscribe({
48
+ next: () => {
49
+ this.requestHelperService.updateQueryParams(this.requestHelperService.convertToFormData(this.filterForm.value));
50
+ }
51
+ });
52
+ // listen for route change
53
+ this.activatedRoute.queryParams
54
+ .pipe(debounceTime(500), distinctUntilChanged())
55
+ .subscribe((val) => {
56
+ this.reload();
57
+ });
58
+ }
59
+ loadData() {
60
+ if (this.isWorking) {
61
+ return;
62
+ }
63
+ const params = {
64
+ ...this.requestHelperService.convertToFormData(this.filterForm.value),
65
+ page: this.page,
66
+ perPage: this.perPage,
67
+ };
68
+ this.isWorking = true;
69
+ this.service.index(params).subscribe({
70
+ next: (response) => {
71
+ this.models = this.models?.concat(response?.data);
72
+ this.lastPage = response?.last_page;
73
+ this.isWorking = false;
74
+ },
75
+ error: () => (this.isWorking = false)
76
+ });
77
+ }
78
+ onSortChange(sort) {
79
+ let { active, direction } = sort;
80
+ if (!active)
81
+ active = 'id';
82
+ if (!direction)
83
+ direction = 'desc';
84
+ this.filterForm.get('sort_by')?.setValue(active + '|' + direction);
85
+ }
86
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocationListComponent, deps: [{ token: i1.LocationService }, { token: i2.FormBuilder }, { token: i3.RequestHelperService }, { token: i4.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
87
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LocationListComponent, isStandalone: true, selector: "app-location-list", usesInheritance: true, ngImport: i0, template: "<mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <div class=\"d-flex justify-content-start align-items-center gap-3\">\n <strong>Locations</strong>\n <app-location-form-button (saved)=\"modelCreated($event)\"></app-location-form-button>\n </div>\n <form class=\"d-flex justify-content-end align-items-center gap-2\"\n [formGroup]=\"filterForm\" (submit)=\"reload()\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input type=\"text\" placeholder=\"Search locations\" matInput formControlName=\"search\">\n </mat-form-field>\n </form>\n </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-3\">\n <mat-card-content class=\"p-0\">\n <table\n #table\n mat-table [dataSource]=\"models\" class=\"w-100\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n [fromRoot]=\"true\"\n matSort\n (matSortChange)=\"onSortChange($event)\"\n >\n\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Title\">\n <th mat-header-cell mat-sort-header=\"title\" *matHeaderCellDef> Title </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.title }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Address\">\n <th mat-header-cell mat-sort-header=\"address\" *matHeaderCellDef> Address </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.address }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.description }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element; let i = index\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <app-location-form-button\n [model]=\"element\"\n (saved)=\"modelUpdated($event, i)\"\n ></app-location-form-button>\n <a\n [routerLink]=\"['/inventory/locations', element?.id, 'view']\"\n class=\"text-decoration-none text-dark\"\n >\n <span class=\"material-symbols-outlined\">visibility</span>\n </a>\n <app-location-delete-button\n [model]=\"element\"\n (deleted)=\"modelDeleted(i)\"\n ></app-location-delete-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n", styles: [""], dependencies: [{ kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "directive", type: MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "component", type: MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "directive", type: MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: SearchableSelectorModule }, { kind: "directive", type: MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "component", type: LocationFormButtonComponent, selector: "app-location-form-button", inputs: ["model"], outputs: ["saved"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: LocationDeleteButtonComponent, selector: "app-location-delete-button", inputs: ["model"], outputs: ["deleted"] }], preserveWhitespaces: true });
88
+ }
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocationListComponent, decorators: [{
90
+ type: Component,
91
+ args: [{ selector: 'app-location-list', standalone: true, imports: [
92
+ MatCard,
93
+ MatCardContent,
94
+ DatePipe,
95
+ FormsModule,
96
+ InfiniteScrollDirective,
97
+ MatCell,
98
+ MatCellDef,
99
+ MatColumnDef,
100
+ MatFormField,
101
+ MatHeaderCell,
102
+ MatHeaderRow,
103
+ MatHeaderRowDef,
104
+ MatInput,
105
+ MatLabel,
106
+ MatProgressBar,
107
+ MatRow,
108
+ MatRowDef,
109
+ MatSort,
110
+ MatSortHeader,
111
+ MatTable,
112
+ NgIf,
113
+ ReactiveFormsModule,
114
+ SearchableSelectorModule,
115
+ MatHeaderCellDef,
116
+ LocationFormButtonComponent,
117
+ RouterLink,
118
+ LocationDeleteButtonComponent
119
+ ], template: "<mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <div class=\"d-flex justify-content-start align-items-center gap-3\">\n <strong>Locations</strong>\n <app-location-form-button (saved)=\"modelCreated($event)\"></app-location-form-button>\n </div>\n <form class=\"d-flex justify-content-end align-items-center gap-2\"\n [formGroup]=\"filterForm\" (submit)=\"reload()\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input type=\"text\" placeholder=\"Search locations\" matInput formControlName=\"search\">\n </mat-form-field>\n </form>\n </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-3\">\n <mat-card-content class=\"p-0\">\n <table\n #table\n mat-table [dataSource]=\"models\" class=\"w-100\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n [fromRoot]=\"true\"\n matSort\n (matSortChange)=\"onSortChange($event)\"\n >\n\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Title\">\n <th mat-header-cell mat-sort-header=\"title\" *matHeaderCellDef> Title </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.title }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Address\">\n <th mat-header-cell mat-sort-header=\"address\" *matHeaderCellDef> Address </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.address }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.description }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element; let i = index\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <app-location-form-button\n [model]=\"element\"\n (saved)=\"modelUpdated($event, i)\"\n ></app-location-form-button>\n <a\n [routerLink]=\"['/inventory/locations', element?.id, 'view']\"\n class=\"text-decoration-none text-dark\"\n >\n <span class=\"material-symbols-outlined\">visibility</span>\n </a>\n <app-location-delete-button\n [model]=\"element\"\n (deleted)=\"modelDeleted(i)\"\n ></app-location-delete-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n" }]
120
+ }], ctorParameters: () => [{ type: i1.LocationService }, { type: i2.FormBuilder }, { type: i3.RequestHelperService }, { type: i4.ActivatedRoute }] });
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9sb2NhdGlvbi9sb2NhdGlvbi1saXN0L2xvY2F0aW9uLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tbGlzdC9sb2NhdGlvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQXdCLHdCQUF3QixFQUFFLGtDQUFrQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkgsT0FBTyxFQUEwQixXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQWtCLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQVEsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFDTCxPQUFPLEVBQ1AsVUFBVSxFQUNWLFlBQVksRUFDWixhQUFhLEVBQUUsZ0JBQWdCLEVBQy9CLFlBQVksRUFDWixlQUFlLEVBQ2YsTUFBTSxF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QUFVO3dCQUNWLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixRQUFRO3dCQUNSLFFBQVE7d0JBQ1IsY0FBYzt3QkFDZCxNQUFNO3dCQUNOLFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCxhQUFhO3dCQUNiLFFBQVE7d0JBQ1IsSUFBSTt3QkFDSixtQkFBbUI7d0JBQ25CLHdCQUF3Qjt3QkFDeEIsZ0JBQWdCO3dCQUNoQiwyQkFBMkI7d0JBQzNCLFVBQVU7d0JBQ1YsNkJBQTZCO3FCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRDYXJkLCBNYXRDYXJkQ29udGVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgUmVxdWVzdEhlbHBlclNlcnZpY2UsIFNlYXJjaGFibGVTZWxlY3Rvck1vZHVsZSwgVGVjaGxpZnlMaXN0aW5nQ29udHJvbGxlckludGVyZmFjZSB9IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0U29ydCwgTWF0U29ydEhlYWRlciwgU29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgRGF0ZVBpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUgfSBmcm9tICduZ3gtaW5maW5pdGUtc2Nyb2xsJztcbmltcG9ydCB7XG4gIE1hdENlbGwsXG4gIE1hdENlbGxEZWYsXG4gIE1hdENvbHVtbkRlZixcbiAgTWF0SGVhZGVyQ2VsbCwgTWF0SGVhZGVyQ2VsbERlZixcbiAgTWF0SGVhZGVyUm93LFxuICBNYXRIZWFkZXJSb3dEZWYsXG4gIE1hdFJvdywgTWF0Um93RGVmLCBNYXRUYWJsZVxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdExhYmVsIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcbmltcG9ydCB7IExvY2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2xvY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYXRpb25Gb3JtQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9jYXRpb24tZm9ybS1idXR0b24vbG9jYXRpb24tZm9ybS1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IExvY2F0aW9uRGVsZXRlQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9jYXRpb24tZGVsZXRlLWJ1dHRvbi9sb2NhdGlvbi1kZWxldGUtYnV0dG9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1sb2NhdGlvbi1saXN0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdENhcmQsXG4gICAgTWF0Q2FyZENvbnRlbnQsXG4gICAgRGF0ZVBpcGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUsXG4gICAgTWF0Q2VsbCxcbiAgICBNYXRDZWxsRGVmLFxuICAgIE1hdENvbHVtbkRlZixcbiAgICBNYXRGb3JtRmllbGQsXG4gICAgTWF0SGVhZGVyQ2VsbCxcbiAgICBNYXRIZWFkZXJSb3csXG4gICAgTWF0SGVhZGVyUm93RGVmLFxuICAgIE1hdElucHV0LFxuICAgIE1hdExhYmVsLFxuICAgIE1hdFByb2dyZXNzQmFyLFxuICAgIE1hdFJvdyxcbiAgICBNYXRSb3dEZWYsXG4gICAgTWF0U29ydCxcbiAgICBNYXRTb3J0SGVhZGVyLFxuICAgIE1hdFRhYmxlLFxuICAgIE5nSWYsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTZWFyY2hhYmxlU2VsZWN0b3JNb2R1bGUsXG4gICAgTWF0SGVhZGVyQ2VsbERlZixcbiAgICBMb2NhdGlvbkZvcm1CdXR0b25Db21wb25lbnQsXG4gICAgUm91dGVyTGluayxcbiAgICBMb2NhdGlvbkRlbGV0ZUJ1dHRvbkNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9jYXRpb24tbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9sb2NhdGlvbi1saXN0LmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBMb2NhdGlvbkxpc3RDb21wb25lbnQgZXh0ZW5kcyBUZWNobGlmeUxpc3RpbmdDb250cm9sbGVySW50ZXJmYWNlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbXG4gICAgJyMnLFxuICAgICdUaXRsZScsXG4gICAgJ0FkZHJlc3MnLFxuICAgICdEZXNjcmlwdGlvbicsXG4gICAgJ0FjdGlvbnMnLFxuICBdXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBMb2NhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZXF1ZXN0SGVscGVyU2VydmljZTogUmVxdWVzdEhlbHBlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5sYXN0UGFnZSA9IDA7XG5cbiAgICB0aGlzLmZpbHRlckZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHNlYXJjaDogWycnXSxcbiAgICAgIHNvcnRfYnk6IFsnaWR8ZGVzYyddLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZXF1ZXN0SGVscGVyU2VydmljZS51cGRhdGVGb3JtV2l0aFF1ZXJ5UGFyYW1zKFxuICAgICAgdGhpcy5maWx0ZXJGb3JtLFxuICAgICAge31cbiAgICApO1xuXG4gICAgKHRoaXMuZmlsdGVyRm9ybSBhcyBGb3JtR3JvdXApLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDgwMClcbiAgICApLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVxdWVzdEhlbHBlclNlcnZpY2UudXBkYXRlUXVlcnlQYXJhbXMoXG4gICAgICAgICAgdGhpcy5yZXF1ZXN0SGVscGVyU2VydmljZS5jb252ZXJ0VG9Gb3JtRGF0YSh0aGlzLmZpbHRlckZvcm0udmFsdWUpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBsaXN0ZW4gZm9yIHJvdXRlIGNoYW5nZVxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXNcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnN1YnNjcmliZSgodmFsOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbG9hZERhdGEoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNXb3JraW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1xuICAgICAgLi4udGhpcy5yZXF1ZXN0SGVscGVyU2VydmljZS5jb252ZXJ0VG9Gb3JtRGF0YSh0aGlzLmZpbHRlckZvcm0udmFsdWUpLFxuICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgcGVyUGFnZTogdGhpcy5wZXJQYWdlLFxuICAgIH1cbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLmluZGV4KHBhcmFtcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubW9kZWxzID0gdGhpcy5tb2RlbHM/LmNvbmNhdChyZXNwb25zZT8uZGF0YSk7XG4gICAgICAgIHRoaXMubGFzdFBhZ2UgPSByZXNwb25zZT8ubGFzdF9wYWdlO1xuICAgICAgICB0aGlzLmlzV29ya2luZyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5pc1dvcmtpbmcgPSBmYWxzZSlcbiAgICB9KTtcbiAgfVxuXG4gIG9uU29ydENoYW5nZShzb3J0OiBTb3J0KSB7XG4gICAgbGV0IHsgYWN0aXZlLCBkaXJlY3Rpb24gfSA9IHNvcnQ7XG4gICAgaWYgKCFhY3RpdmUpIGFjdGl2ZSA9ICdpZCc7XG4gICAgaWYgKCFkaXJlY3Rpb24pIGRpcmVjdGlvbiA9ICdkZXNjJztcblxuICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoJ3NvcnRfYnknKT8uc2V0VmFsdWUoYWN0aXZlICsgJ3wnICsgZGlyZWN0aW9uKTtcbiAgfVxufVxuIiwiPG1hdC1jYXJkPlxuICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgIDxzdHJvbmc+TG9jYXRpb25zPC9zdHJvbmc+XG4gICAgICA8YXBwLWxvY2F0aW9uLWZvcm0tYnV0dG9uIChzYXZlZCk9XCJtb2RlbENyZWF0ZWQoJGV2ZW50KVwiPjwvYXBwLWxvY2F0aW9uLWZvcm0tYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxmb3JtIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCJcbiAgICAgICAgICBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIiAoc3VibWl0KT1cInJlbG9hZCgpXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtbGFiZWw+U2VhcmNoPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGxvY2F0aW9uc1wiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Zvcm0+XG4gIDwvbWF0LWNhcmQtY29udGVudD5cbjwvbWF0LWNhcmQ+XG5cbjxtYXQtY2FyZCBjbGFzcz1cIm10LTNcIj5cbiAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJwLTBcIj5cbiAgICA8dGFibGVcbiAgICAgICN0YWJsZVxuICAgICAgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cIm1vZGVsc1wiIGNsYXNzPVwidy0xMDBcIlxuICAgICAgaW5maW5pdGVTY3JvbGxcbiAgICAgIFtpbmZpbml0ZVNjcm9sbERpc3RhbmNlXT1cIjJcIlxuICAgICAgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwiNTBcIlxuICAgICAgKHNjcm9sbGVkKT1cIm9uU2Nyb2xsKClcIlxuICAgICAgW2Zyb21Sb290XT1cInRydWVcIlxuICAgICAgbWF0U29ydFxuICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCRldmVudClcIlxuICAgID5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCIjXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+ICMgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCBpID0gaW5kZXhcIj57eyBpICsgMSB9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJUaXRsZVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsIG1hdC1zb3J0LWhlYWRlcj1cInRpdGxlXCIgKm1hdEhlYWRlckNlbGxEZWY+IFRpdGxlIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8udGl0bGUgfX08L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiQWRkcmVzc1wiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsIG1hdC1zb3J0LWhlYWRlcj1cImFkZHJlc3NcIiAqbWF0SGVhZGVyQ2VsbERlZj4gQWRkcmVzcyA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7IGVsZW1lbnQ/LmFkZHJlc3MgfX08L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiRGVzY3JpcHRpb25cIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gRGVzY3JpcHRpb24gPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj57eyBlbGVtZW50Py5kZXNjcmlwdGlvbiB9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJBY3Rpb25zXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IEFjdGlvbnMgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxhcHAtbG9jYXRpb24tZm9ybS1idXR0b25cbiAgICAgICAgICAgICAgW21vZGVsXT1cImVsZW1lbnRcIlxuICAgICAgICAgICAgICAoc2F2ZWQpPVwibW9kZWxVcGRhdGVkKCRldmVudCwgaSlcIlxuICAgICAgICAgICAgPjwvYXBwLWxvY2F0aW9uLWZvcm0tYnV0dG9uPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvaW52ZW50b3J5L2xvY2F0aW9ucycsIGVsZW1lbnQ/LmlkLCAndmlldyddXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LWRhcmtcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj52aXNpYmlsaXR5PC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPGFwcC1sb2NhdGlvbi1kZWxldGUtYnV0dG9uXG4gICAgICAgICAgICAgIFttb2RlbF09XCJlbGVtZW50XCJcbiAgICAgICAgICAgICAgKGRlbGV0ZWQpPVwibW9kZWxEZWxldGVkKGkpXCJcbiAgICAgICAgICAgID48L2FwcC1sb2NhdGlvbi1kZWxldGUtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIj48L3RyPlxuICAgIDwvdGFibGU+XG4gICAgPG1hdC1wcm9ncmVzcy1iYXIgKm5nSWY9XCJpc1dvcmtpbmdcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuPC9tYXQtY2FyZD5cbiJdfQ==
@@ -0,0 +1,127 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { TechlifyListingControllerInterface } from 'ngx-techlify-core';
3
+ import { MatCard, MatCardContent } from '@angular/material/card';
4
+ import { ProductModule } from '../../product/product.module';
5
+ import { MatProgressBar } from '@angular/material/progress-bar';
6
+ import { NgIf } from '@angular/common';
7
+ import { MatCell, MatCellDef, MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, MatTable } from '@angular/material/table';
8
+ import { RouterLink } from '@angular/router';
9
+ import { InfiniteScrollDirective } from 'ngx-infinite-scroll';
10
+ import { MatSort } from '@angular/material/sort';
11
+ import { debounceTime, distinctUntilChanged } from 'rxjs';
12
+ import { ProductCategoryBadgesComponent } from '../../product/widgets/product-category-badges/product-category-badges.component';
13
+ import { StockTransferFormButtonComponent } from '../../stock-transfer/stock-transfer-form-button/stock-transfer-form-button.component';
14
+ import { MatDivider } from '@angular/material/divider';
15
+ import * as i0 from "@angular/core";
16
+ import * as i1 from "../location.service";
17
+ import * as i2 from "@angular/forms";
18
+ import * as i3 from "ngx-techlify-core";
19
+ import * as i4 from "@angular/router";
20
+ export class LocationProductStatisticsComponent extends TechlifyListingControllerInterface {
21
+ service;
22
+ formBuilder;
23
+ requestHelperService;
24
+ activatedRoute;
25
+ location;
26
+ displayedColumns = [
27
+ '#',
28
+ 'SKU',
29
+ 'Product',
30
+ 'Category',
31
+ 'Quantity',
32
+ 'Actions'
33
+ ];
34
+ constructor(service, formBuilder, requestHelperService, activatedRoute) {
35
+ super();
36
+ this.service = service;
37
+ this.formBuilder = formBuilder;
38
+ this.requestHelperService = requestHelperService;
39
+ this.activatedRoute = activatedRoute;
40
+ this.lastPage = 0;
41
+ this.filterForm = this.formBuilder.group({
42
+ search: [''],
43
+ sort_by: ['id|desc'],
44
+ });
45
+ }
46
+ ngOnInit() {
47
+ this.requestHelperService.updateFormWithQueryParams(this.filterForm, {});
48
+ this.filterForm.valueChanges.pipe(debounceTime(800)).subscribe({
49
+ next: () => {
50
+ this.requestHelperService.updateQueryParams(this.requestHelperService.convertToFormData(this.filterForm.value));
51
+ }
52
+ });
53
+ // listen for route change
54
+ this.activatedRoute.queryParams
55
+ .pipe(debounceTime(500), distinctUntilChanged())
56
+ .subscribe((val) => {
57
+ this.reload();
58
+ });
59
+ }
60
+ loadData() {
61
+ if (this.isWorking) {
62
+ return;
63
+ }
64
+ const params = {
65
+ ...this.requestHelperService.convertToFormData(this.filterForm.value),
66
+ page: this.page,
67
+ perPage: this.perPage,
68
+ with: 'categories',
69
+ };
70
+ this.isWorking = true;
71
+ this.service.productStatistics(this.location, params).subscribe({
72
+ next: (response) => {
73
+ this.models = this.models?.concat(response?.data);
74
+ this.lastPage = response?.last_page;
75
+ this.isWorking = false;
76
+ },
77
+ error: () => (this.isWorking = false)
78
+ });
79
+ }
80
+ onSortChange(sort) {
81
+ let { active, direction } = sort;
82
+ if (!active)
83
+ active = 'id';
84
+ if (!direction)
85
+ direction = 'desc';
86
+ this.filterForm.get('sort_by')?.setValue(active + '|' + direction);
87
+ }
88
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocationProductStatisticsComponent, deps: [{ token: i1.LocationService }, { token: i2.FormBuilder }, { token: i3.RequestHelperService }, { token: i4.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
89
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LocationProductStatisticsComponent, isStandalone: true, selector: "app-location-product-statistics", inputs: { location: "location" }, usesInheritance: true, ngImport: i0, template: "<mat-card>\n <mat-card-content>\n <h3>Location Products</h3>\n </mat-card-content>\n <mat-divider class=\"mt-3\"></mat-divider>\n <mat-card-content class=\"p-0\">\n <table\n #table\n mat-table [dataSource]=\"models\" class=\"w-100\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n [fromRoot]=\"true\"\n matSort\n (matSortChange)=\"onSortChange($event)\"\n >\n\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"SKU\">\n <th mat-header-cell *matHeaderCellDef> SKU </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.sku }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Product\">\n <th mat-header-cell *matHeaderCellDef> Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <a\n class=\"text-dark\"\n [routerLink]=\"['/inventory/products', element.id, 'view']\"\n >\n {{ element?.name }}\n </a>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"Category\">\n <th mat-header-cell *matHeaderCellDef> Category </th>\n <td mat-cell *matCellDef=\"let element\">\n <app-product-category-badges [product]=\"element\"></app-product-category-badges>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"Quantity\">\n <th mat-header-cell *matHeaderCellDef> Quantity </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.current_stock }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"Actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element; let i = index\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <app-stock-transfer-form-button\n *ngIf=\"location?.id\"\n [productId]=\"element?.id\"\n (saved)=\"reload()\"\n ></app-stock-transfer-form-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n", styles: [""], dependencies: [{ kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: ProductModule }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "component", type: MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "directive", type: MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: ProductCategoryBadgesComponent, selector: "app-product-category-badges", inputs: ["product"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: StockTransferFormButtonComponent, selector: "app-stock-transfer-form-button", inputs: ["productId"], outputs: ["saved"] }, { kind: "component", type: MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], preserveWhitespaces: true });
90
+ }
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocationProductStatisticsComponent, decorators: [{
92
+ type: Component,
93
+ args: [{ selector: 'app-location-product-statistics', standalone: true, imports: [
94
+ MatCard,
95
+ MatCardContent,
96
+ ProductModule,
97
+ MatProgressBar,
98
+ NgIf,
99
+ MatHeaderCellDef,
100
+ MatHeaderCellDef,
101
+ MatCellDef,
102
+ MatCellDef,
103
+ MatHeaderRowDef,
104
+ MatRowDef,
105
+ MatCell,
106
+ MatCell,
107
+ MatRow,
108
+ MatColumnDef,
109
+ MatHeaderCell,
110
+ MatTable,
111
+ InfiniteScrollDirective,
112
+ InfiniteScrollDirective,
113
+ InfiniteScrollDirective,
114
+ InfiniteScrollDirective,
115
+ InfiniteScrollDirective,
116
+ MatHeaderRow,
117
+ MatSort,
118
+ MatSort,
119
+ ProductCategoryBadgesComponent,
120
+ RouterLink,
121
+ StockTransferFormButtonComponent,
122
+ MatDivider
123
+ ], template: "<mat-card>\n <mat-card-content>\n <h3>Location Products</h3>\n </mat-card-content>\n <mat-divider class=\"mt-3\"></mat-divider>\n <mat-card-content class=\"p-0\">\n <table\n #table\n mat-table [dataSource]=\"models\" class=\"w-100\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n [fromRoot]=\"true\"\n matSort\n (matSortChange)=\"onSortChange($event)\"\n >\n\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"SKU\">\n <th mat-header-cell *matHeaderCellDef> SKU </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.sku }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Product\">\n <th mat-header-cell *matHeaderCellDef> Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <a\n class=\"text-dark\"\n [routerLink]=\"['/inventory/products', element.id, 'view']\"\n >\n {{ element?.name }}\n </a>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"Category\">\n <th mat-header-cell *matHeaderCellDef> Category </th>\n <td mat-cell *matCellDef=\"let element\">\n <app-product-category-badges [product]=\"element\"></app-product-category-badges>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"Quantity\">\n <th mat-header-cell *matHeaderCellDef> Quantity </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.current_stock }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"Actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element; let i = index\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <app-stock-transfer-form-button\n *ngIf=\"location?.id\"\n [productId]=\"element?.id\"\n (saved)=\"reload()\"\n ></app-stock-transfer-form-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n" }]
124
+ }], ctorParameters: () => [{ type: i1.LocationService }, { type: i2.FormBuilder }, { type: i3.RequestHelperService }, { type: i4.ActivatedRoute }], propDecorators: { location: [{
125
+ type: Input
126
+ }] } });
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tcHJvZHVjdC1zdGF0aXN0aWNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL2xvY2F0aW9uL2xvY2F0aW9uLXByb2R1Y3Qtc3RhdGlzdGljcy9sb2NhdGlvbi1wcm9kdWN0LXN0YXRpc3RpY3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tcHJvZHVjdC1zdGF0aXN0aWNzL2xvY2F0aW9uLXByb2R1Y3Qtc3RhdGlzdGljcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQXVCLGtDQUFrQyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDM0YsT0FBTyxFQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFFM0QsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsT0FBTyxFQUNQLFVBQVUsRUFDVixZQUFZLEVBQ1osYUFBYSxFQUNiLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osZUFBZSxFQUNmLE1BQU0sRUFDTixTQUFTLEVBQ1QsUUFBUSxFQUNULE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFpQixVQUFVLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsdUJBQXVC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aEIsVUFBVTt3QkFDVixVQUFVO3dCQUNWLGVBQWU7d0JBQ2YsU0FBUzt3QkFDVCxPQUFPO3dCQUNQLE9BQU87d0JBQ1AsTUFBTTt3QkFDTixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsUUFBUTt3QkFDUix1QkFBdUI7d0JBQ3ZCLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLHVCQUF1Qjt3QkFDdkIsWUFBWTt3QkFDWixPQUFPO3dCQUNQLE9BQU87d0JBQ1AsOEJBQThCO3dCQUM5QixVQUFVO3dCQUNWLGdDQUFnQzt3QkFDaEMsVUFBVTtxQkFDWDs4S0FLUSxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMb2NhdGlvblNlcnZpY2V9IGZyb20gJy4uL2xvY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtSZXF1ZXN0SGVscGVyU2VydmljZSwgVGVjaGxpZnlMaXN0aW5nQ29udHJvbGxlckludGVyZmFjZX0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuaW1wb3J0IHtNYXRDYXJkLCBNYXRDYXJkQ29udGVudH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQge1Byb2R1Y3RNb2R1bGV9IGZyb20gJy4uLy4uL3Byb2R1Y3QvcHJvZHVjdC5tb2R1bGUnO1xuaW1wb3J0IHtGb3JtQnVpbGRlciwgRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01hdFByb2dyZXNzQmFyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHtOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgTWF0Q2VsbCxcbiAgTWF0Q2VsbERlZixcbiAgTWF0Q29sdW1uRGVmLFxuICBNYXRIZWFkZXJDZWxsLFxuICBNYXRIZWFkZXJDZWxsRGVmLFxuICBNYXRIZWFkZXJSb3csXG4gIE1hdEhlYWRlclJvd0RlZixcbiAgTWF0Um93LFxuICBNYXRSb3dEZWYsXG4gIE1hdFRhYmxlXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlckxpbmt9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0luZmluaXRlU2Nyb2xsRGlyZWN0aXZlfSBmcm9tICduZ3gtaW5maW5pdGUtc2Nyb2xsJztcbmltcG9ydCB7TWF0U29ydCwgU29ydH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWR9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgUHJvZHVjdENhdGVnb3J5QmFkZ2VzQ29tcG9uZW50XG59IGZyb20gJy4uLy4uL3Byb2R1Y3Qvd2lkZ2V0cy9wcm9kdWN0LWNhdGVnb3J5LWJhZGdlcy9wcm9kdWN0LWNhdGVnb3J5LWJhZGdlcy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgU3RvY2tUcmFuc2ZlckZvcm1CdXR0b25Db21wb25lbnRcbn0gZnJvbSAnLi4vLi4vc3RvY2stdHJhbnNmZXIvc3RvY2stdHJhbnNmZXItZm9ybS1idXR0b24vc3RvY2stdHJhbnNmZXItZm9ybS1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7TWF0RGl2aWRlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1sb2NhdGlvbi1wcm9kdWN0LXN0YXRpc3RpY3MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0Q2FyZCxcbiAgICBNYXRDYXJkQ29udGVudCxcbiAgICBQcm9kdWN0TW9kdWxlLFxuICAgIE1hdFByb2dyZXNzQmFyLFxuICAgIE5nSWYsXG4gICAgTWF0SGVhZGVyQ2VsbERlZixcbiAgICBNYXRIZWFkZXJDZWxsRGVmLFxuICAgIE1hdENlbGxEZWYsXG4gICAgTWF0Q2VsbERlZixcbiAgICBNYXRIZWFkZXJSb3dEZWYsXG4gICAgTWF0Um93RGVmLFxuICAgIE1hdENlbGwsXG4gICAgTWF0Q2VsbCxcbiAgICBNYXRSb3csXG4gICAgTWF0Q29sdW1uRGVmLFxuICAgIE1hdEhlYWRlckNlbGwsXG4gICAgTWF0VGFibGUsXG4gICAgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUsXG4gICAgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUsXG4gICAgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUsXG4gICAgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUsXG4gICAgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUsXG4gICAgTWF0SGVhZGVyUm93LFxuICAgIE1hdFNvcnQsXG4gICAgTWF0U29ydCxcbiAgICBQcm9kdWN0Q2F0ZWdvcnlCYWRnZXNDb21wb25lbnQsXG4gICAgUm91dGVyTGluayxcbiAgICBTdG9ja1RyYW5zZmVyRm9ybUJ1dHRvbkNvbXBvbmVudCxcbiAgICBNYXREaXZpZGVyXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2NhdGlvbi1wcm9kdWN0LXN0YXRpc3RpY3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbG9jYXRpb24tcHJvZHVjdC1zdGF0aXN0aWNzLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBMb2NhdGlvblByb2R1Y3RTdGF0aXN0aWNzQ29tcG9uZW50IGV4dGVuZHMgVGVjaGxpZnlMaXN0aW5nQ29udHJvbGxlckludGVyZmFjZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGxvY2F0aW9uOiBhbnk7XG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW1xuICAgICcjJyxcbiAgICAnU0tVJyxcbiAgICAnUHJvZHVjdCcsXG4gICAgJ0NhdGVnb3J5JyxcbiAgICAnUXVhbnRpdHknLFxuICAgICdBY3Rpb25zJ1xuICBdXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBMb2NhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZXF1ZXN0SGVscGVyU2VydmljZTogUmVxdWVzdEhlbHBlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5sYXN0UGFnZSA9IDA7XG5cbiAgICB0aGlzLmZpbHRlckZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHNlYXJjaDogWycnXSxcbiAgICAgIHNvcnRfYnk6IFsnaWR8ZGVzYyddLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZXF1ZXN0SGVscGVyU2VydmljZS51cGRhdGVGb3JtV2l0aFF1ZXJ5UGFyYW1zKFxuICAgICAgdGhpcy5maWx0ZXJGb3JtLFxuICAgICAge31cbiAgICApO1xuXG4gICAgKHRoaXMuZmlsdGVyRm9ybSBhcyBGb3JtR3JvdXApLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDgwMClcbiAgICApLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVxdWVzdEhlbHBlclNlcnZpY2UudXBkYXRlUXVlcnlQYXJhbXMoXG4gICAgICAgICAgdGhpcy5yZXF1ZXN0SGVscGVyU2VydmljZS5jb252ZXJ0VG9Gb3JtRGF0YSh0aGlzLmZpbHRlckZvcm0udmFsdWUpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBsaXN0ZW4gZm9yIHJvdXRlIGNoYW5nZVxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXNcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnN1YnNjcmliZSgodmFsOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbG9hZERhdGEoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNXb3JraW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1xuICAgICAgLi4udGhpcy5yZXF1ZXN0SGVscGVyU2VydmljZS5jb252ZXJ0VG9Gb3JtRGF0YSh0aGlzLmZpbHRlckZvcm0udmFsdWUpLFxuICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgcGVyUGFnZTogdGhpcy5wZXJQYWdlLFxuICAgICAgd2l0aDogJ2NhdGVnb3JpZXMnLFxuICAgIH1cbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLnByb2R1Y3RTdGF0aXN0aWNzKHRoaXMubG9jYXRpb24sIHBhcmFtcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubW9kZWxzID0gdGhpcy5tb2RlbHM/LmNvbmNhdChyZXNwb25zZT8uZGF0YSk7XG4gICAgICAgIHRoaXMubGFzdFBhZ2UgPSByZXNwb25zZT8ubGFzdF9wYWdlO1xuICAgICAgICB0aGlzLmlzV29ya2luZyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5pc1dvcmtpbmcgPSBmYWxzZSlcbiAgICB9KTtcbiAgfVxuXG4gIG9uU29ydENoYW5nZShzb3J0OiBTb3J0KSB7XG4gICAgbGV0IHthY3RpdmUsIGRpcmVjdGlvbn0gPSBzb3J0O1xuICAgIGlmICghYWN0aXZlKSBhY3RpdmUgPSAnaWQnO1xuICAgIGlmICghZGlyZWN0aW9uKSBkaXJlY3Rpb24gPSAnZGVzYyc7XG5cbiAgICB0aGlzLmZpbHRlckZvcm0uZ2V0KCdzb3J0X2J5Jyk/LnNldFZhbHVlKGFjdGl2ZSArICd8JyArIGRpcmVjdGlvbik7XG4gIH1cbn1cbiIsIjxtYXQtY2FyZD5cbiAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgPGgzPkxvY2F0aW9uIFByb2R1Y3RzPC9oMz5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuICA8bWF0LWRpdmlkZXIgY2xhc3M9XCJtdC0zXCI+PC9tYXQtZGl2aWRlcj5cbiAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJwLTBcIj5cbiAgICA8dGFibGVcbiAgICAgICN0YWJsZVxuICAgICAgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cIm1vZGVsc1wiIGNsYXNzPVwidy0xMDBcIlxuICAgICAgaW5maW5pdGVTY3JvbGxcbiAgICAgIFtpbmZpbml0ZVNjcm9sbERpc3RhbmNlXT1cIjJcIlxuICAgICAgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwiNTBcIlxuICAgICAgKHNjcm9sbGVkKT1cIm9uU2Nyb2xsKClcIlxuICAgICAgW2Zyb21Sb290XT1cInRydWVcIlxuICAgICAgbWF0U29ydFxuICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCRldmVudClcIlxuICAgID5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCIjXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+ICMgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCBpID0gaW5kZXhcIj57eyBpICsgMSB9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJTS1VcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gU0tVIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8uc2t1IH19PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIlByb2R1Y3RcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gUHJvZHVjdDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1kYXJrXCJcbiAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL2ludmVudG9yeS9wcm9kdWN0cycsIGVsZW1lbnQuaWQsICd2aWV3J11cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGVsZW1lbnQ/Lm5hbWUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJDYXRlZ29yeVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBDYXRlZ29yeSA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgIDxhcHAtcHJvZHVjdC1jYXRlZ29yeS1iYWRnZXMgW3Byb2R1Y3RdPVwiZWxlbWVudFwiPjwvYXBwLXByb2R1Y3QtY2F0ZWdvcnktYmFkZ2VzPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiUXVhbnRpdHlcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gUXVhbnRpdHkgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICB7eyBlbGVtZW50Py5jdXJyZW50X3N0b2NrIH19XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJBY3Rpb25zXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IEFjdGlvbnMgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxhcHAtc3RvY2stdHJhbnNmZXItZm9ybS1idXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJsb2NhdGlvbj8uaWRcIlxuICAgICAgICAgICAgICBbcHJvZHVjdElkXT1cImVsZW1lbnQ/LmlkXCJcbiAgICAgICAgICAgICAgKHNhdmVkKT1cInJlbG9hZCgpXCJcbiAgICAgICAgICAgID48L2FwcC1zdG9jay10cmFuc2Zlci1mb3JtLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCI+PC90cj5cbiAgICA8L3RhYmxlPlxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNXb3JraW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gIDwvbWF0LWNhcmQtY29udGVudD5cbjwvbWF0LWNhcmQ+XG4iXX0=
@@ -0,0 +1,29 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { RouterModule } from '@angular/router';
3
+ import { LocationListComponent } from './location-list/location-list.component';
4
+ import { LocationViewComponent } from './location-view/location-view.component';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/router";
7
+ const routes = [
8
+ {
9
+ path: '',
10
+ component: LocationListComponent
11
+ },
12
+ {
13
+ path: ':id/view',
14
+ component: LocationViewComponent
15
+ }
16
+ ];
17
+ export class LocationRoutingModule {
18
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocationRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
19
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: LocationRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
20
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocationRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocationRoutingModule, decorators: [{
23
+ type: NgModule,
24
+ args: [{
25
+ imports: [RouterModule.forChild(routes)],
26
+ exports: [RouterModule]
27
+ }]
28
+ }] });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tcm91dGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9sb2NhdGlvbi9sb2NhdGlvbi1yb3V0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7O0FBRWhGLE1BQU0sTUFBTSxHQUFXO0lBQ3JCO1FBQ0UsSUFBSSxFQUFFLEVBQUU7UUFDUixTQUFTLEVBQUUscUJBQXFCO0tBQ2pDO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsVUFBVTtRQUNoQixTQUFTLEVBQUUscUJBQXFCO0tBQ2pDO0NBQ0YsQ0FBQztBQU1GLE1BQU0sT0FBTyxxQkFBcUI7d0dBQXJCLHFCQUFxQjt5R0FBckIscUJBQXFCLHdDQUZ0QixZQUFZO3lHQUVYLHFCQUFxQixZQUh0QixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUM3QixZQUFZOzs0RkFFWCxxQkFBcUI7a0JBSmpDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBMb2NhdGlvbkxpc3RDb21wb25lbnQgfSBmcm9tICcuL2xvY2F0aW9uLWxpc3QvbG9jYXRpb24tbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9jYXRpb25WaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9sb2NhdGlvbi12aWV3L2xvY2F0aW9uLXZpZXcuY29tcG9uZW50JztcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnJyxcbiAgICBjb21wb25lbnQ6IExvY2F0aW9uTGlzdENvbXBvbmVudFxuICB9LFxuICB7XG4gICAgcGF0aDogJzppZC92aWV3JyxcbiAgICBjb21wb25lbnQ6IExvY2F0aW9uVmlld0NvbXBvbmVudFxuICB9XG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBMb2NhdGlvblJvdXRpbmdNb2R1bGUge1xufVxuIl19
@@ -0,0 +1,53 @@
1
+ import { Component } from '@angular/core';
2
+ import { NgIf } from '@angular/common';
3
+ import { MatCard, MatCardContent } from '@angular/material/card';
4
+ import { MatProgressBar } from '@angular/material/progress-bar';
5
+ import { LocationInformationComponent } from '../location-information/location-information.component';
6
+ import { ProductModule } from '../../product/product.module';
7
+ import { LocationProductStatisticsComponent } from '../location-product-statistics/location-product-statistics.component';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../location.service";
10
+ import * as i2 from "@angular/router";
11
+ export class LocationViewComponent {
12
+ service;
13
+ activatedRoute;
14
+ id;
15
+ isLoading;
16
+ model;
17
+ constructor(service, activatedRoute) {
18
+ this.service = service;
19
+ this.activatedRoute = activatedRoute;
20
+ this.id = parseInt(this.activatedRoute.snapshot.params['id']);
21
+ }
22
+ ngOnInit() {
23
+ if (this.id) {
24
+ this.loadModel();
25
+ }
26
+ }
27
+ loadModel() {
28
+ this.isLoading = true;
29
+ const params = {};
30
+ this.service.show(this.id, params).subscribe({
31
+ next: (response) => {
32
+ this.model = response?.item;
33
+ this.isLoading = false;
34
+ },
35
+ error: () => (this.isLoading = false)
36
+ });
37
+ }
38
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocationViewComponent, deps: [{ token: i1.LocationService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
39
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LocationViewComponent, isStandalone: true, selector: "app-location-view", ngImport: i0, template: "<div *ngIf=\"model\" class=\"d-flex justify-content-start align-items-start flex-wrap gap-3\">\n <div class=\"d-flex flex-column gap-2\" style=\"width: 400px\">\n <app-location-information\n [model]=\"model\"\n ></app-location-information>\n </div>\n\n <app-location-product-statistics\n style=\"width: calc(100% - 400px - 1rem)\"\n [location]=\"model\"\n ></app-location-product-statistics>\n\n</div>\n\n<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: LocationInformationComponent, selector: "app-location-information", inputs: ["model"] }, { kind: "ngmodule", type: ProductModule }, { kind: "component", type: LocationProductStatisticsComponent, selector: "app-location-product-statistics", inputs: ["location"] }], preserveWhitespaces: true });
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocationViewComponent, decorators: [{
42
+ type: Component,
43
+ args: [{ selector: 'app-location-view', standalone: true, imports: [
44
+ NgIf,
45
+ MatCard,
46
+ MatCardContent,
47
+ MatProgressBar,
48
+ LocationInformationComponent,
49
+ ProductModule,
50
+ LocationProductStatisticsComponent
51
+ ], template: "<div *ngIf=\"model\" class=\"d-flex justify-content-start align-items-start flex-wrap gap-3\">\n <div class=\"d-flex flex-column gap-2\" style=\"width: 400px\">\n <app-location-information\n [model]=\"model\"\n ></app-location-information>\n </div>\n\n <app-location-product-statistics\n style=\"width: calc(100% - 400px - 1rem)\"\n [location]=\"model\"\n ></app-location-product-statistics>\n\n</div>\n\n<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\n" }]
52
+ }], ctorParameters: () => [{ type: i1.LocationService }, { type: i2.ActivatedRoute }] });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9sb2NhdGlvbi9sb2NhdGlvbi12aWV3L2xvY2F0aW9uLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tdmlldy9sb2NhdGlvbi12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3JDLE9BQU8sRUFBQyxPQUFPLEVBQUUsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBRzlELE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3BHLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQzs7OztBQWlCeEgsTUFBTSxPQUFPLHFCQUFxQjtJQU10QjtJQUNBO0lBTlYsRUFBRSxDQUFVO0lBQ1osU0FBUyxDQUFXO0lBQ3BCLEtBQUssQ0FBTztJQUVaLFlBQ1UsT0FBd0IsRUFDeEIsY0FBOEI7UUFEOUIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRXRDLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsTUFBTSxNQUFNLEdBQVEsRUFBRSxDQUFBO1FBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzNDLElBQUksRUFBRSxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsRUFBRSxJQUFJLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUN0QyxDQUFDLENBQUE7SUFDSixDQUFDO3dHQTVCVSxxQkFBcUI7NEZBQXJCLHFCQUFxQiw2RUN6QmxDLDhmQWVBLDBERERJLElBQUksNkZBR0osY0FBYyx5S0FDZCw0QkFBNEIsdUZBQzVCLGFBQWEsK0JBQ2Isa0NBQWtDOzs0RkFLekIscUJBQXFCO2tCQWZqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1A7d0JBQ1AsSUFBSTt3QkFDSixPQUFPO3dCQUNQLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCw0QkFBNEI7d0JBQzVCLGFBQWE7d0JBQ2Isa0NBQWtDO3FCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtNYXRDYXJkLCBNYXRDYXJkQ29udGVudH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQge01hdFByb2dyZXNzQmFyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHtMb2NhdGlvblNlcnZpY2V9IGZyb20gJy4uL2xvY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7TG9jYXRpb25JbmZvcm1hdGlvbkNvbXBvbmVudH0gZnJvbSAnLi4vbG9jYXRpb24taW5mb3JtYXRpb24vbG9jYXRpb24taW5mb3JtYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7UHJvZHVjdE1vZHVsZX0gZnJvbSAnLi4vLi4vcHJvZHVjdC9wcm9kdWN0Lm1vZHVsZSc7XG5pbXBvcnQge0xvY2F0aW9uUHJvZHVjdFN0YXRpc3RpY3NDb21wb25lbnR9IGZyb20gJy4uL2xvY2F0aW9uLXByb2R1Y3Qtc3RhdGlzdGljcy9sb2NhdGlvbi1wcm9kdWN0LXN0YXRpc3RpY3MuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxvY2F0aW9uLXZpZXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBNYXRDYXJkLFxuICAgIE1hdENhcmRDb250ZW50LFxuICAgIE1hdFByb2dyZXNzQmFyLFxuICAgIExvY2F0aW9uSW5mb3JtYXRpb25Db21wb25lbnQsXG4gICAgUHJvZHVjdE1vZHVsZSxcbiAgICBMb2NhdGlvblByb2R1Y3RTdGF0aXN0aWNzQ29tcG9uZW50XG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2NhdGlvbi12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2xvY2F0aW9uLXZpZXcuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIExvY2F0aW9uVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGlkITogbnVtYmVyO1xuICBpc0xvYWRpbmchOiBib29sZWFuO1xuICBtb2RlbCE6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlcnZpY2U6IExvY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHtcbiAgICB0aGlzLmlkID0gcGFyc2VJbnQodGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2lkJ10pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuaWQpIHtcbiAgICAgIHRoaXMubG9hZE1vZGVsKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTW9kZWwoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IHBhcmFtczogYW55ID0ge31cbiAgICB0aGlzLnNlcnZpY2Uuc2hvdyh0aGlzLmlkLCBwYXJhbXMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm1vZGVsID0gcmVzcG9uc2U/Lml0ZW07XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+ICh0aGlzLmlzTG9hZGluZyA9IGZhbHNlKVxuICAgIH0pXG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJtb2RlbFwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LXdyYXAgZ2FwLTNcIj5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMlwiIHN0eWxlPVwid2lkdGg6IDQwMHB4XCI+XG4gICAgPGFwcC1sb2NhdGlvbi1pbmZvcm1hdGlvblxuICAgICAgW21vZGVsXT1cIm1vZGVsXCJcbiAgICA+PC9hcHAtbG9jYXRpb24taW5mb3JtYXRpb24+XG4gIDwvZGl2PlxuXG4gIDxhcHAtbG9jYXRpb24tcHJvZHVjdC1zdGF0aXN0aWNzXG4gICAgc3R5bGU9XCJ3aWR0aDogY2FsYygxMDAlIC0gNDAwcHggLSAxcmVtKVwiXG4gICAgW2xvY2F0aW9uXT1cIm1vZGVsXCJcbiAgPjwvYXBwLWxvY2F0aW9uLXByb2R1Y3Qtc3RhdGlzdGljcz5cblxuPC9kaXY+XG5cbjxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNMb2FkaW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4iXX0=
@@ -0,0 +1,22 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { LocationRoutingModule } from './location-routing.module';
4
+ import * as i0 from "@angular/core";
5
+ export class LocationModule {
6
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: LocationModule, imports: [CommonModule,
8
+ LocationRoutingModule] });
9
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocationModule, imports: [CommonModule,
10
+ LocationRoutingModule] });
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocationModule, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ declarations: [],
16
+ imports: [
17
+ CommonModule,
18
+ LocationRoutingModule
19
+ ]
20
+ }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQVVsRSxNQUFNLE9BQU8sY0FBYzt3R0FBZCxjQUFjO3lHQUFkLGNBQWMsWUFKdkIsWUFBWTtZQUNaLHFCQUFxQjt5R0FHWixjQUFjLFlBSnZCLFlBQVk7WUFDWixxQkFBcUI7OzRGQUdaLGNBQWM7a0JBUDFCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLHFCQUFxQjtxQkFDdEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgTG9jYXRpb25Sb3V0aW5nTW9kdWxlIH0gZnJvbSAnLi9sb2NhdGlvbi1yb3V0aW5nLm1vZHVsZSc7XG5cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBMb2NhdGlvblJvdXRpbmdNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBMb2NhdGlvbk1vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,23 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { TechlifyServiceBaseClass } from 'ngx-techlify-core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "ngx-techlify-core";
5
+ export class LocationService extends TechlifyServiceBaseClass {
6
+ httpService;
7
+ constructor(httpService) {
8
+ super(httpService, 'inventory-locations');
9
+ this.httpService = httpService;
10
+ }
11
+ productStatistics(model, params) {
12
+ return this.httpService.get(`api/inventory-locations/${model.id}/product-statistics`, { params });
13
+ }
14
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocationService, deps: [{ token: i1.HttpService }], target: i0.ɵɵFactoryTarget.Injectable });
15
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocationService, providedIn: 'root' });
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocationService, decorators: [{
18
+ type: Injectable,
19
+ args: [{
20
+ providedIn: 'root'
21
+ }]
22
+ }], ctorParameters: () => [{ type: i1.HttpService }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL2xvY2F0aW9uL2xvY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWUsd0JBQXdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBTTFFLE1BQU0sT0FBTyxlQUFnQixTQUFRLHdCQUF3QjtJQUdsRDtJQURULFlBQ1MsV0FBd0I7UUFFL0IsS0FBSyxDQUFDLFdBQVcsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBRm5DLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBR2pDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFVLEVBQUUsTUFBWTtRQUN4QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLDJCQUEyQixLQUFLLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEcsQ0FBQzt3R0FWVSxlQUFlOzRHQUFmLGVBQWUsY0FGZCxNQUFNOzs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlLCBUZWNobGlmeVNlcnZpY2VCYXNlQ2xhc3MgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIExvY2F0aW9uU2VydmljZSBleHRlbmRzIFRlY2hsaWZ5U2VydmljZUJhc2VDbGFzcyB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoaHR0cFNlcnZpY2UsICdpbnZlbnRvcnktbG9jYXRpb25zJyk7XG4gIH1cblxuICBwcm9kdWN0U3RhdGlzdGljcyhtb2RlbDogYW55LCBwYXJhbXM/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmdldChgYXBpL2ludmVudG9yeS1sb2NhdGlvbnMvJHttb2RlbC5pZH0vcHJvZHVjdC1zdGF0aXN0aWNzYCwgeyBwYXJhbXMgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,23 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { TechlifyServiceBaseClass } from 'ngx-techlify-core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "ngx-techlify-core";
5
+ export class LowStockReportService extends TechlifyServiceBaseClass {
6
+ httpService;
7
+ constructor(httpService) {
8
+ super(httpService, 'reports/low-stock-report');
9
+ this.httpService = httpService;
10
+ }
11
+ export(params) {
12
+ return this.http.get('api/reports/low-stock-report/export', { params });
13
+ }
14
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LowStockReportService, deps: [{ token: i1.HttpService }], target: i0.ɵɵFactoryTarget.Injectable });
15
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LowStockReportService, providedIn: 'root' });
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LowStockReportService, decorators: [{
18
+ type: Injectable,
19
+ args: [{
20
+ providedIn: 'root',
21
+ }]
22
+ }], ctorParameters: () => [{ type: i1.HttpService }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG93LXN0b2NrLXJlcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG93LXN0b2NrLXJlcG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFlLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQU0xRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsd0JBQXdCO0lBQzNDO0lBQXRCLFlBQXNCLFdBQXdCO1FBQzVDLEtBQUssQ0FBQyxXQUFXLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztRQUQzQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUU5QyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQzt3R0FQVSxxQkFBcUI7NEdBQXJCLHFCQUFxQixjQUZwQixNQUFNOzs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cFNlcnZpY2UsIFRlY2hsaWZ5U2VydmljZUJhc2VDbGFzcyB9IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExvd1N0b2NrUmVwb3J0U2VydmljZSBleHRlbmRzIFRlY2hsaWZ5U2VydmljZUJhc2VDbGFzcyB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBodHRwU2VydmljZTogSHR0cFNlcnZpY2UpIHtcbiAgICBzdXBlcihodHRwU2VydmljZSwgJ3JlcG9ydHMvbG93LXN0b2NrLXJlcG9ydCcpO1xuICB9XG5cbiAgZXhwb3J0KHBhcmFtcz86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoJ2FwaS9yZXBvcnRzL2xvdy1zdG9jay1yZXBvcnQvZXhwb3J0JywgeyBwYXJhbXMgfSk7XG4gIH1cbn1cbiJdfQ==