@provoly/dashboard 1.4.18 → 1.4.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.d.ts +2 -3
- package/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.d.ts +2 -3
- package/admin/components/admin-classes/store/admin-class.effects.d.ts +22 -8
- package/admin/components/admin-dataset/store/admin-dataset.effects.d.ts +13 -5
- package/admin/components/admin-fields/store/fields.effects.d.ts +7 -5
- package/admin/store/admin.effects.d.ts +3 -1
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +3 -3
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +3 -3
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +2 -2
- package/esm2022/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.mjs +2 -2
- package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +2 -2
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +5 -6
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.mjs +5 -6
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/store/admin-class.effects.mjs +14 -13
- package/esm2022/admin/components/admin-dataset/admin-dataset.component.mjs +3 -3
- package/esm2022/admin/components/admin-dataset/admin-form-dataset/admin-form-dataset.component.mjs +3 -3
- package/esm2022/admin/components/admin-dataset/store/admin-dataset.effects.mjs +7 -8
- package/esm2022/admin/components/admin-environment/store/environment.effects.mjs +2 -2
- package/esm2022/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.mjs +2 -2
- package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +2 -2
- package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +4 -4
- package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +7 -10
- package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +3 -3
- package/esm2022/admin/components/admin-links/admin-links.component.mjs +3 -3
- package/esm2022/admin/components/admin-links/store/links.effects.mjs +2 -2
- package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +2 -2
- package/esm2022/admin/components/admin-metadata/admin-metadata.component.mjs +2 -2
- package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.effects.mjs +2 -2
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +2 -2
- package/esm2022/admin/components/admin-predicates/store/predicates.effects.mjs +2 -2
- package/esm2022/admin/components/admin-relation-types/admin-relation-types.component.mjs +2 -2
- package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +2 -2
- package/esm2022/admin/components/shared/add-category-modal/add-category-modal.component.mjs +2 -2
- package/esm2022/admin/store/admin.effects.mjs +2 -2
- package/esm2022/components/metadata-editor/store/metadata.effects.mjs +2 -2
- package/esm2022/components/text-editor/component/text-editor.component.mjs +2 -2
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -4
- package/esm2022/dataset/components/dataset.component.mjs +4 -4
- package/esm2022/filters/autocomplete/autocomplete.component.mjs +4 -4
- package/esm2022/filters/number/number-filter.component.mjs +2 -2
- package/esm2022/filters/text/text-filter.component.mjs +2 -2
- package/esm2022/import/components/form/import-form.component.mjs +2 -2
- package/esm2022/import/components/list/import-list.component.mjs +2 -2
- package/esm2022/import/store/import.effects.mjs +2 -2
- package/esm2022/lib/core/components/select/select.component.mjs +2 -2
- package/esm2022/lib/core/components/share/access-rights-share-modal/access-rights-share-modal.component.mjs +3 -3
- package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +2 -2
- package/esm2022/lib/core/components/upload/upload.component.mjs +2 -2
- package/esm2022/lib/core/errors/http-error-interceptor.service.mjs +2 -2
- package/esm2022/lib/core/model/filter.interface.mjs +1 -1
- package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +3 -4
- package/esm2022/lib/core/store/category/category.actions.mjs +3 -3
- package/esm2022/lib/core/store/category/category.effects.mjs +10 -6
- package/esm2022/lib/core/store/class/class.actions.mjs +3 -3
- package/esm2022/lib/core/store/class/class.effects.mjs +10 -6
- package/esm2022/lib/core/store/config/config.actions.mjs +2 -2
- package/esm2022/lib/core/store/config/config.effects.mjs +13 -8
- package/esm2022/lib/core/store/config/open-map-tiles.service.mjs +2 -2
- package/esm2022/lib/core/store/data-source/data-source.actions.mjs +8 -8
- package/esm2022/lib/core/store/data-source/data-source.effects.mjs +21 -21
- package/esm2022/lib/core/store/field/field.actions.mjs +3 -3
- package/esm2022/lib/core/store/field/field.effects.mjs +10 -6
- package/esm2022/lib/core/store/image/image.effects.mjs +2 -2
- package/esm2022/lib/core/store/item/item.effects.mjs +2 -2
- package/esm2022/lib/core/store/relation-types/relation-types.actions.mjs +4 -4
- package/esm2022/lib/core/store/relation-types/relation-types.effects.mjs +11 -10
- package/esm2022/lib/core/store/search/search.actions.mjs +1 -1
- package/esm2022/lib/core/store/search/search.effects.mjs +3 -2
- package/esm2022/lib/core/store/search/search.selectors.mjs +3 -1
- package/esm2022/lib/core/store/search/search.service.mjs +4 -9
- package/esm2022/lib/dashboard/action-bus/effect/action-bus.effects.mjs +2 -2
- package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +2 -2
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +29 -23
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-list/datasource-list.component.mjs +3 -4
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +2 -2
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +2 -2
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +2 -2
- package/esm2022/lib/dashboard/store/manifest.service.mjs +2 -2
- package/esm2022/lib/dashboard/store/refresh.service.mjs +2 -2
- package/esm2022/lib/dashboard/store/wms.service.mjs +2 -2
- package/esm2022/notification/components/notification/content/notification-content.component.mjs +2 -2
- package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +3 -5
- package/esm2022/pipeline/factory/pipeline-component-factory.service.mjs +2 -2
- package/esm2022/pipeline/store/pipeline.effects.mjs +2 -2
- package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +2 -3
- package/esm2022/pipeline-components/input-datasource/input-datasource.module.mjs +2 -2
- package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +2 -2
- package/esm2022/pipeline-components/output-dataset/output-dataset.module.mjs +2 -2
- package/esm2022/restitution/components/restitution/restitution.component.mjs +5 -5
- package/esm2022/search/search-fulltext/store/search-fulltext.effects.mjs +2 -2
- package/esm2022/search/search-home/search-home.component.mjs +3 -4
- package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +2 -2
- package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +2 -2
- package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +1 -1
- package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +2 -2
- package/esm2022/search/search-multi-class/store/search-multi-class.effects.mjs +2 -2
- package/esm2022/search/search-tools/search-tools.component.mjs +5 -6
- package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +2 -2
- package/esm2022/toolbox/components/named-query/named-query.component.mjs +2 -2
- package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +2 -2
- package/esm2022/toolbox/components/toolbox.component.mjs +2 -2
- package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +2 -2
- package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +2 -2
- package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +2 -2
- package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +2 -2
- package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +10 -13
- package/esm2022/widgets/widget-image/component/widget-image.component.mjs +2 -2
- package/esm2022/widgets/widget-table/component/widget-table.component.mjs +3 -3
- package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +2 -2
- package/esm2022/widgets/widget-table/resizable/resizable.directive.mjs +2 -2
- package/esm2022/widgets/widget-template/component/widget-template.component.mjs +2 -2
- package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +2 -2
- package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +2 -2
- package/fesm2022/provoly-dashboard-admin.mjs +121 -123
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +12 -13
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-text-editor.mjs +1 -2
- package/fesm2022/provoly-dashboard-components-text-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +5 -6
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +3 -3
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-number.mjs +1 -2
- package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-text.mjs +1 -2
- package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-import.mjs +5 -6
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-notification.mjs +3 -4
- package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +2 -3
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +2 -2
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline.mjs +16 -18
- package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +4 -4
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-search.mjs +19 -20
- package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +3 -4
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +1 -2
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +1 -2
- package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +1 -2
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +1 -2
- package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +8 -12
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-image.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-image.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +2 -3
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-template.mjs +1 -2
- package/fesm2022/provoly-dashboard-widgets-widget-template.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +1 -2
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +1 -2
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +989 -975
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/model/filter.interface.d.ts +1 -0
- package/lib/core/store/category/category.actions.d.ts +7 -3
- package/lib/core/store/category/category.effects.d.ts +4 -2
- package/lib/core/store/class/class.actions.d.ts +7 -3
- package/lib/core/store/class/class.effects.d.ts +4 -2
- package/lib/core/store/config/config.actions.d.ts +5 -1
- package/lib/core/store/config/config.effects.d.ts +12 -4
- package/lib/core/store/data-source/data-source.actions.d.ts +23 -11
- package/lib/core/store/data-source/data-source.effects.d.ts +23 -15
- package/lib/core/store/field/field.actions.d.ts +7 -3
- package/lib/core/store/field/field.effects.d.ts +4 -2
- package/lib/core/store/relation-types/relation-types.actions.d.ts +9 -5
- package/lib/core/store/relation-types/relation-types.effects.d.ts +8 -6
- package/lib/core/store/search/search.actions.d.ts +2 -0
- package/lib/core/store/search/search.selectors.d.ts +5 -0
- package/lib/core/store/search/search.service.d.ts +1 -1
- package/lib/dashboard/components/dashboard.component.d.ts +5 -3
- package/package.json +11 -11
- package/search/search-mono-class/store/search-mono-class.effects.d.ts +1 -1
- package/widgets/widget-graph/component/widget-graph.component.d.ts +2 -5
|
@@ -6,8 +6,7 @@ import { Component, NgModule } from '@angular/core';
|
|
|
6
6
|
import { FormsModule } from '@angular/forms';
|
|
7
7
|
import * as i1 from '@provoly/dashboard';
|
|
8
8
|
import { BaseTooltipComponent, ClassSelectors, BaseTooltipModule, PryCoreModule } from '@provoly/dashboard';
|
|
9
|
-
import { map, of } from 'rxjs';
|
|
10
|
-
import { withLatestFrom } from 'rxjs/operators';
|
|
9
|
+
import { map, withLatestFrom, of } from 'rxjs';
|
|
11
10
|
import * as i2 from '@ngrx/store';
|
|
12
11
|
import * as i4 from '@provoly/dashboard/components/data-format';
|
|
13
12
|
import { PryDataFormatModule } from '@provoly/dashboard/components/data-format';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provoly-dashboard-tooltips-attribute.mjs","sources":["../../../../projects/provoly/dashboard/tooltips/attribute/attribute-tooltip.component.ts","../../../../projects/provoly/dashboard/tooltips/attribute/attribute-tooltip.component.html","../../../../projects/provoly/dashboard/tooltips/attribute/attribute-tooltip.module.ts","../../../../projects/provoly/dashboard/tooltips/attribute/provoly-dashboard-tooltips-attribute.ts"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\nimport { Attribute, BaseTooltipComponent, ClassSelectors, Field, TranslateIdPipe } from '@provoly/dashboard';\nimport { map, Observable, of } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { withLatestFrom } from 'rxjs
|
|
1
|
+
{"version":3,"file":"provoly-dashboard-tooltips-attribute.mjs","sources":["../../../../projects/provoly/dashboard/tooltips/attribute/attribute-tooltip.component.ts","../../../../projects/provoly/dashboard/tooltips/attribute/attribute-tooltip.component.html","../../../../projects/provoly/dashboard/tooltips/attribute/attribute-tooltip.module.ts","../../../../projects/provoly/dashboard/tooltips/attribute/provoly-dashboard-tooltips-attribute.ts"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\nimport { Attribute, BaseTooltipComponent, ClassSelectors, Field, TranslateIdPipe } from '@provoly/dashboard';\nimport { map, Observable, of } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { withLatestFrom } from 'rxjs';\n\n@Component({\n selector: 'pry-attribute-tooltip',\n templateUrl: './attribute-tooltip.component.html'\n})\nexport class AttributeTooltipComponent extends BaseTooltipComponent implements OnInit {\n protected attributes$!: Observable<Attribute[]>;\n\n constructor(\n private translateIdPipe: TranslateIdPipe,\n private store: Store<any>\n ) {\n super();\n this.context = this.context ?? { attributes: [] };\n }\n\n ngOnInit() {\n this.attributes$ = this.store.select(ClassSelectors.classes).pipe(\n map((classes) => {\n return classes\n .map((c) => c.attributes)\n .flat()\n .filter((attr) => this.context.attributes.includes(attr.id));\n })\n );\n }\n\n getValue(attrTechnicalName: string, limit = 9999): Observable<string | number> {\n return this._getValue(attrTechnicalName).pipe(\n withLatestFrom(this.attributes$),\n map(([value, attributes]) => {\n const field = attributes.find((attr) => attr.technicalName === attrTechnicalName)?.field;\n switch (typeof value) {\n case 'undefined':\n return '';\n case 'number':\n case 'string':\n return value;\n default:\n const result = JSON.stringify(value);\n return result.length > limit ? `${result.substring(0, limit)}...` : result;\n }\n })\n );\n }\n\n // attribute: 'id' | 'oClass' | attributeTechnicalName\n _getValue(attribute: string): Observable<string | undefined | number> {\n if (!this.data.item.properties) {\n // This is for Provoly-like items\n switch (attribute) {\n case 'id':\n return of(this.data.item[attribute]);\n case 'oClass':\n return this.translateIdPipe.transform(this.data.item[attribute], {\n type: 'class',\n output: 'name'\n }) as Observable<string>;\n default:\n return of(this.data.item.attributes[attribute]?.value);\n }\n } else {\n // This is for other items, like WMSFeatures\n return of(\n this.data.item.properties.find((prop: { key: string; value: string }) => prop.key === attribute)?.value\n );\n }\n }\n}\n","<div class=\"m-tooltip__item__content\">\n <h3 class=\"a-h3 -attribute\">\n <img\n [src]=\"data.item | translateItemToSymbol | async\"\n [alt]=\"data.item.oClass | translateId: { type: 'class', output: 'name' } | async\"\n [title]=\"data.item.oClass | translateId: { type: 'class', output: 'name' } | async\"\n width=\"32\"\n aria-hidden=\"true\"\n />\n <span [title]=\"data.item.oClass | translateId: { type: 'class', output: 'name' } | async\">{{\n data.item.oClass | translateId: { type: 'class', output: 'name' } | async\n }}</span>\n </h3>\n @for (attribute of attributes$ | async; track attribute) {\n <p [title]=\"getValue(attribute.technicalName) | async | dataFormat: attribute.field\">\n <span>{{ attribute.name }}:</span>\n {{ getValue(attribute.technicalName, 40) | async | dataFormat: attribute.field }}\n </p>\n }\n</div>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BaseTooltipComponent, BaseTooltipModule, PryCoreModule } from '@provoly/dashboard';\nimport { AttributeTooltipComponent } from './attribute-tooltip.component';\nimport { PryDataFormatModule } from '@provoly/dashboard/components/data-format';\n\n@NgModule({\n declarations: [AttributeTooltipComponent],\n imports: [CommonModule, FormsModule, OverlayModule, PryCoreModule, PryDataFormatModule],\n exports: [AttributeTooltipComponent]\n})\nexport class PryAttributeTooltipModule extends BaseTooltipModule {\n override getComponent() {\n return AttributeTooltipComponent as Type<BaseTooltipComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Component, ViewEncapsulation, NgModule } from '@angular/core';
|
|
3
3
|
import * as i4 from '@provoly/dashboard';
|
|
4
4
|
import { DataWidgetComponent, ClassSelectors, WIDGET_HEADER_HEIGHT, BaseWidgetModule, PryCoreModule, PryDashboardModule, PrySelectModule, PryIconModule, PryToggleModule, PryI18nModule } from '@provoly/dashboard';
|
|
5
|
-
import { map, combineLatest, startWith } from 'rxjs';
|
|
6
|
-
import { filter } from 'rxjs/operators';
|
|
5
|
+
import { map, combineLatest, filter, startWith } from 'rxjs';
|
|
7
6
|
import * as i1 from '@ngrx/store';
|
|
8
7
|
import * as i2 from '@angular/common';
|
|
9
8
|
import { CommonModule, AsyncPipe } from '@angular/common';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provoly-dashboard-widgets-widget-analytic.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-analytic/style/css.component.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/component/widget-analytic.component.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/component/widget-analytic.component.html","../../../../projects/provoly/dashboard/widgets/widget-analytic/i18n/en.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/widget-analytic.module.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/provoly-dashboard-widgets-widget-analytic.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-analytic-css',\n template: '',\n styleUrls: ['./_o-widget-analytic.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryWidgetAnalyticCssComponent {}\n","import { Component, ElementRef } from '@angular/core';\nimport {\n AnalyticWidgetOptions,\n Attribute,\n AttributeSimpleValue,\n Class,\n ClassSelectors,\n DataWidgetComponent,\n Field,\n Item,\n ResultSet,\n WIDGET_HEADER_HEIGHT\n} from '@provoly/dashboard';\nimport { combineLatest, map, Observable, startWith } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { filter } from 'rxjs/operators';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'pry-widget-analytic',\n templateUrl: './widget-analytic.component.html'\n})\nexport class WidgetAnalyticComponent extends DataWidgetComponent {\n optionsCopy: AnalyticWidgetOptions = { primaryProp: '', secondaryProp: '', verticalProp: '', valueProp: '' };\n options$: Observable<AnalyticWidgetOptions>;\n\n primaryProperty$: Observable<string[]>;\n secondaryProperty$: Observable<string[]>;\n verticalProperty$: Observable<string[]>;\n totalProperty$: Observable<string[]>;\n grandTotalProperty$: Observable<string[]>;\n lines$: Observable<{ name: string; value: { [key: string]: { [key: string]: any } | any } }[]>;\n totals$: Observable<{ name: string; value: { [key: string]: { [key: string]: any } } }[]>;\n grandTotals$: Observable<{ name: any; value: { [p: string]: any } }[]>;\n colorMap$: Observable<{ [vertical: string]: { [primary: string]: string | undefined } }>;\n height$: Observable<number>;\n classes$: Observable<Class[]>;\n availableProperties$: Observable<Attribute[]>;\n valuePropField$: Observable<Field | undefined>;\n\n change($event: string, prop: 'primaryProp' | 'secondaryProp' | 'valueProp' | 'verticalProp') {\n this.optionsCopy[prop] = $event;\n }\n\n changeColorConfig($event: string | string[], prop: 'prop' | 'colors') {\n switch (prop) {\n case 'prop': {\n this.optionsCopy.colorConfig!.prop = $event as string;\n break;\n }\n case 'colors': {\n this.optionsCopy.colorConfig!.colors = $event as string[];\n break;\n }\n }\n }\n\n constructor(store: Store<any>, el: ElementRef) {\n super(store, el);\n this.options$ = this.manifest$.pipe(map((manifest) => (manifest.options ?? {}) as AnalyticWidgetOptions));\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.height$ = combineLatest([this.widgetSize$, this.displayHeader$]).pipe(\n map(([size, header]) => size.height - (header ? WIDGET_HEADER_HEIGHT.value : 0))\n );\n this.subscriptions.add(\n this.options$.subscribe((options) => {\n this.optionsCopy = structuredClone(options);\n })\n );\n this.primaryProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n filter(([options]) => !!options.primaryProp),\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.primaryProp))\n );\n this.secondaryProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n filter(([options]) => !!options.secondaryProp),\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.secondaryProp!, 1))\n );\n this.verticalProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n filter(([options]) => !!options.verticalProp),\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.verticalProp, 1))\n );\n this.totalProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.verticalProp, 2))\n );\n this.grandTotalProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.verticalProp, 3))\n );\n\n this.lines$ = combineLatest([\n this.options$,\n this.primaryProperty$.pipe(startWith([])),\n this.secondaryProperty$.pipe(startWith(undefined)),\n this.verticalProperty$.pipe(startWith([])),\n this.resultSet$\n ]).pipe(\n map(([options, primaryProps, secondaryProps, verticalProps, rs]) =>\n this.createValueMap(verticalProps, primaryProps, secondaryProps, rs, options, 1)\n )\n );\n\n this.totals$ = combineLatest([\n this.options$,\n this.primaryProperty$,\n this.secondaryProperty$,\n this.totalProperty$,\n this.resultSet$\n ]).pipe(\n map(([options, primaryProps, secondaryProps, verticalProps, rs]) =>\n this.createValueMap(verticalProps, primaryProps, secondaryProps, rs, options, 2)\n )\n );\n\n this.grandTotals$ = combineLatest([\n this.options$,\n this.primaryProperty$,\n this.grandTotalProperty$,\n this.resultSet$\n ]).pipe(\n map(([options, primaryProps, verticalProps, rs]) =>\n this.createValueMap(verticalProps, primaryProps, undefined, rs, options, 3)\n )\n );\n\n this.colorMap$ = combineLatest([\n this.options$,\n this.resultSet$,\n this.verticalProperty$,\n this.primaryProperty$\n ]).pipe(\n filter(([options]) => !!options.colorConfig),\n map(([options, rs, vertical, primary]) => this.createColorMap(vertical, primary, rs, options))\n );\n\n this.availableProperties$ = combineLatest([this.classes$, this.resultSet$]).pipe(\n map(([classes, rs]) => {\n const presentClassesId = Object.keys(rs.items);\n const presentClasses = presentClassesId\n .map((classId) => classes.find((cl) => cl.id === classId))\n .filter((cl) => !!cl) as Class[];\n return presentClasses.map((cl) => cl.attributes).flat();\n })\n );\n\n this.valuePropField$ = combineLatest([this.availableProperties$, this.options$]).pipe(\n map(([attributes, options]) => attributes.find((attr) => attr.technicalName === options.valueProp)?.field)\n );\n }\n\n private matchAttributeValue(item: Item, prop?: string, comparisonValue?: string) {\n if (prop === 'level' && !('level' in item.attributes)) {\n return comparisonValue === '1';\n }\n return comparisonValue && prop ? (item.attributes[prop] as AttributeSimpleValue).value == comparisonValue : true;\n }\n\n private createValueMap(\n verticalProps: string[],\n primaryProps: string[],\n secondaryProps: string[] | undefined,\n rs: ResultSet,\n options: AnalyticWidgetOptions,\n level?: number\n ) {\n return verticalProps.map((vertical) => {\n const value = {} as { [key: string]: { [key: string]: any } | any };\n primaryProps.forEach((primary) => {\n (secondaryProps ?? [undefined]).forEach((secondary) => {\n const matchingItem = (rs.items[Object.keys(rs.items)[0]] ?? []).find(\n (item) =>\n this.matchAttributeValue(item, options.primaryProp, primary) &&\n this.matchAttributeValue(item, options.secondaryProp, secondary) &&\n this.matchAttributeValue(item, options.verticalProp, vertical) &&\n this.matchAttributeValue(item, 'level', level + '')\n );\n if (!!matchingItem) {\n if (!!secondary) {\n if (!value[primary]) {\n value[primary] = {};\n }\n value[primary][secondary] = (matchingItem!.attributes[options.valueProp] as AttributeSimpleValue).value;\n } else {\n value[primary] = (matchingItem!.attributes[options.valueProp] as AttributeSimpleValue)?.value;\n }\n }\n });\n });\n return { name: vertical, value };\n });\n }\n\n private getPropertyLabelsForLevel(rs: ResultSet, property: string, level?: number) {\n const values = Object.values(rs.items)\n .map((items) =>\n items\n .filter((item) =>\n level && 'level' in item.attributes\n ? [level, '' + level].includes(\n (item.attributes['level'] as AttributeSimpleValue).value as string | number\n )\n : level === undefined || level === 1\n )\n .map((item) => (item.attributes[property] as AttributeSimpleValue)?.value + '')\n )\n .flat()\n .flat();\n return [...new Set(values)];\n }\n\n createColorMap(verticalProps: string[], primaryProps: string[], rs: ResultSet, options: AnalyticWidgetOptions) {\n return options.colorConfig\n ? Object.fromEntries(\n verticalProps.map((vertical) => [\n vertical,\n Object.fromEntries(\n primaryProps.map((primary) => {\n const matchingItem = (rs.items[Object.keys(rs.items)[0]] ?? []).find(\n (item) =>\n this.matchAttributeValue(item, options.primaryProp, primary) &&\n this.matchAttributeValue(item, options.verticalProp, vertical)\n );\n\n return [\n primary,\n matchingItem && (matchingItem.attributes[options.valueProp] as AttributeSimpleValue).value !== 0\n ? options.colorConfig?.colors[\n ((matchingItem.attributes[options.colorConfig!.prop] as AttributeSimpleValue).value as number) -\n 1\n ]\n : '#FFFFFF'\n ];\n })\n )\n ])\n )\n : {};\n }\n\n toggleColorConfig($event: boolean) {\n if ($event !== !!this.optionsCopy.colorConfig) {\n if (!this.optionsCopy.colorConfig) {\n this.optionsCopy.colorConfig = { prop: '', colors: [] };\n } else {\n this.optionsCopy.colorConfig = undefined;\n }\n }\n }\n\n modifyColorScheme($event?: string, index?: number) {\n $event && index !== undefined\n ? (this.optionsCopy.colorConfig!.colors[index] = $event)\n : this.optionsCopy.colorConfig!.colors.push('#FFFFFF');\n }\n\n removeColor(index: number) {\n this.optionsCopy.colorConfig!.colors.splice(index, 1);\n }\n\n drop(event: CdkDragDrop<string[]>) {\n this.optionsCopy.colorConfig!.colors.splice(\n event.currentIndex,\n 0,\n this.optionsCopy.colorConfig!.colors.splice(event.previousIndex, 1)[0]\n );\n }\n\n override emitManifest() {\n this.manifestModified.emit({\n widgetIndex: this.widgetIndex,\n manifest: { ...this.manifest, options: this.optionsCopy }\n });\n }\n}\n","<pry-widget-analytic-css></pry-widget-analytic-css>\n<div class=\"o-widget o-widget__analytic\">\n @if (displayHeader$ | async) {\n <pry-widget-header\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=\"primaryProp\">{{ '@pry.widget.analytic.primaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'primaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.primaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"primaryProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"secondaryProp\">{{ '@pry.widget.analytic.secondaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'secondaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.secondaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"secondaryProp\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"verticalProp\">{{ '@pry.widget.analytic.verticalProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'verticalProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.verticalProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"verticalProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"valueProp\">{{ '@pry.widget.analytic.valueProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'valueProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.valueProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"valueProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleColorConfig($event)\" [ngModel]=\"!!optionsCopy.colorConfig\">\n {{ '@pry.widget.analytic.colorConfig' | i18n }}\n </pry-checkbox>\n @if (optionsCopy.colorConfig) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colorProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorConfig($event, 'prop')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.colorConfig.prop\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"colorProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colors' | i18n }}</label>\n <div\n class=\"o-widget__analytic__color-picker-container u-display-flex -align-center\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n cdkDropListOrientation=\"horizontal\"\n >\n @for (color of optionsCopy.colorConfig.colors; track color; let i = $index) {\n <div class=\"o-widget__analytic__color-picker\" cdkDrag>\n <pry-color-picker\n [ngModel]=\"color\"\n (ngModelChange)=\"modifyColorScheme($event, i)\"\n ></pry-color-picker>\n <button (click)=\"removeColor(i)\" class=\"o-widget__analytic__color-picker-remove\">\n <pry-icon iconSvg=\"close\" [height]=\"15\" [width]=\"15\"></pry-icon>\n </button>\n <div *cdkDragPreview>\n <pry-color-picker [ngModel]=\"color\"></pry-color-picker>\n </div>\n </div>\n }\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only o-widget__analytic__color-picker-add\"\n (click)=\"modifyColorScheme()\"\n >\n <pry-icon iconSvg=\"add\" [height]=\"20\" [width]=\"20\"></pry-icon>\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n </pry-settings>\n </pry-widget-header>\n }\n <div class=\"o-widget__analytic__table\">\n <table [style.height.px]=\"height$ | async\">\n <thead>\n <tr class=\"primary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n <th [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ primary }}\n </th>\n }\n </tr>\n @if (optionsCopy.secondaryProp) {\n <tr class=\"secondary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <th>{{ secondary }}</th>\n }\n }\n </tr>\n }\n </thead>\n @if (this.valuePropField$ | async; as field) {\n <tbody>\n @for (line of lines$ | async; track line.name) {\n <tr>\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @if (optionsCopy.secondaryProp) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig\n ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] }\n : {}\n \"\n >\n {{ line.value[primary][secondary] | dataFormat: field }}\n </td>\n }\n } @else {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] } : {}\n \"\n >\n {{ line.value[primary] | dataFormat: field }}\n </td>\n }\n }\n </tr>\n }\n </tbody>\n <tfoot>\n @for (line of totals$ | async; track line.name) {\n <tr class=\"partial-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td>\n {{ line.value[primary][secondary] | dataFormat: field }}\n </td>\n }\n }\n </tr>\n }\n @for (line of grandTotals$ | async; track line.name) {\n <tr class=\"grand-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n <td [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ line.value[primary] | dataFormat: field }}\n </td>\n }\n </tr>\n }\n </tfoot>\n }\n </table>\n </div>\n</div>\n","export const enTranslations = {\n '@pry': {\n widget: {\n analytic: {\n primaryProp: 'Attribute that contains the horizontal primary field',\n secondaryProp: 'Attribute that contains the horizontal secondary field',\n verticalProp: 'Attribute that contains the vertical attribute',\n valueProp: 'Attribute that contains the value',\n colorConfig: 'Cell color configuration',\n colorProp: 'Color attribute',\n colors: 'Colors',\n format: 'Value formatting',\n suffix: 'Suffix'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n widget: {\n analytic: {\n primaryProp: 'Attribut horizontal primaire',\n secondaryProp: 'Attribut horizontal secondaire',\n verticalProp: 'Attribut vertical',\n valueProp: 'Attribut contenant la valeur',\n colorConfig: 'Configuration des couleurs de cellules',\n colorProp: 'Attribut de la couleur',\n colors: 'Couleurs',\n format: 'Formattage des valeurs',\n suffix: 'Suffixe'\n }\n }\n }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { AsyncPipe, 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 { WidgetAnalyticComponent } from './component/widget-analytic.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PryWidgetAnalyticCssComponent } from './style/css.component';\nimport { PryColorPickerModule } from '@provoly/dashboard/components/color-picker';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PryDataFormatModule } from '@provoly/dashboard/components/data-format';\n\n@NgModule({\n declarations: [WidgetAnalyticComponent, PryWidgetAnalyticCssComponent],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n PryCoreModule,\n PryDashboardModule,\n PrySelectModule,\n PryIconModule,\n PryCheckboxModule,\n PryToggleModule,\n PryI18nModule,\n AsyncPipe,\n PryColorPickerModule,\n DragDropModule,\n PryDataFormatModule\n ],\n exports: [WidgetAnalyticComponent]\n})\nexport class WidgetAnalyticModule 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 WidgetAnalyticComponent as Type<BaseWidgetComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i8.PryWidgetAnalyticCssComponent","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provoly-dashboard-widgets-widget-analytic.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-analytic/style/css.component.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/component/widget-analytic.component.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/component/widget-analytic.component.html","../../../../projects/provoly/dashboard/widgets/widget-analytic/i18n/en.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/widget-analytic.module.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/provoly-dashboard-widgets-widget-analytic.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-analytic-css',\n template: '',\n styleUrls: ['./_o-widget-analytic.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryWidgetAnalyticCssComponent {}\n","import { Component, ElementRef } from '@angular/core';\nimport {\n AnalyticWidgetOptions,\n Attribute,\n AttributeSimpleValue,\n Class,\n ClassSelectors,\n DataWidgetComponent,\n Field,\n Item,\n ResultSet,\n WIDGET_HEADER_HEIGHT\n} from '@provoly/dashboard';\nimport { combineLatest, map, Observable, startWith } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { filter } from 'rxjs';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'pry-widget-analytic',\n templateUrl: './widget-analytic.component.html'\n})\nexport class WidgetAnalyticComponent extends DataWidgetComponent {\n optionsCopy: AnalyticWidgetOptions = { primaryProp: '', secondaryProp: '', verticalProp: '', valueProp: '' };\n options$: Observable<AnalyticWidgetOptions>;\n\n primaryProperty$: Observable<string[]>;\n secondaryProperty$: Observable<string[]>;\n verticalProperty$: Observable<string[]>;\n totalProperty$: Observable<string[]>;\n grandTotalProperty$: Observable<string[]>;\n lines$: Observable<{ name: string; value: { [key: string]: { [key: string]: any } | any } }[]>;\n totals$: Observable<{ name: string; value: { [key: string]: { [key: string]: any } } }[]>;\n grandTotals$: Observable<{ name: any; value: { [p: string]: any } }[]>;\n colorMap$: Observable<{ [vertical: string]: { [primary: string]: string | undefined } }>;\n height$: Observable<number>;\n classes$: Observable<Class[]>;\n availableProperties$: Observable<Attribute[]>;\n valuePropField$: Observable<Field | undefined>;\n\n change($event: string, prop: 'primaryProp' | 'secondaryProp' | 'valueProp' | 'verticalProp') {\n this.optionsCopy[prop] = $event;\n }\n\n changeColorConfig($event: string | string[], prop: 'prop' | 'colors') {\n switch (prop) {\n case 'prop': {\n this.optionsCopy.colorConfig!.prop = $event as string;\n break;\n }\n case 'colors': {\n this.optionsCopy.colorConfig!.colors = $event as string[];\n break;\n }\n }\n }\n\n constructor(store: Store<any>, el: ElementRef) {\n super(store, el);\n this.options$ = this.manifest$.pipe(map((manifest) => (manifest.options ?? {}) as AnalyticWidgetOptions));\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.height$ = combineLatest([this.widgetSize$, this.displayHeader$]).pipe(\n map(([size, header]) => size.height - (header ? WIDGET_HEADER_HEIGHT.value : 0))\n );\n this.subscriptions.add(\n this.options$.subscribe((options) => {\n this.optionsCopy = structuredClone(options);\n })\n );\n this.primaryProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n filter(([options]) => !!options.primaryProp),\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.primaryProp))\n );\n this.secondaryProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n filter(([options]) => !!options.secondaryProp),\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.secondaryProp!, 1))\n );\n this.verticalProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n filter(([options]) => !!options.verticalProp),\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.verticalProp, 1))\n );\n this.totalProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.verticalProp, 2))\n );\n this.grandTotalProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.verticalProp, 3))\n );\n\n this.lines$ = combineLatest([\n this.options$,\n this.primaryProperty$.pipe(startWith([])),\n this.secondaryProperty$.pipe(startWith(undefined)),\n this.verticalProperty$.pipe(startWith([])),\n this.resultSet$\n ]).pipe(\n map(([options, primaryProps, secondaryProps, verticalProps, rs]) =>\n this.createValueMap(verticalProps, primaryProps, secondaryProps, rs, options, 1)\n )\n );\n\n this.totals$ = combineLatest([\n this.options$,\n this.primaryProperty$,\n this.secondaryProperty$,\n this.totalProperty$,\n this.resultSet$\n ]).pipe(\n map(([options, primaryProps, secondaryProps, verticalProps, rs]) =>\n this.createValueMap(verticalProps, primaryProps, secondaryProps, rs, options, 2)\n )\n );\n\n this.grandTotals$ = combineLatest([\n this.options$,\n this.primaryProperty$,\n this.grandTotalProperty$,\n this.resultSet$\n ]).pipe(\n map(([options, primaryProps, verticalProps, rs]) =>\n this.createValueMap(verticalProps, primaryProps, undefined, rs, options, 3)\n )\n );\n\n this.colorMap$ = combineLatest([\n this.options$,\n this.resultSet$,\n this.verticalProperty$,\n this.primaryProperty$\n ]).pipe(\n filter(([options]) => !!options.colorConfig),\n map(([options, rs, vertical, primary]) => this.createColorMap(vertical, primary, rs, options))\n );\n\n this.availableProperties$ = combineLatest([this.classes$, this.resultSet$]).pipe(\n map(([classes, rs]) => {\n const presentClassesId = Object.keys(rs.items);\n const presentClasses = presentClassesId\n .map((classId) => classes.find((cl) => cl.id === classId))\n .filter((cl) => !!cl) as Class[];\n return presentClasses.map((cl) => cl.attributes).flat();\n })\n );\n\n this.valuePropField$ = combineLatest([this.availableProperties$, this.options$]).pipe(\n map(([attributes, options]) => attributes.find((attr) => attr.technicalName === options.valueProp)?.field)\n );\n }\n\n private matchAttributeValue(item: Item, prop?: string, comparisonValue?: string) {\n if (prop === 'level' && !('level' in item.attributes)) {\n return comparisonValue === '1';\n }\n return comparisonValue && prop ? (item.attributes[prop] as AttributeSimpleValue).value == comparisonValue : true;\n }\n\n private createValueMap(\n verticalProps: string[],\n primaryProps: string[],\n secondaryProps: string[] | undefined,\n rs: ResultSet,\n options: AnalyticWidgetOptions,\n level?: number\n ) {\n return verticalProps.map((vertical) => {\n const value = {} as { [key: string]: { [key: string]: any } | any };\n primaryProps.forEach((primary) => {\n (secondaryProps ?? [undefined]).forEach((secondary) => {\n const matchingItem = (rs.items[Object.keys(rs.items)[0]] ?? []).find(\n (item) =>\n this.matchAttributeValue(item, options.primaryProp, primary) &&\n this.matchAttributeValue(item, options.secondaryProp, secondary) &&\n this.matchAttributeValue(item, options.verticalProp, vertical) &&\n this.matchAttributeValue(item, 'level', level + '')\n );\n if (!!matchingItem) {\n if (!!secondary) {\n if (!value[primary]) {\n value[primary] = {};\n }\n value[primary][secondary] = (matchingItem!.attributes[options.valueProp] as AttributeSimpleValue).value;\n } else {\n value[primary] = (matchingItem!.attributes[options.valueProp] as AttributeSimpleValue)?.value;\n }\n }\n });\n });\n return { name: vertical, value };\n });\n }\n\n private getPropertyLabelsForLevel(rs: ResultSet, property: string, level?: number) {\n const values = Object.values(rs.items)\n .map((items) =>\n items\n .filter((item) =>\n level && 'level' in item.attributes\n ? [level, '' + level].includes(\n (item.attributes['level'] as AttributeSimpleValue).value as string | number\n )\n : level === undefined || level === 1\n )\n .map((item) => (item.attributes[property] as AttributeSimpleValue)?.value + '')\n )\n .flat()\n .flat();\n return [...new Set(values)];\n }\n\n createColorMap(verticalProps: string[], primaryProps: string[], rs: ResultSet, options: AnalyticWidgetOptions) {\n return options.colorConfig\n ? Object.fromEntries(\n verticalProps.map((vertical) => [\n vertical,\n Object.fromEntries(\n primaryProps.map((primary) => {\n const matchingItem = (rs.items[Object.keys(rs.items)[0]] ?? []).find(\n (item) =>\n this.matchAttributeValue(item, options.primaryProp, primary) &&\n this.matchAttributeValue(item, options.verticalProp, vertical)\n );\n\n return [\n primary,\n matchingItem && (matchingItem.attributes[options.valueProp] as AttributeSimpleValue).value !== 0\n ? options.colorConfig?.colors[\n ((matchingItem.attributes[options.colorConfig!.prop] as AttributeSimpleValue).value as number) -\n 1\n ]\n : '#FFFFFF'\n ];\n })\n )\n ])\n )\n : {};\n }\n\n toggleColorConfig($event: boolean) {\n if ($event !== !!this.optionsCopy.colorConfig) {\n if (!this.optionsCopy.colorConfig) {\n this.optionsCopy.colorConfig = { prop: '', colors: [] };\n } else {\n this.optionsCopy.colorConfig = undefined;\n }\n }\n }\n\n modifyColorScheme($event?: string, index?: number) {\n $event && index !== undefined\n ? (this.optionsCopy.colorConfig!.colors[index] = $event)\n : this.optionsCopy.colorConfig!.colors.push('#FFFFFF');\n }\n\n removeColor(index: number) {\n this.optionsCopy.colorConfig!.colors.splice(index, 1);\n }\n\n drop(event: CdkDragDrop<string[]>) {\n this.optionsCopy.colorConfig!.colors.splice(\n event.currentIndex,\n 0,\n this.optionsCopy.colorConfig!.colors.splice(event.previousIndex, 1)[0]\n );\n }\n\n override emitManifest() {\n this.manifestModified.emit({\n widgetIndex: this.widgetIndex,\n manifest: { ...this.manifest, options: this.optionsCopy }\n });\n }\n}\n","<pry-widget-analytic-css></pry-widget-analytic-css>\n<div class=\"o-widget o-widget__analytic\">\n @if (displayHeader$ | async) {\n <pry-widget-header\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=\"primaryProp\">{{ '@pry.widget.analytic.primaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'primaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.primaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"primaryProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"secondaryProp\">{{ '@pry.widget.analytic.secondaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'secondaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.secondaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"secondaryProp\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"verticalProp\">{{ '@pry.widget.analytic.verticalProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'verticalProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.verticalProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"verticalProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"valueProp\">{{ '@pry.widget.analytic.valueProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'valueProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.valueProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"valueProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleColorConfig($event)\" [ngModel]=\"!!optionsCopy.colorConfig\">\n {{ '@pry.widget.analytic.colorConfig' | i18n }}\n </pry-checkbox>\n @if (optionsCopy.colorConfig) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colorProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorConfig($event, 'prop')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.colorConfig.prop\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"colorProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colors' | i18n }}</label>\n <div\n class=\"o-widget__analytic__color-picker-container u-display-flex -align-center\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n cdkDropListOrientation=\"horizontal\"\n >\n @for (color of optionsCopy.colorConfig.colors; track color; let i = $index) {\n <div class=\"o-widget__analytic__color-picker\" cdkDrag>\n <pry-color-picker\n [ngModel]=\"color\"\n (ngModelChange)=\"modifyColorScheme($event, i)\"\n ></pry-color-picker>\n <button (click)=\"removeColor(i)\" class=\"o-widget__analytic__color-picker-remove\">\n <pry-icon iconSvg=\"close\" [height]=\"15\" [width]=\"15\"></pry-icon>\n </button>\n <div *cdkDragPreview>\n <pry-color-picker [ngModel]=\"color\"></pry-color-picker>\n </div>\n </div>\n }\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only o-widget__analytic__color-picker-add\"\n (click)=\"modifyColorScheme()\"\n >\n <pry-icon iconSvg=\"add\" [height]=\"20\" [width]=\"20\"></pry-icon>\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n </pry-settings>\n </pry-widget-header>\n }\n <div class=\"o-widget__analytic__table\">\n <table [style.height.px]=\"height$ | async\">\n <thead>\n <tr class=\"primary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n <th [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ primary }}\n </th>\n }\n </tr>\n @if (optionsCopy.secondaryProp) {\n <tr class=\"secondary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <th>{{ secondary }}</th>\n }\n }\n </tr>\n }\n </thead>\n @if (this.valuePropField$ | async; as field) {\n <tbody>\n @for (line of lines$ | async; track line.name) {\n <tr>\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @if (optionsCopy.secondaryProp) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig\n ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] }\n : {}\n \"\n >\n {{ line.value[primary][secondary] | dataFormat: field }}\n </td>\n }\n } @else {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] } : {}\n \"\n >\n {{ line.value[primary] | dataFormat: field }}\n </td>\n }\n }\n </tr>\n }\n </tbody>\n <tfoot>\n @for (line of totals$ | async; track line.name) {\n <tr class=\"partial-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td>\n {{ line.value[primary][secondary] | dataFormat: field }}\n </td>\n }\n }\n </tr>\n }\n @for (line of grandTotals$ | async; track line.name) {\n <tr class=\"grand-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n <td [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ line.value[primary] | dataFormat: field }}\n </td>\n }\n </tr>\n }\n </tfoot>\n }\n </table>\n </div>\n</div>\n","export const enTranslations = {\n '@pry': {\n widget: {\n analytic: {\n primaryProp: 'Attribute that contains the horizontal primary field',\n secondaryProp: 'Attribute that contains the horizontal secondary field',\n verticalProp: 'Attribute that contains the vertical attribute',\n valueProp: 'Attribute that contains the value',\n colorConfig: 'Cell color configuration',\n colorProp: 'Color attribute',\n colors: 'Colors',\n format: 'Value formatting',\n suffix: 'Suffix'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n widget: {\n analytic: {\n primaryProp: 'Attribut horizontal primaire',\n secondaryProp: 'Attribut horizontal secondaire',\n verticalProp: 'Attribut vertical',\n valueProp: 'Attribut contenant la valeur',\n colorConfig: 'Configuration des couleurs de cellules',\n colorProp: 'Attribut de la couleur',\n colors: 'Couleurs',\n format: 'Formattage des valeurs',\n suffix: 'Suffixe'\n }\n }\n }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { AsyncPipe, 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 { WidgetAnalyticComponent } from './component/widget-analytic.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PryWidgetAnalyticCssComponent } from './style/css.component';\nimport { PryColorPickerModule } from '@provoly/dashboard/components/color-picker';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PryDataFormatModule } from '@provoly/dashboard/components/data-format';\n\n@NgModule({\n declarations: [WidgetAnalyticComponent, PryWidgetAnalyticCssComponent],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n PryCoreModule,\n PryDashboardModule,\n PrySelectModule,\n PryIconModule,\n PryCheckboxModule,\n PryToggleModule,\n PryI18nModule,\n AsyncPipe,\n PryColorPickerModule,\n DragDropModule,\n PryDataFormatModule\n ],\n exports: [WidgetAnalyticComponent]\n})\nexport class WidgetAnalyticModule 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 WidgetAnalyticComponent as Type<BaseWidgetComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i8.PryWidgetAnalyticCssComponent","i1"],"mappings":"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"}
|
|
@@ -10,8 +10,7 @@ import { PRY_CUSTOMEVENT_TYPE, DataWidgetComponent, MarkType, MarkSubType, WIDGE
|
|
|
10
10
|
import * as i4 from '@provoly/dashboard/components/checkbox';
|
|
11
11
|
import { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';
|
|
12
12
|
import equal from 'fast-deep-equal/es6';
|
|
13
|
-
import { BehaviorSubject, Subject, combineLatest, delay } from 'rxjs';
|
|
14
|
-
import { map, distinctUntilChanged, filter } from 'rxjs/operators';
|
|
13
|
+
import { BehaviorSubject, Subject, combineLatest, map, distinctUntilChanged, filter, delay } from 'rxjs';
|
|
15
14
|
import embed, { vega } from 'vega-embed';
|
|
16
15
|
import { mergeDeep } from 'vega-lite';
|
|
17
16
|
import { fontConfig } from 'vega-lite/build/src/config';
|