@provoly/dashboard 1.1.2 → 1.1.3

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 (43) hide show
  1. package/dataset/components/dataset-detail/dataset-detail.component.d.ts +1 -0
  2. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +4 -3
  3. package/esm2022/lib/core/components/share/access-rights-share/access-rights-share.component.mjs +127 -0
  4. package/esm2022/lib/core/components/share/group-share/group-share.component.mjs +1 -1
  5. package/esm2022/lib/core/components/share/legacy-share/share.component.mjs +83 -0
  6. package/esm2022/lib/core/components/share/share.module.mjs +9 -7
  7. package/esm2022/lib/core/components/share/share.utils.mjs +46 -1
  8. package/esm2022/lib/core/i18n/en.translations.mjs +15 -7
  9. package/esm2022/lib/core/i18n/fr.translations.mjs +16 -7
  10. package/esm2022/lib/core/model/manifest.interface.mjs +1 -1
  11. package/esm2022/lib/core/public-api.mjs +3 -2
  12. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +1 -1
  13. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +2 -2
  14. package/esm2022/lib/dashboard/store/manifest.service.mjs +3 -3
  15. package/esm2022/presentation/components/presentation.component.mjs +13 -25
  16. package/esm2022/toolbox/components/save-view/save-view.component.mjs +8 -8
  17. package/esm2022/toolbox/components/share/share.component.mjs +9 -15
  18. package/fesm2022/provoly-dashboard-dataset.mjs +3 -2
  19. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  20. package/fesm2022/provoly-dashboard-presentation.mjs +12 -24
  21. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  22. package/fesm2022/provoly-dashboard-toolbox.mjs +15 -21
  23. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  24. package/fesm2022/provoly-dashboard.mjs +195 -21
  25. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  26. package/lib/core/components/share/access-rights-share/access-rights-share.component.d.ts +47 -0
  27. package/lib/core/components/share/{share.component.d.ts → legacy-share/share.component.d.ts} +1 -1
  28. package/lib/core/components/share/share.module.d.ts +10 -8
  29. package/lib/core/components/share/share.utils.d.ts +18 -0
  30. package/lib/core/i18n/en.translations.d.ts +12 -4
  31. package/lib/core/i18n/fr.translations.d.ts +13 -4
  32. package/lib/core/model/manifest.interface.d.ts +3 -1
  33. package/lib/core/public-api.d.ts +2 -1
  34. package/lib/dashboard/store/dashboard.actions.d.ts +6 -2
  35. package/lib/dashboard/store/manifest.service.d.ts +3 -1
  36. package/package.json +1 -1
  37. package/presentation/components/presentation.component.d.ts +7 -7
  38. package/styles/components/_o-access-rights-share.scss +73 -0
  39. package/styles/components/_o-pry-admin-classes-customize.scss +4 -4
  40. package/styles/main.scss +1 -0
  41. package/toolbox/components/save-view/save-view.component.d.ts +6 -2
  42. package/toolbox/components/share/share.component.d.ts +6 -4
  43. package/esm2022/lib/core/components/share/share.component.mjs +0 -83
@@ -346,6 +346,7 @@ const enTranslations$1 = {
346
346
  switchEdit: 'Edit',
347
347
  switchEditContent: 'Edit composition',
348
348
  share: 'Share',
349
+ shareAccessRights: 'Share access rights',
349
350
  delete: 'Delete',
350
351
  notInDsAttr: 'Unavailable attribute'
351
352
  },
@@ -483,11 +484,22 @@ const enTranslations$1 = {
483
484
  type: 'Visibility',
484
485
  users: 'Authorized users',
485
486
  noGroups: 'No group available',
487
+ groups: {
488
+ ALL: 'Public',
489
+ AUTHENTICATED: 'Connected users'
490
+ },
486
491
  conflict: {
487
492
  title: 'Warning',
488
493
  main: 'The following data sources are not accessible to the selected user groups:',
489
494
  unavailable: 'inaccessible aux groupes : '
490
- }
495
+ },
496
+ dashboardAccess: 'Share access to this dashboard to selected user groups',
497
+ placeholder: 'Chose one or more groups',
498
+ read: 'Can read',
499
+ write: 'Can modify',
500
+ accessDescription: '"Can read" allows read acess "Can modify" allows read and write access',
501
+ me: 'Me',
502
+ owner: 'Owner'
491
503
  },
492
504
  homepage: {
493
505
  menu: {
@@ -513,11 +525,7 @@ const enTranslations$1 = {
513
525
  selection: 'Selected user groups:',
514
526
  selectItem: 'Select this user group',
515
527
  unselectItem: 'Unselect this user group',
516
- noItemSelected: 'No user group selected',
517
- groups: {
518
- ALL: 'Public',
519
- AUTHENTICATED: 'Connected users'
520
- }
528
+ noItemSelected: 'No user group selected'
521
529
  }
522
530
  }
523
531
  },
