@provoly/dashboard 1.4.18 → 1.4.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.d.ts +2 -3
- package/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.d.ts +2 -3
- package/admin/components/admin-classes/store/admin-class.effects.d.ts +22 -8
- package/admin/components/admin-dataset/store/admin-dataset.effects.d.ts +13 -5
- package/admin/components/admin-fields/store/fields.effects.d.ts +7 -5
- package/admin/store/admin.effects.d.ts +3 -1
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +3 -3
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +3 -3
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +2 -2
- package/esm2022/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.mjs +2 -2
- package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +2 -2
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +5 -6
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.mjs +5 -6
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/store/admin-class.effects.mjs +14 -13
- package/esm2022/admin/components/admin-dataset/admin-dataset.component.mjs +3 -3
- package/esm2022/admin/components/admin-dataset/admin-form-dataset/admin-form-dataset.component.mjs +3 -3
- package/esm2022/admin/components/admin-dataset/store/admin-dataset.effects.mjs +7 -8
- package/esm2022/admin/components/admin-environment/store/environment.effects.mjs +2 -2
- package/esm2022/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.mjs +2 -2
- package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +2 -2
- package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +4 -4
- package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +7 -10
- package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +3 -3
- package/esm2022/admin/components/admin-links/admin-links.component.mjs +3 -3
- package/esm2022/admin/components/admin-links/store/links.effects.mjs +2 -2
- package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +2 -2
- package/esm2022/admin/components/admin-metadata/admin-metadata.component.mjs +2 -2
- package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.effects.mjs +2 -2
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +2 -2
- package/esm2022/admin/components/admin-predicates/store/predicates.effects.mjs +2 -2
- package/esm2022/admin/components/admin-relation-types/admin-relation-types.component.mjs +2 -2
- package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +2 -2
- package/esm2022/admin/components/shared/add-category-modal/add-category-modal.component.mjs +2 -2
- package/esm2022/admin/store/admin.effects.mjs +2 -2
- package/esm2022/components/metadata-editor/store/metadata.effects.mjs +2 -2
- package/esm2022/components/text-editor/component/text-editor.component.mjs +2 -2
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -4
- package/esm2022/dataset/components/dataset.component.mjs +4 -4
- package/esm2022/filters/autocomplete/autocomplete.component.mjs +4 -4
- package/esm2022/filters/number/number-filter.component.mjs +2 -2
- package/esm2022/filters/text/text-filter.component.mjs +2 -2
- package/esm2022/import/components/form/import-form.component.mjs +2 -2
- package/esm2022/import/components/list/import-list.component.mjs +2 -2
- package/esm2022/import/store/import.effects.mjs +2 -2
- package/esm2022/lib/core/components/select/select.component.mjs +2 -2
- package/esm2022/lib/core/components/share/access-rights-share-modal/access-rights-share-modal.component.mjs +3 -3
- package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +2 -2
- package/esm2022/lib/core/components/upload/upload.component.mjs +2 -2
- package/esm2022/lib/core/errors/http-error-interceptor.service.mjs +2 -2
- package/esm2022/lib/core/model/filter.interface.mjs +1 -1
- package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +3 -4
- package/esm2022/lib/core/store/category/category.actions.mjs +3 -3
- package/esm2022/lib/core/store/category/category.effects.mjs +10 -6
- package/esm2022/lib/core/store/class/class.actions.mjs +3 -3
- package/esm2022/lib/core/store/class/class.effects.mjs +10 -6
- package/esm2022/lib/core/store/config/config.actions.mjs +2 -2
- package/esm2022/lib/core/store/config/config.effects.mjs +13 -8
- package/esm2022/lib/core/store/config/open-map-tiles.service.mjs +2 -2
- package/esm2022/lib/core/store/data-source/data-source.actions.mjs +8 -8
- package/esm2022/lib/core/store/data-source/data-source.effects.mjs +21 -21
- package/esm2022/lib/core/store/field/field.actions.mjs +3 -3
- package/esm2022/lib/core/store/field/field.effects.mjs +10 -6
- package/esm2022/lib/core/store/image/image.effects.mjs +2 -2
- package/esm2022/lib/core/store/item/item.effects.mjs +2 -2
- package/esm2022/lib/core/store/relation-types/relation-types.actions.mjs +4 -4
- package/esm2022/lib/core/store/relation-types/relation-types.effects.mjs +11 -10
- package/esm2022/lib/core/store/search/search.actions.mjs +1 -1
- package/esm2022/lib/core/store/search/search.effects.mjs +3 -2
- package/esm2022/lib/core/store/search/search.selectors.mjs +3 -1
- package/esm2022/lib/core/store/search/search.service.mjs +4 -9
- package/esm2022/lib/dashboard/action-bus/effect/action-bus.effects.mjs +2 -2
- package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +2 -2
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +29 -23
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-list/datasource-list.component.mjs +3 -4
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +2 -2
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +2 -2
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +2 -2
- package/esm2022/lib/dashboard/store/manifest.service.mjs +2 -2
- package/esm2022/lib/dashboard/store/refresh.service.mjs +2 -2
- package/esm2022/lib/dashboard/store/wms.service.mjs +2 -2
- package/esm2022/notification/components/notification/content/notification-content.component.mjs +2 -2
- package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +3 -5
- package/esm2022/pipeline/factory/pipeline-component-factory.service.mjs +2 -2
- package/esm2022/pipeline/store/pipeline.effects.mjs +2 -2
- package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +2 -3
- package/esm2022/pipeline-components/input-datasource/input-datasource.module.mjs +2 -2
- package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +2 -2
- package/esm2022/pipeline-components/output-dataset/output-dataset.module.mjs +2 -2
- package/esm2022/restitution/components/restitution/restitution.component.mjs +5 -5
- package/esm2022/search/search-fulltext/store/search-fulltext.effects.mjs +2 -2
- package/esm2022/search/search-home/search-home.component.mjs +3 -4
- package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +2 -2
- package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +2 -2
- package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +1 -1
- package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +2 -2
- package/esm2022/search/search-multi-class/store/search-multi-class.effects.mjs +2 -2
- package/esm2022/search/search-tools/search-tools.component.mjs +5 -6
- package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +2 -2
- package/esm2022/toolbox/components/named-query/named-query.component.mjs +2 -2
- package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +2 -2
- package/esm2022/toolbox/components/toolbox.component.mjs +2 -2
- package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +2 -2
- package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +2 -2
- package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +2 -2
- package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +2 -2
- package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +10 -13
- package/esm2022/widgets/widget-image/component/widget-image.component.mjs +2 -2
- package/esm2022/widgets/widget-table/component/widget-table.component.mjs +3 -3
- package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +2 -2
- package/esm2022/widgets/widget-table/resizable/resizable.directive.mjs +2 -2
- package/esm2022/widgets/widget-template/component/widget-template.component.mjs +2 -2
- package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +2 -2
- package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +2 -2
- package/fesm2022/provoly-dashboard-admin.mjs +121 -123
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +12 -13
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-text-editor.mjs +1 -2
- package/fesm2022/provoly-dashboard-components-text-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +5 -6
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +3 -3
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-number.mjs +1 -2
- package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-text.mjs +1 -2
- package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-import.mjs +5 -6
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-notification.mjs +3 -4
- package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +2 -3
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +2 -2
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline.mjs +16 -18
- package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +4 -4
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-search.mjs +19 -20
- package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +3 -4
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +1 -2
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +1 -2
- package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +1 -2
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +1 -2
- package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +8 -12
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-image.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-image.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +2 -3
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-template.mjs +1 -2
- package/fesm2022/provoly-dashboard-widgets-widget-template.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +1 -2
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +1 -2
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +989 -975
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/model/filter.interface.d.ts +1 -0
- package/lib/core/store/category/category.actions.d.ts +7 -3
- package/lib/core/store/category/category.effects.d.ts +4 -2
- package/lib/core/store/class/class.actions.d.ts +7 -3
- package/lib/core/store/class/class.effects.d.ts +4 -2
- package/lib/core/store/config/config.actions.d.ts +5 -1
- package/lib/core/store/config/config.effects.d.ts +12 -4
- package/lib/core/store/data-source/data-source.actions.d.ts +23 -11
- package/lib/core/store/data-source/data-source.effects.d.ts +23 -15
- package/lib/core/store/field/field.actions.d.ts +7 -3
- package/lib/core/store/field/field.effects.d.ts +4 -2
- package/lib/core/store/relation-types/relation-types.actions.d.ts +9 -5
- package/lib/core/store/relation-types/relation-types.effects.d.ts +8 -6
- package/lib/core/store/search/search.actions.d.ts +2 -0
- package/lib/core/store/search/search.selectors.d.ts +5 -0
- package/lib/core/store/search/search.service.d.ts +1 -1
- package/lib/dashboard/components/dashboard.component.d.ts +5 -3
- package/package.json +11 -11
- package/search/search-mono-class/store/search-mono-class.effects.d.ts +1 -1
- package/widgets/widget-graph/component/widget-graph.component.d.ts +2 -5
|
@@ -10,8 +10,7 @@ import * as i1 from '@ngrx/store';
|
|
|
10
10
|
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, StoreModule } from '@ngrx/store';
|
|
11
11
|
import * as i3 from '@provoly/dashboard';
|
|
12
12
|
import { SubscriptionnerDirective, ConfigSelectors, PryCoreModule, PryI18nModule, PrySelectModule, PryIconModule } from '@provoly/dashboard';
|
|
13
|
-
import { BehaviorSubject, map, combineLatest, mergeMap } from 'rxjs';
|
|
14
|
-
import { mergeMap as mergeMap$1, map as map$1, catchError } from 'rxjs/operators';
|
|
13
|
+
import { BehaviorSubject, map, combineLatest, mergeMap, catchError } from 'rxjs';
|
|
15
14
|
import * as i1$1 from '@angular/common/http';
|
|
16
15
|
|
|
17
16
|
const MetadataActions = {
|
|
@@ -330,32 +329,32 @@ class MetadataEffects {
|
|
|
330
329
|
constructor(actions$, service) {
|
|
331
330
|
this.actions$ = actions$;
|
|
332
331
|
this.service = service;
|
|
333
|
-
this.loadMetadata$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.loadMetadata), mergeMap
|
|
334
|
-
this.goToDetailsView$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.goToDetailsView), mergeMap
|
|
335
|
-
this.createMetadata$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.createMetadata), mergeMap
|
|
336
|
-
this.createMetadataSuccess$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.createMetadataSuccess), map
|
|
332
|
+
this.loadMetadata$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.loadMetadata), mergeMap((_) => this.service.getMetadataList().pipe(map((metadata) => MetadataActions.loadMetadataSuccess({ metadata: metadata })), catchError((error) => [MetadataActions.loadMetadataFailure({ error: error })])))));
|
|
333
|
+
this.goToDetailsView$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.goToDetailsView), mergeMap((action) => this.service.getMetadata(action.id).pipe(map((metadata) => MetadataActions.goToDetailsViewSuccess({ metadata })), catchError((error) => [MetadataActions.goToDetailsViewFailure({ error: error })])))));
|
|
334
|
+
this.createMetadata$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.createMetadata), mergeMap((action) => this.service.postMetadata(action.metadata).pipe(map(() => MetadataActions.createMetadataSuccess({ metadata: action.metadata })), catchError((error) => [MetadataActions.createMetadataFailure({ error: error })])))));
|
|
335
|
+
this.createMetadataSuccess$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.createMetadataSuccess), map((action) => {
|
|
337
336
|
return MetadataActions.loadMetadata();
|
|
338
337
|
})));
|
|
339
|
-
this.loadMetadataUser$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.loadMetadataUser), mergeMap
|
|
340
|
-
this.selectUser$ = createEffect(() => this.actions$.pipe(ofType('[Admin/User] Select User'), map
|
|
338
|
+
this.loadMetadataUser$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.loadMetadataUser), mergeMap((action) => this.service.getMetadataUser(action.userId).pipe(map((metadata) => MetadataActions.loadMetadataUserSuccess({ metadata })), catchError((error) => [MetadataActions.loadMetadataUserFailure({ error })])))));
|
|
339
|
+
this.selectUser$ = createEffect(() => this.actions$.pipe(ofType('[Admin/User] Select User'), map((action) => {
|
|
341
340
|
// @ts-ignore
|
|
342
341
|
return MetadataActions.loadMetadataUser({ userId: action.userId });
|
|
343
342
|
})));
|
|
344
|
-
this.addMetadataUser$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.addMetadataUser), mergeMap
|
|
345
|
-
this.addMetadataUserSuccess$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.addMetadataUserSuccess), mergeMap
|
|
343
|
+
this.addMetadataUser$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.addMetadataUser), mergeMap((action) => this.service.addMetadataUser(action.userId, action.metaId, action.value).pipe(map(() => MetadataActions.addMetadataUserSuccess({ userId: action.userId })), catchError((error) => [MetadataActions.addMetadataUserFailure({ error })])))));
|
|
344
|
+
this.addMetadataUserSuccess$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.addMetadataUserSuccess), mergeMap((action) => {
|
|
346
345
|
return [
|
|
347
346
|
MetadataActions.loadMetadataUser({ userId: action.userId }),
|
|
348
347
|
MetadataActions.isEditable({ editable: false })
|
|
349
348
|
];
|
|
350
349
|
})));
|
|
351
|
-
this.deleteMetadataUser$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.deleteMetadataUser), mergeMap
|
|
352
|
-
this.deleteMetadataUserSuccess$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.deleteMetadataUserSuccess), mergeMap
|
|
350
|
+
this.deleteMetadataUser$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.deleteMetadataUser), mergeMap((action) => this.service.deleteMetadataUser(action.userId, action.metadataId).pipe(map(() => MetadataActions.deleteMetadataUserSuccess({ userId: action.userId })), catchError((error) => [MetadataActions.deleteMetadataUserFailure({ error })])))));
|
|
351
|
+
this.deleteMetadataUserSuccess$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.deleteMetadataUserSuccess), mergeMap((action) => {
|
|
353
352
|
return [
|
|
354
353
|
MetadataActions.loadMetadataUser({ userId: action.userId }),
|
|
355
354
|
MetadataActions.isEditable({ editable: false })
|
|
356
355
|
];
|
|
357
356
|
})));
|
|
358
|
-
this.loadUserProfile$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.loadUserProfile), mergeMap
|
|
357
|
+
this.loadUserProfile$ = createEffect(() => this.actions$.pipe(ofType(MetadataActions.loadUserProfile), mergeMap((_) => this.service.getUserMetadata().pipe(map((metadata) => MetadataActions.loadUserProfileSuccess({ userProfile: metadata })), catchError((error) => [MetadataActions.loadUserProfileFailure({ error: error })])))));
|
|
359
358
|
}
|
|
360
359
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MetadataEffects, deps: [{ token: i1$2.Actions }, { token: MetadataService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
361
360
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MetadataEffects }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provoly-dashboard-components-metadata-editor.mjs","sources":["../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.action.ts","../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.reducer.ts","../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.selector.ts","../../../../projects/provoly/dashboard/components/metadata-editor/style/css.component.ts","../../../../projects/provoly/dashboard/components/metadata-editor/metadata-editor.component.ts","../../../../projects/provoly/dashboard/components/metadata-editor/metadata-editor.component.html","../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.service.ts","../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.effects.ts","../../../../projects/provoly/dashboard/components/metadata-editor/metadata-editor.module.ts","../../../../projects/provoly/dashboard/components/metadata-editor/provoly-dashboard-components-metadata-editor.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\nimport { IMetadata, MetadataUser, MetadataValue } from '@provoly/dashboard';\n\nexport const MetadataActions = {\n loadMetadata: createAction(`[Metadata] Load Metadata`),\n loadMetadataSuccess: createAction(`[Metadata] Load Metadata Success`, props<{ metadata: Array<IMetadata> }>()),\n loadMetadataFailure: createAction(`[Metadata] Load Metadata Failure`, props<{ error: any }>()),\n\n unselectMetadata: createAction(`[Metadata] unSelect Metadata`),\n\n goToNewMetadata: createAction(`[Metadata] go to new metadata`, props<{ route: string }>()),\n goToNewMetadataSuccess: createAction(`[Metadata] go to new metadata success`),\n goToNewMetadataFailure: createAction(`[Metadata] go to new metadata failure`, props<{ error: any }>()),\n\n createMetadata: createAction(`[Metadata] create metadata`, props<{ metadata: IMetadata }>()),\n createMetadataSuccess: createAction(`[Metadata] create metadata Success`, props<{ metadata: IMetadata }>()),\n createMetadataFailure: createAction(`[Metadata] create metadata Failure`, props<{ error: any }>()),\n\n goToDetailsView: createAction(`[Metadata] go to details view`, props<{ id: string }>()),\n goToDetailsViewSuccess: createAction(`[Metadata] go to details view success`, props<{ metadata: IMetadata }>()),\n goToDetailsViewFailure: createAction(`[Metadata] go to details view failure`, props<{ error: any }>()),\n\n addDatasetMetadata: createAction(\n `[Metadata] Add Metadata of selected Datasets`,\n props<{ datasetId: string; metadataId: string; value: any }>()\n ),\n addDatasetMetadataSuccess: createAction(\n `[Metadata] Add Metadata of selected Datasets Success`,\n props<{ datasetId: string }>()\n ),\n addDatasetMetadataFailure: createAction(\n `[Metadata] Add Metadata of selected Datasets Failure`,\n props<{ error: any }>()\n ),\n\n deleteDatasetMetadata: createAction(\n `[Metadata] Delete Metadata of selected Datasets`,\n props<{ datasetId: string; metadataId: string }>()\n ),\n deleteDatasetMetadataSuccess: createAction(\n `[Metadata] Delete Metadata of selected Datasets Success`,\n props<{ datasetId: string }>()\n ),\n deleteDatasetMetadataFailure: createAction(\n `[Metadata] Delete Metadata of selected Datasets Failure`,\n props<{ error: any }>()\n ),\n isEditable: createAction(`[Metadata] Is editable`, props<{ editable: boolean }>()),\n loadDatasetMetadata: createAction(`[Metadata] Load Metadata of selected Datasets`, props<{ datasetId: string }>()),\n loadDatasetMetadataSuccess: createAction(\n `[Metadata] Load Metadata of selected Datasets Success`,\n props<{ metadata: MetadataValue[] }>()\n ),\n loadDatasetMetadataFailure: createAction(\n `[Metadata] Load Metadata of selected Datasets Failure`,\n props<{ error: any }>()\n ),\n\n loadMetadataUser: createAction(`[Metadata/User] Load Metadata of selected Users`, props<{ userId: string }>()),\n loadMetadataUserSuccess: createAction(\n `[Metadata/User] Load Metadata of selected Users Success`,\n props<{ metadata: Array<MetadataUser> }>()\n ),\n loadMetadataUserFailure: createAction(\n `[Metadata/User] Load Metadata of selected Users Failure`,\n props<{ error: any }>()\n ),\n\n addMetadataUser: createAction(\n `[Metadata/User] Add Metadata of selected Users`,\n props<{ userId: string; metaId: string; value: any[] }>()\n ),\n addMetadataUserSuccess: createAction(\n `[Metadata/User] Add Metadata of selected Users Success`,\n props<{ userId: string }>()\n ),\n addMetadataUserFailure: createAction(\n `[Metadata/User] Add Metadata of selected Users Failure`,\n props<{ error: any }>()\n ),\n\n deleteMetadataUser: createAction(\n `[Metadata/User] Delete Metadata of selected Users`,\n props<{ userId: string; metadataId: string }>()\n ),\n deleteMetadataUserSuccess: createAction(\n `[Metadata/User] Delete Metadata of selected Users Success`,\n props<{ userId: string }>()\n ),\n deleteMetadataUserFailure: createAction(\n `[Metadata/User] Delete Metadata of selected Users Failure`,\n props<{ error: any }>()\n ),\n loadUserProfile: createAction(`[Metadata/User] Load Metadata`),\n loadUserProfileSuccess: createAction(`[Metadata/User] Load Success`, props<{ userProfile: Array<IMetadata> }>()),\n loadUserProfileFailure: createAction(`[Metadata/User] Load Failure`, props<{ error: any }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { IMetadata, MetadataUser } from '@provoly/dashboard';\nimport { MetadataActions } from './metadata.action';\n\nexport const metadataFeatureKey = '@pry/metadata';\n\nexport interface MetadataState {\n metadata: IMetadata[];\n selectedMetadata: string | null;\n loading: boolean;\n errors: any;\n editable: boolean;\n selectedUserProfile: Array<MetadataUser>;\n userProfile: Array<IMetadata>;\n}\n\nexport const initialMetadataState: MetadataState = {\n metadata: [],\n selectedMetadata: null,\n loading: false,\n errors: null,\n editable: false,\n selectedUserProfile: [],\n userProfile: []\n};\n\n/**\n * @TODO merge this store with admin user store ?\n */\nexport const metadataReducer = createReducer(\n initialMetadataState,\n on(MetadataActions.loadMetadataSuccess, (state, action) => ({\n ...state,\n metadata: [...action.metadata],\n loading: false\n })),\n on(\n MetadataActions.loadMetadataFailure,\n MetadataActions.goToNewMetadataFailure,\n MetadataActions.createMetadataFailure,\n MetadataActions.goToDetailsViewFailure,\n (state, action) => ({\n ...state,\n loading: false,\n errors: action.error\n })\n ),\n on(MetadataActions.unselectMetadata, (state) => ({\n ...state,\n selectedMetadata: null\n })),\n on(MetadataActions.loadMetadata, MetadataActions.goToNewMetadata, (state) => ({\n ...state,\n loading: true\n })),\n on(MetadataActions.createMetadataSuccess, (state, action) => ({\n ...state,\n metadata: [...state.metadata, action.metadata],\n loading: false\n })),\n on(MetadataActions.goToDetailsView, (state, action) => ({\n ...state,\n selectedMetadata: action.id\n })),\n on(MetadataActions.isEditable, (state, action) => ({\n ...state,\n editable: action.editable\n })),\n on(MetadataActions.loadMetadataUserSuccess, (state, action) => ({\n ...state,\n selectedUserProfile: action.metadata\n })),\n on(MetadataActions.loadUserProfile, (state) => ({\n ...state,\n loading: true\n })),\n on(MetadataActions.loadUserProfileSuccess, (state, action) => ({\n ...state,\n userProfile: [...action.userProfile],\n loading: false\n })),\n on(MetadataActions.loadUserProfileFailure, (state, action) => ({\n ...state,\n loading: false,\n errors: action.error\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { IMetadata } from '@provoly/dashboard';\nimport * as fromMetadata from './metadata.reducer';\n\nconst feature = createFeatureSelector<fromMetadata.MetadataState>(fromMetadata.metadataFeatureKey);\n\nconst metadata = createSelector(feature, (state) => state?.metadata);\nconst loading = createSelector(feature, (state) => state?.loading);\nconst selectedMetadata = createSelector(\n feature,\n (state) => (state?.metadata.find((x) => x.id === state.selectedMetadata) as IMetadata) || null\n);\nconst selectedMetadataId = createSelector(selectedMetadata, (metadata) => metadata?.id);\nconst selectMetadataById = (id: string) =>\n createSelector(metadata, (metadata: IMetadata[]) => metadata?.find((m) => m.id === id));\n\nconst editable = createSelector(feature, (state) => state.editable);\nconst selectedUserProfile = createSelector(feature, (state) => state?.selectedUserProfile);\nconst userProfile = createSelector(feature, (state) => state?.userProfile ?? []);\n\nexport const MetadataSelectors = {\n feature,\n loading,\n metadata,\n selectedMetadata,\n selectedMetadataId,\n selectMetadataById,\n editable,\n selectedUserProfile,\n userProfile\n};\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-metadata-editor-css',\n template: '',\n styleUrls: ['./_o-metadata-editor.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryMetadataEditorCssComponent {}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Store } from '@ngrx/store';\nimport { IMetadata, MetadataUser, MetadataValue, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs';\nimport { MetadataActions } from './store/metadata.action';\nimport { MetadataSelectors } from './store/metadata.selector';\n\nexport type MetaEventType = { id: string; metadataId: string; value?: string; previousValue?: string };\n\ntype GroupedMetadatasByDef = { metadataDef: IMetadata; metadata: (MetadataValue | MetadataUser)[] };\n\nexport const INTEGER_REGEXP_PATTERN = '^[+-]?[0-9]*$';\nexport const DOUBLE_REGEXP_PATTERN = '[+-]?([0-9]*[.])?[0-9]+';\n\n@Component({\n selector: 'pry-metadata-editor',\n templateUrl: 'metadata-editor.component.html'\n})\nexport class PryMetadataEditorComponent extends SubscriptionnerDirective {\n _metadata$ = new BehaviorSubject<(MetadataValue | MetadataUser)[]>([]);\n form: FormGroup;\n isSubmitted = false;\n @Input() isModification = false;\n metadataDefs$: Observable<IMetadata[]>;\n availableMetadata$: Observable<IMetadata[]>;\n _type$ = new BehaviorSubject<'meta' | 'user'>('meta');\n @Output() addMeta = new EventEmitter<MetaEventType>();\n @Output() removeMeta = new EventEmitter<MetaEventType>();\n userProfileDefs$: Observable<Array<IMetadata> | undefined>;\n @Input() targetId = '';\n\n @Input() set type(type: 'meta' | 'user') {\n this._type$.next(type);\n }\n\n @Input() set metadata(metadata: MetadataValue[] | MetadataUser[]) {\n this._metadata$.next(metadata);\n }\n\n _metadataGroupedByDef$: Observable<GroupedMetadatasByDef[]> = this._metadata$.pipe(\n map((metadatas) => {\n const metadataGroupedByDef: GroupedMetadatasByDef[] = [];\n metadatas.forEach((meta) => {\n const metadataGroup = metadataGroupedByDef.find((val) => val.metadataDef.id === this.metaDefinition(meta).id);\n if (metadataGroup) {\n metadataGroup.metadata.push(meta);\n } else {\n metadataGroupedByDef.push({ metadataDef: this.metaDefinition(meta), metadata: [meta] });\n }\n });\n metadataGroupedByDef.sort((group1, group2) => group1.metadataDef.name.localeCompare(group2.metadataDef.name));\n return metadataGroupedByDef;\n })\n );\n\n _previousValueMetadata: string | undefined = undefined;\n\n constructor(\n private store: Store,\n private formBuilder: FormBuilder\n ) {\n super();\n\n this.form = this.formBuilder.group({\n metadata: [{}, [Validators.required]],\n value: ['', [Validators.required, Validators.pattern(INTEGER_REGEXP_PATTERN)]]\n });\n\n this.metadataDefs$ = this.store.select(MetadataSelectors.metadata);\n this.userProfileDefs$ = this.store.select(MetadataSelectors.userProfile);\n this.availableMetadata$ = combineLatest([\n this._type$,\n this._metadata$,\n this.metadataDefs$,\n this.userProfileDefs$\n ]).pipe(\n map(([type, metadata, metaDefs, userProfileDefs]) => {\n if (type === 'meta') {\n let datasetMetadataIds = metadata?.map((u) => (u as MetadataValue).metadataDef.id);\n return metaDefs.filter((meta) => !datasetMetadataIds?.includes(meta.id) && !meta.readOnly);\n } else {\n return userProfileDefs ?? [];\n }\n })\n );\n\n this.subscriptions.add(\n this.availableMetadata$.subscribe((meta) => {\n this.form.patchValue({\n metadata: meta[0]\n });\n this.onMetaChange(meta[0]);\n })\n );\n }\n\n onMetaChange(metadata: IMetadata) {\n if (metadata) {\n if (metadata.type === 'INTEGER') {\n this.form.controls['value'].setValidators([Validators.required, Validators.pattern(INTEGER_REGEXP_PATTERN)]);\n } else if (metadata.type === 'DOUBLE') {\n this.form.controls['value'].setValidators([Validators.required, Validators.pattern(DOUBLE_REGEXP_PATTERN)]);\n } else {\n this.form.controls['value'].setValidators([Validators.required]);\n }\n this.isModification = true;\n } else {\n this.isModification = false;\n }\n this.form.patchValue({ value: '' });\n this._previousValueMetadata = undefined;\n }\n\n editMetadata(currentMetadata: MetadataValue | MetadataUser) {\n this.store.dispatch(MetadataActions.isEditable({ editable: true }));\n let datasetMetadataDef = this.metaDefinition(currentMetadata);\n this.onMetaChange(datasetMetadataDef);\n\n this.form.patchValue({\n metadata: datasetMetadataDef,\n value: currentMetadata.value\n });\n this._previousValueMetadata = currentMetadata.value;\n }\n\n metaDefinition(metadata: MetadataUser | MetadataValue) {\n return this._type$.getValue() === 'user'\n ? (metadata as MetadataUser).userProfile\n : (metadata as MetadataValue).metadataDef;\n }\n\n removeMetadata(metadataDef: IMetadata) {\n this.removeMeta.emit({ id: this.targetId, metadataId: metadataDef.id });\n }\n\n removeMetadataValue(metadataToRemove: MetadataValue | MetadataUser) {\n // removing one value is like editing current without new value\n this.addMeta.emit({\n id: this.targetId,\n metadataId: this.metaDefinition(metadataToRemove).id,\n value: undefined,\n previousValue: metadataToRemove.value\n });\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 previousValue: this._previousValueMetadata\n });\n this._previousValueMetadata = undefined;\n }\n }\n}\n","<pry-metadata-editor-css></pry-metadata-editor-css>\n@for (groupedMetadatas of _metadataGroupedByDef$ | async; track groupedMetadatas.metadataDef.id) {\n <div class=\"o-tabs__panel__content__actions\">\n <div class=\"o-tabs__panel__content__actions__def\">\n <span class=\"o-tabs__panel__content__actions__text__label\">{{ groupedMetadatas.metadataDef.name }}</span>\n <div class=\"o-tabs__panel__content__actions__buttons\">\n @if (!groupedMetadatas.metadataDef.readOnly) {\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\">\n {{ '@pry.action.delete' | i18n }} {{ groupedMetadatas.metadataDef.name }}\n </span>\n <pry-icon\n class=\"delete-icon\"\n iconSvg=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"removeMetadata(groupedMetadatas.metadataDef)\"\n ></pry-icon>\n </button>\n </ng-container>\n }\n </div>\n </div>\n <ul>\n @for (metadata of groupedMetadatas.metadata; track metadata.value; let i = $index) {\n <li class=\"o-tabs__panel__content__actions__def\">\n <div class=\"o-tabs__panel__content__actions__text\">\n <span class=\"o-tabs__panel__content__actions__text__value\">{{ metadata.value }}</span>\n </div>\n <div class=\"o-tabs__panel__content__actions__buttons\">\n @if (!metaDefinition(metadata).readOnly) {\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\">\n {{ '@pry.action.edit' | i18n }} {{ metaDefinition(metadata).name }}\n </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 @if ((_type$ | async) === 'user') {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">\n {{ '@pry.action.delete' | i18n }} {{ groupedMetadatas.metadataDef.name }}\n </span>\n <pry-icon\n class=\"delete-icon\"\n iconSvg=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"removeMetadataValue(metadata)\"\n ></pry-icon>\n </button>\n }\n </ng-container>\n }\n </div>\n </li>\n }\n </ul>\n </div>\n}\n\n<ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <form class=\"o-form -border-top\" [formGroup]=\"form\" (ngSubmit)=\"addDatasetMetadata()\">\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.action.editProfil' | i18n }}</legend>\n\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label for=\"metadata\" id=\"metadata-label\" class=\"a-label\">Data</label>\n <pry-select\n id=\"metadata\"\n class=\"o-metadata-editor\"\n formControlName=\"metadata\"\n [items]=\"availableMetadata$ | async\"\n (ngModelChange)=\"onMetaChange($event)\"\n [isForm]=\"true\"\n bindLabel=\"name\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('metadata')?.invalid ? 'metadata-label metadata-error' : 'metadata-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('metadata')?.invalid\"\n >\n </pry-select>\n @if (isSubmitted && form.get('metadata')?.invalid) {\n <label\n id=\"metadata-error\"\n for=\"metadata\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n\n @if (form.value.metadata) {\n @if (form.value['metadata']['type'] === 'DATE') {\n <div class=\"m-form-label-field o-metadata-editor__container\">\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 @if (isSubmitted && form.get('value')?.invalid) {\n <label\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 }\n </div>\n } @else {\n @if (form.value['metadata']['type'] === 'LIST') {\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label id=\"list-label\" class=\"a-label\" for=\"list\">{{ '@pry.action.choiceInList' | i18n }}</label>\n <pry-select\n id=\"list\"\n class=\"o-metadata-editor\"\n formControlName=\"value\"\n [items]=\"form.value['metadata']['allowedValues']\"\n [isForm]=\"true\"\n aria-labelledby=\"list-label\"\n ></pry-select>\n </div>\n } @else {\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 @if (isSubmitted && form.get('value')?.invalid) {\n <label\n id=\"test-error\"\n for=\"text\"\n class=\"a-label a-label--help -error\"\n >\n @if (form.get('value')?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n @if (form.get('value')?.hasError('pattern')) {\n @if (form.value['metadata']['type'] === 'DOUBLE') {\n <span>\n {{ '@pry.admin.environment.formatDouble' | i18n }}\n </span>\n }\n @if (form.value['metadata']['type'] === 'INTEGER') {\n <span>\n {{ '@pry.admin.environment.formatInt' | i18n }}\n </span>\n }\n }\n </label>\n }\n </div>\n }\n }\n }\n </fieldset>\n\n <div class=\"m-btn-group -end\">\n <button type=\"submit\" class=\"a-btn a-btn--primary\">\n {{ (isModification ? '@pry.action.editMetadata' : '@pry.action.addMetadata') | i18n }}\n </button>\n </div>\n </form>\n</ng-container>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors, IMetadata, MetadataUser } from '@provoly/dashboard';\nimport { mergeMap, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MetadataService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n getMetadataList(): Observable<any> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<any>(`${url}/metadata`)));\n }\n\n getMetadata(id: string): Observable<IMetadata> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<IMetadata>(`${url}/metadata/id/${id}`)));\n }\n\n postMetadata(metadata: IMetadata): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.post<void>(`${url}/metadata`, metadata)));\n }\n\n getMetadataUser(userId: string): Observable<MetadataUser[]> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<MetadataUser[]>(`${url}/users/id/${userId}/metadata`)));\n }\n\n addMetadataUser(userId: string, metaId: string, value: any[]): Observable<void> {\n return this.store.select(ConfigSelectors.refUrl).pipe(\n mergeMap((url) =>\n this.httpClient.put<void>(encodeURI(`${url}/users/id/${userId}/metadata/id/${metaId}`), {\n values: value\n })\n )\n );\n }\n\n deleteMetadataUser(userId: string, metaId: string): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(\n mergeMap((url) => this.httpClient.delete<void>(encodeURI(`${url}/users/id/${userId}/metadata/id/${metaId}`)))\n );\n }\n\n getUserMetadata(): Observable<any> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<any>(`${url}/users/metadata`)));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { 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 loadMetadataUser$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.loadMetadataUser),\n mergeMap((action) =>\n this.service.getMetadataUser(action.userId).pipe(\n map((metadata) => MetadataActions.loadMetadataUserSuccess({ metadata })),\n catchError((error) => [MetadataActions.loadMetadataUserFailure({ error })])\n )\n )\n )\n );\n\n selectUser$ = createEffect(() =>\n this.actions$.pipe(\n ofType('[Admin/User] Select User'),\n map((action) => {\n // @ts-ignore\n return MetadataActions.loadMetadataUser({ userId: action.userId });\n })\n )\n );\n\n addMetadataUser$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.addMetadataUser),\n mergeMap((action) =>\n this.service.addMetadataUser(action.userId, action.metaId, action.value).pipe(\n map(() => MetadataActions.addMetadataUserSuccess({ userId: action.userId })),\n catchError((error) => [MetadataActions.addMetadataUserFailure({ error })])\n )\n )\n )\n );\n\n addMetadataUserSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.addMetadataUserSuccess),\n mergeMap((action) => {\n return [\n MetadataActions.loadMetadataUser({ userId: action.userId }),\n MetadataActions.isEditable({ editable: false })\n ];\n })\n )\n );\n\n deleteMetadataUser$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.deleteMetadataUser),\n mergeMap((action) =>\n this.service.deleteMetadataUser(action.userId, action.metadataId).pipe(\n map(() => MetadataActions.deleteMetadataUserSuccess({ userId: action.userId })),\n catchError((error) => [MetadataActions.deleteMetadataUserFailure({ error })])\n )\n )\n )\n );\n\n deleteMetadataUserSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.deleteMetadataUserSuccess),\n mergeMap((action) => {\n return [\n MetadataActions.loadMetadataUser({ userId: action.userId }),\n MetadataActions.isEditable({ editable: false })\n ];\n })\n )\n );\n\n loadUserProfile$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.loadUserProfile),\n mergeMap((_) =>\n this.service.getUserMetadata().pipe(\n map((metadata) => MetadataActions.loadUserProfileSuccess({ userProfile: metadata })),\n catchError((error) => [MetadataActions.loadUserProfileFailure({ error: error })])\n )\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private service: MetadataService\n ) {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport { PryCoreModule, PryI18nModule, PryIconModule, PrySelectModule } from '@provoly/dashboard';\nimport { PryMetadataEditorComponent } from './metadata-editor.component';\nimport { MetadataEffects } from './store/metadata.effects';\nimport { metadataFeatureKey, metadataReducer } from './store/metadata.reducer';\nimport { PryMetadataEditorCssComponent } from './style/css.component';\n\nconst PRY_METADATA_EDITOR_COMPONENTS = [PryMetadataEditorComponent, PryMetadataEditorCssComponent];\n\n@NgModule({\n declarations: [...PRY_METADATA_EDITOR_COMPONENTS],\n exports: [...PRY_METADATA_EDITOR_COMPONENTS],\n imports: [\n CommonModule,\n StoreModule.forFeature(metadataFeatureKey, metadataReducer),\n EffectsModule.forFeature([MetadataEffects]),\n PryCoreModule,\n PryI18nModule,\n ReactiveFormsModule,\n PrySelectModule,\n PryIconModule\n ]\n})\nexport class PryExpandPanelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["fromMetadata.metadataFeatureKey","i4.PryMetadataEditorCssComponent","i1","i2","mergeMap","map","i2.MetadataService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provoly-dashboard-components-metadata-editor.mjs","sources":["../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.action.ts","../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.reducer.ts","../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.selector.ts","../../../../projects/provoly/dashboard/components/metadata-editor/style/css.component.ts","../../../../projects/provoly/dashboard/components/metadata-editor/metadata-editor.component.ts","../../../../projects/provoly/dashboard/components/metadata-editor/metadata-editor.component.html","../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.service.ts","../../../../projects/provoly/dashboard/components/metadata-editor/store/metadata.effects.ts","../../../../projects/provoly/dashboard/components/metadata-editor/metadata-editor.module.ts","../../../../projects/provoly/dashboard/components/metadata-editor/provoly-dashboard-components-metadata-editor.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\nimport { IMetadata, MetadataUser, MetadataValue } from '@provoly/dashboard';\n\nexport const MetadataActions = {\n loadMetadata: createAction(`[Metadata] Load Metadata`),\n loadMetadataSuccess: createAction(`[Metadata] Load Metadata Success`, props<{ metadata: Array<IMetadata> }>()),\n loadMetadataFailure: createAction(`[Metadata] Load Metadata Failure`, props<{ error: any }>()),\n\n unselectMetadata: createAction(`[Metadata] unSelect Metadata`),\n\n goToNewMetadata: createAction(`[Metadata] go to new metadata`, props<{ route: string }>()),\n goToNewMetadataSuccess: createAction(`[Metadata] go to new metadata success`),\n goToNewMetadataFailure: createAction(`[Metadata] go to new metadata failure`, props<{ error: any }>()),\n\n createMetadata: createAction(`[Metadata] create metadata`, props<{ metadata: IMetadata }>()),\n createMetadataSuccess: createAction(`[Metadata] create metadata Success`, props<{ metadata: IMetadata }>()),\n createMetadataFailure: createAction(`[Metadata] create metadata Failure`, props<{ error: any }>()),\n\n goToDetailsView: createAction(`[Metadata] go to details view`, props<{ id: string }>()),\n goToDetailsViewSuccess: createAction(`[Metadata] go to details view success`, props<{ metadata: IMetadata }>()),\n goToDetailsViewFailure: createAction(`[Metadata] go to details view failure`, props<{ error: any }>()),\n\n addDatasetMetadata: createAction(\n `[Metadata] Add Metadata of selected Datasets`,\n props<{ datasetId: string; metadataId: string; value: any }>()\n ),\n addDatasetMetadataSuccess: createAction(\n `[Metadata] Add Metadata of selected Datasets Success`,\n props<{ datasetId: string }>()\n ),\n addDatasetMetadataFailure: createAction(\n `[Metadata] Add Metadata of selected Datasets Failure`,\n props<{ error: any }>()\n ),\n\n deleteDatasetMetadata: createAction(\n `[Metadata] Delete Metadata of selected Datasets`,\n props<{ datasetId: string; metadataId: string }>()\n ),\n deleteDatasetMetadataSuccess: createAction(\n `[Metadata] Delete Metadata of selected Datasets Success`,\n props<{ datasetId: string }>()\n ),\n deleteDatasetMetadataFailure: createAction(\n `[Metadata] Delete Metadata of selected Datasets Failure`,\n props<{ error: any }>()\n ),\n isEditable: createAction(`[Metadata] Is editable`, props<{ editable: boolean }>()),\n loadDatasetMetadata: createAction(`[Metadata] Load Metadata of selected Datasets`, props<{ datasetId: string }>()),\n loadDatasetMetadataSuccess: createAction(\n `[Metadata] Load Metadata of selected Datasets Success`,\n props<{ metadata: MetadataValue[] }>()\n ),\n loadDatasetMetadataFailure: createAction(\n `[Metadata] Load Metadata of selected Datasets Failure`,\n props<{ error: any }>()\n ),\n\n loadMetadataUser: createAction(`[Metadata/User] Load Metadata of selected Users`, props<{ userId: string }>()),\n loadMetadataUserSuccess: createAction(\n `[Metadata/User] Load Metadata of selected Users Success`,\n props<{ metadata: Array<MetadataUser> }>()\n ),\n loadMetadataUserFailure: createAction(\n `[Metadata/User] Load Metadata of selected Users Failure`,\n props<{ error: any }>()\n ),\n\n addMetadataUser: createAction(\n `[Metadata/User] Add Metadata of selected Users`,\n props<{ userId: string; metaId: string; value: any[] }>()\n ),\n addMetadataUserSuccess: createAction(\n `[Metadata/User] Add Metadata of selected Users Success`,\n props<{ userId: string }>()\n ),\n addMetadataUserFailure: createAction(\n `[Metadata/User] Add Metadata of selected Users Failure`,\n props<{ error: any }>()\n ),\n\n deleteMetadataUser: createAction(\n `[Metadata/User] Delete Metadata of selected Users`,\n props<{ userId: string; metadataId: string }>()\n ),\n deleteMetadataUserSuccess: createAction(\n `[Metadata/User] Delete Metadata of selected Users Success`,\n props<{ userId: string }>()\n ),\n deleteMetadataUserFailure: createAction(\n `[Metadata/User] Delete Metadata of selected Users Failure`,\n props<{ error: any }>()\n ),\n loadUserProfile: createAction(`[Metadata/User] Load Metadata`),\n loadUserProfileSuccess: createAction(`[Metadata/User] Load Success`, props<{ userProfile: Array<IMetadata> }>()),\n loadUserProfileFailure: createAction(`[Metadata/User] Load Failure`, props<{ error: any }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { IMetadata, MetadataUser } from '@provoly/dashboard';\nimport { MetadataActions } from './metadata.action';\n\nexport const metadataFeatureKey = '@pry/metadata';\n\nexport interface MetadataState {\n metadata: IMetadata[];\n selectedMetadata: string | null;\n loading: boolean;\n errors: any;\n editable: boolean;\n selectedUserProfile: Array<MetadataUser>;\n userProfile: Array<IMetadata>;\n}\n\nexport const initialMetadataState: MetadataState = {\n metadata: [],\n selectedMetadata: null,\n loading: false,\n errors: null,\n editable: false,\n selectedUserProfile: [],\n userProfile: []\n};\n\n/**\n * @TODO merge this store with admin user store ?\n */\nexport const metadataReducer = createReducer(\n initialMetadataState,\n on(MetadataActions.loadMetadataSuccess, (state, action) => ({\n ...state,\n metadata: [...action.metadata],\n loading: false\n })),\n on(\n MetadataActions.loadMetadataFailure,\n MetadataActions.goToNewMetadataFailure,\n MetadataActions.createMetadataFailure,\n MetadataActions.goToDetailsViewFailure,\n (state, action) => ({\n ...state,\n loading: false,\n errors: action.error\n })\n ),\n on(MetadataActions.unselectMetadata, (state) => ({\n ...state,\n selectedMetadata: null\n })),\n on(MetadataActions.loadMetadata, MetadataActions.goToNewMetadata, (state) => ({\n ...state,\n loading: true\n })),\n on(MetadataActions.createMetadataSuccess, (state, action) => ({\n ...state,\n metadata: [...state.metadata, action.metadata],\n loading: false\n })),\n on(MetadataActions.goToDetailsView, (state, action) => ({\n ...state,\n selectedMetadata: action.id\n })),\n on(MetadataActions.isEditable, (state, action) => ({\n ...state,\n editable: action.editable\n })),\n on(MetadataActions.loadMetadataUserSuccess, (state, action) => ({\n ...state,\n selectedUserProfile: action.metadata\n })),\n on(MetadataActions.loadUserProfile, (state) => ({\n ...state,\n loading: true\n })),\n on(MetadataActions.loadUserProfileSuccess, (state, action) => ({\n ...state,\n userProfile: [...action.userProfile],\n loading: false\n })),\n on(MetadataActions.loadUserProfileFailure, (state, action) => ({\n ...state,\n loading: false,\n errors: action.error\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { IMetadata } from '@provoly/dashboard';\nimport * as fromMetadata from './metadata.reducer';\n\nconst feature = createFeatureSelector<fromMetadata.MetadataState>(fromMetadata.metadataFeatureKey);\n\nconst metadata = createSelector(feature, (state) => state?.metadata);\nconst loading = createSelector(feature, (state) => state?.loading);\nconst selectedMetadata = createSelector(\n feature,\n (state) => (state?.metadata.find((x) => x.id === state.selectedMetadata) as IMetadata) || null\n);\nconst selectedMetadataId = createSelector(selectedMetadata, (metadata) => metadata?.id);\nconst selectMetadataById = (id: string) =>\n createSelector(metadata, (metadata: IMetadata[]) => metadata?.find((m) => m.id === id));\n\nconst editable = createSelector(feature, (state) => state.editable);\nconst selectedUserProfile = createSelector(feature, (state) => state?.selectedUserProfile);\nconst userProfile = createSelector(feature, (state) => state?.userProfile ?? []);\n\nexport const MetadataSelectors = {\n feature,\n loading,\n metadata,\n selectedMetadata,\n selectedMetadataId,\n selectMetadataById,\n editable,\n selectedUserProfile,\n userProfile\n};\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-metadata-editor-css',\n template: '',\n styleUrls: ['./_o-metadata-editor.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryMetadataEditorCssComponent {}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Store } from '@ngrx/store';\nimport { IMetadata, MetadataUser, MetadataValue, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs';\nimport { MetadataActions } from './store/metadata.action';\nimport { MetadataSelectors } from './store/metadata.selector';\n\nexport type MetaEventType = { id: string; metadataId: string; value?: string; previousValue?: string };\n\ntype GroupedMetadatasByDef = { metadataDef: IMetadata; metadata: (MetadataValue | MetadataUser)[] };\n\nexport const INTEGER_REGEXP_PATTERN = '^[+-]?[0-9]*$';\nexport const DOUBLE_REGEXP_PATTERN = '[+-]?([0-9]*[.])?[0-9]+';\n\n@Component({\n selector: 'pry-metadata-editor',\n templateUrl: 'metadata-editor.component.html'\n})\nexport class PryMetadataEditorComponent extends SubscriptionnerDirective {\n _metadata$ = new BehaviorSubject<(MetadataValue | MetadataUser)[]>([]);\n form: FormGroup;\n isSubmitted = false;\n @Input() isModification = false;\n metadataDefs$: Observable<IMetadata[]>;\n availableMetadata$: Observable<IMetadata[]>;\n _type$ = new BehaviorSubject<'meta' | 'user'>('meta');\n @Output() addMeta = new EventEmitter<MetaEventType>();\n @Output() removeMeta = new EventEmitter<MetaEventType>();\n userProfileDefs$: Observable<Array<IMetadata> | undefined>;\n @Input() targetId = '';\n\n @Input() set type(type: 'meta' | 'user') {\n this._type$.next(type);\n }\n\n @Input() set metadata(metadata: MetadataValue[] | MetadataUser[]) {\n this._metadata$.next(metadata);\n }\n\n _metadataGroupedByDef$: Observable<GroupedMetadatasByDef[]> = this._metadata$.pipe(\n map((metadatas) => {\n const metadataGroupedByDef: GroupedMetadatasByDef[] = [];\n metadatas.forEach((meta) => {\n const metadataGroup = metadataGroupedByDef.find((val) => val.metadataDef.id === this.metaDefinition(meta).id);\n if (metadataGroup) {\n metadataGroup.metadata.push(meta);\n } else {\n metadataGroupedByDef.push({ metadataDef: this.metaDefinition(meta), metadata: [meta] });\n }\n });\n metadataGroupedByDef.sort((group1, group2) => group1.metadataDef.name.localeCompare(group2.metadataDef.name));\n return metadataGroupedByDef;\n })\n );\n\n _previousValueMetadata: string | undefined = undefined;\n\n constructor(\n private store: Store,\n private formBuilder: FormBuilder\n ) {\n super();\n\n this.form = this.formBuilder.group({\n metadata: [{}, [Validators.required]],\n value: ['', [Validators.required, Validators.pattern(INTEGER_REGEXP_PATTERN)]]\n });\n\n this.metadataDefs$ = this.store.select(MetadataSelectors.metadata);\n this.userProfileDefs$ = this.store.select(MetadataSelectors.userProfile);\n this.availableMetadata$ = combineLatest([\n this._type$,\n this._metadata$,\n this.metadataDefs$,\n this.userProfileDefs$\n ]).pipe(\n map(([type, metadata, metaDefs, userProfileDefs]) => {\n if (type === 'meta') {\n let datasetMetadataIds = metadata?.map((u) => (u as MetadataValue).metadataDef.id);\n return metaDefs.filter((meta) => !datasetMetadataIds?.includes(meta.id) && !meta.readOnly);\n } else {\n return userProfileDefs ?? [];\n }\n })\n );\n\n this.subscriptions.add(\n this.availableMetadata$.subscribe((meta) => {\n this.form.patchValue({\n metadata: meta[0]\n });\n this.onMetaChange(meta[0]);\n })\n );\n }\n\n onMetaChange(metadata: IMetadata) {\n if (metadata) {\n if (metadata.type === 'INTEGER') {\n this.form.controls['value'].setValidators([Validators.required, Validators.pattern(INTEGER_REGEXP_PATTERN)]);\n } else if (metadata.type === 'DOUBLE') {\n this.form.controls['value'].setValidators([Validators.required, Validators.pattern(DOUBLE_REGEXP_PATTERN)]);\n } else {\n this.form.controls['value'].setValidators([Validators.required]);\n }\n this.isModification = true;\n } else {\n this.isModification = false;\n }\n this.form.patchValue({ value: '' });\n this._previousValueMetadata = undefined;\n }\n\n editMetadata(currentMetadata: MetadataValue | MetadataUser) {\n this.store.dispatch(MetadataActions.isEditable({ editable: true }));\n let datasetMetadataDef = this.metaDefinition(currentMetadata);\n this.onMetaChange(datasetMetadataDef);\n\n this.form.patchValue({\n metadata: datasetMetadataDef,\n value: currentMetadata.value\n });\n this._previousValueMetadata = currentMetadata.value;\n }\n\n metaDefinition(metadata: MetadataUser | MetadataValue) {\n return this._type$.getValue() === 'user'\n ? (metadata as MetadataUser).userProfile\n : (metadata as MetadataValue).metadataDef;\n }\n\n removeMetadata(metadataDef: IMetadata) {\n this.removeMeta.emit({ id: this.targetId, metadataId: metadataDef.id });\n }\n\n removeMetadataValue(metadataToRemove: MetadataValue | MetadataUser) {\n // removing one value is like editing current without new value\n this.addMeta.emit({\n id: this.targetId,\n metadataId: this.metaDefinition(metadataToRemove).id,\n value: undefined,\n previousValue: metadataToRemove.value\n });\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 previousValue: this._previousValueMetadata\n });\n this._previousValueMetadata = undefined;\n }\n }\n}\n","<pry-metadata-editor-css></pry-metadata-editor-css>\n@for (groupedMetadatas of _metadataGroupedByDef$ | async; track groupedMetadatas.metadataDef.id) {\n <div class=\"o-tabs__panel__content__actions\">\n <div class=\"o-tabs__panel__content__actions__def\">\n <span class=\"o-tabs__panel__content__actions__text__label\">{{ groupedMetadatas.metadataDef.name }}</span>\n <div class=\"o-tabs__panel__content__actions__buttons\">\n @if (!groupedMetadatas.metadataDef.readOnly) {\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\">\n {{ '@pry.action.delete' | i18n }} {{ groupedMetadatas.metadataDef.name }}\n </span>\n <pry-icon\n class=\"delete-icon\"\n iconSvg=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"removeMetadata(groupedMetadatas.metadataDef)\"\n ></pry-icon>\n </button>\n </ng-container>\n }\n </div>\n </div>\n <ul>\n @for (metadata of groupedMetadatas.metadata; track metadata.value; let i = $index) {\n <li class=\"o-tabs__panel__content__actions__def\">\n <div class=\"o-tabs__panel__content__actions__text\">\n <span class=\"o-tabs__panel__content__actions__text__value\">{{ metadata.value }}</span>\n </div>\n <div class=\"o-tabs__panel__content__actions__buttons\">\n @if (!metaDefinition(metadata).readOnly) {\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\">\n {{ '@pry.action.edit' | i18n }} {{ metaDefinition(metadata).name }}\n </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 @if ((_type$ | async) === 'user') {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">\n {{ '@pry.action.delete' | i18n }} {{ groupedMetadatas.metadataDef.name }}\n </span>\n <pry-icon\n class=\"delete-icon\"\n iconSvg=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"removeMetadataValue(metadata)\"\n ></pry-icon>\n </button>\n }\n </ng-container>\n }\n </div>\n </li>\n }\n </ul>\n </div>\n}\n\n<ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <form class=\"o-form -border-top\" [formGroup]=\"form\" (ngSubmit)=\"addDatasetMetadata()\">\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.action.editProfil' | i18n }}</legend>\n\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label for=\"metadata\" id=\"metadata-label\" class=\"a-label\">Data</label>\n <pry-select\n id=\"metadata\"\n class=\"o-metadata-editor\"\n formControlName=\"metadata\"\n [items]=\"availableMetadata$ | async\"\n (ngModelChange)=\"onMetaChange($event)\"\n [isForm]=\"true\"\n bindLabel=\"name\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('metadata')?.invalid ? 'metadata-label metadata-error' : 'metadata-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('metadata')?.invalid\"\n >\n </pry-select>\n @if (isSubmitted && form.get('metadata')?.invalid) {\n <label\n id=\"metadata-error\"\n for=\"metadata\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n\n @if (form.value.metadata) {\n @if (form.value['metadata']['type'] === 'DATE') {\n <div class=\"m-form-label-field o-metadata-editor__container\">\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 @if (isSubmitted && form.get('value')?.invalid) {\n <label\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 }\n </div>\n } @else {\n @if (form.value['metadata']['type'] === 'LIST') {\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label id=\"list-label\" class=\"a-label\" for=\"list\">{{ '@pry.action.choiceInList' | i18n }}</label>\n <pry-select\n id=\"list\"\n class=\"o-metadata-editor\"\n formControlName=\"value\"\n [items]=\"form.value['metadata']['allowedValues']\"\n [isForm]=\"true\"\n aria-labelledby=\"list-label\"\n ></pry-select>\n </div>\n } @else {\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 @if (isSubmitted && form.get('value')?.invalid) {\n <label\n id=\"test-error\"\n for=\"text\"\n class=\"a-label a-label--help -error\"\n >\n @if (form.get('value')?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n @if (form.get('value')?.hasError('pattern')) {\n @if (form.value['metadata']['type'] === 'DOUBLE') {\n <span>\n {{ '@pry.admin.environment.formatDouble' | i18n }}\n </span>\n }\n @if (form.value['metadata']['type'] === 'INTEGER') {\n <span>\n {{ '@pry.admin.environment.formatInt' | i18n }}\n </span>\n }\n }\n </label>\n }\n </div>\n }\n }\n }\n </fieldset>\n\n <div class=\"m-btn-group -end\">\n <button type=\"submit\" class=\"a-btn a-btn--primary\">\n {{ (isModification ? '@pry.action.editMetadata' : '@pry.action.addMetadata') | i18n }}\n </button>\n </div>\n </form>\n</ng-container>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors, IMetadata, MetadataUser } from '@provoly/dashboard';\nimport { mergeMap, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MetadataService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n getMetadataList(): Observable<any> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<any>(`${url}/metadata`)));\n }\n\n getMetadata(id: string): Observable<IMetadata> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<IMetadata>(`${url}/metadata/id/${id}`)));\n }\n\n postMetadata(metadata: IMetadata): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.post<void>(`${url}/metadata`, metadata)));\n }\n\n getMetadataUser(userId: string): Observable<MetadataUser[]> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<MetadataUser[]>(`${url}/users/id/${userId}/metadata`)));\n }\n\n addMetadataUser(userId: string, metaId: string, value: any[]): Observable<void> {\n return this.store.select(ConfigSelectors.refUrl).pipe(\n mergeMap((url) =>\n this.httpClient.put<void>(encodeURI(`${url}/users/id/${userId}/metadata/id/${metaId}`), {\n values: value\n })\n )\n );\n }\n\n deleteMetadataUser(userId: string, metaId: string): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(\n mergeMap((url) => this.httpClient.delete<void>(encodeURI(`${url}/users/id/${userId}/metadata/id/${metaId}`)))\n );\n }\n\n getUserMetadata(): Observable<any> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<any>(`${url}/users/metadata`)));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, map, mergeMap } from 'rxjs';\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 loadMetadataUser$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.loadMetadataUser),\n mergeMap((action) =>\n this.service.getMetadataUser(action.userId).pipe(\n map((metadata) => MetadataActions.loadMetadataUserSuccess({ metadata })),\n catchError((error) => [MetadataActions.loadMetadataUserFailure({ error })])\n )\n )\n )\n );\n\n selectUser$ = createEffect(() =>\n this.actions$.pipe(\n ofType('[Admin/User] Select User'),\n map((action) => {\n // @ts-ignore\n return MetadataActions.loadMetadataUser({ userId: action.userId });\n })\n )\n );\n\n addMetadataUser$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.addMetadataUser),\n mergeMap((action) =>\n this.service.addMetadataUser(action.userId, action.metaId, action.value).pipe(\n map(() => MetadataActions.addMetadataUserSuccess({ userId: action.userId })),\n catchError((error) => [MetadataActions.addMetadataUserFailure({ error })])\n )\n )\n )\n );\n\n addMetadataUserSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.addMetadataUserSuccess),\n mergeMap((action) => {\n return [\n MetadataActions.loadMetadataUser({ userId: action.userId }),\n MetadataActions.isEditable({ editable: false })\n ];\n })\n )\n );\n\n deleteMetadataUser$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.deleteMetadataUser),\n mergeMap((action) =>\n this.service.deleteMetadataUser(action.userId, action.metadataId).pipe(\n map(() => MetadataActions.deleteMetadataUserSuccess({ userId: action.userId })),\n catchError((error) => [MetadataActions.deleteMetadataUserFailure({ error })])\n )\n )\n )\n );\n\n deleteMetadataUserSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.deleteMetadataUserSuccess),\n mergeMap((action) => {\n return [\n MetadataActions.loadMetadataUser({ userId: action.userId }),\n MetadataActions.isEditable({ editable: false })\n ];\n })\n )\n );\n\n loadUserProfile$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.loadUserProfile),\n mergeMap((_) =>\n this.service.getUserMetadata().pipe(\n map((metadata) => MetadataActions.loadUserProfileSuccess({ userProfile: metadata })),\n catchError((error) => [MetadataActions.loadUserProfileFailure({ error: error })])\n )\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private service: MetadataService\n ) {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport { PryCoreModule, PryI18nModule, PryIconModule, PrySelectModule } from '@provoly/dashboard';\nimport { PryMetadataEditorComponent } from './metadata-editor.component';\nimport { MetadataEffects } from './store/metadata.effects';\nimport { metadataFeatureKey, metadataReducer } from './store/metadata.reducer';\nimport { PryMetadataEditorCssComponent } from './style/css.component';\n\nconst PRY_METADATA_EDITOR_COMPONENTS = [PryMetadataEditorComponent, PryMetadataEditorCssComponent];\n\n@NgModule({\n declarations: [...PRY_METADATA_EDITOR_COMPONENTS],\n exports: [...PRY_METADATA_EDITOR_COMPONENTS],\n imports: [\n CommonModule,\n StoreModule.forFeature(metadataFeatureKey, metadataReducer),\n EffectsModule.forFeature([MetadataEffects]),\n PryCoreModule,\n PryI18nModule,\n ReactiveFormsModule,\n PrySelectModule,\n PryIconModule\n ]\n})\nexport class PryExpandPanelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["fromMetadata.metadataFeatureKey","i4.PryMetadataEditorCssComponent","i1","i2","i2.MetadataService"],"mappings":"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"}
|
|
@@ -5,8 +5,7 @@ import * as i2 from '@angular/forms';
|
|
|
5
5
|
import { NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
6
6
|
import * as i3 from '@provoly/dashboard';
|
|
7
7
|
import { PryCoreModule, PryIconModule, PryI18nModule } from '@provoly/dashboard';
|
|
8
|
-
import { Subject, distinctUntilChanged } from 'rxjs';
|
|
9
|
-
import { debounceTime } from 'rxjs/operators';
|
|
8
|
+
import { Subject, debounceTime, distinctUntilChanged } from 'rxjs';
|
|
10
9
|
import { marked } from 'marked';
|
|
11
10
|
import { CdkOverlayOrigin, CdkConnectedOverlay } from '@angular/cdk/overlay';
|
|
12
11
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provoly-dashboard-components-text-editor.mjs","sources":["../../../../projects/provoly/dashboard/components/text-editor/style/css.component.ts","../../../../projects/provoly/dashboard/components/text-editor/service/text-editor.service.ts","../../../../projects/provoly/dashboard/components/text-editor/mdToHtml.pipe.ts","../../../../projects/provoly/dashboard/components/text-editor/component/text-editor.component.ts","../../../../projects/provoly/dashboard/components/text-editor/component/text-editor.component.html","../../../../projects/provoly/dashboard/components/text-editor/i18n/en.translations.ts","../../../../projects/provoly/dashboard/components/text-editor/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/components/text-editor/text-editor.module.ts","../../../../projects/provoly/dashboard/components/text-editor/provoly-dashboard-components-text-editor.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-text-editor-css',\n template: '',\n styleUrls: ['./_o-text-editor.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryTextEditorCssComponent {}\n","import { Injectable } from '@angular/core';\n\nexport const mdStyles = {\n h1: '# ',\n h2: '## ',\n h3: '### ',\n h4: '#### ',\n h5: '##### ',\n h6: '###### ',\n bold: '**',\n italic: '*',\n underline: '<u>',\n strikeThrough: '~~',\n code: '`',\n blockquote: '> ',\n list: '- ',\n orderedList: '\\\\d+\\\\. ',\n table: '| | |\\n| --- | --- |\\n| | |',\n details: '<details>\\n<summary></summary>\\n'\n};\n\nexport type MdStyle = keyof typeof mdStyles;\n\nexport const wrapperStyles: MdStyle[] = ['bold', 'italic', 'underline', 'strikeThrough', 'code'];\nexport const selfClosingStyles: MdStyle[] = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\nexport const listStyles: MdStyle[] = ['blockquote', 'list', 'orderedList'];\nexport const otherStyles: MdStyle[] = ['table', 'details'];\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TextEditorService {\n constructor() {}\n\n getClosingTag(style: MdStyle) {\n switch (style) {\n case 'underline':\n return '</u>';\n case 'details':\n return '\\n</details>';\n case 'bold':\n case 'italic':\n case 'strikeThrough':\n case 'code':\n return mdStyles[style];\n default:\n return '';\n }\n }\n\n addMarkdown(text: string, style: MdStyle) {\n if (wrapperStyles.includes(style)) {\n return this.toggleWrapperStyle(text, style);\n }\n if (selfClosingStyles.includes(style)) {\n return this.toggleSelfClosingStyle(text, style);\n }\n if (listStyles.includes(style)) {\n return this.toggleListStyle(text, style);\n }\n if (otherStyles.includes(style)) {\n return this.insertOtherStyle(text, style);\n }\n console.error(`Markdown style ${style} not supported`);\n return text;\n }\n\n toggleWrapperStyle(text: string, style: MdStyle) {\n if (text.startsWith(mdStyles[style])) {\n const startRegex = new RegExp(`^${this.escapeRegExp(mdStyles[style])}`);\n const endRegex = new RegExp(`${this.escapeRegExp(this.getClosingTag(style))}$`);\n return text.replace(startRegex, '').replace(endRegex, '');\n }\n return `${mdStyles[style]}${text}${this.getClosingTag(style)}`;\n }\n\n toggleSelfClosingStyle(text: string, style: MdStyle) {\n if (text.startsWith(mdStyles[style])) {\n const startRegex = new RegExp(`^${this.escapeRegExp(mdStyles[style])}`);\n return text.replace(startRegex, '');\n }\n return `${mdStyles[style]}${text}`;\n }\n\n toggleListStyle(text: string, style: MdStyle) {\n const listStyle = mdStyles[style];\n const lines = text.split('\\n');\n const startRegex = new RegExp(`^${style === 'orderedList' ? listStyle : this.escapeRegExp(listStyle)}`);\n const isListAlready = lines.every((line) => startRegex.test(line));\n const newLines = lines.map((line, index) => {\n if (isListAlready) {\n return line.replace(startRegex, '');\n }\n return `${style === 'orderedList' ? (index + 1).toString() + '. ' : listStyle}${line}`;\n });\n return newLines.join('\\n');\n }\n\n insertOtherStyle(text: string, style: MdStyle) {\n return `${mdStyles[style]}${text}${this.getClosingTag(style)}`;\n }\n\n escapeRegExp(text: string): string {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n isListLine(line: string) {\n return /^(\\d+\\.|- |\\* |\\> )/.test(line);\n }\n\n isOrderedListLine(text: string) {\n return /^\\d+\\./.test(text);\n }\n\n getListCharacter(previousLine: string) {\n if (this.isOrderedListLine(previousLine)) {\n const match = previousLine.match(/^\\d+/)?.[0];\n return (parseInt(match ?? '1') + 1).toString() + '. ';\n }\n if (/^- /.test(previousLine)) {\n return '- ';\n }\n if (/^\\* /.test(previousLine)) {\n return '* ';\n }\n if (/^\\> /.test(previousLine)) {\n return '> ';\n }\n return 'list';\n }\n\n updateOrderedListLines(text: string) {\n let order = 1;\n return text\n .split('\\n')\n .map((line) => {\n if (/^\\d+\\./.test(line)) {\n return line.replace(/^\\d+\\. /, `${order++}. `);\n }\n order = 1;\n return line;\n })\n .join('\\n');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { marked } from 'marked';\n\n@Pipe({\n name: 'mdToHtml'\n})\nexport class MdToHtmlPipe implements PipeTransform {\n transform(value?: string): string | Promise<string> {\n return marked.parse(value ?? '');\n }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { listStyles, MdStyle, TextEditorService } from '../service/text-editor.service';\nimport { distinctUntilChanged, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'pry-text-editor',\n templateUrl: 'text-editor.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: PryTextEditorComponent\n }\n ]\n})\nexport class PryTextEditorComponent implements ControlValueAccessor {\n value = '';\n onChange = (value: string) => {};\n onTouched = () => {};\n touched = false;\n disabled = false;\n valueChanged$ = new Subject<string>();\n\n @Input() tabView = true;\n tabs = ['write', 'preview'];\n activeTab = 'write';\n\n @ViewChild('textarea') textareaRef?: ElementRef<HTMLTextAreaElement>;\n buttons: { style: MdStyle; icon: string }[] = [\n { style: 'h3', icon: 'format_title' },\n { style: 'bold', icon: 'format_bold' },\n { style: 'italic', icon: 'format_italic' },\n { style: 'underline', icon: 'format_underlined' },\n { style: 'strikeThrough', icon: 'format_strikethrough' },\n { style: 'blockquote', icon: 'format_quote' },\n { style: 'list', icon: 'format_list_bulleted' },\n { style: 'orderedList', icon: 'format_list_numbered' },\n { style: 'table', icon: 'format_table' },\n { style: 'details', icon: 'format_details' }\n ];\n\n constructor(private service: TextEditorService) {\n this.valueChanged$.pipe(debounceTime(500), distinctUntilChanged()).subscribe((value) => {\n this.onChange(value);\n });\n }\n\n writeValue(value: string) {\n this.value = value;\n }\n\n registerOnChange(onChange: any) {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any) {\n this.onTouched = onTouched;\n }\n\n markAsTouched() {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean) {\n this.disabled = disabled;\n }\n\n onValueChange($event: string) {\n this.valueChanged$.next($event);\n }\n\n get textarea(): HTMLTextAreaElement {\n return this.textareaRef!.nativeElement;\n }\n\n getActiveTabIndex(): number {\n return this.tabs.findIndex((t) => t === this.activeTab);\n }\n\n formatText(style: MdStyle) {\n const start = listStyles.includes(style) ? this.getSelectionLineIndex() : this.textarea.selectionStart,\n selection = this.value.substring(start, this.textarea.selectionEnd);\n\n this.writeValue(this.getUpdatedValue(this.service.addMarkdown(selection, style), start));\n this.onChange(this.value);\n\n this.focusSelection(start, start + this.service.addMarkdown(selection, style).length);\n }\n\n getUpdatedValue(value: string, lineStart?: number) {\n const len = this.value.length,\n start = lineStart ?? this.textarea.selectionStart;\n return this.value.substring(0, start) + value + this.value.substring(this.textarea.selectionEnd, len);\n }\n\n getSelectionLineIndex() {\n const previousNewlineIndex = this.value.substring(0, this.textarea.selectionStart).lastIndexOf('\\n');\n return previousNewlineIndex ? previousNewlineIndex + 1 : 0;\n }\n\n focusSelection(start: number, end: number) {\n setTimeout(() => {\n this.textarea.focus();\n this.textarea.setSelectionRange(start, end);\n });\n }\n\n insertListStyleCharacter() {\n setTimeout(() => {\n const start = 0;\n const end = this.textarea.selectionStart;\n const text = this.value.substring(start, end);\n const previousLine = text?.split('\\n')[text?.split('\\n').length - 2];\n if (previousLine && this.service.isListLine(previousLine)) {\n const updatedValue = this.getUpdatedValue(this.service.getListCharacter(previousLine));\n this.writeValue(\n this.service.isOrderedListLine(previousLine)\n ? this.service.updateOrderedListLines(updatedValue)\n : updatedValue\n );\n this.onChange(this.value);\n }\n });\n }\n}\n","<pry-text-editor-css></pry-text-editor-css>\n<div class=\"o-text-editor\">\n <div class=\"o-text-editor__header\">\n <div class=\"o-text-editor__buttons\">\n @for (button of buttons; track button.style) {\n <button\n type=\"button\"\n class=\"o-text-editor__button a-tooltip\"\n (click)=\"formatText(button.style)\"\n [attr.data-tooltip]=\"'@pry.component.textEditor.' + button.style | i18n\"\n data-tooltip-position=\"bottom\"\n [attr.aria-label]=\"'@pry.component.textEditor.' + button.style | i18n\"\n >\n <pry-icon [height]=\"16\" [width]=\"16\" [iconSvg]=\"button.icon\"></pry-icon>\n </button>\n }\n </div>\n </div>\n <div class=\"o-text-editor__content\">\n @if (tabView) {\n <div\n class=\"o-text-editor__tab-panel\"\n [id]=\"'text-editor-panel-' + activeTab\"\n [attr.aria-labelledby]=\"'text-editor-tab-' + getActiveTabIndex()\"\n >\n @if (activeTab === 'write') {\n <textarea\n class=\"o-text-editor__textarea a-form-field -full-width -remove-corner-radius\"\n cols=\"64\"\n rows=\"10\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [attr.aria-label]=\"'@pry.component.textEditor.textAreaLabel' | i18n\"\n (keydown.enter)=\"insertListStyleCharacter()\"\n #textarea\n >\n </textarea>\n } @else {\n <div class=\"o-text-editor__preview\" [innerHTML]=\"value | mdToHtml\"></div>\n }\n </div>\n } @else {\n <textarea\n class=\"o-text-editor__textarea a-form-field -half-width\"\n cols=\"64\"\n rows=\"10\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [attr.aria-label]=\"'@pry.component.textEditor.textAreaLabel' | i18n\"\n (keydown.enter)=\"insertListStyleCharacter()\"\n #textarea\n >\n </textarea>\n <div class=\"o-text-editor__preview\" [innerHTML]=\"value | mdToHtml\"></div>\n }\n </div>\n @if (tabView) {\n <div class=\"o-text-editor__tabs\">\n @for (tab of tabs; track tab; let i = $index) {\n <button\n type=\"button\"\n role=\"tab\"\n class=\"o-text-editor__tab\"\n [id]=\"'text-editor-tab-' + i\"\n [class.-active]=\"tab === activeTab\"\n [attr.aria-selected]=\"tab === activeTab\"\n [attr.aria-controls]=\"'text-editor-panel-' + activeTab\"\n (click)=\"activeTab = tab\"\n >\n {{ '@pry.component.textEditor.' + tab | i18n }}\n </button>\n }\n </div>\n }\n</div>\n","export const enTranslations = {\n '@pry': {\n component: {\n textEditor: {\n textAreaLabel: 'Text editor',\n preview: 'Preview',\n write: 'Write',\n h3: 'Title',\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n strikeThrough: 'Strikethrough',\n blockquote: 'Quote',\n list: 'List',\n orderedList: 'Ordered list',\n table: 'Table',\n details: 'Details',\n more: 'More'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n component: {\n textEditor: {\n textAreaLabel: 'Éditeur de texte',\n preview: 'Aperçu',\n write: 'Écrire',\n h3: 'Titre',\n bold: 'Gras',\n italic: 'Italique',\n underline: 'Souligné',\n strikeThrough: 'Barré',\n blockquote: 'Citation',\n list: 'Liste',\n orderedList: 'Liste ordonnée',\n table: 'Tableau',\n details: 'Détails',\n more: 'Voir plus'\n }\n }\n }\n};\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PryCoreModule, PryI18nModule, PryI18nService, PryIconModule } from '@provoly/dashboard';\nimport { PryTextEditorCssComponent } from './style/css.component';\nimport { PryTextEditorComponent } from './component/text-editor.component';\nimport { MdToHtmlPipe } from './mdToHtml.pipe';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\n\n@NgModule({\n declarations: [PryTextEditorComponent, PryTextEditorCssComponent, MdToHtmlPipe],\n exports: [PryTextEditorComponent, MdToHtmlPipe],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n PryCoreModule,\n PryIconModule,\n PryI18nModule,\n CdkOverlayOrigin,\n CdkConnectedOverlay\n ]\n})\nexport class PryTextEditorModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'textEditor', frTranslations);\n this.pryTranslateService.addLangObject('en', 'textEditor', enTranslations);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TextEditorService","i4.PryTextEditorCssComponent","i5.MdToHtmlPipe","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provoly-dashboard-components-text-editor.mjs","sources":["../../../../projects/provoly/dashboard/components/text-editor/style/css.component.ts","../../../../projects/provoly/dashboard/components/text-editor/service/text-editor.service.ts","../../../../projects/provoly/dashboard/components/text-editor/mdToHtml.pipe.ts","../../../../projects/provoly/dashboard/components/text-editor/component/text-editor.component.ts","../../../../projects/provoly/dashboard/components/text-editor/component/text-editor.component.html","../../../../projects/provoly/dashboard/components/text-editor/i18n/en.translations.ts","../../../../projects/provoly/dashboard/components/text-editor/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/components/text-editor/text-editor.module.ts","../../../../projects/provoly/dashboard/components/text-editor/provoly-dashboard-components-text-editor.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-text-editor-css',\n template: '',\n styleUrls: ['./_o-text-editor.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryTextEditorCssComponent {}\n","import { Injectable } from '@angular/core';\n\nexport const mdStyles = {\n h1: '# ',\n h2: '## ',\n h3: '### ',\n h4: '#### ',\n h5: '##### ',\n h6: '###### ',\n bold: '**',\n italic: '*',\n underline: '<u>',\n strikeThrough: '~~',\n code: '`',\n blockquote: '> ',\n list: '- ',\n orderedList: '\\\\d+\\\\. ',\n table: '| | |\\n| --- | --- |\\n| | |',\n details: '<details>\\n<summary></summary>\\n'\n};\n\nexport type MdStyle = keyof typeof mdStyles;\n\nexport const wrapperStyles: MdStyle[] = ['bold', 'italic', 'underline', 'strikeThrough', 'code'];\nexport const selfClosingStyles: MdStyle[] = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\nexport const listStyles: MdStyle[] = ['blockquote', 'list', 'orderedList'];\nexport const otherStyles: MdStyle[] = ['table', 'details'];\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TextEditorService {\n constructor() {}\n\n getClosingTag(style: MdStyle) {\n switch (style) {\n case 'underline':\n return '</u>';\n case 'details':\n return '\\n</details>';\n case 'bold':\n case 'italic':\n case 'strikeThrough':\n case 'code':\n return mdStyles[style];\n default:\n return '';\n }\n }\n\n addMarkdown(text: string, style: MdStyle) {\n if (wrapperStyles.includes(style)) {\n return this.toggleWrapperStyle(text, style);\n }\n if (selfClosingStyles.includes(style)) {\n return this.toggleSelfClosingStyle(text, style);\n }\n if (listStyles.includes(style)) {\n return this.toggleListStyle(text, style);\n }\n if (otherStyles.includes(style)) {\n return this.insertOtherStyle(text, style);\n }\n console.error(`Markdown style ${style} not supported`);\n return text;\n }\n\n toggleWrapperStyle(text: string, style: MdStyle) {\n if (text.startsWith(mdStyles[style])) {\n const startRegex = new RegExp(`^${this.escapeRegExp(mdStyles[style])}`);\n const endRegex = new RegExp(`${this.escapeRegExp(this.getClosingTag(style))}$`);\n return text.replace(startRegex, '').replace(endRegex, '');\n }\n return `${mdStyles[style]}${text}${this.getClosingTag(style)}`;\n }\n\n toggleSelfClosingStyle(text: string, style: MdStyle) {\n if (text.startsWith(mdStyles[style])) {\n const startRegex = new RegExp(`^${this.escapeRegExp(mdStyles[style])}`);\n return text.replace(startRegex, '');\n }\n return `${mdStyles[style]}${text}`;\n }\n\n toggleListStyle(text: string, style: MdStyle) {\n const listStyle = mdStyles[style];\n const lines = text.split('\\n');\n const startRegex = new RegExp(`^${style === 'orderedList' ? listStyle : this.escapeRegExp(listStyle)}`);\n const isListAlready = lines.every((line) => startRegex.test(line));\n const newLines = lines.map((line, index) => {\n if (isListAlready) {\n return line.replace(startRegex, '');\n }\n return `${style === 'orderedList' ? (index + 1).toString() + '. ' : listStyle}${line}`;\n });\n return newLines.join('\\n');\n }\n\n insertOtherStyle(text: string, style: MdStyle) {\n return `${mdStyles[style]}${text}${this.getClosingTag(style)}`;\n }\n\n escapeRegExp(text: string): string {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n isListLine(line: string) {\n return /^(\\d+\\.|- |\\* |\\> )/.test(line);\n }\n\n isOrderedListLine(text: string) {\n return /^\\d+\\./.test(text);\n }\n\n getListCharacter(previousLine: string) {\n if (this.isOrderedListLine(previousLine)) {\n const match = previousLine.match(/^\\d+/)?.[0];\n return (parseInt(match ?? '1') + 1).toString() + '. ';\n }\n if (/^- /.test(previousLine)) {\n return '- ';\n }\n if (/^\\* /.test(previousLine)) {\n return '* ';\n }\n if (/^\\> /.test(previousLine)) {\n return '> ';\n }\n return 'list';\n }\n\n updateOrderedListLines(text: string) {\n let order = 1;\n return text\n .split('\\n')\n .map((line) => {\n if (/^\\d+\\./.test(line)) {\n return line.replace(/^\\d+\\. /, `${order++}. `);\n }\n order = 1;\n return line;\n })\n .join('\\n');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { marked } from 'marked';\n\n@Pipe({\n name: 'mdToHtml'\n})\nexport class MdToHtmlPipe implements PipeTransform {\n transform(value?: string): string | Promise<string> {\n return marked.parse(value ?? '');\n }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { listStyles, MdStyle, TextEditorService } from '../service/text-editor.service';\nimport { distinctUntilChanged, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs';\n\n@Component({\n selector: 'pry-text-editor',\n templateUrl: 'text-editor.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: PryTextEditorComponent\n }\n ]\n})\nexport class PryTextEditorComponent implements ControlValueAccessor {\n value = '';\n onChange = (value: string) => {};\n onTouched = () => {};\n touched = false;\n disabled = false;\n valueChanged$ = new Subject<string>();\n\n @Input() tabView = true;\n tabs = ['write', 'preview'];\n activeTab = 'write';\n\n @ViewChild('textarea') textareaRef?: ElementRef<HTMLTextAreaElement>;\n buttons: { style: MdStyle; icon: string }[] = [\n { style: 'h3', icon: 'format_title' },\n { style: 'bold', icon: 'format_bold' },\n { style: 'italic', icon: 'format_italic' },\n { style: 'underline', icon: 'format_underlined' },\n { style: 'strikeThrough', icon: 'format_strikethrough' },\n { style: 'blockquote', icon: 'format_quote' },\n { style: 'list', icon: 'format_list_bulleted' },\n { style: 'orderedList', icon: 'format_list_numbered' },\n { style: 'table', icon: 'format_table' },\n { style: 'details', icon: 'format_details' }\n ];\n\n constructor(private service: TextEditorService) {\n this.valueChanged$.pipe(debounceTime(500), distinctUntilChanged()).subscribe((value) => {\n this.onChange(value);\n });\n }\n\n writeValue(value: string) {\n this.value = value;\n }\n\n registerOnChange(onChange: any) {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any) {\n this.onTouched = onTouched;\n }\n\n markAsTouched() {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean) {\n this.disabled = disabled;\n }\n\n onValueChange($event: string) {\n this.valueChanged$.next($event);\n }\n\n get textarea(): HTMLTextAreaElement {\n return this.textareaRef!.nativeElement;\n }\n\n getActiveTabIndex(): number {\n return this.tabs.findIndex((t) => t === this.activeTab);\n }\n\n formatText(style: MdStyle) {\n const start = listStyles.includes(style) ? this.getSelectionLineIndex() : this.textarea.selectionStart,\n selection = this.value.substring(start, this.textarea.selectionEnd);\n\n this.writeValue(this.getUpdatedValue(this.service.addMarkdown(selection, style), start));\n this.onChange(this.value);\n\n this.focusSelection(start, start + this.service.addMarkdown(selection, style).length);\n }\n\n getUpdatedValue(value: string, lineStart?: number) {\n const len = this.value.length,\n start = lineStart ?? this.textarea.selectionStart;\n return this.value.substring(0, start) + value + this.value.substring(this.textarea.selectionEnd, len);\n }\n\n getSelectionLineIndex() {\n const previousNewlineIndex = this.value.substring(0, this.textarea.selectionStart).lastIndexOf('\\n');\n return previousNewlineIndex ? previousNewlineIndex + 1 : 0;\n }\n\n focusSelection(start: number, end: number) {\n setTimeout(() => {\n this.textarea.focus();\n this.textarea.setSelectionRange(start, end);\n });\n }\n\n insertListStyleCharacter() {\n setTimeout(() => {\n const start = 0;\n const end = this.textarea.selectionStart;\n const text = this.value.substring(start, end);\n const previousLine = text?.split('\\n')[text?.split('\\n').length - 2];\n if (previousLine && this.service.isListLine(previousLine)) {\n const updatedValue = this.getUpdatedValue(this.service.getListCharacter(previousLine));\n this.writeValue(\n this.service.isOrderedListLine(previousLine)\n ? this.service.updateOrderedListLines(updatedValue)\n : updatedValue\n );\n this.onChange(this.value);\n }\n });\n }\n}\n","<pry-text-editor-css></pry-text-editor-css>\n<div class=\"o-text-editor\">\n <div class=\"o-text-editor__header\">\n <div class=\"o-text-editor__buttons\">\n @for (button of buttons; track button.style) {\n <button\n type=\"button\"\n class=\"o-text-editor__button a-tooltip\"\n (click)=\"formatText(button.style)\"\n [attr.data-tooltip]=\"'@pry.component.textEditor.' + button.style | i18n\"\n data-tooltip-position=\"bottom\"\n [attr.aria-label]=\"'@pry.component.textEditor.' + button.style | i18n\"\n >\n <pry-icon [height]=\"16\" [width]=\"16\" [iconSvg]=\"button.icon\"></pry-icon>\n </button>\n }\n </div>\n </div>\n <div class=\"o-text-editor__content\">\n @if (tabView) {\n <div\n class=\"o-text-editor__tab-panel\"\n [id]=\"'text-editor-panel-' + activeTab\"\n [attr.aria-labelledby]=\"'text-editor-tab-' + getActiveTabIndex()\"\n >\n @if (activeTab === 'write') {\n <textarea\n class=\"o-text-editor__textarea a-form-field -full-width -remove-corner-radius\"\n cols=\"64\"\n rows=\"10\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [attr.aria-label]=\"'@pry.component.textEditor.textAreaLabel' | i18n\"\n (keydown.enter)=\"insertListStyleCharacter()\"\n #textarea\n >\n </textarea>\n } @else {\n <div class=\"o-text-editor__preview\" [innerHTML]=\"value | mdToHtml\"></div>\n }\n </div>\n } @else {\n <textarea\n class=\"o-text-editor__textarea a-form-field -half-width\"\n cols=\"64\"\n rows=\"10\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [attr.aria-label]=\"'@pry.component.textEditor.textAreaLabel' | i18n\"\n (keydown.enter)=\"insertListStyleCharacter()\"\n #textarea\n >\n </textarea>\n <div class=\"o-text-editor__preview\" [innerHTML]=\"value | mdToHtml\"></div>\n }\n </div>\n @if (tabView) {\n <div class=\"o-text-editor__tabs\">\n @for (tab of tabs; track tab; let i = $index) {\n <button\n type=\"button\"\n role=\"tab\"\n class=\"o-text-editor__tab\"\n [id]=\"'text-editor-tab-' + i\"\n [class.-active]=\"tab === activeTab\"\n [attr.aria-selected]=\"tab === activeTab\"\n [attr.aria-controls]=\"'text-editor-panel-' + activeTab\"\n (click)=\"activeTab = tab\"\n >\n {{ '@pry.component.textEditor.' + tab | i18n }}\n </button>\n }\n </div>\n }\n</div>\n","export const enTranslations = {\n '@pry': {\n component: {\n textEditor: {\n textAreaLabel: 'Text editor',\n preview: 'Preview',\n write: 'Write',\n h3: 'Title',\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n strikeThrough: 'Strikethrough',\n blockquote: 'Quote',\n list: 'List',\n orderedList: 'Ordered list',\n table: 'Table',\n details: 'Details',\n more: 'More'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n component: {\n textEditor: {\n textAreaLabel: 'Éditeur de texte',\n preview: 'Aperçu',\n write: 'Écrire',\n h3: 'Titre',\n bold: 'Gras',\n italic: 'Italique',\n underline: 'Souligné',\n strikeThrough: 'Barré',\n blockquote: 'Citation',\n list: 'Liste',\n orderedList: 'Liste ordonnée',\n table: 'Tableau',\n details: 'Détails',\n more: 'Voir plus'\n }\n }\n }\n};\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PryCoreModule, PryI18nModule, PryI18nService, PryIconModule } from '@provoly/dashboard';\nimport { PryTextEditorCssComponent } from './style/css.component';\nimport { PryTextEditorComponent } from './component/text-editor.component';\nimport { MdToHtmlPipe } from './mdToHtml.pipe';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\n\n@NgModule({\n declarations: [PryTextEditorComponent, PryTextEditorCssComponent, MdToHtmlPipe],\n exports: [PryTextEditorComponent, MdToHtmlPipe],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n PryCoreModule,\n PryIconModule,\n PryI18nModule,\n CdkOverlayOrigin,\n CdkConnectedOverlay\n ]\n})\nexport class PryTextEditorModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'textEditor', frTranslations);\n this.pryTranslateService.addLangObject('en', 'textEditor', enTranslations);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TextEditorService","i4.PryTextEditorCssComponent","i5.MdToHtmlPipe","i1"],"mappings":"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"}
|
|
@@ -6,8 +6,7 @@ import * as i2 from '@angular/forms';
|
|
|
6
6
|
import { FormGroup, FormControl, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
7
7
|
import * as i2$1 from '@provoly/dashboard';
|
|
8
8
|
import { DateUtils, DataSourceActions, SubscriptionnerDirective, ViewMode, DashboardSelectors, DashboardActions, DataSourceSelectors, SearchActions, PryStatusModalComponent, PRY_ACCESS_TOKEN, ClassActions, FieldActions, ConfigActions, PryIconModule, PryCoreModule, PryOverlayModule, PryI18nModule, PryDashboardModule, PrySelectModule, PrySinceDateModule } from '@provoly/dashboard';
|
|
9
|
-
import { of, map } from 'rxjs';
|
|
10
|
-
import { tap } from 'rxjs/operators';
|
|
9
|
+
import { of, map, tap } from 'rxjs';
|
|
11
10
|
import * as i1 from '@ngrx/store';
|
|
12
11
|
import * as i3 from '@provoly/dashboard/components/text-editor';
|
|
13
12
|
import { PryTextEditorModule } from '@provoly/dashboard/components/text-editor';
|
|
@@ -150,7 +149,7 @@ class PryDatasetDetailComponent extends SubscriptionnerDirective {
|
|
|
150
149
|
excludeGeo: false,
|
|
151
150
|
from: 'PryDatasetDetailComponent.refresh()'
|
|
152
151
|
}));
|
|
153
|
-
this.store.dispatch(DataSourceActions.dataset.loadDataset());
|
|
152
|
+
this.store.dispatch(DataSourceActions.dataset.loadDataset({ force: true }));
|
|
154
153
|
this.store.dispatch(DataSourceActions.dataset.listVersionsByDatasetId({ id: this.dataset.id }));
|
|
155
154
|
}
|
|
156
155
|
switch(number) {
|
|
@@ -260,9 +259,9 @@ class PryDatasetComponent {
|
|
|
260
259
|
this.store = store;
|
|
261
260
|
this.selectedMode = ViewMode.CATALOG;
|
|
262
261
|
this.ViewMode = ViewMode;
|
|
263
|
-
this.store.dispatch(ClassActions.load());
|
|
264
|
-
this.store.dispatch(FieldActions.load());
|
|
265
|
-
this.store.dispatch(ConfigActions.loadCustomization());
|
|
262
|
+
this.store.dispatch(ClassActions.load({}));
|
|
263
|
+
this.store.dispatch(FieldActions.load({}));
|
|
264
|
+
this.store.dispatch(ConfigActions.loadCustomization({}));
|
|
266
265
|
}
|
|
267
266
|
consult(dataset) {
|
|
268
267
|
this.selectedDataset = dataset;
|