@datarailsshared/datarailsshared 1.4.19-tigers → 1.4.21-tigers

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 (38) hide show
  1. package/bundles/datarailsshared-datarailsshared.umd.js +1426 -1300
  2. package/bundles/datarailsshared-datarailsshared.umd.js.map +1 -1
  3. package/datarailsshared-datarailsshared-1.4.21-tigers.tgz +0 -0
  4. package/datarailsshared-datarailsshared.d.ts +5 -3
  5. package/datarailsshared-datarailsshared.metadata.json +1 -1
  6. package/esm2015/datarailsshared-datarailsshared.js +6 -4
  7. package/esm2015/lib/dr-avatar/dr-avatar.component.js +5 -3
  8. package/esm2015/lib/dr-avatar/dr-avatar.pipe.js +3 -2
  9. package/esm2015/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.js +47 -0
  10. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.js +152 -0
  11. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.js +72 -0
  12. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.js +128 -0
  13. package/esm2015/lib/dr-inputs/date-pickers/services/dr-date-picker.service.js +55 -0
  14. package/esm2015/lib/dr-inputs/dr-inputs.module.js +13 -9
  15. package/esm2015/lib/dr-tooltip/dr-tooltip.component.js +13 -3
  16. package/esm2015/lib/dr-tooltip/dr-tooltip.directive.js +43 -10
  17. package/esm2015/lib/models/datePicker.js +8 -1
  18. package/esm2015/public-api.js +3 -3
  19. package/fesm2015/datarailsshared-datarailsshared.js +630 -526
  20. package/fesm2015/datarailsshared-datarailsshared.js.map +1 -1
  21. package/lib/dr-avatar/dr-avatar.component.d.ts +1 -0
  22. package/lib/dr-inputs/{dr-date-picker → date-pickers/directives}/dr-date-picker-format.directive.d.ts +1 -1
  23. package/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.d.ts +55 -0
  24. package/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.d.ts +26 -0
  25. package/lib/dr-inputs/{dr-date-picker → date-pickers}/dr-date-picker_custom-header/dr-date-picker_custom-header.component.d.ts +4 -4
  26. package/lib/dr-inputs/date-pickers/services/dr-date-picker.service.d.ts +18 -0
  27. package/lib/dr-tooltip/dr-tooltip.component.d.ts +4 -0
  28. package/lib/dr-tooltip/dr-tooltip.directive.d.ts +4 -0
  29. package/lib/models/datePicker.d.ts +12 -0
  30. package/package.json +1 -1
  31. package/public-api.d.ts +1 -2
  32. package/datarailsshared-datarailsshared-1.4.19-tigers.tgz +0 -0
  33. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker-format.directive.js +0 -47
  34. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker.component.js +0 -183
  35. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker.service.js +0 -41
  36. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker_custom-header/dr-date-picker_custom-header.component.js +0 -129
  37. package/lib/dr-inputs/dr-date-picker/dr-date-picker.component.d.ts +0 -54
  38. package/lib/dr-inputs/dr-date-picker/dr-date-picker.service.d.ts +0 -12
