@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
@@ -120,7 +120,7 @@ import { Platform } from '@angular/cdk/platform';
120
120
  import { SelectionModel } from '@angular/cdk/collections';
121
121
  import * as i25 from '@angular/flex-layout/extended';
122
122
  import * as i8$3 from '@syncfusion/ej2-angular-charts';
123
- 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';
123
+ 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';
124
124
  import { Workbook } from '@syncfusion/ej2-excel-export';
125
125
  import { Chart } from '@syncfusion/ej2-charts';
126
126
  import * as i6$5 from '@syncfusion/ej2-angular-grids';
@@ -131,8 +131,8 @@ import * as i9$5 from '@syncfusion/ej2-angular-spreadsheet';
131
131
  import { Spreadsheet, isNumber, SpreadsheetModule, SelectionService as SelectionService$2, BasicModuleService, ClipboardService, CellFormatService, KeyboardNavigationService, KeyboardShortcutService, NumberFormatService } from '@syncfusion/ej2-angular-spreadsheet';
132
132
  import * as i4$1 from '@ctrl/ngx-emoji-mart';
133
133
  import { PickerModule } from '@ctrl/ngx-emoji-mart';
134
- import * as i11$1 from '@syncfusion/ej2-angular-diagrams';
135
- 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';
134
+ import { Diagram, BpmnDiagrams, UndoRedo, ConnectorBridging, ConnectorEditing, Snapping, DataBinding, SymbolPalette, ConnectorDrawingTool, DiagramConstraints, DiagramTools, NodeConstraints, ConnectorConstraints, SelectorConstraints, Node } from '@syncfusion/ej2-diagrams';
135
+ 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';
136
136
  import * as i9$2 from '@syncfusion/ej2-angular-schedule';
137
137
  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';
138
138
  import * as i10$1 from '@syncfusion/ej2-angular-kanban';
@@ -140,13 +140,14 @@ import { KanbanComponent, KanbanModule } from '@syncfusion/ej2-angular-kanban';
140
140
  import { CircularGaugeModule, AnnotationsService, GaugeTooltipService, LegendService as LegendService$1, CircularGauge, Annotations, GaugeTooltip, CircularGaugeComponent, Legend as Legend$1 } from '@syncfusion/ej2-angular-circulargauge';
141
141
  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';
142
142
  import * as i7$5 from '@syncfusion/ej2-angular-gantt';
143
- import { GanttModule, Gantt, SelectionService as SelectionService$3, DayMarkersService } from '@syncfusion/ej2-angular-gantt';
144
- import { __decorate } from 'tslib';
145
- import player from 'lottie-web/build/player/lottie';
143
+ import { GanttModule, ExcelExportService as ExcelExportService$3, DayMarkersService, SelectionService as SelectionService$3, Gantt } from '@syncfusion/ej2-angular-gantt';
146
144
  import relativeTime from 'dayjs/plugin/relativeTime';
147
145
  import duration from 'dayjs/plugin/duration';
148
146
  import calendar from 'dayjs/plugin/calendar';
147
+ import advancedFormat from 'dayjs/plugin/advancedFormat';
149
148
  import updateLocale from 'dayjs/plugin/updateLocale';
149
+ import { __decorate } from 'tslib';
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: '' })),
@@ -1017,7 +1018,7 @@ class SessionService {
1017
1018
  _config && _config.maps && this._loadMaps();
1018
1019
  }
1019
1020
  get profile() { return this._profile; }
