@provoly/dashboard 0.14.9 → 0.14.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/components/admin-layout/admin-layout.component.d.ts +5 -3
- package/assets/svgs/map.svg +1 -1
- package/components/metadata-editor/metadata-editor.component.d.ts +1 -3
- package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +1 -1
- package/esm2022/admin/components/admin-layout/admin-layout.component.mjs +10 -7
- package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +1 -1
- package/esm2022/admin/i18n/en.translations.mjs +2 -2
- package/esm2022/admin/i18n/fr.translations.mjs +4 -4
- package/esm2022/components/metadata-editor/metadata-editor.component.mjs +8 -29
- package/esm2022/lib/core/components/about/about.component.mjs +29 -0
- package/esm2022/lib/core/components/about/pry-about.module.mjs +21 -0
- package/esm2022/lib/core/components/icon/icon.component.mjs +5 -1
- package/esm2022/lib/core/i18n/en.translations.mjs +12 -2
- package/esm2022/lib/core/i18n/fr.translations.mjs +12 -2
- package/esm2022/lib/core/i18n/i18n.pipe.mjs +4 -3
- package/esm2022/lib/core/i18n/i18n.service.mjs +5 -5
- package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +1 -1
- package/esm2022/lib/core/public-api.mjs +3 -1
- package/esm2022/lib/core/store/class/class.effects.mjs +1 -1
- package/esm2022/lib/core/store/config/config.actions.mjs +5 -2
- package/esm2022/lib/core/store/config/config.effects.mjs +4 -1
- package/esm2022/lib/core/store/config/config.reducer.mjs +9 -2
- package/esm2022/lib/core/store/config/config.selectors.mjs +6 -4
- package/esm2022/lib/core/store/config/config.service.mjs +36 -2
- package/esm2022/lib/core/store/config/versions.interface.mjs +2 -0
- package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +1 -16
- package/esm2022/lib/dashboard/components/manifests/manifests.component.mjs +3 -1
- package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +3 -2
- package/esm2022/lib/dashboard/store/dashboard.actions.mjs +2 -2
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +12 -4
- package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +7 -1
- package/esm2022/lib/dashboard/store/manifest.service.mjs +2 -3
- package/esm2022/notification/store/notification.effects.mjs +3 -3
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +23 -18
- package/esm2022/presentation/components/presentation.component.mjs +18 -18
- package/esm2022/presentation/style/css.component.mjs +2 -2
- package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +3 -3
- package/esm2022/restitution/components/restitution-list-item/restitution-list-item.component.mjs +6 -3
- package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.mjs +6 -3
- package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors.component.mjs +2 -2
- package/esm2022/supervision/components/supervision-layout/supervision-layout.component.mjs +2 -2
- package/esm2022/supervision/components/supervision.component.mjs +2 -2
- package/esm2022/supervision/store/supervision.actions.mjs +1 -1
- package/esm2022/supervision/store/supervision.reducer.mjs +3 -2
- package/esm2022/supervision/store/supervision.selectors.mjs +2 -2
- package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +18 -11
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +20 -6
- package/esm2022/widgets/widget-aggregated-chart/i18n/fr.translations.mjs +1 -2
- package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +2 -2
- package/fesm2022/provoly-dashboard-admin.mjs +14 -11
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +7 -28
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-notification.mjs +2 -2
- package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +41 -37
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +7 -4
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-supervision.mjs +11 -8
- package/fesm2022/provoly-dashboard-supervision.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +17 -10
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +19 -6
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +165 -54
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/components/about/about.component.d.ts +12 -0
- package/lib/core/components/about/pry-about.module.d.ts +10 -0
- package/lib/core/i18n/en.translations.d.ts +10 -0
- package/lib/core/i18n/fr.translations.d.ts +10 -0
- package/lib/core/i18n/i18n.service.d.ts +2 -2
- package/lib/core/model/widget-map-manifest.interface.d.ts +2 -0
- package/lib/core/public-api.d.ts +2 -0
- package/lib/core/store/config/config.actions.d.ts +12 -0
- package/lib/core/store/config/config.effects.d.ts +6 -0
- package/lib/core/store/config/config.reducer.d.ts +2 -0
- package/lib/core/store/config/config.selectors.d.ts +1 -0
- package/lib/core/store/config/config.service.d.ts +2 -0
- package/lib/core/store/config/versions.interface.d.ts +10 -0
- package/lib/dashboard/store/dashboard.actions.d.ts +4 -4
- package/lib/dashboard/store/manifest.service.d.ts +1 -1
- package/package.json +25 -25
- package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +4 -3
- package/presentation/components/presentation.component.d.ts +2 -2
- package/presentation/style/_o-pry-new-presentation.scss +7 -0
- package/restitution/components/restitution-list-item/restitution-list-item.component.d.ts +3 -2
- package/styles/layout/_o-base-layout.scss +8 -1
- package/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.d.ts +1 -1
- package/supervision/store/supervision.actions.d.ts +2 -2
- package/supervision/store/supervision.reducer.d.ts +1 -1
- package/supervision/store/supervision.selectors.d.ts +1 -1
- package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +7 -0
- package/widgets/widget-aggregated-chart/i18n/fr.translations.d.ts +0 -1
|
@@ -144,15 +144,11 @@ class PryMetadataEditorComponent extends SubscriptionnerDirective {
|
|
|
144
144
|
set metadata(metadata) {
|
|
145
145
|
this._metadata$.next(metadata);
|
|
146
146
|
}
|
|
147
|
-
set initialMetadataSelection(metadataName) {
|
|
148
|
-
this._initialMetadataSelection$.next(metadataName);
|
|
149
|
-
}
|
|
150
147
|
constructor(store, formBuilder) {
|
|
151
148
|
super();
|
|
152
149
|
this.store = store;
|
|
153
150
|
this.formBuilder = formBuilder;
|
|
154
151
|
this._metadata$ = new BehaviorSubject([]);
|
|
155
|
-
this._initialMetadataSelection$ = new BehaviorSubject('');
|
|
156
152
|
this.isSubmitted = false;
|
|
157
153
|
this.isModification = false;
|
|
158
154
|
this._type$ = new BehaviorSubject('meta');
|
|
@@ -180,27 +176,12 @@ class PryMetadataEditorComponent extends SubscriptionnerDirective {
|
|
|
180
176
|
return (userProfileDefs ?? []).filter((meta) => !userProfileIds?.includes(meta.id));
|
|
181
177
|
}
|
|
182
178
|
}));
|
|
183
|
-
this.subscriptions.add(
|
|
184
|
-
this.
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
this.
|
|
188
|
-
|
|
189
|
-
let initiallySelectedMetaAvailable = availableMeta.find((metadata) => metadata.name === initiallySelectedMeta);
|
|
190
|
-
if (!!initiallySelectedMetaAvailable) {
|
|
191
|
-
this.form.patchValue({
|
|
192
|
-
metadata: initiallySelectedMetaAvailable ?? availableMeta[0]
|
|
193
|
-
});
|
|
194
|
-
this.onMetaChange(initiallySelectedMetaAvailable ?? availableMeta[0]);
|
|
195
|
-
this.form.patchValue({ value: '' });
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
this.store.dispatch(MetadataActions.isEditable({ editable: true }));
|
|
199
|
-
this.form.patchValue({
|
|
200
|
-
metadata: allMeta.find((metadata) => metadata.name === initiallySelectedMeta),
|
|
201
|
-
value: inputMeta.find((meta) => this.metaDefinition(meta).name === initiallySelectedMeta)?.value
|
|
202
|
-
});
|
|
203
|
-
}
|
|
179
|
+
this.subscriptions.add(this.availableMetadata$.subscribe((meta) => {
|
|
180
|
+
this.form.patchValue({
|
|
181
|
+
metadata: meta[0]
|
|
182
|
+
});
|
|
183
|
+
this.onMetaChange(meta[0]);
|
|
184
|
+
this.form.patchValue({ value: '' });
|
|
204
185
|
}));
|
|
205
186
|
}
|
|
206
187
|
onMetaChange(metadata) {
|
|
@@ -250,7 +231,7 @@ class PryMetadataEditorComponent extends SubscriptionnerDirective {
|
|
|
250
231
|
}
|
|
251
232
|
}
|
|
252
233
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryMetadataEditorComponent, deps: [{ token: i1.Store }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
253
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: { isModification: "isModification", targetId: "targetId", type: "type", metadata: "metadata"
|
|
234
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: { isModification: "isModification", targetId: "targetId", type: "type", metadata: "metadata" }, outputs: { addMeta: "addMeta", removeMeta: "removeMeta" }, usesInheritance: true, ngImport: i0, template: "<pry-metadata-editor-css></pry-metadata-editor-css>\n<div *ngFor=\"let metadata of (_metadata$ | async) ?? []\">\n <div class=\"o-tabs__panel__content__actions\">\n <div class=\"o-tabs__panel__content__actions__text\">\n <span class=\"o-tabs__panel__content__actions__text__label\">{{ metaDefinition(metadata).name }} :</span>\n <span class=\"o-tabs__panel__content__actions__text__value\">{{ metadata.value }}</span>\n </div>\n\n <div class=\"o-tabs__panel__content__actions__buttons\">\n <ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.edit' | i18n }} {{ metaDefinition(metadata).name }}</span>\n <pry-icon\n class=\"edit-icon\"\n iconSvg=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"editMetadata(metadata)\"\n ></pry-icon>\n </button>\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }} {{ metaDefinition(metadata).name }}</span>\n <pry-icon\n class=\"delete-icon\"\n iconSvg=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"removeMetadata(metadata)\"\n ></pry-icon>\n </button>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <form class=\"o-form -border-top\" [formGroup]=\"form\" (ngSubmit)=\"addDatasetMetadata()\">\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.action.editProfil' | i18n }}</legend>\n\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label for=\"metadata\" id=\"metadata-label\" class=\"a-label\">Data</label>\n <pry-select\n id=\"metadata\"\n class=\"a-pry-select o-metadata-editor\"\n formControlName=\"metadata\"\n [items]=\"availableMetadata$ | async\"\n (ngModelChange)=\"onMetaChange($event)\"\n [isForm]=\"true\"\n [itemsAsOption]=\"true\"\n bindLabel=\"name\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('metadata')?.invalid ? 'metadata-label metadata-error' : 'metadata-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('metadata')?.invalid\"\n >\n </pry-select>\n <label\n *ngIf=\"isSubmitted && form.get('metadata')?.invalid\"\n id=\"metadata-error\"\n for=\"metadata\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n </div>\n\n <ng-container *ngIf=\"form.value.metadata\">\n <ng-container *ngIf=\"form.value['metadata']['type'] === 'DATE'; else inputList\">\n <div class=\"m-form-label-field\">\n <label id=\"form_date-label\" for=\"form_date\" class=\"a-label\">\n {{ '@pry.action.selectDate' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"form_date\"\n type=\"date\"\n class=\"a-form-field\"\n formControlName=\"value\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('value')?.invalid ? 'form-date-label form-date-error' : 'form-date-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('value')?.invalid\"\n required\n />\n <label\n *ngIf=\"isSubmitted && form.get('value')?.invalid\"\n id=\"form_date-error\"\n for=\"form_date\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n </div>\n </ng-container>\n\n <ng-template #inputList>\n <ng-container *ngIf=\"form.value['metadata']['type'] === 'LIST'; else inputText\">\n <div class=\"m-form-label-field\">\n <label id=\"list-label\" class=\"a-label\" for=\"list\">{{ '@pry.action.choiceInList' | i18n }}</label>\n <pry-select\n id=\"list\"\n class=\"a-pry-select\"\n formControlName=\"value\"\n [items]=\"form.value['metadata']['allowedValues']\"\n [isForm]=\"true\"\n aria-labelledby=\"list-label\"\n ></pry-select>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template #inputText>\n <div class=\"m-form-label-field\">\n <label id=\"text-label\" class=\"a-label\" for=\"text\">\n {{ '@pry.action.text' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"text\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"value\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('value')?.invalid ? 'text-label text-error' : 'text-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('value')?.invalid\"\n required\n />\n <label\n *ngIf=\"isSubmitted && form.get('value')?.invalid\"\n id=\"test-error\"\n for=\"text\"\n class=\"a-label a-label--help -error\"\n >\n <span *ngIf=\"form.get('value')?.hasError('required')\">{{ '@pry.admin.required' | i18n }}</span>\n <ng-container *ngIf=\"form.get('value')?.hasError('pattern')\">\n <span *ngIf=\"form.value['metadata']['type'] === 'DOUBLE'\">\n {{ '@pry.admin.environment.formatDouble' | i18n }}\n </span>\n <span *ngIf=\"form.value['metadata']['type'] === 'INTEGER'\">\n {{ '@pry.admin.environment.formatInt' | i18n }}\n </span>\n </ng-container>\n </label>\n </div>\n </ng-template>\n </ng-container>\n </fieldset>\n\n <div class=\"m-btn-group -end\">\n <button type=\"submit\" class=\"a-btn a-btn--primary\">\n {{ (isModification ? '@pry.action.editMetadata' : '@pry.action.addMetadata') | i18n }}\n </button>\n </div>\n </form>\n</ng-container>\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: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.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: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: PryMetadataEditorCssComponent, selector: "pry-metadata-editor-css" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
|
|
254
235
|
}
|
|
255
236
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryMetadataEditorComponent, decorators: [{
|
|
256
237
|
type: Component,
|
|
@@ -267,8 +248,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
267
248
|
type: Input
|
|
268
249
|
}], metadata: [{
|
|
269
250
|
type: Input
|
|
270
|
-
}], initialMetadataSelection: [{
|
|
271
|
-
type: Input
|
|
272
251
|
}] } });
|
|
273
252
|
|
|
274
253
|
class MetadataService {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provoly-dashboard-components-metadata-editor.mjs","sources":["../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.action.ts","../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.reducer.ts","../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.selector.ts","../../../../projects/provoly/dashboard/components/metadata-editor/style/css.component.ts","../../../../projects/provoly/dashboard/components/metadata-editor/metadata-editor.component.ts","../../../../projects/provoly/dashboard/components/metadata-editor/metadata-editor.component.html","../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.service.ts","../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.effects.ts","../../../../projects/provoly/dashboard/components/metadata-editor/metadata-editor.module.ts","../../../../projects/provoly/dashboard/components/metadata-editor/provoly-dashboard-components-metadata-editor.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\nimport { IMetadata, MetadataUser, MetadataValue } from '@provoly/dashboard';\n\nexport const MetadataActions = {\n loadMetadata: createAction(`[Metadata] Load Metadata`),\n loadMetadataSuccess: createAction(`[Metadata] Load Metadata Success`, props<{ metadata: Array<IMetadata> }>()),\n loadMetadataFailure: createAction(`[Metadata] Load Metadata Failure`, props<{ error: any }>()),\n\n unselectMetadata: createAction(`[Metadata] unSelect Metadata`),\n\n goToNewMetadata: createAction(`[Metadata] go to new metadata`, props<{ route: string }>()),\n goToNewMetadataSuccess: createAction(`[Metadata] go to new metadata success`),\n goToNewMetadataFailure: createAction(`[Metadata] go to new metadata failure`, props<{ error: any }>()),\n\n createMetadata: createAction(`[Metadata] create metadata`, props<{ metadata: IMetadata }>()),\n createMetadataSuccess: createAction(`[Metadata] create metadata Success`, props<{ metadata: IMetadata }>()),\n createMetadataFailure: createAction(`[Metadata] create metadata Failure`, props<{ error: any }>()),\n\n goToDetailsView: createAction(`[Metadata] go to details view`, props<{ id: string }>()),\n goToDetailsViewSuccess: createAction(`[Metadata] go to details view success`, props<{ metadata: IMetadata }>()),\n goToDetailsViewFailure: createAction(`[Metadata] go to details view failure`, props<{ error: any }>()),\n\n addDatasetMetadata: createAction(\n `[Metadata] Add Metadata of selected Datasets`,\n props<{ datasetId: string; metadataId: string; value: any }>()\n ),\n addDatasetMetadataSuccess: createAction(\n `[Metadata] Add Metadata of selected Datasets Success`,\n props<{ datasetId: string }>()\n ),\n addDatasetMetadataFailure: createAction(\n `[Metadata] Add Metadata of selected Datasets Failure`,\n props<{ error: any }>()\n ),\n\n deleteDatasetMetadata: createAction(\n `[Metadata] Delete Metadata of selected Datasets`,\n props<{ datasetId: string; metadataId: string }>()\n ),\n deleteDatasetMetadataSuccess: createAction(\n `[Metadata] Delete Metadata of selected Datasets Success`,\n props<{ datasetId: string }>()\n ),\n deleteDatasetMetadataFailure: createAction(\n `[Metadata] Delete Metadata of selected Datasets Failure`,\n props<{ error: any }>()\n ),\n isEditable: createAction(`[Metadata] Is editable`, props<{ editable: boolean }>()),\n loadDatasetMetadata: createAction(`[Metadata] Load Metadata of selected Datasets`, props<{ datasetId: string }>()),\n loadDatasetMetadataSuccess: createAction(\n `[Metadata] Load Metadata of selected Datasets Success`,\n props<{ metadata: MetadataValue[] }>()\n ),\n loadDatasetMetadataFailure: createAction(\n `[Metadata] Load Metadata of selected Datasets Failure`,\n props<{ error: any }>()\n ),\n\n loadMetadataUser: createAction(`[Metadata/User] Load Metadata of selected Users`, props<{ userId: string }>()),\n loadMetadataUserSuccess: createAction(\n `[Metadata/User] Load Metadata of selected Users Success`,\n props<{ metadata: Array<MetadataUser> }>()\n ),\n loadMetadataUserFailure: createAction(\n `[Metadata/User] Load Metadata of selected Users Failure`,\n props<{ error: any }>()\n ),\n\n addMetadataUser: createAction(\n `[Metadata/User] Add Metadata of selected Users`,\n props<{ userId: string; metaId: string; value: any }>()\n ),\n addMetadataUserSuccess: createAction(\n `[Metadata/User] Add Metadata of selected Users Success`,\n props<{ userId: string }>()\n ),\n addMetadataUserFailure: createAction(\n `[Metadata/User] Add Metadata of selected Users Failure`,\n props<{ error: any }>()\n ),\n\n deleteMetadataUser: createAction(\n `[Metadata/User] Delete Metadata of selected Users`,\n props<{ userId: string; metadataId: string }>()\n ),\n deleteMetadataUserSuccess: createAction(\n `[Metadata/User] Delete Metadata of selected Users Success`,\n props<{ userId: string }>()\n ),\n deleteMetadataUserFailure: createAction(\n `[Metadata/User] Delete Metadata of selected Users Failure`,\n props<{ error: any }>()\n ),\n loadUserProfile: createAction(`[Metadata/User] Load Metadata`),\n loadUserProfileSuccess: createAction(`[Metadata/User] Load Success`, props<{ userProfile: Array<IMetadata> }>()),\n loadUserProfileFailure: createAction(`[Metadata/User] Load Failure`, props<{ error: any }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { IMetadata, MetadataUser } from '@provoly/dashboard';\nimport { MetadataActions } from './metadata.action';\n\nexport const metadataFeatureKey = '@pry/metadata';\n\nexport interface MetadataState {\n metadata: IMetadata[];\n selectedMetadata: string | null;\n loading: boolean;\n errors: any;\n editable: boolean;\n selectedUserProfile: Array<MetadataUser>;\n userProfile: Array<IMetadata>;\n}\n\nexport const initialMetadataState: MetadataState = {\n metadata: [],\n selectedMetadata: null,\n loading: false,\n errors: null,\n editable: false,\n selectedUserProfile: [],\n userProfile: []\n};\n\n/**\n * @TODO merge this store with admin user store ?\n */\nexport const metadataReducer = createReducer(\n initialMetadataState,\n on(MetadataActions.loadMetadataSuccess, (state, action) => ({\n ...state,\n metadata: [...action.metadata],\n loading: false\n })),\n on(\n MetadataActions.loadMetadataFailure,\n MetadataActions.goToNewMetadataFailure,\n MetadataActions.createMetadataFailure,\n MetadataActions.goToDetailsViewFailure,\n (state, action) => ({\n ...state,\n loading: false,\n errors: action.error\n })\n ),\n on(MetadataActions.unselectMetadata, (state) => ({\n ...state,\n selectedMetadata: null\n })),\n on(MetadataActions.loadMetadata, MetadataActions.goToNewMetadata, (state) => ({\n ...state,\n loading: true\n })),\n on(MetadataActions.createMetadataSuccess, (state, action) => ({\n ...state,\n metadata: [...state.metadata, action.metadata],\n loading: false\n })),\n on(MetadataActions.goToDetailsView, (state, action) => ({\n ...state,\n selectedMetadata: action.id\n })),\n on(MetadataActions.isEditable, (state, action) => ({\n ...state,\n editable: action.editable\n })),\n on(MetadataActions.loadMetadataUserSuccess, (state, action) => ({\n ...state,\n selectedUserProfile: action.metadata\n })),\n on(MetadataActions.loadUserProfile, (state) => ({\n ...state,\n loading: true\n })),\n on(MetadataActions.loadUserProfileSuccess, (state, action) => ({\n ...state,\n userProfile: [...action.userProfile],\n loading: false\n })),\n on(MetadataActions.loadUserProfileFailure, (state, action) => ({\n ...state,\n loading: false,\n errors: action.error\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { IMetadata } from '@provoly/dashboard';\nimport * as fromMetadata from './metadata.reducer';\n\nconst feature = createFeatureSelector<fromMetadata.MetadataState>(fromMetadata.metadataFeatureKey);\n\nconst metadata = createSelector(feature, (state) => state?.metadata);\nconst loading = createSelector(feature, (state) => state?.loading);\nconst selectedMetadata = createSelector(\n feature,\n (state) => (state?.metadata.find((x) => x.id === state.selectedMetadata) as IMetadata) || null\n);\nconst selectedMetadataId = createSelector(selectedMetadata, (metadata) => metadata?.id);\nconst selectMetadataById = (id: string) =>\n createSelector(metadata, (metadata: IMetadata[]) => metadata?.find((m) => m.id === id));\n\nconst editable = createSelector(feature, (state) => state.editable);\nconst selectedUserProfile = createSelector(feature, (state) => state?.selectedUserProfile);\nconst userProfile = createSelector(feature, (state) => state?.userProfile ?? []);\n\nexport const MetadataSelectors = {\n feature,\n loading,\n metadata,\n selectedMetadata,\n selectedMetadataId,\n selectMetadataById,\n editable,\n selectedUserProfile,\n userProfile\n};\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-metadata-editor-css',\n template: '',\n styleUrls: ['./_o-metadata-editor.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryMetadataEditorCssComponent {}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Store } from '@ngrx/store';\nimport { IMetadata, MetadataUser, MetadataValue, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs';\nimport { MetadataActions } from './store/metadata.action';\nimport { MetadataSelectors } from './store/metadata.selector';\n\nexport type MetaEventType = { id: string; metadataId: string; value?: string };\n\nexport const INTEGER_REGEXP_PATTERN = '^[+-]?[0-9]*$';\nexport const DOUBLE_REGEXP_PATTERN = '[+-]?([0-9]*[.])?[0-9]+';\n\n@Component({\n selector: 'pry-metadata-editor',\n templateUrl: 'metadata-editor.component.html'\n})\nexport class PryMetadataEditorComponent extends SubscriptionnerDirective {\n _metadata$ = new BehaviorSubject<(MetadataValue | MetadataUser)[]>([]);\n _initialMetadataSelection$ = new BehaviorSubject<string>('');\n form: FormGroup;\n isSubmitted = false;\n @Input() isModification = false;\n metadataDefs$: Observable<IMetadata[]>;\n availableMetadata$: Observable<IMetadata[]>;\n _type$ = new BehaviorSubject<'meta' | 'user'>('meta');\n @Output() addMeta = new EventEmitter<MetaEventType>();\n @Output() removeMeta = new EventEmitter<MetaEventType>();\n userProfileDefs$: Observable<Array<IMetadata> | undefined>;\n @Input() targetId = '';\n\n @Input() set type(type: 'meta' | 'user') {\n this._type$.next(type);\n }\n\n @Input() set metadata(metadata: MetadataValue[] | MetadataUser[]) {\n this._metadata$.next(metadata);\n }\n\n @Input() set initialMetadataSelection(metadataName: string) {\n this._initialMetadataSelection$.next(metadataName);\n }\n\n constructor(private store: Store, private formBuilder: FormBuilder) {\n super();\n\n this.form = this.formBuilder.group({\n metadata: [{}, [Validators.required]],\n value: ['', [Validators.required, Validators.pattern(INTEGER_REGEXP_PATTERN)]]\n });\n\n this.metadataDefs$ = this.store.select(MetadataSelectors.metadata);\n this.userProfileDefs$ = this.store.select(MetadataSelectors.userProfile);\n this.availableMetadata$ = combineLatest([\n this._type$,\n this._metadata$,\n this.metadataDefs$,\n this.userProfileDefs$\n ]).pipe(\n map(([type, metadata, metaDefs, userProfileDefs]) => {\n if (type === 'meta') {\n let datasetMetadataIds = metadata?.map((u) => (u as MetadataValue).metadataDef.id);\n return metaDefs.filter((meta) => !datasetMetadataIds?.includes(meta.id));\n } else {\n let userProfileIds = metadata?.map((u) => (u as MetadataUser).userProfile.id);\n return (userProfileDefs ?? []).filter((meta) => !userProfileIds?.includes(meta.id));\n }\n })\n );\n\n this.subscriptions.add(\n combineLatest([\n this.metadataDefs$,\n this.availableMetadata$,\n this._metadata$,\n this._initialMetadataSelection$\n ]).subscribe(([allMeta, availableMeta, inputMeta, initiallySelectedMeta]) => {\n let initiallySelectedMetaAvailable = availableMeta.find((metadata) => metadata.name === initiallySelectedMeta);\n if (!!initiallySelectedMetaAvailable) {\n this.form.patchValue({\n metadata: initiallySelectedMetaAvailable ?? availableMeta[0]\n });\n this.onMetaChange(initiallySelectedMetaAvailable ?? availableMeta[0]);\n this.form.patchValue({ value: '' });\n } else {\n this.store.dispatch(MetadataActions.isEditable({ editable: true }));\n this.form.patchValue({\n metadata: allMeta.find((metadata) => metadata.name === initiallySelectedMeta),\n value: inputMeta.find((meta) => this.metaDefinition(meta).name === initiallySelectedMeta)?.value\n });\n }\n })\n );\n }\n\n onMetaChange(metadata: IMetadata) {\n if (metadata) {\n if (metadata.type === 'INTEGER') {\n this.form.controls['value'].setValidators([Validators.required, Validators.pattern(INTEGER_REGEXP_PATTERN)]);\n } else if (metadata.type === 'DOUBLE') {\n this.form.controls['value'].setValidators([Validators.required, Validators.pattern(DOUBLE_REGEXP_PATTERN)]);\n } else {\n this.form.controls['value'].setValidators([Validators.required]);\n }\n this.isModification = true;\n } else {\n this.isModification = false;\n }\n }\n\n editMetadata(currentMetadata: MetadataValue | MetadataUser) {\n this.store.dispatch(MetadataActions.isEditable({ editable: true }));\n let value = currentMetadata.value;\n let datasetMetadataDef = this.metaDefinition(currentMetadata);\n\n this.form.patchValue({\n metadata: datasetMetadataDef,\n value: value\n });\n this.onMetaChange(datasetMetadataDef);\n }\n\n metaDefinition(metadata: MetadataUser | MetadataValue) {\n return this._type$.getValue() === 'user'\n ? (metadata as MetadataUser).userProfile\n : (metadata as MetadataValue).metadataDef;\n }\n\n removeMetadata(metadata: MetadataUser | MetadataValue) {\n this.removeMeta.emit({ id: this.targetId, metadataId: this.metaDefinition(metadata).id });\n }\n\n addDatasetMetadata() {\n this.isSubmitted = true;\n if (this.form.valid) {\n this.isSubmitted = false;\n this.addMeta.emit({\n id: this.targetId,\n metadataId: this.form.value['metadata']['id'],\n value: this.form.value['value']\n });\n }\n }\n}\n","<pry-metadata-editor-css></pry-metadata-editor-css>\n<div *ngFor=\"let metadata of (_metadata$ | async) ?? []\">\n <div class=\"o-tabs__panel__content__actions\">\n <div class=\"o-tabs__panel__content__actions__text\">\n <span class=\"o-tabs__panel__content__actions__text__label\">{{ metaDefinition(metadata).name }} :</span>\n <span class=\"o-tabs__panel__content__actions__text__value\">{{ metadata.value }}</span>\n </div>\n\n <div class=\"o-tabs__panel__content__actions__buttons\">\n <ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.edit' | i18n }} {{ metaDefinition(metadata).name }}</span>\n <pry-icon\n class=\"edit-icon\"\n iconSvg=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"editMetadata(metadata)\"\n ></pry-icon>\n </button>\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }} {{ metaDefinition(metadata).name }}</span>\n <pry-icon\n class=\"delete-icon\"\n iconSvg=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"removeMetadata(metadata)\"\n ></pry-icon>\n </button>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <form class=\"o-form -border-top\" [formGroup]=\"form\" (ngSubmit)=\"addDatasetMetadata()\">\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.action.editProfil' | i18n }}</legend>\n\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label for=\"metadata\" id=\"metadata-label\" class=\"a-label\">Data</label>\n <pry-select\n id=\"metadata\"\n class=\"a-pry-select o-metadata-editor\"\n formControlName=\"metadata\"\n [items]=\"availableMetadata$ | async\"\n (ngModelChange)=\"onMetaChange($event)\"\n [isForm]=\"true\"\n [itemsAsOption]=\"true\"\n bindLabel=\"name\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('metadata')?.invalid ? 'metadata-label metadata-error' : 'metadata-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('metadata')?.invalid\"\n >\n </pry-select>\n <label\n *ngIf=\"isSubmitted && form.get('metadata')?.invalid\"\n id=\"metadata-error\"\n for=\"metadata\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n </div>\n\n <ng-container *ngIf=\"form.value.metadata\">\n <ng-container *ngIf=\"form.value['metadata']['type'] === 'DATE'; else inputList\">\n <div class=\"m-form-label-field\">\n <label id=\"form_date-label\" for=\"form_date\" class=\"a-label\">\n {{ '@pry.action.selectDate' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"form_date\"\n type=\"date\"\n class=\"a-form-field\"\n formControlName=\"value\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('value')?.invalid ? 'form-date-label form-date-error' : 'form-date-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('value')?.invalid\"\n required\n />\n <label\n *ngIf=\"isSubmitted && form.get('value')?.invalid\"\n id=\"form_date-error\"\n for=\"form_date\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n </div>\n </ng-container>\n\n <ng-template #inputList>\n <ng-container *ngIf=\"form.value['metadata']['type'] === 'LIST'; else inputText\">\n <div class=\"m-form-label-field\">\n <label id=\"list-label\" class=\"a-label\" for=\"list\">{{ '@pry.action.choiceInList' | i18n }}</label>\n <pry-select\n id=\"list\"\n class=\"a-pry-select\"\n formControlName=\"value\"\n [items]=\"form.value['metadata']['allowedValues']\"\n [isForm]=\"true\"\n aria-labelledby=\"list-label\"\n ></pry-select>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template #inputText>\n <div class=\"m-form-label-field\">\n <label id=\"text-label\" class=\"a-label\" for=\"text\">\n {{ '@pry.action.text' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"text\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"value\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('value')?.invalid ? 'text-label text-error' : 'text-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('value')?.invalid\"\n required\n />\n <label\n *ngIf=\"isSubmitted && form.get('value')?.invalid\"\n id=\"test-error\"\n for=\"text\"\n class=\"a-label a-label--help -error\"\n >\n <span *ngIf=\"form.get('value')?.hasError('required')\">{{ '@pry.admin.required' | i18n }}</span>\n <ng-container *ngIf=\"form.get('value')?.hasError('pattern')\">\n <span *ngIf=\"form.value['metadata']['type'] === 'DOUBLE'\">\n {{ '@pry.admin.environment.formatDouble' | i18n }}\n </span>\n <span *ngIf=\"form.value['metadata']['type'] === 'INTEGER'\">\n {{ '@pry.admin.environment.formatInt' | i18n }}\n </span>\n </ng-container>\n </label>\n </div>\n </ng-template>\n </ng-container>\n </fieldset>\n\n <div class=\"m-btn-group -end\">\n <button type=\"submit\" class=\"a-btn a-btn--primary\">\n {{ (isModification ? '@pry.action.editMetadata' : '@pry.action.addMetadata') | i18n }}\n </button>\n </div>\n </form>\n</ng-container>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors, IMetadata, MetadataUser } from '@provoly/dashboard';\nimport { mergeMap, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MetadataService {\n constructor(private httpClient: HttpClient, private store: Store<any>) {}\n\n getMetadataList(): Observable<any> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<any>(`${url}/metadata`)));\n }\n\n getMetadata(id: string): Observable<IMetadata> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<IMetadata>(`${url}/metadata/id/${id}`)));\n }\n\n postMetadata(metadata: IMetadata): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.post<void>(`${url}/metadata`, metadata)));\n }\n\n getMetadataUser(userId: string): Observable<MetadataUser[]> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<MetadataUser[]>(`${url}/users/id/${userId}/metadata`)));\n }\n\n addMetadataUser(userId: string, metaId: string, value: any): Observable<void> {\n return this.store.select(ConfigSelectors.refUrl).pipe(\n mergeMap((url) =>\n this.httpClient.put<void>(encodeURI(`${url}/users/id/${userId}/metadata/id/${metaId}`), {\n value: value\n })\n )\n );\n }\n\n deleteMetadataUser(userId: string, metaId: string): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(\n mergeMap((url) => this.httpClient.delete<void>(encodeURI(`${url}/users/id/${userId}/metadata/id/${metaId}`)))\n );\n }\n\n getUserMetadata(): Observable<any> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<any>(`${url}/users/metadata`)));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { DataSourceActions, DataSourceService } from '@provoly/dashboard';\nimport { catchError, map, mergeMap } from 'rxjs/operators';\nimport { MetadataActions } from './metadata.action';\nimport { MetadataService } from './metadata.service';\n\n@Injectable()\nexport class MetadataEffects {\n loadMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.loadMetadata),\n mergeMap((_) =>\n this.service.getMetadataList().pipe(\n map((metadata) => MetadataActions.loadMetadataSuccess({ metadata: metadata })),\n catchError((error) => [MetadataActions.loadMetadataFailure({ error: error })])\n )\n )\n )\n );\n\n goToDetailsView$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.goToDetailsView),\n mergeMap((action) =>\n this.service.getMetadata(action.id).pipe(\n map((metadata) => MetadataActions.goToDetailsViewSuccess({ metadata })),\n catchError((error) => [MetadataActions.goToDetailsViewFailure({ error: error })])\n )\n )\n )\n );\n\n createMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.createMetadata),\n mergeMap((action) =>\n this.service.postMetadata(action.metadata).pipe(\n map(() => MetadataActions.createMetadataSuccess({ metadata: action.metadata })),\n catchError((error) => [MetadataActions.createMetadataFailure({ error: error })])\n )\n )\n )\n );\n\n createMetadataSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.createMetadataSuccess),\n map((action) => {\n return MetadataActions.loadMetadata();\n })\n )\n );\n\n addDatasetMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.addDatasetMetadata),\n mergeMap((action) =>\n this.dataSourceService.addDatasetMetadata(action.datasetId, action.metadataId, action.value).pipe(\n map(() => MetadataActions.addDatasetMetadataSuccess({ datasetId: action.datasetId })),\n catchError((error) => [MetadataActions.addDatasetMetadataFailure({ error })])\n )\n )\n )\n );\n\n addDatasetMetadataSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.addDatasetMetadataSuccess),\n mergeMap((action) => {\n return [\n DataSourceActions.dataset.getDatasetById({ id: action.datasetId }),\n MetadataActions.isEditable({ editable: false }),\n DataSourceActions.dataset.loadDataset()\n ];\n })\n )\n );\n\n deleteDatasetMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.deleteDatasetMetadata),\n mergeMap((action) =>\n this.dataSourceService.deleteDatasetMetadata(action.datasetId, action.metadataId).pipe(\n map(() => MetadataActions.deleteDatasetMetadataSuccess({ datasetId: action.datasetId })),\n catchError((error) => [MetadataActions.deleteDatasetMetadataFailure({ error })])\n )\n )\n )\n );\n\n deleteDatasetMetadataSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.deleteDatasetMetadataSuccess),\n mergeMap((action) => {\n return [\n DataSourceActions.dataset.getDatasetById({ id: action.datasetId }),\n MetadataActions.isEditable({ editable: false }),\n DataSourceActions.dataset.loadDataset()\n ];\n })\n )\n );\n\n loadMetadataUser$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.loadMetadataUser),\n mergeMap((action) =>\n this.service.getMetadataUser(action.userId).pipe(\n map((metadata) => MetadataActions.loadMetadataUserSuccess({ metadata })),\n catchError((error) => [MetadataActions.loadMetadataUserFailure({ error })])\n )\n )\n )\n );\n\n selectUser$ = createEffect(() =>\n this.actions$.pipe(\n ofType('[Admin/User] Select User'),\n map((action) => {\n // @ts-ignore\n return MetadataActions.loadMetadataUser({ userId: action.userId });\n })\n )\n );\n\n addMetadataUser$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.addMetadataUser),\n mergeMap((action) =>\n this.service.addMetadataUser(action.userId, action.metaId, action.value).pipe(\n map(() => MetadataActions.addMetadataUserSuccess({ userId: action.userId })),\n catchError((error) => [MetadataActions.addMetadataUserFailure({ error })])\n )\n )\n )\n );\n\n addMetadataUserSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.addMetadataUserSuccess),\n mergeMap((action) => {\n return [\n MetadataActions.loadMetadataUser({ userId: action.userId }),\n MetadataActions.isEditable({ editable: false })\n ];\n })\n )\n );\n\n deleteMetadataUser$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.deleteMetadataUser),\n mergeMap((action) =>\n this.service.deleteMetadataUser(action.userId, action.metadataId).pipe(\n map(() => MetadataActions.deleteMetadataUserSuccess({ userId: action.userId })),\n catchError((error) => [MetadataActions.deleteMetadataUserFailure({ error })])\n )\n )\n )\n );\n\n deleteMetadataUserSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.deleteMetadataUserSuccess),\n mergeMap((action) => {\n return [\n MetadataActions.loadMetadataUser({ userId: action.userId }),\n MetadataActions.isEditable({ editable: false })\n ];\n })\n )\n );\n\n loadUserProfile$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.loadUserProfile),\n mergeMap((_) =>\n this.service.getUserMetadata().pipe(\n map((metadata) => MetadataActions.loadUserProfileSuccess({ userProfile: metadata })),\n catchError((error) => [MetadataActions.loadUserProfileFailure({ error: error })])\n )\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private service: MetadataService,\n private dataSourceService: DataSourceService\n ) {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport { PryCoreModule, PryI18nModule, PryIconModule, PrySelectModule } from '@provoly/dashboard';\nimport { PryMetadataEditorComponent } from './metadata-editor.component';\nimport { MetadataEffects } from './store/metadata.effects';\nimport { metadataFeatureKey, metadataReducer } from './store/metadata.reducer';\nimport { PryMetadataEditorCssComponent } from './style/css.component';\n\nconst PRY_METADATA_EDITOR_COMPONENTS = [PryMetadataEditorComponent, PryMetadataEditorCssComponent];\n\n@NgModule({\n declarations: [...PRY_METADATA_EDITOR_COMPONENTS],\n exports: [...PRY_METADATA_EDITOR_COMPONENTS],\n imports: [\n CommonModule,\n StoreModule.forFeature(metadataFeatureKey, metadataReducer),\n EffectsModule.forFeature([MetadataEffects]),\n PryCoreModule,\n PryI18nModule,\n ReactiveFormsModule,\n PrySelectModule,\n PryIconModule\n ]\n})\nexport class PryExpandPanelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["fromMetadata.metadataFeatureKey","i5.PryMetadataEditorCssComponent","i1","i2","mergeMap","map","i2.MetadataService","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provoly-dashboard-components-metadata-editor.mjs","sources":["../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.action.ts","../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.reducer.ts","../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.selector.ts","../../../../projects/provoly/dashboard/components/metadata-editor/style/css.component.ts","../../../../projects/provoly/dashboard/components/metadata-editor/metadata-editor.component.ts","../../../../projects/provoly/dashboard/components/metadata-editor/metadata-editor.component.html","../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.service.ts","../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.effects.ts","../../../../projects/provoly/dashboard/components/metadata-editor/metadata-editor.module.ts","../../../../projects/provoly/dashboard/components/metadata-editor/provoly-dashboard-components-metadata-editor.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\nimport { IMetadata, MetadataUser, MetadataValue } from '@provoly/dashboard';\n\nexport const MetadataActions = {\n loadMetadata: createAction(`[Metadata] Load Metadata`),\n loadMetadataSuccess: createAction(`[Metadata] Load Metadata Success`, props<{ metadata: Array<IMetadata> }>()),\n loadMetadataFailure: createAction(`[Metadata] Load Metadata Failure`, props<{ error: any }>()),\n\n unselectMetadata: createAction(`[Metadata] unSelect Metadata`),\n\n goToNewMetadata: createAction(`[Metadata] go to new metadata`, props<{ route: string }>()),\n goToNewMetadataSuccess: createAction(`[Metadata] go to new metadata success`),\n goToNewMetadataFailure: createAction(`[Metadata] go to new metadata failure`, props<{ error: any }>()),\n\n createMetadata: createAction(`[Metadata] create metadata`, props<{ metadata: IMetadata }>()),\n createMetadataSuccess: createAction(`[Metadata] create metadata Success`, props<{ metadata: IMetadata }>()),\n createMetadataFailure: createAction(`[Metadata] create metadata Failure`, props<{ error: any }>()),\n\n goToDetailsView: createAction(`[Metadata] go to details view`, props<{ id: string }>()),\n goToDetailsViewSuccess: createAction(`[Metadata] go to details view success`, props<{ metadata: IMetadata }>()),\n goToDetailsViewFailure: createAction(`[Metadata] go to details view failure`, props<{ error: any }>()),\n\n addDatasetMetadata: createAction(\n `[Metadata] Add Metadata of selected Datasets`,\n props<{ datasetId: string; metadataId: string; value: any }>()\n ),\n addDatasetMetadataSuccess: createAction(\n `[Metadata] Add Metadata of selected Datasets Success`,\n props<{ datasetId: string }>()\n ),\n addDatasetMetadataFailure: createAction(\n `[Metadata] Add Metadata of selected Datasets Failure`,\n props<{ error: any }>()\n ),\n\n deleteDatasetMetadata: createAction(\n `[Metadata] Delete Metadata of selected Datasets`,\n props<{ datasetId: string; metadataId: string }>()\n ),\n deleteDatasetMetadataSuccess: createAction(\n `[Metadata] Delete Metadata of selected Datasets Success`,\n props<{ datasetId: string }>()\n ),\n deleteDatasetMetadataFailure: createAction(\n `[Metadata] Delete Metadata of selected Datasets Failure`,\n props<{ error: any }>()\n ),\n isEditable: createAction(`[Metadata] Is editable`, props<{ editable: boolean }>()),\n loadDatasetMetadata: createAction(`[Metadata] Load Metadata of selected Datasets`, props<{ datasetId: string }>()),\n loadDatasetMetadataSuccess: createAction(\n `[Metadata] Load Metadata of selected Datasets Success`,\n props<{ metadata: MetadataValue[] }>()\n ),\n loadDatasetMetadataFailure: createAction(\n `[Metadata] Load Metadata of selected Datasets Failure`,\n props<{ error: any }>()\n ),\n\n loadMetadataUser: createAction(`[Metadata/User] Load Metadata of selected Users`, props<{ userId: string }>()),\n loadMetadataUserSuccess: createAction(\n `[Metadata/User] Load Metadata of selected Users Success`,\n props<{ metadata: Array<MetadataUser> }>()\n ),\n loadMetadataUserFailure: createAction(\n `[Metadata/User] Load Metadata of selected Users Failure`,\n props<{ error: any }>()\n ),\n\n addMetadataUser: createAction(\n `[Metadata/User] Add Metadata of selected Users`,\n props<{ userId: string; metaId: string; value: any }>()\n ),\n addMetadataUserSuccess: createAction(\n `[Metadata/User] Add Metadata of selected Users Success`,\n props<{ userId: string }>()\n ),\n addMetadataUserFailure: createAction(\n `[Metadata/User] Add Metadata of selected Users Failure`,\n props<{ error: any }>()\n ),\n\n deleteMetadataUser: createAction(\n `[Metadata/User] Delete Metadata of selected Users`,\n props<{ userId: string; metadataId: string }>()\n ),\n deleteMetadataUserSuccess: createAction(\n `[Metadata/User] Delete Metadata of selected Users Success`,\n props<{ userId: string }>()\n ),\n deleteMetadataUserFailure: createAction(\n `[Metadata/User] Delete Metadata of selected Users Failure`,\n props<{ error: any }>()\n ),\n loadUserProfile: createAction(`[Metadata/User] Load Metadata`),\n loadUserProfileSuccess: createAction(`[Metadata/User] Load Success`, props<{ userProfile: Array<IMetadata> }>()),\n loadUserProfileFailure: createAction(`[Metadata/User] Load Failure`, props<{ error: any }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { IMetadata, MetadataUser } from '@provoly/dashboard';\nimport { MetadataActions } from './metadata.action';\n\nexport const metadataFeatureKey = '@pry/metadata';\n\nexport interface MetadataState {\n metadata: IMetadata[];\n selectedMetadata: string | null;\n loading: boolean;\n errors: any;\n editable: boolean;\n selectedUserProfile: Array<MetadataUser>;\n userProfile: Array<IMetadata>;\n}\n\nexport const initialMetadataState: MetadataState = {\n metadata: [],\n selectedMetadata: null,\n loading: false,\n errors: null,\n editable: false,\n selectedUserProfile: [],\n userProfile: []\n};\n\n/**\n * @TODO merge this store with admin user store ?\n */\nexport const metadataReducer = createReducer(\n initialMetadataState,\n on(MetadataActions.loadMetadataSuccess, (state, action) => ({\n ...state,\n metadata: [...action.metadata],\n loading: false\n })),\n on(\n MetadataActions.loadMetadataFailure,\n MetadataActions.goToNewMetadataFailure,\n MetadataActions.createMetadataFailure,\n MetadataActions.goToDetailsViewFailure,\n (state, action) => ({\n ...state,\n loading: false,\n errors: action.error\n })\n ),\n on(MetadataActions.unselectMetadata, (state) => ({\n ...state,\n selectedMetadata: null\n })),\n on(MetadataActions.loadMetadata, MetadataActions.goToNewMetadata, (state) => ({\n ...state,\n loading: true\n })),\n on(MetadataActions.createMetadataSuccess, (state, action) => ({\n ...state,\n metadata: [...state.metadata, action.metadata],\n loading: false\n })),\n on(MetadataActions.goToDetailsView, (state, action) => ({\n ...state,\n selectedMetadata: action.id\n })),\n on(MetadataActions.isEditable, (state, action) => ({\n ...state,\n editable: action.editable\n })),\n on(MetadataActions.loadMetadataUserSuccess, (state, action) => ({\n ...state,\n selectedUserProfile: action.metadata\n })),\n on(MetadataActions.loadUserProfile, (state) => ({\n ...state,\n loading: true\n })),\n on(MetadataActions.loadUserProfileSuccess, (state, action) => ({\n ...state,\n userProfile: [...action.userProfile],\n loading: false\n })),\n on(MetadataActions.loadUserProfileFailure, (state, action) => ({\n ...state,\n loading: false,\n errors: action.error\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { IMetadata } from '@provoly/dashboard';\nimport * as fromMetadata from './metadata.reducer';\n\nconst feature = createFeatureSelector<fromMetadata.MetadataState>(fromMetadata.metadataFeatureKey);\n\nconst metadata = createSelector(feature, (state) => state?.metadata);\nconst loading = createSelector(feature, (state) => state?.loading);\nconst selectedMetadata = createSelector(\n feature,\n (state) => (state?.metadata.find((x) => x.id === state.selectedMetadata) as IMetadata) || null\n);\nconst selectedMetadataId = createSelector(selectedMetadata, (metadata) => metadata?.id);\nconst selectMetadataById = (id: string) =>\n createSelector(metadata, (metadata: IMetadata[]) => metadata?.find((m) => m.id === id));\n\nconst editable = createSelector(feature, (state) => state.editable);\nconst selectedUserProfile = createSelector(feature, (state) => state?.selectedUserProfile);\nconst userProfile = createSelector(feature, (state) => state?.userProfile ?? []);\n\nexport const MetadataSelectors = {\n feature,\n loading,\n metadata,\n selectedMetadata,\n selectedMetadataId,\n selectMetadataById,\n editable,\n selectedUserProfile,\n userProfile\n};\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-metadata-editor-css',\n template: '',\n styleUrls: ['./_o-metadata-editor.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryMetadataEditorCssComponent {}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Store } from '@ngrx/store';\nimport { IMetadata, MetadataUser, MetadataValue, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs';\nimport { MetadataActions } from './store/metadata.action';\nimport { MetadataSelectors } from './store/metadata.selector';\n\nexport type MetaEventType = { id: string; metadataId: string; value?: string };\n\nexport const INTEGER_REGEXP_PATTERN = '^[+-]?[0-9]*$';\nexport const DOUBLE_REGEXP_PATTERN = '[+-]?([0-9]*[.])?[0-9]+';\n\n@Component({\n selector: 'pry-metadata-editor',\n templateUrl: 'metadata-editor.component.html'\n})\nexport class PryMetadataEditorComponent extends SubscriptionnerDirective {\n _metadata$ = new BehaviorSubject<(MetadataValue | MetadataUser)[]>([]);\n form: FormGroup;\n isSubmitted = false;\n @Input() isModification = false;\n metadataDefs$: Observable<IMetadata[]>;\n availableMetadata$: Observable<IMetadata[]>;\n _type$ = new BehaviorSubject<'meta' | 'user'>('meta');\n @Output() addMeta = new EventEmitter<MetaEventType>();\n @Output() removeMeta = new EventEmitter<MetaEventType>();\n userProfileDefs$: Observable<Array<IMetadata> | undefined>;\n @Input() targetId = '';\n\n @Input() set type(type: 'meta' | 'user') {\n this._type$.next(type);\n }\n\n @Input() set metadata(metadata: MetadataValue[] | MetadataUser[]) {\n this._metadata$.next(metadata);\n }\n\n constructor(private store: Store, private formBuilder: FormBuilder) {\n super();\n\n this.form = this.formBuilder.group({\n metadata: [{}, [Validators.required]],\n value: ['', [Validators.required, Validators.pattern(INTEGER_REGEXP_PATTERN)]]\n });\n\n this.metadataDefs$ = this.store.select(MetadataSelectors.metadata);\n this.userProfileDefs$ = this.store.select(MetadataSelectors.userProfile);\n this.availableMetadata$ = combineLatest([\n this._type$,\n this._metadata$,\n this.metadataDefs$,\n this.userProfileDefs$\n ]).pipe(\n map(([type, metadata, metaDefs, userProfileDefs]) => {\n if (type === 'meta') {\n let datasetMetadataIds = metadata?.map((u) => (u as MetadataValue).metadataDef.id);\n return metaDefs.filter((meta) => !datasetMetadataIds?.includes(meta.id));\n } else {\n let userProfileIds = metadata?.map((u) => (u as MetadataUser).userProfile.id);\n return (userProfileDefs ?? []).filter((meta) => !userProfileIds?.includes(meta.id));\n }\n })\n );\n\n this.subscriptions.add(\n this.availableMetadata$.subscribe((meta) => {\n this.form.patchValue({\n metadata: meta[0]\n });\n this.onMetaChange(meta[0]);\n this.form.patchValue({ value: '' });\n })\n );\n }\n\n onMetaChange(metadata: IMetadata) {\n if (metadata) {\n if (metadata.type === 'INTEGER') {\n this.form.controls['value'].setValidators([Validators.required, Validators.pattern(INTEGER_REGEXP_PATTERN)]);\n } else if (metadata.type === 'DOUBLE') {\n this.form.controls['value'].setValidators([Validators.required, Validators.pattern(DOUBLE_REGEXP_PATTERN)]);\n } else {\n this.form.controls['value'].setValidators([Validators.required]);\n }\n this.isModification = true;\n } else {\n this.isModification = false;\n }\n }\n\n editMetadata(currentMetadata: MetadataValue | MetadataUser) {\n this.store.dispatch(MetadataActions.isEditable({ editable: true }));\n let value = currentMetadata.value;\n let datasetMetadataDef = this.metaDefinition(currentMetadata);\n\n this.form.patchValue({\n metadata: datasetMetadataDef,\n value: value\n });\n this.onMetaChange(datasetMetadataDef);\n }\n\n metaDefinition(metadata: MetadataUser | MetadataValue) {\n return this._type$.getValue() === 'user'\n ? (metadata as MetadataUser).userProfile\n : (metadata as MetadataValue).metadataDef;\n }\n\n removeMetadata(metadata: MetadataUser | MetadataValue) {\n this.removeMeta.emit({ id: this.targetId, metadataId: this.metaDefinition(metadata).id });\n }\n\n addDatasetMetadata() {\n this.isSubmitted = true;\n if (this.form.valid) {\n this.isSubmitted = false;\n this.addMeta.emit({\n id: this.targetId,\n metadataId: this.form.value['metadata']['id'],\n value: this.form.value['value']\n });\n }\n }\n}\n","<pry-metadata-editor-css></pry-metadata-editor-css>\n<div *ngFor=\"let metadata of (_metadata$ | async) ?? []\">\n <div class=\"o-tabs__panel__content__actions\">\n <div class=\"o-tabs__panel__content__actions__text\">\n <span class=\"o-tabs__panel__content__actions__text__label\">{{ metaDefinition(metadata).name }} :</span>\n <span class=\"o-tabs__panel__content__actions__text__value\">{{ metadata.value }}</span>\n </div>\n\n <div class=\"o-tabs__panel__content__actions__buttons\">\n <ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.edit' | i18n }} {{ metaDefinition(metadata).name }}</span>\n <pry-icon\n class=\"edit-icon\"\n iconSvg=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"editMetadata(metadata)\"\n ></pry-icon>\n </button>\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }} {{ metaDefinition(metadata).name }}</span>\n <pry-icon\n class=\"delete-icon\"\n iconSvg=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"removeMetadata(metadata)\"\n ></pry-icon>\n </button>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <form class=\"o-form -border-top\" [formGroup]=\"form\" (ngSubmit)=\"addDatasetMetadata()\">\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.action.editProfil' | i18n }}</legend>\n\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label for=\"metadata\" id=\"metadata-label\" class=\"a-label\">Data</label>\n <pry-select\n id=\"metadata\"\n class=\"a-pry-select o-metadata-editor\"\n formControlName=\"metadata\"\n [items]=\"availableMetadata$ | async\"\n (ngModelChange)=\"onMetaChange($event)\"\n [isForm]=\"true\"\n [itemsAsOption]=\"true\"\n bindLabel=\"name\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('metadata')?.invalid ? 'metadata-label metadata-error' : 'metadata-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('metadata')?.invalid\"\n >\n </pry-select>\n <label\n *ngIf=\"isSubmitted && form.get('metadata')?.invalid\"\n id=\"metadata-error\"\n for=\"metadata\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n </div>\n\n <ng-container *ngIf=\"form.value.metadata\">\n <ng-container *ngIf=\"form.value['metadata']['type'] === 'DATE'; else inputList\">\n <div class=\"m-form-label-field\">\n <label id=\"form_date-label\" for=\"form_date\" class=\"a-label\">\n {{ '@pry.action.selectDate' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"form_date\"\n type=\"date\"\n class=\"a-form-field\"\n formControlName=\"value\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('value')?.invalid ? 'form-date-label form-date-error' : 'form-date-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('value')?.invalid\"\n required\n />\n <label\n *ngIf=\"isSubmitted && form.get('value')?.invalid\"\n id=\"form_date-error\"\n for=\"form_date\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n </div>\n </ng-container>\n\n <ng-template #inputList>\n <ng-container *ngIf=\"form.value['metadata']['type'] === 'LIST'; else inputText\">\n <div class=\"m-form-label-field\">\n <label id=\"list-label\" class=\"a-label\" for=\"list\">{{ '@pry.action.choiceInList' | i18n }}</label>\n <pry-select\n id=\"list\"\n class=\"a-pry-select\"\n formControlName=\"value\"\n [items]=\"form.value['metadata']['allowedValues']\"\n [isForm]=\"true\"\n aria-labelledby=\"list-label\"\n ></pry-select>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template #inputText>\n <div class=\"m-form-label-field\">\n <label id=\"text-label\" class=\"a-label\" for=\"text\">\n {{ '@pry.action.text' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"text\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"value\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('value')?.invalid ? 'text-label text-error' : 'text-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('value')?.invalid\"\n required\n />\n <label\n *ngIf=\"isSubmitted && form.get('value')?.invalid\"\n id=\"test-error\"\n for=\"text\"\n class=\"a-label a-label--help -error\"\n >\n <span *ngIf=\"form.get('value')?.hasError('required')\">{{ '@pry.admin.required' | i18n }}</span>\n <ng-container *ngIf=\"form.get('value')?.hasError('pattern')\">\n <span *ngIf=\"form.value['metadata']['type'] === 'DOUBLE'\">\n {{ '@pry.admin.environment.formatDouble' | i18n }}\n </span>\n <span *ngIf=\"form.value['metadata']['type'] === 'INTEGER'\">\n {{ '@pry.admin.environment.formatInt' | i18n }}\n </span>\n </ng-container>\n </label>\n </div>\n </ng-template>\n </ng-container>\n </fieldset>\n\n <div class=\"m-btn-group -end\">\n <button type=\"submit\" class=\"a-btn a-btn--primary\">\n {{ (isModification ? '@pry.action.editMetadata' : '@pry.action.addMetadata') | i18n }}\n </button>\n </div>\n </form>\n</ng-container>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors, IMetadata, MetadataUser } from '@provoly/dashboard';\nimport { mergeMap, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MetadataService {\n constructor(private httpClient: HttpClient, private store: Store<any>) {}\n\n getMetadataList(): Observable<any> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<any>(`${url}/metadata`)));\n }\n\n getMetadata(id: string): Observable<IMetadata> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<IMetadata>(`${url}/metadata/id/${id}`)));\n }\n\n postMetadata(metadata: IMetadata): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.post<void>(`${url}/metadata`, metadata)));\n }\n\n getMetadataUser(userId: string): Observable<MetadataUser[]> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<MetadataUser[]>(`${url}/users/id/${userId}/metadata`)));\n }\n\n addMetadataUser(userId: string, metaId: string, value: any): Observable<void> {\n return this.store.select(ConfigSelectors.refUrl).pipe(\n mergeMap((url) =>\n this.httpClient.put<void>(encodeURI(`${url}/users/id/${userId}/metadata/id/${metaId}`), {\n value: value\n })\n )\n );\n }\n\n deleteMetadataUser(userId: string, metaId: string): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(\n mergeMap((url) => this.httpClient.delete<void>(encodeURI(`${url}/users/id/${userId}/metadata/id/${metaId}`)))\n );\n }\n\n getUserMetadata(): Observable<any> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<any>(`${url}/users/metadata`)));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { DataSourceActions, DataSourceService } from '@provoly/dashboard';\nimport { catchError, map, mergeMap } from 'rxjs/operators';\nimport { MetadataActions } from './metadata.action';\nimport { MetadataService } from './metadata.service';\n\n@Injectable()\nexport class MetadataEffects {\n loadMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.loadMetadata),\n mergeMap((_) =>\n this.service.getMetadataList().pipe(\n map((metadata) => MetadataActions.loadMetadataSuccess({ metadata: metadata })),\n catchError((error) => [MetadataActions.loadMetadataFailure({ error: error })])\n )\n )\n )\n );\n\n goToDetailsView$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.goToDetailsView),\n mergeMap((action) =>\n this.service.getMetadata(action.id).pipe(\n map((metadata) => MetadataActions.goToDetailsViewSuccess({ metadata })),\n catchError((error) => [MetadataActions.goToDetailsViewFailure({ error: error })])\n )\n )\n )\n );\n\n createMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.createMetadata),\n mergeMap((action) =>\n this.service.postMetadata(action.metadata).pipe(\n map(() => MetadataActions.createMetadataSuccess({ metadata: action.metadata })),\n catchError((error) => [MetadataActions.createMetadataFailure({ error: error })])\n )\n )\n )\n );\n\n createMetadataSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.createMetadataSuccess),\n map((action) => {\n return MetadataActions.loadMetadata();\n })\n )\n );\n\n addDatasetMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.addDatasetMetadata),\n mergeMap((action) =>\n this.dataSourceService.addDatasetMetadata(action.datasetId, action.metadataId, action.value).pipe(\n map(() => MetadataActions.addDatasetMetadataSuccess({ datasetId: action.datasetId })),\n catchError((error) => [MetadataActions.addDatasetMetadataFailure({ error })])\n )\n )\n )\n );\n\n addDatasetMetadataSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.addDatasetMetadataSuccess),\n mergeMap((action) => {\n return [\n DataSourceActions.dataset.getDatasetById({ id: action.datasetId }),\n MetadataActions.isEditable({ editable: false }),\n DataSourceActions.dataset.loadDataset()\n ];\n })\n )\n );\n\n deleteDatasetMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.deleteDatasetMetadata),\n mergeMap((action) =>\n this.dataSourceService.deleteDatasetMetadata(action.datasetId, action.metadataId).pipe(\n map(() => MetadataActions.deleteDatasetMetadataSuccess({ datasetId: action.datasetId })),\n catchError((error) => [MetadataActions.deleteDatasetMetadataFailure({ error })])\n )\n )\n )\n );\n\n deleteDatasetMetadataSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.deleteDatasetMetadataSuccess),\n mergeMap((action) => {\n return [\n DataSourceActions.dataset.getDatasetById({ id: action.datasetId }),\n MetadataActions.isEditable({ editable: false }),\n DataSourceActions.dataset.loadDataset()\n ];\n })\n )\n );\n\n loadMetadataUser$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.loadMetadataUser),\n mergeMap((action) =>\n this.service.getMetadataUser(action.userId).pipe(\n map((metadata) => MetadataActions.loadMetadataUserSuccess({ metadata })),\n catchError((error) => [MetadataActions.loadMetadataUserFailure({ error })])\n )\n )\n )\n );\n\n selectUser$ = createEffect(() =>\n this.actions$.pipe(\n ofType('[Admin/User] Select User'),\n map((action) => {\n // @ts-ignore\n return MetadataActions.loadMetadataUser({ userId: action.userId });\n })\n )\n );\n\n addMetadataUser$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.addMetadataUser),\n mergeMap((action) =>\n this.service.addMetadataUser(action.userId, action.metaId, action.value).pipe(\n map(() => MetadataActions.addMetadataUserSuccess({ userId: action.userId })),\n catchError((error) => [MetadataActions.addMetadataUserFailure({ error })])\n )\n )\n )\n );\n\n addMetadataUserSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.addMetadataUserSuccess),\n mergeMap((action) => {\n return [\n MetadataActions.loadMetadataUser({ userId: action.userId }),\n MetadataActions.isEditable({ editable: false })\n ];\n })\n )\n );\n\n deleteMetadataUser$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.deleteMetadataUser),\n mergeMap((action) =>\n this.service.deleteMetadataUser(action.userId, action.metadataId).pipe(\n map(() => MetadataActions.deleteMetadataUserSuccess({ userId: action.userId })),\n catchError((error) => [MetadataActions.deleteMetadataUserFailure({ error })])\n )\n )\n )\n );\n\n deleteMetadataUserSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.deleteMetadataUserSuccess),\n mergeMap((action) => {\n return [\n MetadataActions.loadMetadataUser({ userId: action.userId }),\n MetadataActions.isEditable({ editable: false })\n ];\n })\n )\n );\n\n loadUserProfile$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.loadUserProfile),\n mergeMap((_) =>\n this.service.getUserMetadata().pipe(\n map((metadata) => MetadataActions.loadUserProfileSuccess({ userProfile: metadata })),\n catchError((error) => [MetadataActions.loadUserProfileFailure({ error: error })])\n )\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private service: MetadataService,\n private dataSourceService: DataSourceService\n ) {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport { PryCoreModule, PryI18nModule, PryIconModule, PrySelectModule } from '@provoly/dashboard';\nimport { PryMetadataEditorComponent } from './metadata-editor.component';\nimport { MetadataEffects } from './store/metadata.effects';\nimport { metadataFeatureKey, metadataReducer } from './store/metadata.reducer';\nimport { PryMetadataEditorCssComponent } from './style/css.component';\n\nconst PRY_METADATA_EDITOR_COMPONENTS = [PryMetadataEditorComponent, PryMetadataEditorCssComponent];\n\n@NgModule({\n declarations: [...PRY_METADATA_EDITOR_COMPONENTS],\n exports: [...PRY_METADATA_EDITOR_COMPONENTS],\n imports: [\n CommonModule,\n StoreModule.forFeature(metadataFeatureKey, metadataReducer),\n EffectsModule.forFeature([MetadataEffects]),\n PryCoreModule,\n PryI18nModule,\n ReactiveFormsModule,\n PrySelectModule,\n PryIconModule\n ]\n})\nexport class PryExpandPanelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["fromMetadata.metadataFeatureKey","i5.PryMetadataEditorCssComponent","i1","i2","mergeMap","map","i2.MetadataService","i3"],"mappings":"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"}
|
|
@@ -224,14 +224,14 @@ class NotificationEffects {
|
|
|
224
224
|
.pipe(map$1(() => NotificationActions.deleteSuccess({ id: action.id }))))));
|
|
225
225
|
this.deleteAllNotifications$ = createEffect(() => this.actions$.pipe(ofType(NotificationActions.deleteAll), mergeMap((action) => this.notificationService.deleteAllNotifications().pipe(map$1(() => NotificationActions.deleteAllSuccess())))));
|
|
226
226
|
wsService.messages$('notification').subscribe((msg) => {
|
|
227
|
-
this.store.dispatch(NotificationActions.add({
|
|
227
|
+
setTimeout(() => this.store.dispatch(NotificationActions.add({
|
|
228
228
|
notification: {
|
|
229
229
|
text: msg.payload.text,
|
|
230
230
|
link: msg.payload.link,
|
|
231
231
|
creationDate: msg.payload.creationDate,
|
|
232
232
|
id: msg.id
|
|
233
233
|
}
|
|
234
|
-
}));
|
|
234
|
+
})), 1);
|
|
235
235
|
});
|
|
236
236
|
}
|
|
237
237
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: NotificationEffects, deps: [{ token: i1$2.Actions }, { token: i1.WebsocketService }, { token: i3.Store }, { token: NotificationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provoly-dashboard-notification.mjs","sources":["../../../../projects/provoly/dashboard/notification/store/notification.actions.ts","../../../../projects/provoly/dashboard/notification/store/notification.selectors.ts","../../../../projects/provoly/dashboard/notification/components/notification/content/notification-content.component.ts","../../../../projects/provoly/dashboard/notification/components/notification/content/notification-content.component.html","../../../../projects/provoly/dashboard/notification/style/css.component.ts","../../../../projects/provoly/dashboard/notification/components/notification/notification.component.ts","../../../../projects/provoly/dashboard/notification/components/notification/notification.component.html","../../../../projects/provoly/dashboard/notification/i18n/en.translations.ts","../../../../projects/provoly/dashboard/notification/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/notification/store/notification.service.ts","../../../../projects/provoly/dashboard/notification/store/notification.effects.ts","../../../../projects/provoly/dashboard/notification/store/notification.reducer.ts","../../../../projects/provoly/dashboard/notification/notification.module.ts","../../../../projects/provoly/dashboard/notification/provoly-dashboard-notification.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\nimport { PryNotification } from '@provoly/dashboard';\n\nexport const NotificationActions = {\n add: createAction('[Notification] received', props<{ notification: PryNotification }>()),\n delete: createAction('[Notification] delete', props<{ id: string }>()),\n deleteSuccess: createAction('[Notification] delete success', props<{ id: string }>()),\n deleteAll: createAction('[Notification] delete all'),\n deleteAllSuccess: createAction('[Notification] delete all success')\n};\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { notificationFeatureKey } from '@provoly/dashboard';\nimport * as fromNotification from './notification.reducer';\n\nconst feature = createFeatureSelector<fromNotification.NotificationState>(notificationFeatureKey);\n\nconst list = createSelector(feature, (state) => state.list);\n\nexport const NotificationSelectors = {\n feature,\n list\n};\n","import {\n AfterViewInit,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n HostListener,\n Output,\n ViewChild\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { PryNotification } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { NotificationActions } from '../../../store/notification.actions';\nimport { NotificationSelectors } from '../../../store/notification.selectors';\n\n@Component({\n selector: 'pry-notification-content',\n templateUrl: './notification-content.component.html'\n})\nexport class PryNotificationContentComponent implements DoCheck, AfterViewInit {\n open: boolean = false;\n notifications$: Observable<PryNotification[]>;\n @Output() closed = new EventEmitter<boolean>();\n @ViewChild('caret') caret!: ElementRef;\n @ViewChild('button') button!: ElementRef<HTMLButtonElement>;\n left: number = 0;\n\n constructor(protected store: Store, private router: Router) {\n this.notifications$ = this.store\n .select(NotificationSelectors.list)\n .pipe(\n map((notifications: PryNotification[]) =>\n [...notifications].sort((a, b) => (a.creationDate < b.creationDate ? 1 : -1))\n )\n );\n }\n\n ngAfterViewInit() {\n if (!this.open) {\n this.button.nativeElement.focus();\n }\n }\n\n @HostListener('window:resize')\n ngDoCheck() {\n if (this.caret) {\n this.left = this.caret.nativeElement.offsetWidth - 48;\n }\n }\n\n delete(notification: PryNotification) {\n this.store.dispatch(NotificationActions.delete({ id: notification.id }));\n }\n\n deleteAll() {\n this.store.dispatch(NotificationActions.deleteAll());\n }\n\n goTo(notification: PryNotification) {\n this.router.navigateByUrl(notification.link ?? '');\n this.closed.next(true);\n }\n\n closeToEscape() {\n this.closed.next(true);\n }\n}\n","<div\n class=\"m-notifications-list\"\n id=\"notifications_list\"\n aria-labelledby=\"read_notifications\"\n aria-hidden=\"false\"\n #caret\n (keydown.escape)=\"closeToEscape()\"\n>\n <span class=\"caret-top\" [style.left.px]=\"left\"></span>\n <div class=\"m-notifications-list__header\">\n <h2 class=\"a-h2\">{{ '@pry.notif.label' | i18n }}</h2>\n <p class=\"a-p none\" *ngIf=\"(notifications$ | async)?.length === 0; else notification\">\n {{ '@pry.notif.noNotifications' | i18n }}\n </p>\n <ng-template #notification>\n <div class=\"m-btn-group\">\n <button type=\"button\" #button class=\"a-btn a-btn--primary\" (click)=\"deleteAll()\">\n {{ '@pry.notif.deleteAll' | i18n: { count: (notifications$ | async)?.length } }}\n </button>\n </div>\n </ng-template>\n </div>\n <div class=\"m-notifications-list__content\">\n <ul class=\"m-notifications-list__items\">\n <li class=\"m-notifications-list__items__li\" *ngFor=\"let notification of notifications$ | async; let last = last\">\n <div\n class=\"m-notifications-list__items__li__txt\"\n *ngIf=\"\n ('@pry.notif.title.' + notification.text.code | i18n) !== '@pry.notif.title.' + notification.text.code;\n else noTranslation\n \"\n >\n <h3 class=\"a-h3\">{{ '@pry.notif.title.' + notification.text.code | i18n }}</h3>\n <p class=\"a-p date\">{{ notification.creationDate | date: \"dd/MM/yyyy, H'h'mm\" }}</p>\n <p class=\"a-p desc\">{{ '@pry.notif.message.' + notification.text.code | i18n: notification.text.param }}</p>\n <a *ngIf=\"!!notification.link\" (click)=\"goTo(notification)\">\n {{ '@pry.notif.link' | i18n }}\n </a>\n </div>\n <ng-template #noTranslation>\n <div class=\"m-notifications-list__items__li__txt\">\n <h3 class=\"a-h3\">{{ notification.text.title }}</h3>\n <p class=\"a-p date\">{{ notification.creationDate | date: \"dd/MM/yyyy, H'h'mm\" }}</p>\n <p class=\"a-p desc\">{{ notification.text.code }}</p>\n <a *ngIf=\"!!notification.link\" (click)=\"goTo(notification)\">\n {{ '@pry.notif.link' | i18n }}\n </a>\n </div>\n </ng-template>\n <button\n class=\"a-btn a-btn--deletenotification\"\n (click)=\"delete(notification)\"\n (keydown.tab)=\"last ? closeToEscape() : null\"\n title=\"{{ '@pry.notif.delete' | i18n }}\"\n >\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.notif.delete' | i18n }}</span>\n </button>\n </li>\n </ul>\n </div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-notification-css',\n template: '',\n styleUrls: ['./_m-notifications.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryNotificationCssComponent {}\n","import { Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { Component, ElementRef, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { PryDialogRef, PryDialogService, PryNotification, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { NotificationSelectors } from '../../store/notification.selectors';\nimport { PryNotificationContentComponent } from './content/notification-content.component';\n\n@Component({\n selector: 'pry-notification',\n templateUrl: './notification.component.html'\n})\nexport class PryNotificationComponent extends SubscriptionnerDirective {\n @ViewChild('ref') ref!: ElementRef<HTMLButtonElement>;\n notifications$: Observable<PryNotification[]>;\n isOpened: boolean = false;\n dialogRef?: PryDialogRef<PryNotificationContentComponent>;\n\n constructor(\n private dialog: PryDialogService,\n private overlay: Overlay,\n protected store: Store<any>\n ) {\n super();\n this.notifications$ = this.store.select(NotificationSelectors.list);\n }\n\n toggle() {\n this.isOpened = true;\n this.dialogRef = this.dialog.open(\n PryNotificationContentComponent,\n {\n overlayConfig: new OverlayConfig({\n hasBackdrop: true,\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.ref)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n }\n ])\n })\n },\n () => {\n this.isOpened = false;\n }\n );\n this.subscriptions.add(\n this.dialogRef?.component?.closed.subscribe((isClosed) => {\n if (isClosed) {\n this.dialogRef?.close();\n this.ref.nativeElement.focus();\n }\n })\n );\n }\n}\n","<pry-notification-css></pry-notification-css>\n<div\n class=\"m-notifications\"\n *ngIf=\"notifications$ | async as notifications\"\n [class.has-unread]=\"notifications.length > 0\"\n>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-controls=\"notifications_list\"\n [attr.aria-expanded]=\"isOpened\"\n aria-haspopup=\"true\"\n id=\"read_notifications\"\n #ref\n (click)=\"toggle()\"\n [title]=\"'@pry.notif.notifications' | i18n: { count: notifications.length }\"\n >\n <pry-icon iconSvg=\"notifications\"></pry-icon>\n <span *ngIf=\"notifications.length > 0\" class=\"a-pastille -unread\"\n >{{ notifications.length }} <span class=\"u-visually-hidden\">{{ '@pry.notif.label' | i18n | lowercase }}</span>\n </span>\n </button>\n</div>\n","export const enTranslations = {\n '@pry': {\n notif: {\n label: 'Notifications',\n link: 'See',\n notifications: 'You have {{count}} notifications',\n deleteAll: 'Delete all ({{count}})',\n delete: 'Delete notification',\n noNotifications: 'No notification',\n title: {\n DASHBOARD_PRIVATE: 'Presentation',\n DASHBOARD_PUBLIC: 'Presentation',\n DASHBOARD_DELETED: 'Presentation'\n },\n message: {\n DASHBOARD_PRIVATE: 'Access to presentation <{{name}}> has been restrained',\n DASHBOARD_PUBLIC: 'Presentation <{{name}}> is available',\n DASHBOARD_DELETED: 'Presentation <{{name}}> has been removed'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n notif: {\n label: 'Notifications',\n link: 'Voir',\n notifications: 'Vous avez {{count}} notifications',\n deleteAll: 'Tout supprimer ({{count}})',\n delete: 'Supprimer la notification',\n noNotifications: 'Aucune notification actuellement',\n title: {\n DASHBOARD_PRIVATE: 'Présentation',\n DASHBOARD_PUBLIC: 'Présentation',\n DASHBOARD_DELETED: 'Présentation'\n },\n message: {\n DASHBOARD_PRIVATE: \"L'accès à la présentation <{{name}}> a été restreint\",\n DASHBOARD_PUBLIC: 'La présentation <{{name}}> est disponible',\n DASHBOARD_DELETED: 'La présentation <{{name}}> a été supprimée'\n }\n }\n }\n};\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors } from '@provoly/dashboard';\nimport { mergeMap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NotificationService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n deleteNotification(id: string) {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete(encodeURI(`${url}/notification/me/id/${id}`))));\n }\n\n deleteAllNotifications() {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete(encodeURI(`${url}/notification/me`))));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { WebsocketService, wsMessage } from '@provoly/dashboard';\nimport { map, mergeMap } from 'rxjs';\nimport { NotificationActions } from './notification.actions';\nimport { NotificationService } from './notification.service';\n\n@Injectable()\nexport class NotificationEffects {\n constructor(\n private actions$: Actions,\n private wsService: WebsocketService,\n private store: Store,\n private notificationService: NotificationService\n ) {\n wsService.messages$('notification').subscribe((msg: wsMessage) => {\n this.store.dispatch(\n NotificationActions.add({\n notification: {\n text: msg.payload.text,\n link: msg.payload.link,\n creationDate: msg.payload.creationDate,\n id: msg.id\n }\n })\n );\n });\n }\n\n deleteNotification$ = createEffect(() =>\n this.actions$.pipe(\n ofType(NotificationActions.delete),\n mergeMap((action) =>\n this.notificationService\n .deleteNotification(action.id)\n .pipe(map(() => NotificationActions.deleteSuccess({ id: action.id })))\n )\n )\n );\n\n deleteAllNotifications$ = createEffect(() =>\n this.actions$.pipe(\n ofType(NotificationActions.deleteAll),\n mergeMap((action) =>\n this.notificationService.deleteAllNotifications().pipe(map(() => NotificationActions.deleteAllSuccess()))\n )\n )\n );\n}\n","import { createReducer, on } from '@ngrx/store';\nimport { PryNotification } from '@provoly/dashboard';\nimport { NotificationActions } from './notification.actions';\n\nexport interface NotificationState {\n list: PryNotification[];\n}\n\nexport const initialNotificationState: NotificationState = {\n list: []\n};\n\nexport const notificationReducer = createReducer(\n initialNotificationState,\n on(NotificationActions.add, (state, action) => {\n const allNotifications = [...state.list, { ...action.notification }];\n const uniqueIds = [...new Set(allNotifications.map((notif) => notif.id))];\n return {\n ...state,\n list: uniqueIds.map((id) => allNotifications.find((notif) => notif.id === id)) as PryNotification[]\n };\n }),\n on(NotificationActions.deleteSuccess, (state, action) => ({\n ...state,\n list: state.list.filter((notification: PryNotification) => notification.id !== action.id)\n })),\n on(NotificationActions.deleteAllSuccess, (state, action) => ({\n ...state,\n list: []\n }))\n);\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport {\n notificationFeatureKey,\n PryCoreModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule\n} from '@provoly/dashboard';\nimport { PrySearchModule } from '@provoly/dashboard/search';\nimport { PryNotificationContentComponent } from './components/notification/content/notification-content.component';\nimport { PryNotificationComponent } from './components/notification/notification.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { NotificationEffects } from './store/notification.effects';\nimport { notificationReducer } from './store/notification.reducer';\nimport { PryNotificationCssComponent } from './style/css.component';\n\n@NgModule({\n imports: [\n CommonModule,\n PryCoreModule,\n StoreModule.forFeature(notificationFeatureKey, notificationReducer),\n EffectsModule.forFeature([NotificationEffects]),\n PryIconModule,\n PrySearchModule,\n PryI18nModule\n ],\n declarations: [PryNotificationComponent, PryNotificationContentComponent, PryNotificationCssComponent],\n exports: [PryNotificationComponent, PryNotificationContentComponent]\n})\nexport class PryNotificationModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'notification', frTranslations);\n this.pryTranslateService.addLangObject('en', 'notification', enTranslations);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i4","i2","i5.PryNotificationCssComponent","map","i4.NotificationService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provoly-dashboard-notification.mjs","sources":["../../../../projects/provoly/dashboard/notification/store/notification.actions.ts","../../../../projects/provoly/dashboard/notification/store/notification.selectors.ts","../../../../projects/provoly/dashboard/notification/components/notification/content/notification-content.component.ts","../../../../projects/provoly/dashboard/notification/components/notification/content/notification-content.component.html","../../../../projects/provoly/dashboard/notification/style/css.component.ts","../../../../projects/provoly/dashboard/notification/components/notification/notification.component.ts","../../../../projects/provoly/dashboard/notification/components/notification/notification.component.html","../../../../projects/provoly/dashboard/notification/i18n/en.translations.ts","../../../../projects/provoly/dashboard/notification/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/notification/store/notification.service.ts","../../../../projects/provoly/dashboard/notification/store/notification.effects.ts","../../../../projects/provoly/dashboard/notification/store/notification.reducer.ts","../../../../projects/provoly/dashboard/notification/notification.module.ts","../../../../projects/provoly/dashboard/notification/provoly-dashboard-notification.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\nimport { PryNotification } from '@provoly/dashboard';\n\nexport const NotificationActions = {\n add: createAction('[Notification] received', props<{ notification: PryNotification }>()),\n delete: createAction('[Notification] delete', props<{ id: string }>()),\n deleteSuccess: createAction('[Notification] delete success', props<{ id: string }>()),\n deleteAll: createAction('[Notification] delete all'),\n deleteAllSuccess: createAction('[Notification] delete all success')\n};\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { notificationFeatureKey } from '@provoly/dashboard';\nimport * as fromNotification from './notification.reducer';\n\nconst feature = createFeatureSelector<fromNotification.NotificationState>(notificationFeatureKey);\n\nconst list = createSelector(feature, (state) => state.list);\n\nexport const NotificationSelectors = {\n feature,\n list\n};\n","import {\n AfterViewInit,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n HostListener,\n Output,\n ViewChild\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { PryNotification } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { NotificationActions } from '../../../store/notification.actions';\nimport { NotificationSelectors } from '../../../store/notification.selectors';\n\n@Component({\n selector: 'pry-notification-content',\n templateUrl: './notification-content.component.html'\n})\nexport class PryNotificationContentComponent implements DoCheck, AfterViewInit {\n open: boolean = false;\n notifications$: Observable<PryNotification[]>;\n @Output() closed = new EventEmitter<boolean>();\n @ViewChild('caret') caret!: ElementRef;\n @ViewChild('button') button!: ElementRef<HTMLButtonElement>;\n left: number = 0;\n\n constructor(protected store: Store, private router: Router) {\n this.notifications$ = this.store\n .select(NotificationSelectors.list)\n .pipe(\n map((notifications: PryNotification[]) =>\n [...notifications].sort((a, b) => (a.creationDate < b.creationDate ? 1 : -1))\n )\n );\n }\n\n ngAfterViewInit() {\n if (!this.open) {\n this.button.nativeElement.focus();\n }\n }\n\n @HostListener('window:resize')\n ngDoCheck() {\n if (this.caret) {\n this.left = this.caret.nativeElement.offsetWidth - 48;\n }\n }\n\n delete(notification: PryNotification) {\n this.store.dispatch(NotificationActions.delete({ id: notification.id }));\n }\n\n deleteAll() {\n this.store.dispatch(NotificationActions.deleteAll());\n }\n\n goTo(notification: PryNotification) {\n this.router.navigateByUrl(notification.link ?? '');\n this.closed.next(true);\n }\n\n closeToEscape() {\n this.closed.next(true);\n }\n}\n","<div\n class=\"m-notifications-list\"\n id=\"notifications_list\"\n aria-labelledby=\"read_notifications\"\n aria-hidden=\"false\"\n #caret\n (keydown.escape)=\"closeToEscape()\"\n>\n <span class=\"caret-top\" [style.left.px]=\"left\"></span>\n <div class=\"m-notifications-list__header\">\n <h2 class=\"a-h2\">{{ '@pry.notif.label' | i18n }}</h2>\n <p class=\"a-p none\" *ngIf=\"(notifications$ | async)?.length === 0; else notification\">\n {{ '@pry.notif.noNotifications' | i18n }}\n </p>\n <ng-template #notification>\n <div class=\"m-btn-group\">\n <button type=\"button\" #button class=\"a-btn a-btn--primary\" (click)=\"deleteAll()\">\n {{ '@pry.notif.deleteAll' | i18n: { count: (notifications$ | async)?.length } }}\n </button>\n </div>\n </ng-template>\n </div>\n <div class=\"m-notifications-list__content\">\n <ul class=\"m-notifications-list__items\">\n <li class=\"m-notifications-list__items__li\" *ngFor=\"let notification of notifications$ | async; let last = last\">\n <div\n class=\"m-notifications-list__items__li__txt\"\n *ngIf=\"\n ('@pry.notif.title.' + notification.text.code | i18n) !== '@pry.notif.title.' + notification.text.code;\n else noTranslation\n \"\n >\n <h3 class=\"a-h3\">{{ '@pry.notif.title.' + notification.text.code | i18n }}</h3>\n <p class=\"a-p date\">{{ notification.creationDate | date: \"dd/MM/yyyy, H'h'mm\" }}</p>\n <p class=\"a-p desc\">{{ '@pry.notif.message.' + notification.text.code | i18n: notification.text.param }}</p>\n <a *ngIf=\"!!notification.link\" (click)=\"goTo(notification)\">\n {{ '@pry.notif.link' | i18n }}\n </a>\n </div>\n <ng-template #noTranslation>\n <div class=\"m-notifications-list__items__li__txt\">\n <h3 class=\"a-h3\">{{ notification.text.title }}</h3>\n <p class=\"a-p date\">{{ notification.creationDate | date: \"dd/MM/yyyy, H'h'mm\" }}</p>\n <p class=\"a-p desc\">{{ notification.text.code }}</p>\n <a *ngIf=\"!!notification.link\" (click)=\"goTo(notification)\">\n {{ '@pry.notif.link' | i18n }}\n </a>\n </div>\n </ng-template>\n <button\n class=\"a-btn a-btn--deletenotification\"\n (click)=\"delete(notification)\"\n (keydown.tab)=\"last ? closeToEscape() : null\"\n title=\"{{ '@pry.notif.delete' | i18n }}\"\n >\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.notif.delete' | i18n }}</span>\n </button>\n </li>\n </ul>\n </div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-notification-css',\n template: '',\n styleUrls: ['./_m-notifications.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryNotificationCssComponent {}\n","import { Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { Component, ElementRef, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { PryDialogRef, PryDialogService, PryNotification, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { NotificationSelectors } from '../../store/notification.selectors';\nimport { PryNotificationContentComponent } from './content/notification-content.component';\n\n@Component({\n selector: 'pry-notification',\n templateUrl: './notification.component.html'\n})\nexport class PryNotificationComponent extends SubscriptionnerDirective {\n @ViewChild('ref') ref!: ElementRef<HTMLButtonElement>;\n notifications$: Observable<PryNotification[]>;\n isOpened: boolean = false;\n dialogRef?: PryDialogRef<PryNotificationContentComponent>;\n\n constructor(\n private dialog: PryDialogService,\n private overlay: Overlay,\n protected store: Store<any>\n ) {\n super();\n this.notifications$ = this.store.select(NotificationSelectors.list);\n }\n\n toggle() {\n this.isOpened = true;\n this.dialogRef = this.dialog.open(\n PryNotificationContentComponent,\n {\n overlayConfig: new OverlayConfig({\n hasBackdrop: true,\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.ref)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n }\n ])\n })\n },\n () => {\n this.isOpened = false;\n }\n );\n this.subscriptions.add(\n this.dialogRef?.component?.closed.subscribe((isClosed) => {\n if (isClosed) {\n this.dialogRef?.close();\n this.ref.nativeElement.focus();\n }\n })\n );\n }\n}\n","<pry-notification-css></pry-notification-css>\n<div\n class=\"m-notifications\"\n *ngIf=\"notifications$ | async as notifications\"\n [class.has-unread]=\"notifications.length > 0\"\n>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-controls=\"notifications_list\"\n [attr.aria-expanded]=\"isOpened\"\n aria-haspopup=\"true\"\n id=\"read_notifications\"\n #ref\n (click)=\"toggle()\"\n [title]=\"'@pry.notif.notifications' | i18n: { count: notifications.length }\"\n >\n <pry-icon iconSvg=\"notifications\"></pry-icon>\n <span *ngIf=\"notifications.length > 0\" class=\"a-pastille -unread\"\n >{{ notifications.length }} <span class=\"u-visually-hidden\">{{ '@pry.notif.label' | i18n | lowercase }}</span>\n </span>\n </button>\n</div>\n","export const enTranslations = {\n '@pry': {\n notif: {\n label: 'Notifications',\n link: 'See',\n notifications: 'You have {{count}} notifications',\n deleteAll: 'Delete all ({{count}})',\n delete: 'Delete notification',\n noNotifications: 'No notification',\n title: {\n DASHBOARD_PRIVATE: 'Presentation',\n DASHBOARD_PUBLIC: 'Presentation',\n DASHBOARD_DELETED: 'Presentation'\n },\n message: {\n DASHBOARD_PRIVATE: 'Access to presentation <{{name}}> has been restrained',\n DASHBOARD_PUBLIC: 'Presentation <{{name}}> is available',\n DASHBOARD_DELETED: 'Presentation <{{name}}> has been removed'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n notif: {\n label: 'Notifications',\n link: 'Voir',\n notifications: 'Vous avez {{count}} notifications',\n deleteAll: 'Tout supprimer ({{count}})',\n delete: 'Supprimer la notification',\n noNotifications: 'Aucune notification actuellement',\n title: {\n DASHBOARD_PRIVATE: 'Présentation',\n DASHBOARD_PUBLIC: 'Présentation',\n DASHBOARD_DELETED: 'Présentation'\n },\n message: {\n DASHBOARD_PRIVATE: \"L'accès à la présentation <{{name}}> a été restreint\",\n DASHBOARD_PUBLIC: 'La présentation <{{name}}> est disponible',\n DASHBOARD_DELETED: 'La présentation <{{name}}> a été supprimée'\n }\n }\n }\n};\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors } from '@provoly/dashboard';\nimport { mergeMap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NotificationService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n deleteNotification(id: string) {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete(encodeURI(`${url}/notification/me/id/${id}`))));\n }\n\n deleteAllNotifications() {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete(encodeURI(`${url}/notification/me`))));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { WebsocketService, wsMessage } from '@provoly/dashboard';\nimport { map, mergeMap } from 'rxjs';\nimport { NotificationActions } from './notification.actions';\nimport { NotificationService } from './notification.service';\n\n@Injectable()\nexport class NotificationEffects {\n constructor(\n private actions$: Actions,\n private wsService: WebsocketService,\n private store: Store,\n private notificationService: NotificationService\n ) {\n wsService.messages$('notification').subscribe((msg: wsMessage) => {\n setTimeout(\n () =>\n this.store.dispatch(\n NotificationActions.add({\n notification: {\n text: msg.payload.text,\n link: msg.payload.link,\n creationDate: msg.payload.creationDate,\n id: msg.id\n }\n })\n ),\n 1\n );\n });\n }\n\n deleteNotification$ = createEffect(() =>\n this.actions$.pipe(\n ofType(NotificationActions.delete),\n mergeMap((action) =>\n this.notificationService\n .deleteNotification(action.id)\n .pipe(map(() => NotificationActions.deleteSuccess({ id: action.id })))\n )\n )\n );\n\n deleteAllNotifications$ = createEffect(() =>\n this.actions$.pipe(\n ofType(NotificationActions.deleteAll),\n mergeMap((action) =>\n this.notificationService.deleteAllNotifications().pipe(map(() => NotificationActions.deleteAllSuccess()))\n )\n )\n );\n}\n","import { createReducer, on } from '@ngrx/store';\nimport { PryNotification } from '@provoly/dashboard';\nimport { NotificationActions } from './notification.actions';\n\nexport interface NotificationState {\n list: PryNotification[];\n}\n\nexport const initialNotificationState: NotificationState = {\n list: []\n};\n\nexport const notificationReducer = createReducer(\n initialNotificationState,\n on(NotificationActions.add, (state, action) => {\n const allNotifications = [...state.list, { ...action.notification }];\n const uniqueIds = [...new Set(allNotifications.map((notif) => notif.id))];\n return {\n ...state,\n list: uniqueIds.map((id) => allNotifications.find((notif) => notif.id === id)) as PryNotification[]\n };\n }),\n on(NotificationActions.deleteSuccess, (state, action) => ({\n ...state,\n list: state.list.filter((notification: PryNotification) => notification.id !== action.id)\n })),\n on(NotificationActions.deleteAllSuccess, (state, action) => ({\n ...state,\n list: []\n }))\n);\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport {\n notificationFeatureKey,\n PryCoreModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule\n} from '@provoly/dashboard';\nimport { PrySearchModule } from '@provoly/dashboard/search';\nimport { PryNotificationContentComponent } from './components/notification/content/notification-content.component';\nimport { PryNotificationComponent } from './components/notification/notification.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { NotificationEffects } from './store/notification.effects';\nimport { notificationReducer } from './store/notification.reducer';\nimport { PryNotificationCssComponent } from './style/css.component';\n\n@NgModule({\n imports: [\n CommonModule,\n PryCoreModule,\n StoreModule.forFeature(notificationFeatureKey, notificationReducer),\n EffectsModule.forFeature([NotificationEffects]),\n PryIconModule,\n PrySearchModule,\n PryI18nModule\n ],\n declarations: [PryNotificationComponent, PryNotificationContentComponent, PryNotificationCssComponent],\n exports: [PryNotificationComponent, PryNotificationContentComponent]\n})\nexport class PryNotificationModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'notification', frTranslations);\n this.pryTranslateService.addLangObject('en', 'notification', enTranslations);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i4","i2","i5.PryNotificationCssComponent","map","i4.NotificationService"],"mappings":"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"}
|