@bizdoc/core 2.3.36 → 2.3.39

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.
@@ -141,7 +141,7 @@ import * as i3$4 from '@syncfusion/ej2-angular-inputs';
141
141
  import { SignatureModule } from '@syncfusion/ej2-angular-inputs';
142
142
  import { LinearGaugeModule, AnnotationsService, GaugeTooltipService } from '@syncfusion/ej2-angular-lineargauge';
143
143
  import * as i11$2 from '@syncfusion/ej2-angular-charts';
144
- import { ChartModule, AccumulationChartModule, SparklineModule, 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, SplineRangeAreaSeriesService, AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService, AreaSeries, LineSeries, DateTime, RangeTooltip, RangeNavigator, SparklineTooltip, Sparkline, PieSeries, PyramidSeries, FunnelSeries, AccumulationDataLabel, AccumulationTooltip, AccumulationAnnotation, AccumulationLegend, AccumulationSelection, AccumulationChart as AccumulationChart$1, Category, Tooltip as Tooltip$1, Legend, Selection, Zoom, Crosshair, DataLabel, BarSeries, BubbleSeries, ColumnSeries, PolarSeries, RadarSeries, SplineSeries, SplineAreaSeries, ScatterSeries, StackingStepAreaSeries, StackingLineSeries, StackingAreaSeries, StackingColumnSeries, StackingBarSeries, StepAreaSeries, StepLineSeries, ChartAnnotation, Chart as Chart$1, ChartComponent } from '@syncfusion/ej2-angular-charts';
144
+ import { ChartModule, AccumulationChartModule, SparklineModule, 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, SplineRangeAreaSeriesService, AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService, AreaSeries, LineSeries, DateTime, RangeTooltip, RangeNavigator, SparklineTooltip, Sparkline, PieSeries, PyramidSeries, FunnelSeries, AccumulationDataLabel, AccumulationTooltip, AccumulationAnnotation, AccumulationLegend, AccumulationSelection, AccumulationChart as AccumulationChart$1, StripLine, BoxAndWhiskerSeries, Category, Tooltip as Tooltip$1, Legend, Selection, Zoom, Crosshair, DataLabel, BarSeries, BubbleSeries, ColumnSeries, PolarSeries, RadarSeries, SplineSeries, SplineAreaSeries, ScatterSeries, StackingStepAreaSeries, StackingLineSeries, StackingAreaSeries, StackingColumnSeries, StackingBarSeries, StepAreaSeries, StepLineSeries, ChartAnnotation, Chart as Chart$1, ChartComponent } from '@syncfusion/ej2-angular-charts';
145
145
  import * as i8$3 from '@syncfusion/ej2-angular-grids';
146
146
  import { GridModule, PagerModule, ExcelExportService, AggregateService, FreezeService, GroupService, PageService, ResizeService, SortService, SelectionService as SelectionService$1, ExcelExport, Sort, Group, Page, Freeze, Selection as Selection$1, Aggregate, Grid as Grid$1, GridComponent } from '@syncfusion/ej2-angular-grids';
147
147
  import { Annotations, GaugeTooltip, Legend as Legend$1, CircularGauge, CircularGaugeModule, AnnotationsService as AnnotationsService$1, GaugeTooltipService as GaugeTooltipService$1, LegendService as LegendService$1 } from '@syncfusion/ej2-angular-circulargauge';
@@ -13730,15 +13730,18 @@ class ReportViewerComponent {
13730
13730
  /** */
13731
13731
  execute() {
13732
13732
  this.progress = 0;
13733
- return firstValueFrom(this._http.post(`/api/report/${encodeURIComponent(this.report.name)}`, this.args).
13734
- pipe(tap({
13733
+ return new Promise((resolve, reject) => this._http.post(`/api/report/${encodeURIComponent(this.report.name)}`, this.args).
13734
+ subscribe({
13735
13735
  next: r => {
13736
13736
  this._instance.onBind(r, this.args);
13737
13737
  this._data = r;
13738
- this.progress = -1;
13739
- }, error: () => this._sb.error(),
13738
+ resolve();
13739
+ }, error: () => {
13740
+ this._sb.error();
13741
+ reject();
13742
+ },
13740
13743
  complete: () => this.progress = -1
13741
- })));
13744
+ }));
13742
13745
  }
13743
13746
  explore(item) {
13744
13747
  const args = {};
@@ -13942,7 +13945,7 @@ class ReportPaneComponent {
13942
13945
  }, () => this._sb.error());
13943
13946
  }
13944
13947
  /**
13945
- * Alt-f
13948
+ * Alt-q
13946
13949
  * @param event
13947
13950
  */
13948
13951
  handleKeydown(event) {
@@ -14759,13 +14762,14 @@ class UtilityRef {
14759
14762
  /** utility-wrapper component*/
14760
14763
  class UtilityPaneComponent {
14761
14764
  /** ctor */
14762
- constructor(_session, _pane, _http, _sb, _messaging, _cf, _injector) {
14765
+ constructor(_session, _pane, _http, _sb, _messaging, _cf, _vc, _injector) {
14763
14766
  this._session = _session;
14764
14767
  this._pane = _pane;
14765
14768
  this._http = _http;
14766
14769
  this._sb = _sb;
14767
14770
  this._messaging = _messaging;
14768
14771
  this._cf = _cf;
14772
+ this._vc = _vc;
14769
14773
  this._injector = _injector;
14770
14774
  }
14771
14775
  ngOnInit() {
@@ -14774,28 +14778,25 @@ class UtilityPaneComponent {
14774
14778
  this._utility = this._session.profile.utilities.find(u => u.name === id);
14775
14779
  this._pane.title = this._utility.title;
14776
14780
  const comp = this._cf.component(this._utility.template);
14777
- this.vc.clear();
14781
+ this._vc.clear();
14778
14782
  const uRef = new UtilityRef(this._utility, this._messaging, this._sb, this._http);
14779
14783
  const injector = Injector.create({
14780
14784
  providers: [{
14781
14785
  provide: UtilityRef, useValue: uRef
14782
14786
  }], parent: this._injector
14783
14787
  });
14784
- this.vc.createComponent(comp, { injector });
14788
+ this._vc.createComponent(comp, { injector });
14785
14789
  });
14786
14790
  }
14787
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UtilityPaneComponent, deps: [{ token: SessionService }, { token: PaneRef }, { token: i1.HttpClient }, { token: PromptService }, { token: HubService }, { token: BizDocComponentFactoryResolver }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
14788
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: UtilityPaneComponent, selector: "ng-component", viewQueries: [{ propertyName: "vc", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: '<ng-container #container></ng-container>', isInline: true }); }
14791
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UtilityPaneComponent, deps: [{ token: SessionService }, { token: PaneRef }, { token: i1.HttpClient }, { token: PromptService }, { token: HubService }, { token: BizDocComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
14792
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: UtilityPaneComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true }); }
14789
14793
  }
14790
14794
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UtilityPaneComponent, decorators: [{
14791
14795
  type: Component,
14792
14796
  args: [{
14793
- template: '<ng-container #container></ng-container>'
14797
+ template: ''
14794
14798
  }]
14795
- }], ctorParameters: () => [{ type: SessionService }, { type: PaneRef }, { type: i1.HttpClient }, { type: PromptService }, { type: HubService }, { type: BizDocComponentFactoryResolver }, { type: i0.Injector }], propDecorators: { vc: [{
14796
- type: ViewChild,
14797
- args: ['container', { static: true, read: ViewContainerRef }]
14798
- }] } });
14799
+ }], ctorParameters: () => [{ type: SessionService }, { type: PaneRef }, { type: i1.HttpClient }, { type: PromptService }, { type: HubService }, { type: BizDocComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: i0.Injector }] });
14799
14800
 
