@bizdoc/core 1.13.33 → 1.13.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/esm2020/lib/admin/document-trace/trace-element.component.mjs +4 -4
  2. package/esm2020/lib/admin/form/workflow/workflow.component.mjs +52 -19
  3. package/esm2020/lib/browse/expanded-item/expanded-item.component.mjs +5 -7
  4. package/esm2020/lib/chat/chat-info.mjs +2 -3
  5. package/esm2020/lib/chat/conversation.component.mjs +2 -2
  6. package/esm2020/lib/chat/conversation.pane.component.mjs +11 -2
  7. package/esm2020/lib/compose/trace/flow.component.mjs +18 -13
  8. package/esm2020/lib/compose/trace/trace.component.mjs +44 -68
  9. package/esm2020/lib/core/models.mjs +1 -1
  10. package/esm2020/lib/core/session.service.mjs +2 -2
  11. package/esm2020/lib/core/slots/slots.component.mjs +2 -2
  12. package/esm2020/lib/core/translations.mjs +5 -5
  13. package/esm2020/lib/cube/grid/spreadsheet.component.mjs +2 -1
  14. package/esm2020/lib/dashboard/cube/compare.widget.mjs +6 -5
  15. package/esm2020/lib/dashboard/score/compare-groups.widget.mjs +206 -0
  16. package/esm2020/lib/dashboard/score/peers-performance.widget.mjs +2 -2
  17. package/esm2020/lib/dashboard/score/pending-results.widget.mjs +5 -9
  18. package/esm2020/lib/modules/chart.module.mjs +10 -10
  19. package/esm2020/lib/modules/circular-gauge.module.mjs +1 -1
  20. package/esm2020/lib/modules/dayjs.module.mjs +41 -0
  21. package/esm2020/lib/modules/diagram.module.mjs +1 -1
  22. package/esm2020/lib/modules/gantt.module.mjs +4 -3
  23. package/esm2020/lib/modules/pivot.module.mjs +1 -1
  24. package/esm2020/lib/reports/cube/usage-base.mjs +2 -2
  25. package/esm2020/lib/reports/cube/usage-chart.component.mjs +11 -7
  26. package/esm2020/lib/reports/cube/usage-pivot.component.mjs +21 -3
  27. package/esm2020/lib/reports/report.mobile.component.mjs +3 -3
  28. package/esm2020/lib/reports/report.pane.component.mjs +3 -3
  29. package/esm2020/lib/shared.module.mjs +14 -32
  30. package/esm2020/lib/system.module.mjs +2 -1
  31. package/esm2020/public-api.mjs +2 -2
  32. package/fesm2015/bizdoc-core.mjs +269 -207
  33. package/fesm2015/bizdoc-core.mjs.map +1 -1
  34. package/fesm2020/bizdoc-core.mjs +269 -208
  35. package/fesm2020/bizdoc-core.mjs.map +1 -1
  36. package/lib/admin/form/workflow/workflow.component.d.ts +9 -6
  37. package/lib/compose/trace/trace.component.d.ts +1 -1
  38. package/lib/core/models.d.ts +1 -0
  39. package/lib/core/translations.d.ts +4 -4
  40. package/lib/dashboard/score/{compare-departments.widget.d.ts → compare-groups.widget.d.ts} +3 -3
  41. package/lib/dashboard/score/pending-results.widget.d.ts +0 -1
  42. package/lib/modules/chart.module.d.ts +1 -1
  43. package/lib/modules/dayjs.module.d.ts +6 -0
  44. package/lib/reports/cube/usage-base.d.ts +1 -1
  45. package/lib/reports/cube/usage-pivot.component.d.ts +5 -1
  46. package/lib/shared.module.d.ts +21 -19
  47. package/lib/system.module.d.ts +1 -0
  48. package/package.json +1 -1
  49. package/public-api.d.ts +1 -1
  50. package/esm2020/lib/dashboard/score/compare-departments.widget.mjs +0 -206
@@ -121,7 +121,7 @@ import { Platform } from '@angular/cdk/platform';
121
121
  import { SelectionModel } from '@angular/cdk/collections';
122
122
  import * as i25 from '@angular/flex-layout/extended';
123
123
  import * as i8$3 from '@syncfusion/ej2-angular-charts';
124
- import { AccumulationChart, PyramidSeries, FunnelSeries, AccumulationDataLabel, AccumulationTooltip, AccumulationLegend, Export, PieSeries, Chart as Chart$1, Category, DateTime, Tooltip as Tooltip$1, Legend, BarSeries, AreaSeries, BubbleSeries, ColumnSeries, LineSeries, PolarSeries, RadarSeries, SplineSeries, SplineAreaSeries, ScatterSeries, StackingLineSeries, StackingAreaSeries, StackingColumnSeries, StackingBarSeries, StepAreaSeries, StepLineSeries, ChartModule, AccumulationChartAllModule, SparklineAllModule, AccumulationDistributionIndicatorService, FunnelSeriesService, StackingStepAreaSeriesService, PieSeriesService, PyramidSeriesService, LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService, SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService, StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService, BarSeriesService, StackingBarSeriesService, RangeColumnSeriesService, BubbleSeriesService, TooltipService, CrosshairService, CategoryService, DateTimeService, LogarithmicService, LegendService, ZoomService, DataLabelService, SelectionService, ChartAnnotationService, WaterfallSeriesService, RangeAreaSeriesService, PolarSeriesService, RadarSeriesService, DateTimeCategoryService, MultiLevelLabelService, ParetoSeriesService, TooltipRenderService, ExportService, AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService, AccumulationChartComponent, ChartComponent } from '@syncfusion/ej2-angular-charts';
124
+ import { AccumulationChart, PyramidSeries, FunnelSeries, AccumulationDataLabel, AccumulationTooltip, AccumulationLegend, Export, PieSeries, Chart as Chart$1, Category, DateTime, Tooltip as Tooltip$1, Legend, BarSeries, AreaSeries, BubbleSeries, ColumnSeries, LineSeries, PolarSeries, RadarSeries, SplineSeries, SplineAreaSeries, ScatterSeries, StackingLineSeries, StackingAreaSeries, StackingColumnSeries, StackingBarSeries, StepAreaSeries, StepLineSeries, ChartModule, AccumulationChartAllModule, SparklineAllModule, RangeNavigatorModule, RangeTooltipService, AccumulationDistributionIndicatorService, FunnelSeriesService, StackingStepAreaSeriesService, PieSeriesService, PyramidSeriesService, LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService, SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService, StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService, BarSeriesService, StackingBarSeriesService, RangeColumnSeriesService, BubbleSeriesService, TooltipService, CrosshairService, CategoryService, DateTimeService, LogarithmicService, LegendService, ZoomService, DataLabelService, SelectionService, ChartAnnotationService, WaterfallSeriesService, RangeAreaSeriesService, PolarSeriesService, RadarSeriesService, DateTimeCategoryService, MultiLevelLabelService, ParetoSeriesService, TooltipRenderService, SparklineTooltipService, AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService, AccumulationChartComponent, ChartComponent } from '@syncfusion/ej2-angular-charts';
125
125
  import { Workbook } from '@syncfusion/ej2-excel-export';
126
126
  import { Chart } from '@syncfusion/ej2-charts';
127
127
  import * as i6$5 from '@syncfusion/ej2-angular-grids';
@@ -132,8 +132,8 @@ import * as i9$5 from '@syncfusion/ej2-angular-spreadsheet';
132
132
  import { Spreadsheet, isNumber, SpreadsheetModule, SelectionService as SelectionService$2, BasicModuleService, ClipboardService, CellFormatService, KeyboardNavigationService, KeyboardShortcutService, NumberFormatService } from '@syncfusion/ej2-angular-spreadsheet';
133
133
  import * as i4$1 from '@ctrl/ngx-emoji-mart';
134
134
  import { PickerModule } from '@ctrl/ngx-emoji-mart';
135
- import * as i11$1 from '@syncfusion/ej2-angular-diagrams';
136
- import { Diagram, UndoRedo, ConnectorDrawingTool, DiagramConstraints, DiagramTools, NodeConstraints, ConnectorConstraints, SelectorConstraints, Node, SymbolPaletteComponent, ComplexHierarchicalTree, BpmnDiagrams, DataBinding, LineDistribution, ConnectionPointOrigin, SnapConstraints, ComplexHierarchicalTreeService, DiagramModule, SymbolPaletteModule, ConnectorBridgingService, LineRoutingService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, ToolBase } from '@syncfusion/ej2-angular-diagrams';
135
+ import { Diagram, BpmnDiagrams, UndoRedo, ConnectorBridging, ConnectorEditing, Snapping, DataBinding, SymbolPalette, ConnectorDrawingTool, DiagramConstraints, DiagramTools, NodeConstraints, ConnectorConstraints, SelectorConstraints, Node } from '@syncfusion/ej2-diagrams';
136
+ import { Diagram as Diagram$1, ComplexHierarchicalTree, BpmnDiagrams as BpmnDiagrams$1, DataBinding as DataBinding$1, LineDistribution, DiagramTools as DiagramTools$1, DiagramConstraints as DiagramConstraints$1, ConnectionPointOrigin, SnapConstraints, NodeConstraints as NodeConstraints$1, ComplexHierarchicalTreeService, DiagramModule, SymbolPaletteModule, ConnectorBridgingService, LineRoutingService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, ToolBase, SelectorConstraints as SelectorConstraints$1, ConnectorConstraints as ConnectorConstraints$1 } from '@syncfusion/ej2-angular-diagrams';
137
137
  import * as i9$2 from '@syncfusion/ej2-angular-schedule';
138
138
  import { Schedule, Day, WorkWeek, Month, MonthAgenda, Agenda, Year, ScheduleModule, ExcelExportService as ExcelExportService$2, DayService, WorkWeekService, MonthService, MonthAgendaService, ICalendarExportService, AgendaService, YearService } from '@syncfusion/ej2-angular-schedule';
139
139
  import * as i10$1 from '@syncfusion/ej2-angular-kanban';
@@ -141,12 +141,13 @@ import { KanbanComponent, KanbanModule } from '@syncfusion/ej2-angular-kanban';
141
141
  import { CircularGaugeModule, AnnotationsService, GaugeTooltipService, LegendService as LegendService$1, CircularGauge, Annotations, GaugeTooltip, CircularGaugeComponent, Legend as Legend$1 } from '@syncfusion/ej2-angular-circulargauge';
142
142
  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';
143
143
  import * as i7$5 from '@syncfusion/ej2-angular-gantt';
144
- import { GanttModule, Gantt, SelectionService as SelectionService$3, DayMarkersService } from '@syncfusion/ej2-angular-gantt';
145
- import player from 'lottie-web/build/player/lottie';
144
+ import { GanttModule, ExcelExportService as ExcelExportService$3, DayMarkersService, SelectionService as SelectionService$3, Gantt } from '@syncfusion/ej2-angular-gantt';
146
145
  import relativeTime from 'dayjs/plugin/relativeTime';
147
146
  import duration from 'dayjs/plugin/duration';
148
147
  import calendar from 'dayjs/plugin/calendar';
148
+ import advancedFormat from 'dayjs/plugin/advancedFormat';
149
149
  import updateLocale from 'dayjs/plugin/updateLocale';
150
+ import player from 'lottie-web/build/player/lottie';
150
151
 
