@provoly/dashboard 0.20.3 → 0.20.5

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/components/metadata-editor/style/_o-metadata-editor.scss +0 -5
  2. package/dataset/components/dataset-detail/dataset-detail.component.d.ts +2 -1
  3. package/dataset/i18n/en.translations.d.ts +2 -1
  4. package/dataset/i18n/fr.translations.d.ts +2 -1
  5. package/dataset/style/_o-pry-dataset-card.scss +4 -37
  6. package/dataset/style/_o-pry-dataset-detail.scss +2 -53
  7. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +3 -3
  8. package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +3 -3
  9. package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +3 -3
  10. package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +3 -3
  11. package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +3 -3
  12. package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +3 -3
  13. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +15 -10
  14. package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +3 -3
  15. package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +3 -3
  16. package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +3 -3
  17. package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +3 -3
  18. package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +3 -3
  19. package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +3 -3
  20. package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +3 -3
  21. package/esm2022/components/metadata-editor/metadata-editor.component.mjs +3 -3
  22. package/esm2022/components/metadata-editor/style/css.component.mjs +2 -2
  23. package/esm2022/components/scheme-picker/scheme-picker.component.mjs +3 -3
  24. package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +5 -5
  25. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +20 -5
  26. package/esm2022/dataset/i18n/en.translations.mjs +3 -2
  27. package/esm2022/dataset/i18n/fr.translations.mjs +4 -3
  28. package/esm2022/dataset/style/css.component.mjs +2 -2
  29. package/esm2022/filters/autocomplete/autocomplete.component.mjs +19 -6
  30. package/esm2022/filters/autocomplete/autocomplete.module.mjs +5 -5
  31. package/esm2022/filters/autocomplete/style/css.component.mjs +2 -2
  32. package/esm2022/filters/list/list-filter.component.mjs +1 -1
  33. package/esm2022/import/components/import.component.mjs +3 -3
  34. package/esm2022/lib/core/components/about/about.component.mjs +3 -3
  35. package/esm2022/lib/core/components/base-menu/base-menu.component.mjs +3 -3
  36. package/esm2022/lib/core/components/ellipsis.directive.mjs +31 -0
  37. package/esm2022/lib/core/components/select/select.component.mjs +193 -39
  38. package/esm2022/lib/core/components/select/select.module.mjs +4 -5
  39. package/esm2022/lib/core/components/share/share.component.mjs +3 -3
  40. package/esm2022/lib/core/components/translate-id/translate-id.pipe.mjs +7 -8
  41. package/esm2022/lib/core/core.module.mjs +8 -4
  42. package/esm2022/lib/core/i18n/en.translations.mjs +7 -6
  43. package/esm2022/lib/core/i18n/fr.translations.mjs +8 -6
  44. package/esm2022/lib/core/model/display-options.interface.mjs +18 -4
  45. package/esm2022/lib/core/model/manifest.interface.mjs +1 -1
  46. package/esm2022/lib/core/public-api.mjs +2 -1
  47. package/esm2022/lib/core/store/class/class.actions.mjs +1 -4
  48. package/esm2022/lib/core/store/class/class.effects.mjs +1 -4
  49. package/esm2022/lib/core/store/class/class.interface.mjs +1 -1
  50. package/esm2022/lib/core/store/class/class.reducer.mjs +3 -13
  51. package/esm2022/lib/core/store/class/class.selectors.mjs +1 -3
  52. package/esm2022/lib/core/store/class/class.service.mjs +1 -9
  53. package/esm2022/lib/core/store/config/config.selectors.mjs +1 -3
  54. package/esm2022/lib/core/store/config/config.service.mjs +4 -7
  55. package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +1 -4
  56. package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +3 -3
  57. package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +6 -15
  58. package/esm2022/lib/dashboard/components/widgets/settings/settings.component.mjs +3 -3
  59. package/esm2022/lib/dashboard/filter/components/filter-group/filter-group.component.mjs +3 -3
  60. package/esm2022/lib/dashboard/filter/style/css.component.mjs +2 -2
  61. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +1 -4
  62. package/esm2022/pipeline-components/filter/component/filter.component.mjs +3 -3
  63. package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +3 -3
  64. package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +3 -3
  65. package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +5 -5
  66. package/esm2022/presentation/components/presentation.component.mjs +3 -3
  67. package/esm2022/presentation/components/title-presentation/title-presentation.component.mjs +11 -21
  68. package/esm2022/presentation/i18n/fr.translations.mjs +9 -9
  69. package/esm2022/presentation/style/css.component.mjs +2 -2
  70. package/esm2022/restitution/components/restitution/restitution.component.mjs +23 -22
  71. package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +13 -6
  72. package/esm2022/restitution/i18n/en.translations.mjs +3 -3
  73. package/esm2022/restitution/i18n/fr.translations.mjs +4 -4
  74. package/esm2022/restitution/style/css.component.mjs +2 -2
  75. package/esm2022/search/i18n/en.translations.mjs +2 -1
  76. package/esm2022/search/i18n/fr.translations.mjs +2 -1
  77. package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +3 -3
  78. package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +3 -3
  79. package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +3 -3
  80. package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +3 -3
  81. package/esm2022/toolbox/components/automate-refresh/automate-refresh.component.mjs +3 -3
  82. package/esm2022/toolbox/components/clear-view/clear-view.component.mjs +3 -3
  83. package/esm2022/toolbox/components/drag-widgets/drag-widgets.component.mjs +3 -3
  84. package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +4 -8
  85. package/esm2022/toolbox/components/launch-tab/launch-tab.component.mjs +3 -3
  86. package/esm2022/toolbox/components/named-query/named-query.component.mjs +3 -3
  87. package/esm2022/toolbox/components/refresh-datasets/refresh-datasets.component.mjs +3 -3
  88. package/esm2022/toolbox/components/save-view/save-view.component.mjs +3 -3
  89. package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +3 -3
  90. package/esm2022/toolbox/components/toolbox.component.mjs +4 -3
  91. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +8 -2
  92. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +8 -7
  93. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +3 -4
  94. package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +3 -3
  95. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +10 -4
  96. package/esm2022/widgets/widget-map/i18n/en.translations.mjs +3 -2
  97. package/esm2022/widgets/widget-map/i18n/fr.translations.mjs +3 -2
  98. package/esm2022/widgets/widget-map/style/css.component.mjs +2 -2
  99. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +7 -7
  100. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +3 -3
  101. package/fesm2022/provoly-dashboard-admin.mjs +40 -35
  102. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  103. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +4 -4
  104. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
  105. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +2 -2
  106. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -1
  107. package/fesm2022/provoly-dashboard-dataset.mjs +28 -11
  108. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  109. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +24 -11
  110. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
  111. package/fesm2022/provoly-dashboard-filters-list.mjs +1 -1
  112. package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -1
  113. package/fesm2022/provoly-dashboard-import.mjs +2 -2
  114. package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
  115. package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs +2 -2
  116. package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs.map +1 -1
  117. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +2 -2
  118. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -1
  119. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +2 -2
  120. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -1
  121. package/fesm2022/provoly-dashboard-presentation.mjs +24 -34
  122. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  123. package/fesm2022/provoly-dashboard-restitution.mjs +40 -32
  124. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  125. package/fesm2022/provoly-dashboard-search.mjs +10 -8
  126. package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
  127. package/fesm2022/provoly-dashboard-toolbox.mjs +22 -25
  128. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  129. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +7 -1
  130. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
  131. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +7 -6
  132. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  133. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +2 -3
  134. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  135. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +2 -2
  136. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
  137. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +15 -7
  138. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  139. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +6 -6
  140. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  141. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +2 -2
  142. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
  143. package/fesm2022/provoly-dashboard.mjs +286 -135
  144. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  145. package/filters/autocomplete/autocomplete.component.d.ts +2 -0
  146. package/filters/autocomplete/autocomplete.module.d.ts +1 -1
  147. package/filters/autocomplete/style/_m-autocomplete.scss +16 -3
  148. package/lib/core/components/ellipsis.directive.d.ts +11 -0
  149. package/lib/core/components/select/select.component.d.ts +41 -20
  150. package/lib/core/components/select/select.module.d.ts +4 -5
  151. package/lib/core/components/translate-id/translate-id.pipe.d.ts +1 -3
  152. package/lib/core/core.module.d.ts +15 -14
  153. package/lib/core/i18n/en.translations.d.ts +4 -3
  154. package/lib/core/i18n/fr.translations.d.ts +5 -3
  155. package/lib/core/model/display-options.interface.d.ts +11 -0
  156. package/lib/core/model/manifest.interface.d.ts +1 -5
  157. package/lib/core/public-api.d.ts +1 -0
  158. package/lib/core/store/class/class.actions.d.ts +1 -12
  159. package/lib/core/store/class/class.effects.d.ts +0 -5
  160. package/lib/core/store/class/class.interface.d.ts +0 -6
  161. package/lib/core/store/class/class.reducer.d.ts +2 -3
  162. package/lib/core/store/class/class.selectors.d.ts +0 -1
  163. package/lib/core/store/class/class.service.d.ts +1 -5
  164. package/lib/core/store/config/config.selectors.d.ts +0 -1
  165. package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +2 -5
  166. package/lib/dashboard/filter/style/_o-pry-filter-group.scss +0 -11
  167. package/lib/dashboard/store/dashboard.effects.d.ts +0 -1
  168. package/lib/dashboard/store/dashboard.selectors.d.ts +0 -9
  169. package/package.json +1 -8
  170. package/presentation/components/title-presentation/title-presentation.component.d.ts +3 -5
  171. package/presentation/style/_o-pry-new-presentation.scss +0 -7
  172. package/presentation/style/_o-pry-presentation.scss +19 -101
  173. package/restitution/components/restitution-catalog/restitution-catalog.component.d.ts +1 -1
  174. package/restitution/i18n/en.translations.d.ts +2 -2
  175. package/restitution/i18n/fr.translations.d.ts +3 -3
  176. package/restitution/style/_o-restitution.scss +11 -14
  177. package/schematics/migration.json +6 -1
  178. package/schematics/ng-update/version-0-20/index.d.ts +2 -0
  179. package/schematics/ng-update/version-0-20/index.js +19 -0
  180. package/schematics/ng-update/version-0-20/index.js.map +1 -0
  181. package/search/i18n/en.translations.d.ts +1 -0
  182. package/search/i18n/fr.translations.d.ts +1 -0
  183. package/styles/base/_utils.scss +4 -0
  184. package/styles/components/_a-pry-select.scss +34 -10
  185. package/styles/components/_a-tooltip.scss +26 -19
  186. package/styles/components/_m-filter.scss +11 -20
  187. package/styles/components/_m-info-icon.scss +16 -0
  188. package/styles/components/_m-presentation-title.scss +14 -0
  189. package/styles/components/_o-about.scss +2 -24
  190. package/styles/components/_o-dashboard.scss +4 -0
  191. package/styles/components/_o-draggable-menu.scss +1 -1
  192. package/styles/components/_o-widget.scss +2 -2
  193. package/styles/main.scss +2 -1
  194. package/styles-theme/abstracts-theme/variables/_variables-typo.scss +9 -0
  195. package/styles-theme/components-theme/_a-pry-select.theme.scss +23 -96
  196. package/styles-theme/components-theme/_a-tooltip.theme.scss +2 -2
  197. package/styles-theme/components-theme/_o-pry-composed-condition.theme.scss +0 -12
  198. package/styles-theme/components-theme/_o-pry-dataset.theme.scss +0 -8
  199. package/styles-theme/components-theme/_o-pry-presentation.theme.scss +1 -1
  200. package/styles-theme/components-theme/_o-restitution.theme.scss +10 -0
  201. package/toolbox/components/toolbox.component.d.ts +1 -0
  202. package/tooltips/attribute/attribute-tooltip.component.d.ts +1 -0
  203. package/widgets/widget-chart/component/widget-chart.component.d.ts +0 -1
  204. package/widgets/widget-map/component/widget-map.component.d.ts +2 -0
  205. package/widgets/widget-map/i18n/en.translations.d.ts +1 -0
  206. package/widgets/widget-map/i18n/fr.translations.d.ts +1 -0
  207. package/widgets/widget-map/style/_o-layer-legend.scss +21 -0
  208. package/esm2022/supervision/components/supervision-business-data/supervision-business-data.component.mjs +0 -34
  209. package/esm2022/supervision/components/supervision-flow/supervision-flow.component.mjs +0 -33
  210. package/esm2022/supervision/components/supervision-infrastructures/supervision-infrastructures.component.mjs +0 -51
  211. package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.mjs +0 -27
  212. package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors.component.mjs +0 -100
  213. package/esm2022/supervision/components/supervision-layout/supervision-layout.component.mjs +0 -47
  214. package/esm2022/supervision/components/supervision-menu/supervision-menu.component.mjs +0 -32
  215. package/esm2022/supervision/components/supervision-title/supervision-title.component.mjs +0 -24
  216. package/esm2022/supervision/components/supervision.component.mjs +0 -19
  217. package/esm2022/supervision/i18n/en.translations.mjs +0 -58
  218. package/esm2022/supervision/i18n/fr.translations.mjs +0 -58
  219. package/esm2022/supervision/provoly-dashboard-supervision.mjs +0 -5
  220. package/esm2022/supervision/public-api.mjs +0 -2
  221. package/esm2022/supervision/store/supervision-api.model.mjs +0 -2
  222. package/esm2022/supervision/store/supervision.actions.mjs +0 -33
  223. package/esm2022/supervision/store/supervision.effects.mjs +0 -60
  224. package/esm2022/supervision/store/supervision.reducer.mjs +0 -111
  225. package/esm2022/supervision/store/supervision.selectors.mjs +0 -35
  226. package/esm2022/supervision/store/supervision.service.mjs +0 -54
  227. package/esm2022/supervision/supervision-routing.module.mjs +0 -96
  228. package/esm2022/supervision/supervision.module.mjs +0 -96
  229. package/fesm2022/provoly-dashboard-supervision.mjs +0 -861
  230. package/fesm2022/provoly-dashboard-supervision.mjs.map +0 -1
  231. package/supervision/components/supervision-business-data/supervision-business-data.component.d.ts +0 -14
  232. package/supervision/components/supervision-flow/supervision-flow.component.d.ts +0 -14
  233. package/supervision/components/supervision-infrastructures/supervision-infrastructures.component.d.ts +0 -18
  234. package/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.d.ts +0 -12
  235. package/supervision/components/supervision-integration-errors/supervision-integration-errors.component.d.ts +0 -29
  236. package/supervision/components/supervision-layout/supervision-layout.component.d.ts +0 -21
  237. package/supervision/components/supervision-menu/supervision-menu.component.d.ts +0 -13
  238. package/supervision/components/supervision-title/supervision-title.component.d.ts +0 -11
  239. package/supervision/components/supervision.component.d.ts +0 -9
  240. package/supervision/i18n/en.translations.d.ts +0 -57
  241. package/supervision/i18n/fr.translations.d.ts +0 -57
  242. package/supervision/index.d.ts +0 -5
  243. package/supervision/public-api.d.ts +0 -1
  244. package/supervision/store/supervision-api.model.d.ts +0 -36
  245. package/supervision/store/supervision.actions.d.ts +0 -121
  246. package/supervision/store/supervision.effects.d.ts +0 -51
  247. package/supervision/store/supervision.reducer.d.ts +0 -22
  248. package/supervision/store/supervision.selectors.d.ts +0 -18
  249. package/supervision/store/supervision.service.d.ts +0 -19
  250. package/supervision/supervision-routing.module.d.ts +0 -7
  251. package/supervision/supervision.module.d.ts +0 -25
