@datarailsshared/datarailsshared 1.6.273 → 1.6.277

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 (88) hide show
  1. package/datarailsshared-datarailsshared-1.6.277.tgz +0 -0
  2. package/esm2022/lib/dr-inputs/date-pickers/dr-fiscal-month-calendar-picker/dr-fiscal-month-calendar-picker.component.mjs +2 -2
  3. package/esm2022/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.mjs +34 -19
  4. package/esm2022/lib/dr-tags/_consts/scenario-tags-config.mjs +87 -0
  5. package/esm2022/lib/dr-tags/_interfaces/scenario.mjs +8 -0
  6. package/esm2022/lib/dr-tags/_services/scenario.service.mjs +195 -0
  7. package/esm2022/lib/dr-tags/_services/tags-constructor.service.mjs +71 -0
  8. package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/any-tag.component.mjs +42 -0
  9. package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-date.component.mjs +151 -0
  10. package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-day/dr-tag-day.component.mjs +98 -0
  11. package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-forecast/dr-tag-forecast.component.mjs +225 -0
  12. package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-forecast/forecast-tag.service.mjs +87 -0
  13. package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-month/dr-tag-month.component.mjs +101 -0
  14. package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-quarter/dr-tag-quarter.component.mjs +129 -0
  15. package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-week/dr-tag-week.component.mjs +105 -0
  16. package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-year/dr-tag-year.component.mjs +99 -0
  17. package/esm2022/lib/dr-tags/dr-tag/dr-tag-dynamic/dr-tag-dynamic.component.mjs +230 -0
  18. package/esm2022/lib/dr-tags/dr-tag/dr-tag-list/dr-tag-list.component.mjs +85 -0
  19. package/esm2022/lib/dr-tags/dr-tag/dr-tag.component.mjs +241 -0
  20. package/esm2022/lib/dr-tags/dr-tag/dr-tag.types.mjs +2 -0
  21. package/esm2022/lib/dr-tags/dr-tags-and-scenario/dr-tags-and-scenario.component.mjs +103 -0
  22. package/esm2022/lib/dr-tags/dr-tags-and-scenario-constructor/dr-tags-and-scenario-constructor.component.mjs +107 -0
  23. package/esm2022/lib/dr-tags/dr-tags-constructor/dr-tags-constructor.component.mjs +164 -0
  24. package/esm2022/local-api.mjs +18 -25
  25. package/fesm2022/datarailsshared-datarailsshared.mjs +8655 -8743
  26. package/fesm2022/datarailsshared-datarailsshared.mjs.map +1 -1
  27. package/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.d.ts +6 -3
  28. package/lib/{dr-scenario/consts → dr-tags/_consts}/scenario-tags-config.d.ts +1 -1
  29. package/lib/{dr-scenario/services → dr-tags/_services}/scenario.service.d.ts +1 -1
  30. package/lib/{dr-tags-constructor → dr-tags/_services}/tags-constructor.service.d.ts +2 -2
  31. package/lib/{date-tags → dr-tags/dr-tag/dr-tag-date}/any-tag.component.d.ts +1 -1
  32. package/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-date.component.d.ts +18 -0
  33. package/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-day/dr-tag-day.component.d.ts +14 -0
  34. package/lib/{date-tags/forecast-tag/forecast-tag.component.d.ts → dr-tags/dr-tag/dr-tag-date/dr-tag-forecast/dr-tag-forecast.component.d.ts} +5 -5
  35. package/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-month/dr-tag-month.component.d.ts +14 -0
  36. package/lib/{date-tags/quarter-tag/quarter-tag.component.d.ts → dr-tags/dr-tag/dr-tag-date/dr-tag-quarter/dr-tag-quarter.component.d.ts} +3 -3
  37. package/lib/{date-tags/week-tag/week-tag.component.d.ts → dr-tags/dr-tag/dr-tag-date/dr-tag-week/dr-tag-week.component.d.ts} +3 -3
  38. package/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-year/dr-tag-year.component.d.ts +14 -0
  39. package/lib/{dr-dynamic-tag/dr-dynamic-tag.component.d.ts → dr-tags/dr-tag/dr-tag-dynamic/dr-tag-dynamic.component.d.ts} +5 -5
  40. package/lib/dr-tags/dr-tag/dr-tag-list/dr-tag-list.component.d.ts +15 -0
  41. package/lib/dr-tags/{dr-tag.component.d.ts → dr-tag/dr-tag.component.d.ts} +2 -2
  42. package/lib/dr-tags/dr-tags-and-scenario/dr-tags-and-scenario.component.d.ts +31 -0
  43. package/lib/{dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.d.ts → dr-tags/dr-tags-and-scenario-constructor/dr-tags-and-scenario-constructor.component.d.ts} +6 -6
  44. package/lib/{dr-tags-constructor → dr-tags/dr-tags-constructor}/dr-tags-constructor.component.d.ts +6 -6
  45. package/local-api.d.ts +17 -24
  46. package/package.json +1 -1
  47. package/datarailsshared-datarailsshared-1.6.273.tgz +0 -0
  48. package/esm2022/lib/date-tags/any-tag.component.mjs +0 -42
  49. package/esm2022/lib/date-tags/date-tag.component.mjs +0 -131
  50. package/esm2022/lib/date-tags/date-tag.module.mjs +0 -53
  51. package/esm2022/lib/date-tags/day-tag/day-tag.component.mjs +0 -95
  52. package/esm2022/lib/date-tags/forecast-tag/forecast-tag.component.mjs +0 -222
  53. package/esm2022/lib/date-tags/forecast-tag/forecast-tag.service.mjs +0 -87
  54. package/esm2022/lib/date-tags/month-tag/month-tag.component.mjs +0 -98
  55. package/esm2022/lib/date-tags/quarter-tag/quarter-tag.component.mjs +0 -126
  56. package/esm2022/lib/date-tags/week-tag/week-tag.component.mjs +0 -102
  57. package/esm2022/lib/date-tags/year-tag/year-tag.component.mjs +0 -96
  58. package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.component.mjs +0 -227
  59. package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.module.mjs +0 -21
  60. package/esm2022/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.mjs +0 -104
  61. package/esm2022/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.mjs +0 -100
  62. package/esm2022/lib/dr-scenario/consts/scenario-tags-config.mjs +0 -87
  63. package/esm2022/lib/dr-scenario/dr-scenario.module.mjs +0 -27
  64. package/esm2022/lib/dr-scenario/interfaces/scenario.mjs +0 -8
  65. package/esm2022/lib/dr-scenario/services/scenario.service.mjs +0 -195
  66. package/esm2022/lib/dr-tags/dr-tag.component.mjs +0 -240
  67. package/esm2022/lib/dr-tags/dr-tag.module.mjs +0 -23
  68. package/esm2022/lib/dr-tags/dr-tag.types.mjs +0 -2
  69. package/esm2022/lib/dr-tags-constructor/dr-tags-constructor.component.mjs +0 -161
  70. package/esm2022/lib/dr-tags-constructor/dr-tags-constructor.module.mjs +0 -24
  71. package/esm2022/lib/dr-tags-constructor/tags-constructor.service.mjs +0 -71
  72. package/esm2022/lib/list-tags/list-tag.component.mjs +0 -82
  73. package/esm2022/lib/list-tags/list-tag.module.mjs +0 -22
  74. package/lib/date-tags/date-tag.component.d.ts +0 -18
  75. package/lib/date-tags/date-tag.module.d.ts +0 -21
  76. package/lib/date-tags/day-tag/day-tag.component.d.ts +0 -14
  77. package/lib/date-tags/month-tag/month-tag.component.d.ts +0 -14
  78. package/lib/date-tags/year-tag/year-tag.component.d.ts +0 -14
  79. package/lib/dr-dynamic-tag/dr-dynamic-tag.module.d.ts +0 -10
  80. package/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.d.ts +0 -31
  81. package/lib/dr-scenario/dr-scenario.module.d.ts +0 -13
  82. package/lib/dr-tags/dr-tag.module.d.ts +0 -11
  83. package/lib/dr-tags-constructor/dr-tags-constructor.module.d.ts +0 -10
  84. package/lib/list-tags/list-tag.component.d.ts +0 -15
  85. package/lib/list-tags/list-tag.module.d.ts +0 -10
  86. /package/lib/{dr-scenario/interfaces → dr-tags/_interfaces}/scenario.d.ts +0 -0
  87. /package/lib/{date-tags/forecast-tag → dr-tags/dr-tag/dr-tag-date/dr-tag-forecast}/forecast-tag.service.d.ts +0 -0
  88. /package/lib/dr-tags/{dr-tag.types.d.ts → dr-tag/dr-tag.types.d.ts} +0 -0
