@provoly/dashboard 0.14.8 → 0.14.9

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 (125) hide show
  1. package/admin/components/admin-metadata-user/admin-metadata-user.component.d.ts +1 -1
  2. package/admin/components/admin-metadata-user/store/admin-metadata-user.action.d.ts +0 -11
  3. package/admin/components/admin-metadata-user/store/admin-metadata-user.effects.d.ts +2 -7
  4. package/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.d.ts +1 -3
  5. package/admin/components/admin-metadata-user/store/admin-metadata-user.selector.d.ts +1 -4
  6. package/admin/components/admin-user/store/admin-user.action.d.ts +1 -52
  7. package/admin/components/admin-user/store/admin-user.effects.d.ts +0 -28
  8. package/admin/components/admin-user/store/admin-user.reducer.d.ts +1 -2
  9. package/admin/components/admin-user/store/admin-user.selector.d.ts +0 -1
  10. package/admin/store/admin.service.d.ts +1 -4
  11. package/components/metadata-editor/metadata-editor.component.d.ts +6 -4
  12. package/components/metadata-editor/metadata-editor.module.d.ts +7 -6
  13. package/components/metadata-editor/public-api.d.ts +1 -0
  14. package/components/metadata-editor/store/metadata.action.d.ts +63 -1
  15. package/components/metadata-editor/store/metadata.effects.d.ts +33 -0
  16. package/components/metadata-editor/store/metadata.reducer.d.ts +3 -1
  17. package/components/metadata-editor/store/metadata.selector.d.ts +2 -0
  18. package/components/metadata-editor/store/metadata.service.d.ts +5 -1
  19. package/components/metadata-editor/style/_o-metadata-editor.scss +15 -0
  20. package/components/metadata-editor/style/css.component.d.ts +5 -0
  21. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +2 -3
  22. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +2 -3
  23. package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +2 -3
  24. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +1 -1
  25. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +4 -4
  26. package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +3 -3
  27. package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +2 -3
  28. package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +3 -5
  29. package/esm2022/admin/components/admin-metadata-user/admin-metadata-user.component.mjs +9 -10
  30. package/esm2022/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.mjs +4 -4
  31. package/esm2022/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.mjs +7 -3
  32. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.action.mjs +1 -4
  33. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +4 -4
  34. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.mjs +8 -28
  35. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.selector.mjs +2 -6
  36. package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +9 -10
  37. package/esm2022/admin/components/admin-user/admin-user.component.mjs +1 -1
  38. package/esm2022/admin/components/admin-user/store/admin-user.action.mjs +2 -11
  39. package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +1 -19
  40. package/esm2022/admin/components/admin-user/store/admin-user.reducer.mjs +2 -7
  41. package/esm2022/admin/components/admin-user/store/admin-user.selector.mjs +1 -3
  42. package/esm2022/admin/store/admin.effects.mjs +1 -1
  43. package/esm2022/admin/store/admin.service.mjs +1 -16
  44. package/esm2022/components/metadata-editor/metadata-editor.component.mjs +37 -21
  45. package/esm2022/components/metadata-editor/metadata-editor.module.mjs +5 -4
  46. package/esm2022/components/metadata-editor/public-api.mjs +2 -1
  47. package/esm2022/components/metadata-editor/store/metadata.action.mjs +14 -2
  48. package/esm2022/components/metadata-editor/store/metadata.effects.mjs +21 -1
  49. package/esm2022/components/metadata-editor/store/metadata.reducer.mjs +18 -2
  50. package/esm2022/components/metadata-editor/store/metadata.selector.mjs +6 -2
  51. package/esm2022/components/metadata-editor/store/metadata.service.mjs +21 -1
  52. package/esm2022/components/metadata-editor/style/css.component.mjs +11 -0
  53. package/esm2022/dataset/i18n/fr.translations.mjs +2 -2
  54. package/esm2022/import/i18n/en.translations.mjs +4 -1
  55. package/esm2022/import/i18n/fr.translations.mjs +4 -1
  56. package/esm2022/import/store/import.effects.mjs +8 -1
  57. package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +10 -6
  58. package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +1 -1
  59. package/esm2022/lib/core/i18n/en.translations.mjs +3 -2
  60. package/esm2022/lib/core/i18n/fr.translations.mjs +3 -2
  61. package/esm2022/lib/core/model/display-options.interface.mjs +1 -1
  62. package/esm2022/lib/core/model/manifest.interface.mjs +1 -1
  63. package/esm2022/lib/core/model/public-api.mjs +2 -1
  64. package/esm2022/lib/core/model/widget-vega-manifest.interface.mjs +2 -0
  65. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +2 -2
  66. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +4 -3
  67. package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +4 -2
  68. package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +3 -4
  69. package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +3 -3
  70. package/esm2022/toolbox/components/save-view/save-view.component.mjs +4 -4
  71. package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +3 -1
  72. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +15 -9
  73. package/esm2022/widgets/widget-map/utils/cql-utils.class.mjs +5 -5
  74. package/esm2022/widgets/widget-map/utils/xml-utils.class.mjs +23 -1
  75. package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +139 -0
  76. package/esm2022/widgets/widget-vega/i18n/en.translations.mjs +11 -0
  77. package/esm2022/widgets/widget-vega/i18n/fr.translations.mjs +11 -0
  78. package/esm2022/widgets/widget-vega/provoly-dashboard-widgets-widget-vega.mjs +5 -0
  79. package/esm2022/widgets/widget-vega/public-api.mjs +3 -0
  80. package/esm2022/widgets/widget-vega/style/css.component.mjs +11 -0
  81. package/esm2022/widgets/widget-vega/widget-vega.module.mjs +68 -0
  82. package/fesm2022/provoly-dashboard-admin.mjs +122 -197
  83. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  84. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +124 -28
  85. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
  86. package/fesm2022/provoly-dashboard-dataset.mjs +1 -1
  87. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  88. package/fesm2022/provoly-dashboard-import.mjs +13 -0
  89. package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
  90. package/fesm2022/provoly-dashboard-presentation.mjs +2 -2
  91. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  92. package/fesm2022/provoly-dashboard-toolbox.mjs +3 -3
  93. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  94. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +42 -13
  95. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  96. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +235 -0
  97. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -0
  98. package/fesm2022/provoly-dashboard.mjs +23 -14
  99. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  100. package/import/i18n/en.translations.d.ts +3 -0
  101. package/import/i18n/fr.translations.d.ts +3 -0
  102. package/lib/core/i18n/en.translations.d.ts +1 -0
  103. package/lib/core/i18n/fr.translations.d.ts +1 -0
  104. package/lib/core/model/display-options.interface.d.ts +1 -1
  105. package/lib/core/model/manifest.interface.d.ts +2 -1
  106. package/lib/core/model/public-api.d.ts +1 -0
  107. package/lib/core/model/widget-vega-manifest.interface.d.ts +5 -0
  108. package/lib/dashboard/store/dashboard.actions.d.ts +6 -4
  109. package/lib/dashboard/store/dashboard.effects.d.ts +2 -0
  110. package/lib/dashboard/store/dashboard.selectors.d.ts +1 -1
  111. package/package.json +7 -1
  112. package/schematics/ng-add/index.js +7 -1
  113. package/schematics/ng-add/index.js.map +1 -1
  114. package/schematics/ng-add/schema.json +2 -1
  115. package/styles/components/_o-tabs.scss +1 -7
  116. package/widgets/widget-map/component/widget-map.component.d.ts +3 -1
  117. package/widgets/widget-map/utils/xml-utils.class.d.ts +2 -0
  118. package/widgets/widget-vega/component/widget-vega.component.d.ts +37 -0
  119. package/widgets/widget-vega/i18n/en.translations.d.ts +10 -0
  120. package/widgets/widget-vega/i18n/fr.translations.d.ts +10 -0
  121. package/widgets/widget-vega/index.d.ts +5 -0
  122. package/widgets/widget-vega/public-api.d.ts +2 -0
  123. package/widgets/widget-vega/style/_o-widget-vega.scss +6 -0
  124. package/widgets/widget-vega/style/css.component.d.ts +5 -0
  125. 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", "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" }] }); }
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", "initialMetadataSelection"], 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
  }] } });