14800
14801
  const START_NODE = 'start';
14801
14802
  const You = 'you';
@@ -22017,7 +22018,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
22017
22018
  RangeNavigator.Inject(AreaSeries, LineSeries, DateTime, RangeTooltip);
22018
22019
  Sparkline.Inject(SparklineTooltip);
22019
22020
  AccumulationChart$1.Inject(PieSeries, PyramidSeries, FunnelSeries, AccumulationDataLabel, AccumulationTooltip, AccumulationAnnotation, AccumulationLegend, AccumulationSelection);
22020
- Chart$1.Inject(Category, DateTime, Tooltip$1, Legend, Selection, Zoom, Crosshair, DataLabel, BarSeries, AreaSeries, BubbleSeries, ColumnSeries, LineSeries, PolarSeries, RadarSeries, SplineSeries, SplineAreaSeries, ScatterSeries, StackingStepAreaSeries, StackingLineSeries, StackingAreaSeries, StackingColumnSeries, StackingBarSeries, StepAreaSeries, StepLineSeries, ChartAnnotation);
22021
+ Chart$1.Inject(StripLine /*, Trendlines*/, BoxAndWhiskerSeries, Category, DateTime, Tooltip$1, Legend, Selection, Zoom, Crosshair, DataLabel, BarSeries, AreaSeries, BubbleSeries, ColumnSeries, LineSeries, PolarSeries, RadarSeries, SplineSeries, SplineAreaSeries, ScatterSeries, StackingStepAreaSeries, StackingLineSeries, StackingAreaSeries, StackingColumnSeries, StackingBarSeries, StepAreaSeries, StepLineSeries, ChartAnnotation);
22021
22022
 
22022
22023
  class SyncfusionDiagramModule {
22023
22024
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: SyncfusionDiagramModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -29494,71 +29495,87 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
29494
29495
  }], ctorParameters: () => [{ type: i1$2.FormBuilder }, { type: FormRef }] });
29495
29496
 
