@provoly/dashboard 1.1.1 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dataset/components/dataset-detail/dataset-detail.component.d.ts +1 -0
  2. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +4 -3
  3. package/esm2022/lib/core/components/share/access-rights-share/access-rights-share.component.mjs +127 -0
  4. package/esm2022/lib/core/components/share/group-share/group-share.component.mjs +1 -1
  5. package/esm2022/lib/core/components/share/legacy-share/share.component.mjs +83 -0
  6. package/esm2022/lib/core/components/share/share.module.mjs +9 -7
  7. package/esm2022/lib/core/components/share/share.utils.mjs +46 -1
  8. package/esm2022/lib/core/i18n/en.translations.mjs +15 -7
  9. package/esm2022/lib/core/i18n/fr.translations.mjs +16 -7
  10. package/esm2022/lib/core/model/manifest.interface.mjs +1 -1
  11. package/esm2022/lib/core/model/widget-aggregated-chart-manifest.interface.mjs +1 -1
  12. package/esm2022/lib/core/public-api.mjs +3 -2
  13. package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +8 -12
  14. package/esm2022/lib/core/store/aggregation/frontend-aggregation/aggregation-utils.class.mjs +5 -11
  15. package/esm2022/lib/core/store/aggregation/frontend-aggregation/frontend-aggregation.service.mjs +6 -6
  16. package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +4 -2
  17. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +1 -1
  18. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +2 -2
  19. package/esm2022/lib/dashboard/store/manifest.service.mjs +3 -3
  20. package/esm2022/presentation/components/presentation.component.mjs +13 -25
  21. package/esm2022/toolbox/components/save-view/save-view.component.mjs +8 -8
  22. package/esm2022/toolbox/components/share/share.component.mjs +9 -15
  23. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +42 -87
  24. package/esm2022/widgets/widget-aggregated-chart/i18n/en.translations.mjs +2 -1
  25. package/esm2022/widgets/widget-aggregated-chart/i18n/fr.translations.mjs +3 -5
  26. package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +2 -2
  27. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +2 -2
  28. package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +2 -2
  29. package/esm2022/widgets/widget-iframe/component/widget-iframe.component.mjs +2 -2
  30. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +5 -5
  31. package/esm2022/widgets/widget-map/interaction/tooltip-manager.class.mjs +2 -2
  32. package/esm2022/widgets/widget-map/style/css.component.mjs +2 -2
  33. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +2 -2
  34. package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +2 -2
  35. package/fesm2022/provoly-dashboard-dataset.mjs +3 -2
  36. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  37. package/fesm2022/provoly-dashboard-presentation.mjs +12 -24
  38. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  39. package/fesm2022/provoly-dashboard-toolbox.mjs +15 -21
  40. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  41. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +45 -91
  42. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  43. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +1 -1
  44. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
  45. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +1 -1
  46. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  47. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +1 -1
  48. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
  49. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs +1 -1
  50. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs.map +1 -1
  51. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +7 -7
  52. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  53. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +1 -1
  54. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  55. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +1 -1
  56. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
  57. package/fesm2022/provoly-dashboard.mjs +214 -48
  58. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  59. package/lib/core/components/share/access-rights-share/access-rights-share.component.d.ts +47 -0
  60. package/lib/core/components/share/{share.component.d.ts → legacy-share/share.component.d.ts} +1 -1
  61. package/lib/core/components/share/share.module.d.ts +10 -8
  62. package/lib/core/components/share/share.utils.d.ts +18 -0
  63. package/lib/core/i18n/en.translations.d.ts +12 -4
  64. package/lib/core/i18n/fr.translations.d.ts +13 -4
  65. package/lib/core/model/manifest.interface.d.ts +3 -1
  66. package/lib/core/model/widget-aggregated-chart-manifest.interface.d.ts +3 -12
  67. package/lib/core/public-api.d.ts +2 -1
  68. package/lib/core/store/aggregation/frontend-aggregation/aggregation-utils.class.d.ts +4 -4
  69. package/lib/core/store/aggregation/frontend-aggregation/frontend-aggregation.service.d.ts +2 -2
  70. package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +3 -1
  71. package/lib/dashboard/store/dashboard.actions.d.ts +6 -2
  72. package/lib/dashboard/store/manifest.service.d.ts +3 -1
  73. package/package.json +31 -31
  74. package/presentation/components/presentation.component.d.ts +7 -7
  75. package/styles/components/_o-access-rights-share.scss +73 -0
  76. package/styles/components/_o-pry-admin-classes-customize.scss +4 -4
  77. package/styles/main.scss +1 -0
  78. package/styles-theme/components-theme/_o-widget.theme.scss +0 -14
  79. package/toolbox/components/save-view/save-view.component.d.ts +6 -2
  80. package/toolbox/components/share/share.component.d.ts +6 -4
  81. package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +9 -7
  82. package/widgets/widget-aggregated-chart/i18n/en.translations.d.ts +1 -0
  83. package/widgets/widget-aggregated-chart/i18n/fr.translations.d.ts +2 -4
  84. package/widgets/widget-iframe/component/widget-iframe.component.d.ts +3 -1
  85. package/widgets/widget-map/component/widget-map.component.d.ts +3 -1
  86. package/widgets/widget-map/style/_m-layer-legend.scss +1 -4
  87. package/widgets/widget-table/component/widget-table.component.d.ts +3 -1
  88. package/widgets/widget-tile/component/widget-tile.component.d.ts +3 -1
  89. package/esm2022/lib/core/components/share/share.component.mjs +0 -83
