@provoly/dashboard 0.14.8 → 0.14.10

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 (196) hide show
  1. package/admin/components/admin-layout/admin-layout.component.d.ts +5 -3
  2. package/admin/components/admin-metadata-user/admin-metadata-user.component.d.ts +1 -1
  3. package/admin/components/admin-metadata-user/store/admin-metadata-user.action.d.ts +0 -11
  4. package/admin/components/admin-metadata-user/store/admin-metadata-user.effects.d.ts +2 -7
  5. package/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.d.ts +1 -3
  6. package/admin/components/admin-metadata-user/store/admin-metadata-user.selector.d.ts +1 -4
  7. package/admin/components/admin-user/store/admin-user.action.d.ts +1 -52
  8. package/admin/components/admin-user/store/admin-user.effects.d.ts +0 -28
  9. package/admin/components/admin-user/store/admin-user.reducer.d.ts +1 -2
  10. package/admin/components/admin-user/store/admin-user.selector.d.ts +0 -1
  11. package/admin/store/admin.service.d.ts +1 -4
  12. package/assets/svgs/map.svg +1 -1
  13. package/components/metadata-editor/metadata-editor.component.d.ts +6 -6
  14. package/components/metadata-editor/metadata-editor.module.d.ts +7 -6
  15. package/components/metadata-editor/public-api.d.ts +1 -0
  16. package/components/metadata-editor/store/metadata.action.d.ts +63 -1
  17. package/components/metadata-editor/store/metadata.effects.d.ts +33 -0
  18. package/components/metadata-editor/store/metadata.reducer.d.ts +3 -1
  19. package/components/metadata-editor/store/metadata.selector.d.ts +2 -0
  20. package/components/metadata-editor/store/metadata.service.d.ts +5 -1
  21. package/components/metadata-editor/style/_o-metadata-editor.scss +15 -0
  22. package/components/metadata-editor/style/css.component.d.ts +5 -0
  23. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +2 -3
  24. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +2 -3
  25. package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +2 -3
  26. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +1 -1
  27. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +4 -4
  28. package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +3 -3
  29. package/esm2022/admin/components/admin-layout/admin-layout.component.mjs +10 -7
  30. package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +2 -3
  31. package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +3 -5
  32. package/esm2022/admin/components/admin-metadata-user/admin-metadata-user.component.mjs +9 -10
  33. package/esm2022/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.mjs +4 -4
  34. package/esm2022/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.mjs +7 -3
  35. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.action.mjs +1 -4
  36. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +4 -4
  37. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.mjs +8 -28
  38. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.selector.mjs +2 -6
  39. package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +9 -10
  40. package/esm2022/admin/components/admin-user/admin-user.component.mjs +1 -1
  41. package/esm2022/admin/components/admin-user/store/admin-user.action.mjs +2 -11
  42. package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +1 -19
  43. package/esm2022/admin/components/admin-user/store/admin-user.reducer.mjs +2 -7
  44. package/esm2022/admin/components/admin-user/store/admin-user.selector.mjs +1 -3
  45. package/esm2022/admin/i18n/en.translations.mjs +2 -2
  46. package/esm2022/admin/i18n/fr.translations.mjs +4 -4
  47. package/esm2022/admin/store/admin.effects.mjs +1 -1
  48. package/esm2022/admin/store/admin.service.mjs +1 -16
  49. package/esm2022/components/metadata-editor/metadata-editor.component.mjs +40 -45
  50. package/esm2022/components/metadata-editor/metadata-editor.module.mjs +5 -4
  51. package/esm2022/components/metadata-editor/public-api.mjs +2 -1
  52. package/esm2022/components/metadata-editor/store/metadata.action.mjs +14 -2
  53. package/esm2022/components/metadata-editor/store/metadata.effects.mjs +21 -1
  54. package/esm2022/components/metadata-editor/store/metadata.reducer.mjs +18 -2
  55. package/esm2022/components/metadata-editor/store/metadata.selector.mjs +6 -2
  56. package/esm2022/components/metadata-editor/store/metadata.service.mjs +21 -1
  57. package/esm2022/components/metadata-editor/style/css.component.mjs +11 -0
  58. package/esm2022/dataset/i18n/fr.translations.mjs +2 -2
  59. package/esm2022/import/i18n/en.translations.mjs +4 -1
  60. package/esm2022/import/i18n/fr.translations.mjs +4 -1
  61. package/esm2022/import/store/import.effects.mjs +8 -1
  62. package/esm2022/lib/core/components/about/about.component.mjs +29 -0
  63. package/esm2022/lib/core/components/about/pry-about.module.mjs +21 -0
  64. package/esm2022/lib/core/components/icon/icon.component.mjs +5 -1
  65. package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +10 -6
  66. package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +1 -1
  67. package/esm2022/lib/core/i18n/en.translations.mjs +14 -3
  68. package/esm2022/lib/core/i18n/fr.translations.mjs +14 -3
  69. package/esm2022/lib/core/i18n/i18n.pipe.mjs +4 -3
  70. package/esm2022/lib/core/i18n/i18n.service.mjs +5 -5
  71. package/esm2022/lib/core/model/display-options.interface.mjs +1 -1
  72. package/esm2022/lib/core/model/manifest.interface.mjs +1 -1
  73. package/esm2022/lib/core/model/public-api.mjs +2 -1
  74. package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +1 -1
  75. package/esm2022/lib/core/model/widget-vega-manifest.interface.mjs +2 -0
  76. package/esm2022/lib/core/public-api.mjs +3 -1
  77. package/esm2022/lib/core/store/class/class.effects.mjs +1 -1
  78. package/esm2022/lib/core/store/config/config.actions.mjs +5 -2
  79. package/esm2022/lib/core/store/config/config.effects.mjs +4 -1
  80. package/esm2022/lib/core/store/config/config.reducer.mjs +9 -2
  81. package/esm2022/lib/core/store/config/config.selectors.mjs +6 -4
  82. package/esm2022/lib/core/store/config/config.service.mjs +36 -2
  83. package/esm2022/lib/core/store/config/versions.interface.mjs +2 -0
  84. package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +1 -16
  85. package/esm2022/lib/dashboard/components/manifests/manifests.component.mjs +3 -1
  86. package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +3 -2
  87. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +3 -3
  88. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +15 -6
  89. package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +10 -2
  90. package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +3 -4
  91. package/esm2022/lib/dashboard/store/manifest.service.mjs +2 -3
  92. package/esm2022/notification/store/notification.effects.mjs +3 -3
  93. package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +23 -18
  94. package/esm2022/presentation/components/presentation.component.mjs +18 -18
  95. package/esm2022/presentation/style/css.component.mjs +2 -2
  96. package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +3 -3
  97. package/esm2022/restitution/components/restitution-list-item/restitution-list-item.component.mjs +6 -3
  98. package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.mjs +6 -3
  99. package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors.component.mjs +2 -2
  100. package/esm2022/supervision/components/supervision-layout/supervision-layout.component.mjs +2 -2
  101. package/esm2022/supervision/components/supervision.component.mjs +2 -2
  102. package/esm2022/supervision/store/supervision.actions.mjs +1 -1
  103. package/esm2022/supervision/store/supervision.reducer.mjs +3 -2
  104. package/esm2022/supervision/store/supervision.selectors.mjs +2 -2
  105. package/esm2022/toolbox/components/save-view/save-view.component.mjs +4 -4
  106. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +18 -11
  107. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +20 -6
  108. package/esm2022/widgets/widget-aggregated-chart/i18n/fr.translations.mjs +1 -2
  109. package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +4 -2
  110. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +15 -9
  111. package/esm2022/widgets/widget-map/utils/cql-utils.class.mjs +5 -5
  112. package/esm2022/widgets/widget-map/utils/xml-utils.class.mjs +23 -1
  113. package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +139 -0
  114. package/esm2022/widgets/widget-vega/i18n/en.translations.mjs +11 -0
  115. package/esm2022/widgets/widget-vega/i18n/fr.translations.mjs +11 -0
  116. package/esm2022/widgets/widget-vega/provoly-dashboard-widgets-widget-vega.mjs +5 -0
  117. package/esm2022/widgets/widget-vega/public-api.mjs +3 -0
  118. package/esm2022/widgets/widget-vega/style/css.component.mjs +11 -0
  119. package/esm2022/widgets/widget-vega/widget-vega.module.mjs +68 -0
  120. package/fesm2022/provoly-dashboard-admin.mjs +134 -206
  121. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  122. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +127 -52
  123. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
  124. package/fesm2022/provoly-dashboard-dataset.mjs +1 -1
  125. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  126. package/fesm2022/provoly-dashboard-import.mjs +13 -0
  127. package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
  128. package/fesm2022/provoly-dashboard-notification.mjs +2 -2
  129. package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
  130. package/fesm2022/provoly-dashboard-presentation.mjs +41 -37
  131. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  132. package/fesm2022/provoly-dashboard-restitution.mjs +7 -4
  133. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  134. package/fesm2022/provoly-dashboard-supervision.mjs +11 -8
  135. package/fesm2022/provoly-dashboard-supervision.mjs.map +1 -1
  136. package/fesm2022/provoly-dashboard-toolbox.mjs +3 -3
  137. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  138. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +17 -10
  139. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
  140. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +19 -6
  141. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  142. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +43 -14
  143. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  144. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +235 -0
  145. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -0
  146. package/fesm2022/provoly-dashboard.mjs +188 -68
  147. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  148. package/import/i18n/en.translations.d.ts +3 -0
  149. package/import/i18n/fr.translations.d.ts +3 -0
  150. package/lib/core/components/about/about.component.d.ts +12 -0
  151. package/lib/core/components/about/pry-about.module.d.ts +10 -0
  152. package/lib/core/i18n/en.translations.d.ts +11 -0
  153. package/lib/core/i18n/fr.translations.d.ts +11 -0
  154. package/lib/core/i18n/i18n.service.d.ts +2 -2
  155. package/lib/core/model/display-options.interface.d.ts +1 -1
  156. package/lib/core/model/manifest.interface.d.ts +2 -1
  157. package/lib/core/model/public-api.d.ts +1 -0
  158. package/lib/core/model/widget-map-manifest.interface.d.ts +2 -0
  159. package/lib/core/model/widget-vega-manifest.interface.d.ts +5 -0
  160. package/lib/core/public-api.d.ts +2 -0
  161. package/lib/core/store/config/config.actions.d.ts +12 -0
  162. package/lib/core/store/config/config.effects.d.ts +6 -0
  163. package/lib/core/store/config/config.reducer.d.ts +2 -0
  164. package/lib/core/store/config/config.selectors.d.ts +1 -0
  165. package/lib/core/store/config/config.service.d.ts +2 -0
  166. package/lib/core/store/config/versions.interface.d.ts +10 -0
  167. package/lib/dashboard/store/dashboard.actions.d.ts +10 -8
  168. package/lib/dashboard/store/dashboard.effects.d.ts +2 -0
  169. package/lib/dashboard/store/dashboard.selectors.d.ts +1 -1
  170. package/lib/dashboard/store/manifest.service.d.ts +1 -1
  171. package/package.json +31 -25
  172. package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +4 -3
  173. package/presentation/components/presentation.component.d.ts +2 -2
  174. package/presentation/style/_o-pry-new-presentation.scss +7 -0
  175. package/restitution/components/restitution-list-item/restitution-list-item.component.d.ts +3 -2
  176. package/schematics/ng-add/index.js +7 -1
  177. package/schematics/ng-add/index.js.map +1 -1
  178. package/schematics/ng-add/schema.json +2 -1
  179. package/styles/components/_o-tabs.scss +1 -7
  180. package/styles/layout/_o-base-layout.scss +8 -1
  181. package/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.d.ts +1 -1
  182. package/supervision/store/supervision.actions.d.ts +2 -2
  183. package/supervision/store/supervision.reducer.d.ts +1 -1
  184. package/supervision/store/supervision.selectors.d.ts +1 -1
  185. package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +7 -0
  186. package/widgets/widget-aggregated-chart/i18n/fr.translations.d.ts +0 -1
  187. package/widgets/widget-map/component/widget-map.component.d.ts +3 -1
  188. package/widgets/widget-map/utils/xml-utils.class.d.ts +2 -0
  189. package/widgets/widget-vega/component/widget-vega.component.d.ts +37 -0
  190. package/widgets/widget-vega/i18n/en.translations.d.ts +10 -0
  191. package/widgets/widget-vega/i18n/fr.translations.d.ts +10 -0
  192. package/widgets/widget-vega/index.d.ts +5 -0
  193. package/widgets/widget-vega/public-api.d.ts +2 -0
  194. package/widgets/widget-vega/style/_o-widget-vega.scss +6 -0
  195. package/widgets/widget-vega/style/css.component.d.ts +5 -0
  196. package/widgets/widget-vega/widget-vega.module.d.ts +19 -0