1020
- get gender() { return this._profile.byGender || this._profile.gender; }
1021
+ get gender() { return this.profile.byId ? this._profile.byGender : this._profile.gender; }
1021
1022
  get accentPalette() {
1022
1023
  const palette = MATERIAL_PALETTES[this.theme.accent];
1023
1024
  return this._constructpalette(palette);
@@ -2068,7 +2069,7 @@ const STRINGS = {
2068
2069
  YouSubstituteActionTakenTo: 'Document {0} to {1} by you instead of {2} {3}',
2069
2070
  Substituting: '{0} substituting {1}',
2070
2071
  SubstitutingForYou: '{0} substituting you',
2071
- YouSubstitute: 'You substituting {0}',
2072
+ YouSubstituting: 'You substituting {0}',
2072
2073
  SubstitutingBy: '{0} by {2} substituting {1}',
2073
2074
  SubstitutingByYou: '{0} by you substituting {1}',
2074
2075
  SubstitutingYou: 'Substituting for you',
@@ -2624,9 +2625,9 @@ const STRINGS = {
2624
2625
  SubstitutingForFemale: 'במקום {0}',
2625
2626
  Substituting: '{0} מחליף את {1}',
2626
2627
  SubstitutingForYou: '{0} מחליף אותך',
2627
- YouSubstitute: 'את/ה מחליף את {0}',
2628
- YouSubstituteMale: 'אתה מחליף את {0}',
2629
- YouSubstituteFemale: 'את מחליפה את {0}',
2628
+ YouSubstituting: 'את/ה מחליף את {0}',
2629
+ YouSubstitutingMale: 'אתה מחליף את {0}',
2630
+ YouSubstitutingFemale: 'את מחליפה את {0}',
2630
2631
  SubstitutingBy: '{0} מחליף את {1} דרך {2}',
2631
2632
  SubstitutingByYou: '{0} מחליף/פה את {1} דרכך}',
2632
2633
  SubstitutingByYouMale: '{0} מחליף את {1} דרכך}',
@@ -7081,11 +7082,10 @@ class ChatInfo {
7081
7082
  open(userId, options) {
7082
7083
  let contact = this._session.profile.contacts.find(c => c.id === userId);
7083
7084
  if (!contact) {
7084
- const now = new Date();
7085
7085
  contact = {
7086
7086
  id: userId,
7087
7087
  accepted: false,
7088
- time: now.toJSON(),
7088
+ time: new Date().toJSON(),
7089
7089
  count: 0
7090
7090
  };
7091
7091
  this._session.profile.contacts.push(contact);
@@ -7425,7 +7425,7 @@ class ExpandedItemComponent {
7425
7425
  this._refreshTask = setInterval(() => this._refresh(), REFRESH_TIME);
7426
7426
  }
7427
7427
  async _note() {
7428
- const { ownerId, issued, substituteId, received, replied, log, id, note, byId, action, escalated, originId } = this.model;
7428
+ const { ownerId, issued, substituteId, received, replied, log, id, note, byId, action, escalated, originId, draft } = this.model;
7429
7429
  let target;
7430
7430
  if (action) {
7431
7431
  target = await this._target(id);
@@ -7440,10 +7440,8 @@ class ExpandedItemComponent {
7440
7440
  this.note = this._translate.personalize('YouSubstituteActionTaken', substituting.gender, adjective, this._formatUserElement(substituting), time);
7441
7441
  }
7442
7442
  else if (escalated) {
7443
- const escalations = log.filter(l => l.time > issued &&
7444
- l.type === 'Escalation'
7445
- && l.recipientId === id);
7446
- this.note = this._translate.personalize('EscalatedFrom', substituting.gender, this._formatUserElement(substituting), this._duration(escalations[0].duration));
7443
+ const escalation = log.find(l => l.type === 'Escalation' && l.recipientId === originId);
7444
+ this.note = this._translate.personalize('EscalatedFrom', substituting.gender, this._formatUserElement(substituting), this._duration(escalation.duration));
7447
7445
  }
7448
7446
  else {
7449
7447
  const time = this._fromNow(received);
@@ -7497,7 +7495,7 @@ class ExpandedItemComponent {
7497
7495
  this.note = this._translate.get('ActionBy', adjective, who.name);
7498
7496
  }
7499
7497
  }
7500
- else if (ownerId === this._session.profile.userId && issued) {
7498
+ else if (ownerId === this._session.profile.userId && !draft) {
7501
7499
  const time = this._fromNow(issued);
7502
7500
  if (byId) {
7503
7501
  if (byId === this._session.profile.byId)
@@ -10840,6 +10838,7 @@ class CubeSpreadsheetComponent {
10840
10838
  enableContextMenu: false,
10841
10839
  showFormulaBar: false,
10842
10840
  showSheetTabs: false,
10841
+ enableKeyboardNavigation: true,
10843
10842
  select: this.select.bind(this),
10844
10843
  sheets: [{
10845
10844
  columns: this.columns,
@@ -13011,12 +13010,12 @@ class ReportPaneComponent {
13011
13010
  }
13012
13011
  }
13013
13012
  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 });
13014
- 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 } });
13013
+ 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 } });
13015
13014
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: ReportPaneComponent, decorators: [{
13016
13015
  type: Component,
13017
13016
  args: [{ selector: 'bizdoc-report.pane', host: {
13018
13017
  class: 'pane'
13019
- }, 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"] }]
13018
+ }, 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"] }]
13020
13019
  }], ctorParameters: function () { return [{ type: SessionService }, { type: PaneRef }, { type: Popup }, { type: i0.ChangeDetectorRef }, { type: PromptService }, { type: GuideService }]; }, propDecorators: { viewer: [{
13021
13020
  type: ViewChild,
13022
13021
  args: [ReportViewerComponent, { static: true }]
@@ -13206,7 +13205,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
13206
13205
  type: Injectable
13207
13206
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
13208
13207
 
13209
- Diagram.Inject(UndoRedo);
13208
+ Diagram.Inject(BpmnDiagrams, UndoRedo, ConnectorBridging, ConnectorEditing, Snapping, DataBinding);
13209
+ SymbolPalette.Inject(BpmnDiagrams);
13210
13210
  function getPorts$1() {
13211
13211
  const ports = [
13212
13212
  { id: 'port1', shape: 'Circle', offset: { x: 0, y: 0.5 } },
@@ -13271,7 +13271,6 @@ class WorkflowComponent {
13271
13271
  this.connectorType = 'Bezier';
13272
13272
  this.alignment = 'Center';
13273
13273
  this.fontSize = 12;
13274
- this.getCustomTool = this.getTool.bind(this);
13275
13274
  this.saving = false;
13276
13275
  this.dirty = false;
13277
13276
  this.palettes = [];
@@ -13342,6 +13341,38 @@ class WorkflowComponent {
13342
13341
  tool = new DrawTool(this.diagram, this.connectorType);
13343
13342
  return tool;
13344
13343
  }
13344
+ ngOnInit() {
13345
+ }
13346
+ ngAfterViewInit() {
13347
+ this.symbolPalette = new SymbolPalette({
13348
+ expandMode: 'Multiple',
13349
+ palettes: this.palettes,
13350
+ width: "100%", height: "100%", symbolHeight: 80,
13351
+ enableRtl: false, enableAnimation: false, symbolWidth: 80,
13352
+ symbolMargin: this.symbolMargin,
13353
+ getSymbolInfo: this.getSymbolInfo.bind(this),
13354
+ getNodeDefaults: this.getSymbolDefaults.bind(this)
13355
+ });
13356
+ this.symbolPalette.appendTo(this.symbolPaletteEl.nativeElement);
13357
+ this.diagram = new Diagram({
13358
+ width: "100%", height: "100%",
13359
+ snapSettings: this.snapSettings,
13360
+ getConnectorDefaults: this.connDefaults.bind(this),
13361
+ constraints: this.diagramConstraints,
13362
+ tool: this.diagramTool,
13363
+ getNodeDefaults: this.nodeDefaults.bind(this),
13364
+ getCustomTool: this.getTool.bind(this),
13365
+ scrollSettings: this.scrollSettings,
13366
+ selectedItems: this.selectedItems,
13367
+ rulerSettings: this.rulerSettings,
13368
+ dragEnter: this.dragEnter.bind(this),
13369
+ connectionChange: this.change.bind(this),
13370
+ collectionChange: this.change.bind(this),
13371
+ propertyChange: this.propertyChange.bind(this),
13372
+ selectionChange: this.selectionChange.bind(this),
13373
+ }, this.diagramEl.nativeElement);
13374
+ this.diagramCreate();
13375
+ }
13345
13376
  diagramCreate() {
13346
13377
  paletteIconClick();
13347
13378
  this._pane.paramsChange.pipe(takeUntil(this._destroy)).subscribe(p => {
@@ -13370,7 +13401,7 @@ class WorkflowComponent {
13370
13401
  addInfo: {
13371
13402
  nodeType: n.name,
13372
13403
  title: n.title
13373
- }
13404
+ },
13374
13405
  };
13375
13406
  node.node = n.name;
13376
13407
  let palette = this.palettes.find(p => p.title === (n.palette || ''));
@@ -13546,7 +13577,7 @@ class WorkflowComponent {
13546
13577
  this.dirty = true;
13547
13578
  }
13548
13579
  save() {
13549
- this.diagram.serializationSettings = {};
13580
+ this.diagram.serializationSettings = { preventDefaults: true };
13550
13581
  const obj = JSON.parse(this.diagram.saveDiagram());
13551
13582
  this._form.workflow.connectors = obj.connectors;
13552
13583
  this._form.workflow.nodes = obj.nodes.filter(n => n.id !== 'version').map((n) => {
@@ -13572,23 +13603,25 @@ class WorkflowComponent {
13572
13603
  });
13573
13604
  }
13574
13605
  ngOnDestroy() {
13606
+ this.symbolPalette?.destroy();
13607
+ this.diagram?.destroy();
13575
13608
  this._destroy.next();
13576
13609
  this._destroy.complete();
13577
13610
  }
13578
13611
  }
13579
13612
  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 });
13580
- 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 } });
13613
+ 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 } });
13581
13614
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: WorkflowComponent, decorators: [{
13582
13615
  type: Component,
13583
13616
  args: [{ selector: 'bizdoc-workflow', host: {
13584
13617
  class: 'pane'
13585
- }, 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"] }]
13586
- }], ctorParameters: function () { return [{ type: PromptService }, { type: FormService }, { type: PaneRef }, { type: PanesRouter }, { type: SessionService }, { type: TranslateService }]; }, propDecorators: { symbolPalette: [{
13618
+ }, 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"] }]
13619
+ }], ctorParameters: function () { return [{ type: PromptService }, { type: FormService }, { type: PaneRef }, { type: PanesRouter }, { type: SessionService }, { type: TranslateService }]; }, propDecorators: { symbolPaletteEl: [{
13587
13620
  type: ViewChild,
13588
- args: [SymbolPaletteComponent]
13589
- }], diagram: [{
13621
+ args: ['symbolPalette', { static: true }]
13622
+ }], diagramEl: [{
13590
13623
  type: ViewChild,
13591
- args: ['diagram']
13624
+ args: ['diagram', { static: true }]
13592
13625
  }], handleKeyboardEvent: [{
13593
13626
  type: HostListener,
13594
13627
  args: ['document:keydown', ['$event']]
@@ -13779,7 +13812,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
13779
13812
  args: [{ name: 'amDurationFormat' }]
13780
13813
  }], ctorParameters: function () { return [{ type: TranslateService }]; } });
13781
13814
 
13782
- Diagram.Inject(ComplexHierarchicalTree, BpmnDiagrams, DataBinding, LineDistribution /*, LayoutAnimation, LineRouting, ConnectorBridging*/);
13815
+ Diagram$1.Inject(ComplexHierarchicalTree, BpmnDiagrams$1, DataBinding$1, LineDistribution /*, LayoutAnimation, LineRouting, ConnectorBridging*/);
13783
13816
  const
13784
13817
  //ELLIPSIS = 'M 650, 150 a 75,150 0 1,0 1,0 z',
13785
13818
  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';
@@ -13794,11 +13827,11 @@ class FlowViewComponent extends TraceBase {
13794
13827
  this._duration = _duration;
13795
13828
  this._elementRef = _elementRef;
13796
13829
  this.connectorType = 'Orthogonal';
13797
- this.tool = DiagramTools.ZoomPan;
13798
- this.diagramConstraints = DiagramConstraints.Default |
13799
- DiagramConstraints.Pan |
13800
- DiagramConstraints.LineRouting |
13801
- DiagramConstraints.Zoom;
13830
+ this.tool = DiagramTools$1.ZoomPan;
13831
+ this.diagramConstraints = DiagramConstraints$1.Default |
13832
+ DiagramConstraints$1.Pan |
13833
+ DiagramConstraints$1.LineRouting |
13834
+ DiagramConstraints$1.Zoom;
13802
13835
  this.layout = {
13803
13836
  type: 'ComplexHierarchicalTree',
13804
13837
  connectionPointOrigin: ConnectionPointOrigin.DifferentPoint,
@@ -13810,7 +13843,7 @@ class FlowViewComponent extends TraceBase {
13810
13843
  };
13811
13844
  this.scrollSettings = {
13812
13845
  minZoom: .5,
13813
- scrollLimit: 'Limited',
13846
+ scrollLimit: 'Diagram',
13814
13847
  canAutoScroll: true,
13815
13848
  currentZoom: 1.2,
13816
13849
  padding: { top: 0, bottom: 0 },
@@ -13836,7 +13869,7 @@ class FlowViewComponent extends TraceBase {
13836
13869
  async _initialize() {
13837
13870
  const { connectors, nodes, indicators } = await this._prepare();
13838
13871
  this.diagram && this.diagram.destroy();
13839
- this.diagram = new Diagram({
13872
+ this.diagram = new Diagram$1({
13840
13873
  width: '100%',
13841
13874
  height: 380,
13842
13875
  nodes,
@@ -13944,7 +13977,7 @@ class FlowViewComponent extends TraceBase {
13944
13977
  let configuration = this._configuration[node.type];
13945
13978
  let recipients = this.model.recipients.
13946
13979
  filter(r => r.nodeId === node.id &&
13947
- r.received >= this.model.issued)
13980
+ (!this.model.issued || r.received >= this.model.issued))
13948
13981
  .sort((r0, r1) => r0.received > r1.received ? 1 : -1);
13949
13982
  if (recipients.length) {
13950
13983
  let r = 0;
@@ -13967,15 +14000,18 @@ class FlowViewComponent extends TraceBase {
13967
14000
  for (r = 0; r < recipients.length; r++) {
13968
14001
  let recipient = recipients[r];
13969
14002
  const { annotation, tooltip } = await this._note(node, recipient);
14003
+ const content = this._tooltip(tooltip);
13970
14004
  const nod = {
13971
14005
  id: r === 0 ? node.id : node.id + r.toString(),
13972
14006
  shape: this._configuration[node.type].shape,
13973
14007
  zIndex: zIndex++,
13974
14008
  tooltip: {
13975
- content: this._tooltip(tooltip),
14009
+ content,
13976
14010
  position: 'TopCenter'
13977
14011
  },
13978
- constraints: Object.keys(tooltip).length ? NodeConstraints.Default : NodeConstraints.Default & ~NodeConstraints.Tooltip,
14012
+ constraints: content ?
14013
+ NodeConstraints$1.Default | NodeConstraints$1.Tooltip :
14014
+ NodeConstraints$1.Default,
13979
14015
  addInfo: {
13980
14016
  tooltip,
13981
14017
  recipient,
@@ -14055,15 +14091,18 @@ class FlowViewComponent extends TraceBase {
14055
14091
  else {
14056
14092
  const { state, annotation, tooltip } = await this._shape(node);
14057
14093
  const { shape } = configuration;
14094
+ const content = this._tooltip(tooltip);
14058
14095
  nodes.push({
14059
14096
  id: node.id,
14060
14097
  shape,
14061
14098
  zIndex: zIndex++,
14062
14099
  tooltip: {
14063
- content: this._tooltip(tooltip),
14100
+ content,
14064
14101
  position: 'TopCenter'
14065
14102
  },
14066
- constraints: Object.keys(tooltip).length ? NodeConstraints.Default | NodeConstraints.Tooltip : NodeConstraints.Default,
14103
+ constraints: content ?
14104
+ NodeConstraints$1.Default | NodeConstraints$1.Tooltip :
14105
+ NodeConstraints$1.Default,
14067
14106
  addInfo: {
14068
14107
  tooltip,
14069
14108
  node
@@ -14139,7 +14178,7 @@ class FlowViewComponent extends TraceBase {
14139
14178
  if (node.error)
14140
14179
  tooltip.error = node.error;
14141
14180
  let annotation, state;
14142
- const log = this.model.log.filter(l => l.nodeId === node.id && l.time >= this.model.issued);
14181
+ const log = this.model.log.filter(l => l.nodeId === node.id && (!this.model.issued || l.time >= this.model.issued));
14143
14182
  const stateLog = log.find(l => l.type === 'StateChange');
14144
14183
  if (stateLog) {
14145
14184
  state = this._session.profile.states.find(s => s.name === stateLog.state);
@@ -14356,11 +14395,10 @@ class FlowViewComponent extends TraceBase {
14356
14395
  }
14357
14396
  }
14358
14397
  if (recipient.escalated) {
14359
- const escalations = this.model.log.filter(l => l.type === 'Escalation' && l.recipientId === recipient.id);
14360
- const userIds = escalations.map(e => e.userId);
14361
- const users = await this._accounts.getAll(userIds).toPromise();
14362
- const duration = this._duration.transform(dayjs.duration(escalations[escalations.length - 1].duration, 's'));
14363
- tooltip.escalation = this._translate.get('EscalatedTo', this._translate.join(users.map(u => u.name)), duration);
14398
+ const escalation = this.model.log.find(l => l.type === 'Escalation' && l.recipientId === recipient.originId);
14399
+ const who = await this._accounts.get(escalation.userId).toPromise();
14400
+ const duration = this._duration.transform(dayjs.duration(escalation.duration, 's'));
14401
+ tooltip.escalation = this._translate.get('EscalatedFrom', who.name, duration);
14364
14402
  }
14365
14403
  if (recipient.replied) {
14366
14404
  const duration = dayjs(recipient.replied).diff(recipient.received, 's');
@@ -14539,9 +14577,9 @@ class TraceViewComponent extends TraceBase {
14539
14577
  step.fyi = recipient.fyi;
14540
14578
  if (recipient.substituteId) {
14541
14579
  if (recipient.byId) {
14542
- if (recipient.byId === this._session.userId && !this._session.isImpersonating) {
14580
+ if (recipient.byId === this._session.userId) {
14543
14581
  let who = await profileOf(recipient.userId);
14544
- if (recipient.substituteId === this._session.userId && !this._session.isImpersonating)
14582
+ if (recipient.substituteId === this._session.userId)
14545
14583
  step.name = this._translate.get('ByYou', nameOf(who));
14546
14584
  else {
14547
14585
  let substituting = await profileOf(recipient.substituteId);
@@ -14551,9 +14589,7 @@ class TraceViewComponent extends TraceBase {
14551
14589
  step.action = await actionBy(action, You, recipient.id);
14552
14590
  }
14553
14591
  else {
14554
- let by = await profileOf(recipient.byId);
14555
- let who = await profileOf(recipient.userId);
14556
- let substituting = await profileOf(recipient.substituteId);
14592
+ let by = await profileOf(recipient.byId), who = await profileOf(recipient.userId), substituting = await profileOf(recipient.substituteId);
14557
14593
  step.name = this._translate.get('SubstitutingBy', nameOf(who), nameOf(substituting), nameOf(by));
14558
14594
  if (by.role)
14559
14595
  step.role = by.role;
@@ -14561,31 +14597,29 @@ class TraceViewComponent extends TraceBase {
14561
14597
  step.action = await actionBy(action, by.gender, recipient.id);
14562
14598
  }
14563
14599
  }
14600
+ else if (recipient.userId === this._session.userId) {
14601
+ let substituting = await profileOf(recipient.substituteId);
14602
+ step.name = this._translate.personalize('YouSubstituting', this._session.gender, nameOf(substituting));
14603
+ if (action)
14604
+ step.action = await actionBy(action, this._session.gender, recipient.id);
14605
+ }
14606
+ else if (recipient.substituteId === this._session.userId) {
14607
+ let who = await profileOf(recipient.userId);
14608
+ step.name = this._translate.personalize('SubstitutingForYou', who.gender, nameOf(who));
14609
+ if (action)
14610
+ step.action = await actionBy(action, who.gender, recipient.id);
14611
+ }
14564
14612
  else {
14565
- if (recipient.userId === this._session.userId && !this._session.isImpersonating) {
14566
- let substituting = await profileOf(recipient.substituteId);
14567
- step.name = this._translate.personalize('YouSubstitute', this._session.profile.byGender, nameOf(substituting));
14568
- if (action)
14569
- step.action = await actionBy(action, this._session.gender, recipient.id);
14570
- }
14571
- else if (recipient.substituteId === this._session.userId && !this._session.isImpersonating) {
14572
- let who = await profileOf(recipient.userId);
14573
- step.name = this._translate.personalize('SubstitutingForYou', who.gender, nameOf(who));
14574
- if (action)
14575
- step.action = await actionBy(action, who.gender, recipient.id);
14576
- }
14577
- else {
14578
- let who = await profileOf(recipient.userId), substituting = await profileOf(recipient.substituteId);
14579
- step.name = this._translate.personalize('Substituting', who.gender, nameOf(who), nameOf(substituting));
14580
- if (who.role)
14581
- step.role = who.role;
14582
- if (action)
14583
- step.action = await actionBy(action, who.gender, recipient.id);
14584
- }
14613
+ let who = await profileOf(recipient.userId), substituting = await profileOf(recipient.substituteId);
14614
+ step.name = this._translate.personalize('Substituting', who.gender, nameOf(who), nameOf(substituting));
14615
+ if (who.role)
14616
+ step.role = who.role;
14617
+ if (action)
14618
+ step.action = await actionBy(action, who.gender, recipient.id);
14585
14619
  }
14586
14620
  }
14587
14621
  else if (recipient.byId) {
14588
- if (recipient.userId === this._session.userId && !this._session.isImpersonating) {
14622
+ if (recipient.userId === this._session.userId) {
14589
14623
  let by = await profileOf(recipient.byId);
14590
14624
  step.name = this._translate.get('YouBy', nameOf(by));
14591
14625
  if (action)
@@ -14593,7 +14627,7 @@ class TraceViewComponent extends TraceBase {
14593
14627
  }
14594
14628
  else {
14595
14629
  let who = await profileOf(recipient.userId);
14596
- if (recipient.byId === this._session.userId && !this._session.isImpersonating) {
14630
+ if (recipient.byId === this._session.userId) {
14597
14631
  step.name = this._translate.get('ByYou', nameOf(who));
14598
14632
  if (action)
14599
14633
  step.action = await actionBy(action, You, recipient.id);
@@ -14609,7 +14643,7 @@ class TraceViewComponent extends TraceBase {
14609
14643
  }
14610
14644
  }
14611
14645
  else {
14612
- if (recipient.userId === this._session.userId && !this._session.isImpersonating) {
14646
+ if (recipient.userId === this._session.userId) {
14613
14647
  step.name = this._translate.get('You');
14614
14648
  if (action)
14615
14649
  step.action = await actionBy(action, You, recipient.id);
@@ -14670,35 +14704,19 @@ class TraceViewComponent extends TraceBase {
14670
14704
  }
14671
14705
  }
14672
14706
  if (recipient.substituteId) {
14673
- let who = await profileOf(recipient.userId);
14674
- if (recipient.byId) {
14675
- if (recipient.byId === this._session.userId) {
14676
- if (recipient.substituteId === this._session.userId)
14677
- step.name = this._translate.get('ByYou', nameOf(who));
14678
- else {
14679
- let substituting = await profileOf(recipient.substituteId);
14680
- step.name = this._translate.personalize('SubstitutingByYou', who.gender, nameOf(who), nameOf(substituting));
14681
- }
14682
- }
14683
- else {
14684
- let substituting = await profileOf(recipient.substituteId);
14685
- let by = await profileOf(recipient.byId);
14686
- step.name = this._translate.get('SubstitutingBy', nameOf(who), nameOf(substituting), nameOf(by));
14687
- if (by.role)
14688
- step.role = by.role;
14689
- }
14707
+ if (recipient.substituteId === this._session.userId) {
14708
+ let who = await profileOf(recipient.userId);
14709
+ step.name = this._translate.personalize('SubstitutingForYou', who.gender, nameOf(who));
14710
+ }
14711
+ else if (recipient.userId === this._session.userId) {
14712
+ let substituting = await profileOf(recipient.substituteId);
14713
+ step.name = this._translate.personalize('YouSubstituting', this._session.gender, nameOf(substituting));
14690
14714
  }
14691
14715
  else {
14692
- if (recipient.substituteId === this._session.userId)
14693
- step.name = this._translate.personalize('SubstitutingForYou', who.gender, nameOf(who));
14694
- else if (recipient.userId === this._session.userId)
14695
- step.name = this._translate.personalize('YouSubstitute', this._session.profile.byGender, nameOf(who));
14696
- else {
14697
- let substituting = await profileOf(recipient.substituteId);
14698
- step.name = this._translate.personalize('Substituting', who.gender, nameOf(who), nameOf(substituting));
14699
- if (who.role)
14700
- step.role = who.role;
14701
- }
14716
+ let who = await profileOf(recipient.userId), substituting = await profileOf(recipient.substituteId);
14717
+ step.name = this._translate.personalize('Substituting', who.gender, nameOf(who), nameOf(substituting));
14718
+ if (who.role)
14719
+ step.role = who.role;
14702
14720
  }
14703
14721
  }
14704
14722
  else if (recipient.byId) {
@@ -14713,18 +14731,14 @@ class TraceViewComponent extends TraceBase {
14713
14731
  }
14714
14732
  }
14715
14733
  else if (recipient.escalated) {
14716
- let escalations = this.model.log.filter(l => l.time > issued &&
14717
- l.type === 'Escalation' && l.recipientId === recipient.id);
14718
- let escalate = [];
14719
- for (let escalation of escalations) {
14734
+ let escalation = this.model.log.find(l => l.type === 'Escalation' && l.recipientId === recipient.originId);
14735
+ let to = await profileOf(recipient.userId);
14736
+ if (escalation.userId === this._session.userId)
14737
+ step.name = this._translate.get('EscalatedByYou', nameOf(to));
14738
+ else {
14720
14739
  let who = await profileOf(escalation.userId);
14721
- escalate.push(who);
14740
+ step.name = this._translate.get('EscalatedBy', nameOf(who), nameOf(to));
14722
14741
  }
14723
- let who = await profileOf(recipient.userId);
14724
- if (escalations.length === 1 && escalate[0] === this._session.userId)
14725
- step.name = this._translate.get('EscalatedByYou', nameOf(who));
14726
- else
14727
- step.name = this._translate.get('EscalatedBy', nameOf(who), this._translate.join(escalate.map(e => nameOf(e))));
14728
14742
  }
14729
14743
  else {
14730
14744
  if (recipient.userId === this._session.userId)
@@ -14744,7 +14758,7 @@ class TraceViewComponent extends TraceBase {
14744
14758
  _filter() {
14745
14759
  switch (this._showMode) {
14746
14760
  case 'active':
14747
- this.data = this._data.filter(l => l.time >= this.model.issued);
14761
+ this.data = this.model.issued ? this._data.filter(l => l.time >= this.model.issued) : this._data;
14748
14762
  break;
14749
14763
  case 'route':
14750
14764
  this.data = this._data.filter(l => l.type === 'ActionTaken' || l.type === 'Estimate' || l.type === 'Pending');
@@ -14772,7 +14786,7 @@ class TraceViewComponent extends TraceBase {
14772
14786
  this._chat.open(userId);
14773
14787
  }
14774
14788
  /**
14775
- * model version compare, form component in 'compare' view mode
14789
+ * model version compare
14776
14790
  * @param log
14777
14791
  */
14778
14792
  compare(log) {
@@ -16849,7 +16863,7 @@ class ConversationComponent {
16849
16863
  }
16850
16864
  _persist() {
16851
16865
  this._input.text && this._input.text.length &&
16852
- window.localStorage.setItem(this.profile.id, this._input.text);
16866
+ window.localStorage.setItem(this.contact.id, this._input.text);
16853
16867
  }
16854
16868
  }
16855
16869
  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 });
@@ -16879,7 +16893,16 @@ class ConversationPaneComponent {
16879
16893
  pane.paramsChange.subscribe(p => {
16880
16894
  pane.group = translate.get('Chat');
16881
16895
  const id = p['id'];
16882
- this.contact = session.profile.contacts.find(c => c.id === id) || {};
16896
+ this.contact = session.profile.contacts.find(c => c.id === id);
16897
+ if (!this.contact) {
16898
+ this.contact = {
16899
+ id,
16900
+ accepted: false,
16901
+ time: new Date().toJSON(),
16902
+ count: 0
16903
+ };
16904
+ session.profile.contacts.push(this.contact);
16905
+ }
16883
16906
  accounts.get(id).subscribe(u => pane.title = u.name);
16884
16907
  });
16885
16908
  chat.change.pipe(takeUntil$1(this._destroy)).
@@ -19318,7 +19341,7 @@ function prepareRoutes(routes, treePath) {
19318
19341
  fullPath,
19319
19342
  regEx: new RegExp('^' + fullPath.
19320
19343
  replace('/', '\\/').
19321
- replace(PANE_PARAMS_REGEX, e => `(?<${e.substr(1)}>[\\w\\-]*)`))
19344
+ replace(PANE_PARAMS_REGEX, e => `(?<${e.substr(1)}>[\\w@\\-]*)`))
19322
19345
  });
19323
19346
  if (route.children) {
19324
19347
  let children = prepareRoutes(route.children, fullPath);
@@ -20305,10 +20328,10 @@ class ReportComponent {
20305
20328
  }
20306
20329
  }
20307
20330
  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 });
20308
- 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 } });
20331
+ 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 } });
20309
20332
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: ReportComponent, decorators: [{
20310
20333
  type: Component,
20311
- 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"] }]
20334
+ 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"] }]
20312
20335
  }], ctorParameters: function () { return [{ type: WindowTitleService }, { type: i1$6.ActivatedRoute }, { type: SessionService }, { type: i0.ChangeDetectorRef }, { type: PromptService }, { type: GuideService }]; }, propDecorators: { filter: [{
20313
20336
  type: ViewChild,
20314
20337
  args: [MatSidenav, { static: true }]
@@ -20669,8 +20692,8 @@ Chart$1.Inject(Category, DateTime, Tooltip$1, Legend, Export, BarSeries, AreaSer
20669
20692
  class SyncfusionChartModule {
20670
20693
  }
20671
20694
  SyncfusionChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SyncfusionChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20672
- SyncfusionChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SyncfusionChartModule, imports: [ChartModule, AccumulationChartAllModule, SparklineAllModule], exports: [ChartModule, AccumulationChartAllModule, SparklineAllModule] });
20673
- 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,
20695
+ 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] });
20696
+ 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,
20674
20697
  SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService,
20675
20698
  StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService,
20676
20699
  BarSeriesService, StackingBarSeriesService, RangeColumnSeriesService, BubbleSeriesService, TooltipService,
@@ -20678,14 +20701,14 @@ SyncfusionChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", v
20678
20701
  SelectionService, ChartAnnotationService, WaterfallSeriesService,
20679
20702
  RangeAreaSeriesService, PolarSeriesService, RadarSeriesService, DateTimeCategoryService,
20680
20703
  MultiLevelLabelService, ParetoSeriesService, TooltipRenderService,
20681
- ExportService,
20682
- AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService], imports: [[ChartModule, AccumulationChartAllModule, SparklineAllModule], ChartModule, AccumulationChartAllModule, SparklineAllModule] });
20704
+ SparklineTooltipService,
20705
+ AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService], imports: [[ChartModule, AccumulationChartAllModule, SparklineAllModule, RangeNavigatorModule], ChartModule, AccumulationChartAllModule, SparklineAllModule, RangeNavigatorModule] });
20683
20706
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SyncfusionChartModule, decorators: [{
20684
20707
  type: NgModule,
20685
20708
  args: [{
20686
- imports: [ChartModule, AccumulationChartAllModule, SparklineAllModule],
20687
- exports: [ChartModule, AccumulationChartAllModule, SparklineAllModule],
20688
- providers: [AccumulationDistributionIndicatorService, FunnelSeriesService, StackingStepAreaSeriesService, PieSeriesService, PyramidSeriesService, LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService,
20709
+ imports: [ChartModule, AccumulationChartAllModule, SparklineAllModule, RangeNavigatorModule],
20710
+ exports: [ChartModule, AccumulationChartAllModule, SparklineAllModule, RangeNavigatorModule],
20711
+ providers: [RangeTooltipService, AccumulationDistributionIndicatorService, FunnelSeriesService, StackingStepAreaSeriesService, PieSeriesService, PyramidSeriesService, LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService,
20689
20712
  SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService,
20690
20713
  StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService,
20691
20714
  BarSeriesService, StackingBarSeriesService, RangeColumnSeriesService, BubbleSeriesService, TooltipService,
@@ -20693,7 +20716,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
20693
20716
  SelectionService, ChartAnnotationService, WaterfallSeriesService,
20694
20717
  RangeAreaSeriesService, PolarSeriesService, RadarSeriesService, DateTimeCategoryService,
20695
20718
  MultiLevelLabelService, ParetoSeriesService, TooltipRenderService,
20696
- ExportService,
20719
+ SparklineTooltipService,
20697
20720
  AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService]
20698
20721
  }]
20699
20722
  }] });
@@ -20828,13 +20851,46 @@ class SyncfusionGanttModule {
20828
20851
  }
20829
20852
  SyncfusionGanttModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SyncfusionGanttModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20830
20853
  SyncfusionGanttModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SyncfusionGanttModule, imports: [GanttModule], exports: [GanttModule] });
20831
- SyncfusionGanttModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SyncfusionGanttModule, providers: [], imports: [[GanttModule], GanttModule] });
20854
+ 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] });
20832
20855
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SyncfusionGanttModule, decorators: [{
20833
20856
  type: NgModule,
20834
20857
  args: [{
20835
20858
  imports: [GanttModule],
20836
20859
  exports: [GanttModule],
20837
- providers: []
20860
+ providers: [ExcelExportService$3, DayMarkersService, SelectionService$3]
20861
+ }]
20862
+ }] });
20863
+
20864
+ // https://day.js.org/docs/en/customization/relative-time
20865
+ dayjs.extend(relativeTime, {
20866
+ thresholds: [
20867
+ { l: 's', r: 1 },
20868
+ { l: 'm', r: 1 },
20869
+ { l: 'mm', r: 59, d: 'minute' },
20870
+ { l: 'h', r: 1 },
20871
+ { l: 'hh', r: 24, d: 'hour' },
20872
+ { l: 'd', r: 1 },
20873
+ { l: 'dd', r: 29, d: 'day' },
20874
+ { l: 'M', r: 1 },
20875
+ { l: 'MM', r: 11, d: 'month' },
20876
+ { l: 'y' },
20877
+ { l: 'yy', d: 'year' }
20878
+ ]
20879
+ });
20880
+ dayjs.extend(duration);
20881
+ dayjs.extend(calendar);
20882
+ dayjs.extend(updateLocale);
20883
+ dayjs.extend(advancedFormat);
20884
+ class DayJsModule {
20885
+ }
20886
+ DayJsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: DayJsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20887
+ DayJsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: DayJsModule });
20888
+ DayJsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: DayJsModule, imports: [[]] });
20889
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: DayJsModule, decorators: [{
20890
+ type: NgModule,
20891
+ args: [{
20892
+ imports: [],
20893
+ exports: [],
20838
20894
  }]
20839
20895
  }] });
20840
20896
 
@@ -22059,14 +22115,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
22059
22115
  args: [ChartComponent]
22060
22116
  }] } });
22061
22117
 
22062
- var CompareDepartmentsWidget_1;
22118
+ var CompareGroupsWidget_1;
22063
22119
  /** */
22064
- let CompareDepartmentsWidget = CompareDepartmentsWidget_1 = class CompareDepartmentsWidget {
22120
+ let CompareGroupsWidget = CompareGroupsWidget_1 = class CompareGroupsWidget {
22065
22121
  constructor(_translate, widgetRef, _elementRef, _session) {
22066
22122
  this._translate = _translate;
22067
22123
  this._elementRef = _elementRef;
22068
22124
  this._session = _session;
22069
- this.id = `department-compare-${CompareDepartmentsWidget_1.nextId++}`;
22125
+ this.id = `groups-compare-${CompareGroupsWidget_1.nextId++}`;
22070
22126
  this.palettes = this._session.accentPalette;
22071
22127
  this.theme = this._session.theme.dark ? 'MaterialDark' : 'Material';
22072
22128
  this.enableRtl = this._session.inverse;
@@ -22228,18 +22284,18 @@ let CompareDepartmentsWidget = CompareDepartmentsWidget_1 = class CompareDepartm
22228
22284
  this._destroy.complete();
22229
22285
  }
22230
22286
  };
22231
- CompareDepartmentsWidget.nextId = 0;
22232
- 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 });
22233
- 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 });
22234
- CompareDepartmentsWidget = CompareDepartmentsWidget_1 = __decorate([
22287
+ CompareGroupsWidget.nextId = 0;
22288
+ 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 });
22289
+ 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 });
22290
+ CompareGroupsWidget = CompareGroupsWidget_1 = __decorate([
22235
22291
  BizDoc({
22236
- selector: 'bizdoc-compare-departments'
22292
+ selector: 'bizdoc-compare-groups'
22237
22293
  })
22238
- ], CompareDepartmentsWidget);
22239
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: CompareDepartmentsWidget, decorators: [{
22294
+ ], CompareGroupsWidget);
22295
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: CompareGroupsWidget, decorators: [{
22240
22296
  type: Component,
22241
22297
  args: [{
22242
- //templateUrl: './compare-departments.widget.html',
22298
+ //templateUrl: './compare-groups.widget.html',
22243
22299
  template: '',
22244
22300
  providers: [LineSeriesService, CrosshairService, ColumnSeriesService],
22245
22301
  host: {
@@ -22469,7 +22525,7 @@ PeersPerformanceWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", v
22469
22525
  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 });
22470
22526
  PeersPerformanceWidget = PeersPerformanceWidget_1 = __decorate([
22471
22527
  BizDoc({
22472
- selector: 'bizdoc-departmental-performance'
22528
+ selector: 'bizdoc-peers-performance'
22473
22529
  })
22474
22530
  ], PeersPerformanceWidget);
22475
22531
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: PeersPerformanceWidget, decorators: [{
@@ -22501,17 +22557,13 @@ let PendingResultsWidget = class PendingResultsWidget {
22501
22557
  this.sort.direction = 'desc';
22502
22558
  this.dataSource.sort = this.sort;
22503
22559
  }
22504
- asDays(seconds) {
22505
- const duration = dayjs.duration(seconds, 's');
22506
- return `${Math.floor(duration.asDays())}:${Math.round(duration.hours())}`;
22507
- }
22508
22560
  ngOnDestroy() {
22509
22561
  this._destroy.next();
22510
22562
  this._destroy.complete();
22511
22563
  }
22512
22564
  };
22513
22565
  PendingResultsWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: PendingResultsWidget, deps: [{ token: WidgetRef }], target: i0.ɵɵFactoryTarget.Component });
22514
- 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: [
22566
+ 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: [
22515
22567
  listAnimation,
22516
22568
  itemAnimation
22517
22569
  ] });
@@ -22525,7 +22577,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
22525
22577
  args: [{ selector: 'bizdoc-pending-results', animations: [
22526
22578
  listAnimation,
22527
22579
  itemAnimation
22528
- ], 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"] }]
22580
+ ], 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"] }]
22529
22581
  }], ctorParameters: function () { return [{ type: WidgetRef }]; }, propDecorators: { sort: [{
22530
22582
  type: ViewChild,
22531
22583
  args: [MatSort]
@@ -22923,7 +22975,7 @@ class UsageReportBase {
22923
22975
  this._series = series ? this._cube.axes.filter(a => isArray(series) ? series.indexOf(a.name) > -1 : a.name === series) :
22924
22976
  this._cube.axes.filter(a => a.combination && !a.hidden);
22925
22977
  this.currencyCode = this._cube.currencyCode;
22926
- this._collapse = collapse;
22978
+ this._expandAll = collapse !== true;
22927
22979
  this._yTitle = yTitle || this._translate.get('Usage');
22928
22980
  }
22929
22981
  ngOnInit() {
@@ -22987,7 +23039,7 @@ class UsageChartComponent extends UsageReportBase {
22987
23039
  /** set defaults */
22988
23040
  _defaults() {
22989
23041
  const { chartType } = this._reportRef.options;
22990
- const line = chartType === 'Line' || chartType === 'Spline';
23042
+ const isLine = chartType === 'Line' || chartType === 'Spline';
22991
23043
  this.chartSettings = {
22992
23044
  pointClick: this.pointClick.bind(this),
22993
23045
  zoomSettings: {
@@ -22998,7 +23050,7 @@ class UsageChartComponent extends UsageReportBase {
22998
23050
  enableSelectionZooming: false
22999
23051
  },
23000
23052
  crosshair: {
23001
- enable: line,
23053
+ enable: isLine,
23002
23054
  line: {
23003
23055
  width: 1
23004
23056
  }
@@ -23008,7 +23060,7 @@ class UsageChartComponent extends UsageReportBase {
23008
23060
  type: chartType || 'Column',
23009
23061
  //width: 2,
23010
23062
  border: { width: 0 },
23011
- marker: { height: 10, width: 10, shape: 'Pentagon', visible: line },
23063
+ marker: { height: 10, width: 10, shape: 'Pentagon', visible: isLine },
23012
23064
  },
23013
23065
  enableExport: true,
23014
23066
  chartArea: {
@@ -23049,7 +23101,12 @@ class UsageChartComponent extends UsageReportBase {
23049
23101
  labelStyle: {
23050
23102
  fontFamily: FONT_FAMILY
23051
23103
  },
23052
- crosshairTooltip: { enable: line }
23104
+ crosshairTooltip: {
23105
+ enable: true,
23106
+ textStyle: {
23107
+ fontFamily: FONT_FAMILY
23108
+ }
23109
+ }
23053
23110
  }
23054
23111
  };
23055
23112
  const formatSettings = [{
@@ -23077,7 +23134,7 @@ class UsageChartComponent extends UsageReportBase {
23077
23134
  ],
23078
23135
  enableSorting: false,
23079
23136
  sortSettings: this._series.map(s => { return { name: `_${s.name}` }; }),
23080
- expandAll: this._collapse || false,
23137
+ expandAll: this._expandAll,
23081
23138
  formatSettings,
23082
23139
  dataSource: []
23083
23140
  };
@@ -23112,7 +23169,6 @@ class UsageChartComponent extends UsageReportBase {
23112
23169
  dataSourceSettings: this.dataSourceSettings,
23113
23170
  spinnerTemplate: '',
23114
23171
  allowConditionalFormatting: true,
23115
- allowExcelExport: true,
23116
23172
  currencyCode: this.currencyCode,
23117
23173
  }, this._elementRef.nativeElement);
23118
23174
  }
@@ -23402,7 +23458,7 @@ class UsagePivotComponent extends UsageReportBase {
23402
23458
  values,
23403
23459
  conditionalFormatSettings: this.conditionalFormatSettings,
23404
23460
  emptyCellsTextContent: this._emptyCellsTextContent,
23405
- expandAll: this._collapse || false,
23461
+ expandAll: this._expandAll,
23406
23462
  showColumnGrandTotals: true,
23407
23463
  alwaysShowValueHeader: false,
23408
23464
  formatSettings,
@@ -23475,8 +23531,20 @@ class UsagePivotComponent extends UsageReportBase {
23475
23531
  gridSettings: this.gridSettings,
23476
23532
  cellClick: this.cellClick.bind(this),
23477
23533
  currencyCode: this.currencyCode,
23534
+ dataBound: this.dataBound.bind(this)
23478
23535
  }, this._elementRef.nativeElement);
23479
23536
  }
23537
+ dataBound(_) {
23538
+ this.tooltip = new Tooltip({
23539
+ target: '.e-icons',
23540
+ cssClass: 'e-custom-tooltip',
23541
+ position: 'BottomCenter',
23542
+ offsetY: 15,
23543
+ enableRtl: this.pivot.enableRtl,
23544
+ locale: this.pivot.locale,
23545
+ });
23546
+ this.tooltip.appendTo(this._elementRef.nativeElement);
23547
+ }
23480
23548
  /**
23481
23549
  *
23482
23550
  * @param evt
@@ -23487,7 +23555,7 @@ class UsagePivotComponent extends UsageReportBase {
23487
23555
  super.browse(axes, actualText === 'usage' ? null : actualText);
23488
23556
  }
23489
23557
  /**
23490
- * reverse engineering axes from headers
23558
+ * reverse engineer axes from headers
23491
23559
  * @param columnHeaders
23492
23560
  * @param rowHeaders
23493
23561
  */
@@ -23508,6 +23576,11 @@ class UsagePivotComponent extends UsageReportBase {
23508
23576
  });
23509
23577
  return axes;
23510
23578
  }
23579
+ ngOnDestroy() {
23580
+ this.tooltip && this.tooltip.destroy();
23581
+ this.pivot && this.pivot.destroy();
23582
+ super.ngOnDestroy();
23583
+ }
23511
23584
  }
23512
23585
  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 });
23513
23586
  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 });
@@ -26769,14 +26842,15 @@ let CubeCompareWidget = CubeCompareWidget_1 = class CubeCompareWidget {
26769
26842
  this.primaryYAxis = {
26770
26843
  skeleton: 'duration',
26771
26844
  labelStyle: {
26772
- size: '0px'
26773
- }, visible: true,
26845
+ //size: '0px'
26846
+ },
26847
+ labelFormat: '',
26774
26848
  titleStyle: {
26775
26849
  fontFamily: FONT_FAMILY
26776
26850
  },
26777
26851
  title: this._translate.get('Duration'),
26778
- lineStyle: { width: 0 },
26779
- minorTickLines: { width: 0 }
26852
+ //lineStyle: { width: 0 },
26853
+ //minorTickLines: { width: 0 }
26780
26854
  };
26781
26855
  this.margin = {
26782
26856
  bottom: 0
@@ -26965,31 +27039,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
26965
27039
  args: ['nameInput', { static: true, read: ElementRef }]
26966
27040
  }] } });
