@mediusinc/mng-commons 4.1.0-rc.0 → 5.0.0-rc.0-c31d5206

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 (251) hide show
  1. package/assets/i18n/en.json +13 -66
  2. package/assets/i18n/sl.json +12 -67
  3. package/data-api/README.md +3 -0
  4. package/data-api/class-dto/README.md +3 -0
  5. package/data-api/class-dto/helpers/tableview-crud-create.d.ts +40 -0
  6. package/data-api/class-dto/index.d.ts +7 -0
  7. package/data-api/class-dto/models/query-result.model.d.ts +13 -0
  8. package/data-api/class-dto/obsolete/README.md +3 -0
  9. package/data-api/class-dto/obsolete/helpers/query-param-convert.d.ts +23 -0
  10. package/data-api/class-dto/obsolete/helpers/tableview-crud-create.d.ts +22 -0
  11. package/data-api/class-dto/obsolete/index.d.ts +14 -0
  12. package/data-api/class-dto/obsolete/models/builders/query-param.builder.d.ts +36 -0
  13. package/{lib/api → data-api/class-dto/obsolete}/models/filter-param.model.d.ts +1 -1
  14. package/{lib/api → data-api/class-dto/obsolete}/models/query-param.model.d.ts +1 -1
  15. package/{lib/api → data-api/class-dto/obsolete}/models/query-result.model.d.ts +1 -1
  16. package/data-api/class-dto/obsolete/provide.d.ts +9 -0
  17. package/data-api/class-dto/obsolete/services/api.abstract.service.d.ts +36 -0
  18. package/{lib/api → data-api/class-dto/obsolete}/services/crud-api.abstract.service.d.ts +20 -5
  19. package/data-api/class-dto/obsolete/services/get-all-api.abstract.service.d.ts +30 -0
  20. package/data-api/class-dto/obsolete/tableview/tableview-crud.data-provider.d.ts +28 -0
  21. package/data-api/class-dto/obsolete/utils/query-param-map.util.d.ts +22 -0
  22. package/{lib/api/utils/object-serializer.util.d.ts → data-api/class-dto/serder/object-serializer.d.ts} +1 -1
  23. package/{lib/api → data-api/class-dto}/services/api.abstract.service.d.ts +2 -4
  24. package/data-api/class-dto/services/crud-api.abstract.service.d.ts +25 -0
  25. package/data-api/class-dto/services/get-all-api.abstract.service.d.ts +14 -0
  26. package/data-api/class-dto/tableview/tableview-crud.data-provider.d.ts +17 -0
  27. package/data-api/helpers/get-all-params.d.ts +69 -0
  28. package/data-api/helpers/tableview-get-all-params-create.d.ts +14 -0
  29. package/data-api/index.d.ts +5 -0
  30. package/data-api/models/request-params.model.d.ts +61 -0
  31. package/data-api/rxjs/map-to-data-list.operator.d.ts +9 -0
  32. package/data-api/types/extract-get-all-params.type.d.ts +14 -0
  33. package/esm2022/data-api/class-dto/helpers/tableview-crud-create.mjs +40 -0
  34. package/esm2022/data-api/class-dto/index.mjs +13 -0
  35. package/esm2022/data-api/class-dto/mediusinc-mng-commons-data-api-class-dto.mjs +5 -0
  36. package/esm2022/data-api/class-dto/models/query-result.model.mjs +24 -0
  37. package/esm2022/data-api/class-dto/obsolete/helpers/query-param-convert.mjs +103 -0
  38. package/esm2022/data-api/class-dto/obsolete/helpers/tableview-crud-create.mjs +21 -0
  39. package/esm2022/data-api/class-dto/obsolete/index.mjs +21 -0
  40. package/esm2022/data-api/class-dto/obsolete/mediusinc-mng-commons-data-api-class-dto-obsolete.mjs +5 -0
  41. package/esm2022/data-api/class-dto/obsolete/models/builders/query-param.builder.mjs +83 -0
  42. package/esm2022/data-api/class-dto/obsolete/models/filter-match-type.model.mjs +27 -0
  43. package/esm2022/data-api/class-dto/obsolete/models/filter-param.model.mjs +33 -0
  44. package/esm2022/data-api/class-dto/obsolete/models/query-mode.model.mjs +18 -0
  45. package/esm2022/data-api/class-dto/obsolete/models/query-param.model.mjs +68 -0
  46. package/esm2022/data-api/class-dto/obsolete/models/query-result.model.mjs +24 -0
  47. package/esm2022/data-api/class-dto/obsolete/provide.mjs +40 -0
  48. package/esm2022/data-api/class-dto/obsolete/services/api.abstract.service.mjs +70 -0
  49. package/esm2022/data-api/class-dto/obsolete/services/crud-api.abstract.service.mjs +83 -0
  50. package/esm2022/data-api/class-dto/obsolete/services/get-all-api.abstract.service.mjs +38 -0
  51. package/esm2022/data-api/class-dto/obsolete/tableview/tableview-crud.data-provider.mjs +51 -0
  52. package/esm2022/data-api/class-dto/obsolete/utils/query-param-map.util.mjs +57 -0
  53. package/esm2022/data-api/class-dto/serder/object-serializer.mjs +184 -0
  54. package/esm2022/data-api/class-dto/services/api.abstract.service.mjs +55 -0
  55. package/esm2022/data-api/class-dto/services/crud-api.abstract.service.mjs +82 -0
  56. package/esm2022/data-api/class-dto/services/get-all-api.abstract.service.mjs +49 -0
  57. package/esm2022/data-api/class-dto/tableview/tableview-crud.data-provider.mjs +49 -0
  58. package/esm2022/data-api/helpers/get-all-params.mjs +180 -0
  59. package/esm2022/data-api/helpers/tableview-get-all-params-create.mjs +18 -0
  60. package/esm2022/data-api/index.mjs +10 -0
  61. package/esm2022/data-api/mediusinc-mng-commons-data-api.mjs +5 -0
  62. package/esm2022/data-api/models/request-params.model.mjs +2 -0
  63. package/esm2022/data-api/rxjs/map-to-data-list.operator.mjs +19 -0
  64. package/esm2022/data-api/types/extract-get-all-params.type.mjs +2 -0
  65. package/esm2022/index.mjs +3 -6
  66. package/esm2022/lib/components/action/action.component.mjs +4 -5
  67. package/esm2022/lib/components/action/editor/injector-context/action-editor-injector-context.component.mjs +2 -2
  68. package/esm2022/lib/components/action/models/action-execution.model.mjs +5 -4
  69. package/esm2022/lib/components/action/route/action-route.component.mjs +1 -2
  70. package/esm2022/lib/components/action/table/action-table.component.mjs +4 -6
  71. package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +29 -17
  72. package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +3 -7
  73. package/esm2022/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +20 -18
  74. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +2 -2
  75. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +23 -12
  76. package/esm2022/lib/components/table/column-filter-full/column-filter-full.component.mjs +162 -33
  77. package/esm2022/lib/components/table/column-value/column-value.component.mjs +3 -3
  78. package/esm2022/lib/components/table/models/table.event.mjs +1 -1
  79. package/esm2022/lib/components/table/models/table.interface.mjs +1 -1
  80. package/esm2022/lib/components/table/table-column-filter-class/table-column-filter-class.pipe.mjs +4 -4
  81. package/esm2022/lib/components/table/table.component.mjs +117 -191
  82. package/esm2022/lib/components/tableview/actions/tableview-default-actions.mjs +215 -0
  83. package/esm2022/lib/components/tableview/builders/tableview-builder.mjs +162 -0
  84. package/esm2022/lib/components/tableview/helpers/tableview-create.mjs +24 -0
  85. package/esm2022/lib/components/tableview/index.mjs +5 -2
  86. package/esm2022/lib/components/tableview/models/tableview.model.mjs +2 -0
  87. package/esm2022/lib/components/tableview/route/tableview-route.component.mjs +7 -39
  88. package/esm2022/lib/components/tableview/tableview.component.mjs +4 -4
  89. package/esm2022/lib/data-providers/editor.data-provider.mjs +13 -13
  90. package/esm2022/lib/data-providers/index.mjs +1 -2
  91. package/esm2022/lib/data-providers/lookup.data-provider.mjs +1 -1
  92. package/esm2022/lib/data-providers/table.data-provider.mjs +4 -5
  93. package/esm2022/lib/data-providers/tableview.data-provider.mjs +1 -1
  94. package/esm2022/lib/descriptors/action/action-confirmation.descriptor.mjs +1 -1
  95. package/esm2022/lib/descriptors/action/action-editor.descriptor.mjs +10 -6
  96. package/esm2022/lib/descriptors/action/action.descriptor.mjs +2 -3
  97. package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +13 -17
  98. package/esm2022/lib/descriptors/editor/field-lookup.descriptor.mjs +12 -17
  99. package/esm2022/lib/descriptors/editor/field.descriptor.mjs +5 -8
  100. package/esm2022/lib/descriptors/editor/internal/editor-fields.model.mjs +1 -1
  101. package/esm2022/lib/descriptors/filter/filter-lookup.descriptor.mjs +28 -52
  102. package/esm2022/lib/descriptors/filter/filter.descriptor.mjs +40 -23
  103. package/esm2022/lib/descriptors/model/enum.descriptor.mjs +31 -0
  104. package/esm2022/lib/descriptors/model/index.mjs +3 -1
  105. package/esm2022/lib/descriptors/model/model.descriptor.mjs +10 -1
  106. package/esm2022/lib/descriptors/model/type.descriptor.mjs +11 -0
  107. package/esm2022/lib/descriptors/table/column.descriptor.mjs +12 -107
  108. package/esm2022/lib/descriptors/table/index.mjs +2 -1
  109. package/esm2022/lib/descriptors/table/internal/table-columns.model.mjs +1 -1
  110. package/esm2022/lib/descriptors/table/internal/table.model.mjs +1 -1
  111. package/esm2022/lib/descriptors/table/sort.descriptor.mjs +45 -0
  112. package/esm2022/lib/descriptors/table/table.descriptor.mjs +208 -57
  113. package/esm2022/lib/descriptors/tableview/internal/tableview.model.mjs +1 -1
  114. package/esm2022/lib/descriptors/tableview/tableview.descriptor.mjs +114 -17
  115. package/esm2022/lib/descriptors/types/filter.type.mjs +1 -19
  116. package/esm2022/lib/descriptors/types/table.type.mjs +1 -5
  117. package/esm2022/lib/error/error.handler.mjs +1 -1
  118. package/esm2022/lib/helpers/data-provider-executors.mjs +80 -0
  119. package/esm2022/lib/models/data-list.model.mjs +2 -0
  120. package/esm2022/lib/models/filter-match.model.mjs +105 -0
  121. package/esm2022/lib/models/index.mjs +3 -1
  122. package/esm2022/lib/models/view-container.model.mjs +1 -1
  123. package/esm2022/lib/pipes/enum.pipe.mjs +6 -6
  124. package/esm2022/lib/provide.mjs +101 -0
  125. package/esm2022/lib/registry/type.registry.mjs +3 -10
  126. package/esm2022/lib/router/models/router.model.mjs +1 -1
  127. package/esm2022/lib/router/tableview-route-builder.mjs +1 -1
  128. package/esm2022/lib/services/action/action-executor.service.mjs +54 -32
  129. package/esm2022/lib/services/commons.service.mjs +1 -37
  130. package/esm2022/lib/services/data-provider-executor.service.mjs +52 -0
  131. package/esm2022/lib/services/index.mjs +2 -1
  132. package/esm2022/lib/services/view/view-container.service.mjs +1 -1
  133. package/esm2022/lib/types/action-descriptor.types.mjs +1 -1
  134. package/esm2022/lib/types/type.model.mjs +1 -1
  135. package/esm2022/lib/utils/data-list-params.util.mjs +416 -0
  136. package/esm2022/lib/utils/date.util.mjs +8 -2
  137. package/esm2022/lib/utils/enum.util.mjs +2 -1
  138. package/esm2022/lib/utils/error.util.mjs +3 -3
  139. package/esm2022/lib/utils/export.util.mjs +1 -1
  140. package/esm2022/lib/utils/index.mjs +2 -2
  141. package/esm2022/lib/utils/route.util.mjs +1 -2
  142. package/fesm2022/mediusinc-mng-commons-data-api-class-dto-obsolete.mjs +698 -0
  143. package/fesm2022/mediusinc-mng-commons-data-api-class-dto-obsolete.mjs.map +1 -0
  144. package/fesm2022/mediusinc-mng-commons-data-api-class-dto.mjs +480 -0
  145. package/fesm2022/mediusinc-mng-commons-data-api-class-dto.mjs.map +1 -0
  146. package/fesm2022/mediusinc-mng-commons-data-api.mjs +224 -0
  147. package/fesm2022/mediusinc-mng-commons-data-api.mjs.map +1 -0
  148. package/fesm2022/mediusinc-mng-commons.mjs +2634 -2549
  149. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  150. package/index.d.ts +2 -4
  151. package/lib/components/action/action.component.d.ts +13 -13
  152. package/lib/components/action/models/action-execution.model.d.ts +47 -46
  153. package/lib/components/action/table/action-table.component.d.ts +15 -16
  154. package/lib/components/form/autocomplete/autocomplete.component.d.ts +1 -1
  155. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +3 -5
  156. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +10 -10
  157. package/lib/components/table/column-filter-full/column-filter-full.component.d.ts +25 -9
  158. package/lib/components/table/models/table.event.d.ts +2 -2
  159. package/lib/components/table/models/table.interface.d.ts +4 -1
  160. package/lib/components/table/table-column-filter-class/table-column-filter-class.pipe.d.ts +2 -2
  161. package/lib/components/table/table.component.d.ts +19 -18
  162. package/lib/components/tableview/actions/tableview-default-actions.d.ts +36 -0
  163. package/lib/components/tableview/builders/tableview-builder.d.ts +115 -0
  164. package/lib/components/tableview/helpers/tableview-create.d.ts +16 -0
  165. package/lib/components/tableview/index.d.ts +4 -1
  166. package/lib/components/tableview/models/tableview.model.d.ts +8 -0
  167. package/lib/components/tableview/route/tableview-route.component.d.ts +5 -14
  168. package/lib/components/tableview/tableview.component.d.ts +12 -12
  169. package/lib/data-providers/editor.data-provider.d.ts +12 -12
  170. package/lib/data-providers/index.d.ts +0 -1
  171. package/lib/data-providers/lookup.data-provider.d.ts +2 -2
  172. package/lib/data-providers/table.data-provider.d.ts +25 -25
  173. package/lib/data-providers/tableview.data-provider.d.ts +18 -18
  174. package/lib/descriptors/action/action-confirmation.descriptor.d.ts +1 -1
  175. package/lib/descriptors/action/action-editor.descriptor.d.ts +20 -17
  176. package/lib/descriptors/editor/editor.descriptor.d.ts +8 -12
  177. package/lib/descriptors/editor/field-base.descriptor.d.ts +3 -3
  178. package/lib/descriptors/editor/field-lookup.descriptor.d.ts +11 -11
  179. package/lib/descriptors/editor/field-many.descriptor.d.ts +4 -4
  180. package/lib/descriptors/editor/field.descriptor.d.ts +2 -2
  181. package/lib/descriptors/editor/internal/editor-fields.model.d.ts +6 -5
  182. package/lib/descriptors/filter/filter-lookup.descriptor.d.ts +15 -14
  183. package/lib/descriptors/filter/filter.descriptor.d.ts +17 -18
  184. package/lib/descriptors/model/enum.descriptor.d.ts +14 -0
  185. package/lib/descriptors/model/index.d.ts +2 -0
  186. package/lib/descriptors/model/model.descriptor.d.ts +9 -0
  187. package/lib/descriptors/model/type.descriptor.d.ts +5 -0
  188. package/lib/descriptors/table/column.descriptor.d.ts +10 -24
  189. package/lib/descriptors/table/index.d.ts +1 -0
  190. package/lib/descriptors/table/internal/table-columns.model.d.ts +36 -5
  191. package/lib/descriptors/table/internal/table.model.d.ts +5 -2
  192. package/lib/descriptors/table/sort.descriptor.d.ts +17 -0
  193. package/lib/descriptors/table/table.descriptor.d.ts +57 -33
  194. package/lib/descriptors/tableview/internal/tableview.model.d.ts +3 -3
  195. package/lib/descriptors/tableview/tableview.descriptor.d.ts +49 -19
  196. package/lib/descriptors/types/filter.type.d.ts +0 -17
  197. package/lib/descriptors/types/table.type.d.ts +0 -3
  198. package/lib/error/error.handler.d.ts +1 -1
  199. package/lib/helpers/data-provider-executors.d.ts +19 -0
  200. package/lib/models/data-list.model.d.ts +27 -0
  201. package/lib/models/filter-match.model.d.ts +36 -0
  202. package/lib/models/index.d.ts +2 -0
  203. package/lib/models/view-container.model.d.ts +2 -2
  204. package/lib/pipes/enum.pipe.d.ts +2 -2
  205. package/lib/provide.d.ts +10 -0
  206. package/lib/router/models/router.model.d.ts +1 -1
  207. package/lib/router/tableview-route-builder.d.ts +1 -2
  208. package/lib/services/action/action-executor.service.d.ts +18 -16
  209. package/lib/services/data-provider-executor.service.d.ts +60 -0
  210. package/lib/services/index.d.ts +1 -0
  211. package/lib/services/view/view-container.service.d.ts +11 -11
  212. package/lib/types/action-descriptor.types.d.ts +2 -2
  213. package/lib/types/type.model.d.ts +1 -3
  214. package/lib/utils/data-list-params.util.d.ts +84 -0
  215. package/lib/utils/date.util.d.ts +3 -1
  216. package/lib/utils/enum.util.d.ts +4 -3
  217. package/lib/utils/export.util.d.ts +1 -1
  218. package/lib/utils/index.d.ts +1 -1
  219. package/openapi/angular/modelEnum.mustache +0 -3
  220. package/package.json +20 -2
  221. package/esm2022/lib/api/models/builders/query-param.builder.mjs +0 -59
  222. package/esm2022/lib/api/models/filter-match-type.model.mjs +0 -27
  223. package/esm2022/lib/api/models/filter-param.model.mjs +0 -33
  224. package/esm2022/lib/api/models/index.mjs +0 -7
  225. package/esm2022/lib/api/models/query-mode.model.mjs +0 -18
  226. package/esm2022/lib/api/models/query-param.model.mjs +0 -68
  227. package/esm2022/lib/api/models/query-result.model.mjs +0 -35
  228. package/esm2022/lib/api/services/api.abstract.service.mjs +0 -58
  229. package/esm2022/lib/api/services/crud-api.abstract.service.mjs +0 -75
  230. package/esm2022/lib/api/services/get-all-api.abstract.service.mjs +0 -30
  231. package/esm2022/lib/api/services/index.mjs +0 -4
  232. package/esm2022/lib/api/utils/index.mjs +0 -3
  233. package/esm2022/lib/api/utils/medius-rest.util.mjs +0 -293
  234. package/esm2022/lib/api/utils/object-serializer.util.mjs +0 -185
  235. package/esm2022/lib/components/tableview/route/tableview-route.abstract.component.mjs +0 -158
  236. package/esm2022/lib/data-providers/tableview-crud.data-provider.mjs +0 -32
  237. package/esm2022/lib/provide-commons.mjs +0 -88
  238. package/esm2022/lib/utils/action-data-provider.util.mjs +0 -171
  239. package/lib/api/models/builders/query-param.builder.d.ts +0 -13
  240. package/lib/api/models/index.d.ts +0 -6
  241. package/lib/api/services/get-all-api.abstract.service.d.ts +0 -14
  242. package/lib/api/services/index.d.ts +0 -3
  243. package/lib/api/utils/index.d.ts +0 -2
  244. package/lib/api/utils/medius-rest.util.d.ts +0 -32
  245. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +0 -35
  246. package/lib/data-providers/tableview-crud.data-provider.d.ts +0 -12
  247. package/lib/provide-commons.d.ts +0 -3
  248. package/lib/utils/action-data-provider.util.d.ts +0 -35
  249. package/templates/tableview-route.component.html +0 -5
  250. /package/{lib/api → data-api/class-dto/obsolete}/models/filter-match-type.model.d.ts +0 -0
  251. /package/{lib/api → data-api/class-dto/obsolete}/models/query-mode.model.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mediusinc-mng-commons-data-api-class-dto.mjs","sources":["../../data-api/class-dto/src/tableview/tableview-crud.data-provider.ts","../../data-api/class-dto/src/helpers/tableview-crud-create.ts","../../data-api/class-dto/src/models/query-result.model.ts","../../data-api/class-dto/src/serder/object-serializer.ts","../../data-api/class-dto/src/services/api.abstract.service.ts","../../data-api/class-dto/src/services/get-all-api.abstract.service.ts","../../data-api/class-dto/src/services/crud-api.abstract.service.ts","../../data-api/class-dto/src/index.ts","../../data-api/class-dto/src/mediusinc-mng-commons-data-api-class-dto.ts"],"sourcesContent":["import {Type} from '@angular/core';\n\nimport {map} from 'rxjs/operators';\n\nimport {ClassType, FilterMatchMode, ModelUtil, ServiceClassType, TableviewDataProviderInst} from '@mediusinc/mng-commons';\nimport {mapToDataList} from '@mediusinc/mng-commons/data-api';\n\nimport {QueryResult} from '../models/query-result.model';\nimport {IMngCrudApiService} from '../services/crud-api.abstract.service';\nimport {IMngGetAllApiService} from '../services/get-all-api.abstract.service';\n\nexport type ToRequestMapFnType<Model, RequestModel> = (item?: Model) => RequestModel;\n\nexport class TableviewCrudDataProviderInst<\n Model,\n RequestModel,\n Service extends IMngCrudApiService<Model, RequestModel> & IMngGetAllApiService<QueryResult<Model>>,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model\n> extends TableviewDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClassType<Service>> {\n private _toRequestMap: ToRequestMapFnType<Model, RequestModel> = item => item as RequestModel;\n\n protected constructor(\n type: ClassType<Model>,\n protected requestType: ClassType<RequestModel>,\n serviceType: Type<Service>,\n idPropertyName?: string,\n useGetAllForFetch = false\n ) {\n super(type, serviceType);\n this.withGetAll((params, service, locale) => service.getAllGet(params, undefined, locale).pipe(mapToDataList()));\n\n if (useGetAllForFetch) {\n const selectedIdPropertyName = idPropertyName ?? ModelUtil.findIdAttribute(type) ?? 'id';\n this.withFetch((id, service) => {\n return service!\n .getAllGet({\n limit: 1,\n filters: {\n [selectedIdPropertyName]: {\n value: id,\n matchMode: FilterMatchMode.Equals\n }\n }\n })\n .pipe(map(res => res.data![0]));\n });\n } else {\n this.withFetch((id, service, locale) => service!.getByIdGet!(id, undefined, locale));\n }\n this.withCreate((item, service) => service.createPost!(this.toRequestMap(item)));\n this.withUpdate((id, item, service) => service.updatePut!(id, this.toRequestMap(item)));\n this.withDelete((id, item, service) => service.removeDelete!(id, item));\n }\n\n public get toRequestMap() {\n return this._toRequestMap;\n }\n\n public withToRequestMap(fn: ToRequestMapFnType<Model, RequestModel>) {\n this._toRequestMap = fn;\n return this;\n }\n}\n\nexport class TableviewCrudDataProvider extends TableviewCrudDataProviderInst<any, any, any> {\n public static create<\n Model,\n RequestModel,\n Service extends IMngCrudApiService<Model, RequestModel> & IMngGetAllApiService<QueryResult<Model>>,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model\n >(\n type: ClassType<Model>,\n requestType: ClassType<RequestModel>,\n serviceType: Type<Service>,\n idProperty?: keyof Model,\n useGetAllForFetch = false\n ): TableviewCrudDataProviderInst<Model, RequestModel, Service, Sorts, Filters> {\n return TableviewCrudDataProvider.createUnsafe<Model, RequestModel, Service, Sorts, Filters>(type, requestType, serviceType, idProperty as string, useGetAllForFetch);\n }\n\n public static createUnsafe<\n Model,\n RequestModel,\n Service extends IMngCrudApiService<Model, RequestModel> & IMngGetAllApiService<QueryResult<Model>>,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model\n >(\n type: ClassType<Model>,\n requestType: ClassType<RequestModel>,\n serviceType: Type<Service>,\n idProperty?: string,\n useGetAllForFetch = false\n ): TableviewCrudDataProviderInst<Model, RequestModel, Service, Sorts, Filters> {\n return new TableviewCrudDataProviderInst<Model, RequestModel, Service, Sorts, Filters>(type, requestType, serviceType, idProperty, useGetAllForFetch);\n }\n}\n","import {Injector, inject} from '@angular/core';\n\nimport {ClassType, ServiceClassType, TableviewBuilder, TableviewDescriptor, TableviewDescriptorInst, TypeDescriptor} from '@mediusinc/mng-commons';\n\nimport {QueryResult} from '../models/query-result.model';\nimport {IMngCrudApiService} from '../services/crud-api.abstract.service';\nimport {IMngGetAllApiService} from '../services/get-all-api.abstract.service';\nimport {TableviewCrudDataProvider, TableviewCrudDataProviderInst} from '../tableview/tableview-crud.data-provider';\n\nfunction prepareBuilder<Model, RequestModel, Service extends IMngCrudApiService<Model, RequestModel> & IMngGetAllApiService<QueryResult<Model>>, Sorts, Filters extends keyof any>(\n type: ClassType<Model>,\n requestType: ClassType<RequestModel>,\n service: ServiceClassType<Service>,\n modelConfig?: {\n idProperty?: keyof Model;\n titleProperty?: keyof Model;\n i18nBaseKey?: string;\n },\n buildFn?: (\n builder: TableviewBuilder<\n Model,\n Service,\n TableviewDescriptorInst<Model, Sorts, Filters>,\n TableviewCrudDataProviderInst<Model, RequestModel, Service, Sorts, Filters>,\n Sorts,\n Filters\n >\n ) => void\n) {\n const builder = new TableviewBuilder<\n Model,\n Service,\n TableviewDescriptorInst<Model, Sorts, Filters>,\n TableviewCrudDataProviderInst<Model, RequestModel, Service, Sorts, Filters>,\n Sorts,\n Filters\n >(\n TableviewDescriptor.fromClass(type, modelConfig?.idProperty, modelConfig?.titleProperty, modelConfig?.i18nBaseKey),\n TableviewCrudDataProvider.create(type, requestType, service, modelConfig?.idProperty),\n inject(Injector)\n );\n buildFn?.(builder);\n return builder.build();\n}\n\n/**\n * Creates a tableview with the given class, request class, service based on data API v2, sort, filters and optional class/model configuration.\n * Sorts and filters are expected to be keys of class.\n *\n * @param {ClassType<Model>} type - The class representing the model.\n * @param {ClassType<RequestModel>} requestType - The class representing the model for create and update operations.\n * @param {ServiceClassType<Service>} service - The class type of the service implementing `IMngCrudApiService` and `IMngGetAllApiService`.\n * @param {{ idProperty?: keyof Model; titleProperty?: keyof Model; i18nBaseKey?: ClassType<any> | string; }} [modelConfig] - Additional optional model configuration.\n * @param {(builder: TableviewBuilder) => void} [buildFn] - The optional callback function to customize the tableview using the prepared builder.\n *\n * @returns A tableview instance with descriptor, data provider and actions.\n */\nexport function tableviewCrud<\n Model,\n RequestModel,\n Service extends IMngCrudApiService<Model, RequestModel> & IMngGetAllApiService<QueryResult<Model>>,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model\n>(\n type: ClassType<Model>,\n requestType: ClassType<RequestModel>,\n service: ServiceClassType<Service>,\n modelConfig?: {\n idProperty?: keyof Model;\n titleProperty?: keyof Model;\n i18nBaseKey?: string;\n },\n buildFn?: (\n builder: TableviewBuilder<\n Model,\n Service,\n TableviewDescriptorInst<Model, Sorts, Filters>,\n TableviewCrudDataProviderInst<Model, RequestModel, Service, Sorts, Filters>,\n Sorts,\n Filters\n >\n ) => void\n) {\n return prepareBuilder<Model, RequestModel, Service, Sorts, Filters>(type, requestType, service, modelConfig, buildFn);\n}\n\n/**\n * Creates a tableview with the given class, request class, service based on data API v2, sort, filters and optional class/model configuration.\n *\n * @param {ClassType<Model>} type - The class representing the model.\n * @param {ClassType<RequestModel>} requestType - The class representing the model for create and update operations.\n * @param {ServiceClassType<Service>} service - The class type of the service implementing `IMngCrudApiService` and `IMngGetAllApiService`.\n * @param {TypeDescriptor<Sorts>} sorts - The available sort keys of get all request.\n * @param {TypeDescriptor<Filters>} filters - The available filter keys of get all request.\n * @param {{ idProperty?: keyof Model; titleProperty?: keyof Model; i18nBaseKey?: ClassType<any> | string; }} [modelConfig] - Additional optional model configuration.\n * @param {(builder: TableviewBuilder) => void} [buildFn] - The optional callback function to customize the tableview using the prepared builder.\n *\n * @returns A tableview instance with descriptor, data provider and actions.\n */\nexport function tableviewCrudWithSortAndFilter<\n Model,\n RequestModel,\n Service extends IMngCrudApiService<Model, RequestModel> & IMngGetAllApiService<QueryResult<Model>>,\n Sorts,\n Filters extends keyof any\n>(\n type: ClassType<Model>,\n requestType: ClassType<RequestModel>,\n service: ServiceClassType<Service>,\n sorts: TypeDescriptor<Sorts>,\n filters: TypeDescriptor<Filters>,\n modelConfig?: {\n idProperty?: keyof Model;\n titleProperty?: keyof Model;\n i18nBaseKey?: string;\n },\n buildFn?: (\n builder: TableviewBuilder<\n Model,\n Service,\n TableviewDescriptorInst<Model, Sorts, Filters>,\n TableviewCrudDataProviderInst<Model, RequestModel, Service, Sorts, Filters>,\n Sorts,\n Filters\n >\n ) => void\n) {\n return prepareBuilder<Model, RequestModel, Service, Sorts, Filters>(type, requestType, service, modelConfig, buildFn);\n}\n","import {ClassAttributeDef} from '@mediusinc/mng-commons';\n\nexport class QueryResult<Item> implements IMediusQueryResultV2<Item> {\n totalCount?: number;\n data?: Array<Item>;\n\n static discriminator?: string;\n\n static fromArray<Item>(pageData: Item[], allDataCount?: number) {\n const mqr = new QueryResult<Item>();\n mqr.totalCount = allDataCount ?? pageData.length;\n mqr.data = pageData;\n return mqr;\n }\n\n static attributeTypeMap: Array<ClassAttributeDef> = [\n {\n name: 'totalCount',\n baseName: 'totalCount',\n type: 'number'\n },\n {\n name: 'data',\n baseName: 'data',\n type: 'Array<T>'\n }\n ];\n\n static getAttributeTypeMap() {\n return QueryResult.attributeTypeMap;\n }\n}\n\nexport interface IMediusQueryResultV2<Item> {\n totalCount?: number;\n data?: Array<Item>;\n}\n","import {ClassAttributeDef, ClassType, DateUtil, DecoratorMetadataUtil, TypeRegistry} from '@mediusinc/mng-commons';\n\nexport class ObjectSerializer {\n private static _instance: ObjectSerializer = new ObjectSerializer();\n private readonly _logCategory = 'ObjectSerializer';\n private readonly _primitives: string[] = ['string', 'boolean', 'double', 'integer', 'long', 'float', 'number', 'any'];\n\n private dateTimeInUtc = false;\n private dateTimeWithTimezone = true;\n private dateTimeWithMillis = true;\n\n public get primitives() {\n return this._primitives;\n }\n\n /**\n * Only use one instance of object (out of Angular context)\n */\n public static get(): ObjectSerializer {\n return ObjectSerializer._instance;\n }\n\n public configure(config: {dateTimeInUtc?: boolean; dateTimeWithTimezone?: boolean; dateTimeWithMillis?: boolean}): void {\n if (config.dateTimeInUtc !== undefined) {\n this.dateTimeInUtc = config.dateTimeInUtc;\n }\n if (config.dateTimeWithTimezone !== undefined) {\n this.dateTimeWithTimezone = config.dateTimeWithTimezone;\n }\n if (config.dateTimeWithMillis !== undefined) {\n this.dateTimeWithMillis = config.dateTimeWithMillis;\n }\n }\n\n public findCorrectType(data: any, expectedTypeName: string): string {\n if (data == undefined) {\n return expectedTypeName;\n } else if (this._primitives.indexOf(expectedTypeName.toLowerCase()) !== -1) {\n return expectedTypeName;\n } else if (expectedTypeName === 'Date') {\n return expectedTypeName;\n } else {\n const enumType = TypeRegistry.get().findEnum(expectedTypeName);\n if (enumType) {\n return expectedTypeName;\n }\n\n const type = TypeRegistry.get().findType(expectedTypeName);\n if (!type) {\n return expectedTypeName; // w/e we don't know the type\n }\n\n // Check the discriminator\n const discriminatorProperty = type.discriminator;\n if (discriminatorProperty == null) {\n return expectedTypeName; // the type does not have a discriminator. use it.\n } else {\n if (data[discriminatorProperty]) {\n const discriminatorType = data[discriminatorProperty];\n const type = TypeRegistry.get().findType(expectedTypeName);\n if (type) {\n return discriminatorType; // use the type given in the discriminator\n } else {\n return expectedTypeName; // discriminator did not map to a type\n }\n } else {\n return expectedTypeName; // discriminator was not present (or an empty string)\n }\n }\n }\n }\n\n public serializeClass<T>(data: T, type: ClassType<T>) {\n return this.serialize(data, DecoratorMetadataUtil.findTypeName(type) ?? undefined);\n }\n\n public serializeClassArray<T>(data: Array<T>, type: ClassType<T>) {\n return this.serialize(data, `Array<${DecoratorMetadataUtil.findTypeName(type)}>`);\n }\n\n public serialize(data: any, typeName?: string, subtype?: string) {\n if (data == undefined) {\n return data;\n } else if (typeName && this._primitives.indexOf(typeName.toLowerCase()) !== -1) {\n return data;\n } else if (typeName && typeName.lastIndexOf('Array<', 0) === 0) {\n // string.startsWith pre es6\n let subType: string = typeName.replace('Array<', ''); // Array<Type> => Type>\n subType = subType.substring(0, subType.length - 1); // Type> => Type\n const transformedData: any[] = [];\n // tslint:disable-next-line:prefer-for-of\n for (let index = 0; index < data.length; index++) {\n const datum = data[index];\n transformedData.push(this.serialize(datum, subType));\n }\n return transformedData;\n } else if (typeName === 'Date') {\n const dateOnly = subtype?.toLowerCase() === 'date';\n return DateUtil.toIsoString(data, dateOnly ? 'date' : 'date-time', {\n utc: this.dateTimeInUtc,\n noTimezone: !this.dateTimeWithTimezone,\n noMillis: !this.dateTimeWithMillis\n });\n } else if (typeName) {\n const enumType = TypeRegistry.get().findEnum(typeName);\n if (enumType) {\n return data;\n }\n\n const type = TypeRegistry.get().findType(typeName);\n if (!type) {\n // in case we dont know the type\n return data;\n }\n\n // Get the actual type of this object\n const correctedTypeName = this.findCorrectType(data, typeName);\n const correctedType = TypeRegistry.get().findType(correctedTypeName);\n\n // get the map for the correct type.\n const attributeTypes = correctedType.getAttributeTypeMap() as Array<ClassAttributeDef>;\n const instance: {[index: string]: any} = {};\n // tslint:disable-next-line:prefer-for-of\n for (let index = 0; index < attributeTypes.length; index++) {\n const attributeType = attributeTypes[index];\n instance[attributeType.baseName] = this.serialize(data[attributeType.name], attributeType.type, attributeType.subtype);\n }\n return instance;\n } else {\n return data;\n }\n }\n\n public deserializeClass<T>(data: any, type: ClassType<T>): T {\n return this.deserialize(data, DecoratorMetadataUtil.findTypeName(type) ?? undefined);\n }\n\n public deserializeClassArray<T>(data: any, type: ClassType<T>): Array<T> {\n return this.deserialize(data, `Array<${DecoratorMetadataUtil.findTypeName(type)}>`);\n }\n\n public deserialize(data: any, type?: string) {\n // polymorphism may change the actual type.\n if (data == undefined || !type) {\n return data;\n }\n\n const correctedTypeName = this.findCorrectType(data, type);\n\n if (this._primitives.indexOf(correctedTypeName.toLowerCase()) !== -1) {\n return data;\n } else if (correctedTypeName.lastIndexOf('Array<', 0) === 0) {\n // string.startsWith pre es6\n let subType: string = correctedTypeName.replace('Array<', ''); // Array<Type> => Type>\n subType = subType.substring(0, subType.length - 1); // Type> => Type\n const transformedData: any[] = [];\n // tslint:disable-next-line:prefer-for-of\n for (let index = 0; index < data.length; index++) {\n const datum = data[index];\n transformedData.push(this.deserialize(datum, subType));\n }\n return transformedData;\n } else if (correctedTypeName === 'Date') {\n return new Date(data);\n } else {\n const enumType = TypeRegistry.get().findEnum(correctedTypeName);\n if (enumType) {\n // is Enum\n return data;\n }\n\n const correctedType = TypeRegistry.get().findType(correctedTypeName);\n if (!correctedType) {\n // dont know the type\n return data;\n }\n const instance = new correctedType();\n const attributeTypes = correctedType.getAttributeTypeMap() as Array<ClassAttributeDef>;\n // tslint:disable-next-line:prefer-for-of\n for (let index = 0; index < attributeTypes.length; index++) {\n const attributeType = attributeTypes[index];\n instance[attributeType.name] = this.deserialize(data[attributeType.baseName], attributeType.type);\n }\n return instance;\n }\n }\n}\n","import {HttpClient} from '@angular/common/http';\nimport {inject} from '@angular/core';\n\nimport {ClassType} from '@mediusinc/mng-commons';\n\nimport {ObjectSerializer} from '../serder/object-serializer';\n\nexport abstract class AMngBaseApiService {\n protected readonly objectSerializer: ObjectSerializer = ObjectSerializer.get();\n protected readonly http: HttpClient;\n\n protected constructor() {\n this.http = inject(HttpClient);\n }\n\n protected abstract getBasePath(): string;\n\n protected abstract getServiceBasePath(): string | null;\n\n protected getUrl(...pathSegments: Array<string>): string {\n let baseUrl = this.getBasePath();\n if (baseUrl.endsWith('/')) {\n baseUrl = baseUrl.substring(0, baseUrl.length - 1);\n }\n const serviceBasePath = this.getServiceBasePath();\n let path = [serviceBasePath, ...pathSegments].filter(s => s && s.length).join('/');\n // omit first and last '/'\n if (path.startsWith('/')) {\n path = path.substring(1);\n }\n if (path.endsWith('/')) {\n path = path.substring(0, path.length - 1);\n }\n // replace any double '//' from path that could come from joining paths\n path = path.replace('//', '/');\n return `${baseUrl}/${path}`;\n }\n\n protected deserializeQueryResult<QR>(item: any, qrType: ClassType<QR>): QR {\n return this.deserializeClass(item, qrType);\n }\n\n protected deserializeClass<C>(item: any, type: ClassType<C>): C {\n return this.objectSerializer.deserializeClass(item, type);\n }\n\n protected deserializeClassArray<C>(item: any, type: ClassType<C>): Array<C> {\n return this.objectSerializer.deserializeClassArray(item, type);\n }\n\n protected serializeClass<C>(item: C, type: ClassType<C>): any {\n return this.objectSerializer.serializeClass(item, type);\n }\n\n protected serializeClassArray<C>(item: Array<C>, type: ClassType<C>): any {\n return this.objectSerializer.serializeClassArray(item, type);\n }\n}\n\nexport abstract class AMngApiService<T> extends AMngBaseApiService {\n protected constructor(protected type: ClassType<T>) {\n super();\n }\n\n protected deserialize(item: any): T {\n return this.deserializeClass(item, this.type);\n }\n\n protected serialize(item: T): any {\n return this.serializeClass(item, this.type);\n }\n}\n","import {HttpParams} from '@angular/common/http';\n\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {ClassType, DataListParams, DataListParamsUtil} from '@mediusinc/mng-commons';\n\nimport {QueryResult} from '../models/query-result.model';\nimport {AMngApiService} from './api.abstract.service';\n\nexport interface IMngGetAllApiService<QRT extends QueryResult<any>> {\n getAllGet(requestParams?: DataListParams<any, any>, params?: HttpParams, locale?: string): Observable<QRT>;\n}\n\nexport abstract class AMngGetAllApiService<FetchType, QueryResultType extends QueryResult<any>> extends AMngApiService<FetchType> implements IMngGetAllApiService<QueryResultType> {\n protected constructor(\n fetchType: ClassType<FetchType>,\n protected queryResultType: ClassType<QueryResultType>\n ) {\n super(fetchType);\n }\n\n public getAllGet(requestParams?: DataListParams, params?: HttpParams, locale?: string): Observable<QueryResultType> {\n const url = this.getUrl(this.getGetAllGetPath());\n if (!params) {\n params = new HttpParams();\n }\n if (locale) {\n params = params.set('lang', locale);\n }\n\n if (requestParams?.limit) {\n params = params.set('limit', requestParams.limit);\n }\n if (requestParams?.offset) {\n params = params.set('offset', requestParams.offset);\n }\n\n const sort = DataListParamsUtil.sortToUrlQuery(requestParams);\n if (sort) {\n params = params.set('sort', sort);\n }\n\n if (requestParams?.filters) {\n Object.keys(requestParams.filters).forEach(key => {\n const value = DataListParamsUtil.paramsFilterToUrlQuery(requestParams, key);\n if (value) {\n params = params!.set(key, value);\n }\n });\n }\n\n return this.http\n .get<unknown>(url, {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n params: params\n })\n .pipe(map(res => this.deserializeQueryResult(res, this.queryResultType)));\n }\n\n protected getGetAllGetPath(): string {\n return '/';\n }\n}\n","import {HttpParams} from '@angular/common/http';\n\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {ClassType, IdType} from '@mediusinc/mng-commons';\n\nimport {QueryResult} from '../models/query-result.model';\nimport {AMngGetAllApiService} from './get-all-api.abstract.service';\n\nexport interface IMngCrudApiService<FetchType, RequestType> {\n createPost?(item: RequestType, params?: HttpParams): Observable<FetchType>;\n\n getByIdGet?(id: IdType, params?: HttpParams, locale?: string): Observable<FetchType>;\n\n updatePut?(id: IdType, item: RequestType, params?: HttpParams): Observable<FetchType>;\n\n removeDelete?(id: IdType, item?: FetchType, params?: HttpParams): Observable<FetchType | null>;\n}\n\nexport abstract class AMngCrudApiService<FetchType, RequestType, QueryResultType extends QueryResult<any>>\n extends AMngGetAllApiService<FetchType, QueryResultType>\n implements IMngCrudApiService<FetchType, RequestType>\n{\n protected constructor(\n fetchType: ClassType<FetchType>,\n protected requestType: ClassType<RequestType>,\n queryResultType: ClassType<QueryResultType>\n ) {\n super(fetchType, queryResultType);\n }\n\n public createPost(item: RequestType, params?: HttpParams): Observable<FetchType> {\n const url = this.getUrl(this.getCreatePostPath(item));\n return this.http\n .post<unknown>(url, this.serializeRequest(item), {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n params: params\n })\n .pipe(map(res => this.deserialize(res)));\n }\n\n public getByIdGet(id: IdType, params?: HttpParams, locale?: string): Observable<FetchType> {\n const url = this.getUrl(this.getGetByIdGetPath(id));\n if (params && locale) {\n params = params.set('lang', locale);\n } else if (locale) {\n params = new HttpParams().set('lang', locale);\n }\n return this.http\n .get<unknown>(url, {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n params: params\n })\n .pipe(map(res => this.deserialize(res)));\n }\n\n public updatePut(id: IdType, item: RequestType, params?: HttpParams): Observable<FetchType> {\n const url = this.getUrl(this.getUpdatePutPath(id, item));\n return this.http\n .put<unknown>(url, this.serializeRequest(item), {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n params: params\n })\n .pipe(map(res => this.deserialize(res)));\n }\n\n public removeDelete(id: IdType, item?: FetchType, params?: HttpParams): Observable<FetchType | null> {\n const url = this.getUrl(this.getRemoveDeletePath(id, item));\n return this.http\n .request<unknown>('delete', url, {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n body: item ? this.serialize(item) : undefined,\n params: params\n })\n .pipe(map(res => (res ? this.deserialize(res) : null)));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected getCreatePostPath(item: RequestType): string {\n return '';\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected getUpdatePutPath(id: IdType, item: RequestType): string {\n return ``;\n }\n\n protected getGetByIdGetPath(id: IdType): string {\n return `/${id}`;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected getRemoveDeletePath(id: IdType, item?: FetchType) {\n return `/${id}`;\n }\n\n protected deserializeRequest(item: any): RequestType {\n return this.deserializeClass(item, this.requestType);\n }\n\n protected serializeRequest(item: RequestType): any {\n return this.serializeClass(item, this.requestType);\n }\n}\n","// helpers\nexport * from './helpers/tableview-crud-create';\n\n// models\nexport * from './models/query-result.model';\n\n// serder\nexport * from './serder/object-serializer';\n\n// services\nexport * from './services/api.abstract.service';\nexport * from './services/crud-api.abstract.service';\nexport * from './services/get-all-api.abstract.service';\n\n// tableview\nexport * from './tableview/tableview-crud.data-provider';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,224 @@
1
+ import { MngInternalError, FilterMatchMode, DataListParamsUtil, TableviewBuilder, TableviewDescriptor, TableviewDataProvider } from '@mediusinc/mng-commons';
2
+ import { Observable } from 'rxjs';
3
+ import { inject, Injector } from '@angular/core';
4
+
5
+ /**
6
+ * Maps an Observable of data with optional totalCount and data to a data list result object with provided defaults of empty array and count 0.
7
+ */
8
+ function mapToDataList() {
9
+ return function (source) {
10
+ return new Observable(subscriber => {
11
+ return source.subscribe({
12
+ next(value) {
13
+ subscriber.next({
14
+ data: value.data ?? [],
15
+ totalCount: value.totalCount ?? value.data?.length ?? 0
16
+ });
17
+ }
18
+ });
19
+ });
20
+ };
21
+ }
22
+
23
+ /**
24
+ * Converts a filter match mode to its corresponding enum value.
25
+ *
26
+ * @param {string} matchMode - The filter match mode from data list filter to convert.
27
+ * @returns {GetAllParamsFilterMatchType} - The converted enum value.
28
+ * @throws {MngInternalError} - If the filter match mode is not supported.
29
+ */
30
+ function toGetAllParamsFilterMatchMode(matchMode) {
31
+ switch (matchMode) {
32
+ case FilterMatchMode.Equals:
33
+ return 'EQUALS';
34
+ case FilterMatchMode.NotEquals:
35
+ return 'NOT_EQUALS';
36
+ case FilterMatchMode.Contains:
37
+ return 'CONTAINS';
38
+ case FilterMatchMode.NotContains:
39
+ return 'NOT_CONTAINS';
40
+ case FilterMatchMode.In:
41
+ return 'IN';
42
+ case FilterMatchMode.NotIn:
43
+ return 'NOT_IN';
44
+ case FilterMatchMode.StartsWith:
45
+ return 'STARTS_WITH';
46
+ case FilterMatchMode.EndsWith:
47
+ return 'ENDS_WITH';
48
+ case FilterMatchMode.LessThan:
49
+ return 'LESS_THAN';
50
+ case FilterMatchMode.LessThanOrEqualTo:
51
+ return 'LESS_THAN_OR_EQUAL_TO';
52
+ case FilterMatchMode.GreaterThan:
53
+ return 'GREATER_THAN';
54
+ case FilterMatchMode.GreaterThanOrEqualTo:
55
+ return 'GREATER_THAN_OR_EQUAL_TO';
56
+ case FilterMatchMode.Between:
57
+ return 'BETWEEN';
58
+ case FilterMatchMode.Exists:
59
+ return 'EXISTS';
60
+ case FilterMatchMode.DoesNotExist:
61
+ return 'DOES_NOT_EXIST';
62
+ default:
63
+ throw new MngInternalError(`Filter match type '${matchMode}' not supported.`);
64
+ }
65
+ }
66
+ /**
67
+ * Converts given parameters of a DataListParams object into a get all request param object with values as URL query string representation.
68
+ *
69
+ * @param {DataListParams} params - The parameters to convert.
70
+ * @typeparam Sorts - The type of the sorting options for the data list.
71
+ * @typeparam Filters - The type of the filters for the data list.
72
+ * @returns {GetAllParamsUrlQueryType<Filters>} - Get all request param object with values as URL query string representation.
73
+ */
74
+ function toGetAllParamsAsUrlQuery(params) {
75
+ const res = {
76
+ offset: params.offset,
77
+ limit: params.limit,
78
+ sort: DataListParamsUtil.sortToUrlQuery(params),
79
+ globalFilter: params.search
80
+ };
81
+ if (params.filters) {
82
+ Object.keys(params.filters).forEach(key => {
83
+ res[key] = DataListParamsUtil.paramsFilterToUrlQuery(params, key);
84
+ });
85
+ }
86
+ return res;
87
+ }
88
+ /**
89
+ * Converts given parameters of a DataListParams object into a get all request param object with values as objects for POST requests.
90
+ *
91
+ * @param {DataListParams} params - The parameters to convert.
92
+ * @typeparam Sorts - The type of the sorting options for the data list.
93
+ * @typeparam Filters - The type of the filters for the data list.
94
+ * @returns {GetAllParamsType<Sorts, Filters>} - Get all request param object with values as objects for POST requests.
95
+ */
96
+ function toGetAllParams(params) {
97
+ const res = {};
98
+ if (params.offset != null) {
99
+ res.offset = params.offset;
100
+ }
101
+ if (params.limit != null) {
102
+ res.limit = params.limit;
103
+ }
104
+ if (params.search != null) {
105
+ res.globalFilter = {
106
+ value: params.search
107
+ };
108
+ }
109
+ if (Array.isArray(params.sort) && params.sort.length > 0) {
110
+ res.sort = params.sort.map(s => ({
111
+ property: s.property,
112
+ direction: s.ascending === true || s.ascending == null ? 'ASCENDING' : 'DESCENDING'
113
+ }));
114
+ }
115
+ if (params.filters) {
116
+ Object.keys(params.filters).forEach(key => {
117
+ const paramsFilter = params.filters[key];
118
+ if (!paramsFilter.matchMode) {
119
+ return;
120
+ }
121
+ let value = Array.isArray(paramsFilter.value) ? undefined : paramsFilter.value;
122
+ let values = Array.isArray(paramsFilter.value) ? paramsFilter.value : undefined;
123
+ if (paramsFilter.matchMode === FilterMatchMode.Exists || paramsFilter.matchMode === FilterMatchMode.DoesNotExist) {
124
+ value = undefined;
125
+ values = undefined;
126
+ }
127
+ else if (paramsFilter.matchMode === FilterMatchMode.In || paramsFilter.matchMode === FilterMatchMode.NotIn) {
128
+ if (values == null || values.length === 0) {
129
+ throw new MngInternalError(`Filter with mode ${paramsFilter.matchMode} must have values in array, but has ${values}`);
130
+ }
131
+ }
132
+ else if (paramsFilter.matchMode === FilterMatchMode.Between) {
133
+ if (values == null || values.length !== 2) {
134
+ throw new MngInternalError(`Filter with mode ${paramsFilter.matchMode} must have 2 values in array, but has ${values}`);
135
+ }
136
+ }
137
+ else if (paramsFilter.value == null) {
138
+ return;
139
+ }
140
+ const caseSensitivity = paramsFilter.caseSensitive ? 'CASE_SENSITIVE' : paramsFilter.caseSensitive === false ? 'CASE_INSENSITIVE' : undefined;
141
+ const filter = {
142
+ filterMatchType: toGetAllParamsFilterMatchMode(paramsFilter.matchMode)
143
+ };
144
+ if (value != null) {
145
+ filter.value = value;
146
+ }
147
+ if (values != null && Array.isArray(values) && values.length > 0) {
148
+ filter.values = values;
149
+ }
150
+ if (caseSensitivity != null) {
151
+ filter.caseSensitivity = caseSensitivity;
152
+ }
153
+ res[key] = filter;
154
+ });
155
+ }
156
+ return res;
157
+ }
158
+ /**
159
+ * Converts DataListParams to sort query URL representation.
160
+ *
161
+ * @param {DataListParams} params - The params object with sort property to convert.
162
+ * @returns {string | undefined} - The formatted sort query URL param or undefined.
163
+ */
164
+ function toGetAllSortAsQueryUrl(params) {
165
+ return DataListParamsUtil.sortToUrlQuery(params);
166
+ }
167
+ /**
168
+ * Converts a DataListFilter object to a query URL string.
169
+ *
170
+ * @param {DataListFilter} filter - The filter object from params to convert.
171
+ * @returns {string|undefined} - The formatted filter query URL param or undefined.
172
+ */
173
+ function toGetAllFilterAsQueryUrl(filter) {
174
+ return DataListParamsUtil.filterToUrlQuery(filter);
175
+ }
176
+ /**
177
+ * Executes the "getAll" on API service with request parameters.
178
+ * Get all is expected to be executed via GET method using params as URL queries.
179
+ *
180
+ * @param {Service} service - The API service instance.
181
+ * @param {Function} getAllFn - The "getAll" function on provided service instance.
182
+ * @param {Object} params - The data list params.
183
+ * @returns {Observable<<DataListResult<Item>>>} An observable with data list result.
184
+ */
185
+ function executeGetAll(service, getAllFn, params) {
186
+ return getAllFn.bind(service)(toGetAllParamsAsUrlQuery(params)).pipe(mapToDataList());
187
+ }
188
+ /**
189
+ * Executes the "getAll" on API service with request parameters.
190
+ * Get all is expected to be executed via POST method using params as object in body of request.
191
+ *
192
+ * @param {Service} service - The API service instance.
193
+ * @param {Function} getAllFn - The "getAll" function on provided service instance.
194
+ * @param {Object} params - The data list params.
195
+ * @returns {Observable<<DataListResult<Item>>>} An observable with data list result.
196
+ */
197
+ function executeGetAllAsPost(service, getAllFn, params) {
198
+ return getAllFn.bind(service)(toGetAllParams(params)).pipe(mapToDataList());
199
+ }
200
+
201
+ /**
202
+ * Creates a tableview with a given model, service and sorts and filters extracted from Data API Get All request params, service, and optional build function.
203
+ *
204
+ * @param {ModelDescriptor<Model>} model - The model descriptor.
205
+ * @param {ServiceClassType<Service>} service - The class type of the service.
206
+ * @param {TypeDescriptor<RequestParam>} params - The request param of get all request. Filters and sorts will be taken from here.
207
+ * @param {(builder: TableviewBuilder) => void} [buildFn] - The optional callback function to customize the tableview using the prepared builder.
208
+ *
209
+ * @returns A tableview instance with descriptor, data provider and actions.
210
+ */
211
+ function tableviewWithGetAllParams(model, service, params, buildFn) {
212
+ const builder = new TableviewBuilder(TableviewDescriptor.fromModel(model), TableviewDataProvider.fromService(service), inject(Injector));
213
+ buildFn?.(builder);
214
+ return builder.build();
215
+ }
216
+
217
+ // helpers
218
+
219
+ /**
220
+ * Generated bundle index. Do not edit.
221
+ */
222
+
223
+ export { executeGetAll, executeGetAllAsPost, mapToDataList, tableviewWithGetAllParams, toGetAllFilterAsQueryUrl, toGetAllParams, toGetAllParamsAsUrlQuery, toGetAllParamsFilterMatchMode, toGetAllSortAsQueryUrl };
224
+ //# sourceMappingURL=mediusinc-mng-commons-data-api.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mediusinc-mng-commons-data-api.mjs","sources":["../../data-api/src/rxjs/map-to-data-list.operator.ts","../../data-api/src/helpers/get-all-params.ts","../../data-api/src/helpers/tableview-get-all-params-create.ts","../../data-api/src/index.ts","../../data-api/src/mediusinc-mng-commons-data-api.ts"],"sourcesContent":["import {Observable, OperatorFunction} from 'rxjs';\n\nimport {DataListResult} from '@mediusinc/mng-commons';\n\n/**\n * Maps an Observable of data with optional totalCount and data to a data list result object with provided defaults of empty array and count 0.\n */\nexport function mapToDataList<Item>(): OperatorFunction<{data?: Item[]; totalCount?: number}, DataListResult<Item>> {\n return function <Item>(source: Observable<{data?: Item[]; totalCount?: number}>): Observable<DataListResult<Item>> {\n return new Observable(subscriber => {\n return source.subscribe({\n next(value) {\n subscriber.next({\n data: value.data ?? [],\n totalCount: value.totalCount ?? value.data?.length ?? 0\n });\n }\n });\n });\n };\n}\n","import {Observable} from 'rxjs';\n\nimport {DataListFilter, DataListParams, DataListParamsUtil, DataListResult, FilterMatchMode, MngInternalError} from '@mediusinc/mng-commons';\n\nimport {GetAllParamsFilterMatchType, GetAllParamsFilterType, GetAllParamsType, GetAllParamsUrlQueryType} from '../models/request-params.model';\nimport {mapToDataList} from '../rxjs/map-to-data-list.operator';\n\n/**\n * Converts a filter match mode to its corresponding enum value.\n *\n * @param {string} matchMode - The filter match mode from data list filter to convert.\n * @returns {GetAllParamsFilterMatchType} - The converted enum value.\n * @throws {MngInternalError} - If the filter match mode is not supported.\n */\nexport function toGetAllParamsFilterMatchMode(matchMode: string): GetAllParamsFilterMatchType {\n switch (matchMode) {\n case FilterMatchMode.Equals:\n return 'EQUALS';\n case FilterMatchMode.NotEquals:\n return 'NOT_EQUALS';\n case FilterMatchMode.Contains:\n return 'CONTAINS';\n case FilterMatchMode.NotContains:\n return 'NOT_CONTAINS';\n case FilterMatchMode.In:\n return 'IN';\n case FilterMatchMode.NotIn:\n return 'NOT_IN';\n case FilterMatchMode.StartsWith:\n return 'STARTS_WITH';\n case FilterMatchMode.EndsWith:\n return 'ENDS_WITH';\n case FilterMatchMode.LessThan:\n return 'LESS_THAN';\n case FilterMatchMode.LessThanOrEqualTo:\n return 'LESS_THAN_OR_EQUAL_TO';\n case FilterMatchMode.GreaterThan:\n return 'GREATER_THAN';\n case FilterMatchMode.GreaterThanOrEqualTo:\n return 'GREATER_THAN_OR_EQUAL_TO';\n case FilterMatchMode.Between:\n return 'BETWEEN';\n case FilterMatchMode.Exists:\n return 'EXISTS';\n case FilterMatchMode.DoesNotExist:\n return 'DOES_NOT_EXIST';\n default:\n throw new MngInternalError(`Filter match type '${matchMode}' not supported.`);\n }\n}\n\n/**\n * Converts given parameters of a DataListParams object into a get all request param object with values as URL query string representation.\n *\n * @param {DataListParams} params - The parameters to convert.\n * @typeparam Sorts - The type of the sorting options for the data list.\n * @typeparam Filters - The type of the filters for the data list.\n * @returns {GetAllParamsUrlQueryType<Filters>} - Get all request param object with values as URL query string representation.\n */\nexport function toGetAllParamsAsUrlQuery<Sorts, Filters extends keyof any>(params: DataListParams<Sorts, Filters>): GetAllParamsUrlQueryType<Filters> {\n const res = {\n offset: params.offset,\n limit: params.limit,\n sort: DataListParamsUtil.sortToUrlQuery(params as DataListParams),\n globalFilter: params.search\n } as GetAllParamsUrlQueryType<Filters>;\n\n if (params.filters) {\n Object.keys(params.filters).forEach(key => {\n res[key as Filters] = DataListParamsUtil.paramsFilterToUrlQuery(params, key as Filters) as any;\n });\n }\n\n return res;\n}\n\n/**\n * Converts given parameters of a DataListParams object into a get all request param object with values as objects for POST requests.\n *\n * @param {DataListParams} params - The parameters to convert.\n * @typeparam Sorts - The type of the sorting options for the data list.\n * @typeparam Filters - The type of the filters for the data list.\n * @returns {GetAllParamsType<Sorts, Filters>} - Get all request param object with values as objects for POST requests.\n */\nexport function toGetAllParams<Sorts, Filters extends keyof any>(params: DataListParams<Sorts, Filters>): GetAllParamsType<Sorts, Filters> {\n const res = {} as GetAllParamsType<Sorts, Filters>;\n\n if (params.offset != null) {\n res.offset = params.offset;\n }\n if (params.limit != null) {\n res.limit = params.limit;\n }\n\n if (params.search != null) {\n res.globalFilter = {\n value: params.search\n };\n }\n\n if (Array.isArray(params.sort) && params.sort.length > 0) {\n res.sort = params.sort.map(s => ({\n property: s.property,\n direction: s.ascending === true || s.ascending == null ? 'ASCENDING' : 'DESCENDING'\n }));\n }\n\n if (params.filters) {\n Object.keys(params.filters).forEach(key => {\n const paramsFilter = params.filters![key as Filters];\n if (!paramsFilter.matchMode) {\n return;\n }\n\n let value = Array.isArray(paramsFilter.value) ? undefined : paramsFilter.value;\n let values = Array.isArray(paramsFilter.value) ? paramsFilter.value : undefined;\n\n if (paramsFilter.matchMode === FilterMatchMode.Exists || paramsFilter.matchMode === FilterMatchMode.DoesNotExist) {\n value = undefined;\n values = undefined;\n } else if (paramsFilter.matchMode === FilterMatchMode.In || paramsFilter.matchMode === FilterMatchMode.NotIn) {\n if (values == null || values.length === 0) {\n throw new MngInternalError(`Filter with mode ${paramsFilter.matchMode} must have values in array, but has ${values}`);\n }\n } else if (paramsFilter.matchMode === FilterMatchMode.Between) {\n if (values == null || values.length !== 2) {\n throw new MngInternalError(`Filter with mode ${paramsFilter.matchMode} must have 2 values in array, but has ${values}`);\n }\n } else if (paramsFilter.value == null) {\n return;\n }\n\n const caseSensitivity = paramsFilter.caseSensitive ? 'CASE_SENSITIVE' : paramsFilter.caseSensitive === false ? 'CASE_INSENSITIVE' : undefined;\n const filter = <GetAllParamsFilterType<any>>{\n filterMatchType: toGetAllParamsFilterMatchMode(paramsFilter.matchMode)\n };\n\n if (value != null) {\n filter.value = value;\n }\n if (values != null && Array.isArray(values) && values.length > 0) {\n filter.values = values;\n }\n if (caseSensitivity != null) {\n filter.caseSensitivity = caseSensitivity;\n }\n\n (res as any)[key as Filters] = filter;\n });\n }\n\n return res;\n}\n\n/**\n * Converts DataListParams to sort query URL representation.\n *\n * @param {DataListParams} params - The params object with sort property to convert.\n * @returns {string | undefined} - The formatted sort query URL param or undefined.\n */\nexport function toGetAllSortAsQueryUrl(params?: DataListParams<any, any>): string | undefined {\n return DataListParamsUtil.sortToUrlQuery(params);\n}\n\n/**\n * Converts a DataListFilter object to a query URL string.\n *\n * @param {DataListFilter} filter - The filter object from params to convert.\n * @returns {string|undefined} - The formatted filter query URL param or undefined.\n */\nexport function toGetAllFilterAsQueryUrl(filter?: DataListFilter): string | undefined {\n return DataListParamsUtil.filterToUrlQuery(filter);\n}\n\n/**\n * Executes the \"getAll\" on API service with request parameters.\n * Get all is expected to be executed via GET method using params as URL queries.\n *\n * @param {Service} service - The API service instance.\n * @param {Function} getAllFn - The \"getAll\" function on provided service instance.\n * @param {Object} params - The data list params.\n * @returns {Observable<<DataListResult<Item>>>} An observable with data list result.\n */\nexport function executeGetAll<Service, Item, Sorts, Filters extends keyof any>(\n service: Service,\n getAllFn: (requestParameters: GetAllParamsUrlQueryType<Filters>) => Observable<{data?: Item[]; totalCount?: number}>,\n params: DataListParams<Sorts, Filters>\n): Observable<DataListResult<Item>> {\n return getAllFn.bind(service)(toGetAllParamsAsUrlQuery(params)).pipe(mapToDataList<Item>());\n}\n\n/**\n * Executes the \"getAll\" on API service with request parameters.\n * Get all is expected to be executed via POST method using params as object in body of request.\n *\n * @param {Service} service - The API service instance.\n * @param {Function} getAllFn - The \"getAll\" function on provided service instance.\n * @param {Object} params - The data list params.\n * @returns {Observable<<DataListResult<Item>>>} An observable with data list result.\n */\nexport function executeGetAllAsPost<Service, Item, Sorts, Filters extends keyof any>(\n service: Service,\n getAllFn: (requestParameters: GetAllParamsType<Sorts, Filters>) => Observable<{data?: Item[]; totalCount?: number}>,\n params: DataListParams<Sorts, Filters>\n): Observable<DataListResult<Item>> {\n return getAllFn.bind(service)(toGetAllParams(params)).pipe(mapToDataList<Item>());\n}\n","import {Injector, inject} from '@angular/core';\n\nimport {\n ModelDescriptor,\n ServiceClassType,\n TableviewBuilder,\n TableviewDataProvider,\n TableviewDataProviderInst,\n TableviewDescriptor,\n TableviewDescriptorInst,\n TypeDescriptor\n} from '@mediusinc/mng-commons';\n\nimport {GetAllParamsDefaultWoFiltersType} from '../models/request-params.model';\nimport {ExtractGetAllParamsFilterType, ExtractGetAllParamsSortType} from '../types/extract-get-all-params.type';\n\n/**\n * Creates a tableview with a given model, service and sorts and filters extracted from Data API Get All request params, service, and optional build function.\n *\n * @param {ModelDescriptor<Model>} model - The model descriptor.\n * @param {ServiceClassType<Service>} service - The class type of the service.\n * @param {TypeDescriptor<RequestParam>} params - The request param of get all request. Filters and sorts will be taken from here.\n * @param {(builder: TableviewBuilder) => void} [buildFn] - The optional callback function to customize the tableview using the prepared builder.\n *\n * @returns A tableview instance with descriptor, data provider and actions.\n */\nexport function tableviewWithGetAllParams<\n Model,\n Service,\n RequestParam extends GetAllParamsDefaultWoFiltersType,\n Sorts = ExtractGetAllParamsSortType<RequestParam>,\n Filters extends keyof any = ExtractGetAllParamsFilterType<RequestParam>\n>(\n model: ModelDescriptor<Model>,\n service: ServiceClassType<Service>,\n params: TypeDescriptor<RequestParam>,\n buildFn?: (\n builder: TableviewBuilder<Model, Service, TableviewDescriptorInst<Model, Sorts, Filters>, TableviewDataProviderInst<Model, Service, Sorts, Filters>, Sorts, Filters>\n ) => void\n) {\n const builder = new TableviewBuilder<Model, Service, TableviewDescriptorInst<Model, Sorts, Filters>, TableviewDataProviderInst<Model, Service, Sorts, Filters>, Sorts, Filters>(\n TableviewDescriptor.fromModel(model),\n TableviewDataProvider.fromService<Service, Model, Sorts, Filters>(service),\n inject(Injector)\n );\n buildFn?.(builder);\n return builder.build();\n}\n","// helpers\nexport * from './helpers/get-all-params';\nexport * from './helpers/tableview-get-all-params-create';\n\n// models\nexport * from './models/request-params.model';\n\n// rxjs\nexport * from './rxjs/map-to-data-list.operator';\n\n// types\nexport * from './types/extract-get-all-params.type';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}