@@ -746,6 +754,7 @@ const frTranslations$1 = {
746
754
  switchEdit: 'Modifier',
747
755
  switchEditContent: 'Modifier la composition',
748
756
  share: 'Partager',
757
+ shareAccessRights: "Droits d'accès",
749
758
  delete: 'Supprimer',
750
759
  notInDsAttr: 'Attribut indisponible'
751
760
  },
@@ -802,6 +811,7 @@ const frTranslations$1 = {
802
811
  }
803
812
  },
804
813
  action: {
814
+ add: 'Ajouter',
805
815
  close: 'Fermer',
806
816
  closePanel: 'Fermer le panneau',
807
817
  delete: 'Supprimer',
@@ -883,12 +893,23 @@ const frTranslations$1 = {
883
893
  restricted: 'Restreint',
884
894
  type: 'Visibilité',
885
895
  users: 'Utilisateurs autorisés',
896
+ groups: {
897
+ ALL: 'Public',
898
+ AUTHENTICATED: 'Les utilisateurs connectés'
899
+ },
886
900
  noGroups: 'Aucun groupe disponible',
887
901
  conflict: {
888
902
  title: 'Warning',
889
903
  main: 'Attention, les sources de données suivantes ne seront pas visible de toutes les personnes accédant à la présentation : ',
890
904
  unavailable: 'inaccessible aux groupes : '
891
- }
905
+ },
906
+ dashboardAccess: "Donner les droits d'accès de ce tableau de bord à certains groupes d’utilisateurs :",
907
+ placeholder: 'Choisissez le ou les groupes utilisateurs',
908
+ read: 'Peut voir',
909
+ write: 'Peut modifier',
910
+ accessDescription: '"Peut voir" ouvre les droits de consultation et "Peut modifier" permet de consulter et modifier',
911
+ me: 'Moi',
912
+ owner: 'Propriétaire'
892
913
  },
893
914
  homepage: {
894
915
  menu: {
@@ -914,11 +935,7 @@ const frTranslations$1 = {
914
935
  selection: "Groupe(s) d'utilisateurs sélectionnés:",
915
936
  selectItem: "Sélectionner le groupe d'utilisateurs",
916
937
  unselectItem: "Désélectionner le groupe d'utilisateurs",
917
- noItemSelected: "Aucun groupe d'utilisateurs sélectionné",
918
- groups: {
919
- ALL: 'Public',
920
- AUTHENTICATED: 'Les utilisateurs connectés'
921
- }
938
+ noItemSelected: "Aucun groupe d'utilisateurs sélectionné"
922
939
  }
923
940
  }
924
941
  },
@@ -7673,6 +7690,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
7673
7690
  type: Output
7674
7691
  }] } });
7675
7692
 