@@ -240,7 +240,7 @@ class WidgetTableComponent extends DataWidgetComponent {
240
240
  this.resultSet$,
241
241
  this.displayHeader$
242
242
  ]).pipe(map(([items, actualPage, size, rs, headerPresent]) => {
243
- const rows = Math.max(1, Math.floor((size.height - HEADER_SIZE - PAGINATION_SIZE - (headerPresent ? WIDGET_HEADER_HEIGHT : 0)) / LINE_SIZE));
243
+ const rows = Math.max(1, Math.floor((size.height - HEADER_SIZE - PAGINATION_SIZE - (headerPresent ? WIDGET_HEADER_HEIGHT.value : 0)) / LINE_SIZE));
244
244
  const total = Object.values(rs.count ?? {}).reduce((p, c) => c.count + p, 0);
245
245
  const loadedPages = Math.ceil(items.length / rows);
246
246
  const page = actualPage <= loadedPages ? actualPage : Math.max(0, loadedPages - 1);
@@ -1 +1 @@
1
- {"version":3,"file":"provoly-dashboard-widgets-widget-table.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-table/resizable/resizable.directive.ts","../../../../projects/provoly/dashboard/widgets/widget-table/resizable/resizable.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/resizable/resizable.component.html","../../../../projects/provoly/dashboard/widgets/widget-table/style/css.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/format-number.pipe.ts","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/expand-value.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/expand-value.component.html","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/detach-row.directive.ts","../../../../projects/provoly/dashboard/widgets/widget-table/get-value/get-value.pipe.ts","../../../../projects/provoly/dashboard/widgets/widget-table/component/widget-table.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/component/widget-table.component.html","../../../../projects/provoly/dashboard/widgets/widget-table/i18n/en.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-table/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-table/widget-table.module.ts","../../../../projects/provoly/dashboard/widgets/widget-table/provoly-dashboard-widgets-widget-table.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { Directive, ElementRef, Inject, Output } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { distinctUntilChanged, map, switchMap, takeUntil, tap } from 'rxjs/operators';\n\n@Directive({\n selector: '[resizable]'\n})\nexport class ResizableDirective {\n @Output()\n readonly resizable = fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mousedown').pipe(\n tap((e) => e.preventDefault()),\n switchMap(() => {\n const domRect = this.elementRef.nativeElement.closest('th')?.getBoundingClientRect();\n const width = domRect?.width ?? 0;\n const right = domRect?.right ?? 0;\n\n return fromEvent<MouseEvent>(this.documentRef, 'mousemove').pipe(\n map(({ clientX }) => width + clientX - right),\n distinctUntilChanged(),\n takeUntil(fromEvent(this.documentRef, 'mouseup'))\n );\n })\n );\n\n constructor(\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(ElementRef)\n private readonly elementRef: ElementRef<HTMLElement>\n ) {}\n}\n","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'th[resizable]',\n templateUrl: './resizable.component.html'\n})\nexport class ResizableComponent {\n @HostBinding('style.width.px')\n width: number | null = null;\n\n onResize(width: number) {\n this.width = width;\n }\n}\n","<div class=\"wrapper\">\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n <div class=\"bar\" (resizable)=\"onResize($event)\"></div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-table-css',\n template: '',\n styleUrls: ['./_o-widget-table.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryWidgetTableCssComponent {}\n","import { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { PryI18nService, ValueType } from '@provoly/dashboard';\n\n@Pipe({ name: 'formatNumber' })\nexport class FormatNumberPipe implements PipeTransform {\n constructor(\n private decimalPipe: DecimalPipe,\n private i18nService: PryI18nService\n ) {}\n\n transform(toDisplay?: ValueType | ValueType[] | null, ...args: any[]): any {\n const result = { isNumber: false, text: `${!toDisplay ? '' : toDisplay}` };\n if (typeof toDisplay === 'number') {\n result.isNumber = true;\n result.text =\n this.decimalPipe\n .transform(toDisplay, '1.0-0')\n ?.replace(/,/g, this.i18nService.instant('@pry.format.thousands'))\n ?.replace(/\\./g, this.i18nService.instant('@pry.format.decimal')) || `${toDisplay}`;\n }\n return result;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { MultiMultipointValue, MultipointValue, PointValue, ValueType } from '@provoly/dashboard';\n\n@Component({\n selector: 'pry-expand-value',\n templateUrl: './expand-value.component.html'\n})\nexport class ExpandValueComponent {\n isArray: boolean = false;\n firstValue?: string | number | PointValue | MultipointValue | MultiMultipointValue | ValueType[] | null | undefined;\n rest: (string | number | PointValue | MultipointValue | MultiMultipointValue | ValueType[] | null | undefined)[] = [];\n\n @Input() set value(toDisplay: ValueType | ValueType[] | null) {\n if (Array.isArray(toDisplay) && toDisplay.length > 1) {\n this.isArray = true;\n const [firstValue, ...rest] = toDisplay;\n this.firstValue = firstValue;\n this.rest = rest;\n } else {\n this.isArray = false;\n this.firstValue = toDisplay;\n this.rest = [];\n }\n }\n}\n","<div class=\"a-expandable-value\" [class.-right]=\"(firstValue | formatNumber).isNumber\">\n <span class=\"a-expandable-value__initial\">{{ (firstValue | formatNumber).text }}{{ isArray ? ' (*)' : '' }}</span>\n <div class=\"a-expandable-value__expanded\" *ngIf=\"isArray\">\n <div *ngFor=\"let value of rest\">\n {{ (value | formatNumber).text }}\n </div>\n </div>\n</div>\n","import {\n AfterViewChecked,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Output\n} from '@angular/core';\n\n@Directive({\n selector: '[detachRow]'\n})\nexport class DetachRowDirective implements AfterViewChecked {\n @HostListener('click', ['$event']) clickEvt($event: MouseEvent): any {\n this.cdr.reattach();\n this.selectedValue.emit($event);\n }\n\n @Output() selectedValue: EventEmitter<MouseEvent> = new EventEmitter();\n\n constructor(\n private el: ElementRef,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngAfterViewChecked() {\n this.cdr.detach();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ClassSelectors, FieldSelectors, FieldType, Item, ItemUtils } from '@provoly/dashboard';\nimport { combineLatestWith } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Pipe({ name: 'getValue' })\nexport class GetValuePipe implements PipeTransform {\n constructor(private store: Store<any>) {}\n\n transform(value: Item, ...args: any[]): any {\n return this.store.select(ClassSelectors.classes).pipe(\n combineLatestWith(this.store.select(FieldSelectors.fields)),\n filter(([classes, fields]) => !!classes && classes.length > 0),\n map(([classes, fields]) => {\n const oClass = classes.find((cl) => cl.id === value.oClass);\n const attribute = oClass?.attributes.find((attr) => attr.technicalName === args[0]);\n if (!!attribute) {\n const field = fields.find((f) => f.id === attribute.field);\n if (\n field &&\n [\n FieldType.POINT,\n FieldType.MULTIPOINT,\n FieldType.LINE,\n FieldType.MULTILINE,\n FieldType.MULTILINE,\n FieldType.POLYGON,\n FieldType.MULTIPOLYGON\n ].includes(field.type)\n ) {\n // @ts-ignore\n const coordinates = JSON.stringify(ItemUtils.getAttributeCalculatedValue(value, attribute)?.coordinates);\n return coordinates && coordinates.length > 40 ? `${coordinates.substring(0, 40)}...` : coordinates;\n }\n return ItemUtils.getAttributeCalculatedValue(value, attribute);\n }\n return ItemUtils.getAttributeCalculatedValue(value, args[0]);\n })\n );\n }\n}\n","import { ChangeDetectorRef, Component, ElementRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n baseItemProperties,\n Class,\n ClassActions,\n ClassSelectors,\n ColumnDefinition,\n ConfigSelectors,\n ContextMenuActions,\n ContextMenuSelectors,\n DashboardActions,\n DashboardSelectors,\n DataWidgetComponent,\n Field,\n FieldSelectors,\n FieldType,\n Item,\n ItemUtils,\n OrderValue,\n ResultOrder,\n TableWidgetOptions,\n WIDGET_HEADER_HEIGHT\n} from '@provoly/dashboard';\nimport equal from 'fast-deep-equal/es6';\nimport { auditTime, BehaviorSubject, combineLatest, Observable, take } from 'rxjs';\nimport { delay, filter, map, tap, withLatestFrom } from 'rxjs/operators';\n\nexport interface Pagination {\n totalPages: number;\n page: number;\n rows: number;\n items: Item[];\n loaded: number;\n loadedPages: number;\n noFillersItems: number;\n}\n\n@Component({\n selector: 'pry-widget-table',\n templateUrl: './widget-table.component.html'\n})\nexport class WidgetTableComponent extends DataWidgetComponent {\n options$: Observable<TableWidgetOptions>;\n columns$: Observable<ColumnDefinition[]>;\n optionsCopy?: TableWidgetOptions;\n fields$: Observable<Field[]>;\n selectedIds$: Observable<string[]>;\n Array = Array;\n currentClasses: string[] = [];\n selectedIds: string[] = [];\n WIDGET_HEADER_HEIGHT = WIDGET_HEADER_HEIGHT;\n private classes$: Observable<Class[]>;\n properties$: Observable<{ label: string; property: string }[]>;\n allSelected$: Observable<boolean>;\n areAllSelected: boolean = false;\n allIds: string[] = [];\n contextMenuClickedId: string = '';\n isContextMenuOpened$: Observable<boolean>;\n quickOrder$: Observable<ResultOrder | undefined>;\n private _refresh$ = new BehaviorSubject<void>(undefined);\n actualPage$ = new BehaviorSubject<number>(0);\n pagination$: Observable<Pagination>;\n isOpen = false;\n\n constructor(store: Store<any>, el: ElementRef, private cdr: ChangeDetectorRef) {\n super(store, el);\n\n this.classes$ = this.store.select(ClassSelectors.classes);\n\n this.fields$ = combineLatest([this.resultSet$, this.classes$, this.store.select(FieldSelectors.fields)]).pipe(\n map(\n ([resultSet, classes, fields]) =>\n [\n ...ItemUtils.getFieldsForClasses(Object.keys(resultSet.items), classes, fields),\n ...baseItemProperties.map((p) => ({ name: p, id: p } as Field))\n ] as Field[]\n ),\n map((fields) => fields.filter((field) => field.type !== FieldType.RAW))\n );\n\n this.options$ = combineLatest([\n this.manifest$.pipe(map((manifest) => manifest.options as TableWidgetOptions)),\n this.resultSet$,\n this.classes$,\n this.fields$,\n this.store.select(ConfigSelectors.tableDefaultAttributesDefinitions)\n ]).pipe(\n map(([options, resultSet, classes, fields, defs]) => {\n if (!options.columns || options.columns.length === 0) {\n const attributes = ItemUtils.getAttributesFromRs(resultSet, classes, fields, defs);\n const uniqueProps = [...new Set(attributes.map(({ name, technicalName }) => ({ name, technicalName })))];\n\n options.columns = uniqueProps.map((property) => ({\n property: property.technicalName,\n label: property.name,\n attributeId: attributes.find((attr) => attr.technicalName === property.technicalName)?.id\n })) as ColumnDefinition[];\n }\n return options;\n })\n );\n\n this.subscriptions.add(\n this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n this.optionsCopy = { ...(JSON.parse(JSON.stringify(options)) as TableWidgetOptions) };\n this.refresh();\n })\n );\n\n this.subscriptions.add(this.allItems$.subscribe((allObjects) => (this.allIds = allObjects.map((obj) => obj.id))));\n\n const HEADER_SIZE = 30;\n const PAGINATION_SIZE = 35;\n const LINE_SIZE = 30;\n\n this.pagination$ = combineLatest([\n this.allItems$,\n this.actualPage$,\n this.widgetSize$,\n this.resultSet$,\n this.displayHeader$\n ]).pipe(\n map(([items, actualPage, size, rs, headerPresent]) => {\n const rows = Math.max(\n 1,\n Math.floor(\n (size.height - HEADER_SIZE - PAGINATION_SIZE - (headerPresent ? WIDGET_HEADER_HEIGHT : 0)) / LINE_SIZE\n )\n );\n const total = Object.values(rs.count ?? {}).reduce((p, c) => c.count + p, 0);\n const loadedPages = Math.ceil(items.length / rows);\n const page = actualPage <= loadedPages ? actualPage : Math.max(0, loadedPages - 1);\n const filtered = items.filter((_, idx) => idx >= rows * page && idx < rows * (page + 1));\n const filteredWithFillers =\n filtered.length === rows\n ? filtered\n : filtered.concat(\n new Array(rows - filtered.length).fill({\n metadata: { '__widget-table-filler': true }\n } as unknown as Item)\n );\n return {\n rows,\n page,\n items: filteredWithFillers,\n noFillersItems: filtered.length,\n total,\n totalPages: Math.ceil(total / rows),\n loaded: items.length,\n loadedPages\n };\n })\n );\n\n this.subscriptions.add(this.pagination$.pipe(auditTime(200)).subscribe(() => this.refresh()));\n\n this.columns$ = this.options$.pipe(\n map((options) => options?.columns ?? []),\n tap(() => setTimeout(() => this.refresh(), 500))\n );\n\n this.isContextMenuOpened$ = this.store.select(ContextMenuSelectors.opened);\n\n this.subscriptions.add(\n this.resultSet$\n .pipe(\n filter((rs) => !!rs),\n map((rs) => Object.keys(rs.items))\n )\n .subscribe((classes) => {\n if (this.currentClasses.length > 0 && !equal(this.currentClasses, classes)) {\n if (!this.optionsCopy) {\n this.optionsCopy = {};\n }\n delete this.optionsCopy.columns;\n this.emitManifest();\n }\n this.currentClasses = classes;\n })\n );\n\n this.selectedIds$ = this.store.select(DashboardSelectors.selectedItemIds);\n\n this.subscriptions.add(this.selectedIds$.subscribe((selectedIds) => this.selectedIds === selectedIds));\n\n this.store.dispatch(ClassActions.load());\n\n this.properties$ = combineLatest([this.resultSet$, this.classes$, this.fields$]).pipe(\n map(([rs, classes, fields]) => [\n ...Object.keys(rs.items)\n .map((classId) => (classes.find((cl) => cl.id === classId) ?? { attributes: [] }).attributes)\n .flat()\n .map((attr) => ({ technicalName: attr.technicalName, name: attr.name }))\n ]),\n map((props) => {\n const sortedProps = [...props];\n sortedProps.sort((pA, pB) => pA.name.toLocaleLowerCase().localeCompare(pB.name.toLocaleLowerCase()));\n return sortedProps;\n }),\n map((props) => props.map((prop) => ({ label: prop.name, property: prop.technicalName }))),\n tap(() => setTimeout(() => this.refresh(), 500))\n );\n\n this.allSelected$ = combineLatest([this.selectedIds$, this.allItems$]).pipe(\n map(([selectedIds, allObjects]) => {\n const allIds = allObjects.map((object) => object.id);\n return !allIds.find((id) => !selectedIds.includes(id));\n }),\n tap((allSelected) => (this.areAllSelected = allSelected))\n );\n\n this.quickOrder$ = combineLatest([this.store.select(DashboardSelectors.quickOrder), this.datasourceIds$]).pipe(\n map(([order, nqs]) => (nqs.length === 1 ? order[nqs[0]] : undefined))\n );\n\n this.subscriptions.add(this._refresh$.pipe(delay(100)).subscribe(() => this.cdr.detectChanges()));\n }\n\n refresh() {\n this._refresh$.next();\n this.isOpen = !this.isOpen;\n }\n\n emitManifest() {\n this.manifestModified.emit({\n widgetIndex: this.widgetIndex,\n manifest: { ...this.manifest, options: this.optionsCopy }\n });\n }\n\n addColumn() {\n if (!this.optionsCopy?.columns) {\n this.optionsCopy = { columns: [] };\n }\n this.optionsCopy.columns?.push({ label: '', property: '' });\n this.refresh();\n }\n\n changePropertyName($event: any, columnDef: ColumnDefinition) {\n columnDef.property = $event;\n this.refresh();\n }\n\n changeLabel($event: Event, columnDef: ColumnDefinition) {\n // @ts-ignore\n const newLabel = $event.currentTarget.value;\n if (columnDef.label !== newLabel) {\n columnDef.label = newLabel;\n this.refresh();\n }\n }\n\n deleteColumn(i: number) {\n this.optionsCopy?.columns?.splice(i, 1);\n this.refresh();\n }\n\n selection($event: MouseEvent, item: Item) {\n this.store.dispatch(DashboardActions.select({ id: item.id, cumulative: !$event.shiftKey }));\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n contextMenu($event: MouseEvent, item: Item) {\n if (this.manifest.contextMenu !== false) {\n $event.stopPropagation();\n $event.preventDefault();\n this.store.dispatch(\n ContextMenuActions.open({\n itemId: item.id,\n clientX: $event.clientX,\n clientY: $event.clientY,\n resultSet: Array.isArray(this.manifest.datasource) ? this.manifest.datasource[0] : this.manifest.datasource,\n from: 'table',\n allowObjectCreation: false\n })\n );\n this.contextMenuClickedId = item.id;\n }\n }\n\n invertLayers(idx: number, idxWith: number) {\n if (!!this.optionsCopy && !!this.optionsCopy.columns) {\n const tmp = this.optionsCopy.columns[idxWith];\n this.optionsCopy.columns[idxWith] = this.optionsCopy.columns[idx];\n this.optionsCopy.columns[idx] = tmp;\n this.refresh();\n }\n }\n\n selectAll($event: any) {\n if ($event) {\n this.store.dispatch(DashboardActions.selectMany({ ids: this.allIds }));\n } else {\n this.store.dispatch(DashboardActions.selectMany({ ids: [] }));\n }\n }\n\n setOrder(column: ColumnDefinition) {\n this.datasourceIds$\n .pipe(\n take(1),\n filter((nqs) => nqs.length === 1),\n withLatestFrom(this.quickOrder$)\n )\n .subscribe(([nqs, actualOrder]) => {\n this.store.dispatch(\n DashboardActions.quickOrder({\n datasourceId: nqs[0],\n attribute: column.attributeId ?? '',\n asc: this.nextOrder(column, actualOrder)\n })\n );\n });\n }\n\n private nextOrder(column: ColumnDefinition, actualOrder: ResultOrder | undefined): OrderValue {\n if (!actualOrder || actualOrder.attribute !== column.attributeId) {\n return 'asc';\n }\n return actualOrder.asc === 'asc' ? 'desc' : actualOrder.asc === 'desc' ? undefined : 'asc';\n }\n\n trackObjects(index: number, item: Item) {\n return item.id;\n }\n\n goToPage(number: number) {\n this.actualPage$.next(number);\n }\n}\n","<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n (click)=\"refresh()\"\n >\n <pry-settings\n (click)=\"refresh()\"\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n (triggerClick)=\"this.refresh()\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n <div\n *ngFor=\"let columnDef of optionsCopy?.columns ?? []; let i = index\"\n class=\"o-settings__popup__content__fields\"\n (click)=\"refresh()\"\n >\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.columns?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (click)=\"refresh()\"\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n bindLabel=\"label\"\n bindValue=\"property\"\n id=\"table_property\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"a-table-wrapper\">\n <ng-container *ngIf=\"pagination$ | async as pagination\">\n <ng-container *ngIf=\"pagination?.items ?? [] as allObjects\">\n <div\n class=\"no-result\"\n *ngIf=\"pagination.noFillersItems === 0\"\n [style.height.%]=\"pagination.totalPages > 0 ? 80 : 100\"\n >\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n\n <ng-container *ngIf=\"pagination.noFillersItems > 0\">\n <ng-container *ngIf=\"(selectedIds$ | async) ?? [] as selectedIds\">\n <ng-container *ngIf=\"(columns$ | async) ?? [] as columns\">\n <table class=\"a-table\" [attr.aria-label]=\"'@pry.widget.table.description' | i18n\">\n <thead>\n <tr>\n <th *ngIf=\"allObjects?.length ?? 0 > 0\">\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th *ngFor=\"let column of columns; let i = index\" resizable (click)=\"setOrder(column)\">\n <span>{{ column.label }}</span>\n <ng-container *ngIf=\"quickOrder$ | async as quickOrder\">\n <ng-container *ngIf=\"quickOrder.attribute === column.attributeId\">\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let item of allObjects\"\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n [class.filler]=\"item.metadata!['__widget-table-filler']\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n <td *ngFor=\"let column of columns\" class=\"u-ellipsis\">\n <ng-container *ngIf=\"column.property === 'metadata'\">\n <pry-metadata [item]=\"item\"></pry-metadata>\n </ng-container>\n <ng-container *ngIf=\"column.property === 'oClass'\">\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n />\n </p>\n </ng-container>\n <ng-container *ngIf=\"!['metadata', 'oClass'].includes(column.property)\">\n <pry-expand-value [value]=\"item | getValue : column.property | async\"></pry-expand-value>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <div class=\"a-table-pagination\" *ngIf=\"pagination.totalPages > 0\">\n <div class=\"a-table-pagination__spacing\">\n <div>\n <button (click)=\"goToPage(0)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button (click)=\"goToPage(pagination.page - 1)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n <p>{{ pagination.page + 1 }} / {{ pagination.loadedPages }}</p>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.page + 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.loadedPages - 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n ({{\n '@pry.widget.table.remaining' | i18n : { remaining: pagination.totalPages - pagination.loadedPages }\n }})\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</div>\n","export const enTranslations = {\n '@pry': {\n widget: {\n table: {\n addColumn: 'Add column',\n deleteColumn: 'Delete',\n property: 'Property to display',\n label: 'Column label',\n empty: 'No data to display',\n description: 'Dataset elements',\n remaining: '{{remaining}} pages to load'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n widget: {\n table: {\n addColumn: 'Ajouter une colonne',\n deleteColumn: 'Supprimer',\n property: 'Propriété à afficher',\n label: 'Libellé de la colonne',\n empty: 'Aucune donnée à afficher',\n description: 'Eléments du jeu de données',\n remaining: '{{remaining}} pages restant à charger'\n }\n }\n }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BaseWidgetComponent,\n BaseWidgetModule,\n PryCoreModule,\n PryDashboardModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { WidgetTableComponent } from './component/widget-table.component';\nimport { DetachRowDirective } from './expand-value/detach-row.directive';\nimport { ExpandValueComponent } from './expand-value/expand-value.component';\nimport { FormatNumberPipe } from './expand-value/format-number.pipe';\nimport { GetValuePipe } from './get-value/get-value.pipe';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { ResizableComponent } from './resizable/resizable.component';\nimport { ResizableDirective } from './resizable/resizable.directive';\nimport { PryWidgetTableCssComponent } from './style/css.component';\n\n@NgModule({\n declarations: [\n WidgetTableComponent,\n GetValuePipe,\n ResizableComponent,\n ResizableDirective,\n PryWidgetTableCssComponent,\n ExpandValueComponent,\n FormatNumberPipe,\n DetachRowDirective\n ],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n PryCoreModule,\n PryDashboardModule,\n PrySelectModule,\n PryIconModule,\n PryCheckboxModule,\n PryToggleModule,\n PryI18nModule\n ],\n exports: [WidgetTableComponent]\n})\nexport class WidgetTableModule extends BaseWidgetModule {\n constructor(private pryTranslateService: PryI18nService) {\n super();\n this.pryTranslateService.addLangObject('fr', 'widget-table', frTranslations);\n this.pryTranslateService.addLangObject('en', 'widget-table', enTranslations);\n }\n\n override getComponent() {\n return WidgetTableComponent as Type<BaseWidgetComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ResizableDirective","i2","i2.FormatNumberPipe","i1","i6.ResizableComponent","i7.ResizableDirective","i8.PryWidgetTableCssComponent","i9.ExpandValueComponent","i10.DetachRowDirective","i11.GetValuePipe"],"mappings":"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"}
1
+ {"version":3,"file":"provoly-dashboard-widgets-widget-table.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-table/resizable/resizable.directive.ts","../../../../projects/provoly/dashboard/widgets/widget-table/resizable/resizable.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/resizable/resizable.component.html","../../../../projects/provoly/dashboard/widgets/widget-table/style/css.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/format-number.pipe.ts","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/expand-value.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/expand-value.component.html","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/detach-row.directive.ts","../../../../projects/provoly/dashboard/widgets/widget-table/get-value/get-value.pipe.ts","../../../../projects/provoly/dashboard/widgets/widget-table/component/widget-table.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/component/widget-table.component.html","../../../../projects/provoly/dashboard/widgets/widget-table/i18n/en.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-table/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-table/widget-table.module.ts","../../../../projects/provoly/dashboard/widgets/widget-table/provoly-dashboard-widgets-widget-table.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { Directive, ElementRef, Inject, Output } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { distinctUntilChanged, map, switchMap, takeUntil, tap } from 'rxjs/operators';\n\n@Directive({\n selector: '[resizable]'\n})\nexport class ResizableDirective {\n @Output()\n readonly resizable = fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mousedown').pipe(\n tap((e) => e.preventDefault()),\n switchMap(() => {\n const domRect = this.elementRef.nativeElement.closest('th')?.getBoundingClientRect();\n const width = domRect?.width ?? 0;\n const right = domRect?.right ?? 0;\n\n return fromEvent<MouseEvent>(this.documentRef, 'mousemove').pipe(\n map(({ clientX }) => width + clientX - right),\n distinctUntilChanged(),\n takeUntil(fromEvent(this.documentRef, 'mouseup'))\n );\n })\n );\n\n constructor(\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(ElementRef)\n private readonly elementRef: ElementRef<HTMLElement>\n ) {}\n}\n","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'th[resizable]',\n templateUrl: './resizable.component.html'\n})\nexport class ResizableComponent {\n @HostBinding('style.width.px')\n width: number | null = null;\n\n onResize(width: number) {\n this.width = width;\n }\n}\n","<div class=\"wrapper\">\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n <div class=\"bar\" (resizable)=\"onResize($event)\"></div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-table-css',\n template: '',\n styleUrls: ['./_o-widget-table.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryWidgetTableCssComponent {}\n","import { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { PryI18nService, ValueType } from '@provoly/dashboard';\n\n@Pipe({ name: 'formatNumber' })\nexport class FormatNumberPipe implements PipeTransform {\n constructor(\n private decimalPipe: DecimalPipe,\n private i18nService: PryI18nService\n ) {}\n\n transform(toDisplay?: ValueType | ValueType[] | null, ...args: any[]): any {\n const result = { isNumber: false, text: `${!toDisplay ? '' : toDisplay}` };\n if (typeof toDisplay === 'number') {\n result.isNumber = true;\n result.text =\n this.decimalPipe\n .transform(toDisplay, '1.0-0')\n ?.replace(/,/g, this.i18nService.instant('@pry.format.thousands'))\n ?.replace(/\\./g, this.i18nService.instant('@pry.format.decimal')) || `${toDisplay}`;\n }\n return result;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { MultiMultipointValue, MultipointValue, PointValue, ValueType } from '@provoly/dashboard';\n\n@Component({\n selector: 'pry-expand-value',\n templateUrl: './expand-value.component.html'\n})\nexport class ExpandValueComponent {\n isArray: boolean = false;\n firstValue?: string | number | PointValue | MultipointValue | MultiMultipointValue | ValueType[] | null | undefined;\n rest: (string | number | PointValue | MultipointValue | MultiMultipointValue | ValueType[] | null | undefined)[] = [];\n\n @Input() set value(toDisplay: ValueType | ValueType[] | null) {\n if (Array.isArray(toDisplay) && toDisplay.length > 1) {\n this.isArray = true;\n const [firstValue, ...rest] = toDisplay;\n this.firstValue = firstValue;\n this.rest = rest;\n } else {\n this.isArray = false;\n this.firstValue = toDisplay;\n this.rest = [];\n }\n }\n}\n","<div class=\"a-expandable-value\" [class.-right]=\"(firstValue | formatNumber).isNumber\">\n <span class=\"a-expandable-value__initial\">{{ (firstValue | formatNumber).text }}{{ isArray ? ' (*)' : '' }}</span>\n <div class=\"a-expandable-value__expanded\" *ngIf=\"isArray\">\n <div *ngFor=\"let value of rest\">\n {{ (value | formatNumber).text }}\n </div>\n </div>\n</div>\n","import {\n AfterViewChecked,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Output\n} from '@angular/core';\n\n@Directive({\n selector: '[detachRow]'\n})\nexport class DetachRowDirective implements AfterViewChecked {\n @HostListener('click', ['$event']) clickEvt($event: MouseEvent): any {\n this.cdr.reattach();\n this.selectedValue.emit($event);\n }\n\n @Output() selectedValue: EventEmitter<MouseEvent> = new EventEmitter();\n\n constructor(\n private el: ElementRef,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngAfterViewChecked() {\n this.cdr.detach();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ClassSelectors, FieldSelectors, FieldType, Item, ItemUtils } from '@provoly/dashboard';\nimport { combineLatestWith } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Pipe({ name: 'getValue' })\nexport class GetValuePipe implements PipeTransform {\n constructor(private store: Store<any>) {}\n\n transform(value: Item, ...args: any[]): any {\n return this.store.select(ClassSelectors.classes).pipe(\n combineLatestWith(this.store.select(FieldSelectors.fields)),\n filter(([classes, fields]) => !!classes && classes.length > 0),\n map(([classes, fields]) => {\n const oClass = classes.find((cl) => cl.id === value.oClass);\n const attribute = oClass?.attributes.find((attr) => attr.technicalName === args[0]);\n if (!!attribute) {\n const field = fields.find((f) => f.id === attribute.field);\n if (\n field &&\n [\n FieldType.POINT,\n FieldType.MULTIPOINT,\n FieldType.LINE,\n FieldType.MULTILINE,\n FieldType.MULTILINE,\n FieldType.POLYGON,\n FieldType.MULTIPOLYGON\n ].includes(field.type)\n ) {\n // @ts-ignore\n const coordinates = JSON.stringify(ItemUtils.getAttributeCalculatedValue(value, attribute)?.coordinates);\n return coordinates && coordinates.length > 40 ? `${coordinates.substring(0, 40)}...` : coordinates;\n }\n return ItemUtils.getAttributeCalculatedValue(value, attribute);\n }\n return ItemUtils.getAttributeCalculatedValue(value, args[0]);\n })\n );\n }\n}\n","import { ChangeDetectorRef, Component, ElementRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n baseItemProperties,\n Class,\n ClassActions,\n ClassSelectors,\n ColumnDefinition,\n ConfigSelectors,\n ContextMenuActions,\n ContextMenuSelectors,\n DashboardActions,\n DashboardSelectors,\n DataWidgetComponent,\n Field,\n FieldSelectors,\n FieldType,\n Item,\n ItemUtils,\n OrderValue,\n ResultOrder,\n TableWidgetOptions,\n WIDGET_HEADER_HEIGHT\n} from '@provoly/dashboard';\nimport equal from 'fast-deep-equal/es6';\nimport { auditTime, BehaviorSubject, combineLatest, Observable, take } from 'rxjs';\nimport { delay, filter, map, tap, withLatestFrom } from 'rxjs/operators';\n\nexport interface Pagination {\n totalPages: number;\n page: number;\n rows: number;\n items: Item[];\n loaded: number;\n loadedPages: number;\n noFillersItems: number;\n}\n\n@Component({\n selector: 'pry-widget-table',\n templateUrl: './widget-table.component.html'\n})\nexport class WidgetTableComponent extends DataWidgetComponent {\n options$: Observable<TableWidgetOptions>;\n columns$: Observable<ColumnDefinition[]>;\n optionsCopy?: TableWidgetOptions;\n fields$: Observable<Field[]>;\n selectedIds$: Observable<string[]>;\n Array = Array;\n currentClasses: string[] = [];\n selectedIds: string[] = [];\n WIDGET_HEADER_HEIGHT = WIDGET_HEADER_HEIGHT;\n private classes$: Observable<Class[]>;\n properties$: Observable<{ label: string; property: string }[]>;\n allSelected$: Observable<boolean>;\n areAllSelected: boolean = false;\n allIds: string[] = [];\n contextMenuClickedId: string = '';\n isContextMenuOpened$: Observable<boolean>;\n quickOrder$: Observable<ResultOrder | undefined>;\n private _refresh$ = new BehaviorSubject<void>(undefined);\n actualPage$ = new BehaviorSubject<number>(0);\n pagination$: Observable<Pagination>;\n isOpen = false;\n\n constructor(store: Store<any>, el: ElementRef, private cdr: ChangeDetectorRef) {\n super(store, el);\n\n this.classes$ = this.store.select(ClassSelectors.classes);\n\n this.fields$ = combineLatest([this.resultSet$, this.classes$, this.store.select(FieldSelectors.fields)]).pipe(\n map(\n ([resultSet, classes, fields]) =>\n [\n ...ItemUtils.getFieldsForClasses(Object.keys(resultSet.items), classes, fields),\n ...baseItemProperties.map((p) => ({ name: p, id: p } as Field))\n ] as Field[]\n ),\n map((fields) => fields.filter((field) => field.type !== FieldType.RAW))\n );\n\n this.options$ = combineLatest([\n this.manifest$.pipe(map((manifest) => manifest.options as TableWidgetOptions)),\n this.resultSet$,\n this.classes$,\n this.fields$,\n this.store.select(ConfigSelectors.tableDefaultAttributesDefinitions)\n ]).pipe(\n map(([options, resultSet, classes, fields, defs]) => {\n if (!options.columns || options.columns.length === 0) {\n const attributes = ItemUtils.getAttributesFromRs(resultSet, classes, fields, defs);\n const uniqueProps = [...new Set(attributes.map(({ name, technicalName }) => ({ name, technicalName })))];\n\n options.columns = uniqueProps.map((property) => ({\n property: property.technicalName,\n label: property.name,\n attributeId: attributes.find((attr) => attr.technicalName === property.technicalName)?.id\n })) as ColumnDefinition[];\n }\n return options;\n })\n );\n\n this.subscriptions.add(\n this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n this.optionsCopy = { ...(JSON.parse(JSON.stringify(options)) as TableWidgetOptions) };\n this.refresh();\n })\n );\n\n this.subscriptions.add(this.allItems$.subscribe((allObjects) => (this.allIds = allObjects.map((obj) => obj.id))));\n\n const HEADER_SIZE = 30;\n const PAGINATION_SIZE = 35;\n const LINE_SIZE = 30;\n\n this.pagination$ = combineLatest([\n this.allItems$,\n this.actualPage$,\n this.widgetSize$,\n this.resultSet$,\n this.displayHeader$\n ]).pipe(\n map(([items, actualPage, size, rs, headerPresent]) => {\n const rows = Math.max(\n 1,\n Math.floor(\n (size.height - HEADER_SIZE - PAGINATION_SIZE - (headerPresent ? WIDGET_HEADER_HEIGHT.value : 0)) / LINE_SIZE\n )\n );\n const total = Object.values(rs.count ?? {}).reduce((p, c) => c.count + p, 0);\n const loadedPages = Math.ceil(items.length / rows);\n const page = actualPage <= loadedPages ? actualPage : Math.max(0, loadedPages - 1);\n const filtered = items.filter((_, idx) => idx >= rows * page && idx < rows * (page + 1));\n const filteredWithFillers =\n filtered.length === rows\n ? filtered\n : filtered.concat(\n new Array(rows - filtered.length).fill({\n metadata: { '__widget-table-filler': true }\n } as unknown as Item)\n );\n return {\n rows,\n page,\n items: filteredWithFillers,\n noFillersItems: filtered.length,\n total,\n totalPages: Math.ceil(total / rows),\n loaded: items.length,\n loadedPages\n };\n })\n );\n\n this.subscriptions.add(this.pagination$.pipe(auditTime(200)).subscribe(() => this.refresh()));\n\n this.columns$ = this.options$.pipe(\n map((options) => options?.columns ?? []),\n tap(() => setTimeout(() => this.refresh(), 500))\n );\n\n this.isContextMenuOpened$ = this.store.select(ContextMenuSelectors.opened);\n\n this.subscriptions.add(\n this.resultSet$\n .pipe(\n filter((rs) => !!rs),\n map((rs) => Object.keys(rs.items))\n )\n .subscribe((classes) => {\n if (this.currentClasses.length > 0 && !equal(this.currentClasses, classes)) {\n if (!this.optionsCopy) {\n this.optionsCopy = {};\n }\n delete this.optionsCopy.columns;\n this.emitManifest();\n }\n this.currentClasses = classes;\n })\n );\n\n this.selectedIds$ = this.store.select(DashboardSelectors.selectedItemIds);\n\n this.subscriptions.add(this.selectedIds$.subscribe((selectedIds) => this.selectedIds === selectedIds));\n\n this.store.dispatch(ClassActions.load());\n\n this.properties$ = combineLatest([this.resultSet$, this.classes$, this.fields$]).pipe(\n map(([rs, classes, fields]) => [\n ...Object.keys(rs.items)\n .map((classId) => (classes.find((cl) => cl.id === classId) ?? { attributes: [] }).attributes)\n .flat()\n .map((attr) => ({ technicalName: attr.technicalName, name: attr.name }))\n ]),\n map((props) => {\n const sortedProps = [...props];\n sortedProps.sort((pA, pB) => pA.name.toLocaleLowerCase().localeCompare(pB.name.toLocaleLowerCase()));\n return sortedProps;\n }),\n map((props) => props.map((prop) => ({ label: prop.name, property: prop.technicalName }))),\n tap(() => setTimeout(() => this.refresh(), 500))\n );\n\n this.allSelected$ = combineLatest([this.selectedIds$, this.allItems$]).pipe(\n map(([selectedIds, allObjects]) => {\n const allIds = allObjects.map((object) => object.id);\n return !allIds.find((id) => !selectedIds.includes(id));\n }),\n tap((allSelected) => (this.areAllSelected = allSelected))\n );\n\n this.quickOrder$ = combineLatest([this.store.select(DashboardSelectors.quickOrder), this.datasourceIds$]).pipe(\n map(([order, nqs]) => (nqs.length === 1 ? order[nqs[0]] : undefined))\n );\n\n this.subscriptions.add(this._refresh$.pipe(delay(100)).subscribe(() => this.cdr.detectChanges()));\n }\n\n refresh() {\n this._refresh$.next();\n this.isOpen = !this.isOpen;\n }\n\n emitManifest() {\n this.manifestModified.emit({\n widgetIndex: this.widgetIndex,\n manifest: { ...this.manifest, options: this.optionsCopy }\n });\n }\n\n addColumn() {\n if (!this.optionsCopy?.columns) {\n this.optionsCopy = { columns: [] };\n }\n this.optionsCopy.columns?.push({ label: '', property: '' });\n this.refresh();\n }\n\n changePropertyName($event: any, columnDef: ColumnDefinition) {\n columnDef.property = $event;\n this.refresh();\n }\n\n changeLabel($event: Event, columnDef: ColumnDefinition) {\n // @ts-ignore\n const newLabel = $event.currentTarget.value;\n if (columnDef.label !== newLabel) {\n columnDef.label = newLabel;\n this.refresh();\n }\n }\n\n deleteColumn(i: number) {\n this.optionsCopy?.columns?.splice(i, 1);\n this.refresh();\n }\n\n selection($event: MouseEvent, item: Item) {\n this.store.dispatch(DashboardActions.select({ id: item.id, cumulative: !$event.shiftKey }));\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n contextMenu($event: MouseEvent, item: Item) {\n if (this.manifest.contextMenu !== false) {\n $event.stopPropagation();\n $event.preventDefault();\n this.store.dispatch(\n ContextMenuActions.open({\n itemId: item.id,\n clientX: $event.clientX,\n clientY: $event.clientY,\n resultSet: Array.isArray(this.manifest.datasource) ? this.manifest.datasource[0] : this.manifest.datasource,\n from: 'table',\n allowObjectCreation: false\n })\n );\n this.contextMenuClickedId = item.id;\n }\n }\n\n invertLayers(idx: number, idxWith: number) {\n if (!!this.optionsCopy && !!this.optionsCopy.columns) {\n const tmp = this.optionsCopy.columns[idxWith];\n this.optionsCopy.columns[idxWith] = this.optionsCopy.columns[idx];\n this.optionsCopy.columns[idx] = tmp;\n this.refresh();\n }\n }\n\n selectAll($event: any) {\n if ($event) {\n this.store.dispatch(DashboardActions.selectMany({ ids: this.allIds }));\n } else {\n this.store.dispatch(DashboardActions.selectMany({ ids: [] }));\n }\n }\n\n setOrder(column: ColumnDefinition) {\n this.datasourceIds$\n .pipe(\n take(1),\n filter((nqs) => nqs.length === 1),\n withLatestFrom(this.quickOrder$)\n )\n .subscribe(([nqs, actualOrder]) => {\n this.store.dispatch(\n DashboardActions.quickOrder({\n datasourceId: nqs[0],\n attribute: column.attributeId ?? '',\n asc: this.nextOrder(column, actualOrder)\n })\n );\n });\n }\n\n private nextOrder(column: ColumnDefinition, actualOrder: ResultOrder | undefined): OrderValue {\n if (!actualOrder || actualOrder.attribute !== column.attributeId) {\n return 'asc';\n }\n return actualOrder.asc === 'asc' ? 'desc' : actualOrder.asc === 'desc' ? undefined : 'asc';\n }\n\n trackObjects(index: number, item: Item) {\n return item.id;\n }\n\n goToPage(number: number) {\n this.actualPage$.next(number);\n }\n}\n","<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n (click)=\"refresh()\"\n >\n <pry-settings\n (click)=\"refresh()\"\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n (triggerClick)=\"this.refresh()\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n <div\n *ngFor=\"let columnDef of optionsCopy?.columns ?? []; let i = index\"\n class=\"o-settings__popup__content__fields\"\n (click)=\"refresh()\"\n >\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.columns?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (click)=\"refresh()\"\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n bindLabel=\"label\"\n bindValue=\"property\"\n id=\"table_property\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"a-table-wrapper\">\n <ng-container *ngIf=\"pagination$ | async as pagination\">\n <ng-container *ngIf=\"pagination?.items ?? [] as allObjects\">\n <div\n class=\"no-result\"\n *ngIf=\"pagination.noFillersItems === 0\"\n [style.height.%]=\"pagination.totalPages > 0 ? 80 : 100\"\n >\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n\n <ng-container *ngIf=\"pagination.noFillersItems > 0\">\n <ng-container *ngIf=\"(selectedIds$ | async) ?? [] as selectedIds\">\n <ng-container *ngIf=\"(columns$ | async) ?? [] as columns\">\n <table class=\"a-table\" [attr.aria-label]=\"'@pry.widget.table.description' | i18n\">\n <thead>\n <tr>\n <th *ngIf=\"allObjects?.length ?? 0 > 0\">\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th *ngFor=\"let column of columns; let i = index\" resizable (click)=\"setOrder(column)\">\n <span>{{ column.label }}</span>\n <ng-container *ngIf=\"quickOrder$ | async as quickOrder\">\n <ng-container *ngIf=\"quickOrder.attribute === column.attributeId\">\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let item of allObjects\"\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n [class.filler]=\"item.metadata!['__widget-table-filler']\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n <td *ngFor=\"let column of columns\" class=\"u-ellipsis\">\n <ng-container *ngIf=\"column.property === 'metadata'\">\n <pry-metadata [item]=\"item\"></pry-metadata>\n </ng-container>\n <ng-container *ngIf=\"column.property === 'oClass'\">\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n />\n </p>\n </ng-container>\n <ng-container *ngIf=\"!['metadata', 'oClass'].includes(column.property)\">\n <pry-expand-value [value]=\"item | getValue : column.property | async\"></pry-expand-value>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <div class=\"a-table-pagination\" *ngIf=\"pagination.totalPages > 0\">\n <div class=\"a-table-pagination__spacing\">\n <div>\n <button (click)=\"goToPage(0)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button (click)=\"goToPage(pagination.page - 1)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n <p>{{ pagination.page + 1 }} / {{ pagination.loadedPages }}</p>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.page + 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.loadedPages - 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n ({{\n '@pry.widget.table.remaining' | i18n : { remaining: pagination.totalPages - pagination.loadedPages }\n }})\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</div>\n","export const enTranslations = {\n '@pry': {\n widget: {\n table: {\n addColumn: 'Add column',\n deleteColumn: 'Delete',\n property: 'Property to display',\n label: 'Column label',\n empty: 'No data to display',\n description: 'Dataset elements',\n remaining: '{{remaining}} pages to load'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n widget: {\n table: {\n addColumn: 'Ajouter une colonne',\n deleteColumn: 'Supprimer',\n property: 'Propriété à afficher',\n label: 'Libellé de la colonne',\n empty: 'Aucune donnée à afficher',\n description: 'Eléments du jeu de données',\n remaining: '{{remaining}} pages restant à charger'\n }\n }\n }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BaseWidgetComponent,\n BaseWidgetModule,\n PryCoreModule,\n PryDashboardModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { WidgetTableComponent } from './component/widget-table.component';\nimport { DetachRowDirective } from './expand-value/detach-row.directive';\nimport { ExpandValueComponent } from './expand-value/expand-value.component';\nimport { FormatNumberPipe } from './expand-value/format-number.pipe';\nimport { GetValuePipe } from './get-value/get-value.pipe';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { ResizableComponent } from './resizable/resizable.component';\nimport { ResizableDirective } from './resizable/resizable.directive';\nimport { PryWidgetTableCssComponent } from './style/css.component';\n\n@NgModule({\n declarations: [\n WidgetTableComponent,\n GetValuePipe,\n ResizableComponent,\n ResizableDirective,\n PryWidgetTableCssComponent,\n ExpandValueComponent,\n FormatNumberPipe,\n DetachRowDirective\n ],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n PryCoreModule,\n PryDashboardModule,\n PrySelectModule,\n PryIconModule,\n PryCheckboxModule,\n PryToggleModule,\n PryI18nModule\n ],\n exports: [WidgetTableComponent]\n})\nexport class WidgetTableModule extends BaseWidgetModule {\n constructor(private pryTranslateService: PryI18nService) {\n super();\n this.pryTranslateService.addLangObject('fr', 'widget-table', frTranslations);\n this.pryTranslateService.addLangObject('en', 'widget-table', enTranslations);\n }\n\n override getComponent() {\n return WidgetTableComponent as Type<BaseWidgetComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ResizableDirective","i2","i2.FormatNumberPipe","i1","i6.ResizableComponent","i7.ResizableDirective","i8.PryWidgetTableCssComponent","i9.ExpandValueComponent","i10.DetachRowDirective","i11.GetValuePipe"],"mappings":"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"}
@@ -42,7 +42,7 @@ class WidgetVegaComponent extends DataWidgetComponent {
42
42
  const data = WidgetVegaComponent.getValues(rs);
43
43
  const vegaSpec = WidgetVegaComponent.placeData(options, JSON.parse(JSON.stringify(options.baseSpec)), data);
44
44
  vegaSpec.width = vegaSpec.width ?? size.width - 5;
45
- vegaSpec.height = vegaSpec.height ?? size.height - 5 - (header ? WIDGET_HEADER_HEIGHT : 0);
45
+ vegaSpec.height = vegaSpec.height ?? size.height - 5 - (header ? WIDGET_HEADER_HEIGHT.value : 0);
46
46
  vegaSpec.autosize = vegaSpec.autosize ?? { type: 'fit', contains: 'padding' };
47
47
  vegaSpec.padding = vegaSpec.padding ?? 15;
48
48
  console.log(JSON.stringify(vegaSpec, undefined, 4));
@@ -1 +1 @@
1
- {"version":3,"file":"provoly-dashboard-widgets-widget-vega.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-vega/style/css.component.ts","../../../../projects/provoly/dashboard/widgets/widget-vega/component/widget-vega.component.ts","../../../../projects/provoly/dashboard/widgets/widget-vega/component/widget-vega.component.html","../../../../projects/provoly/dashboard/widgets/widget-vega/i18n/en.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-vega/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-vega/widget-vega.module.ts","../../../../projects/provoly/dashboard/widgets/widget-vega/provoly-dashboard-widgets-widget-vega.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-vega-css',\n template: '',\n styleUrls: ['./_o-widget-vega.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryWidgetVegaCssComponent {}\n","import { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, Component, ElementRef, Inject, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n AttributeSimpleValue,\n DataWidgetComponent,\n Item,\n PryI18nService,\n PrySnackbarService,\n ResultSet,\n ValueType,\n VegaWidgetOptions,\n WIDGET_HEADER_HEIGHT\n} from '@provoly/dashboard';\nimport { combineLatest, filter, Observable, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { View } from 'vega';\nimport embed, { VisualizationSpec } from 'vega-embed';\n\n@Component({\n selector: 'pry-widget-vega',\n templateUrl: './widget-vega.component.html'\n})\nexport class WidgetVegaComponent extends DataWidgetComponent implements AfterViewInit {\n @ViewChild('vega') vega!: ElementRef;\n view?: View;\n vegaSpec$: Observable<VisualizationSpec>;\n trigger$ = new Subject<void>();\n options$: Observable<any>;\n optionsCopy: VegaWidgetOptions = { baseSpec: {}, placeData: [] };\n formattedBaseSpec: string = '{}';\n initialFormattedBaseSpec: string = '{}';\n\n constructor(\n store: Store<any>,\n private translateService: PryI18nService,\n el: ElementRef,\n @Inject(DOCUMENT) private document: Document,\n private snackService: PrySnackbarService\n ) {\n super(store, el);\n\n this.options$ = this.manifest$.pipe(map((manifest) => (manifest.options ?? {}) as any));\n this.subscriptions.add(\n this.options$.subscribe((options) => {\n this.optionsCopy = JSON.parse(JSON.stringify(options));\n this.formattedBaseSpec = JSON.stringify(this.optionsCopy.baseSpec, undefined, 4);\n this.initialFormattedBaseSpec = JSON.stringify(this.optionsCopy.baseSpec, undefined, 4);\n })\n );\n\n this.vegaSpec$ = combineLatest([this.options$, this.resultSet$, this.widgetSize$, this.displayHeader$]).pipe(\n filter(([options, rs, size, header]) => !!rs),\n map(([options, rs, size, header]) => {\n const data = WidgetVegaComponent.getValues(rs);\n\n const vegaSpec = WidgetVegaComponent.placeData(options, JSON.parse(JSON.stringify(options.baseSpec)), data);\n\n vegaSpec.width = vegaSpec.width ?? size.width - 5;\n vegaSpec.height = vegaSpec.height ?? size.height - 5 - (header ? WIDGET_HEADER_HEIGHT : 0);\n vegaSpec.autosize = vegaSpec.autosize ?? { type: 'fit', contains: 'padding' };\n vegaSpec.padding = vegaSpec.padding ?? 15;\n\n console.log(JSON.stringify(vegaSpec, undefined, 4));\n\n return vegaSpec;\n })\n );\n }\n\n static getValues(data: ResultSet) {\n return Object.keys(data.items)\n .map((clazz) => data.items[clazz].map((item) => WidgetVegaComponent.transformProvolyModelToClassic(item)))\n .flat();\n }\n\n static transformProvolyModelToClassic(values: Item) {\n const result = {} as { [key: string]: ValueType };\n Object.keys(values.attributes).forEach((key) => {\n result[key] = (values.attributes[key] as AttributeSimpleValue).value;\n });\n\n return result;\n }\n\n static placeData(options: VegaWidgetOptions, baseSpec: any, data: { [key: string]: ValueType }[]) {\n const clone = JSON.parse(JSON.stringify(baseSpec));\n let ref = clone;\n (options.placeData ?? []).forEach((prop, idx, arr) => {\n if (ref) {\n if (idx < arr.length - 1) {\n ref = ref[prop];\n } else {\n ref[prop] = data;\n }\n }\n });\n return clone;\n }\n\n ngAfterViewInit() {\n this.subscriptions.add(\n combineLatest([this.vegaSpec$, this.trigger$, this.widgetSize$]).subscribe(([spec, _, size]) => {\n if (this.vega) {\n this.view?.finalize();\n\n // @ts-ignore\n if (this.document.debugFNTP !== undefined) {\n console.log(JSON.stringify(spec, undefined, 4));\n }\n\n embed(this.vega.nativeElement, JSON.parse(JSON.stringify(spec)), {\n actions: false,\n renderer: 'canvas',\n formatLocale: {\n decimal: this.translateService.instant('@pry.format.decimal'),\n thousands: this.translateService.instant('@pry.format.thousands'),\n grouping: this.translateService.instant('@pry.format.grouping'),\n currency: this.translateService.instant('@pry.format.currency'),\n percent: '\\u202f%'\n }\n }).then((result) => (this.view = result.view));\n } else {\n setTimeout(() => this.trigger$.next(), 100);\n }\n })\n );\n this.trigger$.next();\n }\n\n override toImage(): Promise<string> {\n return new Promise((resolve, reject) => {\n resolve(this.vega.nativeElement.querySelectorAll('canvas')[0].toDataURL('image/png'));\n });\n }\n\n emitManifest() {\n this.manifestModified.emit({\n widgetIndex: this.widgetIndex,\n manifest: { ...this.manifest, options: this.optionsCopy }\n });\n }\n\n changePlaceData($event: Event) {\n // @ts-ignore\n const expr = $event.currentTarget.value;\n this.optionsCopy.placeData = expr\n .split('.')\n .map((val: string) => (parseInt(val) + '' === `${val}` ? parseInt(val) : val));\n }\n\n changeSpec($event: Event) {\n try {\n // @ts-ignore\n this.optionsCopy.baseSpec = JSON.parse($event.currentTarget.value);\n } catch (e) {\n const message = this.snackService.notMitigatedOpen({\n type: 'error',\n message: this.translateService.instant('@pry.widget.vega.notParseableSpec'),\n action: this.translateService.instant('@pry.widget.vega.specReinit')\n });\n message?.subscribe(() => {\n this.optionsCopy.baseSpec = this.initialFormattedBaseSpec;\n });\n }\n }\n}\n","<pry-widget-vega-css></pry-widget-vega-css>\n<div class=\"o-widget o-widget--chart\">\n <pry-widget-header\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__fields\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"placeData_src\">{{ '@pry.widget.vega.placeData' | i18n }}</label>\n <input\n class=\"a-form-field\"\n id=\"placeData_src\"\n type=\"text\"\n [value]=\"(optionsCopy.placeData ?? []).join('.')\"\n (input)=\"changePlaceData($event)\"\n />\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"spec_src\">{{ '@pry.widget.vega.spec' | i18n }}</label>\n <textarea\n class=\"a-form-field a-text-area\"\n id=\"spec_src\"\n [value]=\"formattedBaseSpec\"\n (input)=\"changeSpec($event)\"\n ></textarea>\n </div>\n </div>\n </pry-settings>\n </pry-widget-header>\n <div class=\"o-widget--chart--chart\" #vega></div>\n</div>\n","export const enTranslations = {\n '@pry': {\n widget: {\n vega: {\n placeData: 'Expression leading to data in Vega config',\n spec: 'Vega configuration',\n notParseableSpec: 'Configuration is not a valid JSON',\n specReinit: 'Reinitialize'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n widget: {\n vega: {\n placeData: 'Expression menant à la place des données dans la configuration Vega',\n spec: 'Configuration Vega',\n notParseableSpec: \"La configuration n'est pas un JSON valide\",\n specReinit: 'Réinitialiser'\n }\n }\n }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BaseWidgetComponent,\n BaseWidgetModule,\n PryCoreModule,\n PryDashboardModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { WidgetMapModule } from '@provoly/dashboard/widgets/widget-map';\nimport { WidgetVegaComponent } from './component/widget-vega.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PryWidgetVegaCssComponent } from './style/css.component';\n\n@NgModule({\n declarations: [WidgetVegaComponent, PryWidgetVegaCssComponent],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n PryCoreModule,\n PryDashboardModule,\n PrySelectModule,\n PryIconModule,\n PryCheckboxModule,\n PryToggleModule,\n WidgetMapModule,\n PryI18nModule\n ],\n exports: [WidgetVegaComponent]\n})\nexport class WidgetVegaModule extends BaseWidgetModule {\n constructor(private pryTranslateService: PryI18nService) {\n super();\n this.pryTranslateService.addLangObject('fr', 'widget-vega', frTranslations);\n this.pryTranslateService.addLangObject('en', 'widget-vega', enTranslations);\n }\n\n override getComponent() {\n return WidgetVegaComponent as Type<BaseWidgetComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4.PryWidgetVegaCssComponent","i1"],"mappings":"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"}
1
+ {"version":3,"file":"provoly-dashboard-widgets-widget-vega.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-vega/style/css.component.ts","../../../../projects/provoly/dashboard/widgets/widget-vega/component/widget-vega.component.ts","../../../../projects/provoly/dashboard/widgets/widget-vega/component/widget-vega.component.html","../../../../projects/provoly/dashboard/widgets/widget-vega/i18n/en.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-vega/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-vega/widget-vega.module.ts","../../../../projects/provoly/dashboard/widgets/widget-vega/provoly-dashboard-widgets-widget-vega.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-vega-css',\n template: '',\n styleUrls: ['./_o-widget-vega.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryWidgetVegaCssComponent {}\n","import { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, Component, ElementRef, Inject, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n AttributeSimpleValue,\n DataWidgetComponent,\n Item,\n PryI18nService,\n PrySnackbarService,\n ResultSet,\n ValueType,\n VegaWidgetOptions,\n WIDGET_HEADER_HEIGHT\n} from '@provoly/dashboard';\nimport { combineLatest, filter, Observable, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { View } from 'vega';\nimport embed, { VisualizationSpec } from 'vega-embed';\n\n@Component({\n selector: 'pry-widget-vega',\n templateUrl: './widget-vega.component.html'\n})\nexport class WidgetVegaComponent extends DataWidgetComponent implements AfterViewInit {\n @ViewChild('vega') vega!: ElementRef;\n view?: View;\n vegaSpec$: Observable<VisualizationSpec>;\n trigger$ = new Subject<void>();\n options$: Observable<any>;\n optionsCopy: VegaWidgetOptions = { baseSpec: {}, placeData: [] };\n formattedBaseSpec: string = '{}';\n initialFormattedBaseSpec: string = '{}';\n\n constructor(\n store: Store<any>,\n private translateService: PryI18nService,\n el: ElementRef,\n @Inject(DOCUMENT) private document: Document,\n private snackService: PrySnackbarService\n ) {\n super(store, el);\n\n this.options$ = this.manifest$.pipe(map((manifest) => (manifest.options ?? {}) as any));\n this.subscriptions.add(\n this.options$.subscribe((options) => {\n this.optionsCopy = JSON.parse(JSON.stringify(options));\n this.formattedBaseSpec = JSON.stringify(this.optionsCopy.baseSpec, undefined, 4);\n this.initialFormattedBaseSpec = JSON.stringify(this.optionsCopy.baseSpec, undefined, 4);\n })\n );\n\n this.vegaSpec$ = combineLatest([this.options$, this.resultSet$, this.widgetSize$, this.displayHeader$]).pipe(\n filter(([options, rs, size, header]) => !!rs),\n map(([options, rs, size, header]) => {\n const data = WidgetVegaComponent.getValues(rs);\n\n const vegaSpec = WidgetVegaComponent.placeData(options, JSON.parse(JSON.stringify(options.baseSpec)), data);\n\n vegaSpec.width = vegaSpec.width ?? size.width - 5;\n vegaSpec.height = vegaSpec.height ?? size.height - 5 - (header ? WIDGET_HEADER_HEIGHT.value : 0);\n vegaSpec.autosize = vegaSpec.autosize ?? { type: 'fit', contains: 'padding' };\n vegaSpec.padding = vegaSpec.padding ?? 15;\n\n console.log(JSON.stringify(vegaSpec, undefined, 4));\n\n return vegaSpec;\n })\n );\n }\n\n static getValues(data: ResultSet) {\n return Object.keys(data.items)\n .map((clazz) => data.items[clazz].map((item) => WidgetVegaComponent.transformProvolyModelToClassic(item)))\n .flat();\n }\n\n static transformProvolyModelToClassic(values: Item) {\n const result = {} as { [key: string]: ValueType };\n Object.keys(values.attributes).forEach((key) => {\n result[key] = (values.attributes[key] as AttributeSimpleValue).value;\n });\n\n return result;\n }\n\n static placeData(options: VegaWidgetOptions, baseSpec: any, data: { [key: string]: ValueType }[]) {\n const clone = JSON.parse(JSON.stringify(baseSpec));\n let ref = clone;\n (options.placeData ?? []).forEach((prop, idx, arr) => {\n if (ref) {\n if (idx < arr.length - 1) {\n ref = ref[prop];\n } else {\n ref[prop] = data;\n }\n }\n });\n return clone;\n }\n\n ngAfterViewInit() {\n this.subscriptions.add(\n combineLatest([this.vegaSpec$, this.trigger$, this.widgetSize$]).subscribe(([spec, _, size]) => {\n if (this.vega) {\n this.view?.finalize();\n\n // @ts-ignore\n if (this.document.debugFNTP !== undefined) {\n console.log(JSON.stringify(spec, undefined, 4));\n }\n\n embed(this.vega.nativeElement, JSON.parse(JSON.stringify(spec)), {\n actions: false,\n renderer: 'canvas',\n formatLocale: {\n decimal: this.translateService.instant('@pry.format.decimal'),\n thousands: this.translateService.instant('@pry.format.thousands'),\n grouping: this.translateService.instant('@pry.format.grouping'),\n currency: this.translateService.instant('@pry.format.currency'),\n percent: '\\u202f%'\n }\n }).then((result) => (this.view = result.view));\n } else {\n setTimeout(() => this.trigger$.next(), 100);\n }\n })\n );\n this.trigger$.next();\n }\n\n override toImage(): Promise<string> {\n return new Promise((resolve, reject) => {\n resolve(this.vega.nativeElement.querySelectorAll('canvas')[0].toDataURL('image/png'));\n });\n }\n\n emitManifest() {\n this.manifestModified.emit({\n widgetIndex: this.widgetIndex,\n manifest: { ...this.manifest, options: this.optionsCopy }\n });\n }\n\n changePlaceData($event: Event) {\n // @ts-ignore\n const expr = $event.currentTarget.value;\n this.optionsCopy.placeData = expr\n .split('.')\n .map((val: string) => (parseInt(val) + '' === `${val}` ? parseInt(val) : val));\n }\n\n changeSpec($event: Event) {\n try {\n // @ts-ignore\n this.optionsCopy.baseSpec = JSON.parse($event.currentTarget.value);\n } catch (e) {\n const message = this.snackService.notMitigatedOpen({\n type: 'error',\n message: this.translateService.instant('@pry.widget.vega.notParseableSpec'),\n action: this.translateService.instant('@pry.widget.vega.specReinit')\n });\n message?.subscribe(() => {\n this.optionsCopy.baseSpec = this.initialFormattedBaseSpec;\n });\n }\n }\n}\n","<pry-widget-vega-css></pry-widget-vega-css>\n<div class=\"o-widget o-widget--chart\">\n <pry-widget-header\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__fields\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"placeData_src\">{{ '@pry.widget.vega.placeData' | i18n }}</label>\n <input\n class=\"a-form-field\"\n id=\"placeData_src\"\n type=\"text\"\n [value]=\"(optionsCopy.placeData ?? []).join('.')\"\n (input)=\"changePlaceData($event)\"\n />\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"spec_src\">{{ '@pry.widget.vega.spec' | i18n }}</label>\n <textarea\n class=\"a-form-field a-text-area\"\n id=\"spec_src\"\n [value]=\"formattedBaseSpec\"\n (input)=\"changeSpec($event)\"\n ></textarea>\n </div>\n </div>\n </pry-settings>\n </pry-widget-header>\n <div class=\"o-widget--chart--chart\" #vega></div>\n</div>\n","export const enTranslations = {\n '@pry': {\n widget: {\n vega: {\n placeData: 'Expression leading to data in Vega config',\n spec: 'Vega configuration',\n notParseableSpec: 'Configuration is not a valid JSON',\n specReinit: 'Reinitialize'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n widget: {\n vega: {\n placeData: 'Expression menant à la place des données dans la configuration Vega',\n spec: 'Configuration Vega',\n notParseableSpec: \"La configuration n'est pas un JSON valide\",\n specReinit: 'Réinitialiser'\n }\n }\n }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BaseWidgetComponent,\n BaseWidgetModule,\n PryCoreModule,\n PryDashboardModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { WidgetMapModule } from '@provoly/dashboard/widgets/widget-map';\nimport { WidgetVegaComponent } from './component/widget-vega.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PryWidgetVegaCssComponent } from './style/css.component';\n\n@NgModule({\n declarations: [WidgetVegaComponent, PryWidgetVegaCssComponent],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n PryCoreModule,\n PryDashboardModule,\n PrySelectModule,\n PryIconModule,\n PryCheckboxModule,\n PryToggleModule,\n WidgetMapModule,\n PryI18nModule\n ],\n exports: [WidgetVegaComponent]\n})\nexport class WidgetVegaModule extends BaseWidgetModule {\n constructor(private pryTranslateService: PryI18nService) {\n super();\n this.pryTranslateService.addLangObject('fr', 'widget-vega', frTranslations);\n this.pryTranslateService.addLangObject('en', 'widget-vega', enTranslations);\n }\n\n override getComponent() {\n return WidgetVegaComponent as Type<BaseWidgetComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4.PryWidgetVegaCssComponent","i1"],"mappings":"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"}