26967
27041
 
26968
- // https://day.js.org/docs/en/customization/relative-time
26969
- dayjs.extend(relativeTime, {
26970
- thresholds: [
26971
- { l: 's', r: 1 },
26972
- { l: 'm', r: 1 },
26973
- { l: 'mm', r: 59, d: 'minute' },
26974
- { l: 'h', r: 1 },
26975
- { l: 'hh', r: 24, d: 'hour' },
26976
- { l: 'd', r: 1 },
26977
- { l: 'dd', r: 29, d: 'day' },
26978
- { l: 'M', r: 1 },
26979
- { l: 'MM', r: 11, d: 'month' },
26980
- { l: 'y' },
26981
- { l: 'yy', d: 'year' }
26982
- ]
26983
- });
26984
- dayjs.extend(duration);
26985
- dayjs.extend(calendar);
26986
- dayjs.extend(updateLocale);
27042
+ /** configuration componenets */
26987
27043
  const CORE_COMPONENTS = [CubeCompareWidget, CubeParallelViewComponent, CubeExploreViewComponent, CubeChartViewComponent, CubeDocumentSumComponent, CubeDocumentMatrixComponent, CubeDocumentViewComponent, CubePivotViewComponent, TimelineViewComponent,
26988
27044
  SubstitutionComponent, MoveToActionComponent, AssignActionComponent, ReturnActionComponent, ExploreDocumentComponent,
26989
27045
  ActionsWidget, CubeAnalysisWidget, CubeDocumentsWidget, RecentsWidget, PersonalActivityWidget,
26990
- CompareDepartmentsWidget, PeersPerformanceWidget, PendingResultsWidget, PersonalScoreWidget, CubeWidgetFilterComponent,
27046
+ CompareGroupsWidget, PeersPerformanceWidget, PendingResultsWidget, PersonalScoreWidget, CubeWidgetFilterComponent,
26991
27047
  CubeDocumentsComponent, TasksComponent, UsageReportArgs, CubeUsageComponent
26992
27048
  ];