@@ -45,28 +45,6 @@ const AdminActions = {
45
45
  fetchAssociationsFailure: createAction('[Admin] Fetch Associations failure', props())
46
46
  };
47
47
 
48
- const BASE$1 = '[Admin/User]';
49
- const BASEAPI$1 = '[Admin/User Api]';
50
- const AdminMetadataUserActions = {
51
- loadMetadata: createAction(`${BASE$1} Load Metadata`),
52
- loadMetadataSuccess: createAction(`${BASEAPI$1} Load Metadata Success`, props()),
53
- loadMetadataFailure: createAction(`${BASEAPI$1} Load Metadata Failure`, props()),
54
- selectMetadata: createAction(`${BASE$1} Select Metadata`, props()),
55
- unselectMetadata: createAction(`${BASE$1} unSelect Metadata`),
56
- createMetadata: createAction(`${BASE$1} create metadata`, props()),
57
- createMetadataSuccess: createAction(`${BASEAPI$1} create metadata Success`, props()),
58
- createMetadataFailure: createAction(`${BASEAPI$1} create metadata Failure`, props()),
59
- goToDetailsViewMetadata: createAction(`${BASE$1} go to details view metadata`, props()),
60
- goToDetailsViewMetadataSuccess: createAction(`${BASEAPI$1} go to details view metadata success`, props()),
61
- goToDetailsViewMetadataFailure: createAction(`${BASEAPI$1} go to details view metadata failure`, props()),
62
- goToEditMetadata: createAction(`${BASE$1} go to edit view`, props()),
63
- goToEditMetadataSuccess: createAction(`${BASE$1} go to edit view success`, props()),
64
- goToEditMetadataFailure: createAction(`${BASE$1} go to edit view failure`, props()),
65
- updateMetadata: createAction(`${BASE$1} update meta data`, props()),
66
- updateMetadataSuccess: createAction(`${BASEAPI$1} update meta data Success`, props()),
67
- updateMetadataFailure: createAction(`${BASEAPI$1} update meta data Failure`, props())
68
- };
69
-
70
48
  const PredicatesActions = {
71
49
  loadPredicates: createAction('[Admin/Predicates] Load Predicates'),
72
50
  loadPredicatesSuccess: createAction('[Admin/Predicates Api] Load Predicates Success', props()),
@@ -422,64 +400,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
422
400
  type: Input
423
401
  }] } });
424
402
 
425
- const adminMetadataUserFeatureKey = '@pry/admin/metadata/user';
426
- const initialAdminUserState$1 = {
427
- metadata: [],
428
- selectedMetadata: null,
429
- loading: false,
430
- editable: false,
431
- errors: null
432
- };
433
- const adminMetadataUserReducer = createReducer(initialAdminUserState$1, on(AdminMetadataUserActions.loadMetadataSuccess, (state, action) => ({
434
- ...state,
435
- metadata: [...action.metadata],
436
- loading: false
437
- })), on(AdminMetadataUserActions.loadMetadataFailure, AdminMetadataUserActions.createMetadataFailure, AdminMetadataUserActions.updateMetadataFailure, (state, action) => ({
438
- ...state,
439
- loading: false,
440
- errors: action.error
441
- })), on(AdminMetadataUserActions.selectMetadata, (state, action) => ({
442
- ...state,
443
- selectedMetadata: action.id
444
- })), on(AdminMetadataUserActions.unselectMetadata, (state) => ({
445
- ...state,
446
- selectedMetadata: null
447
- })), on(AdminMetadataUserActions.loadMetadata, AdminMetadataUserActions.updateMetadata, (state) => ({
448
- ...state,
449
- loading: true
450
- })), on(AdminMetadataUserActions.createMetadataSuccess, (state, action) => ({
451
- ...state,
452
- metadata: [...state.metadata, action.metadata],
453
- loading: false
454
- })), on(AdminMetadataUserActions.goToDetailsViewMetadata, (state, action) => ({
455
- ...state,
456
- selectedMetadata: action.id,
457
- editable: false
458
- })), on(AdminMetadataUserActions.goToEditMetadata, (state, action) => ({
459
- ...state,
460
- selectedMetadata: action.id,
461
- editable: true
462
- })), on(AdminMetadataUserActions.updateMetadataSuccess, (state, action) => ({
463
- ...state,
464
- metadata: [...state.metadata.map((old) => (old.id === action.metadata.id ? action.metadata : old))],
465
- loading: false
466
- })));
467
-
468
- const feature$7 = createFeatureSelector(adminMetadataUserFeatureKey);
469
- const metadata = createSelector(feature$7, (state) => state?.metadata);
470
- const loading$3 = createSelector(feature$7, (state) => state?.loading);
471
- const selectedMetadata = createSelector(feature$7, (state) => state?.metadata.find((x) => x.id === state.selectedMetadata) || null);
472
- const selectedMetadataId = createSelector(selectedMetadata, (metadata) => metadata?.id);
473
- const editable$1 = createSelector(feature$7, (state) => ({ value: state?.editable }));
474
- const AdminMetadataUserSelectors = {
475
- feature: feature$7,
476
- loading: loading$3,
477
- metadata,
478
- selectedMetadata,
479
- selectedMetadataId,
480
- editable: editable$1
481
- };
482
-
483
403
  class MetadataConditionComponent {
484
404
  set id(val) {
485
405
  this._id = val;
@@ -496,7 +416,7 @@ class MetadataConditionComponent {
496
416
  { operator: 'EQUALS', translation: '@pry.search.operator.equalsString' },
497
417
  { operator: 'NOT_EQUALS', translation: '@pry.search.operator.notEqualsString' }
498
418
  ]);
499
- this.metadataUsers$ = this.store.select(AdminMetadataUserSelectors.metadata);
419
+ this.metadataUsers$ = this.store.select(MetadataSelectors.userProfile);
500
420
  }