29496
29497
  let RolesPerformanceComponent = class RolesPerformanceComponent {
29497
- constructor(_elementRef, _router, _accounts, _session, _translate, _reportRef) {
29498
+ constructor(_elementRef, _router, _accounts, _session, _translate) {
29498
29499
  this._elementRef = _elementRef;
29499
29500
  this._router = _router;
29500
29501
  this._accounts = _accounts;
29501
29502
  this._session = _session;
29502
29503
  this._translate = _translate;
29503
- this._reportRef = _reportRef;
29504
- this.maxStd = 0;
29505
- this.maxDuration = 0;
29506
- this.actions = {};
29507
29504
  this.legendSettings = {
29508
29505
  position: 'Left',
29506
+ isInversed: this._session.inverse,
29507
+ //toggleVisibility: false,
29508
+ enablePages: true,
29509
29509
  enableHighlight: true,
29510
29510
  };
29511
29511
  this.tooltip = {
29512
29512
  enable: true,
29513
+ textStyle: {
29514
+ fontFamily: FONT_FAMILY
29515
+ }
29516
+ };
29517
+ this.titleStyle = {
29518
+ fontFamily: FONT_FAMILY
29513
29519
  };
29514
- this.primaryXAxis = { valueType: 'DateTime' };
29520
+ this.primaryXAxis = { valueType: 'Double' };
29515
29521
  this.primaryYAxis = {};
29516
- const { cube: name } = _reportRef.options;
29517
- this._cube = name ?
29518
- _session.profile.cubes.find(c => c.name === name) :
29519
- _session.profile.cubes[0];
29522
+ this.actions = {};
29523
+ this._destroy = new Subject();
29520
29524
  _session.profile.actions.forEach(a => this.actions[a.name] = a);
29525
+ _session.themeChange.pipe(takeUntil$1(this._destroy), startWith$1(_session.theme)).subscribe(t => {
29526
+ this.theme = t.dark ? 'Material3Dark' : 'Material3';
29527
+ this.chart && this._draw();
29528
+ });
29521
29529
  }
29522
- ;
29523
- onBind(data, args) {
29530
+ onBind(data) {
29531
+ this.chart?.destroy();
29524
29532
  if (!data.length)
29525
29533
  return;
29526
- let accumStd = 0, countStd = 0, accumDuration = 0;
29534
+ let accumStd = 0, countStd = 0, accumDuration = 0, maxStd = 0, maxDuration = 0, standards = [], map = {};
29527
29535
  data.forEach(e => {
29528
- if (e.standardTime) {
29529
- if (e.standardTime > this.maxStd)
29530
- this.maxStd = e.standardTime;
29531
- countStd++;
29532
- accumStd += e.standardTime;
29533
- }
29534
- if (e.duration > this.maxDuration)
29535
- this.maxDuration = e.duration;
29536
- accumDuration += e.duration;
29537
- e.yDate = new Date(e.date).valueOf();
29536
+ let accumStd1 = 0, countStd1 = 0, accumDuration1 = 0;
29537
+ e.items.forEach(e => {
29538
+ if (e.standardTime) {
29539
+ if (e.standardTime > maxStd)
29540
+ maxStd = e.standardTime;
29541
+ countStd++;
29542
+ countStd1++;
29543
+ accumStd += e.standardTime;
29544
+ accumStd1 += e.standardTime;
29545
+ standards.push(e);
29546
+ }
29547
+ if (e.duration > maxDuration)
29548
+ maxDuration = e.duration;
29549
+ accumDuration += e.duration;
29550
+ accumDuration1 += e.duration;
29551
+ });
29552
+ map[e.userId] = {
29553
+ items: e.items,
29554
+ stdAvg: countStd1 ? accumStd1 / countStd1 : 0,
29555
+ durationAvg: accumDuration1 / data.length,
29556
+ };
29538
29557
  });
29539
- let stdAvg = accumStd / countStd, durationAvg = accumDuration / data.length;
29540
- const ids = data.distinct(e => e.userId);
29541
- this._accounts.getAll([...ids]).
29558
+ this.stdAvg = countStd ? accumStd / countStd : 0,
29559
+ this.durationAvg = accumDuration / data.length;
29560
+ this._accounts.getAll(data.map(e => e.userId)).
29542
29561
  subscribe(users => {
29543
- const series = [{
29562
+ this.series = [{
29544
29563
  name: this._translate.get('Standard'),
29545
- xName: 'yDate',
29564
+ xName: 'date',
29546
29565
  yName: 'standardTime',
29547
29566
  type: 'Polar',
29548
29567
  drawType: 'Line',
29549
- //opacity: .5,
29550
29568
  marker: {
29551
29569
  visible: true,
29552
29570
  shape: 'Triangle',
29553
29571
  width: 5,
29554
29572
  height: 5
29555
29573
  },
29556
- dataSource: data.filter(e => e.standardTime).
29574
+ dataSource: standards.
29557
29575
  sort((e1, e2) => e1.standardTime < e2.standardTime ? -1 : 1),
29558
29576
  },
29559
29577
  ...users.map(u => ({
29560
- dataSource: data.filter(e => e.userId === u.id).
29561
- sort((e1, e2) => e1.duration < e2.duration ? -1 : 1),
29578
+ dataSource: map[u.id].items,
29562
29579
  name: u.name,
29563
29580
  type: 'Polar',
29564
29581
  drawType: 'Line',
@@ -29567,45 +29584,52 @@ let RolesPerformanceComponent = class RolesPerformanceComponent {
29567
29584
  width: 5, height: 5,
29568
29585
  shape: 'Pentagon',
29569
29586
  },
29570
- xName: 'yDate',
29587
+ xName: 'date',
29571
29588
  yName: 'duration',
29572
29589
  }))];
29573
- new Chart({
29574
- title: this._translate.get('AverageValue', dayjs.duration(durationAvg, 'seconds').format('DD:HH:ss')),
29575
- titleStyle: { fontFamily: FONT_FAMILY },
29576
- subTitle: stdAvg ?
29577
- this._translate.get('StandardValue', dayjs.duration(stdAvg, 'seconds').format('DD:HH:ss')) : null,
29578
- subTitleStyle: { fontFamily: FONT_FAMILY },
29579
- // primaryXAxis: { valueType: 'Double' },
29580
- primaryYAxis: {
29581
- //minimum: 0, maximum: Math.max(durationAvg, stdAvg)
29582
- //interval: 60 * 5,
29583
- },
29584
- series,
29585
- // pointRender: this.pointRender.bind(this),
29586
- tooltip: this.tooltip,
29587
- tooltipRender: this.tooltipRender.bind(this),
29588
- legendSettings: this.legendSettings,
29589
- axisLabelRender: this.labelRender.bind(this),
29590
- palettes: [this._session.getPrimery(), ...this._session.accentPalette],
29591
- enableRtl: this._session.inverse,
29592
- height: '100%',
29593
- highlightMode: 'Cluster',
29594
- pointClick: this.explore.bind(this)
29595
- }, this._elementRef.nativeElement);
29590
+ this._draw();
29596
29591
  });
29597
29592
  }
29598
- tooltipRender(evt) {
29599
- evt.text = dayjs.duration(evt.data.pointY, 's').format('DD:HH:ss');
29593
+ _draw() {
29594
+ this.chart?.destroy();
29595
+ const colors = this._session.accentPalette;
29596
+ let palettes = [this._session.getPrimery(),
29597
+ ...colors
29598
+ ];
29599
+ while (this.series.length < palettes.length) {
29600
+ palettes.push(...colors);
29601
+ }
29602
+ this.chart = new Chart({
29603
+ theme: this.theme,
29604
+ selectionMode: 'Series',
29605
+ title: this._translate.get('AverageValue', dayjs.duration(this.durationAvg, 'seconds').format('DD:HH:mm')),
29606
+ titleStyle: this.titleStyle,
29607
+ subTitle: this.stdAvg ?
29608
+ this._translate.get('StandardValue', dayjs.duration(this.stdAvg, 'seconds').format('DD:HH:mm')) : null,
29609
+ subTitleStyle: this.titleStyle,
29610
+ series: this.series,
29611
+ tooltip: this.tooltip,
29612
+ tooltipRender: this.tooltipRender.bind(this),
29613
+ legendSettings: this.legendSettings,
29614
+ legendRender: this.legendRender.bind(this),
29615
+ axisLabelRender: this.labelRender.bind(this),
29616
+ palettes,
29617
+ enableRtl: this._session.inverse,
29618
+ height: '100%',
29619
+ highlightMode: 'Series',
29620
+ pointClick: this.explore.bind(this)
29621
+ }, this._elementRef.nativeElement);
29600
29622
  }
29601
- pointRender(evt) {
29602
- // const action = this.actions[(evt.point.series[evt.point.index] as Model).actionId];
29603
- // if (action.color) evt.fill = action.color;
29623
+ legendRender(evt) {
29624
+ //evt.text
29625
+ }
29626
+ tooltipRender(evt) {
29627
+ evt.text = dayjs.duration(evt.data.pointY, 's').humanize(); // 'DD:HH:ss'
29604
29628
  }
29605
29629
  labelRender(evt) {
29606
29630
  switch (evt.axis.name) {
29607
29631
  case 'primaryYAxis':
29608
- evt.text = dayjs.duration(evt.value, 's').format('DD:HH:ss');
29632
+ evt.text = dayjs.duration(evt.value, 's').format('DD:HH:mm');
29609
29633
  break;
29610
29634
  case 'primaryXAxis':
29611
29635
  evt.text = dayjs(evt.value).format('MMM YYYY');
@@ -29613,14 +29637,17 @@ let RolesPerformanceComponent = class RolesPerformanceComponent {
29613
29637
  }
29614
29638
  }
29615
29639
  explore(evt) {
29616
- const { point: { x, yValue }, series: { name: title } } = evt;
29617
- //const { cube } = this._reportRef.options;
29618
- // this._router.navigate(PerformanceExplroeCompinent,
29619
- // {
29620
- // queryParams: axes,
29621
- // });
29640
+ const { pointIndex, seriesIndex } = evt;
29641
+ if (seriesIndex === 0)
29642
+ return;
29643
+ const { documentId } = this.chart.series[seriesIndex].dataSource[pointIndex];
29644
+ this._router.navigate(['mailbox', 'd', documentId.encodeId()]);
29645
+ }
29646
+ ngOnDestroy() {
29647
+ this.chart?.destroy();
29648
+ this._destroy.next();
29622
29649
  }
29623
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RolesPerformanceComponent, deps: [{ token: i0.ElementRef }, { token: RouterImpl }, { token: AccountService }, { token: SessionService }, { token: TranslateService }, { token: ReportRef }], target: i0.ɵɵFactoryTarget.Component }); }
29650
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RolesPerformanceComponent, deps: [{ token: i0.ElementRef }, { token: RouterImpl }, { token: AccountService }, { token: SessionService }, { token: TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
29624
29651
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: RolesPerformanceComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true, styles: [":host{flex:1}\n"] }); }
29625
29652
  };
29626
29653
  RolesPerformanceComponent = __decorate([
@@ -29631,7 +29658,7 @@ RolesPerformanceComponent = __decorate([
29631
29658
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RolesPerformanceComponent, decorators: [{
29632
29659
  type: Component,
29633
29660
  args: [{ template: '', styles: [":host{flex:1}\n"] }]
29634
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: RouterImpl }, { type: AccountService }, { type: SessionService }, { type: TranslateService }, { type: ReportRef }] });
29661
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: RouterImpl }, { type: AccountService }, { type: SessionService }, { type: TranslateService }] });
29635
29662
 
29636
29663
  var DocumentStateWidgetComponent_1;
29637
29664
  let DocumentStateWidgetComponent = class DocumentStateWidgetComponent {
@@ -29927,8 +29954,172 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
29927
29954
  }]
29928
29955
  }] });
29929
29956
 