7693
+ const READ_ACCESS = 'READ';
7694
+ const WRITE_ACCESS = 'WRITE';
7695
+ // GROUP UTIL METHODS
7696
+ const getGroupLabel = (group, i18n) => {
7697
+ return group.system ? i18n.instant('@pry.share.groups.' + group.name) : group.name;
7698
+ };
7699
+ const getGroupLabelByName = (groupName, i18n) => {
7700
+ return i18n.instant('@pry.share.groups.' + groupName).startsWith('@')
7701
+ ? groupName
7702
+ : i18n.instant('@pry.share.groups.' + groupName);
7703
+ };
7704
+ // DASHBOARD GROUP RIGHTS METHODS
7676
7705
  const canManifestBeMadePublic = (manifest, datasets) => {
7677
7706
  return manifest.datasource.every((dsId) => {
7678
7707
  const datasource = datasets.find((d) => d.id === dsId);
@@ -7697,6 +7726,151 @@ const getCommonDatasourceGroupsForManifest = (manifest, datasets) => {
7697
7726
  }
7698
7727
  return result;
7699
7728
  };
7729
+ // ACCESS RIGHTS METHODS
7730
+ const getAccessRightsArrayByGroup = (accessByGroup) => {
7731
+ let result = {};
7732
+ Object.keys(accessByGroup).forEach((key) => {
7733
+ result[key] = getAccessArray(accessByGroup[key]);
7734
+ });
7735
+ return result;
7736
+ };
7737
+ const getAccessArray = (access) => {
7738
+ switch (access) {
7739
+ case READ_ACCESS:
7740
+ return ['READ'];
7741
+ case WRITE_ACCESS:
7742
+ return ['WRITE', 'READ'];
7743
+ default:
7744
+ return [];
7745
+ }
7746
+ };
7747
+ const getAccessRightsStringByGroup = (accessByGroup) => {
7748
+ let result = {};
7749
+ Object.keys(accessByGroup).forEach((key) => {
7750
+ result[key] = getAccessString(accessByGroup[key]);
7751
+ });
7752
+ return result;
7753
+ };
7754
+ const getAccessString = (accessArray) => {
7755
+ if (accessArray.includes('WRITE')) {
7756
+ return WRITE_ACCESS;
7757
+ }
7758
+ else {
7759
+ return READ_ACCESS;
7760
+ }
7761
+ };
7762
+
7763
+ class PryAccessRightsShareComponent extends SubscriptionnerDirective {
7764
+ set allowedGroups(value) {
7765
+ if (value)
7766
+ this._allowedGroups$.next(value);
7767
+ }
7768
+ constructor(store, i18n) {
7769
+ super();
7770
+ this.store = store;
7771
+ this.i18n = i18n;
7772
+ this.value = {};
7773
+ this._onChange = (value) => { };
7774
+ this._onTouched = () => { };
7775
+ this._allowedGroups$ = new BehaviorSubject(undefined);
7776
+ this.accessRights = [];
7777
+ this.selectedGroups = [];
7778
+ this.selectedAccessRight = READ_ACCESS;
7779
+ this.assignedGroups$ = new BehaviorSubject([]);
7780
+ this.getGroupLabel = getGroupLabel;
7781
+ this.getGroupLabelByName = getGroupLabelByName;
7782
+ this.store.dispatch(ConfigActions.loadAccessGroups());
7783
+ this.groups$ = combineLatest([
7784
+ this.store.select(ConfigSelectors.accessGroups),
7785
+ this._allowedGroups$,
7786
+ this.assignedGroups$
7787
+ ]).pipe(map(([groups, allowedGroups, alreadyAssigned]) => groups
7788
+ .filter((group) => (allowedGroups ? allowedGroups.includes(group.name) : true))
7789
+ .filter((group) => !alreadyAssigned.includes(group.name))
7790
+ .map((group) => ({
7791
+ ...group,
7792
+ label: getGroupLabel(group, this.i18n)
7793
+ }))));
7794
+ this.accessRights = [
7795
+ { label: this.i18n.instant('@pry.share.read'), value: READ_ACCESS },
7796
+ { label: this.i18n.instant('@pry.share.write'), value: WRITE_ACCESS }
7797
+ ];
7798
+ }
7799
+ writeValue(value) {
7800
+ if (value)
7801
+ this.value = getAccessRightsStringByGroup(value) ?? {};
7802
+ this.emitAlreadyAssignedGroups();
7803
+ this._onTouched();
7804
+ }
7805
+ registerOnChange(fn) {
7806
+ this._onChange = fn;
7807
+ }
7808
+ registerOnTouched(fn) {
7809
+ this._onTouched = fn;
7810
+ }
7811
+ onChange() {
7812
+ this._onChange(getAccessRightsArrayByGroup(this.value));
7813
+ this._onTouched();
7814
+ }
7815
+ addAccess() {
7816
+ if (this.selectedGroups) {
7817
+ this.selectedGroups.forEach((group) => {
7818
+ this.value = {
7819
+ ...this.value,
7820
+ [group.name]: this.selectedAccessRight
7821
+ };
7822
+ });
7823
+ this.emitAlreadyAssignedGroups();
7824
+ this.onChange();
7825
+ }
7826
+ this.resetSelection();
7827
+ }
7828
+ modifyGroupAccess(group, access) {
7829
+ this.value = {
7830
+ ...this.value,
7831
+ [group]: access
7832
+ };
7833
+ this._onChange(getAccessRightsArrayByGroup(this.value));
7834
+ }
7835
+ removeGroupAccess(group) {
7836
+ delete this.value[group];
7837
+ this._onChange(getAccessRightsArrayByGroup(this.value));
7838
+ this.emitAlreadyAssignedGroups();
7839
+ }
7840
+ resetSelection() {
7841
+ this.selectedAccessRight = 'READ';
7842
+ this.selectedGroups = undefined;
7843
+ }
7844
+ isAddingDisabled() {
7845
+ return this.selectedGroups?.length === 0;
7846
+ }
7847
+ emitAlreadyAssignedGroups() {
7848
+ this.assignedGroups$.next(Object.keys(this.value));
7849
+ }
7850
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryAccessRightsShareComponent, deps: [{ token: i1.Store }, { token: PryI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
7851
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: PryAccessRightsShareComponent, selector: "pry-access-rights-share", inputs: { manifestDescription: "manifestDescription", allowedGroups: "allowedGroups" }, providers: [
7852
+ {
7853
+ provide: NG_VALUE_ACCESSOR,
7854
+ useExisting: forwardRef(() => PryAccessRightsShareComponent),
7855
+ multi: true
7856
+ }
7857
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"o-access-rights-share\">\n <label for=\"share-group-select\" class=\"a-h4\">{{ '@pry.share.dashboardAccess' | i18n }}</label>\n <form class=\"u-display-flex\">\n <fieldset class=\"m-grouped-select u-display-flex\" name=\"add-access-rights\">\n <pry-select\n id=\"share-group-select\"\n class=\"o-access-rights-share__group-select\"\n name=\"share-group-select\"\n [(ngModel)]=\"selectedGroups\"\n [items]=\"groups$ | async\"\n bindLabel=\"label\"\n placeholder=\"{{ '@pry.share.placeholder' | i18n }}\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n ></pry-select>\n <pry-select\n id=\"share-access-rights-select\"\n class=\"o-access-rights-share__access-rights-select\"\n name=\"share-access-rights-select\"\n [(ngModel)]=\"selectedAccessRight\"\n [items]=\"accessRights\"\n bindValue=\"value\"\n bindLabel=\"label\"\n ></pry-select>\n </fieldset>\n <button role=\"button\" class=\"a-btn a-btn--primary\" (click)=\"addAccess()\" [disabled]=\"isAddingDisabled()\">\n {{ '@pry.action.add' | i18n }}\n </button>\n </form>\n <label for=\"share-access-rights-select\" class=\"a-label\">{{ '@pry.share.accessDescription' | i18n }}</label>\n <div class=\"o-access-rights-share__groups\">\n @if (manifestDescription?.owner) {\n <div class=\"o-access-rights-share__group u-display-flex -justify-space-between -align-center\">\n <span class=\"o-access-rights-share__group-name a-h4\">{{ '@pry.share.me' | i18n }}</span>\n <span class=\"o-access-rights-share__owner\">{{ '@pry.share.owner' | i18n }}</span>\n </div>\n }\n @for (group of value | keyvalue; track group.key) {\n <div class=\"o-access-rights-share__group u-display-flex -justify-space-between\">\n <label class=\"o-access-rights-share__group-name a-h4\" for=\"modify-{{ group.key }}-access-rights-select\">{{\n getGroupLabelByName(group.key, i18n)\n }}</label>\n <div class=\"u-display-flex -align-center\">\n <pry-select\n id=\"modify-{{ group.key }}-access-rights-select\"\n class=\"o-access-rights-share__modify-access-rights\"\n name=\"modify-group-access-rights-select\"\n [(ngModel)]=\"group.value\"\n (ngModelChange)=\"modifyGroupAccess(group.key, group.value)\"\n [items]=\"accessRights\"\n bindValue=\"value\"\n bindLabel=\"label\"\n ></pry-select>\n <button\n role=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.action.delete' | i18n\"\n (click)=\"removeGroupAccess(group.key)\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"15\" [width]=\"15\"></pry-icon>\n </button>\n </div>\n </div>\n }\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7858
+ }
7859
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryAccessRightsShareComponent, decorators: [{
7860
+ type: Component,
7861
+ args: [{ selector: 'pry-access-rights-share', providers: [
7862
+ {
7863
+ provide: NG_VALUE_ACCESSOR,
7864
+ useExisting: forwardRef(() => PryAccessRightsShareComponent),
7865
+ multi: true
7866
+ }
7867
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"o-access-rights-share\">\n <label for=\"share-group-select\" class=\"a-h4\">{{ '@pry.share.dashboardAccess' | i18n }}</label>\n <form class=\"u-display-flex\">\n <fieldset class=\"m-grouped-select u-display-flex\" name=\"add-access-rights\">\n <pry-select\n id=\"share-group-select\"\n class=\"o-access-rights-share__group-select\"\n name=\"share-group-select\"\n [(ngModel)]=\"selectedGroups\"\n [items]=\"groups$ | async\"\n bindLabel=\"label\"\n placeholder=\"{{ '@pry.share.placeholder' | i18n }}\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n ></pry-select>\n <pry-select\n id=\"share-access-rights-select\"\n class=\"o-access-rights-share__access-rights-select\"\n name=\"share-access-rights-select\"\n [(ngModel)]=\"selectedAccessRight\"\n [items]=\"accessRights\"\n bindValue=\"value\"\n bindLabel=\"label\"\n ></pry-select>\n </fieldset>\n <button role=\"button\" class=\"a-btn a-btn--primary\" (click)=\"addAccess()\" [disabled]=\"isAddingDisabled()\">\n {{ '@pry.action.add' | i18n }}\n </button>\n </form>\n <label for=\"share-access-rights-select\" class=\"a-label\">{{ '@pry.share.accessDescription' | i18n }}</label>\n <div class=\"o-access-rights-share__groups\">\n @if (manifestDescription?.owner) {\n <div class=\"o-access-rights-share__group u-display-flex -justify-space-between -align-center\">\n <span class=\"o-access-rights-share__group-name a-h4\">{{ '@pry.share.me' | i18n }}</span>\n <span class=\"o-access-rights-share__owner\">{{ '@pry.share.owner' | i18n }}</span>\n </div>\n }\n @for (group of value | keyvalue; track group.key) {\n <div class=\"o-access-rights-share__group u-display-flex -justify-space-between\">\n <label class=\"o-access-rights-share__group-name a-h4\" for=\"modify-{{ group.key }}-access-rights-select\">{{\n getGroupLabelByName(group.key, i18n)\n }}</label>\n <div class=\"u-display-flex -align-center\">\n <pry-select\n id=\"modify-{{ group.key }}-access-rights-select\"\n class=\"o-access-rights-share__modify-access-rights\"\n name=\"modify-group-access-rights-select\"\n [(ngModel)]=\"group.value\"\n (ngModelChange)=\"modifyGroupAccess(group.key, group.value)\"\n [items]=\"accessRights\"\n bindValue=\"value\"\n bindLabel=\"label\"\n ></pry-select>\n <button\n role=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.action.delete' | i18n\"\n (click)=\"removeGroupAccess(group.key)\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"15\" [width]=\"15\"></pry-icon>\n </button>\n </div>\n </div>\n }\n </div>\n</div>\n" }]
7868
+ }], ctorParameters: () => [{ type: i1.Store }, { type: PryI18nService }], propDecorators: { manifestDescription: [{
7869
+ type: Input,
7870
+ args: [{ required: true }]
7871
+ }], allowedGroups: [{
7872
+ type: Input
7873
+ }] } });
7700
7874
 
7701
7875
  const MIME_TYPE_RESULTSET = 'application/resultset';
7702
7876
 
@@ -10870,7 +11044,7 @@ class ManifestService {
10870
11044
  .select(ConfigSelectors.refUrl)
10871
11045
  .pipe(mergeMap((url) => this.httpClient.get(encodeURI(`${url}/users/me/dashboards/id/${id}/manifest`))));
10872
11046
  }
10873
- save(name, manifest, id, description, image, metadata, groups, additionalInformation) {
11047
+ save(name, manifest, id, description, image, metadata, accesRightsByGroup, additionalInformation) {
10874
11048
  return this.store.select(ConfigSelectors.refUrl).pipe(mergeMap((url) => {
10875
11049
  return this.httpClient.post(encodeURI(`${url}/users/me/dashboards`), {
10876
11050
  id,
@@ -10881,7 +11055,7 @@ class ManifestService {
10881
11055
  cover: true,
10882
11056
  metadata,
10883
11057
  datasource: ManifestUtils.getDatasourcesUsedByManifest(manifest).map((ds) => ds.datasetId),
10884
- groups,
11058
+ accesRightsByGroup,
10885
11059
  additionalInformation
10886
11060
  });
10887
11061
  }));
@@ -11219,7 +11393,7 @@ class DashboardEffects {
11219
11393
  });
11220
11394
  })), { dispatch: false });
11221
11395
  this.saveManifest$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.saveManifest), withLatestFrom(this.store.select(DashboardSelectors.globalManifest)), withLatestFrom(this.store.select(DataSourceSelectors.datasets)), mergeMap$1(([[action, currentManifest], datasets]) => this.manifestService
11222
- .save(action.name, action.manifest ?? currentManifest, action.id, action.description, action.image, action.metadata, action.groups, action.additionalInformation)
11396
+ .save(action.name, action.manifest ?? currentManifest, action.id, action.description, action.image, action.metadata, action.accessRightsByGroup, action.additionalInformation)
11223
11397
  .pipe(tap((response) => {
11224
11398
  this.snackBar.open({
11225
11399
  message: this.translateService.instant('@pry.toolbox.manifest.saved', { viewId: action.name }),
@@ -12465,15 +12639,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
12465
12639
 
12466
12640
  class PryShareModule {
12467
12641
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryShareModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12468
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: PryShareModule, declarations: [PryShareComponent, PryGroupShareComponent], imports: [CommonModule, FormsModule, PrySelectModule, PryI18nModule, PryCoreModule, PryDashboardModule], exports: [PryShareComponent, PryGroupShareComponent] }); }
12469
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryShareModule, imports: [CommonModule, FormsModule, PrySelectModule, PryI18nModule, PryCoreModule, PryDashboardModule] }); }
12642
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: PryShareModule, declarations: [PryShareComponent, PryGroupShareComponent, PryAccessRightsShareComponent], imports: [CommonModule, FormsModule, PrySelectModule, PryI18nModule, PryCoreModule, PryDashboardModule, PryIconModule], exports: [PryShareComponent, PryGroupShareComponent, PryAccessRightsShareComponent] }); }
12643
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryShareModule, imports: [CommonModule, FormsModule, PrySelectModule, PryI18nModule, PryCoreModule, PryDashboardModule, PryIconModule] }); }
12470
12644
  }
