@bizdoc/core 1.10.0-next.5 → 1.10.0-next.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/bizdoc-schema.json +6 -0
- package/esm2020/lib/browse/browse-items.component.mjs +3 -3
- package/esm2020/lib/core/controls/combination-picker-body.mjs +5 -2
- package/esm2020/lib/core/functions.mjs +4 -1
- package/esm2020/lib/core/mailbox.service.mjs +20 -23
- package/esm2020/lib/core/models.mjs +1 -1
- package/esm2020/lib/cube/cube-info.service.mjs +5 -5
- package/esm2020/lib/cube/grid/spreadsheet.component.mjs +1 -1
- package/esm2020/lib/cube/matrix/matrix.base.mjs +1 -1
- package/esm2020/lib/cube/matrix/matrix.component.mjs +8 -8
- package/esm2020/lib/cube/matrix/table.component.mjs +202 -136
- package/esm2020/lib/dashboard/cube/cube-analysis.base.mjs +1 -1
- package/esm2020/lib/dashboard/cube/cube-analysis.widget.mjs +3 -1
- package/esm2020/lib/dashboard/cube/documents.widget.mjs +1 -1
- package/esm2020/lib/dashboard/cube/filter/filter.component.mjs +10 -6
- package/esm2020/lib/modules/chart.module.mjs +4 -4
- package/esm2020/lib/shared.module.mjs +4 -4
- package/esm2020/lib/views/cube/matrix.component.mjs +1 -1
- package/esm2020/lib/views/cube/view.component.mjs +3 -3
- package/esm2020/public-api.mjs +1 -1
- package/fesm2015/bizdoc-core.mjs +249 -180
- package/fesm2015/bizdoc-core.mjs.map +1 -1
- package/fesm2020/bizdoc-core.mjs +256 -181
- package/fesm2020/bizdoc-core.mjs.map +1 -1
- package/lib/core/controls/combination-picker-body.d.ts +4 -6
- package/lib/core/functions.d.ts +1 -0
- package/lib/core/mailbox.service.d.ts +4 -8
- package/lib/core/models.d.ts +1 -1
- package/lib/cube/cube-info.service.d.ts +3 -6
- package/lib/cube/matrix/matrix.base.d.ts +2 -6
- package/lib/cube/matrix/matrix.component.d.ts +3 -3
- package/lib/cube/matrix/table.component.d.ts +18 -27
- package/lib/shared.module.d.ts +1 -1
- package/lib/views/cube/matrix.component.d.ts +3 -11
- package/package.json +14 -14
- package/public-api.d.ts +1 -1
package/fesm2020/bizdoc-core.mjs
CHANGED
@@ -116,7 +116,7 @@ import * as i24 from '@angular/flex-layout/extended';
|
|
116
116
|
import * as i4$1 from '@ctrl/ngx-emoji-mart';
|
117
117
|
import { PickerModule } from '@ctrl/ngx-emoji-mart';
|
118
118
|
import * as i8$2 from '@syncfusion/ej2-angular-charts';
|
119
|
-
import { AccumulationChart, FunnelSeries, AccumulationDataLabel, AccumulationTooltip, AccumulationLegend, Export, PieSeries, ChartModule, AccumulationChartAllModule, SparklineAllModule, LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService, SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService, StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService, BarSeriesService, StackingBarSeriesService, RangeColumnSeriesService, BubbleSeriesService, TooltipService, CrosshairService, CategoryService, DateTimeService, LogarithmicService, LegendService, ZoomService, DataLabelService, SelectionService, ChartAnnotationService, WaterfallSeriesService, RangeAreaSeriesService, PolarSeriesService, RadarSeriesService, DateTimeCategoryService, MultiLevelLabelService, ParetoSeriesService, TooltipRenderService, ExportService, AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService, AccumulationChartComponent, Chart as Chart$1, DateTime as DateTime$1, BarSeries as BarSeries$1, AreaSeries as AreaSeries$1, BubbleSeries as BubbleSeries$1, ColumnSeries as ColumnSeries$1, LineSeries as LineSeries$1, PolarSeries as PolarSeries$1, RadarSeries as RadarSeries$1, SplineSeries as SplineSeries$1, SplineAreaSeries as SplineAreaSeries$1, ScatterSeries as ScatterSeries$1, StackingLineSeries as StackingLineSeries$1, StackingAreaSeries as StackingAreaSeries$1, StackingColumnSeries as StackingColumnSeries$1, StackingBarSeries as StackingBarSeries$1, StepAreaSeries as StepAreaSeries$1, StepLineSeries as StepLineSeries$1, ChartComponent } from '@syncfusion/ej2-angular-charts';
|
119
|
+
import { AccumulationChart, FunnelSeries, AccumulationDataLabel, AccumulationTooltip, AccumulationLegend, Export, PieSeries, ChartModule, AccumulationChartAllModule, SparklineAllModule, AccumulationDistributionIndicatorService, FunnelSeriesService, StackingStepAreaSeriesService, PieSeriesService, PyramidSeriesService, LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService, SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService, StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService, BarSeriesService, StackingBarSeriesService, RangeColumnSeriesService, BubbleSeriesService, TooltipService, CrosshairService, CategoryService, DateTimeService, LogarithmicService, LegendService, ZoomService, DataLabelService, SelectionService, ChartAnnotationService, WaterfallSeriesService, RangeAreaSeriesService, PolarSeriesService, RadarSeriesService, DateTimeCategoryService, MultiLevelLabelService, ParetoSeriesService, TooltipRenderService, ExportService, AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService, AccumulationChartComponent, Chart as Chart$1, DateTime as DateTime$1, BarSeries as BarSeries$1, AreaSeries as AreaSeries$1, BubbleSeries as BubbleSeries$1, ColumnSeries as ColumnSeries$1, LineSeries as LineSeries$1, PolarSeries as PolarSeries$1, RadarSeries as RadarSeries$1, SplineSeries as SplineSeries$1, SplineAreaSeries as SplineAreaSeries$1, ScatterSeries as ScatterSeries$1, StackingLineSeries as StackingLineSeries$1, StackingAreaSeries as StackingAreaSeries$1, StackingColumnSeries as StackingColumnSeries$1, StackingBarSeries as StackingBarSeries$1, StepAreaSeries as StepAreaSeries$1, StepLineSeries as StepLineSeries$1, ChartComponent } from '@syncfusion/ej2-angular-charts';
|
120
120
|
import * as XLSX from 'xlsx';
|
121
121
|
import { Chart, Category, DateTime, Tooltip, Export as Export$1, BarSeries, AreaSeries, StackingStepAreaSeries, BubbleSeries, ColumnSeries, LineSeries, Legend, PolarSeries, RadarSeries, SplineSeries, SplineAreaSeries, ScatterSeries, StackingLineSeries, StackingAreaSeries, StackingColumnSeries, StackingBarSeries, StepAreaSeries, StepLineSeries } from '@syncfusion/ej2-charts';
|
122
122
|
import * as i6$5 from '@syncfusion/ej2-angular-grids';
|
@@ -636,6 +636,9 @@ const IS_MOBILE = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini
|
|
636
636
|
function isMobile() {
|
637
637
|
return IS_MOBILE /*|| document.cookie.indexOf('aria=1') > -1*/;
|
638
638
|
}
|
639
|
+
function isFunction(val) {
|
640
|
+
return typeof val === 'function';
|
641
|
+
}
|
639
642
|
function isBoolean(val) {
|
640
643
|
return typeof val === 'boolean';
|
641
644
|
}
|
@@ -2856,15 +2859,6 @@ class MailboxService {
|
|
2856
2859
|
// _session.profile.inbox.push(m.model);
|
2857
2860
|
});
|
2858
2861
|
}
|
2859
|
-
/**
|
2860
|
-
*
|
2861
|
-
* @param date
|
2862
|
-
*/
|
2863
|
-
_isAboveWatermark(date) {
|
2864
|
-
return !this._session.isImpersonating &&
|
2865
|
-
this._session.profile.options.inboxView &&
|
2866
|
-
this._session.profile.options.inboxView < date;
|
2867
|
-
}
|
2868
2862
|
download(documentId, fileId) {
|
2869
2863
|
return this._http.get(AttachmentInfo.formatUrl(documentId, fileId), {
|
2870
2864
|
responseType: 'arraybuffer'
|
@@ -2873,8 +2867,8 @@ class MailboxService {
|
|
2873
2867
|
removeattachment(id, fileId) {
|
2874
2868
|
return this._http.delete(`/api/mailbox/attachment/${id}`, { params: { fileId: fileId.toString() } });
|
2875
2869
|
}
|
2876
|
-
read(id, read) {
|
2877
|
-
return this._http.put(`/api/mailbox/read/${id}`, undefined, { params: { read } });
|
2870
|
+
read(id, read, folderId, received) {
|
2871
|
+
return this._http.put(`/api/mailbox/read/${id}`, undefined, { params: { read } }).pipe(tap(() => folderId && this._updateunreadcounter(received, folderId, read ? 1 : -1)));
|
2878
2872
|
}
|
2879
2873
|
comments(id, before) {
|
2880
2874
|
return this._http.get(`/api/comments/${id}`, { params: { before: new Date(before).toJSON() } });
|
@@ -3014,14 +3008,20 @@ class MailboxService {
|
|
3014
3008
|
})), this._notify());
|
3015
3009
|
}
|
3016
3010
|
get(id, read) {
|
3017
|
-
return this._http.get(`/api/mail/${id}`).pipe(tap(m =>
|
3018
|
-
|
3019
|
-
|
3020
|
-
|
3021
|
-
|
3022
|
-
|
3023
|
-
|
3024
|
-
|
3011
|
+
return this._http.get(`/api/mail/${id}`).pipe(tap(m => read === false && m.read === true &&
|
3012
|
+
this._updateunreadcounter(m.received, m.folderId, -1)));
|
3013
|
+
}
|
3014
|
+
_updateunreadcounter(date, folderId, val) {
|
3015
|
+
if (
|
3016
|
+
// date is above watermark
|
3017
|
+
!this._session.isImpersonating &&
|
3018
|
+
this._session.profile.options.inboxView &&
|
3019
|
+
this._session.profile.options.inboxView < date)
|
3020
|
+
this._session.profile.inboxCount -= val;
|
3021
|
+
// decrease
|
3022
|
+
const folder = this._session.profile.folders.
|
3023
|
+
find(f => f.name === folderId);
|
3024
|
+
folder.count -= val;
|
3025
3025
|
}
|
3026
3026
|
save(id, version, form, model) {
|
3027
3027
|
return this._withGeoLocation(form).pipe(switchMap(params => this._http.put(`/api/mail/${id}?version=${version}`, model, { params })), this._notify());
|
@@ -3032,11 +3032,11 @@ class MailboxService {
|
|
3032
3032
|
removecomment(id) {
|
3033
3033
|
return this._http.delete(`/api/comments/${id}`).pipe(tap(() => { }));
|
3034
3034
|
}
|
3035
|
-
submit(id, version, form, model) {
|
3035
|
+
submit(id, version, form, model, read, folderId, received) {
|
3036
3036
|
return this._withGeoLocation(form).pipe(switchMap(params => this._http.put(`/api/mail/${id}?version=${version}&go=true`, model, { params }))).pipe(this._notify());
|
3037
3037
|
}
|
3038
|
-
send(id, version, form, model, action, actionArgs) {
|
3039
|
-
return this._withGeoLocation(form).pipe(switchMap(params => this._http.put(`/api/mail/${id}?version=${version}&action=${action}`, model, { params: Object.assign(params, actionArgs) }))).pipe(this._notify());
|
3038
|
+
send(id, version, form, model, action, actionArgs, read, folderId, received) {
|
3039
|
+
return this._withGeoLocation(form).pipe(switchMap(params => this._http.put(`/api/mail/${id}?version=${version}&action=${action}`, model, { params: Object.assign(params, actionArgs) }))).pipe(tap(() => read === false && this._updateunreadcounter(received, folderId, -1)), this._notify());
|
3040
3040
|
}
|
3041
3041
|
events(starting, ending, contains) {
|
3042
3042
|
return this._http.get(`/api/events`, {
|
@@ -7025,7 +7025,7 @@ class BrowseItemsComponent {
|
|
7025
7025
|
dragStarted(event) {
|
7026
7026
|
}
|
7027
7027
|
toggleRead(item) {
|
7028
|
-
this._mailbox.read(item.id, !item.read).
|
7028
|
+
this._mailbox.read(item.id, !item.read, item.folderId, item.received).
|
7029
7029
|
subscribe(() => item.read = !item.read);
|
7030
7030
|
}
|
7031
7031
|
select(id) {
|
@@ -7270,7 +7270,7 @@ class BrowseItemsComponent {
|
|
7270
7270
|
}
|
7271
7271
|
sendAll(action, args) {
|
7272
7272
|
const params = queryParams(args);
|
7273
|
-
this._forEach(i => this._mailbox.send(i.id, i.version, i.formId, null, action, params).
|
7273
|
+
this._forEach(i => this._mailbox.send(i.id, i.version, i.formId, null, action, params, i.read, i.folderId, i.received).
|
7274
7274
|
pipe(tap(() => {
|
7275
7275
|
if (i.folderId !== this.folderId)
|
7276
7276
|
this.dataSource.data.remove(i);
|
@@ -14068,32 +14068,30 @@ class CubeMatrixComponent {
|
|
14068
14068
|
this.onExplore = new EventEmitter();
|
14069
14069
|
this.loadingChange = new EventEmitter();
|
14070
14070
|
}
|
14071
|
-
get indices() {
|
14072
|
-
return this._indices;
|
14073
|
-
}
|
14074
|
-
set indices(value) {
|
14075
|
-
if (value)
|
14076
|
-
this._indices = isArray(value) ? value : [value];
|
14077
|
-
}
|
14078
14071
|
set sum(val) {
|
14079
|
-
|
14080
|
-
|
14081
|
-
|
14082
|
-
|
14083
|
-
|
14084
|
-
|
14085
|
-
|
14086
|
-
|
14087
|
-
|
14088
|
-
|
14089
|
-
|
14090
|
-
|
14091
|
-
|
14092
|
-
|
14093
|
-
|
14094
|
-
|
14095
|
-
|
14096
|
-
|
14072
|
+
if (val)
|
14073
|
+
this._sum = (isArray(val) ? val : [val]).
|
14074
|
+
map(sum => {
|
14075
|
+
let value;
|
14076
|
+
if (sum.value)
|
14077
|
+
value = sum.value.toString();
|
14078
|
+
else if (sum.calculate)
|
14079
|
+
switch (sum.calculate) {
|
14080
|
+
case 'month':
|
14081
|
+
value = 'M' + ('0' + new Date().getMonth().toString()).slice(-2);
|
14082
|
+
break;
|
14083
|
+
case 'year':
|
14084
|
+
value = new Date().getFullYear().toString();
|
14085
|
+
break;
|
14086
|
+
case 'quarter':
|
14087
|
+
value = Math.ceil(new Date().getMonth() / 3).toString();
|
14088
|
+
break;
|
14089
|
+
}
|
14090
|
+
return {
|
14091
|
+
value,
|
14092
|
+
...sum
|
14093
|
+
};
|
14094
|
+
});
|
14097
14095
|
}
|
14098
14096
|
get interactive() {
|
14099
14097
|
return this._interactive;
|
@@ -14103,19 +14101,18 @@ class CubeMatrixComponent {
|
|
14103
14101
|
}
|
14104
14102
|
ngOnChanges(changes) {
|
14105
14103
|
if (changes['_cube']) {
|
14106
|
-
this.cube = this.
|
14107
|
-
this._session.profile.cubes[0];
|
14104
|
+
this.cube = this._session.profile.cubes.find(c => c.name === this._cube);
|
14108
14105
|
this.CURRENCY = this.cube.currencyCode /*|| this._service.currencyCode*/;
|
14109
14106
|
}
|
14110
|
-
if (this.
|
14111
|
-
this.
|
14112
|
-
|
14113
|
-
this.indexes = this.cube.indices;
|
14114
|
-
this._indices = this.indexes.map(i => i.name);
|
14107
|
+
if (!this.cube) {
|
14108
|
+
this.cube = this._session.profile.cubes[0];
|
14109
|
+
this.CURRENCY = this.cube.currencyCode /*|| this._service.currencyCode*/;
|
14115
14110
|
}
|
14111
|
+
if (changes['_indices'])
|
14112
|
+
this.indices = this.cube.indices.filter(i => isArray(this._indices) ? this._indices.indexOf(i.name) > -1 : this._indices === i.name);
|
14116
14113
|
if (changes['_xAxis'] || changes['_series']) {
|
14117
|
-
this.xAxis = this.cube.axes.find(a => a.name === this._xAxis)
|
14118
|
-
this.series = this.cube.axes.find(a => a.name === this._series)
|
14114
|
+
this.xAxis = this.cube.axes.find(a => a.name === this._xAxis);
|
14115
|
+
this.series = this.cube.axes.find(a => a.name === this._series);
|
14119
14116
|
this._prepare = forkJoin(this._ds.all(this.series.dataType).pipe(tap(r => this.rows = r)), this._ds.all(this.xAxis.dataType).pipe(tap(c => this.columns = c))).toPromise().then(() => this._sum &&
|
14120
14117
|
this._addsum());
|
14121
14118
|
}
|
@@ -14123,44 +14120,50 @@ class CubeMatrixComponent {
|
|
14123
14120
|
this.refresh();
|
14124
14121
|
}
|
14125
14122
|
_addsum() {
|
14126
|
-
|
14127
|
-
|
14128
|
-
const
|
14129
|
-
|
14130
|
-
|
14131
|
-
|
14132
|
-
|
14133
|
-
|
14134
|
-
|
14135
|
-
|
14136
|
-
|
14137
|
-
|
14138
|
-
|
14139
|
-
|
14140
|
-
|
14141
|
-
|
14142
|
-
|
14143
|
-
|
14144
|
-
|
14145
|
-
|
14146
|
-
|
14147
|
-
|
14148
|
-
|
14149
|
-
|
14150
|
-
|
14123
|
+
this._sum.forEach((s, i) => {
|
14124
|
+
let { value, axis } = s;
|
14125
|
+
const element = {
|
14126
|
+
key: '_sum_' + i,
|
14127
|
+
value: s.title
|
14128
|
+
};
|
14129
|
+
let j = 0;
|
14130
|
+
if (axis === 'xAxis') {
|
14131
|
+
while (j < this.columns.length) {
|
14132
|
+
if (this.columns[j].key === value) {
|
14133
|
+
this.columns.splice(j + 1, 0, element);
|
14134
|
+
break;
|
14135
|
+
}
|
14136
|
+
j++;
|
14137
|
+
}
|
14138
|
+
if (j === this.columns.length)
|
14139
|
+
this.columns.push(element);
|
14140
|
+
}
|
14141
|
+
else {
|
14142
|
+
while (j < this.rows.length) {
|
14143
|
+
if (this.rows[j].key === value) {
|
14144
|
+
this.rows.splice(j + 1, 0, element);
|
14145
|
+
break;
|
14146
|
+
}
|
14147
|
+
j++;
|
14148
|
+
}
|
14149
|
+
if (j === this.rows.length)
|
14150
|
+
this.rows.push(element);
|
14151
|
+
}
|
14152
|
+
});
|
14151
14153
|
}
|
14152
14154
|
refresh() {
|
14153
14155
|
const progressTask = setTimeout(() => this.loadingChange.next(this.loading = true), LOADING_DELAY);
|
14154
|
-
this._prepare.then(() => this._service.series(this.cube.name, this.
|
14155
|
-
series: this.
|
14156
|
+
this._prepare.then(() => this._service.series(this.cube.name, this._xAxis, {
|
14157
|
+
series: this._series,
|
14156
14158
|
indices: this._indices,
|
14157
14159
|
filters: this.filters,
|
14158
14160
|
scope: this.scope
|
14159
|
-
}).pipe(modelize(), first$1()
|
14161
|
+
}).pipe(modelize(), first$1()).subscribe(d => {
|
14160
14162
|
this._totals(d);
|
14161
|
-
this.
|
14163
|
+
this._sum &&
|
14162
14164
|
this._calculatesum(d);
|
14163
|
-
|
14165
|
+
this.data = d;
|
14166
|
+
}, (e) => {
|
14164
14167
|
this._sb.error(e.status === 401 ? 'Unauthorized' : null);
|
14165
14168
|
}, () => {
|
14166
14169
|
clearTimeout(progressTask);
|
@@ -14168,8 +14171,9 @@ class CubeMatrixComponent {
|
|
14168
14171
|
}));
|
14169
14172
|
}
|
14170
14173
|
_totals(data) {
|
14174
|
+
this.totals = {};
|
14171
14175
|
let grand = 0;
|
14172
|
-
this.
|
14176
|
+
this.indices && this.indices.forEach(i => {
|
14173
14177
|
const index = data[i.name];
|
14174
14178
|
if (!index)
|
14175
14179
|
data[i.name] = {};
|
@@ -14192,8 +14196,7 @@ class CubeMatrixComponent {
|
|
14192
14196
|
data[r.key]['_total'] = sum;
|
14193
14197
|
grand -= sum;
|
14194
14198
|
});
|
14195
|
-
this.
|
14196
|
-
this.columns.forEach(c => {
|
14199
|
+
this._indices && this.columns.forEach(c => {
|
14197
14200
|
let sum = 0, key;
|
14198
14201
|
for (key in data) {
|
14199
14202
|
const val = data[key][c.key];
|
@@ -14205,74 +14208,140 @@ class CubeMatrixComponent {
|
|
14205
14208
|
this.totals['_total'] = grand;
|
14206
14209
|
}
|
14207
14210
|
_calculatesum(data) {
|
14208
|
-
|
14209
|
-
|
14210
|
-
|
14211
|
-
|
14212
|
-
|
14213
|
-
|
14214
|
-
|
14215
|
-
|
14216
|
-
|
14217
|
-
|
14218
|
-
|
14219
|
-
|
14220
|
-
|
14221
|
-
|
14222
|
-
|
14223
|
-
|
14224
|
-
|
14225
|
-
|
14226
|
-
|
14227
|
-
|
14228
|
-
|
14229
|
-
|
14230
|
-
|
14231
|
-
|
14232
|
-
let sum = 0, i = 0;
|
14233
|
-
while (i < this.rows.length) {
|
14234
|
-
let key = this.rows[i].key, row = data[key];
|
14235
|
-
if (row) {
|
14236
|
-
let val = row[c.key];
|
14237
|
-
if (val !== undefined)
|
14238
|
-
sum += val;
|
14239
|
-
if (key === serie)
|
14240
|
-
break;
|
14211
|
+
this._sum.forEach((s, i) => {
|
14212
|
+
const { axis, value, calculate } = s, name = '_sum_' + i;
|
14213
|
+
if (axis === 'xAxis') {
|
14214
|
+
let total = 0;
|
14215
|
+
this.rows.forEach(r => {
|
14216
|
+
const row = data[r.key];
|
14217
|
+
if (!row)
|
14218
|
+
return;
|
14219
|
+
let sum = 0, j = 0;
|
14220
|
+
while (j < this.columns.length) {
|
14221
|
+
let key = this.columns[j].key;
|
14222
|
+
if (isFunction(calculate)) {
|
14223
|
+
let val = calculate(key, this.data);
|
14224
|
+
if (val !== undefined)
|
14225
|
+
sum += val;
|
14226
|
+
}
|
14227
|
+
else {
|
14228
|
+
let val = row[key];
|
14229
|
+
if (val !== undefined)
|
14230
|
+
sum += val;
|
14231
|
+
if (key === value)
|
14232
|
+
break;
|
14233
|
+
}
|
14234
|
+
j++;
|
14241
14235
|
}
|
14242
|
-
|
14243
|
-
|
14244
|
-
|
14245
|
-
|
14246
|
-
|
14247
|
-
|
14248
|
-
|
14236
|
+
row[name] = sum;
|
14237
|
+
total += sum;
|
14238
|
+
});
|
14239
|
+
this.indices && this.indices.forEach(i => {
|
14240
|
+
const row = data[i.name];
|
14241
|
+
if (!row)
|
14242
|
+
return;
|
14243
|
+
let sum = 0, j = 0;
|
14244
|
+
while (j < this.columns.length) {
|
14245
|
+
let key = this.columns[j].key;
|
14246
|
+
if (isFunction(calculate)) {
|
14247
|
+
let val = calculate(key, this.data);
|
14248
|
+
if (val !== undefined)
|
14249
|
+
sum += val;
|
14250
|
+
}
|
14251
|
+
else {
|
14252
|
+
let val = row[key];
|
14253
|
+
if (val !== undefined)
|
14254
|
+
sum += val;
|
14255
|
+
if (key === value)
|
14256
|
+
break;
|
14257
|
+
}
|
14258
|
+
j++;
|
14259
|
+
}
|
14260
|
+
row[name] = sum;
|
14261
|
+
});
|
14262
|
+
this.totals[name] = total;
|
14263
|
+
}
|
14264
|
+
else {
|
14265
|
+
let total = 0;
|
14266
|
+
this.columns.forEach(c => {
|
14267
|
+
let sum = 0, j = 0;
|
14268
|
+
while (j < this.rows.length) {
|
14269
|
+
let key = this.rows[j].key;
|
14270
|
+
if (!key.startsWith('_sum')) {
|
14271
|
+
if (isFunction(calculate)) {
|
14272
|
+
let val = calculate(key, this.data);
|
14273
|
+
if (val !== undefined)
|
14274
|
+
sum += val;
|
14275
|
+
}
|
14276
|
+
else {
|
14277
|
+
let row = data[key];
|
14278
|
+
if (row) {
|
14279
|
+
let val = row[c.key];
|
14280
|
+
if (val !== undefined)
|
14281
|
+
sum += val;
|
14282
|
+
if (key === value)
|
14283
|
+
break;
|
14284
|
+
}
|
14285
|
+
}
|
14286
|
+
}
|
14287
|
+
j++;
|
14288
|
+
}
|
14289
|
+
if (!data[name])
|
14290
|
+
data[name] = {};
|
14291
|
+
data[name][c.key] = sum;
|
14292
|
+
total += sum;
|
14293
|
+
});
|
14294
|
+
data[name]['_total'] = total;
|
14295
|
+
}
|
14296
|
+
});
|
14249
14297
|
}
|
14250
|
-
explore(x,
|
14298
|
+
explore(x, series) {
|
14251
14299
|
if (!this.interactive)
|
14252
14300
|
return;
|
14253
|
-
|
14254
|
-
|
14255
|
-
|
14256
|
-
|
14257
|
-
|
14258
|
-
|
14259
|
-
|
14260
|
-
|
14301
|
+
const axes = { ...this.filters };
|
14302
|
+
if (this._sum) {
|
14303
|
+
let i = 0;
|
14304
|
+
while (i < this._sum.length) {
|
14305
|
+
let { value, calculate } = this._sum[i], name = '_sum_' + i;
|
14306
|
+
if (x === name) {
|
14307
|
+
x = [];
|
14308
|
+
for (let i = 0; i < this.columns.length; i++) {
|
14309
|
+
let key = this.columns[i].key;
|
14310
|
+
if (isFunction(calculate)) {
|
14311
|
+
let val = calculate(key, this.data);
|
14312
|
+
if (val !== undefined)
|
14313
|
+
x.push(key);
|
14314
|
+
}
|
14315
|
+
else {
|
14316
|
+
x.push(key);
|
14317
|
+
if (key === value)
|
14318
|
+
break;
|
14319
|
+
}
|
14320
|
+
}
|
14321
|
+
break;
|
14261
14322
|
}
|
14262
|
-
|
14263
|
-
|
14264
|
-
|
14265
|
-
|
14266
|
-
|
14267
|
-
|
14268
|
-
|
14269
|
-
|
14323
|
+
else if (series === name) {
|
14324
|
+
series = [];
|
14325
|
+
for (let i = 0; i < this.rows.length; i++) {
|
14326
|
+
let key = this.rows[i].key;
|
14327
|
+
if (isFunction(calculate)) {
|
14328
|
+
let val = calculate(key, this.data);
|
14329
|
+
if (val !== undefined)
|
14330
|
+
series.push(key);
|
14331
|
+
}
|
14332
|
+
else {
|
14333
|
+
series.push(key);
|
14334
|
+
if (key === value)
|
14335
|
+
break;
|
14336
|
+
}
|
14337
|
+
}
|
14338
|
+
break;
|
14270
14339
|
}
|
14340
|
+
i++;
|
14271
14341
|
}
|
14272
14342
|
}
|
14273
|
-
const axes = { ...this.filters };
|
14274
14343
|
axes[this.xAxis.name] = x;
|
14275
|
-
axes[this.series.name] =
|
14344
|
+
axes[this.series.name] = series;
|
14276
14345
|
this.onExplore.emit(axes);
|
14277
14346
|
}
|
14278
14347
|
move(x, y) {
|
@@ -14306,10 +14375,10 @@ class CubeMatrixComponent {
|
|
14306
14375
|
}
|
14307
14376
|
}
|
14308
14377
|
CubeMatrixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeMatrixComponent, deps: [{ token: PromptService }, { token: CubeService }, { token: SessionService }, { token: DatasourceService }], target: i0.ɵɵFactoryTarget.Component });
|
14309
|
-
CubeMatrixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CubeMatrixComponent, selector: "bizdoc-cube-matrix", inputs: { _cube: ["cube", "_cube"], _xAxis: ["xAxis", "_xAxis"], _series: ["series", "_series"],
|
14378
|
+
CubeMatrixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CubeMatrixComponent, selector: "bizdoc-cube-matrix", inputs: { _cube: ["cube", "_cube"], _xAxis: ["xAxis", "_xAxis"], _series: ["series", "_series"], _indices: ["indices", "_indices"], scope: "scope", sum: "sum", filters: "filters", loading: "loading", interactive: "interactive" }, outputs: { onExplore: "explore", loadingChange: "loadingChange" }, viewQueries: [{ propertyName: "tableElement", first: true, predicate: ["table"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<table #table class=\"mat-table cube-table\" (mouseleave)=\"move(-1, -1)\" *ngIf=\"data\">\r\n <thead>\r\n <!-- headers -->\r\n <tr class=\"mat-row\">\r\n <th></th>\r\n <th *ngFor=\"let column of columns; let x = index\" (mouseenter)=\"move(x + 1, -2)\" class=\"mat-header-cell\">\r\n {{ column.value }}\r\n </th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- indices -->\r\n <tr class=\"mat-row cube-index\" *ngFor=\"let index of indices; let y = index\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"move(0, y)\">{{index.title}}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, y)\">\r\n <span *ngIf=\"data[index.name] && data[index.name][column.key]; else zero\">{{ data[index.name][column.key] | number : PRECISION }}</span>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(0, y)\" [ngSwitch]=\"!CURRENCY\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ data[index.name]['_total'] | number : PRECISION }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ data[index.name]['_total'] | currency : CURRENCY: 'symbol' : PRECISION }}\r\n </ng-container>\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tbody>\r\n <!-- rows -->\r\n <tr *ngFor=\"let row of rows; let y = index\" class=\"mat-row\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"move(-2, y + indices.length)\">{{ row.value }}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, y + indices.length)\">\r\n <ng-container *ngIf=\"data[row.key] && data[row.key][column.key] !== undefined; else zero\">\r\n <span [class.clickable]=\"interactive\" (click)=\"explore(column.key, row.key)\">\r\n {{data[row.key][column.key] | number : PRECISION }}\r\n </span>\r\n </ng-container>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(-1, y + indices.length)\" [ngSwitch]=\"!CURRENCY\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ data[row.key]['_total'] | number : PRECISION }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ data[row.key]['_total'] | currency : CURRENCY: 'symbol' : PRECISION }}\r\n </ng-container>\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tfoot>\r\n <!-- available -->\r\n <tr>\r\n <th></th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, -2)\"\r\n [class.negative-figure]=\"totals[column.key] < 0\">\r\n {{totals[column.key] | currency : CURRENCY: 'symbol' : PRECISION }}\r\n </td>\r\n <th class=\"mat-cell figure\">{{totals['_total'] | currency : CURRENCY: 'symbol' : PRECISION }}</th>\r\n </tr>\r\n </tfoot>\r\n</table>\r\n<ng-template #zero>\r\n 0\r\n</ng-template>\r\n", styles: [".clickable{cursor:pointer}.cube-table{width:100%;display:inline-table;border-collapse:collapse}.cube-table th{cursor:default}.cube-table th.figure{font-weight:500}.cube-table td{padding-right:4px}\n"], directives: [{ type: i10$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "number": i10$1.DecimalPipe, "currency": i10$1.CurrencyPipe }, animations: [matrixAnimation] });
|
14310
14379
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeMatrixComponent, decorators: [{
|
14311
14380
|
type: Component,
|
14312
|
-
args: [{ selector: 'bizdoc-cube-matrix', animations: [matrixAnimation], template: "<table #table class=\"mat-table cube-table\" (mouseleave)=\"move(-1, -1)\" *ngIf=\"data\">\r\n <thead>\r\n <!-- headers -->\r\n <tr class=\"mat-row\">\r\n <th></th>\r\n <th *ngFor=\"let column of columns; let x = index\" (mouseenter)=\"move(x + 1, -2)\" class=\"mat-header-cell\">\r\n {{ column.value }}\r\n </th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- indices -->\r\n <tr class=\"mat-row cube-index\" *ngFor=\"let index of
|
14381
|
+
args: [{ selector: 'bizdoc-cube-matrix', animations: [matrixAnimation], template: "<table #table class=\"mat-table cube-table\" (mouseleave)=\"move(-1, -1)\" *ngIf=\"data\">\r\n <thead>\r\n <!-- headers -->\r\n <tr class=\"mat-row\">\r\n <th></th>\r\n <th *ngFor=\"let column of columns; let x = index\" (mouseenter)=\"move(x + 1, -2)\" class=\"mat-header-cell\">\r\n {{ column.value }}\r\n </th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- indices -->\r\n <tr class=\"mat-row cube-index\" *ngFor=\"let index of indices; let y = index\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"move(0, y)\">{{index.title}}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, y)\">\r\n <span *ngIf=\"data[index.name] && data[index.name][column.key]; else zero\">{{ data[index.name][column.key] | number : PRECISION }}</span>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(0, y)\" [ngSwitch]=\"!CURRENCY\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ data[index.name]['_total'] | number : PRECISION }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ data[index.name]['_total'] | currency : CURRENCY: 'symbol' : PRECISION }}\r\n </ng-container>\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tbody>\r\n <!-- rows -->\r\n <tr *ngFor=\"let row of rows; let y = index\" class=\"mat-row\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"move(-2, y + indices.length)\">{{ row.value }}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, y + indices.length)\">\r\n <ng-container *ngIf=\"data[row.key] && data[row.key][column.key] !== undefined; else zero\">\r\n <span [class.clickable]=\"interactive\" (click)=\"explore(column.key, row.key)\">\r\n {{data[row.key][column.key] | number : PRECISION }}\r\n </span>\r\n </ng-container>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(-1, y + indices.length)\" [ngSwitch]=\"!CURRENCY\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ data[row.key]['_total'] | number : PRECISION }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ data[row.key]['_total'] | currency : CURRENCY: 'symbol' : PRECISION }}\r\n </ng-container>\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tfoot>\r\n <!-- available -->\r\n <tr>\r\n <th></th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, -2)\"\r\n [class.negative-figure]=\"totals[column.key] < 0\">\r\n {{totals[column.key] | currency : CURRENCY: 'symbol' : PRECISION }}\r\n </td>\r\n <th class=\"mat-cell figure\">{{totals['_total'] | currency : CURRENCY: 'symbol' : PRECISION }}</th>\r\n </tr>\r\n </tfoot>\r\n</table>\r\n<ng-template #zero>\r\n 0\r\n</ng-template>\r\n", styles: [".clickable{cursor:pointer}.cube-table{width:100%;display:inline-table;border-collapse:collapse}.cube-table th{cursor:default}.cube-table th.figure{font-weight:500}.cube-table td{padding-right:4px}\n"] }]
|
14313
14382
|
}], ctorParameters: function () { return [{ type: PromptService }, { type: CubeService }, { type: SessionService }, { type: DatasourceService }]; }, propDecorators: { tableElement: [{
|
14314
14383
|
type: ViewChild,
|
14315
14384
|
args: ['table']
|
@@ -14322,8 +14391,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
14322
14391
|
}], _series: [{
|
14323
14392
|
type: Input,
|
14324
14393
|
args: ['series']
|
14325
|
-
}],
|
14326
|
-
type: Input
|
14394
|
+
}], _indices: [{
|
14395
|
+
type: Input,
|
14396
|
+
args: ['indices']
|
14327
14397
|
}], scope: [{
|
14328
14398
|
type: Input
|
14329
14399
|
}], sum: [{
|
@@ -14339,11 +14409,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
14339
14409
|
args: ['explore']
|
14340
14410
|
}], loadingChange: [{
|
14341
14411
|
type: Output
|
14342
|
-
}] } });
|
14343
|
-
class CubeInfoCellArgs {
|
14344
|
-
get value() { return this._value; }
|
14345
|
-
get summary() { return this._summary; }
|
14346
|
-
}
|
14412
|
+
}] } });
|
14347
14413
|
|
14348
14414
|
class CubeMatrixBase {
|
14349
14415
|
constructor(_service, _ds, _session) {
|
@@ -19128,7 +19194,7 @@ class SyncfusionChartModule {
|
|
19128
19194
|
}
|
19129
19195
|
SyncfusionChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SyncfusionChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
19130
19196
|
SyncfusionChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SyncfusionChartModule, imports: [ChartModule, AccumulationChartAllModule, SparklineAllModule], exports: [ChartModule, AccumulationChartAllModule, SparklineAllModule] });
|
19131
|
-
SyncfusionChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SyncfusionChartModule, providers: [LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService,
|
19197
|
+
SyncfusionChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SyncfusionChartModule, providers: [AccumulationDistributionIndicatorService, FunnelSeriesService, StackingStepAreaSeriesService, PieSeriesService, PyramidSeriesService, LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService,
|
19132
19198
|
SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService,
|
19133
19199
|
StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService,
|
19134
19200
|
BarSeriesService, StackingBarSeriesService, RangeColumnSeriesService, BubbleSeriesService, TooltipService,
|
@@ -19143,7 +19209,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
19143
19209
|
args: [{
|
19144
19210
|
imports: [ChartModule, AccumulationChartAllModule, SparklineAllModule],
|
19145
19211
|
exports: [ChartModule, AccumulationChartAllModule, SparklineAllModule],
|
19146
|
-
providers: [LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService,
|
19212
|
+
providers: [AccumulationDistributionIndicatorService, FunnelSeriesService, StackingStepAreaSeriesService, PieSeriesService, PyramidSeriesService, LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService,
|
19147
19213
|
SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService,
|
19148
19214
|
StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService,
|
19149
19215
|
BarSeriesService, StackingBarSeriesService, RangeColumnSeriesService, BubbleSeriesService, TooltipService,
|
@@ -19560,7 +19626,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
19560
19626
|
}] } });
|
19561
19627
|
|
19562
19628
|
/** cube matrix component*/
|
19563
|
-
class
|
19629
|
+
class CubeMatrixPopupComponent extends CubeMatrixBase {
|
19564
19630
|
/** filters */
|
19565
19631
|
/** cube-info ctor */
|
19566
19632
|
constructor(_ref, data, service, ds, session, _sb) {
|
@@ -19570,9 +19636,9 @@ class CubeMatrixPageComponent extends CubeMatrixBase {
|
|
19570
19636
|
this.preloading = true;
|
19571
19637
|
if (!data.options)
|
19572
19638
|
throw 'no data options';
|
19573
|
-
const { axes: base, options: { indices, xAxis,
|
19639
|
+
const { axes: base, options: { indices, xAxis, series, filters, cube, sum } } = data;
|
19574
19640
|
this.cube = cube;
|
19575
|
-
this.series =
|
19641
|
+
this.series = series;
|
19576
19642
|
this.xAxis = xAxis;
|
19577
19643
|
this.sum = sum;
|
19578
19644
|
this.indices = indices;
|
@@ -19588,9 +19654,9 @@ class CubeMatrixPageComponent extends CubeMatrixBase {
|
|
19588
19654
|
});
|
19589
19655
|
}
|
19590
19656
|
}
|
19591
|
-
|
19592
|
-
|
19593
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type:
|
19657
|
+
CubeMatrixPopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeMatrixPopupComponent, deps: [{ token: PopupRef }, { token: POPUP_DATA }, { token: CubeService }, { token: DatasourceService }, { token: SessionService }, { token: PromptService }], target: i0.ɵɵFactoryTarget.Component });
|
19658
|
+
CubeMatrixPopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CubeMatrixPopupComponent, selector: "ng-component", viewQueries: [{ propertyName: "table", first: true, predicate: CubeMatrixComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div class=\"container\">\r\n <div class=\"row\" *ngIf=\"!preloading\">\r\n <span class=\"divider\"></span>\r\n <!-- title -->\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"patterns && patterns.length\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #options xPosition=\"before\">\r\n <!-- patterns -->\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"aggregate(p)\">{{p.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"reset()\" [disabled]=\"!pattern\" [bizdocTooltip]=\"'Clear' | translate\">\r\n <mat-icon>clear_all</mat-icon>\r\n </button>\r\n <!-- filters -->\r\n <ng-container *ngFor=\"let f of filters\">\r\n <button mat-button [matMenuTriggerFor]=\"fmenu\">{{values[f.name]| typeValue : f.dataType | async}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #fmenu xPosition=\"before\">\r\n <button mat-menu-item *ngFor=\"let kv of sources[f.name] | async\"\r\n (click)=\"filter(f.name, kv.key, kv.value)\">\r\n {{kv.value}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n </div>\r\n <bizdoc-cube-matrix [cube]=\"cube\" [xAxis]=\"xAxis\" [series]=\"series\" [indices]=\"indices\" [sum]=sum [interactive]=\"false\"\r\n [filters]=\"axes\" [(loading)]=\"loading\"></bizdoc-cube-matrix>\r\n</div>\r\n", styles: [".container{padding:8px}\n"], components: [{ type: i11$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: CubeMatrixComponent, selector: "bizdoc-cube-matrix", inputs: ["cube", "xAxis", "series", "indices", "scope", "sum", "filters", "loading", "interactive"], outputs: ["explore", "loadingChange"] }], directives: [{ type: i10$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }], pipes: { "translate": TranslatePipe, "async": i10$1.AsyncPipe, "typeValue": TypeValuePipe } });
|
19659
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeMatrixPopupComponent, decorators: [{
|
19594
19660
|
type: Component,
|
19595
19661
|
args: [{ template: "<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div class=\"container\">\r\n <div class=\"row\" *ngIf=\"!preloading\">\r\n <span class=\"divider\"></span>\r\n <!-- title -->\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"patterns && patterns.length\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #options xPosition=\"before\">\r\n <!-- patterns -->\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"aggregate(p)\">{{p.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"reset()\" [disabled]=\"!pattern\" [bizdocTooltip]=\"'Clear' | translate\">\r\n <mat-icon>clear_all</mat-icon>\r\n </button>\r\n <!-- filters -->\r\n <ng-container *ngFor=\"let f of filters\">\r\n <button mat-button [matMenuTriggerFor]=\"fmenu\">{{values[f.name]| typeValue : f.dataType | async}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #fmenu xPosition=\"before\">\r\n <button mat-menu-item *ngFor=\"let kv of sources[f.name] | async\"\r\n (click)=\"filter(f.name, kv.key, kv.value)\">\r\n {{kv.value}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n </div>\r\n <bizdoc-cube-matrix [cube]=\"cube\" [xAxis]=\"xAxis\" [series]=\"series\" [indices]=\"indices\" [sum]=sum [interactive]=\"false\"\r\n [filters]=\"axes\" [(loading)]=\"loading\"></bizdoc-cube-matrix>\r\n</div>\r\n", styles: [".container{padding:8px}\n"] }]
|
19596
19662
|
}], ctorParameters: function () { return [{ type: PopupRef, decorators: [{
|
@@ -19728,7 +19794,7 @@ class CubeInfo {
|
|
19728
19794
|
this._cf = _cf;
|
19729
19795
|
}
|
19730
19796
|
navigate(axes, options) {
|
19731
|
-
const { cube, view,
|
19797
|
+
const { cube, view, series, xAxis, filters, aggregate, indices, sum } = options || {};
|
19732
19798
|
const ccube = cube ? this._session.profile.cubes.find(c => c.name === cube) : this._session.profile.cubes[0];
|
19733
19799
|
if (isArray(axes))
|
19734
19800
|
axes = this._mapAxes(ccube, axes);
|
@@ -19737,7 +19803,7 @@ class CubeInfo {
|
|
19737
19803
|
queryParams: axes
|
19738
19804
|
});
|
19739
19805
|
else {
|
19740
|
-
this._router.navigate(['cube', ccube.name, 'i', xAxis,
|
19806
|
+
this._router.navigate(['cube', ccube.name, 'i', xAxis, series], {
|
19741
19807
|
queryParams: axes,
|
19742
19808
|
state: { indices, aggregate, filters, sum }
|
19743
19809
|
});
|
@@ -19763,7 +19829,7 @@ class CubeInfo {
|
|
19763
19829
|
else {
|
19764
19830
|
if (!options)
|
19765
19831
|
throw 'no options';
|
19766
|
-
this._open(
|
19832
|
+
this._open(CubeMatrixPopupComponent, element, {
|
19767
19833
|
axes,
|
19768
19834
|
options
|
19769
19835
|
});
|
@@ -20169,6 +20235,8 @@ let CubeAnalysisWidget = class CubeAnalysisWidget {
|
|
20169
20235
|
case 'Doughnut':
|
20170
20236
|
case 'HalfDoughnut':
|
20171
20237
|
case 'Pie':
|
20238
|
+
case 'Funnel':
|
20239
|
+
case 'Pyramid':
|
20172
20240
|
comp = CubeAccumAnalysisWidget;
|
20173
20241
|
break;
|
20174
20242
|
default:
|
@@ -20253,13 +20321,17 @@ let CubeWidgetFilterComponent = class CubeWidgetFilterComponent {
|
|
20253
20321
|
this._session = _session;
|
20254
20322
|
this._fb = _fb;
|
20255
20323
|
this.exclude = [];
|
20256
|
-
const { xAxis, exclude, cube: name } = this._widgetRef.options;
|
20324
|
+
const { xAxis, series, exclude, cube: name } = this._widgetRef.options;
|
20257
20325
|
this.cube = name;
|
20258
|
-
if (xAxis)
|
20259
|
-
|
20260
|
-
|
20326
|
+
if (isArray(xAxis))
|
20327
|
+
this.exclude = [...xAxis];
|
20328
|
+
else
|
20329
|
+
this.exclude.push(xAxis);
|
20330
|
+
if (series) {
|
20331
|
+
if (isArray(series))
|
20332
|
+
this.exclude = this.exclude.concat(series);
|
20261
20333
|
else
|
20262
|
-
this.exclude.push(
|
20334
|
+
this.exclude.push(series);
|
20263
20335
|
}
|
20264
20336
|
if (exclude) {
|
20265
20337
|
if (isArray(exclude))
|
@@ -22700,7 +22772,10 @@ class CombinationPickerBody {
|
|
22700
22772
|
...defaults
|
22701
22773
|
};
|
22702
22774
|
codes.slice(0, this._axes.length).forEach((a, i) => axes[this._axes[i].name] = a);
|
22703
|
-
this._accountInfo.popup(axes, evt.srcElement, {
|
22775
|
+
this._accountInfo.popup(axes, evt.srcElement, {
|
22776
|
+
...this._data.exploreSettings,
|
22777
|
+
cube: this._cube.name
|
22778
|
+
});
|
22704
22779
|
evt.cancelBubble = true;
|
22705
22780
|
evt.preventDefault();
|
22706
22781
|
evt.stopPropagation();
|
@@ -23833,7 +23908,7 @@ let CubeDocumentViewComponent = class CubeDocumentViewComponent extends CubeBase
|
|
23833
23908
|
}
|
23834
23909
|
};
|
23835
23910
|
CubeDocumentViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeDocumentViewComponent, deps: [{ token: SessionService }, { token: DocumentViewRef }, { token: CubeService }, { token: Popup }, { token: RouterImpl }, { token: GuideService }], target: i0.ɵɵFactoryTarget.Component });
|
23836
|
-
CubeDocumentViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CubeDocumentViewComponent, selector: "ng-component", host: { classAttribute: "view" }, viewQueries: [{ propertyName: "viewPane", first: true, predicate: CubeViewComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"hasdata; else none\">\r\n <div class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"view.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <ng-container *ngIf=\"alternate\">\r\n <button mat-button [matMenuTriggerFor]=\"cmenu\">{{cube.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #cmenu>\r\n <button mat-menu-item *ngFor=\"let a of alternate\"\r\n (click)=\"switchTo(a)\">\r\n {{a.title}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"pmenu\" [bizdocTooltip]=\"'Patterns' | translate\" [disabled]=\"!patterns?.length\" data-help=\"pattern\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #pmenu>\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"patternChange(p)\">\r\n {{p.title}}\r\n </button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filterToggle($event)\" [bizdocTooltip]=\"'Filter' | translate\" [disabled]=\"!anyAxes\" data-help=\"filter\"><mat-icon>filter_list</mat-icon></button>\r\n </div>\r\n <div class=\"loading-view\" *ngIf=\"loading\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n <bizdoc-cube-view [
|
23911
|
+
CubeDocumentViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CubeDocumentViewComponent, selector: "ng-component", host: { classAttribute: "view" }, viewQueries: [{ propertyName: "viewPane", first: true, predicate: CubeViewComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"hasdata; else none\">\r\n <div class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"view.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <ng-container *ngIf=\"alternate\">\r\n <button mat-button [matMenuTriggerFor]=\"cmenu\">{{cube.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #cmenu>\r\n <button mat-menu-item *ngFor=\"let a of alternate\"\r\n (click)=\"switchTo(a)\">\r\n {{a.title}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"pmenu\" [bizdocTooltip]=\"'Patterns' | translate\" [disabled]=\"!patterns?.length\" data-help=\"pattern\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #pmenu>\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"patternChange(p)\">\r\n {{p.title}}\r\n </button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filterToggle($event)\" [bizdocTooltip]=\"'Filter' | translate\" [disabled]=\"!anyAxes\" data-help=\"filter\"><mat-icon>filter_list</mat-icon></button>\r\n </div>\r\n <div class=\"loading-view\" *ngIf=\"loading\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n <bizdoc-cube-view [filters]=\"axes\" #vp\r\n (explore)=\"explore($event)\"\r\n [cube]=\"cube\"\r\n [view]=\"view\"\r\n (loading)=\"loading = $event\"></bizdoc-cube-view>\r\n</ng-container>\r\n<ng-template #none>\r\n <bizdoc-none icon=\"equalizer\" subtitle=\"NothingHere\"></bizdoc-none>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;height:100%;min-height:220px}:host ::ng-deep .cube-view{flex:1 auto}\n"], components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i10.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: CubeViewComponent, selector: "bizdoc-cube-view", inputs: ["filters", "cube", "view", "loading"], outputs: ["explore", "loadingChange"] }, { type: NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }], directives: [{ type: i10$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i8$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": TranslatePipe } });
|
23837
23912
|
CubeDocumentViewComponent = __decorate([
|
23838
23913
|
BizDoc({
|
23839
23914
|
selector: 'bizdoc-cube-view'
|
@@ -23841,7 +23916,7 @@ CubeDocumentViewComponent = __decorate([
|
|
23841
23916
|
], CubeDocumentViewComponent);
|
23842
23917
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeDocumentViewComponent, decorators: [{
|
23843
23918
|
type: Component,
|
23844
|
-
args: [{ host: { class: 'view' }, template: "<ng-container *ngIf=\"hasdata; else none\">\r\n <div class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"view.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <ng-container *ngIf=\"alternate\">\r\n <button mat-button [matMenuTriggerFor]=\"cmenu\">{{cube.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #cmenu>\r\n <button mat-menu-item *ngFor=\"let a of alternate\"\r\n (click)=\"switchTo(a)\">\r\n {{a.title}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"pmenu\" [bizdocTooltip]=\"'Patterns' | translate\" [disabled]=\"!patterns?.length\" data-help=\"pattern\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #pmenu>\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"patternChange(p)\">\r\n {{p.title}}\r\n </button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filterToggle($event)\" [bizdocTooltip]=\"'Filter' | translate\" [disabled]=\"!anyAxes\" data-help=\"filter\"><mat-icon>filter_list</mat-icon></button>\r\n </div>\r\n <div class=\"loading-view\" *ngIf=\"loading\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n <bizdoc-cube-view [
|
23919
|
+
args: [{ host: { class: 'view' }, template: "<ng-container *ngIf=\"hasdata; else none\">\r\n <div class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"view.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <ng-container *ngIf=\"alternate\">\r\n <button mat-button [matMenuTriggerFor]=\"cmenu\">{{cube.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #cmenu>\r\n <button mat-menu-item *ngFor=\"let a of alternate\"\r\n (click)=\"switchTo(a)\">\r\n {{a.title}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"pmenu\" [bizdocTooltip]=\"'Patterns' | translate\" [disabled]=\"!patterns?.length\" data-help=\"pattern\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #pmenu>\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"patternChange(p)\">\r\n {{p.title}}\r\n </button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filterToggle($event)\" [bizdocTooltip]=\"'Filter' | translate\" [disabled]=\"!anyAxes\" data-help=\"filter\"><mat-icon>filter_list</mat-icon></button>\r\n </div>\r\n <div class=\"loading-view\" *ngIf=\"loading\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n <bizdoc-cube-view [filters]=\"axes\" #vp\r\n (explore)=\"explore($event)\"\r\n [cube]=\"cube\"\r\n [view]=\"view\"\r\n (loading)=\"loading = $event\"></bizdoc-cube-view>\r\n</ng-container>\r\n<ng-template #none>\r\n <bizdoc-none icon=\"equalizer\" subtitle=\"NothingHere\"></bizdoc-none>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;height:100%;min-height:220px}:host ::ng-deep .cube-view{flex:1 auto}\n"] }]
|
23845
23920
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: DocumentViewRef }, { type: CubeService }, { type: Popup }, { type: RouterImpl }, { type: GuideService }]; }, propDecorators: { viewPane: [{
|
23846
23921
|
type: ViewChild,
|
23847
23922
|
args: [CubeViewComponent]
|
@@ -25093,7 +25168,7 @@ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
|
|
25093
25168
|
DashboardComponent, WidgetItemComponent, CubeWidgetFilterComponent, CubeAccumAnalysisWidget, CubeAnalysisWidget, CubeChartAnalysisWidget, ActionsWidget, RecentsWidget,
|
25094
25169
|
AskDialog, AboutDialog, ActionDialog,
|
25095
25170
|
ImpersonateDialog,
|
25096
|
-
ConversationComponent,
|
25171
|
+
ConversationComponent, CubeMatrixPopupComponent,
|
25097
25172
|
VersionCompareComponent, ExploreDocumentComponent, TasksComponent,
|
25098
25173
|
PendingResultsWidget, CompareDepartmentsWidget, CubeDocumentsComponent, CubeDocumentsWidget,
|
25099
25174
|
PersonalScoreWidget, PersonalActivityWidget, PeersPerformanceWidget, UsagePivotComponent, UsageChartComponent, UsageReportArgs,
|
@@ -25230,7 +25305,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
25230
25305
|
DashboardComponent, WidgetItemComponent, CubeWidgetFilterComponent, CubeAccumAnalysisWidget, CubeAnalysisWidget, CubeChartAnalysisWidget, ActionsWidget, RecentsWidget,
|
25231
25306
|
AskDialog, AboutDialog, ActionDialog,
|
25232
25307
|
ImpersonateDialog,
|
25233
|
-
ConversationComponent,
|
25308
|
+
ConversationComponent, CubeMatrixPopupComponent,
|
25234
25309
|
VersionCompareComponent, ExploreDocumentComponent, TasksComponent,
|
25235
25310
|
PendingResultsWidget, CompareDepartmentsWidget, CubeDocumentsComponent, CubeDocumentsWidget,
|
25236
25311
|
PersonalScoreWidget, PersonalActivityWidget, PeersPerformanceWidget, UsagePivotComponent, UsageChartComponent, UsageReportArgs,
|