@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/fesm2015/bizdoc-core.mjs
CHANGED
@@ -117,7 +117,7 @@ import * as i24 from '@angular/flex-layout/extended';
|
|
117
117
|
import * as i4$1 from '@ctrl/ngx-emoji-mart';
|
118
118
|
import { PickerModule } from '@ctrl/ngx-emoji-mart';
|
119
119
|
import * as i8$2 from '@syncfusion/ej2-angular-charts';
|
120
|
-
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';
|
120
|
+
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';
|
121
121
|
import * as XLSX from 'xlsx';
|
122
122
|
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';
|
123
123
|
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
|
}
|
@@ -2870,15 +2873,6 @@ class MailboxService {
|
|
2870
2873
|
// _session.profile.inbox.push(m.model);
|
2871
2874
|
});
|
2872
2875
|
}
|
2873
|
-
/**
|
2874
|
-
*
|
2875
|
-
* @param date
|
2876
|
-
*/
|
2877
|
-
_isAboveWatermark(date) {
|
2878
|
-
return !this._session.isImpersonating &&
|
2879
|
-
this._session.profile.options.inboxView &&
|
2880
|
-
this._session.profile.options.inboxView < date;
|
2881
|
-
}
|
2882
2876
|
download(documentId, fileId) {
|
2883
2877
|
return this._http.get(AttachmentInfo.formatUrl(documentId, fileId), {
|
2884
2878
|
responseType: 'arraybuffer'
|
@@ -2887,8 +2881,8 @@ class MailboxService {
|
|
2887
2881
|
removeattachment(id, fileId) {
|
2888
2882
|
return this._http.delete(`/api/mailbox/attachment/${id}`, { params: { fileId: fileId.toString() } });
|
2889
2883
|
}
|
2890
|
-
read(id, read) {
|
2891
|
-
return this._http.put(`/api/mailbox/read/${id}`, undefined, { params: { read } });
|
2884
|
+
read(id, read, folderId, received) {
|
2885
|
+
return this._http.put(`/api/mailbox/read/${id}`, undefined, { params: { read } }).pipe(tap(() => folderId && this._updateunreadcounter(received, folderId, read ? 1 : -1)));
|
2892
2886
|
}
|
2893
2887
|
comments(id, before) {
|
2894
2888
|
return this._http.get(`/api/comments/${id}`, { params: { before: new Date(before).toJSON() } });
|
@@ -3025,14 +3019,20 @@ class MailboxService {
|
|
3025
3019
|
})), this._notify());
|
3026
3020
|
}
|
3027
3021
|
get(id, read) {
|
3028
|
-
return this._http.get(`/api/mail/${id}`).pipe(tap(m =>
|
3029
|
-
|
3030
|
-
|
3031
|
-
|
3032
|
-
|
3033
|
-
|
3034
|
-
|
3035
|
-
|
3022
|
+
return this._http.get(`/api/mail/${id}`).pipe(tap(m => read === false && m.read === true &&
|
3023
|
+
this._updateunreadcounter(m.received, m.folderId, -1)));
|
3024
|
+
}
|
3025
|
+
_updateunreadcounter(date, folderId, val) {
|
3026
|
+
if (
|
3027
|
+
// date is above watermark
|
3028
|
+
!this._session.isImpersonating &&
|
3029
|
+
this._session.profile.options.inboxView &&
|
3030
|
+
this._session.profile.options.inboxView < date)
|
3031
|
+
this._session.profile.inboxCount -= val;
|
3032
|
+
// decrease
|
3033
|
+
const folder = this._session.profile.folders.
|
3034
|
+
find(f => f.name === folderId);
|
3035
|
+
folder.count -= val;
|
3036
3036
|
}
|
3037
3037
|
save(id, version, form, model) {
|
3038
3038
|
return this._withGeoLocation(form).pipe(switchMap(params => this._http.put(`/api/mail/${id}?version=${version}`, model, { params })), this._notify());
|
@@ -3043,11 +3043,11 @@ class MailboxService {
|
|
3043
3043
|
removecomment(id) {
|
3044
3044
|
return this._http.delete(`/api/comments/${id}`).pipe(tap(() => { }));
|
3045
3045
|
}
|
3046
|
-
submit(id, version, form, model) {
|
3046
|
+
submit(id, version, form, model, read, folderId, received) {
|
3047
3047
|
return this._withGeoLocation(form).pipe(switchMap(params => this._http.put(`/api/mail/${id}?version=${version}&go=true`, model, { params }))).pipe(this._notify());
|
3048
3048
|
}
|
3049
|
-
send(id, version, form, model, action, actionArgs) {
|
3050
|
-
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());
|
3049
|
+
send(id, version, form, model, action, actionArgs, read, folderId, received) {
|
3050
|
+
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());
|
3051
3051
|
}
|
3052
3052
|
events(starting, ending, contains) {
|
3053
3053
|
return this._http.get(`/api/events`, {
|
@@ -7060,7 +7060,7 @@ class BrowseItemsComponent {
|
|
7060
7060
|
dragStarted(event) {
|
7061
7061
|
}
|
7062
7062
|
toggleRead(item) {
|
7063
|
-
this._mailbox.read(item.id, !item.read).
|
7063
|
+
this._mailbox.read(item.id, !item.read, item.folderId, item.received).
|
7064
7064
|
subscribe(() => item.read = !item.read);
|
7065
7065
|
}
|
7066
7066
|
select(id) {
|
@@ -7305,7 +7305,7 @@ class BrowseItemsComponent {
|
|
7305
7305
|
}
|
7306
7306
|
sendAll(action, args) {
|
7307
7307
|
const params = queryParams(args);
|
7308
|
-
this._forEach(i => this._mailbox.send(i.id, i.version, i.formId, null, action, params).
|
7308
|
+
this._forEach(i => this._mailbox.send(i.id, i.version, i.formId, null, action, params, i.read, i.folderId, i.received).
|
7309
7309
|
pipe(tap(() => {
|
7310
7310
|
if (i.folderId !== this.folderId)
|
7311
7311
|
this.dataSource.data.remove(i);
|
@@ -14127,32 +14127,27 @@ class CubeMatrixComponent {
|
|
14127
14127
|
this.onExplore = new EventEmitter();
|
14128
14128
|
this.loadingChange = new EventEmitter();
|
14129
14129
|
}
|
14130
|
-
get indices() {
|
14131
|
-
return this._indices;
|
14132
|
-
}
|
14133
|
-
set indices(value) {
|
14134
|
-
if (value)
|
14135
|
-
this._indices = isArray(value) ? value : [value];
|
14136
|
-
}
|
14137
14130
|
set sum(val) {
|
14138
|
-
|
14139
|
-
|
14140
|
-
|
14141
|
-
|
14142
|
-
|
14143
|
-
|
14144
|
-
|
14145
|
-
|
14146
|
-
|
14147
|
-
|
14148
|
-
|
14149
|
-
|
14150
|
-
|
14151
|
-
|
14152
|
-
|
14153
|
-
|
14154
|
-
|
14155
|
-
|
14131
|
+
if (val)
|
14132
|
+
this._sum = (isArray(val) ? val : [val]).
|
14133
|
+
map(sum => {
|
14134
|
+
let value;
|
14135
|
+
if (sum.value)
|
14136
|
+
value = sum.value.toString();
|
14137
|
+
else if (sum.calculate)
|
14138
|
+
switch (sum.calculate) {
|
14139
|
+
case 'month':
|
14140
|
+
value = 'M' + ('0' + new Date().getMonth().toString()).slice(-2);
|
14141
|
+
break;
|
14142
|
+
case 'year':
|
14143
|
+
value = new Date().getFullYear().toString();
|
14144
|
+
break;
|
14145
|
+
case 'quarter':
|
14146
|
+
value = Math.ceil(new Date().getMonth() / 3).toString();
|
14147
|
+
break;
|
14148
|
+
}
|
14149
|
+
return Object.assign({ value }, sum);
|
14150
|
+
});
|
14156
14151
|
}
|
14157
14152
|
get interactive() {
|
14158
14153
|
return this._interactive;
|
@@ -14162,19 +14157,18 @@ class CubeMatrixComponent {
|
|
14162
14157
|
}
|
14163
14158
|
ngOnChanges(changes) {
|
14164
14159
|
if (changes['_cube']) {
|
14165
|
-
this.cube = this.
|
14166
|
-
this._session.profile.cubes[0];
|
14160
|
+
this.cube = this._session.profile.cubes.find(c => c.name === this._cube);
|
14167
14161
|
this.CURRENCY = this.cube.currencyCode /*|| this._service.currencyCode*/;
|
14168
14162
|
}
|
14169
|
-
if (this.
|
14170
|
-
this.
|
14171
|
-
|
14172
|
-
this.indexes = this.cube.indices;
|
14173
|
-
this._indices = this.indexes.map(i => i.name);
|
14163
|
+
if (!this.cube) {
|
14164
|
+
this.cube = this._session.profile.cubes[0];
|
14165
|
+
this.CURRENCY = this.cube.currencyCode /*|| this._service.currencyCode*/;
|
14174
14166
|
}
|
14167
|
+
if (changes['_indices'])
|
14168
|
+
this.indices = this.cube.indices.filter(i => isArray(this._indices) ? this._indices.indexOf(i.name) > -1 : this._indices === i.name);
|
14175
14169
|
if (changes['_xAxis'] || changes['_series']) {
|
14176
|
-
this.xAxis = this.cube.axes.find(a => a.name === this._xAxis)
|
14177
|
-
this.series = this.cube.axes.find(a => a.name === this._series)
|
14170
|
+
this.xAxis = this.cube.axes.find(a => a.name === this._xAxis);
|
14171
|
+
this.series = this.cube.axes.find(a => a.name === this._series);
|
14178
14172
|
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 &&
|
14179
14173
|
this._addsum());
|
14180
14174
|
}
|
@@ -14182,44 +14176,50 @@ class CubeMatrixComponent {
|
|
14182
14176
|
this.refresh();
|
14183
14177
|
}
|
14184
14178
|
_addsum() {
|
14185
|
-
|
14186
|
-
|
14187
|
-
const
|
14188
|
-
|
14189
|
-
|
14190
|
-
|
14191
|
-
|
14192
|
-
|
14193
|
-
|
14194
|
-
|
14195
|
-
|
14196
|
-
|
14197
|
-
|
14198
|
-
|
14199
|
-
|
14200
|
-
|
14201
|
-
|
14202
|
-
|
14203
|
-
|
14204
|
-
|
14205
|
-
|
14206
|
-
|
14207
|
-
|
14208
|
-
|
14209
|
-
|
14179
|
+
this._sum.forEach((s, i) => {
|
14180
|
+
let { value, axis } = s;
|
14181
|
+
const element = {
|
14182
|
+
key: '_sum_' + i,
|
14183
|
+
value: s.title
|
14184
|
+
};
|
14185
|
+
let j = 0;
|
14186
|
+
if (axis === 'xAxis') {
|
14187
|
+
while (j < this.columns.length) {
|
14188
|
+
if (this.columns[j].key === value) {
|
14189
|
+
this.columns.splice(j + 1, 0, element);
|
14190
|
+
break;
|
14191
|
+
}
|
14192
|
+
j++;
|
14193
|
+
}
|
14194
|
+
if (j === this.columns.length)
|
14195
|
+
this.columns.push(element);
|
14196
|
+
}
|
14197
|
+
else {
|
14198
|
+
while (j < this.rows.length) {
|
14199
|
+
if (this.rows[j].key === value) {
|
14200
|
+
this.rows.splice(j + 1, 0, element);
|
14201
|
+
break;
|
14202
|
+
}
|
14203
|
+
j++;
|
14204
|
+
}
|
14205
|
+
if (j === this.rows.length)
|
14206
|
+
this.rows.push(element);
|
14207
|
+
}
|
14208
|
+
});
|
14210
14209
|
}
|
14211
14210
|
refresh() {
|
14212
14211
|
const progressTask = setTimeout(() => this.loadingChange.next(this.loading = true), LOADING_DELAY);
|
14213
|
-
this._prepare.then(() => this._service.series(this.cube.name, this.
|
14214
|
-
series: this.
|
14212
|
+
this._prepare.then(() => this._service.series(this.cube.name, this._xAxis, {
|
14213
|
+
series: this._series,
|
14215
14214
|
indices: this._indices,
|
14216
14215
|
filters: this.filters,
|
14217
14216
|
scope: this.scope
|
14218
|
-
}).pipe(modelize(), first$1()
|
14217
|
+
}).pipe(modelize(), first$1()).subscribe(d => {
|
14219
14218
|
this._totals(d);
|
14220
|
-
this.
|
14219
|
+
this._sum &&
|
14221
14220
|
this._calculatesum(d);
|
14222
|
-
|
14221
|
+
this.data = d;
|
14222
|
+
}, (e) => {
|
14223
14223
|
this._sb.error(e.status === 401 ? 'Unauthorized' : null);
|
14224
14224
|
}, () => {
|
14225
14225
|
clearTimeout(progressTask);
|
@@ -14227,8 +14227,9 @@ class CubeMatrixComponent {
|
|
14227
14227
|
}));
|
14228
14228
|
}
|
14229
14229
|
_totals(data) {
|
14230
|
+
this.totals = {};
|
14230
14231
|
let grand = 0;
|
14231
|
-
this.
|
14232
|
+
this.indices && this.indices.forEach(i => {
|
14232
14233
|
const index = data[i.name];
|
14233
14234
|
if (!index)
|
14234
14235
|
data[i.name] = {};
|
@@ -14251,8 +14252,7 @@ class CubeMatrixComponent {
|
|
14251
14252
|
data[r.key]['_total'] = sum;
|
14252
14253
|
grand -= sum;
|
14253
14254
|
});
|
14254
|
-
this.
|
14255
|
-
this.columns.forEach(c => {
|
14255
|
+
this._indices && this.columns.forEach(c => {
|
14256
14256
|
let sum = 0, key;
|
14257
14257
|
for (key in data) {
|
14258
14258
|
const val = data[key][c.key];
|
@@ -14264,74 +14264,140 @@ class CubeMatrixComponent {
|
|
14264
14264
|
this.totals['_total'] = grand;
|
14265
14265
|
}
|
14266
14266
|
_calculatesum(data) {
|
14267
|
-
|
14268
|
-
|
14269
|
-
|
14270
|
-
|
14271
|
-
|
14272
|
-
|
14273
|
-
|
14274
|
-
|
14275
|
-
|
14276
|
-
|
14277
|
-
|
14278
|
-
|
14279
|
-
|
14280
|
-
|
14281
|
-
|
14282
|
-
|
14283
|
-
|
14284
|
-
|
14285
|
-
|
14286
|
-
|
14287
|
-
|
14288
|
-
|
14289
|
-
|
14290
|
-
|
14291
|
-
let sum = 0, i = 0;
|
14292
|
-
while (i < this.rows.length) {
|
14293
|
-
let key = this.rows[i].key, row = data[key];
|
14294
|
-
if (row) {
|
14295
|
-
let val = row[c.key];
|
14296
|
-
if (val !== undefined)
|
14297
|
-
sum += val;
|
14298
|
-
if (key === serie)
|
14299
|
-
break;
|
14267
|
+
this._sum.forEach((s, i) => {
|
14268
|
+
const { axis, value, calculate } = s, name = '_sum_' + i;
|
14269
|
+
if (axis === 'xAxis') {
|
14270
|
+
let total = 0;
|
14271
|
+
this.rows.forEach(r => {
|
14272
|
+
const row = data[r.key];
|
14273
|
+
if (!row)
|
14274
|
+
return;
|
14275
|
+
let sum = 0, j = 0;
|
14276
|
+
while (j < this.columns.length) {
|
14277
|
+
let key = this.columns[j].key;
|
14278
|
+
if (isFunction(calculate)) {
|
14279
|
+
let val = calculate(key, this.data);
|
14280
|
+
if (val !== undefined)
|
14281
|
+
sum += val;
|
14282
|
+
}
|
14283
|
+
else {
|
14284
|
+
let val = row[key];
|
14285
|
+
if (val !== undefined)
|
14286
|
+
sum += val;
|
14287
|
+
if (key === value)
|
14288
|
+
break;
|
14289
|
+
}
|
14290
|
+
j++;
|
14300
14291
|
}
|
14301
|
-
|
14302
|
-
|
14303
|
-
|
14304
|
-
|
14305
|
-
|
14306
|
-
|
14307
|
-
|
14292
|
+
row[name] = sum;
|
14293
|
+
total += sum;
|
14294
|
+
});
|
14295
|
+
this.indices && this.indices.forEach(i => {
|
14296
|
+
const row = data[i.name];
|
14297
|
+
if (!row)
|
14298
|
+
return;
|
14299
|
+
let sum = 0, j = 0;
|
14300
|
+
while (j < this.columns.length) {
|
14301
|
+
let key = this.columns[j].key;
|
14302
|
+
if (isFunction(calculate)) {
|
14303
|
+
let val = calculate(key, this.data);
|
14304
|
+
if (val !== undefined)
|
14305
|
+
sum += val;
|
14306
|
+
}
|
14307
|
+
else {
|
14308
|
+
let val = row[key];
|
14309
|
+
if (val !== undefined)
|
14310
|
+
sum += val;
|
14311
|
+
if (key === value)
|
14312
|
+
break;
|
14313
|
+
}
|
14314
|
+
j++;
|
14315
|
+
}
|
14316
|
+
row[name] = sum;
|
14317
|
+
});
|
14318
|
+
this.totals[name] = total;
|
14319
|
+
}
|
14320
|
+
else {
|
14321
|
+
let total = 0;
|
14322
|
+
this.columns.forEach(c => {
|
14323
|
+
let sum = 0, j = 0;
|
14324
|
+
while (j < this.rows.length) {
|
14325
|
+
let key = this.rows[j].key;
|
14326
|
+
if (!key.startsWith('_sum')) {
|
14327
|
+
if (isFunction(calculate)) {
|
14328
|
+
let val = calculate(key, this.data);
|
14329
|
+
if (val !== undefined)
|
14330
|
+
sum += val;
|
14331
|
+
}
|
14332
|
+
else {
|
14333
|
+
let row = data[key];
|
14334
|
+
if (row) {
|
14335
|
+
let val = row[c.key];
|
14336
|
+
if (val !== undefined)
|
14337
|
+
sum += val;
|
14338
|
+
if (key === value)
|
14339
|
+
break;
|
14340
|
+
}
|
14341
|
+
}
|
14342
|
+
}
|
14343
|
+
j++;
|
14344
|
+
}
|
14345
|
+
if (!data[name])
|
14346
|
+
data[name] = {};
|
14347
|
+
data[name][c.key] = sum;
|
14348
|
+
total += sum;
|
14349
|
+
});
|
14350
|
+
data[name]['_total'] = total;
|
14351
|
+
}
|
14352
|
+
});
|
14308
14353
|
}
|
14309
|
-
explore(x,
|
14354
|
+
explore(x, series) {
|
14310
14355
|
if (!this.interactive)
|
14311
14356
|
return;
|
14312
|
-
|
14313
|
-
|
14314
|
-
|
14315
|
-
|
14316
|
-
|
14317
|
-
|
14318
|
-
|
14319
|
-
|
14357
|
+
const axes = Object.assign({}, this.filters);
|
14358
|
+
if (this._sum) {
|
14359
|
+
let i = 0;
|
14360
|
+
while (i < this._sum.length) {
|
14361
|
+
let { value, calculate } = this._sum[i], name = '_sum_' + i;
|
14362
|
+
if (x === name) {
|
14363
|
+
x = [];
|
14364
|
+
for (let i = 0; i < this.columns.length; i++) {
|
14365
|
+
let key = this.columns[i].key;
|
14366
|
+
if (isFunction(calculate)) {
|
14367
|
+
let val = calculate(key, this.data);
|
14368
|
+
if (val !== undefined)
|
14369
|
+
x.push(key);
|
14370
|
+
}
|
14371
|
+
else {
|
14372
|
+
x.push(key);
|
14373
|
+
if (key === value)
|
14374
|
+
break;
|
14375
|
+
}
|
14376
|
+
}
|
14377
|
+
break;
|
14320
14378
|
}
|
14321
|
-
|
14322
|
-
|
14323
|
-
|
14324
|
-
|
14325
|
-
|
14326
|
-
|
14327
|
-
|
14328
|
-
|
14379
|
+
else if (series === name) {
|
14380
|
+
series = [];
|
14381
|
+
for (let i = 0; i < this.rows.length; i++) {
|
14382
|
+
let key = this.rows[i].key;
|
14383
|
+
if (isFunction(calculate)) {
|
14384
|
+
let val = calculate(key, this.data);
|
14385
|
+
if (val !== undefined)
|
14386
|
+
series.push(key);
|
14387
|
+
}
|
14388
|
+
else {
|
14389
|
+
series.push(key);
|
14390
|
+
if (key === value)
|
14391
|
+
break;
|
14392
|
+
}
|
14393
|
+
}
|
14394
|
+
break;
|
14329
14395
|
}
|
14396
|
+
i++;
|
14330
14397
|
}
|
14331
14398
|
}
|
14332
|
-
const axes = Object.assign({}, this.filters);
|
14333
14399
|
axes[this.xAxis.name] = x;
|
14334
|
-
axes[this.series.name] =
|
14400
|
+
axes[this.series.name] = series;
|
14335
14401
|
this.onExplore.emit(axes);
|
14336
14402
|
}
|
14337
14403
|
move(x, y) {
|
@@ -14365,10 +14431,10 @@ class CubeMatrixComponent {
|
|
14365
14431
|
}
|
14366
14432
|
}
|
14367
14433
|
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 });
|
14368
|
-
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"],
|
14434
|
+
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] });
|
14369
14435
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeMatrixComponent, decorators: [{
|
14370
14436
|
type: Component,
|
14371
|
-
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
|
14437
|
+
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"] }]
|
14372
14438
|
}], ctorParameters: function () { return [{ type: PromptService }, { type: CubeService }, { type: SessionService }, { type: DatasourceService }]; }, propDecorators: { tableElement: [{
|
14373
14439
|
type: ViewChild,
|
14374
14440
|
args: ['table']
|
@@ -14381,8 +14447,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
14381
14447
|
}], _series: [{
|
14382
14448
|
type: Input,
|
14383
14449
|
args: ['series']
|
14384
|
-
}],
|
14385
|
-
type: Input
|
14450
|
+
}], _indices: [{
|
14451
|
+
type: Input,
|
14452
|
+
args: ['indices']
|
14386
14453
|
}], scope: [{
|
14387
14454
|
type: Input
|
14388
14455
|
}], sum: [{
|
@@ -14398,11 +14465,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
14398
14465
|
args: ['explore']
|
14399
14466
|
}], loadingChange: [{
|
14400
14467
|
type: Output
|
14401
|
-
}] } });
|
14402
|
-
class CubeInfoCellArgs {
|
14403
|
-
get value() { return this._value; }
|
14404
|
-
get summary() { return this._summary; }
|
14405
|
-
}
|
14468
|
+
}] } });
|
14406
14469
|
|
14407
14470
|
class CubeMatrixBase {
|
14408
14471
|
constructor(_service, _ds, _session) {
|
@@ -19246,7 +19309,7 @@ class SyncfusionChartModule {
|
|
19246
19309
|
}
|
19247
19310
|
SyncfusionChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SyncfusionChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
19248
19311
|
SyncfusionChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SyncfusionChartModule, imports: [ChartModule, AccumulationChartAllModule, SparklineAllModule], exports: [ChartModule, AccumulationChartAllModule, SparklineAllModule] });
|
19249
|
-
SyncfusionChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SyncfusionChartModule, providers: [LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService,
|
19312
|
+
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,
|
19250
19313
|
SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService,
|
19251
19314
|
StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService,
|
19252
19315
|
BarSeriesService, StackingBarSeriesService, RangeColumnSeriesService, BubbleSeriesService, TooltipService,
|
@@ -19261,7 +19324,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
19261
19324
|
args: [{
|
19262
19325
|
imports: [ChartModule, AccumulationChartAllModule, SparklineAllModule],
|
19263
19326
|
exports: [ChartModule, AccumulationChartAllModule, SparklineAllModule],
|
19264
|
-
providers: [LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService,
|
19327
|
+
providers: [AccumulationDistributionIndicatorService, FunnelSeriesService, StackingStepAreaSeriesService, PieSeriesService, PyramidSeriesService, LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService,
|
19265
19328
|
SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService,
|
19266
19329
|
StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService,
|
19267
19330
|
BarSeriesService, StackingBarSeriesService, RangeColumnSeriesService, BubbleSeriesService, TooltipService,
|
@@ -19682,7 +19745,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
19682
19745
|
}] } });
|
19683
19746
|
|
19684
19747
|
/** cube matrix component*/
|
19685
|
-
class
|
19748
|
+
class CubeMatrixPopupComponent extends CubeMatrixBase {
|
19686
19749
|
/** filters */
|
19687
19750
|
/** cube-info ctor */
|
19688
19751
|
constructor(_ref, data, service, ds, session, _sb) {
|
@@ -19692,9 +19755,9 @@ class CubeMatrixPageComponent extends CubeMatrixBase {
|
|
19692
19755
|
this.preloading = true;
|
19693
19756
|
if (!data.options)
|
19694
19757
|
throw 'no data options';
|
19695
|
-
const { axes: base, options: { indices, xAxis,
|
19758
|
+
const { axes: base, options: { indices, xAxis, series, filters, cube, sum } } = data;
|
19696
19759
|
this.cube = cube;
|
19697
|
-
this.series =
|
19760
|
+
this.series = series;
|
19698
19761
|
this.xAxis = xAxis;
|
19699
19762
|
this.sum = sum;
|
19700
19763
|
this.indices = indices;
|
@@ -19710,9 +19773,9 @@ class CubeMatrixPageComponent extends CubeMatrixBase {
|
|
19710
19773
|
});
|
19711
19774
|
}
|
19712
19775
|
}
|
19713
|
-
|
19714
|
-
|
19715
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type:
|
19776
|
+
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 });
|
19777
|
+
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 } });
|
19778
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeMatrixPopupComponent, decorators: [{
|
19716
19779
|
type: Component,
|
19717
19780
|
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"] }]
|
19718
19781
|
}], ctorParameters: function () {
|
@@ -19854,7 +19917,7 @@ class CubeInfo {
|
|
19854
19917
|
this._cf = _cf;
|
19855
19918
|
}
|
19856
19919
|
navigate(axes, options) {
|
19857
|
-
const { cube, view,
|
19920
|
+
const { cube, view, series, xAxis, filters, aggregate, indices, sum } = options || {};
|
19858
19921
|
const ccube = cube ? this._session.profile.cubes.find(c => c.name === cube) : this._session.profile.cubes[0];
|
19859
19922
|
if (isArray(axes))
|
19860
19923
|
axes = this._mapAxes(ccube, axes);
|
@@ -19863,7 +19926,7 @@ class CubeInfo {
|
|
19863
19926
|
queryParams: axes
|
19864
19927
|
});
|
19865
19928
|
else {
|
19866
|
-
this._router.navigate(['cube', ccube.name, 'i', xAxis,
|
19929
|
+
this._router.navigate(['cube', ccube.name, 'i', xAxis, series], {
|
19867
19930
|
queryParams: axes,
|
19868
19931
|
state: { indices, aggregate, filters, sum }
|
19869
19932
|
});
|
@@ -19889,7 +19952,7 @@ class CubeInfo {
|
|
19889
19952
|
else {
|
19890
19953
|
if (!options)
|
19891
19954
|
throw 'no options';
|
19892
|
-
this._open(
|
19955
|
+
this._open(CubeMatrixPopupComponent, element, {
|
19893
19956
|
axes,
|
19894
19957
|
options
|
19895
19958
|
});
|
@@ -20295,6 +20358,8 @@ let CubeAnalysisWidget = class CubeAnalysisWidget {
|
|
20295
20358
|
case 'Doughnut':
|
20296
20359
|
case 'HalfDoughnut':
|
20297
20360
|
case 'Pie':
|
20361
|
+
case 'Funnel':
|
20362
|
+
case 'Pyramid':
|
20298
20363
|
comp = CubeAccumAnalysisWidget;
|
20299
20364
|
break;
|
20300
20365
|
default:
|
@@ -20379,13 +20444,17 @@ let CubeWidgetFilterComponent = class CubeWidgetFilterComponent {
|
|
20379
20444
|
this._session = _session;
|
20380
20445
|
this._fb = _fb;
|
20381
20446
|
this.exclude = [];
|
20382
|
-
const { xAxis, exclude, cube: name } = this._widgetRef.options;
|
20447
|
+
const { xAxis, series, exclude, cube: name } = this._widgetRef.options;
|
20383
20448
|
this.cube = name;
|
20384
|
-
if (xAxis)
|
20385
|
-
|
20386
|
-
|
20449
|
+
if (isArray(xAxis))
|
20450
|
+
this.exclude = [...xAxis];
|
20451
|
+
else
|
20452
|
+
this.exclude.push(xAxis);
|
20453
|
+
if (series) {
|
20454
|
+
if (isArray(series))
|
20455
|
+
this.exclude = this.exclude.concat(series);
|
20387
20456
|
else
|
20388
|
-
this.exclude.push(
|
20457
|
+
this.exclude.push(series);
|
20389
20458
|
}
|
20390
20459
|
if (exclude) {
|
20391
20460
|
if (isArray(exclude))
|
@@ -23979,7 +24048,7 @@ let CubeDocumentViewComponent = class CubeDocumentViewComponent extends CubeBase
|
|
23979
24048
|
}
|
23980
24049
|
};
|
23981
24050
|
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 });
|
23982
|
-
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 [
|
24051
|
+
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 } });
|
23983
24052
|
CubeDocumentViewComponent = __decorate([
|
23984
24053
|
BizDoc({
|
23985
24054
|
selector: 'bizdoc-cube-view'
|
@@ -23987,7 +24056,7 @@ CubeDocumentViewComponent = __decorate([
|
|
23987
24056
|
], CubeDocumentViewComponent);
|
23988
24057
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeDocumentViewComponent, decorators: [{
|
23989
24058
|
type: Component,
|
23990
|
-
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 [
|
24059
|
+
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"] }]
|
23991
24060
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: DocumentViewRef }, { type: CubeService }, { type: Popup }, { type: RouterImpl }, { type: GuideService }]; }, propDecorators: { viewPane: [{
|
23992
24061
|
type: ViewChild,
|
23993
24062
|
args: [CubeViewComponent]
|
@@ -25260,7 +25329,7 @@ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
|
|
25260
25329
|
DashboardComponent, WidgetItemComponent, CubeWidgetFilterComponent, CubeAccumAnalysisWidget, CubeAnalysisWidget, CubeChartAnalysisWidget, ActionsWidget, RecentsWidget,
|
25261
25330
|
AskDialog, AboutDialog, ActionDialog,
|
25262
25331
|
ImpersonateDialog,
|
25263
|
-
ConversationComponent,
|
25332
|
+
ConversationComponent, CubeMatrixPopupComponent,
|
25264
25333
|
VersionCompareComponent, ExploreDocumentComponent, TasksComponent,
|
25265
25334
|
PendingResultsWidget, CompareDepartmentsWidget, CubeDocumentsComponent, CubeDocumentsWidget,
|
25266
25335
|
PersonalScoreWidget, PersonalActivityWidget, PeersPerformanceWidget, UsagePivotComponent, UsageChartComponent, UsageReportArgs,
|
@@ -25397,7 +25466,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
25397
25466
|
DashboardComponent, WidgetItemComponent, CubeWidgetFilterComponent, CubeAccumAnalysisWidget, CubeAnalysisWidget, CubeChartAnalysisWidget, ActionsWidget, RecentsWidget,
|
25398
25467
|
AskDialog, AboutDialog, ActionDialog,
|
25399
25468
|
ImpersonateDialog,
|
25400
|
-
ConversationComponent,
|
25469
|
+
ConversationComponent, CubeMatrixPopupComponent,
|
25401
25470
|
VersionCompareComponent, ExploreDocumentComponent, TasksComponent,
|
25402
25471
|
PendingResultsWidget, CompareDepartmentsWidget, CubeDocumentsComponent, CubeDocumentsWidget,
|
25403
25472
|
PersonalScoreWidget, PersonalActivityWidget, PeersPerformanceWidget, UsagePivotComponent, UsageChartComponent, UsageReportArgs,
|