12471
12645
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryShareModule, decorators: [{
12472
12646
  type: NgModule,
12473
12647
  args: [{
12474
- imports: [CommonModule, FormsModule, PrySelectModule, PryI18nModule, PryCoreModule, PryDashboardModule],
12475
- declarations: [PryShareComponent, PryGroupShareComponent],
12476
- exports: [PryShareComponent, PryGroupShareComponent]
12648
+ imports: [CommonModule, FormsModule, PrySelectModule, PryI18nModule, PryCoreModule, PryDashboardModule, PryIconModule],
12649
+ declarations: [PryShareComponent, PryGroupShareComponent, PryAccessRightsShareComponent],
12650
+ exports: [PryShareComponent, PryGroupShareComponent, PryAccessRightsShareComponent]
12477
12651
  }]
12478
12652
  }] });
12479
12653
 
@@ -12885,5 +13059,5 @@ function filterLoader(module, prop) {
12885
13059
  * Generated bundle index. Do not edit.
12886
13060
  */
12887
13061
 
12888
- export { AccordionComponent, AccordionItemComponent, Aggregation, BASE_DISPLAY_OPTIONS, BaseFilterComponent, BaseFilterModule, BaseLayoutComponent, BaseMenuComponent, BaseToolboxComponent, BaseTooltipComponent, BaseTooltipModule, BaseWidgetComponent, BaseWidgetModule, BusService, CategoryActions, CategorySelectors, CategoryService, ChartOptionDefault, ChipsSelectorComponent, ClassActions, ClassSelectors, ClassService, ConfigActions, ConfigSelectors, ConfigService, ContextMenuActions, ContextMenuComponent, ContextMenuSelectors, DEFAULT_CATEGORY_UUID, DEFAULT_COLUMNS_NUMBER, DEFAULT_DASHBOARD_ICON_URL, DEFAULT_GAP_PX, DEFAULT_ICON_URL, DEFAULT_MSG_TIMEOUT, DEFAULT_NAMED_QUERY_ID, DEFAULT_PROJECTION, DEFAULT_RESTITUTION_ICON_URL, DEFAULT_ROWS_NUMBER, DEFAULT_ROW_HEIGHT_PX, DEFAULT_SEARCH_LIMIT_NUMBER, DELAY_FOR_HIDE, DashboardActions, DashboardComponent, DashboardGridLayout, DashboardSelectors, DataSourceActions, DataSourceSelectors, DataSourceService, DataWidgetComponent, DatasourceSelectorComponent, DatasourceUtils, DateRangeHighlightPipe, DateUtils, DefaultTooltipComponent, ENV_OPTIONS, EXPLORE_NAMED_QUERY_ID, EllipsisDirective, FIELD_OPTIONS, FIELD_UUID, FILTERS_DOMAIN, FILTER_DEFINITION, FieldActions, FieldSelectors, FieldService, FieldType, FilterFactoryService, FilterGroupComponent, FilterInstanciatorComponent, GeoMetadata, GeometricFieldTypes, GetSecuredImagePipe, GraphType, HTTP_ORIGIN_METADATA, I18nPipe, INTERNALLY_STORED_IMAGE_PREFIX, IconPosition, ImageActions, ImageService, ImagesSelectors, ItemUtils, LibraryTypes, LoopScrollColumnComponent, METADATA_TYPE, META_OPTIONS, MIME_TYPE_RESULTSET, MIME_TYPE_WIDGET_MANIFEST, MIME_TYPE_WIDGET_SIZE, MIME_TYPE_WIDGET_TYPE, ManifestService, ManifestUtils, ManifestsComponent, MarkSubType, MarkType, MetadataComponent, NamedQueryTypes, NumericFieldTypes, OPERATOR_OPTIONS, Operation, PRY_ACCESS_GUARD, PRY_ACCESS_TOKEN, PRY_CUSTOMEVENT_TYPE, PRY_DIALOG_DATA, PRY_GEOAUTH_TOKEN, PryAboutComponent, PryAboutModule, PryAccessDirective, PryAccessUtils, PryAggregationService, PryBackendAggregationService, PryBaseAccess, PryBaseAccessGuard, PryCoreModule, PryDashboardModule, PryDatasetType, PryDatePickerComponent, PryDatePickerModule, PryDefaultAccessGuard, PryDefaultAccessService, PryDefaultGeoAuthService, PryDialogConfirmComponent, PryDialogRef, PryDialogService, PryEditInputComponent, PryEditInputModule, PryFilterGroupCssComponent, PryFrontendAggregationService, PryGeoAuthService, PryGroupShareComponent, PryHiddenWhenOverlay, PryHiddenWhenOverlayDirective, PryHttpErrorInterceptorService, PryI18nModule, PryI18nService, PryIconComponent, PryIconModule, PryModalComponent, PryModalModule, PryModalStatusComponent, PryModalStatusModule, PryNqColorSelectorComponent, PryObjectEditionComponent, PryOverlayDirective, PryOverlayModule, PryRangeComponent, PryRangeModule, PrySelectComponent, PrySelectImageComponent, PrySelectModule, PryShareComponent, PryShareModule, PrySnackbarComponent, PrySnackbarModule, PrySnackbarService, PrySortDataPipe, PrySortHeaderComponent, PrySortHeaderDirective, PrySortModule, PrySortTableDirective, PryTimePickerComponent, PryTitleService, PryToggleComponent, PryToggleModule, PryUploadComponent, PryVisibilityType, PryWidgetHeaderComponent, RawService, RelationTypesActions, RelationTypesSelectors, RelationTypesService, ResultSetSizePipe, ResultsetUtils, SYMBOL_DOMAIN, SearchActions, SearchSelectors, SearchService, SettingsComponent, SubscriptionnerDirective, SymbolService, TABLE_ATTR_DOMAIN, TILE_ATTR_DOMAIN, TOOLTIPS_DOMAIN, TOOLTIP_DEFINITION, TabComponent, TabGroupComponent, TextFieldTypes, ToolboxManifestService, ToolboxMenuService, TooltipFactoryService, TooltipMode, TranslateIdPipe, TranslateItemToSymbolPipe, UNKNOWN_DATASOURCE, USE_CURRENT_RESULTSET, VARIABLE_TYPE, VegaColorType, VegaType, ViewMode, VizualizeRawComponent, WIDGET_DEFINITION, WIDGET_HEADER_HEIGHT, WebsocketService, WidgetFactoryService, WidgetInstanciatorComponent, WidgetPlaceholderComponent, WidgetPlacementUtils, WmsService, adapter$2 as adapter, aggregationDefault, baseItemProperties, canManifestBeMadePublic, classReducer, classesFeatureKey, compareOperationFunctions, contextMenuFeatureKey, contextMenuReducer, createPlacedWidgetCopy, dashboardFeatureKey, dashboardInitialState, dashboardReducer, dataSourceFeatureKey, dataSourceReducer, deepMerge, defaultColors, defaultMenuStructure, enTranslations$1 as enTranslations, filterLoader, frTranslations$1 as frTranslations, getCommonDatasourceGroupsForManifest, getDisplayOptions, httpErrorOptions, imageFeatureKey, imageReducer, initialClassState, initialContextMenuState, initialDataSourceState, initialImageState, initialSearchState, latLonToGeographicFieldTransformation, markTypesDefault, notificationFeatureKey, orderWidgetsAccordingToPlacement, searchFeatureKey, searchReducer, selectAll$2 as selectAll, selectEntities$2 as selectEntities, solveCollisions, solvingCollisionOptions, sortByName$2 as sortByName, subTypesDefault, tooltipLoader, vegaColorSchemesDefault, widgetLoader, widgetMapConfig };
13062
+ export { AccordionComponent, AccordionItemComponent, Aggregation, BASE_DISPLAY_OPTIONS, BaseFilterComponent, BaseFilterModule, BaseLayoutComponent, BaseMenuComponent, BaseToolboxComponent, BaseTooltipComponent, BaseTooltipModule, BaseWidgetComponent, BaseWidgetModule, BusService, CategoryActions, CategorySelectors, CategoryService, ChartOptionDefault, ChipsSelectorComponent, ClassActions, ClassSelectors, ClassService, ConfigActions, ConfigSelectors, ConfigService, ContextMenuActions, ContextMenuComponent, ContextMenuSelectors, DEFAULT_CATEGORY_UUID, DEFAULT_COLUMNS_NUMBER, DEFAULT_DASHBOARD_ICON_URL, DEFAULT_GAP_PX, DEFAULT_ICON_URL, DEFAULT_MSG_TIMEOUT, DEFAULT_NAMED_QUERY_ID, DEFAULT_PROJECTION, DEFAULT_RESTITUTION_ICON_URL, DEFAULT_ROWS_NUMBER, DEFAULT_ROW_HEIGHT_PX, DEFAULT_SEARCH_LIMIT_NUMBER, DELAY_FOR_HIDE, DashboardActions, DashboardComponent, DashboardGridLayout, DashboardSelectors, DataSourceActions, DataSourceSelectors, DataSourceService, DataWidgetComponent, DatasourceSelectorComponent, DatasourceUtils, DateRangeHighlightPipe, DateUtils, DefaultTooltipComponent, ENV_OPTIONS, EXPLORE_NAMED_QUERY_ID, EllipsisDirective, FIELD_OPTIONS, FIELD_UUID, FILTERS_DOMAIN, FILTER_DEFINITION, FieldActions, FieldSelectors, FieldService, FieldType, FilterFactoryService, FilterGroupComponent, FilterInstanciatorComponent, GeoMetadata, GeometricFieldTypes, GetSecuredImagePipe, GraphType, HTTP_ORIGIN_METADATA, I18nPipe, INTERNALLY_STORED_IMAGE_PREFIX, IconPosition, ImageActions, ImageService, ImagesSelectors, ItemUtils, LibraryTypes, LoopScrollColumnComponent, METADATA_TYPE, META_OPTIONS, MIME_TYPE_RESULTSET, MIME_TYPE_WIDGET_MANIFEST, MIME_TYPE_WIDGET_SIZE, MIME_TYPE_WIDGET_TYPE, ManifestService, ManifestUtils, ManifestsComponent, MarkSubType, MarkType, MetadataComponent, NamedQueryTypes, NumericFieldTypes, OPERATOR_OPTIONS, Operation, PRY_ACCESS_GUARD, PRY_ACCESS_TOKEN, PRY_CUSTOMEVENT_TYPE, PRY_DIALOG_DATA, PRY_GEOAUTH_TOKEN, PryAboutComponent, PryAboutModule, PryAccessDirective, PryAccessRightsShareComponent, PryAccessUtils, PryAggregationService, PryBackendAggregationService, PryBaseAccess, PryBaseAccessGuard, PryCoreModule, PryDashboardModule, PryDatasetType, PryDatePickerComponent, PryDatePickerModule, PryDefaultAccessGuard, PryDefaultAccessService, PryDefaultGeoAuthService, PryDialogConfirmComponent, PryDialogRef, PryDialogService, PryEditInputComponent, PryEditInputModule, PryFilterGroupCssComponent, PryFrontendAggregationService, PryGeoAuthService, PryGroupShareComponent, PryHiddenWhenOverlay, PryHiddenWhenOverlayDirective, PryHttpErrorInterceptorService, PryI18nModule, PryI18nService, PryIconComponent, PryIconModule, PryModalComponent, PryModalModule, PryModalStatusComponent, PryModalStatusModule, PryNqColorSelectorComponent, PryObjectEditionComponent, PryOverlayDirective, PryOverlayModule, PryRangeComponent, PryRangeModule, PrySelectComponent, PrySelectImageComponent, PrySelectModule, PryShareComponent, PryShareModule, PrySnackbarComponent, PrySnackbarModule, PrySnackbarService, PrySortDataPipe, PrySortHeaderComponent, PrySortHeaderDirective, PrySortModule, PrySortTableDirective, PryTimePickerComponent, PryTitleService, PryToggleComponent, PryToggleModule, PryUploadComponent, PryVisibilityType, PryWidgetHeaderComponent, READ_ACCESS, RawService, RelationTypesActions, RelationTypesSelectors, RelationTypesService, ResultSetSizePipe, ResultsetUtils, SYMBOL_DOMAIN, SearchActions, SearchSelectors, SearchService, SettingsComponent, SubscriptionnerDirective, SymbolService, TABLE_ATTR_DOMAIN, TILE_ATTR_DOMAIN, TOOLTIPS_DOMAIN, TOOLTIP_DEFINITION, TabComponent, TabGroupComponent, TextFieldTypes, ToolboxManifestService, ToolboxMenuService, TooltipFactoryService, TooltipMode, TranslateIdPipe, TranslateItemToSymbolPipe, UNKNOWN_DATASOURCE, USE_CURRENT_RESULTSET, VARIABLE_TYPE, VegaColorType, VegaType, ViewMode, VizualizeRawComponent, WIDGET_DEFINITION, WIDGET_HEADER_HEIGHT, WRITE_ACCESS, WebsocketService, WidgetFactoryService, WidgetInstanciatorComponent, WidgetPlaceholderComponent, WidgetPlacementUtils, WmsService, adapter$2 as adapter, aggregationDefault, baseItemProperties, canManifestBeMadePublic, classReducer, classesFeatureKey, compareOperationFunctions, contextMenuFeatureKey, contextMenuReducer, createPlacedWidgetCopy, dashboardFeatureKey, dashboardInitialState, dashboardReducer, dataSourceFeatureKey, dataSourceReducer, deepMerge, defaultColors, defaultMenuStructure, enTranslations$1 as enTranslations, filterLoader, frTranslations$1 as frTranslations, getAccessArray, getAccessRightsArrayByGroup, getAccessRightsStringByGroup, getAccessString, getCommonDatasourceGroupsForManifest, getDisplayOptions, getGroupLabel, getGroupLabelByName, httpErrorOptions, imageFeatureKey, imageReducer, initialClassState, initialContextMenuState, initialDataSourceState, initialImageState, initialSearchState, latLonToGeographicFieldTransformation, markTypesDefault, notificationFeatureKey, orderWidgetsAccordingToPlacement, searchFeatureKey, searchReducer, selectAll$2 as selectAll, selectEntities$2 as selectEntities, solveCollisions, solvingCollisionOptions, sortByName$2 as sortByName, subTypesDefault, tooltipLoader, vegaColorSchemesDefault, widgetLoader, widgetMapConfig };
12889
13063
  //# sourceMappingURL=provoly-dashboard.mjs.map