@@ -2,6 +2,7 @@ import { EventEmitter } from '@angular/core';
2
2
  export declare class DrAvatarComponent {
3
3
  set users(users: any[] | object);
4
4
  warning: boolean;
5
+ showUnassigned: boolean;
5
6
  userClicked: EventEmitter<any>;
6
7
  parsedUsers: any[];
7
8
  constructor();
@@ -1,5 +1,5 @@
1
1
  import { NgControl } from '@angular/forms';
2
- import { CustomDateFormat, DateDisplay, DateParse } from '../../models/datePicker';
2
+ import { CustomDateFormat, DateDisplay, DateParse } from '../../../models/datePicker';
3
3
  export declare class DrDatePickerFormatDirective {
4
4
  matDateFormat: CustomDateFormat;
5
5
  private ngControl;
@@ -0,0 +1,55 @@
1
+ import { ChangeDetectorRef, AfterViewInit, OnDestroy } from '@angular/core';
2
+ import { ControlValueAccessor } from '@angular/forms';
3
+ import { DatePickerPeriodPosition } from '../../../models/datePicker';
4
+ import { Moment } from 'moment';
5
+ import { DateAdapter } from '@angular/material/core';
6
+ import { DrDatePickerService } from '../services/dr-date-picker.service';
7
+ import { Subject } from 'rxjs';
8
+ import { DrDatePickerCustomHeaderComponent } from '../dr-date-picker_custom-header/dr-date-picker_custom-header.component';
9
+ export declare class DrDatePickerComponent implements ControlValueAccessor, AfterViewInit, OnDestroy {
10
+ protected cdr: ChangeDetectorRef;
11
+ protected dateAdapter: DateAdapter<any>;
12
+ datePickerService: DrDatePickerService;
13
+ set format(value: any);
14
+ set min(minDate: number);
15
+ set max(maxDate: number);
16
+ periodPosition: DatePickerPeriodPosition;
17
+ placeholder: string;
18
+ dp: any;
19
+ calendarViewsTimeframeMapping: any;
20
+ customHeader: typeof DrDatePickerCustomHeaderComponent;
21
+ readonly: boolean;
22
+ _min: Moment;
23
+ _max: Moment;
24
+ get value(): Moment;
25
+ set value(v: Moment);
26
+ protected innerValue: Moment;
27
+ protected destroyed$: Subject<void>;
28
+ constructor(cdr: ChangeDetectorRef, dateAdapter: DateAdapter<any>, datePickerService: DrDatePickerService);
29
+ ngAfterViewInit(): void;
30
+ ngOnDestroy(): void;
31
+ /**
32
+ * Updating component inner value according to datepicker timeframe (day, month etc.)
33
+ * and date position in period (start, end, middle)
34
+ */
35
+ tryToNormalaizeTimeframe(): void;
36
+ chosenPeriodHandler(chosenDate: Moment, timeframe: string): void;
37
+ /**
38
+ * Setting value from outside of component via ngModel or formControl updates
39
+ */
40
+ writeValue(value: number): void;
41
+ onTouchedCallback: () => void;
42
+ onChangeCallback: (_: any) => void;
43
+ registerOnChange(fn: any): void;
44
+ registerOnTouched(fn: any): void;
45
+ /**
46
+ * Set inner value from Moment and propagate
47
+ * @param momentDate
48
+ */
49
+ protected setValueFromMoment(momentDate: Moment): void;
50
+ /**
51
+ * Set inner value from timestamp and propagate
52
+ * @param timestamp
53
+ */
54
+ protected setValue(timestamp: number): void;
55
+ }
@@ -0,0 +1,26 @@
1
+ import { AfterViewInit, ChangeDetectorRef, OnInit, OnDestroy, EventEmitter } from '@angular/core';
2
+ import { DrDatePickerComponent } from '../dr-date-picker/dr-date-picker.component';
3
+ import { DateAdapter } from '@angular/material/core';
4
+ import { DrDatePickerService } from '../services/dr-date-picker.service';
5
+ import { ControlValueAccessor } from '@angular/forms';
6
+ import { IDatePickerFormatConfig } from '../../../models/datePicker';
7
+ export declare class DrDatePickerWithTimeframeComponent extends DrDatePickerComponent implements ControlValueAccessor, AfterViewInit, OnDestroy, OnInit {
8
+ protected cdr: ChangeDetectorRef;
9
+ protected dateAdapter: DateAdapter<any>;
10
+ datePickerService: DrDatePickerService;
11
+ get isDashboardClassDisplayed(): boolean;
12
+ isDashboardDatepicker: boolean;
13
+ dateFormatConfig: IDatePickerFormatConfig;
14
+ onChangeFormat: EventEmitter<string>;
15
+ pagingSetup: {
16
+ year: (forward: any) => void;
17
+ quarter: (forward: any) => void;
18
+ month: (forward: any) => void;
19
+ day: (forward: any) => void;
20
+ };
21
+ get quarterDisplay(): string;
22
+ constructor(cdr: ChangeDetectorRef, dateAdapter: DateAdapter<any>, datePickerService: DrDatePickerService);
23
+ ngOnInit(): void;
24
+ pagingClicked(forward: any): void;
25
+ pagingDateChange(actionCall: string, amount: number, forward: boolean): void;
26
+ }
@@ -2,7 +2,7 @@ import { OnDestroy, ChangeDetectorRef } from "@angular/core";
2
2
  import { MatCalendar, MatCalendarView } from '@angular/material/datepicker';
3
3
  import { DateAdapter } from '@angular/material/core';
4
4
  import { CustomDateFormat } from "../../../models/datePicker";
5
- import { DrDatePickerService } from "../dr-date-picker.service";
5
+ import { DrDatePickerService } from "../services/dr-date-picker.service";
6
6
  export interface ITimeframeOption {
7
7
  title: string;
8
8
  value: MatCalendarView;
@@ -14,7 +14,7 @@ export declare class DrDatePickerCustomHeaderComponent<Moment> implements OnDest
14
14
  private _dateAdapter;
15
15
  private _dateFormats;
16
16
  private cdr;
17
- private datePickerService;
17
+ datePickerService: DrDatePickerService;
18
18
  private _destroyed;
19
19
  quarters: number[];
20
20
  selectedQuarter: number;
@@ -33,9 +33,9 @@ export declare class DrDatePickerCustomHeaderComponent<Moment> implements OnDest
33
33
  ngOnDestroy(): void;
34
34
  setPeriodLabels(): void;
35
35
  setTimeframe(): void;
36
- get currentViewIsQuater(): boolean;
36
+ get currentViewIsQuarter(): boolean;
37
37
  switchViewOnClickOnPeriodLabel(view: 'year' | 'multi-year'): void;
38
- onSelectQuater(quarterNumber: number): void;
38
+ onSelectQuarter(quarterNumber: number): void;
39
39
  pagingClicked(forward: any): void;
40
40
  pagingDateChange(actionCall: string, amount: number, forward: boolean): void;
41
41
  }
@@ -0,0 +1,18 @@
1
+ import { MatDatepicker } from "@angular/material/datepicker";
2
+ import { Moment } from "moment";
3
+ import { Subject, BehaviorSubject } from "rxjs";
4
+ import { IDatePickerFormatConfig } from "../../../models/datePicker";
5
+ export declare type TimeframeOption = 'day' | 'quarter' | 'month' | 'year';
6
+ export declare class DrDatePickerService {
7
+ isTimeframeSelectionEnabled: boolean;
8
+ timeframe: TimeframeOption;
9
+ format$: BehaviorSubject<string>;
10
+ updatedQuarter$: Subject<Moment>;
11
+ calendarInstance: MatDatepicker<any>;
12
+ formatConfig: IDatePickerFormatConfig;
13
+ getQuarterDisplay(value: any): string;
14
+ getTimeframe(format: string): "day" | "quarter" | "month" | "year";
15
+ getConfiguredFormat(timeframe: TimeframeOption): string;
16
+ updateTimeframeAndFormat(format: string): void;
17
+ normalizeValue(value: any): any;
18
+ }
@@ -1,4 +1,5 @@
1
1
  import { OnInit } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
2
3
  declare type TooltipOptions = {
3
4
  withoutContainerStyles?: boolean;
4
5
  withoutArrow?: boolean;
@@ -10,7 +11,10 @@ export declare class TooltipComponent implements OnInit {
10
11
  options: TooltipOptions;
11
12
  class: string;
12
13
  isContentTemplate: boolean;
14
+ isMouseOn$: BehaviorSubject<boolean>;
13
15
  constructor();
14
16
  ngOnInit(): void;
17
+ setMouseOn(): void;
18
+ unsetMouseOn(): void;
15
19
  }
16
20
  export {};
@@ -8,11 +8,15 @@ export declare class DrTooltipDirective implements OnDestroy {
8
8
  contentContext: {};
9
9
  position: string;
10
10
  class: string;
11
+ drTooltipMousleaveTimeout: number;
11
12
  set drTooltipOptions(options: any);
12
13
  set showTooltip(value: boolean);
13
14
  private overlayRef;
15
+ private tooltipRef;
14
16
  private options;
15
17
  private manualHandling;
18
+ private tooltipMouseOnSubscription;
19
+ private mouseleaveTimer;
16
20
  constructor(overlay: Overlay, overlayPositionBuilder: OverlayPositionBuilder, elementRef: ElementRef);
17
21
  ngOnDestroy(): void;
18
22
  show(): void;
@@ -23,3 +23,15 @@ export declare class CustomDateFormat {
23
23
  get display(): DateDisplay;
24
24
  updateDateFormat(parse: DateParse, display?: DateDisplay): void;
25
25
  }
26
+ export interface IDatePickerFormatConfig {
27
+ day?: string;
28
+ month?: string;
29
+ year?: string;
30
+ quarter?: string;
31
+ }
32
+ export declare enum DatePickerPeriodPosition {
33
+ END_OF_PERIOD = 0,
34
+ MIDDLE_OF_PERIOD = 1,
35
+ START_OF_PERIOD = 2,
36
+ DEFAULT = 3
37
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datarailsshared/datarailsshared",
3
- "version": "1.4.19-tigers",
3
+ "version": "1.4.21-tigers",
4
4
  "description": "DataRails shared components",
5
5
  "keywords": [
6
6
  "angular",
package/public-api.d.ts CHANGED
@@ -22,8 +22,6 @@ export * from './lib/dr-inputs/dr-toggle-button/dr-toggle-button.component';
22
22
  export * from './lib/dr-spinner/dr-spinner.component';
23
23
  export * from './lib/dr-spinner/dr-spinner.directive';
24
24
  export * from './lib/dr-inputs/button/button.component';
25
- export * from './lib/dr-inputs/dr-date-picker/dr-date-picker.component';
26
- export * from './lib/dr-inputs/dr-date-picker/dr-date-picker-format.directive';
27
25
  export * from './lib/dr-popover/dr-popover.directive';
28
26
  export * from './lib/dr-popover/dr-popover.component';
29
27
  export * from './lib/dr-popover/dr-popover.service';
@@ -39,6 +37,7 @@ export * from './lib/dr-accordion/accordion-item.component';
39
37
  export * from './lib/dr-accordion/accordion-item-header.component';
40
38
  export * from './lib/dr-accordion/accordion-item-body.component';
41
39
  export * from './lib/dr-inputs/dr-model-debounce-change.directive';
40
+ export * from './lib/models/datePicker';
42
41
  export { TAG_TYPES, ITag, IDateTag, IListTag, ITagForServer } from './lib/models/serverTags';
43
42
  export { ElPosition, IDropdown, IDropdownItem, IDropdownActionIcon, IDropdownCoordinate, IDropdownCallEvent, IDropdownAction } from './lib/models/dropdown';
44
43
  export { DrPopoverRef, IDrPopoverComponentModel, Point, DrPopoverConfig, IPopoverManualClosing, DrPopoverAlignment, DrPopoverAlignmentDimension, } from './lib/models/popover';
@@ -1,47 +0,0 @@
1
- import { Directive, Inject, Input, Optional } from '@angular/core';
2
- import { NgControl } from '@angular/forms';
3
- import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
4
- import { MomentDateAdapter } from '@angular/material-moment-adapter';
5
- import { CustomDateFormat } from '../../models/datePicker';
6
- export class DrDatePickerFormatDirective {
7
- constructor(matDateFormat, ngControl) {
8
- this.matDateFormat = matDateFormat;
9
- this.ngControl = ngControl;
10
- }
11
- set datePickerFormat(format) {
12
- var _a;
13
- if (this.configDateParse) {
14
- this.matDateFormat.updateDateFormat(this.configDateParse, this.configDateDisplay);
15
- }
16
- else {
17
- this.matDateFormat.updateDateFormat({ dateInput: format });
18
- }
19
- const value = this.ngControl.value;
20
- (_a = this.ngControl.valueAccessor) === null || _a === void 0 ? void 0 : _a.writeValue(value);
21
- }
22
- }
23
- DrDatePickerFormatDirective.decorators = [
24
- { type: Directive, args: [{
25
- selector: '[drDatePickerFormat]',
26
- providers: [
27
- {
28
- provide: DateAdapter,
29
- useClass: MomentDateAdapter
30
- },
31
- {
32
- provide: MAT_DATE_FORMATS,
33
- useClass: CustomDateFormat
34
- }
35
- ]
36
- },] }
37
- ];
38
- DrDatePickerFormatDirective.ctorParameters = () => [
39
- { type: CustomDateFormat, decorators: [{ type: Inject, args: [MAT_DATE_FORMATS,] }] },
40
- { type: NgControl, decorators: [{ type: Optional }] }
41
- ];
42
- DrDatePickerFormatDirective.propDecorators = {
43
- configDateParse: [{ type: Input }],
44
- configDateDisplay: [{ type: Input }],
45
- datePickerFormat: [{ type: Input, args: ['drDatePickerFormat',] }]
46
- };
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXItZm9ybWF0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9kci1kYXRlLXBpY2tlci9kci1kYXRlLXBpY2tlci1mb3JtYXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQTBCLE1BQU0seUJBQXlCLENBQUM7QUFlbkYsTUFBTSxPQUFPLDJCQUEyQjtJQWtCdEMsWUFDbUMsYUFBK0IsRUFDNUMsU0FBb0I7UUFEUCxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDNUMsY0FBUyxHQUFULFNBQVMsQ0FBVztJQUUxQyxDQUFDO0lBbEJELElBQ0ksZ0JBQWdCLENBQUMsTUFBYzs7UUFDakMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQ2pDLElBQUksQ0FBQyxlQUFlLEVBQ3BCLElBQUksQ0FBQyxpQkFBaUIsQ0FDdkIsQ0FBQztTQUNIO2FBQU07WUFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUM7U0FDMUQ7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUNuQyxNQUFBLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSwwQ0FBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7O1lBN0JGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQyxTQUFTLEVBQUU7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLFdBQVc7d0JBQ3BCLFFBQVEsRUFBRSxpQkFBaUI7cUJBQzVCO29CQUNEO3dCQUNFLE9BQU8sRUFBRSxnQkFBZ0I7d0JBQ3pCLFFBQVEsRUFBRSxnQkFBZ0I7cUJBQzNCO2lCQUNGO2FBQ0Y7OztZQWRRLGdCQUFnQix1QkFrQ3BCLE1BQU0sU0FBQyxnQkFBZ0I7WUFyQ25CLFNBQVMsdUJBc0NiLFFBQVE7Ozs4QkFuQlYsS0FBSztnQ0FDTCxLQUFLOytCQUVMLEtBQUssU0FBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9wdGlvbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1vbWVudERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXInO1xuaW1wb3J0IHsgQ3VzdG9tRGF0ZUZvcm1hdCwgRGF0ZURpc3BsYXksIERhdGVQYXJzZSB9IGZyb20gJy4uLy4uL21vZGVscy9kYXRlUGlja2VyJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2RyRGF0ZVBpY2tlckZvcm1hdF0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBEYXRlQWRhcHRlcixcbiAgICAgIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlclxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUyxcbiAgICAgIHVzZUNsYXNzOiBDdXN0b21EYXRlRm9ybWF0XG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERyRGF0ZVBpY2tlckZvcm1hdERpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIHB1YmxpYyBjb25maWdEYXRlUGFyc2U6IERhdGVQYXJzZTtcbiAgQElucHV0KCkgcHVibGljIGNvbmZpZ0RhdGVEaXNwbGF5OiBEYXRlRGlzcGxheTtcblxuICBASW5wdXQoJ2RyRGF0ZVBpY2tlckZvcm1hdCcpXG4gIHNldCBkYXRlUGlja2VyRm9ybWF0KGZvcm1hdDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnRGF0ZVBhcnNlKSB7XG4gICAgICB0aGlzLm1hdERhdGVGb3JtYXQudXBkYXRlRGF0ZUZvcm1hdChcbiAgICAgICAgdGhpcy5jb25maWdEYXRlUGFyc2UsXG4gICAgICAgIHRoaXMuY29uZmlnRGF0ZURpc3BsYXlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWF0RGF0ZUZvcm1hdC51cGRhdGVEYXRlRm9ybWF0KHtkYXRlSW5wdXQ6IGZvcm1hdH0pO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMubmdDb250cm9sLnZhbHVlO1xuICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3I/LndyaXRlVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChNQVRfREFURV9GT1JNQVRTKSBwdWJsaWMgbWF0RGF0ZUZvcm1hdDogQ3VzdG9tRGF0ZUZvcm1hdCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIG5nQ29udHJvbDogTmdDb250cm9sXG4gICkge1xuICB9XG59XG4iXX0=
@@ -1,183 +0,0 @@
1
- import { Component, ChangeDetectionStrategy, Input, ChangeDetectorRef, ViewChild, Output, EventEmitter } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { MAT_DEFAULT_DATE_FORMAT } from '../../models/datePicker';
4
- import { DrDatePickerCustomHeaderComponent } from './dr-date-picker_custom-header/dr-date-picker_custom-header.component';
5
- import { DateAdapter } from '@angular/material/core';
6
- import { DrDatePickerService } from './dr-date-picker.service';
7
- import { Subject } from 'rxjs';
8
- import { takeUntil } from 'rxjs/operators';
9
- const moment = require('moment');
10
- const noop = () => { };
11
- const ɵ0 = noop;
12
- export class DrDatePickerComponent {
13
- constructor(cdr, _dateAdapter, datePickerService) {
14
- this.cdr = cdr;
15
- this._dateAdapter = _dateAdapter;
16
- this.datePickerService = datePickerService;
17
- this._destroyed = new Subject();
18
- this.readonly = true;
19
- this._format = MAT_DEFAULT_DATE_FORMAT;
20
- this.customHeader = DrDatePickerCustomHeaderComponent;
21
- this.onChangeFormat = new EventEmitter();
22
- this.timeframeSelection = false;
23
- this.takeEndOfPeriod = false;
24
- this.placeholder = 'Select';
25
- this.min = null;
26
- this.max = null;
27
- this.calendarViewSetup = {
28
- 'year': (calendar) => calendar.currentView = 'multi-year',
29
- 'month': (calendar) => calendar.currentView = 'year',
30
- 'quarter': (calendar) => calendar.currentView = 'none',
31
- 'day': (calendar) => calendar.currentView = 'month'
32
- };
33
- this.pagingSetup = {
34
- 'year': (forward) => this.pagingDateChange('addCalendarYears', 1, forward),
35
- 'quarter': (forward) => this.pagingDateChange('addCalendarMonths', 3, forward),
36
- 'month': (forward) => this.pagingDateChange('addCalendarMonths', 1, forward),
37
- 'day': (forward) => this.pagingDateChange('addCalendarDays', 1, forward)
38
- };
39
- this.innerValue = null;
40
- this.onTouchedCallback = noop;
41
- this.onChangeCallback = noop;
42
- datePickerService.format
43
- .pipe(takeUntil(this._destroyed))
44
- .subscribe((value) => {
45
- this._format = value;
46
- this.onChangeFormat.emit(this.normalizeValue(value));
47
- cdr.markForCheck();
48
- });
49
- datePickerService.updatedQuater
50
- .pipe(takeUntil(this._destroyed))
51
- .subscribe((value) => {
52
- this.tryToNormalaizeTimeframe(value, 'quarter');
53
- this.writeValue(value);
54
- this.onChangeCallback(value);
55
- });
56
- }
57
- set format(value) {
58
- if (value) {
59
- value = this.normalizeValue(value);
60
- this._format = value;
61
- this.datePickerService.format.next(value);
62
- this.datePickerService.setTimeframe(value);
63
- this.cdr.markForCheck();
64
- }
65
- }
66
- ngAfterViewInit() {
67
- this.datePickerService.calendarInstance = this.dp;
68
- if (this._format === MAT_DEFAULT_DATE_FORMAT) {
69
- return;
70
- }
71
- setTimeout(() => {
72
- const popupInstance = this.dp._popupComponentRef.instance;
73
- const calenderInstance = popupInstance._calendar._calendarHeaderPortal._attachedHost._attachedRef.instance;
74
- calenderInstance.currentPeriodClicked = function () {
75
- this.calendarViewSetup[this.datePickerService.timeframe] && this.calendarViewSetup[this.datePickerService.timeframe](this.calendar);
76
- };
77
- }, 1000);
78
- }
79
- tryToNormalaizeTimeframe(normalizedRef, timeframe) {
80
- if (this.takeEndOfPeriod) {
81
- normalizedRef.endOf(timeframe);
82
- }
83
- normalizedRef.set('hour', 12);
84
- }
85
- get value() {
86
- return this.innerValue;
87
- }
88
- set value(v) {
89
- if (v !== this.innerValue) {
90
- this.innerValue = v;
91
- this.onChangeCallback(v);
92
- }
93
- this.cdr.markForCheck();
94
- }
95
- registerOnChange(fn) {
96
- this.onChangeCallback = fn;
97
- }
98
- registerOnTouched(fn) {
99
- this.onTouchedCallback = fn;
100
- }
101
- writeValue(value) {
102
- if (value !== this.innerValue) {
103
- if (value && typeof value === 'number') {
104
- this.innerValue = moment.unix(value);
105
- }
106
- else {
107
- this.innerValue = value;
108
- }
109
- this.tryToNormalaizeTimeframe(this.innerValue, this.datePickerService.timeframe);
110
- this.cdr.markForCheck();
111
- }
112
- }
113
- get quarterDisplay() {
114
- return this.datePickerService.getQuarterDisplay(this.value, this._format);
115
- }
116
- normalizeValue(value) {
117
- if (value.includes('d')) {
118
- value = value.replace(/d/g, 'D');
119
- }
120
- else if (value.includes('D')) {
121
- value = value.replace(/D/g, 'd');
122
- }
123
- return value;
124
- }
125
- chosenMonthHandler(normalizedMonth, datepicker) {
126
- if (this.datePickerService.timeframe === 'month') {
127
- this.tryToNormalaizeTimeframe(normalizedMonth, 'month');
128
- this.writeValue(normalizedMonth);
129
- this.onChangeCallback(normalizedMonth);
130
- datepicker.close();
131
- }
132
- }
133
- chosenYearHandler(normalizedYear, datepicker) {
134
- if (this.datePickerService.timeframe === 'year') {
135
- this.tryToNormalaizeTimeframe(normalizedYear, 'year');
136
- this.writeValue(normalizedYear);
137
- this.onChangeCallback(normalizedYear);
138
- datepicker.close();
139
- }
140
- }
141
- pagingClicked(forward) {
142
- this.pagingSetup[this.datePickerService.timeframe] && this.pagingSetup[this.datePickerService.timeframe](forward);
143
- this.datePickerService.calendarInstance.close();
144
- }
145
- pagingDateChange(actionCall, amount, forward) {
146
- const newValue = this._dateAdapter[actionCall](this.innerValue, forward ? amount : -amount);
147
- this.writeValue(newValue);
148
- this.onChangeCallback(newValue);
149
- }
150
- ngOnDestroy() {
151
- this._destroyed.next();
152
- this._destroyed.complete();
153
- }
154
- }
155
- DrDatePickerComponent.decorators = [
156
- { type: Component, args: [{
157
- selector: 'dr-date-picker',
158
- template: "<div class=\"dr-datepicker__with-timeframe-selection\"\n *ngIf=\"timeframeSelection;else noTimeframeSelection\">\n <div class=\"dr-input-date-paging__flip-page-button\"\n (click)=\"pagingClicked(false)\"\n >\n <i class=\"dr-icon-arrow-left presentation_buttons-navigate_input\"></i> \n </div>\n <div class=\"dr-input-date-paging__quarter-display\"\n *ngIf=\"_format.includes('Q')\"\n (click)=\"datePicker.open()\"\n >{{quarterDisplay}}</div>\n <input [(ngModel)]=\"value\"\n (click)=\"datePicker.open()\"\n [matDatepicker]=\"datePicker\"\n [placeholder]=\"placeholder\"\n [drDatePickerFormat]=\"_format\"\n [readonly]=\"readonly\"\n [class]=\"_format.includes('Q') ? 'when-quarter' : ''\"\n [min]=\"min\"\n [max]=\"max\"/>\n <div class=\"dr-input-date-paging__flip-page-button\"\n (click)=\"pagingClicked(true)\">\n <i class=\"dr-icon-arrow-right presentation_buttons-navigate_input\"></i>\n </div>\n <mat-datepicker #datePicker\n class=\"dr-timeframe-datepicker\"\n [calendarHeaderComponent]=\"customHeader\"\n (yearSelected)=\"chosenYearHandler($event, datePicker)\"\n (monthSelected)=\"chosenMonthHandler($event, datePicker)\">\n </mat-datepicker>\n</div>\n\n<ng-template class=\"dr-datepicker__no-timeframe-selection\"\n #noTimeframeSelection>\n <i class=\"dr-icon-schedule\"></i>\n <input [(ngModel)]=\"value\"\n (click)=\"datePicker.open()\"\n [matDatepicker]=\"datePicker\"\n [placeholder]=\"placeholder\"\n [drDatePickerFormat]=\"_format\"\n [readonly]=\"readonly\"\n [min]=\"min\"\n [max]=\"max\"/>\n <mat-datepicker #datePicker\n (yearSelected)=\"chosenYearHandler($event, datePicker)\"\n (monthSelected)=\"chosenMonthHandler($event, datePicker)\">\n </mat-datepicker>\n</ng-template>\n\n",
159
- changeDetection: ChangeDetectionStrategy.OnPush,
160
- providers: [
161
- { provide: NG_VALUE_ACCESSOR, useExisting: DrDatePickerComponent, multi: true }
162
- ],
163
- styles: [":host{position:relative;width:100%;display:flex;flex-direction:row;min-height:32px;height:32px;font-size:14px;font-family:\"Poppins\",sans-serif;background-color:#fff;border:1px solid #C3C4CE;border-radius:6px;color:#85889c;overflow:hidden;outline:none;cursor:pointer}:host.period-datepicker{border:none}:host:hover{border-color:#85889c}:host:focus-within{border-color:#21b8f1!important;color:#151b3f}:host.disabled{pointer-events:none;border:none;color:#85889c;background:#E5E6EA}:host.ng-valid.ng-dirty{border-color:#03a678}:host.ng-invalid.ng-dirty:not(:focus-within){border-color:#de2833!important}:host.ng-untouched.ng-valid{border-color:#c3c4ce}:host:after,:host:before{position:absolute;display:flex;border-color:#999999 transparent transparent;color:#999}:host:after{content:\"\";height:0;width:0;border-style:solid;border-width:5px 5px 2.5px;right:11px;top:13px}:host i{position:absolute;color:#999;left:8px;top:3px}:host input{display:flex;flex-grow:1;height:100%;border:none;text-align:left;padding-left:35px;padding-right:25px;cursor:pointer!important;outline:none}:host input.when-quarter{position:absolute;visibility:hidden}:host input:disabled{border:none;color:#85889c;background:transparent}:host input::-webkit-search-decoration,:host input::-webkit-search-cancel-button,:host input::-webkit-search-results-button,:host input::-webkit-search-results-decoration{-webkit-appearance:none}:host .dr-datepicker__with-timeframe-selection{display:flex;align-items:center}:host .dr-datepicker__with-timeframe-selection .dr-input-date-paging__flip-page-button{width:25px;height:25px;border-radius:16px;padding:0;background-color:#fff}:host .dr-datepicker__with-timeframe-selection .dr-input-date-paging__flip-page-button i{position:relative;color:#0c142b;top:unset;left:unset}:host .dr-datepicker__with-timeframe-selection .dr-input-date-paging__flip-page-button:hover{background-color:#f2f2fb;color:#4646ce}:host .dr-datepicker__with-timeframe-selection input{width:90px;padding:0;border-radius:5px;text-decoration:underline;text-align:center}:host .dr-datepicker__with-timeframe-selection input:hover{background-color:#f2f2fb;color:#4646ce}:host .dr-input-date-paging__quarter-display{width:90px;height:22px;padding-left:0;text-align:center;line-height:22px;color:#0c142b;-webkit-text-decoration-line:underline;text-decoration-line:underline}:host .dr-input-date-paging__quarter-display:hover{background-color:#f2f2fb;border-radius:5px;cursor:pointer;-webkit-text-decoration-line:underline;text-decoration-line:underline;color:#4646ce}::ng-deep .mat-datepicker-content{margin:7px 0;box-shadow:0 4px 8px 1px #00000040;border-radius:12px!important}::ng-deep .mat-datepicker-content button[disabled]{border:inherit;color:inherit;background-color:inherit}::ng-deep .mat-datepicker-content button[disabled]:hover{border:inherit}::ng-deep .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background:#F2F2FB;color:#4646ce;font-weight:600}::ng-deep .mat-calendar-body-selected{background-color:#4646ce;color:#f2f2fb;font-weight:600}::ng-deep .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:none}::ng-deep .mat-button-focus-overlay{background:#F3F7FF}::ng-deep .mat-calendar-controls .mat-icon-button:hover .mat-button-focus-overlay{opacity:1!important;background:#F3F7FF;transition:opacity .2s cubic-bezier(.35,0,.25,1)}::ng-deep .mat-calendar-controls .mat-calendar-period-button:hover{background:#F3F7FF;transition:background .2s cubic-bezier(.35,0,.25,1)}::ng-deep .mat-calendar-table-header th{font-size:14px;font-weight:600;color:#19181a}::ng-deep .mat-calendar-table-header-divider{display:none}::ng-deep .mat-calendar-body-label{color:#fff;padding:0}\n"]
164
- },] }
165
- ];
166
- DrDatePickerComponent.ctorParameters = () => [
167
- { type: ChangeDetectorRef },
168
- { type: DateAdapter },
169
- { type: DrDatePickerService }
170
- ];
171
- DrDatePickerComponent.propDecorators = {
172
- _format: [{ type: Input }],
173
- onChangeFormat: [{ type: Output }],
174
- format: [{ type: Input }],
175
- timeframeSelection: [{ type: Input }],
176
- takeEndOfPeriod: [{ type: Input }],
177
- placeholder: [{ type: Input }],
178
- min: [{ type: Input }],
179
- max: [{ type: Input }],
180
- dp: [{ type: ViewChild, args: ['datePicker',] }]
181
- };
182
- export { ɵ0 };
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL2RyLWRhdGUtcGlja2VyL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsaUJBQWlCLEVBQUUsU0FBUyxFQUE0QixNQUFNLEVBQUUsWUFBWSxFQUM3RSxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLHVCQUF1QixFQUFrRCxNQUFNLHlCQUF5QixDQUFDO0FBRWxILE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQzFILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFakMsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDOztBQVl0QixNQUFNLE9BQU8scUJBQXFCO0lBc0RoQyxZQUNVLEdBQXNCLEVBQ3RCLFlBQThCLEVBQzlCLGlCQUFzQztRQUZ0QyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBa0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFxQjtRQXhEeEMsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFT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S0FBSyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQWtCLEVBQUUsTUFBYyxFQUFFLE9BQWdCO1FBQ25FLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUEsQ0FBQyxDQUFDLE1BQU0sQ0FBQSxDQUFDLENBQUMsQ0FBRSxNQUFNLENBQUMsQ0FBQztRQUMzRixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDOzs7WUExS0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLHMvREFBOEM7Z0JBRTlDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxTQUFTLEVBQUU7b0JBQ1QsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7aUJBQ2hGOzthQUVGOzs7WUF6QkMsaUJBQWlCO1lBT1YsV0FBVztZQUNYLG1CQUFtQjs7O3NCQXFCekIsS0FBSzs2QkFFTCxNQUFNO3FCQUNOLEtBQUs7aUNBU0wsS0FBSzs4QkFDTCxLQUFLOzBCQUNMLEtBQUs7a0JBQ0wsS0FBSztrQkFDTCxLQUFLO2lCQUNMLFNBQVMsU0FBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSW5wdXQsXG4gIENoYW5nZURldGVjdG9yUmVmLCBWaWV3Q2hpbGQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT3V0cHV0LCBFdmVudEVtaXR0ZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNQVRfREVGQVVMVF9EQVRFX0ZPUk1BVCwgTU9OVEhfWUVBUl9GT1JNQVQsIFFVQVJURVJfRk9STUFULCBZRUFSX0ZPUk1BVCB9IGZyb20gJy4uLy4uL21vZGVscy9kYXRlUGlja2VyJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBEckRhdGVQaWNrZXJDdXN0b21IZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2RyLWRhdGUtcGlja2VyX2N1c3RvbS1oZWFkZXIvZHItZGF0ZS1waWNrZXJfY3VzdG9tLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IERyRGF0ZVBpY2tlclNlcnZpY2UgfSBmcm9tICcuL2RyLWRhdGUtcGlja2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCBtb21lbnQgPSByZXF1aXJlKCdtb21lbnQnKTtcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkci1kYXRlLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kci1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogRHJEYXRlUGlja2VyQ29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9XG4gIF0sXG5cbn0pXG5leHBvcnQgY2xhc3MgRHJEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2Rlc3Ryb3llZCA9IG5ldyBTdWJqZWN0PHZvaWQ+ICgpO1xuICByZWFkb25seSA9IHRydWU7XG4gIEBJbnB1dCgpIF9mb3JtYXQgPSBNQVRfREVGQVVMVF9EQVRFX0ZPUk1BVDtcbiAgY3VzdG9tSGVhZGVyID0gRHJEYXRlUGlja2VyQ3VzdG9tSGVhZGVyQ29tcG9uZW50O1xuICBAT3V0cHV0KCkgb25DaGFuZ2VGb3JtYXQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4gKCk7XG4gIEBJbnB1dCgpIHNldCBmb3JtYXQodmFsdWUpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5ub3JtYWxpemVWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLl9mb3JtYXQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZm9ybWF0Lm5leHQodmFsdWUpO1xuICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRUaW1lZnJhbWUodmFsdWUpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIHRpbWVmcmFtZVNlbGVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSB0YWtlRW5kT2ZQZXJpb2Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY3QnO1xuICBASW5wdXQoKSBtaW46IERhdGUgPSBudWxsO1xuICBASW5wdXQoKSBtYXg6IERhdGUgPSBudWxsO1xuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgcHVibGljIGRwO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmNhbGVuZGFySW5zdGFuY2UgPSB0aGlzLmRwO1xuICAgIGlmICh0aGlzLl9mb3JtYXQgPT09IE1BVF9ERUZBVUxUX0RBVEVfRk9STUFUKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgY29uc3QgcG9wdXBJbnN0YW5jZSA9IHRoaXMuZHAuX3BvcHVwQ29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgICAgIGNvbnN0IGNhbGVuZGVySW5zdGFuY2UgPSBwb3B1cEluc3RhbmNlLl9jYWxlbmRhci5fY2FsZW5kYXJIZWFkZXJQb3J0YWwuX2F0dGFjaGVkSG9zdC5fYXR0YWNoZWRSZWYuaW5zdGFuY2U7XG4gICAgICAgY2FsZW5kZXJJbnN0YW5jZS5jdXJyZW50UGVyaW9kQ2xpY2tlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0aGlzLmNhbGVuZGFyVmlld1NldHVwW3RoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lXSAmJiB0aGlzLmNhbGVuZGFyVmlld1NldHVwW3RoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lXSh0aGlzLmNhbGVuZGFyKTtcbiAgICAgICAgfTtcbiAgICAgIH0sIDEwMDApO1xuICB9XG5cbiAgY2FsZW5kYXJWaWV3U2V0dXAgPSB7XG4gICAgJ3llYXInOiAoY2FsZW5kYXIpID0+IGNhbGVuZGFyLmN1cnJlbnRWaWV3ID0gJ211bHRpLXllYXInLFxuICAgICdtb250aCc6IChjYWxlbmRhcikgPT4gY2FsZW5kYXIuY3VycmVudFZpZXcgPSAneWVhcicsXG4gICAgJ3F1YXJ0ZXInOiAoY2FsZW5kYXIpID0+IGNhbGVuZGFyLmN1cnJlbnRWaWV3ID0gJ25vbmUnLFxuICAgICdkYXknOiAoY2FsZW5kYXIpID0+IGNhbGVuZGFyLmN1cnJlbnRWaWV3ID0gJ21vbnRoJ1xuICB9XG5cbiAgcGFnaW5nU2V0dXAgPSB7XG4gICAgJ3llYXInOiAoZm9yd2FyZCkgPT4gIHRoaXMucGFnaW5nRGF0ZUNoYW5nZSgnYWRkQ2FsZW5kYXJZZWFycycsIDEsIGZvcndhcmQpLFxuICAgICdxdWFydGVyJzogKGZvcndhcmQpID0+ICB0aGlzLnBhZ2luZ0RhdGVDaGFuZ2UoJ2FkZENhbGVuZGFyTW9udGhzJywgMywgZm9yd2FyZCksXG4gICAgJ21vbnRoJzogKGZvcndhcmQpID0+ICB0aGlzLnBhZ2luZ0RhdGVDaGFuZ2UoJ2FkZENhbGVuZGFyTW9udGhzJywgMSwgZm9yd2FyZCksXG4gICAgJ2RheSc6IChmb3J3YXJkKSA9PiAgdGhpcy5wYWdpbmdEYXRlQ2hhbmdlKCdhZGRDYWxlbmRhckRheXMnLCAxLCBmb3J3YXJkKVxuICB9XG5cbiAgcHJpdmF0ZSBpbm5lclZhbHVlOiBhbnkgPSBudWxsO1xuICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPGFueT4sXG4gICAgcHJpdmF0ZSBkYXRlUGlja2VyU2VydmljZTogRHJEYXRlUGlja2VyU2VydmljZVxuICApIHsgXG4gICAgZGF0ZVBpY2tlclNlcnZpY2UuZm9ybWF0XG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuX2Zvcm1hdCA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMub25DaGFuZ2VGb3JtYXQuZW1pdCh0aGlzLm5vcm1hbGl6ZVZhbHVlKHZhbHVlKSk7XG4gICAgICAgICAgY2RyLm1hcmtGb3JDaGVjaygpXG4gICAgICAgIH0pO1xuXG4gICAgZGF0ZVBpY2tlclNlcnZpY2UudXBkYXRlZFF1YXRlclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMudHJ5VG9Ob3JtYWxhaXplVGltZWZyYW1lKHZhbHVlLCAncXVhcnRlcicpXG4gICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gIH1cblxuICB0cnlUb05vcm1hbGFpemVUaW1lZnJhbWUobm9ybWFsaXplZFJlZjogTW9tZW50LCB0aW1lZnJhbWU6IG1vbWVudC51bml0T2ZUaW1lLlN0YXJ0T2YpIHtcbiAgICBpZiAodGhpcy50YWtlRW5kT2ZQZXJpb2QpIHtcbiAgICAgICAgbm9ybWFsaXplZFJlZi5lbmRPZih0aW1lZnJhbWUpO1xuICAgIH1cbiAgICBub3JtYWxpemVkUmVmLnNldCgnaG91cicsIDEyKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lclZhbHVlO1xuICB9XG5cbiAgcHVibGljIHNldCB2YWx1ZSh2OiBudW1iZXIpIHtcbiAgICBpZiAodiAhPT0gdGhpcy5pbm5lclZhbHVlKSB7XG4gICAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHY7XG4gICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh2KTtcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuaW5uZXJWYWx1ZSkge1xuICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhpcy5pbm5lclZhbHVlID0gbW9tZW50LnVuaXgodmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbm5lclZhbHVlID0gdmFsdWU7XG4gICAgICB9XG4gICAgICB0aGlzLnRyeVRvTm9ybWFsYWl6ZVRpbWVmcmFtZSh0aGlzLmlubmVyVmFsdWUsIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lKVxuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHF1YXJ0ZXJEaXNwbGF5KCkge1xuICAgIHJldHVybiB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldFF1YXJ0ZXJEaXNwbGF5KHRoaXMudmFsdWUsIHRoaXMuX2Zvcm1hdCk7XG4gIH1cblxuICBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZS5pbmNsdWRlcygnZCcpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL2QvZywgJ0QnKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlLmluY2x1ZGVzKCdEJykpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvRC9nLCAnZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBjaG9zZW5Nb250aEhhbmRsZXIobm9ybWFsaXplZE1vbnRoOiBNb21lbnQsIGRhdGVwaWNrZXI6IE1hdERhdGVwaWNrZXI8YW55Pikge1xuICAgIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gJ21vbnRoJykge1xuICAgICAgICB0aGlzLnRyeVRvTm9ybWFsYWl6ZVRpbWVmcmFtZShub3JtYWxpemVkTW9udGgsICdtb250aCcpO1xuICAgICAgICB0aGlzLndyaXRlVmFsdWUobm9ybWFsaXplZE1vbnRoKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKG5vcm1hbGl6ZWRNb250aCk7XG4gICAgICAgIGRhdGVwaWNrZXIuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBjaG9zZW5ZZWFySGFuZGxlcihub3JtYWxpemVkWWVhcjogTW9tZW50LCBkYXRlcGlja2VyOiBNYXREYXRlcGlja2VyPGFueT4pIHtcbiAgICBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09ICd5ZWFyJykge1xuICAgICAgICB0aGlzLnRyeVRvTm9ybWFsYWl6ZVRpbWVmcmFtZShub3JtYWxpemVkWWVhciwgJ3llYXInKTtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKG5vcm1hbGl6ZWRZZWFyKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKG5vcm1hbGl6ZWRZZWFyKTtcbiAgICAgICAgZGF0ZXBpY2tlci5jbG9zZSgpO1xuICAgIH1cbiAgfVxuICBcbiAgcGFnaW5nQ2xpY2tlZChmb3J3YXJkKSB7XG4gICAgdGhpcy5wYWdpbmdTZXR1cFt0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZV0gJiYgdGhpcy5wYWdpbmdTZXR1cFt0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZV0oZm9yd2FyZCk7XG4gICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5jYWxlbmRhckluc3RhbmNlLmNsb3NlKCk7XG4gIH1cblxuICBwYWdpbmdEYXRlQ2hhbmdlKGFjdGlvbkNhbGw6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIGZvcndhcmQ6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuX2RhdGVBZGFwdGVyW2FjdGlvbkNhbGxdKHRoaXMuaW5uZXJWYWx1ZSwgZm9yd2FyZD8gYW1vdW50OiAtIGFtb3VudCk7XG4gICAgdGhpcy53cml0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sobmV3VmFsdWUpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveWVkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
@@ -1,41 +0,0 @@
1
- import { Injectable } from "@angular/core";
2
- import { Subject, BehaviorSubject } from "rxjs";
3
- import { MAT_DEFAULT_DATE_FORMAT } from "../../models/datePicker";
4
- import * as i0 from "@angular/core";
5
- const moment = require('moment');
6
- export class DrDatePickerService {
7
- constructor() {
8
- this.timeframe = 'day';
9
- this.format = new BehaviorSubject(MAT_DEFAULT_DATE_FORMAT);
10
- this.updatedQuater = new Subject();
11
- }
12
- getQuarterDisplay(value, format) {
13
- return 'Q' + moment(value).quarter() + format.charAt(1) + moment(value).year();
14
- }
15
- setTimeframe(format) {
16
- const lowerCaseFormat = format.toLowerCase();
17
- switch (true) {
18
- case lowerCaseFormat.includes('q'):
19
- this.timeframe = 'quarter';
20
- break;
21
- case lowerCaseFormat.includes('d'):
22
- this.timeframe = 'day';
23
- break;
24
- case lowerCaseFormat.includes('m'):
25
- this.timeframe = 'month';
26
- break;
27
- case lowerCaseFormat.includes('y'):
28
- this.timeframe = 'year';
29
- break;
30
- default:
31
- this.timeframe = 'day';
32
- }
33
- }
34
- }
35
- DrDatePickerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function DrDatePickerService_Factory() { return new DrDatePickerService(); }, token: DrDatePickerService, providedIn: "root" });
36
- DrDatePickerService.decorators = [
37
- { type: Injectable, args: [{
38
- providedIn: 'root',
39
- },] }
40
- ];
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9kci1kYXRlLXBpY2tlci9kci1kYXRlLXBpY2tlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRWxFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQU9qQyxNQUFNLE9BQU8sbUJBQW1CO0lBSGhDO1FBSUksY0FBUyxHQUFvQixLQUFLLENBQUM7UUFDbkMsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFTLHVCQUF1QixDQUFDLENBQUM7UUFDOUQsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0tBMEJ6QztJQXZCRyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsTUFBTTtRQUMzQixPQUFPLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkYsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFNO1FBQ2YsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdDLFFBQVEsSUFBSSxFQUFFO1lBQ1YsS0FBSyxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7Z0JBQzNCLE1BQU07WUFDVixLQUFLLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO2dCQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsTUFBTTtZQUNWLEtBQUssZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO2dCQUN6QixNQUFNO1lBQ1YsS0FBSyxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7Z0JBQ3hCLE1BQU07WUFDVjtnQkFDSSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUM5QjtJQUNMLENBQUM7Ozs7WUEvQkosVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXJcIjtcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7IFN1YmplY3QsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBNQVRfREVGQVVMVF9EQVRFX0ZPUk1BVCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvZGF0ZVBpY2tlclwiO1xuXG5jb25zdCBtb21lbnQgPSByZXF1aXJlKCdtb21lbnQnKTtcblxuZXhwb3J0IHR5cGUgVGltZWZyYW1lT3B0aW9uID0gJ2RheScgfCAncXVhcnRlcicgfCAnbW9udGgnIHwgJ3llYXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBEckRhdGVQaWNrZXJTZXJ2aWNlIHtcbiAgICB0aW1lZnJhbWU6IFRpbWVmcmFtZU9wdGlvbiA9ICdkYXknO1xuICAgIGZvcm1hdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihNQVRfREVGQVVMVF9EQVRFX0ZPUk1BVCk7ICBcbiAgICB1cGRhdGVkUXVhdGVyID0gbmV3IFN1YmplY3Q8TW9tZW50PigpOyBcbiAgICBjYWxlbmRhckluc3RhbmNlOiBNYXREYXRlcGlja2VyPGFueT47XG5cbiAgICBnZXRRdWFydGVyRGlzcGxheSh2YWx1ZSwgZm9ybWF0KXtcbiAgICAgICAgcmV0dXJuICdRJyArIG1vbWVudCh2YWx1ZSkucXVhcnRlcigpICsgZm9ybWF0LmNoYXJBdCgxKSArIG1vbWVudCh2YWx1ZSkueWVhcigpO1xuICAgIH1cbiAgICBcbiAgICBzZXRUaW1lZnJhbWUoZm9ybWF0KSB7XG4gICAgICAgIGNvbnN0IGxvd2VyQ2FzZUZvcm1hdCA9IGZvcm1hdC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgIGNhc2UgbG93ZXJDYXNlRm9ybWF0LmluY2x1ZGVzKCdxJyk6XG4gICAgICAgICAgICAgICAgdGhpcy50aW1lZnJhbWUgPSAncXVhcnRlcic7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGxvd2VyQ2FzZUZvcm1hdC5pbmNsdWRlcygnZCcpOlxuICAgICAgICAgICAgICAgIHRoaXMudGltZWZyYW1lID0gJ2RheSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGxvd2VyQ2FzZUZvcm1hdC5pbmNsdWRlcygnbScpOlxuICAgICAgICAgICAgICAgIHRoaXMudGltZWZyYW1lID0gJ21vbnRoJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgbG93ZXJDYXNlRm9ybWF0LmluY2x1ZGVzKCd5Jyk6XG4gICAgICAgICAgICAgICAgdGhpcy50aW1lZnJhbWUgPSAneWVhcic7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMudGltZWZyYW1lID0gJ2RheSc7XG4gICAgICAgIH1cbiAgICB9XG59Il19