151
152
  const expandListItemAnimation = trigger('detailExpand', [
152
153
  state('collapsed', style({ height: '0px', minHeight: '0', display: '' })),
@@ -1023,7 +1024,7 @@ class SessionService {
1023
1024
  _config && _config.maps && this._loadMaps();
1024
1025
  }
1025
1026
  get profile() { return this._profile; }
1026
- get gender() { return this._profile.byGender || this._profile.gender; }
1027
+ get gender() { return this.profile.byId ? this._profile.byGender : this._profile.gender; }
1027
1028
  get accentPalette() {
1028
1029
  const palette = MATERIAL_PALETTES[this.theme.accent];
1029
1030
  return this._constructpalette(palette);
@@ -2073,7 +2074,7 @@ const STRINGS = {
2073
2074
  YouSubstituteActionTakenTo: 'Document {0} to {1} by you instead of {2} {3}',
2074
2075
  Substituting: '{0} substituting {1}',
2075
2076
  SubstitutingForYou: '{0} substituting you',
2076
- YouSubstitute: 'You substituting {0}',
2077
+ YouSubstituting: 'You substituting {0}',
2077
2078
  SubstitutingBy: '{0} by {2} substituting {1}',
2078
2079
  SubstitutingByYou: '{0} by you substituting {1}',
2079
2080
  SubstitutingYou: 'Substituting for you',
@@ -2629,9 +2630,9 @@ const STRINGS = {
2629
2630
  SubstitutingForFemale: 'במקום {0}',
2630
2631
  Substituting: '{0} מחליף את {1}',
2631
2632
  SubstitutingForYou: '{0} מחליף אותך',
2632
- YouSubstitute: 'את/ה מחליף את {0}',
2633
- YouSubstituteMale: 'אתה מחליף את {0}',
2634
- YouSubstituteFemale: 'את מחליפה את {0}',
2633
+ YouSubstituting: 'את/ה מחליף את {0}',
2634
+ YouSubstitutingMale: 'אתה מחליף את {0}',
2635
+ YouSubstitutingFemale: 'את מחליפה את {0}',
2635
2636
  SubstitutingBy: '{0} מחליף את {1} דרך {2}',
2636
2637
  SubstitutingByYou: '{0} מחליף/פה את {1} דרכך}',
2637
2638
  SubstitutingByYouMale: '{0} מחליף את {1} דרכך}',
@@ -7107,11 +7108,10 @@ class ChatInfo {
7107
7108
  open(userId, options) {
7108
7109
  let contact = this._session.profile.contacts.find(c => c.id === userId);
7109
7110
  if (!contact) {
7110
- const now = new Date();
7111
7111
  contact = {
7112
7112
  id: userId,
7113
7113
  accepted: false,
7114
- time: now.toJSON(),
7114
+ time: new Date().toJSON(),
7115
7115
  count: 0
7116
7116
  };
7117
7117
  this._session.profile.contacts.push(contact);
@@ -7456,7 +7456,7 @@ class ExpandedItemComponent {
7456
7456
  }
7457
7457
  _note() {
7458
7458
  return __awaiter(this, void 0, void 0, function* () {
7459
- const { ownerId, issued, substituteId, received, replied, log, id, note, byId, action, escalated, originId } = this.model;
7459
+ const { ownerId, issued, substituteId, received, replied, log, id, note, byId, action, escalated, originId, draft } = this.model;
7460
7460
  let target;
7461
7461
  if (action) {
7462
7462
  target = yield this._target(id);
@@ -7471,10 +7471,8 @@ class ExpandedItemComponent {
7471
7471
  this.note = this._translate.personalize('YouSubstituteActionTaken', substituting.gender, adjective, this._formatUserElement(substituting), time);
7472
7472
  }
7473
7473
  else if (escalated) {
7474
- const escalations = log.filter(l => l.time > issued &&
7475
- l.type === 'Escalation'
7476
- && l.recipientId === id);
7477
- this.note = this._translate.personalize('EscalatedFrom', substituting.gender, this._formatUserElement(substituting), this._duration(escalations[0].duration));
7474
+ const escalation = log.find(l => l.type === 'Escalation' && l.recipientId === originId);
7475
+ this.note = this._translate.personalize('EscalatedFrom', substituting.gender, this._formatUserElement(substituting), this._duration(escalation.duration));
7478
7476
  }
7479
7477
  else {
7480
7478
  const time = this._fromNow(received);
@@ -7528,7 +7526,7 @@ class ExpandedItemComponent {
7528
7526
  this.note = this._translate.get('ActionBy', adjective, who.name);
7529
7527
  }
7530
7528
  }
7531
- else if (ownerId === this._session.profile.userId && issued) {
7529
+ else if (ownerId === this._session.profile.userId && !draft) {
7532
7530
  const time = this._fromNow(issued);
7533
7531
  if (byId) {
7534
7532
  if (byId === this._session.profile.byId)
@@ -10893,6 +10891,7 @@ class CubeSpreadsheetComponent {
10893
10891
  enableContextMenu: false,
10894
10892
  showFormulaBar: false,
10895
10893
  showSheetTabs: false,
10894
+ enableKeyboardNavigation: true,
10896
10895
  select: this.select.bind(this),
10897
10896
  sheets: [{
10898
10897
  columns: this.columns,
@@ -13070,12 +13069,12 @@ class ReportPaneComponent {
13070
13069
  }
13071
13070
  }
13072
13071
  ReportPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: ReportPaneComponent, deps: [{ token: SessionService }, { token: PaneRef }, { token: Popup }, { token: i0.ChangeDetectorRef }, { token: PromptService }, { token: GuideService }], target: i0.ɵɵFactoryTarget.Component });
13073
- ReportPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: ReportPaneComponent, selector: "bizdoc-report.pane", host: { listeners: { "window:keydown.f1": "guide($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "viewer", first: true, predicate: ReportViewerComponent, descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"viewer.execute()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"viewer.exportExcel()\" bizdocTooltip=\"{{'Download' | translate}}\"><mat-icon>save_alt</mat-icon></button>\r\n <button mat-icon-button (click)=\"guide($event)\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"report.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" *ngIf=\"hasFilters\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filter($event)\" bizdocTooltip=\"{{'Filter' | translate}}\" *ngIf=\"hasFilters\"><mat-icon [class.filled]=\"anyFilters\">filter_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<bizdoc-report-viewer [report]=\"report\" [args]=\"args\" fxFlex></bizdoc-report-viewer>\r\n", styles: [":host{min-width:560px;display:block;height:100%;display:flex;flex-direction:column}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: ReportViewerComponent, selector: "bizdoc-report-viewer", inputs: ["report", "args"] }], directives: [{ type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: MatIconAnimate, selector: "[matAnimate]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }], pipes: { "translate": TranslatePipe } });
13072
+ ReportPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: ReportPaneComponent, selector: "bizdoc-report.pane", host: { listeners: { "window:keydown.f1": "guide($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "viewer", first: true, predicate: ReportViewerComponent, descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"viewer.execute()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"viewer.exportExcel()\" bizdocTooltip=\"{{'Download' | translate}}\"><mat-icon>save_alt</mat-icon></button>\r\n <button mat-icon-button (click)=\"guide($event)\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"report.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" *ngIf=\"hasFilters\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filter($event)\" bizdocTooltip=\"{{'Filter' | translate}}\" *ngIf=\"hasFilters\"><mat-icon [class.filled]=\"anyFilters\">filter_list</mat-icon></button>\r\n</mat-toolbar>\r\n<bizdoc-report-viewer [report]=\"report\" [args]=\"args\" fxFlex></bizdoc-report-viewer>\r\n", styles: [":host{min-width:560px;display:block;height:100%;display:flex;flex-direction:column}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: ReportViewerComponent, selector: "bizdoc-report-viewer", inputs: ["report", "args"] }], directives: [{ type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: MatIconAnimate, selector: "[matAnimate]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }], pipes: { "translate": TranslatePipe } });
13074
13073
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: ReportPaneComponent, decorators: [{
13075
13074
  type: Component,
13076
13075
  args: [{ selector: 'bizdoc-report.pane', host: {
13077
13076
  class: 'pane'
13078
- }, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"viewer.execute()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"viewer.exportExcel()\" bizdocTooltip=\"{{'Download' | translate}}\"><mat-icon>save_alt</mat-icon></button>\r\n <button mat-icon-button (click)=\"guide($event)\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"report.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" *ngIf=\"hasFilters\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filter($event)\" bizdocTooltip=\"{{'Filter' | translate}}\" *ngIf=\"hasFilters\"><mat-icon [class.filled]=\"anyFilters\">filter_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<bizdoc-report-viewer [report]=\"report\" [args]=\"args\" fxFlex></bizdoc-report-viewer>\r\n", styles: [":host{min-width:560px;display:block;height:100%;display:flex;flex-direction:column}\n"] }]
13077
+ }, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"viewer.execute()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"viewer.exportExcel()\" bizdocTooltip=\"{{'Download' | translate}}\"><mat-icon>save_alt</mat-icon></button>\r\n <button mat-icon-button (click)=\"guide($event)\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"report.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" *ngIf=\"hasFilters\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filter($event)\" bizdocTooltip=\"{{'Filter' | translate}}\" *ngIf=\"hasFilters\"><mat-icon [class.filled]=\"anyFilters\">filter_list</mat-icon></button>\r\n</mat-toolbar>\r\n<bizdoc-report-viewer [report]=\"report\" [args]=\"args\" fxFlex></bizdoc-report-viewer>\r\n", styles: [":host{min-width:560px;display:block;height:100%;display:flex;flex-direction:column}\n"] }]
13079
13078
  }], ctorParameters: function () { return [{ type: SessionService }, { type: PaneRef }, { type: Popup }, { type: i0.ChangeDetectorRef }, { type: PromptService }, { type: GuideService }]; }, propDecorators: { viewer: [{
13080
13079
  type: ViewChild,
13081
13080
  args: [ReportViewerComponent, { static: true }]
@@ -13267,7 +13266,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
13267
13266
  type: Injectable
13268
13267
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
13269
13268
 
13270
- Diagram.Inject(UndoRedo);
13269
+ Diagram.Inject(BpmnDiagrams, UndoRedo, ConnectorBridging, ConnectorEditing, Snapping, DataBinding);
13270
+ SymbolPalette.Inject(BpmnDiagrams);
13271
13271
  function getPorts$1() {
13272
13272
  const ports = [
13273
13273
  { id: 'port1', shape: 'Circle', offset: { x: 0, y: 0.5 } },
@@ -13332,7 +13332,6 @@ class WorkflowComponent {
13332
13332
  this.connectorType = 'Bezier';
13333
13333
  this.alignment = 'Center';
13334
13334
  this.fontSize = 12;
13335
- this.getCustomTool = this.getTool.bind(this);
13336
13335
  this.saving = false;
13337
13336
  this.dirty = false;
13338
13337
  this.palettes = [];
@@ -13403,6 +13402,38 @@ class WorkflowComponent {
13403
13402
  tool = new DrawTool(this.diagram, this.connectorType);
13404
13403
  return tool;
13405
13404
  }
13405
+ ngOnInit() {
13406
+ }
13407
+ ngAfterViewInit() {
13408
+ this.symbolPalette = new SymbolPalette({
13409
+ expandMode: 'Multiple',
13410
+ palettes: this.palettes,
13411
+ width: "100%", height: "100%", symbolHeight: 80,
13412
+ enableRtl: false, enableAnimation: false, symbolWidth: 80,
13413
+ symbolMargin: this.symbolMargin,
13414
+ getSymbolInfo: this.getSymbolInfo.bind(this),
13415
+ getNodeDefaults: this.getSymbolDefaults.bind(this)
13416
+ });
13417
+ this.symbolPalette.appendTo(this.symbolPaletteEl.nativeElement);
13418
+ this.diagram = new Diagram({
13419
+ width: "100%", height: "100%",
13420
+ snapSettings: this.snapSettings,
13421
+ getConnectorDefaults: this.connDefaults.bind(this),
13422
+ constraints: this.diagramConstraints,
13423
+ tool: this.diagramTool,
13424
+ getNodeDefaults: this.nodeDefaults.bind(this),
13425
+ getCustomTool: this.getTool.bind(this),
13426
+ scrollSettings: this.scrollSettings,
13427
+ selectedItems: this.selectedItems,
13428
+ rulerSettings: this.rulerSettings,
13429
+ dragEnter: this.dragEnter.bind(this),
13430
+ connectionChange: this.change.bind(this),
13431
+ collectionChange: this.change.bind(this),
13432
+ propertyChange: this.propertyChange.bind(this),
13433
+ selectionChange: this.selectionChange.bind(this),
13434
+ }, this.diagramEl.nativeElement);
13435
+ this.diagramCreate();
13436
+ }
13406
13437
  diagramCreate() {
13407
13438
  paletteIconClick();
13408
13439
  this._pane.paramsChange.pipe(takeUntil(this._destroy)).subscribe(p => {
@@ -13431,7 +13462,7 @@ class WorkflowComponent {
13431
13462
  addInfo: {
13432
13463
  nodeType: n.name,
13433
13464
  title: n.title
13434
- }
13465
+ },
13435
13466
  };
13436
13467
  node.node = n.name;
13437
13468
  let palette = this.palettes.find(p => p.title === (n.palette || ''));
@@ -13609,7 +13640,7 @@ class WorkflowComponent {
13609
13640
  this.dirty = true;
13610
13641
  }
13611
13642
  save() {
13612
- this.diagram.serializationSettings = {};
13643
+ this.diagram.serializationSettings = { preventDefaults: true };
13613
13644
  const obj = JSON.parse(this.diagram.saveDiagram());
13614
13645
  this._form.workflow.connectors = obj.connectors;
13615
13646
  this._form.workflow.nodes = obj.nodes.filter(n => n.id !== 'version').map((n) => {
@@ -13635,23 +13666,26 @@ class WorkflowComponent {
13635
13666
  });
13636
13667
  }
13637
13668
  ngOnDestroy() {
13669
+ var _a, _b;
13670
+ (_a = this.symbolPalette) === null || _a === void 0 ? void 0 : _a.destroy();
13671
+ (_b = this.diagram) === null || _b === void 0 ? void 0 : _b.destroy();
13638
13672
  this._destroy.next();
13639
13673
  this._destroy.complete();
13640
13674
  }
13641
13675
  }
13642
13676
  WorkflowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: WorkflowComponent, deps: [{ token: PromptService }, { token: FormService }, { token: PaneRef }, { token: PanesRouter }, { token: SessionService }, { token: TranslateService }], target: i0.ɵɵFactoryTarget.Component });
13643
- WorkflowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: WorkflowComponent, selector: "bizdoc-workflow", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "symbolPalette", first: true, predicate: SymbolPaletteComponent, descendants: true }, { propertyName: "diagram", first: true, predicate: ["diagram"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty || saving\">{{'SaveChanges' | translate}}</button>\r\n <button mat-icon-button (click)=\"diagram.fitToPage()\" [bizdocTooltip]=\"'FitToPage' | translate\"><mat-icon>fullscreen_exit</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.undo()\" [bizdocTooltip]=\"'Undo' | translate\" [disabled]=\"!diagram.historyManager?.canUndo\"><mat-icon>undo</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.redo()\" [bizdocTooltip]=\"'Redo' | translate\" [disabled]=\"!diagram.historyManager?.canRedo\"><mat-icon>redo</mat-icon></button>\r\n &nbsp;\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"addText()\" [bizdocTooltip]=\"'Text' | translate\"><mat-icon>title</mat-icon></button>\r\n <button mat-button [matMenuTriggerFor]=\"lineMenu\" [disabled]=\"!diagram.selectedItems?.connectors.length\" [bizdocTooltip]=\"'ConnectorMode'|translate\">\r\n <span class=\"e-menu-icon\" [ngClass]=\"{'sf-icon-straight-line': connectorType === 'Straight',\r\n 'sf-icon-orthogonal-line': connectorType === 'Orthogonal',\r\n 'sf-icon-beizer-line': connectorType === 'Bezier'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #lineMenu panelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"connectorTypeChange('Straight')\">\r\n <span class=\"e-menu-icon sf-icon-straight-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Orthogonal')\">\r\n <span class=\"e-menu-icon sf-icon-orthogonal-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Bezier')\">\r\n <span class=\"e-menu-icon sf-icon-beizer-line\"></span>\r\n </button>\r\n </mat-menu>\r\n &nbsp;\r\n <button mat-button [matMenuTriggerFor]=\"alignMenu\" [disabled]=\"!diagram.selectedItems?.nodes.length && !diagram.selectedItems?.connectors.length\" [bizdocTooltip]=\"'Align'|translate\">\r\n <span class=\"e-icons\" [ngClass]=\"{'sf-icon-top': alignment === 'Top',\r\n 'sf-icon-left': alignment === 'Left',\r\n 'sf-icon-center': alignment === 'Center',\r\n 'sf-icon-bottom': alignment === 'Bottom',\r\n 'sf-icon-right': alignment === 'Right'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #alignMenu panelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"align('Top')\">\r\n <span class=\"e-icons sf-icon-top\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Left')\">\r\n <span class=\"e-icons sf-icon-left\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Center')\">\r\n <span class=\"e-icons sf-icon-center\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Bottom')\">\r\n <span class=\"e-icons sf-icon-bottom\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Right')\">\r\n <span class=\"e-icons sf-icon-right\"></span>\r\n </button>\r\n </mat-menu>\r\n</mat-toolbar>\r\n<div class=\"row container\">\r\n <div id=\"symbolpalette\" *ngIf=\"tools\">\r\n <ejs-symbolpalette dir=\"ltr\" expandMode='Multiple' [palettes]='palettes' width=\"100%\" height=\"100%\" [symbolHeight]=80\r\n [enableRtl]=\"false\" [enableAnimation]=\"false\" [symbolWidth]=80 [symbolMargin]='symbolMargin' [getSymbolInfo]='getSymbolInfo' [getNodeDefaults]='getSymbolDefaults'>\r\n </ejs-symbolpalette>\r\n </div>\r\n <ejs-diagram #diagram id=\"diagram\" width=\"100%\" height=\"100%\" dir=\"ltr\" [snapSettings]='snapSettings' [getConnectorDefaults]='connDefaults' fxFlex\r\n [constraints]=\"diagramConstraints\" [tool]=diagramTool [getNodeDefaults]='nodeDefaults' [getCustomTool]='getCustomTool' [scrollSettings]=\"scrollSettings\"\r\n [selectedItems]=\"selectedItems\"\r\n [rulerSettings]=\"rulerSettings\"\r\n (dragEnter)='dragEnter($event)'\r\n (connectionChange)=\"change()\"\r\n (collectionChange)=\"change()\"\r\n (propertyChange)=\"propertyChange($event)\"\r\n (selectionChange)=\"selectionChange()\"\r\n (created)=\"diagramCreate()\">\r\n </ejs-diagram>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}.container{flex-grow:1;overflow-y:auto}#diagram{flex-grow:1}#symbolpalette{width:210px}::ng-deep .e-rtl{direction:ltr}::ng-deep .mat-toolbar .mat-button-toggle{background:transparent!important}.e-menu-icon{font-family:diagram-icons!important;speak:none;font-size:18px;font-style:normal;font-weight:400;font-feature-settings:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::ng-deep .icon-menu-panel{min-width:0}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i11$1.SymbolPaletteComponent, selector: "ejs-symbolpalette", inputs: ["accessKey", "allowDrag", "connectorDefaults", "enableAnimation", "enablePersistence", "enableRtl", "enableSearch", "expandMode", "filterSymbols", "getConnectorDefaults", "getNodeDefaults", "getSymbolInfo", "getSymbolTemplate", "height", "ignoreSymbolsOnSearch", "locale", "nodeDefaults", "palettes", "symbolDragSize", "symbolHeight", "symbolInfo", "symbolMargin", "symbolPreview", "symbolWidth", "width"], outputs: ["paletteExpanding", "paletteSelectionChange"] }, { type: i11$1.DiagramComponent, selector: "ejs-diagram", inputs: ["addInfo", "annotationTemplate", "backgroundColor", "bridgeDirection", "commandManager", "connectorDefaults", "connectors", "constraints", "contextMenuSettings", "customCursor", "dataSourceSettings", "diagramSettings", "drawingObject", "enablePersistence", "enableRtl", "getConnectorDefaults", "getCustomCursor", "getCustomProperty", "getCustomTool", "getDescription", "getNodeDefaults", "height", "historyManager", "layers", "layout", "locale", "mode", "nodeDefaults", "nodeTemplate", "nodes", "pageSettings", "rulerSettings", "scrollSettings", "selectedItems", "serializationSettings", "setNodeTemplate", "snapSettings", "tool", "tooltip", "updateSelection", "userHandleTemplate", "width"], outputs: ["animationComplete", "click", "collectionChange", "commandExecute", "connectionChange", "contextMenuBeforeItemRender", "contextMenuClick", "contextMenuOpen", "created", "dataLoaded", "doubleClick", "dragEnter", "dragLeave", "dragOver", "drop", "expandStateChange", "fixedUserHandleClick", "historyChange", "historyStateChange", "keyDown", "keyUp", "mouseEnter", "mouseLeave", "mouseOver", "onImageLoad", "onUserHandleMouseDown", "onUserHandleMouseEnter", "onUserHandleMouseLeave", "onUserHandleMouseUp", "positionChange", "propertyChange", "rotateChange", "scrollChange", "segmentCollectionChange", "selectionChange", "sizeChange", "sourcePointChange", "targetPointChange", "textEdit"] }], directives: [{ type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i25.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7$2.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i6$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }], pipes: { "translate": TranslatePipe } });
13677
+ WorkflowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: WorkflowComponent, selector: "bizdoc-workflow", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "symbolPaletteEl", first: true, predicate: ["symbolPalette"], descendants: true, static: true }, { propertyName: "diagramEl", first: true, predicate: ["diagram"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty || saving\">{{'SaveChanges' | translate}}</button>\r\n <button mat-icon-button (click)=\"diagram.fitToPage()\" [bizdocTooltip]=\"'FitToPage' | translate\"><mat-icon>fullscreen_exit</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.undo()\" [bizdocTooltip]=\"'Undo' | translate\" [disabled]=\"!diagram.historyManager?.canUndo\"><mat-icon>undo</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.redo()\" [bizdocTooltip]=\"'Redo' | translate\" [disabled]=\"!diagram.historyManager?.canRedo\"><mat-icon>redo</mat-icon></button>\r\n &nbsp;\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"addText()\" [bizdocTooltip]=\"'Text' | translate\"><mat-icon>title</mat-icon></button>\r\n <button mat-button [matMenuTriggerFor]=\"lineMenu\" [disabled]=\"!diagram.selectedItems?.connectors.length\" [bizdocTooltip]=\"'ConnectorMode'|translate\">\r\n <span class=\"e-menu-icon\" [ngClass]=\"{'sf-icon-straight-line': connectorType === 'Straight',\r\n 'sf-icon-orthogonal-line': connectorType === 'Orthogonal',\r\n 'sf-icon-beizer-line': connectorType === 'Bezier'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #lineMenu panelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"connectorTypeChange('Straight')\">\r\n <span class=\"e-menu-icon sf-icon-straight-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Orthogonal')\">\r\n <span class=\"e-menu-icon sf-icon-orthogonal-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Bezier')\">\r\n <span class=\"e-menu-icon sf-icon-beizer-line\"></span>\r\n </button>\r\n </mat-menu>\r\n &nbsp;\r\n <button mat-button [matMenuTriggerFor]=\"alignMenu\" [disabled]=\"!diagram.selectedItems?.nodes.length && !diagram.selectedItems?.connectors.length\" [bizdocTooltip]=\"'Align'|translate\">\r\n <span class=\"e-icons\" [ngClass]=\"{'sf-icon-top': alignment === 'Top',\r\n 'sf-icon-left': alignment === 'Left',\r\n 'sf-icon-center': alignment === 'Center',\r\n 'sf-icon-bottom': alignment === 'Bottom',\r\n 'sf-icon-right': alignment === 'Right'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #alignMenu panelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"align('Top')\">\r\n <span class=\"e-icons sf-icon-top\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Left')\">\r\n <span class=\"e-icons sf-icon-left\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Center')\">\r\n <span class=\"e-icons sf-icon-center\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Bottom')\">\r\n <span class=\"e-icons sf-icon-bottom\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Right')\">\r\n <span class=\"e-icons sf-icon-right\"></span>\r\n </button>\r\n </mat-menu>\r\n</mat-toolbar>\r\n<div class=\"row container\">\r\n <div id=\"symbolpalette\" [style.display]=\"tools?'':'none'\">\r\n <div dir=\"ltr\" #symbolPalette>\r\n </div>\r\n </div>\r\n <div #diagram id=\"diagram\" fxFlex dir=\"ltr\">\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}.container{flex-grow:1;overflow-y:auto}#diagram{flex-grow:1}#symbolpalette{width:210px}::ng-deep .e-rtl{direction:ltr}::ng-deep .mat-toolbar .mat-button-toggle{background:transparent!important}.e-menu-icon{font-family:diagram-icons!important;speak:none;font-size:18px;font-style:normal;font-weight:400;font-feature-settings:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::ng-deep .icon-menu-panel{min-width:0}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i25.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i7$2.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i6$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }], pipes: { "translate": TranslatePipe } });
13644
13678
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: WorkflowComponent, decorators: [{
13645
13679
  type: Component,
13646
13680
  args: [{ selector: 'bizdoc-workflow', host: {
13647
13681
  class: 'pane'
13648
- }, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty || saving\">{{'SaveChanges' | translate}}</button>\r\n <button mat-icon-button (click)=\"diagram.fitToPage()\" [bizdocTooltip]=\"'FitToPage' | translate\"><mat-icon>fullscreen_exit</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.undo()\" [bizdocTooltip]=\"'Undo' | translate\" [disabled]=\"!diagram.historyManager?.canUndo\"><mat-icon>undo</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.redo()\" [bizdocTooltip]=\"'Redo' | translate\" [disabled]=\"!diagram.historyManager?.canRedo\"><mat-icon>redo</mat-icon></button>\r\n &nbsp;\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"addText()\" [bizdocTooltip]=\"'Text' | translate\"><mat-icon>title</mat-icon></button>\r\n <button mat-button [matMenuTriggerFor]=\"lineMenu\" [disabled]=\"!diagram.selectedItems?.connectors.length\" [bizdocTooltip]=\"'ConnectorMode'|translate\">\r\n <span class=\"e-menu-icon\" [ngClass]=\"{'sf-icon-straight-line': connectorType === 'Straight',\r\n 'sf-icon-orthogonal-line': connectorType === 'Orthogonal',\r\n 'sf-icon-beizer-line': connectorType === 'Bezier'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #lineMenu panelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"connectorTypeChange('Straight')\">\r\n <span class=\"e-menu-icon sf-icon-straight-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Orthogonal')\">\r\n <span class=\"e-menu-icon sf-icon-orthogonal-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Bezier')\">\r\n <span class=\"e-menu-icon sf-icon-beizer-line\"></span>\r\n </button>\r\n </mat-menu>\r\n &nbsp;\r\n <button mat-button [matMenuTriggerFor]=\"alignMenu\" [disabled]=\"!diagram.selectedItems?.nodes.length && !diagram.selectedItems?.connectors.length\" [bizdocTooltip]=\"'Align'|translate\">\r\n <span class=\"e-icons\" [ngClass]=\"{'sf-icon-top': alignment === 'Top',\r\n 'sf-icon-left': alignment === 'Left',\r\n 'sf-icon-center': alignment === 'Center',\r\n 'sf-icon-bottom': alignment === 'Bottom',\r\n 'sf-icon-right': alignment === 'Right'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #alignMenu panelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"align('Top')\">\r\n <span class=\"e-icons sf-icon-top\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Left')\">\r\n <span class=\"e-icons sf-icon-left\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Center')\">\r\n <span class=\"e-icons sf-icon-center\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Bottom')\">\r\n <span class=\"e-icons sf-icon-bottom\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Right')\">\r\n <span class=\"e-icons sf-icon-right\"></span>\r\n </button>\r\n </mat-menu>\r\n</mat-toolbar>\r\n<div class=\"row container\">\r\n <div id=\"symbolpalette\" *ngIf=\"tools\">\r\n <ejs-symbolpalette dir=\"ltr\" expandMode='Multiple' [palettes]='palettes' width=\"100%\" height=\"100%\" [symbolHeight]=80\r\n [enableRtl]=\"false\" [enableAnimation]=\"false\" [symbolWidth]=80 [symbolMargin]='symbolMargin' [getSymbolInfo]='getSymbolInfo' [getNodeDefaults]='getSymbolDefaults'>\r\n </ejs-symbolpalette>\r\n </div>\r\n <ejs-diagram #diagram id=\"diagram\" width=\"100%\" height=\"100%\" dir=\"ltr\" [snapSettings]='snapSettings' [getConnectorDefaults]='connDefaults' fxFlex\r\n [constraints]=\"diagramConstraints\" [tool]=diagramTool [getNodeDefaults]='nodeDefaults' [getCustomTool]='getCustomTool' [scrollSettings]=\"scrollSettings\"\r\n [selectedItems]=\"selectedItems\"\r\n [rulerSettings]=\"rulerSettings\"\r\n (dragEnter)='dragEnter($event)'\r\n (connectionChange)=\"change()\"\r\n (collectionChange)=\"change()\"\r\n (propertyChange)=\"propertyChange($event)\"\r\n (selectionChange)=\"selectionChange()\"\r\n (created)=\"diagramCreate()\">\r\n </ejs-diagram>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}.container{flex-grow:1;overflow-y:auto}#diagram{flex-grow:1}#symbolpalette{width:210px}::ng-deep .e-rtl{direction:ltr}::ng-deep .mat-toolbar .mat-button-toggle{background:transparent!important}.e-menu-icon{font-family:diagram-icons!important;speak:none;font-size:18px;font-style:normal;font-weight:400;font-feature-settings:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::ng-deep .icon-menu-panel{min-width:0}\n"] }]
13649
- }], ctorParameters: function () { return [{ type: PromptService }, { type: FormService }, { type: PaneRef }, { type: PanesRouter }, { type: SessionService }, { type: TranslateService }]; }, propDecorators: { symbolPalette: [{
13682
+ }, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty || saving\">{{'SaveChanges' | translate}}</button>\r\n <button mat-icon-button (click)=\"diagram.fitToPage()\" [bizdocTooltip]=\"'FitToPage' | translate\"><mat-icon>fullscreen_exit</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.undo()\" [bizdocTooltip]=\"'Undo' | translate\" [disabled]=\"!diagram.historyManager?.canUndo\"><mat-icon>undo</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.redo()\" [bizdocTooltip]=\"'Redo' | translate\" [disabled]=\"!diagram.historyManager?.canRedo\"><mat-icon>redo</mat-icon></button>\r\n &nbsp;\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"addText()\" [bizdocTooltip]=\"'Text' | translate\"><mat-icon>title</mat-icon></button>\r\n <button mat-button [matMenuTriggerFor]=\"lineMenu\" [disabled]=\"!diagram.selectedItems?.connectors.length\" [bizdocTooltip]=\"'ConnectorMode'|translate\">\r\n <span class=\"e-menu-icon\" [ngClass]=\"{'sf-icon-straight-line': connectorType === 'Straight',\r\n 'sf-icon-orthogonal-line': connectorType === 'Orthogonal',\r\n 'sf-icon-beizer-line': connectorType === 'Bezier'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #lineMenu panelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"connectorTypeChange('Straight')\">\r\n <span class=\"e-menu-icon sf-icon-straight-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Orthogonal')\">\r\n <span class=\"e-menu-icon sf-icon-orthogonal-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Bezier')\">\r\n <span class=\"e-menu-icon sf-icon-beizer-line\"></span>\r\n </button>\r\n </mat-menu>\r\n &nbsp;\r\n <button mat-button [matMenuTriggerFor]=\"alignMenu\" [disabled]=\"!diagram.selectedItems?.nodes.length && !diagram.selectedItems?.connectors.length\" [bizdocTooltip]=\"'Align'|translate\">\r\n <span class=\"e-icons\" [ngClass]=\"{'sf-icon-top': alignment === 'Top',\r\n 'sf-icon-left': alignment === 'Left',\r\n 'sf-icon-center': alignment === 'Center',\r\n 'sf-icon-bottom': alignment === 'Bottom',\r\n 'sf-icon-right': alignment === 'Right'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #alignMenu panelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"align('Top')\">\r\n <span class=\"e-icons sf-icon-top\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Left')\">\r\n <span class=\"e-icons sf-icon-left\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Center')\">\r\n <span class=\"e-icons sf-icon-center\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Bottom')\">\r\n <span class=\"e-icons sf-icon-bottom\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Right')\">\r\n <span class=\"e-icons sf-icon-right\"></span>\r\n </button>\r\n </mat-menu>\r\n</mat-toolbar>\r\n<div class=\"row container\">\r\n <div id=\"symbolpalette\" [style.display]=\"tools?'':'none'\">\r\n <div dir=\"ltr\" #symbolPalette>\r\n </div>\r\n </div>\r\n <div #diagram id=\"diagram\" fxFlex dir=\"ltr\">\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}.container{flex-grow:1;overflow-y:auto}#diagram{flex-grow:1}#symbolpalette{width:210px}::ng-deep .e-rtl{direction:ltr}::ng-deep .mat-toolbar .mat-button-toggle{background:transparent!important}.e-menu-icon{font-family:diagram-icons!important;speak:none;font-size:18px;font-style:normal;font-weight:400;font-feature-settings:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::ng-deep .icon-menu-panel{min-width:0}\n"] }]
13683
+ }], ctorParameters: function () { return [{ type: PromptService }, { type: FormService }, { type: PaneRef }, { type: PanesRouter }, { type: SessionService }, { type: TranslateService }]; }, propDecorators: { symbolPaletteEl: [{
13650
13684
  type: ViewChild,
13651
- args: [SymbolPaletteComponent]
13652
- }], diagram: [{
13685
+ args: ['symbolPalette', { static: true }]
13686
+ }], diagramEl: [{
13653
13687
  type: ViewChild,
13654
- args: ['diagram']
13688
+ args: ['diagram', { static: true }]
13655
13689
  }], handleKeyboardEvent: [{
13656
13690
  type: HostListener,
13657
13691
  args: ['document:keydown', ['$event']]
@@ -13842,7 +13876,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
13842
13876
  args: [{ name: 'amDurationFormat' }]
13843
13877
  }], ctorParameters: function () { return [{ type: TranslateService }]; } });
13844
13878
 
13845
- Diagram.Inject(ComplexHierarchicalTree, BpmnDiagrams, DataBinding, LineDistribution /*, LayoutAnimation, LineRouting, ConnectorBridging*/);
13879
+ Diagram$1.Inject(ComplexHierarchicalTree, BpmnDiagrams$1, DataBinding$1, LineDistribution /*, LayoutAnimation, LineRouting, ConnectorBridging*/);
13846
13880
  const
13847
13881
  //ELLIPSIS = 'M 650, 150 a 75,150 0 1,0 1,0 z',
13848
13882
  FYI_PATH = 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z', ESCALATED_PATH = 'M22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12.5 8H11v6l4.75 2.85.75-1.23-4-2.37V8zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z', WARNNING_PATH$1 = 'M 13.763735,1.8433735 H 6.3037349 l -5.27,5.27 v 7.4599995 l 5.27,5.27 h 7.4600001 l 5.27,-5.27 V 7.1133735 Z m -3.73,14.2999995 c -0.7200001,0 -1.3000001,-0.58 -1.3000001,-1.3 0,-0.72 0.58,-1.3 1.3000001,-1.3 0.72,0 1.3,0.58 1.3,1.3 0,0.72 -0.58,1.3 -1.3,1.3 z m 1,-4.3 H 9.0337349 V 5.8433735 h 2.0000001 z';
@@ -13857,11 +13891,11 @@ class FlowViewComponent extends TraceBase {
13857
13891
  this._duration = _duration;
13858
13892
  this._elementRef = _elementRef;
13859
13893
  this.connectorType = 'Orthogonal';
13860
- this.tool = DiagramTools.ZoomPan;
13861
- this.diagramConstraints = DiagramConstraints.Default |
13862
- DiagramConstraints.Pan |
13863
- DiagramConstraints.LineRouting |
13864
- DiagramConstraints.Zoom;
13894
+ this.tool = DiagramTools$1.ZoomPan;
13895
+ this.diagramConstraints = DiagramConstraints$1.Default |
13896
+ DiagramConstraints$1.Pan |
13897
+ DiagramConstraints$1.LineRouting |
13898
+ DiagramConstraints$1.Zoom;
13865
13899
  this.layout = {
13866
13900
  type: 'ComplexHierarchicalTree',
13867
13901
  connectionPointOrigin: ConnectionPointOrigin.DifferentPoint,
@@ -13873,7 +13907,7 @@ class FlowViewComponent extends TraceBase {
13873
13907
  };
13874
13908
  this.scrollSettings = {
13875
13909
  minZoom: .5,
13876
- scrollLimit: 'Limited',
13910
+ scrollLimit: 'Diagram',
13877
13911
  canAutoScroll: true,
13878
13912
  currentZoom: 1.2,
13879
13913
  padding: { top: 0, bottom: 0 },
@@ -13900,7 +13934,7 @@ class FlowViewComponent extends TraceBase {
13900
13934
  return __awaiter(this, void 0, void 0, function* () {
13901
13935
  const { connectors, nodes, indicators } = yield this._prepare();
13902
13936
  this.diagram && this.diagram.destroy();
13903
- this.diagram = new Diagram({
13937
+ this.diagram = new Diagram$1({
13904
13938
  width: '100%',
13905
13939
  height: 380,
13906
13940
  nodes,
@@ -14010,7 +14044,7 @@ class FlowViewComponent extends TraceBase {
14010
14044
  let configuration = this._configuration[node.type];
14011
14045
  let recipients = this.model.recipients.
14012
14046
  filter(r => r.nodeId === node.id &&
14013
- r.received >= this.model.issued)
14047
+ (!this.model.issued || r.received >= this.model.issued))
14014
14048
  .sort((r0, r1) => r0.received > r1.received ? 1 : -1);
14015
14049
  if (recipients.length) {
14016
14050
  let r = 0;
@@ -14033,15 +14067,18 @@ class FlowViewComponent extends TraceBase {
14033
14067
  for (r = 0; r < recipients.length; r++) {
14034
14068
  let recipient = recipients[r];
14035
14069
  const { annotation, tooltip } = yield this._note(node, recipient);
14070
+ const content = this._tooltip(tooltip);
14036
14071
  const nod = {
14037
14072
  id: r === 0 ? node.id : node.id + r.toString(),
14038
14073
  shape: this._configuration[node.type].shape,
14039
14074
  zIndex: zIndex++,
14040
14075
  tooltip: {
14041
- content: this._tooltip(tooltip),
14076
+ content,
14042
14077
  position: 'TopCenter'
14043
14078
  },
14044
- constraints: Object.keys(tooltip).length ? NodeConstraints.Default : NodeConstraints.Default & ~NodeConstraints.Tooltip,
14079
+ constraints: content ?
14080
+ NodeConstraints$1.Default | NodeConstraints$1.Tooltip :
14081
+ NodeConstraints$1.Default,
14045
14082
  addInfo: {
14046
14083
  tooltip,
14047
14084
  recipient,
@@ -14121,15 +14158,18 @@ class FlowViewComponent extends TraceBase {
14121
14158
  else {
14122
14159
  const { state, annotation, tooltip } = yield this._shape(node);
14123
14160
  const { shape } = configuration;
14161
+ const content = this._tooltip(tooltip);
14124
14162
  nodes.push({
14125
14163
  id: node.id,
14126
14164
  shape,
14127
14165
  zIndex: zIndex++,
14128
14166
  tooltip: {
14129
- content: this._tooltip(tooltip),
14167
+ content,
14130
14168
  position: 'TopCenter'
14131
14169
  },
14132
- constraints: Object.keys(tooltip).length ? NodeConstraints.Default | NodeConstraints.Tooltip : NodeConstraints.Default,
14170
+ constraints: content ?
14171
+ NodeConstraints$1.Default | NodeConstraints$1.Tooltip :
14172
+ NodeConstraints$1.Default,
14133
14173
  addInfo: {
14134
14174
  tooltip,
14135
14175
  node
@@ -14207,7 +14247,7 @@ class FlowViewComponent extends TraceBase {
14207
14247
  if (node.error)
14208
14248
  tooltip.error = node.error;
14209
14249
  let annotation, state;
14210
- const log = this.model.log.filter(l => l.nodeId === node.id && l.time >= this.model.issued);
14250
+ const log = this.model.log.filter(l => l.nodeId === node.id && (!this.model.issued || l.time >= this.model.issued));
14211
14251
  const stateLog = log.find(l => l.type === 'StateChange');
14212
14252
  if (stateLog) {
14213
14253
  state = this._session.profile.states.find(s => s.name === stateLog.state);
@@ -14428,11 +14468,10 @@ class FlowViewComponent extends TraceBase {
14428
14468
  }
14429
14469
  }
14430
14470
  if (recipient.escalated) {
14431
- const escalations = this.model.log.filter(l => l.type === 'Escalation' && l.recipientId === recipient.id);
14432
- const userIds = escalations.map(e => e.userId);
14433
- const users = yield this._accounts.getAll(userIds).toPromise();
14434
- const duration = this._duration.transform(dayjs.duration(escalations[escalations.length - 1].duration, 's'));
14435
- tooltip.escalation = this._translate.get('EscalatedTo', this._translate.join(users.map(u => u.name)), duration);
14471
+ const escalation = this.model.log.find(l => l.type === 'Escalation' && l.recipientId === recipient.originId);
14472
+ const who = yield this._accounts.get(escalation.userId).toPromise();
14473
+ const duration = this._duration.transform(dayjs.duration(escalation.duration, 's'));
14474
+ tooltip.escalation = this._translate.get('EscalatedFrom', who.name, duration);
14436
14475
  }
14437
14476
  if (recipient.replied) {
14438
14477
  const duration = dayjs(recipient.replied).diff(recipient.received, 's');
@@ -14618,9 +14657,9 @@ class TraceViewComponent extends TraceBase {
14618
14657
  step.fyi = recipient.fyi;
14619
14658
  if (recipient.substituteId) {
14620
14659
  if (recipient.byId) {
14621
- if (recipient.byId === this._session.userId && !this._session.isImpersonating) {
14660
+ if (recipient.byId === this._session.userId) {
14622
14661
  let who = yield profileOf(recipient.userId);
14623
- if (recipient.substituteId === this._session.userId && !this._session.isImpersonating)
14662
+ if (recipient.substituteId === this._session.userId)
14624
14663
  step.name = this._translate.get('ByYou', nameOf(who));
14625
14664
  else {
14626
14665
  let substituting = yield profileOf(recipient.substituteId);
@@ -14630,9 +14669,7 @@ class TraceViewComponent extends TraceBase {
14630
14669
  step.action = yield actionBy(action, You, recipient.id);
14631
14670
  }
14632
14671
  else {
14633
- let by = yield profileOf(recipient.byId);
14634
- let who = yield profileOf(recipient.userId);
14635
- let substituting = yield profileOf(recipient.substituteId);
14672
+ let by = yield profileOf(recipient.byId), who = yield profileOf(recipient.userId), substituting = yield profileOf(recipient.substituteId);
14636
14673
  step.name = this._translate.get('SubstitutingBy', nameOf(who), nameOf(substituting), nameOf(by));
14637
14674
  if (by.role)
14638
14675
  step.role = by.role;
@@ -14640,31 +14677,29 @@ class TraceViewComponent extends TraceBase {
14640
14677
  step.action = yield actionBy(action, by.gender, recipient.id);
14641
14678
  }
14642
14679
  }
14680
+ else if (recipient.userId === this._session.userId) {
14681
+ let substituting = yield profileOf(recipient.substituteId);
14682
+ step.name = this._translate.personalize('YouSubstituting', this._session.gender, nameOf(substituting));
14683
+ if (action)
14684
+ step.action = yield actionBy(action, this._session.gender, recipient.id);
14685
+ }
14686
+ else if (recipient.substituteId === this._session.userId) {
14687
+ let who = yield profileOf(recipient.userId);
14688
+ step.name = this._translate.personalize('SubstitutingForYou', who.gender, nameOf(who));
14689
+ if (action)
14690
+ step.action = yield actionBy(action, who.gender, recipient.id);
14691
+ }
14643
14692
  else {
14644
- if (recipient.userId === this._session.userId && !this._session.isImpersonating) {
14645
- let substituting = yield profileOf(recipient.substituteId);
14646
- step.name = this._translate.personalize('YouSubstitute', this._session.profile.byGender, nameOf(substituting));
14647
- if (action)
14648
- step.action = yield actionBy(action, this._session.gender, recipient.id);
14649
- }
14650
- else if (recipient.substituteId === this._session.userId && !this._session.isImpersonating) {
14651
- let who = yield profileOf(recipient.userId);
14652
- step.name = this._translate.personalize('SubstitutingForYou', who.gender, nameOf(who));
14653
- if (action)
14654
- step.action = yield actionBy(action, who.gender, recipient.id);
14655
- }
14656
- else {
14657
- let who = yield profileOf(recipient.userId), substituting = yield profileOf(recipient.substituteId);
14658
- step.name = this._translate.personalize('Substituting', who.gender, nameOf(who), nameOf(substituting));
14659
- if (who.role)
14660
- step.role = who.role;
14661
- if (action)
14662
- step.action = yield actionBy(action, who.gender, recipient.id);
14663
- }
14693
+ let who = yield profileOf(recipient.userId), substituting = yield profileOf(recipient.substituteId);
14694
+ step.name = this._translate.personalize('Substituting', who.gender, nameOf(who), nameOf(substituting));
14695
+ if (who.role)
14696
+ step.role = who.role;
14697
+ if (action)
14698
+ step.action = yield actionBy(action, who.gender, recipient.id);
14664
14699
  }
14665
14700
  }
14666
14701
  else if (recipient.byId) {
14667
- if (recipient.userId === this._session.userId && !this._session.isImpersonating) {
14702
+ if (recipient.userId === this._session.userId) {
14668
14703
  let by = yield profileOf(recipient.byId);
14669
14704
  step.name = this._translate.get('YouBy', nameOf(by));
14670
14705
  if (action)
@@ -14672,7 +14707,7 @@ class TraceViewComponent extends TraceBase {
14672
14707
  }
14673
14708
  else {
14674
14709
  let who = yield profileOf(recipient.userId);
14675
- if (recipient.byId === this._session.userId && !this._session.isImpersonating) {
14710
+ if (recipient.byId === this._session.userId) {
14676
14711
  step.name = this._translate.get('ByYou', nameOf(who));
14677
14712
  if (action)
14678
14713
  step.action = yield actionBy(action, You, recipient.id);
@@ -14688,7 +14723,7 @@ class TraceViewComponent extends TraceBase {
14688
14723
  }
14689
14724
  }
14690
14725
  else {
14691
- if (recipient.userId === this._session.userId && !this._session.isImpersonating) {
14726
+ if (recipient.userId === this._session.userId) {
14692
14727
  step.name = this._translate.get('You');
14693
14728
  if (action)
14694
14729
  step.action = yield actionBy(action, You, recipient.id);
@@ -14749,35 +14784,19 @@ class TraceViewComponent extends TraceBase {
14749
14784
  }
14750
14785
  }
14751
14786
  if (recipient.substituteId) {
14752
- let who = yield profileOf(recipient.userId);
14753
- if (recipient.byId) {
14754
- if (recipient.byId === this._session.userId) {
14755
- if (recipient.substituteId === this._session.userId)
14756
- step.name = this._translate.get('ByYou', nameOf(who));
14757
- else {
14758
- let substituting = yield profileOf(recipient.substituteId);
14759
- step.name = this._translate.personalize('SubstitutingByYou', who.gender, nameOf(who), nameOf(substituting));
14760
- }
14761
- }
14762
- else {
14763
- let substituting = yield profileOf(recipient.substituteId);
14764
- let by = yield profileOf(recipient.byId);
14765
- step.name = this._translate.get('SubstitutingBy', nameOf(who), nameOf(substituting), nameOf(by));
14766
- if (by.role)
14767
- step.role = by.role;
14768
- }
14787
+ if (recipient.substituteId === this._session.userId) {
14788
+ let who = yield profileOf(recipient.userId);
14789
+ step.name = this._translate.personalize('SubstitutingForYou', who.gender, nameOf(who));
14790
+ }
14791
+ else if (recipient.userId === this._session.userId) {
14792
+ let substituting = yield profileOf(recipient.substituteId);
14793
+ step.name = this._translate.personalize('YouSubstituting', this._session.gender, nameOf(substituting));
14769
14794
  }
14770
14795
  else {
14771
- if (recipient.substituteId === this._session.userId)
14772
- step.name = this._translate.personalize('SubstitutingForYou', who.gender, nameOf(who));
14773
- else if (recipient.userId === this._session.userId)
14774
- step.name = this._translate.personalize('YouSubstitute', this._session.profile.byGender, nameOf(who));
14775
- else {
14776
- let substituting = yield profileOf(recipient.substituteId);
14777
- step.name = this._translate.personalize('Substituting', who.gender, nameOf(who), nameOf(substituting));
14778
- if (who.role)
14779
- step.role = who.role;
14780
- }
14796
+ let who = yield profileOf(recipient.userId), substituting = yield profileOf(recipient.substituteId);
14797
+ step.name = this._translate.personalize('Substituting', who.gender, nameOf(who), nameOf(substituting));
14798
+ if (who.role)
14799
+ step.role = who.role;
14781
14800
  }
14782
14801
  }
14783
14802
  else if (recipient.byId) {
@@ -14792,18 +14811,14 @@ class TraceViewComponent extends TraceBase {
14792
14811
  }
14793
14812
  }
14794
14813
  else if (recipient.escalated) {
14795
- let escalations = this.model.log.filter(l => l.time > issued &&
14796
- l.type === 'Escalation' && l.recipientId === recipient.id);
14797
- let escalate = [];
14798
- for (let escalation of escalations) {
14814
+ let escalation = this.model.log.find(l => l.type === 'Escalation' && l.recipientId === recipient.originId);
14815
+ let to = yield profileOf(recipient.userId);
14816
+ if (escalation.userId === this._session.userId)
14817
+ step.name = this._translate.get('EscalatedByYou', nameOf(to));
14818
+ else {
14799
14819
  let who = yield profileOf(escalation.userId);
14800
- escalate.push(who);
14820
+ step.name = this._translate.get('EscalatedBy', nameOf(who), nameOf(to));
14801
14821
  }
14802
- let who = yield profileOf(recipient.userId);
14803
- if (escalations.length === 1 && escalate[0] === this._session.userId)
14804
- step.name = this._translate.get('EscalatedByYou', nameOf(who));
14805
- else
14806
- step.name = this._translate.get('EscalatedBy', nameOf(who), this._translate.join(escalate.map(e => nameOf(e))));
14807
14822
  }
14808
14823
  else {
14809
14824
  if (recipient.userId === this._session.userId)
@@ -14824,7 +14839,7 @@ class TraceViewComponent extends TraceBase {
14824
14839
  _filter() {
14825
14840
  switch (this._showMode) {
14826
14841
  case 'active':
14827
- this.data = this._data.filter(l => l.time >= this.model.issued);
14842
+ this.data = this.model.issued ? this._data.filter(l => l.time >= this.model.issued) : this._data;
14828
14843
  break;
14829
14844
  case 'route':
14830
14845
  this.data = this._data.filter(l => l.type === 'ActionTaken' || l.type === 'Estimate' || l.type === 'Pending');
@@ -14852,7 +14867,7 @@ class TraceViewComponent extends TraceBase {
14852
14867
  this._chat.open(userId);
14853
14868
  }
14854
14869
  /**
14855
- * model version compare, form component in 'compare' view mode
14870
+ * model version compare
14856
14871
  * @param log
14857
14872
  */
14858
14873
  compare(log) {
@@ -16947,7 +16962,7 @@ class ConversationComponent {
16947
16962
  }
16948
16963
  _persist() {
16949
16964
  this._input.text && this._input.text.length &&
16950
- window.localStorage.setItem(this.profile.id, this._input.text);
16965
+ window.localStorage.setItem(this.contact.id, this._input.text);
16951
16966
  }
16952
16967
  }
16953
16968
  ConversationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: ConversationComponent, deps: [{ token: BIZDOC_CONFIG }, { token: ChatService }, { token: HubService }, { token: TranslateService }, { token: AccountService }, { token: PromptService }, { token: i0.ViewContainerRef }, { token: i1$4.Overlay }], target: i0.ɵɵFactoryTarget.Component });
@@ -16979,7 +16994,16 @@ class ConversationPaneComponent {
16979
16994
  pane.paramsChange.subscribe(p => {
16980
16995
  pane.group = translate.get('Chat');
16981
16996
  const id = p['id'];
16982
- this.contact = session.profile.contacts.find(c => c.id === id) || {};
16997
+ this.contact = session.profile.contacts.find(c => c.id === id);
16998
+ if (!this.contact) {
16999
+ this.contact = {
17000
+ id,
17001
+ accepted: false,
17002
+ time: new Date().toJSON(),
17003
+ count: 0
17004
+ };
17005
+ session.profile.contacts.push(this.contact);
17006
+ }
16983
17007
  accounts.get(id).subscribe(u => pane.title = u.name);
16984
17008
  });
16985
17009
  chat.change.pipe(takeUntil$1(this._destroy)).
@@ -19451,7 +19475,7 @@ function prepareRoutes(routes, treePath) {
19451
19475
  fullPath,
19452
19476
  regEx: new RegExp('^' + fullPath.
19453
19477
  replace('/', '\\/').
19454
- replace(PANE_PARAMS_REGEX, e => `(?<${e.substr(1)}>[\\w\\-]*)`))
19478
+ replace(PANE_PARAMS_REGEX, e => `(?<${e.substr(1)}>[\\w@\\-]*)`))
19455
19479
  });
19456
19480
  if (route.children) {
19457
19481
  let children = prepareRoutes(route.children, fullPath);
@@ -20444,10 +20468,10 @@ class ReportComponent {
20444
20468
  }
20445
20469
  }
20446
20470
  ReportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: ReportComponent, deps: [{ token: WindowTitleService }, { token: i1$6.ActivatedRoute }, { token: SessionService }, { token: i0.ChangeDetectorRef }, { token: PromptService }, { token: GuideService }], target: i0.ɵɵFactoryTarget.Component });
20447
- ReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: ReportComponent, selector: "bizdoc-report", viewQueries: [{ propertyName: "filter", first: true, predicate: MatSidenav, descendants: true, static: true }, { propertyName: "viewer", first: true, predicate: ReportViewerComponent, descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"viewer.execute()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"viewer.exportExcel()\" bizdocTooltip=\"{{'Download' | translate}}\"><mat-icon>save_alt</mat-icon></button>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"report.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" *ngIf=\"hasFilters\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filter($event)\" bizdocTooltip=\"{{'Filter' | translate}}\" *ngIf=\"hasFilters\"><mat-icon [class.filled]=\"anyFilters\">filter_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-sidenav-container class=\"page-container\">\r\n <mat-sidenav-content>\r\n <bizdoc-report-viewer [report]=\"report\" [args]=\"args\"></bizdoc-report-viewer>\r\n </mat-sidenav-content>\r\n <mat-sidenav mode=\"over\" opened=\"false\" #filter position=\"end\">\r\n <bizdoc-report-arguments *ngIf=\"viewer.reportRef\" [args]=\"args\" (argsChange)=\"argsChange($event)\" [reportRef]=\"viewer.reportRef\"\r\n [template]=\"report.argumentsTemplate\" [arguments]=\"report.arguments\"></bizdoc-report-arguments>\r\n </mat-sidenav>\r\n</mat-sidenav-container>\r\n", styles: [".contents{display:flex;flex-direction:column}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9$4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { type: i9$4.MatSidenavContent, selector: "mat-sidenav-content" }, { type: ReportViewerComponent, selector: "bizdoc-report-viewer", inputs: ["report", "args"] }, { type: i9$4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { type: ReportArgumentsComponent, selector: "bizdoc-report-arguments", inputs: ["reportRef", "template", "arguments", "args"], outputs: ["argsChange"] }], directives: [{ type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: MatIconAnimate, selector: "[matAnimate]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": TranslatePipe } });
20471
+ ReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: ReportComponent, selector: "bizdoc-report", viewQueries: [{ propertyName: "filter", first: true, predicate: MatSidenav, descendants: true, static: true }, { propertyName: "viewer", first: true, predicate: ReportViewerComponent, descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"viewer.execute()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"viewer.exportExcel()\" bizdocTooltip=\"{{'Download' | translate}}\"><mat-icon>save_alt</mat-icon></button>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"report.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" *ngIf=\"hasFilters\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filter($event)\" bizdocTooltip=\"{{'Filter' | translate}}\" *ngIf=\"hasFilters\"><mat-icon [class.filled]=\"anyFilters\">filter_list</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-sidenav-container class=\"page-container\">\r\n <mat-sidenav-content>\r\n <bizdoc-report-viewer [report]=\"report\" [args]=\"args\"></bizdoc-report-viewer>\r\n </mat-sidenav-content>\r\n <mat-sidenav mode=\"over\" opened=\"false\" #filter position=\"end\">\r\n <bizdoc-report-arguments *ngIf=\"viewer.reportRef\" [args]=\"args\" (argsChange)=\"argsChange($event)\" [reportRef]=\"viewer.reportRef\"\r\n [template]=\"report.argumentsTemplate\" [arguments]=\"report.arguments\"></bizdoc-report-arguments>\r\n </mat-sidenav>\r\n</mat-sidenav-container>\r\n", styles: [".contents{display:flex;flex-direction:column}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9$4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { type: i9$4.MatSidenavContent, selector: "mat-sidenav-content" }, { type: ReportViewerComponent, selector: "bizdoc-report-viewer", inputs: ["report", "args"] }, { type: i9$4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { type: ReportArgumentsComponent, selector: "bizdoc-report-arguments", inputs: ["reportRef", "template", "arguments", "args"], outputs: ["argsChange"] }], directives: [{ type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: MatIconAnimate, selector: "[matAnimate]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": TranslatePipe } });
20448
20472
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: ReportComponent, decorators: [{
20449
20473
  type: Component,
20450
- args: [{ selector: 'bizdoc-report', template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"viewer.execute()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"viewer.exportExcel()\" bizdocTooltip=\"{{'Download' | translate}}\"><mat-icon>save_alt</mat-icon></button>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"report.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" *ngIf=\"hasFilters\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filter($event)\" bizdocTooltip=\"{{'Filter' | translate}}\" *ngIf=\"hasFilters\"><mat-icon [class.filled]=\"anyFilters\">filter_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-sidenav-container class=\"page-container\">\r\n <mat-sidenav-content>\r\n <bizdoc-report-viewer [report]=\"report\" [args]=\"args\"></bizdoc-report-viewer>\r\n </mat-sidenav-content>\r\n <mat-sidenav mode=\"over\" opened=\"false\" #filter position=\"end\">\r\n <bizdoc-report-arguments *ngIf=\"viewer.reportRef\" [args]=\"args\" (argsChange)=\"argsChange($event)\" [reportRef]=\"viewer.reportRef\"\r\n [template]=\"report.argumentsTemplate\" [arguments]=\"report.arguments\"></bizdoc-report-arguments>\r\n </mat-sidenav>\r\n</mat-sidenav-container>\r\n", styles: [".contents{display:flex;flex-direction:column}\n"] }]
20474
+ args: [{ selector: 'bizdoc-report', template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"viewer.execute()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"viewer.exportExcel()\" bizdocTooltip=\"{{'Download' | translate}}\"><mat-icon>save_alt</mat-icon></button>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\" *ngIf=\"report.guide\"><mat-icon>help_outline</mat-icon></button>\r\n <button mat-icon-button (click)=\"clearFilter()\" [bizdocTooltip]=\"'Clear' | translate\" *ngIf=\"hasFilters\" [disabled]=\"!anyFilters\"><mat-icon>clear_all</mat-icon></button>\r\n <button mat-icon-button (click)=\"filter($event)\" bizdocTooltip=\"{{'Filter' | translate}}\" *ngIf=\"hasFilters\"><mat-icon [class.filled]=\"anyFilters\">filter_list</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-sidenav-container class=\"page-container\">\r\n <mat-sidenav-content>\r\n <bizdoc-report-viewer [report]=\"report\" [args]=\"args\"></bizdoc-report-viewer>\r\n </mat-sidenav-content>\r\n <mat-sidenav mode=\"over\" opened=\"false\" #filter position=\"end\">\r\n <bizdoc-report-arguments *ngIf=\"viewer.reportRef\" [args]=\"args\" (argsChange)=\"argsChange($event)\" [reportRef]=\"viewer.reportRef\"\r\n [template]=\"report.argumentsTemplate\" [arguments]=\"report.arguments\"></bizdoc-report-arguments>\r\n </mat-sidenav>\r\n</mat-sidenav-container>\r\n", styles: [".contents{display:flex;flex-direction:column}\n"] }]
20451
20475
  }], ctorParameters: function () { return [{ type: WindowTitleService }, { type: i1$6.ActivatedRoute }, { type: SessionService }, { type: i0.ChangeDetectorRef }, { type: PromptService }, { type: GuideService }]; }, propDecorators: { filter: [{
20452
20476
  type: ViewChild,
20453
20477
  args: [MatSidenav, { static: true }]
@@ -20808,8 +20832,8 @@ Chart$1.Inject(Category, DateTime, Tooltip$1, Legend, Export, BarSeries, AreaSer
20808
20832
  class SyncfusionChartModule {
20809
20833
  }
20810
20834
  SyncfusionChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SyncfusionChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20811
- SyncfusionChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SyncfusionChartModule, imports: [ChartModule, AccumulationChartAllModule, SparklineAllModule], exports: [ChartModule, AccumulationChartAllModule, SparklineAllModule] });
20812
- SyncfusionChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SyncfusionChartModule, providers: [AccumulationDistributionIndicatorService, FunnelSeriesService, StackingStepAreaSeriesService, PieSeriesService, PyramidSeriesService, LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService,
20835
+ SyncfusionChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SyncfusionChartModule, imports: [ChartModule, AccumulationChartAllModule, SparklineAllModule, RangeNavigatorModule], exports: [ChartModule, AccumulationChartAllModule, SparklineAllModule, RangeNavigatorModule] });
20836
+ SyncfusionChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SyncfusionChartModule, providers: [RangeTooltipService, AccumulationDistributionIndicatorService, FunnelSeriesService, StackingStepAreaSeriesService, PieSeriesService, PyramidSeriesService, LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService,
20813
20837
  SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService,
20814
20838
  StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService,
20815
20839
  BarSeriesService, StackingBarSeriesService, RangeColumnSeriesService, BubbleSeriesService, TooltipService,
@@ -20817,14 +20841,14 @@ SyncfusionChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", v
20817
20841
  SelectionService, ChartAnnotationService, WaterfallSeriesService,
20818
20842
  RangeAreaSeriesService, PolarSeriesService, RadarSeriesService, DateTimeCategoryService,
20819
20843
  MultiLevelLabelService, ParetoSeriesService, TooltipRenderService,
20820
- ExportService,
20821
- AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService], imports: [[ChartModule, AccumulationChartAllModule, SparklineAllModule], ChartModule, AccumulationChartAllModule, SparklineAllModule] });
20844
+ SparklineTooltipService,
20845
+ AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService], imports: [[ChartModule, AccumulationChartAllModule, SparklineAllModule, RangeNavigatorModule], ChartModule, AccumulationChartAllModule, SparklineAllModule, RangeNavigatorModule] });
20822
20846
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SyncfusionChartModule, decorators: [{
20823
20847
  type: NgModule,
20824
20848
  args: [{
20825
- imports: [ChartModule, AccumulationChartAllModule, SparklineAllModule],
20826
- exports: [ChartModule, AccumulationChartAllModule, SparklineAllModule],
20827
- providers: [AccumulationDistributionIndicatorService, FunnelSeriesService, StackingStepAreaSeriesService, PieSeriesService, PyramidSeriesService, LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService,
20849
+ imports: [ChartModule, AccumulationChartAllModule, SparklineAllModule, RangeNavigatorModule],
20850
+ exports: [ChartModule, AccumulationChartAllModule, SparklineAllModule, RangeNavigatorModule],
20851
+ providers: [RangeTooltipService, AccumulationDistributionIndicatorService, FunnelSeriesService, StackingStepAreaSeriesService, PieSeriesService, PyramidSeriesService, LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService,
20828
20852
  SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService,
20829
20853
  StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService,
20830
20854
  BarSeriesService, StackingBarSeriesService, RangeColumnSeriesService, BubbleSeriesService, TooltipService,
@@ -20832,7 +20856,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
20832
20856
  SelectionService, ChartAnnotationService, WaterfallSeriesService,
20833
20857
  RangeAreaSeriesService, PolarSeriesService, RadarSeriesService, DateTimeCategoryService,
20834
20858
  MultiLevelLabelService, ParetoSeriesService, TooltipRenderService,
20835
- ExportService,
20859
+ SparklineTooltipService,
20836
20860
  AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService]
20837
20861
  }]
20838
20862
  }] });
@@ -20967,13 +20991,46 @@ class SyncfusionGanttModule {
20967
20991
  }
20968
20992
  SyncfusionGanttModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SyncfusionGanttModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20969
20993
  SyncfusionGanttModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SyncfusionGanttModule, imports: [GanttModule], exports: [GanttModule] });
20970
- SyncfusionGanttModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SyncfusionGanttModule, providers: [], imports: [[GanttModule], GanttModule] });
20994
+ SyncfusionGanttModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SyncfusionGanttModule, providers: [ExcelExportService$3, DayMarkersService, SelectionService$3], imports: [[GanttModule], GanttModule] });
20971
20995
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SyncfusionGanttModule, decorators: [{
20972
20996
  type: NgModule,
20973
20997
  args: [{
20974
20998
  imports: [GanttModule],
20975
20999
  exports: [GanttModule],
20976
- providers: []
21000
+ providers: [ExcelExportService$3, DayMarkersService, SelectionService$3]
21001
+ }]
21002
+ }] });
21003
+
21004
+ // https://day.js.org/docs/en/customization/relative-time
21005
+ dayjs.extend(relativeTime, {
21006
+ thresholds: [
21007
+ { l: 's', r: 1 },
21008
+ { l: 'm', r: 1 },
21009
+ { l: 'mm', r: 59, d: 'minute' },
21010
+ { l: 'h', r: 1 },
21011
+ { l: 'hh', r: 24, d: 'hour' },
21012
+ { l: 'd', r: 1 },
21013
+ { l: 'dd', r: 29, d: 'day' },
21014
+ { l: 'M', r: 1 },
21015
+ { l: 'MM', r: 11, d: 'month' },
21016
+ { l: 'y' },
21017
+ { l: 'yy', d: 'year' }
21018
+ ]
21019
+ });
21020
+ dayjs.extend(duration);
21021
+ dayjs.extend(calendar);
21022
+ dayjs.extend(updateLocale);
21023
+ dayjs.extend(advancedFormat);
21024
+ class DayJsModule {
21025
+ }
21026
+ DayJsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: DayJsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
21027
+ DayJsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: DayJsModule });
21028
+ DayJsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: DayJsModule, imports: [[]] });
21029
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: DayJsModule, decorators: [{
21030
+ type: NgModule,
21031
+ args: [{
21032
+ imports: [],
21033
+ exports: [],
20977
21034
  }]
20978
21035
  }] });
20979
21036
 
@@ -22208,14 +22265,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
22208
22265
  args: [ChartComponent]
22209
22266
  }] } });
22210
22267
 
22211
- var CompareDepartmentsWidget_1;
22268
+ var CompareGroupsWidget_1;
22212
22269
  /** */
22213
- let CompareDepartmentsWidget = CompareDepartmentsWidget_1 = class CompareDepartmentsWidget {
22270
+ let CompareGroupsWidget = CompareGroupsWidget_1 = class CompareGroupsWidget {
22214
22271
  constructor(_translate, widgetRef, _elementRef, _session) {
22215
22272
  this._translate = _translate;
22216
22273
  this._elementRef = _elementRef;
22217
22274
  this._session = _session;
22218
- this.id = `department-compare-${CompareDepartmentsWidget_1.nextId++}`;
22275
+ this.id = `groups-compare-${CompareGroupsWidget_1.nextId++}`;
22219
22276
  this.palettes = this._session.accentPalette;
22220
22277
  this.theme = this._session.theme.dark ? 'MaterialDark' : 'Material';
22221
22278
  this.enableRtl = this._session.inverse;
@@ -22377,18 +22434,18 @@ let CompareDepartmentsWidget = CompareDepartmentsWidget_1 = class CompareDepartm
22377
22434
  this._destroy.complete();
22378
22435
  }
22379
22436
  };
22380
- CompareDepartmentsWidget.nextId = 0;
22381
- CompareDepartmentsWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: CompareDepartmentsWidget, deps: [{ token: TranslateService }, { token: WidgetRef }, { token: i0.ElementRef }, { token: SessionService }], target: i0.ɵɵFactoryTarget.Component });
22382
- CompareDepartmentsWidget.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: CompareDepartmentsWidget, selector: "ng-component", host: { attributes: { "dir": "ltr" }, properties: { "id": "id" } }, providers: [LineSeriesService, CrosshairService, ColumnSeriesService], viewQueries: [{ propertyName: "chart", first: true, predicate: ChartComponent, descendants: true }], ngImport: i0, template: '', isInline: true });
22383
- CompareDepartmentsWidget = CompareDepartmentsWidget_1 = __decorate([
22437
+ CompareGroupsWidget.nextId = 0;
22438
+ CompareGroupsWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: CompareGroupsWidget, deps: [{ token: TranslateService }, { token: WidgetRef }, { token: i0.ElementRef }, { token: SessionService }], target: i0.ɵɵFactoryTarget.Component });
22439
+ CompareGroupsWidget.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: CompareGroupsWidget, selector: "ng-component", host: { attributes: { "dir": "ltr" }, properties: { "id": "id" } }, providers: [LineSeriesService, CrosshairService, ColumnSeriesService], viewQueries: [{ propertyName: "chart", first: true, predicate: ChartComponent, descendants: true }], ngImport: i0, template: '', isInline: true });
22440
+ CompareGroupsWidget = CompareGroupsWidget_1 = __decorate([
22384
22441
  BizDoc({
22385
- selector: 'bizdoc-compare-departments'
22442
+ selector: 'bizdoc-compare-groups'
22386
22443
  })
22387
- ], CompareDepartmentsWidget);
22388
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: CompareDepartmentsWidget, decorators: [{
22444
+ ], CompareGroupsWidget);
22445
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: CompareGroupsWidget, decorators: [{
22389
22446
  type: Component,
22390
22447
  args: [{
22391
- //templateUrl: './compare-departments.widget.html',
22448
+ //templateUrl: './compare-groups.widget.html',
22392
22449
  template: '',
22393
22450
  providers: [LineSeriesService, CrosshairService, ColumnSeriesService],
22394
22451
  host: {
@@ -22618,7 +22675,7 @@ PeersPerformanceWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", v
22618
22675
  PeersPerformanceWidget.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: PeersPerformanceWidget, selector: "ng-component", host: { attributes: { "dir": "ltr" }, properties: { "id": "this.id" }, styleAttribute: "display: block" }, viewQueries: [{ propertyName: "gauge", first: true, predicate: CircularGaugeComponent, descendants: true }], ngImport: i0, template: '', isInline: true });
22619
22676
  PeersPerformanceWidget = PeersPerformanceWidget_1 = __decorate([
22620
22677
  BizDoc({
22621
- selector: 'bizdoc-departmental-performance'
22678
+ selector: 'bizdoc-peers-performance'
22622
22679
  })
22623
22680
  ], PeersPerformanceWidget);
22624
22681
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: PeersPerformanceWidget, decorators: [{
@@ -22650,17 +22707,13 @@ let PendingResultsWidget = class PendingResultsWidget {
22650
22707
  this.sort.direction = 'desc';
22651
22708
  this.dataSource.sort = this.sort;
22652
22709
  }
22653
- asDays(seconds) {
22654
- const duration = dayjs.duration(seconds, 's');
22655
- return `${Math.floor(duration.asDays())}:${Math.round(duration.hours())}`;
22656
- }
22657
22710
  ngOnDestroy() {
22658
22711
  this._destroy.next();
22659
22712
  this._destroy.complete();
22660
22713
  }
22661
22714
  };
22662
22715
  PendingResultsWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: PendingResultsWidget, deps: [{ token: WidgetRef }], target: i0.ɵɵFactoryTarget.Component });
22663
- PendingResultsWidget.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: PendingResultsWidget, selector: "bizdoc-pending-results", host: { properties: { "style.height": "this.height" } }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true }], ngImport: i0, template: "<table mat-table [dataSource]=\"dataSource\" matSort class=\"mat-elevation-z0\" @list>\r\n <ng-container matColumnDef=\"name\">\r\n <th mat-header-cell *matHeaderCellDef> {{'Name' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let element\"> <bizdoc-identity-name [identity]='element.userId' chating=\"room\"></bizdoc-identity-name></td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"duration\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header> {{'Duration' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let element\"> <span [bizdocTooltip]='asDays(element.duration)'>{{ element.duration | amDuration : 's' }}</span> </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"standard\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header> {{'Standard' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let element\"> <span *ngIf=\"element.standard\" [bizdocTooltip]=\"asDays(element.standard)\">{{ element.standard | amDuration: 's' }}</span> </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"count\">\r\n <th mat-header-cell *matHeaderCellDef> </th>\r\n <td mat-cell *matCellDef=\"let element\" dir=\"ltr\">\r\n <span class=\"range\">{{ element.processed }} / {{element.pending + element.processed}}</span></td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: columns;\" @item></tr>\r\n</table>\r\n<style scoped> .range {\r\n white-space: nowrap;\r\n }\r\n</style>\r\n", styles: ["table{width:100%}td.text{text-overflow:ellipsis;max-width:100px;white-space:nowrap;overflow:hidden}:host{overflow:hidden;display:block}:host:hover{overflow-y:auto!important}\n", " .range {\n white-space: nowrap;\n }\n"], components: [{ type: i5$2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { type: i6$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i5$2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }], directives: [{ type: i6$2.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$2.MatCellDef, selector: "[matCellDef]" }, { type: i5$2.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7$2.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i5$2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }], pipes: { "translate": TranslatePipe, "amDuration": DurationPipe }, animations: [
22716
+ PendingResultsWidget.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: PendingResultsWidget, selector: "bizdoc-pending-results", host: { properties: { "style.height": "this.height" } }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true }], ngImport: i0, template: "<table mat-table [dataSource]=\"dataSource\" matSort class=\"mat-elevation-z0\" @list>\r\n <ng-container matColumnDef=\"name\">\r\n <th mat-header-cell *matHeaderCellDef> {{'Name' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let element\"> <bizdoc-identity-name [identity]='element.userId' chating=\"room\"></bizdoc-identity-name></td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"duration\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header> {{'Duration' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let element\"> <span [bizdocTooltip]='element.duration|amDurationFormat'>{{ element.duration | amDuration : 's' }}</span> </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"standard\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header> {{'Standard' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let element\"> <span *ngIf=\"element.standard\" [bizdocTooltip]=\"element.standard|amDurationFormat\">{{ element.standard | amDuration: 's' }}</span> </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"count\">\r\n <th mat-header-cell *matHeaderCellDef> </th>\r\n <td mat-cell *matCellDef=\"let element\" dir=\"ltr\">\r\n <span class=\"range\">{{ element.processed }} / {{element.pending + element.processed}}</span>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: columns;\" @item></tr>\r\n</table>\r\n<style scoped>\r\n .range {\r\n white-space: nowrap;\r\n }\r\n</style>\r\n", styles: ["table{width:100%}td.text{text-overflow:ellipsis;max-width:100px;white-space:nowrap;overflow:hidden}:host{overflow:hidden;display:block}:host:hover{overflow-y:auto!important}\n", "\n .range {\n white-space: nowrap;\n }\n"], components: [{ type: i5$2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { type: i6$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i5$2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }], directives: [{ type: i6$2.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$2.MatCellDef, selector: "[matCellDef]" }, { type: i5$2.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7$2.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i5$2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }], pipes: { "translate": TranslatePipe, "amDurationFormat": DurationFormatPipe, "amDuration": DurationPipe }, animations: [
22664
22717
  listAnimation,
22665
22718
  itemAnimation
22666
22719
  ] });
@@ -22674,7 +22727,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
22674
22727
  args: [{ selector: 'bizdoc-pending-results', animations: [
22675
22728
  listAnimation,
22676
22729
  itemAnimation
22677
- ], template: "<table mat-table [dataSource]=\"dataSource\" matSort class=\"mat-elevation-z0\" @list>\r\n <ng-container matColumnDef=\"name\">\r\n <th mat-header-cell *matHeaderCellDef> {{'Name' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let element\"> <bizdoc-identity-name [identity]='element.userId' chating=\"room\"></bizdoc-identity-name></td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"duration\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header> {{'Duration' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let element\"> <span [bizdocTooltip]='asDays(element.duration)'>{{ element.duration | amDuration : 's' }}</span> </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"standard\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header> {{'Standard' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let element\"> <span *ngIf=\"element.standard\" [bizdocTooltip]=\"asDays(element.standard)\">{{ element.standard | amDuration: 's' }}</span> </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"count\">\r\n <th mat-header-cell *matHeaderCellDef> </th>\r\n <td mat-cell *matCellDef=\"let element\" dir=\"ltr\">\r\n <span class=\"range\">{{ element.processed }} / {{element.pending + element.processed}}</span></td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: columns;\" @item></tr>\r\n</table>\r\n<style scoped> .range {\r\n white-space: nowrap;\r\n }\r\n</style>\r\n", styles: ["table{width:100%}td.text{text-overflow:ellipsis;max-width:100px;white-space:nowrap;overflow:hidden}:host{overflow:hidden;display:block}:host:hover{overflow-y:auto!important}\n", " .range {\n white-space: nowrap;\n }\n"] }]
22730
+ ], template: "<table mat-table [dataSource]=\"dataSource\" matSort class=\"mat-elevation-z0\" @list>\r\n <ng-container matColumnDef=\"name\">\r\n <th mat-header-cell *matHeaderCellDef> {{'Name' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let element\"> <bizdoc-identity-name [identity]='element.userId' chating=\"room\"></bizdoc-identity-name></td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"duration\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header> {{'Duration' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let element\"> <span [bizdocTooltip]='element.duration|amDurationFormat'>{{ element.duration | amDuration : 's' }}</span> </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"standard\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header> {{'Standard' | translate}} </th>\r\n <td mat-cell *matCellDef=\"let element\"> <span *ngIf=\"element.standard\" [bizdocTooltip]=\"element.standard|amDurationFormat\">{{ element.standard | amDuration: 's' }}</span> </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"count\">\r\n <th mat-header-cell *matHeaderCellDef> </th>\r\n <td mat-cell *matCellDef=\"let element\" dir=\"ltr\">\r\n <span class=\"range\">{{ element.processed }} / {{element.pending + element.processed}}</span>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: columns;\" @item></tr>\r\n</table>\r\n<style scoped>\r\n .range {\r\n white-space: nowrap;\r\n }\r\n</style>\r\n", styles: ["table{width:100%}td.text{text-overflow:ellipsis;max-width:100px;white-space:nowrap;overflow:hidden}:host{overflow:hidden;display:block}:host:hover{overflow-y:auto!important}\n", "\n .range {\n white-space: nowrap;\n }\n"] }]
22678
22731
  }], ctorParameters: function () { return [{ type: WidgetRef }]; }, propDecorators: { sort: [{
22679
22732
  type: ViewChild,
22680
22733
  args: [MatSort]
@@ -23072,7 +23125,7 @@ class UsageReportBase {
23072
23125
  this._series = series ? this._cube.axes.filter(a => isArray(series) ? series.indexOf(a.name) > -1 : a.name === series) :
23073
23126
  this._cube.axes.filter(a => a.combination && !a.hidden);
23074
23127
  this.currencyCode = this._cube.currencyCode;
23075
- this._collapse = collapse;
23128
+ this._expandAll = collapse !== true;
23076
23129
  this._yTitle = yTitle || this._translate.get('Usage');
23077
23130
  }
23078
23131
  ngOnInit() {
@@ -23136,7 +23189,7 @@ class UsageChartComponent extends UsageReportBase {
23136
23189
  /** set defaults */
23137
23190
  _defaults() {
23138
23191
  const { chartType } = this._reportRef.options;
23139
- const line = chartType === 'Line' || chartType === 'Spline';
23192
+ const isLine = chartType === 'Line' || chartType === 'Spline';
23140
23193
  this.chartSettings = {
23141
23194
  pointClick: this.pointClick.bind(this),
23142
23195
  zoomSettings: {
@@ -23147,7 +23200,7 @@ class UsageChartComponent extends UsageReportBase {
23147
23200
  enableSelectionZooming: false
23148
23201
  },
23149
23202
  crosshair: {
23150
- enable: line,
23203
+ enable: isLine,
23151
23204
  line: {
23152
23205
  width: 1
23153
23206
  }
@@ -23157,7 +23210,7 @@ class UsageChartComponent extends UsageReportBase {
23157
23210
  type: chartType || 'Column',
23158
23211
  //width: 2,
23159
23212
  border: { width: 0 },
23160
- marker: { height: 10, width: 10, shape: 'Pentagon', visible: line },
23213
+ marker: { height: 10, width: 10, shape: 'Pentagon', visible: isLine },
23161
23214
  },
23162
23215
  enableExport: true,
23163
23216
  chartArea: {
@@ -23198,7 +23251,12 @@ class UsageChartComponent extends UsageReportBase {
23198
23251
  labelStyle: {
23199
23252
  fontFamily: FONT_FAMILY
23200
23253
  },
23201
- crosshairTooltip: { enable: line }
23254
+ crosshairTooltip: {
23255
+ enable: true,
23256
+ textStyle: {
23257
+ fontFamily: FONT_FAMILY
23258
+ }
23259
+ }
23202
23260
  }
23203
23261
  };
23204
23262
  const formatSettings = [{
@@ -23226,7 +23284,7 @@ class UsageChartComponent extends UsageReportBase {
23226
23284
  ],
23227
23285
  enableSorting: false,
23228
23286
  sortSettings: this._series.map(s => { return { name: `_${s.name}` }; }),
23229
- expandAll: this._collapse || false,
23287
+ expandAll: this._expandAll,
23230
23288
  formatSettings,
23231
23289
  dataSource: []
23232
23290
  };
@@ -23261,7 +23319,6 @@ class UsageChartComponent extends UsageReportBase {
23261
23319
  dataSourceSettings: this.dataSourceSettings,
23262
23320
  spinnerTemplate: '',
23263
23321
  allowConditionalFormatting: true,
23264
- allowExcelExport: true,
23265
23322
  currencyCode: this.currencyCode,
23266
23323
  }, this._elementRef.nativeElement);
23267
23324
  }
@@ -23551,7 +23608,7 @@ class UsagePivotComponent extends UsageReportBase {
23551
23608
  values,
23552
23609
  conditionalFormatSettings: this.conditionalFormatSettings,
23553
23610
  emptyCellsTextContent: this._emptyCellsTextContent,
23554
- expandAll: this._collapse || false,
23611
+ expandAll: this._expandAll,
23555
23612
  showColumnGrandTotals: true,
23556
23613
  alwaysShowValueHeader: false,
23557
23614
  formatSettings,
@@ -23624,8 +23681,20 @@ class UsagePivotComponent extends UsageReportBase {
23624
23681
  gridSettings: this.gridSettings,
23625
23682
  cellClick: this.cellClick.bind(this),
23626
23683
  currencyCode: this.currencyCode,
23684
+ dataBound: this.dataBound.bind(this)
23627
23685
  }, this._elementRef.nativeElement);
23628
23686
  }
23687
+ dataBound(_) {
23688
+ this.tooltip = new Tooltip({
23689
+ target: '.e-icons',
23690
+ cssClass: 'e-custom-tooltip',
23691
+ position: 'BottomCenter',
23692
+ offsetY: 15,
23693
+ enableRtl: this.pivot.enableRtl,
23694
+ locale: this.pivot.locale,
23695
+ });
23696
+ this.tooltip.appendTo(this._elementRef.nativeElement);
23697
+ }
23629
23698
  /**
23630
23699
  *
23631
23700
  * @param evt
@@ -23636,7 +23705,7 @@ class UsagePivotComponent extends UsageReportBase {
23636
23705
  super.browse(axes, actualText === 'usage' ? null : actualText);
23637
23706
  }
23638
23707
  /**
23639
- * reverse engineering axes from headers
23708
+ * reverse engineer axes from headers
23640
23709
  * @param columnHeaders
23641
23710
  * @param rowHeaders
23642
23711
  */
@@ -23657,6 +23726,11 @@ class UsagePivotComponent extends UsageReportBase {
23657
23726
  });
23658
23727
  return axes;
23659
23728
  }
23729
+ ngOnDestroy() {
23730
+ this.tooltip && this.tooltip.destroy();
23731
+ this.pivot && this.pivot.destroy();
23732
+ super.ngOnDestroy();
23733
+ }
23660
23734
  }
23661
23735
  UsagePivotComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: UsagePivotComponent, deps: [{ token: ReportRef }, { token: DatasourceService }, { token: i0.ElementRef }, { token: CubeService }, { token: SessionService }, { token: RouterImpl }, { token: PromptService }, { token: i7$2.Directionality }, { token: TranslateService }], target: i0.ɵɵFactoryTarget.Component });
23662
23736
  UsagePivotComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: UsagePivotComponent, selector: "ng-component", host: { properties: { "id": "id" } }, viewQueries: [{ propertyName: "pivot", first: true, predicate: PivotViewComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true });
@@ -26956,14 +27030,15 @@ let CubeCompareWidget = CubeCompareWidget_1 = class CubeCompareWidget {
26956
27030
  this.primaryYAxis = {
26957
27031
  skeleton: 'duration',
26958
27032
  labelStyle: {
26959
- size: '0px'
26960
- }, visible: true,
27033
+ //size: '0px'
27034
+ },
27035
+ labelFormat: '',
26961
27036
  titleStyle: {
26962
27037
  fontFamily: FONT_FAMILY
26963
27038
  },
26964
27039
  title: this._translate.get('Duration'),
26965
- lineStyle: { width: 0 },
26966
- minorTickLines: { width: 0 }
27040
+ //lineStyle: { width: 0 },
27041
+ //minorTickLines: { width: 0 }
26967
27042
  };
26968
27043
  this.margin = {
26969
27044
  bottom: 0
@@ -27156,31 +27231,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
27156
27231
  args: ['nameInput', { static: true, read: ElementRef }]
27157
27232
  }] } });
27158
27233
 
27159
- // https://day.js.org/docs/en/customization/relative-time
27160
- dayjs.extend(relativeTime, {
27161
- thresholds: [
27162
- { l: 's', r: 1 },
27163
- { l: 'm', r: 1 },
27164
- { l: 'mm', r: 59, d: 'minute' },
27165
- { l: 'h', r: 1 },
27166
- { l: 'hh', r: 24, d: 'hour' },
27167
- { l: 'd', r: 1 },
27168
- { l: 'dd', r: 29, d: 'day' },
27169
- { l: 'M', r: 1 },
27170
- { l: 'MM', r: 11, d: 'month' },
27171
- { l: 'y' },
27172
- { l: 'yy', d: 'year' }
27173
- ]
27174
- });
27175
- dayjs.extend(duration);
27176
- dayjs.extend(calendar);
27177
- dayjs.extend(updateLocale);
27234
+ /** configuration componenets */
27178
27235
  const CORE_COMPONENTS = [CubeCompareWidget, CubeParallelViewComponent, CubeExploreViewComponent, CubeChartViewComponent, CubeDocumentSumComponent, CubeDocumentMatrixComponent, CubeDocumentViewComponent, CubePivotViewComponent, TimelineViewComponent,
27179
27236
  SubstitutionComponent, MoveToActionComponent, AssignActionComponent, ReturnActionComponent, ExploreDocumentComponent,
27180
27237
  ActionsWidget, CubeAnalysisWidget, CubeDocumentsWidget, RecentsWidget, PersonalActivityWidget,
27181
- CompareDepartmentsWidget, PeersPerformanceWidget, PendingResultsWidget, PersonalScoreWidget, CubeWidgetFilterComponent,
27238
+ CompareGroupsWidget, PeersPerformanceWidget, PendingResultsWidget, PersonalScoreWidget, CubeWidgetFilterComponent,
27182
27239
  CubeDocumentsComponent, TasksComponent, UsageReportArgs, CubeUsageComponent
27183
27240
  ];
27241
+ /** common BizDoc components */
27184
27242
  class SharedModule {
27185
27243
  static forChild(config) {
27186
27244
  const { formats } = config || {};
@@ -27262,9 +27320,10 @@ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
27262
27320
  ImpersonateDialog,
27263
27321
  ConversationComponent, CubeMatrixPopupComponent,
27264
27322
  VersionCompareComponent, ExploreDocumentComponent, TasksComponent,
27265
- PendingResultsWidget, CompareDepartmentsWidget, CubeDocumentsTableComponent, CubeDocumentsWidget,
27323
+ PendingResultsWidget, CompareGroupsWidget, CubeDocumentsTableComponent, CubeDocumentsWidget,
27266
27324
  PersonalScoreWidget, PersonalActivityWidget, PeersPerformanceWidget, UsagePivotComponent, UsageChartComponent, UsageReportArgs,
27267
- EmojiHostComponent, TooltipDirective, TooltipComponent], imports: [CommonModule,
27325
+ EmojiHostComponent, TooltipDirective, TooltipComponent], imports: [DayJsModule,
27326
+ CommonModule,
27268
27327
  HttpClientModule,
27269
27328
  ReactiveFormsModule,
27270
27329
  FlexLayoutModule,
@@ -27301,7 +27360,7 @@ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
27301
27360
  PrivilegeDisabledDirective, CompareGroupDirective, CompareNameDirective, CompareContextDirective, TraceViewComponent, FlowViewComponent,
27302
27361
  AssignActionComponent, ReturnActionComponent, ExploreDocumentComponent,
27303
27362
  CubeCompareWidget, ActionsWidget, CubeAnalysisWidget, CubeDocumentsWidget, RecentsWidget, PersonalActivityWidget,
27304
- CompareDepartmentsWidget, PeersPerformanceWidget, PendingResultsWidget, PersonalScoreWidget, CubeWidgetFilterComponent,
27363
+ CompareGroupsWidget, PeersPerformanceWidget, PendingResultsWidget, PersonalScoreWidget, CubeWidgetFilterComponent,
27305
27364
  CubeDocumentsTableComponent, CubeDocumentsGridComponent, TasksComponent, UsageReportArgs, UsageChartComponent, UsagePivotComponent, TimespanInput,
27306
27365
  VersionCompareComponent, LottieAnimation,
27307
27366
  CubeAccumulationChartComponent,
@@ -27325,6 +27384,7 @@ SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
27325
27384
  { provide: HTTP_INTERCEPTORS, useClass: AppHttpInterceptor, multi: true },
27326
27385
  { provide: APP_INITIALIZER, useFactory: TranslateProviderFactory, deps: [TranslateService], multi: true },
27327
27386
  ], imports: [[
27387
+ DayJsModule,
27328
27388
  CommonModule,
27329
27389
  HttpClientModule,
27330
27390
  ReactiveFormsModule,
@@ -27401,10 +27461,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
27401
27461
  ImpersonateDialog,
27402
27462
  ConversationComponent, CubeMatrixPopupComponent,
27403
27463
  VersionCompareComponent, ExploreDocumentComponent, TasksComponent,
27404
- PendingResultsWidget, CompareDepartmentsWidget, CubeDocumentsTableComponent, CubeDocumentsWidget,
27464
+ PendingResultsWidget, CompareGroupsWidget, CubeDocumentsTableComponent, CubeDocumentsWidget,
27405
27465
  PersonalScoreWidget, PersonalActivityWidget, PeersPerformanceWidget, UsagePivotComponent, UsageChartComponent, UsageReportArgs,
27406
27466
  EmojiHostComponent, TooltipDirective, TooltipComponent],
27407
27467
  imports: [
27468
+ DayJsModule,
27408
27469
  CommonModule,
27409
27470
  HttpClientModule,
27410
27471
  ReactiveFormsModule,
@@ -27461,7 +27522,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
27461
27522
  PrivilegeDisabledDirective, CompareGroupDirective, CompareNameDirective, CompareContextDirective, TraceViewComponent, FlowViewComponent,
27462
27523
  AssignActionComponent, ReturnActionComponent, ExploreDocumentComponent,
27463
27524
  CubeCompareWidget, ActionsWidget, CubeAnalysisWidget, CubeDocumentsWidget, RecentsWidget, PersonalActivityWidget,
27464
- CompareDepartmentsWidget, PeersPerformanceWidget, PendingResultsWidget, PersonalScoreWidget, CubeWidgetFilterComponent,
27525
+ CompareGroupsWidget, PeersPerformanceWidget, PendingResultsWidget, PersonalScoreWidget, CubeWidgetFilterComponent,
27465
27526
  CubeDocumentsTableComponent, CubeDocumentsGridComponent, TasksComponent, UsageReportArgs, UsageChartComponent, UsagePivotComponent, TimespanInput,
27466
27527
  VersionCompareComponent, LottieAnimation,
27467
27528
  CubeAccumulationChartComponent,
@@ -27561,9 +27622,9 @@ class TraceElementComponent {
27561
27622
  const info = [];
27562
27623
  const who = yield this._accounts.get(recipient.userId).toPromise();
27563
27624
  if (recipient.escalated) {
27564
- const escalations = this.timeline.log.filter(l => l.type === 'Escalation' && l.recipientId === recipient.id);
27565
- const escalate = yield this._accounts.get(escalations[0].userId).toPromise();
27566
- info.push(this._translate.get('EscalatedBy', this._chat.format(escalate), this._chat.format(who)));
27625
+ const escalation = this.timeline.log.find(l => l.type === 'Escalation' && l.recipientId === recipient.originId);
27626
+ const to = yield this._accounts.get(escalation.userId).toPromise();
27627
+ info.push(this._translate.get('EscalatedBy', this._chat.format(to), this._chat.format(who)));
27567
27628
  }
27568
27629
  if (recipient.substituteId) {
27569
27630
  const substitute = yield this._accounts.get(recipient.substituteId).toPromise();
@@ -28541,11 +28602,11 @@ let DocumentTraceComponent = class DocumentTraceComponent {
28541
28602
  this._cd = _cd;
28542
28603
  this._fb = _fb;
28543
28604
  this.search = this._fb.control(null);
28544
- this.diagramConstraints = DiagramConstraints.Default | DiagramConstraints.Bridging |
28545
- DiagramConstraints.LineRouting |
28546
- DiagramConstraints.Pan |
28547
- DiagramConstraints.Zoom;
28548
- this.diagramTool = DiagramTools.SingleSelect;
28605
+ this.diagramConstraints = DiagramConstraints$1.Default | DiagramConstraints$1.Bridging |
28606
+ DiagramConstraints$1.LineRouting |
28607
+ DiagramConstraints$1.Pan |
28608
+ DiagramConstraints$1.Zoom;
28609
+ this.diagramTool = DiagramTools$1.SingleSelect;
28549
28610
  this.layout = {
28550
28611
  type: 'ComplexHierarchicalTree',
28551
28612
  connectionPointOrigin: ConnectionPointOrigin.DifferentPoint,
@@ -28564,7 +28625,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
28564
28625
  this._accentColor = this._session.getAccent(800);
28565
28626
  this._primeryColor = this._session.getPrimery();
28566
28627
  this.selectedItems = {
28567
- constraints: SelectorConstraints.UserHandle,
28628
+ constraints: SelectorConstraints$1.UserHandle,
28568
28629
  userHandles: [
28569
28630
  {
28570
28631
  name: 'info',
@@ -28588,13 +28649,13 @@ let DocumentTraceComponent = class DocumentTraceComponent {
28588
28649
  this.nodeDefaults = (node) => {
28589
28650
  const { indicator, virtual } = node.addInfo || {};
28590
28651
  if (indicator) {
28591
- node.constraints = NodeConstraints.PointerEvents | NodeConstraints.Tooltip,
28652
+ node.constraints = NodeConstraints$1.PointerEvents | NodeConstraints$1.Tooltip,
28592
28653
  node.style.strokeWidth = 0,
28593
28654
  node.width = node.height = 15;
28594
28655
  }
28595
28656
  else if (node.id !== 'version') {
28596
- node.constraints = NodeConstraints.InConnect | NodeConstraints.OutConnect |
28597
- NodeConstraints.PointerEvents | NodeConstraints.Select;
28657
+ node.constraints = NodeConstraints$1.InConnect | NodeConstraints$1.OutConnect |
28658
+ NodeConstraints$1.PointerEvents | NodeConstraints$1.Select;
28598
28659
  this._decorateNode(node);
28599
28660
  node.ports = getPorts();
28600
28661
  }
@@ -28602,7 +28663,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
28602
28663
  };
28603
28664
  this.connDefaults = (connector) => {
28604
28665
  const { virtual } = connector.addInfo || {};
28605
- connector.constraints = ConnectorConstraints.ReadOnly & ~ConnectorConstraints.Select;
28666
+ connector.constraints = ConnectorConstraints$1.ReadOnly & ~ConnectorConstraints$1.Select;
28606
28667
  this._decorateConnector(connector);
28607
28668
  };
28608
28669
  }
@@ -28657,7 +28718,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
28657
28718
  this._timeline();
28658
28719
  this.mode = 'diagram';
28659
28720
  this._cd.detectChanges();
28660
- this.diagram = new Diagram({
28721
+ this.diagram = new Diagram$1({
28661
28722
  width: '100%', height: '100%',
28662
28723
  snapSettings: this.snapSettings,
28663
28724
  layout: this.layout,
@@ -28813,7 +28874,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
28813
28874
  fontSize: 50,
28814
28875
  opacity: .1
28815
28876
  },
28816
- constraints: NodeConstraints.ReadOnly
28877
+ constraints: NodeConstraints$1.ReadOnly
28817
28878
  };
28818
28879
  this.diagram.addLayer({
28819
28880
  id: 'version',
@@ -28876,12 +28937,12 @@ let DocumentTraceComponent = class DocumentTraceComponent {
28876
28937
  this.diagram.dataBind();
28877
28938
  }
28878
28939
  pan() {
28879
- this.diagram.constraints = this.diagram.constraints | DiagramConstraints.Pan;
28880
- this.diagram.tool = DiagramTools.ZoomPan;
28940
+ this.diagram.constraints = this.diagram.constraints | DiagramConstraints$1.Pan;
28941
+ this.diagram.tool = DiagramTools$1.ZoomPan;
28881
28942
  }
28882
28943
  cursor() {
28883
- this.diagram.constraints = this.diagram.constraints & ~DiagramConstraints.Pan;
28884
- this.diagram.tool = DiagramTools.SingleSelect;
28944
+ this.diagram.constraints = this.diagram.constraints & ~DiagramConstraints$1.Pan;
28945
+ this.diagram.tool = DiagramTools$1.SingleSelect;
28885
28946
  }
28886
28947
  _highlight(ids) {
28887
28948
  for (let i = 0; i < ids.length; i++) {
@@ -29783,6 +29844,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
29783
29844
 
29784
29845
  const SYSTEM_COMPONENTS = [RoleNodeComponent, ManageCubeIndexUtility, PermissionsUtility, PositionsComponent, ProfilerComponent,
29785
29846
  PatternsComponent, SystemDiffComponent, DocumentTraceComponent];
29847
+ /** administrative utilities */
29786
29848
  class SystemModule {
29787
29849
  static forChild() {
29788
29850
  registerComponents(SYSTEM_COMPONENTS);
@@ -30038,5 +30100,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
30038
30100
  * Generated bundle index. Do not edit.
30039
30101
  */
30040
30102
 
30041
- export { AccountService, AceInput, ActionDialog, ActionPicker, ActionPipe, ActionRef, ActionsWidget, AddressInput, AgoPipe, ArraySortPipe, AssignActionComponent, AttachmentInfo, AttachmentPreview, AuthenticationImpl, AvatarComponent, BIZDOC_CONFIG, BizDoc, BizDocApp, BizDocModule, BrokenPage, BrowseFilterComponent, BrowseItemsComponent, CalendarPipe, ChatInfo, CheckboxComponent, ColorPicker, CombinationPicker, CombinationPickerBody, CombinationPool, CommentsComponent, CompareContextDirective, CompareDepartmentsWidget, CompareGroupDirective, CompareNameDirective, ComposeFormComponent, ContactsComponent, ConversationComponent, CubeAccumAnalysisWidget, CubeAccumulationChartComponent, CubeAnalysisWidget, CubeChartAnalysisWidget, CubeChartComponent, CubeCompareWidget, CubeDocumentsGridComponent, CubeDocumentsTableComponent, CubeDocumentsWidget, CubeFilterComponent, CubeGridComponent, CubeInfo, CubeMatrixComponent, CubeParallelComponent, CubePivotComponent, CubeService, CubeSpreadsheetComponent, CubeSumComponent, CubeViewComponent, CubeWidgetFilterComponent, DEFAULT_POLICY, DRAFT, DashboardComponent, DatasourceService, DateFormatPipe, DateRangePipe, DifferencePipe, DocumentInfo, DocumentInfoComponent, DocumentResolveService, DocumentViewRef, DocumentViewsComponent, DurationFormatPipe, DurationPipe, EnterExitLeft, EnterExitRight, EnterExitTop, ExploreDocumentComponent, ExploreItemImplComponent, ExploreItemsComponent, FadeSlideInOut, FieldType, FileInput, FilterPipe, FilterTagsComponent, FlowViewComponent, FormPipe, FormRef, GuideService, INBOX, IdentityName, ItemResolveService, JoinPipe, LottieAnimation, MailboxService, MapInfo, MatIconAnimate, MaterialModule, NavigationEnd, NavigationSelected, NavigationStart, NgxComponentOutlet, NotificationsTableComponent, OpenPolicy, POPUP_DATA, PaneRef, PanesRouter, ParamNavigation, PeersPerformanceWidget, PendingResultsWidget, PersonalActivityWidget, PersonalScoreWidget, Popup, PopupRef, PrivilegeDisabledDirective, PrivilegeHiddenDirective, PulseAnimation, QueryParamNavigation, QuickCommentComponent, RecentsWidget, RecipientResolveService, ReportArgumentsComponent, ReportRef, ReportViewerComponent, ReturnActionComponent, RolePipe, RouterImpl, SanitizeHtmlPipe, SaveChangesDialog, ScheduleViewComponent, SearchInput, SessionService, ShakeAnimation, SharedModule, SlotRouterDirective, StateDirective, StatePipe, SubstitutionComponent, SwapAnimation, TagsComponent, TasksComponent, TimeAgoPipe, TimePicker, TimespanInput, TooltipDirective, TraceViewComponent, TranslatePipe, TranslateService, TypeAutocomplete, TypeSelect, TypeValuePipe, UsageChartComponent, UsagePivotComponent, UsageReportArgs, UserNamePipe, UtilityRef, VersionCompareComponent, WidgetItemComponent, WidgetRef, isArray, isBoolean, isDate, isFunction, isImage, isMobile, isObject, isPrimitive, isPromise, isString, modelize, registerComponents };
30103
+ export { AccountService, AceInput, ActionDialog, ActionPicker, ActionPipe, ActionRef, ActionsWidget, AddressInput, AgoPipe, ArraySortPipe, AssignActionComponent, AttachmentInfo, AttachmentPreview, AuthenticationImpl, AvatarComponent, BIZDOC_CONFIG, BizDoc, BizDocApp, BizDocModule, BrokenPage, BrowseFilterComponent, BrowseItemsComponent, CalendarPipe, ChatInfo, CheckboxComponent, ColorPicker, CombinationPicker, CombinationPickerBody, CombinationPool, CommentsComponent, CompareContextDirective, CompareGroupDirective, CompareGroupsWidget, CompareNameDirective, ComposeFormComponent, ContactsComponent, ConversationComponent, CubeAccumAnalysisWidget, CubeAccumulationChartComponent, CubeAnalysisWidget, CubeChartAnalysisWidget, CubeChartComponent, CubeCompareWidget, CubeDocumentsGridComponent, CubeDocumentsTableComponent, CubeDocumentsWidget, CubeFilterComponent, CubeGridComponent, CubeInfo, CubeMatrixComponent, CubeParallelComponent, CubePivotComponent, CubeService, CubeSpreadsheetComponent, CubeSumComponent, CubeViewComponent, CubeWidgetFilterComponent, DEFAULT_POLICY, DRAFT, DashboardComponent, DatasourceService, DateFormatPipe, DateRangePipe, DifferencePipe, DocumentInfo, DocumentInfoComponent, DocumentResolveService, DocumentViewRef, DocumentViewsComponent, DurationFormatPipe, DurationPipe, EnterExitLeft, EnterExitRight, EnterExitTop, ExploreDocumentComponent, ExploreItemImplComponent, ExploreItemsComponent, FadeSlideInOut, FieldType, FileInput, FilterPipe, FilterTagsComponent, FlowViewComponent, FormPipe, FormRef, GuideService, INBOX, IdentityName, ItemResolveService, JoinPipe, LottieAnimation, MailboxService, MapInfo, MatIconAnimate, MaterialModule, NavigationEnd, NavigationSelected, NavigationStart, NgxComponentOutlet, NotificationsTableComponent, OpenPolicy, POPUP_DATA, PaneRef, PanesRouter, ParamNavigation, PeersPerformanceWidget, PendingResultsWidget, PersonalActivityWidget, PersonalScoreWidget, Popup, PopupRef, PrivilegeDisabledDirective, PrivilegeHiddenDirective, PulseAnimation, QueryParamNavigation, QuickCommentComponent, RecentsWidget, RecipientResolveService, ReportArgumentsComponent, ReportRef, ReportViewerComponent, ReturnActionComponent, RolePipe, RouterImpl, SanitizeHtmlPipe, SaveChangesDialog, ScheduleViewComponent, SearchInput, SessionService, ShakeAnimation, SharedModule, SlotRouterDirective, StateDirective, StatePipe, SubstitutionComponent, SwapAnimation, TagsComponent, TasksComponent, TimeAgoPipe, TimePicker, TimespanInput, TooltipDirective, TraceViewComponent, TranslatePipe, TranslateService, TypeAutocomplete, TypeSelect, TypeValuePipe, UsageChartComponent, UsagePivotComponent, UsageReportArgs, UserNamePipe, UtilityRef, VersionCompareComponent, WidgetItemComponent, WidgetRef, isArray, isBoolean, isDate, isFunction, isImage, isMobile, isObject, isPrimitive, isPromise, isString, modelize, registerComponents };
30042
30104
  //# sourceMappingURL=bizdoc-core.mjs.map