501
421
  assignObservables() {
502
422
  this.condition$ = this.store.select(AbacRulesSelectors.editAbacRuleConditionsById(this._id ?? ''));
@@ -646,7 +566,7 @@ class AdminAbacRulesEditComponent {
646
566
  this.store.dispatch(FieldActions.load());
647
567
  this.store.dispatch(PredicatesActions.loadPredicates());
648
568
  this.store.dispatch(MetadataActions.loadMetadata());
649
- this.store.dispatch(AdminMetadataUserActions.loadMetadata());
569
+ this.store.dispatch(MetadataActions.loadUserProfile());
650
570
  }
651
571
  ngOnInit() {
652
572
  this.route.params.subscribe((params) => {
@@ -841,7 +761,7 @@ class AdminAbacRulesNewComponent {
841
761
  this.store.dispatch(FieldActions.load());
842
762
  this.store.dispatch(PredicatesActions.loadPredicates());
843
763
  this.store.dispatch(MetadataActions.loadMetadata());
844
- this.store.dispatch(AdminMetadataUserActions.loadMetadata());
764
+ this.store.dispatch(MetadataActions.loadUserProfile());
845
765
  const newRule = this.abacRuleService.initializeNewAbacRule();
846
766
  this.store.dispatch(AbacRulesActions.initEditAbacRule({ rule: newRule }));
847
767
  }
@@ -1008,18 +928,18 @@ const classReducer = createReducer(initialClassState, on(AdminClassActions.selec
1008
928
  selectedAttribute: undefined
1009
929
  })));
1010
930
 
1011
- const feature$6 = createFeatureSelector(classesFeatureKey);
1012
- const loading$2 = createSelector(feature$6, (state) => state?.loading);
1013
- const selectedClass = createSelector(feature$6, (state) => state?.selectedClass);
931
+ const feature$7 = createFeatureSelector(classesFeatureKey);
932
+ const loading$3 = createSelector(feature$7, (state) => state?.loading);
933
+ const selectedClass = createSelector(feature$7, (state) => state?.selectedClass);
1014
934
  const selectedClassId = createSelector(selectedClass, (state) => state?.id);
1015
- const selectedAttribute = createSelector(feature$6, (state) => state?.selectedAttribute);
935
+ const selectedAttribute = createSelector(feature$7, (state) => state?.selectedAttribute);
1016
936
  const selectedAttributeId = createSelector(selectedAttribute, (state) => state?.id);
1017
- const interClass = createSelector(feature$6, (state) => state?.interClass);
937
+ const interClass = createSelector(feature$7, (state) => state?.interClass);
1018
938
  const interClassId = createSelector(interClass, (state) => state?.id);
1019
- const openModal = createSelector(feature$6, (state) => state.openModal);
939
+ const openModal = createSelector(feature$7, (state) => state.openModal);
1020
940
  const AdminClassSelectors = {
1021
- feature: feature$6,
1022
- loading: loading$2,
941
+ feature: feature$7,
942
+ loading: loading$3,
1023
943
  selectedClass,
1024
944
  selectedClassId,
1025
945
  selectedAttribute,
@@ -1505,7 +1425,7 @@ class AdminAttributesFormComponent {
1505
1425
  this.categories$ = combineLatest([this.store.select(CategorySelectors.categories), this.filterCategories$]).pipe(map(([categories, filter]) => categories.filter((cat) => !filter || cat.name.toLocaleLowerCase().includes(filter.toLocaleLowerCase()))));
1506
1426
  this.attrForm = this.formBuilder.group({
1507
1427
  id: [v4()],
1508
- name: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(100), noWhitespaceValidator]],
1428
+ name: ['', [Validators.required, Validators.minLength(2), Validators.maxLength(100), noWhitespaceValidator]],
1509
1429
  description: [{ value: '', disabled: true }],
1510
1430
  field: ['', [Validators.required]],
1511
1431
  category: [DEFAULT_CATEGORY_UUID],
@@ -1607,11 +1527,11 @@ class AdminAttributesFormComponent {
1607
1527
  this.closeCategory();
1608
1528
  }
1609
1529
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AdminAttributesFormComponent, deps: [{ token: i1.Store }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3$1.UntypedFormBuilder }, { token: i5.Overlay }, { token: i0.ViewContainerRef }, { token: i4.PryI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
1610
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AdminAttributesFormComponent, selector: "pry-admin-attributes-form", inputs: { selectedClass: "selectedClass", interClass: "interClass", selectedAttribute: "selectedAttribute" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<form class=\"o-form\" [formGroup]=\"attrForm\" (ngSubmit)=\"addAttribute()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_name\">{{ '@pry.admin.classes.attributes.name' | i18n }}</label>\n <input id=\"attr_name\" type=\"text\" class=\"a-form-field\" formControlName=\"name\" required />\n <label class=\"a-label a-label--help -error\" *ngIf=\"nameAlreadyExists$ | async\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n <div *ngIf=\"attrForm.get('name')?.invalid\">\n <div *ngIf=\"attrForm.get('name')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.minLength' | i18n : { len: 3 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('maxlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.maxLength' | i18n : { len: 100 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('whitespace') && !attrForm.get('name')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.noWhitespace' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"type\">{{ '@pry.admin.classes.attributes.field' | i18n }}</label>\n <div class=\"title-container\">\n <pry-select\n id=\"type\"\n class=\"a-pry-select\"\n formControlName=\"field\"\n [labelTranslate]=\"true\"\n [items]=\"fields$ | async\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n required=\"true\"\n ></pry-select>\n <ng-container *ngIf=\"selectedFieldTypeDescription$ | async as description\">\n <div class=\"info-icon description-container description\">\n <span class=\"info-text\">i</span>\n </div>\n <div class=\"description-tooltip title-tooltip\">\n <p class=\"a-p -date\">{{ description }}</p>\n </div>\n </ng-container>\n </div>\n <div *ngIf=\"attrForm.get('field')?.invalid\">\n <div *ngIf=\"attrForm.get('field')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"category\">{{ '@pry.admin.classes.attributes.category' | i18n }}</label>\n <pry-select\n id=\"category\"\n class=\"form-control\"\n formControlName=\"category\"\n [labelTranslate]=\"true\"\n [items]=\"categories$ | async\"\n (click)=\"showCategory()\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n [readonly]=\"true\"\n ></pry-select>\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n *pryAccess=\"{ module: 'admin', page: 'classes', action: 'add_attribute' }\"\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [disabled]=\"attrForm.invalid || nameAlreadyExists\"\n [innerHTML]=\"(selectedAttribute ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n</form>\n\n<ng-template #template>\n <div class=\"o-modal o-modal--selector\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.admin.classes.category.select' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"closeCategory()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <form (ngSubmit)=\"addCategory()\">\n <div class=\"m-form-label-field selector\">\n <label class=\"a-label\" for=\"name-search\">{{ '@pry.admin.classes.category.searchOrCreate' | i18n }}</label>\n <input\n type=\"text\"\n class=\"a-form-field\"\n (input)=\"search($event)\"\n [(ngModel)]=\"catToAdd.name\"\n name=\"name\"\n id=\"name-search\"\n />\n </div>\n\n <table class=\"a-table\">\n <caption>\n {{\n '@pry.admin.classes.category.name' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th scole=\"col\">{{ '@pry.admin.classes.category.name' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let cat of categories$ | async\">\n <td>\n <button type=\"button\" class=\"a-btn a-btn--ghost select-it\" (click)=\"setCategory(cat)\">\n <span class=\"u-visually-hidden\">{{ '@pry.admin.classes.category.selectIt' | i18n }}</span>\n {{ cat.name }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n <ng-container *ngIf=\"(categories$ | async)?.length === 0\">\n <p class=\"a-p a-p--create\">\n <strong>{{ catToAdd.name }} </strong>\n <span [innerHTML]=\"'@pry.admin.classes.category.add' | i18n\"></span>\n </p>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n [innerHTML]=\"'@pry.admin.classes.category.create' | i18n\"\n ></button>\n </ng-container>\n </form>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { 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: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
1530
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AdminAttributesFormComponent, selector: "pry-admin-attributes-form", inputs: { selectedClass: "selectedClass", interClass: "interClass", selectedAttribute: "selectedAttribute" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<form class=\"o-form\" [formGroup]=\"attrForm\" (ngSubmit)=\"addAttribute()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_name\">{{ '@pry.admin.classes.attributes.name' | i18n }}</label>\n <input id=\"attr_name\" type=\"text\" class=\"a-form-field\" formControlName=\"name\" required />\n <label class=\"a-label a-label--help -error\" *ngIf=\"nameAlreadyExists$ | async\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n <div *ngIf=\"attrForm.get('name')?.invalid\">\n <div *ngIf=\"attrForm.get('name')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.minLength' | i18n : { len: 2 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('maxlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.maxLength' | i18n : { len: 100 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('whitespace') && !attrForm.get('name')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.noWhitespace' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"type\">{{ '@pry.admin.classes.attributes.field' | i18n }}</label>\n <div class=\"title-container\">\n <pry-select\n id=\"type\"\n class=\"a-pry-select\"\n formControlName=\"field\"\n [labelTranslate]=\"true\"\n [items]=\"fields$ | async\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n required=\"true\"\n ></pry-select>\n <ng-container *ngIf=\"selectedFieldTypeDescription$ | async as description\">\n <div class=\"info-icon description-container description\">\n <span class=\"info-text\">i</span>\n </div>\n <div class=\"description-tooltip title-tooltip\">\n <p class=\"a-p -date\">{{ description }}</p>\n </div>\n </ng-container>\n </div>\n <div *ngIf=\"attrForm.get('field')?.invalid\">\n <div *ngIf=\"attrForm.get('field')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"category\">{{ '@pry.admin.classes.attributes.category' | i18n }}</label>\n <pry-select\n id=\"category\"\n class=\"form-control\"\n formControlName=\"category\"\n [labelTranslate]=\"true\"\n [items]=\"categories$ | async\"\n (click)=\"showCategory()\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n [readonly]=\"true\"\n ></pry-select>\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n *pryAccess=\"{ module: 'admin', page: 'classes', action: 'add_attribute' }\"\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [disabled]=\"attrForm.invalid || nameAlreadyExists\"\n [innerHTML]=\"(selectedAttribute ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n</form>\n\n<ng-template #template>\n <div class=\"o-modal o-modal--selector\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.admin.classes.category.select' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"closeCategory()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <form (ngSubmit)=\"addCategory()\">\n <div class=\"m-form-label-field selector\">\n <label class=\"a-label\" for=\"name-search\">{{ '@pry.admin.classes.category.searchOrCreate' | i18n }}</label>\n <input\n type=\"text\"\n class=\"a-form-field\"\n (input)=\"search($event)\"\n [(ngModel)]=\"catToAdd.name\"\n name=\"name\"\n id=\"name-search\"\n />\n </div>\n\n <table class=\"a-table\">\n <caption>\n {{\n '@pry.admin.classes.category.name' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th scole=\"col\">{{ '@pry.admin.classes.category.name' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let cat of categories$ | async\">\n <td>\n <button type=\"button\" class=\"a-btn a-btn--ghost select-it\" (click)=\"setCategory(cat)\">\n <span class=\"u-visually-hidden\">{{ '@pry.admin.classes.category.selectIt' | i18n }}</span>\n {{ cat.name }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n <ng-container *ngIf=\"(categories$ | async)?.length === 0\">\n <p class=\"a-p a-p--create\">\n <strong>{{ catToAdd.name }} </strong>\n <span [innerHTML]=\"'@pry.admin.classes.category.add' | i18n\"></span>\n </p>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n [innerHTML]=\"'@pry.admin.classes.category.create' | i18n\"\n ></button>\n </ng-container>\n </form>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { 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: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
1611
1531
  }
1612
1532
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AdminAttributesFormComponent, decorators: [{
1613
1533
  type: Component,
1614
- args: [{ selector: 'pry-admin-attributes-form', template: "<form class=\"o-form\" [formGroup]=\"attrForm\" (ngSubmit)=\"addAttribute()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_name\">{{ '@pry.admin.classes.attributes.name' | i18n }}</label>\n <input id=\"attr_name\" type=\"text\" class=\"a-form-field\" formControlName=\"name\" required />\n <label class=\"a-label a-label--help -error\" *ngIf=\"nameAlreadyExists$ | async\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n <div *ngIf=\"attrForm.get('name')?.invalid\">\n <div *ngIf=\"attrForm.get('name')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.minLength' | i18n : { len: 3 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('maxlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.maxLength' | i18n : { len: 100 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('whitespace') && !attrForm.get('name')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.noWhitespace' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"type\">{{ '@pry.admin.classes.attributes.field' | i18n }}</label>\n <div class=\"title-container\">\n <pry-select\n id=\"type\"\n class=\"a-pry-select\"\n formControlName=\"field\"\n [labelTranslate]=\"true\"\n [items]=\"fields$ | async\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n required=\"true\"\n ></pry-select>\n <ng-container *ngIf=\"selectedFieldTypeDescription$ | async as description\">\n <div class=\"info-icon description-container description\">\n <span class=\"info-text\">i</span>\n </div>\n <div class=\"description-tooltip title-tooltip\">\n <p class=\"a-p -date\">{{ description }}</p>\n </div>\n </ng-container>\n </div>\n <div *ngIf=\"attrForm.get('field')?.invalid\">\n <div *ngIf=\"attrForm.get('field')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"category\">{{ '@pry.admin.classes.attributes.category' | i18n }}</label>\n <pry-select\n id=\"category\"\n class=\"form-control\"\n formControlName=\"category\"\n [labelTranslate]=\"true\"\n [items]=\"categories$ | async\"\n (click)=\"showCategory()\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n [readonly]=\"true\"\n ></pry-select>\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n *pryAccess=\"{ module: 'admin', page: 'classes', action: 'add_attribute' }\"\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [disabled]=\"attrForm.invalid || nameAlreadyExists\"\n [innerHTML]=\"(selectedAttribute ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n</form>\n\n<ng-template #template>\n <div class=\"o-modal o-modal--selector\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.admin.classes.category.select' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"closeCategory()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <form (ngSubmit)=\"addCategory()\">\n <div class=\"m-form-label-field selector\">\n <label class=\"a-label\" for=\"name-search\">{{ '@pry.admin.classes.category.searchOrCreate' | i18n }}</label>\n <input\n type=\"text\"\n class=\"a-form-field\"\n (input)=\"search($event)\"\n [(ngModel)]=\"catToAdd.name\"\n name=\"name\"\n id=\"name-search\"\n />\n </div>\n\n <table class=\"a-table\">\n <caption>\n {{\n '@pry.admin.classes.category.name' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th scole=\"col\">{{ '@pry.admin.classes.category.name' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let cat of categories$ | async\">\n <td>\n <button type=\"button\" class=\"a-btn a-btn--ghost select-it\" (click)=\"setCategory(cat)\">\n <span class=\"u-visually-hidden\">{{ '@pry.admin.classes.category.selectIt' | i18n }}</span>\n {{ cat.name }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n <ng-container *ngIf=\"(categories$ | async)?.length === 0\">\n <p class=\"a-p a-p--create\">\n <strong>{{ catToAdd.name }} </strong>\n <span [innerHTML]=\"'@pry.admin.classes.category.add' | i18n\"></span>\n </p>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n [innerHTML]=\"'@pry.admin.classes.category.create' | i18n\"\n ></button>\n </ng-container>\n </form>\n </div>\n</ng-template>\n" }]
1534
+ args: [{ selector: 'pry-admin-attributes-form', template: "<form class=\"o-form\" [formGroup]=\"attrForm\" (ngSubmit)=\"addAttribute()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_name\">{{ '@pry.admin.classes.attributes.name' | i18n }}</label>\n <input id=\"attr_name\" type=\"text\" class=\"a-form-field\" formControlName=\"name\" required />\n <label class=\"a-label a-label--help -error\" *ngIf=\"nameAlreadyExists$ | async\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n <div *ngIf=\"attrForm.get('name')?.invalid\">\n <div *ngIf=\"attrForm.get('name')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.minLength' | i18n : { len: 2 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('maxlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.maxLength' | i18n : { len: 100 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('whitespace') && !attrForm.get('name')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.noWhitespace' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"type\">{{ '@pry.admin.classes.attributes.field' | i18n }}</label>\n <div class=\"title-container\">\n <pry-select\n id=\"type\"\n class=\"a-pry-select\"\n formControlName=\"field\"\n [labelTranslate]=\"true\"\n [items]=\"fields$ | async\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n required=\"true\"\n ></pry-select>\n <ng-container *ngIf=\"selectedFieldTypeDescription$ | async as description\">\n <div class=\"info-icon description-container description\">\n <span class=\"info-text\">i</span>\n </div>\n <div class=\"description-tooltip title-tooltip\">\n <p class=\"a-p -date\">{{ description }}</p>\n </div>\n </ng-container>\n </div>\n <div *ngIf=\"attrForm.get('field')?.invalid\">\n <div *ngIf=\"attrForm.get('field')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"category\">{{ '@pry.admin.classes.attributes.category' | i18n }}</label>\n <pry-select\n id=\"category\"\n class=\"form-control\"\n formControlName=\"category\"\n [labelTranslate]=\"true\"\n [items]=\"categories$ | async\"\n (click)=\"showCategory()\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n [readonly]=\"true\"\n ></pry-select>\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n *pryAccess=\"{ module: 'admin', page: 'classes', action: 'add_attribute' }\"\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [disabled]=\"attrForm.invalid || nameAlreadyExists\"\n [innerHTML]=\"(selectedAttribute ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n</form>\n\n<ng-template #template>\n <div class=\"o-modal o-modal--selector\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.admin.classes.category.select' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"closeCategory()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <form (ngSubmit)=\"addCategory()\">\n <div class=\"m-form-label-field selector\">\n <label class=\"a-label\" for=\"name-search\">{{ '@pry.admin.classes.category.searchOrCreate' | i18n }}</label>\n <input\n type=\"text\"\n class=\"a-form-field\"\n (input)=\"search($event)\"\n [(ngModel)]=\"catToAdd.name\"\n name=\"name\"\n id=\"name-search\"\n />\n </div>\n\n <table class=\"a-table\">\n <caption>\n {{\n '@pry.admin.classes.category.name' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th scole=\"col\">{{ '@pry.admin.classes.category.name' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let cat of categories$ | async\">\n <td>\n <button type=\"button\" class=\"a-btn a-btn--ghost select-it\" (click)=\"setCategory(cat)\">\n <span class=\"u-visually-hidden\">{{ '@pry.admin.classes.category.selectIt' | i18n }}</span>\n {{ cat.name }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n <ng-container *ngIf=\"(categories$ | async)?.length === 0\">\n <p class=\"a-p a-p--create\">\n <strong>{{ catToAdd.name }} </strong>\n <span [innerHTML]=\"'@pry.admin.classes.category.add' | i18n\"></span>\n </p>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n [innerHTML]=\"'@pry.admin.classes.category.create' | i18n\"\n ></button>\n </ng-container>\n </form>\n </div>\n</ng-template>\n" }]
1615
1535
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3$1.UntypedFormBuilder }, { type: i5.Overlay }, { type: i0.ViewContainerRef }, { type: i4.PryI18nService }]; }, propDecorators: { selectedClass: [{
1616
1536
  type: Input
1617
1537
  }], interClass: [{
@@ -2133,15 +2053,15 @@ const environmentReducer = createReducer(initialEnvironmentState, on(Environment
2133
2053
  loading: false
2134
2054
  })));
2135
2055
 
2136
- const feature$5 = createFeatureSelector(environmentFeatureKey);
2137
- const environments = createSelector(feature$5, (state) => state?.environments);
2138
- const loading$1 = createSelector(feature$5, (state) => state?.loading);
2139
- const currentEnv = createSelector(feature$5, (state) => state?.currentEnv);
2056
+ const feature$6 = createFeatureSelector(environmentFeatureKey);
2057
+ const environments = createSelector(feature$6, (state) => state?.environments);
2058
+ const loading$2 = createSelector(feature$6, (state) => state?.loading);
2059
+ const currentEnv = createSelector(feature$6, (state) => state?.currentEnv);
2140
2060
  const currentEnvName = createSelector(currentEnv, (env) => env?.name);
2141
2061
  const EnvironmentSelectors = {
2142
- feature: feature$5,
2062
+ feature: feature$6,
2143
2063
  environments,
2144
- loading: loading$1,
2064
+ loading: loading$2,
2145
2065
  currentEnv,
2146
2066
  currentEnvName
2147
2067
  };
@@ -2457,13 +2377,13 @@ const fieldReducer = createReducer(initialFieldState, on(FieldsActions.selectFie
2457
2377
  selectedField: undefined
2458
2378
  })));
2459
2379
 
2460
- const feature$4 = createFeatureSelector(fieldsFeatureKey);
2461
- const loading = createSelector(feature$4, (state) => state?.loading);
2462
- const selectedField = createSelector(feature$4, (state) => state?.selectedField);
2380
+ const feature$5 = createFeatureSelector(fieldsFeatureKey);
2381
+ const loading$1 = createSelector(feature$5, (state) => state?.loading);
2382
+ const selectedField = createSelector(feature$5, (state) => state?.selectedField);
2463
2383
  const selectedFieldId = createSelector(selectedField, (state) => state?.id);
2464
2384
  const FieldsSelectors = {
2465
- feature: feature$4,
2466
- loading,
2385
+ feature: feature$5,
2386
+ loading: loading$1,
2467
2387
  selectedField,
2468
2388
  selectedFieldId
2469
2389
  };
@@ -2564,15 +2484,15 @@ const adminReducer = createReducer(initialAdminState, on(AdminActions.highlightM
2564
2484
  selectedAssociation: action.association
2565
2485
  })));
2566
2486
 
2567
- const feature$3 = createFeatureSelector(adminFeatureKey);
2568
- const highlightedMenu = createSelector(feature$3, (state) => state?.highlightedMenu);
2569
- const menuOpen = createSelector(feature$3, (state) => state.menuOpen);
2570
- const menus = createSelector(feature$3, (state) => state?.menus);
2571
- const actions = createSelector(feature$3, (state) => state.actions);
2572
- const subActions = createSelector(feature$3, (state) => state.subActions);
2573
- const panelOpen = createSelector(feature$3, (state) => state.panelOpen);
2574
- const componentType = createSelector(feature$3, (state) => state?.componentType);
2575
- const subMenus = createSelector(feature$3, (state) => state?.menus.reduce((p, c) => {
2487
+ const feature$4 = createFeatureSelector(adminFeatureKey);
2488
+ const highlightedMenu = createSelector(feature$4, (state) => state?.highlightedMenu);
2489
+ const menuOpen = createSelector(feature$4, (state) => state.menuOpen);
2490
+ const menus = createSelector(feature$4, (state) => state?.menus);
2491
+ const actions = createSelector(feature$4, (state) => state.actions);
2492
+ const subActions = createSelector(feature$4, (state) => state.subActions);
2493
+ const panelOpen = createSelector(feature$4, (state) => state.panelOpen);
2494
+ const componentType = createSelector(feature$4, (state) => state?.componentType);
2495
+ const subMenus = createSelector(feature$4, (state) => state?.menus.reduce((p, c) => {
2576
2496
  const key = c.subMenu ?? 'none';
2577
2497
  let menu = p.find((menu) => menu.name === key);
2578
2498
  if (!menu) {
@@ -2582,9 +2502,9 @@ const subMenus = createSelector(feature$3, (state) => state?.menus.reduce((p, c)
2582
2502
  menu.subMenus.push(c);
2583
2503
  return p;
2584
2504
  }, []));
2585
- const selectedAssociation = createSelector(feature$3, (state) => state?.selectedAssociation);
2505
+ const selectedAssociation = createSelector(feature$4, (state) => state?.selectedAssociation);
2586
2506
  const AdminSelectors = {
2587
- feature: feature$3,
2507
+ feature: feature$4,
2588
2508
  highlightedMenu,
2589
2509
  menuOpen,
2590
2510
  menus,
@@ -2843,11 +2763,11 @@ class AdminSelectDatasetComponent extends SubscriptionnerDirective {
2843
2763
  }));
2844
2764
  }
2845
2765
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AdminSelectDatasetComponent, deps: [{ token: i1.Store }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
2846
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AdminSelectDatasetComponent, selector: "pry-admin-select-dataset", usesInheritance: true, ngImport: i0, template: "<div\n *ngIf=\"selectedDataset$ | async as dataset\"\n [id]=\"'panel-dataset-' + dataset.id\"\n [attr.aria-labelledby]=\"'button-dataset-' + dataset.id\"\n class=\"o-panel\"\n>\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n\n <h3 class=\"a-h3\">\n {{ '@pry.admin.metadata.details' | i18n }}\n </h3>\n </div>\n\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"datasetMetadata\" name=\"metadata.title\"></pry-tab>\n <pry-tab [templateRef]=\"datasetAssociations\" name=\"classes.associations\"></pry-tab>\n </pry-tab-group>\n\n <ng-template #datasetMetadata>\n <pry-metadata-editor\n [targetId]=\"(selectedDataset$ | async)?.id ?? ''\"\n [editable]=\"(editable$ | async) ?? false\"\n [metadata]=\"(datasetMetadata$ | async) ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addDatasetMetadata($event)\"\n ></pry-metadata-editor>\n </ng-template>\n\n <ng-template #datasetAssociations>\n <div *ngIf=\"associations$ | async as associations\" class=\"o-tabs__panels__item__content\">\n <h4 class=\"a-h4\">{{ '@pry.admin.classes.associations' | i18n }}</h4>\n <pry-association [associations]=\"associations\"></pry-association>\n </div>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TabGroupComponent, selector: "pry-tab-group", inputs: ["translationStringBase"] }, { kind: "component", type: i4.TabComponent, selector: "pry-tab", inputs: ["name", "templateRef", "index"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5$3.PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: ["targetId", "editable", "metadata", "initialMetadataSelection"], outputs: ["addMeta", "removeMeta"] }, { kind: "component", type: PryAssociationComponent, selector: "pry-association", inputs: ["associations"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
2766
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AdminSelectDatasetComponent, selector: "pry-admin-select-dataset", usesInheritance: true, ngImport: i0, template: "<div\n *ngIf=\"selectedDataset$ | async as dataset\"\n [id]=\"'panel-dataset-' + dataset.id\"\n [attr.aria-labelledby]=\"'button-dataset-' + dataset.id\"\n class=\"o-panel\"\n>\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n\n <h3 class=\"a-h3\">\n {{ '@pry.admin.metadata.details' | i18n }}\n </h3>\n </div>\n\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"datasetMetadata\" name=\"metadata.title\"></pry-tab>\n <pry-tab [templateRef]=\"datasetAssociations\" name=\"classes.associations\"></pry-tab>\n </pry-tab-group>\n\n <ng-template #datasetMetadata>\n <pry-metadata-editor\n [targetId]=\"(selectedDataset$ | async)?.id ?? ''\"\n [isModification]=\"(editable$ | async) ?? false\"\n [metadata]=\"(datasetMetadata$ | async) ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addDatasetMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </ng-template>\n\n <ng-template #datasetAssociations>\n <div *ngIf=\"associations$ | async as associations\" class=\"o-tabs__panels__item__content\">\n <h4 class=\"a-h4\">{{ '@pry.admin.classes.associations' | i18n }}</h4>\n <pry-association [associations]=\"associations\"></pry-association>\n </div>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TabGroupComponent, selector: "pry-tab-group", inputs: ["translationStringBase"] }, { kind: "component", type: i4.TabComponent, selector: "pry-tab", inputs: ["name", "templateRef", "index"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5$3.PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: ["isModification", "targetId", "type", "metadata"], outputs: ["addMeta", "removeMeta"] }, { kind: "component", type: PryAssociationComponent, selector: "pry-association", inputs: ["associations"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
2847
2767
  }
2848
2768
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AdminSelectDatasetComponent, decorators: [{
2849
2769
  type: Component,
2850
- args: [{ selector: 'pry-admin-select-dataset', template: "<div\n *ngIf=\"selectedDataset$ | async as dataset\"\n [id]=\"'panel-dataset-' + dataset.id\"\n [attr.aria-labelledby]=\"'button-dataset-' + dataset.id\"\n class=\"o-panel\"\n>\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n\n <h3 class=\"a-h3\">\n {{ '@pry.admin.metadata.details' | i18n }}\n </h3>\n </div>\n\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"datasetMetadata\" name=\"metadata.title\"></pry-tab>\n <pry-tab [templateRef]=\"datasetAssociations\" name=\"classes.associations\"></pry-tab>\n </pry-tab-group>\n\n <ng-template #datasetMetadata>\n <pry-metadata-editor\n [targetId]=\"(selectedDataset$ | async)?.id ?? ''\"\n [editable]=\"(editable$ | async) ?? false\"\n [metadata]=\"(datasetMetadata$ | async) ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addDatasetMetadata($event)\"\n ></pry-metadata-editor>\n </ng-template>\n\n <ng-template #datasetAssociations>\n <div *ngIf=\"associations$ | async as associations\" class=\"o-tabs__panels__item__content\">\n <h4 class=\"a-h4\">{{ '@pry.admin.classes.associations' | i18n }}</h4>\n <pry-association [associations]=\"associations\"></pry-association>\n </div>\n </ng-template>\n</div>\n" }]
2770
+ args: [{ selector: 'pry-admin-select-dataset', template: "<div\n *ngIf=\"selectedDataset$ | async as dataset\"\n [id]=\"'panel-dataset-' + dataset.id\"\n [attr.aria-labelledby]=\"'button-dataset-' + dataset.id\"\n class=\"o-panel\"\n>\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n\n <h3 class=\"a-h3\">\n {{ '@pry.admin.metadata.details' | i18n }}\n </h3>\n </div>\n\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"datasetMetadata\" name=\"metadata.title\"></pry-tab>\n <pry-tab [templateRef]=\"datasetAssociations\" name=\"classes.associations\"></pry-tab>\n </pry-tab-group>\n\n <ng-template #datasetMetadata>\n <pry-metadata-editor\n [targetId]=\"(selectedDataset$ | async)?.id ?? ''\"\n [isModification]=\"(editable$ | async) ?? false\"\n [metadata]=\"(datasetMetadata$ | async) ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addDatasetMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </ng-template>\n\n <ng-template #datasetAssociations>\n <div *ngIf=\"associations$ | async as associations\" class=\"o-tabs__panels__item__content\">\n <h4 class=\"a-h4\">{{ '@pry.admin.classes.associations' | i18n }}</h4>\n <pry-association [associations]=\"associations\"></pry-association>\n </div>\n </ng-template>\n</div>\n" }]
2851
2771
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Router }, { type: i2.ActivatedRoute }]; } });
2852
2772
 
2853
2773
  class AdminEnvironmentSelectComponent {
@@ -3054,12 +2974,12 @@ const adminMetadataRulesReducer = createReducer(initialMetadataRulesState, on(Ad
3054
2974
  error: action.error
3055
2975
  })));
3056
2976
 
3057
- const feature$2 = createFeatureSelector(adminMetadataRulesFeatureKey);
3058
- const metadataRulesList = createSelector(feature$2, (state) => state?.list);
3059
- const metadataRulesSelectedId = createSelector(feature$2, (state) => state?.metadataRulesSelected?.id);
3060
- const metadataRulesSelected = createSelector(feature$2, (state) => state?.metadataRulesSelected);
2977
+ const feature$3 = createFeatureSelector(adminMetadataRulesFeatureKey);
2978
+ const metadataRulesList = createSelector(feature$3, (state) => state?.list);
2979
+ const metadataRulesSelectedId = createSelector(feature$3, (state) => state?.metadataRulesSelected?.id);
2980
+ const metadataRulesSelected = createSelector(feature$3, (state) => state?.metadataRulesSelected);
3061
2981
  const MetadataRulesSelectors = {
3062
- feature: feature$2,
2982
+ feature: feature$3,
3063
2983
  metadataRulesList,
3064
2984
  metadataRulesSelected,
3065
2985
  metadataRulesSelectedId
@@ -3138,6 +3058,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
3138
3058
  args: [{ selector: 'pry-admin-select-metadata-rules', template: "<div\n *ngIf=\"metadataRulesSelected$ | async as metadataRules\"\n [id]=\"'panel-meta-rule-' + metadataRules.id\"\n [attr.aria-labelledby]=\"'button-meta-rule-' + metadataRules.id\"\n class=\"o-panel\"\n>\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n\n <h3 class=\"a-h3\">\n {{ '@pry.admin.metadata.details' | i18n }}\n </h3>\n </div>\n\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"metadataRuleDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n\n <ng-template #metadataRuleDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.label' | i18n }} :\n <strong>{{ metadataRules.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.metadata-item.name' | i18n }} :\n <strong>{{ metadataRules.metadata.name }}</strong>\n </p>\n <p class=\"a-p\" *ngIf=\"metadataRules.metadata.description\">\n {{ '@pry.admin.metadata-rules.metadata-item.description' | i18n }} :\n <strong>{{ metadataRules.metadata.description }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.metadata-item.type' | i18n }} :\n <strong>{{ metadataRules.metadata.type }}</strong>\n </p>\n <ng-container *ngIf=\"metadataRules.metadata.allowedValues\">\n <p class=\"a-p\" *ngFor=\"let item of metadataRules.metadata.allowedValues\">{{ item }}</p>\n </ng-container>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.metadata-user.name' | i18n }} :\n <strong>{{ metadataRules.userProfile.name }}</strong>\n </p>\n <p class=\"a-p\" *ngIf=\"metadataRules.userProfile.description\">\n {{ '@pry.admin.metadata-rules.metadata-user.description' | i18n }} :\n <strong>{{ metadataRules.userProfile.description }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.metadata-user.type' | i18n }} :\n <strong>{{ metadataRules.userProfile.type }}</strong>\n </p>\n <ng-container *ngIf=\"metadataRules.userProfile.allowedValues\">\n <p class=\"a-p\" *ngFor=\"let item of metadataRules.userProfile.allowedValues\">{{ item }}</p>\n </ng-container>\n </ng-template>\n</div>\n" }]
3139
3059
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Router }, { type: i2.ActivatedRoute }]; } });
3140
3060
 
3061
+ const BASE$1 = '[Admin/User]';
3062
+ const BASEAPI$1 = '[Admin/User Api]';
3063
+ const AdminMetadataUserActions = {
3064
+ selectMetadata: createAction(`${BASE$1} Select Metadata`, props()),
3065
+ unselectMetadata: createAction(`${BASE$1} unSelect Metadata`),
3066
+ createMetadata: createAction(`${BASE$1} create metadata`, props()),
3067
+ createMetadataSuccess: createAction(`${BASEAPI$1} create metadata Success`, props()),
3068
+ createMetadataFailure: createAction(`${BASEAPI$1} create metadata Failure`, props()),
3069
+ goToDetailsViewMetadata: createAction(`${BASE$1} go to details view metadata`, props()),
3070
+ goToDetailsViewMetadataSuccess: createAction(`${BASEAPI$1} go to details view metadata success`, props()),
3071
+ goToDetailsViewMetadataFailure: createAction(`${BASEAPI$1} go to details view metadata failure`, props()),
3072
+ goToEditMetadata: createAction(`${BASE$1} go to edit view`, props()),
3073
+ goToEditMetadataSuccess: createAction(`${BASE$1} go to edit view success`, props()),
3074
+ goToEditMetadataFailure: createAction(`${BASE$1} go to edit view failure`, props()),
3075
+ updateMetadata: createAction(`${BASE$1} update meta data`, props()),
3076
+ updateMetadataSuccess: createAction(`${BASEAPI$1} update meta data Success`, props()),
3077
+ updateMetadataFailure: createAction(`${BASEAPI$1} update meta data Failure`, props())
3078
+ };
3079
+
3080
+ const adminMetadataUserFeatureKey = '@pry/admin/metadata/user';
3081
+ const initialAdminUserState$1 = {
3082
+ loading: false,
3083
+ editable: false,
3084
+ errors: null,
3085
+ selectedMetadataId: null
3086
+ };
3087
+ const adminMetadataUserReducer = createReducer(initialAdminUserState$1, on(AdminMetadataUserActions.selectMetadata, (state, action) => ({
3088
+ ...state,
3089
+ selectedMetadataId: action.id
3090
+ })), on(AdminMetadataUserActions.unselectMetadata, (state) => ({
3091
+ ...state,
3092
+ selectedMetadataId: null
3093
+ })), on(AdminMetadataUserActions.goToDetailsViewMetadata, (state, action) => ({
3094
+ ...state,
3095
+ selectedMetadataId: action.id,
3096
+ editable: false
3097
+ })), on(AdminMetadataUserActions.goToEditMetadata, (state, action) => ({
3098
+ ...state,
3099
+ selectedMetadataId: action.id,
3100
+ editable: true
3101
+ })));
3102
+
3103
+ const feature$2 = createFeatureSelector(adminMetadataUserFeatureKey);
3104
+ const loading = createSelector(feature$2, (state) => state?.loading);
3105
+ const editable$1 = createSelector(feature$2, (state) => ({ value: state?.editable }));
3106
+ const selectedMetadataId = createSelector(feature$2, (state) => state?.selectedMetadataId);
3107
+ const AdminMetadataUserSelectors = {
3108
+ feature: feature$2,
3109
+ loading,
3110
+ selectedMetadataId,
3111
+ editable: editable$1
3112
+ };
3113
+
3141
3114
  class AdminUserSelectMetadataComponent {
3142
3115
  static { this.id = 'AdminUserSelectMetadataComponent'; }
3143
3116
  constructor(store, router, route) {
@@ -3146,7 +3119,10 @@ class AdminUserSelectMetadataComponent {
3146
3119
  this.route = route;
3147
3120
  this.sub = new Subscription();
3148
3121
  this.currentTypeTranslation = '';
3149
- this.metadata$ = this.store.select(AdminMetadataUserSelectors.selectedMetadata);
3122
+ this.metadata$ = combineLatest([
3123
+ this.store.select(AdminMetadataUserSelectors.selectedMetadataId),
3124
+ this.store.select(MetadataSelectors.userProfile)
3125
+ ]).pipe(map(([id, metas]) => metas.find((meta) => meta.id === id)));
3150
3126
  this.sub.add(this.metadata$.subscribe((meta) => {
3151
3127
  const type = META_OPTIONS.find((el) => el.varType === meta?.type);
3152
3128
  this.currentTypeTranslation = type ? type.translation : META_OPTIONS[0].translation;
@@ -3380,22 +3356,12 @@ const AdminUserActions = {
3380
3356
  loadUsersFailure: createAction(`${BASEAPI} Load Users Failure`, props()),
3381
3357
  selectUser: createAction(`${BASE} Select User`, props()),
3382
3358
  unselectUser: createAction(`${BASE} unSelect User`),
3383
- isEditable: createAction(`${BASE} Is editable`, props()),
3384
- loadMetadataUser: createAction(`${BASE} Load Metadata of selected Users`, props()),
3385
- loadMetadataUserSuccess: createAction(`${BASEAPI} Load Metadata of selected Users Success`, props()),
3386
- loadMetadataUserFailure: createAction(`${BASEAPI} Load Metadata of selected Users Failure`, props()),
3387
- addMetadataUser: createAction(`${BASE} Add Metadata of selected Users`, props()),
3388
- addMetadataUserSuccess: createAction(`${BASEAPI} Add Metadata of selected Users Success`, props()),
3389
- addMetadataUserFailure: createAction(`${BASEAPI} Add Metadata of selected Users Failure`, props()),
3390
- deleteMetadataUser: createAction(`${BASE} Delete Metadata of selected Users`, props()),
3391
- deleteMetadataUserSuccess: createAction(`${BASEAPI} Delete Metadata of selected Users Success`, props()),
3392
- deleteMetadataUserFailure: createAction(`${BASEAPI} Delete Metadata of selected Users Failure`, props())
3359
+ isEditable: createAction(`${BASE} Is editable`, props())
3393
3360
  };
3394
3361
 
3395
3362
  const adminUserFeatureKey = '@pry/admin/user';
3396
3363
  const initialAdminUserState = {
3397
3364
  users: [],
3398
- selectedMetadataUser: [],
3399
3365
  editable: false
3400
3366
  };
3401
3367
  const adminUserReducer = createReducer(initialAdminUserState, on(AdminUserActions.loadUsersSuccess, (state, action) => ({
@@ -3407,11 +3373,7 @@ const adminUserReducer = createReducer(initialAdminUserState, on(AdminUserAction
3407
3373
  editable: false
3408
3374
  })), on(AdminUserActions.unselectUser, (state, action) => ({
3409
3375
  ...state,
3410
- selectedUser: undefined,
3411
- selectedMetadataUser: []
3412
- })), on(AdminUserActions.loadMetadataUserSuccess, (state, action) => ({
3413
- ...state,
3414
- selectedMetadataUser: action.metadata
3376
+ selectedUser: undefined
3415
3377
  })), on(AdminUserActions.isEditable, (state, action) => ({
3416
3378
  ...state,
3417
3379
  editable: action.editable
@@ -3420,13 +3382,11 @@ const adminUserReducer = createReducer(initialAdminUserState, on(AdminUserAction
3420
3382
  const feature$1 = createFeatureSelector(adminUserFeatureKey);
3421
3383
  const users = createSelector(feature$1, (state) => state?.users);
3422
3384
  const selectedUser = createSelector(feature$1, (state) => state?.selectedUser);
3423
- const selectedMetadataUser = createSelector(feature$1, (state) => state?.selectedMetadataUser);
3424
3385
  const editable = createSelector(feature$1, (state) => state.editable);
3425
3386
  const AdminUserSelectors = {
3426
3387
  feature: feature$1,
3427
3388
  users,
3428
3389
  selectedUser,
3429
- selectedMetadataUser,
3430
3390
  editable
3431
3391
  };
3432
3392
 
@@ -3441,10 +3401,10 @@ class AdminUserSelectComponent {
3441
3401
  this.editable = false;
3442
3402
  this.isSubmitted = false;
3443
3403
  this.profil = false;
3444
- this.store.dispatch(AdminMetadataUserActions.loadMetadata());
3404
+ this.store.dispatch(MetadataActions.loadUserProfile());
3445
3405
  this.selectedUser$ = this.store.select(AdminUserSelectors.selectedUser);
3446
- this.userMetadata$ = this.store.select(AdminUserSelectors.selectedMetadataUser);
3447
- this.metadata$ = this.store.select(AdminMetadataUserSelectors.metadata);
3406
+ this.userMetadata$ = this.store.select(MetadataSelectors.selectedUserProfile);
3407
+ this.metadata$ = this.store.select(MetadataSelectors.userProfile);
3448
3408
  this.editable$ = this.store.select(AdminUserSelectors.editable);
3449
3409
  this.compId = nextCompId++;
3450
3410
  }
@@ -3464,24 +3424,24 @@ class AdminUserSelectComponent {
3464
3424
  this.store.dispatch(AdminUserActions.unselectUser());
3465
3425
  }
3466
3426
  addMetadataUser(metadata) {
3467
- this.store.dispatch(AdminUserActions.addMetadataUser({
3427
+ this.store.dispatch(MetadataActions.addMetadataUser({
3468
3428
  userId: metadata.id,
3469
3429
  metaId: metadata.metadataId,
3470
3430
  value: metadata.value
3471
3431
  }));
3472
3432
  }
3473
3433
  removeMetadata(metadata) {
3474
- this.store.dispatch(AdminUserActions.deleteMetadataUser({ userId: this.userId, metadataId: metadata.metadataId }));
3434
+ this.store.dispatch(MetadataActions.deleteMetadataUser({ userId: this.userId, metadataId: metadata.metadataId }));
3475
3435
  }
3476
3436
  switch(number) {
3477
3437
  this.tab = number;
3478
3438
  }
3479
3439
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AdminUserSelectComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
3480
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AdminUserSelectComponent, selector: "pry-admin-user-select", inputs: { profil: "profil" }, ngImport: i0, template: "<div\n *ngIf=\"selectedUser$ | async as user\"\n [id]=\"'panel-user-' + user.id\"\n [attr.aria-labelledby]=\"'button-user-' + user.id\"\n class=\"o-panel\"\n>\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n\n <h3 [id]=\"'tab-title-' + compId\" class=\"a-h3\">\n {{ '@pry.admin.userInfo.info' | i18n }}\n </h3>\n </div>\n\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"userProfile\" name=\"userInfo.profile\"></pry-tab>\n <pry-tab [templateRef]=\"userDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n\n <ng-template #userProfile>\n <pry-metadata-editor\n [targetId]=\"(selectedUser$ | async)?.id ?? ''\"\n [editable]=\"(editable$ | async) ?? false\"\n [metadata]=\"(userMetadata$ | async) ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadataUser($event)\"\n ></pry-metadata-editor>\n </ng-template>\n\n <ng-template #userDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.userInfo.name' | i18n }} :\n <strong>{{ user?.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.userInfo.familyName' | i18n }} :\n <strong>{{ user.familyName }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.userInfo.email' | i18n }} :\n <strong>{{ user.email }}</strong>\n </p>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TabGroupComponent, selector: "pry-tab-group", inputs: ["translationStringBase"] }, { kind: "component", type: i4.TabComponent, selector: "pry-tab", inputs: ["name", "templateRef", "index"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5$3.PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: ["targetId", "editable", "metadata", "initialMetadataSelection"], outputs: ["addMeta", "removeMeta"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
3440
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AdminUserSelectComponent, selector: "pry-admin-user-select", inputs: { profil: "profil" }, ngImport: i0, template: "<div\n *ngIf=\"selectedUser$ | async as user\"\n [id]=\"'panel-user-' + user.id\"\n [attr.aria-labelledby]=\"'button-user-' + user.id\"\n class=\"o-panel\"\n>\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n\n <h3 [id]=\"'tab-title-' + compId\" class=\"a-h3\">\n {{ '@pry.admin.userInfo.info' | i18n }}\n </h3>\n </div>\n\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"userProfile\" name=\"userInfo.profile\"></pry-tab>\n <pry-tab [templateRef]=\"userDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n\n <ng-template #userProfile>\n <pry-metadata-editor\n [targetId]=\"(selectedUser$ | async)?.id ?? ''\"\n [isModification]=\"(editable$ | async) ?? false\"\n [metadata]=\"(userMetadata$ | async) ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadataUser($event)\"\n [type]=\"'user'\"\n ></pry-metadata-editor>\n </ng-template>\n\n <ng-template #userDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.userInfo.name' | i18n }} :\n <strong>{{ user?.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.userInfo.familyName' | i18n }} :\n <strong>{{ user.familyName }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.userInfo.email' | i18n }} :\n <strong>{{ user.email }}</strong>\n </p>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TabGroupComponent, selector: "pry-tab-group", inputs: ["translationStringBase"] }, { kind: "component", type: i4.TabComponent, selector: "pry-tab", inputs: ["name", "templateRef", "index"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5$3.PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: ["isModification", "targetId", "type", "metadata"], outputs: ["addMeta", "removeMeta"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
3481
3441
  }
3482
3442
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AdminUserSelectComponent, decorators: [{
3483
3443
  type: Component,
3484
- args: [{ selector: 'pry-admin-user-select', template: "<div\n *ngIf=\"selectedUser$ | async as user\"\n [id]=\"'panel-user-' + user.id\"\n [attr.aria-labelledby]=\"'button-user-' + user.id\"\n class=\"o-panel\"\n>\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n\n <h3 [id]=\"'tab-title-' + compId\" class=\"a-h3\">\n {{ '@pry.admin.userInfo.info' | i18n }}\n </h3>\n </div>\n\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"userProfile\" name=\"userInfo.profile\"></pry-tab>\n <pry-tab [templateRef]=\"userDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n\n <ng-template #userProfile>\n <pry-metadata-editor\n [targetId]=\"(selectedUser$ | async)?.id ?? ''\"\n [editable]=\"(editable$ | async) ?? false\"\n [metadata]=\"(userMetadata$ | async) ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadataUser($event)\"\n ></pry-metadata-editor>\n </ng-template>\n\n <ng-template #userDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.userInfo.name' | i18n }} :\n <strong>{{ user?.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.userInfo.familyName' | i18n }} :\n <strong>{{ user.familyName }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.userInfo.email' | i18n }} :\n <strong>{{ user.email }}</strong>\n </p>\n </ng-template>\n</div>\n" }]
3444
+ args: [{ selector: 'pry-admin-user-select', template: "<div\n *ngIf=\"selectedUser$ | async as user\"\n [id]=\"'panel-user-' + user.id\"\n [attr.aria-labelledby]=\"'button-user-' + user.id\"\n class=\"o-panel\"\n>\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n\n <h3 [id]=\"'tab-title-' + compId\" class=\"a-h3\">\n {{ '@pry.admin.userInfo.info' | i18n }}\n </h3>\n </div>\n\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"userProfile\" name=\"userInfo.profile\"></pry-tab>\n <pry-tab [templateRef]=\"userDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n\n <ng-template #userProfile>\n <pry-metadata-editor\n [targetId]=\"(selectedUser$ | async)?.id ?? ''\"\n [isModification]=\"(editable$ | async) ?? false\"\n [metadata]=\"(userMetadata$ | async) ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadataUser($event)\"\n [type]=\"'user'\"\n ></pry-metadata-editor>\n </ng-template>\n\n <ng-template #userDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.userInfo.name' | i18n }} :\n <strong>{{ user?.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.userInfo.familyName' | i18n }} :\n <strong>{{ user.familyName }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.userInfo.email' | i18n }} :\n <strong>{{ user.email }}</strong>\n </p>\n </ng-template>\n</div>\n" }]
3485
3445
  }], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { profil: [{
3486
3446
  type: Input
3487
3447
  }] } });
@@ -3548,9 +3508,11 @@ const TEMPLATE_COMPONENTS = [
3548
3508
  AdminSelectDatasetComponent
3549
3509
  ];
3550
3510
  class AdminLayoutComponent extends BaseLayoutComponent {
3551
- constructor(store, router) {
3511
+ constructor(store, router, route) {
3552
3512
  super(store, router);
3513
+ this.route = route;
3553
3514
  this.sub = new Subscription();
3515
+ this.limit$ = new BehaviorSubject(undefined);
3554
3516
  this.baseToolboxTranslation = '@pry.admin.';
3555
3517
  this.actions$ = this.store.select(AdminSelectors.actions);
3556
3518
  this.subActions$ = this.store.select(AdminSelectors.subActions);
@@ -3558,6 +3520,7 @@ class AdminLayoutComponent extends BaseLayoutComponent {
3558
3520
  this.sub.add(this.store.select(AdminSelectors.componentType).subscribe((ct) => {
3559
3521
  this.store.dispatch(AdminActions.togglePanel({ panelOpen: !!ct }));
3560
3522
  }));
3523
+ this.subscriptions.add(this.route.data.subscribe((data) => this.limit$?.next(data['limitMenu'])));
3561
3524
  }
3562
3525
  init() {
3563
3526
  this.menus$ = this.store.select(AdminSelectors.menus);
@@ -3581,13 +3544,13 @@ class AdminLayoutComponent extends BaseLayoutComponent {
3581
3544
  ngOnDestroy() {
3582
3545
  this.sub.unsubscribe();
3583
3546
  }
3584
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AdminLayoutComponent, deps: [{ token: i1.Store }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
3585
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AdminLayoutComponent, selector: "pry-admin-layout", viewQueries: [{ propertyName: "adminPanel", first: true, predicate: ["adminPanel"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"o-base-layout\" [ngClass]=\"{ 'is-menu-open': menuOpen$ | async }\">\n <pry-admin-title class=\"o-base-layout__title\"></pry-admin-title>\n <pry-admin-menu *ngIf=\"menuOpen$ | async\" class=\"o-base-layout__menu\"></pry-admin-menu>\n <pry-base-toolbox\n class=\"o-base-layout__toolbox\"\n [baseToolboxTranslation]=\"baseToolboxTranslation\"\n [actions$]=\"actions$\"\n [subActions$]=\"subActions$\"\n ></pry-base-toolbox>\n\n <div class=\"o-base-layout__contentwrapper\">\n <div class=\"o-base-layout__content\">\n <router-outlet></router-outlet>\n </div>\n\n <div class=\"o-base-layout__panel\" [class.is-open]=\"panelOpen$ | async\">\n <div class=\"o-base-layout__panel__content\">\n <ng-template #adminPanel></ng-template>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.BaseToolboxComponent, selector: "pry-base-toolbox", inputs: ["baseToolboxTranslation", "actions$", "subActions$"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: AdminMenuComponent, selector: "pry-admin-menu" }, { kind: "component", type: AdminTitleComponent, selector: "pry-admin-title" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
3547
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AdminLayoutComponent, deps: [{ token: i1.Store }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
3548
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AdminLayoutComponent, selector: "pry-admin-layout", viewQueries: [{ propertyName: "adminPanel", first: true, predicate: ["adminPanel"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"o-base-layout\" [ngClass]=\"{ 'is-menu-open': menuOpen$ | async }\">\n <pry-admin-title class=\"o-base-layout__title\"></pry-admin-title>\n <pry-admin-menu *ngIf=\"menuOpen$ | async\" class=\"o-base-layout__menu\"></pry-admin-menu>\n <pry-base-toolbox\n class=\"o-base-layout__toolbox\"\n [baseToolboxTranslation]=\"baseToolboxTranslation\"\n [actions$]=\"actions$\"\n [subActions$]=\"subActions$\"\n ></pry-base-toolbox>\n\n <div class=\"o-base-layout__contentwrapper\">\n <div class=\"o-base-layout__content\">\n <router-outlet></router-outlet>\n </div>\n\n <div\n class=\"o-base-layout__panel\"\n [class.is-open]=\"panelOpen$ | async\"\n [class.-model]=\"(limit$ | async) === 'model'\"\n >\n <div class=\"o-base-layout__panel__content\">\n <ng-template #adminPanel></ng-template>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.BaseToolboxComponent, selector: "pry-base-toolbox", inputs: ["baseToolboxTranslation", "actions$", "subActions$"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: AdminMenuComponent, selector: "pry-admin-menu" }, { kind: "component", type: AdminTitleComponent, selector: "pry-admin-title" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
3586
3549
  }
3587
3550
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AdminLayoutComponent, decorators: [{
3588
3551
  type: Component,
3589
- args: [{ selector: 'pry-admin-layout', template: "<div class=\"o-base-layout\" [ngClass]=\"{ 'is-menu-open': menuOpen$ | async }\">\n <pry-admin-title class=\"o-base-layout__title\"></pry-admin-title>\n <pry-admin-menu *ngIf=\"menuOpen$ | async\" class=\"o-base-layout__menu\"></pry-admin-menu>\n <pry-base-toolbox\n class=\"o-base-layout__toolbox\"\n [baseToolboxTranslation]=\"baseToolboxTranslation\"\n [actions$]=\"actions$\"\n [subActions$]=\"subActions$\"\n ></pry-base-toolbox>\n\n <div class=\"o-base-layout__contentwrapper\">\n <div class=\"o-base-layout__content\">\n <router-outlet></router-outlet>\n </div>\n\n <div class=\"o-base-layout__panel\" [class.is-open]=\"panelOpen$ | async\">\n <div class=\"o-base-layout__panel__content\">\n <ng-template #adminPanel></ng-template>\n </div>\n </div>\n </div>\n</div>\n" }]
3590
- }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Router }]; }, propDecorators: { adminPanel: [{
3552
+ args: [{ selector: 'pry-admin-layout', template: "<div class=\"o-base-layout\" [ngClass]=\"{ 'is-menu-open': menuOpen$ | async }\">\n <pry-admin-title class=\"o-base-layout__title\"></pry-admin-title>\n <pry-admin-menu *ngIf=\"menuOpen$ | async\" class=\"o-base-layout__menu\"></pry-admin-menu>\n <pry-base-toolbox\n class=\"o-base-layout__toolbox\"\n [baseToolboxTranslation]=\"baseToolboxTranslation\"\n [actions$]=\"actions$\"\n [subActions$]=\"subActions$\"\n ></pry-base-toolbox>\n\n <div class=\"o-base-layout__contentwrapper\">\n <div class=\"o-base-layout__content\">\n <router-outlet></router-outlet>\n </div>\n\n <div\n class=\"o-base-layout__panel\"\n [class.is-open]=\"panelOpen$ | async\"\n [class.-model]=\"(limit$ | async) === 'model'\"\n >\n <div class=\"o-base-layout__panel__content\">\n <ng-template #adminPanel></ng-template>\n </div>\n </div>\n </div>\n</div>\n" }]
3553
+ }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Router }, { type: i2.ActivatedRoute }]; }, propDecorators: { adminPanel: [{
3591
3554
  type: ViewChild,
3592
3555
  args: ['adminPanel', { static: true, read: ViewContainerRef }]
3593
3556
  }] } });
@@ -3767,7 +3730,7 @@ class AdminFormMetadataRulesComponent {
3767
3730
  this.isSameRules = false;
3768
3731
  this.isSubmitted = false;
3769
3732
  this.metadataList$ = this.store.select(MetadataSelectors.metadata);
3770
- this.metadataUserList$ = this.store.select(AdminMetadataUserSelectors.metadata);
3733
+ this.metadataUserList$ = this.store.select(MetadataSelectors.userProfile);
3771
3734
  this.metadataRulesList$ = this.store.select(MetadataRulesSelectors.metadataRulesList);
3772
3735
  this.form = this.formBuilder.group({
3773
3736
  id: [v4()],
@@ -3781,7 +3744,7 @@ class AdminFormMetadataRulesComponent {
3781
3744
  this.isSameName = false;
3782
3745
  this.store.dispatch(AdminMetadataRulesActions.load());
3783
3746
  this.store.dispatch(MetadataActions.loadMetadata());
3784
- this.store.dispatch(AdminMetadataUserActions.loadMetadata());
3747
+ this.store.dispatch(MetadataActions.loadUserProfile());
3785
3748
  this.sub = this.metadataList$.subscribe((metadataList) => {
3786
3749
  this.metadataList = metadataList;
3787
3750
  });
@@ -4064,15 +4027,14 @@ class AdminMetadataUserComponent {
4064
4027
  { headerType: 'label', label: this.translateService.instant('@pry.admin.user.label') },
4065
4028
  { headerType: 'label', label: this.translateService.instant('@pry.admin.user.type') }
4066
4029
  ];
4067
- this.metadata$ = this.store.select(AdminMetadataUserSelectors.metadata);
4030
+ this.metadata$ = this.store.select(MetadataSelectors.userProfile);
4068
4031
  this.selectedMetadataId$ = this.store.select(AdminMetadataUserSelectors.selectedMetadataId);
4069
4032
  this.store.dispatch(AdminMetadataUserActions.unselectMetadata());
4070
- this.store.dispatch(AdminMetadataUserActions.loadMetadata());
4071
- this.store
4072
- .select(AdminMetadataUserSelectors.selectedMetadata)
4073
- .pipe(filter$1((x) => !!x), takeUntil(this.unsubscribe$))
4074
- .subscribe((selectedMetadata) => {
4075
- this.value = selectedMetadata.name;
4033
+ this.store.dispatch(MetadataActions.loadUserProfile());
4034
+ combineLatest([this.store.select(AdminMetadataUserSelectors.selectedMetadataId), this.metadata$])
4035
+ .pipe(filter(([x]) => !!x), takeUntil(this.unsubscribe$))
4036
+ .subscribe(([id, metas]) => {
4037
+ this.value = metas.find((meta) => meta.id === id)?.name ?? '';
4076
4038
  });
4077
4039
  const path = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });
4078
4040
  this.store.dispatch(AdminActions.mainActions({
@@ -4128,7 +4090,7 @@ class FormMetadataComponent {
4128
4090
  ngOnInit() {
4129
4091
  if (this.isMetaUser) {
4130
4092
  this.metadataNames$ = this.store
4131
- .select(AdminMetadataUserSelectors.metadata)
4093
+ .select(MetadataSelectors.userProfile)
4132
4094
  .pipe(map((metadata) => metadata.map((metadata) => metadata.name.toLowerCase())));
4133
4095
  }
4134
4096
  else {
@@ -4224,8 +4186,8 @@ class AdminUserEditMetadataComponent {
4224
4186
  this.store = store;
4225
4187
  this.router = router;
4226
4188
  this.route = route;
4227
- this.metadata$ = this.store.select(AdminMetadataUserSelectors.selectedMetadata);
4228
- this.store.dispatch(AdminMetadataUserActions.loadMetadata());
4189
+ this.metadata$ = this.store.select(MetadataSelectors.selectedMetadata);
4190
+ this.store.dispatch(MetadataActions.loadUserProfile());
4229
4191
  }
4230
4192
  ngOnInit() {
4231
4193
  this.route.params.subscribe((params) => {
@@ -5296,21 +5258,6 @@ class AdminService {
5296
5258
  .select(ConfigSelectors.refUrl)
5297
5259
  .pipe(mergeMap((url) => this.httpClient.get(`${url}/users`)));
5298
5260
  }
5299
- getMetadataUser(userId) {
5300
- return this.store
5301
- .select(ConfigSelectors.refUrl)
5302
- .pipe(mergeMap((url) => this.httpClient.get(`${url}/users/id/${userId}/metadata`)));
5303
- }
5304
- addMetadataUser(userId, metaId, value) {
5305
- return this.store.select(ConfigSelectors.refUrl).pipe(mergeMap((url) => this.httpClient.put(encodeURI(`${url}/users/id/${userId}/metadata/id/${metaId}`), {
5306
- value: value
5307
- })));
5308
- }
5309
- deleteMetadataUser(userId, metaId) {
5310
- return this.store
5311
- .select(ConfigSelectors.refUrl)
5312
- .pipe(mergeMap((url) => this.httpClient.delete(encodeURI(`${url}/users/id/${userId}/metadata/id/${metaId}`))));
5313
- }
5314
5261
  getLinks() {
5315
5262
  return this.store
5316
5263
  .select(ConfigSelectors.refUrl)
@@ -5695,7 +5642,6 @@ class AdminMetadataUserEffects {
5695
5642
  this.adminService = adminService;
5696
5643
  this.store = store;
5697
5644
  this.router = router;
5698
- this.loadMetadata$ = createEffect(() => this.actions$.pipe(ofType(AdminMetadataUserActions.loadMetadata), mergeMap$1((_) => this.adminService.getUserMetadata().pipe(map$1((metadata) => AdminMetadataUserActions.loadMetadataSuccess({ metadata: metadata })), catchError$1((error) => [AdminMetadataUserActions.loadMetadataFailure({ error: error })])))));
5699
5645
  this.goToDetailsView$ = createEffect(() => this.actions$.pipe(ofType(AdminMetadataUserActions.goToDetailsViewMetadata), mergeMap$1((action) => this.adminService.getUserMetadataDef(action.id).pipe(map$1((metadata) => AdminMetadataUserActions.goToDetailsViewMetadataSuccess({ metadata })), catchError$1((error) => [AdminMetadataUserActions.goToDetailsViewMetadataFailure({ error: error })])))));
5700
5646
  this.switchToEditView$ = createEffect(() => this.actions$.pipe(ofType(AdminMetadataUserActions.goToEditMetadata), mergeMap$1((action) => this.adminService.getUserMetadataDef(action.id).pipe(map$1((metadata) => AdminMetadataUserActions.goToEditMetadataSuccess({ metadata, route: action.route })), catchError$1((error) => [AdminMetadataUserActions.goToEditMetadataFailure({ error: error })])))));
5701
5647
  this.goToEditViewSuccess$ = createEffect(() => this.actions$.pipe(ofType(AdminMetadataUserActions.goToEditMetadataSuccess), map$1((action) => {
@@ -5703,11 +5649,11 @@ class AdminMetadataUserEffects {
5703
5649
  })));
5704
5650
  this.createMetadata$ = createEffect(() => this.actions$.pipe(ofType(AdminMetadataUserActions.createMetadata), mergeMap$1((action) => this.adminService.postUserMetadata(action.metadata).pipe(map$1(() => AdminMetadataUserActions.createMetadataSuccess({ metadata: action.metadata })), catchError$1((error) => [AdminMetadataUserActions.createMetadataFailure({ error: error })])))));
5705
5651
  this.createMetadataSuccess$ = createEffect(() => this.actions$.pipe(ofType(AdminMetadataUserActions.createMetadataSuccess), map$1((action) => {
5706
- return AdminMetadataUserActions.loadMetadata();
5652
+ return MetadataActions.loadUserProfile();
5707
5653
  })));
5708
5654
  this.updateMetadata$ = createEffect(() => this.actions$.pipe(ofType(AdminMetadataUserActions.updateMetadata), mergeMap$1((action) => this.adminService.postUserMetadata(action.metadata).pipe(map$1(() => AdminMetadataUserActions.updateMetadataSuccess({ metadata: action.metadata })), catchError$1((error) => [AdminMetadataUserActions.updateMetadataFailure({ error: error })])))));
5709
5655
  this.updateMetadataSuccess$ = createEffect(() => this.actions$.pipe(ofType(AdminMetadataUserActions.updateMetadataSuccess), map$1((action) => {
5710
- return AdminMetadataUserActions.loadMetadata();
5656
+ return MetadataActions.loadUserProfile();
5711
5657
  })));
5712
5658
  }
5713
5659
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AdminMetadataUserEffects, deps: [{ token: i1$2.Actions }, { token: AdminService }, { token: i1.Store }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -5755,24 +5701,6 @@ class AdminUserEffects {
5755
5701
  this.actions$ = actions$;
5756
5702
  this.adminService = adminService;
5757
5703
  this.loadUsers$ = createEffect(() => this.actions$.pipe(ofType(AdminUserActions.loadUsers), mergeMap$1((_) => this.adminService.getUsers().pipe(map$1((users) => AdminUserActions.loadUsersSuccess({ users })), catchError$1((error) => [AdminUserActions.loadUsersFailure({ error })])))));
5758
- this.loadMetadataUser$ = createEffect(() => this.actions$.pipe(ofType(AdminUserActions.loadMetadataUser), mergeMap$1((action) => this.adminService.getMetadataUser(action.userId).pipe(map$1((metadata) => AdminUserActions.loadMetadataUserSuccess({ metadata })), catchError$1((error) => [AdminUserActions.loadMetadataUserFailure({ error })])))));
5759
- this.selectUser$ = createEffect(() => this.actions$.pipe(ofType(AdminUserActions.selectUser), map$1((action) => {
5760
- return AdminUserActions.loadMetadataUser({ userId: action.userId });
5761
- })));
5762
- this.addMetadataUser$ = createEffect(() => this.actions$.pipe(ofType(AdminUserActions.addMetadataUser), mergeMap$1((action) => this.adminService.addMetadataUser(action.userId, action.metaId, action.value).pipe(map$1(() => AdminUserActions.addMetadataUserSuccess({ userId: action.userId })), catchError$1((error) => [AdminUserActions.addMetadataUserFailure({ error })])))));
5763
- this.addMetadataUserSuccess$ = createEffect(() => this.actions$.pipe(ofType(AdminUserActions.addMetadataUserSuccess), mergeMap$1((action) => {
5764
- return [
5765
- AdminUserActions.loadMetadataUser({ userId: action.userId }),
5766
- AdminUserActions.isEditable({ editable: false })
5767
- ];
5768
- })));
5769
- this.deleteMetadataUser$ = createEffect(() => this.actions$.pipe(ofType(AdminUserActions.deleteMetadataUser), mergeMap$1((action) => this.adminService.deleteMetadataUser(action.userId, action.metadataId).pipe(map$1(() => AdminUserActions.deleteMetadataUserSuccess({ userId: action.userId })), catchError$1((error) => [AdminUserActions.deleteMetadataUserFailure({ error })])))));
5770
- this.deleteMetadataUserSuccess$ = createEffect(() => this.actions$.pipe(ofType(AdminUserActions.deleteMetadataUserSuccess), mergeMap$1((action) => {
5771
- return [
5772
- AdminUserActions.loadMetadataUser({ userId: action.userId }),
5773
- AdminUserActions.isEditable({ editable: false })
5774
- ];
5775
- })));
5776
5704
  }
5777
5705
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AdminUserEffects, deps: [{ token: i1$2.Actions }, { token: AdminService }], target: i0.ɵɵFactoryTarget.Injectable }); }
5778
5706
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AdminUserEffects }); }
@@ -6065,7 +5993,7 @@ const enTranslations = {
6065
5993
  long: 'Allows you to store integer numeric data that can exceed 2^32',
6066
5994
  decimal: 'Allows you to store numeric data with decimal places',
6067
5995
  string: 'Allows you to store data in alphanumeric format. This data is not indexed: it is possible to search on it but no aggregation',
6068
- keyword: 'Keyword',
5996
+ keyword: 'Allows you to store data in alphanumeric format. This data is indexed: it is possible to search on it as well as aggregations.',
6069
5997
  instant: 'Allows you to store a date',
6070
5998
  raw: 'allows you to store image or file type data',
6071
5999
  point: 'Allows you to store geographic coordinates of an object represented by a point (geo-json format)',
@@ -6406,7 +6334,7 @@ const frTranslations = {
6406
6334
  int: 'Nombre entier',
6407
6335
  long: 'Nombre entier long',
6408
6336
  decimal: 'Nombre décimal',
6409
- string: 'Texte',
6337
+ string: 'Texte brut',
6410
6338
  keyword: 'Texte indexé',
6411
6339
  instant: 'Date',
6412
6340
  raw: 'Donnée non structurée',
@@ -6421,7 +6349,7 @@ const frTranslations = {
6421
6349
  long: 'Permet de stocker des données numériques entières pouvant dépasser 2^32',
6422
6350
  decimal: 'Permet de stocker des données numériques avec des décimales',
6423
6351
  string: "Permet de stocker des données au format alphanumérique. Ces données ne sont pas indexées : il est possible de faire une recherche dessus mais pas d'agrégation",
6424
- keyword: 'Texte indexé',
6352
+ keyword: 'Permet de stocker des données au format alphanumérique. Ces données sont indexées : il est possible de faire une recherche dessus ainsi que des agrégations.',
6425
6353
  instant: 'Permet de stocker une date',
6426
6354
  raw: 'permet de stocker des données de type image ou fichier',
6427
6355
  point: "Permet de stocker des coordonnées géographiques d'un objet représenté par un point (format géojson)",
@@ -6429,7 +6357,7 @@ const frTranslations = {
6429
6357
  line: "Permet de stocker des coordonnées géographiques d'un objet représenté comme une ligne (format géojson)",
6430
6358
  multiline: "Permet de stocker des coordonnées géographiques d'un objet représenté avec plusieurs lignes non reliées entre elles (longitude et latitude format géojson)",
6431
6359
  polygon: "Permet de stocker des coordonnées géographiques d'un objet représenté par un polygone (format géojson)",
6432
- multipolygon: "Permet de stocket des coordonnées géographiques d'un objet représenté par plusieurs polygones imbriqués ou non (format géojson)"
6360
+ multipolygon: "Permet de stocker des coordonnées géographiques d'un objet représenté par plusieurs polygones imbriqués ou non (format géojson)"
6433
6361
  }
6434
6362
  },
6435
6363
  rawMethods: {