@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/fesm2015/bizdoc-core.mjs
CHANGED
@@ -115,7 +115,7 @@ import * as i24 from '@angular/flex-layout/extended';
|
|
115
115
|
import * as i4$1 from '@ctrl/ngx-emoji-mart';
|
116
116
|
import { PickerModule } from '@ctrl/ngx-emoji-mart';
|
117
117
|
import * as i8$2 from '@syncfusion/ej2-angular-charts';
|
118
|
-
import { AccumulationChart, FunnelSeries, AccumulationDataLabel, AccumulationTooltip, AccumulationLegend, Export, PieSeries, ChartModule, AccumulationChartAllModule,
|
118
|
+
import { AccumulationChart, FunnelSeries, AccumulationDataLabel, AccumulationTooltip, AccumulationLegend, Export, PieSeries, ChartModule, AccumulationChartAllModule, SparklineAllModule, LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService, SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService, StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService, BarSeriesService, StackingBarSeriesService, RangeColumnSeriesService, BubbleSeriesService, TooltipService, CrosshairService, CategoryService, DateTimeService, LogarithmicService, LegendService, ZoomService, DataLabelService, SelectionService, ChartAnnotationService, WaterfallSeriesService, RangeAreaSeriesService, PolarSeriesService, RadarSeriesService, DateTimeCategoryService, MultiLevelLabelService, ParetoSeriesService, TooltipRenderService, ExportService, AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService, AccumulationChartComponent, Chart as Chart$1, DateTime as DateTime$1, BarSeries as BarSeries$1, AreaSeries as AreaSeries$1, BubbleSeries as BubbleSeries$1, ColumnSeries as ColumnSeries$1, LineSeries as LineSeries$1, PolarSeries as PolarSeries$1, RadarSeries as RadarSeries$1, SplineSeries as SplineSeries$1, SplineAreaSeries as SplineAreaSeries$1, ScatterSeries as ScatterSeries$1, StackingLineSeries as StackingLineSeries$1, StackingAreaSeries as StackingAreaSeries$1, StackingColumnSeries as StackingColumnSeries$1, StackingBarSeries as StackingBarSeries$1, StepAreaSeries as StepAreaSeries$1, StepLineSeries as StepLineSeries$1, ChartComponent } from '@syncfusion/ej2-angular-charts';
|
119
119
|
import * as XLSX from 'xlsx';
|
120
120
|
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';
|
121
121
|
import * as i6$5 from '@syncfusion/ej2-angular-grids';
|
@@ -132,7 +132,7 @@ import { KanbanComponent, KanbanModule } from '@syncfusion/ej2-angular-kanban';
|
|
132
132
|
import { CircularGaugeModule, AnnotationsService, GaugeTooltipService, LegendService as LegendService$1, CircularGauge, Annotations, GaugeTooltip, CircularGaugeComponent, Legend as Legend$1 } from '@syncfusion/ej2-angular-circulargauge';
|
133
133
|
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';
|
134
134
|
import * as i7$6 from '@syncfusion/ej2-angular-gantt';
|
135
|
-
import { Gantt, SelectionService as SelectionService$3, DayMarkersService
|
135
|
+
import { GanttModule, Gantt, SelectionService as SelectionService$3, DayMarkersService } from '@syncfusion/ej2-angular-gantt';
|
136
136
|
import player from 'lottie-web/build/player/lottie';
|
137
137
|
|
138
138
|
const expandListItemAnimation = trigger('detailExpand', [
|
@@ -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;
|
@@ -915,9 +918,6 @@ class FirebaseService {
|
|
915
918
|
}
|
916
919
|
}
|
917
920
|
|
918
|
-
class AuthenticationImpl {
|
919
|
-
}
|
920
|
-
|
921
921
|
/** Listen to hub contracts */
|
922
922
|
class HubService {
|
923
923
|
constructor(_auth) {
|
@@ -1715,8 +1715,8 @@ const STRINGS = {
|
|
1715
1715
|
MailVersionUpdate: '#{0} updated by {1}',
|
1716
1716
|
NewComment: 'Someone commented...',
|
1717
1717
|
Commented: '{0} commented',
|
1718
|
-
DeleteFile: 'Delete
|
1719
|
-
DeleteFileAsk: 'Are you sure you want to delete this
|
1718
|
+
DeleteFile: 'Delete Attachment',
|
1719
|
+
DeleteFileAsk: 'Are you sure you want to delete this attachment?',
|
1720
1720
|
DeleteCommentAsk: 'Are you sure you want to delete this comment?',
|
1721
1721
|
GrantAccess: 'Grant Access',
|
1722
1722
|
GrantTip: 'May sign in on your behalf, view and take action',
|
@@ -1822,7 +1822,7 @@ const STRINGS = {
|
|
1822
1822
|
Form: 'Form',
|
1823
1823
|
ActionAsk: 'Are you sure you want to {0}?',
|
1824
1824
|
Discard: 'Discard',
|
1825
|
-
DiscardAsk: 'Are you sure you want to permenently discard
|
1825
|
+
DiscardAsk: 'Are you sure you want to permenently discard this document?',
|
1826
1826
|
DiscardSelected: 'Discard {0} item(s)',
|
1827
1827
|
TypeHere: 'Type here',
|
1828
1828
|
ChatHere: 'Chat here',
|
@@ -2702,16 +2702,17 @@ const IMAGE_TYPE = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif'];
|
|
2702
2702
|
function isImage(contentType) {
|
2703
2703
|
return IMAGE_TYPE.indexOf(contentType) > -1;
|
2704
2704
|
}
|
2705
|
-
function formatUrl(documentId, fileId) {
|
2706
|
-
return `/api/mailbox/download/${documentId}?fileId=${fileId}`;
|
2705
|
+
function formatUrl(documentId, fileId, token) {
|
2706
|
+
return `/api/mailbox/download/${documentId}?fileId=${fileId}&access_token=${token}`;
|
2707
2707
|
}
|
2708
2708
|
const ANIMATION_TIMINGS = '400ms cubic-bezier(0.25, 0.8, 0.25, 1)';
|
2709
2709
|
/** attachment-preview component*/
|
2710
2710
|
class AttachmentPreview {
|
2711
2711
|
/** attachment-preview ctor */
|
2712
|
-
constructor(_directionality, _renderer, data, sanitizer, _overlayRef) {
|
2712
|
+
constructor(_directionality, _renderer, data, sanitizer, _auth, _overlayRef) {
|
2713
2713
|
this._renderer = _renderer;
|
2714
2714
|
this.data = data;
|
2715
|
+
this._auth = _auth;
|
2715
2716
|
this._overlayRef = _overlayRef;
|
2716
2717
|
this.loading = true;
|
2717
2718
|
this.animationState = 'enter';
|
@@ -2741,7 +2742,7 @@ class AttachmentPreview {
|
|
2741
2742
|
location.assign(this._url());
|
2742
2743
|
}
|
2743
2744
|
_url() {
|
2744
|
-
return formatUrl(this.data.documentId, this.data.file.id);
|
2745
|
+
return formatUrl(this.data.documentId, this.data.file.id, this._auth.getAccessToken());
|
2745
2746
|
}
|
2746
2747
|
rotate() {
|
2747
2748
|
const elem = (this.isImage ? this.img : this.obj).nativeElement;
|
@@ -2783,7 +2784,7 @@ class AttachmentPreview {
|
|
2783
2784
|
this.animationState = 'leave';
|
2784
2785
|
}
|
2785
2786
|
}
|
2786
|
-
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 });
|
2787
|
+
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 });
|
2787
2788
|
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: [
|
2788
2789
|
trigger('fade', [
|
2789
2790
|
state('fadeOut', style({ opacity: 0 })),
|
@@ -2828,7 +2829,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
2828
2829
|
return [{ type: i7.Directionality }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
|
2829
2830
|
type: Inject,
|
2830
2831
|
args: [FILE_PREVIEW_DIALOG_DATA]
|
2831
|
-
}] }, { type: i1$2.DomSanitizer }, { type: i1$1.OverlayRef }];
|
2832
|
+
}] }, { type: i1$2.DomSanitizer }, { type: AuthenticationImpl }, { type: i1$1.OverlayRef }];
|
2832
2833
|
}, propDecorators: { obj: [{
|
2833
2834
|
type: ViewChild,
|
2834
2835
|
args: ['obj', { static: false }]
|
@@ -5985,12 +5986,9 @@ class BrowseFilterComponent {
|
|
5985
5986
|
const folder = this._session.profile.folders.find(f => f.name === this.folderId);
|
5986
5987
|
if (folder.filters)
|
5987
5988
|
this.filters = folder.filters;
|
5988
|
-
|
5989
|
-
const { axes, cube } = this._config.folders;
|
5990
|
-
this.filters = { axes, cube };
|
5991
|
-
}
|
5989
|
+
return;
|
5992
5990
|
}
|
5993
|
-
|
5991
|
+
if (this._config.folders && this._config.folders.axes) {
|
5994
5992
|
const { axes, cube } = this._config.folders;
|
5995
5993
|
this.filters = { axes, cube };
|
5996
5994
|
}
|
@@ -6868,7 +6866,7 @@ class BrowseItemsComponent {
|
|
6868
6866
|
this._loading$.pipe(takeUntil(this._destroy), debounceTime$1(100)).
|
6869
6867
|
subscribe(e => this.loading = e);
|
6870
6868
|
}
|
6871
|
-
ngOnChanges(
|
6869
|
+
ngOnChanges(_) {
|
6872
6870
|
this.displayedColumns = this._columns();
|
6873
6871
|
this.refresh();
|
6874
6872
|
}
|
@@ -7059,7 +7057,7 @@ class BrowseItemsComponent {
|
|
7059
7057
|
}
|
7060
7058
|
}
|
7061
7059
|
/**
|
7062
|
-
* execute function per item
|
7060
|
+
* execute function per selected item
|
7063
7061
|
* @param fn
|
7064
7062
|
* @param error
|
7065
7063
|
*/
|
@@ -7106,6 +7104,11 @@ class BrowseItemsComponent {
|
|
7106
7104
|
const columns = ['select'];
|
7107
7105
|
if (this.folder && this.folder.columns)
|
7108
7106
|
this._appendcolumns(this.folder.columns, columns);
|
7107
|
+
else if (!this.folder) {
|
7108
|
+
const folder = this._session.profile.folders.find(f => f.name === 'fav');
|
7109
|
+
if (folder && folder.columns)
|
7110
|
+
this._appendcolumns(folder.columns, columns);
|
7111
|
+
}
|
7109
7112
|
else if (this._config.folders && this._config.folders.columns)
|
7110
7113
|
this._appendcolumns(this._config.folders.columns, columns);
|
7111
7114
|
else {
|
@@ -7129,7 +7132,11 @@ class BrowseItemsComponent {
|
|
7129
7132
|
}
|
7130
7133
|
sendAll(action, args) {
|
7131
7134
|
const params = queryParams(args);
|
7132
|
-
this._forEach(i => this._mailbox.send(i.id, i.version, i.formId, null, action, params).
|
7135
|
+
this._forEach(i => this._mailbox.send(i.id, i.version, i.formId, null, action, params).
|
7136
|
+
pipe(tap(() => {
|
7137
|
+
if (i.folderId !== this.folderId)
|
7138
|
+
this.dataSource.data.remove(i);
|
7139
|
+
})), 'SendErr').
|
7133
7140
|
subscribe(is => is.length > 1 ? this._sb.toast('SentMany', is.length.toString(), this._actionAdjective(action, true)) :
|
7134
7141
|
this._sb.toast('Sent', is[0].number, this._actionAdjective(action)));
|
7135
7142
|
}
|
@@ -8322,8 +8329,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
8322
8329
|
}] } });
|
8323
8330
|
|
8324
8331
|
class FormRef {
|
8325
|
-
constructor(_router) {
|
8326
|
-
this._router = _router;
|
8332
|
+
constructor( /*private _router: RouterImpl*/) {
|
8327
8333
|
this._saving = new Subject();
|
8328
8334
|
this._stateChange = new Subject();
|
8329
8335
|
this._modelChange = new Subject();
|
@@ -8352,10 +8358,10 @@ class FormRef {
|
|
8352
8358
|
* @param page
|
8353
8359
|
*/
|
8354
8360
|
navigate(page) {
|
8355
|
-
this._router.navigate([], {
|
8356
|
-
|
8357
|
-
|
8358
|
-
});
|
8361
|
+
//this._router.navigate([], {
|
8362
|
+
// queryParams: { page },
|
8363
|
+
// state: { paging: true }
|
8364
|
+
//});
|
8359
8365
|
this._navigating.next(page);
|
8360
8366
|
}
|
8361
8367
|
/** release events */
|
@@ -8830,7 +8836,7 @@ class ComposeFormComponent {
|
|
8830
8836
|
if (!this.form.template)
|
8831
8837
|
throw (`Form '${this.form.name}' model missing '[Template()]' attribute.`);
|
8832
8838
|
const factory = this._cf.resolve(this.form.template);
|
8833
|
-
this._formRef = new FormRef(
|
8839
|
+
this._formRef = new FormRef();
|
8834
8840
|
this._formRef._navigating.
|
8835
8841
|
subscribe(p => this.page = p);
|
8836
8842
|
this._formRef._stateChange.pipe(startWith()).
|
@@ -9176,7 +9182,7 @@ class ComposePaneComponent {
|
|
9176
9182
|
this._pane.icon = form.icon;
|
9177
9183
|
if (this.model.draft) {
|
9178
9184
|
this.mode = 'compose';
|
9179
|
-
//this._pane.expand();
|
9185
|
+
//setTimeout(()=>this._pane.expand());
|
9180
9186
|
}
|
9181
9187
|
else
|
9182
9188
|
this.mode = 'preview';
|
@@ -9214,6 +9220,9 @@ class ComposePaneComponent {
|
|
9214
9220
|
});
|
9215
9221
|
this._pane.fullscreenChange.subscribe(f => this.expendable = !f);
|
9216
9222
|
}
|
9223
|
+
close() {
|
9224
|
+
this._pane.close();
|
9225
|
+
}
|
9217
9226
|
edit() {
|
9218
9227
|
this.mode = 'compose';
|
9219
9228
|
this.expendable && this.expand();
|
@@ -9300,12 +9309,12 @@ class ComposePaneComponent {
|
|
9300
9309
|
}
|
9301
9310
|
}
|
9302
9311
|
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 });
|
9303
|
-
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 <
|
9312
|
+
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 } });
|
9304
9313
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ComposePaneComponent, decorators: [{
|
9305
9314
|
type: Component,
|
9306
9315
|
args: [{ selector: 'bizdoc-compose.pane', host: {
|
9307
9316
|
class: 'pane'
|
9308
|
-
}, 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 <
|
9317
|
+
}, 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"] }]
|
9309
9318
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: MailboxService }, { type: PaneRef }, { type: PanesRouter }]; }, propDecorators: { form: [{
|
9310
9319
|
type: ViewChild,
|
9311
9320
|
args: [ComposeFormComponent, { static: true }]
|
@@ -9357,6 +9366,8 @@ class BrowsePaneComponent {
|
|
9357
9366
|
this.filterType = p['type'];
|
9358
9367
|
if (this.filterType === 'flagged')
|
9359
9368
|
this._pane.title = this._translate.get('Flagged');
|
9369
|
+
else if (p['tag'])
|
9370
|
+
this._pane.title = this._translate.get('Tags');
|
9360
9371
|
this.filters = p;
|
9361
9372
|
});
|
9362
9373
|
const events = this._router.events.pipe(takeUntil(this._destroy));
|
@@ -9509,6 +9520,7 @@ class CubeAccumulationChartComponent {
|
|
9509
9520
|
this.endAngle = 360;
|
9510
9521
|
this.innerRadius = '0';
|
9511
9522
|
}
|
9523
|
+
this.execute();
|
9512
9524
|
}
|
9513
9525
|
textRender(e) {
|
9514
9526
|
e.text = e.point.x;
|
@@ -9531,10 +9543,13 @@ class CubeAccumulationChartComponent {
|
|
9531
9543
|
*
|
9532
9544
|
*/
|
9533
9545
|
ngOnChanges(changes) {
|
9534
|
-
if (changes['filters'])
|
9546
|
+
if (changes['filters'] && !changes['filters'].firstChange)
|
9535
9547
|
this.execute();
|
9536
9548
|
else if (changes['height'])
|
9537
|
-
this.
|
9549
|
+
this.resize();
|
9550
|
+
}
|
9551
|
+
resize() {
|
9552
|
+
this.accumchart && this.accumchart.accumulationResize();
|
9538
9553
|
}
|
9539
9554
|
execute() {
|
9540
9555
|
this.loadingChange.emit(true);
|
@@ -9564,11 +9579,17 @@ class CubeAccumulationChartComponent {
|
|
9564
9579
|
height: this.height,
|
9565
9580
|
currencyCode: this.currencyCode,
|
9566
9581
|
series: [{
|
9567
|
-
dataSource: this.dataSource,
|
9568
|
-
|
9569
|
-
|
9570
|
-
|
9571
|
-
|
9582
|
+
dataSource: this.dataSource,
|
9583
|
+
xName: 'name',
|
9584
|
+
yName: 'y',
|
9585
|
+
startAngle: this.startAngle,
|
9586
|
+
endAngle: this.endAngle,
|
9587
|
+
radius: "70%",
|
9588
|
+
dataLabel: this.dataLabel,
|
9589
|
+
explode: true,
|
9590
|
+
explodeOffset: '10%',
|
9591
|
+
explodeIndex: 0,
|
9592
|
+
innerRadius: this.innerRadius,
|
9572
9593
|
palettes: this.palettes
|
9573
9594
|
}]
|
9574
9595
|
}, this._elementRef.nativeElement);
|
@@ -9670,6 +9691,8 @@ class CubeChartComponent {
|
|
9670
9691
|
};
|
9671
9692
|
this.tooltip = {
|
9672
9693
|
enable: true,
|
9694
|
+
enableAnimation: false,
|
9695
|
+
border: { width: 0 },
|
9673
9696
|
textStyle: {
|
9674
9697
|
fontFamily: FONT_FAMILY
|
9675
9698
|
}
|
@@ -9700,26 +9723,35 @@ class CubeChartComponent {
|
|
9700
9723
|
set series(value) {
|
9701
9724
|
if (value)
|
9702
9725
|
this._series = isArray(value) ? value : [value];
|
9726
|
+
else
|
9727
|
+
this._series = null;
|
9703
9728
|
}
|
9704
9729
|
get indices() {
|
9705
9730
|
return this._indices;
|
9706
9731
|
}
|
9707
9732
|
set indices(value) {
|
9708
|
-
|
9733
|
+
if (value)
|
9734
|
+
this._indices = isArray(value) ? value : [value];
|
9735
|
+
else
|
9736
|
+
this._indices = null;
|
9709
9737
|
}
|
9710
9738
|
ngOnInit() {
|
9711
9739
|
if (this.chartType === 'Line' || this.chartType === 'Spline')
|
9712
9740
|
this.crosshair.enable = true;
|
9713
9741
|
this.primaryYAxis.labelFormat = this.currencyCode ? 'c0' : 'n0';
|
9742
|
+
this.execute();
|
9714
9743
|
}
|
9715
9744
|
/**
|
9716
9745
|
*
|
9717
9746
|
*/
|
9718
9747
|
ngOnChanges(changes) {
|
9719
|
-
if (changes['filters'])
|
9748
|
+
if (changes['filters'] && !changes['filters'].firstChange)
|
9720
9749
|
this.execute();
|
9721
9750
|
else if (changes['height'])
|
9722
|
-
this.
|
9751
|
+
this.resize();
|
9752
|
+
}
|
9753
|
+
resize() {
|
9754
|
+
this.chart && this.chart.chartResize();
|
9723
9755
|
}
|
9724
9756
|
execute() {
|
9725
9757
|
this.loadingChange.emit(true);
|
@@ -9831,7 +9863,7 @@ class CubeChartComponent {
|
|
9831
9863
|
}
|
9832
9864
|
CubeChartComponent.nextId = 0;
|
9833
9865
|
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 });
|
9834
|
-
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 });
|
9866
|
+
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 });
|
9835
9867
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeChartComponent, decorators: [{
|
9836
9868
|
type: Component,
|
9837
9869
|
args: [{
|
@@ -9856,6 +9888,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
9856
9888
|
type: Input
|
9857
9889
|
}], filters: [{
|
9858
9890
|
type: Input
|
9891
|
+
}], yAxis: [{
|
9892
|
+
type: Input
|
9859
9893
|
}], chartType: [{
|
9860
9894
|
type: Input
|
9861
9895
|
}], indexChartType: [{
|
@@ -9891,9 +9925,20 @@ class CubeGridComponent {
|
|
9891
9925
|
this._rows = [];
|
9892
9926
|
this._columns = [];
|
9893
9927
|
}
|
9928
|
+
set xAxis(val) {
|
9929
|
+
this._xAxis = isArray(val) ? val : [val];
|
9930
|
+
}
|
9931
|
+
set series(val) {
|
9932
|
+
if (val)
|
9933
|
+
this._series = isArray(val) ? val : [val];
|
9934
|
+
}
|
9935
|
+
set indices(val) {
|
9936
|
+
if (val)
|
9937
|
+
this._indices = isArray(val) ? val : [val];
|
9938
|
+
}
|
9894
9939
|
ngOnInit() {
|
9895
|
-
|
9896
|
-
const x =
|
9940
|
+
this._cube = this.cube ? this._session.profile.cubes.find(c => c.name === this.cube) : this._session.profile.cubes[0];
|
9941
|
+
const x = this._cube.axes.find(a => a.name === this._xAxis[0]), y = this._cube.axes.find(a => a.name === this._series[0]);
|
9897
9942
|
const promises = [];
|
9898
9943
|
// aquire columns source
|
9899
9944
|
let observe = this._ds.all(x.dataType).
|
@@ -9933,17 +9978,18 @@ class CubeGridComponent {
|
|
9933
9978
|
// prepare
|
9934
9979
|
this._prepare =
|
9935
9980
|
forkJoin(promises).toPromise();
|
9981
|
+
this.execute();
|
9936
9982
|
}
|
9937
9983
|
/** */
|
9938
9984
|
ngOnChanges(changes) {
|
9939
|
-
if (changes['filters'])
|
9985
|
+
if (changes['filters'] && !changes['filters'].firstChange)
|
9940
9986
|
this.execute();
|
9941
9987
|
else if (changes['height'])
|
9942
9988
|
this.resize();
|
9943
9989
|
}
|
9944
9990
|
execute() {
|
9945
9991
|
this.loadingChange.emit(true);
|
9946
|
-
this._service.series(this.
|
9992
|
+
this._service.series(this._cube.name, this._xAxis, { series: this._series, filters: this.filters, indices: this._indices }).
|
9947
9993
|
subscribe(series => {
|
9948
9994
|
this._prepare.then(() => {
|
9949
9995
|
const rows = [];
|
@@ -10014,9 +10060,9 @@ class CubeGridComponent {
|
|
10014
10060
|
if (data[`_${column}`] === 0)
|
10015
10061
|
return;
|
10016
10062
|
const axes = {};
|
10017
|
-
axes[this.
|
10063
|
+
axes[this._xAxis[0]] = column;
|
10018
10064
|
if (type !== 'Index')
|
10019
|
-
axes[this.
|
10065
|
+
axes[this._series[0]] = row;
|
10020
10066
|
this.explore.emit({ axes, index: type === 'Index' ? row : null });
|
10021
10067
|
}
|
10022
10068
|
customAggregate(_, column) {
|
@@ -10038,7 +10084,7 @@ class CubeGridComponent {
|
|
10038
10084
|
}
|
10039
10085
|
CubeGridComponent.nextId = 0;
|
10040
10086
|
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 });
|
10041
|
-
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",
|
10087
|
+
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"] });
|
10042
10088
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeGridComponent, decorators: [{
|
10043
10089
|
type: Component,
|
10044
10090
|
args: [{ selector: 'bizdoc-cube-grid', template: '', host: {
|
@@ -10052,8 +10098,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
10052
10098
|
type: Input
|
10053
10099
|
}], xAxis: [{
|
10054
10100
|
type: Input
|
10055
|
-
}], yAxis: [{
|
10056
|
-
type: Input
|
10057
10101
|
}], series: [{
|
10058
10102
|
type: Input
|
10059
10103
|
}], indices: [{
|
@@ -10177,6 +10221,8 @@ class CubePivotComponent {
|
|
10177
10221
|
}
|
10178
10222
|
},
|
10179
10223
|
tooltip: {
|
10224
|
+
enableAnimation: false,
|
10225
|
+
border: { width: 0 },
|
10180
10226
|
textStyle: {
|
10181
10227
|
fontFamily: FONT_FAMILY
|
10182
10228
|
}
|
@@ -10222,6 +10268,7 @@ class CubePivotComponent {
|
|
10222
10268
|
currency: this.currencyCode,
|
10223
10269
|
});
|
10224
10270
|
});
|
10271
|
+
this.execute();
|
10225
10272
|
}
|
10226
10273
|
_getIndexTitle(name) {
|
10227
10274
|
return this._cube.indices.find(i => i.name === name).title;
|
@@ -10234,7 +10281,7 @@ class CubePivotComponent {
|
|
10234
10281
|
*
|
10235
10282
|
*/
|
10236
10283
|
ngOnChanges(changes) {
|
10237
|
-
if (changes['filters'])
|
10284
|
+
if (changes['filters'] && !changes['filters'].firstChange)
|
10238
10285
|
this.execute();
|
10239
10286
|
else if (changes['height'] || changes['width'])
|
10240
10287
|
this.resize();
|
@@ -10257,7 +10304,7 @@ class CubePivotComponent {
|
|
10257
10304
|
// columns
|
10258
10305
|
const columns = xAxis2.concat(series2);
|
10259
10306
|
// query
|
10260
|
-
this._service.table(this.
|
10307
|
+
this._service.table(this._cube.name, columns, { filters: this.filters, indices: this.indices }).subscribe(r => {
|
10261
10308
|
this._presets(xAxis2, series2, r);
|
10262
10309
|
this._draw();
|
10263
10310
|
this.loadingChange.emit(false);
|
@@ -10419,9 +10466,9 @@ class CubePivotComponent {
|
|
10419
10466
|
}
|
10420
10467
|
}
|
10421
10468
|
ngOnDestroy() {
|
10469
|
+
this.pivot && this.pivot.destroy();
|
10422
10470
|
this._destroy.next();
|
10423
10471
|
this._destroy.complete();
|
10424
|
-
this.pivot && this.pivot.destroy();
|
10425
10472
|
}
|
10426
10473
|
}
|
10427
10474
|
CubePivotComponent.nextId = 0;
|
@@ -10482,6 +10529,8 @@ class CubeSpreadsheetComponent {
|
|
10482
10529
|
this.loadingChange = new EventEmitter();
|
10483
10530
|
this.id = `cube-spreadsheet-${CubeSpreadsheetComponent.nextId++}`;
|
10484
10531
|
this.dataSource = [];
|
10532
|
+
this.numberStyle = { textAlign: 'right' };
|
10533
|
+
this.autoFillSettings = { showFillOptions: false };
|
10485
10534
|
this._yrows = [];
|
10486
10535
|
this._xcolumns = [];
|
10487
10536
|
this._intl = new Internationalization();
|
@@ -10505,7 +10554,7 @@ class CubeSpreadsheetComponent {
|
|
10505
10554
|
maximumFractionDigits: this._service.fractionDigits,
|
10506
10555
|
minimumFractionDigits: this._service.fractionDigits
|
10507
10556
|
});
|
10508
|
-
this._cube = this._session.profile.cubes.find(c => c.name === this.cube);
|
10557
|
+
this._cube = this.cube ? this._session.profile.cubes.find(c => c.name === this.cube) : this._session.profile.cubes[0];
|
10509
10558
|
if (!this._series) {
|
10510
10559
|
this._axes = this._xAxis.map(c => this._cube.axes.find(a => a.name == c));
|
10511
10560
|
if (this._indices)
|
@@ -10543,52 +10592,27 @@ class CubeSpreadsheetComponent {
|
|
10543
10592
|
promises.push(observe);
|
10544
10593
|
this._prepare = Promise.all(promises);
|
10545
10594
|
}
|
10595
|
+
this.execute();
|
10546
10596
|
}
|
10547
10597
|
ngOnChanges(changes) {
|
10548
|
-
if (changes['filters'])
|
10598
|
+
if (changes['filters'] && !changes['filters'].firstChange)
|
10549
10599
|
this.execute();
|
10550
10600
|
else if (changes['height'] || changes['width'])
|
10551
|
-
|
10552
|
-
|
10553
|
-
|
10554
|
-
|
10555
|
-
|
10601
|
+
this.resize();
|
10602
|
+
}
|
10603
|
+
resize() {
|
10604
|
+
if (this.spreadsheet) {
|
10605
|
+
this.spreadsheet.height = this.height;
|
10606
|
+
this.spreadsheet.width = this.width;
|
10607
|
+
this.spreadsheet.resize();
|
10608
|
+
}
|
10556
10609
|
}
|
10557
10610
|
execute() {
|
10558
10611
|
this.loadingChange.emit(true);
|
10559
|
-
const numberStyle = { textAlign: 'right' };
|
10560
10612
|
if (!this._series)
|
10561
|
-
this._service.table(this.
|
10613
|
+
this._service.table(this._cube.name, this._xAxis, { filters: this.filters, indices: this._indices }).
|
10562
10614
|
subscribe(data => {
|
10563
|
-
|
10564
|
-
this._axes.forEach(c => cells.push({
|
10565
|
-
value: c.title, style
|
10566
|
-
}));
|
10567
|
-
this._indices && this._cindices.forEach(i => cells.push({ value: i.title, style }));
|
10568
|
-
cells.push({
|
10569
|
-
value: this.yAxis ? this.yAxis.title : this._translate.get('Value'),
|
10570
|
-
style
|
10571
|
-
});
|
10572
|
-
this.dataSource = [{
|
10573
|
-
cells, height: 20
|
10574
|
-
}];
|
10575
|
-
data.forEach(d => {
|
10576
|
-
const cells = [];
|
10577
|
-
this._xAxis.forEach(c => cells.push({
|
10578
|
-
value: d[c],
|
10579
|
-
}));
|
10580
|
-
this._indices && this._indices.forEach(i => cells.push({
|
10581
|
-
style: numberStyle,
|
10582
|
-
format: this._numberFormat,
|
10583
|
-
value: (d[i] || 0).toString(),
|
10584
|
-
}));
|
10585
|
-
cells.push({
|
10586
|
-
style: numberStyle,
|
10587
|
-
format: this._numberFormat,
|
10588
|
-
value: (d.value || 0).toString(),
|
10589
|
-
});
|
10590
|
-
this.dataSource.push({ cells, source: d, height: 20 });
|
10591
|
-
});
|
10615
|
+
this._datatable(data);
|
10592
10616
|
this._draw();
|
10593
10617
|
this.loadingChange.emit(false);
|
10594
10618
|
}, (e) => {
|
@@ -10597,39 +10621,9 @@ class CubeSpreadsheetComponent {
|
|
10597
10621
|
});
|
10598
10622
|
else
|
10599
10623
|
this._service.series(this.cube, this._xAxis, { series: this._series, filters: this.filters }).
|
10600
|
-
subscribe(
|
10624
|
+
subscribe(data => {
|
10601
10625
|
this._prepare.then(() => {
|
10602
|
-
|
10603
|
-
const cells = [{ value: '' }];
|
10604
|
-
this._xcolumns.forEach(c => cells.push({ value: c.value, style }));
|
10605
|
-
this.dataSource = [{ cells, height: 20 }];
|
10606
|
-
this._indices && this._cube.indices.filter(i => this._indices.indexOf(i.name) > 0).
|
10607
|
-
forEach(i => {
|
10608
|
-
const cells = [{ value: i.title, style }], serie = d.find(s => s.index === i.name), map = {};
|
10609
|
-
if (serie) {
|
10610
|
-
serie.points.forEach(p => map[p.x] = p.y);
|
10611
|
-
this._xcolumns.forEach(c => cells.push({
|
10612
|
-
value: (map[c.key] || 0).toString(),
|
10613
|
-
format: this._numberFormat,
|
10614
|
-
style: numberStyle
|
10615
|
-
}));
|
10616
|
-
this.dataSource.push({ cells, height: 20 });
|
10617
|
-
}
|
10618
|
-
});
|
10619
|
-
this._yrows.forEach(r => {
|
10620
|
-
const cells = [{ value: r.value, style }], serie = d.find(s => s.name === r.key), map = {};
|
10621
|
-
if (serie) {
|
10622
|
-
serie.points.forEach(p => map[p.x] = p.y);
|
10623
|
-
this._xcolumns.forEach(c => cells.push({
|
10624
|
-
value: (map[c.key] || 0).toString(),
|
10625
|
-
format: this._numberFormat,
|
10626
|
-
style: numberStyle
|
10627
|
-
}));
|
10628
|
-
}
|
10629
|
-
else
|
10630
|
-
this._xcolumns.forEach(_ => cells.push({ value: '0' }));
|
10631
|
-
this.dataSource.push({ cells, height: 20 });
|
10632
|
-
});
|
10626
|
+
this._dataseries(data);
|
10633
10627
|
this._draw();
|
10634
10628
|
this.loadingChange.emit(false);
|
10635
10629
|
});
|
@@ -10638,6 +10632,70 @@ class CubeSpreadsheetComponent {
|
|
10638
10632
|
this.loadingChange.emit(false);
|
10639
10633
|
});
|
10640
10634
|
}
|
10635
|
+
_datatable(data) {
|
10636
|
+
const cells = [], style = { fontWeight: 'bold', textAlign: 'center' };
|
10637
|
+
this._axes.forEach(c => cells.push({
|
10638
|
+
value: c.title, style
|
10639
|
+
}));
|
10640
|
+
this._indices && this._cindices.forEach(i => cells.push({ value: i.title, style }));
|
10641
|
+
cells.push({
|
10642
|
+
value: this.yAxis ? this.yAxis.title : this._translate.get('Value'),
|
10643
|
+
style
|
10644
|
+
});
|
10645
|
+
this.dataSource = [{
|
10646
|
+
cells, height: 25
|
10647
|
+
}];
|
10648
|
+
data.forEach(d => {
|
10649
|
+
const cells = [];
|
10650
|
+
this._xAxis.forEach(c => cells.push({
|
10651
|
+
value: d[c],
|
10652
|
+
}));
|
10653
|
+
this._indices && this._indices.forEach(i => cells.push({
|
10654
|
+
style: this.numberStyle,
|
10655
|
+
format: this._numberFormat,
|
10656
|
+
value: (d[i] || 0).toString(),
|
10657
|
+
}));
|
10658
|
+
cells.push({
|
10659
|
+
style: this.numberStyle,
|
10660
|
+
format: this._numberFormat,
|
10661
|
+
value: (d.value || 0).toString(),
|
10662
|
+
});
|
10663
|
+
this.dataSource.push({ cells, source: d, height: 25 });
|
10664
|
+
});
|
10665
|
+
}
|
10666
|
+
_dataseries(d) {
|
10667
|
+
const style = { fontWeight: 'bold', textAlign: 'center' };
|
10668
|
+
const cells = [{ value: '' }];
|
10669
|
+
this._xcolumns.forEach(c => cells.push({ value: c.value, style }));
|
10670
|
+
this.dataSource = [{ cells, height: 25 }];
|
10671
|
+
this._indices && this._cindices.
|
10672
|
+
forEach(i => {
|
10673
|
+
const cells = [{ value: i.title, style }], serie = d.find(s => s.index === i.name), map = {};
|
10674
|
+
if (serie) {
|
10675
|
+
serie.points.forEach(p => map[p.x] = p.y);
|
10676
|
+
this._xcolumns.forEach(c => cells.push({
|
10677
|
+
value: (map[c.key] || 0).toString(),
|
10678
|
+
format: this._numberFormat,
|
10679
|
+
style: this.numberStyle
|
10680
|
+
}));
|
10681
|
+
this.dataSource.push({ cells, height: 25 });
|
10682
|
+
}
|
10683
|
+
});
|
10684
|
+
this._yrows.forEach(r => {
|
10685
|
+
const cells = [{ value: r.value, style }], serie = d.find(s => s.name === r.key), map = {};
|
10686
|
+
if (serie) {
|
10687
|
+
serie.points.forEach(p => map[p.x] = p.y);
|
10688
|
+
this._xcolumns.forEach(c => cells.push({
|
10689
|
+
value: (map[c.key] || 0).toString(),
|
10690
|
+
format: this._numberFormat,
|
10691
|
+
style: this.numberStyle
|
10692
|
+
}));
|
10693
|
+
}
|
10694
|
+
else
|
10695
|
+
this._xcolumns.forEach(_ => cells.push({ value: '0' }));
|
10696
|
+
this.dataSource.push({ cells, height: 25 });
|
10697
|
+
});
|
10698
|
+
}
|
10641
10699
|
_draw() {
|
10642
10700
|
this.spreadsheet && this.spreadsheet.destroy();
|
10643
10701
|
this.spreadsheet = new Spreadsheet({
|
@@ -10646,19 +10704,13 @@ class CubeSpreadsheetComponent {
|
|
10646
10704
|
allowDelete: false,
|
10647
10705
|
allowInsert: false,
|
10648
10706
|
allowSorting: true,
|
10649
|
-
//allowSave: false,
|
10650
10707
|
showRibbon: false,
|
10651
10708
|
allowAutoFill: false,
|
10652
|
-
autoFillSettings:
|
10653
|
-
|
10654
|
-
//allowChart: false,
|
10655
|
-
//allowFiltering: false,
|
10656
|
-
//allowDataValidation: false,
|
10657
|
-
//allowFindAndReplace: false,
|
10709
|
+
autoFillSettings: this.autoFillSettings,
|
10710
|
+
enableClipboard: true,
|
10658
10711
|
enableContextMenu: false,
|
10659
10712
|
showFormulaBar: false,
|
10660
10713
|
showSheetTabs: false,
|
10661
|
-
//scrollSettings: { isFinite: true },
|
10662
10714
|
select: this.select.bind(this),
|
10663
10715
|
sheets: [{
|
10664
10716
|
columns: this.columns,
|
@@ -10692,8 +10744,10 @@ class CubeSpreadsheetComponent {
|
|
10692
10744
|
const key = this.dataSource[i].source['_' + a.name];
|
10693
10745
|
if (!axes[a.name])
|
10694
10746
|
axes[a.name] = key;
|
10695
|
-
else if (isString(axes[a.name]))
|
10696
|
-
axes[a.name]
|
10747
|
+
else if (isString(axes[a.name])) {
|
10748
|
+
if (axes[a.name] !== key)
|
10749
|
+
axes[a.name] = [axes[a.name], key];
|
10750
|
+
}
|
10697
10751
|
else if (axes[a.name].indexOf(key) < 0)
|
10698
10752
|
axes[a.name].push(key);
|
10699
10753
|
});
|
@@ -10703,18 +10757,14 @@ class CubeSpreadsheetComponent {
|
|
10703
10757
|
}
|
10704
10758
|
else {
|
10705
10759
|
if (y === 0) {
|
10706
|
-
if (y < y1)
|
10707
|
-
|
10708
|
-
axes[xName] = key;
|
10709
|
-
}
|
10760
|
+
if (y < y1)
|
10761
|
+
this._fillx(x, x1, axes);
|
10710
10762
|
else
|
10711
10763
|
return;
|
10712
10764
|
}
|
10713
10765
|
else if (x === 0) {
|
10714
|
-
if (x < x1)
|
10715
|
-
|
10716
|
-
axes[yName] = key;
|
10717
|
-
}
|
10766
|
+
if (x < x1)
|
10767
|
+
this._filly(y, y1, axes);
|
10718
10768
|
else
|
10719
10769
|
return;
|
10720
10770
|
}
|
@@ -10723,34 +10773,41 @@ class CubeSpreadsheetComponent {
|
|
10723
10773
|
else if (y > this.dataSource.length - 1 || x > this.dataSource[y].cells.length - 1)
|
10724
10774
|
return;
|
10725
10775
|
else {
|
10726
|
-
|
10727
|
-
|
10728
|
-
while (j < x1) {
|
10729
|
-
let { key } = this._xcolumns[j];
|
10730
|
-
if (!axes[xName])
|
10731
|
-
axes[xName] = key;
|
10732
|
-
else if (isString(axes[xName]))
|
10733
|
-
axes[xName] = [axes[xName], key];
|
10734
|
-
else if (axes[xName].indexOf(key) < 0)
|
10735
|
-
axes[xName].push(key);
|
10736
|
-
j++;
|
10737
|
-
}
|
10738
|
-
while (i < y1) {
|
10739
|
-
let { key } = this._yrows[i];
|
10740
|
-
if (!axes[yName])
|
10741
|
-
axes[yName] = key;
|
10742
|
-
else if (isString(axes[yName]))
|
10743
|
-
axes[yName] = [axes[yName], key];
|
10744
|
-
else if (axes[yName].indexOf(key) < 0)
|
10745
|
-
axes[yName].push(key);
|
10746
|
-
i++;
|
10747
|
-
}
|
10776
|
+
this._fillx(x, x1, axes);
|
10777
|
+
this._filly(y, y1, axes);
|
10748
10778
|
}
|
10749
10779
|
this.explore.emit({ axes });
|
10750
10780
|
}
|
10751
10781
|
}
|
10782
|
+
_filly(y, y1, axes) {
|
10783
|
+
const yName = this._series[0];
|
10784
|
+
let i = y - 1;
|
10785
|
+
while (i < y1) {
|
10786
|
+
let { key } = this._yrows[i];
|
10787
|
+
if (!axes[yName])
|
10788
|
+
axes[yName] = key;
|
10789
|
+
else if (isString(axes[yName]))
|
10790
|
+
axes[yName] = [axes[yName], key];
|
10791
|
+
else if (axes[yName].indexOf(key) < 0)
|
10792
|
+
axes[yName].push(key);
|
10793
|
+
i++;
|
10794
|
+
}
|
10795
|
+
}
|
10796
|
+
_fillx(x, x1, axes) {
|
10797
|
+
const xName = this._xAxis[0];
|
10798
|
+
let i = x - 1;
|
10799
|
+
while (i < x1) {
|
10800
|
+
let { key } = this._xcolumns[i];
|
10801
|
+
if (!axes[xName])
|
10802
|
+
axes[xName] = key;
|
10803
|
+
else if (isString(axes[xName]))
|
10804
|
+
axes[xName] = [axes[xName], key];
|
10805
|
+
else if (axes[xName].indexOf(key) < 0)
|
10806
|
+
axes[xName].push(key);
|
10807
|
+
i++;
|
10808
|
+
}
|
10809
|
+
}
|
10752
10810
|
exportToExcel(title) {
|
10753
|
-
//this.spreadsheet.save({ saveType: 'Xlsx', fileName: `${title}.xlsx`})
|
10754
10811
|
const wb = XLSX.utils.book_new();
|
10755
10812
|
const rows = this.spreadsheet.sheets[0].rows.map(r => r.cells.map(c => c.value));
|
10756
10813
|
const ws = XLSX.utils.aoa_to_sheet(rows);
|
@@ -10765,16 +10822,12 @@ class CubeSpreadsheetComponent {
|
|
10765
10822
|
}
|
10766
10823
|
CubeSpreadsheetComponent.nextId = 0;
|
10767
10824
|
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 });
|
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
|
10825
|
+
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 });
|
10769
10826
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeSpreadsheetComponent, decorators: [{
|
10770
10827
|
type: Component,
|
10771
10828
|
args: [{
|
10772
10829
|
selector: 'bizdoc-cube-spreadsheet',
|
10773
10830
|
template: '',
|
10774
|
-
styles: [`::ng-deep .e-spreadsheet .e-dragfill-ddb {
|
10775
|
-
display: none !important;
|
10776
|
-
}
|
10777
|
-
`],
|
10778
10831
|
host: {
|
10779
10832
|
class: 'cube-view'
|
10780
10833
|
}
|
@@ -10833,13 +10886,11 @@ class CubeViewComponent {
|
|
10833
10886
|
this._instance.ngOnChanges({ 'height': {}, 'width': {} });
|
10834
10887
|
});
|
10835
10888
|
}
|
10889
|
+
ngAfterViewInit() {
|
10890
|
+
setTimeout(this._createView.bind(this));
|
10891
|
+
}
|
10836
10892
|
ngOnChanges(changes) {
|
10837
|
-
|
10838
|
-
// dom
|
10839
|
-
setTimeout(this._createView.bind(this));
|
10840
|
-
}
|
10841
|
-
else if (changes['axes'])
|
10842
|
-
this.refresh();
|
10893
|
+
changes['axes'] && !changes['axes'].firstChange && this.refresh();
|
10843
10894
|
}
|
10844
10895
|
_createView() {
|
10845
10896
|
this._viewDestroy.next();
|
@@ -10863,7 +10914,6 @@ class CubeViewComponent {
|
|
10863
10914
|
comp.width = `${dim.width - 4}px`;
|
10864
10915
|
comp.series = this.view.series;
|
10865
10916
|
comp.indices = this.view.indices;
|
10866
|
-
comp.yAxis = this.cube.yAxis;
|
10867
10917
|
break;
|
10868
10918
|
}
|
10869
10919
|
case 'Spreadsheet':
|
@@ -10891,15 +10941,15 @@ class CubeViewComponent {
|
|
10891
10941
|
default:
|
10892
10942
|
{
|
10893
10943
|
let comp = this._attach(CubeChartComponent);
|
10894
|
-
comp.height = `${dim.height}px`;
|
10944
|
+
//comp.height = `${dim.height}px`;
|
10895
10945
|
comp.chartType = this.view.chartType;
|
10896
10946
|
comp.series = this.view.series;
|
10897
10947
|
comp.indices = this.view.indices;
|
10948
|
+
comp.yAxis = this.cube.yAxis;
|
10898
10949
|
comp.indexChartType = this.view.indexChartType;
|
10899
10950
|
}
|
10900
10951
|
}
|
10901
10952
|
}
|
10902
|
-
this.refresh();
|
10903
10953
|
}
|
10904
10954
|
_attach(comp) {
|
10905
10955
|
const factory = this._factoryResolver.resolveComponentFactory(comp);
|
@@ -10913,6 +10963,7 @@ class CubeViewComponent {
|
|
10913
10963
|
instance.cube = this.cube.name;
|
10914
10964
|
instance.xAxis = this.view.xAxis;
|
10915
10965
|
instance.currencyCode = this.cube.currencyCode;
|
10966
|
+
instance.filters = Object.assign(Object.assign({}, this.view.filters), this.axes);
|
10916
10967
|
instance.loadingChange.pipe(takeUntil(this._viewDestroy), debounceTime(150)).subscribe(e => this.loadingChange.emit(this.loading = e));
|
10917
10968
|
return instance;
|
10918
10969
|
}
|
@@ -10928,7 +10979,7 @@ class CubeViewComponent {
|
|
10928
10979
|
}
|
10929
10980
|
refresh() {
|
10930
10981
|
this._instance.filters = Object.assign(Object.assign({}, this.view.filters), this.axes);
|
10931
|
-
this._instance.
|
10982
|
+
this._instance.execute();
|
10932
10983
|
}
|
10933
10984
|
exportToExcel() {
|
10934
10985
|
this._instance.exportToExcel(this.view.title);
|
@@ -11101,12 +11152,12 @@ class CubeViewPaneComponent extends ViewBase {
|
|
11101
11152
|
}
|
11102
11153
|
}
|
11103
11154
|
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 });
|
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
|
11155
|
+
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 } });
|
11105
11156
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeViewPaneComponent, decorators: [{
|
11106
11157
|
type: Component,
|
11107
11158
|
args: [{ host: {
|
11108
11159
|
class: 'pane'
|
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
|
11160
|
+
}, 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"] }]
|
11110
11161
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: PaneRef }, { type: Popup }, { type: RouterImpl }, { type: CubeService }, { type: GuideService }]; }, propDecorators: { viewPane: [{
|
11111
11162
|
type: ViewChild,
|
11112
11163
|
args: [CubeViewComponent, { static: true }]
|
@@ -12098,7 +12149,8 @@ class WorkflowComponent {
|
|
12098
12149
|
nodes, connectors
|
12099
12150
|
},
|
12100
12151
|
policy: OpenPolicy.Tab,
|
12101
|
-
expandable: false
|
12152
|
+
expandable: false,
|
12153
|
+
group: ''
|
12102
12154
|
}).then(p => {
|
12103
12155
|
p.instance.change.
|
12104
12156
|
pipe(takeUntil(this._destroy)).subscribe(() => {
|
@@ -13390,17 +13442,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
13390
13442
|
/** component*/
|
13391
13443
|
class VersionCompareComponent {
|
13392
13444
|
/** ctor */
|
13393
|
-
constructor(_session, _cf, _container,
|
13445
|
+
constructor(_session, _cf, _container, _injector) {
|
13394
13446
|
this._session = _session;
|
13395
13447
|
this._cf = _cf;
|
13396
13448
|
this._container = _container;
|
13397
|
-
this._router = _router;
|
13398
13449
|
this._injector = _injector;
|
13399
13450
|
}
|
13400
13451
|
get form() { return this._form; }
|
13401
13452
|
get currentVersion() { return this._currentVersion; }
|
13402
13453
|
get baseVersion() { return this._baseVersion; }
|
13403
|
-
ngOnChanges(
|
13454
|
+
ngOnChanges(_) {
|
13404
13455
|
this._form = this._session.profile.forms.find(f => f.name === this.model.formId);
|
13405
13456
|
const log = this.model.log.find(l => l.type === 'ModelChange' && l.time === this.version);
|
13406
13457
|
const idx = this.model.log.indexOf(log);
|
@@ -13410,7 +13461,7 @@ class VersionCompareComponent {
|
|
13410
13461
|
const componentFactory = this._cf.resolve(this._form.template);
|
13411
13462
|
const injector = Injector.create([
|
13412
13463
|
{ provide: VersionCompareComponent, useValue: this },
|
13413
|
-
{ provide: FormRef, useValue: new FormRef(
|
13464
|
+
{ provide: FormRef, useValue: new FormRef() },
|
13414
13465
|
{ provide: DOCUMENT_MODEL, useValue: this.model }
|
13415
13466
|
], this._injector);
|
13416
13467
|
this._container.clear();
|
@@ -13421,7 +13472,7 @@ class VersionCompareComponent {
|
|
13421
13472
|
instance.onBind(newModel, this._baseVersion);
|
13422
13473
|
}
|
13423
13474
|
}
|
13424
|
-
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:
|
13475
|
+
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 });
|
13425
13476
|
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 });
|
13426
13477
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: VersionCompareComponent, decorators: [{
|
13427
13478
|
type: Component,
|
@@ -13429,7 +13480,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
13429
13480
|
selector: 'bizdoc-version-compare',
|
13430
13481
|
template: ''
|
13431
13482
|
}]
|
13432
|
-
}], ctorParameters: function () { return [{ type: SessionService }, { type: BizDocComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type:
|
13483
|
+
}], ctorParameters: function () { return [{ type: SessionService }, { type: BizDocComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: i0.Injector }]; }, propDecorators: { model: [{
|
13433
13484
|
type: Input
|
13434
13485
|
}], version: [{
|
13435
13486
|
type: Input
|
@@ -15629,16 +15680,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
15629
15680
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: TranslateService }, { type: PaneRef }]; } });
|
15630
15681
|
|
15631
15682
|
class DocumentInfoComponent {
|
15632
|
-
constructor(_session, _cf,
|
15683
|
+
constructor(_session, _cf, _injector) {
|
15633
15684
|
this._session = _session;
|
15634
15685
|
this._cf = _cf;
|
15635
|
-
this._router = _router;
|
15636
15686
|
this._injector = _injector;
|
15637
15687
|
}
|
15638
|
-
ngOnChanges(
|
15688
|
+
ngOnChanges(_) {
|
15639
15689
|
const form = this._session.profile.forms.find(f => f.name === this.model.formId);
|
15640
15690
|
this._formRef && this._formRef._destroy();
|
15641
|
-
this._formRef = new FormRef(
|
15691
|
+
this._formRef = new FormRef();
|
15642
15692
|
const factory = this._cf.resolve(form.template);
|
15643
15693
|
const injector = Injector.create([{
|
15644
15694
|
provide: DOCUMENT_MODEL, useValue: this.model
|
@@ -15654,12 +15704,12 @@ class DocumentInfoComponent {
|
|
15654
15704
|
this._formRef._destroy();
|
15655
15705
|
}
|
15656
15706
|
}
|
15657
|
-
DocumentInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: DocumentInfoComponent, deps: [{ token: SessionService }, { token: BizDocComponentFactoryResolver }, { token:
|
15707
|
+
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 });
|
15658
15708
|
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"] }] });
|
15659
15709
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: DocumentInfoComponent, decorators: [{
|
15660
15710
|
type: Component,
|
15661
15711
|
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" }]
|
15662
|
-
}], ctorParameters: function () { return [{ type: SessionService }, { type: BizDocComponentFactoryResolver }, { type:
|
15712
|
+
}], ctorParameters: function () { return [{ type: SessionService }, { type: BizDocComponentFactoryResolver }, { type: i0.Injector }]; }, propDecorators: { _container: [{
|
15663
15713
|
type: ViewChild,
|
15664
15714
|
args: ['component', { read: ViewContainerRef, static: true }]
|
15665
15715
|
}], model: [{
|
@@ -16379,10 +16429,10 @@ class ComposeMenuComponent {
|
|
16379
16429
|
}
|
16380
16430
|
}
|
16381
16431
|
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 });
|
16382
|
-
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
|
16432
|
+
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: [] });
|
16383
16433
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ComposeMenuComponent, decorators: [{
|
16384
16434
|
type: Component,
|
16385
|
-
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
|
16435
|
+
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"] }]
|
16386
16436
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: MailboxService }, { type: PromptService }, { type: PanesRouter }]; }, propDecorators: { change: [{
|
16387
16437
|
type: Output
|
16388
16438
|
}] } });
|
@@ -16461,7 +16511,7 @@ class FoldersMenuComponent {
|
|
16461
16511
|
//folder.group;
|
16462
16512
|
return true;
|
16463
16513
|
};
|
16464
|
-
this.folders = this._session.profile.folders;
|
16514
|
+
this.folders = this._session.profile.folders.filter(f => f.name !== 'fav');
|
16465
16515
|
}
|
16466
16516
|
/**
|
16467
16517
|
* Mail drop
|
@@ -16617,11 +16667,14 @@ class SearchService {
|
|
16617
16667
|
if (u.title.toLowerCase().indexOf(val) > -1)
|
16618
16668
|
xs.push({ path: `admin/utilities/${u.name}`, title: u.title, section: this._translate.get('Utilities'), icon: u.icon });
|
16619
16669
|
});
|
16670
|
+
profile.options.tags &&
|
16671
|
+
profile.options.tags.forEach(t => {
|
16672
|
+
if (t.toLowerCase().indexOf(val) > -1)
|
16673
|
+
xs.push({ path: `mailbox/f?tag=${t}`, title: t, section: this._translate.get('Tags'), icon: 'bookmark' });
|
16674
|
+
});
|
16620
16675
|
//profile.contacts.forEach()
|
16621
|
-
//
|
16622
|
-
// if (g.mode !== 'Private' &&
|
16623
|
-
// g.steps.some(s => (s.title && s.title.toLowerCase().indexOf(value) > -1) ||
|
16624
|
-
// s.content.toLowerCase().indexOf(value) > -1)))
|
16676
|
+
//this._guide.guides.forEach(g => {
|
16677
|
+
// if (g.mode !== 'Private' && g.title.toLowerCase().indexOf(value) > -1)
|
16625
16678
|
// xs.push({ fn: this._guide.start, args: [g.name], title: g.title, section: this._translate.get('Guides'), icon: 'help' })
|
16626
16679
|
//});
|
16627
16680
|
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' })));
|
@@ -16827,7 +16880,7 @@ class SlotsComponent {
|
|
16827
16880
|
return;
|
16828
16881
|
}
|
16829
16882
|
else {
|
16830
|
-
this._navQueryParams(tab, queryParams
|
16883
|
+
this._navQueryParams(tab, queryParams);
|
16831
16884
|
this.group = tab.group;
|
16832
16885
|
this.selectedTabIndex = i;
|
16833
16886
|
this._cd.detectChanges();
|
@@ -16859,7 +16912,7 @@ class SlotsComponent {
|
|
16859
16912
|
return;
|
16860
16913
|
}
|
16861
16914
|
else {
|
16862
|
-
this._navQueryParams(pane, queryParams
|
16915
|
+
this._navQueryParams(pane, queryParams);
|
16863
16916
|
this.scrollTo(i);
|
16864
16917
|
this._replaceUrl();
|
16865
16918
|
return;
|
@@ -16913,7 +16966,7 @@ class SlotsComponent {
|
|
16913
16966
|
else {
|
16914
16967
|
const pane = (policy & OpenPolicy.Tab) == OpenPolicy.Tab ?
|
16915
16968
|
this.tabs[this.selectedTabIndex] : this.panes[this.selectedIndex];
|
16916
|
-
this._navQueryParams(pane, queryParams
|
16969
|
+
this._navQueryParams(pane, queryParams);
|
16917
16970
|
this._replaceUrl();
|
16918
16971
|
if ((policy & OpenPolicy.Tab) != OpenPolicy.Tab)
|
16919
16972
|
this.select(this.selectedIndex);
|
@@ -17043,7 +17096,7 @@ class SlotsComponent {
|
|
17043
17096
|
}
|
17044
17097
|
else {
|
17045
17098
|
const queryParams = this._parseQueryParams(queryString);
|
17046
|
-
this._navQueryParams(pane, queryParams
|
17099
|
+
this._navQueryParams(pane, queryParams);
|
17047
17100
|
return;
|
17048
17101
|
}
|
17049
17102
|
}
|
@@ -17083,7 +17136,7 @@ class SlotsComponent {
|
|
17083
17136
|
}
|
17084
17137
|
else {
|
17085
17138
|
const queryParams = this._parseQueryParams(queryString);
|
17086
|
-
this._navQueryParams(tab, queryParams
|
17139
|
+
this._navQueryParams(tab, queryParams);
|
17087
17140
|
return;
|
17088
17141
|
}
|
17089
17142
|
}
|
@@ -17121,11 +17174,9 @@ class SlotsComponent {
|
|
17121
17174
|
*
|
17122
17175
|
* @param pane
|
17123
17176
|
* @param queryParams
|
17124
|
-
* @param data
|
17125
17177
|
*/
|
17126
|
-
_navQueryParams(pane, queryParams
|
17178
|
+
_navQueryParams(pane, queryParams) {
|
17127
17179
|
pane._queryString = this._queryString(queryParams);
|
17128
|
-
pane._data$.next(Object.assign(Object.assign({}, pane.data), data));
|
17129
17180
|
pane._queryParams$.next(queryParams);
|
17130
17181
|
this._router._events$.next(new QueryParamNavigation(queryParams, pane));
|
17131
17182
|
}
|
@@ -17617,15 +17668,15 @@ class SlotsComponent {
|
|
17617
17668
|
this.navigationArrows();
|
17618
17669
|
this._resize();
|
17619
17670
|
}
|
17620
|
-
navigationArrows(
|
17621
|
-
const container = this._panesContainerRef.element.nativeElement;
|
17622
|
-
this.next = this._rtl ? container.clientWidth -
|
17623
|
-
|
17624
|
-
this.prev = this._rtl ?
|
17671
|
+
navigationArrows(_) {
|
17672
|
+
const container = this._panesContainerRef.element.nativeElement, scrollLeft = Math.round(container.scrollLeft);
|
17673
|
+
this.next = this._rtl ? container.clientWidth - scrollLeft < container.scrollWidth :
|
17674
|
+
scrollLeft + container.clientWidth < container.scrollWidth;
|
17675
|
+
this.prev = this._rtl ? scrollLeft < 0 : scrollLeft > 0;
|
17625
17676
|
}
|
17626
17677
|
scrollBy(n) {
|
17627
|
-
const
|
17628
|
-
nativeElement.scrollBy({ behavior: 'smooth', left
|
17678
|
+
const left = n * (this._rtl ? -1 : 1);
|
17679
|
+
this._panesContainerRef.element.nativeElement.scrollBy({ behavior: 'smooth', left });
|
17629
17680
|
}
|
17630
17681
|
focus(index) {
|
17631
17682
|
const el = this._children.item(index);
|
@@ -18209,13 +18260,13 @@ const PANES_CONFIG = [{
|
|
18209
18260
|
{
|
18210
18261
|
path: 'views',
|
18211
18262
|
component: DocumentViewPaneComponent,
|
18212
|
-
policy: OpenPolicy.Tab
|
18263
|
+
policy: OpenPolicy.Tab
|
18213
18264
|
},
|
18214
18265
|
{
|
18215
18266
|
path: 'comments',
|
18216
18267
|
icon: 'format_quote',
|
18217
18268
|
component: CommentsPaneComponent,
|
18218
|
-
policy: OpenPolicy.Scope | OpenPolicy.
|
18269
|
+
policy: OpenPolicy.Scope | OpenPolicy.Tab,
|
18219
18270
|
children: [{
|
18220
18271
|
path: ':commentId/versions',
|
18221
18272
|
icon: 'history',
|
@@ -18243,7 +18294,7 @@ const PANES_CONFIG = [{
|
|
18243
18294
|
}, {
|
18244
18295
|
path: 'd/:id',
|
18245
18296
|
component: DocumentInfoPaneComponent,
|
18246
|
-
policy: OpenPolicy.Tab
|
18297
|
+
policy: OpenPolicy.Tab,
|
18247
18298
|
resolve: {
|
18248
18299
|
item: DocumentResolver
|
18249
18300
|
},
|
@@ -18273,7 +18324,7 @@ const PANES_CONFIG = [{
|
|
18273
18324
|
path: ':cube/v/:view',
|
18274
18325
|
icon: 'bar_chart',
|
18275
18326
|
component: CubeViewPaneComponent,
|
18276
|
-
policy: OpenPolicy.Clear
|
18327
|
+
policy: OpenPolicy.Clear
|
18277
18328
|
}, {
|
18278
18329
|
path: ':cube/explore',
|
18279
18330
|
icon: 'summarize',
|
@@ -18282,7 +18333,7 @@ const PANES_CONFIG = [{
|
|
18282
18333
|
children: [{
|
18283
18334
|
path: 'i/:template/:key',
|
18284
18335
|
component: ExploreItemPaneComponent,
|
18285
|
-
policy: OpenPolicy.
|
18336
|
+
policy: OpenPolicy.Tab,
|
18286
18337
|
resolve: { item: ItemResolver }
|
18287
18338
|
}]
|
18288
18339
|
},
|
@@ -18290,7 +18341,7 @@ const PANES_CONFIG = [{
|
|
18290
18341
|
path: ':cube/i/:xAxis/:serie',
|
18291
18342
|
icon: 'bar_chart',
|
18292
18343
|
component: CubeMatrixPaneComponent,
|
18293
|
-
policy: OpenPolicy.
|
18344
|
+
policy: OpenPolicy.Tab
|
18294
18345
|
}]
|
18295
18346
|
}, {
|
18296
18347
|
path: 'reports',
|
@@ -18342,7 +18393,7 @@ const PANES_CONFIG = [{
|
|
18342
18393
|
path: 'chatroom/:id',
|
18343
18394
|
icon: 'person',
|
18344
18395
|
component: ConversationPaneComponent,
|
18345
|
-
policy: OpenPolicy.Tab
|
18396
|
+
policy: OpenPolicy.Tab
|
18346
18397
|
}
|
18347
18398
|
];
|
18348
18399
|
|
@@ -18938,7 +18989,7 @@ const ROUTES = [
|
|
18938
18989
|
class SyncfusionChartModule {
|
18939
18990
|
}
|
18940
18991
|
SyncfusionChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SyncfusionChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
18941
|
-
SyncfusionChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SyncfusionChartModule, imports: [ChartModule, AccumulationChartAllModule,
|
18992
|
+
SyncfusionChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SyncfusionChartModule, imports: [ChartModule, AccumulationChartAllModule, SparklineAllModule], exports: [ChartModule, AccumulationChartAllModule, SparklineAllModule] });
|
18942
18993
|
SyncfusionChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SyncfusionChartModule, providers: [LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService,
|
18943
18994
|
SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService,
|
18944
18995
|
StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService,
|
@@ -18948,12 +18999,12 @@ SyncfusionChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", v
|
|
18948
18999
|
RangeAreaSeriesService, PolarSeriesService, RadarSeriesService, DateTimeCategoryService,
|
18949
19000
|
MultiLevelLabelService, ParetoSeriesService, TooltipRenderService,
|
18950
19001
|
ExportService,
|
18951
|
-
AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService], imports: [[ChartModule, AccumulationChartAllModule,
|
19002
|
+
AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService], imports: [[ChartModule, AccumulationChartAllModule, SparklineAllModule], ChartModule, AccumulationChartAllModule, SparklineAllModule] });
|
18952
19003
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SyncfusionChartModule, decorators: [{
|
18953
19004
|
type: NgModule,
|
18954
19005
|
args: [{
|
18955
|
-
imports: [ChartModule, AccumulationChartAllModule,
|
18956
|
-
exports: [ChartModule, AccumulationChartAllModule,
|
19006
|
+
imports: [ChartModule, AccumulationChartAllModule, SparklineAllModule],
|
19007
|
+
exports: [ChartModule, AccumulationChartAllModule, SparklineAllModule],
|
18957
19008
|
providers: [LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService,
|
18958
19009
|
SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService,
|
18959
19010
|
StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService,
|
@@ -19093,6 +19144,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
19093
19144
|
}]
|
19094
19145
|
}] });
|
19095
19146
|
|
19147
|
+
class SyncfusionGanttModule {
|
19148
|
+
}
|
19149
|
+
SyncfusionGanttModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SyncfusionGanttModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
19150
|
+
SyncfusionGanttModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SyncfusionGanttModule, imports: [GanttModule], exports: [GanttModule] });
|
19151
|
+
SyncfusionGanttModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SyncfusionGanttModule, providers: [], imports: [[GanttModule], GanttModule] });
|
19152
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SyncfusionGanttModule, decorators: [{
|
19153
|
+
type: NgModule,
|
19154
|
+
args: [{
|
19155
|
+
imports: [GanttModule],
|
19156
|
+
exports: [GanttModule],
|
19157
|
+
providers: []
|
19158
|
+
}]
|
19159
|
+
}] });
|
19160
|
+
|
19096
19161
|
let AssignActionComponent = class AssignActionComponent {
|
19097
19162
|
constructor(_fb, _session, _accounts) {
|
19098
19163
|
this._fb = _fb;
|
@@ -19709,7 +19774,7 @@ class CubeAccumAnalysisWidget extends CubeAnalysisBase {
|
|
19709
19774
|
visible: true,
|
19710
19775
|
position: 'Outside',
|
19711
19776
|
connectorStyle: { length: '10%' },
|
19712
|
-
name: '
|
19777
|
+
name: 'name',
|
19713
19778
|
font: {
|
19714
19779
|
size: '14px',
|
19715
19780
|
fontFamily: FONT_FAMILY,
|
@@ -19855,6 +19920,7 @@ class CubeChartAnalysisWidget extends CubeAnalysisBase {
|
|
19855
19920
|
};
|
19856
19921
|
this.tooltip = {
|
19857
19922
|
enable: true,
|
19923
|
+
enableAnimation: false,
|
19858
19924
|
shared: false,
|
19859
19925
|
textStyle: {
|
19860
19926
|
fontFamily: FONT_FAMILY
|
@@ -23537,8 +23603,8 @@ let CubeDocumentMatrixComponent = class CubeDocumentMatrixComponent extends Cube
|
|
23537
23603
|
const { xAxis, serie, indices, sum, scope, filters } = this._viewRef.options;
|
23538
23604
|
if (!xAxis || !serie)
|
23539
23605
|
throw 'xAxis and serie required';
|
23540
|
-
this.xAxis = xAxis;
|
23541
|
-
this.serie = serie;
|
23606
|
+
this.xAxis = isArray(xAxis) ? xAxis[0] : xAxis;
|
23607
|
+
this.serie = isArray(serie) ? serie[0] : serie;
|
23542
23608
|
this.indices = indices;
|
23543
23609
|
this.sum = sum;
|
23544
23610
|
this.scope = scope;
|
@@ -23585,7 +23651,7 @@ let CubeDocumentMatrixComponent = class CubeDocumentMatrixComponent extends Cube
|
|
23585
23651
|
}
|
23586
23652
|
};
|
23587
23653
|
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 });
|
23588
|
-
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]
|
23654
|
+
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 } });
|
23589
23655
|
CubeDocumentMatrixComponent = __decorate([
|
23590
23656
|
BizDoc({
|
23591
23657
|
selector: 'bizdoc-cube-matrix'
|
@@ -23593,7 +23659,7 @@ CubeDocumentMatrixComponent = __decorate([
|
|
23593
23659
|
], CubeDocumentMatrixComponent);
|
23594
23660
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeDocumentMatrixComponent, decorators: [{
|
23595
23661
|
type: Component,
|
23596
|
-
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]
|
23662
|
+
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"] }]
|
23597
23663
|
}], ctorParameters: function () { return [{ type: DocumentViewRef }, { type: RouterImpl }, { type: CubeService }, { type: DatasourceService }, { type: SessionService }]; }, propDecorators: { table: [{
|
23598
23664
|
type: ViewChild,
|
23599
23665
|
args: [CubeMatrixComponent, { static: true }]
|
@@ -24023,7 +24089,7 @@ class CubeSumComponent {
|
|
24023
24089
|
this.forward = false;
|
24024
24090
|
this.Math = Math;
|
24025
24091
|
}
|
24026
|
-
ngOnChanges(
|
24092
|
+
ngOnChanges(_) {
|
24027
24093
|
this._cube = this._session.profile.cubes.find(c => c.name === this.cube) || this._session.profile.cubes[0];
|
24028
24094
|
this.currencyCode = this._cube.currencyCode;
|
24029
24095
|
this.digitsInfo = this._service.digitsInfo;
|
@@ -24520,7 +24586,7 @@ let CubeChartViewComponent = class CubeChartViewComponent extends CubeBase {
|
|
24520
24586
|
}
|
24521
24587
|
};
|
24522
24588
|
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 });
|
24523
|
-
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]" }] });
|
24589
|
+
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]" }] });
|
24524
24590
|
CubeChartViewComponent = __decorate([
|
24525
24591
|
BizDoc({
|
24526
24592
|
selector: 'bizdoc-chart-view'
|
@@ -24598,6 +24664,7 @@ class Item {
|
|
24598
24664
|
this.fill = fill;
|
24599
24665
|
this.tooltipSettings = {
|
24600
24666
|
visible: true,
|
24667
|
+
border: { width: 0 },
|
24601
24668
|
format: '${name} : ${y}',
|
24602
24669
|
trackLineSettings: {},
|
24603
24670
|
textStyle: {
|
@@ -24850,7 +24917,7 @@ const CORE_COMPONENTS = [CubeParallelViewComponent, CubeExploreViewComponent, Cu
|
|
24850
24917
|
];
|
24851
24918
|
class SharedModule {
|
24852
24919
|
static forChild(config) {
|
24853
|
-
const { formats
|
24920
|
+
const { formats } = config || {};
|
24854
24921
|
registerComponents(CORE_COMPONENTS);
|
24855
24922
|
const providers = [{
|
24856
24923
|
provide: RouterImpl, useClass: !config || !config.routing || config.routing === 'ng' ? NgRouter : PaneRouter
|
@@ -24937,11 +25004,11 @@ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
|
|
24937
25004
|
RouterModule,
|
24938
25005
|
MomentModule,
|
24939
25006
|
PickerModule,
|
24940
|
-
|
25007
|
+
SyncfusionGanttModule,
|
24941
25008
|
SyncfusionScheduleModule,
|
24942
25009
|
SyncfusionCircularGaugeModule,
|
24943
25010
|
SyncfusionChartModule,
|
24944
|
-
|
25011
|
+
SyncfusionGanttModule,
|
24945
25012
|
SyncfusionGridModule,
|
24946
25013
|
RichTextEditorModule,
|
24947
25014
|
SyncfusionSpreadsheetModule,
|
@@ -24997,11 +25064,11 @@ SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
24997
25064
|
RouterModule,
|
24998
25065
|
MomentModule,
|
24999
25066
|
PickerModule,
|
25000
|
-
|
25067
|
+
SyncfusionGanttModule,
|
25001
25068
|
SyncfusionScheduleModule,
|
25002
25069
|
SyncfusionCircularGaugeModule,
|
25003
25070
|
SyncfusionChartModule,
|
25004
|
-
|
25071
|
+
SyncfusionGanttModule,
|
25005
25072
|
SyncfusionGridModule,
|
25006
25073
|
RichTextEditorModule,
|
25007
25074
|
SyncfusionSpreadsheetModule,
|
@@ -25077,11 +25144,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
25077
25144
|
RouterModule,
|
25078
25145
|
MomentModule,
|
25079
25146
|
PickerModule,
|
25080
|
-
|
25147
|
+
SyncfusionGanttModule,
|
25081
25148
|
SyncfusionScheduleModule,
|
25082
25149
|
SyncfusionCircularGaugeModule,
|
25083
25150
|
SyncfusionChartModule,
|
25084
|
-
|
25151
|
+
SyncfusionGanttModule,
|
25085
25152
|
SyncfusionGridModule,
|
25086
25153
|
RichTextEditorModule,
|
25087
25154
|
SyncfusionSpreadsheetModule,
|
@@ -27022,7 +27089,7 @@ let PositionsComponent = class PositionsComponent {
|
|
27022
27089
|
let positions = model.positions;
|
27023
27090
|
if (!positions || !Object.keys(positions).length)
|
27024
27091
|
continue;
|
27025
|
-
const roles = this.
|
27092
|
+
const roles = this._session.profile.roles.filter(r => r.dataType === type.name && positions[r.name]);
|
27026
27093
|
const rows = [];
|
27027
27094
|
rows.push([this._translate.get('Type'), this._translate.get('Value'), '', ...roles.map(r => r.title)]);
|
27028
27095
|
model.patterns && model.patterns.forEach(p => {
|
@@ -27062,26 +27129,67 @@ let PositionsComponent = class PositionsComponent {
|
|
27062
27129
|
XLSX.writeFile(wb, `${this._translate.get('Positions')}.xlsx`);
|
27063
27130
|
});
|
27064
27131
|
}
|
27132
|
+
upload(evt) {
|
27133
|
+
return __awaiter(this, void 0, void 0, function* () {
|
27134
|
+
const { files } = evt.srcElement;
|
27135
|
+
if (files && files.length) {
|
27136
|
+
const file = files.item(0);
|
27137
|
+
var reader = new FileReader();
|
27138
|
+
reader.onload = e => { };
|
27139
|
+
const text = yield file.text();
|
27140
|
+
//reader.readAs(text);
|
27141
|
+
const wb = XLSX.readFile(file.name, {});
|
27142
|
+
for (let i = 0; i < wb.SheetNames.length; i++) {
|
27143
|
+
let title = wb.SheetNames[i], ws = wb.Sheets[title];
|
27144
|
+
let type = this.types.find(t => t.title === title);
|
27145
|
+
if (!type)
|
27146
|
+
throw '';
|
27147
|
+
let roles = this._session.profile.roles.filter(r => r.dataType === type.name);
|
27148
|
+
let row = ws['!rows'][0];
|
27149
|
+
for (let c = 0; c < ws['!cols'].length; c++) {
|
27150
|
+
let col = ws['!cols'][c];
|
27151
|
+
//let role = roles.find(r => r.title === ws.);
|
27152
|
+
// if (!role) {
|
27153
|
+
// this._everything[type.name].roles.push({name: '', title: ''});
|
27154
|
+
// }
|
27155
|
+
}
|
27156
|
+
for (let r = 0; r < ws['!rows'].length; r++) {
|
27157
|
+
let row = ws['!rows'][r];
|
27158
|
+
for (let c = 0; c < ws['!cols'].length; c++) {
|
27159
|
+
let col = ws['!cols'][c], content = '';
|
27160
|
+
if (content) {
|
27161
|
+
//let users = content.split(', ').map(name=> this.profiles.find(u=> u.name === name));
|
27162
|
+
}
|
27163
|
+
else { }
|
27164
|
+
}
|
27165
|
+
}
|
27166
|
+
}
|
27167
|
+
}
|
27168
|
+
});
|
27169
|
+
}
|
27065
27170
|
ngOnDestroy() {
|
27066
27171
|
this._destroy.next();
|
27067
27172
|
this._destroy.complete();
|
27068
27173
|
}
|
27069
27174
|
};
|
27070
27175
|
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 });
|
27071
|
-
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 } });
|
27176
|
+
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 } });
|
27072
27177
|
PositionsComponent = __decorate([
|
27073
27178
|
BizDoc({ selector: 'bizdoc-positions' })
|
27074
27179
|
/** positions component*/
|
27075
27180
|
], PositionsComponent);
|
27076
27181
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: PositionsComponent, decorators: [{
|
27077
27182
|
type: Component,
|
27078
|
-
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"] }]
|
27183
|
+
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"] }]
|
27079
27184
|
}], ctorParameters: function () {
|
27080
27185
|
return [{ type: SessionService }, { type: UtilityRef, decorators: [{
|
27081
27186
|
type: Inject,
|
27082
27187
|
args: [UtilityRef]
|
27083
27188
|
}] }, { type: DatasourceService }, { type: PromptService }, { type: AccountService }, { type: WindowTitleService }, { type: TranslateService }, { type: Popup }, { type: i3$2.MatDialog }];
|
27084
|
-
}, propDecorators: {
|
27189
|
+
}, propDecorators: { _fileElement: [{
|
27190
|
+
type: ViewChild,
|
27191
|
+
args: ['file', { static: true }]
|
27192
|
+
}], sort: [{
|
27085
27193
|
type: ViewChild,
|
27086
27194
|
args: [MatSort]
|
27087
27195
|
}], noRoleTpl: [{
|