@provoly/dashboard 0.18.2 → 0.18.4

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.
Files changed (96) hide show
  1. package/assets/svgs/clear_filter.svg +12 -0
  2. package/assets/svgs/refresh_data.svg +15 -0
  3. package/assets/svgs/refresh_filter.svg +13 -0
  4. package/assets/svgs/trash.svg +1 -0
  5. package/components/color-picker/color-picker.component.d.ts +58 -0
  6. package/components/color-picker/color-picker.module.d.ts +9 -0
  7. package/components/color-picker/index.d.ts +5 -0
  8. package/components/color-picker/public-api.d.ts +2 -0
  9. package/components/scheme-picker/index.d.ts +5 -0
  10. package/components/scheme-picker/public-api.d.ts +3 -0
  11. package/components/scheme-picker/scheme-picker.component.d.ts +34 -0
  12. package/components/scheme-picker/scheme-picker.module.d.ts +11 -0
  13. package/components/scheme-picker/scheme.service.d.ts +12 -0
  14. package/dataset/components/dataset-card/dataset-card.component.d.ts +11 -3
  15. package/dataset/i18n/en.translations.d.ts +1 -0
  16. package/dataset/i18n/fr.translations.d.ts +1 -0
  17. package/dataset/style/_o-pry-dataset-card.scss +16 -1
  18. package/dataset/style/_o-pry-dataset.scss +18 -3
  19. package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +7 -5
  20. package/esm2022/components/color-picker/color-picker.component.mjs +314 -0
  21. package/esm2022/components/color-picker/color-picker.module.mjs +20 -0
  22. package/esm2022/components/color-picker/provoly-dashboard-components-color-picker.mjs +5 -0
  23. package/esm2022/components/color-picker/public-api.mjs +3 -0
  24. package/esm2022/components/scheme-picker/provoly-dashboard-components-scheme-picker.mjs +5 -0
  25. package/esm2022/components/scheme-picker/public-api.mjs +4 -0
  26. package/esm2022/components/scheme-picker/scheme-picker.component.mjs +104 -0
  27. package/esm2022/components/scheme-picker/scheme-picker.module.mjs +22 -0
  28. package/esm2022/components/scheme-picker/scheme.service.mjs +47 -0
  29. package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +26 -9
  30. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -3
  31. package/esm2022/dataset/components/dataset.component.mjs +3 -3
  32. package/esm2022/dataset/i18n/en.translations.mjs +2 -1
  33. package/esm2022/dataset/i18n/fr.translations.mjs +2 -1
  34. package/esm2022/dataset/style/css.component.mjs +2 -2
  35. package/esm2022/lib/core/i18n/en.translations.mjs +6 -2
  36. package/esm2022/lib/core/i18n/fr.translations.mjs +6 -2
  37. package/esm2022/lib/core/model/widget-aggregated-chart-manifest.interface.mjs +1 -1
  38. package/esm2022/lib/core/model/widget-chart-manifest.interface.mjs +2 -1
  39. package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +4 -1
  40. package/esm2022/lib/core/store/data-source/data-source.model.mjs +1 -1
  41. package/esm2022/lib/core/store/search/search.actions.mjs +3 -2
  42. package/esm2022/lib/core/store/search/search.reducer.mjs +6 -1
  43. package/esm2022/lib/dashboard/components/dashboard.component.mjs +16 -11
  44. package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +3 -3
  45. package/esm2022/presentation/style/css.component.mjs +2 -2
  46. package/esm2022/restitution/components/restitution/restitution.component.mjs +11 -20
  47. package/esm2022/restitution/model/restitution.model.mjs +1 -1
  48. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +134 -26
  49. package/esm2022/widgets/widget-aggregated-chart/i18n/en.translations.mjs +19 -2
  50. package/esm2022/widgets/widget-aggregated-chart/i18n/fr.translations.mjs +19 -2
  51. package/esm2022/widgets/widget-aggregated-chart/widget-aggregated-chart.module.mjs +16 -5
  52. package/esm2022/widgets/widget-chart/i18n/en.translations.mjs +3 -2
  53. package/esm2022/widgets/widget-chart/i18n/fr.translations.mjs +3 -2
  54. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +2 -2
  55. package/fesm2022/provoly-dashboard-admin.mjs +6 -4
  56. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  57. package/fesm2022/provoly-dashboard-components-color-picker.mjs +337 -0
  58. package/fesm2022/provoly-dashboard-components-color-picker.mjs.map +1 -0
  59. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +171 -0
  60. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -0
  61. package/fesm2022/provoly-dashboard-dataset.mjs +29 -14
  62. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  63. package/fesm2022/provoly-dashboard-presentation.mjs +4 -4
  64. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  65. package/fesm2022/provoly-dashboard-restitution.mjs +10 -19
  66. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  67. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +183 -30
  68. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  69. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +4 -2
  70. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  71. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +1 -1
  72. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  73. package/fesm2022/provoly-dashboard.mjs +37 -13
  74. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  75. package/lib/core/i18n/en.translations.d.ts +4 -0
  76. package/lib/core/i18n/fr.translations.d.ts +4 -0
  77. package/lib/core/model/widget-aggregated-chart-manifest.interface.d.ts +7 -0
  78. package/lib/core/model/widget-chart-manifest.interface.d.ts +1 -0
  79. package/lib/core/store/data-source/data-source.model.d.ts +0 -2
  80. package/lib/core/store/search/search.actions.d.ts +7 -0
  81. package/lib/dashboard/components/dashboard.component.d.ts +2 -0
  82. package/package.json +19 -7
  83. package/presentation/style/_o-pry-new-presentation.scss +2 -1
  84. package/restitution/components/restitution/restitution.component.d.ts +0 -2
  85. package/restitution/model/restitution.model.d.ts +1 -1
  86. package/styles/components/_a-color-picker.scss +62 -0
  87. package/styles/components/_a-page-loader.scss +14 -0
  88. package/styles/components/_m-color-scheme.scss +20 -0
  89. package/styles/main.scss +3 -0
  90. package/styles-theme/components-theme/_o-pry-admin-classes-customize.theme.scss +4 -0
  91. package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +17 -5
  92. package/widgets/widget-aggregated-chart/i18n/en.translations.d.ts +17 -0
  93. package/widgets/widget-aggregated-chart/i18n/fr.translations.d.ts +17 -0
  94. package/widgets/widget-aggregated-chart/widget-aggregated-chart.module.d.ts +3 -1
  95. package/widgets/widget-chart/i18n/en.translations.d.ts +1 -0
  96. package/widgets/widget-chart/i18n/fr.translations.d.ts +1 -0