29957
+ let RolesPerformanceComponent1 = class RolesPerformanceComponent1 {
29958
+ constructor(_elementRef, _accounts, _session, _translate) {
29959
+ this._elementRef = _elementRef;
29960
+ this._accounts = _accounts;
29961
+ this._session = _session;
29962
+ this._translate = _translate;
29963
+ this.titleStyle = {
29964
+ fontFamily: FONT_FAMILY
29965
+ };
29966
+ this._destroy = new Subject();
29967
+ _session.themeChange.pipe(takeUntil$1(this._destroy), startWith$1(_session.theme)).subscribe(t => {
29968
+ //this.theme = t.dark ? 'Material3Dark' : 'Material3';
29969
+ //this.gauge && this._draw();
29970
+ this.chart && this._draw();
29971
+ });
29972
+ }
29973
+ onBind(data) {
29974
+ //this.gauge?.destroy();
29975
+ this.chart?.destroy();
29976
+ if (!data.length)
29977
+ return;
29978
+ let accumStd = 0, countStd = 0, accumDuration = 0;
29979
+ this.maxStd = 0, this.minStd = 0, this.maxDuration = 0, this.minDuration = data[0].durationLow;
29980
+ data.forEach(e => {
29981
+ if (e.standardAvg) {
29982
+ if (e.standardHigh > this.maxStd)
29983
+ this.maxStd = e.standardHigh;
29984
+ if (e.standardLow < this.minStd || this.minStd === 0)
29985
+ this.minStd = e.standardLow;
29986
+ countStd++;
29987
+ accumStd += e.standardAvg;
29988
+ }
29989
+ accumDuration += e.durationAvg;
29990
+ if (e.durationHigh > this.maxDuration)
29991
+ this.maxDuration = e.durationHigh;
29992
+ if (e.durationLow < this.minDuration)
29993
+ this.minDuration = e.durationLow;
29994
+ });
29995
+ this.stdAvg = countStd ? accumStd / countStd : 0,
29996
+ this.durationAvg = accumDuration / data.length;
29997
+ this._accounts.getAll(data.map(e => e.userId)).
29998
+ subscribe(users => {
29999
+ this.data = data.map((d, i) => {
30000
+ const durationDev = d.durationAvg / this.durationAvg, standardDev = this.stdAvg ? d.durationAvg / this.stdAvg : 0;
30001
+ return ({
30002
+ durationDev,
30003
+ standardDev,
30004
+ ...d,
30005
+ name: users[i].name,
30006
+ values: [d.standardHigh, d.durationHigh, d.durationAvg, d.durationLow, d.standardLow]
30007
+ });
30008
+ });
30009
+ this._draw();
30010
+ });
30011
+ }
30012
+ _draw() {
30013
+ this.chart?.destroy();
30014
+ //const colors = this._session.accentPalette;
30015
+ //this.gauge?.destroy();
30016
+ //this.gauge = new CircularGauge({
30017
+ // theme: this.theme,
30018
+ // title: this._translate.get('AverageValue', dayjs.duration(this.durationAvg, 'seconds').format('DD:HH:mm')),
30019
+ // titleStyle: this.titleStyle,
30020
+ // tooltip: this.tooltip,
30021
+ // axes: [{
30022
+ // startAngle: 270,
30023
+ // endAngle: 90,
30024
+ // pointers: [{
30025
+ // text: this._translate.get('Standard'),
30026
+ // color: this._session.getPrimery(),
30027
+ // value: this.stdAvg
30028
+ // }],
30029
+ // ranges: this.data.map((e, i) => ({
30030
+ // legendText: e.name,
30031
+ // radius: `${100 - i * 5}%`,
30032
+ // startWidth: 3,
30033
+ // endWidth: 3,
30034
+ // start: this.minDuration,
30035
+ // end: this.stdAvg ? Math.floor(e.durationAvg / this.stdAvg) : Math.floor(e.durationAvg / this.durationAvg),
30036
+ // color: colors[Math.floor((i + 9) / i)]
30037
+ // } as RangeModel))
30038
+ // }],
30039
+ // tooltipRender: this.tooltipRender.bind(this),
30040
+ // legendSettings: this.legendSettings,
30041
+ // enableRtl: this._session.inverse,
30042
+ // height: '100%',
30043
+ //},
30044
+ // this._elementRef.nativeElement);
30045
+ this.chart = new Chart$1({
30046
+ primaryYAxis: {
30047
+ stripLines: [{
30048
+ text: this._translate.get('Standard'),
30049
+ textStyle: {
30050
+ fontFamily: FONT_FAMILY,
30051
+ },
30052
+ opacity: .8,
30053
+ start: this.minStd,
30054
+ end: this.maxStd,
30055
+ }]
30056
+ },
30057
+ primaryXAxis: {
30058
+ valueType: 'Category'
30059
+ },
30060
+ tooltip: { enable: true },
30061
+ tooltipRender: this.tooltipRender.bind(this),
30062
+ series: [{
30063
+ type: 'BoxAndWhisker',
30064
+ dataSource: this.data,
30065
+ boxPlotMode: 'Normal',
30066
+ enableTooltip: true,
30067
+ xName: 'name',
30068
+ yName: 'values'
30069
+ }, {
30070
+ type: 'Spline',
30071
+ dataSource: this.data,
30072
+ xName: 'name',
30073
+ width: 3,
30074
+ dashArray: '3 2',
30075
+ yName: 'durationAvg',
30076
+ }],
30077
+ height: '100%',
30078
+ axisLabelRender: this.axisLabelRender.bind(this),
30079
+ palettes: [
30080
+ this._session.getAccent(), this._session.getPrimery()
30081
+ ]
30082
+ }, this._elementRef.nativeElement);
30083
+ }
30084
+ axisLabelRender(evt) {
30085
+ if (evt.axis.name === 'primaryYAxis')
30086
+ evt.text = dayjs.duration(evt.value, 's').humanize(); // 'DD:HH:mm'
30087
+ }
30088
+ tooltipRender(evt) {
30089
+ //evt.content = dayjs.duration(evt.range.end, 's').humanize();// 'DD:HH:mm'
30090
+ if (evt.data.seriesIndex === 0) {
30091
+ const [standardHigh, durationHigh, durationAvg, durationLow, standardLow] = evt.point.y;
30092
+ evt.text = dayjs.duration(durationHigh, 's').format('DD:HH:mm');
30093
+ if (standardHigh) {
30094
+ const deviation = Math.round(this.data[evt.data.pointIndex].standardDev);
30095
+ evt.text += ` ${deviation}%`;
30096
+ }
30097
+ }
30098
+ else {
30099
+ evt.headerText = this._translate.get('Average');
30100
+ evt.text = dayjs.duration(evt.data.pointY, 's').format('DD:HH:mm');
30101
+ }
30102
+ }
30103
+ ngOnDestroy() {
30104
+ //this.gauge?.destroy();
30105
+ this.chart?.destroy();
30106
+ this._destroy.next();
30107
+ }
30108
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RolesPerformanceComponent1, deps: [{ token: i0.ElementRef }, { token: AccountService }, { token: SessionService }, { token: TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
30109
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: RolesPerformanceComponent1, selector: "ng-component", ngImport: i0, template: '', isInline: true, styles: [":host{flex:1}\n"] }); }
30110
+ };
30111
+ RolesPerformanceComponent1 = __decorate([
30112
+ BizDoc({
30113
+ selector: 'bizdoc-role-performance1'
30114
+ })
30115
+ ], RolesPerformanceComponent1);
30116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RolesPerformanceComponent1, decorators: [{
30117
+ type: Component,
30118
+ args: [{ template: '', styles: [":host{flex:1}\n"] }]
30119
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: AccountService }, { type: SessionService }, { type: TranslateService }] });
30120
+
29930
30121
  /** configuration componenets */
