@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.
Files changed (36) hide show
  1. package/assets/bizdoc-schema.json +6 -0
  2. package/esm2020/lib/browse/browse-items.component.mjs +3 -3
  3. package/esm2020/lib/core/controls/combination-picker-body.mjs +5 -2
  4. package/esm2020/lib/core/functions.mjs +4 -1
  5. package/esm2020/lib/core/mailbox.service.mjs +20 -23
  6. package/esm2020/lib/core/models.mjs +1 -1
  7. package/esm2020/lib/cube/cube-info.service.mjs +5 -5
  8. package/esm2020/lib/cube/grid/spreadsheet.component.mjs +1 -1
  9. package/esm2020/lib/cube/matrix/matrix.base.mjs +1 -1
  10. package/esm2020/lib/cube/matrix/matrix.component.mjs +8 -8
  11. package/esm2020/lib/cube/matrix/table.component.mjs +202 -136
  12. package/esm2020/lib/dashboard/cube/cube-analysis.base.mjs +1 -1
  13. package/esm2020/lib/dashboard/cube/cube-analysis.widget.mjs +3 -1
  14. package/esm2020/lib/dashboard/cube/documents.widget.mjs +1 -1
  15. package/esm2020/lib/dashboard/cube/filter/filter.component.mjs +10 -6
  16. package/esm2020/lib/modules/chart.module.mjs +4 -4
  17. package/esm2020/lib/shared.module.mjs +4 -4
  18. package/esm2020/lib/views/cube/matrix.component.mjs +1 -1
  19. package/esm2020/lib/views/cube/view.component.mjs +3 -3
  20. package/esm2020/public-api.mjs +1 -1
  21. package/fesm2015/bizdoc-core.mjs +249 -180
  22. package/fesm2015/bizdoc-core.mjs.map +1 -1
  23. package/fesm2020/bizdoc-core.mjs +256 -181
  24. package/fesm2020/bizdoc-core.mjs.map +1 -1
  25. package/lib/core/controls/combination-picker-body.d.ts +4 -6
  26. package/lib/core/functions.d.ts +1 -0
  27. package/lib/core/mailbox.service.d.ts +4 -8
  28. package/lib/core/models.d.ts +1 -1
  29. package/lib/cube/cube-info.service.d.ts +3 -6
  30. package/lib/cube/matrix/matrix.base.d.ts +2 -6
  31. package/lib/cube/matrix/matrix.component.d.ts +3 -3
  32. package/lib/cube/matrix/table.component.d.ts +18 -27
  33. package/lib/shared.module.d.ts +1 -1
  34. package/lib/views/cube/matrix.component.d.ts +3 -11
  35. package/package.json +14 -14
  36. package/public-api.d.ts +1 -1