@@ -216,11 +216,11 @@ class WidgetTableComponent extends DataWidgetComponent {
216
216
  ]).pipe(map(([options, resultSet, classes, fields, defs]) => {
217
217
  if (!options.columns || options.columns.length === 0) {
218
218
  const attributes = ItemUtils.getAttributesFromRs(resultSet, classes, fields, defs);
219
- const uniqueProps = [...new Set(attributes.map((attr) => attr.technicalName))];
219
+ const uniqueProps = [...new Set(attributes.map(({ name, technicalName }) => ({ name, technicalName })))];
220
220
  options.columns = uniqueProps.map((property) => ({
221
- property: property,
222
- label: property,
223
- attributeId: attributes.find((attr) => attr.technicalName === property)?.id
221
+ property: property.technicalName,
222
+ label: property.name,
223
+ attributeId: attributes.find((attr) => attr.technicalName === property.technicalName)?.id
224
224
  }));
225
225
  }
226
226
  return options;
@@ -389,11 +389,11 @@ class WidgetTableComponent extends DataWidgetComponent {
389
389
  this.actualPage$.next(number);
390
390
  }
391
391
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetTableComponent, deps: [{ token: i1$1.Store }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
392
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: WidgetTableComponent, selector: "pry-widget-table", usesInheritance: true, ngImport: i0, template: "<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n (click)=\"refresh()\"\n >\n <pry-settings\n (click)=\"refresh()\"\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n (triggerClick)=\"this.refresh()\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n <div\n *ngFor=\"let columnDef of optionsCopy?.columns ?? []; let i = index\"\n class=\"o-settings__popup__content__fields\"\n (click)=\"refresh()\"\n >\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.columns?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (click)=\"refresh()\"\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [itemsAsOption]=\"true\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n [class.ng-select-opened]=\"isOpen\"\n bindLabel=\"label\"\n bindValue=\"property\"\n id=\"table_property\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"a-table-wrapper\">\n <ng-container *ngIf=\"pagination$ | async as pagination\">\n <ng-container *ngIf=\"pagination?.items ?? [] as allObjects\">\n <div\n class=\"no-result\"\n *ngIf=\"pagination.noFillersItems === 0\"\n [style.height.%]=\"pagination.totalPages > 0 ? 80 : 100\"\n >\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n\n <ng-container *ngIf=\"pagination.noFillersItems > 0\">\n <ng-container *ngIf=\"(selectedIds$ | async) ?? [] as selectedIds\">\n <ng-container *ngIf=\"(columns$ | async) ?? [] as columns\">\n <table class=\"a-table\" [attr.aria-label]=\"'@pry.widget.table.description' | i18n\">\n <thead>\n <tr>\n <th *ngIf=\"allObjects?.length ?? 0 > 0\">\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th *ngFor=\"let column of columns; let i = index\" resizable (click)=\"setOrder(column)\">\n <span>{{ column.label }}</span>\n <ng-container *ngIf=\"quickOrder$ | async as quickOrder\">\n <ng-container *ngIf=\"quickOrder.attribute === column.attributeId\">\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let item of allObjects\"\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n [class.filler]=\"item.metadata!['__widget-table-filler']\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n <td *ngFor=\"let column of columns\" class=\"u-ellipsis\">\n <ng-container *ngIf=\"column.property === 'metadata'\">\n <pry-metadata [item]=\"item\"></pry-metadata>\n </ng-container>\n <ng-container *ngIf=\"column.property === 'oClass'\">\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n />\n </p>\n </ng-container>\n <ng-container *ngIf=\"!['metadata', 'oClass'].includes(column.property)\">\n <pry-expand-value [value]=\"item | getValue : column.property | async\"></pry-expand-value>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <div class=\"a-table-pagination\" *ngIf=\"pagination.totalPages > 0\">\n <div class=\"a-table-pagination__spacing\">\n <div>\n <button (click)=\"goToPage(0)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button (click)=\"goToPage(pagination.page - 1)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n <p>{{ pagination.page + 1 }} / {{ pagination.loadedPages }}</p>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.page + 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.loadedPages - 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n ({{\n '@pry.widget.table.remaining' | i18n : { remaining: pagination.totalPages - pagination.loadedPages }\n }})\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i4.MetadataComponent, selector: "pry-metadata", inputs: ["item"] }, { kind: "component", type: i4.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: ResizableComponent, selector: "th[resizable]" }, { kind: "directive", type: ResizableDirective, selector: "[resizable]", outputs: ["resizable"] }, { kind: "component", type: PryWidgetTableCssComponent, selector: "pry-widget-table-css" }, { kind: "component", type: ExpandValueComponent, selector: "pry-expand-value", inputs: ["value"] }, { kind: "directive", type: DetachRowDirective, selector: "[detachRow]", outputs: ["selectedValue"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i4.TranslateItemToSymbolPipe, name: "translateItemToSymbol" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: GetValuePipe, name: "getValue" }] }); }
392
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: WidgetTableComponent, selector: "pry-widget-table", usesInheritance: true, ngImport: i0, template: "<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n (click)=\"refresh()\"\n >\n <pry-settings\n (click)=\"refresh()\"\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n (triggerClick)=\"this.refresh()\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n <div\n *ngFor=\"let columnDef of optionsCopy?.columns ?? []; let i = index\"\n class=\"o-settings__popup__content__fields\"\n (click)=\"refresh()\"\n >\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.columns?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (click)=\"refresh()\"\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n bindLabel=\"label\"\n bindValue=\"property\"\n id=\"table_property\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"a-table-wrapper\">\n <ng-container *ngIf=\"pagination$ | async as pagination\">\n <ng-container *ngIf=\"pagination?.items ?? [] as allObjects\">\n <div\n class=\"no-result\"\n *ngIf=\"pagination.noFillersItems === 0\"\n [style.height.%]=\"pagination.totalPages > 0 ? 80 : 100\"\n >\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n\n <ng-container *ngIf=\"pagination.noFillersItems > 0\">\n <ng-container *ngIf=\"(selectedIds$ | async) ?? [] as selectedIds\">\n <ng-container *ngIf=\"(columns$ | async) ?? [] as columns\">\n <table class=\"a-table\" [attr.aria-label]=\"'@pry.widget.table.description' | i18n\">\n <thead>\n <tr>\n <th *ngIf=\"allObjects?.length ?? 0 > 0\">\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th *ngFor=\"let column of columns; let i = index\" resizable (click)=\"setOrder(column)\">\n <span>{{ column.label }}</span>\n <ng-container *ngIf=\"quickOrder$ | async as quickOrder\">\n <ng-container *ngIf=\"quickOrder.attribute === column.attributeId\">\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let item of allObjects\"\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n [class.filler]=\"item.metadata!['__widget-table-filler']\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n <td *ngFor=\"let column of columns\" class=\"u-ellipsis\">\n <ng-container *ngIf=\"column.property === 'metadata'\">\n <pry-metadata [item]=\"item\"></pry-metadata>\n </ng-container>\n <ng-container *ngIf=\"column.property === 'oClass'\">\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n />\n </p>\n </ng-container>\n <ng-container *ngIf=\"!['metadata', 'oClass'].includes(column.property)\">\n <pry-expand-value [value]=\"item | getValue : column.property | async\"></pry-expand-value>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <div class=\"a-table-pagination\" *ngIf=\"pagination.totalPages > 0\">\n <div class=\"a-table-pagination__spacing\">\n <div>\n <button (click)=\"goToPage(0)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button (click)=\"goToPage(pagination.page - 1)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n <p>{{ pagination.page + 1 }} / {{ pagination.loadedPages }}</p>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.page + 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.loadedPages - 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n ({{\n '@pry.widget.table.remaining' | i18n : { remaining: pagination.totalPages - pagination.loadedPages }\n }})\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i4.MetadataComponent, selector: "pry-metadata", inputs: ["item"] }, { kind: "component", type: i4.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: ResizableComponent, selector: "th[resizable]" }, { kind: "directive", type: ResizableDirective, selector: "[resizable]", outputs: ["resizable"] }, { kind: "component", type: PryWidgetTableCssComponent, selector: "pry-widget-table-css" }, { kind: "component", type: ExpandValueComponent, selector: "pry-expand-value", inputs: ["value"] }, { kind: "directive", type: DetachRowDirective, selector: "[detachRow]", outputs: ["selectedValue"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i4.TranslateItemToSymbolPipe, name: "translateItemToSymbol" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: GetValuePipe, name: "getValue" }] }); }
393
393
  }
394
394
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetTableComponent, decorators: [{
395
395
  type: Component,
396
- args: [{ selector: 'pry-widget-table', template: "<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n (click)=\"refresh()\"\n >\n <pry-settings\n (click)=\"refresh()\"\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n (triggerClick)=\"this.refresh()\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n <div\n *ngFor=\"let columnDef of optionsCopy?.columns ?? []; let i = index\"\n class=\"o-settings__popup__content__fields\"\n (click)=\"refresh()\"\n >\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.columns?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (click)=\"refresh()\"\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [itemsAsOption]=\"true\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n [class.ng-select-opened]=\"isOpen\"\n bindLabel=\"label\"\n bindValue=\"property\"\n id=\"table_property\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"a-table-wrapper\">\n <ng-container *ngIf=\"pagination$ | async as pagination\">\n <ng-container *ngIf=\"pagination?.items ?? [] as allObjects\">\n <div\n class=\"no-result\"\n *ngIf=\"pagination.noFillersItems === 0\"\n [style.height.%]=\"pagination.totalPages > 0 ? 80 : 100\"\n >\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n\n <ng-container *ngIf=\"pagination.noFillersItems > 0\">\n <ng-container *ngIf=\"(selectedIds$ | async) ?? [] as selectedIds\">\n <ng-container *ngIf=\"(columns$ | async) ?? [] as columns\">\n <table class=\"a-table\" [attr.aria-label]=\"'@pry.widget.table.description' | i18n\">\n <thead>\n <tr>\n <th *ngIf=\"allObjects?.length ?? 0 > 0\">\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th *ngFor=\"let column of columns; let i = index\" resizable (click)=\"setOrder(column)\">\n <span>{{ column.label }}</span>\n <ng-container *ngIf=\"quickOrder$ | async as quickOrder\">\n <ng-container *ngIf=\"quickOrder.attribute === column.attributeId\">\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let item of allObjects\"\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n [class.filler]=\"item.metadata!['__widget-table-filler']\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n <td *ngFor=\"let column of columns\" class=\"u-ellipsis\">\n <ng-container *ngIf=\"column.property === 'metadata'\">\n <pry-metadata [item]=\"item\"></pry-metadata>\n </ng-container>\n <ng-container *ngIf=\"column.property === 'oClass'\">\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n />\n </p>\n </ng-container>\n <ng-container *ngIf=\"!['metadata', 'oClass'].includes(column.property)\">\n <pry-expand-value [value]=\"item | getValue : column.property | async\"></pry-expand-value>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <div class=\"a-table-pagination\" *ngIf=\"pagination.totalPages > 0\">\n <div class=\"a-table-pagination__spacing\">\n <div>\n <button (click)=\"goToPage(0)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button (click)=\"goToPage(pagination.page - 1)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n <p>{{ pagination.page + 1 }} / {{ pagination.loadedPages }}</p>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.page + 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.loadedPages - 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n ({{\n '@pry.widget.table.remaining' | i18n : { remaining: pagination.totalPages - pagination.loadedPages }\n }})\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</div>\n" }]
396
+ args: [{ selector: 'pry-widget-table', template: "<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n (click)=\"refresh()\"\n >\n <pry-settings\n (click)=\"refresh()\"\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n (triggerClick)=\"this.refresh()\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n <div\n *ngFor=\"let columnDef of optionsCopy?.columns ?? []; let i = index\"\n class=\"o-settings__popup__content__fields\"\n (click)=\"refresh()\"\n >\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.columns?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (click)=\"refresh()\"\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n bindLabel=\"label\"\n bindValue=\"property\"\n id=\"table_property\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"a-table-wrapper\">\n <ng-container *ngIf=\"pagination$ | async as pagination\">\n <ng-container *ngIf=\"pagination?.items ?? [] as allObjects\">\n <div\n class=\"no-result\"\n *ngIf=\"pagination.noFillersItems === 0\"\n [style.height.%]=\"pagination.totalPages > 0 ? 80 : 100\"\n >\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n\n <ng-container *ngIf=\"pagination.noFillersItems > 0\">\n <ng-container *ngIf=\"(selectedIds$ | async) ?? [] as selectedIds\">\n <ng-container *ngIf=\"(columns$ | async) ?? [] as columns\">\n <table class=\"a-table\" [attr.aria-label]=\"'@pry.widget.table.description' | i18n\">\n <thead>\n <tr>\n <th *ngIf=\"allObjects?.length ?? 0 > 0\">\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th *ngFor=\"let column of columns; let i = index\" resizable (click)=\"setOrder(column)\">\n <span>{{ column.label }}</span>\n <ng-container *ngIf=\"quickOrder$ | async as quickOrder\">\n <ng-container *ngIf=\"quickOrder.attribute === column.attributeId\">\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let item of allObjects\"\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n [class.filler]=\"item.metadata!['__widget-table-filler']\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n <td *ngFor=\"let column of columns\" class=\"u-ellipsis\">\n <ng-container *ngIf=\"column.property === 'metadata'\">\n <pry-metadata [item]=\"item\"></pry-metadata>\n </ng-container>\n <ng-container *ngIf=\"column.property === 'oClass'\">\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n />\n </p>\n </ng-container>\n <ng-container *ngIf=\"!['metadata', 'oClass'].includes(column.property)\">\n <pry-expand-value [value]=\"item | getValue : column.property | async\"></pry-expand-value>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <div class=\"a-table-pagination\" *ngIf=\"pagination.totalPages > 0\">\n <div class=\"a-table-pagination__spacing\">\n <div>\n <button (click)=\"goToPage(0)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button (click)=\"goToPage(pagination.page - 1)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n <p>{{ pagination.page + 1 }} / {{ pagination.loadedPages }}</p>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.page + 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.loadedPages - 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n ({{\n '@pry.widget.table.remaining' | i18n : { remaining: pagination.totalPages - pagination.loadedPages }\n }})\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</div>\n" }]
397
397
  }], ctorParameters: function () { return [{ type: i1$1.Store }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; } });
398
398
 
399
399
  const enTranslations = {
@@ -1 +1 @@
1
- {"version":3,"file":"provoly-dashboard-widgets-widget-table.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-table/resizable/resizable.directive.ts","../../../../projects/provoly/dashboard/widgets/widget-table/resizable/resizable.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/resizable/resizable.component.html","../../../../projects/provoly/dashboard/widgets/widget-table/style/css.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/format-number.pipe.ts","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/expand-value.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/expand-value.component.html","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/detach-row.directive.ts","../../../../projects/provoly/dashboard/widgets/widget-table/get-value/get-value.pipe.ts","../../../../projects/provoly/dashboard/widgets/widget-table/component/widget-table.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/component/widget-table.component.html","../../../../projects/provoly/dashboard/widgets/widget-table/i18n/en.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-table/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-table/widget-table.module.ts","../../../../projects/provoly/dashboard/widgets/widget-table/provoly-dashboard-widgets-widget-table.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { Directive, ElementRef, Inject, Output } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { distinctUntilChanged, map, switchMap, takeUntil, tap } from 'rxjs/operators';\n\n@Directive({\n selector: '[resizable]'\n})\nexport class ResizableDirective {\n @Output()\n readonly resizable = fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mousedown').pipe(\n tap((e) => e.preventDefault()),\n switchMap(() => {\n const domRect = this.elementRef.nativeElement.closest('th')?.getBoundingClientRect();\n const width = domRect?.width ?? 0;\n const right = domRect?.right ?? 0;\n\n return fromEvent<MouseEvent>(this.documentRef, 'mousemove').pipe(\n map(({ clientX }) => width + clientX - right),\n distinctUntilChanged(),\n takeUntil(fromEvent(this.documentRef, 'mouseup'))\n );\n })\n );\n\n constructor(\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(ElementRef)\n private readonly elementRef: ElementRef<HTMLElement>\n ) {}\n}\n","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'th[resizable]',\n templateUrl: './resizable.component.html'\n})\nexport class ResizableComponent {\n @HostBinding('style.width.px')\n width: number | null = null;\n\n onResize(width: number) {\n this.width = width;\n }\n}\n","<div class=\"wrapper\">\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n <div class=\"bar\" (resizable)=\"onResize($event)\"></div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-table-css',\n template: '',\n styleUrls: ['./_o-widget-table.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryWidgetTableCssComponent {}\n","import { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { PryI18nService, ValueType } from '@provoly/dashboard';\n\n@Pipe({ name: 'formatNumber' })\nexport class FormatNumberPipe implements PipeTransform {\n constructor(\n private decimalPipe: DecimalPipe,\n private i18nService: PryI18nService\n ) {}\n\n transform(toDisplay?: ValueType | ValueType[] | null, ...args: any[]): any {\n const result = { isNumber: false, text: `${!toDisplay ? '' : toDisplay}` };\n if (typeof toDisplay === 'number') {\n result.isNumber = true;\n result.text =\n this.decimalPipe\n .transform(toDisplay, '1.0-0')\n ?.replace(/,/g, this.i18nService.instant('@pry.format.thousands'))\n ?.replace(/\\./g, this.i18nService.instant('@pry.format.decimal')) || `${toDisplay}`;\n }\n return result;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { MultiMultipointValue, MultipointValue, PointValue, ValueType } from '@provoly/dashboard';\n\n@Component({\n selector: 'pry-expand-value',\n templateUrl: './expand-value.component.html'\n})\nexport class ExpandValueComponent {\n isArray: boolean = false;\n firstValue?: string | number | PointValue | MultipointValue | MultiMultipointValue | ValueType[] | null | undefined;\n rest: (string | number | PointValue | MultipointValue | MultiMultipointValue | ValueType[] | null | undefined)[] = [];\n\n @Input() set value(toDisplay: ValueType | ValueType[] | null) {\n if (Array.isArray(toDisplay) && toDisplay.length > 1) {\n this.isArray = true;\n const [firstValue, ...rest] = toDisplay;\n this.firstValue = firstValue;\n this.rest = rest;\n } else {\n this.isArray = false;\n this.firstValue = toDisplay;\n this.rest = [];\n }\n }\n}\n","<div class=\"a-expandable-value\" [class.-right]=\"(firstValue | formatNumber).isNumber\">\n <span class=\"a-expandable-value__initial\">{{ (firstValue | formatNumber).text }}{{ isArray ? ' (*)' : '' }}</span>\n <div class=\"a-expandable-value__expanded\" *ngIf=\"isArray\">\n <div *ngFor=\"let value of rest\">\n {{ (value | formatNumber).text }}\n </div>\n </div>\n</div>\n","import {\n AfterViewChecked,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Output\n} from '@angular/core';\n\n@Directive({\n selector: '[detachRow]'\n})\nexport class DetachRowDirective implements AfterViewChecked {\n @HostListener('click', ['$event']) clickEvt($event: MouseEvent): any {\n this.cdr.reattach();\n this.selectedValue.emit($event);\n }\n\n @Output() selectedValue: EventEmitter<MouseEvent> = new EventEmitter();\n\n constructor(\n private el: ElementRef,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngAfterViewChecked() {\n this.cdr.detach();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ClassSelectors, FieldSelectors, FieldType, Item, ItemUtils } from '@provoly/dashboard';\nimport { combineLatestWith } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Pipe({ name: 'getValue' })\nexport class GetValuePipe implements PipeTransform {\n constructor(private store: Store<any>) {}\n\n transform(value: Item, ...args: any[]): any {\n return this.store.select(ClassSelectors.classes).pipe(\n combineLatestWith(this.store.select(FieldSelectors.fields)),\n filter(([classes, fields]) => !!classes && classes.length > 0),\n map(([classes, fields]) => {\n const oClass = classes.find((cl) => cl.id === value.oClass);\n const attribute = oClass?.attributes.find((attr) => attr.technicalName === args[0]);\n if (!!attribute) {\n const field = fields.find((f) => f.id === attribute.field);\n if (\n field &&\n [\n FieldType.POINT,\n FieldType.MULTIPOINT,\n FieldType.LINE,\n FieldType.MULTILINE,\n FieldType.MULTILINE,\n FieldType.POLYGON,\n FieldType.MULTIPOLYGON\n ].includes(field.type)\n ) {\n // @ts-ignore\n const coordinates = JSON.stringify(ItemUtils.getAttributeCalculatedValue(value, attribute)?.coordinates);\n return coordinates && coordinates.length > 40 ? `${coordinates.substring(0, 40)}...` : coordinates;\n }\n return ItemUtils.getAttributeCalculatedValue(value, attribute);\n }\n return ItemUtils.getAttributeCalculatedValue(value, args[0]);\n })\n );\n }\n}\n","import { ChangeDetectorRef, Component, ElementRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n baseItemProperties,\n Class,\n ClassActions,\n ClassSelectors,\n ColumnDefinition,\n ConfigSelectors,\n ContextMenuActions,\n ContextMenuSelectors,\n DashboardActions,\n DashboardSelectors,\n DataWidgetComponent,\n Field,\n FieldSelectors,\n FieldType,\n Item,\n ItemUtils,\n OrderValue,\n ResultOrder,\n TableWidgetOptions,\n WIDGET_HEADER_HEIGHT\n} from '@provoly/dashboard';\nimport equal from 'fast-deep-equal/es6';\nimport { auditTime, BehaviorSubject, combineLatest, Observable, take } from 'rxjs';\nimport { delay, filter, map, tap, withLatestFrom } from 'rxjs/operators';\n\nexport interface Pagination {\n totalPages: number;\n page: number;\n rows: number;\n items: Item[];\n loaded: number;\n loadedPages: number;\n noFillersItems: number;\n}\n\n@Component({\n selector: 'pry-widget-table',\n templateUrl: './widget-table.component.html'\n})\nexport class WidgetTableComponent extends DataWidgetComponent {\n options$: Observable<TableWidgetOptions>;\n columns$: Observable<ColumnDefinition[]>;\n optionsCopy?: TableWidgetOptions;\n fields$: Observable<Field[]>;\n selectedIds$: Observable<string[]>;\n Array = Array;\n currentClasses: string[] = [];\n selectedIds: string[] = [];\n WIDGET_HEADER_HEIGHT = WIDGET_HEADER_HEIGHT;\n private classes$: Observable<Class[]>;\n properties$: Observable<{ label: string; property: string }[]>;\n allSelected$: Observable<boolean>;\n areAllSelected: boolean = false;\n allIds: string[] = [];\n contextMenuClickedId: string = '';\n isContextMenuOpened$: Observable<boolean>;\n quickOrder$: Observable<ResultOrder | undefined>;\n private _refresh$ = new BehaviorSubject<void>(undefined);\n actualPage$ = new BehaviorSubject<number>(0);\n pagination$: Observable<Pagination>;\n isOpen = false;\n\n constructor(store: Store<any>, el: ElementRef, private cdr: ChangeDetectorRef) {\n super(store, el);\n\n this.classes$ = this.store.select(ClassSelectors.classes);\n\n this.fields$ = combineLatest([this.resultSet$, this.classes$, this.store.select(FieldSelectors.fields)]).pipe(\n map(\n ([resultSet, classes, fields]) =>\n [\n ...ItemUtils.getFieldsForClasses(Object.keys(resultSet.items), classes, fields),\n ...baseItemProperties.map((p) => ({ name: p, id: p } as Field))\n ] as Field[]\n ),\n map((fields) => fields.filter((field) => field.type !== FieldType.RAW))\n );\n\n this.options$ = combineLatest([\n this.manifest$.pipe(map((manifest) => manifest.options as TableWidgetOptions)),\n this.resultSet$,\n this.classes$,\n this.fields$,\n this.store.select(ConfigSelectors.tableDefaultAttributesDefinitions)\n ]).pipe(\n map(([options, resultSet, classes, fields, defs]) => {\n if (!options.columns || options.columns.length === 0) {\n const attributes = ItemUtils.getAttributesFromRs(resultSet, classes, fields, defs);\n const uniqueProps = [...new Set(attributes.map((attr) => attr.technicalName))];\n\n options.columns = uniqueProps.map((property) => ({\n property: property,\n label: property,\n attributeId: attributes.find((attr) => attr.technicalName === property)?.id\n })) as ColumnDefinition[];\n }\n return options;\n })\n );\n\n this.subscriptions.add(\n this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n this.optionsCopy = { ...(JSON.parse(JSON.stringify(options)) as TableWidgetOptions) };\n this.refresh();\n })\n );\n\n this.subscriptions.add(this.allItems$.subscribe((allObjects) => (this.allIds = allObjects.map((obj) => obj.id))));\n\n const HEADER_SIZE = 30;\n const PAGINATION_SIZE = 35;\n const LINE_SIZE = 30;\n\n this.pagination$ = combineLatest([\n this.allItems$,\n this.actualPage$,\n this.widgetSize$,\n this.resultSet$,\n this.displayHeader$\n ]).pipe(\n map(([items, actualPage, size, rs, headerPresent]) => {\n const rows = Math.max(\n 1,\n Math.floor(\n (size.height - HEADER_SIZE - PAGINATION_SIZE - (headerPresent ? WIDGET_HEADER_HEIGHT : 0)) / LINE_SIZE\n )\n );\n const total = Object.values(rs.count ?? {}).reduce((p, c) => c.count + p, 0);\n const loadedPages = Math.ceil(items.length / rows);\n const page = actualPage <= loadedPages ? actualPage : Math.max(0, loadedPages - 1);\n const filtered = items.filter((_, idx) => idx >= rows * page && idx < rows * (page + 1));\n const filteredWithFillers =\n filtered.length === rows\n ? filtered\n : filtered.concat(\n new Array(rows - filtered.length).fill({\n metadata: { '__widget-table-filler': true }\n } as unknown as Item)\n );\n return {\n rows,\n page,\n items: filteredWithFillers,\n noFillersItems: filtered.length,\n total,\n totalPages: Math.ceil(total / rows),\n loaded: items.length,\n loadedPages\n };\n })\n );\n\n this.subscriptions.add(this.pagination$.pipe(auditTime(200)).subscribe(() => this.refresh()));\n\n this.columns$ = this.options$.pipe(\n map((options) => options?.columns ?? []),\n tap(() => setTimeout(() => this.refresh(), 500))\n );\n\n this.isContextMenuOpened$ = this.store.select(ContextMenuSelectors.opened);\n\n this.subscriptions.add(\n this.resultSet$\n .pipe(\n filter((rs) => !!rs),\n map((rs) => Object.keys(rs.items))\n )\n .subscribe((classes) => {\n if (this.currentClasses.length > 0 && !equal(this.currentClasses, classes)) {\n if (!this.optionsCopy) {\n this.optionsCopy = {};\n }\n delete this.optionsCopy.columns;\n this.emitManifest();\n }\n this.currentClasses = classes;\n })\n );\n\n this.selectedIds$ = this.store.select(DashboardSelectors.selectedItemIds);\n\n this.subscriptions.add(this.selectedIds$.subscribe((selectedIds) => this.selectedIds === selectedIds));\n\n this.store.dispatch(ClassActions.load());\n\n this.properties$ = combineLatest([this.resultSet$, this.classes$, this.fields$]).pipe(\n map(([rs, classes, fields]) => [\n ...Object.keys(rs.items)\n .map((classId) => (classes.find((cl) => cl.id === classId) ?? { attributes: [] }).attributes)\n .flat()\n .map((attr) => attr.technicalName)\n ]),\n map((props) => {\n const sortedProps = [...props];\n sortedProps.sort((pA, pB) => pA.toLocaleLowerCase().localeCompare(pB.toLocaleLowerCase()));\n return sortedProps;\n }),\n map((props) => props.map((prop) => ({ label: prop, property: prop }))),\n tap(() => setTimeout(() => this.refresh(), 500))\n );\n\n this.allSelected$ = combineLatest([this.selectedIds$, this.allItems$]).pipe(\n map(([selectedIds, allObjects]) => {\n const allIds = allObjects.map((object) => object.id);\n return !allIds.find((id) => !selectedIds.includes(id));\n }),\n tap((allSelected) => (this.areAllSelected = allSelected))\n );\n\n this.quickOrder$ = combineLatest([this.store.select(DashboardSelectors.quickOrder), this.datasourceIds$]).pipe(\n map(([order, nqs]) => (nqs.length === 1 ? order[nqs[0]] : undefined))\n );\n\n this.subscriptions.add(this._refresh$.pipe(delay(100)).subscribe(() => this.cdr.detectChanges()));\n }\n\n refresh() {\n this._refresh$.next();\n this.isOpen = !this.isOpen;\n }\n\n emitManifest() {\n this.manifestModified.emit({\n widgetIndex: this.widgetIndex,\n manifest: { ...this.manifest, options: this.optionsCopy }\n });\n }\n\n addColumn() {\n if (!this.optionsCopy?.columns) {\n this.optionsCopy = { columns: [] };\n }\n this.optionsCopy.columns?.push({ label: '', property: '' });\n this.refresh();\n }\n\n changePropertyName($event: any, columnDef: ColumnDefinition) {\n columnDef.property = $event;\n this.refresh();\n }\n\n changeLabel($event: Event, columnDef: ColumnDefinition) {\n // @ts-ignore\n const newLabel = $event.currentTarget.value;\n if (columnDef.label !== newLabel) {\n columnDef.label = newLabel;\n this.refresh();\n }\n }\n\n deleteColumn(i: number) {\n this.optionsCopy?.columns?.splice(i, 1);\n this.refresh();\n }\n\n selection($event: MouseEvent, item: Item) {\n this.store.dispatch(DashboardActions.select({ id: item.id, cumulative: !$event.shiftKey }));\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n contextMenu($event: MouseEvent, item: Item) {\n if (this.manifest.contextMenu !== false) {\n $event.stopPropagation();\n $event.preventDefault();\n this.store.dispatch(\n ContextMenuActions.open({\n itemId: item.id,\n clientX: $event.clientX,\n clientY: $event.clientY,\n resultSet: Array.isArray(this.manifest.datasource) ? this.manifest.datasource[0] : this.manifest.datasource,\n from: 'table',\n allowObjectCreation: false\n })\n );\n this.contextMenuClickedId = item.id;\n }\n }\n\n invertLayers(idx: number, idxWith: number) {\n if (!!this.optionsCopy && !!this.optionsCopy.columns) {\n const tmp = this.optionsCopy.columns[idxWith];\n this.optionsCopy.columns[idxWith] = this.optionsCopy.columns[idx];\n this.optionsCopy.columns[idx] = tmp;\n this.refresh();\n }\n }\n\n selectAll($event: any) {\n if ($event) {\n this.store.dispatch(DashboardActions.selectMany({ ids: this.allIds }));\n } else {\n this.store.dispatch(DashboardActions.selectMany({ ids: [] }));\n }\n }\n\n setOrder(column: ColumnDefinition) {\n this.datasourceIds$\n .pipe(\n take(1),\n filter((nqs) => nqs.length === 1),\n withLatestFrom(this.quickOrder$)\n )\n .subscribe(([nqs, actualOrder]) => {\n this.store.dispatch(\n DashboardActions.quickOrder({\n datasourceId: nqs[0],\n attribute: column.attributeId ?? '',\n asc: this.nextOrder(column, actualOrder)\n })\n );\n });\n }\n\n private nextOrder(column: ColumnDefinition, actualOrder: ResultOrder | undefined): OrderValue {\n if (!actualOrder || actualOrder.attribute !== column.attributeId) {\n return 'asc';\n }\n return actualOrder.asc === 'asc' ? 'desc' : actualOrder.asc === 'desc' ? undefined : 'asc';\n }\n\n trackObjects(index: number, item: Item) {\n return item.id;\n }\n\n goToPage(number: number) {\n this.actualPage$.next(number);\n }\n}\n","<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n (click)=\"refresh()\"\n >\n <pry-settings\n (click)=\"refresh()\"\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n (triggerClick)=\"this.refresh()\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n <div\n *ngFor=\"let columnDef of optionsCopy?.columns ?? []; let i = index\"\n class=\"o-settings__popup__content__fields\"\n (click)=\"refresh()\"\n >\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.columns?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (click)=\"refresh()\"\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [itemsAsOption]=\"true\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n [class.ng-select-opened]=\"isOpen\"\n bindLabel=\"label\"\n bindValue=\"property\"\n id=\"table_property\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"a-table-wrapper\">\n <ng-container *ngIf=\"pagination$ | async as pagination\">\n <ng-container *ngIf=\"pagination?.items ?? [] as allObjects\">\n <div\n class=\"no-result\"\n *ngIf=\"pagination.noFillersItems === 0\"\n [style.height.%]=\"pagination.totalPages > 0 ? 80 : 100\"\n >\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n\n <ng-container *ngIf=\"pagination.noFillersItems > 0\">\n <ng-container *ngIf=\"(selectedIds$ | async) ?? [] as selectedIds\">\n <ng-container *ngIf=\"(columns$ | async) ?? [] as columns\">\n <table class=\"a-table\" [attr.aria-label]=\"'@pry.widget.table.description' | i18n\">\n <thead>\n <tr>\n <th *ngIf=\"allObjects?.length ?? 0 > 0\">\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th *ngFor=\"let column of columns; let i = index\" resizable (click)=\"setOrder(column)\">\n <span>{{ column.label }}</span>\n <ng-container *ngIf=\"quickOrder$ | async as quickOrder\">\n <ng-container *ngIf=\"quickOrder.attribute === column.attributeId\">\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let item of allObjects\"\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n [class.filler]=\"item.metadata!['__widget-table-filler']\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n <td *ngFor=\"let column of columns\" class=\"u-ellipsis\">\n <ng-container *ngIf=\"column.property === 'metadata'\">\n <pry-metadata [item]=\"item\"></pry-metadata>\n </ng-container>\n <ng-container *ngIf=\"column.property === 'oClass'\">\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n />\n </p>\n </ng-container>\n <ng-container *ngIf=\"!['metadata', 'oClass'].includes(column.property)\">\n <pry-expand-value [value]=\"item | getValue : column.property | async\"></pry-expand-value>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <div class=\"a-table-pagination\" *ngIf=\"pagination.totalPages > 0\">\n <div class=\"a-table-pagination__spacing\">\n <div>\n <button (click)=\"goToPage(0)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button (click)=\"goToPage(pagination.page - 1)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n <p>{{ pagination.page + 1 }} / {{ pagination.loadedPages }}</p>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.page + 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.loadedPages - 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n ({{\n '@pry.widget.table.remaining' | i18n : { remaining: pagination.totalPages - pagination.loadedPages }\n }})\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</div>\n","export const enTranslations = {\n '@pry': {\n widget: {\n table: {\n addColumn: 'Add column',\n deleteColumn: 'Delete',\n property: 'Property to display',\n label: 'Column label',\n empty: 'No data to display',\n description: 'Dataset elements',\n remaining: '{{remaining}} pages to load'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n widget: {\n table: {\n addColumn: 'Ajouter une colonne',\n deleteColumn: 'Supprimer',\n property: 'Propriété à afficher',\n label: 'Libellé de la colonne',\n empty: 'Aucune donnée à afficher',\n description: 'Eléments du jeu de données',\n remaining: '{{remaining}} pages restant à charger'\n }\n }\n }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BaseWidgetComponent,\n BaseWidgetModule,\n PryCoreModule,\n PryDashboardModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { WidgetTableComponent } from './component/widget-table.component';\nimport { DetachRowDirective } from './expand-value/detach-row.directive';\nimport { ExpandValueComponent } from './expand-value/expand-value.component';\nimport { FormatNumberPipe } from './expand-value/format-number.pipe';\nimport { GetValuePipe } from './get-value/get-value.pipe';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { ResizableComponent } from './resizable/resizable.component';\nimport { ResizableDirective } from './resizable/resizable.directive';\nimport { PryWidgetTableCssComponent } from './style/css.component';\n\n@NgModule({\n declarations: [\n WidgetTableComponent,\n GetValuePipe,\n ResizableComponent,\n ResizableDirective,\n PryWidgetTableCssComponent,\n ExpandValueComponent,\n FormatNumberPipe,\n DetachRowDirective\n ],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n PryCoreModule,\n PryDashboardModule,\n PrySelectModule,\n PryIconModule,\n PryCheckboxModule,\n PryToggleModule,\n PryI18nModule\n ],\n exports: [WidgetTableComponent]\n})\nexport class WidgetTableModule extends BaseWidgetModule {\n constructor(private pryTranslateService: PryI18nService) {\n super();\n this.pryTranslateService.addLangObject('fr', 'widget-table', frTranslations);\n this.pryTranslateService.addLangObject('en', 'widget-table', enTranslations);\n }\n\n override getComponent() {\n return WidgetTableComponent as Type<BaseWidgetComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ResizableDirective","i2","i2.FormatNumberPipe","i1","i6.ResizableComponent","i7.ResizableDirective","i8.PryWidgetTableCssComponent","i9.ExpandValueComponent","i10.DetachRowDirective","i11.GetValuePipe"],"mappings":"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"}
1
+ {"version":3,"file":"provoly-dashboard-widgets-widget-table.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-table/resizable/resizable.directive.ts","../../../../projects/provoly/dashboard/widgets/widget-table/resizable/resizable.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/resizable/resizable.component.html","../../../../projects/provoly/dashboard/widgets/widget-table/style/css.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/format-number.pipe.ts","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/expand-value.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/expand-value.component.html","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/detach-row.directive.ts","../../../../projects/provoly/dashboard/widgets/widget-table/get-value/get-value.pipe.ts","../../../../projects/provoly/dashboard/widgets/widget-table/component/widget-table.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/component/widget-table.component.html","../../../../projects/provoly/dashboard/widgets/widget-table/i18n/en.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-table/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-table/widget-table.module.ts","../../../../projects/provoly/dashboard/widgets/widget-table/provoly-dashboard-widgets-widget-table.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { Directive, ElementRef, Inject, Output } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { distinctUntilChanged, map, switchMap, takeUntil, tap } from 'rxjs/operators';\n\n@Directive({\n selector: '[resizable]'\n})\nexport class ResizableDirective {\n @Output()\n readonly resizable = fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mousedown').pipe(\n tap((e) => e.preventDefault()),\n switchMap(() => {\n const domRect = this.elementRef.nativeElement.closest('th')?.getBoundingClientRect();\n const width = domRect?.width ?? 0;\n const right = domRect?.right ?? 0;\n\n return fromEvent<MouseEvent>(this.documentRef, 'mousemove').pipe(\n map(({ clientX }) => width + clientX - right),\n distinctUntilChanged(),\n takeUntil(fromEvent(this.documentRef, 'mouseup'))\n );\n })\n );\n\n constructor(\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(ElementRef)\n private readonly elementRef: ElementRef<HTMLElement>\n ) {}\n}\n","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'th[resizable]',\n templateUrl: './resizable.component.html'\n})\nexport class ResizableComponent {\n @HostBinding('style.width.px')\n width: number | null = null;\n\n onResize(width: number) {\n this.width = width;\n }\n}\n","<div class=\"wrapper\">\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n <div class=\"bar\" (resizable)=\"onResize($event)\"></div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-table-css',\n template: '',\n styleUrls: ['./_o-widget-table.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryWidgetTableCssComponent {}\n","import { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { PryI18nService, ValueType } from '@provoly/dashboard';\n\n@Pipe({ name: 'formatNumber' })\nexport class FormatNumberPipe implements PipeTransform {\n constructor(\n private decimalPipe: DecimalPipe,\n private i18nService: PryI18nService\n ) {}\n\n transform(toDisplay?: ValueType | ValueType[] | null, ...args: any[]): any {\n const result = { isNumber: false, text: `${!toDisplay ? '' : toDisplay}` };\n if (typeof toDisplay === 'number') {\n result.isNumber = true;\n result.text =\n this.decimalPipe\n .transform(toDisplay, '1.0-0')\n ?.replace(/,/g, this.i18nService.instant('@pry.format.thousands'))\n ?.replace(/\\./g, this.i18nService.instant('@pry.format.decimal')) || `${toDisplay}`;\n }\n return result;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { MultiMultipointValue, MultipointValue, PointValue, ValueType } from '@provoly/dashboard';\n\n@Component({\n selector: 'pry-expand-value',\n templateUrl: './expand-value.component.html'\n})\nexport class ExpandValueComponent {\n isArray: boolean = false;\n firstValue?: string | number | PointValue | MultipointValue | MultiMultipointValue | ValueType[] | null | undefined;\n rest: (string | number | PointValue | MultipointValue | MultiMultipointValue | ValueType[] | null | undefined)[] = [];\n\n @Input() set value(toDisplay: ValueType | ValueType[] | null) {\n if (Array.isArray(toDisplay) && toDisplay.length > 1) {\n this.isArray = true;\n const [firstValue, ...rest] = toDisplay;\n this.firstValue = firstValue;\n this.rest = rest;\n } else {\n this.isArray = false;\n this.firstValue = toDisplay;\n this.rest = [];\n }\n }\n}\n","<div class=\"a-expandable-value\" [class.-right]=\"(firstValue | formatNumber).isNumber\">\n <span class=\"a-expandable-value__initial\">{{ (firstValue | formatNumber).text }}{{ isArray ? ' (*)' : '' }}</span>\n <div class=\"a-expandable-value__expanded\" *ngIf=\"isArray\">\n <div *ngFor=\"let value of rest\">\n {{ (value | formatNumber).text }}\n </div>\n </div>\n</div>\n","import {\n AfterViewChecked,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Output\n} from '@angular/core';\n\n@Directive({\n selector: '[detachRow]'\n})\nexport class DetachRowDirective implements AfterViewChecked {\n @HostListener('click', ['$event']) clickEvt($event: MouseEvent): any {\n this.cdr.reattach();\n this.selectedValue.emit($event);\n }\n\n @Output() selectedValue: EventEmitter<MouseEvent> = new EventEmitter();\n\n constructor(\n private el: ElementRef,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngAfterViewChecked() {\n this.cdr.detach();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ClassSelectors, FieldSelectors, FieldType, Item, ItemUtils } from '@provoly/dashboard';\nimport { combineLatestWith } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Pipe({ name: 'getValue' })\nexport class GetValuePipe implements PipeTransform {\n constructor(private store: Store<any>) {}\n\n transform(value: Item, ...args: any[]): any {\n return this.store.select(ClassSelectors.classes).pipe(\n combineLatestWith(this.store.select(FieldSelectors.fields)),\n filter(([classes, fields]) => !!classes && classes.length > 0),\n map(([classes, fields]) => {\n const oClass = classes.find((cl) => cl.id === value.oClass);\n const attribute = oClass?.attributes.find((attr) => attr.technicalName === args[0]);\n if (!!attribute) {\n const field = fields.find((f) => f.id === attribute.field);\n if (\n field &&\n [\n FieldType.POINT,\n FieldType.MULTIPOINT,\n FieldType.LINE,\n FieldType.MULTILINE,\n FieldType.MULTILINE,\n FieldType.POLYGON,\n FieldType.MULTIPOLYGON\n ].includes(field.type)\n ) {\n // @ts-ignore\n const coordinates = JSON.stringify(ItemUtils.getAttributeCalculatedValue(value, attribute)?.coordinates);\n return coordinates && coordinates.length > 40 ? `${coordinates.substring(0, 40)}...` : coordinates;\n }\n return ItemUtils.getAttributeCalculatedValue(value, attribute);\n }\n return ItemUtils.getAttributeCalculatedValue(value, args[0]);\n })\n );\n }\n}\n","import { ChangeDetectorRef, Component, ElementRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n baseItemProperties,\n Class,\n ClassActions,\n ClassSelectors,\n ColumnDefinition,\n ConfigSelectors,\n ContextMenuActions,\n ContextMenuSelectors,\n DashboardActions,\n DashboardSelectors,\n DataWidgetComponent,\n Field,\n FieldSelectors,\n FieldType,\n Item,\n ItemUtils,\n OrderValue,\n ResultOrder,\n TableWidgetOptions,\n WIDGET_HEADER_HEIGHT\n} from '@provoly/dashboard';\nimport equal from 'fast-deep-equal/es6';\nimport { auditTime, BehaviorSubject, combineLatest, Observable, take } from 'rxjs';\nimport { delay, filter, map, tap, withLatestFrom } from 'rxjs/operators';\n\nexport interface Pagination {\n totalPages: number;\n page: number;\n rows: number;\n items: Item[];\n loaded: number;\n loadedPages: number;\n noFillersItems: number;\n}\n\n@Component({\n selector: 'pry-widget-table',\n templateUrl: './widget-table.component.html'\n})\nexport class WidgetTableComponent extends DataWidgetComponent {\n options$: Observable<TableWidgetOptions>;\n columns$: Observable<ColumnDefinition[]>;\n optionsCopy?: TableWidgetOptions;\n fields$: Observable<Field[]>;\n selectedIds$: Observable<string[]>;\n Array = Array;\n currentClasses: string[] = [];\n selectedIds: string[] = [];\n WIDGET_HEADER_HEIGHT = WIDGET_HEADER_HEIGHT;\n private classes$: Observable<Class[]>;\n properties$: Observable<{ label: string; property: string }[]>;\n allSelected$: Observable<boolean>;\n areAllSelected: boolean = false;\n allIds: string[] = [];\n contextMenuClickedId: string = '';\n isContextMenuOpened$: Observable<boolean>;\n quickOrder$: Observable<ResultOrder | undefined>;\n private _refresh$ = new BehaviorSubject<void>(undefined);\n actualPage$ = new BehaviorSubject<number>(0);\n pagination$: Observable<Pagination>;\n isOpen = false;\n\n constructor(store: Store<any>, el: ElementRef, private cdr: ChangeDetectorRef) {\n super(store, el);\n\n this.classes$ = this.store.select(ClassSelectors.classes);\n\n this.fields$ = combineLatest([this.resultSet$, this.classes$, this.store.select(FieldSelectors.fields)]).pipe(\n map(\n ([resultSet, classes, fields]) =>\n [\n ...ItemUtils.getFieldsForClasses(Object.keys(resultSet.items), classes, fields),\n ...baseItemProperties.map((p) => ({ name: p, id: p } as Field))\n ] as Field[]\n ),\n map((fields) => fields.filter((field) => field.type !== FieldType.RAW))\n );\n\n this.options$ = combineLatest([\n this.manifest$.pipe(map((manifest) => manifest.options as TableWidgetOptions)),\n this.resultSet$,\n this.classes$,\n this.fields$,\n this.store.select(ConfigSelectors.tableDefaultAttributesDefinitions)\n ]).pipe(\n map(([options, resultSet, classes, fields, defs]) => {\n if (!options.columns || options.columns.length === 0) {\n const attributes = ItemUtils.getAttributesFromRs(resultSet, classes, fields, defs);\n const uniqueProps = [...new Set(attributes.map(({ name, technicalName }) => ({ name, technicalName })))];\n\n options.columns = uniqueProps.map((property) => ({\n property: property.technicalName,\n label: property.name,\n attributeId: attributes.find((attr) => attr.technicalName === property.technicalName)?.id\n })) as ColumnDefinition[];\n }\n return options;\n })\n );\n\n this.subscriptions.add(\n this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n this.optionsCopy = { ...(JSON.parse(JSON.stringify(options)) as TableWidgetOptions) };\n this.refresh();\n })\n );\n\n this.subscriptions.add(this.allItems$.subscribe((allObjects) => (this.allIds = allObjects.map((obj) => obj.id))));\n\n const HEADER_SIZE = 30;\n const PAGINATION_SIZE = 35;\n const LINE_SIZE = 30;\n\n this.pagination$ = combineLatest([\n this.allItems$,\n this.actualPage$,\n this.widgetSize$,\n this.resultSet$,\n this.displayHeader$\n ]).pipe(\n map(([items, actualPage, size, rs, headerPresent]) => {\n const rows = Math.max(\n 1,\n Math.floor(\n (size.height - HEADER_SIZE - PAGINATION_SIZE - (headerPresent ? WIDGET_HEADER_HEIGHT : 0)) / LINE_SIZE\n )\n );\n const total = Object.values(rs.count ?? {}).reduce((p, c) => c.count + p, 0);\n const loadedPages = Math.ceil(items.length / rows);\n const page = actualPage <= loadedPages ? actualPage : Math.max(0, loadedPages - 1);\n const filtered = items.filter((_, idx) => idx >= rows * page && idx < rows * (page + 1));\n const filteredWithFillers =\n filtered.length === rows\n ? filtered\n : filtered.concat(\n new Array(rows - filtered.length).fill({\n metadata: { '__widget-table-filler': true }\n } as unknown as Item)\n );\n return {\n rows,\n page,\n items: filteredWithFillers,\n noFillersItems: filtered.length,\n total,\n totalPages: Math.ceil(total / rows),\n loaded: items.length,\n loadedPages\n };\n })\n );\n\n this.subscriptions.add(this.pagination$.pipe(auditTime(200)).subscribe(() => this.refresh()));\n\n this.columns$ = this.options$.pipe(\n map((options) => options?.columns ?? []),\n tap(() => setTimeout(() => this.refresh(), 500))\n );\n\n this.isContextMenuOpened$ = this.store.select(ContextMenuSelectors.opened);\n\n this.subscriptions.add(\n this.resultSet$\n .pipe(\n filter((rs) => !!rs),\n map((rs) => Object.keys(rs.items))\n )\n .subscribe((classes) => {\n if (this.currentClasses.length > 0 && !equal(this.currentClasses, classes)) {\n if (!this.optionsCopy) {\n this.optionsCopy = {};\n }\n delete this.optionsCopy.columns;\n this.emitManifest();\n }\n this.currentClasses = classes;\n })\n );\n\n this.selectedIds$ = this.store.select(DashboardSelectors.selectedItemIds);\n\n this.subscriptions.add(this.selectedIds$.subscribe((selectedIds) => this.selectedIds === selectedIds));\n\n this.store.dispatch(ClassActions.load());\n\n this.properties$ = combineLatest([this.resultSet$, this.classes$, this.fields$]).pipe(\n map(([rs, classes, fields]) => [\n ...Object.keys(rs.items)\n .map((classId) => (classes.find((cl) => cl.id === classId) ?? { attributes: [] }).attributes)\n .flat()\n .map((attr) => attr.technicalName)\n ]),\n map((props) => {\n const sortedProps = [...props];\n sortedProps.sort((pA, pB) => pA.toLocaleLowerCase().localeCompare(pB.toLocaleLowerCase()));\n return sortedProps;\n }),\n map((props) => props.map((prop) => ({ label: prop, property: prop }))),\n tap(() => setTimeout(() => this.refresh(), 500))\n );\n\n this.allSelected$ = combineLatest([this.selectedIds$, this.allItems$]).pipe(\n map(([selectedIds, allObjects]) => {\n const allIds = allObjects.map((object) => object.id);\n return !allIds.find((id) => !selectedIds.includes(id));\n }),\n tap((allSelected) => (this.areAllSelected = allSelected))\n );\n\n this.quickOrder$ = combineLatest([this.store.select(DashboardSelectors.quickOrder), this.datasourceIds$]).pipe(\n map(([order, nqs]) => (nqs.length === 1 ? order[nqs[0]] : undefined))\n );\n\n this.subscriptions.add(this._refresh$.pipe(delay(100)).subscribe(() => this.cdr.detectChanges()));\n }\n\n refresh() {\n this._refresh$.next();\n this.isOpen = !this.isOpen;\n }\n\n emitManifest() {\n this.manifestModified.emit({\n widgetIndex: this.widgetIndex,\n manifest: { ...this.manifest, options: this.optionsCopy }\n });\n }\n\n addColumn() {\n if (!this.optionsCopy?.columns) {\n this.optionsCopy = { columns: [] };\n }\n this.optionsCopy.columns?.push({ label: '', property: '' });\n this.refresh();\n }\n\n changePropertyName($event: any, columnDef: ColumnDefinition) {\n columnDef.property = $event;\n this.refresh();\n }\n\n changeLabel($event: Event, columnDef: ColumnDefinition) {\n // @ts-ignore\n const newLabel = $event.currentTarget.value;\n if (columnDef.label !== newLabel) {\n columnDef.label = newLabel;\n this.refresh();\n }\n }\n\n deleteColumn(i: number) {\n this.optionsCopy?.columns?.splice(i, 1);\n this.refresh();\n }\n\n selection($event: MouseEvent, item: Item) {\n this.store.dispatch(DashboardActions.select({ id: item.id, cumulative: !$event.shiftKey }));\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n contextMenu($event: MouseEvent, item: Item) {\n if (this.manifest.contextMenu !== false) {\n $event.stopPropagation();\n $event.preventDefault();\n this.store.dispatch(\n ContextMenuActions.open({\n itemId: item.id,\n clientX: $event.clientX,\n clientY: $event.clientY,\n resultSet: Array.isArray(this.manifest.datasource) ? this.manifest.datasource[0] : this.manifest.datasource,\n from: 'table',\n allowObjectCreation: false\n })\n );\n this.contextMenuClickedId = item.id;\n }\n }\n\n invertLayers(idx: number, idxWith: number) {\n if (!!this.optionsCopy && !!this.optionsCopy.columns) {\n const tmp = this.optionsCopy.columns[idxWith];\n this.optionsCopy.columns[idxWith] = this.optionsCopy.columns[idx];\n this.optionsCopy.columns[idx] = tmp;\n this.refresh();\n }\n }\n\n selectAll($event: any) {\n if ($event) {\n this.store.dispatch(DashboardActions.selectMany({ ids: this.allIds }));\n } else {\n this.store.dispatch(DashboardActions.selectMany({ ids: [] }));\n }\n }\n\n setOrder(column: ColumnDefinition) {\n this.datasourceIds$\n .pipe(\n take(1),\n filter((nqs) => nqs.length === 1),\n withLatestFrom(this.quickOrder$)\n )\n .subscribe(([nqs, actualOrder]) => {\n this.store.dispatch(\n DashboardActions.quickOrder({\n datasourceId: nqs[0],\n attribute: column.attributeId ?? '',\n asc: this.nextOrder(column, actualOrder)\n })\n );\n });\n }\n\n private nextOrder(column: ColumnDefinition, actualOrder: ResultOrder | undefined): OrderValue {\n if (!actualOrder || actualOrder.attribute !== column.attributeId) {\n return 'asc';\n }\n return actualOrder.asc === 'asc' ? 'desc' : actualOrder.asc === 'desc' ? undefined : 'asc';\n }\n\n trackObjects(index: number, item: Item) {\n return item.id;\n }\n\n goToPage(number: number) {\n this.actualPage$.next(number);\n }\n}\n","<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n (click)=\"refresh()\"\n >\n <pry-settings\n (click)=\"refresh()\"\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n (triggerClick)=\"this.refresh()\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n <div\n *ngFor=\"let columnDef of optionsCopy?.columns ?? []; let i = index\"\n class=\"o-settings__popup__content__fields\"\n (click)=\"refresh()\"\n >\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.columns?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (click)=\"refresh()\"\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n bindLabel=\"label\"\n bindValue=\"property\"\n id=\"table_property\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"a-table-wrapper\">\n <ng-container *ngIf=\"pagination$ | async as pagination\">\n <ng-container *ngIf=\"pagination?.items ?? [] as allObjects\">\n <div\n class=\"no-result\"\n *ngIf=\"pagination.noFillersItems === 0\"\n [style.height.%]=\"pagination.totalPages > 0 ? 80 : 100\"\n >\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n\n <ng-container *ngIf=\"pagination.noFillersItems > 0\">\n <ng-container *ngIf=\"(selectedIds$ | async) ?? [] as selectedIds\">\n <ng-container *ngIf=\"(columns$ | async) ?? [] as columns\">\n <table class=\"a-table\" [attr.aria-label]=\"'@pry.widget.table.description' | i18n\">\n <thead>\n <tr>\n <th *ngIf=\"allObjects?.length ?? 0 > 0\">\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th *ngFor=\"let column of columns; let i = index\" resizable (click)=\"setOrder(column)\">\n <span>{{ column.label }}</span>\n <ng-container *ngIf=\"quickOrder$ | async as quickOrder\">\n <ng-container *ngIf=\"quickOrder.attribute === column.attributeId\">\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let item of allObjects\"\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n [class.filler]=\"item.metadata!['__widget-table-filler']\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n <td *ngFor=\"let column of columns\" class=\"u-ellipsis\">\n <ng-container *ngIf=\"column.property === 'metadata'\">\n <pry-metadata [item]=\"item\"></pry-metadata>\n </ng-container>\n <ng-container *ngIf=\"column.property === 'oClass'\">\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n />\n </p>\n </ng-container>\n <ng-container *ngIf=\"!['metadata', 'oClass'].includes(column.property)\">\n <pry-expand-value [value]=\"item | getValue : column.property | async\"></pry-expand-value>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <div class=\"a-table-pagination\" *ngIf=\"pagination.totalPages > 0\">\n <div class=\"a-table-pagination__spacing\">\n <div>\n <button (click)=\"goToPage(0)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button (click)=\"goToPage(pagination.page - 1)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n <p>{{ pagination.page + 1 }} / {{ pagination.loadedPages }}</p>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.page + 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.loadedPages - 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n ({{\n '@pry.widget.table.remaining' | i18n : { remaining: pagination.totalPages - pagination.loadedPages }\n }})\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</div>\n","export const enTranslations = {\n '@pry': {\n widget: {\n table: {\n addColumn: 'Add column',\n deleteColumn: 'Delete',\n property: 'Property to display',\n label: 'Column label',\n empty: 'No data to display',\n description: 'Dataset elements',\n remaining: '{{remaining}} pages to load'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n widget: {\n table: {\n addColumn: 'Ajouter une colonne',\n deleteColumn: 'Supprimer',\n property: 'Propriété à afficher',\n label: 'Libellé de la colonne',\n empty: 'Aucune donnée à afficher',\n description: 'Eléments du jeu de données',\n remaining: '{{remaining}} pages restant à charger'\n }\n }\n }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BaseWidgetComponent,\n BaseWidgetModule,\n PryCoreModule,\n PryDashboardModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { WidgetTableComponent } from './component/widget-table.component';\nimport { DetachRowDirective } from './expand-value/detach-row.directive';\nimport { ExpandValueComponent } from './expand-value/expand-value.component';\nimport { FormatNumberPipe } from './expand-value/format-number.pipe';\nimport { GetValuePipe } from './get-value/get-value.pipe';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { ResizableComponent } from './resizable/resizable.component';\nimport { ResizableDirective } from './resizable/resizable.directive';\nimport { PryWidgetTableCssComponent } from './style/css.component';\n\n@NgModule({\n declarations: [\n WidgetTableComponent,\n GetValuePipe,\n ResizableComponent,\n ResizableDirective,\n PryWidgetTableCssComponent,\n ExpandValueComponent,\n FormatNumberPipe,\n DetachRowDirective\n ],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n PryCoreModule,\n PryDashboardModule,\n PrySelectModule,\n PryIconModule,\n PryCheckboxModule,\n PryToggleModule,\n PryI18nModule\n ],\n exports: [WidgetTableComponent]\n})\nexport class WidgetTableModule extends BaseWidgetModule {\n constructor(private pryTranslateService: PryI18nService) {\n super();\n this.pryTranslateService.addLangObject('fr', 'widget-table', frTranslations);\n this.pryTranslateService.addLangObject('en', 'widget-table', enTranslations);\n }\n\n override getComponent() {\n return WidgetTableComponent as Type<BaseWidgetComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ResizableDirective","i2","i2.FormatNumberPipe","i1","i6.ResizableComponent","i7.ResizableDirective","i8.PryWidgetTableCssComponent","i9.ExpandValueComponent","i10.DetachRowDirective","i11.GetValuePipe"],"mappings":";;;;;;;;;;;;;;;;MAQa,kBAAkB,CAAA;IAiB7B,WACqC,CAAA,WAAqB,EAEvC,UAAmC,EAAA;QAFjB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAU;QAEvC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;AAlB7C,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAa,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,IAAI,CACzF,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC,EAC9B,SAAS,CAAC,MAAK;AACb,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,qBAAqB,EAAE,CAAC;AACrF,YAAA,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;AAClC,YAAA,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;AAElC,YAAA,OAAO,SAAS,CAAa,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,IAAI,CAC9D,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC,EAC7C,oBAAoB,EAAE,EACtB,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAClD,CAAC;SACH,CAAC,CACH,CAAC;KAME;+GArBO,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAkBnB,QAAQ,EAAA,EAAA,EAAA,KAAA,EACR,UAAU,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAnBT,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACxB,iBAAA,CAAA;;0BAmBI,MAAM;2BAAC,QAAQ,CAAA;;0BACf,MAAM;2BAAC,UAAU,CAAA;4CAjBX,SAAS,EAAA,CAAA;sBADjB,MAAM;;;MCHI,kBAAkB,CAAA;AAJ/B,IAAA,WAAA,GAAA;QAME,IAAK,CAAA,KAAA,GAAkB,IAAI,CAAC;AAK7B,KAAA;AAHC,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;+GANU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,+GCN/B,qKAMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDAa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,qKAAA,EAAA,CAAA;8BAKzB,KAAK,EAAA,CAAA;sBADJ,WAAW;uBAAC,gBAAgB,CAAA;;;MEClB,0BAA0B,CAAA;+GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,4DAJ3B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ymCAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAID,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EACtB,QAAA,EAAA,EAAE,EAEG,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,ymCAAA,CAAA,EAAA,CAAA;;;MCD1B,gBAAgB,CAAA;IAC3B,WACU,CAAA,WAAwB,EACxB,WAA2B,EAAA;QAD3B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgB;KACjC;AAEJ,IAAA,SAAS,CAAC,SAA0C,EAAE,GAAG,IAAW,EAAA;QAClE,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAG,EAAA,CAAC,SAAS,GAAG,EAAE,GAAG,SAAS,CAAE,CAAA,EAAE,CAAC;AAC3E,QAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACjC,YAAA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB,YAAA,MAAM,CAAC,IAAI;AACT,gBAAA,IAAI,CAAC,WAAW;AACb,qBAAA,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC;AAC9B,sBAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAClE,sBAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAG,EAAA,SAAS,EAAE,CAAC;AACzF,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;+GAjBU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA,EAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,IAAI;mBAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAA;;;MCGjB,oBAAoB,CAAA;AAJjC,IAAA,WAAA,GAAA;QAKE,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;QAEzB,IAAI,CAAA,IAAA,GAA+G,EAAE,CAAC;AAcvH,KAAA;IAZC,IAAa,KAAK,CAAC,SAAyC,EAAA;AAC1D,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACpD,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;AACxC,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAClB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,YAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AAChB,SAAA;KACF;+GAhBU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,oFCPjC,uYAQA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDDa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,uYAAA,EAAA,CAAA;8BAQf,KAAK,EAAA,CAAA;sBAAjB,KAAK;;;MECK,kBAAkB,CAAA;AACM,IAAA,QAAQ,CAAC,MAAkB,EAAA;AAC5D,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACjC;IAID,WACU,CAAA,EAAc,EACd,GAAsB,EAAA;QADtB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QACd,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AAJtB,QAAA,IAAA,CAAA,aAAa,GAA6B,IAAI,YAAY,EAAE,CAAC;KAKnE;IAEJ,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;KACnB;+GAfU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACxB,iBAAA,CAAA;iIAEoC,QAAQ,EAAA,CAAA;sBAA1C,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAKvB,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;MCZI,YAAY,CAAA;AACvB,IAAA,WAAA,CAAoB,KAAiB,EAAA;QAAjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KAAI;AAEzC,IAAA,SAAS,CAAC,KAAW,EAAE,GAAG,IAAW,EAAA;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CACnD,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAC3D,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAC9D,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,KAAI;AACxB,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5D,MAAM,SAAS,GAAG,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,IAAI,CAAC,CAAC,SAAS,EAAE;AACf,gBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC;AAC3D,gBAAA,IACE,KAAK;AACL,oBAAA;AACE,wBAAA,SAAS,CAAC,KAAK;AACf,wBAAA,SAAS,CAAC,UAAU;AACpB,wBAAA,SAAS,CAAC,IAAI;AACd,wBAAA,SAAS,CAAC,SAAS;AACnB,wBAAA,SAAS,CAAC,SAAS;AACnB,wBAAA,SAAS,CAAC,OAAO;AACjB,wBAAA,SAAS,CAAC,YAAY;AACvB,qBAAA,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EACtB;;AAEA,oBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,2BAA2B,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;oBACzG,OAAO,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,EAAE,GAAG,CAAG,EAAA,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,WAAW,CAAC;AACpG,iBAAA;gBACD,OAAO,SAAS,CAAC,2BAA2B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAChE,aAAA;YACD,OAAO,SAAS,CAAC,2BAA2B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9D,CAAC,CACH,CAAC;KACH;+GAjCU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAZ,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA,EAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,IAAI;mBAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;;;ACoCpB,MAAO,oBAAqB,SAAQ,mBAAmB,CAAA;AAuB3D,IAAA,WAAA,CAAY,KAAiB,EAAE,EAAc,EAAU,GAAsB,EAAA;AAC3E,QAAA,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QADoC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QAjB7E,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;QACd,IAAc,CAAA,cAAA,GAAa,EAAE,CAAC;QAC9B,IAAW,CAAA,WAAA,GAAa,EAAE,CAAC;QAC3B,IAAoB,CAAA,oBAAA,GAAG,oBAAoB,CAAC;QAI5C,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;QAChC,IAAM,CAAA,MAAA,GAAa,EAAE,CAAC;QACtB,IAAoB,CAAA,oBAAA,GAAW,EAAE,CAAC;AAG1B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAO,SAAS,CAAC,CAAC;AACzD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;QAE7C,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AAKb,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAE1D,QAAA,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAC3G,GAAG,CACD,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,KAC3B;AACE,YAAA,GAAG,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC;YAC/E,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAY,CAAA,CAAC;SACrD,CACf,EACD,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CACxE,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC;AAC5B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAA6B,CAAC,CAAC;AAC9E,YAAA,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,QAAQ;AACb,YAAA,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,iCAAiC,CAAC;AACrE,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,KAAI;AAClD,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACpD,gBAAA,MAAM,UAAU,GAAG,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACnF,gBAAA,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzG,gBAAA,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,QAAQ,MAAM;oBAC/C,QAAQ,EAAE,QAAQ,CAAC,aAAa;oBAChC,KAAK,EAAE,QAAQ,CAAC,IAAI;AACpB,oBAAA,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,aAAa,CAAC,EAAE,EAAE;AAC1F,iBAAA,CAAC,CAAuB,CAAC;AAC3B,aAAA;AACD,YAAA,OAAO,OAAO,CAAC;SAChB,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AAC/D,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,GAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAwB,EAAE,CAAC;YACtF,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,UAAU,MAAM,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAElH,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,MAAM,eAAe,GAAG,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,QAAA,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;AAC/B,YAAA,IAAI,CAAC,SAAS;AACd,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,cAAc;AACpB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC,KAAI;AACnD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CACnB,CAAC,EACD,IAAI,CAAC,KAAK,CACR,CAAC,IAAI,CAAC,MAAM,GAAG,WAAW,GAAG,eAAe,IAAI,aAAa,GAAG,oBAAoB,GAAG,CAAC,CAAC,IAAI,SAAS,CACvG,CACF,CAAC;AACF,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,UAAU,IAAI,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;AACnF,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AACzF,YAAA,MAAM,mBAAmB,GACvB,QAAQ,CAAC,MAAM,KAAK,IAAI;AACtB,kBAAE,QAAQ;AACV,kBAAE,QAAQ,CAAC,MAAM,CACb,IAAI,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;AACrC,oBAAA,QAAQ,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE;AACzB,iBAAA,CAAC,CACtB,CAAC;YACR,OAAO;gBACL,IAAI;gBACJ,IAAI;AACJ,gBAAA,KAAK,EAAE,mBAAmB;gBAC1B,cAAc,EAAE,QAAQ,CAAC,MAAM;gBAC/B,KAAK;gBACL,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBACnC,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,WAAW;aACZ,CAAC;SACH,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAE9F,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC,EACxC,GAAG,CAAC,MAAM,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,CACjD,CAAC;AAEF,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAE3E,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,UAAU;AACZ,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EACpB,GAAG,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CACnC;AACA,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE;AAC1E,gBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,oBAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACvB,iBAAA;AACD,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;gBAChC,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,aAAA;AACD,YAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;SAC/B,CAAC,CACL,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;QAE1E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC;QAEvG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACnF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK;AAC7B,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACrB,iBAAA,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC;AAC5F,iBAAA,IAAI,EAAE;iBACN,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC;AACrC,SAAA,CAAC,EACF,GAAG,CAAC,CAAC,KAAK,KAAI;AACZ,YAAA,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAC/B,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,iBAAiB,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;AAC3F,YAAA,OAAO,WAAW,CAAC;SACpB,CAAC,EACF,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EACtE,GAAG,CAAC,MAAM,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,CACjD,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CACzE,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,KAAI;AAChC,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;AACrD,YAAA,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,SAAC,CAAC,EACF,GAAG,CAAC,CAAC,WAAW,MAAM,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,CAAC,CAC1D,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAC5G,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CACtE,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;KACnG;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;KAC5B;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;AAC1D,SAAA,CAAC,CAAC;KACJ;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE;YAC9B,IAAI,CAAC,WAAW,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACpC,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;IAED,kBAAkB,CAAC,MAAW,EAAE,SAA2B,EAAA;AACzD,QAAA,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;IAED,WAAW,CAAC,MAAa,EAAE,SAA2B,EAAA;;AAEpD,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;AAC5C,QAAA,IAAI,SAAS,CAAC,KAAK,KAAK,QAAQ,EAAE;AAChC,YAAA,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC;YAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;AAChB,SAAA;KACF;AAED,IAAA,YAAY,CAAC,CAAS,EAAA;QACpB,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;IAED,SAAS,CAAC,MAAkB,EAAE,IAAU,EAAA;QACtC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC5F,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,CAAC,eAAe,EAAE,CAAC;KAC1B;IAED,WAAW,CAAC,MAAkB,EAAE,IAAU,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,KAAK,EAAE;YACvC,MAAM,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,kBAAkB,CAAC,IAAI,CAAC;gBACtB,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;AACvB,gBAAA,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU;AAC3G,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,mBAAmB,EAAE,KAAK;AAC3B,aAAA,CAAC,CACH,CAAC;AACF,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,CAAC;AACrC,SAAA;KACF;IAED,YAAY,CAAC,GAAW,EAAE,OAAe,EAAA;AACvC,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAClE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACpC,IAAI,CAAC,OAAO,EAAE,CAAC;AAChB,SAAA;KACF;AAED,IAAA,SAAS,CAAC,MAAW,EAAA;AACnB,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACxE,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,SAAA;KACF;AAED,IAAA,QAAQ,CAAC,MAAwB,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc;aAChB,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,EACjC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CACjC;aACA,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,KAAI;YAChC,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,UAAU,CAAC;AAC1B,gBAAA,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;AACpB,gBAAA,SAAS,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;gBACnC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;AACzC,aAAA,CAAC,CACH,CAAC;AACJ,SAAC,CAAC,CAAC;KACN;IAEO,SAAS,CAAC,MAAwB,EAAE,WAAoC,EAAA;QAC9E,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,SAAS,KAAK,MAAM,CAAC,WAAW,EAAE;AAChE,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QACD,OAAO,WAAW,CAAC,GAAG,KAAK,KAAK,GAAG,MAAM,GAAG,WAAW,CAAC,GAAG,KAAK,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;KAC5F;IAED,YAAY,CAAC,KAAa,EAAE,IAAU,EAAA;QACpC,OAAO,IAAI,CAAC,EAAE,CAAC;KAChB;AAED,IAAA,QAAQ,CAAC,MAAc,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/B;+GAhSU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,+EC1CjC,knSAoNA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,eAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAQ,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD1Ka,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,knSAAA,EAAA,CAAA;;;AEvCvB,MAAM,cAAc,GAAG;AAC5B,IAAA,MAAM,EAAE;AACN,QAAA,MAAM,EAAE;AACN,YAAA,KAAK,EAAE;AACL,gBAAA,SAAS,EAAE,YAAY;AACvB,gBAAA,YAAY,EAAE,QAAQ;AACtB,gBAAA,QAAQ,EAAE,qBAAqB;AAC/B,gBAAA,KAAK,EAAE,cAAc;AACrB,gBAAA,KAAK,EAAE,oBAAoB;AAC3B,gBAAA,WAAW,EAAE,kBAAkB;AAC/B,gBAAA,SAAS,EAAE,6BAA6B;AACzC,aAAA;AACF,SAAA;AACF,KAAA;CACF;;ACdM,MAAM,cAAc,GAAG;AAC5B,IAAA,MAAM,EAAE;AACN,QAAA,MAAM,EAAE;AACN,YAAA,KAAK,EAAE;AACL,gBAAA,SAAS,EAAE,qBAAqB;AAChC,gBAAA,YAAY,EAAE,WAAW;AACzB,gBAAA,QAAQ,EAAE,sBAAsB;AAChC,gBAAA,KAAK,EAAE,uBAAuB;AAC9B,gBAAA,KAAK,EAAE,0BAA0B;AACjC,gBAAA,WAAW,EAAE,4BAA4B;AACzC,gBAAA,SAAS,EAAE,uCAAuC;AACnD,aAAA;AACF,SAAA;AACF,KAAA;CACF;;ACsCK,MAAO,iBAAkB,SAAQ,gBAAgB,CAAA;AACrD,IAAA,WAAA,CAAoB,mBAAmC,EAAA;AACrD,QAAA,KAAK,EAAE,CAAC;QADU,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAgB;QAErD,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;QAC7E,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;KAC9E;IAEQ,YAAY,GAAA;AACnB,QAAA,OAAO,oBAAiD,CAAC;KAC1D;+GATU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAvB1B,oBAAoB;YACpB,YAAY;YACZ,kBAAkB;YAClB,kBAAkB;YAClB,0BAA0B;YAC1B,oBAAoB;YACpB,gBAAgB;AAChB,YAAA,kBAAkB,aAGlB,YAAY;YACZ,WAAW;YACX,aAAa;YACb,aAAa;YACb,kBAAkB;YAClB,eAAe;YACf,aAAa;YACb,iBAAiB;YACjB,eAAe;AACf,YAAA,aAAa,aAEL,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAb1B,YAAY;YACZ,WAAW;YACX,aAAa;YACb,aAAa;YACb,kBAAkB;YAClB,eAAe;YACf,aAAa;YACb,iBAAiB;YACjB,eAAe;YACf,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIJ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAzB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,oBAAoB;wBACpB,YAAY;wBACZ,kBAAkB;wBAClB,kBAAkB;wBAClB,0BAA0B;wBAC1B,oBAAoB;wBACpB,gBAAgB;wBAChB,kBAAkB;AACnB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,aAAa;wBACb,aAAa;wBACb,kBAAkB;wBAClB,eAAe;wBACf,aAAa;wBACb,iBAAiB;wBACjB,eAAe;wBACf,aAAa;AACd,qBAAA;oBACD,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;ACnDD;;AAEG;;;;"}
@@ -121,11 +121,11 @@ class WidgetTileComponent extends DataWidgetComponent {
121
121
  return Object.keys(value?.metadata ?? {}).length > 0;
122
122
  }
123
123
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetTileComponent, deps: [{ token: i1.Store }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
124
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: WidgetTileComponent, selector: "pry-widget-tile", usesInheritance: true, ngImport: i0, template: "<pry-widget-tile-css></pry-widget-tile-css>\n<div class=\"o-widget o-widget--tile\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n #header\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"tile_classes\">{{ '@pry.widget.tile.classes' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeClasses($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"classes$ | async\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n [ngModel]=\"optionsCopy.classes\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"tile_classes\"\n ></pry-select>\n </div>\n </pry-settings>\n </pry-widget-header>\n <div class=\"o-widget--tile-wrapper\" [style.top]=\"(displayHeader$ | async) ? WIDGET_HEADER_HEIGHT + 'px' : 0\">\n <div class=\"no-result\" *ngIf=\"(items$ | async)?.length === 0\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.tile.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.tile.empty' | i18n }}</span>\n </div>\n <ul class=\"o-widget--tile__list\">\n <li\n class=\"o-widget--tile__list__item\"\n *ngFor=\"let item of items$ | async; let index = index\"\n (contextmenu)=\"contextMenu($event, item)\"\n >\n <div class=\"o-widget--tile__list__item__header\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n />\n <h3 class=\"o-widget--tile__list__item__header__title\">\n {{\n item.oClass\n | translateId\n : {\n type: 'class',\n output: 'name'\n }\n | async\n }}\n </h3>\n <pry-checkbox\n [ngModel]=\"(selectedIds$ | async).includes(item.id)\"\n (click)=\"select($event, item)\"\n ></pry-checkbox>\n </div>\n <div class=\"o-properties\">\n <ul class=\"o-properties__list\">\n <ng-container *ngFor=\"let property of (propertiesToDisplay$ | async)![item.oClass]\">\n <li\n *ngFor=\"let value of getValue(item, property); let i = index; let c = count\"\n class=\"o-properties__list__item\"\n >\n <p class=\"o-properties__list__item__label\" *ngIf=\"i === 0\">{{ property }}:</p>\n <p class=\"o-properties__list__item__value\" *ngIf=\"!isRaw(property, item.oClass)\">{{ value?.value }}</p>\n <p class=\"o-properties__list__item__raw\" *ngIf=\"isRaw(property, item.oClass)\">\n <pry-vizualize-raw [item]=\"item\" [propertyName]=\"property\"></pry-vizualize-raw>\n </p>\n <ng-container *ngIf=\"hasMetadata(value)\">\n <pry-metadata [item]=\"value\"></pry-metadata>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n <div (click)=\"toggleMap(index)\" class=\"o-widget--tile__list__item__footer\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n aria-controls=\"tile-map-xxx\"\n aria-expanded=\"false\"\n >\n {{ '@pry.widget.tile.map' | i18n }}\n </button>\n </div>\n <div class=\"o-widget--tile__list__item__map\" *ngIf=\"maps[index]\" id=\"tile-map-xxx\">\n <pry-widget-map [staticManifest]=\"mapManifest\" [staticResultSet]=\"resultSetWithItem(item)\"></pry-widget-map>\n </div>\n </li>\n </ul>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i4.MetadataComponent, selector: "pry-metadata", inputs: ["item"] }, { kind: "component", type: i4.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i4.VizualizeRawComponent, selector: "pry-vizualize-raw", inputs: ["item", "propertyName", "alt"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i6.WidgetMapComponent, selector: "pry-widget-map" }, { kind: "component", type: PryWidgetTileCssComponent, selector: "pry-widget-tile-css" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i4.TranslateItemToSymbolPipe, name: "translateItemToSymbol" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
124
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: WidgetTileComponent, selector: "pry-widget-tile", usesInheritance: true, ngImport: i0, template: "<pry-widget-tile-css></pry-widget-tile-css>\n<div class=\"o-widget o-widget--tile\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n #header\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"tile_classes\">{{ '@pry.widget.tile.classes' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeClasses($event)\"\n [items]=\"classes$ | async\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n [ngModel]=\"optionsCopy.classes\"\n bindLabel=\"name\"\n bindValue=\"id\"\n id=\"tile_classes\"\n ></pry-select>\n </div>\n </pry-settings>\n </pry-widget-header>\n <div class=\"o-widget--tile-wrapper\" [style.top]=\"(displayHeader$ | async) ? WIDGET_HEADER_HEIGHT + 'px' : 0\">\n <div class=\"no-result\" *ngIf=\"(items$ | async)?.length === 0\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.tile.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.tile.empty' | i18n }}</span>\n </div>\n <ul class=\"o-widget--tile__list\">\n <li\n class=\"o-widget--tile__list__item\"\n *ngFor=\"let item of items$ | async; let index = index\"\n (contextmenu)=\"contextMenu($event, item)\"\n >\n <div class=\"o-widget--tile__list__item__header\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n />\n <h3 class=\"o-widget--tile__list__item__header__title\">\n {{\n item.oClass\n | translateId\n : {\n type: 'class',\n output: 'name'\n }\n | async\n }}\n </h3>\n <pry-checkbox\n [ngModel]=\"(selectedIds$ | async).includes(item.id)\"\n (click)=\"select($event, item)\"\n ></pry-checkbox>\n </div>\n <div class=\"o-properties\">\n <ul class=\"o-properties__list\">\n <ng-container *ngFor=\"let property of (propertiesToDisplay$ | async)![item.oClass]\">\n <li\n *ngFor=\"let value of getValue(item, property); let i = index; let c = count\"\n class=\"o-properties__list__item\"\n >\n <p class=\"o-properties__list__item__label\" *ngIf=\"i === 0\">{{ property }}:</p>\n <p class=\"o-properties__list__item__value\" *ngIf=\"!isRaw(property, item.oClass)\">{{ value?.value }}</p>\n <p class=\"o-properties__list__item__raw\" *ngIf=\"isRaw(property, item.oClass)\">\n <pry-vizualize-raw [item]=\"item\" [propertyName]=\"property\"></pry-vizualize-raw>\n </p>\n <ng-container *ngIf=\"hasMetadata(value)\">\n <pry-metadata [item]=\"value\"></pry-metadata>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n <div (click)=\"toggleMap(index)\" class=\"o-widget--tile__list__item__footer\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n aria-controls=\"tile-map-xxx\"\n aria-expanded=\"false\"\n >\n {{ '@pry.widget.tile.map' | i18n }}\n </button>\n </div>\n <div class=\"o-widget--tile__list__item__map\" *ngIf=\"maps[index]\" id=\"tile-map-xxx\">\n <pry-widget-map [staticManifest]=\"mapManifest\" [staticResultSet]=\"resultSetWithItem(item)\"></pry-widget-map>\n </div>\n </li>\n </ul>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i4.MetadataComponent, selector: "pry-metadata", inputs: ["item"] }, { kind: "component", type: i4.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i4.VizualizeRawComponent, selector: "pry-vizualize-raw", inputs: ["item", "propertyName", "alt"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i6.WidgetMapComponent, selector: "pry-widget-map" }, { kind: "component", type: PryWidgetTileCssComponent, selector: "pry-widget-tile-css" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i4.TranslateItemToSymbolPipe, name: "translateItemToSymbol" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
125
125
  }
126
126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetTileComponent, decorators: [{
127
127
  type: Component,
128
- args: [{ selector: 'pry-widget-tile', template: "<pry-widget-tile-css></pry-widget-tile-css>\n<div class=\"o-widget o-widget--tile\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n #header\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"tile_classes\">{{ '@pry.widget.tile.classes' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeClasses($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"classes$ | async\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n [ngModel]=\"optionsCopy.classes\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"tile_classes\"\n ></pry-select>\n </div>\n </pry-settings>\n </pry-widget-header>\n <div class=\"o-widget--tile-wrapper\" [style.top]=\"(displayHeader$ | async) ? WIDGET_HEADER_HEIGHT + 'px' : 0\">\n <div class=\"no-result\" *ngIf=\"(items$ | async)?.length === 0\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.tile.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.tile.empty' | i18n }}</span>\n </div>\n <ul class=\"o-widget--tile__list\">\n <li\n class=\"o-widget--tile__list__item\"\n *ngFor=\"let item of items$ | async; let index = index\"\n (contextmenu)=\"contextMenu($event, item)\"\n >\n <div class=\"o-widget--tile__list__item__header\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n />\n <h3 class=\"o-widget--tile__list__item__header__title\">\n {{\n item.oClass\n | translateId\n : {\n type: 'class',\n output: 'name'\n }\n | async\n }}\n </h3>\n <pry-checkbox\n [ngModel]=\"(selectedIds$ | async).includes(item.id)\"\n (click)=\"select($event, item)\"\n ></pry-checkbox>\n </div>\n <div class=\"o-properties\">\n <ul class=\"o-properties__list\">\n <ng-container *ngFor=\"let property of (propertiesToDisplay$ | async)![item.oClass]\">\n <li\n *ngFor=\"let value of getValue(item, property); let i = index; let c = count\"\n class=\"o-properties__list__item\"\n >\n <p class=\"o-properties__list__item__label\" *ngIf=\"i === 0\">{{ property }}:</p>\n <p class=\"o-properties__list__item__value\" *ngIf=\"!isRaw(property, item.oClass)\">{{ value?.value }}</p>\n <p class=\"o-properties__list__item__raw\" *ngIf=\"isRaw(property, item.oClass)\">\n <pry-vizualize-raw [item]=\"item\" [propertyName]=\"property\"></pry-vizualize-raw>\n </p>\n <ng-container *ngIf=\"hasMetadata(value)\">\n <pry-metadata [item]=\"value\"></pry-metadata>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n <div (click)=\"toggleMap(index)\" class=\"o-widget--tile__list__item__footer\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n aria-controls=\"tile-map-xxx\"\n aria-expanded=\"false\"\n >\n {{ '@pry.widget.tile.map' | i18n }}\n </button>\n </div>\n <div class=\"o-widget--tile__list__item__map\" *ngIf=\"maps[index]\" id=\"tile-map-xxx\">\n <pry-widget-map [staticManifest]=\"mapManifest\" [staticResultSet]=\"resultSetWithItem(item)\"></pry-widget-map>\n </div>\n </li>\n </ul>\n </div>\n</div>\n" }]
128
+ args: [{ selector: 'pry-widget-tile', template: "<pry-widget-tile-css></pry-widget-tile-css>\n<div class=\"o-widget o-widget--tile\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n #header\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"tile_classes\">{{ '@pry.widget.tile.classes' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeClasses($event)\"\n [items]=\"classes$ | async\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n [ngModel]=\"optionsCopy.classes\"\n bindLabel=\"name\"\n bindValue=\"id\"\n id=\"tile_classes\"\n ></pry-select>\n </div>\n </pry-settings>\n </pry-widget-header>\n <div class=\"o-widget--tile-wrapper\" [style.top]=\"(displayHeader$ | async) ? WIDGET_HEADER_HEIGHT + 'px' : 0\">\n <div class=\"no-result\" *ngIf=\"(items$ | async)?.length === 0\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.tile.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.tile.empty' | i18n }}</span>\n </div>\n <ul class=\"o-widget--tile__list\">\n <li\n class=\"o-widget--tile__list__item\"\n *ngFor=\"let item of items$ | async; let index = index\"\n (contextmenu)=\"contextMenu($event, item)\"\n >\n <div class=\"o-widget--tile__list__item__header\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n />\n <h3 class=\"o-widget--tile__list__item__header__title\">\n {{\n item.oClass\n | translateId\n : {\n type: 'class',\n output: 'name'\n }\n | async\n }}\n </h3>\n <pry-checkbox\n [ngModel]=\"(selectedIds$ | async).includes(item.id)\"\n (click)=\"select($event, item)\"\n ></pry-checkbox>\n </div>\n <div class=\"o-properties\">\n <ul class=\"o-properties__list\">\n <ng-container *ngFor=\"let property of (propertiesToDisplay$ | async)![item.oClass]\">\n <li\n *ngFor=\"let value of getValue(item, property); let i = index; let c = count\"\n class=\"o-properties__list__item\"\n >\n <p class=\"o-properties__list__item__label\" *ngIf=\"i === 0\">{{ property }}:</p>\n <p class=\"o-properties__list__item__value\" *ngIf=\"!isRaw(property, item.oClass)\">{{ value?.value }}</p>\n <p class=\"o-properties__list__item__raw\" *ngIf=\"isRaw(property, item.oClass)\">\n <pry-vizualize-raw [item]=\"item\" [propertyName]=\"property\"></pry-vizualize-raw>\n </p>\n <ng-container *ngIf=\"hasMetadata(value)\">\n <pry-metadata [item]=\"value\"></pry-metadata>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n <div (click)=\"toggleMap(index)\" class=\"o-widget--tile__list__item__footer\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n aria-controls=\"tile-map-xxx\"\n aria-expanded=\"false\"\n >\n {{ '@pry.widget.tile.map' | i18n }}\n </button>\n </div>\n <div class=\"o-widget--tile__list__item__map\" *ngIf=\"maps[index]\" id=\"tile-map-xxx\">\n <pry-widget-map [staticManifest]=\"mapManifest\" [staticResultSet]=\"resultSetWithItem(item)\"></pry-widget-map>\n </div>\n </li>\n </ul>\n </div>\n</div>\n" }]
129
129
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i0.ElementRef }]; } });
130
130
 
131
131
  const enTranslations = {