@@ -1,95 +0,0 @@
1
- import { Component, HostBinding, Input } from '@angular/core';
2
- import { AnyTagComponent } from '../any-tag.component';
3
- import { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from '@angular/material-moment-adapter';
4
- import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
5
- import moment from 'moment';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/forms";
8
- import * as i2 from "../../dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component";
9
- const DAY_FORMATS = {
10
- parse: {
11
- dateInput: 'DD-MM-YYYY',
12
- },
13
- display: {
14
- dateInput: 'DD.MM.YYYY',
15
- monthYearLabel: 'MMMM YYYY',
16
- dateA11yLabel: 'LL',
17
- monthYearA11yLabel: 'MMMM YYYY',
18
- },
19
- };
20
- export class DayTagComponent extends AnyTagComponent {
21
- get isLocked() {
22
- return this.date ? !this.dateFilter(moment.unix(this.date)) : false;
23
- }
24
- constructor() {
25
- super();
26
- this.lockedDate = [];
27
- }
28
- initDate() {
29
- this.date = this.defaultValue || moment().unix();
30
- this.dateObj.date = this.date;
31
- }
32
- initName() {
33
- if (!this.name) {
34
- this.name = 'Day';
35
- }
36
- }
37
- chosenTagHandler(value) {
38
- const date = moment.unix(value);
39
- const resultTag = {
40
- name: this.name,
41
- value: date.unix(),
42
- label: date.format('MM/DD/YYYY'),
43
- locked: !this.dateFilter(date),
44
- };
45
- console.log('resultTag', resultTag);
46
- this.dateChange.emit(resultTag);
47
- }
48
- dateFilter(momentData) {
49
- const date = momentData.date();
50
- return !this.lockedDate.some((timestamp) => {
51
- const lockDate = moment.unix(timestamp);
52
- return lockDate.date() === date;
53
- });
54
- }
55
- /** @nocollapse */ static { this.ɵfac = function DayTagComponent_Factory(t) { return new (t || DayTagComponent)(); }; }
56
- /** @nocollapse */ static { this.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: DayTagComponent, selectors: [["day-tag"]], hostVars: 2, hostBindings: function DayTagComponent_HostBindings(rf, ctx) { if (rf & 2) {
57
- i0.ɵɵclassProp("locked", ctx.isLocked);
58
- } }, inputs: { lockedDate: "lockedDate" }, features: [i0.ɵɵProvidersFeature([
59
- {
60
- provide: DateAdapter,
61
- useClass: MomentDateAdapter,
62
- deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
63
- },
64
- { provide: MAT_DATE_FORMATS, useValue: DAY_FORMATS },
65
- ]), i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 4, consts: [[1, "tag-wrapper"], [1, "tag__label"], ["format", "day", 3, "ngModel", "disabled", "datepickerFilter", "ngModelChange"]], template: function DayTagComponent_Template(rf, ctx) { if (rf & 1) {
66
- i0.ɵɵelementStart(0, "div", 0)(1, "p", 1);
67
- i0.ɵɵtext(2);
68
- i0.ɵɵelementEnd();
69
- i0.ɵɵelementStart(3, "dr-date-picker", 2);
70
- i0.ɵɵlistener("ngModelChange", function DayTagComponent_Template_dr_date_picker_ngModelChange_3_listener($event) { return ctx.date = $event; })("ngModelChange", function DayTagComponent_Template_dr_date_picker_ngModelChange_3_listener($event) { return ctx.chosenTagHandler($event); });
71
- i0.ɵɵelementEnd()();
72
- } if (rf & 2) {
73
- i0.ɵɵadvance(2);
74
- i0.ɵɵtextInterpolate(ctx.name);
75
- i0.ɵɵadvance(1);
76
- i0.ɵɵproperty("ngModel", ctx.date)("disabled", ctx.disabled)("datepickerFilter", ctx.dateFilter.bind(ctx));
77
- } }, dependencies: [i1.NgControlStatus, i1.NgModel, i2.DrDatePickerComponent], styles: [".locked[_nghost-%COMP%] > .tag-wrapper[_ngcontent-%COMP%] > dr-date-picker[_ngcontent-%COMP%]{opacity:.4}.tag__label[_ngcontent-%COMP%]{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}"] }); }
78
- }
79
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DayTagComponent, [{
80
- type: Component,
81
- args: [{ selector: 'day-tag', providers: [
82
- {
83
- provide: DateAdapter,
84
- useClass: MomentDateAdapter,
85
- deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
86
- },
87
- { provide: MAT_DATE_FORMATS, useValue: DAY_FORMATS },
88
- ], template: "<div class=\"tag-wrapper\">\n <p class=\"tag__label\">{{ name }}</p>\n <dr-date-picker\n format=\"day\"\n [(ngModel)]=\"date\"\n [disabled]=\"disabled\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n (ngModelChange)=\"chosenTagHandler($event)\"></dr-date-picker>\n</div>\n", styles: [":host.locked>.tag-wrapper>dr-date-picker{opacity:.4}.tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}\n"] }]
89
- }], function () { return []; }, { isLocked: [{
90
- type: HostBinding,
91
- args: ['class.locked']
92
- }], lockedDate: [{
93
- type: Input
94
- }] }); })();
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LXRhZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kYXRlLXRhZ3MvZGF5LXRhZy9kYXktdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9kYXktdGFnL2RheS10YWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RyxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hGLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7OztBQUU1QixNQUFNLFdBQVcsR0FBRztJQUNoQixLQUFLLEVBQUU7UUFDSCxTQUFTLEVBQUUsWUFBWTtLQUMxQjtJQUNELE9BQU8sRUFBRTtRQUNMLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLGNBQWMsRUFBRSxXQUFXO1FBQzNCLGFBQWEsRUFBRSxJQUFJO1FBQ25CLGtCQUFrQixFQUFFLFdBQVc7S0FDbEM7Q0FDSixDQUFDO0FBZUYsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZUFBZTtJQUNoRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDeEUsQ0FBQztJQU1EO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFMSCxlQUFVLEdBQVUsRUFBRSxDQUFDO0lBTWhDLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1NBQ3JCO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQWE7UUFDMUIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBYTtZQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFDaEMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7U0FDakMsQ0FBQztRQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxVQUFVLENBQUMsVUFBVTtRQUNqQixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFL0IsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDdkMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN4QyxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO21HQTVDUSxlQUFlO21HQUFmLGVBQWU7O29GQVRiO2dCQUNQO29CQUNJLE9BQU8sRUFBRSxXQUFXO29CQUNwQixRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixJQUFJLEVBQUUsQ0FBQyxlQUFlLEVBQUUsK0JBQStCLENBQUM7aUJBQzNEO2dCQUNELEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7YUFDdkQ7WUM5QkwsOEJBQXlCLFdBQUE7WUFDQyxZQUFVO1lBQUEsaUJBQUk7WUFDcEMseUNBSytDO1lBSDNDLCtJQUFrQiw2R0FHRCw0QkFBd0IsSUFIdkI7WUFHeUIsaUJBQWlCLEVBQUE7O1lBTjFDLGVBQVU7WUFBViw4QkFBVTtZQUc1QixlQUFrQjtZQUFsQixrQ0FBa0IsMEJBQUEsOENBQUE7Ozt1RkQ0QmIsZUFBZTtjQWIzQixTQUFTOzJCQUVJLFNBQVMsYUFFUjtvQkFDUDt3QkFDSSxPQUFPLEVBQUUsV0FBVzt3QkFDcEIsUUFBUSxFQUFFLGlCQUFpQjt3QkFDM0IsSUFBSSxFQUFFLENBQUMsZUFBZSxFQUFFLCtCQUErQixDQUFDO3FCQUMzRDtvQkFDRCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO2lCQUN2RDtzQ0FJRyxRQUFRO2tCQURYLFdBQVc7bUJBQUMsY0FBYztZQUtsQixVQUFVO2tCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElEYXRlVGFnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlcnZlclRhZ3MnO1xuaW1wb3J0IHsgQW55VGFnQ29tcG9uZW50IH0gZnJvbSAnLi4vYW55LXRhZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUywgTW9tZW50RGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlcic7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmNvbnN0IERBWV9GT1JNQVRTID0ge1xuICAgIHBhcnNlOiB7XG4gICAgICAgIGRhdGVJbnB1dDogJ0RELU1NLVlZWVknLFxuICAgIH0sXG4gICAgZGlzcGxheToge1xuICAgICAgICBkYXRlSW5wdXQ6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgbW9udGhZZWFyTGFiZWw6ICdNTU1NIFlZWVknLFxuICAgICAgICBkYXRlQTExeUxhYmVsOiAnTEwnLFxuICAgICAgICBtb250aFllYXJBMTF5TGFiZWw6ICdNTU1NIFlZWVknLFxuICAgIH0sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJ2RheS10YWcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHNlbGVjdG9yOiAnZGF5LXRhZycsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGF5LXRhZy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBEYXRlQWRhcHRlcixcbiAgICAgICAgICAgIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlcixcbiAgICAgICAgICAgIGRlcHM6IFtNQVRfREFURV9MT0NBTEUsIE1BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlNdLFxuICAgICAgICB9LFxuICAgICAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBEQVlfRk9STUFUUyB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIERheVRhZ0NvbXBvbmVudCBleHRlbmRzIEFueVRhZ0NvbXBvbmVudCB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5sb2NrZWQnKVxuICAgIGdldCBpc0xvY2tlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZSA/ICF0aGlzLmRhdGVGaWx0ZXIobW9tZW50LnVuaXgodGhpcy5kYXRlKSkgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBsb2NrZWREYXRlOiBhbnlbXSA9IFtdO1xuXG4gICAgZGF0ZTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIGluaXREYXRlKCkge1xuICAgICAgICB0aGlzLmRhdGUgPSB0aGlzLmRlZmF1bHRWYWx1ZSB8fCBtb21lbnQoKS51bml4KCk7XG4gICAgICAgIHRoaXMuZGF0ZU9iai5kYXRlID0gdGhpcy5kYXRlO1xuICAgIH1cblxuICAgIGluaXROYW1lKCkge1xuICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgICAgICAgdGhpcy5uYW1lID0gJ0RheSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaG9zZW5UYWdIYW5kbGVyKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudC51bml4KHZhbHVlKTtcbiAgICAgICAgY29uc3QgcmVzdWx0VGFnOiBJRGF0ZVRhZyA9IHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiBkYXRlLnVuaXgoKSxcbiAgICAgICAgICAgIGxhYmVsOiBkYXRlLmZvcm1hdCgnTU0vREQvWVlZWScpLFxuICAgICAgICAgICAgbG9ja2VkOiAhdGhpcy5kYXRlRmlsdGVyKGRhdGUpLFxuICAgICAgICB9O1xuICAgICAgICBjb25zb2xlLmxvZygncmVzdWx0VGFnJywgcmVzdWx0VGFnKTtcbiAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQocmVzdWx0VGFnKTtcbiAgICB9XG5cbiAgICBkYXRlRmlsdGVyKG1vbWVudERhdGEpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudERhdGEuZGF0ZSgpO1xuXG4gICAgICAgIHJldHVybiAhdGhpcy5sb2NrZWREYXRlLnNvbWUoKHRpbWVzdGFtcCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbG9ja0RhdGUgPSBtb21lbnQudW5peCh0aW1lc3RhbXApO1xuICAgICAgICAgICAgcmV0dXJuIGxvY2tEYXRlLmRhdGUoKSA9PT0gZGF0ZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRhZy13cmFwcGVyXCI+XG4gICAgPHAgY2xhc3M9XCJ0YWdfX2xhYmVsXCI+e3sgbmFtZSB9fTwvcD5cbiAgICA8ZHItZGF0ZS1waWNrZXJcbiAgICAgICAgZm9ybWF0PVwiZGF5XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJkYXRlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2RhdGVwaWNrZXJGaWx0ZXJdPVwiZGF0ZUZpbHRlci5iaW5kKHRoaXMpXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hvc2VuVGFnSGFuZGxlcigkZXZlbnQpXCI+PC9kci1kYXRlLXBpY2tlcj5cbjwvZGl2PlxuIl19
@@ -1,222 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { AnyTagComponent } from '../any-tag.component';
3
- import { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';
4
- import { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from '@angular/material-moment-adapter';
5
- import { find as _find, cloneDeep as _cloneDeep } from 'lodash';
6
- import moment from 'moment';
7
- import { DatePickerPeriodPosition } from '../../models/datePicker';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/common";
10
- import * as i2 from "@angular/forms";
11
- import * as i3 from "../../dr-inputs/dr-select/dr-select.component";
12
- import * as i4 from "../../dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component";
13
- function ForecastTagComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
14
- const _r4 = i0.ɵɵgetCurrentView();
15
- i0.ɵɵelementContainerStart(0);
16
- i0.ɵɵelementStart(1, "div", 2)(2, "div", 3)(3, "p", 4);
17
- i0.ɵɵtext(4);
18
- i0.ɵɵelementEnd();
19
- i0.ɵɵelementStart(5, "dr-select", 5);
20
- i0.ɵɵlistener("ngModelChange", function ForecastTagComponent_ng_container_0_Template_dr_select_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.forecastValue = $event); })("ngModelChange", function ForecastTagComponent_ng_container_0_Template_dr_select_ngModelChange_5_listener() { i0.ɵɵrestoreView(_r4); const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.changeTagInputHandler()); });
21
- i0.ɵɵelementEnd()();
22
- i0.ɵɵelementStart(6, "div", 6)(7, "p", 4);
23
- i0.ɵɵtext(8, "Year");
24
- i0.ɵɵelementEnd();
25
- i0.ɵɵelementStart(9, "dr-date-picker", 7);
26
- i0.ɵɵlistener("ngModelChange", function ForecastTagComponent_ng_container_0_Template_dr_date_picker_ngModelChange_9_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r6 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r6.forecastYear = $event); })("ngModelChange", function ForecastTagComponent_ng_container_0_Template_dr_date_picker_ngModelChange_9_listener() { i0.ɵɵrestoreView(_r4); const ctx_r7 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r7.changeYearInputHandler()); });
27
- i0.ɵɵelementEnd()()();
28
- i0.ɵɵelementContainerEnd();
29
- } if (rf & 2) {
30
- const ctx_r0 = i0.ɵɵnextContext();
31
- i0.ɵɵadvance(4);
32
- i0.ɵɵtextInterpolate((ctx_r0.tagAdditionalSettings == null ? null : ctx_r0.tagAdditionalSettings.tagLabel) || "Forecast");
33
- i0.ɵɵadvance(1);
34
- i0.ɵɵproperty("ngModel", ctx_r0.forecastValue)("disabled", ctx_r0.disabled)("items", ctx_r0.forecastTags);
35
- i0.ɵɵadvance(4);
36
- i0.ɵɵproperty("ngModel", ctx_r0.forecastYear)("datepickerFilter", ctx_r0.dateFilter.bind(ctx_r0))("periodPosition", ctx_r0.datePickerPeriodPosition.MIDDLE_OF_PERIOD)("disabled", ctx_r0.disabled);
37
- } }
38
- function ForecastTagComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
39
- const _r9 = i0.ɵɵgetCurrentView();
40
- i0.ɵɵelementStart(0, "div", 8)(1, "p", 4);
41
- i0.ɵɵtext(2);
42
- i0.ɵɵelementEnd();
43
- i0.ɵɵelementStart(3, "div", 9)(4, "dr-date-picker", 10);
44
- i0.ɵɵlistener("ngModelChange", function ForecastTagComponent_ng_template_1_Template_dr_date_picker_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r8 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r8.forecastYear = $event); })("ngModelChange", function ForecastTagComponent_ng_template_1_Template_dr_date_picker_ngModelChange_4_listener() { i0.ɵɵrestoreView(_r9); const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.changeYearInputHandler()); });
45
- i0.ɵɵelementEnd();
46
- i0.ɵɵelementStart(5, "dr-select", 11);
47
- i0.ɵɵlistener("ngModelChange", function ForecastTagComponent_ng_template_1_Template_dr_select_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r11 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r11.forecastValue = $event); })("ngModelChange", function ForecastTagComponent_ng_template_1_Template_dr_select_ngModelChange_5_listener() { i0.ɵɵrestoreView(_r9); const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.changeTagInputHandler()); });
48
- i0.ɵɵelementEnd()()();
49
- } if (rf & 2) {
50
- const ctx_r2 = i0.ɵɵnextContext();
51
- i0.ɵɵadvance(2);
52
- i0.ɵɵtextInterpolate((ctx_r2.tagAdditionalSettings == null ? null : ctx_r2.tagAdditionalSettings.tagLabel) || "Scenario cycle");
53
- i0.ɵɵadvance(2);
54
- i0.ɵɵproperty("ngModel", ctx_r2.forecastYear)("datepickerFilter", ctx_r2.dateFilter.bind(ctx_r2))("disabled", ctx_r2.disabled);
55
- i0.ɵɵadvance(1);
56
- i0.ɵɵproperty("ngModel", ctx_r2.forecastValue)("disabled", ctx_r2.disabled)("items", ctx_r2.forecastTags);
57
- } }
58
- /* BEFORE MERGE INTO MASTER YOU MUST CONSULT WITH ARTEM LAZIUK !!!*/
59
- const FORECAST_DEFAULT_DATE_FORMAT = 'MM/DD/yyyy';
60
- export class ForecastTagComponent extends AnyTagComponent {
61
- constructor() {
62
- super();
63
- this.datePickerPeriodPosition = DatePickerPeriodPosition;
64
- this.lockedDate = [];
65
- this.tagAdditionalSettings = {};
66
- this.forecastValue = undefined;
67
- this.isDateEventHappened = false;
68
- this.forecastTags = [
69
- { value: 0, label: '0+12', disabled: false },
70
- { value: 1, label: '1+11', disabled: false },
71
- { value: 2, label: '2+10', disabled: false },
72
- { value: 3, label: '3+9', disabled: false },
73
- { value: 4, label: '4+8', disabled: false },
74
- { value: 5, label: '5+7', disabled: false },
75
- { value: 6, label: '6+6', disabled: false },
76
- { value: 7, label: '7+5', disabled: false },
77
- { value: 8, label: '8+4', disabled: false },
78
- { value: 9, label: '9+3', disabled: false },
79
- { value: 10, label: '10+2', disabled: false },
80
- { value: 11, label: '11+1', disabled: false },
81
- ];
82
- this.initDateValue = null;
83
- this.firstDayMonthOfYear = '01';
84
- }
85
- ngOnChanges(changes) {
86
- if (changes.lockedDate) {
87
- this.updateLockedDate();
88
- }
89
- }
90
- initDate() {
91
- const dateVal = this.defaultValue ? moment.unix(this.defaultValue) : moment();
92
- const fiscal_year_starts_from = this.fiscalYearStartsFrom || 1;
93
- this.forecastValue = this.getFiscalMonthFromDate(dateVal, fiscal_year_starts_from) - 1;
94
- this.forecastYear = moment
95
- .utc(`${this.firstDayMonthOfYear}/${this.firstDayMonthOfYear}/${this.getFiscalYearFromDate(dateVal, fiscal_year_starts_from, this.fiscalYearBack)}`, FORECAST_DEFAULT_DATE_FORMAT)
96
- .set('hours', 12)
97
- .unix();
98
- this.updateLockedDate();
99
- if (!this.initDateValue) {
100
- this.initDateValue = _cloneDeep(this.dateObj.date);
101
- }
102
- }
103
- updateLockedDate() {
104
- const year = moment.unix(this.forecastYear).year();
105
- this.forecastTags = this.forecastTags.map((forecastTag) => {
106
- forecastTag.disabled = this.lockedDate.some((timestamp) => {
107
- const locked = moment.unix(timestamp);
108
- return locked.month() === forecastTag.value && +locked.year() === +year;
109
- });
110
- return forecastTag;
111
- });
112
- }
113
- initName() {
114
- if (!this.name) {
115
- this.name = 'Forecast (New)';
116
- }
117
- }
118
- getFiscalMonthFromDate(dateObj, fiscal_year_starts_from) {
119
- const all_months = [];
120
- for (let i = fiscal_year_starts_from; i < 13; i++) {
121
- all_months.push(i);
122
- }
123
- for (let i = 1; i < fiscal_year_starts_from; i++) {
124
- all_months.push(i);
125
- }
126
- return all_months.indexOf(dateObj.month() + 1) + 1;
127
- }
128
- getFiscalYearFromDate(dateObj, fiscal_year_starts_from, fiscal_year_back) {
129
- let fiscal_year = dateObj.year();
130
- if (!fiscal_year_back) {
131
- if (dateObj.month() + 1 >= fiscal_year_starts_from && fiscal_year_starts_from !== 1) {
132
- fiscal_year += 1;
133
- }
134
- }
135
- else {
136
- if (dateObj.month() + 1 < fiscal_year_starts_from && fiscal_year_starts_from !== 1) {
137
- fiscal_year -= 1;
138
- }
139
- }
140
- return fiscal_year;
141
- }
142
- changeTagInputHandler() {
143
- this.chosenTagHandler();
144
- }
145
- changeYearInputHandler() {
146
- this.updateLockedDate();
147
- this.initDateValue = _cloneDeep(this.dateObj.date);
148
- this.chosenTagHandler();
149
- }
150
- chosenTagHandler() {
151
- if (this.isDateEventHappened)
152
- return;
153
- const month = this.forecastValue;
154
- const year = moment.unix(this.forecastYear);
155
- const fiscal_year_starts_from = this.fiscalYearStartsFrom || 1;
156
- const fiscal_year_back = this.fiscalYearBack || false;
157
- if (!Number.isNaN(month) && !Number.isNaN(year)) {
158
- const date = new Date(year.year(), month, 1, 12, 0, 0, 0);
159
- if (fiscal_year_starts_from !== 1) {
160
- if (!fiscal_year_back) {
161
- date.setMonth(date.getMonth() - 13 + fiscal_year_starts_from);
162
- }
163
- else {
164
- date.setMonth(date.getMonth() - 1 + fiscal_year_starts_from);
165
- }
166
- }
167
- this.dateObj.date = moment(date).unix();
168
- this.isDateEventHappened = true;
169
- setTimeout(() => {
170
- this.isDateEventHappened = false;
171
- });
172
- }
173
- const resultTag = {
174
- name: this.name,
175
- value: this.dateObj.date,
176
- label: `${_find(this.forecastTags, { value: this.forecastValue })?.label} (${year.year()})`,
177
- locked: !this.dateFilter(moment.unix(this.dateObj.date)),
178
- };
179
- this.dateChange.emit(resultTag);
180
- }
181
- dateFilter(date) {
182
- const month = this.forecastValue;
183
- const year = date.year();
184
- return !this.lockedDate.some((timestamp) => {
185
- const lockDate = moment.unix(timestamp);
186
- return lockDate.month() === month && lockDate.year() === year;
187
- });
188
- }
189
- /** @nocollapse */ static { this.ɵfac = function ForecastTagComponent_Factory(t) { return new (t || ForecastTagComponent)(); }; }
190
- /** @nocollapse */ static { this.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: ForecastTagComponent, selectors: [["forecast-tag"]], inputs: { fiscalYearStartsFrom: "fiscalYearStartsFrom", fiscalYearBack: "fiscalYearBack", lockedDate: "lockedDate", tagAdditionalSettings: "tagAdditionalSettings" }, features: [i0.ɵɵProvidersFeature([
191
- {
192
- provide: DateAdapter,
193
- useClass: MomentDateAdapter,
194
- deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
195
- },
196
- ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 3, vars: 2, consts: [[4, "ngIf", "ngIfElse"], ["splitInputsTpl", ""], [1, "forecast-tag__container"], [1, "forecast-tag__forecast"], [1, "tag__label"], ["placeholder", "Select", "bindLabel", "label", "bindValue", "value", 3, "ngModel", "disabled", "items", "ngModelChange"], [1, "forecast-tag__year"], ["format", "year", 3, "ngModel", "datepickerFilter", "periodPosition", "disabled", "ngModelChange"], [1, "forecast-tag__split-container"], [1, "forecast-tag__split-dropdowns"], ["format", "year", 1, "no-right-border-radius", "no-right-border", 3, "ngModel", "datepickerFilter", "disabled", "ngModelChange"], ["placeholder", "Select", "bindLabel", "label", "bindValue", "value", "no-left-border-radius", "", 3, "ngModel", "disabled", "items", "ngModelChange"]], template: function ForecastTagComponent_Template(rf, ctx) { if (rf & 1) {
197
- i0.ɵɵtemplate(0, ForecastTagComponent_ng_container_0_Template, 10, 8, "ng-container", 0);
198
- i0.ɵɵtemplate(1, ForecastTagComponent_ng_template_1_Template, 6, 7, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
199
- } if (rf & 2) {
200
- const _r1 = i0.ɵɵreference(2);
201
- i0.ɵɵproperty("ngIf", !(ctx.tagAdditionalSettings == null ? null : ctx.tagAdditionalSettings.showSplitDynamicTagInputs))("ngIfElse", _r1);
202
- } }, dependencies: [i1.NgIf, i2.NgControlStatus, i2.NgModel, i3.DrSelectComponent, i4.DrDatePickerComponent], styles: [".tag__label[_ngcontent-%COMP%]{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}.forecast-tag__container[_ngcontent-%COMP%]{display:flex;align-items:center}.forecast-tag__split-container[_ngcontent-%COMP%]{display:flex;flex-direction:column}.forecast-tag__split-dropdowns[_ngcontent-%COMP%]{display:flex;flex-direction:row}.forecast-tag__year[_ngcontent-%COMP%]{width:50%;margin-left:24px}.forecast-tag__forecast[_ngcontent-%COMP%]{width:50%}dr-date-picker.no-right-border-radius[_ngcontent-%COMP%] {border-bottom-right-radius:0!important;border-top-right-radius:0!important}dr-date-picker.no-right-border[_ngcontent-%COMP%] {border-right:none!important}"] }); }
203
- }
204
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ForecastTagComponent, [{
205
- type: Component,
206
- args: [{ selector: 'forecast-tag', providers: [
207
- {
208
- provide: DateAdapter,
209
- useClass: MomentDateAdapter,
210
- deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
211
- },
212
- ], template: "<ng-container *ngIf=\"!tagAdditionalSettings?.showSplitDynamicTagInputs; else splitInputsTpl\">\n <div class=\"forecast-tag__container\">\n <div class=\"forecast-tag__forecast\">\n <p class=\"tag__label\">{{ tagAdditionalSettings?.tagLabel || 'Forecast' }}</p>\n <dr-select\n placeholder=\"Select\"\n [(ngModel)]=\"forecastValue\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"disabled\"\n [items]=\"forecastTags\"\n (ngModelChange)=\"changeTagInputHandler()\"></dr-select>\n </div>\n <div class=\"forecast-tag__year\">\n <p class=\"tag__label\">Year</p>\n <dr-date-picker\n format=\"year\"\n [(ngModel)]=\"forecastYear\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n [periodPosition]=\"datePickerPeriodPosition.MIDDLE_OF_PERIOD\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"changeYearInputHandler()\"></dr-date-picker>\n </div>\n </div>\n</ng-container>\n\n<ng-template #splitInputsTpl>\n <div class=\"forecast-tag__split-container\">\n <p class=\"tag__label\">{{ tagAdditionalSettings?.tagLabel || 'Scenario cycle' }}</p>\n <div class=\"forecast-tag__split-dropdowns\">\n <dr-date-picker\n format=\"year\"\n [(ngModel)]=\"forecastYear\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n [disabled]=\"disabled\"\n class=\"no-right-border-radius no-right-border\"\n (ngModelChange)=\"changeYearInputHandler()\"></dr-date-picker>\n <dr-select\n placeholder=\"Select\"\n [(ngModel)]=\"forecastValue\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"disabled\"\n [items]=\"forecastTags\"\n no-left-border-radius\n (ngModelChange)=\"changeTagInputHandler()\"></dr-select>\n </div>\n </div>\n</ng-template>\n", styles: [".tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}.forecast-tag__container{display:flex;align-items:center}.forecast-tag__split-container{display:flex;flex-direction:column}.forecast-tag__split-dropdowns{display:flex;flex-direction:row}.forecast-tag__year{width:50%;margin-left:24px}.forecast-tag__forecast{width:50%}dr-date-picker.no-right-border-radius ::ng-deep{border-bottom-right-radius:0!important;border-top-right-radius:0!important}dr-date-picker.no-right-border ::ng-deep{border-right:none!important}\n"] }]
213
- }], function () { return []; }, { fiscalYearStartsFrom: [{
214
- type: Input
215
- }], fiscalYearBack: [{
216
- type: Input
217
- }], lockedDate: [{
218
- type: Input
219
- }], tagAdditionalSettings: [{
220
- type: Input
221
- }] }); })();
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9mb3JlY2FzdC10YWcvZm9yZWNhc3QtdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9mb3JlY2FzdC10YWcvZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RyxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxTQUFTLElBQUksVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hFLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7SUNSbkUsNkJBQTZGO0lBQ3pGLDhCQUFxQyxhQUFBLFdBQUE7SUFFUCxZQUFtRDtJQUFBLGlCQUFJO0lBQzdFLG9DQU84QztJQUwxQyxvUEFBMkIsZ0xBS1YsZUFBQSw4QkFBdUIsQ0FBQSxJQUxiO0lBS2UsaUJBQVksRUFBQTtJQUU5RCw4QkFBZ0MsV0FBQTtJQUNOLG9CQUFJO0lBQUEsaUJBQUk7SUFDOUIseUNBTStDO0lBSjNDLHdQQUEwQixxTEFJVCxlQUFBLCtCQUF3QixDQUFBLElBSmY7SUFJaUIsaUJBQWlCLEVB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SSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUN2QyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLEtBQUssSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0FsS1Esb0JBQW9CO21HQUFwQixvQkFBb0Isd09BUmxCO2dCQUNQO29CQUNJLE9BQU8sRUFBRSxXQUFXO29CQUNwQixRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixJQUFJLEVBQUUsQ0FBQyxlQUFlLEVBQUUsK0JBQStCLENBQUM7aUJBQzNEO2FBQ0o7WUN4Qkwsd0ZBd0JlO1lBRWYsc0hBc0JjOzs7WUFoREMsd0hBQXlELGlCQUFBOzs7dUZEMEIzRCxvQkFBb0I7Y0FaaEMsU0FBUzsyQkFFSSxjQUFjLGFBRWI7b0JBQ1A7d0JBQ0ksT0FBTyxFQUFFLFdBQVc7d0JBQ3BCLFFBQVEsRUFBRSxpQkFBaUI7d0JBQzNCLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRSwrQkFBK0IsQ0FBQztxQkFDM0Q7aUJBQ0o7c0NBSVEsb0JBQW9CO2tCQUE1QixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxxQkFBcUI7a0JBQTdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElEYXRlVGFnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlcnZlclRhZ3MnO1xuaW1wb3J0IHsgQW55VGFnQ29tcG9uZW50IH0gZnJvbSAnLi4vYW55LXRhZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0xPQ0FMRSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUywgTW9tZW50RGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlcic7XG5pbXBvcnQgeyBmaW5kIGFzIF9maW5kLCBjbG9uZURlZXAgYXMgX2Nsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBJVGFnQWRkaXRpb25hbFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vZHItdGFncy9kci10YWcudHlwZXMnO1xuaW1wb3J0IHsgRGF0ZVBpY2tlclBlcmlvZFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RhdGVQaWNrZXInO1xuXG4vKiBCRUZPUkUgTUVSR0UgSU5UTyBNQVNURVIgWU9VIE1VU1QgQ09OU1VMVCBXSVRIIEFSVEVNIExBWklVSyAhISEqL1xuXG5jb25zdCBGT1JFQ0FTVF9ERUZBVUxUX0RBVEVfRk9STUFUID0gJ01NL0REL3l5eXknO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJ2ZvcmVjYXN0LXRhZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc2VsZWN0b3I6ICdmb3JlY2FzdC10YWcnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvcmVjYXN0LXRhZy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBEYXRlQWRhcHRlcixcbiAgICAgICAgICAgIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlcixcbiAgICAgICAgICAgIGRlcHM6IFtNQVRfREFURV9MT0NBTEUsIE1BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlNdLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcmVjYXN0VGFnQ29tcG9uZW50IGV4dGVuZHMgQW55VGFnQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICByZWFkb25seSBkYXRlUGlja2VyUGVyaW9kUG9zaXRpb24gPSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb247XG4gICAgQElucHV0KCkgZmlzY2FsWWVhclN0YXJ0c0Zyb20/OiBudW1iZXI7XG4gICAgQElucHV0KCkgZmlzY2FsWWVhckJhY2s/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGxvY2tlZERhdGU6IGFueVtdID0gW107XG4gICAgQElucHV0KCkgdGFnQWRkaXRpb25hbFNldHRpbmdzOiBJVGFnQWRkaXRpb25hbFNldHRpbmdzID0ge307XG5cbiAgICBmb3JlY2FzdFZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgZm9yZWNhc3RZZWFyOiBudW1iZXI7XG4gICAgaXNEYXRlRXZlbnRIYXBwZW5lZCA9IGZhbHNlO1xuXG4gICAgZm9yZWNhc3RUYWdzOiBhbnlbXSA9IFtcbiAgICAgICAgeyB2YWx1ZTogMCwgbGFiZWw6ICcwKzEyJywgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgIHsgdmFsdWU6IDEsIGxhYmVsOiAnMSsxMScsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICB7IHZhbHVlOiAyLCBsYWJlbDogJzIrMTAnLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgeyB2YWx1ZTogMywgbGFiZWw6ICczKzknLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgeyB2YWx1ZTogNCwgbGFiZWw6ICc0KzgnLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgeyB2YWx1ZTogNSwgbGFiZWw6ICc1KzcnLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgeyB2YWx1ZTogNiwgbGFiZWw6ICc2KzYnLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgeyB2YWx1ZTogNywgbGFiZWw6ICc3KzUnLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgeyB2YWx1ZTogOCwgbGFiZWw6ICc4KzQnLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgeyB2YWx1ZTogOSwgbGFiZWw6ICc5KzMnLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgeyB2YWx1ZTogMTAsIGxhYmVsOiAnMTArMicsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICB7IHZhbHVlOiAxMSwgbGFiZWw6ICcxMSsxJywgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgXTtcblxuICAgIHByaXZhdGUgaW5pdERhdGVWYWx1ZSA9IG51bGw7XG4gICAgcHJpdmF0ZSBmaXJzdERheU1vbnRoT2ZZZWFyID0gJzAxJztcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXMubG9ja2VkRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMb2NrZWREYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0RGF0ZSgpIHtcbiAgICAgICAgY29uc3QgZGF0ZVZhbCA9IHRoaXMuZGVmYXVsdFZhbHVlID8gbW9tZW50LnVuaXgodGhpcy5kZWZhdWx0VmFsdWUpIDogbW9tZW50KCk7XG4gICAgICAgIGNvbnN0IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tID0gdGhpcy5maXNjYWxZZWFyU3RhcnRzRnJvbSB8fCAxO1xuICAgICAgICB0aGlzLmZvcmVjYXN0VmFsdWUgPSB0aGlzLmdldEZpc2NhbE1vbnRoRnJvbURhdGUoZGF0ZVZhbCwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20pIC0gMTtcbiAgICAgICAgdGhpcy5mb3JlY2FzdFllYXIgPSBtb21lbnRcbiAgICAgICAgICAgIC51dGMoXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5maXJzdERheU1vbnRoT2ZZZWFyfS8ke3RoaXMuZmlyc3REYXlNb250aE9mWWVhcn0vJHt0aGlzLmdldEZpc2NhbFllYXJGcm9tRGF0ZShkYXRlVmFsLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSwgdGhpcy5maXNjYWxZZWFyQmFjayl9YCxcbiAgICAgICAgICAgICAgICBGT1JFQ0FTVF9ERUZBVUxUX0RBVEVfRk9STUFULFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnNldCgnaG91cnMnLCAxMilcbiAgICAgICAgICAgIC51bml4KCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVMb2NrZWREYXRlKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmluaXREYXRlVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdERhdGVWYWx1ZSA9IF9jbG9uZURlZXAodGhpcy5kYXRlT2JqLmRhdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlTG9ja2VkRGF0ZSgpIHtcbiAgICAgICAgY29uc3QgeWVhciA9IG1vbWVudC51bml4KHRoaXMuZm9yZWNhc3RZZWFyKS55ZWFyKCk7XG5cbiAgICAgICAgdGhpcy5mb3JlY2FzdFRhZ3MgPSB0aGlzLmZvcmVjYXN0VGFncy5tYXAoKGZvcmVjYXN0VGFnKSA9PiB7XG4gICAgICAgICAgICBmb3JlY2FzdFRhZy5kaXNhYmxlZCA9IHRoaXMubG9ja2VkRGF0ZS5zb21lKCh0aW1lc3RhbXApID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NrZWQgPSBtb21lbnQudW5peCh0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgIHJldHVybiBsb2NrZWQubW9udGgoKSA9PT0gZm9yZWNhc3RUYWcudmFsdWUgJiYgK2xvY2tlZC55ZWFyKCkgPT09ICt5ZWFyO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBmb3JlY2FzdFRhZztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW5pdE5hbWUoKSB7XG4gICAgICAgIGlmICghdGhpcy5uYW1lKSB7XG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAnRm9yZWNhc3QgKE5ldyknO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RmlzY2FsTW9udGhGcm9tRGF0ZShkYXRlT2JqLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSkge1xuICAgICAgICBjb25zdCBhbGxfbW9udGhzID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tOyBpIDwgMTM7IGkrKykge1xuICAgICAgICAgICAgYWxsX21vbnRocy5wdXNoKGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbTsgaSsrKSB7XG4gICAgICAgICAgICBhbGxfbW9udGhzLnB1c2goaSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWxsX21vbnRocy5pbmRleE9mKGRhdGVPYmoubW9udGgoKSArIDEpICsgMTtcbiAgICB9XG5cbiAgICBnZXRGaXNjYWxZZWFyRnJvbURhdGUoZGF0ZU9iaiwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20sIGZpc2NhbF95ZWFyX2JhY2spIHtcbiAgICAgICAgbGV0IGZpc2NhbF95ZWFyID0gZGF0ZU9iai55ZWFyKCk7XG5cbiAgICAgICAgaWYgKCFmaXNjYWxfeWVhcl9iYWNrKSB7XG4gICAgICAgICAgICBpZiAoZGF0ZU9iai5tb250aCgpICsgMSA+PSBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSAmJiBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSAhPT0gMSkge1xuICAgICAgICAgICAgICAgIGZpc2NhbF95ZWFyICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZGF0ZU9iai5tb250aCgpICsgMSA8IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tICYmIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgZmlzY2FsX3llYXIgLT0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaXNjYWxfeWVhcjtcbiAgICB9XG5cbiAgICBjaGFuZ2VUYWdJbnB1dEhhbmRsZXIoKSB7XG4gICAgICAgIHRoaXMuY2hvc2VuVGFnSGFuZGxlcigpO1xuICAgIH1cblxuICAgIGNoYW5nZVllYXJJbnB1dEhhbmRsZXIoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTG9ja2VkRGF0ZSgpO1xuICAgICAgICB0aGlzLmluaXREYXRlVmFsdWUgPSBfY2xvbmVEZWVwKHRoaXMuZGF0ZU9iai5kYXRlKTtcbiAgICAgICAgdGhpcy5jaG9zZW5UYWdIYW5kbGVyKCk7XG4gICAgfVxuXG4gICAgY2hvc2VuVGFnSGFuZGxlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEYXRlRXZlbnRIYXBwZW5lZCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IG1vbnRoID0gdGhpcy5mb3JlY2FzdFZhbHVlO1xuICAgICAgICBjb25zdCB5ZWFyID0gbW9tZW50LnVuaXgodGhpcy5mb3JlY2FzdFllYXIpO1xuICAgICAgICBjb25zdCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSA9IHRoaXMuZmlzY2FsWWVhclN0YXJ0c0Zyb20gfHwgMTtcbiAgICAgICAgY29uc3QgZmlzY2FsX3llYXJfYmFjayA9IHRoaXMuZmlzY2FsWWVhckJhY2sgfHwgZmFsc2U7XG5cbiAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4obW9udGgpICYmICFOdW1iZXIuaXNOYU4oeWVhcikpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLnllYXIoKSwgbW9udGgsIDEsIDEyLCAwLCAwLCAwKTtcblxuICAgICAgICAgICAgaWYgKGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFmaXNjYWxfeWVhcl9iYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpIC0gMTMgKyBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgLSAxICsgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5kYXRlT2JqLmRhdGUgPSBtb21lbnQoZGF0ZSkudW5peCgpO1xuXG4gICAgICAgICAgICB0aGlzLmlzRGF0ZUV2ZW50SGFwcGVuZWQgPSB0cnVlO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0RhdGVFdmVudEhhcHBlbmVkID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdFRhZzogSURhdGVUYWcgPSB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5kYXRlT2JqLmRhdGUsXG4gICAgICAgICAgICBsYWJlbDogYCR7X2ZpbmQodGhpcy5mb3JlY2FzdFRhZ3MsIHsgdmFsdWU6IHRoaXMuZm9yZWNhc3RWYWx1ZSB9KT8ubGFiZWx9ICgke3llYXIueWVhcigpfSlgLFxuICAgICAgICAgICAgbG9ja2VkOiAhdGhpcy5kYXRlRmlsdGVyKG1vbWVudC51bml4KHRoaXMuZGF0ZU9iai5kYXRlKSksXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQocmVzdWx0VGFnKTtcbiAgICB9XG5cbiAgICBkYXRlRmlsdGVyKGRhdGUpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbW9udGggPSB0aGlzLmZvcmVjYXN0VmFsdWU7XG4gICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLnllYXIoKTtcblxuICAgICAgICByZXR1cm4gIXRoaXMubG9ja2VkRGF0ZS5zb21lKCh0aW1lc3RhbXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2tEYXRlID0gbW9tZW50LnVuaXgodGltZXN0YW1wKTtcbiAgICAgICAgICAgIHJldHVybiBsb2NrRGF0ZS5tb250aCgpID09PSBtb250aCAmJiBsb2NrRGF0ZS55ZWFyKCkgPT09IHllYXI7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFnQWRkaXRpb25hbFNldHRpbmdzPy5zaG93U3BsaXREeW5hbWljVGFnSW5wdXRzOyBlbHNlIHNwbGl0SW5wdXRzVHBsXCI+XG4gICAgPGRpdiBjbGFzcz1cImZvcmVjYXN0LXRhZ19fY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JlY2FzdC10YWdfX2ZvcmVjYXN0XCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRhZ19fbGFiZWxcIj57eyB0YWdBZGRpdGlvbmFsU2V0dGluZ3M/LnRhZ0xhYmVsIHx8ICdGb3JlY2FzdCcgfX08L3A+XG4gICAgICAgICAgICA8ZHItc2VsZWN0XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3RcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9yZWNhc3RWYWx1ZVwiXG4gICAgICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtpdGVtc109XCJmb3JlY2FzdFRhZ3NcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVRhZ0lucHV0SGFuZGxlcigpXCI+PC9kci1zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9yZWNhc3QtdGFnX195ZWFyXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRhZ19fbGFiZWxcIj5ZZWFyPC9wPlxuICAgICAgICAgICAgPGRyLWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgICAgZm9ybWF0PVwieWVhclwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JlY2FzdFllYXJcIlxuICAgICAgICAgICAgICAgIFtkYXRlcGlja2VyRmlsdGVyXT1cImRhdGVGaWx0ZXIuYmluZCh0aGlzKVwiXG4gICAgICAgICAgICAgICAgW3BlcmlvZFBvc2l0aW9uXT1cImRhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbi5NSURETEVfT0ZfUEVSSU9EXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVllYXJJbnB1dEhhbmRsZXIoKVwiPjwvZHItZGF0ZS1waWNrZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjc3BsaXRJbnB1dHNUcGw+XG4gICAgPGRpdiBjbGFzcz1cImZvcmVjYXN0LXRhZ19fc3BsaXQtY29udGFpbmVyXCI+XG4gICAgICAgIDxwIGNsYXNzPVwidGFnX19sYWJlbFwiPnt7IHRhZ0FkZGl0aW9uYWxTZXR0aW5ncz8udGFnTGFiZWwgfHwgJ1NjZW5hcmlvIGN5Y2xlJyB9fTwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcmVjYXN0LXRhZ19fc3BsaXQtZHJvcGRvd25zXCI+XG4gICAgICAgICAgICA8ZHItZGF0ZS1waWNrZXJcbiAgICAgICAgICAgICAgICBmb3JtYXQ9XCJ5ZWFyXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcmVjYXN0WWVhclwiXG4gICAgICAgICAgICAgICAgW2RhdGVwaWNrZXJGaWx0ZXJdPVwiZGF0ZUZpbHRlci5iaW5kKHRoaXMpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibm8tcmlnaHQtYm9yZGVyLXJhZGl1cyBuby1yaWdodC1ib3JkZXJcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVllYXJJbnB1dEhhbmRsZXIoKVwiPjwvZHItZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICA8ZHItc2VsZWN0XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3RcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9yZWNhc3RWYWx1ZVwiXG4gICAgICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtpdGVtc109XCJmb3JlY2FzdFRhZ3NcIlxuICAgICAgICAgICAgICAgIG5vLWxlZnQtYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVRhZ0lucHV0SGFuZGxlcigpXCI+PC9kci1zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,87 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { indexOf as _indexOf } from 'lodash';
3
- import * as i0 from "@angular/core";
4
- export class ForecastTagService {
5
- static { this.MONTH_DIFF = 1; }
6
- static { this.forecastByMonth = {
7
- '0': '0+12',
8
- '1': '1+11',
9
- '2': '2+10',
10
- '3': '3+9',
11
- '4': '4+8',
12
- '5': '5+7',
13
- '6': '6+6',
14
- '7': '7+5',
15
- '8': '8+4',
16
- '9': '9+3',
17
- '10': '10+2',
18
- '11': '11+1',
19
- }; }
20
- static getForecastMonthTemplates() {
21
- return Array.from(Object.values(ForecastTagService.forecastByMonth));
22
- }
23
- static getFiscalMonthFromDate(date, fiscalYearStartsFrom) {
24
- const all_months = [];
25
- for (let i = fiscalYearStartsFrom; i < 13; i++) {
26
- all_months.push(i);
27
- }
28
- for (let i = 1; i < fiscalYearStartsFrom; i++) {
29
- all_months.push(i);
30
- }
31
- return _indexOf(all_months, date.month() + ForecastTagService.MONTH_DIFF) + ForecastTagService.MONTH_DIFF;
32
- }
33
- static getFiscalYearFromDate(date, fiscalYearStartsFrom, fiscalYearBack) {
34
- const month = date.month();
35
- let fiscal_year = date.year();
36
- if (!fiscalYearBack) {
37
- if (month + 1 >= fiscalYearStartsFrom && fiscalYearStartsFrom !== 1) {
38
- fiscal_year += 1;
39
- }
40
- }
41
- else {
42
- if (month + 1 < fiscalYearStartsFrom && fiscalYearStartsFrom !== 1) {
43
- fiscal_year -= 1;
44
- }
45
- }
46
- return fiscal_year;
47
- }
48
- static getForecastLabel(month) {
49
- const index = month - ForecastTagService.MONTH_DIFF;
50
- return ForecastTagService.forecastByMonth[index];
51
- }
52
- static getCalendarDateFromMonthAndFiscalYear(chosenMoment, monthLabel, fiscalYearStartsFrom, fiscalYearBack) {
53
- const yearWithMonth = ForecastTagService.addMonthsWithoutYearChange(chosenMoment, monthLabel, fiscalYearStartsFrom);
54
- return ForecastTagService.transformYearFromFiscal(yearWithMonth, fiscalYearStartsFrom, fiscalYearBack);
55
- }
56
- static addMonthsWithoutYearChange(date, monthLabel, fiscalYearStartsFrom) {
57
- if (!monthLabel || !date)
58
- return;
59
- const dateToTransform = date.clone();
60
- const labelsIndex = +Object.keys(ForecastTagService.forecastByMonth).find((key) => ForecastTagService.forecastByMonth[key] === monthLabel);
61
- const monthsWithFiscalDifference = labelsIndex + fiscalYearStartsFrom - 1;
62
- const monthsToAdd = monthsWithFiscalDifference >= 12 ? monthsWithFiscalDifference - 12 : monthsWithFiscalDifference;
63
- return dateToTransform.utc().startOf('year').add(monthsToAdd, 'M');
64
- }
65
- static transformYearFromFiscal(fiscalYearWithMonth, fiscalYearStartsFrom, fiscalYearBack) {
66
- if (!fiscalYearWithMonth)
67
- return;
68
- let fiscalYearStartMoment = fiscalYearWithMonth.clone();
69
- if (fiscalYearBack) {
70
- if (fiscalYearStartMoment.month() + 1 < fiscalYearStartsFrom && fiscalYearStartsFrom !== 1) {
71
- fiscalYearStartMoment.add(1, 'year');
72
- }
73
- }
74
- else {
75
- if (fiscalYearStartMoment.month() + 1 >= fiscalYearStartsFrom && fiscalYearStartsFrom !== 1) {
76
- fiscalYearStartMoment.subtract(1, 'year');
77
- }
78
- }
79
- return fiscalYearStartMoment.unix();
80
- }
81
- /** @nocollapse */ static { this.ɵfac = function ForecastTagService_Factory(t) { return new (t || ForecastTagService)(); }; }
82
- /** @nocollapse */ static { this.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: ForecastTagService, factory: ForecastTagService.ɵfac }); }
83
- }
84
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ForecastTagService, [{
85
- type: Injectable
86
- }], null, null); })();
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWNhc3QtdGFnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kYXRlLXRhZ3MvZm9yZWNhc3QtdGFnL2ZvcmVjYXN0LXRhZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLE9BQU8sSUFBSSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7O0FBTzdDLE1BQU0sT0FBTyxrQkFBa0I7YUFDSCxlQUFVLEdBQUcsQ0FBQyxDQUFDO2FBQ2Ysb0JBQWUsR0FBcUI7UUFDeEQsR0FBRyxFQUFFLE1BQU07UUFDWCxHQUFHLEVBQUUsTUFBTTtRQUNYLEdBQUcsRUFBRSxNQUFNO1FBQ1gsR0FBRyxFQUFFLEtBQUs7UUFDVixHQUFHLEVBQUUsS0FBSztRQUNWLEdBQUcsRUFBRSxLQUFLO1FBQ1YsR0FBRyxFQUFFLEtBQUs7UUFDVixHQUFHLEVBQUUsS0FBSztRQUNWLEdBQUcsRUFBRSxLQUFLO1FBQ1YsR0FBRyxFQUFFLEtBQUs7UUFDVixJQUFJLEVBQUUsTUFBTTtRQUNaLElBQUksRUFBRSxNQUFNO0tBQ2YsQ0FBQztJQUVLLE1BQU0sQ0FBQyx5QkFBeUI7UUFDbkMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sTUFBTSxDQUFDLHNCQUFzQixDQUFDLElBQW1CLEVBQUUsb0JBQTRCO1FBQ2xGLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUV0QixLQUFLLElBQUksQ0FBQyxHQUFHLG9CQUFvQixFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFD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QUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxvQkFBb0IsSUFBSSxvQkFBb0IsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hGLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDeEM7U0FDSjthQUFNO1lBQ0gsSUFBSSxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksb0JBQW9CLElBQUksb0JBQW9CLEtBQUssQ0FBQyxFQUFFO2dCQUN6RixxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQzdDO1NBQ0o7UUFDRCxPQUFPLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hDLENBQUM7c0dBdkdRLGtCQUFrQjtzR0FBbEIsa0JBQWtCLFdBQWxCLGtCQUFrQjs7dUZBQWxCLGtCQUFrQjtjQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBpbmRleE9mIGFzIF9pbmRleE9mIH0gZnJvbSAnbG9kYXNoJztcblxuaW50ZXJmYWNlIElGb3JlY2FzdEJ5TW9udGgge1xuICAgIFttb250aEluZGV4OiBzdHJpbmddOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGb3JlY2FzdFRhZ1NlcnZpY2Uge1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE1PTlRIX0RJRkYgPSAxO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGZvcmVjYXN0QnlNb250aDogSUZvcmVjYXN0QnlNb250aCA9IHtcbiAgICAgICAgJzAnOiAnMCsxMicsXG4gICAgICAgICcxJzogJzErMTEnLFxuICAgICAgICAnMic6ICcyKzEwJyxcbiAgICAgICAgJzMnOiAnMys5JyxcbiAgICAgICAgJzQnOiAnNCs4JyxcbiAgICAgICAgJzUnOiAnNSs3JyxcbiAgICAgICAgJzYnOiAnNis2JyxcbiAgICAgICAgJzcnOiAnNys1JyxcbiAgICAgICAgJzgnOiAnOCs0JyxcbiAgICAgICAgJzknOiAnOSszJyxcbiAgICAgICAgJzEwJzogJzEwKzInLFxuICAgICAgICAnMTEnOiAnMTErMScsXG4gICAgfTtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Rm9yZWNhc3RNb250aFRlbXBsYXRlcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKE9iamVjdC52YWx1ZXMoRm9yZWNhc3RUYWdTZXJ2aWNlLmZvcmVjYXN0QnlNb250aCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RmlzY2FsTW9udGhGcm9tRGF0ZShkYXRlOiBtb21lbnQuTW9tZW50LCBmaXNjYWxZZWFyU3RhcnRzRnJvbTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgYWxsX21vbnRocyA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBmaXNjYWxZZWFyU3RhcnRzRnJvbTsgaSA8IDEzOyBpKyspIHtcbiAgICAgICAgICAgIGFsbF9tb250aHMucHVzaChpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgZmlzY2FsWWVhclN0YXJ0c0Zyb207IGkrKykge1xuICAgICAgICAgICAgYWxsX21vbnRocy5wdXNoKGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIF9pbmRleE9mKGFsbF9tb250aHMsIGRhdGUubW9udGgoKSArIEZvcmVjYXN0VGFnU2VydmljZS5NT05USF9ESUZGKSArIEZvcmVjYXN0VGFnU2VydmljZS5NT05USF9ESUZGO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RmlzY2FsWWVhckZyb21EYXRlKGRhdGU6IG1vbWVudC5Nb21lbnQsIGZpc2NhbFllYXJTdGFydHNGcm9tOiBudW1iZXIsIGZpc2NhbFllYXJCYWNrOiBib29sZWFuKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgbW9udGggPSBkYXRlLm1vbnRoKCk7XG4gICAgICAgIGxldCBmaXNjYWxfeWVhciA9IGRhdGUueWVhcigpO1xuXG4gICAgICAgIGlmICghZmlzY2FsWWVhckJhY2spIHtcbiAgICAgICAgICAgIGlmIChtb250aCArIDEgPj0gZmlzY2FsWWVhclN0YXJ0c0Zyb20gJiYgZmlzY2FsWWVhclN0YXJ0c0Zyb20gIT09IDEpIHtcbiAgICAgICAgICAgICAgICBmaXNjYWxfeWVhciArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG1vbnRoICsgMSA8IGZpc2NhbFllYXJTdGFydHNGcm9tICYmIGZpc2NhbFllYXJTdGFydHNGcm9tICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgZmlzY2FsX3llYXIgLT0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaXNjYWxfeWVhcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEZvcmVjYXN0TGFiZWwobW9udGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gbW9udGggLSBGb3JlY2FzdFRhZ1NlcnZpY2UuTU9OVEhfRElGRjtcbiAgICAgICAgcmV0dXJuIEZvcmVjYXN0VGFnU2VydmljZS5mb3JlY2FzdEJ5TW9udGhbaW5kZXhdO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Q2FsZW5kYXJEYXRlRnJvbU1vbnRoQW5kRmlzY2FsWWVhcihcbiAgICAgICAgY2hvc2VuTW9tZW50OiBtb21lbnQuTW9tZW50LFxuICAgICAgICBtb250aExhYmVsOiBzdHJpbmcsXG4gICAgICAgIGZpc2NhbFllYXJTdGFydHNGcm9tOiBudW1iZXIsXG4gICAgICAgIGZpc2NhbFllYXJCYWNrOiBib29sZWFuLFxuICAgICk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHllYXJXaXRoTW9udGggPSBGb3JlY2FzdFRhZ1NlcnZpY2UuYWRkTW9udGhzV2l0aG91dFllYXJDaGFuZ2UoY2hvc2VuTW9tZW50LCBtb250aExhYmVsLCBmaXNjYWxZZWFyU3RhcnRzRnJvbSk7XG4gICAgICAgIHJldHVybiBGb3JlY2FzdFRhZ1NlcnZpY2UudHJhbnNmb3JtWWVhckZyb21GaXNjYWwoeWVhcldpdGhNb250aCwgZmlzY2FsWWVhclN0YXJ0c0Zyb20sIGZpc2NhbFllYXJCYWNrKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFkZE1vbnRoc1dpdGhvdXRZZWFyQ2hhbmdlKFxuICAgICAgICBkYXRlOiBtb21lbnQuTW9tZW50LFxuICAgICAgICBtb250aExhYmVsOiBzdHJpbmcsXG4gICAgICAgIGZpc2NhbFllYXJTdGFydHNGcm9tOiBudW1iZXIsXG4gICAgKTogbW9tZW50Lk1vbWVudCB7XG4gICAgICAgIGlmICghbW9udGhMYWJlbCB8fCAhZGF0ZSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGRhdGVUb1RyYW5zZm9ybSA9IGRhdGUuY2xvbmUoKTtcblxuICAgICAgICBjb25zdCBsYWJlbHNJbmRleDogbnVtYmVyID0gK09iamVjdC5rZXlzKEZvcmVjYXN0VGFnU2VydmljZS5mb3JlY2FzdEJ5TW9udGgpLmZpbmQoXG4gICAgICAgICAgICAoa2V5OiBzdHJpbmcpID0+IEZvcmVjYXN0VGFnU2VydmljZS5mb3JlY2FzdEJ5TW9udGhba2V5XSA9PT0gbW9udGhMYWJlbCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbW9udGhzV2l0aEZpc2NhbERpZmZlcmVuY2UgPSBsYWJlbHNJbmRleCArIGZpc2NhbFllYXJTdGFydHNGcm9tIC0gMTtcbiAgICAgICAgY29uc3QgbW9udGhzVG9BZGQgPSBtb250aHNXaXRoRmlzY2FsRGlmZmVyZW5jZSA+PSAxMiA/IG1vbnRoc1dpdGhGaXNjYWxEaWZmZXJlbmNlIC0gMTIgOiBtb250aHNXaXRoRmlzY2FsRGlmZmVyZW5jZTtcblxuICAgICAgICByZXR1cm4gZGF0ZVRvVHJhbnNmb3JtLnV0YygpLnN0YXJ0T2YoJ3llYXInKS5hZGQobW9udGhzVG9BZGQsICdNJyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyB0cmFuc2Zvcm1ZZWFyRnJvbUZpc2NhbChcbiAgICAgICAgZmlzY2FsWWVhcldpdGhNb250aDogbW9tZW50Lk1vbWVudCxcbiAgICAgICAgZmlzY2FsWWVhclN0YXJ0c0Zyb206IG51bWJlcixcbiAgICAgICAgZmlzY2FsWWVhckJhY2s6IGJvb2xlYW4sXG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKCFmaXNjYWxZZWFyV2l0aE1vbnRoKSByZXR1cm47XG5cbiAgICAgICAgbGV0IGZpc2NhbFllYXJTdGFydE1vbWVudCA9IGZpc2NhbFllYXJXaXRoTW9udGguY2xvbmUoKTtcbiAgICAgICAgaWYgKGZpc2NhbFllYXJCYWNrKSB7XG4gICAgICAgICAgICBpZiAoZmlzY2FsWWVhclN0YXJ0TW9tZW50Lm1vbnRoKCkgKyAxIDwgZmlzY2FsWWVhclN0YXJ0c0Zyb20gJiYgZmlzY2FsWWVhclN0YXJ0c0Zyb20gIT09IDEpIHtcbiAgICAgICAgICAgICAgICBmaXNjYWxZZWFyU3RhcnRNb21lbnQuYWRkKDEsICd5ZWFyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZmlzY2FsWWVhclN0YXJ0TW9tZW50Lm1vbnRoKCkgKyAxID49IGZpc2NhbFllYXJTdGFydHNGcm9tICYmIGZpc2NhbFllYXJTdGFydHNGcm9tICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgZmlzY2FsWWVhclN0YXJ0TW9tZW50LnN1YnRyYWN0KDEsICd5ZWFyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpc2NhbFllYXJTdGFydE1vbWVudC51bml4KCk7XG4gICAgfVxufVxuIl19
@@ -1,98 +0,0 @@
1
- import { Component, HostBinding, Input } from '@angular/core';
2
- import { AnyTagComponent } from '../any-tag.component';
3
- import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
4
- import { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from '@angular/material-moment-adapter';
5
- import moment from 'moment';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/forms";
8
- import * as i2 from "../../dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component";
9
- const MONTH_FORMATS = {
10
- parse: {
11
- dateInput: 'DD-MM-YYYY',
12
- },
13
- display: {
14
- dateInput: 'MMMM YYYY',
15
- monthYearLabel: 'MMMM YYYY',
16
- dateA11yLabel: 'LL',
17
- monthYearA11yLabel: 'MMMM YYYY',
18
- },
19
- };
20
- export class MonthTagComponent extends AnyTagComponent {
21
- get isLocked() {
22
- return this.date ? !this.dateFilter(moment.unix(this.date)) : false;
23
- }
24
- constructor() {
25
- super();
26
- this.lockedDate = [];
27
- }
28
- initDate() {
29
- this.date = this.defaultValue || moment().unix();
30
- this.dateObj.date = this.date;
31
- }
32
- initName() {
33
- if (!this.name) {
34
- this.name = 'Month';
35
- }
36
- }
37
- chosenTagHandler(value) {
38
- const resultDate = moment.unix(value);
39
- resultDate.hour(12);
40
- const resultTag = {
41
- name: this.name,
42
- value: resultDate.unix(),
43
- label: resultDate.format('MMMM YYYY'),
44
- locked: !this.dateFilter(resultDate),
45
- };
46
- console.log(resultTag, value);
47
- this.dateChange.emit(resultTag);
48
- }
49
- // Should be as arrow function to avoid lose scope
50
- dateFilter(date) {
51
- const month = date.month();
52
- const year = date.year();
53
- return !this.lockedDate.some((timestamp) => {
54
- const lockDate = moment.unix(timestamp);
55
- return lockDate.year() === year && lockDate.month() === month;
56
- });
57
- }
58
- /** @nocollapse */ static { this.ɵfac = function MonthTagComponent_Factory(t) { return new (t || MonthTagComponent)(); }; }
59
- /** @nocollapse */ static { this.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: MonthTagComponent, selectors: [["month-tag"]], hostVars: 2, hostBindings: function MonthTagComponent_HostBindings(rf, ctx) { if (rf & 2) {
60
- i0.ɵɵclassProp("locked", ctx.isLocked);
61
- } }, inputs: { lockedDate: "lockedDate" }, features: [i0.ɵɵProvidersFeature([
62
- {
63
- provide: DateAdapter,
64
- useClass: MomentDateAdapter,
65
- deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
66
- },
67
- { provide: MAT_DATE_FORMATS, useValue: MONTH_FORMATS },
68
- ]), i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 4, consts: [[1, "tag-wrapper"], [1, "tag__label"], ["format", "month", 3, "ngModel", "disabled", "datepickerFilter", "ngModelChange"]], template: function MonthTagComponent_Template(rf, ctx) { if (rf & 1) {
69
- i0.ɵɵelementStart(0, "div", 0)(1, "p", 1);
70
- i0.ɵɵtext(2);
71
- i0.ɵɵelementEnd();
72
- i0.ɵɵelementStart(3, "dr-date-picker", 2);
73
- i0.ɵɵlistener("ngModelChange", function MonthTagComponent_Template_dr_date_picker_ngModelChange_3_listener($event) { return ctx.date = $event; })("ngModelChange", function MonthTagComponent_Template_dr_date_picker_ngModelChange_3_listener($event) { return ctx.chosenTagHandler($event); });
74
- i0.ɵɵelementEnd()();
75
- } if (rf & 2) {
76
- i0.ɵɵadvance(2);
77
- i0.ɵɵtextInterpolate(ctx.name);
78
- i0.ɵɵadvance(1);
79
- i0.ɵɵproperty("ngModel", ctx.date)("disabled", ctx.disabled)("datepickerFilter", ctx.dateFilter.bind(ctx));
80
- } }, dependencies: [i1.NgControlStatus, i1.NgModel, i2.DrDatePickerComponent], styles: [".locked[_nghost-%COMP%] > .tag-wrapper[_ngcontent-%COMP%] > dr-date-picker[_ngcontent-%COMP%]{opacity:.4}.tag__label[_ngcontent-%COMP%]{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}"] }); }
81
- }
82
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MonthTagComponent, [{
83
- type: Component,
84
- args: [{ selector: 'month-tag', providers: [
85
- {
86
- provide: DateAdapter,
87
- useClass: MomentDateAdapter,
88
- deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
89
- },
90
- { provide: MAT_DATE_FORMATS, useValue: MONTH_FORMATS },
91
- ], template: "<div class=\"tag-wrapper\">\n <p class=\"tag__label\">{{ name }}</p>\n <dr-date-picker\n format=\"month\"\n [(ngModel)]=\"date\"\n [disabled]=\"disabled\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n (ngModelChange)=\"chosenTagHandler($event)\"></dr-date-picker>\n</div>\n", styles: [":host.locked>.tag-wrapper>dr-date-picker{opacity:.4}.tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}\n"] }]
92
- }], function () { return []; }, { isLocked: [{
93
- type: HostBinding,
94
- args: ['class.locked']
95
- }], lockedDate: [{
96
- type: Input
97
- }] }); })();
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9tb250aC10YWcvbW9udGgtdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9tb250aC10YWcvbW9udGgtdGFnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsK0JBQStCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV0RyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7QUFFNUIsTUFBTSxhQUFhLEdBQUc7SUFDbEIsS0FBSyxFQUFFO1FBQ0gsU0FBUyxFQUFFLFlBQVk7S0FDMUI7SUFDRCxPQUFPLEVBQUU7UUFDTCxTQUFTLEVBQUUsV0FBVztRQUN0QixjQUFjLEVBQUUsV0FBVztRQUMzQixhQUFhLEVBQUUsSUFBSTtRQUNuQixrQkFBa0IsRUFBRSxXQUFXO0tBQ2xDO0NBQ0osQ0FBQztBQWVGLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxlQUFlO0lBQ2xELElBQ0ksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFD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J0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSURhdGVUYWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VydmVyVGFncyc7XG5pbXBvcnQgeyBBbnlUYWdDb21wb25lbnQgfSBmcm9tICcuLi9hbnktdGFnLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLCBNb21lbnREYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyJztcblxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5jb25zdCBNT05USF9GT1JNQVRTID0ge1xuICAgIHBhcnNlOiB7XG4gICAgICAgIGRhdGVJbnB1dDogJ0RELU1NLVlZWVknLFxuICAgIH0sXG4gICAgZGlzcGxheToge1xuICAgICAgICBkYXRlSW5wdXQ6ICdNTU1NIFlZWVknLFxuICAgICAgICBtb250aFllYXJMYWJlbDogJ01NTU0gWVlZWScsXG4gICAgICAgIGRhdGVBMTF5TGFiZWw6ICdMTCcsXG4gICAgICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NTU0gWVlZWScsXG4gICAgfSxcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnbW9udGgtdGFnLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tb250aC10YWcuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzZWxlY3RvcjogJ21vbnRoLXRhZycsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IERhdGVBZGFwdGVyLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IE1vbWVudERhdGVBZGFwdGVyLFxuICAgICAgICAgICAgZGVwczogW01BVF9EQVRFX0xPQ0FMRSwgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OU10sXG4gICAgICAgIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IE1PTlRIX0ZPUk1BVFMgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNb250aFRhZ0NvbXBvbmVudCBleHRlbmRzIEFueVRhZ0NvbXBvbmVudCB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5sb2NrZWQnKVxuICAgIGdldCBpc0xvY2tlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZSA/ICF0aGlzLmRhdGVGaWx0ZXIobW9tZW50LnVuaXgodGhpcy5kYXRlKSkgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBsb2NrZWREYXRlOiBhbnlbXSA9IFtdO1xuXG4gICAgZGF0ZTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIGluaXREYXRlKCkge1xuICAgICAgICB0aGlzLmRhdGUgPSB0aGlzLmRlZmF1bHRWYWx1ZSB8fCBtb21lbnQoKS51bml4KCk7XG4gICAgICAgIHRoaXMuZGF0ZU9iai5kYXRlID0gdGhpcy5kYXRlO1xuICAgIH1cblxuICAgIGluaXROYW1lKCkge1xuICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgICAgICAgdGhpcy5uYW1lID0gJ01vbnRoJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNob3NlblRhZ0hhbmRsZXIodmFsdWU6IG51bWJlcikge1xuICAgICAgICBjb25zdCByZXN1bHREYXRlID0gbW9tZW50LnVuaXgodmFsdWUpO1xuICAgICAgICByZXN1bHREYXRlLmhvdXIoMTIpO1xuICAgICAgICBjb25zdCByZXN1bHRUYWc6IElEYXRlVGFnID0ge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgdmFsdWU6IHJlc3VsdERhdGUudW5peCgpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc3VsdERhdGUuZm9ybWF0KCdNTU1NIFlZWVknKSxcbiAgICAgICAgICAgIGxvY2tlZDogIXRoaXMuZGF0ZUZpbHRlcihyZXN1bHREYXRlKSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc29sZS5sb2cocmVzdWx0VGFnLCB2YWx1ZSk7XG4gICAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KHJlc3VsdFRhZyk7XG4gICAgfVxuXG4gICAgLy8gU2hvdWxkIGJlIGFzIGFycm93IGZ1bmN0aW9uIHRvIGF2b2lkIGxvc2Ugc2NvcGVcbiAgICBkYXRlRmlsdGVyKGRhdGUpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbW9udGggPSBkYXRlLm1vbnRoKCk7XG4gICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLnllYXIoKTtcblxuICAgICAgICByZXR1cm4gIXRoaXMubG9ja2VkRGF0ZS5zb21lKCh0aW1lc3RhbXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2tEYXRlID0gbW9tZW50LnVuaXgodGltZXN0YW1wKTtcbiAgICAgICAgICAgIHJldHVybiBsb2NrRGF0ZS55ZWFyKCkgPT09IHllYXIgJiYgbG9ja0RhdGUubW9udGgoKSA9PT0gbW9udGg7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWctd3JhcHBlclwiPlxuICAgIDxwIGNsYXNzPVwidGFnX19sYWJlbFwiPnt7IG5hbWUgfX08L3A+XG4gICAgPGRyLWRhdGUtcGlja2VyXG4gICAgICAgIGZvcm1hdD1cIm1vbnRoXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJkYXRlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2RhdGVwaWNrZXJGaWx0ZXJdPVwiZGF0ZUZpbHRlci5iaW5kKHRoaXMpXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hvc2VuVGFnSGFuZGxlcigkZXZlbnQpXCI+PC9kci1kYXRlLXBpY2tlcj5cbjwvZGl2PlxuIl19