@datarailsshared/datarailsshared 1.3.49 → 1.3.51

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 (133) hide show
  1. package/_datarailsshared.styles.css +3 -3
  2. package/assets/styles/_styles.scss +2 -2
  3. package/assets/styles/img/default-avatar.svg +5 -5
  4. package/bundles/datarailsshared-datarailsshared.umd.js +3984 -3995
  5. package/bundles/datarailsshared-datarailsshared.umd.js.map +1 -1
  6. package/datarailsshared-datarailsshared-1.3.51.tgz +0 -0
  7. package/datarailsshared-datarailsshared.d.ts +9 -9
  8. package/datarailsshared-datarailsshared.metadata.json +1 -1
  9. package/esm2015/datarailsshared-datarailsshared.js +9 -9
  10. package/esm2015/lib/date-tags/date-tag.component.js +70 -70
  11. package/esm2015/lib/date-tags/date-tag.module.js +50 -50
  12. package/esm2015/lib/date-tags/day-tag/day-tag.component.js +81 -81
  13. package/esm2015/lib/date-tags/forecast-tag/forecast-tag.component.js +143 -143
  14. package/esm2015/lib/date-tags/month-tag/month-tag.component.js +87 -87
  15. package/esm2015/lib/date-tags/quarter-tag/quarter-tag.component.js +101 -101
  16. package/esm2015/lib/date-tags/week-tag/week-tag.component.js +124 -124
  17. package/esm2015/lib/date-tags/year-tag/year-tag.component.js +93 -93
  18. package/esm2015/lib/dr-accordion/accordion-item-body.component.js +57 -57
  19. package/esm2015/lib/dr-accordion/accordion-item-header.component.js +79 -79
  20. package/esm2015/lib/dr-accordion/accordion-item.component.js +123 -123
  21. package/esm2015/lib/dr-accordion/accordion.component.js +43 -43
  22. package/esm2015/lib/dr-accordion/accordion.module.js +23 -23
  23. package/esm2015/lib/dr-avatar/dr-avatar.component.js +42 -42
  24. package/esm2015/lib/dr-avatar/dr-avatar.module.js +26 -26
  25. package/esm2015/lib/dr-avatar/dr-avatar.pipe.js +15 -15
  26. package/esm2015/lib/dr-dropdown/dr-dropdown-item-show.pipe.js +12 -12
  27. package/esm2015/lib/dr-dropdown/dr-dropdown-position.directive.js +97 -97
  28. package/esm2015/lib/dr-dropdown/dr-dropdown.component.js +110 -110
  29. package/esm2015/lib/dr-dropdown/dr-dropdown.directive.js +89 -89
  30. package/esm2015/lib/dr-dropdown/dr-dropdown.module.js +34 -34
  31. package/esm2015/lib/dr-dropdown/dr-dropdown.service.js +24 -24
  32. package/esm2015/lib/dr-inputs/button/button.component.js +80 -80
  33. package/esm2015/lib/dr-inputs/checkbox/checkbox.component.js +63 -63
  34. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker-format.directive.js +47 -47
  35. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker.component.js +183 -186
  36. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker.service.js +41 -41
  37. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker_custom-header/dr-date-picker_custom-header.component.js +129 -129
  38. package/esm2015/lib/dr-inputs/dr-input/dr-input.component.js +185 -185
  39. package/esm2015/lib/dr-inputs/dr-inputs.module.js +51 -51
  40. package/esm2015/lib/dr-inputs/dr-model-debounce-change.directive.js +31 -31
  41. package/esm2015/lib/dr-inputs/dr-select/dr-select.component.js +90 -90
  42. package/esm2015/lib/dr-inputs/dr-toggle/dr-toggle.component.js +64 -64
  43. package/esm2015/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.js +56 -56
  44. package/esm2015/lib/dr-inputs/radio-button/radio-button.component.js +64 -64
  45. package/esm2015/lib/dr-inputs/radio-button/radio-group.component.js +164 -164
  46. package/esm2015/lib/dr-popover/dr-popover-ref.js +20 -20
  47. package/esm2015/lib/dr-popover/dr-popover.component.js +77 -77
  48. package/esm2015/lib/dr-popover/dr-popover.directive.js +72 -72
  49. package/esm2015/lib/dr-popover/dr-popover.module.js +23 -23
  50. package/esm2015/lib/dr-popover/dr-popover.service.js +102 -102
  51. package/esm2015/lib/dr-spinner/dr-spinner.component.js +29 -29
  52. package/esm2015/lib/dr-spinner/dr-spinner.directive.js +53 -53
  53. package/esm2015/lib/dr-spinner/dr-spinner.module.js +18 -18
  54. package/esm2015/lib/dr-tabs/dr-tab.component.js +23 -23
  55. package/esm2015/lib/dr-tabs/dr-tabs.component.js +28 -28
  56. package/esm2015/lib/dr-tabs/dr-tabs.module.js +30 -30
  57. package/esm2015/lib/dr-tags/dr-tag.component.js +54 -54
  58. package/esm2015/lib/dr-tags/dr-tag.module.js +22 -22
  59. package/esm2015/lib/dr-tooltip/dr-tooltip.component.js +30 -30
  60. package/esm2015/lib/dr-tooltip/dr-tooltip.directive.js +102 -102
  61. package/esm2015/lib/dr-tooltip/dr-tooltip.module.js +23 -23
  62. package/esm2015/lib/list-tags/list-tag.component.js +41 -41
  63. package/esm2015/lib/list-tags/list-tag.module.js +29 -29
  64. package/esm2015/lib/models/constants.js +97 -97
  65. package/esm2015/lib/models/datePicker.js +40 -40
  66. package/esm2015/lib/models/dropdown.js +2 -2
  67. package/esm2015/lib/models/popover.js +27 -27
  68. package/esm2015/lib/models/serverTags.js +2 -2
  69. package/esm2015/public-api.js +57 -57
  70. package/fesm2015/datarailsshared-datarailsshared.js +3365 -3368
  71. package/fesm2015/datarailsshared-datarailsshared.js.map +1 -1
  72. package/lib/date-tags/date-tag.component.d.ts +27 -27
  73. package/lib/date-tags/date-tag.module.d.ts +4 -4
  74. package/lib/date-tags/day-tag/day-tag.component.d.ts +12 -12
  75. package/lib/date-tags/forecast-tag/forecast-tag.component.d.ts +21 -21
  76. package/lib/date-tags/month-tag/month-tag.component.d.ts +14 -14
  77. package/lib/date-tags/quarter-tag/quarter-tag.component.d.ts +17 -17
  78. package/lib/date-tags/week-tag/week-tag.component.d.ts +19 -19
  79. package/lib/date-tags/year-tag/year-tag.component.d.ts +14 -14
  80. package/lib/dr-accordion/accordion-item-body.component.d.ts +11 -11
  81. package/lib/dr-accordion/accordion-item-header.component.d.ts +16 -16
  82. package/lib/dr-accordion/accordion-item.component.d.ts +53 -53
  83. package/lib/dr-accordion/accordion.component.d.ts +19 -19
  84. package/lib/dr-accordion/accordion.module.d.ts +2 -2
  85. package/lib/dr-avatar/dr-avatar.component.d.ts +10 -10
  86. package/lib/dr-avatar/dr-avatar.module.d.ts +2 -2
  87. package/lib/dr-avatar/dr-avatar.pipe.d.ts +4 -4
  88. package/lib/dr-dropdown/dr-dropdown-item-show.pipe.d.ts +5 -5
  89. package/lib/dr-dropdown/dr-dropdown-position.directive.d.ts +12 -12
  90. package/lib/dr-dropdown/dr-dropdown.component.d.ts +26 -26
  91. package/lib/dr-dropdown/dr-dropdown.directive.d.ts +23 -23
  92. package/lib/dr-dropdown/dr-dropdown.module.d.ts +2 -2
  93. package/lib/dr-dropdown/dr-dropdown.service.d.ts +11 -11
  94. package/lib/dr-inputs/button/button.component.d.ts +21 -21
  95. package/lib/dr-inputs/checkbox/checkbox.component.d.ts +20 -20
  96. package/lib/dr-inputs/dr-date-picker/dr-date-picker-format.directive.d.ts +10 -10
  97. package/lib/dr-inputs/dr-date-picker/dr-date-picker.component.d.ts +54 -54
  98. package/lib/dr-inputs/dr-date-picker/dr-date-picker.service.d.ts +12 -12
  99. package/lib/dr-inputs/dr-date-picker/dr-date-picker_custom-header/dr-date-picker_custom-header.component.d.ts +41 -41
  100. package/lib/dr-inputs/dr-input/dr-input.component.d.ts +58 -58
  101. package/lib/dr-inputs/dr-inputs.module.d.ts +2 -2
  102. package/lib/dr-inputs/dr-model-debounce-change.directive.d.ts +11 -11
  103. package/lib/dr-inputs/dr-select/dr-select.component.d.ts +38 -38
  104. package/lib/dr-inputs/dr-toggle/dr-toggle.component.d.ts +23 -23
  105. package/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.d.ts +19 -19
  106. package/lib/dr-inputs/radio-button/radio-button.component.d.ts +21 -21
  107. package/lib/dr-inputs/radio-button/radio-group.component.d.ts +39 -39
  108. package/lib/dr-popover/dr-popover-ref.d.ts +16 -16
  109. package/lib/dr-popover/dr-popover.component.d.ts +26 -26
  110. package/lib/dr-popover/dr-popover.directive.d.ts +26 -26
  111. package/lib/dr-popover/dr-popover.module.d.ts +2 -2
  112. package/lib/dr-popover/dr-popover.service.d.ts +17 -17
  113. package/lib/dr-spinner/dr-spinner.component.d.ts +10 -10
  114. package/lib/dr-spinner/dr-spinner.directive.d.ts +15 -15
  115. package/lib/dr-spinner/dr-spinner.module.d.ts +2 -2
  116. package/lib/dr-tabs/dr-tab.component.d.ts +8 -8
  117. package/lib/dr-tabs/dr-tabs.component.d.ts +11 -11
  118. package/lib/dr-tabs/dr-tabs.module.d.ts +2 -2
  119. package/lib/dr-tags/dr-tag.component.d.ts +15 -15
  120. package/lib/dr-tags/dr-tag.module.d.ts +2 -2
  121. package/lib/dr-tooltip/dr-tooltip.component.d.ts +16 -16
  122. package/lib/dr-tooltip/dr-tooltip.directive.d.ts +23 -23
  123. package/lib/dr-tooltip/dr-tooltip.module.d.ts +2 -2
  124. package/lib/list-tags/list-tag.component.d.ts +14 -14
  125. package/lib/list-tags/list-tag.module.d.ts +2 -2
  126. package/lib/models/constants.d.ts +87 -87
  127. package/lib/models/datePicker.d.ts +25 -25
  128. package/lib/models/dropdown.d.ts +48 -48
  129. package/lib/models/popover.d.ts +32 -32
  130. package/lib/models/serverTags.d.ts +28 -28
  131. package/package.json +1 -1
  132. package/public-api.d.ts +55 -55
  133. package/datarailsshared-datarailsshared-1.3.49.tgz +0 -0
