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