29931
- const CORE_COMPONENTS = [RolesPerformanceComponent, CubePerformanceWidget, CubeParallelViewComponent, CubeExploreViewComponent, CubeChartViewComponent, CubeDocumentSumComponent, CubeDocumentMatrixComponent, CubeDocumentViewComponent, CubePivotViewComponent, TimelineViewComponent,
30122
+ const CORE_COMPONENTS = [RolesPerformanceComponent, RolesPerformanceComponent1, CubePerformanceWidget, CubeParallelViewComponent, CubeExploreViewComponent, CubeChartViewComponent, CubeDocumentSumComponent, CubeDocumentMatrixComponent, CubeDocumentViewComponent, CubePivotViewComponent, TimelineViewComponent,
29932
30123
  SubstitutionComponent, MoveToActionComponent, AssignActionComponent, ReturnActionComponent, ExploreDocumentComponent,
29933
30124
  ActionsWidget, CubeAnalysisWidget, CubeDocumentsWidget, RecentsWidget, PersonalActivityWidget,
29934
30125
  CompareGroupsWidget, PeersPerformanceWidget, PendingResultsWidget, PersonalScoreWidget, CubeWidgetFilterComponent,
@@ -29968,7 +30159,7 @@ class SharedModule {
29968
30159
  }
29969
30160
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
29970
30161
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.1", ngImport: i0, type: SharedModule, declarations: [LocalizedStringPipe, HelpTipComponent, BoxFormComponent, BoxFormRowComponent, BoxFormControlComponent,
29971
- RolesPerformanceComponent,
30162
+ RolesPerformanceComponent, RolesPerformanceComponent1,
29972
30163
  CubeUsageComponent,
29973
30164
  CubeDocumentsComponent,
29974
30165
  DateFormatPipe, CalendarPipe, DifferencePipe, DurationPipe, TimeAgoPipe, ToNowPipe,
@@ -30148,7 +30339,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
30148
30339
  type: NgModule,
30149
30340
  args: [{
30150
30341
  declarations: [LocalizedStringPipe, HelpTipComponent, BoxFormComponent, BoxFormRowComponent, BoxFormControlComponent,
30151
- RolesPerformanceComponent,
30342
+ RolesPerformanceComponent, RolesPerformanceComponent1,
30152
30343
  CubeUsageComponent,
30153
30344
  CubeDocumentsComponent,
30154
30345
  DateFormatPipe, CalendarPipe, DifferencePipe, DurationPipe, TimeAgoPipe, ToNowPipe,
@@ -30872,7 +31063,8 @@ let SystemDiffComponent = class SystemDiffComponent {
30872
31063
  * @param index
30873
31064
  */
30874
31065
  compare(index) {
30875
- const { time: date1, file } = this.versions[index], version = this.versions.slice(index + 1).find(v => v.file === file);
31066
+ const { time: date1, file } = this.versions[index], version = this.versions.slice(index + 1).
31067
+ find(v => v.file === file);
30876
31068
  if (!version)
30877
31069
  return;
30878
31070
  const { time: date2 } = version;
@@ -31344,7 +31536,7 @@ let SystemDiffComponent = class SystemDiffComponent {
31344
31536
  this._destroy.complete();
31345
31537
  }
31346
31538
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: SystemDiffComponent, deps: [{ token: PromptService }, { token: UtilityRef }, { token: TranslateService }, { token: DatasourceService }, { token: AccountService }], target: i0.ɵɵFactoryTarget.Component }); }
31347
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: SystemDiffComponent, selector: "ng-component", viewQueries: [{ propertyName: "contents", first: true, predicate: ["contents"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\n <button mat-icon-button (click)=\"properties.toggle()\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\n <span class=\"divider\"></span>\n</mat-toolbar>\n<mat-sidenav-container autosize class=\"flex\">\n <mat-sidenav-content>\n <mat-progress-bar mode=\"buffer\" [value]=progress [bufferValue]=0 [style.visibility]=\"progress > 0 && progress < 100 ? 'visible':'hidden'\"></mat-progress-bar>\n <div [innerHTML]=\"html | sanitizeHtml\" (mouseleave)=\"focusOut()\" (mousemove)=\"focusIn($event)\" class=\"configuration-diff\" (click)=\"collapse($event)\" #contents></div>\n </mat-sidenav-content>\n <mat-sidenav mode=\"side\" opened #properties class=\"timeline\">\n @if (versions) {\n <mat-nav-list class=\"nav-list\">\n @for (v of versions; track v; let index = $index; let last = $last) {\n @if (!last) {\n <mat-list-item (click)=\"compare(index)\" [class.active]=\"v.time === activeDate\">\n <h3 matListItemTitle>\n {{(v.author || 'System') | userName | async }}\n </h3>\n <p class=\"time\" matListItemLine>\n {{v.time | amCalendar: null: CALENDAR_SPEC }}\n </p>\n </mat-list-item>\n }\n }\n </mat-nav-list>\n }\n </mat-sidenav>\n</mat-sidenav-container>\n", styles: [":host{flex:1 1 auto}.timeline{border:none;width:150px}.timeline .time{font-size:12px!important}:host ::ng-deep .mat-drawer-inner-container{overflow:auto}\n"], dependencies: [{ kind: "component", type: i7$2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i2$4.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i2$4.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2$4.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i2$4.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i6$4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i6$4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i6$4.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "component", type: i8$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: UserNamePipe, name: "userName" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
31539
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: SystemDiffComponent, selector: "ng-component", viewQueries: [{ propertyName: "contents", first: true, predicate: ["contents"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\n <button mat-icon-button (click)=\"properties.toggle()\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\n <span class=\"divider\"></span>\n</mat-toolbar>\n<mat-sidenav-container autosize class=\"flex\">\n <mat-sidenav-content>\n <mat-progress-bar mode=\"buffer\" [value]=progress [bufferValue]=0 [style.visibility]=\"progress > 0 && progress < 100 ? 'visible':'hidden'\"></mat-progress-bar>\n <div [innerHTML]=\"html | sanitizeHtml\" (mouseleave)=\"focusOut()\" (mousemove)=\"focusIn($event)\" class=\"configuration-diff\" (click)=\"collapse($event)\" #contents></div>\n </mat-sidenav-content>\n <mat-sidenav mode=\"side\" opened #properties class=\"timeline\">\n @if (versions) {\n <mat-nav-list class=\"nav-list\">\n @for (v of versions; track v; let index = $index; let last = $last) {\n @if (!last) {\n <mat-list-item (click)=\"compare(index)\" [class.active]=\"v.time === activeDate\">\n <h3 matListItemTitle>\n {{(v.author || 'System') | userName | async }}\n </h3>\n <p class=\"time\" matListItemLine>\n {{v.time | amCalendar: null: CALENDAR_SPEC }}\n </p>\n </mat-list-item>\n }\n }\n </mat-nav-list>\n }\n </mat-sidenav>\n</mat-sidenav-container>\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;height:100%}.timeline{border:none;width:150px}.timeline .time{font-size:12px!important}:host ::ng-deep .mat-drawer-inner-container{overflow:auto}\n"], dependencies: [{ kind: "component", type: i7$2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i2$4.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i2$4.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2$4.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i2$4.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i6$4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i6$4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i6$4.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "component", type: i8$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: UserNamePipe, name: "userName" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
31348
31540
  };
31349
31541
  SystemDiffComponent = __decorate([
31350
31542
  BizDoc({ selector: 'bizdoc-configuration-diff' })
@@ -31352,7 +31544,7 @@ SystemDiffComponent = __decorate([
31352
31544
  ], SystemDiffComponent);
31353
31545
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: SystemDiffComponent, decorators: [{
31354
31546
  type: Component,
31355
- args: [{ template: "<mat-toolbar>\n <button mat-icon-button (click)=\"properties.toggle()\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\n <span class=\"divider\"></span>\n</mat-toolbar>\n<mat-sidenav-container autosize class=\"flex\">\n <mat-sidenav-content>\n <mat-progress-bar mode=\"buffer\" [value]=progress [bufferValue]=0 [style.visibility]=\"progress > 0 && progress < 100 ? 'visible':'hidden'\"></mat-progress-bar>\n <div [innerHTML]=\"html | sanitizeHtml\" (mouseleave)=\"focusOut()\" (mousemove)=\"focusIn($event)\" class=\"configuration-diff\" (click)=\"collapse($event)\" #contents></div>\n </mat-sidenav-content>\n <mat-sidenav mode=\"side\" opened #properties class=\"timeline\">\n @if (versions) {\n <mat-nav-list class=\"nav-list\">\n @for (v of versions; track v; let index = $index; let last = $last) {\n @if (!last) {\n <mat-list-item (click)=\"compare(index)\" [class.active]=\"v.time === activeDate\">\n <h3 matListItemTitle>\n {{(v.author || 'System') | userName | async }}\n </h3>\n <p class=\"time\" matListItemLine>\n {{v.time | amCalendar: null: CALENDAR_SPEC }}\n </p>\n </mat-list-item>\n }\n }\n </mat-nav-list>\n }\n </mat-sidenav>\n</mat-sidenav-container>\n", styles: [":host{flex:1 1 auto}.timeline{border:none;width:150px}.timeline .time{font-size:12px!important}:host ::ng-deep .mat-drawer-inner-container{overflow:auto}\n"] }]
31547
+ args: [{ template: "<mat-toolbar>\n <button mat-icon-button (click)=\"properties.toggle()\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\n <span class=\"divider\"></span>\n</mat-toolbar>\n<mat-sidenav-container autosize class=\"flex\">\n <mat-sidenav-content>\n <mat-progress-bar mode=\"buffer\" [value]=progress [bufferValue]=0 [style.visibility]=\"progress > 0 && progress < 100 ? 'visible':'hidden'\"></mat-progress-bar>\n <div [innerHTML]=\"html | sanitizeHtml\" (mouseleave)=\"focusOut()\" (mousemove)=\"focusIn($event)\" class=\"configuration-diff\" (click)=\"collapse($event)\" #contents></div>\n </mat-sidenav-content>\n <mat-sidenav mode=\"side\" opened #properties class=\"timeline\">\n @if (versions) {\n <mat-nav-list class=\"nav-list\">\n @for (v of versions; track v; let index = $index; let last = $last) {\n @if (!last) {\n <mat-list-item (click)=\"compare(index)\" [class.active]=\"v.time === activeDate\">\n <h3 matListItemTitle>\n {{(v.author || 'System') | userName | async }}\n </h3>\n <p class=\"time\" matListItemLine>\n {{v.time | amCalendar: null: CALENDAR_SPEC }}\n </p>\n </mat-list-item>\n }\n }\n </mat-nav-list>\n }\n </mat-sidenav>\n</mat-sidenav-container>\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;height:100%}.timeline{border:none;width:150px}.timeline .time{font-size:12px!important}:host ::ng-deep .mat-drawer-inner-container{overflow:auto}\n"] }]
31356
31548
  }], ctorParameters: () => [{ type: PromptService }, { type: UtilityRef, decorators: [{
31357
31549
  type: Inject,
31358
31550
  args: [UtilityRef]
@@ -31829,7 +32021,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
31829
32021
  this._destroy.complete();
31830
32022
  }
31831
32023
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: DocumentTraceComponent, deps: [{ token: UtilityRef }, { token: SystemService }, { token: SessionService }, { token: PaneRef }, { token: PanesRouter }, { token: PromptService }, { token: TranslateService }, { token: Popup }, { token: GuideService }, { token: i0.ChangeDetectorRef }, { token: i1$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
31832
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: DocumentTraceComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" } }, viewQueries: [{ propertyName: "diagramElement", first: true, predicate: ["diagram"], descendants: true }, { propertyName: "filterArgs", first: true, predicate: ["args"], descendants: true }, { propertyName: "searchInput", first: true, predicate: ["search"], descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "rangeNavigator", first: true, predicate: RangeNavigator$1, descendants: true }], ngImport: i0, template: "@switch (mode) {\n<!-- diagram -->\n @case ('diagram') {\n<div class=\"column flex\">\n <mat-toolbar>\n <button mat-icon-button (click)=\"browse()\" [bizdocTooltip]=\"'Back' | translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon></button>\n |\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\n <span class=\"divider\"></span>\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\n </mat-toolbar>\n <div class=\"row flex\">\n <!-- timeline -->\n @if (timeline?.items.length > 1) {\n <div class=\"timeline\" data-help=\"timeline\">\n @for (date of timeline.items; track date; let last = $last) {\n <div class=\"item\"\n [class.active]=\"date.time === timeline.date\"\n (click)=\"highlightTime(date.time)\" matRipple>\n <div class=\"title\">\n @if (!last || !timeline.estimate) {\n @if (date.userId) {\n <span class=\"who\">\n {{date.userId | userName | async }}\n </span>\n }\n <br />\n <span class=\"time\">\n {{date.time | amDateFormat: 'MMM Do H:mm' }}\n </span>\n } @else {\n {{'Estimate' | translate}}\n }\n </div>\n <div class=\"indicator-container\">\n <div class=\"indicator\"></div>\n </div>\n </div>\n }\n </div>\n }\n <div class=\"flex\" #diagram dir=\"ltr\">\n </div>\n </div>\n</div>\n }\n<!-- browse -->\n @default {\n<div class=\"flex column fill\">\n <mat-toolbar class=\"row\">\n <span class=\"divider\"></span>\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\n </mat-toolbar>\n <mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\n <!-- table -->\n <mat-table class=\"flex\" [dataSource]=\"dataSource\" matSort>\n <!-- Number column -->\n <ng-container matColumnDef=\"number\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\n </ng-container>\n <!-- Subject column -->\n <ng-container matColumnDef=\"subject\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\n </ng-container>\n <!-- StateId column -->\n <ng-container matColumnDef=\"stateId\">\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\n </mat-cell>\n </ng-container>\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let item; columns: displayedColumns;\"\n (click)=\"open(item)\">\n </mat-row>\n </mat-table>\n <!-- range -->\n <ejs-rangenavigator valueType='DateTime' [value]=range labelFormat='MMM' background=\"transparent\"\n [theme]=\"theme\" labelIntersectAction='Hide' enableGrouping=\"false\"\n groupBy=\"Years\" intervalType='Months'\n (changed)='rangeChanged($event)'>\n <e-rangenavigator-series-collection>\n <e-rangenavigator-series [dataSource]='rangeData' [fill]=\"accent\" type='Area' xName='date' yName='count' width=2>\n </e-rangenavigator-series>\n </e-rangenavigator-series-collection>\n </ejs-rangenavigator>\n</div>\n }\n}\n<!-- args -->\n<ng-template #args>\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\n <mat-form-field>\n <input matInput type=\"search\" #search formControlName=\"search\" data-help=\"search\" [placeholder]=\"'Number'|translate\" />\n <mat-icon matSuffix class=\"mat-icon-rtl-mirror\">search</mat-icon>\n </mat-form-field>\n <mat-form-field>\n <bizdoc-select type=\"forms\" [placeholder]=\"'Form'|translate\" formControlName=\"formId\"></bizdoc-select>\n </mat-form-field>\n </form>\n</ng-template>\n<ng-template #estimate>\n {{'Estimate' | translate}}\n</ng-template>\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;flex-grow:1;height:100%}:host ::ng-deep .mat-mdc-row{cursor:pointer}form{margin:8px}\n"], dependencies: [{ kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$3.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i11$2.RangeNavigatorComponent, selector: "ejs-rangenavigator", inputs: ["allowIntervalData", "allowSnapping", "animationDuration", "background", "dataSource", "disableRangeSelector", "enableDeferredUpdate", "enableGrouping", "enablePersistence", "enableRtl", "groupBy", "height", "interval", "intervalType", "labelFormat", "labelIntersectAction", "labelPlacement", "labelPosition", "labelStyle", "locale", "logBase", "majorGridLines", "majorTickLines", "margin", "maximum", "minimum", "navigatorBorder", "navigatorStyleSettings", "periodSelectorSettings", "query", "secondaryLabelAlignment", "series", "skeleton", "skeletonType", "theme", "tickPosition", "tooltip", "useGroupingSeparator", "value", "valueType", "width", "xName", "yName"], outputs: ["beforePrint", "beforeResize", "changed", "labelRender", "load", "loaded", "resized", "selectorRender", "tooltipRender", "dataSourceChange"] }, { kind: "directive", type: i11$2.RangenavigatorSeriesDirective, selector: "e-rangenavigator-series-collection>e-rangenavigator-series", inputs: ["animation", "border", "dashArray", "dataSource", "fill", "opacity", "query", "type", "width", "xName", "yName"] }, { kind: "directive", type: i11$2.RangenavigatorSeriesCollectionDirective, selector: "ej-rangenavigator>e-rangenavigator-series-collection" }, { kind: "directive", type: i2$5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i5$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i6$2.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i6$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i7$2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i8$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i3$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: UserNamePipe, name: "userName" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], animations: [trigger('element', EnterExitRight)] }); }
32024
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: DocumentTraceComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" } }, viewQueries: [{ propertyName: "diagramElement", first: true, predicate: ["diagram"], descendants: true }, { propertyName: "filterArgs", first: true, predicate: ["args"], descendants: true }, { propertyName: "searchInput", first: true, predicate: ["search"], descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "rangeNavigator", first: true, predicate: RangeNavigator$1, descendants: true }], ngImport: i0, template: "@switch (mode) {\n<!-- diagram -->\n @case ('diagram') {\n<div class=\"column flex\">\n <mat-toolbar>\n <button mat-icon-button (click)=\"browse()\" [bizdocTooltip]=\"'Back' | translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon></button>\n |\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\n <span class=\"divider\"></span>\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\n </mat-toolbar>\n <div class=\"row flex\">\n <!-- timeline -->\n @if (timeline?.items.length > 1) {\n <div class=\"timeline\" data-help=\"timeline\">\n @for (date of timeline.items; track date; let last = $last) {\n <div class=\"item\"\n [class.active]=\"date.time === timeline.date\"\n (click)=\"highlightTime(date.time)\" matRipple>\n <div class=\"title\">\n @if (!last || !timeline.estimate) {\n @if (date.userId) {\n <span class=\"who\">\n {{date.userId | userName | async }}\n </span>\n }\n <br />\n <span class=\"time\">\n {{date.time | amDateFormat: 'MMM Do H:mm' }}\n </span>\n } @else {\n {{'Estimate' | translate}}\n }\n </div>\n <div class=\"indicator-container\">\n <div class=\"indicator\"></div>\n </div>\n </div>\n }\n </div>\n }\n <div class=\"flex\" #diagram dir=\"ltr\">\n </div>\n </div>\n</div>\n }\n<!-- browse -->\n @default {\n<div class=\"flex column fill\">\n <mat-toolbar class=\"row\">\n <span class=\"divider\"></span>\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\n </mat-toolbar>\n <mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\n <!-- table -->\n <mat-table class=\"flex\" [dataSource]=\"dataSource\" matSort>\n <!-- Number column -->\n <ng-container matColumnDef=\"number\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\n </ng-container>\n <!-- Subject column -->\n <ng-container matColumnDef=\"subject\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\n </ng-container>\n <!-- StateId column -->\n <ng-container matColumnDef=\"stateId\">\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\n </mat-cell>\n </ng-container>\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let item; columns: displayedColumns;\"\n (click)=\"open(item)\">\n </mat-row>\n </mat-table>\n <!-- range -->\n <ejs-rangenavigator valueType='DateTime' [value]=range labelFormat='MMM' background=\"transparent\"\n [theme]=\"theme\" labelIntersectAction='Hide' enableGrouping=\"false\"\n groupBy=\"Years\" intervalType='Months'\n (changed)='rangeChanged($event)'>\n <e-rangenavigator-series-collection>\n <e-rangenavigator-series [dataSource]='rangeData' [fill]=\"accent\" type='Area' xName='date' yName='count' width=2>\n </e-rangenavigator-series>\n </e-rangenavigator-series-collection>\n </ejs-rangenavigator>\n</div>\n }\n}\n<!-- args -->\n<ng-template #args>\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column gap\">\n <mat-form-field subscriptSizing=\"dynamic\">\n <input matInput type=\"search\" #search formControlName=\"search\" data-help=\"search\" [placeholder]=\"'Number'|translate\" />\n <mat-icon matSuffix class=\"mat-icon-rtl-mirror\">search</mat-icon>\n </mat-form-field>\n <mat-form-field subscriptSizing=\"dynamic\">\n <bizdoc-select type=\"forms\" [placeholder]=\"'Form'|translate\" formControlName=\"formId\"></bizdoc-select>\n </mat-form-field>\n </form>\n</ng-template>\n<ng-template #estimate>\n {{'Estimate' | translate}}\n</ng-template>\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;flex-grow:1;height:100%}:host ::ng-deep .mat-mdc-row{cursor:pointer}form{margin:8px}\n"], dependencies: [{ kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$3.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i11$2.RangeNavigatorComponent, selector: "ejs-rangenavigator", inputs: ["allowIntervalData", "allowSnapping", "animationDuration", "background", "dataSource", "disableRangeSelector", "enableDeferredUpdate", "enableGrouping", "enablePersistence", "enableRtl", "groupBy", "height", "interval", "intervalType", "labelFormat", "labelIntersectAction", "labelPlacement", "labelPosition", "labelStyle", "locale", "logBase", "majorGridLines", "majorTickLines", "margin", "maximum", "minimum", "navigatorBorder", "navigatorStyleSettings", "periodSelectorSettings", "query", "secondaryLabelAlignment", "series", "skeleton", "skeletonType", "theme", "tickPosition", "tooltip", "useGroupingSeparator", "value", "valueType", "width", "xName", "yName"], outputs: ["beforePrint", "beforeResize", "changed", "labelRender", "load", "loaded", "resized", "selectorRender", "tooltipRender", "dataSourceChange"] }, { kind: "directive", type: i11$2.RangenavigatorSeriesDirective, selector: "e-rangenavigator-series-collection>e-rangenavigator-series", inputs: ["animation", "border", "dashArray", "dataSource", "fill", "opacity", "query", "type", "width", "xName", "yName"] }, { kind: "directive", type: i11$2.RangenavigatorSeriesCollectionDirective, selector: "ej-rangenavigator>e-rangenavigator-series-collection" }, { kind: "directive", type: i2$5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i5$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i6$2.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i6$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i7$2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i8$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i3$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: UserNamePipe, name: "userName" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], animations: [trigger('element', EnterExitRight)] }); }
31833
32025
  };
31834
32026
  DocumentTraceComponent = __decorate([
31835
32027
  BizDoc({ selector: 'bizdoc-trace-utility' })
@@ -31837,7 +32029,7 @@ DocumentTraceComponent = __decorate([
31837
32029
  ], DocumentTraceComponent);
31838
32030
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: DocumentTraceComponent, decorators: [{
31839
32031
  type: Component,
31840
- args: [{ animations: [trigger('element', EnterExitRight)], template: "@switch (mode) {\n<!-- diagram -->\n @case ('diagram') {\n<div class=\"column flex\">\n <mat-toolbar>\n <button mat-icon-button (click)=\"browse()\" [bizdocTooltip]=\"'Back' | translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon></button>\n |\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\n <span class=\"divider\"></span>\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\n </mat-toolbar>\n <div class=\"row flex\">\n <!-- timeline -->\n @if (timeline?.items.length > 1) {\n <div class=\"timeline\" data-help=\"timeline\">\n @for (date of timeline.items; track date; let last = $last) {\n <div class=\"item\"\n [class.active]=\"date.time === timeline.date\"\n (click)=\"highlightTime(date.time)\" matRipple>\n <div class=\"title\">\n @if (!last || !timeline.estimate) {\n @if (date.userId) {\n <span class=\"who\">\n {{date.userId | userName | async }}\n </span>\n }\n <br />\n <span class=\"time\">\n {{date.time | amDateFormat: 'MMM Do H:mm' }}\n </span>\n } @else {\n {{'Estimate' | translate}}\n }\n </div>\n <div class=\"indicator-container\">\n <div class=\"indicator\"></div>\n </div>\n </div>\n }\n </div>\n }\n <div class=\"flex\" #diagram dir=\"ltr\">\n </div>\n </div>\n</div>\n }\n<!-- browse -->\n @default {\n<div class=\"flex column fill\">\n <mat-toolbar class=\"row\">\n <span class=\"divider\"></span>\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\n </mat-toolbar>\n <mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\n <!-- table -->\n <mat-table class=\"flex\" [dataSource]=\"dataSource\" matSort>\n <!-- Number column -->\n <ng-container matColumnDef=\"number\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\n </ng-container>\n <!-- Subject column -->\n <ng-container matColumnDef=\"subject\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\n </ng-container>\n <!-- StateId column -->\n <ng-container matColumnDef=\"stateId\">\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\n </mat-cell>\n </ng-container>\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let item; columns: displayedColumns;\"\n (click)=\"open(item)\">\n </mat-row>\n </mat-table>\n <!-- range -->\n <ejs-rangenavigator valueType='DateTime' [value]=range labelFormat='MMM' background=\"transparent\"\n [theme]=\"theme\" labelIntersectAction='Hide' enableGrouping=\"false\"\n groupBy=\"Years\" intervalType='Months'\n (changed)='rangeChanged($event)'>\n <e-rangenavigator-series-collection>\n <e-rangenavigator-series [dataSource]='rangeData' [fill]=\"accent\" type='Area' xName='date' yName='count' width=2>\n </e-rangenavigator-series>\n </e-rangenavigator-series-collection>\n </ejs-rangenavigator>\n</div>\n }\n}\n<!-- args -->\n<ng-template #args>\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\n <mat-form-field>\n <input matInput type=\"search\" #search formControlName=\"search\" data-help=\"search\" [placeholder]=\"'Number'|translate\" />\n <mat-icon matSuffix class=\"mat-icon-rtl-mirror\">search</mat-icon>\n </mat-form-field>\n <mat-form-field>\n <bizdoc-select type=\"forms\" [placeholder]=\"'Form'|translate\" formControlName=\"formId\"></bizdoc-select>\n </mat-form-field>\n </form>\n</ng-template>\n<ng-template #estimate>\n {{'Estimate' | translate}}\n</ng-template>\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;flex-grow:1;height:100%}:host ::ng-deep .mat-mdc-row{cursor:pointer}form{margin:8px}\n"] }]
32032
+ args: [{ animations: [trigger('element', EnterExitRight)], template: "@switch (mode) {\n<!-- diagram -->\n @case ('diagram') {\n<div class=\"column flex\">\n <mat-toolbar>\n <button mat-icon-button (click)=\"browse()\" [bizdocTooltip]=\"'Back' | translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon></button>\n |\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\n <span class=\"divider\"></span>\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\n </mat-toolbar>\n <div class=\"row flex\">\n <!-- timeline -->\n @if (timeline?.items.length > 1) {\n <div class=\"timeline\" data-help=\"timeline\">\n @for (date of timeline.items; track date; let last = $last) {\n <div class=\"item\"\n [class.active]=\"date.time === timeline.date\"\n (click)=\"highlightTime(date.time)\" matRipple>\n <div class=\"title\">\n @if (!last || !timeline.estimate) {\n @if (date.userId) {\n <span class=\"who\">\n {{date.userId | userName | async }}\n </span>\n }\n <br />\n <span class=\"time\">\n {{date.time | amDateFormat: 'MMM Do H:mm' }}\n </span>\n } @else {\n {{'Estimate' | translate}}\n }\n </div>\n <div class=\"indicator-container\">\n <div class=\"indicator\"></div>\n </div>\n </div>\n }\n </div>\n }\n <div class=\"flex\" #diagram dir=\"ltr\">\n </div>\n </div>\n</div>\n }\n<!-- browse -->\n @default {\n<div class=\"flex column fill\">\n <mat-toolbar class=\"row\">\n <span class=\"divider\"></span>\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\n </mat-toolbar>\n <mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\n <!-- table -->\n <mat-table class=\"flex\" [dataSource]=\"dataSource\" matSort>\n <!-- Number column -->\n <ng-container matColumnDef=\"number\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\n </ng-container>\n <!-- Subject column -->\n <ng-container matColumnDef=\"subject\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\n </ng-container>\n <!-- StateId column -->\n <ng-container matColumnDef=\"stateId\">\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\n </mat-cell>\n </ng-container>\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let item; columns: displayedColumns;\"\n (click)=\"open(item)\">\n </mat-row>\n </mat-table>\n <!-- range -->\n <ejs-rangenavigator valueType='DateTime' [value]=range labelFormat='MMM' background=\"transparent\"\n [theme]=\"theme\" labelIntersectAction='Hide' enableGrouping=\"false\"\n groupBy=\"Years\" intervalType='Months'\n (changed)='rangeChanged($event)'>\n <e-rangenavigator-series-collection>\n <e-rangenavigator-series [dataSource]='rangeData' [fill]=\"accent\" type='Area' xName='date' yName='count' width=2>\n </e-rangenavigator-series>\n </e-rangenavigator-series-collection>\n </ejs-rangenavigator>\n</div>\n }\n}\n<!-- args -->\n<ng-template #args>\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column gap\">\n <mat-form-field subscriptSizing=\"dynamic\">\n <input matInput type=\"search\" #search formControlName=\"search\" data-help=\"search\" [placeholder]=\"'Number'|translate\" />\n <mat-icon matSuffix class=\"mat-icon-rtl-mirror\">search</mat-icon>\n </mat-form-field>\n <mat-form-field subscriptSizing=\"dynamic\">\n <bizdoc-select type=\"forms\" [placeholder]=\"'Form'|translate\" formControlName=\"formId\"></bizdoc-select>\n </mat-form-field>\n </form>\n</ng-template>\n<ng-template #estimate>\n {{'Estimate' | translate}}\n</ng-template>\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;flex-grow:1;height:100%}:host ::ng-deep .mat-mdc-row{cursor:pointer}form{margin:8px}\n"] }]
31841
32033
  }], ctorParameters: () => [{ type: UtilityRef, decorators: [{
31842
32034
  type: Inject,
31843
32035
  args: [UtilityRef]