@bizdoc/core 1.9.9 → 1.9.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/themes/brown.min.css +1 -1
- package/assets/themes/dark.min.css +1 -1
- package/assets/themes/deep-purple-light-blue.min.css +3 -3
- package/assets/themes/default.min.css +1 -1
- package/assets/themes/green.min.css +1 -1
- package/assets/themes/indigo.min.css +1 -1
- package/esm2020/lib/admin/form/workflow/workflow.component.mjs +3 -2
- package/esm2020/lib/admin/positions/positions.component.mjs +44 -5
- package/esm2020/lib/browse/browse-items.component.mjs +13 -4
- package/esm2020/lib/browse/browse.pane.component.mjs +3 -1
- package/esm2020/lib/browse/filter/filter.component.mjs +3 -6
- package/esm2020/lib/browse/folders-menu.component.mjs +2 -2
- package/esm2020/lib/compose/attachments/preview/attachment-preview.component.mjs +18 -16
- package/esm2020/lib/compose/compose.pane.component.mjs +7 -4
- package/esm2020/lib/compose/document.component.mjs +9 -11
- package/esm2020/lib/compose/form-ref.mjs +6 -7
- package/esm2020/lib/compose/form.component.mjs +2 -2
- package/esm2020/lib/compose/new-menu.component.mjs +3 -3
- package/esm2020/lib/compose/version-compare/version-compare.component.mjs +6 -8
- package/esm2020/lib/core/models.mjs +1 -1
- package/esm2020/lib/core/slots/slots.component.mjs +14 -16
- package/esm2020/lib/core/translations.mjs +4 -4
- package/esm2020/lib/cube/accum/accum.component.mjs +18 -8
- package/esm2020/lib/cube/chart/chart.component.mjs +18 -5
- package/esm2020/lib/cube/cube-view.component.mjs +9 -11
- package/esm2020/lib/cube/declarations.mjs +1 -1
- package/esm2020/lib/cube/grid/grid.component.mjs +21 -10
- package/esm2020/lib/cube/grid/spreadsheet.component.mjs +123 -117
- package/esm2020/lib/cube/matrix/table.component.mjs +4 -4
- package/esm2020/lib/cube/parallel/item.mjs +2 -1
- package/esm2020/lib/cube/pivot/pivot.component.mjs +7 -4
- package/esm2020/lib/cube/sum/sum.component.mjs +2 -2
- package/esm2020/lib/cube/view.pane.component.mjs +2 -2
- package/esm2020/lib/dashboard/cube/accum-cube.widget.mjs +2 -2
- package/esm2020/lib/dashboard/cube/cube-analysis.base.mjs +1 -1
- package/esm2020/lib/dashboard/cube/cube-chart.widget.mjs +2 -1
- package/esm2020/lib/home/search.service.mjs +8 -5
- package/esm2020/lib/modules/chart.module.mjs +6 -6
- package/esm2020/lib/modules/gantt.module.mjs +17 -0
- package/esm2020/lib/routes.desktop.mjs +8 -8
- package/esm2020/lib/routes.mobile.mjs +1 -1
- package/esm2020/lib/shared.module.mjs +9 -10
- package/esm2020/lib/views/cube/chart.component.mjs +1 -1
- package/esm2020/lib/views/cube/matrix.component.mjs +6 -6
- package/fesm2015/bizdoc-core.mjs +355 -247
- package/fesm2015/bizdoc-core.mjs.map +1 -1
- package/fesm2020/bizdoc-core.mjs +353 -247
- package/fesm2020/bizdoc-core.mjs.map +1 -1
- package/lib/admin/positions/positions.component.d.ts +3 -1
- package/lib/browse/browse-items.component.d.ts +2 -2
- package/lib/compose/attachments/preview/attachment-preview.component.d.ts +3 -1
- package/lib/compose/compose.pane.component.d.ts +1 -0
- package/lib/compose/document.component.d.ts +2 -4
- package/lib/compose/form-ref.d.ts +1 -3
- package/lib/compose/version-compare/version-compare.component.d.ts +2 -4
- package/lib/core/models.d.ts +2 -2
- package/lib/core/slots/slots.component.d.ts +1 -2
- package/lib/cube/accum/accum.component.d.ts +2 -1
- package/lib/cube/chart/chart.component.d.ts +5 -3
- package/lib/cube/cube-view.component.d.ts +3 -2
- package/lib/cube/declarations.d.ts +2 -0
- package/lib/cube/grid/grid.component.d.ts +10 -7
- package/lib/cube/grid/spreadsheet.component.d.ts +11 -4
- package/lib/cube/matrix/table.component.d.ts +1 -1
- package/lib/cube/parallel/item.d.ts +2 -2
- package/lib/cube/pivot/pivot.component.d.ts +1 -1
- package/lib/cube/sum/sum.component.d.ts +1 -1
- package/lib/dashboard/cube/accum-cube.widget.d.ts +2 -2
- package/lib/dashboard/cube/cube-analysis.base.d.ts +0 -4
- package/lib/modules/chart.module.d.ts +1 -1
- package/lib/modules/gantt.module.d.ts +7 -0
- package/lib/shared.module.d.ts +9 -10
- package/lib/views/cube/matrix.component.d.ts +2 -2
- package/package.json +1 -2
package/fesm2020/bizdoc-core.mjs
CHANGED
@@ -114,7 +114,7 @@ import * as i24 from '@angular/flex-layout/extended';
|
|
114
114
|
import * as i4$1 from '@ctrl/ngx-emoji-mart';
|
115
115
|
import { PickerModule } from '@ctrl/ngx-emoji-mart';
|
116
116
|
import * as i8$2 from '@syncfusion/ej2-angular-charts';
|
117
|
-
import { AccumulationChart, FunnelSeries, AccumulationDataLabel, AccumulationTooltip, AccumulationLegend, Export, PieSeries, ChartModule, AccumulationChartAllModule,
|
117
|
+
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';
|
118
118
|
import * as XLSX from 'xlsx';
|
119
119
|
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';
|
120
120
|
import * as i6$5 from '@syncfusion/ej2-angular-grids';
|
@@ -131,7 +131,7 @@ import { KanbanComponent, KanbanModule } from '@syncfusion/ej2-angular-kanban';
|
|
131
131
|
import { CircularGaugeModule, AnnotationsService, GaugeTooltipService, LegendService as LegendService$1, CircularGauge, Annotations, GaugeTooltip, CircularGaugeComponent, Legend as Legend$1 } from '@syncfusion/ej2-angular-circulargauge';
|
132
132
|
import { PivotViewModule, ExcelExportService as ExcelExportService$1, GroupingBarService, NumberFormattingService, GroupingService, PivotChartService, ConditionalFormattingService, PivotView as PivotView$1, ExcelExport as ExcelExport$2, PivotViewComponent } from '@syncfusion/ej2-angular-pivotview';
|
133
133
|
import * as i7$6 from '@syncfusion/ej2-angular-gantt';
|
134
|
-
import { Gantt, SelectionService as SelectionService$3, DayMarkersService
|
134
|
+
import { GanttModule, Gantt, SelectionService as SelectionService$3, DayMarkersService } from '@syncfusion/ej2-angular-gantt';
|
135
135
|
import { __decorate } from 'tslib';
|
136
136
|
import player from 'lottie-web/build/player/lottie';
|
137
137
|
|
@@ -795,6 +795,9 @@ function getParameterByName(name, url = window.location.href) {
|
|
795
795
|
return decodeURIComponent(results[2].replace(/\+/g, ' '));
|
796
796
|
}
|
797
797
|
|
798
|
+
class AuthenticationImpl {
|
799
|
+
}
|
800
|
+
|
798
801
|
class PopupRef {
|
799
802
|
constructor(_data) {
|
800
803
|
this._data = _data;
|
@@ -911,9 +914,6 @@ class FirebaseService {
|
|
911
914
|
}
|
912
915
|
}
|
913
916
|
|
914
|
-
class AuthenticationImpl {
|
915
|
-
}
|
916
|
-
|
917
917
|
/** Listen to hub contracts */
|
918
918
|
class HubService {
|
919
919
|
constructor(_auth) {
|
@@ -1703,8 +1703,8 @@ const STRINGS = {
|
|
1703
1703
|
MailVersionUpdate: '#{0} updated by {1}',
|
1704
1704
|
NewComment: 'Someone commented...',
|
1705
1705
|
Commented: '{0} commented',
|
1706
|
-
DeleteFile: 'Delete
|
1707
|
-
DeleteFileAsk: 'Are you sure you want to delete this
|
1706
|
+
DeleteFile: 'Delete Attachment',
|
1707
|
+
DeleteFileAsk: 'Are you sure you want to delete this attachment?',
|
1708
1708
|
DeleteCommentAsk: 'Are you sure you want to delete this comment?',
|
1709
1709
|
GrantAccess: 'Grant Access',
|
1710
1710
|
GrantTip: 'May sign in on your behalf, view and take action',
|
@@ -1810,7 +1810,7 @@ const STRINGS = {
|
|
1810
1810
|
Form: 'Form',
|
1811
1811
|
ActionAsk: 'Are you sure you want to {0}?',
|
1812
1812
|
Discard: 'Discard',
|
1813
|
-
DiscardAsk: 'Are you sure you want to permenently discard
|
1813
|
+
DiscardAsk: 'Are you sure you want to permenently discard this document?',
|
1814
1814
|
DiscardSelected: 'Discard {0} item(s)',
|
1815
1815
|
TypeHere: 'Type here',
|
1816
1816
|
ChatHere: 'Chat here',
|
@@ -2688,16 +2688,17 @@ const IMAGE_TYPE = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif'];
|
|
2688
2688
|
function isImage(contentType) {
|
2689
2689
|
return IMAGE_TYPE.indexOf(contentType) > -1;
|
2690
2690
|
}
|
2691
|
-
function formatUrl(documentId, fileId) {
|
2692
|
-
return `/api/mailbox/download/${documentId}?fileId=${fileId}`;
|
2691
|
+
function formatUrl(documentId, fileId, token) {
|
2692
|
+
return `/api/mailbox/download/${documentId}?fileId=${fileId}&access_token=${token}`;
|
2693
2693
|
}
|
2694
2694
|
const ANIMATION_TIMINGS = '400ms cubic-bezier(0.25, 0.8, 0.25, 1)';
|
2695
2695
|
/** attachment-preview component*/
|
2696
2696
|
class AttachmentPreview {
|
2697
2697
|
/** attachment-preview ctor */
|
2698
|
-
constructor(_directionality, _renderer, data, sanitizer, _overlayRef) {
|
2698
|
+
constructor(_directionality, _renderer, data, sanitizer, _auth, _overlayRef) {
|
2699
2699
|
this._renderer = _renderer;
|
2700
2700
|
this.data = data;
|
2701
|
+
this._auth = _auth;
|
2701
2702
|
this._overlayRef = _overlayRef;
|
2702
2703
|
this.loading = true;
|
2703
2704
|
this.animationState = 'enter';
|
@@ -2727,7 +2728,7 @@ class AttachmentPreview {
|
|
2727
2728
|
location.assign(this._url());
|
2728
2729
|
}
|
2729
2730
|
_url() {
|
2730
|
-
return formatUrl(this.data.documentId, this.data.file.id);
|
2731
|
+
return formatUrl(this.data.documentId, this.data.file.id, this._auth.getAccessToken());
|
2731
2732
|
}
|
2732
2733
|
rotate() {
|
2733
2734
|
const elem = (this.isImage ? this.img : this.obj).nativeElement;
|
@@ -2769,7 +2770,7 @@ class AttachmentPreview {
|
|
2769
2770
|
this.animationState = 'leave';
|
2770
2771
|
}
|
2771
2772
|
}
|
2772
|
-
AttachmentPreview.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AttachmentPreview, deps: [{ token: i7.Directionality }, { token: i0.Renderer2 }, { token: FILE_PREVIEW_DIALOG_DATA }, { token: i1$2.DomSanitizer }, { token: i1$1.OverlayRef }], target: i0.ɵɵFactoryTarget.Component });
|
2773
|
+
AttachmentPreview.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AttachmentPreview, deps: [{ token: i7.Directionality }, { token: i0.Renderer2 }, { token: FILE_PREVIEW_DIALOG_DATA }, { token: i1$2.DomSanitizer }, { token: AuthenticationImpl }, { token: i1$1.OverlayRef }], target: i0.ɵɵFactoryTarget.Component });
|
2773
2774
|
AttachmentPreview.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: AttachmentPreview, selector: "bizdoc-attachment-preview", host: { listeners: { "document:resize": "resize()", "document:keydown.escape": "close()" } }, viewQueries: [{ propertyName: "obj", first: true, predicate: ["obj"], descendants: true }, { propertyName: "img", first: true, predicate: ["img"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"overlay-content\" [@slideContent]=\"animationState\" (@slideContent.start)=\"onAnimationStart($event)\"\r\n [dir]=\"dir\" (@slideContent.done)=\"onAnimationDone($event)\">\r\n <div class=\"toolbar-wrapper\" fxLayout=\"row\" [@slideDown]=\"slideDown\" *ngIf=\"!loading\">\r\n <button mat-icon-button (click)=\"close()\" bizdocTooltip=\"{{'Back' | translate}}\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <span class=\"mat-body-1\">{{data.file.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"rotate()\" bizdocTooltip=\"{{'Rotate' | translate }}\"><mat-icon>screen_rotation</mat-icon></button>\r\n <button mat-icon-button (click)=\"download()\" bizdocTooltip=\"{{'Download' | translate}}\"><mat-icon>save_alt</mat-icon></button>\r\n </div>\r\n <div class=\"spinner-wrapper\" *ngIf=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n <object (load)=\"onLoad($event)\" [data]=\"objectData\" [type]=\"data.file.contentType\" *ngIf=\"!isImage\" #obj></object>\r\n <img *ngIf=\"isImage\" (load)=\"onLoad($event)\" [style.opacity]=\"loading ? 0 : 1\" [@fade]=\"loading ? 'fadeOut' : 'fadeIn'\" [src]=\"objectData\" #img>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;align-items:center}.spinner-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}img{width:100%;max-width:500px;height:auto}.overlay-content{padding:1em}.overlay-content .toolbar-wrapper{align-items:center;color:#f5f5f5}.divider{flex:1 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: i10.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i7.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i10$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }], pipes: { "translate": TranslatePipe }, animations: [
|
2774
2775
|
trigger('fade', [
|
2775
2776
|
state('fadeOut', style({ opacity: 0 })),
|
@@ -2813,7 +2814,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
2813
2814
|
}], ctorParameters: function () { return [{ type: i7.Directionality }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
|
2814
2815
|
type: Inject,
|
2815
2816
|
args: [FILE_PREVIEW_DIALOG_DATA]
|
2816
|
-
}] }, { type: i1$2.DomSanitizer }, { type: i1$1.OverlayRef }]; }, propDecorators: { obj: [{
|
2817
|
+
}] }, { type: i1$2.DomSanitizer }, { type: AuthenticationImpl }, { type: i1$1.OverlayRef }]; }, propDecorators: { obj: [{
|
2817
2818
|
type: ViewChild,
|
2818
2819
|
args: ['obj', { static: false }]
|
2819
2820
|
}], img: [{
|
@@ -5954,12 +5955,9 @@ class BrowseFilterComponent {
|
|
5954
5955
|
const folder = this._session.profile.folders.find(f => f.name === this.folderId);
|
5955
5956
|
if (folder.filters)
|
5956
5957
|
this.filters = folder.filters;
|
5957
|
-
|
5958
|
-
const { axes, cube } = this._config.folders;
|
5959
|
-
this.filters = { axes, cube };
|
5960
|
-
}
|
5958
|
+
return;
|
5961
5959
|
}
|
5962
|
-
|
5960
|
+
if (this._config.folders && this._config.folders.axes) {
|
5963
5961
|
const { axes, cube } = this._config.folders;
|
5964
5962
|
this.filters = { axes, cube };
|
5965
5963
|
}
|
@@ -6831,7 +6829,7 @@ class BrowseItemsComponent {
|
|
6831
6829
|
this._loading$.pipe(takeUntil(this._destroy), debounceTime$1(100)).
|
6832
6830
|
subscribe(e => this.loading = e);
|
6833
6831
|
}
|
6834
|
-
ngOnChanges(
|
6832
|
+
ngOnChanges(_) {
|
6835
6833
|
this.displayedColumns = this._columns();
|
6836
6834
|
this.refresh();
|
6837
6835
|
}
|
@@ -7022,7 +7020,7 @@ class BrowseItemsComponent {
|
|
7022
7020
|
}
|
7023
7021
|
}
|
7024
7022
|
/**
|
7025
|
-
* execute function per item
|
7023
|
+
* execute function per selected item
|
7026
7024
|
* @param fn
|
7027
7025
|
* @param error
|
7028
7026
|
*/
|
@@ -7069,6 +7067,11 @@ class BrowseItemsComponent {
|
|
7069
7067
|
const columns = ['select'];
|
7070
7068
|
if (this.folder && this.folder.columns)
|
7071
7069
|
this._appendcolumns(this.folder.columns, columns);
|
7070
|
+
else if (!this.folder) {
|
7071
|
+
const folder = this._session.profile.folders.find(f => f.name === 'fav');
|
7072
|
+
if (folder && folder.columns)
|
7073
|
+
this._appendcolumns(folder.columns, columns);
|
7074
|
+
}
|
7072
7075
|
else if (this._config.folders && this._config.folders.columns)
|
7073
7076
|
this._appendcolumns(this._config.folders.columns, columns);
|
7074
7077
|
else {
|
@@ -7092,7 +7095,11 @@ class BrowseItemsComponent {
|
|
7092
7095
|
}
|
7093
7096
|
sendAll(action, args) {
|
7094
7097
|
const params = queryParams(args);
|
7095
|
-
this._forEach(i => this._mailbox.send(i.id, i.version, i.formId, null, action, params).
|
7098
|
+
this._forEach(i => this._mailbox.send(i.id, i.version, i.formId, null, action, params).
|
7099
|
+
pipe(tap(() => {
|
7100
|
+
if (i.folderId !== this.folderId)
|
7101
|
+
this.dataSource.data.remove(i);
|
7102
|
+
})), 'SendErr').
|
7096
7103
|
subscribe(is => is.length > 1 ? this._sb.toast('SentMany', is.length.toString(), this._actionAdjective(action, true)) :
|
7097
7104
|
this._sb.toast('Sent', is[0].number, this._actionAdjective(action)));
|
7098
7105
|
}
|
@@ -8271,8 +8278,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
8271
8278
|
}] } });
|
8272
8279
|
|
8273
8280
|
class FormRef {
|
8274
|
-
constructor(_router) {
|
8275
|
-
this._router = _router;
|
8281
|
+
constructor( /*private _router: RouterImpl*/) {
|
8276
8282
|
this._saving = new Subject();
|
8277
8283
|
this._stateChange = new Subject();
|
8278
8284
|
this._modelChange = new Subject();
|
@@ -8301,10 +8307,10 @@ class FormRef {
|
|
8301
8307
|
* @param page
|
8302
8308
|
*/
|
8303
8309
|
navigate(page) {
|
8304
|
-
this._router.navigate([], {
|
8305
|
-
|
8306
|
-
|
8307
|
-
});
|
8310
|
+
//this._router.navigate([], {
|
8311
|
+
// queryParams: { page },
|
8312
|
+
// state: { paging: true }
|
8313
|
+
//});
|
8308
8314
|
this._navigating.next(page);
|
8309
8315
|
}
|
8310
8316
|
/** release events */
|
@@ -8773,7 +8779,7 @@ class ComposeFormComponent {
|
|
8773
8779
|
if (!this.form.template)
|
8774
8780
|
throw (`Form '${this.form.name}' model missing '[Template()]' attribute.`);
|
8775
8781
|
const factory = this._cf.resolve(this.form.template);
|
8776
|
-
this._formRef = new FormRef(
|
8782
|
+
this._formRef = new FormRef();
|
8777
8783
|
this._formRef._navigating.
|
8778
8784
|
subscribe(p => this.page = p);
|
8779
8785
|
this._formRef._stateChange.pipe(startWith()).
|
@@ -9119,7 +9125,7 @@ class ComposePaneComponent {
|
|
9119
9125
|
this._pane.icon = form.icon;
|
9120
9126
|
if (this.model.draft) {
|
9121
9127
|
this.mode = 'compose';
|
9122
|
-
//this._pane.expand();
|
9128
|
+
//setTimeout(()=>this._pane.expand());
|
9123
9129
|
}
|
9124
9130
|
else
|
9125
9131
|
this.mode = 'preview';
|
@@ -9157,6 +9163,9 @@ class ComposePaneComponent {
|
|
9157
9163
|
});
|
9158
9164
|
this._pane.fullscreenChange.subscribe(f => this.expendable = !f);
|
9159
9165
|
}
|
9166
|
+
close() {
|
9167
|
+
this._pane.close();
|
9168
|
+
}
|
9160
9169
|
edit() {
|
9161
9170
|
this.mode = 'compose';
|
9162
9171
|
this.expendable && this.expand();
|
@@ -9243,12 +9252,12 @@ class ComposePaneComponent {
|
|
9243
9252
|
}
|
9244
9253
|
}
|
9245
9254
|
ComposePaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ComposePaneComponent, deps: [{ token: SessionService }, { token: MailboxService }, { token: PaneRef }, { token: PanesRouter }], target: i0.ɵɵFactoryTarget.Component });
|
9246
|
-
ComposePaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: ComposePaneComponent, selector: "bizdoc-compose.pane", host: { listeners: { "document:drop": "handleDocumentDrop($event)", "drop": "handleDrop($event)", "dragenter": "handleEnter($event)", "dragleave": "handleLeave($event)", "dragover": "handleOver($event)", "document:keydown": "handleKeydown($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "form", first: true, predicate: ComposeFormComponent, descendants: true, static: true }, { propertyName: "dropableElement", first: true, predicate: ["dropable"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button color=\"primary\" (click)=\"form.back()\" [bizdocTooltip]=\"'Back'|translate\" *ngIf=\"form.page !== undefined\" tabindex=\"1\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon>\r\n </button>\r\n <button mat-stroked-button color=\"primary\" *ngIf=\"model.draft\" data-help=\"submit\"\r\n (click)=\"submit()\" [disabled]=\"!valid||working\">\r\n <span>{{'Submit' | translate}}</span>\r\n </button>\r\n <button mat-stroked-button color=\"primary\" *ngIf=\"model.actions?.length === 1\" [attr.data-help]=\"'action-'+form.actions[0].name\" (click)=\"send(model.actions[0])\" [disabled]=\"!valid||working\">\r\n <span>{{form.actions[0].title}}</span>\r\n </button>\r\n <button mat-stroked-button data-help=\"send\" color=\"primary\" *ngIf=\"model.actions?.length > 1\" [matMenuTriggerFor]=\"actionMenu\" [disabled]=\"!valid||working\" [bizdocTooltip]=\"'Send' | translate\">\r\n <span>{{'Send' | translate}}</span>\r\n </button>\r\n <!-- action -->\r\n <mat-menu #actionMenu>\r\n <ng-template matMenuContent>\r\n <ng-container *ngFor=\"let a of form.actions; let i = index\">\r\n <mat-divider *ngIf=\"i > 0 && form.actions[i - 1].group !== a.group\"></mat-divider>\r\n <button mat-menu-item (click)=\"send(a.name)\">{{a.title}}</button>\r\n </ng-container>\r\n </ng-template>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"save()\" data-help=\"save\" [disabled]=\"!dirty||working\" [bizdocTooltip]=\"'Save'|translate\" *ngIf=\"mode === 'compose'\">\r\n <mat-icon>save</mat-icon>\r\n </button>\r\n <button mat-icon-button data-help=\"tag\" (click)=\"form.tag($event)\" [bizdocTooltip]=\"'Tags' | translate\" [disabled]=\"working\"><mat-icon class=\"filled\">{{model.tags && model.tags.length ?'bookmark':'bookmark_border'}}</mat-icon></button>\r\n <button mat-icon-button data-help=\"flag\" [bizdocTooltip]=\"'Flagged'| translate\" [disabled]=\"working\" (click)=\"form.flag()\"><mat-icon [class.document-flag]=\"model.flag\">{{model.flag ? 'star' : 'star_border'}}</mat-icon></button>\r\n <button mat-icon-button (click)=\"form.attach()\" data-help=\"attach\" [bizdocTooltip]=\"'AttachFile' | translate\" [disabled]=\"working\"><mat-icon>attach_file</mat-icon></button>\r\n <button mat-icon-button [disabled]=\"working\" data-help=\"edit\" (click)=\"edit()\" [bizdocTooltip]=\"'Edit' | translate\" *ngIf=\"mode !== 'compose' && model.pending && !model.completed\"><mat-icon>create</mat-icon></button>\r\n <
|
9255
|
+
ComposePaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: ComposePaneComponent, selector: "bizdoc-compose.pane", host: { listeners: { "document:drop": "handleDocumentDrop($event)", "drop": "handleDrop($event)", "dragenter": "handleEnter($event)", "dragleave": "handleLeave($event)", "dragover": "handleOver($event)", "document:keydown": "handleKeydown($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "form", first: true, predicate: ComposeFormComponent, descendants: true, static: true }, { propertyName: "dropableElement", first: true, predicate: ["dropable"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button color=\"primary\" (click)=\"form.back()\" [bizdocTooltip]=\"'Back'|translate\" *ngIf=\"form.page !== undefined\" tabindex=\"1\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon>\r\n </button>\r\n <button mat-stroked-button color=\"primary\" *ngIf=\"model.draft\" data-help=\"submit\"\r\n (click)=\"submit()\" [disabled]=\"!valid||working\">\r\n <span>{{'Submit' | translate}}</span>\r\n </button>\r\n <button mat-stroked-button color=\"primary\" *ngIf=\"model.actions?.length === 1\" [attr.data-help]=\"'action-'+form.actions[0].name\" (click)=\"send(model.actions[0])\" [disabled]=\"!valid||working\">\r\n <span>{{form.actions[0].title}}</span>\r\n </button>\r\n <button mat-stroked-button data-help=\"send\" color=\"primary\" *ngIf=\"model.actions?.length > 1\" [matMenuTriggerFor]=\"actionMenu\" [disabled]=\"!valid||working\" [bizdocTooltip]=\"'Send' | translate\">\r\n <span>{{'Send' | translate}}</span>\r\n </button>\r\n <!-- action -->\r\n <mat-menu #actionMenu>\r\n <ng-template matMenuContent>\r\n <ng-container *ngFor=\"let a of form.actions; let i = index\">\r\n <mat-divider *ngIf=\"i > 0 && form.actions[i - 1].group !== a.group\"></mat-divider>\r\n <button mat-menu-item (click)=\"send(a.name)\">{{a.title}}</button>\r\n </ng-container>\r\n </ng-template>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"save()\" data-help=\"save\" [disabled]=\"!dirty||working\" [bizdocTooltip]=\"'Save'|translate\" *ngIf=\"mode === 'compose'\">\r\n <mat-icon>save</mat-icon>\r\n </button>\r\n <button mat-icon-button data-help=\"tag\" (click)=\"form.tag($event)\" [bizdocTooltip]=\"'Tags' | translate\" [disabled]=\"working\"><mat-icon class=\"filled\">{{model.tags && model.tags.length ?'bookmark':'bookmark_border'}}</mat-icon></button>\r\n <button mat-icon-button data-help=\"flag\" [bizdocTooltip]=\"'Flagged'| translate\" [disabled]=\"working\" (click)=\"form.flag()\"><mat-icon [class.document-flag]=\"model.flag\">{{model.flag ? 'star' : 'star_border'}}</mat-icon></button>\r\n <button mat-icon-button (click)=\"form.attach()\" data-help=\"attach\" [bizdocTooltip]=\"'AttachFile' | translate\" [disabled]=\"working\"><mat-icon>attach_file</mat-icon></button>\r\n <button mat-icon-button [disabled]=\"working\" data-help=\"edit\" (click)=\"edit()\" [bizdocTooltip]=\"'Edit' | translate\" *ngIf=\"mode !== 'compose' && model.pending && !model.completed\"><mat-icon>create</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"navTrace()\" [bizdocTooltip]=\"'Trace' | translate\" tabindex=\"1\"><mat-icon>timeline</mat-icon></button>\r\n <button mat-icon-button (click)=\"navComments()\" data-help=\"comments\" [bizdocTooltip]=\"'Comments' | translate\" [matBadge]=\"newCommentsCount\" [matBadgeHidden]=\"!newCommentsCount\" matBadgeColor=\"accent\">\r\n <mat-icon [class.filled]=\"model.comments.length > 0\">format_quote</mat-icon>\r\n </button>\r\n <button mat-icon-button (click)=\"view()\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\"><mat-icon>data_usage</mat-icon></button>\r\n <button mat-icon-button [matMenuTriggerFor]=\"optionsMenu\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\"><mat-icon>more_vert</mat-icon></button>\r\n <button mat-icon-button (click)=\"expand()\" [bizdocTooltip]=\"'Expand' | translate\" *ngIf=\"expendable\" [attr.aria-label]=\"'Expand' | translate\"><mat-icon>open_in_new</mat-icon></button>\r\n <mat-menu #optionsMenu=\"matMenu\">\r\n <ng-template matMenuContent>\r\n <button mat-menu-item (click)=\"form.copy()\" [disabled]=\"working\">\r\n <!--<mat-icon>content_copy</mat-icon>-->\r\n <span>{{'Copy' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"discard()\" *ngIf=\"model.draft && !model.issued\" [disabled]=\"working\">\r\n <!--<mat-icon>delete_outlined</mat-icon>-->\r\n <span>{{'Discard' | translate}}</span>\r\n </button>\r\n <ng-container *ngIf=\"form.help\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"form.guide(form.help)\">\r\n <!--<mat-icon>help_outline</mat-icon>-->\r\n <span>{{'Help' | translate}}</span>\r\n </button>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"close()\"><!--<mat-icon></mat-icon>--><span>{{'Close'| translate}}</span></button>\r\n </ng-template>\r\n </mat-menu>\r\n</mat-toolbar>\r\n<div class=\"file-dropable\" #dropable>\r\n <bizdoc-form [model]=model #form\r\n (modelChange)=\"change()\"\r\n (validChange)=\"valid=$event\"\r\n (workingChange)=\"working=$event\"\r\n (dirtyChange)=\"dirty=$event\" [mode]=\"mode\"></bizdoc-form>\r\n</div>\r\n", styles: [".nav-toolbar{position:sticky;top:0;z-index:1}.file-dropable.drag{opacity:.5;overflow:hidden;margin:8px;border-style:dashed;border-color:#777;border-width:5px;background-color:#f5f5f5;z-index:2;top:0;left:0;right:0;bottom:0}\n"], components: [{ type: i7$4.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: i7$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i12.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i8$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: ComposeFormComponent, selector: "bizdoc-form", inputs: ["model", "working", "dirty", "valid", "mode", "contacts"], outputs: ["modelChange", "workingChange", "dirtyChange", "validChange"] }], 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: i8$1.MatMenuContent, selector: "ng-template[matMenuContent]" }, { type: i10$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }], pipes: { "translate": TranslatePipe } });
|
9247
9256
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ComposePaneComponent, decorators: [{
|
9248
9257
|
type: Component,
|
9249
9258
|
args: [{ selector: 'bizdoc-compose.pane', host: {
|
9250
9259
|
class: 'pane'
|
9251
|
-
}, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button color=\"primary\" (click)=\"form.back()\" [bizdocTooltip]=\"'Back'|translate\" *ngIf=\"form.page !== undefined\" tabindex=\"1\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon>\r\n </button>\r\n <button mat-stroked-button color=\"primary\" *ngIf=\"model.draft\" data-help=\"submit\"\r\n (click)=\"submit()\" [disabled]=\"!valid||working\">\r\n <span>{{'Submit' | translate}}</span>\r\n </button>\r\n <button mat-stroked-button color=\"primary\" *ngIf=\"model.actions?.length === 1\" [attr.data-help]=\"'action-'+form.actions[0].name\" (click)=\"send(model.actions[0])\" [disabled]=\"!valid||working\">\r\n <span>{{form.actions[0].title}}</span>\r\n </button>\r\n <button mat-stroked-button data-help=\"send\" color=\"primary\" *ngIf=\"model.actions?.length > 1\" [matMenuTriggerFor]=\"actionMenu\" [disabled]=\"!valid||working\" [bizdocTooltip]=\"'Send' | translate\">\r\n <span>{{'Send' | translate}}</span>\r\n </button>\r\n <!-- action -->\r\n <mat-menu #actionMenu>\r\n <ng-template matMenuContent>\r\n <ng-container *ngFor=\"let a of form.actions; let i = index\">\r\n <mat-divider *ngIf=\"i > 0 && form.actions[i - 1].group !== a.group\"></mat-divider>\r\n <button mat-menu-item (click)=\"send(a.name)\">{{a.title}}</button>\r\n </ng-container>\r\n </ng-template>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"save()\" data-help=\"save\" [disabled]=\"!dirty||working\" [bizdocTooltip]=\"'Save'|translate\" *ngIf=\"mode === 'compose'\">\r\n <mat-icon>save</mat-icon>\r\n </button>\r\n <button mat-icon-button data-help=\"tag\" (click)=\"form.tag($event)\" [bizdocTooltip]=\"'Tags' | translate\" [disabled]=\"working\"><mat-icon class=\"filled\">{{model.tags && model.tags.length ?'bookmark':'bookmark_border'}}</mat-icon></button>\r\n <button mat-icon-button data-help=\"flag\" [bizdocTooltip]=\"'Flagged'| translate\" [disabled]=\"working\" (click)=\"form.flag()\"><mat-icon [class.document-flag]=\"model.flag\">{{model.flag ? 'star' : 'star_border'}}</mat-icon></button>\r\n <button mat-icon-button (click)=\"form.attach()\" data-help=\"attach\" [bizdocTooltip]=\"'AttachFile' | translate\" [disabled]=\"working\"><mat-icon>attach_file</mat-icon></button>\r\n <button mat-icon-button [disabled]=\"working\" data-help=\"edit\" (click)=\"edit()\" [bizdocTooltip]=\"'Edit' | translate\" *ngIf=\"mode !== 'compose' && model.pending && !model.completed\"><mat-icon>create</mat-icon></button>\r\n <
|
9260
|
+
}, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button color=\"primary\" (click)=\"form.back()\" [bizdocTooltip]=\"'Back'|translate\" *ngIf=\"form.page !== undefined\" tabindex=\"1\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon>\r\n </button>\r\n <button mat-stroked-button color=\"primary\" *ngIf=\"model.draft\" data-help=\"submit\"\r\n (click)=\"submit()\" [disabled]=\"!valid||working\">\r\n <span>{{'Submit' | translate}}</span>\r\n </button>\r\n <button mat-stroked-button color=\"primary\" *ngIf=\"model.actions?.length === 1\" [attr.data-help]=\"'action-'+form.actions[0].name\" (click)=\"send(model.actions[0])\" [disabled]=\"!valid||working\">\r\n <span>{{form.actions[0].title}}</span>\r\n </button>\r\n <button mat-stroked-button data-help=\"send\" color=\"primary\" *ngIf=\"model.actions?.length > 1\" [matMenuTriggerFor]=\"actionMenu\" [disabled]=\"!valid||working\" [bizdocTooltip]=\"'Send' | translate\">\r\n <span>{{'Send' | translate}}</span>\r\n </button>\r\n <!-- action -->\r\n <mat-menu #actionMenu>\r\n <ng-template matMenuContent>\r\n <ng-container *ngFor=\"let a of form.actions; let i = index\">\r\n <mat-divider *ngIf=\"i > 0 && form.actions[i - 1].group !== a.group\"></mat-divider>\r\n <button mat-menu-item (click)=\"send(a.name)\">{{a.title}}</button>\r\n </ng-container>\r\n </ng-template>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"save()\" data-help=\"save\" [disabled]=\"!dirty||working\" [bizdocTooltip]=\"'Save'|translate\" *ngIf=\"mode === 'compose'\">\r\n <mat-icon>save</mat-icon>\r\n </button>\r\n <button mat-icon-button data-help=\"tag\" (click)=\"form.tag($event)\" [bizdocTooltip]=\"'Tags' | translate\" [disabled]=\"working\"><mat-icon class=\"filled\">{{model.tags && model.tags.length ?'bookmark':'bookmark_border'}}</mat-icon></button>\r\n <button mat-icon-button data-help=\"flag\" [bizdocTooltip]=\"'Flagged'| translate\" [disabled]=\"working\" (click)=\"form.flag()\"><mat-icon [class.document-flag]=\"model.flag\">{{model.flag ? 'star' : 'star_border'}}</mat-icon></button>\r\n <button mat-icon-button (click)=\"form.attach()\" data-help=\"attach\" [bizdocTooltip]=\"'AttachFile' | translate\" [disabled]=\"working\"><mat-icon>attach_file</mat-icon></button>\r\n <button mat-icon-button [disabled]=\"working\" data-help=\"edit\" (click)=\"edit()\" [bizdocTooltip]=\"'Edit' | translate\" *ngIf=\"mode !== 'compose' && model.pending && !model.completed\"><mat-icon>create</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"navTrace()\" [bizdocTooltip]=\"'Trace' | translate\" tabindex=\"1\"><mat-icon>timeline</mat-icon></button>\r\n <button mat-icon-button (click)=\"navComments()\" data-help=\"comments\" [bizdocTooltip]=\"'Comments' | translate\" [matBadge]=\"newCommentsCount\" [matBadgeHidden]=\"!newCommentsCount\" matBadgeColor=\"accent\">\r\n <mat-icon [class.filled]=\"model.comments.length > 0\">format_quote</mat-icon>\r\n </button>\r\n <button mat-icon-button (click)=\"view()\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\"><mat-icon>data_usage</mat-icon></button>\r\n <button mat-icon-button [matMenuTriggerFor]=\"optionsMenu\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\"><mat-icon>more_vert</mat-icon></button>\r\n <button mat-icon-button (click)=\"expand()\" [bizdocTooltip]=\"'Expand' | translate\" *ngIf=\"expendable\" [attr.aria-label]=\"'Expand' | translate\"><mat-icon>open_in_new</mat-icon></button>\r\n <mat-menu #optionsMenu=\"matMenu\">\r\n <ng-template matMenuContent>\r\n <button mat-menu-item (click)=\"form.copy()\" [disabled]=\"working\">\r\n <!--<mat-icon>content_copy</mat-icon>-->\r\n <span>{{'Copy' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"discard()\" *ngIf=\"model.draft && !model.issued\" [disabled]=\"working\">\r\n <!--<mat-icon>delete_outlined</mat-icon>-->\r\n <span>{{'Discard' | translate}}</span>\r\n </button>\r\n <ng-container *ngIf=\"form.help\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"form.guide(form.help)\">\r\n <!--<mat-icon>help_outline</mat-icon>-->\r\n <span>{{'Help' | translate}}</span>\r\n </button>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"close()\"><!--<mat-icon></mat-icon>--><span>{{'Close'| translate}}</span></button>\r\n </ng-template>\r\n </mat-menu>\r\n</mat-toolbar>\r\n<div class=\"file-dropable\" #dropable>\r\n <bizdoc-form [model]=model #form\r\n (modelChange)=\"change()\"\r\n (validChange)=\"valid=$event\"\r\n (workingChange)=\"working=$event\"\r\n (dirtyChange)=\"dirty=$event\" [mode]=\"mode\"></bizdoc-form>\r\n</div>\r\n", styles: [".nav-toolbar{position:sticky;top:0;z-index:1}.file-dropable.drag{opacity:.5;overflow:hidden;margin:8px;border-style:dashed;border-color:#777;border-width:5px;background-color:#f5f5f5;z-index:2;top:0;left:0;right:0;bottom:0}\n"] }]
|
9252
9261
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: MailboxService }, { type: PaneRef }, { type: PanesRouter }]; }, propDecorators: { form: [{
|
9253
9262
|
type: ViewChild,
|
9254
9263
|
args: [ComposeFormComponent, { static: true }]
|
@@ -9300,6 +9309,8 @@ class BrowsePaneComponent {
|
|
9300
9309
|
this.filterType = p['type'];
|
9301
9310
|
if (this.filterType === 'flagged')
|
9302
9311
|
this._pane.title = this._translate.get('Flagged');
|
9312
|
+
else if (p['tag'])
|
9313
|
+
this._pane.title = this._translate.get('Tags');
|
9303
9314
|
this.filters = p;
|
9304
9315
|
});
|
9305
9316
|
const events = this._router.events.pipe(takeUntil(this._destroy));
|
@@ -9452,6 +9463,7 @@ class CubeAccumulationChartComponent {
|
|
9452
9463
|
this.endAngle = 360;
|
9453
9464
|
this.innerRadius = '0';
|
9454
9465
|
}
|
9466
|
+
this.execute();
|
9455
9467
|
}
|
9456
9468
|
textRender(e) {
|
9457
9469
|
e.text = e.point.x;
|
@@ -9474,10 +9486,13 @@ class CubeAccumulationChartComponent {
|
|
9474
9486
|
*
|
9475
9487
|
*/
|
9476
9488
|
ngOnChanges(changes) {
|
9477
|
-
if (changes['filters'])
|
9489
|
+
if (changes['filters'] && !changes['filters'].firstChange)
|
9478
9490
|
this.execute();
|
9479
9491
|
else if (changes['height'])
|
9480
|
-
this.
|
9492
|
+
this.resize();
|
9493
|
+
}
|
9494
|
+
resize() {
|
9495
|
+
this.accumchart && this.accumchart.accumulationResize();
|
9481
9496
|
}
|
9482
9497
|
execute() {
|
9483
9498
|
this.loadingChange.emit(true);
|
@@ -9507,11 +9522,17 @@ class CubeAccumulationChartComponent {
|
|
9507
9522
|
height: this.height,
|
9508
9523
|
currencyCode: this.currencyCode,
|
9509
9524
|
series: [{
|
9510
|
-
dataSource: this.dataSource,
|
9511
|
-
|
9512
|
-
|
9513
|
-
|
9514
|
-
|
9525
|
+
dataSource: this.dataSource,
|
9526
|
+
xName: 'name',
|
9527
|
+
yName: 'y',
|
9528
|
+
startAngle: this.startAngle,
|
9529
|
+
endAngle: this.endAngle,
|
9530
|
+
radius: "70%",
|
9531
|
+
dataLabel: this.dataLabel,
|
9532
|
+
explode: true,
|
9533
|
+
explodeOffset: '10%',
|
9534
|
+
explodeIndex: 0,
|
9535
|
+
innerRadius: this.innerRadius,
|
9515
9536
|
palettes: this.palettes
|
9516
9537
|
}]
|
9517
9538
|
}, this._elementRef.nativeElement);
|
@@ -9613,6 +9634,8 @@ class CubeChartComponent {
|
|
9613
9634
|
};
|
9614
9635
|
this.tooltip = {
|
9615
9636
|
enable: true,
|
9637
|
+
enableAnimation: false,
|
9638
|
+
border: { width: 0 },
|
9616
9639
|
textStyle: {
|
9617
9640
|
fontFamily: FONT_FAMILY
|
9618
9641
|
}
|
@@ -9643,26 +9666,35 @@ class CubeChartComponent {
|
|
9643
9666
|
set series(value) {
|
9644
9667
|
if (value)
|
9645
9668
|
this._series = isArray(value) ? value : [value];
|
9669
|
+
else
|
9670
|
+
this._series = null;
|
9646
9671
|
}
|
9647
9672
|
get indices() {
|
9648
9673
|
return this._indices;
|
9649
9674
|
}
|
9650
9675
|
set indices(value) {
|
9651
|
-
|
9676
|
+
if (value)
|
9677
|
+
this._indices = isArray(value) ? value : [value];
|
9678
|
+
else
|
9679
|
+
this._indices = null;
|
9652
9680
|
}
|
9653
9681
|
ngOnInit() {
|
9654
9682
|
if (this.chartType === 'Line' || this.chartType === 'Spline')
|
9655
9683
|
this.crosshair.enable = true;
|
9656
9684
|
this.primaryYAxis.labelFormat = this.currencyCode ? 'c0' : 'n0';
|
9685
|
+
this.execute();
|
9657
9686
|
}
|
9658
9687
|
/**
|
9659
9688
|
*
|
9660
9689
|
*/
|
9661
9690
|
ngOnChanges(changes) {
|
9662
|
-
if (changes['filters'])
|
9691
|
+
if (changes['filters'] && !changes['filters'].firstChange)
|
9663
9692
|
this.execute();
|
9664
9693
|
else if (changes['height'])
|
9665
|
-
this.
|
9694
|
+
this.resize();
|
9695
|
+
}
|
9696
|
+
resize() {
|
9697
|
+
this.chart && this.chart.chartResize();
|
9666
9698
|
}
|
9667
9699
|
execute() {
|
9668
9700
|
this.loadingChange.emit(true);
|
@@ -9774,7 +9806,7 @@ class CubeChartComponent {
|
|
9774
9806
|
}
|
9775
9807
|
CubeChartComponent.nextId = 0;
|
9776
9808
|
CubeChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeChartComponent, deps: [{ token: CubeService }, { token: PromptService }, { token: TranslateService }, { token: SessionService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
9777
|
-
CubeChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: CubeChartComponent, selector: "bizdoc-cube-chart", inputs: { width: "width", height: "height", cube: "cube", xAxis: "xAxis", series: "series", indices: "indices", filters: "filters", chartType: "chartType", indexChartType: "indexChartType", scope: "scope", currencyCode: "currencyCode", loading: "loading" }, outputs: { explore: "explore", loadingChange: "loadingChange" }, host: { attributes: { "dir": "ltr" }, properties: { "id": "this.id" }, classAttribute: "cube-view" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true });
|
9809
|
+
CubeChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: CubeChartComponent, selector: "bizdoc-cube-chart", inputs: { width: "width", height: "height", cube: "cube", xAxis: "xAxis", series: "series", indices: "indices", filters: "filters", yAxis: "yAxis", chartType: "chartType", indexChartType: "indexChartType", scope: "scope", currencyCode: "currencyCode", loading: "loading" }, outputs: { explore: "explore", loadingChange: "loadingChange" }, host: { attributes: { "dir": "ltr" }, properties: { "id": "this.id" }, classAttribute: "cube-view" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true });
|
9778
9810
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeChartComponent, decorators: [{
|
9779
9811
|
type: Component,
|
9780
9812
|
args: [{
|
@@ -9799,6 +9831,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
9799
9831
|
type: Input
|
9800
9832
|
}], filters: [{
|
9801
9833
|
type: Input
|
9834
|
+
}], yAxis: [{
|
9835
|
+
type: Input
|
9802
9836
|
}], chartType: [{
|
9803
9837
|
type: Input
|
9804
9838
|
}], indexChartType: [{
|
@@ -9834,9 +9868,20 @@ class CubeGridComponent {
|
|
9834
9868
|
this._rows = [];
|
9835
9869
|
this._columns = [];
|
9836
9870
|
}
|
9871
|
+
set xAxis(val) {
|
9872
|
+
this._xAxis = isArray(val) ? val : [val];
|
9873
|
+
}
|
9874
|
+
set series(val) {
|
9875
|
+
if (val)
|
9876
|
+
this._series = isArray(val) ? val : [val];
|
9877
|
+
}
|
9878
|
+
set indices(val) {
|
9879
|
+
if (val)
|
9880
|
+
this._indices = isArray(val) ? val : [val];
|
9881
|
+
}
|
9837
9882
|
ngOnInit() {
|
9838
|
-
|
9839
|
-
const x =
|
9883
|
+
this._cube = this.cube ? this._session.profile.cubes.find(c => c.name === this.cube) : this._session.profile.cubes[0];
|
9884
|
+
const x = this._cube.axes.find(a => a.name === this._xAxis[0]), y = this._cube.axes.find(a => a.name === this._series[0]);
|
9840
9885
|
const promises = [];
|
9841
9886
|
// aquire columns source
|
9842
9887
|
let observe = this._ds.all(x.dataType).
|
@@ -9876,17 +9921,18 @@ class CubeGridComponent {
|
|
9876
9921
|
// prepare
|
9877
9922
|
this._prepare =
|
9878
9923
|
forkJoin(promises).toPromise();
|
9924
|
+
this.execute();
|
9879
9925
|
}
|
9880
9926
|
/** */
|
9881
9927
|
ngOnChanges(changes) {
|
9882
|
-
if (changes['filters'])
|
9928
|
+
if (changes['filters'] && !changes['filters'].firstChange)
|
9883
9929
|
this.execute();
|
9884
9930
|
else if (changes['height'])
|
9885
9931
|
this.resize();
|
9886
9932
|
}
|
9887
9933
|
execute() {
|
9888
9934
|
this.loadingChange.emit(true);
|
9889
|
-
this._service.series(this.
|
9935
|
+
this._service.series(this._cube.name, this._xAxis, { series: this._series, filters: this.filters, indices: this._indices }).
|
9890
9936
|
subscribe(series => {
|
9891
9937
|
this._prepare.then(() => {
|
9892
9938
|
const rows = [];
|
@@ -9957,9 +10003,9 @@ class CubeGridComponent {
|
|
9957
10003
|
if (data[`_${column}`] === 0)
|
9958
10004
|
return;
|
9959
10005
|
const axes = {};
|
9960
|
-
axes[this.
|
10006
|
+
axes[this._xAxis[0]] = column;
|
9961
10007
|
if (type !== 'Index')
|
9962
|
-
axes[this.
|
10008
|
+
axes[this._series[0]] = row;
|
9963
10009
|
this.explore.emit({ axes, index: type === 'Index' ? row : null });
|
9964
10010
|
}
|
9965
10011
|
customAggregate(_, column) {
|
@@ -9981,7 +10027,7 @@ class CubeGridComponent {
|
|
9981
10027
|
}
|
9982
10028
|
CubeGridComponent.nextId = 0;
|
9983
10029
|
CubeGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeGridComponent, deps: [{ token: SessionService }, { token: PromptService }, { token: DatasourceService }, { token: CubeService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
9984
|
-
CubeGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: CubeGridComponent, selector: "bizdoc-cube-grid", inputs: { width: "width", height: "height", cube: "cube", xAxis: "xAxis",
|
10030
|
+
CubeGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: CubeGridComponent, selector: "bizdoc-cube-grid", inputs: { width: "width", height: "height", cube: "cube", xAxis: "xAxis", series: "series", indices: "indices", filters: "filters", currencyCode: "currencyCode", loading: "loading" }, outputs: { explore: "explore", loadingChange: "loadingChange" }, host: { properties: { "id": "this.id" }, classAttribute: "cube-view" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, styles: [".nowrap{white-space:nowrap;word-wrap:normal}::ng-deep .e-rowcell:not(.e-headertext){cursor:pointer}::ng-deep .e-grid td.e-cellselectionbackground{background-color:none}\n"] });
|
9985
10031
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeGridComponent, decorators: [{
|
9986
10032
|
type: Component,
|
9987
10033
|
args: [{ selector: 'bizdoc-cube-grid', template: '', host: {
|
@@ -9995,8 +10041,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
9995
10041
|
type: Input
|
9996
10042
|
}], xAxis: [{
|
9997
10043
|
type: Input
|
9998
|
-
}], yAxis: [{
|
9999
|
-
type: Input
|
10000
10044
|
}], series: [{
|
10001
10045
|
type: Input
|
10002
10046
|
}], indices: [{
|
@@ -10120,6 +10164,8 @@ class CubePivotComponent {
|
|
10120
10164
|
}
|
10121
10165
|
},
|
10122
10166
|
tooltip: {
|
10167
|
+
enableAnimation: false,
|
10168
|
+
border: { width: 0 },
|
10123
10169
|
textStyle: {
|
10124
10170
|
fontFamily: FONT_FAMILY
|
10125
10171
|
}
|
@@ -10165,6 +10211,7 @@ class CubePivotComponent {
|
|
10165
10211
|
currency: this.currencyCode,
|
10166
10212
|
});
|
10167
10213
|
});
|
10214
|
+
this.execute();
|
10168
10215
|
}
|
10169
10216
|
_getIndexTitle(name) {
|
10170
10217
|
return this._cube.indices.find(i => i.name === name).title;
|
@@ -10177,7 +10224,7 @@ class CubePivotComponent {
|
|
10177
10224
|
*
|
10178
10225
|
*/
|
10179
10226
|
ngOnChanges(changes) {
|
10180
|
-
if (changes['filters'])
|
10227
|
+
if (changes['filters'] && !changes['filters'].firstChange)
|
10181
10228
|
this.execute();
|
10182
10229
|
else if (changes['height'] || changes['width'])
|
10183
10230
|
this.resize();
|
@@ -10200,7 +10247,7 @@ class CubePivotComponent {
|
|
10200
10247
|
// columns
|
10201
10248
|
const columns = xAxis2.concat(series2);
|
10202
10249
|
// query
|
10203
|
-
this._service.table(this.
|
10250
|
+
this._service.table(this._cube.name, columns, { filters: this.filters, indices: this.indices }).subscribe(r => {
|
10204
10251
|
this._presets(xAxis2, series2, r);
|
10205
10252
|
this._draw();
|
10206
10253
|
this.loadingChange.emit(false);
|
@@ -10362,9 +10409,9 @@ class CubePivotComponent {
|
|
10362
10409
|
}
|
10363
10410
|
}
|
10364
10411
|
ngOnDestroy() {
|
10412
|
+
this.pivot && this.pivot.destroy();
|
10365
10413
|
this._destroy.next();
|
10366
10414
|
this._destroy.complete();
|
10367
|
-
this.pivot && this.pivot.destroy();
|
10368
10415
|
}
|
10369
10416
|
}
|
10370
10417
|
CubePivotComponent.nextId = 0;
|
@@ -10425,6 +10472,8 @@ class CubeSpreadsheetComponent {
|
|
10425
10472
|
this.loadingChange = new EventEmitter();
|
10426
10473
|
this.id = `cube-spreadsheet-${CubeSpreadsheetComponent.nextId++}`;
|
10427
10474
|
this.dataSource = [];
|
10475
|
+
this.numberStyle = { textAlign: 'right' };
|
10476
|
+
this.autoFillSettings = { showFillOptions: false };
|
10428
10477
|
this._yrows = [];
|
10429
10478
|
this._xcolumns = [];
|
10430
10479
|
this._intl = new Internationalization();
|
@@ -10448,7 +10497,7 @@ class CubeSpreadsheetComponent {
|
|
10448
10497
|
maximumFractionDigits: this._service.fractionDigits,
|
10449
10498
|
minimumFractionDigits: this._service.fractionDigits
|
10450
10499
|
});
|
10451
|
-
this._cube = this._session.profile.cubes.find(c => c.name === this.cube);
|
10500
|
+
this._cube = this.cube ? this._session.profile.cubes.find(c => c.name === this.cube) : this._session.profile.cubes[0];
|
10452
10501
|
if (!this._series) {
|
10453
10502
|
this._axes = this._xAxis.map(c => this._cube.axes.find(a => a.name == c));
|
10454
10503
|
if (this._indices)
|
@@ -10486,52 +10535,27 @@ class CubeSpreadsheetComponent {
|
|
10486
10535
|
promises.push(observe);
|
10487
10536
|
this._prepare = Promise.all(promises);
|
10488
10537
|
}
|
10538
|
+
this.execute();
|
10489
10539
|
}
|
10490
10540
|
ngOnChanges(changes) {
|
10491
|
-
if (changes['filters'])
|
10541
|
+
if (changes['filters'] && !changes['filters'].firstChange)
|
10492
10542
|
this.execute();
|
10493
10543
|
else if (changes['height'] || changes['width'])
|
10494
|
-
|
10495
|
-
|
10496
|
-
|
10497
|
-
|
10498
|
-
|
10544
|
+
this.resize();
|
10545
|
+
}
|
10546
|
+
resize() {
|
10547
|
+
if (this.spreadsheet) {
|
10548
|
+
this.spreadsheet.height = this.height;
|
10549
|
+
this.spreadsheet.width = this.width;
|
10550
|
+
this.spreadsheet.resize();
|
10551
|
+
}
|
10499
10552
|
}
|
10500
10553
|
execute() {
|
10501
10554
|
this.loadingChange.emit(true);
|
10502
|
-
const numberStyle = { textAlign: 'right' };
|
10503
10555
|
if (!this._series)
|
10504
|
-
this._service.table(this.
|
10556
|
+
this._service.table(this._cube.name, this._xAxis, { filters: this.filters, indices: this._indices }).
|
10505
10557
|
subscribe(data => {
|
10506
|
-
|
10507
|
-
this._axes.forEach(c => cells.push({
|
10508
|
-
value: c.title, style
|
10509
|
-
}));
|
10510
|
-
this._indices && this._cindices.forEach(i => cells.push({ value: i.title, style }));
|
10511
|
-
cells.push({
|
10512
|
-
value: this.yAxis ? this.yAxis.title : this._translate.get('Value'),
|
10513
|
-
style
|
10514
|
-
});
|
10515
|
-
this.dataSource = [{
|
10516
|
-
cells, height: 20
|
10517
|
-
}];
|
10518
|
-
data.forEach(d => {
|
10519
|
-
const cells = [];
|
10520
|
-
this._xAxis.forEach(c => cells.push({
|
10521
|
-
value: d[c],
|
10522
|
-
}));
|
10523
|
-
this._indices && this._indices.forEach(i => cells.push({
|
10524
|
-
style: numberStyle,
|
10525
|
-
format: this._numberFormat,
|
10526
|
-
value: (d[i] || 0).toString(),
|
10527
|
-
}));
|
10528
|
-
cells.push({
|
10529
|
-
style: numberStyle,
|
10530
|
-
format: this._numberFormat,
|
10531
|
-
value: (d.value || 0).toString(),
|
10532
|
-
});
|
10533
|
-
this.dataSource.push({ cells, source: d, height: 20 });
|
10534
|
-
});
|
10558
|
+
this._datatable(data);
|
10535
10559
|
this._draw();
|
10536
10560
|
this.loadingChange.emit(false);
|
10537
10561
|
}, (e) => {
|
@@ -10540,39 +10564,9 @@ class CubeSpreadsheetComponent {
|
|
10540
10564
|
});
|
10541
10565
|
else
|
10542
10566
|
this._service.series(this.cube, this._xAxis, { series: this._series, filters: this.filters }).
|
10543
|
-
subscribe(
|
10567
|
+
subscribe(data => {
|
10544
10568
|
this._prepare.then(() => {
|
10545
|
-
|
10546
|
-
const cells = [{ value: '' }];
|
10547
|
-
this._xcolumns.forEach(c => cells.push({ value: c.value, style }));
|
10548
|
-
this.dataSource = [{ cells, height: 20 }];
|
10549
|
-
this._indices && this._cube.indices.filter(i => this._indices.indexOf(i.name) > 0).
|
10550
|
-
forEach(i => {
|
10551
|
-
const cells = [{ value: i.title, style }], serie = d.find(s => s.index === i.name), map = {};
|
10552
|
-
if (serie) {
|
10553
|
-
serie.points.forEach(p => map[p.x] = p.y);
|
10554
|
-
this._xcolumns.forEach(c => cells.push({
|
10555
|
-
value: (map[c.key] || 0).toString(),
|
10556
|
-
format: this._numberFormat,
|
10557
|
-
style: numberStyle
|
10558
|
-
}));
|
10559
|
-
this.dataSource.push({ cells, height: 20 });
|
10560
|
-
}
|
10561
|
-
});
|
10562
|
-
this._yrows.forEach(r => {
|
10563
|
-
const cells = [{ value: r.value, style }], serie = d.find(s => s.name === r.key), map = {};
|
10564
|
-
if (serie) {
|
10565
|
-
serie.points.forEach(p => map[p.x] = p.y);
|
10566
|
-
this._xcolumns.forEach(c => cells.push({
|
10567
|
-
value: (map[c.key] || 0).toString(),
|
10568
|
-
format: this._numberFormat,
|
10569
|
-
style: numberStyle
|
10570
|
-
}));
|
10571
|
-
}
|
10572
|
-
else
|
10573
|
-
this._xcolumns.forEach(_ => cells.push({ value: '0' }));
|
10574
|
-
this.dataSource.push({ cells, height: 20 });
|
10575
|
-
});
|
10569
|
+
this._dataseries(data);
|
10576
10570
|
this._draw();
|
10577
10571
|
this.loadingChange.emit(false);
|
10578
10572
|
});
|
@@ -10581,6 +10575,70 @@ class CubeSpreadsheetComponent {
|
|
10581
10575
|
this.loadingChange.emit(false);
|
10582
10576
|
});
|
10583
10577
|
}
|
10578
|
+
_datatable(data) {
|
10579
|
+
const cells = [], style = { fontWeight: 'bold', textAlign: 'center' };
|
10580
|
+
this._axes.forEach(c => cells.push({
|
10581
|
+
value: c.title, style
|
10582
|
+
}));
|
10583
|
+
this._indices && this._cindices.forEach(i => cells.push({ value: i.title, style }));
|
10584
|
+
cells.push({
|
10585
|
+
value: this.yAxis ? this.yAxis.title : this._translate.get('Value'),
|
10586
|
+
style
|
10587
|
+
});
|
10588
|
+
this.dataSource = [{
|
10589
|
+
cells, height: 25
|
10590
|
+
}];
|
10591
|
+
data.forEach(d => {
|
10592
|
+
const cells = [];
|
10593
|
+
this._xAxis.forEach(c => cells.push({
|
10594
|
+
value: d[c],
|
10595
|
+
}));
|
10596
|
+
this._indices && this._indices.forEach(i => cells.push({
|
10597
|
+
style: this.numberStyle,
|
10598
|
+
format: this._numberFormat,
|
10599
|
+
value: (d[i] || 0).toString(),
|
10600
|
+
}));
|
10601
|
+
cells.push({
|
10602
|
+
style: this.numberStyle,
|
10603
|
+
format: this._numberFormat,
|
10604
|
+
value: (d.value || 0).toString(),
|
10605
|
+
});
|
10606
|
+
this.dataSource.push({ cells, source: d, height: 25 });
|
10607
|
+
});
|
10608
|
+
}
|
10609
|
+
_dataseries(d) {
|
10610
|
+
const style = { fontWeight: 'bold', textAlign: 'center' };
|
10611
|
+
const cells = [{ value: '' }];
|
10612
|
+
this._xcolumns.forEach(c => cells.push({ value: c.value, style }));
|
10613
|
+
this.dataSource = [{ cells, height: 25 }];
|
10614
|
+
this._indices && this._cindices.
|
10615
|
+
forEach(i => {
|
10616
|
+
const cells = [{ value: i.title, style }], serie = d.find(s => s.index === i.name), map = {};
|
10617
|
+
if (serie) {
|
10618
|
+
serie.points.forEach(p => map[p.x] = p.y);
|
10619
|
+
this._xcolumns.forEach(c => cells.push({
|
10620
|
+
value: (map[c.key] || 0).toString(),
|
10621
|
+
format: this._numberFormat,
|
10622
|
+
style: this.numberStyle
|
10623
|
+
}));
|
10624
|
+
this.dataSource.push({ cells, height: 25 });
|
10625
|
+
}
|
10626
|
+
});
|
10627
|
+
this._yrows.forEach(r => {
|
10628
|
+
const cells = [{ value: r.value, style }], serie = d.find(s => s.name === r.key), map = {};
|
10629
|
+
if (serie) {
|
10630
|
+
serie.points.forEach(p => map[p.x] = p.y);
|
10631
|
+
this._xcolumns.forEach(c => cells.push({
|
10632
|
+
value: (map[c.key] || 0).toString(),
|
10633
|
+
format: this._numberFormat,
|
10634
|
+
style: this.numberStyle
|
10635
|
+
}));
|
10636
|
+
}
|
10637
|
+
else
|
10638
|
+
this._xcolumns.forEach(_ => cells.push({ value: '0' }));
|
10639
|
+
this.dataSource.push({ cells, height: 25 });
|
10640
|
+
});
|
10641
|
+
}
|
10584
10642
|
_draw() {
|
10585
10643
|
this.spreadsheet && this.spreadsheet.destroy();
|
10586
10644
|
this.spreadsheet = new Spreadsheet({
|
@@ -10589,19 +10647,13 @@ class CubeSpreadsheetComponent {
|
|
10589
10647
|
allowDelete: false,
|
10590
10648
|
allowInsert: false,
|
10591
10649
|
allowSorting: true,
|
10592
|
-
//allowSave: false,
|
10593
10650
|
showRibbon: false,
|
10594
10651
|
allowAutoFill: false,
|
10595
|
-
autoFillSettings:
|
10596
|
-
|
10597
|
-
//allowChart: false,
|
10598
|
-
//allowFiltering: false,
|
10599
|
-
//allowDataValidation: false,
|
10600
|
-
//allowFindAndReplace: false,
|
10652
|
+
autoFillSettings: this.autoFillSettings,
|
10653
|
+
enableClipboard: true,
|
10601
10654
|
enableContextMenu: false,
|
10602
10655
|
showFormulaBar: false,
|
10603
10656
|
showSheetTabs: false,
|
10604
|
-
//scrollSettings: { isFinite: true },
|
10605
10657
|
select: this.select.bind(this),
|
10606
10658
|
sheets: [{
|
10607
10659
|
columns: this.columns,
|
@@ -10635,8 +10687,10 @@ class CubeSpreadsheetComponent {
|
|
10635
10687
|
const key = this.dataSource[i].source['_' + a.name];
|
10636
10688
|
if (!axes[a.name])
|
10637
10689
|
axes[a.name] = key;
|
10638
|
-
else if (isString(axes[a.name]))
|
10639
|
-
axes[a.name]
|
10690
|
+
else if (isString(axes[a.name])) {
|
10691
|
+
if (axes[a.name] !== key)
|
10692
|
+
axes[a.name] = [axes[a.name], key];
|
10693
|
+
}
|
10640
10694
|
else if (axes[a.name].indexOf(key) < 0)
|
10641
10695
|
axes[a.name].push(key);
|
10642
10696
|
});
|
@@ -10646,18 +10700,14 @@ class CubeSpreadsheetComponent {
|
|
10646
10700
|
}
|
10647
10701
|
else {
|
10648
10702
|
if (y === 0) {
|
10649
|
-
if (y < y1)
|
10650
|
-
|
10651
|
-
axes[xName] = key;
|
10652
|
-
}
|
10703
|
+
if (y < y1)
|
10704
|
+
this._fillx(x, x1, axes);
|
10653
10705
|
else
|
10654
10706
|
return;
|
10655
10707
|
}
|
10656
10708
|
else if (x === 0) {
|
10657
|
-
if (x < x1)
|
10658
|
-
|
10659
|
-
axes[yName] = key;
|
10660
|
-
}
|
10709
|
+
if (x < x1)
|
10710
|
+
this._filly(y, y1, axes);
|
10661
10711
|
else
|
10662
10712
|
return;
|
10663
10713
|
}
|
@@ -10666,34 +10716,41 @@ class CubeSpreadsheetComponent {
|
|
10666
10716
|
else if (y > this.dataSource.length - 1 || x > this.dataSource[y].cells.length - 1)
|
10667
10717
|
return;
|
10668
10718
|
else {
|
10669
|
-
|
10670
|
-
|
10671
|
-
while (j < x1) {
|
10672
|
-
let { key } = this._xcolumns[j];
|
10673
|
-
if (!axes[xName])
|
10674
|
-
axes[xName] = key;
|
10675
|
-
else if (isString(axes[xName]))
|
10676
|
-
axes[xName] = [axes[xName], key];
|
10677
|
-
else if (axes[xName].indexOf(key) < 0)
|
10678
|
-
axes[xName].push(key);
|
10679
|
-
j++;
|
10680
|
-
}
|
10681
|
-
while (i < y1) {
|
10682
|
-
let { key } = this._yrows[i];
|
10683
|
-
if (!axes[yName])
|
10684
|
-
axes[yName] = key;
|
10685
|
-
else if (isString(axes[yName]))
|
10686
|
-
axes[yName] = [axes[yName], key];
|
10687
|
-
else if (axes[yName].indexOf(key) < 0)
|
10688
|
-
axes[yName].push(key);
|
10689
|
-
i++;
|
10690
|
-
}
|
10719
|
+
this._fillx(x, x1, axes);
|
10720
|
+
this._filly(y, y1, axes);
|
10691
10721
|
}
|
10692
10722
|
this.explore.emit({ axes });
|
10693
10723
|
}
|
10694
10724
|
}
|
10725
|
+
_filly(y, y1, axes) {
|
10726
|
+
const yName = this._series[0];
|
10727
|
+
let i = y - 1;
|
10728
|
+
while (i < y1) {
|
10729
|
+
let { key } = this._yrows[i];
|
10730
|
+
if (!axes[yName])
|
10731
|
+
axes[yName] = key;
|
10732
|
+
else if (isString(axes[yName]))
|
10733
|
+
axes[yName] = [axes[yName], key];
|
10734
|
+
else if (axes[yName].indexOf(key) < 0)
|
10735
|
+
axes[yName].push(key);
|
10736
|
+
i++;
|
10737
|
+
}
|
10738
|
+
}
|
10739
|
+
_fillx(x, x1, axes) {
|
10740
|
+
const xName = this._xAxis[0];
|
10741
|
+
let i = x - 1;
|
10742
|
+
while (i < x1) {
|
10743
|
+
let { key } = this._xcolumns[i];
|
10744
|
+
if (!axes[xName])
|
10745
|
+
axes[xName] = key;
|
10746
|
+
else if (isString(axes[xName]))
|
10747
|
+
axes[xName] = [axes[xName], key];
|
10748
|
+
else if (axes[xName].indexOf(key) < 0)
|
10749
|
+
axes[xName].push(key);
|
10750
|
+
i++;
|
10751
|
+
}
|
10752
|
+
}
|
10695
10753
|
exportToExcel(title) {
|
10696
|
-
//this.spreadsheet.save({ saveType: 'Xlsx', fileName: `${title}.xlsx`})
|
10697
10754
|
const wb = XLSX.utils.book_new();
|
10698
10755
|
const rows = this.spreadsheet.sheets[0].rows.map(r => r.cells.map(c => c.value));
|
10699
10756
|
const ws = XLSX.utils.aoa_to_sheet(rows);
|
@@ -10708,16 +10765,12 @@ class CubeSpreadsheetComponent {
|
|
10708
10765
|
}
|
10709
10766
|
CubeSpreadsheetComponent.nextId = 0;
|
10710
10767
|
CubeSpreadsheetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeSpreadsheetComponent, deps: [{ token: SessionService }, { token: PromptService }, { token: CubeService }, { token: TranslateService }, { token: DatasourceService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
10711
|
-
CubeSpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: CubeSpreadsheetComponent, selector: "bizdoc-cube-spreadsheet", inputs: { width: "width", height: "height", cube: "cube", xAxis: "xAxis", yAxis: "yAxis", series: "series", indices: "indices", filters: "filters", currencyCode: "currencyCode", loading: "loading" }, outputs: { explore: "explore", loadingChange: "loadingChange" }, host: { properties: { "id": "this.id" }, classAttribute: "cube-view" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true
|
10768
|
+
CubeSpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: CubeSpreadsheetComponent, selector: "bizdoc-cube-spreadsheet", inputs: { width: "width", height: "height", cube: "cube", xAxis: "xAxis", yAxis: "yAxis", series: "series", indices: "indices", filters: "filters", currencyCode: "currencyCode", loading: "loading" }, outputs: { explore: "explore", loadingChange: "loadingChange" }, host: { properties: { "id": "this.id" }, classAttribute: "cube-view" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true });
|
10712
10769
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeSpreadsheetComponent, decorators: [{
|
10713
10770
|
type: Component,
|
10714
10771
|
args: [{
|
10715
10772
|
selector: 'bizdoc-cube-spreadsheet',
|
10716
10773
|
template: '',
|
10717
|
-
styles: [`::ng-deep .e-spreadsheet .e-dragfill-ddb {
|
10718
|
-
display: none !important;
|
10719
|
-
}
|
10720
|
-
`],
|
10721
10774
|
host: {
|
10722
10775
|
class: 'cube-view'
|
10723
10776
|
}
|
@@ -10776,13 +10829,11 @@ class CubeViewComponent {
|
|
10776
10829
|
this._instance.ngOnChanges({ 'height': {}, 'width': {} });
|
10777
10830
|
});
|
10778
10831
|
}
|
10832
|
+
ngAfterViewInit() {
|
10833
|
+
setTimeout(this._createView.bind(this));
|
10834
|
+
}
|
10779
10835
|
ngOnChanges(changes) {
|
10780
|
-
|
10781
|
-
// dom
|
10782
|
-
setTimeout(this._createView.bind(this));
|
10783
|
-
}
|
10784
|
-
else if (changes['axes'])
|
10785
|
-
this.refresh();
|
10836
|
+
changes['axes'] && !changes['axes'].firstChange && this.refresh();
|
10786
10837
|
}
|
10787
10838
|
_createView() {
|
10788
10839
|
this._viewDestroy.next();
|
@@ -10806,7 +10857,6 @@ class CubeViewComponent {
|
|
10806
10857
|
comp.width = `${dim.width - 4}px`;
|
10807
10858
|
comp.series = this.view.series;
|
10808
10859
|
comp.indices = this.view.indices;
|
10809
|
-
comp.yAxis = this.cube.yAxis;
|
10810
10860
|
break;
|
10811
10861
|
}
|
10812
10862
|
case 'Spreadsheet':
|
@@ -10834,15 +10884,15 @@ class CubeViewComponent {
|
|
10834
10884
|
default:
|
10835
10885
|
{
|
10836
10886
|
let comp = this._attach(CubeChartComponent);
|
10837
|
-
comp.height = `${dim.height}px`;
|
10887
|
+
//comp.height = `${dim.height}px`;
|
10838
10888
|
comp.chartType = this.view.chartType;
|
10839
10889
|
comp.series = this.view.series;
|
10840
10890
|
comp.indices = this.view.indices;
|
10891
|
+
comp.yAxis = this.cube.yAxis;
|
10841
10892
|
comp.indexChartType = this.view.indexChartType;
|
10842
10893
|
}
|
10843
10894
|
}
|
10844
10895
|
}
|
10845
|
-
this.refresh();
|
10846
10896
|
}
|
10847
10897
|
_attach(comp) {
|
10848
10898
|
const factory = this._factoryResolver.resolveComponentFactory(comp);
|
@@ -10860,6 +10910,7 @@ class CubeViewComponent {
|
|
10860
10910
|
instance.cube = this.cube.name;
|
10861
10911
|
instance.xAxis = this.view.xAxis;
|
10862
10912
|
instance.currencyCode = this.cube.currencyCode;
|
10913
|
+
instance.filters = { ...this.view.filters, ...this.axes };
|
10863
10914
|
instance.loadingChange.pipe(takeUntil(this._viewDestroy), debounceTime(150)).subscribe(e => this.loadingChange.emit(this.loading = e));
|
10864
10915
|
return instance;
|
10865
10916
|
}
|
@@ -10875,7 +10926,7 @@ class CubeViewComponent {
|
|
10875
10926
|
}
|
10876
10927
|
refresh() {
|
10877
10928
|
this._instance.filters = { ...this.view.filters, ...this.axes };
|
10878
|
-
this._instance.
|
10929
|
+
this._instance.execute();
|
10879
10930
|
}
|
10880
10931
|
exportToExcel() {
|
10881
10932
|
this._instance.exportToExcel(this.view.title);
|
@@ -11050,12 +11101,12 @@ class CubeViewPaneComponent extends ViewBase {
|
|
11050
11101
|
}
|
11051
11102
|
}
|
11052
11103
|
CubeViewPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeViewPaneComponent, deps: [{ token: SessionService }, { token: PaneRef }, { token: Popup }, { token: RouterImpl }, { token: CubeService }, { token: GuideService }], target: i0.ɵɵFactoryTarget.Component });
|
11053
|
-
CubeViewPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: CubeViewPaneComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "viewPane", first: true, predicate: CubeViewComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-toolbar 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 <button mat-icon-button (click)=\"vp.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\"\r\n data-help=\"download\" (click)=\"vp.exportToExcel()\">\r\n <mat-icon>save_alt</mat-icon>\r\n </button>\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</mat-toolbar>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<!--<bizdoc-filter-tags [(filters)]=\"axes\" [cube]=\"cube\"></bizdoc-filter-tags>-->\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\"></bizdoc-cube-view>\r\n<!--<ng-lottie options=\"{path: 'assets/8318-loader.json'}\" *ngIf=\"loading\"></ng-lottie>-->\r\n", styles: [":host{display:flex;flex-direction:column;height:100
|
11104
|
+
CubeViewPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: CubeViewPaneComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "viewPane", first: true, predicate: CubeViewComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-toolbar 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 <button mat-icon-button (click)=\"vp.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\"\r\n data-help=\"download\" (click)=\"vp.exportToExcel()\">\r\n <mat-icon>save_alt</mat-icon>\r\n </button>\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</mat-toolbar>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<!--<bizdoc-filter-tags [(filters)]=\"axes\" [cube]=\"cube\"></bizdoc-filter-tags>-->\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\"></bizdoc-cube-view>\r\n<!--<ng-lottie options=\"{path: 'assets/8318-loader.json'}\" *ngIf=\"loading\"></ng-lottie>-->\r\n", styles: [":host{display:flex;flex-direction:column;height:100%}:host ::ng-deep .cube-view{flex:1 auto}\n"], components: [{ type: i7$4.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: 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: i11$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: CubeViewComponent, selector: "bizdoc-cube-view", inputs: ["axes", "cube", "view", "loading"], outputs: ["explore", "loadingChange"] }], directives: [{ type: i10$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: MatIconAnimate, selector: "[matAnimate]" }, { 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 } });
|
11054
11105
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeViewPaneComponent, decorators: [{
|
11055
11106
|
type: Component,
|
11056
11107
|
args: [{ host: {
|
11057
11108
|
class: 'pane'
|
11058
|
-
}, template: "<mat-toolbar 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 <button mat-icon-button (click)=\"vp.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\"\r\n data-help=\"download\" (click)=\"vp.exportToExcel()\">\r\n <mat-icon>save_alt</mat-icon>\r\n </button>\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</mat-toolbar>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<!--<bizdoc-filter-tags [(filters)]=\"axes\" [cube]=\"cube\"></bizdoc-filter-tags>-->\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\"></bizdoc-cube-view>\r\n<!--<ng-lottie options=\"{path: 'assets/8318-loader.json'}\" *ngIf=\"loading\"></ng-lottie>-->\r\n", styles: [":host{display:flex;flex-direction:column;height:100
|
11109
|
+
}, template: "<mat-toolbar 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 <button mat-icon-button (click)=\"vp.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\"\r\n data-help=\"download\" (click)=\"vp.exportToExcel()\">\r\n <mat-icon>save_alt</mat-icon>\r\n </button>\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</mat-toolbar>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<!--<bizdoc-filter-tags [(filters)]=\"axes\" [cube]=\"cube\"></bizdoc-filter-tags>-->\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\"></bizdoc-cube-view>\r\n<!--<ng-lottie options=\"{path: 'assets/8318-loader.json'}\" *ngIf=\"loading\"></ng-lottie>-->\r\n", styles: [":host{display:flex;flex-direction:column;height:100%}:host ::ng-deep .cube-view{flex:1 auto}\n"] }]
|
11059
11110
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: PaneRef }, { type: Popup }, { type: RouterImpl }, { type: CubeService }, { type: GuideService }]; }, propDecorators: { viewPane: [{
|
11060
11111
|
type: ViewChild,
|
11061
11112
|
args: [CubeViewComponent, { static: true }]
|
@@ -12043,7 +12094,8 @@ class WorkflowComponent {
|
|
12043
12094
|
nodes, connectors
|
12044
12095
|
},
|
12045
12096
|
policy: OpenPolicy.Tab,
|
12046
|
-
expandable: false
|
12097
|
+
expandable: false,
|
12098
|
+
group: ''
|
12047
12099
|
}).then(p => {
|
12048
12100
|
p.instance.change.
|
12049
12101
|
pipe(takeUntil(this._destroy)).subscribe(() => {
|
@@ -13329,17 +13381,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
13329
13381
|
/** component*/
|
13330
13382
|
class VersionCompareComponent {
|
13331
13383
|
/** ctor */
|
13332
|
-
constructor(_session, _cf, _container,
|
13384
|
+
constructor(_session, _cf, _container, _injector) {
|
13333
13385
|
this._session = _session;
|
13334
13386
|
this._cf = _cf;
|
13335
13387
|
this._container = _container;
|
13336
|
-
this._router = _router;
|
13337
13388
|
this._injector = _injector;
|
13338
13389
|
}
|
13339
13390
|
get form() { return this._form; }
|
13340
13391
|
get currentVersion() { return this._currentVersion; }
|
13341
13392
|
get baseVersion() { return this._baseVersion; }
|
13342
|
-
ngOnChanges(
|
13393
|
+
ngOnChanges(_) {
|
13343
13394
|
this._form = this._session.profile.forms.find(f => f.name === this.model.formId);
|
13344
13395
|
const log = this.model.log.find(l => l.type === 'ModelChange' && l.time === this.version);
|
13345
13396
|
const idx = this.model.log.indexOf(log);
|
@@ -13349,7 +13400,7 @@ class VersionCompareComponent {
|
|
13349
13400
|
const componentFactory = this._cf.resolve(this._form.template);
|
13350
13401
|
const injector = Injector.create([
|
13351
13402
|
{ provide: VersionCompareComponent, useValue: this },
|
13352
|
-
{ provide: FormRef, useValue: new FormRef(
|
13403
|
+
{ provide: FormRef, useValue: new FormRef() },
|
13353
13404
|
{ provide: DOCUMENT_MODEL, useValue: this.model }
|
13354
13405
|
], this._injector);
|
13355
13406
|
this._container.clear();
|
@@ -13360,7 +13411,7 @@ class VersionCompareComponent {
|
|
13360
13411
|
instance.onBind(newModel, this._baseVersion);
|
13361
13412
|
}
|
13362
13413
|
}
|
13363
|
-
VersionCompareComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: VersionCompareComponent, deps: [{ token: SessionService }, { token: BizDocComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token:
|
13414
|
+
VersionCompareComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: VersionCompareComponent, deps: [{ token: SessionService }, { token: BizDocComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
13364
13415
|
VersionCompareComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: VersionCompareComponent, selector: "bizdoc-version-compare", inputs: { model: "model", version: "version" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true });
|
13365
13416
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: VersionCompareComponent, decorators: [{
|
13366
13417
|
type: Component,
|
@@ -13368,7 +13419,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
13368
13419
|
selector: 'bizdoc-version-compare',
|
13369
13420
|
template: ''
|
13370
13421
|
}]
|
13371
|
-
}], ctorParameters: function () { return [{ type: SessionService }, { type: BizDocComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type:
|
13422
|
+
}], ctorParameters: function () { return [{ type: SessionService }, { type: BizDocComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: i0.Injector }]; }, propDecorators: { model: [{
|
13372
13423
|
type: Input
|
13373
13424
|
}], version: [{
|
13374
13425
|
type: Input
|
@@ -15542,16 +15593,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
15542
15593
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: TranslateService }, { type: PaneRef }]; } });
|
15543
15594
|
|
15544
15595
|
class DocumentInfoComponent {
|
15545
|
-
constructor(_session, _cf,
|
15596
|
+
constructor(_session, _cf, _injector) {
|
15546
15597
|
this._session = _session;
|
15547
15598
|
this._cf = _cf;
|
15548
|
-
this._router = _router;
|
15549
15599
|
this._injector = _injector;
|
15550
15600
|
}
|
15551
|
-
ngOnChanges(
|
15601
|
+
ngOnChanges(_) {
|
15552
15602
|
const form = this._session.profile.forms.find(f => f.name === this.model.formId);
|
15553
15603
|
this._formRef && this._formRef._destroy();
|
15554
|
-
this._formRef = new FormRef(
|
15604
|
+
this._formRef = new FormRef();
|
15555
15605
|
const factory = this._cf.resolve(form.template);
|
15556
15606
|
const injector = Injector.create([{
|
15557
15607
|
provide: DOCUMENT_MODEL, useValue: this.model
|
@@ -15567,12 +15617,12 @@ class DocumentInfoComponent {
|
|
15567
15617
|
this._formRef._destroy();
|
15568
15618
|
}
|
15569
15619
|
}
|
15570
|
-
DocumentInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: DocumentInfoComponent, deps: [{ token: SessionService }, { token: BizDocComponentFactoryResolver }, { token:
|
15620
|
+
DocumentInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: DocumentInfoComponent, deps: [{ token: SessionService }, { token: BizDocComponentFactoryResolver }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
15571
15621
|
DocumentInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: DocumentInfoComponent, selector: "bizdoc-document", inputs: { model: "model" }, viewQueries: [{ propertyName: "_container", first: true, predicate: ["component"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"form-header\">\r\n <bizdoc-people [model]=\"model\"></bizdoc-people>\r\n <bizdoc-attachments [model]=\"model\" [includeDeleted]=\"false\" [viewedIndicator]=\"true\"></bizdoc-attachments>\r\n</div>\r\n<ng-container #component></ng-container>\r\n", components: [{ type: PeopleComponent, selector: "bizdoc-people", inputs: ["model"] }, { type: AttachmentsComponent, selector: "bizdoc-attachments", inputs: ["model", "viewedIndicator", "includeDeleted"] }] });
|
15572
15622
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: DocumentInfoComponent, decorators: [{
|
15573
15623
|
type: Component,
|
15574
15624
|
args: [{ selector: 'bizdoc-document', template: "<div class=\"form-header\">\r\n <bizdoc-people [model]=\"model\"></bizdoc-people>\r\n <bizdoc-attachments [model]=\"model\" [includeDeleted]=\"false\" [viewedIndicator]=\"true\"></bizdoc-attachments>\r\n</div>\r\n<ng-container #component></ng-container>\r\n" }]
|
15575
|
-
}], ctorParameters: function () { return [{ type: SessionService }, { type: BizDocComponentFactoryResolver }, { type:
|
15625
|
+
}], ctorParameters: function () { return [{ type: SessionService }, { type: BizDocComponentFactoryResolver }, { type: i0.Injector }]; }, propDecorators: { _container: [{
|
15576
15626
|
type: ViewChild,
|
15577
15627
|
args: ['component', { read: ViewContainerRef, static: true }]
|
15578
15628
|
}], model: [{
|
@@ -16286,10 +16336,10 @@ class ComposeMenuComponent {
|
|
16286
16336
|
}
|
16287
16337
|
}
|
16288
16338
|
ComposeMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ComposeMenuComponent, deps: [{ token: SessionService }, { token: MailboxService }, { token: PromptService }, { token: PanesRouter }], target: i0.ɵɵFactoryTarget.Component });
|
16289
|
-
ComposeMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: ComposeMenuComponent, selector: "bizdoc-new-menu", outputs: { change: "change" }, ngImport: i0, template: "<mat-progress-bar mode=\"indeterminate\" [style.visibility]=\"working ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div class=\"container\">\r\n <span class=\"mat-subheader\">BizDoc</span>\r\n <h1 class=\"mat-display-1\">{{'New'|translate}}</h1>\r\n\r\n <mat-nav-list>\r\n <mat-list-item *ngFor=\"let f of forms\" (click)=\"create(f.name)\" [attr.data-help]=\"f.name + '-form'\">\r\n <mat-icon matListIcon>{{f.icon}}</mat-icon>\r\n <span matLine>{{f.title}}</span>\r\n
|
16339
|
+
ComposeMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: ComposeMenuComponent, selector: "bizdoc-new-menu", outputs: { change: "change" }, ngImport: i0, template: "<mat-progress-bar mode=\"indeterminate\" [style.visibility]=\"working ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div class=\"container\">\r\n <span class=\"mat-subheader\">BizDoc</span>\r\n <h1 class=\"mat-display-1\">{{'New'|translate}}</h1>\r\n\r\n <mat-nav-list>\r\n <mat-list-item *ngFor=\"let f of forms\" (click)=\"create(f.name)\" [attr.data-help]=\"f.name + '-form'\">\r\n <mat-icon matListIcon>{{f.icon}}</mat-icon>\r\n <span matLine>{{f.title}}</span>\r\n <!--<mat-spinner radius=\"25\" *ngIf=\"creating===f.name\"></mat-spinner>-->\r\n </mat-list-item>\r\n </mat-nav-list>\r\n</div>\r\n", styles: ["h1{margin:0 16px}form{padding:8px}hr{opacity:.4}\n"], components: [{ type: i11$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i2$3.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { type: i2$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { type: i7$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i10$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2$3.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { type: i6$1.MatLine, selector: "[mat-line], [matLine]" }], pipes: { "translate": TranslatePipe }, animations: [] });
|
16290
16340
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ComposeMenuComponent, decorators: [{
|
16291
16341
|
type: Component,
|
16292
|
-
args: [{ selector: 'bizdoc-new-menu', animations: [], template: "<mat-progress-bar mode=\"indeterminate\" [style.visibility]=\"working ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div class=\"container\">\r\n <span class=\"mat-subheader\">BizDoc</span>\r\n <h1 class=\"mat-display-1\">{{'New'|translate}}</h1>\r\n\r\n <mat-nav-list>\r\n <mat-list-item *ngFor=\"let f of forms\" (click)=\"create(f.name)\" [attr.data-help]=\"f.name + '-form'\">\r\n <mat-icon matListIcon>{{f.icon}}</mat-icon>\r\n <span matLine>{{f.title}}</span>\r\n
|
16342
|
+
args: [{ selector: 'bizdoc-new-menu', animations: [], template: "<mat-progress-bar mode=\"indeterminate\" [style.visibility]=\"working ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div class=\"container\">\r\n <span class=\"mat-subheader\">BizDoc</span>\r\n <h1 class=\"mat-display-1\">{{'New'|translate}}</h1>\r\n\r\n <mat-nav-list>\r\n <mat-list-item *ngFor=\"let f of forms\" (click)=\"create(f.name)\" [attr.data-help]=\"f.name + '-form'\">\r\n <mat-icon matListIcon>{{f.icon}}</mat-icon>\r\n <span matLine>{{f.title}}</span>\r\n <!--<mat-spinner radius=\"25\" *ngIf=\"creating===f.name\"></mat-spinner>-->\r\n </mat-list-item>\r\n </mat-nav-list>\r\n</div>\r\n", styles: ["h1{margin:0 16px}form{padding:8px}hr{opacity:.4}\n"] }]
|
16293
16343
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: MailboxService }, { type: PromptService }, { type: PanesRouter }]; }, propDecorators: { change: [{
|
16294
16344
|
type: Output
|
16295
16345
|
}] } });
|
@@ -16368,7 +16418,7 @@ class FoldersMenuComponent {
|
|
16368
16418
|
//folder.group;
|
16369
16419
|
return true;
|
16370
16420
|
};
|
16371
|
-
this.folders = this._session.profile.folders;
|
16421
|
+
this.folders = this._session.profile.folders.filter(f => f.name !== 'fav');
|
16372
16422
|
}
|
16373
16423
|
/**
|
16374
16424
|
* Mail drop
|
@@ -16524,11 +16574,14 @@ class SearchService {
|
|
16524
16574
|
if (u.title.toLowerCase().indexOf(val) > -1)
|
16525
16575
|
xs.push({ path: `admin/utilities/${u.name}`, title: u.title, section: this._translate.get('Utilities'), icon: u.icon });
|
16526
16576
|
});
|
16577
|
+
profile.options.tags &&
|
16578
|
+
profile.options.tags.forEach(t => {
|
16579
|
+
if (t.toLowerCase().indexOf(val) > -1)
|
16580
|
+
xs.push({ path: `mailbox/f?tag=${t}`, title: t, section: this._translate.get('Tags'), icon: 'bookmark' });
|
16581
|
+
});
|
16527
16582
|
//profile.contacts.forEach()
|
16528
|
-
//
|
16529
|
-
// if (g.mode !== 'Private' &&
|
16530
|
-
// g.steps.some(s => (s.title && s.title.toLowerCase().indexOf(value) > -1) ||
|
16531
|
-
// s.content.toLowerCase().indexOf(value) > -1)))
|
16583
|
+
//this._guide.guides.forEach(g => {
|
16584
|
+
// if (g.mode !== 'Private' && g.title.toLowerCase().indexOf(value) > -1)
|
16532
16585
|
// xs.push({ fn: this._guide.start, args: [g.name], title: g.title, section: this._translate.get('Guides'), icon: 'help' })
|
16533
16586
|
//});
|
16534
16587
|
this._mailbox.senders(value).subscribe(r => r.forEach(s => xs.push({ path: `mailbox/f/ib?senderId=${s.id}`, title: s.name, section: this._translate.get('Senders'), icon: 'recent_actors' })));
|
@@ -16734,7 +16787,7 @@ class SlotsComponent {
|
|
16734
16787
|
return;
|
16735
16788
|
}
|
16736
16789
|
else {
|
16737
|
-
this._navQueryParams(tab, queryParams
|
16790
|
+
this._navQueryParams(tab, queryParams);
|
16738
16791
|
this.group = tab.group;
|
16739
16792
|
this.selectedTabIndex = i;
|
16740
16793
|
this._cd.detectChanges();
|
@@ -16766,7 +16819,7 @@ class SlotsComponent {
|
|
16766
16819
|
return;
|
16767
16820
|
}
|
16768
16821
|
else {
|
16769
|
-
this._navQueryParams(pane, queryParams
|
16822
|
+
this._navQueryParams(pane, queryParams);
|
16770
16823
|
this.scrollTo(i);
|
16771
16824
|
this._replaceUrl();
|
16772
16825
|
return;
|
@@ -16820,7 +16873,7 @@ class SlotsComponent {
|
|
16820
16873
|
else {
|
16821
16874
|
const pane = (policy & OpenPolicy.Tab) == OpenPolicy.Tab ?
|
16822
16875
|
this.tabs[this.selectedTabIndex] : this.panes[this.selectedIndex];
|
16823
|
-
this._navQueryParams(pane, queryParams
|
16876
|
+
this._navQueryParams(pane, queryParams);
|
16824
16877
|
this._replaceUrl();
|
16825
16878
|
if ((policy & OpenPolicy.Tab) != OpenPolicy.Tab)
|
16826
16879
|
this.select(this.selectedIndex);
|
@@ -16947,7 +17000,7 @@ class SlotsComponent {
|
|
16947
17000
|
}
|
16948
17001
|
else {
|
16949
17002
|
const queryParams = this._parseQueryParams(queryString);
|
16950
|
-
this._navQueryParams(pane, queryParams
|
17003
|
+
this._navQueryParams(pane, queryParams);
|
16951
17004
|
return;
|
16952
17005
|
}
|
16953
17006
|
}
|
@@ -16985,7 +17038,7 @@ class SlotsComponent {
|
|
16985
17038
|
}
|
16986
17039
|
else {
|
16987
17040
|
const queryParams = this._parseQueryParams(queryString);
|
16988
|
-
this._navQueryParams(tab, queryParams
|
17041
|
+
this._navQueryParams(tab, queryParams);
|
16989
17042
|
return;
|
16990
17043
|
}
|
16991
17044
|
}
|
@@ -17022,11 +17075,9 @@ class SlotsComponent {
|
|
17022
17075
|
*
|
17023
17076
|
* @param pane
|
17024
17077
|
* @param queryParams
|
17025
|
-
* @param data
|
17026
17078
|
*/
|
17027
|
-
_navQueryParams(pane, queryParams
|
17079
|
+
_navQueryParams(pane, queryParams) {
|
17028
17080
|
pane._queryString = this._queryString(queryParams);
|
17029
|
-
pane._data$.next({ ...pane.data, ...data });
|
17030
17081
|
pane._queryParams$.next(queryParams);
|
17031
17082
|
this._router._events$.next(new QueryParamNavigation(queryParams, pane));
|
17032
17083
|
}
|
@@ -17503,15 +17554,15 @@ class SlotsComponent {
|
|
17503
17554
|
this.navigationArrows();
|
17504
17555
|
this._resize();
|
17505
17556
|
}
|
17506
|
-
navigationArrows(
|
17507
|
-
const container = this._panesContainerRef.element.nativeElement;
|
17508
|
-
this.next = this._rtl ? container.clientWidth -
|
17509
|
-
|
17510
|
-
this.prev = this._rtl ?
|
17557
|
+
navigationArrows(_) {
|
17558
|
+
const container = this._panesContainerRef.element.nativeElement, scrollLeft = Math.round(container.scrollLeft);
|
17559
|
+
this.next = this._rtl ? container.clientWidth - scrollLeft < container.scrollWidth :
|
17560
|
+
scrollLeft + container.clientWidth < container.scrollWidth;
|
17561
|
+
this.prev = this._rtl ? scrollLeft < 0 : scrollLeft > 0;
|
17511
17562
|
}
|
17512
17563
|
scrollBy(n) {
|
17513
|
-
const
|
17514
|
-
nativeElement.scrollBy({ behavior: 'smooth', left
|
17564
|
+
const left = n * (this._rtl ? -1 : 1);
|
17565
|
+
this._panesContainerRef.element.nativeElement.scrollBy({ behavior: 'smooth', left });
|
17515
17566
|
}
|
17516
17567
|
focus(index) {
|
17517
17568
|
const el = this._children.item(index);
|
@@ -18089,13 +18140,13 @@ const PANES_CONFIG = [{
|
|
18089
18140
|
{
|
18090
18141
|
path: 'views',
|
18091
18142
|
component: DocumentViewPaneComponent,
|
18092
|
-
policy: OpenPolicy.Tab
|
18143
|
+
policy: OpenPolicy.Tab
|
18093
18144
|
},
|
18094
18145
|
{
|
18095
18146
|
path: 'comments',
|
18096
18147
|
icon: 'format_quote',
|
18097
18148
|
component: CommentsPaneComponent,
|
18098
|
-
policy: OpenPolicy.Scope | OpenPolicy.
|
18149
|
+
policy: OpenPolicy.Scope | OpenPolicy.Tab,
|
18099
18150
|
children: [{
|
18100
18151
|
path: ':commentId/versions',
|
18101
18152
|
icon: 'history',
|
@@ -18123,7 +18174,7 @@ const PANES_CONFIG = [{
|
|
18123
18174
|
}, {
|
18124
18175
|
path: 'd/:id',
|
18125
18176
|
component: DocumentInfoPaneComponent,
|
18126
|
-
policy: OpenPolicy.Tab
|
18177
|
+
policy: OpenPolicy.Tab,
|
18127
18178
|
resolve: {
|
18128
18179
|
item: DocumentResolver
|
18129
18180
|
},
|
@@ -18153,7 +18204,7 @@ const PANES_CONFIG = [{
|
|
18153
18204
|
path: ':cube/v/:view',
|
18154
18205
|
icon: 'bar_chart',
|
18155
18206
|
component: CubeViewPaneComponent,
|
18156
|
-
policy: OpenPolicy.Clear
|
18207
|
+
policy: OpenPolicy.Clear
|
18157
18208
|
}, {
|
18158
18209
|
path: ':cube/explore',
|
18159
18210
|
icon: 'summarize',
|
@@ -18162,7 +18213,7 @@ const PANES_CONFIG = [{
|
|
18162
18213
|
children: [{
|
18163
18214
|
path: 'i/:template/:key',
|
18164
18215
|
component: ExploreItemPaneComponent,
|
18165
|
-
policy: OpenPolicy.
|
18216
|
+
policy: OpenPolicy.Tab,
|
18166
18217
|
resolve: { item: ItemResolver }
|
18167
18218
|
}]
|
18168
18219
|
},
|
@@ -18170,7 +18221,7 @@ const PANES_CONFIG = [{
|
|
18170
18221
|
path: ':cube/i/:xAxis/:serie',
|
18171
18222
|
icon: 'bar_chart',
|
18172
18223
|
component: CubeMatrixPaneComponent,
|
18173
|
-
policy: OpenPolicy.
|
18224
|
+
policy: OpenPolicy.Tab
|
18174
18225
|
}]
|
18175
18226
|
}, {
|
18176
18227
|
path: 'reports',
|
@@ -18222,7 +18273,7 @@ const PANES_CONFIG = [{
|
|
18222
18273
|
path: 'chatroom/:id',
|
18223
18274
|
icon: 'person',
|
18224
18275
|
component: ConversationPaneComponent,
|
18225
|
-
policy: OpenPolicy.Tab
|
18276
|
+
policy: OpenPolicy.Tab
|
18226
18277
|
}
|
18227
18278
|
];
|
18228
18279
|
|
@@ -18818,7 +18869,7 @@ const ROUTES = [
|
|
18818
18869
|
class SyncfusionChartModule {
|
18819
18870
|
}
|
18820
18871
|
SyncfusionChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SyncfusionChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
18821
|
-
SyncfusionChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SyncfusionChartModule, imports: [ChartModule, AccumulationChartAllModule,
|
18872
|
+
SyncfusionChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SyncfusionChartModule, imports: [ChartModule, AccumulationChartAllModule, SparklineAllModule], exports: [ChartModule, AccumulationChartAllModule, SparklineAllModule] });
|
18822
18873
|
SyncfusionChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SyncfusionChartModule, providers: [LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService,
|
18823
18874
|
SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService,
|
18824
18875
|
StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService,
|
@@ -18828,12 +18879,12 @@ SyncfusionChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", v
|
|
18828
18879
|
RangeAreaSeriesService, PolarSeriesService, RadarSeriesService, DateTimeCategoryService,
|
18829
18880
|
MultiLevelLabelService, ParetoSeriesService, TooltipRenderService,
|
18830
18881
|
ExportService,
|
18831
|
-
AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService], imports: [[ChartModule, AccumulationChartAllModule,
|
18882
|
+
AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService], imports: [[ChartModule, AccumulationChartAllModule, SparklineAllModule], ChartModule, AccumulationChartAllModule, SparklineAllModule] });
|
18832
18883
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SyncfusionChartModule, decorators: [{
|
18833
18884
|
type: NgModule,
|
18834
18885
|
args: [{
|
18835
|
-
imports: [ChartModule, AccumulationChartAllModule,
|
18836
|
-
exports: [ChartModule, AccumulationChartAllModule,
|
18886
|
+
imports: [ChartModule, AccumulationChartAllModule, SparklineAllModule],
|
18887
|
+
exports: [ChartModule, AccumulationChartAllModule, SparklineAllModule],
|
18837
18888
|
providers: [LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService,
|
18838
18889
|
SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService,
|
18839
18890
|
StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService,
|
@@ -18973,6 +19024,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
18973
19024
|
}]
|
18974
19025
|
}] });
|
18975
19026
|
|
19027
|
+
class SyncfusionGanttModule {
|
19028
|
+
}
|
19029
|
+
SyncfusionGanttModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SyncfusionGanttModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
19030
|
+
SyncfusionGanttModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SyncfusionGanttModule, imports: [GanttModule], exports: [GanttModule] });
|
19031
|
+
SyncfusionGanttModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SyncfusionGanttModule, providers: [], imports: [[GanttModule], GanttModule] });
|
19032
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SyncfusionGanttModule, decorators: [{
|
19033
|
+
type: NgModule,
|
19034
|
+
args: [{
|
19035
|
+
imports: [GanttModule],
|
19036
|
+
exports: [GanttModule],
|
19037
|
+
providers: []
|
19038
|
+
}]
|
19039
|
+
}] });
|
19040
|
+
|
18976
19041
|
let AssignActionComponent = class AssignActionComponent {
|
18977
19042
|
constructor(_fb, _session, _accounts) {
|
18978
19043
|
this._fb = _fb;
|
@@ -19581,7 +19646,7 @@ class CubeAccumAnalysisWidget extends CubeAnalysisBase {
|
|
19581
19646
|
visible: true,
|
19582
19647
|
position: 'Outside',
|
19583
19648
|
connectorStyle: { length: '10%' },
|
19584
|
-
name: '
|
19649
|
+
name: 'name',
|
19585
19650
|
font: {
|
19586
19651
|
size: '14px',
|
19587
19652
|
fontFamily: FONT_FAMILY,
|
@@ -19727,6 +19792,7 @@ class CubeChartAnalysisWidget extends CubeAnalysisBase {
|
|
19727
19792
|
};
|
19728
19793
|
this.tooltip = {
|
19729
19794
|
enable: true,
|
19795
|
+
enableAnimation: false,
|
19730
19796
|
shared: false,
|
19731
19797
|
textStyle: {
|
19732
19798
|
fontFamily: FONT_FAMILY
|
@@ -23387,8 +23453,8 @@ let CubeDocumentMatrixComponent = class CubeDocumentMatrixComponent extends Cube
|
|
23387
23453
|
const { xAxis, serie, indices, sum, scope, filters } = this._viewRef.options;
|
23388
23454
|
if (!xAxis || !serie)
|
23389
23455
|
throw 'xAxis and serie required';
|
23390
|
-
this.xAxis = xAxis;
|
23391
|
-
this.serie = serie;
|
23456
|
+
this.xAxis = isArray(xAxis) ? xAxis[0] : xAxis;
|
23457
|
+
this.serie = isArray(serie) ? serie[0] : serie;
|
23392
23458
|
this.indices = indices;
|
23393
23459
|
this.sum = sum;
|
23394
23460
|
this.scope = scope;
|
@@ -23435,7 +23501,7 @@ let CubeDocumentMatrixComponent = class CubeDocumentMatrixComponent extends Cube
|
|
23435
23501
|
}
|
23436
23502
|
};
|
23437
23503
|
CubeDocumentMatrixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeDocumentMatrixComponent, deps: [{ token: DocumentViewRef }, { token: RouterImpl }, { token: CubeService }, { token: DatasourceService }, { token: SessionService }], target: i0.ɵɵFactoryTarget.Component });
|
23438
|
-
CubeDocumentMatrixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: CubeDocumentMatrixComponent, selector: "ng-component", host: { classAttribute: "view" }, viewQueries: [{ propertyName: "table", first: true, predicate: CubeMatrixComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"hasdata; else none\">\r\n <div class=\"nav-toolbar\">\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 <!-- 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)=\"patternChange(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\">{{axes[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 <div class=\"loading-view\" *ngIf=\"loading\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n <bizdoc-cube-matrix [cube]=\"cube.name\" [xAxis]=\"xAxis\" [serie]=\"serie\" [indices]=\"indices\" [sum]
|
23504
|
+
CubeDocumentMatrixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: CubeDocumentMatrixComponent, selector: "ng-component", host: { classAttribute: "view" }, viewQueries: [{ propertyName: "table", first: true, predicate: CubeMatrixComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"hasdata; else none\">\r\n <div class=\"nav-toolbar\">\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 <!-- 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)=\"patternChange(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\">{{axes[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 <div class=\"loading-view\" *ngIf=\"loading\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n <bizdoc-cube-matrix [cube]=\"cube.name\" [xAxis]=\"xAxis\" [serie]=\"serie\" [indices]=\"indices\" [sum]=\"sum\"\r\n [axes]=\"axes\" [scope]=\"scope\" class=\"table\"\r\n (explore)='explore($event)' [(loading)]=\"loading\"></bizdoc-cube-matrix>\r\n</ng-container>\r\n<ng-template #none>\r\n <bizdoc-none icon=\"insert_chart_outlined\" subtitle=\"NothingHere\"></bizdoc-none>\r\n</ng-template>\r\n", styles: [".table{padding:0 8px}\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: CubeMatrixComponent, selector: "bizdoc-cube-matrix", inputs: ["cube", "xAxis", "serie", "indices", "scope", "sum", "axes", "loading", "interactive"], outputs: ["explore", "loadingChange"] }, { type: NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }], 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 } });
|
23439
23505
|
CubeDocumentMatrixComponent = __decorate([
|
23440
23506
|
BizDoc({
|
23441
23507
|
selector: 'bizdoc-cube-matrix'
|
@@ -23443,7 +23509,7 @@ CubeDocumentMatrixComponent = __decorate([
|
|
23443
23509
|
], CubeDocumentMatrixComponent);
|
23444
23510
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeDocumentMatrixComponent, decorators: [{
|
23445
23511
|
type: Component,
|
23446
|
-
args: [{ host: { class: 'view' }, template: "<ng-container *ngIf=\"hasdata; else none\">\r\n <div class=\"nav-toolbar\">\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 <!-- 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)=\"patternChange(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\">{{axes[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 <div class=\"loading-view\" *ngIf=\"loading\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n <bizdoc-cube-matrix [cube]=\"cube.name\" [xAxis]=\"xAxis\" [serie]=\"serie\" [indices]=\"indices\" [sum]
|
23512
|
+
args: [{ host: { class: 'view' }, template: "<ng-container *ngIf=\"hasdata; else none\">\r\n <div class=\"nav-toolbar\">\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 <!-- 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)=\"patternChange(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\">{{axes[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 <div class=\"loading-view\" *ngIf=\"loading\">\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </div>\r\n <bizdoc-cube-matrix [cube]=\"cube.name\" [xAxis]=\"xAxis\" [serie]=\"serie\" [indices]=\"indices\" [sum]=\"sum\"\r\n [axes]=\"axes\" [scope]=\"scope\" class=\"table\"\r\n (explore)='explore($event)' [(loading)]=\"loading\"></bizdoc-cube-matrix>\r\n</ng-container>\r\n<ng-template #none>\r\n <bizdoc-none icon=\"insert_chart_outlined\" subtitle=\"NothingHere\"></bizdoc-none>\r\n</ng-template>\r\n", styles: [".table{padding:0 8px}\n"] }]
|
23447
23513
|
}], ctorParameters: function () { return [{ type: DocumentViewRef }, { type: RouterImpl }, { type: CubeService }, { type: DatasourceService }, { type: SessionService }]; }, propDecorators: { table: [{
|
23448
23514
|
type: ViewChild,
|
23449
23515
|
args: [CubeMatrixComponent, { static: true }]
|
@@ -23873,7 +23939,7 @@ class CubeSumComponent {
|
|
23873
23939
|
this.forward = false;
|
23874
23940
|
this.Math = Math;
|
23875
23941
|
}
|
23876
|
-
ngOnChanges(
|
23942
|
+
ngOnChanges(_) {
|
23877
23943
|
this._cube = this._session.profile.cubes.find(c => c.name === this.cube) || this._session.profile.cubes[0];
|
23878
23944
|
this.currencyCode = this._cube.currencyCode;
|
23879
23945
|
this.digitsInfo = this._service.digitsInfo;
|
@@ -24351,7 +24417,7 @@ let CubeChartViewComponent = class CubeChartViewComponent extends CubeBase {
|
|
24351
24417
|
}
|
24352
24418
|
};
|
24353
24419
|
CubeChartViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeChartViewComponent, deps: [{ token: SessionService }, { token: DocumentViewRef }, { token: CubeService }, { token: RouterImpl }], target: i0.ɵɵFactoryTarget.Component });
|
24354
|
-
CubeChartViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: CubeChartViewComponent, selector: "ng-component", host: { classAttribute: "view" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"hasdata; \">\r\n <!--else none-->\r\n <ng-container [ngSwitch]=\"isAccum\">\r\n <bizdoc-cube-accum *ngSwitchCase=\"true\" [chartType]=\"chartType\" [width]=\"width\" [scope]=\"scope\"\r\n (explore)=\"explore($event)\"\r\n [cube]=\"cube.name\"\r\n [filters]=\"filters\"\r\n [xAxis]=\"xAxis\"></bizdoc-cube-accum>\r\n <bizdoc-cube-chart *ngSwitchDefault [cube]=\"cube.name\"\r\n [xAxis]=\"xAxis\" [series]=\"series\" [indices]=\"indices\"\r\n [filters]=\"filters\"\r\n [chartType]=\"chartType\" [indexChartType]=\"indexChartType\"\r\n [width]=\"width\" [scope]=\"scope\"\r\n (explore)=\"explore($event)\"></bizdoc-cube-chart>\r\n </ng-container>\r\n</ng-container>\r\n<ng-template #none>\r\n <bizdoc-none icon=\"insert_chart_outlined\" subtitle=\"NothingHere\"></bizdoc-none>\r\n</ng-template>\r\n", components: [{ type: CubeAccumulationChartComponent, selector: "bizdoc-cube-accum", inputs: ["height", "width", "cube", "xAxis", "indices", "filters", "chartType", "scope", "loading"], outputs: ["loadingChange", "explore"] }, { type: CubeChartComponent, selector: "bizdoc-cube-chart", inputs: ["width", "height", "cube", "xAxis", "series", "indices", "filters", "chartType", "indexChartType", "scope", "currencyCode", "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: i10$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
|
24420
|
+
CubeChartViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: CubeChartViewComponent, selector: "ng-component", host: { classAttribute: "view" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"hasdata; \">\r\n <!--else none-->\r\n <ng-container [ngSwitch]=\"isAccum\">\r\n <bizdoc-cube-accum *ngSwitchCase=\"true\" [chartType]=\"chartType\" [width]=\"width\" [scope]=\"scope\"\r\n (explore)=\"explore($event)\"\r\n [cube]=\"cube.name\"\r\n [filters]=\"filters\"\r\n [xAxis]=\"xAxis\"></bizdoc-cube-accum>\r\n <bizdoc-cube-chart *ngSwitchDefault [cube]=\"cube.name\"\r\n [xAxis]=\"xAxis\" [series]=\"series\" [indices]=\"indices\"\r\n [filters]=\"filters\"\r\n [chartType]=\"chartType\" [indexChartType]=\"indexChartType\"\r\n [width]=\"width\" [scope]=\"scope\"\r\n (explore)=\"explore($event)\"></bizdoc-cube-chart>\r\n </ng-container>\r\n</ng-container>\r\n<ng-template #none>\r\n <bizdoc-none icon=\"insert_chart_outlined\" subtitle=\"NothingHere\"></bizdoc-none>\r\n</ng-template>\r\n", components: [{ type: CubeAccumulationChartComponent, selector: "bizdoc-cube-accum", inputs: ["height", "width", "cube", "xAxis", "indices", "filters", "chartType", "scope", "loading"], outputs: ["loadingChange", "explore"] }, { type: CubeChartComponent, selector: "bizdoc-cube-chart", inputs: ["width", "height", "cube", "xAxis", "series", "indices", "filters", "yAxis", "chartType", "indexChartType", "scope", "currencyCode", "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: i10$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
|
24355
24421
|
CubeChartViewComponent = __decorate([
|
24356
24422
|
BizDoc({
|
24357
24423
|
selector: 'bizdoc-chart-view'
|
@@ -24429,6 +24495,7 @@ class Item {
|
|
24429
24495
|
this.fill = fill;
|
24430
24496
|
this.tooltipSettings = {
|
24431
24497
|
visible: true,
|
24498
|
+
border: { width: 0 },
|
24432
24499
|
format: '${name} : ${y}',
|
24433
24500
|
trackLineSettings: {},
|
24434
24501
|
textStyle: {
|
@@ -24681,7 +24748,7 @@ const CORE_COMPONENTS = [CubeParallelViewComponent, CubeExploreViewComponent, Cu
|
|
24681
24748
|
];
|
24682
24749
|
class SharedModule {
|
24683
24750
|
static forChild(config) {
|
24684
|
-
const { formats
|
24751
|
+
const { formats } = config || {};
|
24685
24752
|
registerComponents(CORE_COMPONENTS);
|
24686
24753
|
const providers = [{
|
24687
24754
|
provide: RouterImpl, useClass: !config || !config.routing || config.routing === 'ng' ? NgRouter : PaneRouter
|
@@ -24768,11 +24835,11 @@ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
|
|
24768
24835
|
RouterModule,
|
24769
24836
|
MomentModule,
|
24770
24837
|
PickerModule,
|
24771
|
-
|
24838
|
+
SyncfusionGanttModule,
|
24772
24839
|
SyncfusionScheduleModule,
|
24773
24840
|
SyncfusionCircularGaugeModule,
|
24774
24841
|
SyncfusionChartModule,
|
24775
|
-
|
24842
|
+
SyncfusionGanttModule,
|
24776
24843
|
SyncfusionGridModule,
|
24777
24844
|
RichTextEditorModule,
|
24778
24845
|
SyncfusionSpreadsheetModule,
|
@@ -24828,11 +24895,11 @@ SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
24828
24895
|
RouterModule,
|
24829
24896
|
MomentModule,
|
24830
24897
|
PickerModule,
|
24831
|
-
|
24898
|
+
SyncfusionGanttModule,
|
24832
24899
|
SyncfusionScheduleModule,
|
24833
24900
|
SyncfusionCircularGaugeModule,
|
24834
24901
|
SyncfusionChartModule,
|
24835
|
-
|
24902
|
+
SyncfusionGanttModule,
|
24836
24903
|
SyncfusionGridModule,
|
24837
24904
|
RichTextEditorModule,
|
24838
24905
|
SyncfusionSpreadsheetModule,
|
@@ -24908,11 +24975,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
24908
24975
|
RouterModule,
|
24909
24976
|
MomentModule,
|
24910
24977
|
PickerModule,
|
24911
|
-
|
24978
|
+
SyncfusionGanttModule,
|
24912
24979
|
SyncfusionScheduleModule,
|
24913
24980
|
SyncfusionCircularGaugeModule,
|
24914
24981
|
SyncfusionChartModule,
|
24915
|
-
|
24982
|
+
SyncfusionGanttModule,
|
24916
24983
|
SyncfusionGridModule,
|
24917
24984
|
RichTextEditorModule,
|
24918
24985
|
SyncfusionSpreadsheetModule,
|
@@ -26836,7 +26903,7 @@ let PositionsComponent = class PositionsComponent {
|
|
26836
26903
|
let positions = model.positions;
|
26837
26904
|
if (!positions || !Object.keys(positions).length)
|
26838
26905
|
continue;
|
26839
|
-
const roles = this.
|
26906
|
+
const roles = this._session.profile.roles.filter(r => r.dataType === type.name && positions[r.name]);
|
26840
26907
|
const rows = [];
|
26841
26908
|
rows.push([this._translate.get('Type'), this._translate.get('Value'), '', ...roles.map(r => r.title)]);
|
26842
26909
|
model.patterns && model.patterns.forEach(p => {
|
@@ -26875,24 +26942,63 @@ let PositionsComponent = class PositionsComponent {
|
|
26875
26942
|
}
|
26876
26943
|
XLSX.writeFile(wb, `${this._translate.get('Positions')}.xlsx`);
|
26877
26944
|
}
|
26945
|
+
async upload(evt) {
|
26946
|
+
const { files } = evt.srcElement;
|
26947
|
+
if (files && files.length) {
|
26948
|
+
const file = files.item(0);
|
26949
|
+
var reader = new FileReader();
|
26950
|
+
reader.onload = e => { };
|
26951
|
+
const text = await file.text();
|
26952
|
+
//reader.readAs(text);
|
26953
|
+
const wb = XLSX.readFile(file.name, {});
|
26954
|
+
for (let i = 0; i < wb.SheetNames.length; i++) {
|
26955
|
+
let title = wb.SheetNames[i], ws = wb.Sheets[title];
|
26956
|
+
let type = this.types.find(t => t.title === title);
|
26957
|
+
if (!type)
|
26958
|
+
throw '';
|
26959
|
+
let roles = this._session.profile.roles.filter(r => r.dataType === type.name);
|
26960
|
+
let row = ws['!rows'][0];
|
26961
|
+
for (let c = 0; c < ws['!cols'].length; c++) {
|
26962
|
+
let col = ws['!cols'][c];
|
26963
|
+
//let role = roles.find(r => r.title === ws.);
|
26964
|
+
// if (!role) {
|
26965
|
+
// this._everything[type.name].roles.push({name: '', title: ''});
|
26966
|
+
// }
|
26967
|
+
}
|
26968
|
+
for (let r = 0; r < ws['!rows'].length; r++) {
|
26969
|
+
let row = ws['!rows'][r];
|
26970
|
+
for (let c = 0; c < ws['!cols'].length; c++) {
|
26971
|
+
let col = ws['!cols'][c], content = '';
|
26972
|
+
if (content) {
|
26973
|
+
//let users = content.split(', ').map(name=> this.profiles.find(u=> u.name === name));
|
26974
|
+
}
|
26975
|
+
else { }
|
26976
|
+
}
|
26977
|
+
}
|
26978
|
+
}
|
26979
|
+
}
|
26980
|
+
}
|
26878
26981
|
ngOnDestroy() {
|
26879
26982
|
this._destroy.next();
|
26880
26983
|
this._destroy.complete();
|
26881
26984
|
}
|
26882
26985
|
};
|
26883
26986
|
PositionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: PositionsComponent, deps: [{ token: SessionService }, { token: UtilityRef }, { token: DatasourceService }, { token: PromptService }, { token: AccountService }, { token: WindowTitleService }, { token: TranslateService }, { token: Popup }, { token: i3$2.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
26884
|
-
PositionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: PositionsComponent, selector: "ng-component", viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "noRoleTpl", first: true, predicate: ["noRoleTpl"], descendants: true, static: true }, { propertyName: "roleTpl", first: true, predicate: ["roleTpl"], descendants: true, static: true }, { propertyName: "patternTpl", first: true, predicate: ["patternTpl"], descendants: true, static: true }, { propertyName: "newGroupTpl", first: true, predicate: ["groupTpl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-button [matMenuTriggerFor]=\"typeMenu\">{{type?.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #typeMenu>\r\n <button mat-menu-item *ngFor=\"let t of types\" (click)=\"change(t.name)\">{{t.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<table mat-table matSort [dataSource]=\"dataSource\" [style.display]=\"dataSource ? '': 'none'\">\r\n <ng-container *ngFor=\"let column of (type?.columns ||[])\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{column.label}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element[column.name]}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"key\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span [ngSwitch]=\"element.type\">\r\n <ng-container *ngSwitchCase=\"'group'\">({{'Group'|translate}})</ng-container>\r\n <ng-container *ngSwitchCase=\"'pattern'\">({{'Pattern'|translate}})</ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{element.key}}\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n {{element.value}}\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let role of roles\" [matColumnDef]=\"role.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{role.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\" [attr.data-role]=\"role.name\">\r\n <ng-container *ngIf=\"positions[role.name][element.key]\">\r\n <ng-container *ngFor=\"let u of positions[role.name][element.key]; let first = first\">\r\n <ng-container *ngIf=\"!first\">, </ng-container>\r\n {{profiles[u]?.name}}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"element.type === 'pattern' || element.type === 'group'\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-container *ngIf=\"element.type === 'pattern'\">\r\n <button mat-menu-item (click)=\"editPattern(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deletePattern(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"element.type === 'group'\">\r\n <button mat-menu-item (click)=\"editGroup(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deleteGroup(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns\" (click)=\"edit(element.key, $event)\"></tr>\r\n</table>\r\n<!-- role template -->\r\n<ng-template #roleTpl>\r\n <h2 mat-dialog-title>{{'Role' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"role\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"role.value\" color=\"primary\" [disabled]=\"!role.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- pattern template -->\r\n<ng-template #patternTpl>\r\n <h2 mat-dialog-title>{{'Pattern' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"pattern\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput formControlName=\"expression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"pattern.value\" color=\"primary\" [disabled]=\"!pattern.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- group -->\r\n<ng-template #groupTpl>\r\n <h2 mat-dialog-title>{{'Group' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"group\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Items'|translate\" multiple formControlName=\"items\" required>\r\n <mat-select-trigger>\r\n {{group.value.items ? group.value.items[0] : ''}}\r\n <span *ngIf=\"group.value.items?.length > 1\" class=\"additional-selection\">\r\n (+{{group.value.items.length - 1}} {{(group.value.items?.length === 2 ? 'Other' : 'Others')|translate}})\r\n </span>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let v of source\" [value]=\"v.key\">\r\n <span *ngIf=\"!type.columns\">{{v.value}}</span>\r\n <span *ngIf=\"type.columns\"><span *ngFor=\"let c of type.columns\">{{v.value[c.name]}}</span></span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"group.value\" color=\"primary\" [disabled]=\"!group.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #noRoleTpl>\r\n <mat-dialog-content>\r\n {{'NoRoles'|translate : type?.title}}\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">{{'CreateRole' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n", styles: ["table{width:100%}.form{padding:8px}table :ng-deep .mat-cell{cursor:pointer;border-left-width:1px;border-left-style:outset;padding:0 4px!important}\n"], components: [{ type: i7$4.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: SearchInput, selector: "bizdoc-search-input", outputs: ["valueChange"] }, { 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: i11$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i6$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i12.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ 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"] }, { type: i6$2.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$1.MatCellDef, selector: "[matCellDef]" }, { type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i10$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i10$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i3$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i3$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i1$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i4.MatSelectTrigger, selector: "mat-select-trigger" }], pipes: { "translate": TranslatePipe, "sanitizeHtml": SanitizeHtmlPipe } });
|
26987
|
+
PositionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: PositionsComponent, selector: "ng-component", viewQueries: [{ propertyName: "_fileElement", first: true, predicate: ["file"], descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "noRoleTpl", first: true, predicate: ["noRoleTpl"], descendants: true, static: true }, { propertyName: "roleTpl", first: true, predicate: ["roleTpl"], descendants: true, static: true }, { propertyName: "patternTpl", first: true, predicate: ["patternTpl"], descendants: true, static: true }, { propertyName: "newGroupTpl", first: true, predicate: ["groupTpl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-button [matMenuTriggerFor]=\"typeMenu\">{{type?.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #typeMenu>\r\n <button mat-menu-item *ngFor=\"let t of types\" (click)=\"change(t.name)\">{{t.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<table mat-table matSort [dataSource]=\"dataSource\" [style.display]=\"dataSource ? '': 'none'\">\r\n <ng-container *ngFor=\"let column of (type?.columns ||[])\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{column.label}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element[column.name]}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"key\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span [ngSwitch]=\"element.type\">\r\n <ng-container *ngSwitchCase=\"'group'\">({{'Group'|translate}})</ng-container>\r\n <ng-container *ngSwitchCase=\"'pattern'\">({{'Pattern'|translate}})</ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{element.key}}\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n {{element.value}}\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let role of roles\" [matColumnDef]=\"role.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{role.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\" [attr.data-role]=\"role.name\">\r\n <ng-container *ngIf=\"positions[role.name][element.key]\">\r\n <ng-container *ngFor=\"let u of positions[role.name][element.key]; let first = first\">\r\n <ng-container *ngIf=\"!first\">, </ng-container>\r\n {{profiles[u]?.name}}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"element.type === 'pattern' || element.type === 'group'\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-container *ngIf=\"element.type === 'pattern'\">\r\n <button mat-menu-item (click)=\"editPattern(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deletePattern(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"element.type === 'group'\">\r\n <button mat-menu-item (click)=\"editGroup(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deleteGroup(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns\" (click)=\"edit(element.key, $event)\"></tr>\r\n</table>\r\n<!-- role template -->\r\n<ng-template #roleTpl>\r\n <h2 mat-dialog-title>{{'Role' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"role\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"role.value\" color=\"primary\" [disabled]=\"!role.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- pattern template -->\r\n<ng-template #patternTpl>\r\n <h2 mat-dialog-title>{{'Pattern' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"pattern\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput formControlName=\"expression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"pattern.value\" color=\"primary\" [disabled]=\"!pattern.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- group -->\r\n<ng-template #groupTpl>\r\n <h2 mat-dialog-title>{{'Group' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"group\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Items'|translate\" multiple formControlName=\"items\" required>\r\n <mat-select-trigger>\r\n {{group.value.items ? group.value.items[0] : ''}}\r\n <span *ngIf=\"group.value.items?.length > 1\" class=\"additional-selection\">\r\n (+{{group.value.items.length - 1}} {{(group.value.items?.length === 2 ? 'Other' : 'Others')|translate}})\r\n </span>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let v of source\" [value]=\"v.key\">\r\n <span *ngIf=\"!type.columns\">{{v.value}}</span>\r\n <span *ngIf=\"type.columns\"><span *ngFor=\"let c of type.columns\">{{v.value[c.name]}}</span></span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"group.value\" color=\"primary\" [disabled]=\"!group.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #noRoleTpl>\r\n <mat-dialog-content>\r\n {{'NoRoles'|translate : type?.title}}\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">{{'CreateRole' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<form style=\"display:none\">\r\n <input type=\"file\" name=\"file\" (onchange)=\"upload($event)\" #file/>\r\n</form>\r\n", styles: ["table{width:100%}.form{padding:8px}table :ng-deep .mat-cell{cursor:pointer;border-left-width:1px;border-left-style:outset;padding:0 4px!important}\n"], components: [{ type: i7$4.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: SearchInput, selector: "bizdoc-search-input", outputs: ["valueChange"] }, { 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: i11$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i6$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i12.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ 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"] }, { type: i6$2.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$1.MatCellDef, selector: "[matCellDef]" }, { type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i10$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i10$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i3$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i3$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i1$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i4.MatSelectTrigger, selector: "mat-select-trigger" }], pipes: { "translate": TranslatePipe, "sanitizeHtml": SanitizeHtmlPipe } });
|
26885
26988
|
PositionsComponent = __decorate([
|
26886
26989
|
BizDoc({ selector: 'bizdoc-positions' })
|
26887
26990
|
/** positions component*/
|
26888
26991
|
], PositionsComponent);
|
26889
26992
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: PositionsComponent, decorators: [{
|
26890
26993
|
type: Component,
|
26891
|
-
args: [{ template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-button [matMenuTriggerFor]=\"typeMenu\">{{type?.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #typeMenu>\r\n <button mat-menu-item *ngFor=\"let t of types\" (click)=\"change(t.name)\">{{t.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<table mat-table matSort [dataSource]=\"dataSource\" [style.display]=\"dataSource ? '': 'none'\">\r\n <ng-container *ngFor=\"let column of (type?.columns ||[])\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{column.label}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element[column.name]}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"key\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span [ngSwitch]=\"element.type\">\r\n <ng-container *ngSwitchCase=\"'group'\">({{'Group'|translate}})</ng-container>\r\n <ng-container *ngSwitchCase=\"'pattern'\">({{'Pattern'|translate}})</ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{element.key}}\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n {{element.value}}\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let role of roles\" [matColumnDef]=\"role.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{role.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\" [attr.data-role]=\"role.name\">\r\n <ng-container *ngIf=\"positions[role.name][element.key]\">\r\n <ng-container *ngFor=\"let u of positions[role.name][element.key]; let first = first\">\r\n <ng-container *ngIf=\"!first\">, </ng-container>\r\n {{profiles[u]?.name}}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"element.type === 'pattern' || element.type === 'group'\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-container *ngIf=\"element.type === 'pattern'\">\r\n <button mat-menu-item (click)=\"editPattern(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deletePattern(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"element.type === 'group'\">\r\n <button mat-menu-item (click)=\"editGroup(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deleteGroup(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns\" (click)=\"edit(element.key, $event)\"></tr>\r\n</table>\r\n<!-- role template -->\r\n<ng-template #roleTpl>\r\n <h2 mat-dialog-title>{{'Role' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"role\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"role.value\" color=\"primary\" [disabled]=\"!role.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- pattern template -->\r\n<ng-template #patternTpl>\r\n <h2 mat-dialog-title>{{'Pattern' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"pattern\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput formControlName=\"expression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"pattern.value\" color=\"primary\" [disabled]=\"!pattern.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- group -->\r\n<ng-template #groupTpl>\r\n <h2 mat-dialog-title>{{'Group' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"group\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Items'|translate\" multiple formControlName=\"items\" required>\r\n <mat-select-trigger>\r\n {{group.value.items ? group.value.items[0] : ''}}\r\n <span *ngIf=\"group.value.items?.length > 1\" class=\"additional-selection\">\r\n (+{{group.value.items.length - 1}} {{(group.value.items?.length === 2 ? 'Other' : 'Others')|translate}})\r\n </span>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let v of source\" [value]=\"v.key\">\r\n <span *ngIf=\"!type.columns\">{{v.value}}</span>\r\n <span *ngIf=\"type.columns\"><span *ngFor=\"let c of type.columns\">{{v.value[c.name]}}</span></span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"group.value\" color=\"primary\" [disabled]=\"!group.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #noRoleTpl>\r\n <mat-dialog-content>\r\n {{'NoRoles'|translate : type?.title}}\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">{{'CreateRole' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n", styles: ["table{width:100%}.form{padding:8px}table :ng-deep .mat-cell{cursor:pointer;border-left-width:1px;border-left-style:outset;padding:0 4px!important}\n"] }]
|
26994
|
+
args: [{ template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-button [matMenuTriggerFor]=\"typeMenu\">{{type?.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #typeMenu>\r\n <button mat-menu-item *ngFor=\"let t of types\" (click)=\"change(t.name)\">{{t.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<table mat-table matSort [dataSource]=\"dataSource\" [style.display]=\"dataSource ? '': 'none'\">\r\n <ng-container *ngFor=\"let column of (type?.columns ||[])\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{column.label}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element[column.name]}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"key\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span [ngSwitch]=\"element.type\">\r\n <ng-container *ngSwitchCase=\"'group'\">({{'Group'|translate}})</ng-container>\r\n <ng-container *ngSwitchCase=\"'pattern'\">({{'Pattern'|translate}})</ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{element.key}}\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n {{element.value}}\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let role of roles\" [matColumnDef]=\"role.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{role.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\" [attr.data-role]=\"role.name\">\r\n <ng-container *ngIf=\"positions[role.name][element.key]\">\r\n <ng-container *ngFor=\"let u of positions[role.name][element.key]; let first = first\">\r\n <ng-container *ngIf=\"!first\">, </ng-container>\r\n {{profiles[u]?.name}}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"element.type === 'pattern' || element.type === 'group'\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-container *ngIf=\"element.type === 'pattern'\">\r\n <button mat-menu-item (click)=\"editPattern(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deletePattern(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"element.type === 'group'\">\r\n <button mat-menu-item (click)=\"editGroup(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deleteGroup(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns\" (click)=\"edit(element.key, $event)\"></tr>\r\n</table>\r\n<!-- role template -->\r\n<ng-template #roleTpl>\r\n <h2 mat-dialog-title>{{'Role' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"role\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"role.value\" color=\"primary\" [disabled]=\"!role.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- pattern template -->\r\n<ng-template #patternTpl>\r\n <h2 mat-dialog-title>{{'Pattern' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"pattern\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput formControlName=\"expression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"pattern.value\" color=\"primary\" [disabled]=\"!pattern.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- group -->\r\n<ng-template #groupTpl>\r\n <h2 mat-dialog-title>{{'Group' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"group\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Items'|translate\" multiple formControlName=\"items\" required>\r\n <mat-select-trigger>\r\n {{group.value.items ? group.value.items[0] : ''}}\r\n <span *ngIf=\"group.value.items?.length > 1\" class=\"additional-selection\">\r\n (+{{group.value.items.length - 1}} {{(group.value.items?.length === 2 ? 'Other' : 'Others')|translate}})\r\n </span>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let v of source\" [value]=\"v.key\">\r\n <span *ngIf=\"!type.columns\">{{v.value}}</span>\r\n <span *ngIf=\"type.columns\"><span *ngFor=\"let c of type.columns\">{{v.value[c.name]}}</span></span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"group.value\" color=\"primary\" [disabled]=\"!group.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #noRoleTpl>\r\n <mat-dialog-content>\r\n {{'NoRoles'|translate : type?.title}}\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">{{'CreateRole' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<form style=\"display:none\">\r\n <input type=\"file\" name=\"file\" (onchange)=\"upload($event)\" #file/>\r\n</form>\r\n", styles: ["table{width:100%}.form{padding:8px}table :ng-deep .mat-cell{cursor:pointer;border-left-width:1px;border-left-style:outset;padding:0 4px!important}\n"] }]
|
26892
26995
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: UtilityRef, decorators: [{
|
26893
26996
|
type: Inject,
|
26894
26997
|
args: [UtilityRef]
|
26895
|
-
}] }, { type: DatasourceService }, { type: PromptService }, { type: AccountService }, { type: WindowTitleService }, { type: TranslateService }, { type: Popup }, { type: i3$2.MatDialog }]; }, propDecorators: {
|
26998
|
+
}] }, { type: DatasourceService }, { type: PromptService }, { type: AccountService }, { type: WindowTitleService }, { type: TranslateService }, { type: Popup }, { type: i3$2.MatDialog }]; }, propDecorators: { _fileElement: [{
|
26999
|
+
type: ViewChild,
|
27000
|
+
args: ['file', { static: true }]
|
27001
|
+
}], sort: [{
|
26896
27002
|
type: ViewChild,
|
26897
27003
|
args: [MatSort]
|
26898
27004
|
}], noRoleTpl: [{
|