@provoly/dashboard 0.14.7 → 0.14.9
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-metadata-user/admin-metadata-user.component.d.ts +1 -1
- package/admin/components/admin-metadata-user/store/admin-metadata-user.action.d.ts +0 -11
- package/admin/components/admin-metadata-user/store/admin-metadata-user.effects.d.ts +2 -7
- package/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.d.ts +1 -3
- package/admin/components/admin-metadata-user/store/admin-metadata-user.selector.d.ts +1 -4
- package/admin/components/admin-user/store/admin-user.action.d.ts +1 -52
- package/admin/components/admin-user/store/admin-user.effects.d.ts +0 -28
- package/admin/components/admin-user/store/admin-user.reducer.d.ts +1 -2
- package/admin/components/admin-user/store/admin-user.selector.d.ts +0 -1
- package/admin/store/admin.service.d.ts +1 -4
- package/components/metadata-editor/metadata-editor.component.d.ts +6 -4
- package/components/metadata-editor/metadata-editor.module.d.ts +7 -6
- package/components/metadata-editor/public-api.d.ts +1 -0
- package/components/metadata-editor/store/metadata.action.d.ts +63 -1
- package/components/metadata-editor/store/metadata.effects.d.ts +33 -0
- package/components/metadata-editor/store/metadata.reducer.d.ts +3 -1
- package/components/metadata-editor/store/metadata.selector.d.ts +2 -0
- package/components/metadata-editor/store/metadata.service.d.ts +5 -1
- package/components/metadata-editor/style/_o-metadata-editor.scss +15 -0
- package/components/metadata-editor/style/css.component.d.ts +5 -0
- package/dataset/components/dataset-detail/dataset-detail.component.d.ts +1 -0
- package/dataset/i18n/en.translations.d.ts +1 -0
- package/dataset/i18n/fr.translations.d.ts +1 -0
- package/dataset/style/_o-pry-dataset-detail.scss +7 -6
- package/dataset/style/_o-pry-dataset.scss +6 -3
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +2 -3
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +2 -3
- package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +2 -3
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +1 -1
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +4 -4
- package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +3 -3
- package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +2 -3
- package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +3 -5
- package/esm2022/admin/components/admin-metadata-user/admin-metadata-user.component.mjs +9 -10
- package/esm2022/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.mjs +7 -3
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.action.mjs +1 -4
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.mjs +8 -28
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.selector.mjs +2 -6
- package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +9 -10
- package/esm2022/admin/components/admin-user/admin-user.component.mjs +1 -1
- package/esm2022/admin/components/admin-user/store/admin-user.action.mjs +2 -11
- package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +1 -19
- package/esm2022/admin/components/admin-user/store/admin-user.reducer.mjs +2 -7
- package/esm2022/admin/components/admin-user/store/admin-user.selector.mjs +1 -3
- package/esm2022/admin/store/admin.effects.mjs +1 -1
- package/esm2022/admin/store/admin.service.mjs +1 -16
- package/esm2022/components/metadata-editor/metadata-editor.component.mjs +37 -21
- package/esm2022/components/metadata-editor/metadata-editor.module.mjs +5 -4
- package/esm2022/components/metadata-editor/public-api.mjs +2 -1
- package/esm2022/components/metadata-editor/store/metadata.action.mjs +14 -2
- package/esm2022/components/metadata-editor/store/metadata.effects.mjs +21 -1
- package/esm2022/components/metadata-editor/store/metadata.reducer.mjs +18 -2
- package/esm2022/components/metadata-editor/store/metadata.selector.mjs +6 -2
- package/esm2022/components/metadata-editor/store/metadata.service.mjs +21 -1
- package/esm2022/components/metadata-editor/style/css.component.mjs +11 -0
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +6 -3
- package/esm2022/dataset/i18n/en.translations.mjs +2 -1
- package/esm2022/dataset/i18n/fr.translations.mjs +3 -2
- package/esm2022/dataset/style/css.component.mjs +2 -2
- package/esm2022/import/i18n/en.translations.mjs +4 -1
- package/esm2022/import/i18n/fr.translations.mjs +4 -1
- package/esm2022/import/store/import.effects.mjs +8 -1
- package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +10 -6
- package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +1 -1
- package/esm2022/lib/core/i18n/en.translations.mjs +3 -2
- package/esm2022/lib/core/i18n/fr.translations.mjs +3 -2
- package/esm2022/lib/core/model/display-options.interface.mjs +1 -1
- package/esm2022/lib/core/model/manifest.interface.mjs +1 -1
- package/esm2022/lib/core/model/public-api.mjs +2 -1
- package/esm2022/lib/core/model/widget-vega-manifest.interface.mjs +2 -0
- package/esm2022/lib/core/store/config/config.effects.mjs +3 -3
- package/esm2022/lib/core/store/data-source/data-source.effects.mjs +4 -4
- package/esm2022/lib/core/store/relation-types/relation-types.effects.mjs +3 -2
- package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +1 -1
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +11 -8
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +2 -6
- package/esm2022/lib/dashboard/store/dashboard.actions.mjs +2 -2
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +4 -3
- package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +4 -2
- package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +3 -4
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +3 -3
- package/esm2022/restitution/components/restitution/restitution.component.mjs +1 -1
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +4 -4
- package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +3 -1
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +16 -10
- package/esm2022/widgets/widget-map/utils/cql-utils.class.mjs +5 -5
- package/esm2022/widgets/widget-map/utils/xml-utils.class.mjs +23 -1
- package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +139 -0
- package/esm2022/widgets/widget-vega/i18n/en.translations.mjs +11 -0
- package/esm2022/widgets/widget-vega/i18n/fr.translations.mjs +11 -0
- package/esm2022/widgets/widget-vega/provoly-dashboard-widgets-widget-vega.mjs +5 -0
- package/esm2022/widgets/widget-vega/public-api.mjs +3 -0
- package/esm2022/widgets/widget-vega/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-vega/widget-vega.module.mjs +68 -0
- package/fesm2022/provoly-dashboard-admin.mjs +122 -197
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +124 -28
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +10 -5
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-import.mjs +13 -0
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +2 -2
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +3 -3
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +43 -14
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +235 -0
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -0
- package/fesm2022/provoly-dashboard.mjs +40 -31
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/import/i18n/en.translations.d.ts +3 -0
- package/import/i18n/fr.translations.d.ts +3 -0
- package/lib/core/i18n/en.translations.d.ts +1 -0
- package/lib/core/i18n/fr.translations.d.ts +1 -0
- package/lib/core/model/display-options.interface.d.ts +1 -1
- package/lib/core/model/manifest.interface.d.ts +2 -1
- package/lib/core/model/public-api.d.ts +1 -0
- package/lib/core/model/widget-vega-manifest.interface.d.ts +5 -0
- package/lib/dashboard/components/dashboard.component.d.ts +4 -4
- package/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.d.ts +1 -3
- package/lib/dashboard/store/dashboard.actions.d.ts +6 -4
- package/lib/dashboard/store/dashboard.effects.d.ts +2 -0
- package/lib/dashboard/store/dashboard.selectors.d.ts +1 -1
- package/package.json +31 -25
- package/schematics/ng-add/index.js +7 -1
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-add/schema.json +2 -1
- package/styles/components/_o-tabs.scss +1 -7
- package/widgets/widget-map/component/widget-map.component.d.ts +3 -1
- package/widgets/widget-map/utils/xml-utils.class.d.ts +2 -0
- package/widgets/widget-vega/component/widget-vega.component.d.ts +37 -0
- package/widgets/widget-vega/i18n/en.translations.d.ts +10 -0
- package/widgets/widget-vega/i18n/fr.translations.d.ts +10 -0
- package/widgets/widget-vega/index.d.ts +5 -0
- package/widgets/widget-vega/public-api.d.ts +2 -0
- package/widgets/widget-vega/style/_o-widget-vega.scss +6 -0
- package/widgets/widget-vega/style/css.component.d.ts +5 -0
- package/widgets/widget-vega/widget-vega.module.d.ts +19 -0
|
@@ -5,7 +5,7 @@ import { CommonModule, AsyncPipe } from '@angular/common';
|
|
|
5
5
|
import * as i1$2 from '@angular/common/http';
|
|
6
6
|
import { HttpHeaders, HttpParams, HttpClientModule } from '@angular/common/http';
|
|
7
7
|
import * as i0 from '@angular/core';
|
|
8
|
-
import { InjectionToken, Injectable, Directive, Optional, Inject, Input, Component, Pipe, ChangeDetectionStrategy, HostBinding, SecurityContext, NgModule, EventEmitter, Output, TemplateRef, ViewChild, Injector, HostListener, ContentChildren, forwardRef, ViewContainerRef, createNgModule } from '@angular/core';
|
|
8
|
+
import { InjectionToken, Injectable, Directive, Optional, Inject, Input, Component, Pipe, ChangeDetectionStrategy, HostBinding, SecurityContext, NgModule, EventEmitter, Output, TemplateRef, ViewChild, Injector, HostListener, ContentChildren, forwardRef, ViewContainerRef, ViewChildren, createNgModule } from '@angular/core';
|
|
9
9
|
import * as i2 from '@angular/router';
|
|
10
10
|
import { NavigationEnd, RouterModule } from '@angular/router';
|
|
11
11
|
import * as i1$3 from '@ngrx/effects';
|
|
@@ -398,7 +398,8 @@ const enTranslations$1 = {
|
|
|
398
398
|
next: 'Next',
|
|
399
399
|
back: 'Back',
|
|
400
400
|
filterByType: 'Filter by type',
|
|
401
|
-
editMetadata: 'Edit metadata'
|
|
401
|
+
editMetadata: 'Edit metadata',
|
|
402
|
+
addMetadata: 'Add metadata'
|
|
402
403
|
},
|
|
403
404
|
snack: {
|
|
404
405
|
default: 'Vega encountered an error using your data and settings.',
|
|
@@ -729,7 +730,8 @@ const frTranslations$1 = {
|
|
|
729
730
|
next: 'Suivant',
|
|
730
731
|
back: 'Retour',
|
|
731
732
|
filterByType: 'Filtrer par type',
|
|
732
|
-
editMetadata: 'Modifier la métadonnée'
|
|
733
|
+
editMetadata: 'Modifier la métadonnée',
|
|
734
|
+
addMetadata: 'Ajouter la métadonnée'
|
|
733
735
|
},
|
|
734
736
|
snack: {
|
|
735
737
|
default: 'Vega a rencontré une erreur en utilisant vos données et paramétrage.',
|
|
@@ -1313,7 +1315,7 @@ const DashboardActions = {
|
|
|
1313
1315
|
resetWmsFeatures: createAction('[Widget map] Reset Wms layer features'),
|
|
1314
1316
|
getWmsFeatures: createAction('[Widget map] Get Wms layer features', props()),
|
|
1315
1317
|
addWmsFeatures: createAction('[Widget map] Set Wms layer features', props()),
|
|
1316
|
-
updateDisplayOptions: createAction('[Dashboard/Display] Update displayed dashboard management features', props()),
|
|
1318
|
+
updateDisplayOptions: createAction('[Dashboard/Display] (bus) Update displayed dashboard management features', props()),
|
|
1317
1319
|
getCapability: createAction('[Widget map] Get Wms capability', props()),
|
|
1318
1320
|
updateCapability: createAction('[Widget map] Store Wms capability', props()),
|
|
1319
1321
|
addManifestMetadata: createAction('[Dashboard] Add manifest metadata', props()),
|
|
@@ -2121,6 +2123,7 @@ const enTranslations = {
|
|
|
2121
2123
|
export: 'Export',
|
|
2122
2124
|
api: 'API',
|
|
2123
2125
|
returnToList: 'Back to catalog',
|
|
2126
|
+
refresh: 'Refresh',
|
|
2124
2127
|
version: {
|
|
2125
2128
|
title: 'Title',
|
|
2126
2129
|
INDEXING: 'Loading',
|
|
@@ -2188,6 +2191,7 @@ const frTranslations = {
|
|
|
2188
2191
|
export: 'Export',
|
|
2189
2192
|
api: 'API',
|
|
2190
2193
|
returnToList: 'Retour au catalogue',
|
|
2194
|
+
refresh: 'Actualiser',
|
|
2191
2195
|
version: {
|
|
2192
2196
|
title: 'Intitulé',
|
|
2193
2197
|
INDEXING: 'En chargement',
|
|
@@ -2221,7 +2225,7 @@ const frTranslations = {
|
|
|
2221
2225
|
WARNING: 'Warning'
|
|
2222
2226
|
},
|
|
2223
2227
|
code: {
|
|
2224
|
-
UNRECOGNIZED: 'Attribut {{name}} non reconnu',
|
|
2228
|
+
UNRECOGNIZED: 'Attribut{{plural}} {{name}} non reconnu{{plural}}',
|
|
2225
2229
|
FORMAT: "Format d'attribut {{name}} incorrect",
|
|
2226
2230
|
ELASTIC_SEARCH: "Erreur d'insertion pour l'élément {{recordId}}",
|
|
2227
2231
|
NO_VALUES: 'Pas de valeur pour la ligne {{recordId}}',
|
|
@@ -2508,9 +2512,13 @@ class PryModalStatusComponent {
|
|
|
2508
2512
|
this._version = version;
|
|
2509
2513
|
if (!!version) {
|
|
2510
2514
|
this.store.dispatch(DataSourceActions.dataset.previews.getById({ id: version.id }));
|
|
2511
|
-
this.datasetPreviews$ = this.store
|
|
2512
|
-
.
|
|
2513
|
-
.
|
|
2515
|
+
this.datasetPreviews$ = this.store.select(DataSourceSelectors.datasetPreviews).pipe(map((previews) => previews
|
|
2516
|
+
.map((preview) => preview.messages)
|
|
2517
|
+
.flat()
|
|
2518
|
+
.map((preview) => ({
|
|
2519
|
+
...preview,
|
|
2520
|
+
name: preview.name.split(',').join(', ')
|
|
2521
|
+
}))));
|
|
2514
2522
|
this.messageCount$ = this.store.select(DataSourceSelectors.datasetPreviews).pipe(map((previews) => {
|
|
2515
2523
|
return previews.map((preview) => preview.count).reduce((p, c) => p + c, 0);
|
|
2516
2524
|
}));
|
|
@@ -2524,11 +2532,11 @@ class PryModalStatusComponent {
|
|
|
2524
2532
|
this.gotoConsult.emit(this.version);
|
|
2525
2533
|
}
|
|
2526
2534
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryModalStatusComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2527
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryModalStatusComponent, selector: "pry-modal-status", inputs: { version: "version" }, outputs: { gotoConsult: "gotoConsult" }, ngImport: i0, template: "<div class=\"o-modal-wrapper -extra-large\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{\n '@pry.dataset.error.modalTitle.' +\n (_version?.state !== 'ERROR' && _version?.hasWarnings ? 'WARNING' : 'ERROR') | i18n\n }}\n ({{ messageCount$ | async }})\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"goBack()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <table class=\"a-table\">\n <thead>\n <tr>\n <th>{{ '@pry.dataset.error.type' | i18n }}</th>\n <th>{{ '@pry.dataset.error.elements' | i18n }}</th>\n <th>{{ '@pry.dataset.error.message' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let preview of datasetPreviews$ | async | slice : 0 : 5\">\n <td>\n {{ '@pry.dataset.error.level.' + preview.level | i18n }}\n </td>\n <td>\n {{ preview.recordId }}\n </td>\n <td>\n {{\n '@pry.dataset.error.code.' + preview.extractMessageCode\n | i18n : { name: preview.name, recordId: preview.recordId }\n }}\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n", dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.SlicePipe, name: "slice" }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
|
|
2535
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryModalStatusComponent, selector: "pry-modal-status", inputs: { version: "version" }, outputs: { gotoConsult: "gotoConsult" }, ngImport: i0, template: "<div class=\"o-modal-wrapper -extra-large\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{\n '@pry.dataset.error.modalTitle.' +\n (_version?.state !== 'ERROR' && _version?.hasWarnings ? 'WARNING' : 'ERROR') | i18n\n }}\n ({{ messageCount$ | async }})\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"goBack()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <table class=\"a-table\">\n <thead>\n <tr>\n <th>{{ '@pry.dataset.error.type' | i18n }}</th>\n <th>{{ '@pry.dataset.error.elements' | i18n }}</th>\n <th>{{ '@pry.dataset.error.message' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let preview of datasetPreviews$ | async | slice : 0 : 5\">\n <td>\n {{ '@pry.dataset.error.level.' + preview.level | i18n }}\n </td>\n <td>\n {{ preview.recordId }}\n </td>\n <td>\n {{\n '@pry.dataset.error.code.' + preview.extractMessageCode\n | i18n : { plural: preview.name.includes(',') ? 's' : '', name: preview.name, recordId: preview.recordId }\n }}\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n", dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.SlicePipe, name: "slice" }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
|
|
2528
2536
|
}
|
|
2529
2537
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryModalStatusComponent, decorators: [{
|
|
2530
2538
|
type: Component,
|
|
2531
|
-
args: [{ selector: 'pry-modal-status', template: "<div class=\"o-modal-wrapper -extra-large\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{\n '@pry.dataset.error.modalTitle.' +\n (_version?.state !== 'ERROR' && _version?.hasWarnings ? 'WARNING' : 'ERROR') | i18n\n }}\n ({{ messageCount$ | async }})\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"goBack()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <table class=\"a-table\">\n <thead>\n <tr>\n <th>{{ '@pry.dataset.error.type' | i18n }}</th>\n <th>{{ '@pry.dataset.error.elements' | i18n }}</th>\n <th>{{ '@pry.dataset.error.message' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let preview of datasetPreviews$ | async | slice : 0 : 5\">\n <td>\n {{ '@pry.dataset.error.level.' + preview.level | i18n }}\n </td>\n <td>\n {{ preview.recordId }}\n </td>\n <td>\n {{\n '@pry.dataset.error.code.' + preview.extractMessageCode\n | i18n : { name: preview.name, recordId: preview.recordId }\n }}\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n" }]
|
|
2539
|
+
args: [{ selector: 'pry-modal-status', template: "<div class=\"o-modal-wrapper -extra-large\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{\n '@pry.dataset.error.modalTitle.' +\n (_version?.state !== 'ERROR' && _version?.hasWarnings ? 'WARNING' : 'ERROR') | i18n\n }}\n ({{ messageCount$ | async }})\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"goBack()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <table class=\"a-table\">\n <thead>\n <tr>\n <th>{{ '@pry.dataset.error.type' | i18n }}</th>\n <th>{{ '@pry.dataset.error.elements' | i18n }}</th>\n <th>{{ '@pry.dataset.error.message' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let preview of datasetPreviews$ | async | slice : 0 : 5\">\n <td>\n {{ '@pry.dataset.error.level.' + preview.level | i18n }}\n </td>\n <td>\n {{ preview.recordId }}\n </td>\n <td>\n {{\n '@pry.dataset.error.code.' + preview.extractMessageCode\n | i18n : { plural: preview.name.includes(',') ? 's' : '', name: preview.name, recordId: preview.recordId }\n }}\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n" }]
|
|
2532
2540
|
}], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { gotoConsult: [{
|
|
2533
2541
|
type: Output
|
|
2534
2542
|
}], version: [{
|
|
@@ -3652,7 +3660,7 @@ class ConfigEffects {
|
|
|
3652
3660
|
this.saveTemplates$ = createEffect(() => this.actions$.pipe(ofType(ConfigActions.saveTooltip), mergeMap$1((action) => this.configService
|
|
3653
3661
|
.saveDefinitions(action.definitions, TOOLTIPS_DOMAIN)
|
|
3654
3662
|
.pipe(map$1(() => ConfigActions.loadCustomization())))));
|
|
3655
|
-
this.getCustomization$ = createEffect(() => this.actions$.pipe(ofType(ConfigActions.loadCustomization), mergeMap$1((action) => this.configService.getAllClassParams().pipe(mergeMap$1((allDefinitions) => {
|
|
3663
|
+
this.getCustomization$ = createEffect(() => this.actions$.pipe(ofType(ConfigActions.loadCustomization), debounceTime(100), mergeMap$1((action) => this.configService.getAllClassParams().pipe(mergeMap$1((allDefinitions) => {
|
|
3656
3664
|
const icons = allDefinitions
|
|
3657
3665
|
.filter((def) => def.domain === SYMBOL_DOMAIN)
|
|
3658
3666
|
.reduce((p, c) => ({
|
|
@@ -3867,7 +3875,7 @@ const namedQueriesUses = createSelector(globalManifest, (manifest) => manifest.w
|
|
|
3867
3875
|
.reduce((p, c) => [...p, ...c], [])
|
|
3868
3876
|
.reduce((p, c) => ({ ...p, [c.rsName ?? '']: [...(p[c.rsName ?? ''] || []), { ...c }] }), {}));
|
|
3869
3877
|
const presentation = createSelector(feature$4, (state) => state?.presentation);
|
|
3870
|
-
const savePresentationActive = createSelector(presentation, globalManifest, (state, global) => !!state.current && state.current.owner &&
|
|
3878
|
+
const savePresentationActive = createSelector(presentation, globalManifest, (state, global) => !!state.current && state.current.owner && !equal(global, state.initial));
|
|
3871
3879
|
const filters = createSelector(feature$4, (state) => state?.manifests.manifest.filters ?? {});
|
|
3872
3880
|
const datasourceFilters = createSelector(feature$4, (state) => state?.manifests.manifest.filters
|
|
3873
3881
|
? state?.manifests.manifest.filters.reduce((obj, filter) => (filter.attributes.forEach((attribute) => (obj[attribute.datasource] || (obj[attribute.datasource] = [])).push({
|
|
@@ -3911,8 +3919,8 @@ const DashboardSelectors = {
|
|
|
3911
3919
|
loading,
|
|
3912
3920
|
quickOrder,
|
|
3913
3921
|
presentation,
|
|
3914
|
-
savePresentationActive,
|
|
3915
3922
|
filters,
|
|
3923
|
+
savePresentationActive,
|
|
3916
3924
|
datasourceFilters,
|
|
3917
3925
|
wmsFeatures,
|
|
3918
3926
|
displayOptions,
|
|
@@ -4166,7 +4174,7 @@ class DataSourceEffects {
|
|
|
4166
4174
|
actions.push(DataSourceActions.namedQuery.load());
|
|
4167
4175
|
return actions;
|
|
4168
4176
|
}), catchError((error) => [DataSourceActions.namedQuery.failure({ error })])));
|
|
4169
|
-
this.getNamedQuery$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.namedQuery.load), switchMap(() => this.dataSourceService.get()), map((namedQueryList) => DataSourceActions.namedQuery.loaded({ list: namedQueryList })), catchError((error) => [DataSourceActions.namedQuery.failure({ error })])));
|
|
4177
|
+
this.getNamedQuery$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.namedQuery.load), debounceTime(100), switchMap(() => this.dataSourceService.get()), map((namedQueryList) => DataSourceActions.namedQuery.loaded({ list: namedQueryList })), catchError((error) => [DataSourceActions.namedQuery.failure({ error })])));
|
|
4170
4178
|
this.loaded$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.namedQuery.loaded), map((action) => {
|
|
4171
4179
|
return DashboardActions.setAvailableNamedQueries({ names: action.list.map((nq) => nq.id) });
|
|
4172
4180
|
})));
|
|
@@ -4212,7 +4220,7 @@ class DataSourceEffects {
|
|
|
4212
4220
|
this.loadedDataset$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.dataset.loadDataset), mergeMap((action) => this.dataSourceService
|
|
4213
4221
|
.getDatasets()
|
|
4214
4222
|
.pipe(map((dsd) => DataSourceActions.dataset.loadedDataset({ datasets: dsd }))))));
|
|
4215
|
-
this.loadDataset$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.load), mergeMap((action) => [DataSourceActions.namedQuery.load(), DataSourceActions.dataset.loadDataset()])));
|
|
4223
|
+
this.loadDataset$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.load), debounceTime(100), mergeMap((action) => [DataSourceActions.namedQuery.load(), DataSourceActions.dataset.loadDataset()])));
|
|
4216
4224
|
this.createDataset$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.dataset.create), switchMap((props) => this.dataSourceService
|
|
4217
4225
|
.addDataset(props.dataset)
|
|
4218
4226
|
.pipe(mergeMap(() => [
|
|
@@ -4683,7 +4691,7 @@ class RelationTypesEffects {
|
|
|
4683
4691
|
this.service = service;
|
|
4684
4692
|
this.router = router;
|
|
4685
4693
|
this.pryDialog = pryDialog;
|
|
4686
|
-
this.loadRelationsTypes$ = createEffect(() => this.actions$.pipe(ofType(RelationTypesActions.load), mergeMap$1((action) => this.service.getRelationsTypes().pipe(map$1((datas) => RelationTypesActions.loadSuccess({ datas })), catchError((error) => [RelationTypesActions.loadFailure({ error })])))));
|
|
4694
|
+
this.loadRelationsTypes$ = createEffect(() => this.actions$.pipe(ofType(RelationTypesActions.load), debounceTime(100), mergeMap$1((action) => this.service.getRelationsTypes().pipe(map$1((datas) => RelationTypesActions.loadSuccess({ datas })), catchError((error) => [RelationTypesActions.loadFailure({ error })])))));
|
|
4687
4695
|
this.saveRelationType$ = createEffect(() => this.actions$.pipe(ofType(RelationTypesActions.saveRelationType), mergeMap$1((action) => this.service.addRelationType(action.id, action.name).pipe(map$1((data) => RelationTypesActions.saveRelationTypeSuccess()), catchError((error) => [RelationTypesActions.saveRelationTypeFailure({ error })])))));
|
|
4688
4696
|
this.saveRelationTypeSuccess$ = createEffect(() => this.actions$.pipe(ofType(RelationTypesActions.saveRelationTypeSuccess), map$1((action) => {
|
|
4689
4697
|
return RelationTypesActions.load();
|
|
@@ -6973,7 +6981,6 @@ class WidgetInstanciatorComponent extends SubscriptionnerDirective {
|
|
|
6973
6981
|
this.standalone = false;
|
|
6974
6982
|
this.manifestModified = new EventEmitter();
|
|
6975
6983
|
this.open$ = new Subject();
|
|
6976
|
-
this.widgetInstance = new EventEmitter();
|
|
6977
6984
|
}
|
|
6978
6985
|
ngAfterViewInit() {
|
|
6979
6986
|
// Dynamically create associated component
|
|
@@ -7000,7 +7007,6 @@ class WidgetInstanciatorComponent extends SubscriptionnerDirective {
|
|
|
7000
7007
|
}
|
|
7001
7008
|
this.manifestModified.emit(manifest);
|
|
7002
7009
|
});
|
|
7003
|
-
this.widgetInstance.emit(this.instanciatedComponent.instance);
|
|
7004
7010
|
});
|
|
7005
7011
|
}));
|
|
7006
7012
|
}
|
|
@@ -7012,7 +7018,7 @@ class WidgetInstanciatorComponent extends SubscriptionnerDirective {
|
|
|
7012
7018
|
this.cdRef.detectChanges();
|
|
7013
7019
|
}
|
|
7014
7020
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetInstanciatorComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: WidgetFactoryService }, { token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7015
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: WidgetInstanciatorComponent, selector: "pry-widget-instanciator", inputs: { widgetIndex: "widgetIndex", staticManifest: "staticManifest", standalone: "standalone", open$: "open$" }, outputs: { manifestModified: "manifestModified"
|
|
7021
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: WidgetInstanciatorComponent, selector: "pry-widget-instanciator", inputs: { widgetIndex: "widgetIndex", staticManifest: "staticManifest", standalone: "standalone", open$: "open$" }, outputs: { manifestModified: "manifestModified" }, viewQueries: [{ propertyName: "componentRef", first: true, predicate: ["componentRef"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<ng-container #componentRef></ng-container>\n" }); }
|
|
7016
7022
|
}
|
|
7017
7023
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetInstanciatorComponent, decorators: [{
|
|
7018
7024
|
type: Component,
|
|
@@ -7030,8 +7036,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
7030
7036
|
args: ['componentRef', { read: ViewContainerRef, static: false }]
|
|
7031
7037
|
}], open$: [{
|
|
7032
7038
|
type: Input
|
|
7033
|
-
}], widgetInstance: [{
|
|
7034
|
-
type: Output
|
|
7035
7039
|
}] } });
|
|
7036
7040
|
|
|
7037
7041
|
class DateUtils {
|
|
@@ -7373,7 +7377,7 @@ class ContextMenuComponent extends SubscriptionnerDirective {
|
|
|
7373
7377
|
this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name + '-detail' }));
|
|
7374
7378
|
}
|
|
7375
7379
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ContextMenuComponent, deps: [{ token: i1.Store }, { token: i2$1.Overlay }, { token: i0.ViewContainerRef }, { token: WidgetFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7376
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: ContextMenuComponent, selector: "pry-context-menu", viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }, { propertyName: "detailTemplate", first: true, predicate: ["detailTemplate"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <ul class=\"m-context-menu__list\">\n <ng-container *ngIf=\"!!itemId\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionAddOrRemove()\">\n {{ ((isSelected$ | async) ? '@pry.context.remove' : '@pry.context.add') | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionInvert()\">\n {{ '@pry.context.invert' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" *ngIf=\"!!resultSet\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"proximity()\" *ngIf=\"!!resultSet\">\n {{ '@pry.context.proximity' | i18n }}\n </button>\n </li>\n <ng-container *ngIf=\"isModuleLoaded['graph']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"explore()\">\n {{ '@pry.context.explore' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *ngIf=\"isModuleLoaded['detail']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"detail()\">\n {{ '@pry.context.detail' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"flyingDetail()\">\n {{ '@pry.context.flyingDetail' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation\n (closed)=\"hide()\"\n [link]=\"true\"\n [object]=\"false\"\n [menu]=\"true\"\n *ngIf=\"(selectedItemsIds?.length ?? 0) > 0\"\n ></pry-object-creation>\n <pry-object-creation (closed)=\"hide()\" [link]=\"true\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation (closed)=\"hide()\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n<ng-template #detailTemplate>\n <div class=\"o-settings__popup__header\">\n <h2 class=\"a-h2\">{{ '@pry.context.flyingDetail' | i18n }}</h2>\n <button type=\"button\" (click)=\"hideDetail()\" class=\"a-btn a-btn--icon-only -close\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n <div class=\"o-settings__popup__content\">\n <pry-widget-instanciator [staticManifest]=\"detailManifest\"></pry-widget-instanciator>\n </div>\n <div class=\"o-settings__popup__footer\">\n <button (click)=\"hideDetail()\" class=\"a-btn a-btn--primary\">\n {{ '@pry.action.close' | i18n }}\n </button>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: WidgetInstanciatorComponent, selector: "pry-widget-instanciator", inputs: ["widgetIndex", "staticManifest", "standalone", "open$"], outputs: ["manifestModified"
|
|
7380
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: ContextMenuComponent, selector: "pry-context-menu", viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }, { propertyName: "detailTemplate", first: true, predicate: ["detailTemplate"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <ul class=\"m-context-menu__list\">\n <ng-container *ngIf=\"!!itemId\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionAddOrRemove()\">\n {{ ((isSelected$ | async) ? '@pry.context.remove' : '@pry.context.add') | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionInvert()\">\n {{ '@pry.context.invert' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" *ngIf=\"!!resultSet\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"proximity()\" *ngIf=\"!!resultSet\">\n {{ '@pry.context.proximity' | i18n }}\n </button>\n </li>\n <ng-container *ngIf=\"isModuleLoaded['graph']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"explore()\">\n {{ '@pry.context.explore' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *ngIf=\"isModuleLoaded['detail']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"detail()\">\n {{ '@pry.context.detail' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"flyingDetail()\">\n {{ '@pry.context.flyingDetail' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation\n (closed)=\"hide()\"\n [link]=\"true\"\n [object]=\"false\"\n [menu]=\"true\"\n *ngIf=\"(selectedItemsIds?.length ?? 0) > 0\"\n ></pry-object-creation>\n <pry-object-creation (closed)=\"hide()\" [link]=\"true\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation (closed)=\"hide()\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n<ng-template #detailTemplate>\n <div class=\"o-settings__popup__header\">\n <h2 class=\"a-h2\">{{ '@pry.context.flyingDetail' | i18n }}</h2>\n <button type=\"button\" (click)=\"hideDetail()\" class=\"a-btn a-btn--icon-only -close\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n <div class=\"o-settings__popup__content\">\n <pry-widget-instanciator [staticManifest]=\"detailManifest\"></pry-widget-instanciator>\n </div>\n <div class=\"o-settings__popup__footer\">\n <button (click)=\"hideDetail()\" class=\"a-btn a-btn--primary\">\n {{ '@pry.action.close' | i18n }}\n </button>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: WidgetInstanciatorComponent, selector: "pry-widget-instanciator", inputs: ["widgetIndex", "staticManifest", "standalone", "open$"], outputs: ["manifestModified"] }, { kind: "component", type: PryObjectEditionComponent, selector: "pry-object-creation", inputs: ["link", "object", "menu"], outputs: ["closed"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
|
|
7377
7381
|
}
|
|
7378
7382
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ContextMenuComponent, decorators: [{
|
|
7379
7383
|
type: Component,
|
|
@@ -7390,6 +7394,9 @@ const MIME_TYPE_WIDGET_MANIFEST = 'application/widget-manifest';
|
|
|
7390
7394
|
const MIME_TYPE_WIDGET_TYPE = 'application/widget-type-';
|
|
7391
7395
|
const MIME_TYPE_WIDGET_SIZE = 'application/widget-size-';
|
|
7392
7396
|
class DashboardComponent extends SubscriptionnerDirective {
|
|
7397
|
+
get widgetsInstances() {
|
|
7398
|
+
return this.instanciators?.map((instanciator) => instanciator.instanciatedComponent.instance) ?? [];
|
|
7399
|
+
}
|
|
7393
7400
|
set staticDashboard(window) {
|
|
7394
7401
|
this.staticDashboard$.next(window);
|
|
7395
7402
|
}
|
|
@@ -7403,7 +7410,6 @@ class DashboardComponent extends SubscriptionnerDirective {
|
|
|
7403
7410
|
this.staticDashboard$ = new BehaviorSubject(null);
|
|
7404
7411
|
this.stacked$ = new BehaviorSubject(false);
|
|
7405
7412
|
this.indexForRemoval = -1;
|
|
7406
|
-
this.widgetsInstances = [];
|
|
7407
7413
|
this.CloseOnDragOut = true;
|
|
7408
7414
|
this.canCalculateView = false;
|
|
7409
7415
|
this.dashboardParams = {
|
|
@@ -7895,18 +7901,18 @@ class DashboardComponent extends SubscriptionnerDirective {
|
|
|
7895
7901
|
trackWidgets(index, widgetManifest) {
|
|
7896
7902
|
return index + '-' + widgetManifest.type + '-' + JSON.stringify(widgetManifest.layout);
|
|
7897
7903
|
}
|
|
7898
|
-
updateInstance(widgetIndex, $event) {
|
|
7899
|
-
this.widgetsInstances[widgetIndex] = $event;
|
|
7900
|
-
}
|
|
7901
7904
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: DashboardComponent, deps: [{ token: i1.Store }, { token: i2$1.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7902
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: DashboardComponent, selector: "pry-dashboard", inputs: { staticDashboard: "staticDashboard", CloseOnDragOut: "CloseOnDragOut", displayOptions: "displayOptions" }, outputs: { rowHeight: "rowHeight", rows: "rows" }, viewQueries: [{ propertyName: "templateModal", first: true, predicate: ["templateModal"], descendants: true, read: TemplateRef }, { propertyName: "gridRef", first: true, predicate: ["grid"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"o-dashboard-grid\"\n [style.gridTemplateColumns]=\"gridTemplateColumns$ | async\"\n [style.gridTemplateRows]=\"gridTemplateRows$ | async\"\n [style.gridGap]=\"dashboardParams.gridGap + 'px'\"\n #grid\n (mousemove)=\"movingMouse($event)\"\n (drop)=\"dropping($event)\"\n (dragover)=\"dragMove($event)\"\n (dragleave)=\"dragLeave($event)\"\n (dragenter)=\"dragEnter($event)\"\n>\n <ng-container\n *ngFor=\"\n let widgetManifest of (windowManifest$ | async)?.widgets || [];\n let widgetIndex = index;\n trackBy: trackWidgets\n \"\n >\n <div\n class=\"o-dashboard-widget\"\n [class.-edited]=\"modeEdition\"\n [style.gridColumn]=\"gridColumn(widgetManifest.layout)\"\n [style.gridRow]=\"gridRow(widgetManifest.layout)\"\n (drop)=\"droppingInWidget($event, widgetIndex)\"\n >\n <ng-container *ngIf=\"modeEdition\">\n <div class=\"resize nw-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-nw')\">\n <pry-icon iconSvg=\"north_west\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize sw-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-sw')\">\n <pry-icon iconSvg=\"south_west\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize ne-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-ne')\">\n <pry-icon iconSvg=\"north_east\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize se-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-se')\">\n <pry-icon iconSvg=\"south_east\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize delete\" (mousedown)=\"toggleRemoveConfirm($event, widgetIndex)\">\n <pry-icon iconSvg=\"close\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"move\" draggable=\"true\" (dragstart)=\"dragStart($event, widgetIndex)\">\n <div class=\"move-inside move-{{ widgetManifest.type }}\">\n <span>{{ widgetManifest.title ?? ('@pry.toolbox.' + widgetManifest.type | i18n) }}</span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!modeEdition\">\n <pry-widget-instanciator\n [staticManifest]=\"widgetManifest\"\n [widgetIndex]=\"widgetIndex\"\n
|
|
7905
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: DashboardComponent, selector: "pry-dashboard", inputs: { staticDashboard: "staticDashboard", CloseOnDragOut: "CloseOnDragOut", displayOptions: "displayOptions" }, outputs: { rowHeight: "rowHeight", rows: "rows" }, viewQueries: [{ propertyName: "templateModal", first: true, predicate: ["templateModal"], descendants: true, read: TemplateRef }, { propertyName: "gridRef", first: true, predicate: ["grid"], descendants: true }, { propertyName: "instanciators", predicate: WidgetInstanciatorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"o-dashboard-grid\"\n [style.gridTemplateColumns]=\"gridTemplateColumns$ | async\"\n [style.gridTemplateRows]=\"gridTemplateRows$ | async\"\n [style.gridGap]=\"dashboardParams.gridGap + 'px'\"\n #grid\n (mousemove)=\"movingMouse($event)\"\n (drop)=\"dropping($event)\"\n (dragover)=\"dragMove($event)\"\n (dragleave)=\"dragLeave($event)\"\n (dragenter)=\"dragEnter($event)\"\n>\n <ng-container\n *ngFor=\"\n let widgetManifest of (windowManifest$ | async)?.widgets || [];\n let widgetIndex = index;\n trackBy: trackWidgets\n \"\n >\n <div\n class=\"o-dashboard-widget\"\n [class.-edited]=\"modeEdition\"\n [style.gridColumn]=\"gridColumn(widgetManifest.layout)\"\n [style.gridRow]=\"gridRow(widgetManifest.layout)\"\n (drop)=\"droppingInWidget($event, widgetIndex)\"\n >\n <ng-container *ngIf=\"modeEdition\">\n <div class=\"resize nw-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-nw')\">\n <pry-icon iconSvg=\"north_west\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize sw-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-sw')\">\n <pry-icon iconSvg=\"south_west\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize ne-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-ne')\">\n <pry-icon iconSvg=\"north_east\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize se-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-se')\">\n <pry-icon iconSvg=\"south_east\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize delete\" (mousedown)=\"toggleRemoveConfirm($event, widgetIndex)\">\n <pry-icon iconSvg=\"close\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"move\" draggable=\"true\" (dragstart)=\"dragStart($event, widgetIndex)\">\n <div class=\"move-inside move-{{ widgetManifest.type }}\">\n <span>{{ widgetManifest.title ?? ('@pry.toolbox.' + widgetManifest.type | i18n) }}</span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!modeEdition\">\n <pry-widget-instanciator\n [staticManifest]=\"widgetManifest\"\n [widgetIndex]=\"widgetIndex\"\n ></pry-widget-instanciator>\n </ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(nonFillerWidgets$ | async) === 0\">\n <ng-container *ngIf=\"loading$ | async; else notLoading\">\n <div class=\"no-widget\" [style.grid-area]=\"backgroundArea$ | async\">\n <pry-icon\n iconSvg=\"loader\"\n class=\"no-widget__loading\"\n [alt]=\"'@pry.widget.target.loading' | i18n\"\n [width]=\"100\"\n [height]=\"100\"\n />\n <span class=\"no-widget__text\">{{ '@pry.widget.target.loading' | i18n }}...</span>\n </div>\n </ng-container>\n <ng-template #notLoading>\n <div class=\"no-widget\" [style.grid-area]=\"backgroundArea$ | async\">\n <img\n class=\"no-widget__search\"\n src=\"../../../assets/svgs/pry_recherche.svg\"\n alt=\"{{\n (layout === DashboardGridLayout.MANUAL ? '@pry.widget.target.none_manual' : '@pry.widget.target.none_auto')\n | i18n\n }} {{ backgroundArea$ | async }}\"\n />\n <span class=\"no-widget__text\">{{\n (layout === DashboardGridLayout.MANUAL ? '@pry.widget.target.none_manual' : '@pry.widget.target.none_auto')\n | i18n\n }}</span>\n </div>\n </ng-template>\n </ng-container>\n</div>\n<pry-context-menu></pry-context-menu>\n\n<ng-template #templateModal>\n <div class=\"o-modal\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.widget.modalTitle' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"cancelRemoveConfirm()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div class=\"m-btn-group\">\n <button type=\"button\" (click)=\"cancelRemoveConfirm()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button type=\"submit\" (click)=\"confirmRemove()\" class=\"a-btn a-btn--primary\">\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: WidgetInstanciatorComponent, selector: "pry-widget-instanciator", inputs: ["widgetIndex", "staticManifest", "standalone", "open$"], outputs: ["manifestModified"] }, { kind: "component", type: ContextMenuComponent, selector: "pry-context-menu" }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
|
|
7903
7906
|
}
|
|
7904
7907
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: DashboardComponent, decorators: [{
|
|
7905
7908
|
type: Component,
|
|
7906
|
-
args: [{ selector: 'pry-dashboard', template: "<div\n class=\"o-dashboard-grid\"\n [style.gridTemplateColumns]=\"gridTemplateColumns$ | async\"\n [style.gridTemplateRows]=\"gridTemplateRows$ | async\"\n [style.gridGap]=\"dashboardParams.gridGap + 'px'\"\n #grid\n (mousemove)=\"movingMouse($event)\"\n (drop)=\"dropping($event)\"\n (dragover)=\"dragMove($event)\"\n (dragleave)=\"dragLeave($event)\"\n (dragenter)=\"dragEnter($event)\"\n>\n <ng-container\n *ngFor=\"\n let widgetManifest of (windowManifest$ | async)?.widgets || [];\n let widgetIndex = index;\n trackBy: trackWidgets\n \"\n >\n <div\n class=\"o-dashboard-widget\"\n [class.-edited]=\"modeEdition\"\n [style.gridColumn]=\"gridColumn(widgetManifest.layout)\"\n [style.gridRow]=\"gridRow(widgetManifest.layout)\"\n (drop)=\"droppingInWidget($event, widgetIndex)\"\n >\n <ng-container *ngIf=\"modeEdition\">\n <div class=\"resize nw-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-nw')\">\n <pry-icon iconSvg=\"north_west\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize sw-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-sw')\">\n <pry-icon iconSvg=\"south_west\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize ne-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-ne')\">\n <pry-icon iconSvg=\"north_east\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize se-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-se')\">\n <pry-icon iconSvg=\"south_east\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize delete\" (mousedown)=\"toggleRemoveConfirm($event, widgetIndex)\">\n <pry-icon iconSvg=\"close\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"move\" draggable=\"true\" (dragstart)=\"dragStart($event, widgetIndex)\">\n <div class=\"move-inside move-{{ widgetManifest.type }}\">\n <span>{{ widgetManifest.title ?? ('@pry.toolbox.' + widgetManifest.type | i18n) }}</span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!modeEdition\">\n <pry-widget-instanciator\n [staticManifest]=\"widgetManifest\"\n [widgetIndex]=\"widgetIndex\"\n
|
|
7909
|
+
args: [{ selector: 'pry-dashboard', template: "<div\n class=\"o-dashboard-grid\"\n [style.gridTemplateColumns]=\"gridTemplateColumns$ | async\"\n [style.gridTemplateRows]=\"gridTemplateRows$ | async\"\n [style.gridGap]=\"dashboardParams.gridGap + 'px'\"\n #grid\n (mousemove)=\"movingMouse($event)\"\n (drop)=\"dropping($event)\"\n (dragover)=\"dragMove($event)\"\n (dragleave)=\"dragLeave($event)\"\n (dragenter)=\"dragEnter($event)\"\n>\n <ng-container\n *ngFor=\"\n let widgetManifest of (windowManifest$ | async)?.widgets || [];\n let widgetIndex = index;\n trackBy: trackWidgets\n \"\n >\n <div\n class=\"o-dashboard-widget\"\n [class.-edited]=\"modeEdition\"\n [style.gridColumn]=\"gridColumn(widgetManifest.layout)\"\n [style.gridRow]=\"gridRow(widgetManifest.layout)\"\n (drop)=\"droppingInWidget($event, widgetIndex)\"\n >\n <ng-container *ngIf=\"modeEdition\">\n <div class=\"resize nw-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-nw')\">\n <pry-icon iconSvg=\"north_west\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize sw-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-sw')\">\n <pry-icon iconSvg=\"south_west\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize ne-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-ne')\">\n <pry-icon iconSvg=\"north_east\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize se-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-se')\">\n <pry-icon iconSvg=\"south_east\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize delete\" (mousedown)=\"toggleRemoveConfirm($event, widgetIndex)\">\n <pry-icon iconSvg=\"close\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"move\" draggable=\"true\" (dragstart)=\"dragStart($event, widgetIndex)\">\n <div class=\"move-inside move-{{ widgetManifest.type }}\">\n <span>{{ widgetManifest.title ?? ('@pry.toolbox.' + widgetManifest.type | i18n) }}</span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!modeEdition\">\n <pry-widget-instanciator\n [staticManifest]=\"widgetManifest\"\n [widgetIndex]=\"widgetIndex\"\n ></pry-widget-instanciator>\n </ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(nonFillerWidgets$ | async) === 0\">\n <ng-container *ngIf=\"loading$ | async; else notLoading\">\n <div class=\"no-widget\" [style.grid-area]=\"backgroundArea$ | async\">\n <pry-icon\n iconSvg=\"loader\"\n class=\"no-widget__loading\"\n [alt]=\"'@pry.widget.target.loading' | i18n\"\n [width]=\"100\"\n [height]=\"100\"\n />\n <span class=\"no-widget__text\">{{ '@pry.widget.target.loading' | i18n }}...</span>\n </div>\n </ng-container>\n <ng-template #notLoading>\n <div class=\"no-widget\" [style.grid-area]=\"backgroundArea$ | async\">\n <img\n class=\"no-widget__search\"\n src=\"../../../assets/svgs/pry_recherche.svg\"\n alt=\"{{\n (layout === DashboardGridLayout.MANUAL ? '@pry.widget.target.none_manual' : '@pry.widget.target.none_auto')\n | i18n\n }} {{ backgroundArea$ | async }}\"\n />\n <span class=\"no-widget__text\">{{\n (layout === DashboardGridLayout.MANUAL ? '@pry.widget.target.none_manual' : '@pry.widget.target.none_auto')\n | i18n\n }}</span>\n </div>\n </ng-template>\n </ng-container>\n</div>\n<pry-context-menu></pry-context-menu>\n\n<ng-template #templateModal>\n <div class=\"o-modal\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.widget.modalTitle' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"cancelRemoveConfirm()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div class=\"m-btn-group\">\n <button type=\"button\" (click)=\"cancelRemoveConfirm()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button type=\"submit\" (click)=\"confirmRemove()\" class=\"a-btn a-btn--primary\">\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n" }]
|
|
7907
7910
|
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2$1.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { templateModal: [{
|
|
7908
7911
|
type: ViewChild,
|
|
7909
7912
|
args: ['templateModal', { read: TemplateRef }]
|
|
7913
|
+
}], instanciators: [{
|
|
7914
|
+
type: ViewChildren,
|
|
7915
|
+
args: [WidgetInstanciatorComponent]
|
|
7910
7916
|
}], staticDashboard: [{
|
|
7911
7917
|
type: Input
|
|
7912
7918
|
}], CloseOnDragOut: [{
|
|
@@ -9981,7 +9987,7 @@ class DashboardEffects {
|
|
|
9981
9987
|
this.searchService = searchService;
|
|
9982
9988
|
this.pryDialog = pryDialog;
|
|
9983
9989
|
this.wmsService = wmsService;
|
|
9984
|
-
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)), filter$1(([action, rank, tenants, manifest, resultSets]) => rank === 0), map$1(([action, rank, tenants, manifest, resultSets, selectedIds, presentation]) => DashboardActions.updateManifestAfterTenantJoin({
|
|
9990
|
+
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({
|
|
9985
9991
|
tenants,
|
|
9986
9992
|
manifest: {
|
|
9987
9993
|
...manifest,
|
|
@@ -9990,7 +9996,8 @@ class DashboardEffects {
|
|
|
9990
9996
|
resultSets,
|
|
9991
9997
|
selectedIds,
|
|
9992
9998
|
joining: true,
|
|
9993
|
-
presentation
|
|
9999
|
+
presentation,
|
|
10000
|
+
display
|
|
9994
10001
|
}))));
|
|
9995
10002
|
this.leave$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.leave), withLatestFrom(this.store.select(DashboardSelectors.rank), this.store.select(DashboardSelectors.tenants), this.store.select(DashboardSelectors.globalManifest), this.store.select(DashboardSelectors.selectedItemIds)), filter$1(([action, rank, tenants, manifest]) => rank === 0 || (tenants[0] === action.sender && rank === 1)), map$1(([action, rank, tenants, manifest, selectedIds]) => {
|
|
9996
10003
|
const leaverRank = tenants.indexOf(action.sender);
|
|
@@ -10378,7 +10385,9 @@ const internalReducer = createReducer(dashboardInitialState, on(DashboardActions
|
|
|
10378
10385
|
resultSets: !!action.resultSets
|
|
10379
10386
|
? { ...state.results.resultSets, ...action.resultSets }
|
|
10380
10387
|
: state.results.resultSets
|
|
10381
|
-
}
|
|
10388
|
+
},
|
|
10389
|
+
// @ts-ignore
|
|
10390
|
+
display: action.display ?? state.display
|
|
10382
10391
|
};
|
|
10383
10392
|
}), on(DashboardActions.updateRouteManifest, (state, action) => {
|
|
10384
10393
|
const senderRank = state.manifests.tenants.indexOf(action.sender ?? state.manifests.sender);
|