@provoly/dashboard 0.14.5 → 0.14.7
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/admin.module.d.ts +2 -1
- package/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.d.ts +5 -2
- package/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.d.ts +7 -3
- package/admin/i18n/en.translations.d.ts +15 -0
- package/admin/i18n/fr.translations.d.ts +15 -0
- package/components/metadata-editor/metadata-editor.component.d.ts +3 -1
- package/esm2022/admin/admin.module.mjs +8 -4
- package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +19 -14
- package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +1 -1
- package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +3 -5
- package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +23 -12
- package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +1 -1
- package/esm2022/admin/i18n/en.translations.mjs +17 -2
- package/esm2022/admin/i18n/fr.translations.mjs +19 -4
- package/esm2022/components/metadata-editor/metadata-editor.component.mjs +30 -9
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +4 -3
- package/esm2022/import/components/import.component.mjs +12 -5
- package/esm2022/import/i18n/en.translations.mjs +3 -2
- package/esm2022/import/i18n/fr.translations.mjs +3 -2
- package/esm2022/import/import.module.mjs +7 -4
- package/esm2022/import/store/import.actions.mjs +1 -1
- package/esm2022/import/store/import.effects.mjs +2 -2
- package/esm2022/import/store/import.service.mjs +3 -2
- package/esm2022/lib/core/components/translate-id/translate-id.pipe.mjs +9 -9
- package/esm2022/lib/core/i18n/en.translations.mjs +4 -2
- package/esm2022/lib/core/i18n/fr.translations.mjs +4 -2
- package/esm2022/lib/core/model/admin-api.model.mjs +66 -14
- package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +1 -1
- package/esm2022/lib/core/store/field/field.interface.mjs +10 -1
- package/esm2022/lib/core/symbol/symbol.service.mjs +7 -3
- package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +17 -1
- package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +2 -1
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +9 -3
- package/esm2022/lib/dashboard/public-api.mjs +2 -2
- package/esm2022/lib/dashboard/store/dashboard.actions.mjs +6 -2
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +20 -13
- package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +11 -2
- package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +4 -2
- package/esm2022/lib/dashboard/store/manifest.service.mjs +11 -1
- package/esm2022/lib/dashboard/store/wms.service.mjs +54 -0
- package/esm2022/pipeline/components/pipeline-list/pipeline-list.component.mjs +25 -13
- package/esm2022/pipeline/pipeline.module.mjs +8 -4
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +19 -3
- package/esm2022/presentation/presentation.module.mjs +8 -4
- package/esm2022/presentation/style/css.component.mjs +2 -2
- package/esm2022/supervision/store/supervision.reducer.mjs +2 -7
- package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +35 -3
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +99 -39
- package/esm2022/widgets/widget-map/i18n/en.translations.mjs +3 -2
- package/esm2022/widgets/widget-map/i18n/fr.translations.mjs +3 -2
- package/esm2022/widgets/widget-map/pipe/widget-map-legend-url.pipe.mjs +3 -4
- package/esm2022/widgets/widget-map/public-api.mjs +1 -2
- package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +14 -8
- package/esm2022/widgets/widget-map/utils/xml-utils.class.mjs +20 -1
- package/fesm2022/provoly-dashboard-admin.mjs +81 -33
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +29 -8
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +3 -2
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-import.mjs +23 -10
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline.mjs +27 -11
- package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +26 -7
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-supervision.mjs +1 -6
- package/fesm2022/provoly-dashboard-supervision.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +380 -323
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +266 -133
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/import/components/import.component.d.ts +1 -0
- package/import/i18n/en.translations.d.ts +1 -0
- package/import/i18n/fr.translations.d.ts +1 -0
- package/import/import.module.d.ts +2 -1
- package/import/store/import.actions.d.ts +2 -0
- package/import/store/import.service.d.ts +1 -1
- package/lib/core/components/translate-id/translate-id.pipe.d.ts +1 -1
- package/lib/core/i18n/en.translations.d.ts +2 -0
- package/lib/core/i18n/fr.translations.d.ts +2 -0
- package/lib/core/model/admin-api.model.d.ts +1 -0
- package/lib/core/model/widget-map-manifest.interface.d.ts +12 -1
- package/lib/core/store/field/field.interface.d.ts +1 -0
- package/lib/core/symbol/symbol.service.d.ts +1 -1
- package/lib/dashboard/components/dashboard.component.d.ts +1 -1
- package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +3 -1
- package/lib/dashboard/public-api.d.ts +1 -1
- package/lib/dashboard/store/dashboard.actions.d.ts +31 -0
- package/lib/dashboard/store/dashboard.effects.d.ts +9 -3
- package/lib/dashboard/store/dashboard.reducers.d.ts +4 -0
- package/lib/dashboard/store/dashboard.selectors.d.ts +5 -0
- package/lib/dashboard/store/manifest.service.d.ts +2 -0
- package/{widgets/widget-map/component → lib/dashboard/store}/wms.service.d.ts +4 -4
- package/package.json +30 -30
- package/pipeline/components/pipeline-list/pipeline-list.component.d.ts +1 -0
- package/pipeline/pipeline.module.d.ts +2 -1
- package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +3 -0
- package/presentation/presentation.module.d.ts +2 -1
- package/presentation/style/_o-pry-new-presentation.scss +18 -5
- package/schematics/migration.json +5 -0
- package/schematics/ng-update/utils/replaceStrings.function.d.ts +7 -0
- package/schematics/ng-update/utils/replaceStrings.function.js +15 -0
- package/schematics/ng-update/utils/replaceStrings.function.js.map +1 -0
- package/schematics/ng-update/version-0-13/index.spec.js +11 -0
- package/schematics/ng-update/version-0-13/index.spec.js.map +1 -1
- package/schematics/ng-update/version-0-14/index.d.ts +2 -0
- package/schematics/ng-update/version-0-14/index.js +49 -0
- package/schematics/ng-update/version-0-14/index.js.map +1 -0
- package/schematics/ng-update/version-0-14/index.spec.d.ts +1 -0
- package/schematics/ng-update/version-0-14/index.spec.js +51 -0
- package/schematics/ng-update/version-0-14/index.spec.js.map +1 -0
- package/styles/components/_m-context-menu.scss +4 -0
- package/styles/components/_o-pry-admin-classes-customize.scss +48 -0
- package/widgets/widget-map/component/widget-map-layer.service.d.ts +6 -1
- package/widgets/widget-map/component/widget-map.component.d.ts +14 -9
- package/widgets/widget-map/i18n/en.translations.d.ts +1 -0
- package/widgets/widget-map/i18n/fr.translations.d.ts +1 -0
- package/widgets/widget-map/pipe/widget-map-legend-url.pipe.d.ts +4 -3
- package/widgets/widget-map/public-api.d.ts +0 -1
- package/widgets/widget-map/utils/widget-map.utils.d.ts +2 -5
- package/widgets/widget-map/utils/xml-utils.class.d.ts +1 -0
- package/esm2022/lib/dashboard/store/geocoding.service.mjs +0 -44
- package/esm2022/widgets/widget-map/component/wms.service.mjs +0 -67
- package/lib/dashboard/store/geocoding.service.d.ts +0 -56
|
@@ -108,11 +108,15 @@ class PryMetadataEditorComponent extends SubscriptionnerDirective {
|
|
|
108
108
|
}
|
|
109
109
|
this._metadata$.next(metadata);
|
|
110
110
|
}
|
|
111
|
+
set initialMetadataSelection(metadataName) {
|
|
112
|
+
this._initialMetadataSelection$.next(metadataName);
|
|
113
|
+
}
|
|
111
114
|
constructor(store, formBuilder) {
|
|
112
115
|
super();
|
|
113
116
|
this.store = store;
|
|
114
117
|
this.formBuilder = formBuilder;
|
|
115
118
|
this._metadata$ = new BehaviorSubject([]);
|
|
119
|
+
this._initialMetadataSelection$ = new BehaviorSubject('');
|
|
116
120
|
this.isSubmitted = false;
|
|
117
121
|
this.targetId = '';
|
|
118
122
|
this.editable = false;
|
|
@@ -128,12 +132,27 @@ class PryMetadataEditorComponent extends SubscriptionnerDirective {
|
|
|
128
132
|
let datasetMetadataIds = metadata?.map((u) => this.type === 'meta' ? u.metadataDef.id : u.userProfile);
|
|
129
133
|
return metaDefs.filter((meta) => !datasetMetadataIds?.includes(meta.id));
|
|
130
134
|
}));
|
|
131
|
-
this.subscriptions.add(
|
|
132
|
-
this.
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
this.
|
|
136
|
-
|
|
135
|
+
this.subscriptions.add(combineLatest([
|
|
136
|
+
this.metadataDefs$,
|
|
137
|
+
this.availableMetadata$,
|
|
138
|
+
this._metadata$,
|
|
139
|
+
this._initialMetadataSelection$
|
|
140
|
+
]).subscribe(([allMeta, availableMeta, inputMeta, initiallySelectedMeta]) => {
|
|
141
|
+
let initiallySelectedMetaAvailable = availableMeta.find((metadata) => metadata.name === initiallySelectedMeta);
|
|
142
|
+
if (!!initiallySelectedMetaAvailable) {
|
|
143
|
+
this.form.patchValue({
|
|
144
|
+
metadata: initiallySelectedMetaAvailable ?? availableMeta[0]
|
|
145
|
+
});
|
|
146
|
+
this.onMetaChange(initiallySelectedMetaAvailable ?? availableMeta[0]);
|
|
147
|
+
this.form.patchValue({ value: '' });
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
this.store.dispatch(MetadataActions.isEditable({ editable: true }));
|
|
151
|
+
this.form.patchValue({
|
|
152
|
+
metadata: allMeta.find((metadata) => metadata.name === initiallySelectedMeta),
|
|
153
|
+
value: inputMeta.find((meta) => this.metaDefinition(meta).name === initiallySelectedMeta)?.value
|
|
154
|
+
});
|
|
155
|
+
}
|
|
137
156
|
}));
|
|
138
157
|
}
|
|
139
158
|
onMetaChange(metadata) {
|
|
@@ -177,11 +196,11 @@ class PryMetadataEditorComponent extends SubscriptionnerDirective {
|
|
|
177
196
|
}
|
|
178
197
|
}
|
|
179
198
|
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 }); }
|
|
180
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: { targetId: "targetId", editable: "editable", metadata: "metadata" }, outputs: { addMeta: "addMeta", removeMeta: "removeMeta" }, usesInheritance: true, ngImport: i0, template: "<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 <ng-container *ngIf=\"form.value.metadata\">\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\">\n <label for=\"metadata\" id=\"metadata-label\" class=\"a-label\">Data</label>\n <pry-select\n id=\"metadata\"\n class=\"a-pry-select\"\n formControlName=\"metadata\"\n [items]=\"availableMetadata$ | async\"\n (ngModelChange)=\"onMetaChange($event)\"\n [isForm]=\"true\"\n [itemsAsOption]=\"true\"\n bindLabel=\"name\"\n [readonly]=\"editable\"\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']['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 </fieldset>\n\n <div class=\"m-btn-group -end\">\n <button type=\"submit\" class=\"a-btn a-btn--primary\">\n {{ (editable ? '@pry.
|
|
199
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: { targetId: "targetId", editable: "editable", metadata: "metadata", initialMetadataSelection: "initialMetadataSelection" }, outputs: { addMeta: "addMeta", removeMeta: "removeMeta" }, usesInheritance: true, ngImport: i0, template: "<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 <ng-container *ngIf=\"form.value.metadata\">\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\">\n <label for=\"metadata\" id=\"metadata-label\" class=\"a-label\">Data</label>\n <pry-select\n id=\"metadata\"\n class=\"a-pry-select\"\n formControlName=\"metadata\"\n [items]=\"availableMetadata$ | async\"\n (ngModelChange)=\"onMetaChange($event)\"\n [isForm]=\"true\"\n [itemsAsOption]=\"true\"\n bindLabel=\"name\"\n [readonly]=\"editable\"\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']['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 </fieldset>\n\n <div class=\"m-btn-group -end\">\n <button type=\"submit\" class=\"a-btn a-btn--primary\">\n {{ (editable ? '@pry.action.editMetadata' : '@pry.action.addMetadata') | i18n }}\n </button>\n </div>\n </form>\n </ng-container>\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: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
|
|
181
200
|
}
|
|
182
201
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryMetadataEditorComponent, decorators: [{
|
|
183
202
|
type: Component,
|
|
184
|
-
args: [{ selector: 'pry-metadata-editor', template: "<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 <ng-container *ngIf=\"form.value.metadata\">\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\">\n <label for=\"metadata\" id=\"metadata-label\" class=\"a-label\">Data</label>\n <pry-select\n id=\"metadata\"\n class=\"a-pry-select\"\n formControlName=\"metadata\"\n [items]=\"availableMetadata$ | async\"\n (ngModelChange)=\"onMetaChange($event)\"\n [isForm]=\"true\"\n [itemsAsOption]=\"true\"\n bindLabel=\"name\"\n [readonly]=\"editable\"\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']['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 </fieldset>\n\n <div class=\"m-btn-group -end\">\n <button type=\"submit\" class=\"a-btn a-btn--primary\">\n {{ (editable ? '@pry.
|
|
203
|
+
args: [{ selector: 'pry-metadata-editor', template: "<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 <ng-container *ngIf=\"form.value.metadata\">\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\">\n <label for=\"metadata\" id=\"metadata-label\" class=\"a-label\">Data</label>\n <pry-select\n id=\"metadata\"\n class=\"a-pry-select\"\n formControlName=\"metadata\"\n [items]=\"availableMetadata$ | async\"\n (ngModelChange)=\"onMetaChange($event)\"\n [isForm]=\"true\"\n [itemsAsOption]=\"true\"\n bindLabel=\"name\"\n [readonly]=\"editable\"\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']['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 </fieldset>\n\n <div class=\"m-btn-group -end\">\n <button type=\"submit\" class=\"a-btn a-btn--primary\">\n {{ (editable ? '@pry.action.editMetadata' : '@pry.action.addMetadata') | i18n }}\n </button>\n </div>\n </form>\n </ng-container>\n</ng-container>\n" }]
|
|
185
204
|
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.FormBuilder }]; }, propDecorators: { targetId: [{
|
|
186
205
|
type: Input
|
|
187
206
|
}], editable: [{
|
|
@@ -192,6 +211,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
192
211
|
type: Output
|
|
193
212
|
}], metadata: [{
|
|
194
213
|
type: Input
|
|
214
|
+
}], initialMetadataSelection: [{
|
|
215
|
+
type: Input
|
|
195
216
|
}] } });
|
|
196
217
|
|
|
197
218
|
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/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, 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","import { createReducer, on } from '@ngrx/store';\nimport { IMetadata } 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}\n\nexport const initialMetadataState: MetadataState = {\n metadata: [],\n selectedMetadata: null,\n loading: false,\n errors: null,\n editable: false\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);\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);\n\nexport const MetadataSelectors = {\n feature,\n loading,\n metadata,\n selectedMetadata,\n selectedMetadataId,\n selectMetadataById,\n editable\n};\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@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() targetId = '';\n @Input() editable = false;\n metadataDefs$: Observable<IMetadata[]>;\n availableMetadata$: Observable<IMetadata[]>;\n type: 'meta' | 'user' = 'meta';\n @Output() addMeta = new EventEmitter<MetaEventType>();\n @Output() removeMeta = new EventEmitter<MetaEventType>();\n\n @Input() set metadata(metadata: MetadataValue[] | MetadataUser[]) {\n // @ts-ignore\n const isUserProfile = metadata.length >= 1 && metadata[0].userProfile !== undefined;\n if (isUserProfile) {\n this.type = 'user';\n } else {\n this.type = 'meta';\n }\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.availableMetadata$ = combineLatest([this._metadata$, this.metadataDefs$]).pipe(\n map(([metadata, metaDefs]) => {\n let datasetMetadataIds = metadata?.map((u) =>\n this.type === 'meta' ? (u as MetadataValue).metadataDef.id : (u as MetadataUser).userProfile\n );\n return metaDefs.filter((meta) => !datasetMetadataIds?.includes(meta.id));\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 }\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 === 'user' ? (metadata as MetadataUser).userProfile : (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","<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 <ng-container *ngIf=\"form.value.metadata\">\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\">\n <label for=\"metadata\" id=\"metadata-label\" class=\"a-label\">Data</label>\n <pry-select\n id=\"metadata\"\n class=\"a-pry-select\"\n formControlName=\"metadata\"\n [items]=\"availableMetadata$ | async\"\n (ngModelChange)=\"onMetaChange($event)\"\n [isForm]=\"true\"\n [itemsAsOption]=\"true\"\n bindLabel=\"name\"\n [readonly]=\"editable\"\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']['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 </fieldset>\n\n <div class=\"m-btn-group -end\">\n <button type=\"submit\" class=\"a-btn a-btn--primary\">\n {{ (editable ? '@pry.admin.userInfo.editMetadata' : '@pry.admin.userInfo.addMetadata') | i18n }}\n </button>\n </div>\n </form>\n </ng-container>\n</ng-container>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors, IMetadata } 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","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 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';\n\nconst PRY_METADATA_EDITOR_COMPONENTS = [PryMetadataEditorComponent];\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","i1","i2","mergeMap","map","i2.MetadataService","i3"],"mappings":";;;;;;;;;;;;;;;;AAGa,MAAA,eAAe,GAAG;AAC7B,IAAA,YAAY,EAAE,YAAY,CAAC,CAAA,wBAAA,CAA0B,CAAC;AACtD,IAAA,mBAAmB,EAAE,YAAY,CAAC,kCAAkC,EAAE,KAAK,EAAkC,CAAC;AAC9G,IAAA,mBAAmB,EAAE,YAAY,CAAC,kCAAkC,EAAE,KAAK,EAAkB,CAAC;AAE9F,IAAA,gBAAgB,EAAE,YAAY,CAAC,CAAA,4BAAA,CAA8B,CAAC;AAE9D,IAAA,eAAe,EAAE,YAAY,CAAC,+BAA+B,EAAE,KAAK,EAAqB,CAAC;AAC1F,IAAA,sBAAsB,EAAE,YAAY,CAAC,CAAA,qCAAA,CAAuC,CAAC;AAC7E,IAAA,sBAAsB,EAAE,YAAY,CAAC,uCAAuC,EAAE,KAAK,EAAkB,CAAC;AAEtG,IAAA,cAAc,EAAE,YAAY,CAAC,4BAA4B,EAAE,KAAK,EAA2B,CAAC;AAC5F,IAAA,qBAAqB,EAAE,YAAY,CAAC,oCAAoC,EAAE,KAAK,EAA2B,CAAC;AAC3G,IAAA,qBAAqB,EAAE,YAAY,CAAC,oCAAoC,EAAE,KAAK,EAAkB,CAAC;AAElG,IAAA,eAAe,EAAE,YAAY,CAAC,+BAA+B,EAAE,KAAK,EAAkB,CAAC;AACvF,IAAA,sBAAsB,EAAE,YAAY,CAAC,uCAAuC,EAAE,KAAK,EAA2B,CAAC;AAC/G,IAAA,sBAAsB,EAAE,YAAY,CAAC,uCAAuC,EAAE,KAAK,EAAkB,CAAC;AAEtG,IAAA,kBAAkB,EAAE,YAAY,CAC9B,8CAA8C,EAC9C,KAAK,EAAyD,CAC/D;AACD,IAAA,yBAAyB,EAAE,YAAY,CACrC,sDAAsD,EACtD,KAAK,EAAyB,CAC/B;AACD,IAAA,yBAAyB,EAAE,YAAY,CACrC,sDAAsD,EACtD,KAAK,EAAkB,CACxB;AAED,IAAA,qBAAqB,EAAE,YAAY,CACjC,iDAAiD,EACjD,KAAK,EAA6C,CACnD;AACD,IAAA,4BAA4B,EAAE,YAAY,CACxC,yDAAyD,EACzD,KAAK,EAAyB,CAC/B;AACD,IAAA,4BAA4B,EAAE,YAAY,CACxC,yDAAyD,EACzD,KAAK,EAAkB,CACxB;AACD,IAAA,UAAU,EAAE,YAAY,CAAC,wBAAwB,EAAE,KAAK,EAAyB,CAAC;AAClF,IAAA,mBAAmB,EAAE,YAAY,CAAC,+CAA+C,EAAE,KAAK,EAAyB,CAAC;AAClH,IAAA,0BAA0B,EAAE,YAAY,CACtC,uDAAuD,EACvD,KAAK,EAAiC,CACvC;AACD,IAAA,0BAA0B,EAAE,YAAY,CACtC,uDAAuD,EACvD,KAAK,EAAkB,CACxB;;;ACpDI,MAAM,kBAAkB,GAAG,gBAAgB;AAUrC,MAAA,oBAAoB,GAAkB;AACjD,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,gBAAgB,EAAE,IAAI;AACtB,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,QAAQ,EAAE,KAAK;EACf;AAEF;;AAEG;MACU,eAAe,GAAG,aAAa,CAC1C,oBAAoB,EACpB,EAAE,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC1D,IAAA,GAAG,KAAK;AACR,IAAA,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC9B,IAAA,OAAO,EAAE,KAAK;CACf,CAAC,CAAC,EACH,EAAE,CACA,eAAe,CAAC,mBAAmB,EACnC,eAAe,CAAC,sBAAsB,EACtC,eAAe,CAAC,qBAAqB,EACrC,eAAe,CAAC,sBAAsB,EACtC,CAAC,KAAK,EAAE,MAAM,MAAM;AAClB,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,MAAM,CAAC,KAAK;AACrB,CAAA,CAAC,CACH,EACD,EAAE,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,KAAK,MAAM;AAC/C,IAAA,GAAG,KAAK;AACR,IAAA,gBAAgB,EAAE,IAAI;AACvB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,eAAe,CAAC,YAAY,EAAE,eAAe,CAAC,eAAe,EAAE,CAAC,KAAK,MAAM;AAC5E,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,IAAI;AACd,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC5D,IAAA,GAAG,KAAK;IACR,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;AAC9C,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACtD,IAAA,GAAG,KAAK;IACR,gBAAgB,EAAE,MAAM,CAAC,EAAE;AAC5B,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACjD,IAAA,GAAG,KAAK;IACR,QAAQ,EAAE,MAAM,CAAC,QAAQ;CAC1B,CAAC,CAAC;;AC3DL,MAAM,OAAO,GAAG,qBAAqB,CAA6BA,kBAA+B,CAAC,CAAC;AAEnG,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,QAAQ,CAAC,CAAC;AACrE,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,OAAO,CAAC,CAAC;AACnE,MAAM,gBAAgB,GAAG,cAAc,CACrC,OAAO,EACP,CAAC,KAAK,KAAM,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,gBAAgB,CAAe,IAAI,IAAI,CAC/F,CAAC;AACF,MAAM,kBAAkB,GAAG,cAAc,CAAC,gBAAgB,EAAE,CAAC,QAAQ,KAAK,QAAQ,EAAE,EAAE,CAAC,CAAC;AACxF,MAAM,kBAAkB,GAAG,CAAC,EAAU,KACpC,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAqB,KAAK,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAE1F,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC;AAEvD,MAAA,iBAAiB,GAAG;IAC/B,OAAO;IACP,OAAO;IACP,QAAQ;IACR,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,QAAQ;;;ACfH,MAAM,sBAAsB,GAAG,gBAAgB;AAC/C,MAAM,qBAAqB,GAAG,0BAA0B;AAKzD,MAAO,0BAA2B,SAAQ,wBAAwB,CAAA;IAYtE,IAAa,QAAQ,CAAC,QAA0C,EAAA;;AAE9D,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC;AACpF,QAAA,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;AACpB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;AACpB,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAChC;IAED,WAAoB,CAAA,KAAY,EAAU,WAAwB,EAAA;AAChE,QAAA,KAAK,EAAE,CAAC;QADU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QAAU,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AAtBlE,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAmC,EAAE,CAAC,CAAC;QAEvE,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACX,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;QACd,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAG1B,IAAI,CAAA,IAAA,GAAoB,MAAM,CAAC;AACrB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAiB,CAAC;AAC5C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAiB,CAAC;QAgBvD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACjC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrC,YAAA,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC/E,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACnE,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CACjF,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAI;AAC3B,YAAA,IAAI,kBAAkB,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,KACvC,IAAI,CAAC,IAAI,KAAK,MAAM,GAAI,CAAmB,CAAC,WAAW,CAAC,EAAE,GAAI,CAAkB,CAAC,WAAW,CAC7F,CAAC;AACF,YAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,kBAAkB,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;SAC1E,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACzC,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACnB,gBAAA,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AAClB,aAAA,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;SACrC,CAAC,CACH,CAAC;KACH;AAED,IAAA,YAAY,CAAC,QAAmB,EAAA;AAC9B,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;gBAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;AAC9G,aAAA;AAAM,iBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC7G,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClE,aAAA;AACF,SAAA;KACF;AAED,IAAA,YAAY,CAAC,eAA6C,EAAA;AACxD,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACpE,QAAA,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;QAClC,IAAI,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;AAE9D,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACnB,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,KAAK,EAAE,KAAK;AACb,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;KACvC;AAED,IAAA,cAAc,CAAC,QAAsC,EAAA;AACnD,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,GAAI,QAAyB,CAAC,WAAW,GAAI,QAA0B,CAAC,WAAW,CAAC;KAChH;AAED,IAAA,cAAc,CAAC,QAAsC,EAAA;QACnD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KAC3F;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChB,EAAE,EAAE,IAAI,CAAC,QAAQ;gBACjB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;gBAC7C,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAChC,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;8GA9FU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,2NChBvC,okNA6JA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD7Ia,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,okNAAA,EAAA,CAAA;sHAOtB,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAII,OAAO,EAAA,CAAA;sBAAhB,MAAM;gBACG,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAEM,QAAQ,EAAA,CAAA;sBAApB,KAAK;;;MEnBK,eAAe,CAAA;IAC1B,WAAoB,CAAA,UAAsB,EAAU,KAAiB,EAAA;QAAjD,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KAAI;IAEzE,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAM,CAAG,EAAA,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;KACzE;AAED,IAAA,WAAW,CAAC,EAAU,EAAA;QACpB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAY,GAAG,GAAG,CAAA,aAAA,EAAgB,EAAE,CAAE,CAAA,CAAC,CAAC,CAAC,CAAC;KACxF;AAED,IAAA,YAAY,CAAC,QAAmB,EAAA;QAC9B,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAO,GAAG,GAAG,CAAA,SAAA,CAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;KACrF;8GAnBU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCAY,eAAe,CAAA;AAgG1B,IAAA,WAAA,CACU,QAAiB,EACjB,OAAwB,EACxB,iBAAoC,EAAA;QAFpC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;QACxB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AAlG9C,QAAA,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC,MAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,EACpCC,UAAQ,CAAC,CAAC,CAAC,KACT,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,IAAI,CACjCC,KAAG,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,EAC9E,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,eAAe,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC/E,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,MAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,EACvCD,UAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CACtCC,KAAG,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,sBAAsB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EACvE,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,eAAe,CAAC,sBAAsB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAClF,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAC,MAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,eAAe,CAAC,cAAc,CAAC,EACtCD,UAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC7CC,KAAG,CAAC,MAAM,eAAe,CAAC,qBAAqB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EAC/E,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,eAAe,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACjF,CACF,CACF,CACF,CAAC;QAEF,IAAsB,CAAA,sBAAA,GAAG,YAAY,CAAC,MACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,eAAe,CAAC,qBAAqB,CAAC,EAC7CA,KAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,OAAO,eAAe,CAAC,YAAY,EAAE,CAAC;SACvC,CAAC,CACH,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,mBAAmB,GAAG,YAAY,CAAC,MACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAC1CD,UAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAC/FC,KAAG,CAAC,MAAM,eAAe,CAAC,yBAAyB,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,EACrF,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,eAAe,CAAC,yBAAyB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC9E,CACF,CACF,CACF,CAAC;QAEF,IAA0B,CAAA,0BAAA,GAAG,YAAY,CAAC,MACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,eAAe,CAAC,yBAAyB,CAAC,EACjDD,UAAQ,CAAC,CAAC,MAAM,KAAI;YAClB,OAAO;AACL,gBAAA,iBAAiB,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;gBAClE,eAAe,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC/C,gBAAA,iBAAiB,CAAC,OAAO,CAAC,WAAW,EAAE;aACxC,CAAC;SACH,CAAC,CACH,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,sBAAsB,GAAG,YAAY,CAAC,MACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,eAAe,CAAC,qBAAqB,CAAC,EAC7CA,UAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CACpFC,KAAG,CAAC,MAAM,eAAe,CAAC,4BAA4B,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,EACxF,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,eAAe,CAAC,4BAA4B,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACjF,CACF,CACF,CACF,CAAC;QAEF,IAA6B,CAAA,6BAAA,GAAG,YAAY,CAAC,MAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,eAAe,CAAC,4BAA4B,CAAC,EACpDD,UAAQ,CAAC,CAAC,MAAM,KAAI;YAClB,OAAO;AACL,gBAAA,iBAAiB,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;gBAClE,eAAe,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC/C,gBAAA,iBAAiB,CAAC,OAAO,CAAC,WAAW,EAAE;aACxC,CAAC;SACH,CAAC,CACH,CACF,CAAC;KAME;8GApGO,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAf,eAAe,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;ACGX,MAAM,8BAA8B,GAAG,CAAC,0BAA0B,CAAC,CAAC;MAgBvD,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAhBO,YAAA,EAAA,CAAA,0BAA0B,CAM9D,EAAA,OAAA,EAAA,CAAA,YAAY,oDAGZ,aAAa;YACb,aAAa;YACb,mBAAmB;YACnB,eAAe;AACf,YAAA,aAAa,aAbuB,0BAA0B,CAAA,EAAA,CAAA,CAAA,EAAA;AAgBrD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAV7B,YAAY;AACZ,YAAA,WAAW,CAAC,UAAU,CAAC,kBAAkB,EAAE,eAAe,CAAC;AAC3D,YAAA,aAAa,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC;YAC3C,aAAa;YACb,aAAa;YACb,mBAAmB;YACnB,eAAe;YACf,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGJ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,GAAG,8BAA8B,CAAC;AACjD,oBAAA,OAAO,EAAE,CAAC,GAAG,8BAA8B,CAAC;AAC5C,oBAAA,OAAO,EAAE;wBACP,YAAY;AACZ,wBAAA,WAAW,CAAC,UAAU,CAAC,kBAAkB,EAAE,eAAe,CAAC;AAC3D,wBAAA,aAAa,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC;wBAC3C,aAAa;wBACb,aAAa;wBACb,mBAAmB;wBACnB,eAAe;wBACf,aAAa;AACd,qBAAA;AACF,iBAAA,CAAA;;;ACzBD;;AAEG;;;;"}
|
|
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/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, 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","import { createReducer, on } from '@ngrx/store';\nimport { IMetadata } 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}\n\nexport const initialMetadataState: MetadataState = {\n metadata: [],\n selectedMetadata: null,\n loading: false,\n errors: null,\n editable: false\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);\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);\n\nexport const MetadataSelectors = {\n feature,\n loading,\n metadata,\n selectedMetadata,\n selectedMetadataId,\n selectMetadataById,\n editable\n};\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@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() targetId = '';\n @Input() editable = false;\n metadataDefs$: Observable<IMetadata[]>;\n availableMetadata$: Observable<IMetadata[]>;\n type: 'meta' | 'user' = 'meta';\n @Output() addMeta = new EventEmitter<MetaEventType>();\n @Output() removeMeta = new EventEmitter<MetaEventType>();\n\n @Input() set metadata(metadata: MetadataValue[] | MetadataUser[]) {\n // @ts-ignore\n const isUserProfile = metadata.length >= 1 && metadata[0].userProfile !== undefined;\n if (isUserProfile) {\n this.type = 'user';\n } else {\n this.type = 'meta';\n }\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.availableMetadata$ = combineLatest([this._metadata$, this.metadataDefs$]).pipe(\n map(([metadata, metaDefs]) => {\n let datasetMetadataIds = metadata?.map((u) =>\n this.type === 'meta' ? (u as MetadataValue).metadataDef.id : (u as MetadataUser).userProfile\n );\n return metaDefs.filter((meta) => !datasetMetadataIds?.includes(meta.id));\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 }\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 === 'user' ? (metadata as MetadataUser).userProfile : (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","<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 <ng-container *ngIf=\"form.value.metadata\">\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\">\n <label for=\"metadata\" id=\"metadata-label\" class=\"a-label\">Data</label>\n <pry-select\n id=\"metadata\"\n class=\"a-pry-select\"\n formControlName=\"metadata\"\n [items]=\"availableMetadata$ | async\"\n (ngModelChange)=\"onMetaChange($event)\"\n [isForm]=\"true\"\n [itemsAsOption]=\"true\"\n bindLabel=\"name\"\n [readonly]=\"editable\"\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']['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 </fieldset>\n\n <div class=\"m-btn-group -end\">\n <button type=\"submit\" class=\"a-btn a-btn--primary\">\n {{ (editable ? '@pry.action.editMetadata' : '@pry.action.addMetadata') | i18n }}\n </button>\n </div>\n </form>\n </ng-container>\n</ng-container>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors, IMetadata } 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","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 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';\n\nconst PRY_METADATA_EDITOR_COMPONENTS = [PryMetadataEditorComponent];\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","i1","i2","mergeMap","map","i2.MetadataService","i3"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provoly-dashboard-dataset.mjs","sources":["../../../../projects/provoly/dashboard/dataset/style/css.component.ts","../../../../projects/provoly/dashboard/dataset/components/dataset-card/dataset-card.component.ts","../../../../projects/provoly/dashboard/dataset/components/dataset-card/dataset-card.component.html","../../../../projects/provoly/dashboard/dataset/components/dataset-detail/dataset-detail.component.ts","../../../../projects/provoly/dashboard/dataset/components/dataset-detail/dataset-detail.component.html","../../../../projects/provoly/dashboard/dataset/components/dataset.component.ts","../../../../projects/provoly/dashboard/dataset/components/dataset.component.html","../../../../projects/provoly/dashboard/dataset/i18n/en.translations.ts","../../../../projects/provoly/dashboard/dataset/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/dataset/dataset.module.ts","../../../../projects/provoly/dashboard/dataset/provoly-dashboard-dataset.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-dataset-css',\n template: '',\n styleUrls: ['./_o-pry-dataset.scss', './_o-pry-dataset-card.scss', './_o-pry-dataset-detail.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryDatasetCssComponent {}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Dataset } from '@provoly/dashboard';\n\n@Component({\n selector: 'pry-dataset-card',\n templateUrl: './dataset-card.component.html'\n})\nexport class PryDatasetCardComponent {\n @Input() dataset!: Dataset;\n @Output() consult = new EventEmitter<Dataset>();\n\n goToDetailView() {\n this.consult.emit(this.dataset);\n }\n}\n","<pry-dataset-css></pry-dataset-css>\n<div class=\"o-pry-dataset-card\">\n <div class=\"o-pry-dataset-card__header\">\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"dataset.id | translateId: { type: 'datasource', output: 'icon' } | async\"\n />\n <div class=\"a-h4 dataset-name\">{{ dataset.name }}</div>\n </div>\n <div class=\"o-pry-dataset-card__content\"></div>\n <div class=\"o-pry-dataset-card__footer\">\n <button class=\"a-btn\" (click)=\"goToDetailView()\">\n <pry-icon iconSvg=\"table\"></pry-icon>\n {{ '@pry.dataset.table' | i18n }}\n </button>\n <button class=\"a-btn\" disabled>\n <pry-icon iconSvg=\"download\"></pry-icon>\n {{ '@pry.dataset.export' | i18n }}\n </button>\n <button class=\"a-btn\" disabled>\n {{ '@pry.dataset.api' | i18n }}\n </button>\n </div>\n <div class=\"o-pry-dataset-card__button\">\n <button class=\"a-btn\" (click)=\"goToDetailView()\">{{ '@pry.dataset.consult' | i18n }}</button>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n DashboardActions,\n DashboardSelectors,\n Dataset,\n DatasetVersion,\n DataSourceActions,\n DataSourceSelectors,\n GlobalManifest,\n ResultSets,\n SearchActions,\n ViewMode,\n WidgetManifest\n} from '@provoly/dashboard';\nimport { map, Observable } from 'rxjs';\n\nlet nextCompId = 0;\n\n@Component({\n selector: 'pry-dataset-detail',\n templateUrl: './dataset-detail.component.html'\n})\nexport class PryDatasetDetailComponent implements OnInit {\n @Input() dataset!: Dataset;\n @Output() goToCatalog = new EventEmitter();\n widgetManifest = {\n table: {\n header: true,\n locked: true,\n type: 'table',\n layout: { x: 1, y: 1, height: 12, width: 12 },\n options: {},\n datasource: ['']\n },\n map: {\n header: false,\n type: 'map',\n layout: { x: 1, y: 1, height: 12, width: 12 },\n options: {\n layers: [{ type: 'marker' }],\n fit: true\n },\n datasource: ['']\n }\n } as { [key: string]: WidgetManifest };\n protected readonly ViewMode = ViewMode;\n compId: number = 0;\n tab: number = 0;\n datasetItems$: Observable<ResultSets | null> | undefined;\n public datasetVersions$!: Observable<DatasetVersion[]>;\n showModalStatus: boolean = false;\n selectedDatasetVersion?: DatasetVersion;\n selectedMode: ViewMode = ViewMode.CONSULT;\n activeVersion$!: Observable<string | undefined>;\n constructor(private store: Store) {\n this.compId = nextCompId++;\n }\n\n ngOnInit() {\n this.store.dispatch(DataSourceActions.dataset.listVersionsByDatasetId({ id: this.dataset.id }));\n this.store.dispatch(DashboardActions.removeFilters());\n this.store.dispatch(SearchActions.getDatasourceItems({ id: this.dataset.id }));\n this.datasetItems$ = this.store.select(DashboardSelectors.resultSets);\n this.datasetVersions$ = this.store\n .select(DataSourceSelectors.matchingDatasetVersions(this.dataset.id))\n .pipe(map((res) => [...res].sort((a, b) => b.version - a.version)));\n this.widgetManifest['table'].datasource = [this.dataset.id];\n this.widgetManifest['map'].datasource = [this.dataset.id];\n this.activeVersion$ = this.datasetVersions$.pipe(\n map(\n (versions) =>\n versions.sort((v1, v2) => v2.version - v1.version).find((version) => version.state === 'ACTIVE')?.id\n )\n );\n }\n\n goBack() {\n this.goToCatalog.emit();\n }\n\n goToConsult(version: DatasetVersion | undefined): void {\n this.selectedDatasetVersion = version;\n this.showModalStatus = false;\n this.selectedMode = ViewMode.CONSULT;\n }\n\n switch(number: number) {\n this.tab = number;\n }\n\n handleButtonAction(version: DatasetVersion) {\n this.selectedDatasetVersion = version;\n switch (version.state) {\n case 'ERROR':\n this.consultErrors(version);\n break;\n case 'ACTIVE':\n this.deactivateVersion(version);\n break;\n case 'INACTIVE':\n this.activateVersion(version);\n break;\n default:\n break;\n }\n }\n\n consultErrors(version: DatasetVersion) {\n this.selectedDatasetVersion = version;\n this.showModalStatus = true;\n }\n\n private deactivateVersion(version: DatasetVersion) {\n this.store.dispatch(\n DataSourceActions.dataset.deactivateDatasetVersion({\n datasetId: this.dataset.id,\n versionId: version.id\n })\n );\n }\n\n private activateVersion(version: DatasetVersion) {\n this.store.dispatch(\n DataSourceActions.dataset.activateDatasetVersion({\n datasetId: this.dataset.id,\n versionId: version.id\n })\n );\n }\n\n modify(type: string, { manifest }: { manifest: WidgetManifest }) {\n this.widgetManifest[type] = manifest;\n }\n}\n","<div class=\"o-manifest-layout__toolbox\">\n <button class=\"a-btn a-btn--primary\" (click)=\"goBack()\">{{ '@pry.dataset.returnToList' | i18n }}</button>\n</div>\n\n<div class=\"dataset-layout__content\">\n <h1 class=\"a-h1\">{{ dataset.name }}</h1>\n <div class=\"dataset-detail\">\n <pry-tab-group translationStringBase=\"@pry.dataset.\">\n <pry-tab [templateRef]=\"table\" name=\"data\"></pry-tab>\n <pry-tab [templateRef]=\"map\" name=\"map\"></pry-tab>\n <pry-tab [templateRef]=\"datasetVersions\" name=\"versionHistory\"></pry-tab>\n </pry-tab-group>\n </div>\n</div>\n\n<ng-template #table>\n <div class=\"dashboard-container\">\n <pry-dashboard [staticDashboard]=\"{ widgets: [widgetManifest['table']] }\"></pry-dashboard>\n </div>\n</ng-template>\n<ng-template #map>\n <div class=\"dashboard-container\">\n <pry-dashboard [staticDashboard]=\"{ widgets: [widgetManifest['map']] }\"></pry-dashboard>\n </div>\n</ng-template>\n<ng-template #datasetVersions>\n <div class=\"table-container\">\n <table class=\"a-table\">\n <caption>\n {{\n '@pry.admin.dataset.title' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th>{{ '@pry.dataset.version.title' | i18n }}</th>\n <th>{{ '@pry.dataset.date' | i18n }}</th>\n <th>{{ '@pry.dataset.status' | i18n }}</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let version of datasetVersions$ | async\">\n <td>\n {{ version.version }}\n <pry-icon *ngIf=\"(activeVersion$ | async) === version.id\" iconSvg=\"check\" class=\"check\"></pry-icon>\n </td>\n <td [pryTooltip]=\"dateTooltip\">\n {{ version.lastModified | sinceDate }}\n <ng-template #dateTooltip>\n <div class=\"m-tooltip\" aria-hidden=\"true\" role=\"tooltip\" id=\"dateTooltip\">\n <span class=\"m-tooltip__text\"> {{ version.lastModified | sinceDate : { onlyLocale: true } }}</span>\n </div>\n </ng-template>\n </td>\n <td>\n {{\n ((activeVersion$ | async) === version.id\n ? '@pry.dataset.version.currentlyActive'\n : '@pry.dataset.version.' + version.state\n ) | i18n\n }}\n <ng-container>\n <div class=\"info-icon description-container description\">\n <span class=\"info-text\">i</span>\n </div>\n <div class=\"description-tooltip\">\n <p class=\"a-p\">\n <ng-container [ngSwitch]=\"version.state\">\n <ng-container *ngSwitchCase=\"'ERROR'\">\n {{ '@pry.dataset.tooltip.error' | i18n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'ACTIVE'\">\n {{\n ((activeVersion$ | async) === version.id\n ? '@pry.dataset.tooltip.active'\n : '@pry.dataset.tooltip.inactive'\n ) | i18n\n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'LOADING'\">\n {{ '@pry.dataset.tooltip.loading' | i18n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'INDEXING'\">\n {{ '@pry.dataset.tooltip.loading' | i18n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'INACTIVE'\">\n {{ '@pry.dataset.tooltip.invalid' | i18n }}\n </ng-container>\n </ng-container>\n </p>\n </div>\n </ng-container>\n </td>\n <td>\n <ng-container *ngIf=\"version.state !== 'LOADING' && version.state !== 'INDEXING'\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary a-btn--icon-text ng-star-inserted\"\n (click)=\"handleButtonAction(version)\"\n >\n {{ '@pry.dataset.buttonAction.' + version.state | i18n }}\n </button>\n <ng-container *ngIf=\"version.state === 'ACTIVE' || version.state === 'INACTIVE'\">\n <div class=\"info-icon description-container description\">\n <span class=\"info-text\">i</span>\n </div>\n <div class=\"description-tooltip validate-tooltip\">\n <p class=\"a-p\">\n {{\n (version.state === 'ACTIVE'\n ? '@pry.dataset.tooltip.inValidateButton'\n : '@pry.dataset.tooltip.validateButton'\n ) | i18n\n }}\n </p>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"version.hasWarnings && version.state !== 'ERROR'\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary a-btn--icon-text ng-star-inserted\"\n (click)=\"consultErrors(version)\"\n >\n {{ '@pry.dataset.buttonAction.WARNING' | i18n }}\n </button>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"showModalStatus\">\n <pry-modal-status [version]=\"selectedDatasetVersion\" (gotoConsult)=\"goToConsult($event)\"></pry-modal-status>\n</ng-container>\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n ClassActions,\n DashboardActions,\n Dataset,\n DataSourceActions,\n DataSourceSelectors,\n FieldActions,\n SubscriptionnerDirective,\n ViewMode\n} from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs';\n\n@Component({\n selector: 'pry-dataset',\n templateUrl: './dataset.component.html'\n})\nexport class PryDatasetComponent extends SubscriptionnerDirective {\n datasets$: Observable<Dataset[]>;\n selectedDataset: Dataset | null = null;\n selectedMode: ViewMode = ViewMode.CATALOG;\n ViewMode = ViewMode;\n search$ = new BehaviorSubject('');\n filteredDatasets$: Observable<Dataset[]>;\n\n constructor(protected store: Store<any>) {\n super();\n this.store.dispatch(DataSourceActions.load());\n this.store.dispatch(ClassActions.load());\n this.store.dispatch(FieldActions.load());\n this.datasets$ = this.store.select(DataSourceSelectors.datasets);\n this.store.dispatch(DashboardActions.fetchManifestsList());\n this.filteredDatasets$ = combineLatest([this.datasets$, this.search$]).pipe(\n map(([datasets, search]) =>\n datasets\n .filter((dataset) => search.length === 0 || dataset.name.toLowerCase().includes(search.toLowerCase()))\n .sort((a, b) => a.name.localeCompare(b.name))\n )\n );\n this.store.dispatch(DataSourceActions.dataset.listVersions());\n }\n\n consult(dataset: Dataset) {\n this.selectedDataset = dataset;\n this.selectedMode = ViewMode.CONSULT;\n }\n}\n","<pry-dataset-css></pry-dataset-css>\n<div class=\"o-dataset-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchCase=\"ViewMode.CATALOG\">\n <div class=\"o-manifest-layout__toolbox\">\n <div class=\"o-pry-dataset__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.dataset.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.dataset.title' | i18n }}</h1>\n <div class=\"o-pry-dataset\">\n <pry-dataset-card\n *ngFor=\"let dataset of filteredDatasets$ | async\"\n [dataset]=\"dataset\"\n (consult)=\"consult($event)\"\n ></pry-dataset-card>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CONSULT\">\n <ng-template [ngIf]=\"selectedDataset\">\n <pry-dataset-detail\n [dataset]=\"selectedDataset\"\n (goToCatalog)=\"selectedMode = ViewMode.CATALOG\"\n ></pry-dataset-detail>\n </ng-template>\n </ng-container>\n</div>\n","export const enTranslations = {\n '@pry': {\n dataset: {\n consult: 'View',\n title: 'Dataset catalog',\n search: 'Search',\n date: 'Date',\n status: 'Status',\n versionHistory: 'Version history',\n data: 'Data',\n table: 'Table',\n map: 'Map',\n export: 'Export',\n api: 'API',\n returnToList: 'Back to catalog',\n version: {\n title: 'Title',\n INDEXING: 'Loading',\n LOADING: 'Loading',\n INACTIVE: 'Invalid',\n ERROR: 'Error',\n ACTIVE: 'Available',\n currentlyActive: 'Active'\n },\n buttonAction: {\n ACTIVE: 'Invalidate',\n INACTIVE: 'Validate',\n ERROR: 'Consult errors',\n WARNING: 'Consult warnings',\n LOADING: '',\n INDEXING: ''\n },\n error: {\n type: 'Type',\n elements: 'Elements',\n message: 'Message',\n close: 'Fermer',\n modalTitle: {\n ERROR: 'List of errors',\n WARNING: 'List of warnings'\n },\n level: {\n ERROR: 'Error',\n WARNING: 'Warning'\n },\n code: {\n UNRECOGNIZED: 'Unrecognized attribute {{name}}',\n FORMAT: 'Wrong format for attribute {{name}}',\n ELASTIC_SEARCH: 'Insertion error for element {{recordId}}',\n NO_VALUES: 'No value for {{recordId}} line',\n FORMAT_FILE_ERROR: 'Unsupported file format',\n NO_ATTRIBUTES: 'The imported data does not correspond to the data model indicated in the import target'\n }\n },\n tooltip: {\n error: 'Errors occurred when integrating the data into the solution. The data is not accessible',\n active: 'The data retrieved by default in the application corresponds to the data integrated in this version.',\n inactive:\n 'The data for this version is available but not uploaded by default. It is possible to display them by explicitly requesting this version.',\n loading: 'The data is currently being integrated into the solution',\n invalid:\n 'The data in this version is present in the solution but is not relevant. It is not available are not available for display',\n inValidateButton:\n 'Allows you to make the version\\'s data unavailable if it is considered irrelevant from a business point of view. If the invalidated version is the active version, then the data retrieved by default will be that of the most recent previous \"Available\" version, which will thus change to \"Active\" status.',\n validateButton:\n \"Allows the version's data to be made available if it is considered relevant from a business point of view after having been invalidated. If the validated version is the most recent, it will become the active version and its data will be the default.\"\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n dataset: {\n consult: 'Consulter',\n title: 'Catalogue des jeux de données',\n search: 'Rechercher',\n date: 'Date',\n status: 'Statut',\n versionHistory: 'Historique de versions',\n data: 'Données',\n table: 'Tableau',\n map: 'Carte',\n export: 'Export',\n api: 'API',\n returnToList: 'Retour au catalogue',\n version: {\n title: 'Intitulé',\n INDEXING: 'En chargement',\n LOADING: 'En chargement',\n INACTIVE: 'Invalide',\n ERROR: 'En erreur',\n ACTIVE: 'Disponible',\n currentlyActive: 'Actif'\n },\n buttonAction: {\n ACTIVE: 'Invalider',\n INACTIVE: 'Valider',\n ERROR: 'Consulter erreurs',\n WARNING: 'Consulter warnings',\n LOADING: '',\n INDEXING: ''\n },\n error: {\n ERROR: 'Erreur',\n WARNING: 'Warning',\n type: 'Type',\n elements: 'Elements',\n message: 'Message',\n close: 'Fermer',\n modalTitle: {\n ERROR: 'Liste des erreurs',\n WARNING: 'Liste des warnings'\n },\n level: {\n ERROR: 'Erreur',\n WARNING: 'Warning'\n },\n code: {\n UNRECOGNIZED: 'Attribut {{name}} non reconnu',\n FORMAT: \"Format d'attribut {{name}} incorrect\",\n ELASTIC_SEARCH: \"Erreur d'insertion pour l'élément {{recordId}}\",\n NO_VALUES: 'Pas de valeur pour la ligne {{recordId}}',\n FORMAT_FILE_ERROR: \"Le format du fichier transmis n'est pas géré\",\n NO_ATTRIBUTES: \"Les données importées ne correspondent pas au modèle de données indiquer en cible de l'import\"\n }\n },\n tooltip: {\n error:\n \"Des erreurs sont apparues lors de l'intégration des données dans la solution. Les données ne sont pas accessibles\",\n active:\n \"Les données remontées par défaut dans l'application correspondent à celles intégrées dans cette version\",\n inactive:\n 'Les données de cette version sont disponibles mais non remontées par défaut. Il est possible de les afficher en demandant explicitement cette version.',\n loading: \"Les données sont en cours d'intégration dans la solution\",\n invalid:\n \"Les données de cette version sont présentes dans la solution mais sont non pertinentes. Elles ne sont pas disponibles pour l'affichage\",\n inValidateButton:\n 'Permet de rendre indisponible les données de la version dans le cas où elles sont considérées comme non pertinente d\\'un point de vue métier. Si la version invalidée est la version active, alors les données récupérées par défaut seront celle de la version \"Disponible\" précédente la plus récente qui passera ainsi au statut \"Active\"',\n validateButton:\n \"Permet de rendre disponible les données de la version dans le cas où elles sont considérées comme pertinente d'un point de vue métier après avoir été invalider. Si la version validée est la plus récente, elle deviendra ainsi la version active et ses données seront celles remontées par défaut\"\n }\n }\n }\n};\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n PryCoreModule,\n PryDashboardModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PryModalStatusModule,\n PryOverlayModule\n} from '@provoly/dashboard';\nimport { PrySinceDateModule } from '@provoly/dashboard/components/sinceDate';\nimport { PryDatasetCardComponent } from './components/dataset-card/dataset-card.component';\nimport { PryDatasetDetailComponent } from './components/dataset-detail/dataset-detail.component';\nimport { PryDatasetComponent } from './components/dataset.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PryDatasetCssComponent } from './style/css.component';\n\n@NgModule({\n providers: [],\n declarations: [PryDatasetComponent, PryDatasetCssComponent, PryDatasetCardComponent, PryDatasetDetailComponent],\n imports: [\n CommonModule,\n PryIconModule,\n PryCoreModule,\n PryOverlayModule,\n PryI18nModule,\n FormsModule,\n PryDashboardModule,\n PrySinceDateModule,\n PryModalStatusModule\n ],\n exports: [PryDatasetComponent, PryDatasetCssComponent, PryDatasetCardComponent, PryDatasetDetailComponent]\n})\nexport class PryDatasetModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'dataset', frTranslations);\n this.pryTranslateService.addLangObject('en', 'dataset', enTranslations);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.PryDatasetCssComponent","i3","i4","i5.PryDatasetCssComponent","i6.PryDatasetCardComponent","i7.PryDatasetDetailComponent"],"mappings":";;;;;;;;;;;;;MAQa,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,uDAJvB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yeAAA,EAAA,iaAAA,EAAA,60CAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAID,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EACjB,QAAA,EAAA,EAAE,EAEG,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,yeAAA,EAAA,iaAAA,EAAA,60CAAA,CAAA,EAAA,CAAA;;;MCC1B,uBAAuB,CAAA;AAJpC,IAAA,WAAA,GAAA;AAMY,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAW,CAAC;AAKjD,KAAA;IAHC,cAAc,GAAA;QACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACjC;8GANU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,yHCPpC,ghCA6BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDtBa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,ghCAAA,EAAA,CAAA;8BAInB,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACI,OAAO,EAAA,CAAA;sBAAhB,MAAM;;;AEQT,IAAI,UAAU,GAAG,CAAC,CAAC;MAMN,yBAAyB,CAAA;AAgCpC,IAAA,WAAA,CAAoB,KAAY,EAAA;QAAZ,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;AA9BtB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;AAC3C,QAAA,IAAA,CAAA,cAAc,GAAG;AACf,YAAA,KAAK,EAAE;AACL,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;AAC7C,gBAAA,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,CAAC,EAAE,CAAC;AACjB,aAAA;AACD,YAAA,GAAG,EAAE;AACH,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;AAC7C,gBAAA,OAAO,EAAE;AACP,oBAAA,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,oBAAA,GAAG,EAAE,IAAI;AACV,iBAAA;gBACD,UAAU,EAAE,CAAC,EAAE,CAAC;AACjB,aAAA;SACmC,CAAC;QACpB,IAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC;QACvC,IAAM,CAAA,MAAA,GAAW,CAAC,CAAC;QACnB,IAAG,CAAA,GAAA,GAAW,CAAC,CAAC;QAGhB,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AAEjC,QAAA,IAAA,CAAA,YAAY,GAAa,QAAQ,CAAC,OAAO,CAAC;AAGxC,QAAA,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;KAC5B;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK;aAC/B,MAAM,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACpE,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC9C,GAAG,CACD,CAAC,QAAQ,KACP,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,EAAE,EAAE,CACvG,CACF,CAAC;KACH;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;AAED,IAAA,WAAW,CAAC,OAAmC,EAAA;AAC7C,QAAA,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC;AACtC,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC;KACtC;AAED,IAAA,MAAM,CAAC,MAAc,EAAA;AACnB,QAAA,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;KACnB;AAED,IAAA,kBAAkB,CAAC,OAAuB,EAAA;AACxC,QAAA,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC;QACtC,QAAQ,OAAO,CAAC,KAAK;AACnB,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC5B,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAChC,MAAM;AACR,YAAA,KAAK,UAAU;AACb,gBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;gBAC9B,MAAM;AACR,YAAA;gBACE,MAAM;AACT,SAAA;KACF;AAED,IAAA,aAAa,CAAC,OAAuB,EAAA;AACnC,QAAA,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC;AACtC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;KAC7B;AAEO,IAAA,iBAAiB,CAAC,OAAuB,EAAA;QAC/C,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,iBAAiB,CAAC,OAAO,CAAC,wBAAwB,CAAC;AACjD,YAAA,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;YAC1B,SAAS,EAAE,OAAO,CAAC,EAAE;AACtB,SAAA,CAAC,CACH,CAAC;KACH;AAEO,IAAA,eAAe,CAAC,OAAuB,EAAA;QAC7C,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,iBAAiB,CAAC,OAAO,CAAC,sBAAsB,CAAC;AAC/C,YAAA,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;YAC1B,SAAS,EAAE,OAAO,CAAC,EAAE;AACtB,SAAA,CAAC,CACH,CAAC;KACH;AAED,IAAA,MAAM,CAAC,IAAY,EAAE,EAAE,QAAQ,EAAgC,EAAA;AAC7D,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;KACtC;8GA9GU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,mICvBtC,uoLA6IA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDtHa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,uoLAAA,EAAA,CAAA;4FAIrB,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;;;AEPH,MAAO,mBAAoB,SAAQ,wBAAwB,CAAA;AAQ/D,IAAA,WAAA,CAAsB,KAAiB,EAAA;AACrC,QAAA,KAAK,EAAE,CAAC;QADY,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QANvC,IAAe,CAAA,eAAA,GAAmB,IAAI,CAAC;AACvC,QAAA,IAAA,CAAA,YAAY,GAAa,QAAQ,CAAC,OAAO,CAAC;QAC1C,IAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC;AACpB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;QAKhC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,iBAAiB,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACzE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,KACrB,QAAQ;aACL,MAAM,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;aACrG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAChD,CACF,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;KAC/D;AAED,IAAA,OAAO,CAAC,OAAgB,EAAA;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;AAC/B,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC;KACtC;8GA5BU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,0EClBhC,k+CAuCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDrBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;+BACE,aAAa,EAAA,QAAA,EAAA,k+CAAA,EAAA,CAAA;;;AEflB,MAAM,cAAc,GAAG;AAC5B,IAAA,MAAM,EAAE;AACN,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,KAAK,EAAE,iBAAiB;AACxB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,cAAc,EAAE,iBAAiB;AACjC,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,YAAY,EAAE,iBAAiB;AAC/B,YAAA,OAAO,EAAE;AACP,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,QAAQ,EAAE,SAAS;AACnB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,QAAQ,EAAE,SAAS;AACnB,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,MAAM,EAAE,WAAW;AACnB,gBAAA,eAAe,EAAE,QAAQ;AAC1B,aAAA;AACD,YAAA,YAAY,EAAE;AACZ,gBAAA,MAAM,EAAE,YAAY;AACpB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,KAAK,EAAE,gBAAgB;AACvB,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,QAAQ,EAAE,EAAE;AACb,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,UAAU,EAAE;AACV,oBAAA,KAAK,EAAE,gBAAgB;AACvB,oBAAA,OAAO,EAAE,kBAAkB;AAC5B,iBAAA;AACD,gBAAA,KAAK,EAAE;AACL,oBAAA,KAAK,EAAE,OAAO;AACd,oBAAA,OAAO,EAAE,SAAS;AACnB,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,YAAY,EAAE,iCAAiC;AAC/C,oBAAA,MAAM,EAAE,qCAAqC;AAC7C,oBAAA,cAAc,EAAE,0CAA0C;AAC1D,oBAAA,SAAS,EAAE,gCAAgC;AAC3C,oBAAA,iBAAiB,EAAE,yBAAyB;AAC5C,oBAAA,aAAa,EAAE,wFAAwF;AACxG,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,KAAK,EAAE,yFAAyF;AAChG,gBAAA,MAAM,EAAE,sGAAsG;AAC9G,gBAAA,QAAQ,EACN,2IAA2I;AAC7I,gBAAA,OAAO,EAAE,0DAA0D;AACnE,gBAAA,OAAO,EACL,4HAA4H;AAC9H,gBAAA,gBAAgB,EACd,gTAAgT;AAClT,gBAAA,cAAc,EACZ,2PAA2P;AAC9P,aAAA;AACF,SAAA;AACF,KAAA;CACF;;ACrEM,MAAM,cAAc,GAAG;AAC5B,IAAA,MAAM,EAAE;AACN,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,KAAK,EAAE,+BAA+B;AACtC,YAAA,MAAM,EAAE,YAAY;AACpB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,cAAc,EAAE,wBAAwB;AACxC,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,YAAY,EAAE,qBAAqB;AACnC,YAAA,OAAO,EAAE;AACP,gBAAA,KAAK,EAAE,UAAU;AACjB,gBAAA,QAAQ,EAAE,eAAe;AACzB,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,KAAK,EAAE,WAAW;AAClB,gBAAA,MAAM,EAAE,YAAY;AACpB,gBAAA,eAAe,EAAE,OAAO;AACzB,aAAA;AACD,YAAA,YAAY,EAAE;AACZ,gBAAA,MAAM,EAAE,WAAW;AACnB,gBAAA,QAAQ,EAAE,SAAS;AACnB,gBAAA,KAAK,EAAE,mBAAmB;AAC1B,gBAAA,OAAO,EAAE,oBAAoB;AAC7B,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,QAAQ,EAAE,EAAE;AACb,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,UAAU,EAAE;AACV,oBAAA,KAAK,EAAE,mBAAmB;AAC1B,oBAAA,OAAO,EAAE,oBAAoB;AAC9B,iBAAA;AACD,gBAAA,KAAK,EAAE;AACL,oBAAA,KAAK,EAAE,QAAQ;AACf,oBAAA,OAAO,EAAE,SAAS;AACnB,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,YAAY,EAAE,+BAA+B;AAC7C,oBAAA,MAAM,EAAE,sCAAsC;AAC9C,oBAAA,cAAc,EAAE,gDAAgD;AAChE,oBAAA,SAAS,EAAE,0CAA0C;AACrD,oBAAA,iBAAiB,EAAE,8CAA8C;AACjE,oBAAA,aAAa,EAAE,+FAA+F;AAC/G,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,KAAK,EACH,mHAAmH;AACrH,gBAAA,MAAM,EACJ,yGAAyG;AAC3G,gBAAA,QAAQ,EACN,wJAAwJ;AAC1J,gBAAA,OAAO,EAAE,0DAA0D;AACnE,gBAAA,OAAO,EACL,wIAAwI;AAC1I,gBAAA,gBAAgB,EACd,8UAA8U;AAChV,gBAAA,cAAc,EACZ,sSAAsS;AACzS,aAAA;AACF,SAAA;AACF,KAAA;CACF;;MCrCY,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CAAoB,mBAAmC,EAAA;QAAnC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAgB;QACrD,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QACxE,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;KACzE;8GAJU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,CAdZ,mBAAmB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAE5G,YAAY;YACZ,aAAa;YACb,aAAa;YACb,gBAAgB;YAChB,aAAa;YACb,WAAW;YACX,kBAAkB;YAClB,kBAAkB;AAClB,YAAA,oBAAoB,aAEZ,mBAAmB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,yBAAyB,CAAA,EAAA,CAAA,CAAA,EAAA;AAE9F,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAZzB,YAAY;YACZ,aAAa;YACb,aAAa;YACb,gBAAgB;YAChB,aAAa;YACb,WAAW;YACX,kBAAkB;YAClB,kBAAkB;YAClB,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAIX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAhB5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE,EAAE;oBACb,YAAY,EAAE,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,yBAAyB,CAAC;AAC/G,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb,WAAW;wBACX,kBAAkB;wBAClB,kBAAkB;wBAClB,oBAAoB;AACrB,qBAAA;oBACD,OAAO,EAAE,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,yBAAyB,CAAC;AAC3G,iBAAA,CAAA;;;ACnCD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"provoly-dashboard-dataset.mjs","sources":["../../../../projects/provoly/dashboard/dataset/style/css.component.ts","../../../../projects/provoly/dashboard/dataset/components/dataset-card/dataset-card.component.ts","../../../../projects/provoly/dashboard/dataset/components/dataset-card/dataset-card.component.html","../../../../projects/provoly/dashboard/dataset/components/dataset-detail/dataset-detail.component.ts","../../../../projects/provoly/dashboard/dataset/components/dataset-detail/dataset-detail.component.html","../../../../projects/provoly/dashboard/dataset/components/dataset.component.ts","../../../../projects/provoly/dashboard/dataset/components/dataset.component.html","../../../../projects/provoly/dashboard/dataset/i18n/en.translations.ts","../../../../projects/provoly/dashboard/dataset/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/dataset/dataset.module.ts","../../../../projects/provoly/dashboard/dataset/provoly-dashboard-dataset.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-dataset-css',\n template: '',\n styleUrls: ['./_o-pry-dataset.scss', './_o-pry-dataset-card.scss', './_o-pry-dataset-detail.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryDatasetCssComponent {}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Dataset } from '@provoly/dashboard';\n\n@Component({\n selector: 'pry-dataset-card',\n templateUrl: './dataset-card.component.html'\n})\nexport class PryDatasetCardComponent {\n @Input() dataset!: Dataset;\n @Output() consult = new EventEmitter<Dataset>();\n\n goToDetailView() {\n this.consult.emit(this.dataset);\n }\n}\n","<pry-dataset-css></pry-dataset-css>\n<div class=\"o-pry-dataset-card\">\n <div class=\"o-pry-dataset-card__header\">\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"dataset.id | translateId: { type: 'datasource', output: 'icon' } | async\"\n />\n <div class=\"a-h4 dataset-name\">{{ dataset.name }}</div>\n </div>\n <div class=\"o-pry-dataset-card__content\"></div>\n <div class=\"o-pry-dataset-card__footer\">\n <button class=\"a-btn\" (click)=\"goToDetailView()\">\n <pry-icon iconSvg=\"table\"></pry-icon>\n {{ '@pry.dataset.table' | i18n }}\n </button>\n <button class=\"a-btn\" disabled>\n <pry-icon iconSvg=\"download\"></pry-icon>\n {{ '@pry.dataset.export' | i18n }}\n </button>\n <button class=\"a-btn\" disabled>\n {{ '@pry.dataset.api' | i18n }}\n </button>\n </div>\n <div class=\"o-pry-dataset-card__button\">\n <button class=\"a-btn\" (click)=\"goToDetailView()\">{{ '@pry.dataset.consult' | i18n }}</button>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n DashboardActions,\n DashboardSelectors,\n Dataset,\n DatasetVersion,\n DataSourceActions,\n DataSourceSelectors,\n ResultSets,\n SearchActions,\n ViewMode,\n WidgetManifest\n} from '@provoly/dashboard';\nimport { map, Observable } from 'rxjs';\n\nlet nextCompId = 0;\n\n@Component({\n selector: 'pry-dataset-detail',\n templateUrl: './dataset-detail.component.html'\n})\nexport class PryDatasetDetailComponent implements OnInit {\n @Input() dataset!: Dataset;\n @Output() goToCatalog = new EventEmitter();\n widgetManifest = {\n table: {\n header: true,\n locked: true,\n type: 'table',\n layout: { x: 1, y: 1, height: 12, width: 12 },\n options: {},\n datasource: ['']\n },\n map: {\n header: false,\n type: 'map',\n layout: { x: 1, y: 1, height: 12, width: 12 },\n options: {\n layers: [],\n fit: true,\n automaticLayers: true\n },\n datasource: ['']\n }\n } as { [key: string]: WidgetManifest };\n protected readonly ViewMode = ViewMode;\n compId: number = 0;\n tab: number = 0;\n datasetItems$: Observable<ResultSets | null> | undefined;\n public datasetVersions$!: Observable<DatasetVersion[]>;\n showModalStatus: boolean = false;\n selectedDatasetVersion?: DatasetVersion;\n selectedMode: ViewMode = ViewMode.CONSULT;\n activeVersion$!: Observable<string | undefined>;\n\n constructor(private store: Store) {\n this.compId = nextCompId++;\n }\n\n ngOnInit() {\n this.store.dispatch(DataSourceActions.dataset.listVersionsByDatasetId({ id: this.dataset.id }));\n this.store.dispatch(DashboardActions.removeFilters());\n this.store.dispatch(SearchActions.getDatasourceItems({ id: this.dataset.id }));\n this.datasetItems$ = this.store.select(DashboardSelectors.resultSets);\n this.datasetVersions$ = this.store\n .select(DataSourceSelectors.matchingDatasetVersions(this.dataset.id))\n .pipe(map((res) => [...res].sort((a, b) => b.version - a.version)));\n this.widgetManifest['table'].datasource = [this.dataset.id];\n this.widgetManifest['map'].datasource = [this.dataset.id];\n this.activeVersion$ = this.datasetVersions$.pipe(\n map(\n (versions) =>\n versions.sort((v1, v2) => v2.version - v1.version).find((version) => version.state === 'ACTIVE')?.id\n )\n );\n }\n\n goBack() {\n this.goToCatalog.emit();\n }\n\n goToConsult(version: DatasetVersion | undefined): void {\n this.selectedDatasetVersion = version;\n this.showModalStatus = false;\n this.selectedMode = ViewMode.CONSULT;\n }\n\n switch(number: number) {\n this.tab = number;\n }\n\n handleButtonAction(version: DatasetVersion) {\n this.selectedDatasetVersion = version;\n switch (version.state) {\n case 'ERROR':\n this.consultErrors(version);\n break;\n case 'ACTIVE':\n this.deactivateVersion(version);\n break;\n case 'INACTIVE':\n this.activateVersion(version);\n break;\n default:\n break;\n }\n }\n\n consultErrors(version: DatasetVersion) {\n this.selectedDatasetVersion = version;\n this.showModalStatus = true;\n }\n\n private deactivateVersion(version: DatasetVersion) {\n this.store.dispatch(\n DataSourceActions.dataset.deactivateDatasetVersion({\n datasetId: this.dataset.id,\n versionId: version.id\n })\n );\n }\n\n private activateVersion(version: DatasetVersion) {\n this.store.dispatch(\n DataSourceActions.dataset.activateDatasetVersion({\n datasetId: this.dataset.id,\n versionId: version.id\n })\n );\n }\n\n modify(type: string, { manifest }: { manifest: WidgetManifest }) {\n this.widgetManifest[type] = manifest;\n }\n}\n","<div class=\"o-manifest-layout__toolbox\">\n <button class=\"a-btn a-btn--primary\" (click)=\"goBack()\">{{ '@pry.dataset.returnToList' | i18n }}</button>\n</div>\n\n<div class=\"dataset-layout__content\">\n <h1 class=\"a-h1\">{{ dataset.name }}</h1>\n <div class=\"dataset-detail\">\n <pry-tab-group translationStringBase=\"@pry.dataset.\">\n <pry-tab [templateRef]=\"table\" name=\"data\"></pry-tab>\n <pry-tab [templateRef]=\"map\" name=\"map\"></pry-tab>\n <pry-tab [templateRef]=\"datasetVersions\" name=\"versionHistory\"></pry-tab>\n </pry-tab-group>\n </div>\n</div>\n\n<ng-template #table>\n <div class=\"dashboard-container\">\n <pry-dashboard [staticDashboard]=\"{ widgets: [widgetManifest['table']] }\"></pry-dashboard>\n </div>\n</ng-template>\n<ng-template #map>\n <div class=\"dashboard-container\">\n <pry-dashboard [staticDashboard]=\"{ widgets: [widgetManifest['map']] }\"></pry-dashboard>\n </div>\n</ng-template>\n<ng-template #datasetVersions>\n <div class=\"table-container\">\n <table class=\"a-table\">\n <caption>\n {{\n '@pry.admin.dataset.title' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th>{{ '@pry.dataset.version.title' | i18n }}</th>\n <th>{{ '@pry.dataset.date' | i18n }}</th>\n <th>{{ '@pry.dataset.status' | i18n }}</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let version of datasetVersions$ | async\">\n <td>\n {{ version.version }}\n <pry-icon *ngIf=\"(activeVersion$ | async) === version.id\" iconSvg=\"check\" class=\"check\"></pry-icon>\n </td>\n <td [pryTooltip]=\"dateTooltip\">\n {{ version.lastModified | sinceDate }}\n <ng-template #dateTooltip>\n <div class=\"m-tooltip\" aria-hidden=\"true\" role=\"tooltip\" id=\"dateTooltip\">\n <span class=\"m-tooltip__text\"> {{ version.lastModified | sinceDate : { onlyLocale: true } }}</span>\n </div>\n </ng-template>\n </td>\n <td>\n {{\n ((activeVersion$ | async) === version.id\n ? '@pry.dataset.version.currentlyActive'\n : '@pry.dataset.version.' + version.state\n ) | i18n\n }}\n <ng-container>\n <div class=\"info-icon description-container description\">\n <span class=\"info-text\">i</span>\n </div>\n <div class=\"description-tooltip\">\n <p class=\"a-p\">\n <ng-container [ngSwitch]=\"version.state\">\n <ng-container *ngSwitchCase=\"'ERROR'\">\n {{ '@pry.dataset.tooltip.error' | i18n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'ACTIVE'\">\n {{\n ((activeVersion$ | async) === version.id\n ? '@pry.dataset.tooltip.active'\n : '@pry.dataset.tooltip.inactive'\n ) | i18n\n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'LOADING'\">\n {{ '@pry.dataset.tooltip.loading' | i18n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'INDEXING'\">\n {{ '@pry.dataset.tooltip.loading' | i18n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'INACTIVE'\">\n {{ '@pry.dataset.tooltip.invalid' | i18n }}\n </ng-container>\n </ng-container>\n </p>\n </div>\n </ng-container>\n </td>\n <td>\n <ng-container *ngIf=\"version.state !== 'LOADING' && version.state !== 'INDEXING'\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary a-btn--icon-text ng-star-inserted\"\n (click)=\"handleButtonAction(version)\"\n >\n {{ '@pry.dataset.buttonAction.' + version.state | i18n }}\n </button>\n <ng-container *ngIf=\"version.state === 'ACTIVE' || version.state === 'INACTIVE'\">\n <div class=\"info-icon description-container description\">\n <span class=\"info-text\">i</span>\n </div>\n <div class=\"description-tooltip validate-tooltip\">\n <p class=\"a-p\">\n {{\n (version.state === 'ACTIVE'\n ? '@pry.dataset.tooltip.inValidateButton'\n : '@pry.dataset.tooltip.validateButton'\n ) | i18n\n }}\n </p>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"version.hasWarnings && version.state !== 'ERROR'\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary a-btn--icon-text ng-star-inserted\"\n (click)=\"consultErrors(version)\"\n >\n {{ '@pry.dataset.buttonAction.WARNING' | i18n }}\n </button>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"showModalStatus\">\n <pry-modal-status [version]=\"selectedDatasetVersion\" (gotoConsult)=\"goToConsult($event)\"></pry-modal-status>\n</ng-container>\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n ClassActions,\n DashboardActions,\n Dataset,\n DataSourceActions,\n DataSourceSelectors,\n FieldActions,\n SubscriptionnerDirective,\n ViewMode\n} from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs';\n\n@Component({\n selector: 'pry-dataset',\n templateUrl: './dataset.component.html'\n})\nexport class PryDatasetComponent extends SubscriptionnerDirective {\n datasets$: Observable<Dataset[]>;\n selectedDataset: Dataset | null = null;\n selectedMode: ViewMode = ViewMode.CATALOG;\n ViewMode = ViewMode;\n search$ = new BehaviorSubject('');\n filteredDatasets$: Observable<Dataset[]>;\n\n constructor(protected store: Store<any>) {\n super();\n this.store.dispatch(DataSourceActions.load());\n this.store.dispatch(ClassActions.load());\n this.store.dispatch(FieldActions.load());\n this.datasets$ = this.store.select(DataSourceSelectors.datasets);\n this.store.dispatch(DashboardActions.fetchManifestsList());\n this.filteredDatasets$ = combineLatest([this.datasets$, this.search$]).pipe(\n map(([datasets, search]) =>\n datasets\n .filter((dataset) => search.length === 0 || dataset.name.toLowerCase().includes(search.toLowerCase()))\n .sort((a, b) => a.name.localeCompare(b.name))\n )\n );\n this.store.dispatch(DataSourceActions.dataset.listVersions());\n }\n\n consult(dataset: Dataset) {\n this.selectedDataset = dataset;\n this.selectedMode = ViewMode.CONSULT;\n }\n}\n","<pry-dataset-css></pry-dataset-css>\n<div class=\"o-dataset-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchCase=\"ViewMode.CATALOG\">\n <div class=\"o-manifest-layout__toolbox\">\n <div class=\"o-pry-dataset__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.dataset.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.dataset.title' | i18n }}</h1>\n <div class=\"o-pry-dataset\">\n <pry-dataset-card\n *ngFor=\"let dataset of filteredDatasets$ | async\"\n [dataset]=\"dataset\"\n (consult)=\"consult($event)\"\n ></pry-dataset-card>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CONSULT\">\n <ng-template [ngIf]=\"selectedDataset\">\n <pry-dataset-detail\n [dataset]=\"selectedDataset\"\n (goToCatalog)=\"selectedMode = ViewMode.CATALOG\"\n ></pry-dataset-detail>\n </ng-template>\n </ng-container>\n</div>\n","export const enTranslations = {\n '@pry': {\n dataset: {\n consult: 'View',\n title: 'Dataset catalog',\n search: 'Search',\n date: 'Date',\n status: 'Status',\n versionHistory: 'Version history',\n data: 'Data',\n table: 'Table',\n map: 'Map',\n export: 'Export',\n api: 'API',\n returnToList: 'Back to catalog',\n version: {\n title: 'Title',\n INDEXING: 'Loading',\n LOADING: 'Loading',\n INACTIVE: 'Invalid',\n ERROR: 'Error',\n ACTIVE: 'Available',\n currentlyActive: 'Active'\n },\n buttonAction: {\n ACTIVE: 'Invalidate',\n INACTIVE: 'Validate',\n ERROR: 'Consult errors',\n WARNING: 'Consult warnings',\n LOADING: '',\n INDEXING: ''\n },\n error: {\n type: 'Type',\n elements: 'Elements',\n message: 'Message',\n close: 'Fermer',\n modalTitle: {\n ERROR: 'List of errors',\n WARNING: 'List of warnings'\n },\n level: {\n ERROR: 'Error',\n WARNING: 'Warning'\n },\n code: {\n UNRECOGNIZED: 'Unrecognized attribute {{name}}',\n FORMAT: 'Wrong format for attribute {{name}}',\n ELASTIC_SEARCH: 'Insertion error for element {{recordId}}',\n NO_VALUES: 'No value for {{recordId}} line',\n FORMAT_FILE_ERROR: 'Unsupported file format',\n NO_ATTRIBUTES: 'The imported data does not correspond to the data model indicated in the import target'\n }\n },\n tooltip: {\n error: 'Errors occurred when integrating the data into the solution. The data is not accessible',\n active: 'The data retrieved by default in the application corresponds to the data integrated in this version.',\n inactive:\n 'The data for this version is available but not uploaded by default. It is possible to display them by explicitly requesting this version.',\n loading: 'The data is currently being integrated into the solution',\n invalid:\n 'The data in this version is present in the solution but is not relevant. It is not available are not available for display',\n inValidateButton:\n 'Allows you to make the version\\'s data unavailable if it is considered irrelevant from a business point of view. If the invalidated version is the active version, then the data retrieved by default will be that of the most recent previous \"Available\" version, which will thus change to \"Active\" status.',\n validateButton:\n \"Allows the version's data to be made available if it is considered relevant from a business point of view after having been invalidated. If the validated version is the most recent, it will become the active version and its data will be the default.\"\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n dataset: {\n consult: 'Consulter',\n title: 'Catalogue des jeux de données',\n search: 'Rechercher',\n date: 'Date',\n status: 'Statut',\n versionHistory: 'Historique de versions',\n data: 'Données',\n table: 'Tableau',\n map: 'Carte',\n export: 'Export',\n api: 'API',\n returnToList: 'Retour au catalogue',\n version: {\n title: 'Intitulé',\n INDEXING: 'En chargement',\n LOADING: 'En chargement',\n INACTIVE: 'Invalide',\n ERROR: 'En erreur',\n ACTIVE: 'Disponible',\n currentlyActive: 'Actif'\n },\n buttonAction: {\n ACTIVE: 'Invalider',\n INACTIVE: 'Valider',\n ERROR: 'Consulter erreurs',\n WARNING: 'Consulter warnings',\n LOADING: '',\n INDEXING: ''\n },\n error: {\n ERROR: 'Erreur',\n WARNING: 'Warning',\n type: 'Type',\n elements: 'Elements',\n message: 'Message',\n close: 'Fermer',\n modalTitle: {\n ERROR: 'Liste des erreurs',\n WARNING: 'Liste des warnings'\n },\n level: {\n ERROR: 'Erreur',\n WARNING: 'Warning'\n },\n code: {\n UNRECOGNIZED: 'Attribut {{name}} non reconnu',\n FORMAT: \"Format d'attribut {{name}} incorrect\",\n ELASTIC_SEARCH: \"Erreur d'insertion pour l'élément {{recordId}}\",\n NO_VALUES: 'Pas de valeur pour la ligne {{recordId}}',\n FORMAT_FILE_ERROR: \"Le format du fichier transmis n'est pas géré\",\n NO_ATTRIBUTES: \"Les données importées ne correspondent pas au modèle de données indiquer en cible de l'import\"\n }\n },\n tooltip: {\n error:\n \"Des erreurs sont apparues lors de l'intégration des données dans la solution. Les données ne sont pas accessibles\",\n active:\n \"Les données remontées par défaut dans l'application correspondent à celles intégrées dans cette version\",\n inactive:\n 'Les données de cette version sont disponibles mais non remontées par défaut. Il est possible de les afficher en demandant explicitement cette version.',\n loading: \"Les données sont en cours d'intégration dans la solution\",\n invalid:\n \"Les données de cette version sont présentes dans la solution mais sont non pertinentes. Elles ne sont pas disponibles pour l'affichage\",\n inValidateButton:\n 'Permet de rendre indisponible les données de la version dans le cas où elles sont considérées comme non pertinente d\\'un point de vue métier. Si la version invalidée est la version active, alors les données récupérées par défaut seront celle de la version \"Disponible\" précédente la plus récente qui passera ainsi au statut \"Active\"',\n validateButton:\n \"Permet de rendre disponible les données de la version dans le cas où elles sont considérées comme pertinente d'un point de vue métier après avoir été invalider. Si la version validée est la plus récente, elle deviendra ainsi la version active et ses données seront celles remontées par défaut\"\n }\n }\n }\n};\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n PryCoreModule,\n PryDashboardModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PryModalStatusModule,\n PryOverlayModule\n} from '@provoly/dashboard';\nimport { PrySinceDateModule } from '@provoly/dashboard/components/sinceDate';\nimport { PryDatasetCardComponent } from './components/dataset-card/dataset-card.component';\nimport { PryDatasetDetailComponent } from './components/dataset-detail/dataset-detail.component';\nimport { PryDatasetComponent } from './components/dataset.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PryDatasetCssComponent } from './style/css.component';\n\n@NgModule({\n providers: [],\n declarations: [PryDatasetComponent, PryDatasetCssComponent, PryDatasetCardComponent, PryDatasetDetailComponent],\n imports: [\n CommonModule,\n PryIconModule,\n PryCoreModule,\n PryOverlayModule,\n PryI18nModule,\n FormsModule,\n PryDashboardModule,\n PrySinceDateModule,\n PryModalStatusModule\n ],\n exports: [PryDatasetComponent, PryDatasetCssComponent, PryDatasetCardComponent, PryDatasetDetailComponent]\n})\nexport class PryDatasetModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'dataset', frTranslations);\n this.pryTranslateService.addLangObject('en', 'dataset', enTranslations);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.PryDatasetCssComponent","i3","i4","i5.PryDatasetCssComponent","i6.PryDatasetCardComponent","i7.PryDatasetDetailComponent"],"mappings":"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"}
|