@sisense/sdk-ui-angular 1.5.0 → 1.7.0
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/dist/esm2020/lib/component-wrapper-helpers/context-connectors.mjs +13 -1
- package/dist/esm2020/lib/components/charts/area-chart.component.mjs +137 -0
- package/dist/esm2020/lib/components/charts/areamap-chart.component.mjs +100 -0
- package/dist/esm2020/lib/components/charts/bar-chart.component.mjs +136 -0
- package/dist/esm2020/lib/components/charts/boxplot-chart.component.mjs +129 -0
- package/dist/esm2020/lib/components/charts/chart.component.mjs +171 -0
- package/dist/esm2020/lib/components/charts/column-chart.component.mjs +137 -0
- package/dist/esm2020/lib/components/charts/funnel-chart.component.mjs +135 -0
- package/dist/esm2020/lib/components/charts/index.mjs +18 -0
- package/dist/esm2020/lib/components/charts/indicator-chart.component.mjs +107 -0
- package/dist/esm2020/lib/components/charts/line-chart.component.mjs +135 -0
- package/dist/esm2020/lib/components/charts/pie-chart.component.mjs +137 -0
- package/dist/esm2020/lib/components/charts/pivot-table.component.mjs +116 -0
- package/dist/esm2020/lib/components/charts/polar-chart.component.mjs +136 -0
- package/dist/esm2020/lib/components/charts/scatter-chart.component.mjs +140 -0
- package/dist/esm2020/lib/components/charts/scattermap-chart.component.mjs +108 -0
- package/dist/esm2020/lib/components/charts/sunburst-chart.component.mjs +137 -0
- package/dist/esm2020/lib/components/charts/table.component.mjs +94 -0
- package/dist/esm2020/lib/components/{treemap-chart.component.mjs → charts/treemap-chart.component.mjs} +52 -1
- package/dist/esm2020/lib/components/context-menu.component.mjs +3 -1
- package/dist/esm2020/lib/components/drilldown-breadcrumbs.component.mjs +3 -1
- package/dist/esm2020/lib/components/filters/basic-member-filter-tile.component.mjs +62 -0
- package/dist/esm2020/lib/components/filters/date-range-filter-tile.component.mjs +141 -0
- package/dist/esm2020/lib/components/filters/index.mjs +4 -0
- package/dist/esm2020/lib/components/filters/member-filter-tile.component.mjs +131 -0
- package/dist/esm2020/lib/components/index.mjs +4 -25
- package/dist/esm2020/lib/components/widgets/chart-widget.component.mjs +167 -0
- package/dist/esm2020/lib/components/widgets/dashboard-widget.component.mjs +116 -0
- package/dist/esm2020/lib/components/widgets/drilldown-widget.component.mjs +174 -0
- package/dist/esm2020/lib/components/widgets/index.mjs +5 -0
- package/dist/esm2020/lib/components/widgets/table-widget.component.mjs +104 -0
- package/dist/esm2020/lib/sdk-ui.module.mjs +3 -1
- package/dist/esm2020/lib/services/dashboard.service.mjs +7 -1
- package/dist/esm2020/lib/services/query.service.mjs +7 -2
- package/dist/esm2020/lib/services/sisense-context.service.mjs +7 -1
- package/dist/esm2020/lib/services/theme.service.mjs +7 -1
- package/dist/esm2020/public-api.mjs +9 -2
- package/dist/esm2020/version.mjs +2 -2
- package/dist/fesm2015/sisense-sdk-ui-angular.mjs +1723 -709
- package/dist/fesm2015/sisense-sdk-ui-angular.mjs.map +1 -1
- package/dist/fesm2020/sisense-sdk-ui-angular.mjs +1724 -710
- package/dist/fesm2020/sisense-sdk-ui-angular.mjs.map +1 -1
- package/dist/lib/component-wrapper-helpers/context-connectors.d.ts +12 -0
- package/dist/lib/components/{area-chart.component.d.ts → charts/area-chart.component.d.ts} +53 -2
- package/dist/lib/components/{areamap-chart.component.d.ts → charts/areamap-chart.component.d.ts} +40 -1
- package/dist/lib/components/{bar-chart.component.d.ts → charts/bar-chart.component.d.ts} +52 -2
- package/dist/lib/components/{boxplot-chart.component.d.ts → charts/boxplot-chart.component.d.ts} +45 -2
- package/dist/lib/components/{chart.component.d.ts → charts/chart.component.d.ts} +6 -4
- package/dist/lib/components/{column-chart.component.d.ts → charts/column-chart.component.d.ts} +53 -2
- package/dist/lib/components/{funnel-chart.component.d.ts → charts/funnel-chart.component.d.ts} +52 -2
- package/dist/lib/components/charts/index.d.ts +17 -0
- package/dist/lib/components/{indicator-chart.component.d.ts → charts/indicator-chart.component.d.ts} +57 -1
- package/dist/lib/components/{line-chart.component.d.ts → charts/line-chart.component.d.ts} +52 -2
- package/dist/lib/components/{pie-chart.component.d.ts → charts/pie-chart.component.d.ts} +53 -2
- package/dist/lib/components/{pivot-table.component.d.ts → charts/pivot-table.component.d.ts} +53 -2
- package/dist/lib/components/{polar-chart.component.d.ts → charts/polar-chart.component.d.ts} +53 -2
- package/dist/lib/components/{scatter-chart.component.d.ts → charts/scatter-chart.component.d.ts} +50 -2
- package/dist/lib/components/{scattermap-chart.component.d.ts → charts/scattermap-chart.component.d.ts} +49 -2
- package/dist/lib/components/{sunburst-chart.component.d.ts → charts/sunburst-chart.component.d.ts} +53 -2
- package/dist/lib/components/{table.component.d.ts → charts/table.component.d.ts} +32 -2
- package/dist/lib/components/{treemap-chart.component.d.ts → charts/treemap-chart.component.d.ts} +53 -2
- package/dist/lib/components/context-menu.component.d.ts +2 -0
- package/dist/lib/components/drilldown-breadcrumbs.component.d.ts +2 -0
- package/dist/lib/components/{date-range-filter-tile.component.d.ts → filters/date-range-filter-tile.component.d.ts} +43 -3
- package/dist/lib/components/filters/index.d.ts +3 -0
- package/dist/lib/components/{member-filter-tile.component.d.ts → filters/member-filter-tile.component.d.ts} +39 -3
- package/dist/lib/components/index.d.ts +3 -24
- package/dist/lib/components/{chart-widget.component.d.ts → widgets/chart-widget.component.d.ts} +58 -3
- package/dist/lib/components/{dashboard-widget.component.d.ts → widgets/dashboard-widget.component.d.ts} +27 -2
- package/dist/lib/components/{drilldown-widget.component.d.ts → widgets/drilldown-widget.component.d.ts} +5 -2
- package/dist/lib/components/widgets/index.d.ts +4 -0
- package/dist/lib/components/{table-widget.component.d.ts → widgets/table-widget.component.d.ts} +37 -2
- package/dist/lib/sdk-ui.module.d.ts +26 -24
- package/dist/lib/services/dashboard.service.d.ts +6 -0
- package/dist/lib/services/query.service.d.ts +6 -1
- package/dist/lib/services/sisense-context.service.d.ts +6 -0
- package/dist/lib/services/theme.service.d.ts +6 -0
- package/dist/package.json +1 -1
- package/dist/public-api.d.ts +8 -1
- package/dist/version.d.ts +1 -1
- package/package.json +4 -4
- package/dist/esm2020/lib/components/area-chart.component.mjs +0 -86
- package/dist/esm2020/lib/components/areamap-chart.component.mjs +0 -61
- package/dist/esm2020/lib/components/bar-chart.component.mjs +0 -86
- package/dist/esm2020/lib/components/basic-member-filter-tile.component.mjs +0 -62
- package/dist/esm2020/lib/components/boxplot-chart.component.mjs +0 -86
- package/dist/esm2020/lib/components/chart-widget.component.mjs +0 -112
- package/dist/esm2020/lib/components/chart.component.mjs +0 -169
- package/dist/esm2020/lib/components/column-chart.component.mjs +0 -86
- package/dist/esm2020/lib/components/dashboard-widget.component.mjs +0 -91
- package/dist/esm2020/lib/components/date-range-filter-tile.component.mjs +0 -101
- package/dist/esm2020/lib/components/drilldown-widget.component.mjs +0 -171
- package/dist/esm2020/lib/components/funnel-chart.component.mjs +0 -85
- package/dist/esm2020/lib/components/indicator-chart.component.mjs +0 -51
- package/dist/esm2020/lib/components/line-chart.component.mjs +0 -85
- package/dist/esm2020/lib/components/member-filter-tile.component.mjs +0 -95
- package/dist/esm2020/lib/components/pie-chart.component.mjs +0 -86
- package/dist/esm2020/lib/components/pivot-table.component.mjs +0 -65
- package/dist/esm2020/lib/components/polar-chart.component.mjs +0 -85
- package/dist/esm2020/lib/components/scatter-chart.component.mjs +0 -92
- package/dist/esm2020/lib/components/scattermap-chart.component.mjs +0 -61
- package/dist/esm2020/lib/components/sunburst-chart.component.mjs +0 -86
- package/dist/esm2020/lib/components/table-widget.component.mjs +0 -69
- package/dist/esm2020/lib/components/table.component.mjs +0 -64
- /package/dist/lib/components/{basic-member-filter-tile.component.d.ts → filters/basic-member-filter-tile.component.d.ts} +0 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import { ChartWidget, ComponentAdapter, createElement, } from '@sisense/sdk-ui-preact';
|
|
3
|
+
import { createSisenseContextConnector, createThemeContextConnector, } from '../../component-wrapper-helpers';
|
|
4
|
+
import { template, rootId } from '../../component-wrapper-helpers/template';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../services/sisense-context.service";
|
|
7
|
+
import * as i2 from "../../services/theme.service";
|
|
8
|
+
/**
|
|
9
|
+
* The Chart Widget component extending {@link ChartComponent} to support widget style options.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```html
|
|
13
|
+
* <csdk-chart-widget
|
|
14
|
+
* [chartType]="chartWidget.chartType"
|
|
15
|
+
* [dataSource]="chartWidget.dataSource"
|
|
16
|
+
* [dataOptions]="chartWidget.dataOptions"
|
|
17
|
+
* [highlights]="filters"
|
|
18
|
+
* [title]="chartWidget.title"
|
|
19
|
+
* [description]="chartWidget.description"
|
|
20
|
+
* [beforeRender]="onBeforeRender"
|
|
21
|
+
* (dataPointClick)="logArguments($event)"
|
|
22
|
+
* (dataPointContextMenu)="logArguments($event)"
|
|
23
|
+
* (dataPointsSelect)="logArguments($event)"
|
|
24
|
+
* />
|
|
25
|
+
* ```
|
|
26
|
+
* ```ts
|
|
27
|
+
* import { Component } from '@angular/core';
|
|
28
|
+
* import { ChartType } from '@sisense/sdk-ui-angular';
|
|
29
|
+
* import { filterFactory } from '@sisense/sdk-data';
|
|
30
|
+
* import * as DM from '../../assets/sample-healthcare-model';
|
|
31
|
+
*
|
|
32
|
+
* @Component({
|
|
33
|
+
* selector: 'app-widgets',
|
|
34
|
+
* templateUrl: './widgets.component.html',
|
|
35
|
+
* styleUrls: ['./widgets.component.scss'],
|
|
36
|
+
* })
|
|
37
|
+
* export class WidgetsComponent {
|
|
38
|
+
* filters = [filterFactory.members(DM.Divisions.Divison_name, ['Cardiology', 'Neurology'])];
|
|
39
|
+
* chartWidget = {
|
|
40
|
+
* chartType: 'column' as ChartType,
|
|
41
|
+
* dataSource: DM.DataSource,
|
|
42
|
+
* dataOptions: {
|
|
43
|
+
* category: [DM.Divisions.Divison_name],
|
|
44
|
+
* value: [measureFactory.sum(DM.Admissions.Cost_of_admission)],
|
|
45
|
+
* breakBy: [],
|
|
46
|
+
* },
|
|
47
|
+
* title: 'Chart Title',
|
|
48
|
+
* description: 'Chart Description',
|
|
49
|
+
* };
|
|
50
|
+
* logArguments(...args: any[]) {
|
|
51
|
+
* console.log(args);
|
|
52
|
+
* }
|
|
53
|
+
*
|
|
54
|
+
* onBeforeRender(options: any) {
|
|
55
|
+
* console.log('beforeRender');
|
|
56
|
+
* console.log(options);
|
|
57
|
+
* return options;
|
|
58
|
+
* }
|
|
59
|
+
*
|
|
60
|
+
* }
|
|
61
|
+
* ```
|
|
62
|
+
* <img src="media://angular-chart-widget-example.png" width="800px" />
|
|
63
|
+
*
|
|
64
|
+
* @group Chart Utilities
|
|
65
|
+
*/
|
|
66
|
+
export class ChartWidgetComponent {
|
|
67
|
+
constructor(sisenseContextService, themeService) {
|
|
68
|
+
this.sisenseContextService = sisenseContextService;
|
|
69
|
+
this.themeService = themeService;
|
|
70
|
+
/**
|
|
71
|
+
* {@inheritDoc @sisense/sdk-ui!ChartProps.onDataPointClick}
|
|
72
|
+
*
|
|
73
|
+
* @category Callbacks
|
|
74
|
+
*/
|
|
75
|
+
this.dataPointClick = new EventEmitter();
|
|
76
|
+
/**
|
|
77
|
+
* {@inheritDoc @sisense/sdk-ui!ChartProps.onDataPointContextMenu}
|
|
78
|
+
*
|
|
79
|
+
* @category Callbacks
|
|
80
|
+
*/
|
|
81
|
+
this.dataPointContextMenu = new EventEmitter();
|
|
82
|
+
/**
|
|
83
|
+
* {@inheritDoc @sisense/sdk-ui!ChartProps.onDataPointsSelected}
|
|
84
|
+
*
|
|
85
|
+
* @category Callbacks
|
|
86
|
+
*/
|
|
87
|
+
this.dataPointsSelect = new EventEmitter();
|
|
88
|
+
this.componentAdapter = new ComponentAdapter(() => this.createPreactComponent(), [
|
|
89
|
+
createSisenseContextConnector(this.sisenseContextService),
|
|
90
|
+
createThemeContextConnector(this.themeService),
|
|
91
|
+
]);
|
|
92
|
+
}
|
|
93
|
+
/** @internal */
|
|
94
|
+
ngAfterViewInit() {
|
|
95
|
+
this.componentAdapter.render(this.preactRef.nativeElement);
|
|
96
|
+
}
|
|
97
|
+
/** @internal */
|
|
98
|
+
ngOnChanges() {
|
|
99
|
+
if (this.preactRef) {
|
|
100
|
+
this.componentAdapter.render(this.preactRef.nativeElement);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
createPreactComponent() {
|
|
104
|
+
const props = {
|
|
105
|
+
chartType: this.chartType,
|
|
106
|
+
dataSource: this.dataSource,
|
|
107
|
+
dataOptions: this.dataOptions,
|
|
108
|
+
filters: this.filters,
|
|
109
|
+
highlights: this.highlights,
|
|
110
|
+
styleOptions: this.styleOptions,
|
|
111
|
+
drilldownOptions: this.drilldownOptions,
|
|
112
|
+
title: this.title,
|
|
113
|
+
description: this.description,
|
|
114
|
+
highlightSelectionDisabled: this.highlightSelectionDisabled,
|
|
115
|
+
onBeforeRender: this.beforeRender?.bind(this),
|
|
116
|
+
onDataPointClick: (...[point, nativeEvent]) => this.dataPointClick.emit({ point, nativeEvent }),
|
|
117
|
+
onDataPointContextMenu: (...[point, nativeEvent]) => this.dataPointContextMenu.emit({ point, nativeEvent }),
|
|
118
|
+
onDataPointsSelected: (...[points, nativeEvent]) => this.dataPointsSelect.emit({ points, nativeEvent }),
|
|
119
|
+
};
|
|
120
|
+
return createElement(ChartWidget, props);
|
|
121
|
+
}
|
|
122
|
+
/** @internal */
|
|
123
|
+
ngOnDestroy() {
|
|
124
|
+
this.componentAdapter.destroy();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
ChartWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ChartWidgetComponent, deps: [{ token: i1.SisenseContextService }, { token: i2.ThemeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
128
|
+
ChartWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ChartWidgetComponent, selector: "csdk-chart-widget", inputs: { chartType: "chartType", dataSource: "dataSource", dataOptions: "dataOptions", filters: "filters", highlights: "highlights", styleOptions: "styleOptions", drilldownOptions: "drilldownOptions", title: "title", description: "description", highlightSelectionDisabled: "highlightSelectionDisabled", beforeRender: "beforeRender" }, outputs: { dataPointClick: "dataPointClick", dataPointContextMenu: "dataPointContextMenu", dataPointsSelect: "dataPointsSelect" }, viewQueries: [{ propertyName: "preactRef", first: true, predicate: ["preact"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "\n <div #preact style=\"width: 100%; height: 100%\"></div>\n", isInline: true });
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ChartWidgetComponent, decorators: [{
|
|
130
|
+
type: Component,
|
|
131
|
+
args: [{
|
|
132
|
+
selector: 'csdk-chart-widget',
|
|
133
|
+
template,
|
|
134
|
+
}]
|
|
135
|
+
}], ctorParameters: function () { return [{ type: i1.SisenseContextService }, { type: i2.ThemeService }]; }, propDecorators: { preactRef: [{
|
|
136
|
+
type: ViewChild,
|
|
137
|
+
args: [rootId]
|
|
138
|
+
}], chartType: [{
|
|
139
|
+
type: Input
|
|
140
|
+
}], dataSource: [{
|
|
141
|
+
type: Input
|
|
142
|
+
}], dataOptions: [{
|
|
143
|
+
type: Input
|
|
144
|
+
}], filters: [{
|
|
145
|
+
type: Input
|
|
146
|
+
}], highlights: [{
|
|
147
|
+
type: Input
|
|
148
|
+
}], styleOptions: [{
|
|
149
|
+
type: Input
|
|
150
|
+
}], drilldownOptions: [{
|
|
151
|
+
type: Input
|
|
152
|
+
}], title: [{
|
|
153
|
+
type: Input
|
|
154
|
+
}], description: [{
|
|
155
|
+
type: Input
|
|
156
|
+
}], highlightSelectionDisabled: [{
|
|
157
|
+
type: Input
|
|
158
|
+
}], beforeRender: [{
|
|
159
|
+
type: Input
|
|
160
|
+
}], dataPointClick: [{
|
|
161
|
+
type: Output
|
|
162
|
+
}], dataPointContextMenu: [{
|
|
163
|
+
type: Output
|
|
164
|
+
}], dataPointsSelect: [{
|
|
165
|
+
type: Output
|
|
166
|
+
}] } });
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy93aWRnZXRzL2NoYXJ0LXdpZGdldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFdBQVcsRUFFWCxnQkFBZ0IsRUFDaEIsYUFBYSxHQUNkLE1BQU0sd0JBQXdCLENBQUM7QUFJaEMsT0FBTyxFQUNMLDZCQUE2QixFQUM3QiwyQkFBMkIsR0FDNUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7O0FBRTVFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5REc7QUFLSCxNQUFNLE9BQU8sb0JBQW9CO0lBOEgvQixZQUNVLHFCQUE0QyxFQUM1QyxZQUEwQjtRQUQxQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBbENwQzs7OztXQUlHO1FBRUgsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFFOUIsQ0FBQztRQUVKOzs7O1dBSUc7UUFFSCx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFFcEMsQ0FBQztRQUVKOzs7O1dBSUc7UUFFSCxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFFaEMsQ0FBQztRQVFGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUMxQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFDbEM7WUFDRSw2QkFBNkIsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDekQsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUMvQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLGVBQWU7UUFDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUM1RDtJQUNILENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsTUFBTSxLQUFLLEdBQUc7WUFDWixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLDBCQUEwQjtZQUMzRCxjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzdDLGdCQUFnQixFQUFFLENBQ2hCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFrRCxFQUN4RSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDckQsc0JBQXNCLEVBQUUsQ0FDdEIsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQXdELEVBQzlFLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQzNELG9CQUFvQixFQUFFLENBQ3BCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFzRCxFQUM3RSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQztTQUN6RCxDQUFDO1FBRUYsT0FBTyxhQUFhLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQyxDQUFDOztrSEFyTFUsb0JBQW9CO3NHQUFwQixvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFKaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRO2lCQUNUO3VJQUlDLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxNQUFNO2dCQVNqQixTQUFTO3NCQURSLEtBQUs7Z0JBU04sVUFBVTtzQkFEVCxLQUFLO2dCQVNOLFdBQVc7c0JBRFYsS0FBSztnQkFTTixPQUFPO3NCQUROLEtBQUs7Z0JBU04sVUFBVTtzQkFEVCxLQUFLO2dCQVNOLFlBQVk7c0JBRFgsS0FBSztnQkFVTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFTTixLQUFLO3NCQURKLEtBQUs7Z0JBU04sV0FBVztzQkFEVixLQUFLO2dCQVNOLDBCQUEwQjtzQkFEekIsS0FBSztnQkFTTixZQUFZO3NCQURYLEtBQUs7Z0JBU04sY0FBYztzQkFEYixNQUFNO2dCQVdQLG9CQUFvQjtzQkFEbkIsTUFBTTtnQkFXUCxnQkFBZ0I7c0JBRGYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENoYXJ0V2lkZ2V0LFxuICB0eXBlIENoYXJ0V2lkZ2V0UHJvcHMsXG4gIENvbXBvbmVudEFkYXB0ZXIsXG4gIGNyZWF0ZUVsZW1lbnQsXG59IGZyb20gJ0BzaXNlbnNlL3Nkay11aS1wcmVhY3QnO1xuaW1wb3J0IHsgU2lzZW5zZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2lzZW5zZS1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGhlbWUuc2VydmljZSc7XG5pbXBvcnQgdHlwZSB7IEFyZ3VtZW50cywgQXJndW1lbnRzQXNPYmplY3QgfSBmcm9tICcuLi8uLi90eXBlcy91dGlsaXR5LXR5cGVzJztcbmltcG9ydCB7XG4gIGNyZWF0ZVNpc2Vuc2VDb250ZXh0Q29ubmVjdG9yLFxuICBjcmVhdGVUaGVtZUNvbnRleHRDb25uZWN0b3IsXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudC13cmFwcGVyLWhlbHBlcnMnO1xuaW1wb3J0IHsgdGVtcGxhdGUsIHJvb3RJZCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC13cmFwcGVyLWhlbHBlcnMvdGVtcGxhdGUnO1xuXG4vKipcbiAqIFRoZSBDaGFydCBXaWRnZXQgY29tcG9uZW50IGV4dGVuZGluZyB7QGxpbmsgQ2hhcnRDb21wb25lbnR9IHRvIHN1cHBvcnQgd2lkZ2V0IHN0eWxlIG9wdGlvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxjc2RrLWNoYXJ0LXdpZGdldFxuICogICBbY2hhcnRUeXBlXT1cImNoYXJ0V2lkZ2V0LmNoYXJ0VHlwZVwiXG4gKiAgIFtkYXRhU291cmNlXT1cImNoYXJ0V2lkZ2V0LmRhdGFTb3VyY2VcIlxuICogICBbZGF0YU9wdGlvbnNdPVwiY2hhcnRXaWRnZXQuZGF0YU9wdGlvbnNcIlxuICogICBbaGlnaGxpZ2h0c109XCJmaWx0ZXJzXCJcbiAqICAgW3RpdGxlXT1cImNoYXJ0V2lkZ2V0LnRpdGxlXCJcbiAqICAgW2Rlc2NyaXB0aW9uXT1cImNoYXJ0V2lkZ2V0LmRlc2NyaXB0aW9uXCJcbiAqICAgW2JlZm9yZVJlbmRlcl09XCJvbkJlZm9yZVJlbmRlclwiXG4gKiAgIChkYXRhUG9pbnRDbGljayk9XCJsb2dBcmd1bWVudHMoJGV2ZW50KVwiXG4gKiAgIChkYXRhUG9pbnRDb250ZXh0TWVudSk9XCJsb2dBcmd1bWVudHMoJGV2ZW50KVwiXG4gKiAgIChkYXRhUG9pbnRzU2VsZWN0KT1cImxvZ0FyZ3VtZW50cygkZXZlbnQpXCJcbiAqIC8+XG4gKiBgYGBcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbiAqIGltcG9ydCB7IENoYXJ0VHlwZSB9IGZyb20gJ0BzaXNlbnNlL3Nkay11aS1hbmd1bGFyJztcbiAqIGltcG9ydCB7IGZpbHRlckZhY3RvcnkgfSBmcm9tICdAc2lzZW5zZS9zZGstZGF0YSc7XG4gKiBpbXBvcnQgKiBhcyBETSBmcm9tICcuLi8uLi9hc3NldHMvc2FtcGxlLWhlYWx0aGNhcmUtbW9kZWwnO1xuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2FwcC13aWRnZXRzJyxcbiAqICAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldHMuY29tcG9uZW50Lmh0bWwnLFxuICogICBzdHlsZVVybHM6IFsnLi93aWRnZXRzLmNvbXBvbmVudC5zY3NzJ10sXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIFdpZGdldHNDb21wb25lbnQge1xuICogICBmaWx0ZXJzID0gW2ZpbHRlckZhY3RvcnkubWVtYmVycyhETS5EaXZpc2lvbnMuRGl2aXNvbl9uYW1lLCBbJ0NhcmRpb2xvZ3knLCAnTmV1cm9sb2d5J10pXTtcbiAqICAgY2hhcnRXaWRnZXQgPSB7XG4gKiAgICAgY2hhcnRUeXBlOiAnY29sdW1uJyBhcyBDaGFydFR5cGUsXG4gKiAgICAgZGF0YVNvdXJjZTogRE0uRGF0YVNvdXJjZSxcbiAqICAgICBkYXRhT3B0aW9uczoge1xuICogICAgICAgY2F0ZWdvcnk6IFtETS5EaXZpc2lvbnMuRGl2aXNvbl9uYW1lXSxcbiAqICAgICAgIHZhbHVlOiBbbWVhc3VyZUZhY3Rvcnkuc3VtKERNLkFkbWlzc2lvbnMuQ29zdF9vZl9hZG1pc3Npb24pXSxcbiAqICAgICAgIGJyZWFrQnk6IFtdLFxuICogICAgIH0sXG4gKiAgICAgdGl0bGU6ICdDaGFydCBUaXRsZScsXG4gKiAgICAgZGVzY3JpcHRpb246ICdDaGFydCBEZXNjcmlwdGlvbicsXG4gKiAgIH07XG4gKiAgbG9nQXJndW1lbnRzKC4uLmFyZ3M6IGFueVtdKSB7XG4gKiAgIGNvbnNvbGUubG9nKGFyZ3MpO1xuICogfVxuICpcbiAqIG9uQmVmb3JlUmVuZGVyKG9wdGlvbnM6IGFueSkge1xuICogICBjb25zb2xlLmxvZygnYmVmb3JlUmVuZGVyJyk7XG4gKiAgIGNvbnNvbGUubG9nKG9wdGlvbnMpO1xuICogICByZXR1cm4gb3B0aW9ucztcbiAqIH1cbiAqXG4gKiB9XG4gKiBgYGBcbiAqIDxpbWcgc3JjPVwibWVkaWE6Ly9hbmd1bGFyLWNoYXJ0LXdpZGdldC1leGFtcGxlLnBuZ1wiIHdpZHRoPVwiODAwcHhcIiAvPlxuICpcbiAqIEBncm91cCBDaGFydCBVdGlsaXRpZXNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3Nkay1jaGFydC13aWRnZXQnLFxuICB0ZW1wbGF0ZSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhcnRXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgQFZpZXdDaGlsZChyb290SWQpXG4gIHByZWFjdFJlZiE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgQHNpc2Vuc2Uvc2RrLXVpIUNoYXJ0V2lkZ2V0UHJvcHMuY2hhcnRUeXBlfVxuICAgKlxuICAgKiBAY2F0ZWdvcnkgQ2hhcnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGNoYXJ0VHlwZSE6IENoYXJ0V2lkZ2V0UHJvcHNbJ2NoYXJ0VHlwZSddO1xuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgQHNpc2Vuc2Uvc2RrLXVpIUNoYXJ0V2lkZ2V0UHJvcHMuZGF0YVNvdXJjZX1cbiAgICpcbiAgICogQGNhdGVnb3J5IERhdGFcbiAgICovXG4gIEBJbnB1dCgpXG4gIGRhdGFTb3VyY2U6IENoYXJ0V2lkZ2V0UHJvcHNbJ2RhdGFTb3VyY2UnXTtcblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIEBzaXNlbnNlL3Nkay11aSFDaGFydFdpZGdldFByb3BzLmRhdGFPcHRpb25zfVxuICAgKlxuICAgKiBAY2F0ZWdvcnkgQ2hhcnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGRhdGFPcHRpb25zITogQ2hhcnRXaWRnZXRQcm9wc1snZGF0YU9wdGlvbnMnXTtcblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIEBzaXNlbnNlL3Nkay11aSFDaGFydFdpZGdldFByb3BzLmZpbHRlcnN9XG4gICAqXG4gICAqIEBjYXRlZ29yeSBEYXRhXG4gICAqL1xuICBASW5wdXQoKVxuICBmaWx0ZXJzOiBDaGFydFdpZGdldFByb3BzWydmaWx0ZXJzJ107XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBAc2lzZW5zZS9zZGstdWkhQ2hhcnRXaWRnZXRQcm9wcy5oaWdobGlnaHRzfVxuICAgKlxuICAgKiBAY2F0ZWdvcnkgRGF0YVxuICAgKi9cbiAgQElucHV0KClcbiAgaGlnaGxpZ2h0czogQ2hhcnRXaWRnZXRQcm9wc1snaGlnaGxpZ2h0cyddO1xuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgQHNpc2Vuc2Uvc2RrLXVpIUNoYXJ0V2lkZ2V0UHJvcHMuc3R5bGVPcHRpb25zfVxuICAgKlxuICAgKiBAY2F0ZWdvcnkgV2lkZ2V0XG4gICAqL1xuICBASW5wdXQoKVxuICBzdHlsZU9wdGlvbnM6IENoYXJ0V2lkZ2V0UHJvcHNbJ3N0eWxlT3B0aW9ucyddO1xuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgQHNpc2Vuc2Uvc2RrLXVpIUNoYXJ0V2lkZ2V0UHJvcHMuZHJpbGxkb3duT3B0aW9uc31cbiAgICpcbiAgICogQGNhdGVnb3J5IFdpZGdldFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIGRyaWxsZG93bk9wdGlvbnM6IENoYXJ0V2lkZ2V0UHJvcHNbJ2RyaWxsZG93bk9wdGlvbnMnXTtcblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIEBzaXNlbnNlL3Nkay11aSFDaGFydFdpZGdldFByb3BzLnRpdGxlfVxuICAgKlxuICAgKiBAY2F0ZWdvcnkgV2lkZ2V0XG4gICAqL1xuICBASW5wdXQoKVxuICB0aXRsZTogQ2hhcnRXaWRnZXRQcm9wc1sndGl0bGUnXTtcblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIEBzaXNlbnNlL3Nkay11aSFDaGFydFdpZGdldFByb3BzLmRlc2NyaXB0aW9ufVxuICAgKlxuICAgKiBAY2F0ZWdvcnkgV2lkZ2V0XG4gICAqL1xuICBASW5wdXQoKVxuICBkZXNjcmlwdGlvbjogQ2hhcnRXaWRnZXRQcm9wc1snZGVzY3JpcHRpb24nXTtcblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIEBzaXNlbnNlL3Nkay11aSFDaGFydFdpZGdldFByb3BzLmhpZ2hsaWdodFNlbGVjdGlvbkRpc2FibGVkfVxuICAgKlxuICAgKiBAY2F0ZWdvcnkgV2lkZ2V0XG4gICAqL1xuICBASW5wdXQoKVxuICBoaWdobGlnaHRTZWxlY3Rpb25EaXNhYmxlZDogQ2hhcnRXaWRnZXRQcm9wc1snaGlnaGxpZ2h0U2VsZWN0aW9uRGlzYWJsZWQnXTtcblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIEBzaXNlbnNlL3Nkay11aSFDaGFydFByb3BzLm9uQmVmb3JlUmVuZGVyfVxuICAgKlxuICAgKiBAY2F0ZWdvcnkgQ2FsbGJhY2tzXG4gICAqL1xuICBASW5wdXQoKVxuICBiZWZvcmVSZW5kZXI6IENoYXJ0V2lkZ2V0UHJvcHNbJ29uQmVmb3JlUmVuZGVyJ107XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBAc2lzZW5zZS9zZGstdWkhQ2hhcnRQcm9wcy5vbkRhdGFQb2ludENsaWNrfVxuICAgKlxuICAgKiBAY2F0ZWdvcnkgQ2FsbGJhY2tzXG4gICAqL1xuICBAT3V0cHV0KClcbiAgZGF0YVBvaW50Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEFyZ3VtZW50c0FzT2JqZWN0PENoYXJ0V2lkZ2V0UHJvcHNbJ29uRGF0YVBvaW50Q2xpY2snXSwgWydwb2ludCcsICduYXRpdmVFdmVudCddPlxuICA+KCk7XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBAc2lzZW5zZS9zZGstdWkhQ2hhcnRQcm9wcy5vbkRhdGFQb2ludENvbnRleHRNZW51fVxuICAgKlxuICAgKiBAY2F0ZWdvcnkgQ2FsbGJhY2tzXG4gICAqL1xuICBAT3V0cHV0KClcbiAgZGF0YVBvaW50Q29udGV4dE1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEFyZ3VtZW50c0FzT2JqZWN0PENoYXJ0V2lkZ2V0UHJvcHNbJ29uRGF0YVBvaW50Q29udGV4dE1lbnUnXSwgWydwb2ludCcsICduYXRpdmVFdmVudCddPlxuICA+KCk7XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBAc2lzZW5zZS9zZGstdWkhQ2hhcnRQcm9wcy5vbkRhdGFQb2ludHNTZWxlY3RlZH1cbiAgICpcbiAgICogQGNhdGVnb3J5IENhbGxiYWNrc1xuICAgKi9cbiAgQE91dHB1dCgpXG4gIGRhdGFQb2ludHNTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEFyZ3VtZW50c0FzT2JqZWN0PENoYXJ0V2lkZ2V0UHJvcHNbJ29uRGF0YVBvaW50c1NlbGVjdGVkJ10sIFsncG9pbnRzJywgJ25hdGl2ZUV2ZW50J10+XG4gID4oKTtcblxuICBwcml2YXRlIGNvbXBvbmVudEFkYXB0ZXI6IENvbXBvbmVudEFkYXB0ZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzaXNlbnNlQ29udGV4dFNlcnZpY2U6IFNpc2Vuc2VDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIHRoZW1lU2VydmljZTogVGhlbWVTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLmNvbXBvbmVudEFkYXB0ZXIgPSBuZXcgQ29tcG9uZW50QWRhcHRlcihcbiAgICAgICgpID0+IHRoaXMuY3JlYXRlUHJlYWN0Q29tcG9uZW50KCksXG4gICAgICBbXG4gICAgICAgIGNyZWF0ZVNpc2Vuc2VDb250ZXh0Q29ubmVjdG9yKHRoaXMuc2lzZW5zZUNvbnRleHRTZXJ2aWNlKSxcbiAgICAgICAgY3JlYXRlVGhlbWVDb250ZXh0Q29ubmVjdG9yKHRoaXMudGhlbWVTZXJ2aWNlKSxcbiAgICAgIF0sXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY29tcG9uZW50QWRhcHRlci5yZW5kZXIodGhpcy5wcmVhY3RSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLnByZWFjdFJlZikge1xuICAgICAgdGhpcy5jb21wb25lbnRBZGFwdGVyLnJlbmRlcih0aGlzLnByZWFjdFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVByZWFjdENvbXBvbmVudCgpIHtcbiAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgIGNoYXJ0VHlwZTogdGhpcy5jaGFydFR5cGUsXG4gICAgICBkYXRhU291cmNlOiB0aGlzLmRhdGFTb3VyY2UsXG4gICAgICBkYXRhT3B0aW9uczogdGhpcy5kYXRhT3B0aW9ucyxcbiAgICAgIGZpbHRlcnM6IHRoaXMuZmlsdGVycyxcbiAgICAgIGhpZ2hsaWdodHM6IHRoaXMuaGlnaGxpZ2h0cyxcbiAgICAgIHN0eWxlT3B0aW9uczogdGhpcy5zdHlsZU9wdGlvbnMsXG4gICAgICBkcmlsbGRvd25PcHRpb25zOiB0aGlzLmRyaWxsZG93bk9wdGlvbnMsXG4gICAgICB0aXRsZTogdGhpcy50aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgaGlnaGxpZ2h0U2VsZWN0aW9uRGlzYWJsZWQ6IHRoaXMuaGlnaGxpZ2h0U2VsZWN0aW9uRGlzYWJsZWQsXG4gICAgICBvbkJlZm9yZVJlbmRlcjogdGhpcy5iZWZvcmVSZW5kZXI/LmJpbmQodGhpcyksXG4gICAgICBvbkRhdGFQb2ludENsaWNrOiAoXG4gICAgICAgIC4uLltwb2ludCwgbmF0aXZlRXZlbnRdOiBBcmd1bWVudHM8Q2hhcnRXaWRnZXRQcm9wc1snb25EYXRhUG9pbnRDbGljayddPlxuICAgICAgKSA9PiB0aGlzLmRhdGFQb2ludENsaWNrLmVtaXQoeyBwb2ludCwgbmF0aXZlRXZlbnQgfSksXG4gICAgICBvbkRhdGFQb2ludENvbnRleHRNZW51OiAoXG4gICAgICAgIC4uLltwb2ludCwgbmF0aXZlRXZlbnRdOiBBcmd1bWVudHM8Q2hhcnRXaWRnZXRQcm9wc1snb25EYXRhUG9pbnRDb250ZXh0TWVudSddPlxuICAgICAgKSA9PiB0aGlzLmRhdGFQb2ludENvbnRleHRNZW51LmVtaXQoeyBwb2ludCwgbmF0aXZlRXZlbnQgfSksXG4gICAgICBvbkRhdGFQb2ludHNTZWxlY3RlZDogKFxuICAgICAgICAuLi5bcG9pbnRzLCBuYXRpdmVFdmVudF06IEFyZ3VtZW50czxDaGFydFdpZGdldFByb3BzWydvbkRhdGFQb2ludHNTZWxlY3RlZCddPlxuICAgICAgKSA9PiB0aGlzLmRhdGFQb2ludHNTZWxlY3QuZW1pdCh7IHBvaW50cywgbmF0aXZlRXZlbnQgfSksXG4gICAgfTtcblxuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KENoYXJ0V2lkZ2V0LCBwcm9wcyk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY29tcG9uZW50QWRhcHRlci5kZXN0cm95KCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { Component, Input, ViewChild, } from '@angular/core';
|
|
2
|
+
import { DashboardWidget, ComponentAdapter, createElement, } from '@sisense/sdk-ui-preact';
|
|
3
|
+
import { createSisenseContextConnector, createThemeContextConnector, } from '../../component-wrapper-helpers';
|
|
4
|
+
import { template, rootId } from '../../component-wrapper-helpers/template';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../services/sisense-context.service";
|
|
7
|
+
import * as i2 from "../../services/theme.service";
|
|
8
|
+
/**
|
|
9
|
+
* The Dashboard Widget component, which is a thin wrapper on {@link ChartWidgetComponent},
|
|
10
|
+
* is used to render a widget created in a Sisense Fusion instance.
|
|
11
|
+
*
|
|
12
|
+
* To learn more about using Sisense Fusion Widgets in Compose SDK, see
|
|
13
|
+
* [Sisense Fusion Widgets](https://sisense.dev/guides/sdk/guides/charts/guide-fusion-widgets.html).
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```html
|
|
17
|
+
* <csdk-dashboard-widget
|
|
18
|
+
* [widgetOid]="widgetOid"
|
|
19
|
+
* [dashboardOid]="dashboardOid"
|
|
20
|
+
* [includeDashboardFilters]="true"
|
|
21
|
+
* />
|
|
22
|
+
* ```
|
|
23
|
+
* ```ts
|
|
24
|
+
* import { Component } from '@angular/core';
|
|
25
|
+
* import { ChartType } from '@sisense/sdk-ui-angular';
|
|
26
|
+
* import { filterFactory, measureFactory } from '@sisense/sdk-data';
|
|
27
|
+
* import * as DM from '../../assets/sample-healthcare-model';
|
|
28
|
+
*
|
|
29
|
+
* @Component({
|
|
30
|
+
* selector: 'app-widgets',
|
|
31
|
+
* templateUrl: './widgets.component.html',
|
|
32
|
+
* styleUrls: ['./widgets.component.scss'],
|
|
33
|
+
* })
|
|
34
|
+
* export class WidgetsComponent {
|
|
35
|
+
* widgetOid: string = '60f3e3e3e4b0e3e3e4b0e3e3';
|
|
36
|
+
* dashboardOid: string = '60f3e3e3e4b0e3e3e4b0e3e3';
|
|
37
|
+
* ```
|
|
38
|
+
* @group Fusion Embed
|
|
39
|
+
* @fusionEmbed
|
|
40
|
+
*/
|
|
41
|
+
export class DashboardWidgetComponent {
|
|
42
|
+
constructor(sisenseContextService, themeService) {
|
|
43
|
+
this.sisenseContextService = sisenseContextService;
|
|
44
|
+
this.themeService = themeService;
|
|
45
|
+
this.componentAdapter = new ComponentAdapter(() => this.createPreactComponent(), [
|
|
46
|
+
createSisenseContextConnector(this.sisenseContextService),
|
|
47
|
+
createThemeContextConnector(this.themeService),
|
|
48
|
+
]);
|
|
49
|
+
}
|
|
50
|
+
/** @internal */
|
|
51
|
+
ngAfterViewInit() {
|
|
52
|
+
this.componentAdapter.render(this.preactRef.nativeElement);
|
|
53
|
+
}
|
|
54
|
+
/** @internal */
|
|
55
|
+
ngOnChanges() {
|
|
56
|
+
if (this.preactRef) {
|
|
57
|
+
this.componentAdapter.render(this.preactRef.nativeElement);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/** @internal */
|
|
61
|
+
createPreactComponent() {
|
|
62
|
+
const props = {
|
|
63
|
+
widgetOid: this.widgetOid,
|
|
64
|
+
dashboardOid: this.dashboardOid,
|
|
65
|
+
filters: this.filters,
|
|
66
|
+
highlights: this.highlights,
|
|
67
|
+
filtersMergeStrategy: this.filtersMergeStrategy,
|
|
68
|
+
includeDashboardFilters: this.includeDashboardFilters,
|
|
69
|
+
title: this.title,
|
|
70
|
+
description: this.description,
|
|
71
|
+
styleOptions: this.styleOptions,
|
|
72
|
+
highlightSelectionDisabled: this.highlightSelectionDisabled,
|
|
73
|
+
drilldownOptions: this.drilldownOptions,
|
|
74
|
+
};
|
|
75
|
+
return createElement(DashboardWidget, props);
|
|
76
|
+
}
|
|
77
|
+
/** @internal */
|
|
78
|
+
ngOnDestroy() {
|
|
79
|
+
this.componentAdapter.destroy();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
DashboardWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DashboardWidgetComponent, deps: [{ token: i1.SisenseContextService }, { token: i2.ThemeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
83
|
+
DashboardWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DashboardWidgetComponent, selector: "csdk-dashboard-widget", inputs: { widgetOid: "widgetOid", dashboardOid: "dashboardOid", filters: "filters", highlights: "highlights", filtersMergeStrategy: "filtersMergeStrategy", includeDashboardFilters: "includeDashboardFilters", title: "title", description: "description", styleOptions: "styleOptions", highlightSelectionDisabled: "highlightSelectionDisabled", drilldownOptions: "drilldownOptions" }, viewQueries: [{ propertyName: "preactRef", first: true, predicate: ["preact"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "\n <div #preact style=\"width: 100%; height: 100%\"></div>\n", isInline: true });
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DashboardWidgetComponent, decorators: [{
|
|
85
|
+
type: Component,
|
|
86
|
+
args: [{
|
|
87
|
+
selector: 'csdk-dashboard-widget',
|
|
88
|
+
template,
|
|
89
|
+
}]
|
|
90
|
+
}], ctorParameters: function () { return [{ type: i1.SisenseContextService }, { type: i2.ThemeService }]; }, propDecorators: { preactRef: [{
|
|
91
|
+
type: ViewChild,
|
|
92
|
+
args: [rootId]
|
|
93
|
+
}], widgetOid: [{
|
|
94
|
+
type: Input
|
|
95
|
+
}], dashboardOid: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], filters: [{
|
|
98
|
+
type: Input
|
|
99
|
+
}], highlights: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], filtersMergeStrategy: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], includeDashboardFilters: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], title: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], description: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}], styleOptions: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], highlightSelectionDisabled: [{
|
|
112
|
+
type: Input
|
|
113
|
+
}], drilldownOptions: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}] } });
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXNoYm9hcmQtd2lkZ2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssRUFHTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGVBQWUsRUFFZixnQkFBZ0IsRUFDaEIsYUFBYSxHQUNkLE1BQU0sd0JBQXdCLENBQUM7QUFHaEMsT0FBTyxFQUNMLDZCQUE2QixFQUM3QiwyQkFBMkIsR0FDNUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7O0FBRTVFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdDRztBQUtILE1BQU0sT0FBTyx3QkFBd0I7SUFtRG5DLFlBQ1UscUJBQTRDLEVBQzVDLFlBQTBCO1FBRDFCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFFbEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLENBQzFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUNsQztZQUNFLDZCQUE2QixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztZQUN6RCwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQy9DLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsZUFBZTtRQUNiLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztJQUVELGdCQUFnQjtJQUNSLHFCQUFxQjtRQUMzQixNQUFNLEtBQUssR0FBRztZQUNaLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixvQkFBb0IsRUFBRSxJQUFJLENBQUMsb0JBQW9CO1lBQy9DLHVCQUF1QixFQUFFLElBQUksQ0FBQyx1QkFBdUI7WUFDckQsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLDBCQUEwQjtZQUMzRCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1NBQ3hDLENBQUM7UUFFRixPQUFPLGFBQWEsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixXQUFXO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLENBQUM7O3NIQWxHVSx3QkFBd0I7MEdBQXhCLHdCQUF3Qjs0RkFBeEIsd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVE7aUJBQ1Q7dUlBSUMsU0FBUztzQkFEUixTQUFTO3VCQUFDLE1BQU07Z0JBSWpCLFNBQVM7c0JBRFIsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBU04sT0FBTztzQkFETixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4sdUJBQXVCO3NCQUR0QixLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBU04sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLDBCQUEwQjtzQkFEekIsS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRGFzaGJvYXJkV2lkZ2V0LFxuICB0eXBlIERhc2hib2FyZFdpZGdldFByb3BzLFxuICBDb21wb25lbnRBZGFwdGVyLFxuICBjcmVhdGVFbGVtZW50LFxufSBmcm9tICdAc2lzZW5zZS9zZGstdWktcHJlYWN0JztcbmltcG9ydCB7IFNpc2Vuc2VDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Npc2Vuc2UtY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgY3JlYXRlU2lzZW5zZUNvbnRleHRDb25uZWN0b3IsXG4gIGNyZWF0ZVRoZW1lQ29udGV4dENvbm5lY3Rvcixcbn0gZnJvbSAnLi4vLi4vY29tcG9uZW50LXdyYXBwZXItaGVscGVycyc7XG5pbXBvcnQgeyB0ZW1wbGF0ZSwgcm9vdElkIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50LXdyYXBwZXItaGVscGVycy90ZW1wbGF0ZSc7XG5cbi8qKlxuICogVGhlIERhc2hib2FyZCBXaWRnZXQgY29tcG9uZW50LCB3aGljaCBpcyBhIHRoaW4gd3JhcHBlciBvbiB7QGxpbmsgQ2hhcnRXaWRnZXRDb21wb25lbnR9LFxuICogaXMgdXNlZCB0byByZW5kZXIgYSB3aWRnZXQgY3JlYXRlZCBpbiBhIFNpc2Vuc2UgRnVzaW9uIGluc3RhbmNlLlxuICpcbiAqIFRvIGxlYXJuIG1vcmUgYWJvdXQgdXNpbmcgU2lzZW5zZSBGdXNpb24gV2lkZ2V0cyBpbiBDb21wb3NlIFNESywgc2VlXG4gKiBbU2lzZW5zZSBGdXNpb24gV2lkZ2V0c10oaHR0cHM6Ly9zaXNlbnNlLmRldi9ndWlkZXMvc2RrL2d1aWRlcy9jaGFydHMvZ3VpZGUtZnVzaW9uLXdpZGdldHMuaHRtbCkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxjc2RrLWRhc2hib2FyZC13aWRnZXRcbiAqICAgIFt3aWRnZXRPaWRdPVwid2lkZ2V0T2lkXCJcbiAqICAgIFtkYXNoYm9hcmRPaWRdPVwiZGFzaGJvYXJkT2lkXCJcbiAqICAgIFtpbmNsdWRlRGFzaGJvYXJkRmlsdGVyc109XCJ0cnVlXCJcbiAqIC8+XG4gKiBgYGBcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbiAqIGltcG9ydCB7IENoYXJ0VHlwZSB9IGZyb20gJ0BzaXNlbnNlL3Nkay11aS1hbmd1bGFyJztcbiAqIGltcG9ydCB7IGZpbHRlckZhY3RvcnksIG1lYXN1cmVGYWN0b3J5IH0gZnJvbSAnQHNpc2Vuc2Uvc2RrLWRhdGEnO1xuICogaW1wb3J0ICogYXMgRE0gZnJvbSAnLi4vLi4vYXNzZXRzL3NhbXBsZS1oZWFsdGhjYXJlLW1vZGVsJztcbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICBzZWxlY3RvcjogJ2FwcC13aWRnZXRzJyxcbiAqIHRlbXBsYXRlVXJsOiAnLi93aWRnZXRzLmNvbXBvbmVudC5odG1sJyxcbiAqIHN0eWxlVXJsczogWycuL3dpZGdldHMuY29tcG9uZW50LnNjc3MnXSxcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgV2lkZ2V0c0NvbXBvbmVudCB7XG4gKiAgd2lkZ2V0T2lkOiBzdHJpbmcgPSAnNjBmM2UzZTNlNGIwZTNlM2U0YjBlM2UzJztcbiAqICBkYXNoYm9hcmRPaWQ6IHN0cmluZyA9ICc2MGYzZTNlM2U0YjBlM2UzZTRiMGUzZTMnO1xuICogYGBgXG4gKiBAZ3JvdXAgRnVzaW9uIEVtYmVkXG4gKiBAZnVzaW9uRW1iZWRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3Nkay1kYXNoYm9hcmQtd2lkZ2V0JyxcbiAgdGVtcGxhdGUsXG59KVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBAVmlld0NoaWxkKHJvb3RJZClcbiAgcHJlYWN0UmVmITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgQElucHV0KClcbiAgd2lkZ2V0T2lkITogRGFzaGJvYXJkV2lkZ2V0UHJvcHNbJ3dpZGdldE9pZCddO1xuXG4gIEBJbnB1dCgpXG4gIGRhc2hib2FyZE9pZCE6IERhc2hib2FyZFdpZGdldFByb3BzWydkYXNoYm9hcmRPaWQnXTtcblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIEBzaXNlbnNlL3Nkay11aSFDaGFydFByb3BzLmZpbHRlcnN9XG4gICAqXG4gICAqIEBjYXRlZ29yeSBEYXRhXG4gICAqL1xuICBASW5wdXQoKVxuICBmaWx0ZXJzOiBEYXNoYm9hcmRXaWRnZXRQcm9wc1snZmlsdGVycyddO1xuXG4gIEBJbnB1dCgpXG4gIGhpZ2hsaWdodHM6IERhc2hib2FyZFdpZGdldFByb3BzWydoaWdobGlnaHRzJ107XG5cbiAgQElucHV0KClcbiAgZmlsdGVyc01lcmdlU3RyYXRlZ3k6IERhc2hib2FyZFdpZGdldFByb3BzWydmaWx0ZXJzTWVyZ2VTdHJhdGVneSddO1xuXG4gIEBJbnB1dCgpXG4gIGluY2x1ZGVEYXNoYm9hcmRGaWx0ZXJzOiBEYXNoYm9hcmRXaWRnZXRQcm9wc1snaW5jbHVkZURhc2hib2FyZEZpbHRlcnMnXTtcblxuICBASW5wdXQoKVxuICB0aXRsZTogRGFzaGJvYXJkV2lkZ2V0UHJvcHNbJ3RpdGxlJ107XG5cbiAgQElucHV0KClcbiAgZGVzY3JpcHRpb246IERhc2hib2FyZFdpZGdldFByb3BzWydkZXNjcmlwdGlvbiddO1xuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgQHNpc2Vuc2Uvc2RrLXVpIURhc2hib2FyZFdpZGdldFByb3BzLnN0eWxlT3B0aW9uc31cbiAgICpcbiAgICogQGNhdGVnb3J5IFdpZGdldFxuICAgKi9cbiAgQElucHV0KClcbiAgc3R5bGVPcHRpb25zOiBEYXNoYm9hcmRXaWRnZXRQcm9wc1snc3R5bGVPcHRpb25zJ107XG5cbiAgQElucHV0KClcbiAgaGlnaGxpZ2h0U2VsZWN0aW9uRGlzYWJsZWQ6IERhc2hib2FyZFdpZGdldFByb3BzWydoaWdobGlnaHRTZWxlY3Rpb25EaXNhYmxlZCddO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgQElucHV0KClcbiAgZHJpbGxkb3duT3B0aW9uczogRGFzaGJvYXJkV2lkZ2V0UHJvcHNbJ2RyaWxsZG93bk9wdGlvbnMnXTtcblxuICBwcml2YXRlIGNvbXBvbmVudEFkYXB0ZXI6IENvbXBvbmVudEFkYXB0ZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzaXNlbnNlQ29udGV4dFNlcnZpY2U6IFNpc2Vuc2VDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIHRoZW1lU2VydmljZTogVGhlbWVTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLmNvbXBvbmVudEFkYXB0ZXIgPSBuZXcgQ29tcG9uZW50QWRhcHRlcihcbiAgICAgICgpID0+IHRoaXMuY3JlYXRlUHJlYWN0Q29tcG9uZW50KCksXG4gICAgICBbXG4gICAgICAgIGNyZWF0ZVNpc2Vuc2VDb250ZXh0Q29ubmVjdG9yKHRoaXMuc2lzZW5zZUNvbnRleHRTZXJ2aWNlKSxcbiAgICAgICAgY3JlYXRlVGhlbWVDb250ZXh0Q29ubmVjdG9yKHRoaXMudGhlbWVTZXJ2aWNlKSxcbiAgICAgIF0sXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY29tcG9uZW50QWRhcHRlci5yZW5kZXIodGhpcy5wcmVhY3RSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLnByZWFjdFJlZikge1xuICAgICAgdGhpcy5jb21wb25lbnRBZGFwdGVyLnJlbmRlcih0aGlzLnByZWFjdFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgY3JlYXRlUHJlYWN0Q29tcG9uZW50KCkge1xuICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgd2lkZ2V0T2lkOiB0aGlzLndpZGdldE9pZCxcbiAgICAgIGRhc2hib2FyZE9pZDogdGhpcy5kYXNoYm9hcmRPaWQsXG4gICAgICBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMsXG4gICAgICBoaWdobGlnaHRzOiB0aGlzLmhpZ2hsaWdodHMsXG4gICAgICBmaWx0ZXJzTWVyZ2VTdHJhdGVneTogdGhpcy5maWx0ZXJzTWVyZ2VTdHJhdGVneSxcbiAgICAgIGluY2x1ZGVEYXNoYm9hcmRGaWx0ZXJzOiB0aGlzLmluY2x1ZGVEYXNoYm9hcmRGaWx0ZXJzLFxuICAgICAgdGl0bGU6IHRoaXMudGl0bGUsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIHN0eWxlT3B0aW9uczogdGhpcy5zdHlsZU9wdGlvbnMsXG4gICAgICBoaWdobGlnaHRTZWxlY3Rpb25EaXNhYmxlZDogdGhpcy5oaWdobGlnaHRTZWxlY3Rpb25EaXNhYmxlZCxcbiAgICAgIGRyaWxsZG93bk9wdGlvbnM6IHRoaXMuZHJpbGxkb3duT3B0aW9ucyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoRGFzaGJvYXJkV2lkZ2V0LCBwcm9wcyk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY29tcG9uZW50QWRhcHRlci5kZXN0cm95KCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import { ComponentAdapter, createElement, DrilldownWidget, createWrapperElement, createWrapperElementHandler, createComponentRenderer, } from '@sisense/sdk-ui-preact';
|
|
3
|
+
import { createSisenseContextConnector, createThemeContextConnector, } from '../../component-wrapper-helpers';
|
|
4
|
+
import { templateWithContent, rootId, rootContentId, } from '../../component-wrapper-helpers/template';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../services/sisense-context.service";
|
|
7
|
+
import * as i2 from "../../services/theme.service";
|
|
8
|
+
/**
|
|
9
|
+
* An Angular component designed to add drilldown functionality to any type of chart.
|
|
10
|
+
*
|
|
11
|
+
* It acts as a wrapper around a given chart component, enhancing it with drilldown capabilities
|
|
12
|
+
*
|
|
13
|
+
* The widget offers several features including:
|
|
14
|
+
* - A context menu for initiating drilldown actions (can be provided as a custom component)
|
|
15
|
+
* - Breadcrumbs that not only allow for drilldown selection slicing but also
|
|
16
|
+
* provide an option to clear the selection (can be provided as a custom component)
|
|
17
|
+
* - Filters specifically created for drilldown operation
|
|
18
|
+
* - An option to navigate to the next drilldown dimension
|
|
19
|
+
*
|
|
20
|
+
* When an `initialDimension` is specified, the `drilldownDimension` will automatically inherit its value,
|
|
21
|
+
* even before any points on the chart are selected.
|
|
22
|
+
* This allows for complete control over the chart's dimensions to be handed over to the DrilldownWidget
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* An example of using the `csdk-drilldown-widget` component to plot a `csdk-column-chart`
|
|
26
|
+
* over the Sample Healthcare data source hosted in a Sisense instance:
|
|
27
|
+
* ```ts
|
|
28
|
+
* // Component behavior in .component.ts
|
|
29
|
+
* chart = {
|
|
30
|
+
* dataOptions: {
|
|
31
|
+
* category: [DM.Divisions.Divison_name],
|
|
32
|
+
* value: [measureFactory.sum(DM.Admissions.Cost_of_admission)],
|
|
33
|
+
* breakBy: [],
|
|
34
|
+
* },
|
|
35
|
+
* dataPointContextMenu: ({ point, nativeEvent }: { point: any; nativeEvent: MouseEvent }) => {
|
|
36
|
+
* this.drilldownResult?.onDataPointsSelected?.([point], nativeEvent);
|
|
37
|
+
* this.drilldownResult?.onContextMenu({
|
|
38
|
+
* left: nativeEvent.clientX,
|
|
39
|
+
* top: nativeEvent.clientY,
|
|
40
|
+
* });
|
|
41
|
+
* }
|
|
42
|
+
* }
|
|
43
|
+
*
|
|
44
|
+
* drilldownResult?: CustomDrilldownResult;
|
|
45
|
+
*
|
|
46
|
+
* drilldown = {
|
|
47
|
+
* drilldownDimensions: [DM.Patients.Gender, DM.Admissions.Surgical_Procedure],
|
|
48
|
+
* initialDimension: DM.Divisions.Divison_name,
|
|
49
|
+
* drilldownChange: (drilldownResult: CustomDrilldownResult) => {
|
|
50
|
+
* this.drilldownResult = drilldownResult;
|
|
51
|
+
* this.chart.dataOptions = {
|
|
52
|
+
* ...this.chart.dataOptions,
|
|
53
|
+
* category: [drilldownResult.drilldownDimension]
|
|
54
|
+
* }
|
|
55
|
+
* }
|
|
56
|
+
* };
|
|
57
|
+
* ```
|
|
58
|
+
* ```html
|
|
59
|
+
* <!--Component HTML template in .component.html-->
|
|
60
|
+
* <csdk-drilldown-widget
|
|
61
|
+
* [drilldownDimensions]="drilldown.drilldownDimensions"
|
|
62
|
+
* [initialDimension]="drilldown.initialDimension"
|
|
63
|
+
* (drilldownResultChange)="drilldown.drilldownChange($event)"
|
|
64
|
+
* >
|
|
65
|
+
* <csdk-column-chart
|
|
66
|
+
* [dataSet]="DM.DataSource"
|
|
67
|
+
* [dataOptions]="chart.dataOptions"
|
|
68
|
+
* [filters]="drilldownResult?.drilldownFilters || []"
|
|
69
|
+
* (dataPointContextMenu)="chart.dataPointContextMenu($event)"
|
|
70
|
+
* />
|
|
71
|
+
* </csdk-drilldown-widget>
|
|
72
|
+
* ```
|
|
73
|
+
* <img src="media://angular-drilldown-widget-example.png" width="800px" />
|
|
74
|
+
*
|
|
75
|
+
* @group Drilldown
|
|
76
|
+
*/
|
|
77
|
+
export class DrilldownWidgetComponent {
|
|
78
|
+
/**
|
|
79
|
+
* Constructor for the `DrilldownWidgetComponent`.
|
|
80
|
+
*
|
|
81
|
+
* @param sisenseContextService - Sisense context service
|
|
82
|
+
* @param themeService - Theme service
|
|
83
|
+
*/
|
|
84
|
+
constructor(
|
|
85
|
+
/**
|
|
86
|
+
* Sisense context service
|
|
87
|
+
*
|
|
88
|
+
* @category Constructor
|
|
89
|
+
*/
|
|
90
|
+
sisenseContextService,
|
|
91
|
+
/**
|
|
92
|
+
* Theme service
|
|
93
|
+
*
|
|
94
|
+
* @category Constructor
|
|
95
|
+
*/
|
|
96
|
+
themeService) {
|
|
97
|
+
this.sisenseContextService = sisenseContextService;
|
|
98
|
+
this.themeService = themeService;
|
|
99
|
+
this.drilldownResultChange = new EventEmitter();
|
|
100
|
+
this.componentAdapter = new ComponentAdapter(() => this.createPreactComponent(), [
|
|
101
|
+
createSisenseContextConnector(this.sisenseContextService),
|
|
102
|
+
createThemeContextConnector(this.themeService),
|
|
103
|
+
]);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* @internal
|
|
107
|
+
*/
|
|
108
|
+
ngAfterViewInit() {
|
|
109
|
+
this.componentAdapter.render(this.preactRef.nativeElement);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* @internal
|
|
113
|
+
*/
|
|
114
|
+
ngOnChanges() {
|
|
115
|
+
if (this.preactRef) {
|
|
116
|
+
this.componentAdapter.render(this.preactRef.nativeElement);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
createPreactComponent() {
|
|
120
|
+
const props = {
|
|
121
|
+
drilldownDimensions: this.drilldownDimensions,
|
|
122
|
+
initialDimension: this.initialDimension,
|
|
123
|
+
config: {
|
|
124
|
+
...this.config,
|
|
125
|
+
...(this.config?.breadcrumbsComponent && {
|
|
126
|
+
breadcrumbsComponent: createWrapperElementHandler(this.config.breadcrumbsComponent),
|
|
127
|
+
}),
|
|
128
|
+
...(this.config?.contextMenuComponent && {
|
|
129
|
+
contextMenuComponent: (contextMenuProps) => createWrapperElement(this.config.contextMenuComponent(contextMenuProps)),
|
|
130
|
+
}),
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
return createElement(DrilldownWidget, props, (customDrilldownResult) => {
|
|
134
|
+
const { breadcrumbsComponent } = customDrilldownResult;
|
|
135
|
+
this.drilldownResultChange.emit({
|
|
136
|
+
...customDrilldownResult,
|
|
137
|
+
...(breadcrumbsComponent && {
|
|
138
|
+
breadcrumbsComponent: { render: createComponentRenderer(breadcrumbsComponent) },
|
|
139
|
+
}),
|
|
140
|
+
});
|
|
141
|
+
return createWrapperElement(this.preactContentRef.nativeElement);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* @internal
|
|
146
|
+
*/
|
|
147
|
+
ngOnDestroy() {
|
|
148
|
+
this.componentAdapter.destroy();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
DrilldownWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DrilldownWidgetComponent, deps: [{ token: i1.SisenseContextService }, { token: i2.ThemeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
152
|
+
DrilldownWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DrilldownWidgetComponent, selector: "csdk-drilldown-widget", inputs: { drilldownDimensions: "drilldownDimensions", initialDimension: "initialDimension", config: "config" }, outputs: { drilldownResultChange: "drilldownResultChange" }, viewQueries: [{ propertyName: "preactRef", first: true, predicate: ["preact"], descendants: true }, { propertyName: "preactContentRef", first: true, predicate: ["preactContent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "\n <div #preact style=\"width: 100%; height: 100%\">\n <div #preactContent style=\"width: 100%; height: 100%\">\n <ng-content></ng-content>\n </div>\n </div>\n", isInline: true });
|
|
153
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DrilldownWidgetComponent, decorators: [{
|
|
154
|
+
type: Component,
|
|
155
|
+
args: [{
|
|
156
|
+
selector: 'csdk-drilldown-widget',
|
|
157
|
+
template: templateWithContent,
|
|
158
|
+
}]
|
|
159
|
+
}], ctorParameters: function () { return [{ type: i1.SisenseContextService }, { type: i2.ThemeService }]; }, propDecorators: { preactRef: [{
|
|
160
|
+
type: ViewChild,
|
|
161
|
+
args: [rootId]
|
|
162
|
+
}], preactContentRef: [{
|
|
163
|
+
type: ViewChild,
|
|
164
|
+
args: [rootContentId]
|
|
165
|
+
}], drilldownDimensions: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], initialDimension: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}], config: [{
|
|
170
|
+
type: Input
|
|
171
|
+
}], drilldownResultChange: [{
|
|
172
|
+
type: Output
|
|
173
|
+
}] } });
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJpbGxkb3duLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9kcmlsbGRvd24td2lkZ2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixlQUFlLEVBTWYsb0JBQW9CLEVBQ3BCLDJCQUEyQixFQUMzQix1QkFBdUIsR0FDeEIsTUFBTSx3QkFBd0IsQ0FBQztBQUloQyxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLDJCQUEyQixHQUM1QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsTUFBTSxFQUNOLGFBQWEsR0FDZCxNQUFNLDBDQUEwQyxDQUFDOzs7O0FBUWxEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9FRztBQUtILE1BQU0sT0FBTyx3QkFBd0I7SUFvQ25DOzs7OztPQUtHO0lBQ0g7SUFDRTs7OztPQUlHO0lBQ0kscUJBQTRDO0lBQ25EOzs7O09BSUc7SUFDSSxZQUEwQjtRQU4xQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBTTVDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBdEJuQywwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztRQXdCaEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLENBQzFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUNsQztZQUNFLDZCQUE2QixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztZQUN6RCwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQy9DLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWU7UUFDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDNUQ7SUFDSCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLE1BQU0sS0FBSyxHQUFHO1lBQ1osbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtZQUM3QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ3ZDLE1BQU0sRUFBRTtnQkFDTixHQUFHLElBQUksQ0FBQyxNQUFNO2dCQUNkLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLG9CQUFvQixJQUFJO29CQUN2QyxvQkFBb0IsRUFBRSwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDO2lCQUNwRixDQUFDO2dCQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLG9CQUFvQixJQUFJO29CQUN2QyxvQkFBb0IsRUFBRSxDQUFDLGdCQUFrQyxFQUFFLEVBQUUsQ0FDM0Qsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU8sQ0FBQyxvQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2lCQUM3RSxDQUFDO2FBQ0g7U0FDc0IsQ0FBQztRQUUxQixPQUFPLGFBQWEsQ0FDbEIsZUFBZSxFQUNmLEtBQUssRUFDTCxDQUFDLHFCQUFxRSxFQUFFLEVBQUU7WUFDeEUsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcscUJBQXFCLENBQUM7WUFDdkQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQztnQkFDOUIsR0FBRyxxQkFBcUI7Z0JBQ3hCLEdBQUcsQ0FBQyxvQkFBb0IsSUFBSTtvQkFDMUIsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsdUJBQXVCLENBQUMsb0JBQW9CLENBQUMsRUFBRTtpQkFDaEYsQ0FBQzthQUNzQixDQUFDLENBQUM7WUFDNUIsT0FBTyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLENBQUM7O3NIQXRIVSx3QkFBd0I7MEdBQXhCLHdCQUF3Qjs0RkFBeEIsd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSxtQkFBbUI7aUJBQzlCO3VJQU1DLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxNQUFNO2dCQU9qQixnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxhQUFhO2dCQU94QixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBT04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQU9OLHFCQUFxQjtzQkFEcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbXBvbmVudEFkYXB0ZXIsXG4gIGNyZWF0ZUVsZW1lbnQsXG4gIERyaWxsZG93bldpZGdldCxcbiAgdHlwZSBEcmlsbGRvd25XaWRnZXRQcm9wcyxcbiAgdHlwZSBDb250ZXh0TWVudVByb3BzLFxuICB0eXBlIEN1c3RvbURyaWxsZG93blJlc3VsdCBhcyBDdXN0b21EcmlsbGRvd25SZXN1bHRCYXNlLFxuICB0eXBlIENvbXBvbmVudFJlbmRlcmVyLFxuICBEcmlsbGRvd25CcmVhZGNydW1ic1Byb3BzLFxuICBjcmVhdGVXcmFwcGVyRWxlbWVudCxcbiAgY3JlYXRlV3JhcHBlckVsZW1lbnRIYW5kbGVyLFxuICBjcmVhdGVDb21wb25lbnRSZW5kZXJlcixcbn0gZnJvbSAnQHNpc2Vuc2Uvc2RrLXVpLXByZWFjdCc7XG5pbXBvcnQgeyBTaXNlbnNlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zaXNlbnNlLWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlJztcbmltcG9ydCB0eXBlIHsgQXJndW1lbnRzIH0gZnJvbSAnLi4vLi4vdHlwZXMvdXRpbGl0eS10eXBlcyc7XG5pbXBvcnQge1xuICBjcmVhdGVTaXNlbnNlQ29udGV4dENvbm5lY3RvcixcbiAgY3JlYXRlVGhlbWVDb250ZXh0Q29ubmVjdG9yLFxufSBmcm9tICcuLi8uLi9jb21wb25lbnQtd3JhcHBlci1oZWxwZXJzJztcbmltcG9ydCB7XG4gIHRlbXBsYXRlV2l0aENvbnRlbnQsXG4gIHJvb3RJZCxcbiAgcm9vdENvbnRlbnRJZCxcbn0gZnJvbSAnLi4vLi4vY29tcG9uZW50LXdyYXBwZXItaGVscGVycy90ZW1wbGF0ZSc7XG5cbmV4cG9ydCB0eXBlIEN1c3RvbURyaWxsZG93blJlc3VsdCA9IEN1c3RvbURyaWxsZG93blJlc3VsdEJhc2UgJiB7XG4gIGJyZWFkY3J1bWJzQ29tcG9uZW50Pzoge1xuICAgIHJlbmRlcjogQ29tcG9uZW50UmVuZGVyZXI7XG4gIH07XG59O1xuXG4vKipcbiAqIEFuIEFuZ3VsYXIgY29tcG9uZW50IGRlc2lnbmVkIHRvIGFkZCBkcmlsbGRvd24gZnVuY3Rpb25hbGl0eSB0byBhbnkgdHlwZSBvZiBjaGFydC5cbiAqXG4gKiBJdCBhY3RzIGFzIGEgd3JhcHBlciBhcm91bmQgYSBnaXZlbiBjaGFydCBjb21wb25lbnQsIGVuaGFuY2luZyBpdCB3aXRoIGRyaWxsZG93biBjYXBhYmlsaXRpZXNcbiAqXG4gKiBUaGUgd2lkZ2V0IG9mZmVycyBzZXZlcmFsIGZlYXR1cmVzIGluY2x1ZGluZzpcbiAqIC0gQSBjb250ZXh0IG1lbnUgZm9yIGluaXRpYXRpbmcgZHJpbGxkb3duIGFjdGlvbnMgKGNhbiBiZSBwcm92aWRlZCBhcyBhIGN1c3RvbSBjb21wb25lbnQpXG4gKiAtIEJyZWFkY3J1bWJzIHRoYXQgbm90IG9ubHkgYWxsb3cgZm9yIGRyaWxsZG93biBzZWxlY3Rpb24gc2xpY2luZyBidXQgYWxzb1xuICogcHJvdmlkZSBhbiBvcHRpb24gdG8gY2xlYXIgdGhlIHNlbGVjdGlvbiAoY2FuIGJlIHByb3ZpZGVkIGFzIGEgY3VzdG9tIGNvbXBvbmVudClcbiAqIC0gRmlsdGVycyBzcGVjaWZpY2FsbHkgY3JlYXRlZCBmb3IgZHJpbGxkb3duIG9wZXJhdGlvblxuICogLSBBbiBvcHRpb24gdG8gbmF2aWdhdGUgdG8gdGhlIG5leHQgZHJpbGxkb3duIGRpbWVuc2lvblxuICpcbiAqIFdoZW4gYW4gYGluaXRpYWxEaW1lbnNpb25gIGlzIHNwZWNpZmllZCwgdGhlIGBkcmlsbGRvd25EaW1lbnNpb25gIHdpbGwgYXV0b21hdGljYWxseSBpbmhlcml0IGl0cyB2YWx1ZSxcbiAqIGV2ZW4gYmVmb3JlIGFueSBwb2ludHMgb24gdGhlIGNoYXJ0IGFyZSBzZWxlY3RlZC5cbiAqIFRoaXMgYWxsb3dzIGZvciBjb21wbGV0ZSBjb250cm9sIG92ZXIgdGhlIGNoYXJ0J3MgZGltZW5zaW9ucyB0byBiZSBoYW5kZWQgb3ZlciB0byB0aGUgRHJpbGxkb3duV2lkZ2V0XG4gKlxuICogQGV4YW1wbGVcbiAqIEFuIGV4YW1wbGUgb2YgdXNpbmcgdGhlIGBjc2RrLWRyaWxsZG93bi13aWRnZXRgIGNvbXBvbmVudCB0byBwbG90IGEgYGNzZGstY29sdW1uLWNoYXJ0YFxuICogb3ZlciB0aGUgU2FtcGxlIEhlYWx0aGNhcmUgZGF0YSBzb3VyY2UgaG9zdGVkIGluIGEgU2lzZW5zZSBpbnN0YW5jZTpcbiAqIGBgYHRzXG4gKiAvLyBDb21wb25lbnQgYmVoYXZpb3IgaW4gLmNvbXBvbmVudC50c1xuICogY2hhcnQgPSB7XG4gKiAgIGRhdGFPcHRpb25zOiB7XG4gKiAgICAgY2F0ZWdvcnk6IFtETS5EaXZpc2lvbnMuRGl2aXNvbl9uYW1lXSxcbiAqICAgICB2YWx1ZTogW21lYXN1cmVGYWN0b3J5LnN1bShETS5BZG1pc3Npb25zLkNvc3Rfb2ZfYWRtaXNzaW9uKV0sXG4gKiAgICAgYnJlYWtCeTogW10sXG4gKiAgIH0sXG4gKiAgIGRhdGFQb2ludENvbnRleHRNZW51OiAoeyBwb2ludCwgbmF0aXZlRXZlbnQgfTogeyBwb2ludDogYW55OyBuYXRpdmVFdmVudDogTW91c2VFdmVudCB9KSA9PiB7XG4gKiAgICAgdGhpcy5kcmlsbGRvd25SZXN1bHQ/Lm9uRGF0YVBvaW50c1NlbGVjdGVkPy4oW3BvaW50XSwgbmF0aXZlRXZlbnQpO1xuICogICAgIHRoaXMuZHJpbGxkb3duUmVzdWx0Py5vbkNvbnRleHRNZW51KHtcbiAqICAgICAgIGxlZnQ6IG5hdGl2ZUV2ZW50LmNsaWVudFgsXG4gKiAgICAgICB0b3A6IG5hdGl2ZUV2ZW50LmNsaWVudFksXG4gKiAgICAgfSk7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBkcmlsbGRvd25SZXN1bHQ/OiBDdXN0b21EcmlsbGRvd25SZXN1bHQ7XG4gKlxuICogZHJpbGxkb3duID0ge1xuICogICBkcmlsbGRvd25EaW1lbnNpb25zOiBbRE0uUGF0aWVudHMuR2VuZGVyLCBETS5BZG1pc3Npb25zLlN1cmdpY2FsX1Byb2NlZHVyZV0sXG4gKiAgIGluaXRpYWxEaW1lbnNpb246IERNLkRpdmlzaW9ucy5EaXZpc29uX25hbWUsXG4gKiAgIGRyaWxsZG93bkNoYW5nZTogKGRyaWxsZG93blJlc3VsdDogQ3VzdG9tRHJpbGxkb3duUmVzdWx0KSA9PiB7XG4gKiAgICAgdGhpcy5kcmlsbGRvd25SZXN1bHQgPSBkcmlsbGRvd25SZXN1bHQ7XG4gKiAgICAgdGhpcy5jaGFydC5kYXRhT3B0aW9ucyA9IHtcbiAqICAgICAgIC4uLnRoaXMuY2hhcnQuZGF0YU9wdGlvbnMsXG4gKiAgICAgICBjYXRlZ29yeTogW2RyaWxsZG93blJlc3VsdC5kcmlsbGRvd25EaW1lbnNpb25dXG4gKiAgICAgfVxuICogICB9XG4gKiB9O1xuICogYGBgXG4gKiBgYGBodG1sXG4gKiA8IS0tQ29tcG9uZW50IEhUTUwgdGVtcGxhdGUgaW4gLmNvbXBvbmVudC5odG1sLS0+XG4gKiA8Y3Nkay1kcmlsbGRvd24td2lkZ2V0XG4gKiAgIFtkcmlsbGRvd25EaW1lbnNpb25zXT1cImRyaWxsZG93bi5kcmlsbGRvd25EaW1lbnNpb25zXCJcbiAqICAgW2luaXRpYWxEaW1lbnNpb25dPVwiZHJpbGxkb3duLmluaXRpYWxEaW1lbnNpb25cIlxuICogICAoZHJpbGxkb3duUmVzdWx0Q2hhbmdlKT1cImRyaWxsZG93bi5kcmlsbGRvd25DaGFuZ2UoJGV2ZW50KVwiXG4gKiA+XG4gKiAgIDxjc2RrLWNvbHVtbi1jaGFydFxuICogICAgIFtkYXRhU2V0XT1cIkRNLkRhdGFTb3VyY2VcIlxuICogICAgIFtkYXRhT3B0aW9uc109XCJjaGFydC5kYXRhT3B0aW9uc1wiXG4gKiAgICAgW2ZpbHRlcnNdPVwiZHJpbGxkb3duUmVzdWx0Py5kcmlsbGRvd25GaWx0ZXJzIHx8IFtdXCJcbiAqICAgICAoZGF0YVBvaW50Q29udGV4dE1lbnUpPVwiY2hhcnQuZGF0YVBvaW50Q29udGV4dE1lbnUoJGV2ZW50KVwiXG4gKiAgIC8+XG4gKiA8L2NzZGstZHJpbGxkb3duLXdpZGdldD5cbiAqIGBgYFxuICogPGltZyBzcmM9XCJtZWRpYTovL2FuZ3VsYXItZHJpbGxkb3duLXdpZGdldC1leGFtcGxlLnBuZ1wiIHdpZHRoPVwiODAwcHhcIiAvPlxuICpcbiAqIEBncm91cCBEcmlsbGRvd25cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3Nkay1kcmlsbGRvd24td2lkZ2V0JyxcbiAgdGVtcGxhdGU6IHRlbXBsYXRlV2l0aENvbnRlbnQsXG59KVxuZXhwb3J0IGNsYXNzIERyaWxsZG93bldpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQFZpZXdDaGlsZChyb290SWQpXG4gIHByZWFjdFJlZiE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBWaWV3Q2hpbGQocm9vdENvbnRlbnRJZClcbiAgcHJlYWN0Q29udGVudFJlZiE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgQHNpc2Vuc2Uvc2RrLXVpIURyaWxsZG93bldpZGdldFByb3BzLmRyaWxsZG93bkRpbWVuc2lvbnN9XG4gICAqL1xuICBASW5wdXQoKVxuICBkcmlsbGRvd25EaW1lbnNpb25zITogRHJpbGxkb3duV2lkZ2V0UHJvcHNbJ2RyaWxsZG93bkRpbWVuc2lvbnMnXTtcblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIEBzaXNlbnNlL3Nkay11aSFEcmlsbGRvd25XaWRnZXRQcm9wcy5pbml0aWFsRGltZW5zaW9ufVxuICAgKi9cbiAgQElucHV0KClcbiAgaW5pdGlhbERpbWVuc2lvbiE6IERyaWxsZG93bldpZGdldFByb3BzWydpbml0aWFsRGltZW5zaW9uJ107XG5cbiAgQElucHV0KClcbiAgY29uZmlnPzogT21pdDxEcmlsbGRvd25XaWRnZXRQcm9wc1snY29uZmlnJ10sICdicmVhZGNydW1ic0NvbXBvbmVudCB8IGNvbnRleHRNZW51Q29tcG9uZW50Jz4gJiB7XG4gICAgYnJlYWRjcnVtYnNDb21wb25lbnQ/OiAoZHJpbGxkb3duQnJlYWRjcnVtYnNQcm9wczogRHJpbGxkb3duQnJlYWRjcnVtYnNQcm9wcykgPT4gSFRNTERpdkVsZW1lbnQ7XG4gICAgY29udGV4dE1lbnVDb21wb25lbnQ/OiAoY29udGV4dE1lbnVQcm9wczogQ29udGV4dE1lbnVQcm9wcykgPT4gSFRNTERpdkVsZW1lbnQ7XG4gIH07XG5cbiAgQE91dHB1dCgpXG4gIGRyaWxsZG93blJlc3VsdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRHJpbGxkb3duUmVzdWx0PigpO1xuXG4gIHByaXZhdGUgY29tcG9uZW50QWRhcHRlcjogQ29tcG9uZW50QWRhcHRlcjtcblxuICAvKipcbiAgICogQ29uc3RydWN0b3IgZm9yIHRoZSBgRHJpbGxkb3duV2lkZ2V0Q29tcG9uZW50YC5cbiAgICpcbiAgICogQHBhcmFtIHNpc2Vuc2VDb250ZXh0U2VydmljZSAtIFNpc2Vuc2UgY29udGV4dCBzZXJ2aWNlXG4gICAqIEBwYXJhbSB0aGVtZVNlcnZpY2UgLSBUaGVtZSBzZXJ2aWNlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICAvKipcbiAgICAgKiBTaXNlbnNlIGNvbnRleHQgc2VydmljZVxuICAgICAqXG4gICAgICogQGNhdGVnb3J5IENvbnN0cnVjdG9yXG4gICAgICovXG4gICAgcHVibGljIHNpc2Vuc2VDb250ZXh0U2VydmljZTogU2lzZW5zZUNvbnRleHRTZXJ2aWNlLFxuICAgIC8qKlxuICAgICAqIFRoZW1lIHNlcnZpY2VcbiAgICAgKlxuICAgICAqIEBjYXRlZ29yeSBDb25zdHJ1Y3RvclxuICAgICAqL1xuICAgIHB1YmxpYyB0aGVtZVNlcnZpY2U6IFRoZW1lU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5jb21wb25lbnRBZGFwdGVyID0gbmV3IENvbXBvbmVudEFkYXB0ZXIoXG4gICAgICAoKSA9PiB0aGlzLmNyZWF0ZVByZWFjdENvbXBvbmVudCgpLFxuICAgICAgW1xuICAgICAgICBjcmVhdGVTaXNlbnNlQ29udGV4dENvbm5lY3Rvcih0aGlzLnNpc2Vuc2VDb250ZXh0U2VydmljZSksXG4gICAgICAgIGNyZWF0ZVRoZW1lQ29udGV4dENvbm5lY3Rvcih0aGlzLnRoZW1lU2VydmljZSksXG4gICAgICBdLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5jb21wb25lbnRBZGFwdGVyLnJlbmRlcih0aGlzLnByZWFjdFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLnByZWFjdFJlZikge1xuICAgICAgdGhpcy5jb21wb25lbnRBZGFwdGVyLnJlbmRlcih0aGlzLnByZWFjdFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVByZWFjdENvbXBvbmVudCgpIHtcbiAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgIGRyaWxsZG93bkRpbWVuc2lvbnM6IHRoaXMuZHJpbGxkb3duRGltZW5zaW9ucyxcbiAgICAgIGluaXRpYWxEaW1lbnNpb246IHRoaXMuaW5pdGlhbERpbWVuc2lvbixcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICAgICAgLi4uKHRoaXMuY29uZmlnPy5icmVhZGNydW1ic0NvbXBvbmVudCAmJiB7XG4gICAgICAgICAgYnJlYWRjcnVtYnNDb21wb25lbnQ6IGNyZWF0ZVdyYXBwZXJFbGVtZW50SGFuZGxlcih0aGlzLmNvbmZpZy5icmVhZGNydW1ic0NvbXBvbmVudCksXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4odGhpcy5jb25maWc/LmNvbnRleHRNZW51Q29tcG9uZW50ICYmIHtcbiAgICAgICAgICBjb250ZXh0TWVudUNvbXBvbmVudDogKGNvbnRleHRNZW51UHJvcHM6IENvbnRleHRNZW51UHJvcHMpID0+XG4gICAgICAgICAgICBjcmVhdGVXcmFwcGVyRWxlbWVudCh0aGlzLmNvbmZpZyEuY29udGV4dE1lbnVDb21wb25lbnQhKGNvbnRleHRNZW51UHJvcHMpKSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0gYXMgRHJpbGxkb3duV2lkZ2V0UHJvcHM7XG5cbiAgICByZXR1cm4gY3JlYXRlRWxlbWVudChcbiAgICAgIERyaWxsZG93bldpZGdldCxcbiAgICAgIHByb3BzLFxuICAgICAgKGN1c3RvbURyaWxsZG93blJlc3VsdDogQXJndW1lbnRzPERyaWxsZG93bldpZGdldFByb3BzWydjaGlsZHJlbiddPlswXSkgPT4ge1xuICAgICAgICBjb25zdCB7IGJyZWFkY3J1bWJzQ29tcG9uZW50IH0gPSBjdXN0b21EcmlsbGRvd25SZXN1bHQ7XG4gICAgICAgIHRoaXMuZHJpbGxkb3duUmVzdWx0Q2hhbmdlLmVtaXQoe1xuICAgICAgICAgIC4uLmN1c3RvbURyaWxsZG93blJlc3VsdCxcbiAgICAgICAgICAuLi4oYnJlYWRjcnVtYnNDb21wb25lbnQgJiYge1xuICAgICAgICAgICAgYnJlYWRjcnVtYnNDb21wb25lbnQ6IHsgcmVuZGVyOiBjcmVhdGVDb21wb25lbnRSZW5kZXJlcihicmVhZGNydW1ic0NvbXBvbmVudCkgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSBhcyBDdXN0b21EcmlsbGRvd25SZXN1bHQpO1xuICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlckVsZW1lbnQodGhpcy5wcmVhY3RDb250ZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jb21wb25lbnRBZGFwdGVyLmRlc3Ryb3koKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './table-widget.component';
|
|
2
|
+
export * from './dashboard-widget.component';
|
|
3
|
+
export * from './drilldown-widget.component';
|
|
4
|
+
export * from './chart-widget.component';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90YWJsZS13aWRnZXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZGFzaGJvYXJkLXdpZGdldC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmlsbGRvd24td2lkZ2V0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NoYXJ0LXdpZGdldC5jb21wb25lbnQnO1xuIl19
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Component, Input, ViewChild, } from '@angular/core';
|
|
2
|
+
import { TableWidget, ComponentAdapter, createElement, } from '@sisense/sdk-ui-preact';
|
|
3
|
+
import { createSisenseContextConnector, createThemeContextConnector, } from '../../component-wrapper-helpers';
|
|
4
|
+
import { template, rootId } from '../../component-wrapper-helpers/template';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../services/sisense-context.service";
|
|
7
|
+
import * as i2 from "../../services/theme.service";
|
|
8
|
+
/**
|
|
9
|
+
* The Table Widget component extending {@link TableComponent} component to support widget style options.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```html
|
|
13
|
+
* <csdk-table-widget
|
|
14
|
+
* [dataSource]="table.dataSet"
|
|
15
|
+
* [dataOptions]="table.dataOptions"
|
|
16
|
+
* [filters]="filters"
|
|
17
|
+
* [title]="table.title"
|
|
18
|
+
* [description]="table.description"
|
|
19
|
+
* />
|
|
20
|
+
* ```
|
|
21
|
+
* ```ts
|
|
22
|
+
* import { Component } from '@angular/core';
|
|
23
|
+
* import { ChartType } from '@sisense/sdk-ui-angular';
|
|
24
|
+
* import { filterFactory, measureFactory } from '@sisense/sdk-data';
|
|
25
|
+
* import * as DM from '../../assets/sample-healthcare-model';
|
|
26
|
+
*
|
|
27
|
+
* @Component({
|
|
28
|
+
* selector: 'app-widgets',
|
|
29
|
+
* templateUrl: './widgets.component.html',
|
|
30
|
+
* styleUrls: ['./widgets.component.scss'],
|
|
31
|
+
* })
|
|
32
|
+
* export class WidgetsComponent {
|
|
33
|
+
* filters = [filterFactory.members(DM.Divisions.Divison_name, ['Cardiology', 'Neurology'])];
|
|
34
|
+
*
|
|
35
|
+
* table = {
|
|
36
|
+
* dataSet: DM.DataSource,
|
|
37
|
+
* dataOptions: {
|
|
38
|
+
* columns: [DM.Admissions.Patient_ID, measureFactory.sum(DM.Admissions.Cost_of_admission)],
|
|
39
|
+
* }
|
|
40
|
+
* title: 'Widget Title',
|
|
41
|
+
* description: 'Widget Description',
|
|
42
|
+
* };
|
|
43
|
+
* }
|
|
44
|
+
* ```
|
|
45
|
+
* <img src="media://angular-table-widget-example.png" width="800px" />
|
|
46
|
+
* @internal
|
|
47
|
+
*/
|
|
48
|
+
export class TableWidgetComponent {
|
|
49
|
+
constructor(sisenseContextService, themeService) {
|
|
50
|
+
this.sisenseContextService = sisenseContextService;
|
|
51
|
+
this.themeService = themeService;
|
|
52
|
+
this.componentAdapter = new ComponentAdapter(() => this.createPreactComponent(), [
|
|
53
|
+
createSisenseContextConnector(this.sisenseContextService),
|
|
54
|
+
createThemeContextConnector(this.themeService),
|
|
55
|
+
]);
|
|
56
|
+
}
|
|
57
|
+
ngAfterViewInit() {
|
|
58
|
+
this.componentAdapter.render(this.preactRef.nativeElement);
|
|
59
|
+
}
|
|
60
|
+
ngOnChanges() {
|
|
61
|
+
if (this.preactRef) {
|
|
62
|
+
this.componentAdapter.render(this.preactRef.nativeElement);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
createPreactComponent() {
|
|
66
|
+
const props = {
|
|
67
|
+
dataSource: this.dataSource,
|
|
68
|
+
dataOptions: this.dataOptions,
|
|
69
|
+
filters: this.filters,
|
|
70
|
+
styleOptions: this.styleOptions,
|
|
71
|
+
title: this.title,
|
|
72
|
+
description: this.description,
|
|
73
|
+
};
|
|
74
|
+
return createElement(TableWidget, props);
|
|
75
|
+
}
|
|
76
|
+
ngOnDestroy() {
|
|
77
|
+
this.componentAdapter.destroy();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
TableWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TableWidgetComponent, deps: [{ token: i1.SisenseContextService }, { token: i2.ThemeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
+
TableWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TableWidgetComponent, selector: "csdk-table-widget", inputs: { dataSource: "dataSource", dataOptions: "dataOptions", filters: "filters", styleOptions: "styleOptions", title: "title", description: "description" }, viewQueries: [{ propertyName: "preactRef", first: true, predicate: ["preact"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "\n <div #preact style=\"width: 100%; height: 100%\"></div>\n", isInline: true });
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TableWidgetComponent, decorators: [{
|
|
83
|
+
type: Component,
|
|
84
|
+
args: [{
|
|
85
|
+
selector: 'csdk-table-widget',
|
|
86
|
+
template,
|
|
87
|
+
}]
|
|
88
|
+
}], ctorParameters: function () { return [{ type: i1.SisenseContextService }, { type: i2.ThemeService }]; }, propDecorators: { preactRef: [{
|
|
89
|
+
type: ViewChild,
|
|
90
|
+
args: [rootId]
|
|
91
|
+
}], dataSource: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}], dataOptions: [{
|
|
94
|
+
type: Input
|
|
95
|
+
}], filters: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], styleOptions: [{
|
|
98
|
+
type: Input
|
|
99
|
+
}], title: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], description: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}] } });
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy93aWRnZXRzL3RhYmxlLXdpZGdldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxXQUFXLEVBRVgsZ0JBQWdCLEVBQ2hCLGFBQWEsR0FDZCxNQUFNLHdCQUF3QixDQUFDO0FBR2hDLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsMkJBQTJCLEdBQzVCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7OztBQUU1RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNHO0FBS0gsTUFBTSxPQUFPLG9CQUFvQjtJQXVEL0IsWUFDVSxxQkFBNEMsRUFDNUMsWUFBMEI7UUFEMUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUVsQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FDMUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLEVBQ2xDO1lBQ0UsNkJBQTZCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQ3pELDJCQUEyQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDL0MsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixNQUFNLEtBQUssR0FBRztZQUNaLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1NBQzlCLENBQUM7UUFFRixPQUFPLGFBQWEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbEMsQ0FBQzs7a0hBN0ZVLG9CQUFvQjtzR0FBcEIsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBSmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsUUFBUTtpQkFDVDt1SUFJQyxTQUFTO3NCQURSLFNBQVM7dUJBQUMsTUFBTTtnQkFTakIsVUFBVTtzQkFEVCxLQUFLO2dCQVNOLFdBQVc7c0JBRFYsS0FBSztnQkFTTixPQUFPO3NCQUROLEtBQUs7Z0JBU04sWUFBWTtzQkFEWCxLQUFLO2dCQVNOLEtBQUs7c0JBREosS0FBSztnQkFTTixXQUFXO3NCQURWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFRhYmxlV2lkZ2V0LFxuICB0eXBlIFRhYmxlV2lkZ2V0UHJvcHMsXG4gIENvbXBvbmVudEFkYXB0ZXIsXG4gIGNyZWF0ZUVsZW1lbnQsXG59IGZyb20gJ0BzaXNlbnNlL3Nkay11aS1wcmVhY3QnO1xuaW1wb3J0IHsgU2lzZW5zZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2lzZW5zZS1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGhlbWUuc2VydmljZSc7XG5pbXBvcnQge1xuICBjcmVhdGVTaXNlbnNlQ29udGV4dENvbm5lY3RvcixcbiAgY3JlYXRlVGhlbWVDb250ZXh0Q29ubmVjdG9yLFxufSBmcm9tICcuLi8uLi9jb21wb25lbnQtd3JhcHBlci1oZWxwZXJzJztcbmltcG9ydCB7IHRlbXBsYXRlLCByb290SWQgfSBmcm9tICcuLi8uLi9jb21wb25lbnQtd3JhcHBlci1oZWxwZXJzL3RlbXBsYXRlJztcblxuLyoqXG4gKiBUaGUgVGFibGUgV2lkZ2V0IGNvbXBvbmVudCBleHRlbmRpbmcge0BsaW5rIFRhYmxlQ29tcG9uZW50fSBjb21wb25lbnQgdG8gc3VwcG9ydCB3aWRnZXQgc3R5bGUgb3B0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogIDxjc2RrLXRhYmxlLXdpZGdldFxuICogICAgW2RhdGFTb3VyY2VdPVwidGFibGUuZGF0YVNldFwiXG4gKiAgICBbZGF0YU9wdGlvbnNdPVwidGFibGUuZGF0YU9wdGlvbnNcIlxuICogICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXG4gKiAgICBbdGl0bGVdPVwidGFibGUudGl0bGVcIlxuICogICAgW2Rlc2NyaXB0aW9uXT1cInRhYmxlLmRlc2NyaXB0aW9uXCJcbiAqICAvPlxuICogYGBgXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4gKiBpbXBvcnQgeyBDaGFydFR5cGUgfSBmcm9tICdAc2lzZW5zZS9zZGstdWktYW5ndWxhcic7XG4gKiBpbXBvcnQgeyBmaWx0ZXJGYWN0b3J5LCBtZWFzdXJlRmFjdG9yeSB9IGZyb20gJ0BzaXNlbnNlL3Nkay1kYXRhJztcbiAqIGltcG9ydCAqIGFzIERNIGZyb20gJy4uLy4uL2Fzc2V0cy9zYW1wbGUtaGVhbHRoY2FyZS1tb2RlbCc7XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgc2VsZWN0b3I6ICdhcHAtd2lkZ2V0cycsXG4gKiB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0cy5jb21wb25lbnQuaHRtbCcsXG4gKiBzdHlsZVVybHM6IFsnLi93aWRnZXRzLmNvbXBvbmVudC5zY3NzJ10sXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIFdpZGdldHNDb21wb25lbnQge1xuICogZmlsdGVycyA9IFtmaWx0ZXJGYWN0b3J5Lm1lbWJlcnMoRE0uRGl2aXNpb25zLkRpdmlzb25fbmFtZSwgWydDYXJkaW9sb2d5JywgJ05ldXJvbG9neSddKV07XG4gKlxuICogdGFibGUgPSB7XG4gKiAgICBkYXRhU2V0OiBETS5EYXRhU291cmNlLFxuICogICAgZGF0YU9wdGlvbnM6IHtcbiAqICAgICAgY29sdW1uczogW0RNLkFkbWlzc2lvbnMuUGF0aWVudF9JRCwgbWVhc3VyZUZhY3Rvcnkuc3VtKERNLkFkbWlzc2lvbnMuQ29zdF9vZl9hZG1pc3Npb24pXSxcbiAqICAgIH1cbiAqICAgIHRpdGxlOiAnV2lkZ2V0IFRpdGxlJyxcbiAqICAgIGRlc2NyaXB0aW9uOiAnV2lkZ2V0IERlc2NyaXB0aW9uJyxcbiAqICB9O1xuICogfVxuICogYGBgXG4gKiA8aW1nIHNyYz1cIm1lZGlhOi8vYW5ndWxhci10YWJsZS13aWRnZXQtZXhhbXBsZS5wbmdcIiB3aWR0aD1cIjgwMHB4XCIgLz5cbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjc2RrLXRhYmxlLXdpZGdldCcsXG4gIHRlbXBsYXRlLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBAVmlld0NoaWxkKHJvb3RJZClcbiAgcHJlYWN0UmVmITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBAc2lzZW5zZS9zZGstdWkhVGFibGVXaWRnZXRQcm9wcy5kYXRhU291cmNlfVxuICAgKlxuICAgKiBAY2F0ZWdvcnkgRGF0YVxuICAgKi9cbiAgQElucHV0KClcbiAgZGF0YVNvdXJjZTogVGFibGVXaWRnZXRQcm9wc1snZGF0YVNvdXJjZSddO1xuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgQHNpc2Vuc2Uvc2RrLXVpIVRhYmxlV2lkZ2V0UHJvcHMuZGF0YU9wdGlvbnN9XG4gICAqXG4gICAqIEBjYXRlZ29yeSBEYXRhXG4gICAqL1xuICBASW5wdXQoKVxuICBkYXRhT3B0aW9ucyE6IFRhYmxlV2lkZ2V0UHJvcHNbJ2RhdGFPcHRpb25zJ107XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBAc2lzZW5zZS9zZGstdWkhVGFibGVXaWRnZXRQcm9wcy5maWx0ZXJzfVxuICAgKlxuICAgKiBAY2F0ZWdvcnkgRGF0YVxuICAgKi9cbiAgQElucHV0KClcbiAgZmlsdGVyczogVGFibGVXaWRnZXRQcm9wc1snZmlsdGVycyddO1xuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgQHNpc2Vuc2Uvc2RrLXVpIVRhYmxlV2lkZ2V0UHJvcHMuc3R5bGVPcHRpb25zfVxuICAgKlxuICAgKiBAY2F0ZWdvcnkgUmVwcmVzZW50YXRpb25cbiAgICovXG4gIEBJbnB1dCgpXG4gIHN0eWxlT3B0aW9uczogVGFibGVXaWRnZXRQcm9wc1snc3R5bGVPcHRpb25zJ107XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBAc2lzZW5zZS9zZGstdWkhVGFibGVXaWRnZXRQcm9wcy50aXRsZX1cbiAgICpcbiAgICogQGNhdGVnb3J5IFdpZGdldFxuICAgKi9cbiAgQElucHV0KClcbiAgdGl0bGU6IFRhYmxlV2lkZ2V0UHJvcHNbJ3RpdGxlJ107XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBAc2lzZW5zZS9zZGstdWkhVGFibGVXaWRnZXRQcm9wcy5kZXNjcmlwdGlvbn1cbiAgICpcbiAgICogQGNhdGVnb3J5IFdpZGdldFxuICAgKi9cbiAgQElucHV0KClcbiAgZGVzY3JpcHRpb246IFRhYmxlV2lkZ2V0UHJvcHNbJ2Rlc2NyaXB0aW9uJ107XG5cbiAgcHJpdmF0ZSBjb21wb25lbnRBZGFwdGVyOiBDb21wb25lbnRBZGFwdGVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2lzZW5zZUNvbnRleHRTZXJ2aWNlOiBTaXNlbnNlQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IFRoZW1lU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5jb21wb25lbnRBZGFwdGVyID0gbmV3IENvbXBvbmVudEFkYXB0ZXIoXG4gICAgICAoKSA9PiB0aGlzLmNyZWF0ZVByZWFjdENvbXBvbmVudCgpLFxuICAgICAgW1xuICAgICAgICBjcmVhdGVTaXNlbnNlQ29udGV4dENvbm5lY3Rvcih0aGlzLnNpc2Vuc2VDb250ZXh0U2VydmljZSksXG4gICAgICAgIGNyZWF0ZVRoZW1lQ29udGV4dENvbm5lY3Rvcih0aGlzLnRoZW1lU2VydmljZSksXG4gICAgICBdLFxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5jb21wb25lbnRBZGFwdGVyLnJlbmRlcih0aGlzLnByZWFjdFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLnByZWFjdFJlZikge1xuICAgICAgdGhpcy5jb21wb25lbnRBZGFwdGVyLnJlbmRlcih0aGlzLnByZWFjdFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVByZWFjdENvbXBvbmVudCgpIHtcbiAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgIGRhdGFTb3VyY2U6IHRoaXMuZGF0YVNvdXJjZSxcbiAgICAgIGRhdGFPcHRpb25zOiB0aGlzLmRhdGFPcHRpb25zLFxuICAgICAgZmlsdGVyczogdGhpcy5maWx0ZXJzLFxuICAgICAgc3R5bGVPcHRpb25zOiB0aGlzLnN0eWxlT3B0aW9ucyxcbiAgICAgIHRpdGxlOiB0aGlzLnRpdGxlLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgfTtcblxuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KFRhYmxlV2lkZ2V0LCBwcm9wcyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNvbXBvbmVudEFkYXB0ZXIuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
|