27049
+ /** common BizDoc components */
26993
27050
  class SharedModule {
26994
27051
  static forChild(config) {
26995
27052
  const { formats } = config || {};
@@ -27071,9 +27128,10 @@ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
27071
27128
  ImpersonateDialog,
27072
27129
  ConversationComponent, CubeMatrixPopupComponent,
27073
27130
  VersionCompareComponent, ExploreDocumentComponent, TasksComponent,
27074
- PendingResultsWidget, CompareDepartmentsWidget, CubeDocumentsTableComponent, CubeDocumentsWidget,
27131
+ PendingResultsWidget, CompareGroupsWidget, CubeDocumentsTableComponent, CubeDocumentsWidget,
27075
27132
  PersonalScoreWidget, PersonalActivityWidget, PeersPerformanceWidget, UsagePivotComponent, UsageChartComponent, UsageReportArgs,
27076
- EmojiHostComponent, TooltipDirective, TooltipComponent], imports: [CommonModule,
27133
+ EmojiHostComponent, TooltipDirective, TooltipComponent], imports: [DayJsModule,
27134
+ CommonModule,
27077
27135
  HttpClientModule,
27078
27136
  ReactiveFormsModule,
27079
27137
  FlexLayoutModule,
@@ -27110,7 +27168,7 @@ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
27110
27168
  PrivilegeDisabledDirective, CompareGroupDirective, CompareNameDirective, CompareContextDirective, TraceViewComponent, FlowViewComponent,
27111
27169
  AssignActionComponent, ReturnActionComponent, ExploreDocumentComponent,
27112
27170
  CubeCompareWidget, ActionsWidget, CubeAnalysisWidget, CubeDocumentsWidget, RecentsWidget, PersonalActivityWidget,
27113
- CompareDepartmentsWidget, PeersPerformanceWidget, PendingResultsWidget, PersonalScoreWidget, CubeWidgetFilterComponent,
27171
+ CompareGroupsWidget, PeersPerformanceWidget, PendingResultsWidget, PersonalScoreWidget, CubeWidgetFilterComponent,
27114
27172
  CubeDocumentsTableComponent, CubeDocumentsGridComponent, TasksComponent, UsageReportArgs, UsageChartComponent, UsagePivotComponent, TimespanInput,
27115
27173
  VersionCompareComponent, LottieAnimation,
27116
27174
  CubeAccumulationChartComponent,
@@ -27134,6 +27192,7 @@ SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
27134
27192
  { provide: HTTP_INTERCEPTORS, useClass: AppHttpInterceptor, multi: true },
27135
27193
  { provide: APP_INITIALIZER, useFactory: TranslateProviderFactory, deps: [TranslateService], multi: true },
27136
27194
  ], imports: [[
27195
+ DayJsModule,
27137
27196
  CommonModule,
27138
27197
  HttpClientModule,
27139
27198
  ReactiveFormsModule,
@@ -27210,10 +27269,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
27210
27269
  ImpersonateDialog,
27211
27270
  ConversationComponent, CubeMatrixPopupComponent,
27212
27271
  VersionCompareComponent, ExploreDocumentComponent, TasksComponent,
27213
- PendingResultsWidget, CompareDepartmentsWidget, CubeDocumentsTableComponent, CubeDocumentsWidget,
27272
+ PendingResultsWidget, CompareGroupsWidget, CubeDocumentsTableComponent, CubeDocumentsWidget,
27214
27273
  PersonalScoreWidget, PersonalActivityWidget, PeersPerformanceWidget, UsagePivotComponent, UsageChartComponent, UsageReportArgs,
27215
27274
  EmojiHostComponent, TooltipDirective, TooltipComponent],
27216
27275
  imports: [
27276
+ DayJsModule,
27217
27277
  CommonModule,
27218
27278
  HttpClientModule,
27219
27279
  ReactiveFormsModule,
@@ -27270,7 +27330,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
27270
27330
  PrivilegeDisabledDirective, CompareGroupDirective, CompareNameDirective, CompareContextDirective, TraceViewComponent, FlowViewComponent,
27271
27331
  AssignActionComponent, ReturnActionComponent, ExploreDocumentComponent,
27272
27332
  CubeCompareWidget, ActionsWidget, CubeAnalysisWidget, CubeDocumentsWidget, RecentsWidget, PersonalActivityWidget,
27273
- CompareDepartmentsWidget, PeersPerformanceWidget, PendingResultsWidget, PersonalScoreWidget, CubeWidgetFilterComponent,
27333
+ CompareGroupsWidget, PeersPerformanceWidget, PendingResultsWidget, PersonalScoreWidget, CubeWidgetFilterComponent,
27274
27334
  CubeDocumentsTableComponent, CubeDocumentsGridComponent, TasksComponent, UsageReportArgs, UsageChartComponent, UsagePivotComponent, TimespanInput,
27275
27335
  VersionCompareComponent, LottieAnimation,
27276
27336
  CubeAccumulationChartComponent,
@@ -27367,9 +27427,9 @@ class TraceElementComponent {
27367
27427
  const info = [];
27368
27428
  const who = await this._accounts.get(recipient.userId).toPromise();
27369
27429
  if (recipient.escalated) {
27370
- const escalations = this.timeline.log.filter(l => l.type === 'Escalation' && l.recipientId === recipient.id);
27371
- const escalate = await this._accounts.get(escalations[0].userId).toPromise();
27372
- info.push(this._translate.get('EscalatedBy', this._chat.format(escalate), this._chat.format(who)));
27430
+ const escalation = this.timeline.log.find(l => l.type === 'Escalation' && l.recipientId === recipient.originId);
27431
+ const to = await this._accounts.get(escalation.userId).toPromise();
27432
+ info.push(this._translate.get('EscalatedBy', this._chat.format(to), this._chat.format(who)));
27373
27433
  }
27374
27434
  if (recipient.substituteId) {
27375
27435
  const substitute = await this._accounts.get(recipient.substituteId).toPromise();
@@ -28338,11 +28398,11 @@ let DocumentTraceComponent = class DocumentTraceComponent {
28338
28398
  this._cd = _cd;
28339
28399
  this._fb = _fb;
28340
28400
  this.search = this._fb.control(null);
28341
- this.diagramConstraints = DiagramConstraints.Default | DiagramConstraints.Bridging |
28342
- DiagramConstraints.LineRouting |
28343
- DiagramConstraints.Pan |
28344
- DiagramConstraints.Zoom;
28345
- this.diagramTool = DiagramTools.SingleSelect;
28401
+ this.diagramConstraints = DiagramConstraints$1.Default | DiagramConstraints$1.Bridging |
28402
+ DiagramConstraints$1.LineRouting |
28403
+ DiagramConstraints$1.Pan |
28404
+ DiagramConstraints$1.Zoom;
28405
+ this.diagramTool = DiagramTools$1.SingleSelect;
28346
28406
  this.layout = {
28347
28407
  type: 'ComplexHierarchicalTree',
28348
28408
  connectionPointOrigin: ConnectionPointOrigin.DifferentPoint,
@@ -28361,7 +28421,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
28361
28421
  this._accentColor = this._session.getAccent(800);
28362
28422
  this._primeryColor = this._session.getPrimery();
28363
28423
  this.selectedItems = {
28364
- constraints: SelectorConstraints.UserHandle,
28424
+ constraints: SelectorConstraints$1.UserHandle,
28365
28425
  userHandles: [
28366
28426
  {
28367
28427
  name: 'info',
@@ -28385,13 +28445,13 @@ let DocumentTraceComponent = class DocumentTraceComponent {
28385
28445
  this.nodeDefaults = (node) => {
28386
28446
  const { indicator, virtual } = node.addInfo || {};
28387
28447
  if (indicator) {
28388
- node.constraints = NodeConstraints.PointerEvents | NodeConstraints.Tooltip,
28448
+ node.constraints = NodeConstraints$1.PointerEvents | NodeConstraints$1.Tooltip,
28389
28449
  node.style.strokeWidth = 0,
28390
28450
  node.width = node.height = 15;
28391
28451
  }
28392
28452
  else if (node.id !== 'version') {
28393
- node.constraints = NodeConstraints.InConnect | NodeConstraints.OutConnect |
28394
- NodeConstraints.PointerEvents | NodeConstraints.Select;
28453
+ node.constraints = NodeConstraints$1.InConnect | NodeConstraints$1.OutConnect |
28454
+ NodeConstraints$1.PointerEvents | NodeConstraints$1.Select;
28395
28455
  this._decorateNode(node);
28396
28456
  node.ports = getPorts();
28397
28457
  }
@@ -28399,7 +28459,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
28399
28459
  };
28400
28460
  this.connDefaults = (connector) => {
28401
28461
  const { virtual } = connector.addInfo || {};
28402
- connector.constraints = ConnectorConstraints.ReadOnly & ~ConnectorConstraints.Select;
28462
+ connector.constraints = ConnectorConstraints$1.ReadOnly & ~ConnectorConstraints$1.Select;
28403
28463
  this._decorateConnector(connector);
28404
28464
  };
28405
28465
  }
@@ -28453,7 +28513,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
28453
28513
  this._timeline();
28454
28514
  this.mode = 'diagram';
28455
28515
  this._cd.detectChanges();
28456
- this.diagram = new Diagram({
28516
+ this.diagram = new Diagram$1({
28457
28517
  width: '100%', height: '100%',
28458
28518
  snapSettings: this.snapSettings,
28459
28519
  layout: this.layout,
@@ -28609,7 +28669,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
28609
28669
  fontSize: 50,
28610
28670
  opacity: .1
28611
28671
  },
28612
- constraints: NodeConstraints.ReadOnly
28672
+ constraints: NodeConstraints$1.ReadOnly
28613
28673
  };
28614
28674
  this.diagram.addLayer({
28615
28675
  id: 'version',
@@ -28672,12 +28732,12 @@ let DocumentTraceComponent = class DocumentTraceComponent {
28672
28732
  this.diagram.dataBind();
28673
28733
  }
28674
28734
  pan() {
28675
- this.diagram.constraints = this.diagram.constraints | DiagramConstraints.Pan;
28676
- this.diagram.tool = DiagramTools.ZoomPan;
28735
+ this.diagram.constraints = this.diagram.constraints | DiagramConstraints$1.Pan;
28736
+ this.diagram.tool = DiagramTools$1.ZoomPan;
28677
28737
  }
28678
28738
  cursor() {
28679
- this.diagram.constraints = this.diagram.constraints & ~DiagramConstraints.Pan;
28680
- this.diagram.tool = DiagramTools.SingleSelect;
28739
+ this.diagram.constraints = this.diagram.constraints & ~DiagramConstraints$1.Pan;
28740
+ this.diagram.tool = DiagramTools$1.SingleSelect;
28681
28741
  }
28682
28742
  _highlight(ids) {
28683
28743
  for (let i = 0; i < ids.length; i++) {
@@ -29569,6 +29629,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
29569
29629
 
29570
29630
  const SYSTEM_COMPONENTS = [RoleNodeComponent, ManageCubeIndexUtility, PermissionsUtility, PositionsComponent, ProfilerComponent,
29571
29631
  PatternsComponent, SystemDiffComponent, DocumentTraceComponent];
29632
+ /** administrative utilities */
29572
29633
  class SystemModule {
29573
29634
  static forChild() {
29574
29635
  registerComponents(SYSTEM_COMPONENTS);
@@ -29824,5 +29885,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
29824
29885
  * Generated bundle index. Do not edit.
29825
29886
  */
29826
29887
 
29827
- 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 };
29888
+ 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 };
29828
29889
  //# sourceMappingURL=bizdoc-core.mjs.map