@@ -1,143 +1,143 @@
1
- import { Component, Input } from "@angular/core";
2
- import { AnyTagComponent } from "../date-tag.component";
3
- // @ts-ignore
4
- const moment = require("moment");
5
- export class ForecastTagComponent extends AnyTagComponent {
6
- constructor() {
7
- super();
8
- this.lockedDate = [];
9
- this.forecastValue = undefined;
10
- this.forecastTags = [
11
- { "value": 0, "label": "0+12" },
12
- { "value": 1, "label": "1+11" },
13
- { "value": 2, "label": "2+10" },
14
- { "value": 3, "label": "3+9" },
15
- { "value": 4, "label": "4+8" },
16
- { "value": 5, "label": "5+7" },
17
- { "value": 6, "label": "6+6" },
18
- { "value": 7, "label": "7+5" },
19
- { "value": 8, "label": "8+4" },
20
- { "value": 9, "label": "9+3" },
21
- { "value": 10, "label": "10+2" },
22
- { "value": 11, "label": "11+1" }
23
- ];
24
- this.dateFilter = (date) => {
25
- const forecastDate = moment.unix(date);
26
- let status = true;
27
- this.lockedDate.forEach(timestamp => {
28
- const locked = moment.unix(timestamp);
29
- return status = !(locked.month() === forecastDate.month() && locked.year() === forecastDate.year());
30
- });
31
- return status;
32
- };
33
- }
34
- initDate() {
35
- let dateVal = new Date();
36
- if (this.defaultValue) {
37
- dateVal = new Date(this.defaultValue * 1000);
38
- }
39
- let fiscal_year_starts_from = this.fiscalYearStartsFrom || 1;
40
- let fiscal_year_back = this.fiscalYearBack || false;
41
- this.forecastValue = this.getFiscalMonthFromDate(dateVal, fiscal_year_starts_from) - 1;
42
- let fiscal_year = this.getFiscalYearFromDate(dateVal, fiscal_year_starts_from, fiscal_year_back);
43
- console.log("test", dateVal, fiscal_year_starts_from, this.forecastValue, fiscal_year);
44
- this.dateObj.date = moment(new Date(fiscal_year, 0, 1)).format("YYYY");
45
- this.updateLockedDate();
46
- }
47
- updateLockedDate() {
48
- for (let forecastTag of this.forecastTags) {
49
- forecastTag.disable = false;
50
- this.lockedDate.forEach(timestamp => {
51
- const locked = moment.unix(timestamp);
52
- if (locked.month() - 1 === forecastTag.value && +locked.year() + 1 === +this.dateObj.date) {
53
- forecastTag.disable = true;
54
- }
55
- });
56
- }
57
- }
58
- initName() {
59
- if (!this.name) {
60
- this.name = "Forecast";
61
- }
62
- }
63
- getFiscalMonthFromDate(dateObj, fiscal_year_starts_from) {
64
- let all_months = [];
65
- for (let i = fiscal_year_starts_from; i < 13; i++) {
66
- all_months.push(i);
67
- }
68
- for (let i = 1; i < fiscal_year_starts_from; i++) {
69
- all_months.push(i);
70
- }
71
- return all_months.indexOf(dateObj.getMonth() + 1) + 1;
72
- }
73
- getFiscalYearFromDate(dateObj, fiscal_year_starts_from, fiscal_year_back) {
74
- let fiscal_year = dateObj.getFullYear();
75
- if (!fiscal_year_back) {
76
- if (dateObj.getMonth() + 1 >= fiscal_year_starts_from && fiscal_year_starts_from !== 1) {
77
- fiscal_year += 1;
78
- }
79
- }
80
- else {
81
- if (dateObj.getMonth() + 1 < fiscal_year_starts_from && fiscal_year_starts_from !== 1) {
82
- fiscal_year -= 1;
83
- }
84
- }
85
- return fiscal_year;
86
- }
87
- getForecastLabelFromValue(value, fiscal_year_starts_from, fiscal_year_back) {
88
- let label = "";
89
- if (value) {
90
- let dateObj = new Date(value * 1000);
91
- let fiscal_month = this.getFiscalMonthFromDate(dateObj, fiscal_year_starts_from);
92
- let fiscal_year = this.getFiscalYearFromDate(dateObj, fiscal_year_starts_from, fiscal_year_back);
93
- label = (fiscal_month - 1) + "+" + (13 - fiscal_month) + " (" + fiscal_year + ")";
94
- }
95
- return label;
96
- }
97
- changeTagInputHandler(event) {
98
- this.chosenTagHandler();
99
- }
100
- changeYearInputHandler(event) {
101
- this.updateLockedDate();
102
- this.chosenTagHandler();
103
- }
104
- chosenTagHandler() {
105
- let month = this.forecastValue;
106
- let year = Number.parseInt(this.dateObj.date);
107
- let timeStampVal = 0;
108
- let label = "";
109
- if (!Number.isNaN(month) && !Number.isNaN(year)) {
110
- let date = new Date(year, month, 1, 12, 0, 0, 0);
111
- let fiscal_year_starts_from = this.fiscalYearStartsFrom || 1;
112
- let fiscal_year_back = this.fiscalYearBack || false;
113
- if (fiscal_year_starts_from !== 1) {
114
- if (!fiscal_year_back)
115
- date.setMonth(date.getMonth() - 13 + fiscal_year_starts_from);
116
- else
117
- date.setMonth(date.getMonth() - 1 + fiscal_year_starts_from);
118
- }
119
- timeStampVal = date.getTime() / 1000;
120
- label = this.getForecastLabelFromValue(timeStampVal, fiscal_year_starts_from, fiscal_year_back);
121
- }
122
- const resultTag = {
123
- "name": this.name,
124
- "value": timeStampVal,
125
- "label": label,
126
- "locked": !this.dateFilter(timeStampVal)
127
- };
128
- this.dateChange.emit(resultTag);
129
- }
130
- }
131
- ForecastTagComponent.decorators = [
132
- { type: Component, args: [{
133
- template: "<div>\r\n <mat-form-field style=\"margin-right: 3px; margin-bottom:3px\">\r\n <mat-select placeholder=\"{{name}}\" (selectionChange)=\"changeTagInputHandler($event)\" [(value)]=\"forecastValue\">\r\n <mat-option *ngFor=\"let forecastTag of forecastTags\" [value]=\"forecastTag.value\" [disabled]=\"forecastTag.disable\">{{forecastTag.label}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field class=\"date-select-box\">\r\n <input matInput placeholder=\"Year\" type=\"number\" name=\"Year\"\r\n (change)=\"changeYearInputHandler($event)\"\r\n [(ngModel)]=\"dateObj.date\">\r\n </mat-form-field>\r\n</div>\r\n",
134
- selector: "forecast-tag"
135
- },] }
136
- ];
137
- ForecastTagComponent.ctorParameters = () => [];
138
- ForecastTagComponent.propDecorators = {
139
- fiscalYearStartsFrom: [{ type: Input }],
140
- fiscalYearBack: [{ type: Input }],
141
- lockedDate: [{ type: Input }]
142
- };
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9mb3JlY2FzdC10YWcvZm9yZWNhc3QtdGFnLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUcvQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHdEQsYUFBYTtBQUNiLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQU9qQyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsZUFBZTtJQXFCdkQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQW5CRCxlQUFVLEdBQVUsRUFBRSxDQUFDO1FBQ2hDLGtCQUFhLEdBQXVCLFNBQVMsQ0FBQztRQUU5QyxpQkFBWSxHQUFVO1lBQ3BCLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDO1lBQzdCLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDO1lBQzdCLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDO1lBQzdCLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDO1lBQzVCLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDO1lBQzVCLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDO1lBQzVCLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDO1lBQzVCLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDO1lBQzVCLEVBQUMs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QyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2pELElBQUksdUJBQXVCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsQ0FBQztZQUM3RCxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLElBQUksS0FBSyxDQUFDO1lBQ3BELElBQUksdUJBQXVCLEtBQUssQ0FBQyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsZ0JBQWdCO29CQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsdUJBQXVCLENBQUMsQ0FBQzs7b0JBRTlELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDO2FBQ2hFO1lBRUQsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDckMsS0FBSyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUNqRztRQUVELE1BQU0sU0FBUyxHQUFhO1lBQ3RCLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNqQixPQUFPLEVBQUUsWUFBWTtZQUNyQixPQUFPLEVBQUUsS0FBSztZQUNkLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO1NBQzNDLENBQUM7UUFFSixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsQyxDQUFDOzs7WUF2SkYsU0FBUyxTQUFDO2dCQUNQLGtzQkFBMEM7Z0JBQzFDLFFBQVEsRUFBRSxjQUFjO2FBQzNCOzs7O21DQUdFLEtBQUs7NkJBQ0wsS0FBSzt5QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge01vbWVudH0gZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQge0lEYXRlVGFnfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3NlcnZlclRhZ3NcIjtcclxuaW1wb3J0IHtBbnlUYWdDb21wb25lbnR9IGZyb20gXCIuLi9kYXRlLXRhZy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtNYXRTZWxlY3RDaGFuZ2V9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3RcIjtcclxuaW1wb3J0IHtNYXRCdXR0b25Ub2dnbGVDaGFuZ2V9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlXCI7XHJcbi8vIEB0cy1pZ25vcmVcclxuY29uc3QgbW9tZW50ID0gcmVxdWlyZShcIm1vbWVudFwiKTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgdGVtcGxhdGVVcmw6IFwiZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzZWxlY3RvcjogXCJmb3JlY2FzdC10YWdcIixcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JlY2FzdFRhZ0NvbXBvbmVudCBleHRlbmRzIEFueVRhZ0NvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgZmlzY2FsWWVhclN0YXJ0c0Zyb20/OiBudW1iZXI7XHJcbiAgQElucHV0KCkgZmlzY2FsWWVhckJhY2s/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGxvY2tlZERhdGU6IGFueVtdID0gW107XHJcbiAgZm9yZWNhc3RWYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICBmb3JlY2FzdFRhZ3M6IGFueVtdID0gW1xyXG4gICAge1widmFsdWVcIjogMCwgXCJsYWJlbFwiOiBcIjArMTJcIn0sXHJcbiAgICB7XCJ2YWx1ZVwiOiAxLCBcImxhYmVsXCI6IFwiMSsxMVwifSxcclxuICAgIHtcInZhbHVlXCI6IDIsIFwibGFiZWxcIjogXCIyKzEwXCJ9LFxyXG4gICAge1widmFsdWVcIjogMywgXCJsYWJlbFwiOiBcIjMrOVwifSxcclxuICAgIHtcInZhbHVlXCI6IDQsIFwibGFiZWxcIjogXCI0KzhcIn0sXHJcbiAgICB7XCJ2YWx1ZVwiOiA1LCBcImxhYmVsXCI6IFwiNSs3XCJ9LFxyXG4gICAge1widmFsdWVcIjogNiwgXCJsYWJlbFwiOiBcIjYrNlwifSxcclxuICAgIHtcInZhbHVlXCI6IDcsIFwibGFiZWxcIjogXCI3KzVcIn0sXHJcbiAgICB7XCJ2YWx1ZVwiOiA4LCBcImxhYmVsXCI6IFwiOCs0XCJ9LFxyXG4gICAge1widmFsdWVcIjogOSwgXCJsYWJlbFwiOiBcIjkrM1wifSxcclxuICAgIHtcInZhbHVlXCI6IDEwLCBcImxhYmVsXCI6IFwiMTArMlwifSxcclxuICAgIHtcInZhbHVlXCI6IDExLCBcImxhYmVsXCI6IFwiMTErMVwifVxyXG4gIF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIGluaXREYXRlKCkge1xyXG4gICAgbGV0IGRhdGVWYWwgPSBuZXcgRGF0ZSgpO1xyXG4gICAgaWYgKHRoaXMuZGVmYXVsdFZhbHVlKSB7XHJcbiAgICAgIGRhdGVWYWwgPSBuZXcgRGF0ZSh0aGlzLmRlZmF1bHRWYWx1ZSAqIDEwMDApO1xyXG4gICAgfVxyXG4gICAgbGV0IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tID0gdGhpcy5maXNjYWxZZWFyU3RhcnRzRnJvbSB8fCAxO1xyXG4gICAgbGV0IGZpc2NhbF95ZWFyX2JhY2sgPSB0aGlzLmZpc2NhbFllYXJCYWNrIHx8IGZhbHNlO1xyXG4gICAgdGhpcy5mb3JlY2FzdFZhbHVlID0gdGhpcy5nZXRGaXNjYWxNb250aEZyb21EYXRlKGRhdGVWYWwsIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tKSAtIDE7XHJcbiAgICBsZXQgZmlzY2FsX3llYXIgPSB0aGlzLmdldEZpc2NhbFllYXJGcm9tRGF0ZShkYXRlVmFsLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSwgZmlzY2FsX3llYXJfYmFjayk7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJ0ZXN0XCIsIGRhdGVWYWwsIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tLCB0aGlzLmZvcmVjYXN0VmFsdWUsIGZpc2NhbF95ZWFyKTtcclxuXHJcbiAgICB0aGlzLmRhdGVPYmouZGF0ZSA9IG1vbWVudChuZXcgRGF0ZShmaXNjYWxfeWVhciwgMCwgMSkpLmZvcm1hdChcIllZWVlcIik7XHJcblxyXG4gICAgdGhpcy51cGRhdGVMb2NrZWREYXRlKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVMb2NrZWREYXRlKCkge1xyXG4gICAgZm9yIChsZXQgZm9yZWNhc3RUYWcgb2YgdGhpcy5mb3JlY2FzdFRhZ3MpIHtcclxuICAgICAgZm9yZWNhc3RUYWcuZGlzYWJsZSA9IGZhbHNlO1xyXG5cclxuICAgICAgdGhpcy5sb2NrZWREYXRlLmZvckVhY2godGltZXN0YW1wID0+IHtcclxuICAgICAgICBjb25zdCBsb2NrZWQgPSBtb21lbnQudW5peCh0aW1lc3RhbXApO1xyXG5cclxuICAgICAgICBpZiAobG9ja2VkLm1vbnRoKCkgLSAxID09PSBmb3JlY2FzdFRhZy52YWx1ZSAmJiArbG9ja2VkLnllYXIoKSArIDEgPT09ICt0aGlzLmRhdGVPYmouZGF0ZSkge1xyXG4gICAgICAgICAgZm9yZWNhc3RUYWcuZGlzYWJsZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXROYW1lKCkge1xyXG4gICAgaWYgKCF0aGlzLm5hbWUpIHtcclxuICAgICAgdGhpcy5uYW1lID0gXCJGb3JlY2FzdFwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RmlzY2FsTW9udGhGcm9tRGF0ZShkYXRlT2JqLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSkge1xyXG4gICAgbGV0IGFsbF9tb250aHMgPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gZmlzY2FsX3llYXJfc3RhcnRzX2Zyb207IGkgPCAxMzsgaSsrKSB7XHJcbiAgICAgIGFsbF9tb250aHMucHVzaChpKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tOyBpKyspIHtcclxuICAgICAgYWxsX21vbnRocy5wdXNoKGkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBhbGxfbW9udGhzLmluZGV4T2YoZGF0ZU9iai5nZXRNb250aCgpICsgMSkgKyAxO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmlzY2FsWWVhckZyb21EYXRlKGRhdGVPYmosIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tLCBmaXNjYWxfeWVhcl9iYWNrKSB7XHJcbiAgICBsZXQgZmlzY2FsX3llYXIgPSBkYXRlT2JqLmdldEZ1bGxZZWFyKCk7XHJcblxyXG4gICAgaWYgKCFmaXNjYWxfeWVhcl9iYWNrKSB7XHJcbiAgICAgIGlmIChkYXRlT2JqLmdldE1vbnRoKCkgKyAxID49IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tICYmIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tICE9PSAxKSB7XHJcbiAgICAgICAgZmlzY2FsX3llYXIgKz0gMTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGRhdGVPYmouZ2V0TW9udGgoKSArIDEgPCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSAmJiBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSAhPT0gMSkge1xyXG4gICAgICAgIGZpc2NhbF95ZWFyIC09IDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmlzY2FsX3llYXI7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JlY2FzdExhYmVsRnJvbVZhbHVlKHZhbHVlLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSwgZmlzY2FsX3llYXJfYmFjaykge1xyXG4gICAgbGV0IGxhYmVsID0gXCJcIjtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBsZXQgZGF0ZU9iaiA9IG5ldyBEYXRlKHZhbHVlICogMTAwMCk7XHJcblxyXG4gICAgICBsZXQgZmlzY2FsX21vbnRoID0gdGhpcy5nZXRGaXNjYWxNb250aEZyb21EYXRlKGRhdGVPYmosIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tKTtcclxuICAgICAgbGV0IGZpc2NhbF95ZWFyID0gdGhpcy5nZXRGaXNjYWxZZWFyRnJvbURhdGUoZGF0ZU9iaiwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20sIGZpc2NhbF95ZWFyX2JhY2spO1xyXG5cclxuICAgICAgbGFiZWwgPSAoZmlzY2FsX21vbnRoIC0gMSkgKyBcIitcIiArICgxMyAtIGZpc2NhbF9tb250aCkgKyBcIiAoXCIgKyBmaXNjYWxfeWVhciArIFwiKVwiO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxhYmVsO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlVGFnSW5wdXRIYW5kbGVyKGV2ZW50OiBNYXRTZWxlY3RDaGFuZ2UgfCBNYXRCdXR0b25Ub2dnbGVDaGFuZ2UpIHtcclxuICAgIHRoaXMuY2hvc2VuVGFnSGFuZGxlcigpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlWWVhcklucHV0SGFuZGxlcihldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMudXBkYXRlTG9ja2VkRGF0ZSgpO1xyXG4gICAgdGhpcy5jaG9zZW5UYWdIYW5kbGVyKCk7XHJcbiAgfVxyXG5cclxuICBjaG9zZW5UYWdIYW5kbGVyKCkge1xyXG4gICAgbGV0IG1vbnRoID0gdGhpcy5mb3JlY2FzdFZhbHVlO1xyXG4gICAgbGV0IHllYXIgPSBOdW1iZXIucGFyc2VJbnQodGhpcy5kYXRlT2JqLmRhdGUpO1xyXG5cclxuICAgIGxldCB0aW1lU3RhbXBWYWwgPSAwO1xyXG4gICAgbGV0IGxhYmVsID0gXCJcIjtcclxuXHJcbiAgICBpZiAoIU51bWJlci5pc05hTihtb250aCkgJiYgIU51bWJlci5pc05hTih5ZWFyKSkge1xyXG5cclxuXHJcbiAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEsIDEyLCAwLCAwLCAwKTtcclxuICAgICAgbGV0IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tID0gdGhpcy5maXNjYWxZZWFyU3RhcnRzRnJvbSB8fCAxO1xyXG4gICAgICBsZXQgZmlzY2FsX3llYXJfYmFjayA9IHRoaXMuZmlzY2FsWWVhckJhY2sgfHwgZmFsc2U7XHJcbiAgICAgIGlmIChmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSAhPT0gMSkge1xyXG4gICAgICAgIGlmICghZmlzY2FsX3llYXJfYmFjaylcclxuICAgICAgICAgIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpIC0gMTMgKyBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgZGF0ZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgLSAxICsgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aW1lU3RhbXBWYWwgPSBkYXRlLmdldFRpbWUoKSAvIDEwMDA7XHJcbiAgICAgIGxhYmVsID0gdGhpcy5nZXRGb3JlY2FzdExhYmVsRnJvbVZhbHVlKHRpbWVTdGFtcFZhbCwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20sIGZpc2NhbF95ZWFyX2JhY2spO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlc3VsdFRhZzogSURhdGVUYWcgPSB7XHJcbiAgICAgICAgICBcIm5hbWVcIjogdGhpcy5uYW1lLFxyXG4gICAgICAgICAgXCJ2YWx1ZVwiOiB0aW1lU3RhbXBWYWwsXHJcbiAgICAgICAgICBcImxhYmVsXCI6IGxhYmVsLFxyXG4gICAgICAgICAgXCJsb2NrZWRcIjogIXRoaXMuZGF0ZUZpbHRlcih0aW1lU3RhbXBWYWwpXHJcbiAgICAgIH07XHJcblxyXG4gICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQocmVzdWx0VGFnKTtcclxuICB9XHJcblxyXG4gIGRhdGVGaWx0ZXIgPSAoZGF0ZSkgPT4ge1xyXG4gICAgY29uc3QgZm9yZWNhc3REYXRlID0gbW9tZW50LnVuaXgoZGF0ZSk7XHJcbiAgICBsZXQgc3RhdHVzID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmxvY2tlZERhdGUuZm9yRWFjaCh0aW1lc3RhbXAgPT4ge1xyXG4gICAgICBjb25zdCBsb2NrZWQgPSBtb21lbnQudW5peCh0aW1lc3RhbXApO1xyXG5cclxuICAgICAgcmV0dXJuIHN0YXR1cyA9ICEobG9ja2VkLm1vbnRoKCkgPT09IGZvcmVjYXN0RGF0ZS5tb250aCgpICYmIGxvY2tlZC55ZWFyKCkgPT09IGZvcmVjYXN0RGF0ZS55ZWFyKCkpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHN0YXR1cztcclxuICB9XHJcbn1cclxuIl19
1
+ import { Component, Input } from "@angular/core";
2
+ import { AnyTagComponent } from "../date-tag.component";
3
+ // @ts-ignore
4
+ const moment = require("moment");
5
+ export class ForecastTagComponent extends AnyTagComponent {
6
+ constructor() {
7
+ super();
8
+ this.lockedDate = [];
9
+ this.forecastValue = undefined;
10
+ this.forecastTags = [
11
+ { "value": 0, "label": "0+12" },
12
+ { "value": 1, "label": "1+11" },
13
+ { "value": 2, "label": "2+10" },
14
+ { "value": 3, "label": "3+9" },
15
+ { "value": 4, "label": "4+8" },
16
+ { "value": 5, "label": "5+7" },
17
+ { "value": 6, "label": "6+6" },
18
+ { "value": 7, "label": "7+5" },
19
+ { "value": 8, "label": "8+4" },
20
+ { "value": 9, "label": "9+3" },
21
+ { "value": 10, "label": "10+2" },
22
+ { "value": 11, "label": "11+1" }
23
+ ];
24
+ this.dateFilter = (date) => {
25
+ const forecastDate = moment.unix(date);
26
+ let status = true;
27
+ this.lockedDate.forEach(timestamp => {
28
+ const locked = moment.unix(timestamp);
29
+ return status = !(locked.month() === forecastDate.month() && locked.year() === forecastDate.year());
30
+ });
31
+ return status;
32
+ };
33
+ }
34
+ initDate() {
35
+ let dateVal = new Date();
36
+ if (this.defaultValue) {
37
+ dateVal = new Date(this.defaultValue * 1000);
38
+ }
39
+ let fiscal_year_starts_from = this.fiscalYearStartsFrom || 1;
40
+ let fiscal_year_back = this.fiscalYearBack || false;
41
+ this.forecastValue = this.getFiscalMonthFromDate(dateVal, fiscal_year_starts_from) - 1;
42
+ let fiscal_year = this.getFiscalYearFromDate(dateVal, fiscal_year_starts_from, fiscal_year_back);
43
+ console.log("test", dateVal, fiscal_year_starts_from, this.forecastValue, fiscal_year);
44
+ this.dateObj.date = moment(new Date(fiscal_year, 0, 1)).format("YYYY");
45
+ this.updateLockedDate();
46
+ }
47
+ updateLockedDate() {
48
+ for (let forecastTag of this.forecastTags) {
49
+ forecastTag.disable = false;
50
+ this.lockedDate.forEach(timestamp => {
51
+ const locked = moment.unix(timestamp);
52
+ if (locked.month() - 1 === forecastTag.value && +locked.year() + 1 === +this.dateObj.date) {
53
+ forecastTag.disable = true;
54
+ }
55
+ });
56
+ }
57
+ }
58
+ initName() {
59
+ if (!this.name) {
60
+ this.name = "Forecast";
61
+ }
62
+ }
63
+ getFiscalMonthFromDate(dateObj, fiscal_year_starts_from) {
64
+ let all_months = [];
65
+ for (let i = fiscal_year_starts_from; i < 13; i++) {
66
+ all_months.push(i);
67
+ }
68
+ for (let i = 1; i < fiscal_year_starts_from; i++) {
69
+ all_months.push(i);
70
+ }
71
+ return all_months.indexOf(dateObj.getMonth() + 1) + 1;
72
+ }
73
+ getFiscalYearFromDate(dateObj, fiscal_year_starts_from, fiscal_year_back) {
74
+ let fiscal_year = dateObj.getFullYear();
75
+ if (!fiscal_year_back) {
76
+ if (dateObj.getMonth() + 1 >= fiscal_year_starts_from && fiscal_year_starts_from !== 1) {
77
+ fiscal_year += 1;
78
+ }
79
+ }
80
+ else {
81
+ if (dateObj.getMonth() + 1 < fiscal_year_starts_from && fiscal_year_starts_from !== 1) {
82
+ fiscal_year -= 1;
83
+ }
84
+ }
85
+ return fiscal_year;
86
+ }
87
+ getForecastLabelFromValue(value, fiscal_year_starts_from, fiscal_year_back) {
88
+ let label = "";
89
+ if (value) {
90
+ let dateObj = new Date(value * 1000);
91
+ let fiscal_month = this.getFiscalMonthFromDate(dateObj, fiscal_year_starts_from);
92
+ let fiscal_year = this.getFiscalYearFromDate(dateObj, fiscal_year_starts_from, fiscal_year_back);
93
+ label = (fiscal_month - 1) + "+" + (13 - fiscal_month) + " (" + fiscal_year + ")";
94
+ }
95
+ return label;
96
+ }
97
+ changeTagInputHandler(event) {
98
+ this.chosenTagHandler();
99
+ }
100
+ changeYearInputHandler(event) {
101
+ this.updateLockedDate();
102
+ this.chosenTagHandler();
103
+ }
104
+ chosenTagHandler() {
105
+ let month = this.forecastValue;
106
+ let year = Number.parseInt(this.dateObj.date);
107
+ let timeStampVal = 0;
108
+ let label = "";
109
+ if (!Number.isNaN(month) && !Number.isNaN(year)) {
110
+ let date = new Date(year, month, 1, 12, 0, 0, 0);
111
+ let fiscal_year_starts_from = this.fiscalYearStartsFrom || 1;
112
+ let fiscal_year_back = this.fiscalYearBack || false;
113
+ if (fiscal_year_starts_from !== 1) {
114
+ if (!fiscal_year_back)
115
+ date.setMonth(date.getMonth() - 13 + fiscal_year_starts_from);
116
+ else
117
+ date.setMonth(date.getMonth() - 1 + fiscal_year_starts_from);
118
+ }
119
+ timeStampVal = date.getTime() / 1000;
120
+ label = this.getForecastLabelFromValue(timeStampVal, fiscal_year_starts_from, fiscal_year_back);
121
+ }
122
+ const resultTag = {
123
+ "name": this.name,
124
+ "value": timeStampVal,
125
+ "label": label,
126
+ "locked": !this.dateFilter(timeStampVal)
127
+ };
128
+ this.dateChange.emit(resultTag);
129
+ }
130
+ }
131
+ ForecastTagComponent.decorators = [
132
+ { type: Component, args: [{
133
+ template: "<div>\n <mat-form-field style=\"margin-right: 3px; margin-bottom:3px\">\n <mat-select placeholder=\"{{name}}\" (selectionChange)=\"changeTagInputHandler($event)\" [(value)]=\"forecastValue\">\n <mat-option *ngFor=\"let forecastTag of forecastTags\" [value]=\"forecastTag.value\" [disabled]=\"forecastTag.disable\">{{forecastTag.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"date-select-box\">\n <input matInput placeholder=\"Year\" type=\"number\" name=\"Year\"\n (change)=\"changeYearInputHandler($event)\"\n [(ngModel)]=\"dateObj.date\">\n </mat-form-field>\n</div>\n",
134
+ selector: "forecast-tag"
135
+ },] }
136
+ ];
137
+ ForecastTagComponent.ctorParameters = () => [];
138
+ ForecastTagComponent.propDecorators = {
139
+ fiscalYearStartsFrom: [{ type: Input }],
140
+ fiscalYearBack: [{ type: Input }],
141
+ lockedDate: [{ type: Input }]
142
+ };
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9mb3JlY2FzdC10YWcvZm9yZWNhc3QtdGFnLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUcvQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHdEQsYUFBYTtBQUNiLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQU9qQyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsZUFBZTtJQXFCdkQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQW5CRCxlQUFVLEdBQVUsRUFBRSxDQUFDO1FBQ2hDLGtCQUFhLEdBQXVCLFNBQVMsQ0FBQztRQUU5QyxpQkFBWSxHQUFVO1lBQ3BCLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDO1lBQzdCLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDO1lBQzdCLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDO1lBQzdCLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDO1lBQzVCLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDO1lBQzVCLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDO1lBQzVCLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDO1lBQzVCLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDO1lBQzVCLEVBQUMs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QyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2pELElBQUksdUJBQXVCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsQ0FBQztZQUM3RCxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLElBQUksS0FBSyxDQUFDO1lBQ3BELElBQUksdUJBQXVCLEtBQUssQ0FBQyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsZ0JBQWdCO29CQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsdUJBQXVCLENBQUMsQ0FBQzs7b0JBRTlELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDO2FBQ2hFO1lBRUQsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDckMsS0FBSyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUNqRztRQUVELE1BQU0sU0FBUyxHQUFhO1lBQ3RCLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNqQixPQUFPLEVBQUUsWUFBWTtZQUNyQixPQUFPLEVBQUUsS0FBSztZQUNkLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO1NBQzNDLENBQUM7UUFFSixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsQyxDQUFDOzs7WUF2SkYsU0FBUyxTQUFDO2dCQUNQLDBxQkFBMEM7Z0JBQzFDLFFBQVEsRUFBRSxjQUFjO2FBQzNCOzs7O21DQUdFLEtBQUs7NkJBQ0wsS0FBSzt5QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtNb21lbnR9IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7SURhdGVUYWd9IGZyb20gXCIuLi8uLi9tb2RlbHMvc2VydmVyVGFnc1wiO1xuaW1wb3J0IHtBbnlUYWdDb21wb25lbnR9IGZyb20gXCIuLi9kYXRlLXRhZy5jb21wb25lbnRcIjtcbmltcG9ydCB7TWF0U2VsZWN0Q2hhbmdlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0XCI7XG5pbXBvcnQge01hdEJ1dHRvblRvZ2dsZUNoYW5nZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGVcIjtcbi8vIEB0cy1pZ25vcmVcbmNvbnN0IG1vbWVudCA9IHJlcXVpcmUoXCJtb21lbnRcIik7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiBcImZvcmVjYXN0LXRhZy5jb21wb25lbnQuaHRtbFwiLFxuICAgIHNlbGVjdG9yOiBcImZvcmVjYXN0LXRhZ1wiLFxufSlcblxuZXhwb3J0IGNsYXNzIEZvcmVjYXN0VGFnQ29tcG9uZW50IGV4dGVuZHMgQW55VGFnQ29tcG9uZW50IHtcbiAgQElucHV0KCkgZmlzY2FsWWVhclN0YXJ0c0Zyb20/OiBudW1iZXI7XG4gIEBJbnB1dCgpIGZpc2NhbFllYXJCYWNrPzogYm9vbGVhbjtcbiAgQElucHV0KCkgbG9ja2VkRGF0ZTogYW55W10gPSBbXTtcbiAgZm9yZWNhc3RWYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIGZvcmVjYXN0VGFnczogYW55W10gPSBbXG4gICAge1widmFsdWVcIjogMCwgXCJsYWJlbFwiOiBcIjArMTJcIn0sXG4gICAge1widmFsdWVcIjogMSwgXCJsYWJlbFwiOiBcIjErMTFcIn0sXG4gICAge1widmFsdWVcIjogMiwgXCJsYWJlbFwiOiBcIjIrMTBcIn0sXG4gICAge1widmFsdWVcIjogMywgXCJsYWJlbFwiOiBcIjMrOVwifSxcbiAgICB7XCJ2YWx1ZVwiOiA0LCBcImxhYmVsXCI6IFwiNCs4XCJ9LFxuICAgIHtcInZhbHVlXCI6IDUsIFwibGFiZWxcIjogXCI1KzdcIn0sXG4gICAge1widmFsdWVcIjogNiwgXCJsYWJlbFwiOiBcIjYrNlwifSxcbiAgICB7XCJ2YWx1ZVwiOiA3LCBcImxhYmVsXCI6IFwiNys1XCJ9LFxuICAgIHtcInZhbHVlXCI6IDgsIFwibGFiZWxcIjogXCI4KzRcIn0sXG4gICAge1widmFsdWVcIjogOSwgXCJsYWJlbFwiOiBcIjkrM1wifSxcbiAgICB7XCJ2YWx1ZVwiOiAxMCwgXCJsYWJlbFwiOiBcIjEwKzJcIn0sXG4gICAge1widmFsdWVcIjogMTEsIFwibGFiZWxcIjogXCIxMSsxXCJ9XG4gIF07XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGluaXREYXRlKCkge1xuICAgIGxldCBkYXRlVmFsID0gbmV3IERhdGUoKTtcbiAgICBpZiAodGhpcy5kZWZhdWx0VmFsdWUpIHtcbiAgICAgIGRhdGVWYWwgPSBuZXcgRGF0ZSh0aGlzLmRlZmF1bHRWYWx1ZSAqIDEwMDApO1xuICAgIH1cbiAgICBsZXQgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gPSB0aGlzLmZpc2NhbFllYXJTdGFydHNGcm9tIHx8IDE7XG4gICAgbGV0IGZpc2NhbF95ZWFyX2JhY2sgPSB0aGlzLmZpc2NhbFllYXJCYWNrIHx8IGZhbHNlO1xuICAgIHRoaXMuZm9yZWNhc3RWYWx1ZSA9IHRoaXMuZ2V0RmlzY2FsTW9udGhGcm9tRGF0ZShkYXRlVmFsLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSkgLSAxO1xuICAgIGxldCBmaXNjYWxfeWVhciA9IHRoaXMuZ2V0RmlzY2FsWWVhckZyb21EYXRlKGRhdGVWYWwsIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tLCBmaXNjYWxfeWVhcl9iYWNrKTtcblxuICAgIGNvbnNvbGUubG9nKFwidGVzdFwiLCBkYXRlVmFsLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSwgdGhpcy5mb3JlY2FzdFZhbHVlLCBmaXNjYWxfeWVhcik7XG5cbiAgICB0aGlzLmRhdGVPYmouZGF0ZSA9IG1vbWVudChuZXcgRGF0ZShmaXNjYWxfeWVhciwgMCwgMSkpLmZvcm1hdChcIllZWVlcIik7XG5cbiAgICB0aGlzLnVwZGF0ZUxvY2tlZERhdGUoKTtcbiAgfVxuXG4gIHVwZGF0ZUxvY2tlZERhdGUoKSB7XG4gICAgZm9yIChsZXQgZm9yZWNhc3RUYWcgb2YgdGhpcy5mb3JlY2FzdFRhZ3MpIHtcbiAgICAgIGZvcmVjYXN0VGFnLmRpc2FibGUgPSBmYWxzZTtcblxuICAgICAgdGhpcy5sb2NrZWREYXRlLmZvckVhY2godGltZXN0YW1wID0+IHtcbiAgICAgICAgY29uc3QgbG9ja2VkID0gbW9tZW50LnVuaXgodGltZXN0YW1wKTtcblxuICAgICAgICBpZiAobG9ja2VkLm1vbnRoKCkgLSAxID09PSBmb3JlY2FzdFRhZy52YWx1ZSAmJiArbG9ja2VkLnllYXIoKSArIDEgPT09ICt0aGlzLmRhdGVPYmouZGF0ZSkge1xuICAgICAgICAgIGZvcmVjYXN0VGFnLmRpc2FibGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpbml0TmFtZSgpIHtcbiAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgdGhpcy5uYW1lID0gXCJGb3JlY2FzdFwiO1xuICAgIH1cbiAgfVxuXG4gIGdldEZpc2NhbE1vbnRoRnJvbURhdGUoZGF0ZU9iaiwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20pIHtcbiAgICBsZXQgYWxsX21vbnRocyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tOyBpIDwgMTM7IGkrKykge1xuICAgICAgYWxsX21vbnRocy5wdXNoKGkpO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb207IGkrKykge1xuICAgICAgYWxsX21vbnRocy5wdXNoKGkpO1xuICAgIH1cblxuICAgIHJldHVybiBhbGxfbW9udGhzLmluZGV4T2YoZGF0ZU9iai5nZXRNb250aCgpICsgMSkgKyAxO1xuICB9XG5cbiAgZ2V0RmlzY2FsWWVhckZyb21EYXRlKGRhdGVPYmosIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tLCBmaXNjYWxfeWVhcl9iYWNrKSB7XG4gICAgbGV0IGZpc2NhbF95ZWFyID0gZGF0ZU9iai5nZXRGdWxsWWVhcigpO1xuXG4gICAgaWYgKCFmaXNjYWxfeWVhcl9iYWNrKSB7XG4gICAgICBpZiAoZGF0ZU9iai5nZXRNb250aCgpICsgMSA+PSBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSAmJiBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSAhPT0gMSkge1xuICAgICAgICBmaXNjYWxfeWVhciArPSAxO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZGF0ZU9iai5nZXRNb250aCgpICsgMSA8IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tICYmIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tICE9PSAxKSB7XG4gICAgICAgIGZpc2NhbF95ZWFyIC09IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpc2NhbF95ZWFyO1xuICB9XG5cbiAgZ2V0Rm9yZWNhc3RMYWJlbEZyb21WYWx1ZSh2YWx1ZSwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20sIGZpc2NhbF95ZWFyX2JhY2spIHtcbiAgICBsZXQgbGFiZWwgPSBcIlwiO1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgbGV0IGRhdGVPYmogPSBuZXcgRGF0ZSh2YWx1ZSAqIDEwMDApO1xuXG4gICAgICBsZXQgZmlzY2FsX21vbnRoID0gdGhpcy5nZXRGaXNjYWxNb250aEZyb21EYXRlKGRhdGVPYmosIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tKTtcbiAgICAgIGxldCBmaXNjYWxfeWVhciA9IHRoaXMuZ2V0RmlzY2FsWWVhckZyb21EYXRlKGRhdGVPYmosIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tLCBmaXNjYWxfeWVhcl9iYWNrKTtcblxuICAgICAgbGFiZWwgPSAoZmlzY2FsX21vbnRoIC0gMSkgKyBcIitcIiArICgxMyAtIGZpc2NhbF9tb250aCkgKyBcIiAoXCIgKyBmaXNjYWxfeWVhciArIFwiKVwiO1xuICAgIH1cbiAgICByZXR1cm4gbGFiZWw7XG4gIH1cblxuICBjaGFuZ2VUYWdJbnB1dEhhbmRsZXIoZXZlbnQ6IE1hdFNlbGVjdENoYW5nZSB8IE1hdEJ1dHRvblRvZ2dsZUNoYW5nZSkge1xuICAgIHRoaXMuY2hvc2VuVGFnSGFuZGxlcigpO1xuICB9XG5cbiAgY2hhbmdlWWVhcklucHV0SGFuZGxlcihldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLnVwZGF0ZUxvY2tlZERhdGUoKTtcbiAgICB0aGlzLmNob3NlblRhZ0hhbmRsZXIoKTtcbiAgfVxuXG4gIGNob3NlblRhZ0hhbmRsZXIoKSB7XG4gICAgbGV0IG1vbnRoID0gdGhpcy5mb3JlY2FzdFZhbHVlO1xuICAgIGxldCB5ZWFyID0gTnVtYmVyLnBhcnNlSW50KHRoaXMuZGF0ZU9iai5kYXRlKTtcblxuICAgIGxldCB0aW1lU3RhbXBWYWwgPSAwO1xuICAgIGxldCBsYWJlbCA9IFwiXCI7XG5cbiAgICBpZiAoIU51bWJlci5pc05hTihtb250aCkgJiYgIU51bWJlci5pc05hTih5ZWFyKSkge1xuXG5cbiAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEsIDEyLCAwLCAwLCAwKTtcbiAgICAgIGxldCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSA9IHRoaXMuZmlzY2FsWWVhclN0YXJ0c0Zyb20gfHwgMTtcbiAgICAgIGxldCBmaXNjYWxfeWVhcl9iYWNrID0gdGhpcy5maXNjYWxZZWFyQmFjayB8fCBmYWxzZTtcbiAgICAgIGlmIChmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSAhPT0gMSkge1xuICAgICAgICBpZiAoIWZpc2NhbF95ZWFyX2JhY2spXG4gICAgICAgICAgZGF0ZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgLSAxMyArIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpIC0gMSArIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tKTtcbiAgICAgIH1cblxuICAgICAgdGltZVN0YW1wVmFsID0gZGF0ZS5nZXRUaW1lKCkgLyAxMDAwO1xuICAgICAgbGFiZWwgPSB0aGlzLmdldEZvcmVjYXN0TGFiZWxGcm9tVmFsdWUodGltZVN0YW1wVmFsLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSwgZmlzY2FsX3llYXJfYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0VGFnOiBJRGF0ZVRhZyA9IHtcbiAgICAgICAgICBcIm5hbWVcIjogdGhpcy5uYW1lLFxuICAgICAgICAgIFwidmFsdWVcIjogdGltZVN0YW1wVmFsLFxuICAgICAgICAgIFwibGFiZWxcIjogbGFiZWwsXG4gICAgICAgICAgXCJsb2NrZWRcIjogIXRoaXMuZGF0ZUZpbHRlcih0aW1lU3RhbXBWYWwpXG4gICAgICB9O1xuXG4gICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQocmVzdWx0VGFnKTtcbiAgfVxuXG4gIGRhdGVGaWx0ZXIgPSAoZGF0ZSkgPT4ge1xuICAgIGNvbnN0IGZvcmVjYXN0RGF0ZSA9IG1vbWVudC51bml4KGRhdGUpO1xuICAgIGxldCBzdGF0dXMgPSB0cnVlO1xuXG4gICAgdGhpcy5sb2NrZWREYXRlLmZvckVhY2godGltZXN0YW1wID0+IHtcbiAgICAgIGNvbnN0IGxvY2tlZCA9IG1vbWVudC51bml4KHRpbWVzdGFtcCk7XG5cbiAgICAgIHJldHVybiBzdGF0dXMgPSAhKGxvY2tlZC5tb250aCgpID09PSBmb3JlY2FzdERhdGUubW9udGgoKSAmJiBsb2NrZWQueWVhcigpID09PSBmb3JlY2FzdERhdGUueWVhcigpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzdGF0dXM7XG4gIH1cbn1cbiJdfQ==
@@ -1,87 +1,87 @@
1
- import { Component, Input } from "@angular/core";
2
- import { AnyTagComponent } from "../date-tag.component";
3
- import { FormControl } from "@angular/forms";
4
- import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from "@angular/material/core";
5
- import { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from "@angular/material-moment-adapter";
6
- // @ts-ignore
7
- const moment = require("moment");
8
- const MONTH_FORMATS = {
9
- parse: {
10
- dateInput: "DD-MM-YYYY",
11
- },
12
- display: {
13
- dateInput: "MMMM YYYY",
14
- monthYearLabel: "MMMM YYYY",
15
- dateA11yLabel: "LL",
16
- monthYearA11yLabel: "MMMM YYYY"
17
- },
18
- };
19
- const ɵ0 = MONTH_FORMATS;
20
- export class MonthTagComponent extends AnyTagComponent {
21
- constructor() {
22
- super();
23
- this.lockedDate = [];
24
- this.date = new FormControl(moment());
25
- this.dateFilter = (date) => {
26
- const calendarDate = moment(date);
27
- let status = true;
28
- this.lockedDate.forEach(timestamp => {
29
- const lockDate = moment.unix(timestamp);
30
- return status = !(lockDate.year() === calendarDate.year() && lockDate.month() === calendarDate.month());
31
- });
32
- return status;
33
- };
34
- }
35
- initDate() {
36
- if (this.defaultValue) {
37
- this.dateObj.date = moment(this.defaultValue * 1000).utc().format("YYYY-MM");
38
- this.date = new FormControl(moment(this.defaultValue * 1000));
39
- }
40
- else {
41
- this.dateObj.date = moment(new Date()).format("YYYY-MM");
42
- }
43
- }
44
- initName() {
45
- if (!this.name) {
46
- this.name = "Month and Year";
47
- }
48
- }
49
- chosenTagHandler(value) {
50
- const resultDate = moment.utc(value);
51
- resultDate.hour(12);
52
- const resultTag = {
53
- name: this.name,
54
- value: parseInt(resultDate.format("X"), 10),
55
- label: resultDate.format("MMMM YYYY"),
56
- locked: !this.dateFilter(value)
57
- };
58
- console.log(resultTag, value);
59
- this.dateChange.emit(resultTag);
60
- }
61
- chosenMonthHandler(normalizedMonth, datepicker) {
62
- this.date.setValue(normalizedMonth);
63
- this.dateObj.date = this.date.value;
64
- this.chosenTagHandler(this.date.value);
65
- datepicker.close();
66
- }
67
- }
68
- MonthTagComponent.decorators = [
69
- { type: Component, args: [{
70
- template: "<div>\r\n <mat-form-field class=\"date-select-box\">\r\n <input\r\n matInput\r\n placeholder=\"{{name}}\"\r\n name=\"Month\"\r\n [formControl]=\"date\"\r\n [matDatepickerFilter]=\"dateFilter\"\r\n [matDatepicker]=\"datepicker\">\r\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\r\n <mat-datepicker\r\n #datepicker\r\n startView=\"year\"\r\n (monthSelected)=\"chosenMonthHandler($event, datepicker)\"\r\n ></mat-datepicker>\r\n </mat-form-field>\r\n</div>\r\n",
71
- selector: "month-tag",
72
- providers: [
73
- {
74
- provide: DateAdapter,
75
- useClass: MomentDateAdapter,
76
- deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
77
- },
78
- { provide: MAT_DATE_FORMATS, useValue: ɵ0 },
79
- ]
80
- },] }
81
- ];
82
- MonthTagComponent.ctorParameters = () => [];
83
- MonthTagComponent.propDecorators = {
84
- lockedDate: [{ type: Input }]
85
- };
86
- export { ɵ0 };
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9tb250aC10YWcvbW9udGgtdGFnLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBZ0IsS0FBSyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUdoRyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdEYsT0FBTyxFQUFDLCtCQUErQixFQUFFLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDcEcsYUFBYTtBQUNiLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVqQyxNQUFNLGFBQWEsR0FBRztJQUNwQixLQUFLLEVBQUU7UUFDTCxTQUFTLEVBQUUsWUFBWTtLQUN4QjtJQUNELE9BQU8sRUFBRTtRQUNQLFNBQVMsRUFBRSxXQUFXO1FBQ3RCLGNBQWMsRUFBRSxXQUFXO1FBQzNCLGFBQWEsRUFBRSxJQUFJO1FBQ25CLGtCQUFrQixFQUFFLFdBQVc7S0FDaEM7Q0FDRixDQUFDO1dBVzBDLGFBQWE7QUFJekQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGVBQWU7SUFLbEQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQUxILGVBQVUsR0FBVSxFQUFFLENBQUM7UUFFaEMsU0FBSSxHQUFHLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUEyQ2pDLGVBQVUsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3BCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FB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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge01vbWVudH0gZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQge0lEYXRlVGFnfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3NlcnZlclRhZ3NcIjtcclxuaW1wb3J0IHtBbnlUYWdDb21wb25lbnR9IGZyb20gXCIuLi9kYXRlLXRhZy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtNYXREYXRlcGlja2VyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlclwiO1xyXG5pbXBvcnQge0Zvcm1Db250cm9sfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xyXG5pbXBvcnQge01BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlMsIE1vbWVudERhdGVBZGFwdGVyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXJcIjtcclxuLy8gQHRzLWlnbm9yZVxyXG5jb25zdCBtb21lbnQgPSByZXF1aXJlKFwibW9tZW50XCIpO1xyXG5cclxuY29uc3QgTU9OVEhfRk9STUFUUyA9IHtcclxuICBwYXJzZToge1xyXG4gICAgZGF0ZUlucHV0OiBcIkRELU1NLVlZWVlcIixcclxuICB9LFxyXG4gIGRpc3BsYXk6IHtcclxuICAgIGRhdGVJbnB1dDogXCJNTU1NIFlZWVlcIixcclxuICAgIG1vbnRoWWVhckxhYmVsOiBcIk1NTU0gWVlZWVwiLFxyXG4gICAgZGF0ZUExMXlMYWJlbDogXCJMTFwiLFxyXG4gICAgbW9udGhZZWFyQTExeUxhYmVsOiBcIk1NTU0gWVlZWVwiXHJcbiAgfSxcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgdGVtcGxhdGVVcmw6IFwibW9udGgtdGFnLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzZWxlY3RvcjogXCJtb250aC10YWdcIixcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICB7XHJcbiAgICAgICAgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsXHJcbiAgICAgICAgdXNlQ2xhc3M6IE1vbWVudERhdGVBZGFwdGVyLFxyXG4gICAgICAgIGRlcHM6IFtNQVRfREFURV9MT0NBTEUsIE1BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlNdLFxyXG4gICAgICB9LFxyXG4gICAgICB7cHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IE1PTlRIX0ZPUk1BVFN9LFxyXG4gICAgXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBNb250aFRhZ0NvbXBvbmVudCBleHRlbmRzIEFueVRhZ0NvbXBvbmVudCB7XHJcbiAgICBASW5wdXQoKSBsb2NrZWREYXRlOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGRhdGUgPSBuZXcgRm9ybUNvbnRyb2wobW9tZW50KCkpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdERhdGUoKSB7XHJcbiAgICAgIGlmICh0aGlzLmRlZmF1bHRWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZGF0ZU9iai5kYXRlID0gbW9tZW50KHRoaXMuZGVmYXVsdFZhbHVlICogMTAwMCkudXRjKCkuZm9ybWF0KFwiWVlZWS1NTVwiKTtcclxuICAgICAgICB0aGlzLmRhdGUgPSBuZXcgRm9ybUNvbnRyb2wobW9tZW50KHRoaXMuZGVmYXVsdFZhbHVlICogMTAwMCkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGF0ZU9iai5kYXRlID0gbW9tZW50KG5ldyBEYXRlKCkpLmZvcm1hdChcIllZWVktTU1cIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbml0TmFtZSgpIHtcclxuICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcclxuICAgICAgICB0aGlzLm5hbWUgPSBcIk1vbnRoIGFuZCBZZWFyXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjaG9zZW5UYWdIYW5kbGVyKHZhbHVlKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0RGF0ZTogTW9tZW50ID0gbW9tZW50LnV0Yyh2YWx1ZSk7XHJcbiAgICAgICAgcmVzdWx0RGF0ZS5ob3VyKDEyKTtcclxuICAgICAgICBjb25zdCByZXN1bHRUYWc6IElEYXRlVGFnID0ge1xyXG4gICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXHJcbiAgICAgICAgICAgIHZhbHVlOiBwYXJzZUludChyZXN1bHREYXRlLmZvcm1hdChcIlhcIiksIDEwKSxcclxuICAgICAgICAgICAgbGFiZWw6IHJlc3VsdERhdGUuZm9ybWF0KFwiTU1NTSBZWVlZXCIpLFxyXG4gICAgICAgICAgICBsb2NrZWQ6ICF0aGlzLmRhdGVGaWx0ZXIodmFsdWUpXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHRUYWcsIHZhbHVlKTtcclxuICAgICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChyZXN1bHRUYWcpO1xyXG4gICAgfVxyXG5cclxuICAgIGNob3Nlbk1vbnRoSGFuZGxlcihub3JtYWxpemVkTW9udGg6IE1vbWVudCwgZGF0ZXBpY2tlcjogTWF0RGF0ZXBpY2tlcjxNb21lbnQ+KSB7XHJcbiAgICAgICAgdGhpcy5kYXRlLnNldFZhbHVlKG5vcm1hbGl6ZWRNb250aCk7XHJcbiAgICAgICAgdGhpcy5kYXRlT2JqLmRhdGUgPSB0aGlzLmRhdGUudmFsdWU7XHJcblxyXG4gICAgICAgIHRoaXMuY2hvc2VuVGFnSGFuZGxlcih0aGlzLmRhdGUudmFsdWUpO1xyXG5cclxuICAgICAgICBkYXRlcGlja2VyLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGF0ZUZpbHRlciA9IChkYXRlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNhbGVuZGFyRGF0ZSA9IG1vbWVudChkYXRlKTtcclxuICAgICAgbGV0IHN0YXR1cyA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmxvY2tlZERhdGUuZm9yRWFjaCh0aW1lc3RhbXAgPT4ge1xyXG4gICAgICAgIGNvbnN0IGxvY2tEYXRlID0gbW9tZW50LnVuaXgodGltZXN0YW1wKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHN0YXR1cyA9ICEobG9ja0RhdGUueWVhcigpID09PSBjYWxlbmRhckRhdGUueWVhcigpICYmIGxvY2tEYXRlLm1vbnRoKCkgPT09IGNhbGVuZGFyRGF0ZS5tb250aCgpKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gc3RhdHVzO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
1
+ import { Component, Input } from "@angular/core";
2
+ import { AnyTagComponent } from "../date-tag.component";
3
+ import { FormControl } from "@angular/forms";
4
+ import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from "@angular/material/core";
5
+ import { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from "@angular/material-moment-adapter";
6
+ // @ts-ignore
7
+ const moment = require("moment");
8
+ const MONTH_FORMATS = {
9
+ parse: {
10
+ dateInput: "DD-MM-YYYY",
11
+ },
12
+ display: {
13
+ dateInput: "MMMM YYYY",
14
+ monthYearLabel: "MMMM YYYY",
15
+ dateA11yLabel: "LL",
16
+ monthYearA11yLabel: "MMMM YYYY"
17
+ },
18
+ };
19
+ const ɵ0 = MONTH_FORMATS;
20
+ export class MonthTagComponent extends AnyTagComponent {
21
+ constructor() {
22
+ super();
23
+ this.lockedDate = [];
24
+ this.date = new FormControl(moment());
25
+ this.dateFilter = (date) => {
26
+ const calendarDate = moment(date);
27
+ let status = true;
28
+ this.lockedDate.forEach(timestamp => {
29
+ const lockDate = moment.unix(timestamp);
30
+ return status = !(lockDate.year() === calendarDate.year() && lockDate.month() === calendarDate.month());
31
+ });
32
+ return status;
33
+ };
34
+ }
35
+ initDate() {
36
+ if (this.defaultValue) {
37
+ this.dateObj.date = moment(this.defaultValue * 1000).utc().format("YYYY-MM");
38
+ this.date = new FormControl(moment(this.defaultValue * 1000));
39
+ }
40
+ else {
41
+ this.dateObj.date = moment(new Date()).format("YYYY-MM");
42
+ }
43
+ }
44
+ initName() {
45
+ if (!this.name) {
46
+ this.name = "Month and Year";
47
+ }
48
+ }
49
+ chosenTagHandler(value) {
50
+ const resultDate = moment.utc(value);
51
+ resultDate.hour(12);
52
+ const resultTag = {
53
+ name: this.name,
54
+ value: parseInt(resultDate.format("X"), 10),
55
+ label: resultDate.format("MMMM YYYY"),
56
+ locked: !this.dateFilter(value)
57
+ };
58
+ console.log(resultTag, value);
59
+ this.dateChange.emit(resultTag);
60
+ }
61
+ chosenMonthHandler(normalizedMonth, datepicker) {
62
+ this.date.setValue(normalizedMonth);
63
+ this.dateObj.date = this.date.value;
64
+ this.chosenTagHandler(this.date.value);
65
+ datepicker.close();
66
+ }
67
+ }
68
+ MonthTagComponent.decorators = [
69
+ { type: Component, args: [{
70
+ template: "<div>\n <mat-form-field class=\"date-select-box\">\n <input\n matInput\n placeholder=\"{{name}}\"\n name=\"Month\"\n [formControl]=\"date\"\n [matDatepickerFilter]=\"dateFilter\"\n [matDatepicker]=\"datepicker\">\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\n <mat-datepicker\n #datepicker\n startView=\"year\"\n (monthSelected)=\"chosenMonthHandler($event, datepicker)\"\n ></mat-datepicker>\n </mat-form-field>\n</div>\n",
71
+ selector: "month-tag",
72
+ providers: [
73
+ {
74
+ provide: DateAdapter,
75
+ useClass: MomentDateAdapter,
76
+ deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
77
+ },
78
+ { provide: MAT_DATE_FORMATS, useValue: ɵ0 },
79
+ ]
80
+ },] }
81
+ ];
82
+ MonthTagComponent.ctorParameters = () => [];
83
+ MonthTagComponent.propDecorators = {
84
+ lockedDate: [{ type: Input }]
85
+ };
86
+ export { ɵ0 };
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9tb250aC10YWcvbW9udGgtdGFnLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBZ0IsS0FBSyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUdoRyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdEYsT0FBTyxFQUFDLCtCQUErQixFQUFFLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDcEcsYUFBYTtBQUNiLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVqQyxNQUFNLGFBQWEsR0FBRztJQUNwQixLQUFLLEVBQUU7UUFDTCxTQUFTLEVBQUUsWUFBWTtLQUN4QjtJQUNELE9BQU8sRUFBRTtRQUNQLFNBQVMsRUFBRSxXQUFXO1FBQ3RCLGNBQWMsRUFBRSxXQUFXO1FBQzNCLGFBQWEsRUFBRSxJQUFJO1FBQ25CLGtCQUFrQixFQUFFLFdBQVc7S0FDaEM7Q0FDRixDQUFDO1dBVzBDLGFBQWE7QUFJekQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGVBQWU7SUFLbEQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQUxILGVBQVUsR0FBVSxFQUFFLENBQUM7UUFFaEMsU0FBSSxHQUFHLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUEyQ2pDLGVBQVUsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3BCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FB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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtNb21lbnR9IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7SURhdGVUYWd9IGZyb20gXCIuLi8uLi9tb2RlbHMvc2VydmVyVGFnc1wiO1xuaW1wb3J0IHtBbnlUYWdDb21wb25lbnR9IGZyb20gXCIuLi9kYXRlLXRhZy5jb21wb25lbnRcIjtcbmltcG9ydCB7TWF0RGF0ZXBpY2tlcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXJcIjtcbmltcG9ydCB7Rm9ybUNvbnRyb2x9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHtEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xuaW1wb3J0IHtNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLCBNb21lbnREYXRlQWRhcHRlcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyXCI7XG4vLyBAdHMtaWdub3JlXG5jb25zdCBtb21lbnQgPSByZXF1aXJlKFwibW9tZW50XCIpO1xuXG5jb25zdCBNT05USF9GT1JNQVRTID0ge1xuICBwYXJzZToge1xuICAgIGRhdGVJbnB1dDogXCJERC1NTS1ZWVlZXCIsXG4gIH0sXG4gIGRpc3BsYXk6IHtcbiAgICBkYXRlSW5wdXQ6IFwiTU1NTSBZWVlZXCIsXG4gICAgbW9udGhZZWFyTGFiZWw6IFwiTU1NTSBZWVlZXCIsXG4gICAgZGF0ZUExMXlMYWJlbDogXCJMTFwiLFxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogXCJNTU1NIFlZWVlcIlxuICB9LFxufTtcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6IFwibW9udGgtdGFnLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc2VsZWN0b3I6IFwibW9udGgtdGFnXCIsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IERhdGVBZGFwdGVyLFxuICAgICAgICB1c2VDbGFzczogTW9tZW50RGF0ZUFkYXB0ZXIsXG4gICAgICAgIGRlcHM6IFtNQVRfREFURV9MT0NBTEUsIE1BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlNdLFxuICAgICAgfSxcbiAgICAgIHtwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogTU9OVEhfRk9STUFUU30sXG4gICAgXSxcbn0pXG5cbmV4cG9ydCBjbGFzcyBNb250aFRhZ0NvbXBvbmVudCBleHRlbmRzIEFueVRhZ0NvbXBvbmVudCB7XG4gICAgQElucHV0KCkgbG9ja2VkRGF0ZTogYW55W10gPSBbXTtcblxuICAgIGRhdGUgPSBuZXcgRm9ybUNvbnRyb2wobW9tZW50KCkpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgaW5pdERhdGUoKSB7XG4gICAgICBpZiAodGhpcy5kZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgdGhpcy5kYXRlT2JqLmRhdGUgPSBtb21lbnQodGhpcy5kZWZhdWx0VmFsdWUgKiAxMDAwKS51dGMoKS5mb3JtYXQoXCJZWVlZLU1NXCIpO1xuICAgICAgICB0aGlzLmRhdGUgPSBuZXcgRm9ybUNvbnRyb2wobW9tZW50KHRoaXMuZGVmYXVsdFZhbHVlICogMTAwMCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kYXRlT2JqLmRhdGUgPSBtb21lbnQobmV3IERhdGUoKSkuZm9ybWF0KFwiWVlZWS1NTVwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0TmFtZSgpIHtcbiAgICAgIGlmICghdGhpcy5uYW1lKSB7XG4gICAgICAgIHRoaXMubmFtZSA9IFwiTW9udGggYW5kIFllYXJcIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjaG9zZW5UYWdIYW5kbGVyKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdERhdGU6IE1vbWVudCA9IG1vbWVudC51dGModmFsdWUpO1xuICAgICAgICByZXN1bHREYXRlLmhvdXIoMTIpO1xuICAgICAgICBjb25zdCByZXN1bHRUYWc6IElEYXRlVGFnID0ge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgdmFsdWU6IHBhcnNlSW50KHJlc3VsdERhdGUuZm9ybWF0KFwiWFwiKSwgMTApLFxuICAgICAgICAgICAgbGFiZWw6IHJlc3VsdERhdGUuZm9ybWF0KFwiTU1NTSBZWVlZXCIpLFxuICAgICAgICAgICAgbG9ja2VkOiAhdGhpcy5kYXRlRmlsdGVyKHZhbHVlKVxuICAgICAgICB9O1xuICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHRUYWcsIHZhbHVlKTtcbiAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQocmVzdWx0VGFnKTtcbiAgICB9XG5cbiAgICBjaG9zZW5Nb250aEhhbmRsZXIobm9ybWFsaXplZE1vbnRoOiBNb21lbnQsIGRhdGVwaWNrZXI6IE1hdERhdGVwaWNrZXI8TW9tZW50Pikge1xuICAgICAgICB0aGlzLmRhdGUuc2V0VmFsdWUobm9ybWFsaXplZE1vbnRoKTtcbiAgICAgICAgdGhpcy5kYXRlT2JqLmRhdGUgPSB0aGlzLmRhdGUudmFsdWU7XG5cbiAgICAgICAgdGhpcy5jaG9zZW5UYWdIYW5kbGVyKHRoaXMuZGF0ZS52YWx1ZSk7XG5cbiAgICAgICAgZGF0ZXBpY2tlci5jbG9zZSgpO1xuICAgIH1cblxuICAgIGRhdGVGaWx0ZXIgPSAoZGF0ZSkgPT4ge1xuICAgICAgY29uc3QgY2FsZW5kYXJEYXRlID0gbW9tZW50KGRhdGUpO1xuICAgICAgbGV0IHN0YXR1cyA9IHRydWU7XG5cbiAgICAgIHRoaXMubG9ja2VkRGF0ZS5mb3JFYWNoKHRpbWVzdGFtcCA9PiB7XG4gICAgICAgIGNvbnN0IGxvY2tEYXRlID0gbW9tZW50LnVuaXgodGltZXN0YW1wKTtcblxuICAgICAgICByZXR1cm4gc3RhdHVzID0gIShsb2NrRGF0ZS55ZWFyKCkgPT09IGNhbGVuZGFyRGF0ZS55ZWFyKCkgJiYgbG9ja0RhdGUubW9udGgoKSA9PT0gY2FsZW5kYXJEYXRlLm1vbnRoKCkpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxufVxuIl19