@provoly/dashboard 0.23.1 → 0.23.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.d.ts +10 -2
- package/admin/i18n/en.translations.d.ts +5 -0
- package/admin/i18n/fr.translations.d.ts +4 -0
- package/admin/store/admin.effects.d.ts +7 -1
- package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +26 -10
- package/esm2022/admin/i18n/en.translations.mjs +7 -2
- package/esm2022/admin/i18n/fr.translations.mjs +7 -3
- package/esm2022/admin/store/admin.effects.mjs +17 -5
- package/esm2022/lib/core/components/share/share.model.mjs +1 -1
- package/esm2022/lib/core/i18n/en.translations.mjs +7 -2
- package/esm2022/lib/core/i18n/fr.translations.mjs +7 -2
- package/esm2022/lib/core/store/data-source/data-source.actions.mjs +2 -1
- package/esm2022/lib/core/store/data-source/data-source.effects.mjs +2 -8
- package/esm2022/lib/core/store/data-source/data-source.reducer.mjs +4 -1
- package/esm2022/lib/core/store/data-source/data-source.selectors.mjs +3 -1
- package/esm2022/lib/core/store/data-source/data-source.service.mjs +1 -1
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +32 -9
- package/esm2022/lib/dashboard/store/manifest.service.mjs +14 -12
- package/fesm2022/provoly-dashboard-admin.mjs +49 -13
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +62 -28
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/components/share/share.model.d.ts +6 -0
- package/lib/core/i18n/en.translations.d.ts +5 -0
- package/lib/core/i18n/fr.translations.d.ts +5 -0
- package/lib/core/store/data-source/data-source.actions.d.ts +8 -3
- package/lib/core/store/data-source/data-source.effects.d.ts +3 -8
- package/lib/core/store/data-source/data-source.reducer.d.ts +2 -0
- package/lib/core/store/data-source/data-source.selectors.d.ts +1 -0
- package/lib/core/store/data-source/data-source.service.d.ts +2 -1
- package/lib/dashboard/store/dashboard.effects.d.ts +2 -1
- package/lib/dashboard/store/manifest.service.d.ts +2 -1
- package/package.json +36 -36
- package/styles/components/_o-widget.scss +1 -0
- package/styles-theme/components-theme/_a-btn.theme.scss +1 -1
- package/styles-theme/components-theme/_a-checkbox.theme.scss +5 -0
- package/styles-theme/components-theme/_a-form-field.theme.scss +5 -0
|
@@ -475,7 +475,12 @@ const enTranslations$1 = {
|
|
|
475
475
|
public: 'Public',
|
|
476
476
|
restricted: 'Restricted',
|
|
477
477
|
type: 'Visibility',
|
|
478
|
-
users: 'Authorized users'
|
|
478
|
+
users: 'Authorized users',
|
|
479
|
+
conflict: {
|
|
480
|
+
title: 'Warning',
|
|
481
|
+
main: 'The following data sources are not accessible to the selected user groups:',
|
|
482
|
+
unavailable: 'inaccessible aux groupes : '
|
|
483
|
+
}
|
|
479
484
|
},
|
|
480
485
|
homepage: {
|
|
481
486
|
menu: {
|
|
@@ -866,7 +871,12 @@ const frTranslations$1 = {
|
|
|
866
871
|
public: 'Public',
|
|
867
872
|
restricted: 'Restreint',
|
|
868
873
|
type: 'Visibilité',
|
|
869
|
-
users: 'Utilisateurs autorisés'
|
|
874
|
+
users: 'Utilisateurs autorisés',
|
|
875
|
+
conflict: {
|
|
876
|
+
title: 'Warning',
|
|
877
|
+
main: 'Attention, les sources de données suivantes ne seront pas visible de toutes les personnes accédant à la présentation : ',
|
|
878
|
+
unavailable: 'inaccessible aux groupes : '
|
|
879
|
+
}
|
|
870
880
|
},
|
|
871
881
|
homepage: {
|
|
872
882
|
menu: {
|
|
@@ -2339,6 +2349,7 @@ const DataSourceActions = {
|
|
|
2339
2349
|
create: createAction('[Dataset] create Dataset', props()),
|
|
2340
2350
|
created: createAction('[Dataset] Datadef is created call to admin', props()),
|
|
2341
2351
|
update: createAction('[Dataset] update Dataset', props()),
|
|
2352
|
+
setMissingGroups: createAction('[Dataset] set missing groups', props()),
|
|
2342
2353
|
updated: createAction('[Dataset] Dataset is updated call to admin', props()),
|
|
2343
2354
|
delete: createAction('[Dataset] delete Dataset', props()),
|
|
2344
2355
|
deleted: createAction('[Dataset] Dataset is deleted call to admin', props()),
|
|
@@ -2408,6 +2419,9 @@ const dataSourceReducer = createReducer(initialDataSourceState, on(DataSourceAct
|
|
|
2408
2419
|
...state,
|
|
2409
2420
|
datasets: action.datasets,
|
|
2410
2421
|
isLoading: false
|
|
2422
|
+
})), on(DataSourceActions.dataset.setMissingGroups, (state, { missingGroups }) => ({
|
|
2423
|
+
...state,
|
|
2424
|
+
missingGroups
|
|
2411
2425
|
})), on(DataSourceActions.dataset.unselectDataset, (state) => ({
|
|
2412
2426
|
...state,
|
|
2413
2427
|
selectedDataset: null
|
|
@@ -2547,6 +2561,7 @@ const getDataSourcesSorted = createSelector(getAllNamedQuery, datasets, (nqs, ds
|
|
|
2547
2561
|
const selectedDatasetId = createSelector(selectFeature, (state) => state?.selectedDataset?.id);
|
|
2548
2562
|
const selectedDataset = createSelector(selectFeature, (state) => state?.selectedDataset);
|
|
2549
2563
|
const selectedDatasetMetadata = createSelector(selectFeature, (state) => state?.selectedDataset?.metadata ?? []);
|
|
2564
|
+
const selectedDatasetMissingGroups = createSelector(selectFeature, (state) => state?.missingGroups);
|
|
2550
2565
|
const datasetVersions = createSelector(selectFeature, (state) => state?.datasetVersions ?? []);
|
|
2551
2566
|
const memoizeDatasetVersions = {};
|
|
2552
2567
|
const matchingDatasetVersions = (datasetId) => {
|
|
@@ -2575,6 +2590,7 @@ const DataSourceSelectors = {
|
|
|
2575
2590
|
getDataSourcesSorted,
|
|
2576
2591
|
selectedDataset,
|
|
2577
2592
|
selectedDatasetMetadata,
|
|
2593
|
+
selectedDatasetMissingGroups,
|
|
2578
2594
|
datasetVersions,
|
|
2579
2595
|
selectedDatasetId,
|
|
2580
2596
|
matchingDatasetVersions,
|
|
@@ -4391,13 +4407,7 @@ class DataSourceEffects {
|
|
|
4391
4407
|
DataSourceActions.dataset.unselectDataset(),
|
|
4392
4408
|
DataSourceActions.dataset.created({ path: props.route })
|
|
4393
4409
|
]))), catchError((error) => [DataSourceActions.dataset.failure({ error })])));
|
|
4394
|
-
this.
|
|
4395
|
-
.updateDataset(props.dataset)
|
|
4396
|
-
.pipe(mergeMap(() => [
|
|
4397
|
-
DataSourceActions.dataset.loadDataset(),
|
|
4398
|
-
DataSourceActions.dataset.unselectDataset(),
|
|
4399
|
-
DataSourceActions.dataset.updated({ path: props.route })
|
|
4400
|
-
]))), catchError((error) => [DataSourceActions.dataset.failure({ error })])));
|
|
4410
|
+
this.unsetMissingGroupsOnDatasetSelection$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.dataset.selectDataset), map(() => DataSourceActions.dataset.setMissingGroups({ missingGroups: undefined }))));
|
|
4401
4411
|
this.deleteDataset$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.dataset.delete), switchMap((action) => this.dataSourceService.deleteDataset(action.name).pipe(mergeMap(() => [
|
|
4402
4412
|
DataSourceActions.dataset.loadDataset(),
|
|
4403
4413
|
DataSourceActions.dataset.unselectDataset(),
|
|
@@ -10582,17 +10592,19 @@ class ManifestService {
|
|
|
10582
10592
|
.pipe(mergeMap((url) => this.httpClient.get(encodeURI(`${url}/users/me/dashboards/id/${id}/manifest`))));
|
|
10583
10593
|
}
|
|
10584
10594
|
save(name, manifest, id, description, image, cover, metadata, groups) {
|
|
10585
|
-
return this.store.select(ConfigSelectors.refUrl).pipe(mergeMap((url) =>
|
|
10586
|
-
|
|
10587
|
-
|
|
10588
|
-
|
|
10589
|
-
|
|
10590
|
-
|
|
10591
|
-
|
|
10592
|
-
|
|
10593
|
-
|
|
10594
|
-
|
|
10595
|
-
|
|
10595
|
+
return this.store.select(ConfigSelectors.refUrl).pipe(mergeMap((url) => {
|
|
10596
|
+
return this.httpClient.post(encodeURI(`${url}/users/me/dashboards`), {
|
|
10597
|
+
id,
|
|
10598
|
+
name,
|
|
10599
|
+
description,
|
|
10600
|
+
manifest,
|
|
10601
|
+
image,
|
|
10602
|
+
cover,
|
|
10603
|
+
metadata,
|
|
10604
|
+
datasource: ManifestUtils.getDatasourcesUsedByManifest(manifest).map((ds) => ds.datasetId),
|
|
10605
|
+
groups
|
|
10606
|
+
});
|
|
10607
|
+
}));
|
|
10596
10608
|
}
|
|
10597
10609
|
delete(id) {
|
|
10598
10610
|
return this.store
|
|
@@ -10756,7 +10768,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
10756
10768
|
}], ctorParameters: () => [{ type: i1$2.HttpClient }] });
|
|
10757
10769
|
|
|
10758
10770
|
class DashboardEffects {
|
|
10759
|
-
constructor(dashboardInitService, actions$, store, manifestService, itemService, titleService, translateService, snackBar, router, refreshService, toolboxManifestService, busService, searchService, pryDialog, wmsService, widgetFactoryService) {
|
|
10771
|
+
constructor(dashboardInitService, actions$, store, manifestService, itemService, titleService, translateService, snackBar, router, refreshService, toolboxManifestService, busService, searchService, pryDialog, wmsService, widgetFactoryService, i18nService) {
|
|
10760
10772
|
this.dashboardInitService = dashboardInitService;
|
|
10761
10773
|
this.actions$ = actions$;
|
|
10762
10774
|
this.store = store;
|
|
@@ -10773,6 +10785,7 @@ class DashboardEffects {
|
|
|
10773
10785
|
this.pryDialog = pryDialog;
|
|
10774
10786
|
this.wmsService = wmsService;
|
|
10775
10787
|
this.widgetFactoryService = widgetFactoryService;
|
|
10788
|
+
this.i18nService = i18nService;
|
|
10776
10789
|
this.join$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.join), withLatestFrom(this.store.select(DashboardSelectors.rank), this.store.select(DashboardSelectors.tenants), this.store.select(DashboardSelectors.globalManifest), this.store.select(DashboardSelectors.resultSets), this.store.select(DashboardSelectors.selectedItemIds), this.store.select(DashboardSelectors.presentation), this.store.select(DashboardSelectors.displayOptions)), filter$1(([action, rank, tenants, manifest, resultSets, display]) => rank === 0), map$1(([action, rank, tenants, manifest, resultSets, selectedIds, presentation, display]) => DashboardActions.updateManifestAfterTenantJoin({
|
|
10777
10790
|
tenants, // we already have added tenant in the reduce of the "join" action
|
|
10778
10791
|
manifest: {
|
|
@@ -10897,12 +10910,33 @@ class DashboardEffects {
|
|
|
10897
10910
|
}
|
|
10898
10911
|
});
|
|
10899
10912
|
})), { dispatch: false });
|
|
10900
|
-
this.saveManifest$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.saveManifest), withLatestFrom(this.store.select(DashboardSelectors.globalManifest)), mergeMap$1(([action, currentManifest]) => this.manifestService
|
|
10913
|
+
this.saveManifest$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.saveManifest), withLatestFrom(this.store.select(DashboardSelectors.globalManifest)), withLatestFrom(this.store.select(DataSourceSelectors.datasets)), mergeMap$1(([[action, currentManifest], datasets]) => this.manifestService
|
|
10901
10914
|
.save(action.name, action.manifest ?? currentManifest, action.id, action.description, action.image, action.cover, action.metadata, action.groups)
|
|
10902
|
-
.pipe(tap(() =>
|
|
10903
|
-
|
|
10904
|
-
|
|
10905
|
-
|
|
10915
|
+
.pipe(tap((response) => {
|
|
10916
|
+
this.snackBar.open({
|
|
10917
|
+
message: this.translateService.instant('@pry.toolbox.manifest.saved', { viewId: action.name }),
|
|
10918
|
+
type: 'success'
|
|
10919
|
+
});
|
|
10920
|
+
if (response && 'missingGroupsByEntity' in response) {
|
|
10921
|
+
const data = {
|
|
10922
|
+
title: '@pry.share.conflict.title',
|
|
10923
|
+
message: this.i18nService.instant('@pry.share.conflict.main') +
|
|
10924
|
+
'\r\n' +
|
|
10925
|
+
Object.keys(response.missingGroupsByEntity)
|
|
10926
|
+
.map((entity) => (datasets.find((ds) => ds.id === entity)?.name ?? entity) +
|
|
10927
|
+
' : ' +
|
|
10928
|
+
response.missingGroupsByEntity[entity].join(', '))
|
|
10929
|
+
.join('\r\n'),
|
|
10930
|
+
actions: [
|
|
10931
|
+
{
|
|
10932
|
+
id: 0,
|
|
10933
|
+
label: '@pry.toolbox.close'
|
|
10934
|
+
}
|
|
10935
|
+
]
|
|
10936
|
+
};
|
|
10937
|
+
this.pryDialog.open(PryDialogConfirmComponent, { data });
|
|
10938
|
+
}
|
|
10939
|
+
}), map$1(() => action.manifest ?? currentManifest), catchError((error) => {
|
|
10906
10940
|
this.snackBar.open({
|
|
10907
10941
|
message: this.translateService.instant('@pry.toolbox.manifest.saveErrorCode.' + (error.error?.code ?? 'UNKNOWN'), {
|
|
10908
10942
|
name: action.name
|
|
@@ -11115,12 +11149,12 @@ class DashboardEffects {
|
|
|
11115
11149
|
dashboardInitService.init();
|
|
11116
11150
|
refreshService.start();
|
|
11117
11151
|
}
|
|
11118
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DashboardEffects, deps: [{ token: DashboardInitService }, { token: i1$3.Actions }, { token: i1.Store }, { token: ManifestService }, { token: ItemService }, { token: PryTitleService }, { token: PryI18nService }, { token: PrySnackbarService }, { token: i3.Router }, { token: RefreshService }, { token: ToolboxManifestService }, { token: BusService }, { token: SearchService }, { token: PryDialogService }, { token: WmsService }, { token: WidgetFactoryService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
11152
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DashboardEffects, deps: [{ token: DashboardInitService }, { token: i1$3.Actions }, { token: i1.Store }, { token: ManifestService }, { token: ItemService }, { token: PryTitleService }, { token: PryI18nService }, { token: PrySnackbarService }, { token: i3.Router }, { token: RefreshService }, { token: ToolboxManifestService }, { token: BusService }, { token: SearchService }, { token: PryDialogService }, { token: WmsService }, { token: WidgetFactoryService }, { token: PryI18nService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
11119
11153
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DashboardEffects }); }
|
|
11120
11154
|
}
|
|
11121
11155
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DashboardEffects, decorators: [{
|
|
11122
11156
|
type: Injectable
|
|
11123
|
-
}], ctorParameters: () => [{ type: DashboardInitService }, { type: i1$3.Actions }, { type: i1.Store }, { type: ManifestService }, { type: ItemService }, { type: PryTitleService }, { type: PryI18nService }, { type: PrySnackbarService }, { type: i3.Router }, { type: RefreshService }, { type: ToolboxManifestService }, { type: BusService }, { type: SearchService }, { type: PryDialogService }, { type: WmsService }, { type: WidgetFactoryService }] });
|
|
11157
|
+
}], ctorParameters: () => [{ type: DashboardInitService }, { type: i1$3.Actions }, { type: i1.Store }, { type: ManifestService }, { type: ItemService }, { type: PryTitleService }, { type: PryI18nService }, { type: PrySnackbarService }, { type: i3.Router }, { type: RefreshService }, { type: ToolboxManifestService }, { type: BusService }, { type: SearchService }, { type: PryDialogService }, { type: WmsService }, { type: WidgetFactoryService }, { type: PryI18nService }] });
|
|
11124
11158
|
|
|
11125
11159
|
const dashboardFeatureKey = '@pry/dashboard';
|
|
11126
11160
|
const dashboardInitialState = {
|