@bizdoc/core 1.11.0-next.8 → 1.11.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.
@@ -1368,7 +1368,7 @@ class MailboxService {
1368
1368
  const res = event;
1369
1369
  if (res.status === 200) {
1370
1370
  const model = res.body;
1371
- observe.next(model);
1371
+ observe.next(isArray(files) ? model : model[0]);
1372
1372
  }
1373
1373
  else
1374
1374
  observe.error({ status: res.status, error: res.body });
@@ -8221,6 +8221,7 @@ class ComposeFormComponent {
8221
8221
  this.working = true;
8222
8222
  this.workingChange.emit(true);
8223
8223
  let exists;
8224
+ const observables = [];
8224
8225
  files.forEach(f => {
8225
8226
  if (!exists)
8226
8227
  exists = this.model.attachments.some(a => a.fileName === f.name && !a.deleted && !a.failed);
@@ -8229,22 +8230,21 @@ class ComposeFormComponent {
8229
8230
  this.model.attachments.splice(retry, 1);
8230
8231
  const model = this._constructAttachment(f);
8231
8232
  this.model.attachments.push(model);
8233
+ const observable = this._mailbox.upload(this.model.id, this.model.formId, this.model.version, f).
8234
+ pipe(tap((r) => {
8235
+ this._sb.toast(!exists ? 'UploadOk' : 'UploadVersionOk', f.name);
8236
+ Object.assign(model, r, { progress: null, });
8237
+ this.working = false;
8238
+ this.workingChange.emit(false);
8239
+ }), catchError(e => {
8240
+ this._handleError(e, 'UploadFailed', f.name);
8241
+ this.working = false;
8242
+ this.workingChange.emit(false);
8243
+ return of(false);
8244
+ }));
8245
+ observables.push(observable);
8232
8246
  });
8233
- return this._mailbox.upload(this.model.id, this.model.formId, this.model.version, files).
8234
- pipe(tap((r) => {
8235
- files.length === 1 ? this._sb.toast(!exists ? 'UploadOk' : 'UploadVersionOk', files[0].name) :
8236
- this._sb.toast('UploadMany', files.length);
8237
- r.forEach(i => Object.assign(this.model.attachments.find(a => a.fileName == i.fileName && !a.id), i, { progress: null, }, i));
8238
- this.working = false;
8239
- this.workingChange.emit(false);
8240
- }, e => {
8241
- if (files.length === 1)
8242
- this._handleError(e, 'UploadFailed', files[0].name);
8243
- else
8244
- this._handleError(e, 'UploadFailed');
8245
- this.working = false;
8246
- this.workingChange.emit(false);
8247
- }));
8247
+ return forkJoin(observables);
8248
8248
  }
8249
8249
  _constructAttachment(file) {
8250
8250
  const now = new Date(), utc = new Date(now.getTime() + now.getTimezoneOffset() * 60000);
@@ -9975,6 +9975,7 @@ class CubePivotComponent {
9975
9975
  target: '.e-icons',
9976
9976
  cssClass: 'e-custom-tooltip',
9977
9977
  position: 'BottomCenter',
9978
+ offsetY: 15,
9978
9979
  enableRtl: this.pivot.enableRtl,
9979
9980
  locale: this.pivot.locale,
9980
9981
  });
@@ -9991,6 +9992,7 @@ class CubePivotComponent {
9991
9992
  }
9992
9993
  }
9993
9994
  ngOnDestroy() {
9995
+ this.tooltip && this.tooltip.destroy();
9994
9996
  this.pivot && this.pivot.destroy();
9995
9997
  this._destroy.next();
9996
9998
  this._destroy.complete();
@@ -10345,7 +10347,8 @@ class CubeSpreadsheetComponent {
10345
10347
  const header = i === 0 || (this.series && j === 0), isnumber = this.series ? !header : isNumber(c.value);
10346
10348
  return {
10347
10349
  type: isnumber ? 'number' : 'text',
10348
- index: j + 1, value: c.value,
10350
+ index: j + 1,
10351
+ value: c.value,
10349
10352
  style: {
10350
10353
  numberFormat,
10351
10354
  hAlign: isnumber ? 'right' : 'center',
@@ -13961,7 +13964,7 @@ class TraceViewComponent extends TraceBase {
13961
13964
  }
13962
13965
  trace.push(step);
13963
13966
  }
13964
- this._data = trace.sort((a, b) => a.time > b.time ? 1 : a.time === b.time ? 0 : -1);
13967
+ this._data = trace;
13965
13968
  this._filter();
13966
13969
  }
13967
13970
  _filter() {
@@ -14523,10 +14526,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
14523
14526
  const LOADING_DELAY = 200, SUM_PREFIX = '_sum';
14524
14527
  /** cube matrix component*/
14525
14528
  class CubeMatrixComponent {
14526
- constructor(_sb, _service, _session, _ds) {
14529
+ constructor(_sb, _service, _session, _translate, _ds) {
14527
14530
  this._sb = _sb;
14528
14531
  this._service = _service;
14529
14532
  this._session = _session;
14533
+ this._translate = _translate;
14530
14534
  this._ds = _ds;
14531
14535
  this.PRECISION = this._service.digitsInfo;
14532
14536
  this.LANGUAGE = this._session.language;
@@ -14854,6 +14858,55 @@ class CubeMatrixComponent {
14854
14858
  axes[this.series.name] = series;
14855
14859
  this.onExplore.emit(axes);
14856
14860
  }
14861
+ export() {
14862
+ const numberFormat = this._service.numberFormat, cells = [], rows = [{ index: 1, cells }];
14863
+ this.columns.forEach((c, j) => cells.push({
14864
+ index: j + 2,
14865
+ value: c.value, style: { bold: true }
14866
+ }));
14867
+ let i = 1;
14868
+ this.indices && this.indices.forEach(x => {
14869
+ const data = this._data[x.name];
14870
+ const cells = [{ index: 1, value: x.title, style: { bold: true } }];
14871
+ this.columns.forEach((c, j) => cells.push({
14872
+ index: j + 2,
14873
+ value: data[c.key] !== undefined ? data[c.key] : 0
14874
+ }));
14875
+ rows.push({
14876
+ index: i + 1,
14877
+ cells
14878
+ });
14879
+ i++;
14880
+ });
14881
+ this.rows.forEach(r => {
14882
+ const data = this._data[r.key], cells = [{ index: 1, value: r.value }];
14883
+ this.columns.forEach((c, j) => cells.push({
14884
+ type: 'number',
14885
+ index: j + 1,
14886
+ value: data[c.key] !== undefined ? data[c.key] : 0,
14887
+ style: {
14888
+ numberFormat,
14889
+ hAlign: 'right',
14890
+ }
14891
+ }));
14892
+ rows.push({
14893
+ index: i + 2,
14894
+ cells
14895
+ });
14896
+ i++;
14897
+ });
14898
+ const book = new Workbook({
14899
+ worksheets: [
14900
+ {
14901
+ enableRtl: this._session.inverse,
14902
+ name: this._translate.get('SheetN', 1),
14903
+ columns: this.columns.map((_, i) => ({ index: i + 1, width: 150 })),
14904
+ rows,
14905
+ },
14906
+ ],
14907
+ }, 'xlsx');
14908
+ this._service.nameOf(this.filters, this.cube.name).subscribe(n => book.save(`${n}.xlsx`));
14909
+ }
14857
14910
  move(x, y) {
14858
14911
  let rowIndex = 0;
14859
14912
  for (let b = 0; b < this.tableElement.nativeElement.tBodies.length; b++) {
@@ -14884,12 +14937,12 @@ class CubeMatrixComponent {
14884
14937
  }
14885
14938
  }
14886
14939
  }
14887
- CubeMatrixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CubeMatrixComponent, deps: [{ token: PromptService }, { token: CubeService }, { token: SessionService }, { token: DatasourceService }], target: i0.ɵɵFactoryTarget.Component });
14940
+ CubeMatrixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CubeMatrixComponent, deps: [{ token: PromptService }, { token: CubeService }, { token: SessionService }, { token: TranslateService }, { token: DatasourceService }], target: i0.ɵɵFactoryTarget.Component });
14888
14941
  CubeMatrixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: CubeMatrixComponent, selector: "bizdoc-cube-matrix", inputs: { seriesTotalLabel: "seriesTotalLabel", xAxisTotalLabel: "xAxisTotalLabel", _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 class=\"mat-header-cell\">{{xAxisTotalLabel}}</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 {{ data[index.name][column.key] }}\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(0, y)\">\r\n {{ data[index.name]['_total'] }}\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 <span [class.clickable]=\"interactive && column.explorable !== false && row.explorable !== false\" (click)=\"explore(column, row)\">\r\n {{ data[row.key][column.key] }}\r\n </span>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(-1, y + indices.length)\">\r\n <ng-container *ngIf=\"data[row.key]['_total'] !== undefined\">\r\n {{ data[row.key]['_total'] }}\r\n </ng-container>\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tfoot>\r\n <!-- footer -->\r\n <tr class=\"mat-row\">\r\n <th class=\"mat-header-cell\">{{seriesTotalLabel}}</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].startsWith('-')\">\r\n <ng-container *ngIf=\"totals[column.key] !== undefined\">\r\n {{ totals[column.key] }}\r\n </ng-container>\r\n </td>\r\n <th class=\"mat-cell figure\">{{ totals['_grand'] }}</th>\r\n </tr>\r\n </tfoot>\r\n</table>\r\n", styles: [".clickable{cursor:pointer}.cube-table{width:100%;border-collapse:collapse;table-layout:fixed}.cube-table th{cursor:default}.cube-table th.figure{font-weight:500}.cube-table td{padding-right:4px}\n"], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [matrixAnimation] });
14889
14942
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CubeMatrixComponent, decorators: [{
14890
14943
  type: Component,
14891
14944
  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 class=\"mat-header-cell\">{{xAxisTotalLabel}}</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 {{ data[index.name][column.key] }}\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(0, y)\">\r\n {{ data[index.name]['_total'] }}\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 <span [class.clickable]=\"interactive && column.explorable !== false && row.explorable !== false\" (click)=\"explore(column, row)\">\r\n {{ data[row.key][column.key] }}\r\n </span>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(-1, y + indices.length)\">\r\n <ng-container *ngIf=\"data[row.key]['_total'] !== undefined\">\r\n {{ data[row.key]['_total'] }}\r\n </ng-container>\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tfoot>\r\n <!-- footer -->\r\n <tr class=\"mat-row\">\r\n <th class=\"mat-header-cell\">{{seriesTotalLabel}}</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].startsWith('-')\">\r\n <ng-container *ngIf=\"totals[column.key] !== undefined\">\r\n {{ totals[column.key] }}\r\n </ng-container>\r\n </td>\r\n <th class=\"mat-cell figure\">{{ totals['_grand'] }}</th>\r\n </tr>\r\n </tfoot>\r\n</table>\r\n", styles: [".clickable{cursor:pointer}.cube-table{width:100%;border-collapse:collapse;table-layout:fixed}.cube-table th{cursor:default}.cube-table th.figure{font-weight:500}.cube-table td{padding-right:4px}\n"] }]
14892
- }], ctorParameters: function () { return [{ type: PromptService }, { type: CubeService }, { type: SessionService }, { type: DatasourceService }]; }, propDecorators: { tableElement: [{
14945
+ }], ctorParameters: function () { return [{ type: PromptService }, { type: CubeService }, { type: SessionService }, { type: TranslateService }, { type: DatasourceService }]; }, propDecorators: { tableElement: [{
14893
14946
  type: ViewChild,
14894
14947
  args: ['table']
14895
14948
  }], seriesTotalLabel: [{
@@ -15124,12 +15177,12 @@ class CubeMatrixPaneComponent extends CubeMatrixBase {
15124
15177
  }
15125
15178
  }
15126
15179
  CubeMatrixPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CubeMatrixPaneComponent, deps: [{ token: PaneRef }, { token: PanesRouter }, { token: TranslateService }, { token: CubeService }, { token: DatasourceService }, { token: SessionService }], target: i0.ɵɵFactoryTarget.Component });
15127
- CubeMatrixPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: CubeMatrixPaneComponent, selector: "ng-component", host: { classAttribute: "pane" }, usesInheritance: true, ngImport: i0, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"table.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <span class=\"divider\"></span>\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</mat-toolbar>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<bizdoc-cube-matrix [cube]=\"cube\" [xAxis]=\"xAxis\" [series]=\"series\" [indices]=\"indices\" [sum]=sum\r\n [filters]=\"axes\"\r\n [xAxisTotalLabel]=\"xAxisTotalLabel\"\r\n [seriesTotalLabel]=\"seriesTotalLabel\"\r\n (loadingChange)=\"loading = $event\" (explore)='explore($event)'></bizdoc-cube-matrix>\r\n", styles: [":host{min-width:450px}:host ::ng-deep .cube-table thead{position:sticky;top:0}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { 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: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i5$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: CubeMatrixComponent, selector: "bizdoc-cube-matrix", inputs: ["seriesTotalLabel", "xAxisTotalLabel", "cube", "xAxis", "series", "indices", "scope", "sum", "filters", "loading", "interactive"], outputs: ["explore", "loadingChange"] }], directives: [{ type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: MatIconAnimate, selector: "[matAnimate]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe, "typeValue": TypeValuePipe } });
15180
+ CubeMatrixPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: CubeMatrixPaneComponent, selector: "ng-component", host: { classAttribute: "pane" }, usesInheritance: true, ngImport: i0, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"table.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\"\r\n data-help=\"download\" (click)=\"matrix.export()\">\r\n <mat-icon>save_alt</mat-icon>\r\n </button>\r\n <span class=\"divider\"></span>\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</mat-toolbar>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<bizdoc-cube-matrix [cube]=\"cube\" [xAxis]=\"xAxis\" [series]=\"series\" [indices]=\"indices\" [sum]=sum\r\n [filters]=\"axes\" #matrix\r\n [xAxisTotalLabel]=\"xAxisTotalLabel\"\r\n [seriesTotalLabel]=\"seriesTotalLabel\"\r\n (loadingChange)=\"loading = $event\" (explore)='explore($event)'></bizdoc-cube-matrix>\r\n", styles: [":host{min-width:450px}:host ::ng-deep .cube-table thead{position:sticky;top:0}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { 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: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i5$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: CubeMatrixComponent, selector: "bizdoc-cube-matrix", inputs: ["seriesTotalLabel", "xAxisTotalLabel", "cube", "xAxis", "series", "indices", "scope", "sum", "filters", "loading", "interactive"], outputs: ["explore", "loadingChange"] }], directives: [{ type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: MatIconAnimate, selector: "[matAnimate]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe, "typeValue": TypeValuePipe } });
15128
15181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CubeMatrixPaneComponent, decorators: [{
15129
15182
  type: Component,
15130
15183
  args: [{ host: {
15131
15184
  class: 'pane'
15132
- }, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"table.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <span class=\"divider\"></span>\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</mat-toolbar>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<bizdoc-cube-matrix [cube]=\"cube\" [xAxis]=\"xAxis\" [series]=\"series\" [indices]=\"indices\" [sum]=sum\r\n [filters]=\"axes\"\r\n [xAxisTotalLabel]=\"xAxisTotalLabel\"\r\n [seriesTotalLabel]=\"seriesTotalLabel\"\r\n (loadingChange)=\"loading = $event\" (explore)='explore($event)'></bizdoc-cube-matrix>\r\n", styles: [":host{min-width:450px}:host ::ng-deep .cube-table thead{position:sticky;top:0}\n"] }]
15185
+ }, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"table.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\"\r\n data-help=\"download\" (click)=\"matrix.export()\">\r\n <mat-icon>save_alt</mat-icon>\r\n </button>\r\n <span class=\"divider\"></span>\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</mat-toolbar>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<bizdoc-cube-matrix [cube]=\"cube\" [xAxis]=\"xAxis\" [series]=\"series\" [indices]=\"indices\" [sum]=sum\r\n [filters]=\"axes\" #matrix\r\n [xAxisTotalLabel]=\"xAxisTotalLabel\"\r\n [seriesTotalLabel]=\"seriesTotalLabel\"\r\n (loadingChange)=\"loading = $event\" (explore)='explore($event)'></bizdoc-cube-matrix>\r\n", styles: [":host{min-width:450px}:host ::ng-deep .cube-table thead{position:sticky;top:0}\n"] }]
15133
15186
  }], ctorParameters: function () { return [{ type: PaneRef }, { type: PanesRouter }, { type: TranslateService }, { type: CubeService }, { type: DatasourceService }, { type: SessionService }]; } });
15134
15187
 
15135
15188
  const NOTIFICATION_DATA = new InjectionToken('notification');
@@ -26009,11 +26062,11 @@ class FileInput {
26009
26062
  _upload(files) {
26010
26063
  const observables = [];
26011
26064
  for (let file of files) {
26012
- let observable = this._mailbox.upload(this._model.id, this._model.formId, this._model.version, [file], { isPrivate: true }).
26065
+ let observable = this._mailbox.upload(this._model.id, this._model.formId, this._model.version, file, { isPrivate: true }).
26013
26066
  pipe(tap$1(e => {
26014
26067
  // if (e.progress) {
26015
26068
  // }
26016
- }), map$1(e => e[0]), catchError$1(e => {
26069
+ }), catchError$1(e => {
26017
26070
  this._handleError(e);
26018
26071
  return of(false);
26019
26072
  }));