@@ -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
- if (read !== undefined && m.read !== read) {
3030
- if (this._isAboveWatermark(m.received))
3031
- this._session.profile.inboxCount -= read ? -1 : 1;
3032
- const folder = this._session.profile.folders.find(f => f.name === m.folderId);
3033
- folder.count -= read ? -1 : 1;
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
- function translate(axis) {
14139
- switch (axis) {
14140
- case '$month':
14141
- return 'M' + ('0' + new Date().getMonth().toString()).slice(-2);
14142
- case '$year':
14143
- return new Date().getFullYear().toString();
14144
- case '$quarter':
14145
- return Math.ceil(new Date().getMonth() / 3).toString();
14146
- default:
14147
- return axis ? axis.toString() : null;
14148
- }
14149
- }
14150
- this._sum = {
14151
- //fn: val.fn,
14152
- title: val.title,
14153
- xAxis: translate(val.xAxis),
14154
- serie: translate(val.serie)
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.cube ? this._session.profile.cubes.find(c => c.name === this._cube) :
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._indices)
14170
- this.indexes = this.cube.indices.filter(i => this._indices.indexOf(i.name) > -1);
14171
- else {
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) || this.cube.axes[0];
14177
- this.series = this.cube.axes.find(a => a.name === this._series) || this.cube.axes[1];
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
- let { xAxis, serie } = this._sum;
14186
- if (xAxis) {
14187
- const columns = [];
14188
- this.columns.forEach(c => {
14189
- columns.push(c);
14190
- if (xAxis.toString() === c.key)
14191
- columns.push({
14192
- key: '_sum',
14193
- value: this._sum.title
14194
- });
14195
- });
14196
- this.columns = columns;
14197
- }
14198
- if (serie) {
14199
- const rows = [];
14200
- this.rows.forEach(r => {
14201
- rows.push(r);
14202
- if (serie.toString() === r.key)
14203
- rows.push({
14204
- key: '_sum',
14205
- value: this._sum.title
14206
- });
14207
- });
14208
- this.rows = rows;
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.xAxis.name, {
14214
- series: this.series.name,
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(), tap(d => {
14217
+ }).pipe(modelize(), first$1()).subscribe(d => {
14219
14218
  this._totals(d);
14220
- this.sum &&
14219
+ this._sum &&
14221
14220
  this._calculatesum(d);
14222
- })).subscribe(d => this.data = d, (e) => {
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.indexes.forEach(i => {
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.totals = {};
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
- let { xAxis, serie /*, fn*/ } = this._sum;
14268
- if (xAxis) {
14269
- let total = 0;
14270
- this.rows.forEach(r => {
14271
- const row = data[r.key];
14272
- if (!row)
14273
- return;
14274
- let sum = 0, i = 0;
14275
- while (i < this.columns.length) {
14276
- let key = this.columns[i].key, val = row[key];
14277
- if (val !== undefined)
14278
- sum += val;
14279
- if (key === xAxis)
14280
- break;
14281
- i++;
14282
- }
14283
- data[r.key]['_sum'] = sum;
14284
- total += sum;
14285
- });
14286
- this.totals['_sum'] = total;
14287
- }
14288
- if (serie) {
14289
- let total = 0;
14290
- this.columns.forEach(c => {
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
- i++;
14302
- }
14303
- data['_sum'][c.key] = sum;
14304
- total += sum;
14305
- });
14306
- data['_sum']['_total'] = total;
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, serie) {
14354
+ explore(x, series) {
14310
14355
  if (!this.interactive)
14311
14356
  return;
14312
- if (this.sum) {
14313
- if (x === '_sum') {
14314
- x = [];
14315
- for (let i = 0; i < this.columns.length; i++) {
14316
- let key = this.columns[i].key;
14317
- x.push(key);
14318
- if (key === this._sum.xAxis)
14319
- break;
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
- if (serie === '_sum') {
14323
- serie = [];
14324
- for (let i = 0; i < this.rows.length; i++) {
14325
- let key = this.rows[i].key;
14326
- serie.push(key);
14327
- if (key === this._sum.serie)
14328
- break;
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] = serie;
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"], 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 indexes; 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] });
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 indexes; 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"] }]
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
- }], indices: [{
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 CubeMatrixPageComponent extends CubeMatrixBase {
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, serie, filters, cube, sum } } = data;
19758
+ const { axes: base, options: { indices, xAxis, series, filters, cube, sum } } = data;
19696
19759
  this.cube = cube;
19697
- this.series = serie;
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
- CubeMatrixPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeMatrixPageComponent, deps: [{ token: PopupRef }, { token: POPUP_DATA }, { token: CubeService }, { token: DatasourceService }, { token: SessionService }, { token: PromptService }], target: i0.ɵɵFactoryTarget.Component });
19714
- CubeMatrixPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CubeMatrixPageComponent, 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 } });
19715
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeMatrixPageComponent, decorators: [{
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, serie, xAxis, filters, aggregate, indices, sum } = options || {};
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, serie], {
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(CubeMatrixPageComponent, element, {
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
- if (isArray(xAxis))
20386
- this.exclude = [...xAxis];
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(xAxis);
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 [axes]=\"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 } });
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 [axes]=\"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"] }]
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, CubeMatrixPageComponent,
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, CubeMatrixPageComponent,
25469
+ ConversationComponent, CubeMatrixPopupComponent,
25401
25470
  VersionCompareComponent, ExploreDocumentComponent, TasksComponent,
25402
25471
  PendingResultsWidget, CompareDepartmentsWidget, CubeDocumentsComponent, CubeDocumentsWidget,
25403
25472
  PersonalScoreWidget, PersonalActivityWidget, PeersPerformanceWidget, UsagePivotComponent, UsageChartComponent, UsageReportArgs,