@@ -234,7 +234,11 @@ const enTranslations$1 = {
234
234
  },
235
235
  modalTitle: 'Do you want to confirm?',
236
236
  itemId: 'Id',
237
- class: 'Class'
237
+ class: 'Class',
238
+ colorScheme: 'Color scheme',
239
+ custom: 'Custom n°{{id}}',
240
+ addColor: 'Add color',
241
+ removeColor: 'Remove color'
238
242
  },
239
243
  view: {
240
244
  name: 'Tab n°{{rank}}'
@@ -578,7 +582,11 @@ const frTranslations$1 = {
578
582
  },
579
583
  modalTitle: 'Voulez-vous confirmer ?',
580
584
  itemId: 'Id',
581
- class: 'Classe'
585
+ class: 'Classe',
586
+ colorScheme: 'Schéma de couleur',
587
+ custom: 'Personalisé n°{{id}}',
588
+ addColor: 'Ajouter une couleur',
589
+ removeColor: 'Supprimer une couleur'
582
590
  },
583
591
  view: {
584
592
  name: 'Page n°{{rank}}'
@@ -1412,6 +1420,7 @@ var VegaType;
1412
1420
  })(VegaType || (VegaType = {}));
1413
1421
  var VegaColorType;
1414
1422
  (function (VegaColorType) {
1423
+ VegaColorType["PROVOLY"] = "Provoly";
1415
1424
  VegaColorType["ACCENT"] = "accent";
1416
1425
  VegaColorType["SET2"] = "set2";
1417
1426
  VegaColorType["DARK2"] = "dark2";
@@ -2163,6 +2172,7 @@ const enTranslations = {
2163
2172
  api: 'API',
2164
2173
  returnToList: 'Back to catalog',
2165
2174
  refresh: 'Refresh',
2175
+ since_day: 'Last update :',
2166
2176
  version: {
2167
2177
  title: 'Title',
2168
2178
  INDEXING: 'Loading',
@@ -2231,6 +2241,7 @@ const frTranslations = {
2231
2241
  api: 'API',
2232
2242
  returnToList: 'Retour au catalogue',
2233
2243
  refresh: 'Actualiser',
2244
+ since_day: 'Dernière mise à jour :',
2234
2245
  version: {
2235
2246
  title: 'Intitulé',
2236
2247
  INDEXING: 'En chargement',
@@ -3913,7 +3924,8 @@ const SearchActions = {
3913
3924
  getDatasourceItems: createAction('[Search] (bus) search named', props()),
3914
3925
  // result Search
3915
3926
  searchSuccess: createAction('[Search Api] (bus) Search Success', props()),
3916
- searchFailure: createAction('[Search Api] (bus) Search Failure', props())
3927
+ searchFailure: createAction('[Search Api] (bus) Search Failure', props()),
3928
+ setSearchLoading: createAction('[Search Api] (bus) set Search loading datasource status', props())
3917
3929
  };
3918
3930
 
3919
3931
  class SearchService {
@@ -4781,6 +4793,11 @@ const searchReducer = createReducer(initialSearchState, on(SearchActions.search,
4781
4793
  })), on(SearchActions.searchFailure, (state, action) => ({
4782
4794
  ...state,
4783
4795
  searchLoading: [...state.searchLoading.filter((id) => id !== (action.id ?? DEFAULT_NAMED_QUERY_ID))]
4796
+ })), on(SearchActions.setSearchLoading, (state, action) => ({
4797
+ ...state,
4798
+ searchLoading: action.start
4799
+ ? [...new Set([...state.searchLoading, ...action.datasources])]
4800
+ : [...state.searchLoading.filter((id) => !action.datasources.includes(id))]
4784
4801
  })));
4785
4802
 
4786
4803
  class AccordionComponent {
@@ -5213,6 +5230,9 @@ class PryBackendAggregationService extends PryAggregationService {
5213
5230
  if (options.groupBy) {
5214
5231
  params = params.set('groupBy', options.groupBy.attribute);
5215
5232
  }
5233
+ if (options.graph.sort) {
5234
+ params = params.set('sort', `${options.graph.sort.direction},${options.graph.sort.attribute === options.abscissa.attribute ? 'KEY' : 'VALUE'}`);
5235
+ }
5216
5236
  params = this.searchService.getItemsFilter(targetDatasource, params);
5217
5237
  const key = `${this.dataUrl}_${params.toString()}`;
5218
5238
  if (!this.cache[key] || this.cache[key].time + 1000 < new Date().getTime()) {
@@ -7887,6 +7907,7 @@ class DashboardComponent extends SubscriptionnerDirective {
7887
7907
  this.staticDashboard$ = new BehaviorSubject(null);
7888
7908
  this.stacked$ = new BehaviorSubject(false);
7889
7909
  this.indexForRemoval = -1;
7910
+ this.params = {};
7890
7911
  this.CloseOnDragOut = true;
7891
7912
  this.canCalculateView = false;
7892
7913
  this.dashboardParams = {
@@ -7915,6 +7936,7 @@ class DashboardComponent extends SubscriptionnerDirective {
7915
7936
  this.DashboardGridLayout = DashboardGridLayout;
7916
7937
  this.layout = DashboardGridLayout.MANUAL;
7917
7938
  this.loading$ = this.store.select(DashboardSelectors.loading);
7939
+ this.dataFetching$ = this.store.select(SearchSelectors.searchLoading);
7918
7940
  this.modeEdition$ = this.store.select(DashboardSelectors.dashboardEditionMode);
7919
7941
  this.subscriptions.add(this.modeEdition$.subscribe((mode) => {
7920
7942
  this.modeEdition = mode;
@@ -8025,7 +8047,7 @@ class DashboardComponent extends SubscriptionnerDirective {
8025
8047
  const rows = !this.displayIsStacked
8026
8048
  ? (!!this.manifest && !!this.manifest.grid && this.manifest.grid.rows) || DEFAULT_ROWS_NUMBER
8027
8049
  : this.manifest?.widgets.reduce((p, c) => p + c.layout.height, 0) ?? 1;
8028
- const params = {
8050
+ this.params = {
8029
8051
  gridWidth,
8030
8052
  // Calculate height to parennt the parent's
8031
8053
  gridHeight: element.getBoundingClientRect().height,
@@ -8038,17 +8060,19 @@ class DashboardComponent extends SubscriptionnerDirective {
8038
8060
  offsetTop: this.gridRef.nativeElement.offsetTop,
8039
8061
  mobileMode
8040
8062
  };
8041
- params.gridGap =
8042
- params.rows * params.cellHeight < params.gridHeight
8063
+ this.params.gridGap =
8064
+ this.params.rows * this.params.cellHeight < this.params.gridHeight
8043
8065
  ? !!this.manifest && !!this.manifest.grid
8044
8066
  ? this.manifest.grid.gap || DEFAULT_GAP_PX
8045
8067
  : DEFAULT_GAP_PX
8046
8068
  : 0;
8047
- params.cellHeight = (params.gridHeight - (params.rows - 1) * params.gridGap) / params.rows;
8048
- params.cellWidth = (params.gridWidth - (params.columns - 1) * params.gridGap) / params.columns;
8049
- this.store.dispatch(DashboardActions.updateDashboardParams({ params }));
8050
- this.rows.next(params.rows);
8051
- this.rowHeight.next(params.cellHeight);
8069
+ this.params.cellHeight =
8070
+ (this.params.gridHeight - (this.params.rows - 1) * this.params.gridGap) / this.params.rows;
8071
+ this.params.cellWidth =
8072
+ (this.params.gridWidth - (this.params.columns - 1) * this.params.gridGap) / this.params.columns;
8073
+ this.store.dispatch(DashboardActions.updateDashboardParams({ params: this.params }));
8074
+ this.rows.next(this.params.rows);
8075
+ this.rowHeight.next(this.params.cellHeight);
8052
8076
  }
8053
8077
  }
8054
8078
  get displayIsStacked() {
@@ -8379,11 +8403,11 @@ class DashboardComponent extends SubscriptionnerDirective {
8379
8403
  return index + '-' + widgetManifest.type + '-' + JSON.stringify(widgetManifest.layout);
8380
8404
  }
8381
8405
  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 }); }
8382
- 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" }] }); }
8406
+ 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 class=\"a-page-loader backdrop\"\n [style.display]=\"(dataFetching$ | async)?.length ?? 1 > 0 ? 'flex' : 'none'\"\n [style.width.px]=\"params.gridWidth\"\n [style.height.px]=\"params.gridHeight\"\n >\n <pry-icon\n iconSvg=\"loader\"\n class=\"no-widget__loading\"\n [alt]=\"'@pry.widget.target.loading' | i18n\"\n [width]=\"200\"\n [height]=\"200\"\n />\n <p>{{ '@pry.widget.target.loading' | i18n }}...</p>\n </div>\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" }] }); }
8383
8407
  }
8384
8408
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: DashboardComponent, decorators: [{
8385
8409
  type: Component,
8386
- 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" }]
8410
+ 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 class=\"a-page-loader backdrop\"\n [style.display]=\"(dataFetching$ | async)?.length ?? 1 > 0 ? 'flex' : 'none'\"\n [style.width.px]=\"params.gridWidth\"\n [style.height.px]=\"params.gridHeight\"\n >\n <pry-icon\n iconSvg=\"loader\"\n class=\"no-widget__loading\"\n [alt]=\"'@pry.widget.target.loading' | i18n\"\n [width]=\"200\"\n [height]=\"200\"\n />\n <p>{{ '@pry.widget.target.loading' | i18n }}...</p>\n </div>\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" }]
8387
8411
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2$1.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { templateModal: [{
8388
8412
  type: ViewChild,
8389
8413
  args: ['templateModal', { read: TemplateRef }]