@@ -3767,7 +3727,7 @@ class AdminFormMetadataRulesComponent {
3767
3727
  this.isSameRules = false;
3768
3728
  this.isSubmitted = false;
3769
3729
  this.metadataList$ = this.store.select(MetadataSelectors.metadata);
3770
- this.metadataUserList$ = this.store.select(AdminMetadataUserSelectors.metadata);
3730
+ this.metadataUserList$ = this.store.select(MetadataSelectors.userProfile);
3771
3731
  this.metadataRulesList$ = this.store.select(MetadataRulesSelectors.metadataRulesList);
3772
3732
  this.form = this.formBuilder.group({
3773
3733
  id: [v4()],
@@ -3781,7 +3741,7 @@ class AdminFormMetadataRulesComponent {
3781
3741
  this.isSameName = false;
3782
3742
  this.store.dispatch(AdminMetadataRulesActions.load());
3783
3743
  this.store.dispatch(MetadataActions.loadMetadata());
3784
- this.store.dispatch(AdminMetadataUserActions.loadMetadata());
3744
+ this.store.dispatch(MetadataActions.loadUserProfile());
3785
3745
  this.sub = this.metadataList$.subscribe((metadataList) => {
3786
3746
  this.metadataList = metadataList;
3787
3747
  });
@@ -4064,15 +4024,14 @@ class AdminMetadataUserComponent {
4064
4024
  { headerType: 'label', label: this.translateService.instant('@pry.admin.user.label') },
4065
4025
  { headerType: 'label', label: this.translateService.instant('@pry.admin.user.type') }
4066
4026
  ];
4067
- this.metadata$ = this.store.select(AdminMetadataUserSelectors.metadata);
4027
+ this.metadata$ = this.store.select(MetadataSelectors.userProfile);
4068
4028
  this.selectedMetadataId$ = this.store.select(AdminMetadataUserSelectors.selectedMetadataId);
4069
4029
  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;
4030
+ this.store.dispatch(MetadataActions.loadUserProfile());
4031
+ combineLatest([this.store.select(AdminMetadataUserSelectors.selectedMetadataId), this.metadata$])
4032
+ .pipe(filter(([x]) => !!x), takeUntil(this.unsubscribe$))
4033
+ .subscribe(([id, metas]) => {
4034
+ this.value = metas.find((meta) => meta.id === id)?.name ?? '';
4076
4035
  });
4077
4036
  const path = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });
4078
4037
  this.store.dispatch(AdminActions.mainActions({
@@ -4128,7 +4087,7 @@ class FormMetadataComponent {
4128
4087
  ngOnInit() {
4129
4088
  if (this.isMetaUser) {
4130
4089
  this.metadataNames$ = this.store
4131
- .select(AdminMetadataUserSelectors.metadata)
4090
+ .select(MetadataSelectors.userProfile)
4132
4091
  .pipe(map((metadata) => metadata.map((metadata) => metadata.name.toLowerCase())));
4133
4092
  }
4134
4093
  else {
@@ -4224,8 +4183,8 @@ class AdminUserEditMetadataComponent {
4224
4183
  this.store = store;
4225
4184
  this.router = router;
4226
4185
  this.route = route;
4227
- this.metadata$ = this.store.select(AdminMetadataUserSelectors.selectedMetadata);
4228
- this.store.dispatch(AdminMetadataUserActions.loadMetadata());
4186
+ this.metadata$ = this.store.select(MetadataSelectors.selectedMetadata);
4187
+ this.store.dispatch(MetadataActions.loadUserProfile());
4229
4188
  }
4230
4189
  ngOnInit() {
4231
4190
  this.route.params.subscribe((params) => {
@@ -5296,21 +5255,6 @@ class AdminService {
5296
5255
  .select(ConfigSelectors.refUrl)
5297
5256
  .pipe(mergeMap((url) => this.httpClient.get(`${url}/users`)));
5298
5257
  }
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
5258
  getLinks() {
5315
5259
  return this.store
5316
5260
  .select(ConfigSelectors.refUrl)
@@ -5695,7 +5639,6 @@ class AdminMetadataUserEffects {
5695
5639
  this.adminService = adminService;
5696
5640
  this.store = store;
5697
5641
  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
5642
  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
5643
  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
5644
  this.goToEditViewSuccess$ = createEffect(() => this.actions$.pipe(ofType(AdminMetadataUserActions.goToEditMetadataSuccess), map$1((action) => {
@@ -5703,11 +5646,11 @@ class AdminMetadataUserEffects {
5703
5646
  })));
5704
5647
  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
5648
  this.createMetadataSuccess$ = createEffect(() => this.actions$.pipe(ofType(AdminMetadataUserActions.createMetadataSuccess), map$1((action) => {
5706
- return AdminMetadataUserActions.loadMetadata();
5649
+ return MetadataActions.loadUserProfile();
5707
5650
  })));
5708
5651
  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
5652
  this.updateMetadataSuccess$ = createEffect(() => this.actions$.pipe(ofType(AdminMetadataUserActions.updateMetadataSuccess), map$1((action) => {
5710
- return AdminMetadataUserActions.loadMetadata();
5653
+ return MetadataActions.loadUserProfile();
5711
5654
  })));
5712
5655
  }
5713
5656
  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 +5698,6 @@ class AdminUserEffects {
5755
5698
  this.actions$ = actions$;
5756
5699
  this.adminService = adminService;
5757
5700
  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
5701
  }
5777
5702
  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
5703
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AdminUserEffects }); }