@datarailsshared/datarailsshared 1.4.180 → 1.4.182
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.
- package/bundles/datarailsshared-datarailsshared.umd.js +25 -28
- package/bundles/datarailsshared-datarailsshared.umd.js.map +1 -1
- package/datarailsshared-datarailsshared-1.4.182.tgz +0 -0
- package/datarailsshared-datarailsshared.metadata.json +1 -1
- package/esm2015/lib/date-tags/forecast-tag/forecast-tag.component.js +26 -29
- package/fesm2015/datarailsshared-datarailsshared.js +25 -28
- package/fesm2015/datarailsshared-datarailsshared.js.map +1 -1
- package/lib/date-tags/forecast-tag/forecast-tag.component.d.ts +1 -0
- package/package.json +1 -1
- package/datarailsshared-datarailsshared-1.4.180.tgz +0 -0
|
@@ -26,17 +26,17 @@ export class ForecastTagComponent extends AnyTagComponent {
|
|
|
26
26
|
];
|
|
27
27
|
}
|
|
28
28
|
initDate() {
|
|
29
|
-
|
|
30
|
-
if (this.defaultValue) {
|
|
31
|
-
dateVal = new Date(this.defaultValue * 1000);
|
|
32
|
-
}
|
|
29
|
+
const dateVal = this.defaultValue ? moment.unix(this.defaultValue) : moment();
|
|
33
30
|
const fiscal_year_starts_from = this.fiscalYearStartsFrom || 1;
|
|
34
31
|
const fiscal_year_back = this.fiscalYearBack || false;
|
|
35
32
|
this.forecastValue = this.getFiscalMonthFromDate(dateVal, fiscal_year_starts_from) - 1;
|
|
36
33
|
const fiscal_year = this.getFiscalYearFromDate(dateVal, fiscal_year_starts_from, fiscal_year_back);
|
|
37
|
-
this.
|
|
34
|
+
this.updateYear(fiscal_year, this.forecastValue);
|
|
38
35
|
this.updateLockedDate();
|
|
39
36
|
}
|
|
37
|
+
updateYear(fiscalYear, month) {
|
|
38
|
+
this.dateObj.date = fiscalYear ? moment(`${month || '01'}/01/${fiscalYear} 12:00:00`, 'MM/DD/YYYY hh:mm:ss').utc().unix() : moment.utc().unix();
|
|
39
|
+
}
|
|
40
40
|
updateLockedDate() {
|
|
41
41
|
const year = moment.unix(this.dateObj.date).year();
|
|
42
42
|
for (const forecastTag of this.forecastTags) {
|
|
@@ -48,7 +48,7 @@ export class ForecastTagComponent extends AnyTagComponent {
|
|
|
48
48
|
}
|
|
49
49
|
initName() {
|
|
50
50
|
if (!this.name) {
|
|
51
|
-
this.name = 'Forecast';
|
|
51
|
+
this.name = 'Forecast (New)';
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
getFiscalMonthFromDate(dateObj, fiscal_year_starts_from) {
|
|
@@ -59,31 +59,29 @@ export class ForecastTagComponent extends AnyTagComponent {
|
|
|
59
59
|
for (let i = 1; i < fiscal_year_starts_from; i++) {
|
|
60
60
|
all_months.push(i);
|
|
61
61
|
}
|
|
62
|
-
return all_months.indexOf(dateObj.
|
|
62
|
+
return all_months.indexOf(dateObj.month() + 1) + 1;
|
|
63
63
|
}
|
|
64
64
|
getFiscalYearFromDate(dateObj, fiscal_year_starts_from, fiscal_year_back) {
|
|
65
|
-
let fiscal_year = dateObj.
|
|
65
|
+
let fiscal_year = dateObj.year();
|
|
66
66
|
if (!fiscal_year_back) {
|
|
67
|
-
if (dateObj.
|
|
67
|
+
if (dateObj.month() + 1 >= fiscal_year_starts_from && fiscal_year_starts_from !== 1) {
|
|
68
68
|
fiscal_year += 1;
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
else {
|
|
72
|
-
if (dateObj.
|
|
72
|
+
if (dateObj.month() + 1 < fiscal_year_starts_from && fiscal_year_starts_from !== 1) {
|
|
73
73
|
fiscal_year -= 1;
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
return fiscal_year;
|
|
77
77
|
}
|
|
78
78
|
getForecastLabelFromValue(value, fiscal_year_starts_from, fiscal_year_back) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
return label;
|
|
79
|
+
if (!value)
|
|
80
|
+
return '';
|
|
81
|
+
const dateObj = moment.unix(value);
|
|
82
|
+
const fiscal_month = this.getFiscalMonthFromDate(dateObj, fiscal_year_starts_from);
|
|
83
|
+
const fiscal_year = this.getFiscalYearFromDate(dateObj, fiscal_year_starts_from, fiscal_year_back);
|
|
84
|
+
return `${fiscal_month}+${12 - fiscal_month} (${fiscal_year})`;
|
|
87
85
|
}
|
|
88
86
|
changeTagInputHandler(event) {
|
|
89
87
|
this.chosenTagHandler();
|
|
@@ -97,23 +95,22 @@ export class ForecastTagComponent extends AnyTagComponent {
|
|
|
97
95
|
return;
|
|
98
96
|
const month = this.forecastValue;
|
|
99
97
|
const year = moment.unix(this.dateObj.date).year();
|
|
100
|
-
let timeStampVal = 0;
|
|
101
98
|
let label = '';
|
|
102
99
|
if (!Number.isNaN(month) && !Number.isNaN(year)) {
|
|
103
|
-
const date =
|
|
100
|
+
const date = moment(`${month}/01/${year} 12:00:00`, 'MM/DD/YYYY hh:mm:ss');
|
|
104
101
|
const fiscal_year_starts_from = this.fiscalYearStartsFrom || 1;
|
|
105
102
|
const fiscal_year_back = this.fiscalYearBack || false;
|
|
106
103
|
if (fiscal_year_starts_from !== 1) {
|
|
107
104
|
if (!fiscal_year_back) {
|
|
108
|
-
date.
|
|
105
|
+
date.set('month', date.month() - 13 + fiscal_year_starts_from);
|
|
109
106
|
}
|
|
110
107
|
else {
|
|
111
|
-
date.
|
|
108
|
+
date.set('month', date.month() - 1 + fiscal_year_starts_from);
|
|
112
109
|
}
|
|
113
110
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
this.
|
|
111
|
+
label = this.getForecastLabelFromValue(date.unix(), fiscal_year_starts_from, fiscal_year_back);
|
|
112
|
+
const fiscal_year = this.getFiscalYearFromDate(date, fiscal_year_starts_from, fiscal_year_back);
|
|
113
|
+
this.updateYear(fiscal_year, month);
|
|
117
114
|
this.isDateEventHappened = true;
|
|
118
115
|
setTimeout(() => {
|
|
119
116
|
this.isDateEventHappened = false;
|
|
@@ -121,9 +118,9 @@ export class ForecastTagComponent extends AnyTagComponent {
|
|
|
121
118
|
}
|
|
122
119
|
const resultTag = {
|
|
123
120
|
name: this.name,
|
|
124
|
-
value:
|
|
121
|
+
value: this.dateObj.date,
|
|
125
122
|
label,
|
|
126
|
-
locked: !this.dateFilter(moment.unix(
|
|
123
|
+
locked: !this.dateFilter(moment.unix(this.dateObj.date))
|
|
127
124
|
};
|
|
128
125
|
this.dateChange.emit(resultTag);
|
|
129
126
|
}
|
|
@@ -139,7 +136,7 @@ export class ForecastTagComponent extends AnyTagComponent {
|
|
|
139
136
|
}
|
|
140
137
|
ForecastTagComponent.decorators = [
|
|
141
138
|
{ type: Component, args: [{
|
|
142
|
-
template: "<div class=\"forecast-tag__container\">\n <div class=\"forecast-tag__forecast\">\n <p class=\"tag__label\">
|
|
139
|
+
template: "<div class=\"forecast-tag__container\">\n <div class=\"forecast-tag__forecast\">\n <p class=\"tag__label\">Forecast</p>\n <dr-select placeholder=\"Select\"\n [(ngModel)]=\"forecastValue\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"disabled\"\n [items]=\"forecastTags\"\n (ngModelChange)=\"changeTagInputHandler($event)\"></dr-select>\n </div>\n <div class=\"forecast-tag__year\">\n <p class=\"tag__label\">Year</p>\n <dr-date-picker format=\"year\"\n [(ngModel)]=\"dateObj.date\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"changeYearInputHandler($event)\"></dr-date-picker>\n </div>\n</div>\n",
|
|
143
140
|
selector: 'forecast-tag',
|
|
144
141
|
providers: [
|
|
145
142
|
{
|
|
@@ -157,4 +154,4 @@ ForecastTagComponent.propDecorators = {
|
|
|
157
154
|
fiscalYearBack: [{ type: Input }],
|
|
158
155
|
lockedDate: [{ type: Input }]
|
|
159
156
|
};
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9mb3JlY2FzdC10YWcvZm9yZWNhc3QtdGFnLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV0RyxhQUFhO0FBQ2IsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBZWpDLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxlQUFlO0lBdUJyRDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBckJILGVBQVUsR0FBVSxFQUFFLENBQUM7UUFFaEMsa0JBQWEsR0FBdUIsU0FBUyxDQUFDO1FBQzlDLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUU1QixpQkFBWSxHQUFVO1lBQ2xCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQzNCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQzNCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQzNCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1lBQzFCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1lBQzFCLEVBQUUsS0FBSyxFQUFFLENBQUMs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QUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQUEsQ0FBQzs7O1lBNUtMLFNBQVMsU0FBQztnQkFDUCxnNUJBQTBDO2dCQUMxQyxRQUFRLEVBQUUsY0FBYztnQkFFeEIsU0FBUyxFQUFFO29CQUNQO3dCQUNJLE9BQU8sRUFBRSxXQUFXO3dCQUNwQixRQUFRLEVBQUUsaUJBQWlCO3dCQUMzQixJQUFJLEVBQUUsQ0FBQyxlQUFlLEVBQUUsK0JBQStCLENBQUM7cUJBQzNEO2lCQUNKOzthQUNKOzs7O21DQUdJLEtBQUs7NkJBQ0wsS0FBSzt5QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSURhdGVUYWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VydmVyVGFncyc7XG5pbXBvcnQgeyBBbnlUYWdDb21wb25lbnQgfSBmcm9tICcuLi9kYXRlLXRhZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZUNoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0xPQ0FMRSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUywgTW9tZW50RGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlcic7XG5cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IG1vbWVudCA9IHJlcXVpcmUoJ21vbWVudCcpO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJ2ZvcmVjYXN0LXRhZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc2VsZWN0b3I6ICdmb3JlY2FzdC10YWcnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvcmVjYXN0LXRhZy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBEYXRlQWRhcHRlcixcbiAgICAgICAgICAgIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlcixcbiAgICAgICAgICAgIGRlcHM6IFtNQVRfREFURV9MT0NBTEUsIE1BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlNdLFxuICAgICAgICB9XG4gICAgXVxufSlcblxuZXhwb3J0IGNsYXNzIEZvcmVjYXN0VGFnQ29tcG9uZW50IGV4dGVuZHMgQW55VGFnQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBmaXNjYWxZZWFyU3RhcnRzRnJvbT86IG51bWJlcjtcbiAgICBASW5wdXQoKSBmaXNjYWxZZWFyQmFjaz86IGJvb2xlYW47XG4gICAgQElucHV0KCkgbG9ja2VkRGF0ZTogYW55W10gPSBbXTtcblxuICAgIGZvcmVjYXN0VmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpc0RhdGVFdmVudEhhcHBlbmVkID0gZmFsc2U7XG5cbiAgICBmb3JlY2FzdFRhZ3M6IGFueVtdID0gW1xuICAgICAgICB7IHZhbHVlOiAwLCBsYWJlbDogJzArMTInIH0sXG4gICAgICAgIHsgdmFsdWU6IDEsIGxhYmVsOiAnMSsxMScgfSxcbiAgICAgICAgeyB2YWx1ZTogMiwgbGFiZWw6ICcyKzEwJyB9LFxuICAgICAgICB7IHZhbHVlOiAzLCBsYWJlbDogJzMrOScgfSxcbiAgICAgICAgeyB2YWx1ZTogNCwgbGFiZWw6ICc0KzgnIH0sXG4gICAgICAgIHsgdmFsdWU6IDUsIGxhYmVsOiAnNSs3JyB9LFxuICAgICAgICB7IHZhbHVlOiA2LCBsYWJlbDogJzYrNicgfSxcbiAgICAgICAgeyB2YWx1ZTogNywgbGFiZWw6ICc3KzUnIH0sXG4gICAgICAgIHsgdmFsdWU6IDgsIGxhYmVsOiAnOCs0JyB9LFxuICAgICAgICB7IHZhbHVlOiA5LCBsYWJlbDogJzkrMycgfSxcbiAgICAgICAgeyB2YWx1ZTogMTAsIGxhYmVsOiAnMTArMicgfSxcbiAgICAgICAgeyB2YWx1ZTogMTEsIGxhYmVsOiAnMTErMScgfVxuICAgIF07XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBpbml0RGF0ZSgpIHtcbiAgICAgICAgbGV0IGRhdGVWYWwgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBpZiAodGhpcy5kZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgICAgIGRhdGVWYWwgPSBuZXcgRGF0ZSh0aGlzLmRlZmF1bHRWYWx1ZSAqIDEwMDApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tID0gdGhpcy5maXNjYWxZZWFyU3RhcnRzRnJvbSB8fCAxO1xuICAgICAgICBjb25zdCBmaXNjYWxfeWVhcl9iYWNrID0gdGhpcy5maXNjYWxZZWFyQmFjayB8fCBmYWxzZTtcbiAgICAgICAgdGhpcy5mb3JlY2FzdFZhbHVlID0gdGhpcy5nZXRGaXNjYWxNb250aEZyb21EYXRlKGRhdGVWYWwsIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tKSAtIDE7XG4gICAgICAgIGNvbnN0IGZpc2NhbF95ZWFyID0gdGhpcy5nZXRGaXNjYWxZZWFyRnJvbURhdGUoZGF0ZVZhbCwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20sIGZpc2NhbF95ZWFyX2JhY2spO1xuXG4gICAgICAgIHRoaXMuZGF0ZU9iai5kYXRlID0gbW9tZW50KG5ldyBEYXRlKGZpc2NhbF95ZWFyLCAwLCAxKSkudW5peCgpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlTG9ja2VkRGF0ZSgpO1xuICAgIH1cblxuICAgIHVwZGF0ZUxvY2tlZERhdGUoKSB7XG4gICAgICAgIGNvbnN0IHllYXIgPSBtb21lbnQudW5peCh0aGlzLmRhdGVPYmouZGF0ZSkueWVhcigpO1xuXG4gICAgICAgIGZvciAoY29uc3QgZm9yZWNhc3RUYWcgb2YgdGhpcy5mb3JlY2FzdFRhZ3MpIHtcbiAgICAgICAgICAgIGZvcmVjYXN0VGFnLmRpc2FibGVkID0gdGhpcy5sb2NrZWREYXRlLnNvbWUoKHRpbWVzdGFtcCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2tlZCA9IG1vbWVudC51bml4KHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tlZC5tb250aCgpID09PSBmb3JlY2FzdFRhZy52YWx1ZSAmJiArbG9ja2VkLnllYXIoKSA9PT0gK3llYXI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXROYW1lKCkge1xuICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgICAgICAgdGhpcy5uYW1lID0gJ0ZvcmVjYXN0JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEZpc2NhbE1vbnRoRnJvbURhdGUoZGF0ZU9iaiwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20pIHtcbiAgICAgICAgY29uc3QgYWxsX21vbnRocyA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbTsgaSA8IDEzOyBpKyspIHtcbiAgICAgICAgICAgIGFsbF9tb250aHMucHVzaChpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb207IGkrKykge1xuICAgICAgICAgICAgYWxsX21vbnRocy5wdXNoKGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFsbF9tb250aHMuaW5kZXhPZihkYXRlT2JqLmdldE1vbnRoKCkgKyAxKSArIDE7XG4gICAgfVxuXG4gICAgZ2V0RmlzY2FsWWVhckZyb21EYXRlKGRhdGVPYmosIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tLCBmaXNjYWxfeWVhcl9iYWNrKSB7XG4gICAgICAgIGxldCBmaXNjYWxfeWVhciA9IGRhdGVPYmouZ2V0RnVsbFllYXIoKTtcblxuICAgICAgICBpZiAoIWZpc2NhbF95ZWFyX2JhY2spIHtcbiAgICAgICAgICAgIGlmIChkYXRlT2JqLmdldE1vbnRoKCkgKyAxID49IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tICYmIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgZmlzY2FsX3llYXIgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChkYXRlT2JqLmdldE1vbnRoKCkgKyAxIDwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gJiYgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gIT09IDEpIHtcbiAgICAgICAgICAgICAgICBmaXNjYWxfeWVhciAtPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpc2NhbF95ZWFyO1xuICAgIH1cblxuICAgIGdldEZvcmVjYXN0TGFiZWxGcm9tVmFsdWUodmFsdWUsIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tLCBmaXNjYWxfeWVhcl9iYWNrKSB7XG4gICAgICAgIGxldCBsYWJlbCA9ICcnO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGVPYmogPSBuZXcgRGF0ZSh2YWx1ZSAqIDEwMDApO1xuXG4gICAgICAgICAgICBjb25zdCBmaXNjYWxfbW9udGggPSB0aGlzLmdldEZpc2NhbE1vbnRoRnJvbURhdGUoZGF0ZU9iaiwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20pO1xuICAgICAgICAgICAgY29uc3QgZmlzY2FsX3llYXIgPSB0aGlzLmdldEZpc2NhbFllYXJGcm9tRGF0ZShkYXRlT2JqLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSwgZmlzY2FsX3llYXJfYmFjayk7XG5cbiAgICAgICAgICAgIGxhYmVsID0gKGZpc2NhbF9tb250aCAtIDEpICsgJysnICsgKDEzIC0gZmlzY2FsX21vbnRoKSArICcgKCcgKyBmaXNjYWxfeWVhciArICcpJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGFiZWw7XG4gICAgfVxuXG4gICAgY2hhbmdlVGFnSW5wdXRIYW5kbGVyKGV2ZW50OiBNYXRTZWxlY3RDaGFuZ2UgfCBNYXRCdXR0b25Ub2dnbGVDaGFuZ2UpIHtcbiAgICAgICAgdGhpcy5jaG9zZW5UYWdIYW5kbGVyKCk7XG4gICAgfVxuXG4gICAgY2hhbmdlWWVhcklucHV0SGFuZGxlcihldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVMb2NrZWREYXRlKCk7XG4gICAgICAgIHRoaXMuY2hvc2VuVGFnSGFuZGxlcigpO1xuICAgIH1cblxuICAgIGNob3NlblRhZ0hhbmRsZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRGF0ZUV2ZW50SGFwcGVuZWQpIHJldHVybjtcbiAgICAgICAgY29uc3QgbW9udGggPSB0aGlzLmZvcmVjYXN0VmFsdWU7XG4gICAgICAgIGNvbnN0IHllYXIgPSBtb21lbnQudW5peCh0aGlzLmRhdGVPYmouZGF0ZSkueWVhcigpO1xuXG4gICAgICAgIGxldCB0aW1lU3RhbXBWYWwgPSAwO1xuICAgICAgICBsZXQgbGFiZWwgPSAnJztcblxuICAgICAgICBpZiAoIU51bWJlci5pc05hTihtb250aCkgJiYgIU51bWJlci5pc05hTih5ZWFyKSkge1xuXG5cbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSwgMTIsIDAsIDAsIDApO1xuICAgICAgICAgICAgY29uc3QgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gPSB0aGlzLmZpc2NhbFllYXJTdGFydHNGcm9tIHx8IDE7XG4gICAgICAgICAgICBjb25zdCBmaXNjYWxfeWVhcl9iYWNrID0gdGhpcy5maXNjYWxZZWFyQmFjayB8fCBmYWxzZTtcbiAgICAgICAgICAgIGlmIChmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSAhPT0gMSkge1xuICAgICAgICAgICAgICAgIGlmICghZmlzY2FsX3llYXJfYmFjaylcbiAgICAgICAgICAgICAgICAgICAge2RhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpIC0gMTMgKyBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSk7fVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAge2RhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpIC0gMSArIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tKTt9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRpbWVTdGFtcFZhbCA9IGRhdGUuZ2V0VGltZSgpIC8gMTAwMDtcbiAgICAgICAgICAgIGxhYmVsID0gdGhpcy5nZXRGb3JlY2FzdExhYmVsRnJvbVZhbHVlKHRpbWVTdGFtcFZhbCwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20sIGZpc2NhbF95ZWFyX2JhY2spO1xuICAgICAgICAgICAgdGhpcy5kYXRlT2JqLmRhdGUgPSB0aW1lU3RhbXBWYWw7XG4gICAgICAgICAgICB0aGlzLmlzRGF0ZUV2ZW50SGFwcGVuZWQgPSB0cnVlO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICB0aGlzLmlzRGF0ZUV2ZW50SGFwcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0VGFnOiBJRGF0ZVRhZyA9IHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiB0aW1lU3RhbXBWYWwsXG4gICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgIGxvY2tlZDogIXRoaXMuZGF0ZUZpbHRlcihtb21lbnQudW5peCh0aW1lU3RhbXBWYWwpKVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KHJlc3VsdFRhZyk7XG4gICAgfVxuXG4gICAgZGF0ZUZpbHRlcihkYXRlKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG1vbnRoID0gdGhpcy5mb3JlY2FzdFZhbHVlO1xuICAgICAgICBjb25zdCB5ZWFyID0gZGF0ZS55ZWFyKCk7XG5cbiAgICAgICAgcmV0dXJuICF0aGlzLmxvY2tlZERhdGUuc29tZSgodGltZXN0YW1wKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsb2NrRGF0ZSA9IG1vbWVudC51bml4KHRpbWVzdGFtcCk7XG4gICAgICAgICAgICByZXR1cm4gbG9ja0RhdGUubW9udGgoKSA9PT0gbW9udGggJiYgbG9ja0RhdGUueWVhcigpID09PSB5ZWFyO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuIl19
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9mb3JlY2FzdC10YWcvZm9yZWNhc3QtdGFnLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV0RyxhQUFhO0FBQ2IsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBZWpDLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxlQUFlO0lBdUJyRDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBckJILGVBQVUsR0FBVSxFQUFFLENBQUM7UUFFaEMsa0JBQWEsR0FBdUIsU0FBUyxDQUFDO1FBQzlDLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUU1QixpQkFBWSxHQUFVO1lBQ2xCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQzNCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQzNCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQzNCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1lBQzFCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1lBQzFCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1lBQzFCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1lBQzFCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1lBQzFCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1lBQzFCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1lBQzFCLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQzVCLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1NBQy9CLENBQUM7SUFJRixDQUFDO0lBRUQsUUFBUTtRQUNKLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM5RSxNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUM7UUFDL0QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLEtBQUssQ0FBQztRQUN0RCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRW5HLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsVUFBVSxDQUFDLFVBQW1CLEVBQUUsS0FBYztRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLE9BQU8sVUFBVSxXQUFXLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BKLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFbkQsS0FBSyxNQUFNLFdBQVcsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3pDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDdEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdEMsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssV0FBVyxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQztZQUM1RSxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLENBQUM7U0FDaEM7SUFDTCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsT0FBTyxFQUFFLHVCQUF1QjtRQUNuRCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFFdEIsS0FBSyxJQUFJLENBQUMsR0FBRyx1QkFBdUIsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQy9DLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEI7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsdUJBQXVCLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDOUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0QjtRQUVELE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCO1FBQ3BFLElBQUksV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVqQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDbkIsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxJQUFJLHVCQUF1QixJQUFJLHVCQUF1QixLQUFLLENBQUMsRUFBRTtnQkFDakYsV0FBVyxJQUFJLENBQUMsQ0FBQzthQUNwQjtTQUNKO2FBQU07WUFDSCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsdUJBQXVCLElBQUksdUJBQXVCLEtBQUssQ0FBQyxFQUFFO2dCQUNoRixXQUFXLElBQUksQ0FBQyxDQUFDO2FBQ3BCO1NBQ0o7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQseUJBQXlCLENBQUMsS0FBSyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQjtRQUN0RSxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRXRCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBQ25GLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUVuRyxPQUFPLEdBQUksWUFBYSxJQUFLLEVBQUUsR0FBRyxZQUFhLEtBQU0sV0FBWSxHQUFHLENBQUM7SUFDekUsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQThDO1FBQ2hFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxLQUFZO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLElBQUksQ0FBQyxtQkFBbUI7WUFBRSxPQUFPO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDakMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25ELElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUVmLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM3QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSSxXQUFXLEVBQUUscUJBQXFCLENBQUMsQ0FBQztZQUMzRSxNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUM7WUFDL0QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLEtBQUssQ0FBQztZQUN0RCxJQUFJLHVCQUF1QixLQUFLLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFO29CQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLHVCQUF1QixDQUFDLENBQUM7aUJBQ2xFO3FCQUFNO29CQUNILElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsdUJBQXVCLENBQUMsQ0FBQztpQkFDakU7YUFDSjtZQUVELEtBQUssR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDL0YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ2hHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDaEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDYixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxNQUFNLFNBQVMsR0FBYTtZQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQ3hCLEtBQUs7WUFDTCxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzRCxDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFJO1FBQ1gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFekIsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDdkMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN4QyxPQUFPLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxLQUFLLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFBQSxDQUFDOzs7WUF2S0wsU0FBUyxTQUFDO2dCQUNQLDg0QkFBMEM7Z0JBQzFDLFFBQVEsRUFBRSxjQUFjO2dCQUV4QixTQUFTLEVBQUU7b0JBQ1A7d0JBQ0ksT0FBTyxFQUFFLFdBQVc7d0JBQ3BCLFFBQVEsRUFBRSxpQkFBaUI7d0JBQzNCLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRSwrQkFBK0IsQ0FBQztxQkFDM0Q7aUJBQ0o7O2FBQ0o7Ozs7bUNBR0ksS0FBSzs2QkFDTCxLQUFLO3lCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJRGF0ZVRhZyB9IGZyb20gJy4uLy4uL21vZGVscy9zZXJ2ZXJUYWdzJztcbmltcG9ydCB7IEFueVRhZ0NvbXBvbmVudCB9IGZyb20gJy4uL2RhdGUtdGFnLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTUFUX0RBVEVfTE9DQUxFIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLCBNb21lbnREYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyJztcblxuLy8gQHRzLWlnbm9yZVxuY29uc3QgbW9tZW50ID0gcmVxdWlyZSgnbW9tZW50Jyk7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5odG1sJyxcbiAgICBzZWxlY3RvcjogJ2ZvcmVjYXN0LXRhZycsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IERhdGVBZGFwdGVyLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IE1vbWVudERhdGVBZGFwdGVyLFxuICAgICAgICAgICAgZGVwczogW01BVF9EQVRFX0xPQ0FMRSwgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OU10sXG4gICAgICAgIH1cbiAgICBdXG59KVxuXG5leHBvcnQgY2xhc3MgRm9yZWNhc3RUYWdDb21wb25lbnQgZXh0ZW5kcyBBbnlUYWdDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGZpc2NhbFllYXJTdGFydHNGcm9tPzogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGZpc2NhbFllYXJCYWNrPzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBsb2NrZWREYXRlOiBhbnlbXSA9IFtdO1xuXG4gICAgZm9yZWNhc3RWYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlzRGF0ZUV2ZW50SGFwcGVuZWQgPSBmYWxzZTtcblxuICAgIGZvcmVjYXN0VGFnczogYW55W10gPSBbXG4gICAgICAgIHsgdmFsdWU6IDAsIGxhYmVsOiAnMCsxMicgfSxcbiAgICAgICAgeyB2YWx1ZTogMSwgbGFiZWw6ICcxKzExJyB9LFxuICAgICAgICB7IHZhbHVlOiAyLCBsYWJlbDogJzIrMTAnIH0sXG4gICAgICAgIHsgdmFsdWU6IDMsIGxhYmVsOiAnMys5JyB9LFxuICAgICAgICB7IHZhbHVlOiA0LCBsYWJlbDogJzQrOCcgfSxcbiAgICAgICAgeyB2YWx1ZTogNSwgbGFiZWw6ICc1KzcnIH0sXG4gICAgICAgIHsgdmFsdWU6IDYsIGxhYmVsOiAnNis2JyB9LFxuICAgICAgICB7IHZhbHVlOiA3LCBsYWJlbDogJzcrNScgfSxcbiAgICAgICAgeyB2YWx1ZTogOCwgbGFiZWw6ICc4KzQnIH0sXG4gICAgICAgIHsgdmFsdWU6IDksIGxhYmVsOiAnOSszJyB9LFxuICAgICAgICB7IHZhbHVlOiAxMCwgbGFiZWw6ICcxMCsyJyB9LFxuICAgICAgICB7IHZhbHVlOiAxMSwgbGFiZWw6ICcxMSsxJyB9XG4gICAgXTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIGluaXREYXRlKCkge1xuICAgICAgICBjb25zdCBkYXRlVmFsID0gdGhpcy5kZWZhdWx0VmFsdWUgPyBtb21lbnQudW5peCh0aGlzLmRlZmF1bHRWYWx1ZSkgOiBtb21lbnQoKTtcbiAgICAgICAgY29uc3QgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gPSB0aGlzLmZpc2NhbFllYXJTdGFydHNGcm9tIHx8IDE7XG4gICAgICAgIGNvbnN0IGZpc2NhbF95ZWFyX2JhY2sgPSB0aGlzLmZpc2NhbFllYXJCYWNrIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLmZvcmVjYXN0VmFsdWUgPSB0aGlzLmdldEZpc2NhbE1vbnRoRnJvbURhdGUoZGF0ZVZhbCwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20pIC0gMTtcbiAgICAgICAgY29uc3QgZmlzY2FsX3llYXIgPSB0aGlzLmdldEZpc2NhbFllYXJGcm9tRGF0ZShkYXRlVmFsLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSwgZmlzY2FsX3llYXJfYmFjayk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVZZWFyKGZpc2NhbF95ZWFyLCB0aGlzLmZvcmVjYXN0VmFsdWUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUxvY2tlZERhdGUoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVZZWFyKGZpc2NhbFllYXI/OiBudW1iZXIsIG1vbnRoPzogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZGF0ZU9iai5kYXRlID0gZmlzY2FsWWVhciA/IG1vbWVudChgJHttb250aCB8fCAnMDEnfS8wMS8ke2Zpc2NhbFllYXJ9IDEyOjAwOjAwYCwgJ01NL0REL1lZWVkgaGg6bW06c3MnKS51dGMoKS51bml4KCkgOiBtb21lbnQudXRjKCkudW5peCgpO1xuICAgIH1cblxuICAgIHVwZGF0ZUxvY2tlZERhdGUoKSB7XG4gICAgICAgIGNvbnN0IHllYXIgPSBtb21lbnQudW5peCh0aGlzLmRhdGVPYmouZGF0ZSkueWVhcigpO1xuXG4gICAgICAgIGZvciAoY29uc3QgZm9yZWNhc3RUYWcgb2YgdGhpcy5mb3JlY2FzdFRhZ3MpIHtcbiAgICAgICAgICAgIGZvcmVjYXN0VGFnLmRpc2FibGVkID0gdGhpcy5sb2NrZWREYXRlLnNvbWUoKHRpbWVzdGFtcCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2tlZCA9IG1vbWVudC51bml4KHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tlZC5tb250aCgpID09PSBmb3JlY2FzdFRhZy52YWx1ZSAmJiArbG9ja2VkLnllYXIoKSA9PT0gK3llYXI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXROYW1lKCkge1xuICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgICAgICAgdGhpcy5uYW1lID0gJ0ZvcmVjYXN0IChOZXcpJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEZpc2NhbE1vbnRoRnJvbURhdGUoZGF0ZU9iaiwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20pIHtcbiAgICAgICAgY29uc3QgYWxsX21vbnRocyA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbTsgaSA8IDEzOyBpKyspIHtcbiAgICAgICAgICAgIGFsbF9tb250aHMucHVzaChpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb207IGkrKykge1xuICAgICAgICAgICAgYWxsX21vbnRocy5wdXNoKGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFsbF9tb250aHMuaW5kZXhPZihkYXRlT2JqLm1vbnRoKCkgKyAxKSArIDE7XG4gICAgfVxuXG4gICAgZ2V0RmlzY2FsWWVhckZyb21EYXRlKGRhdGVPYmosIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tLCBmaXNjYWxfeWVhcl9iYWNrKSB7XG4gICAgICAgIGxldCBmaXNjYWxfeWVhciA9IGRhdGVPYmoueWVhcigpO1xuXG4gICAgICAgIGlmICghZmlzY2FsX3llYXJfYmFjaykge1xuICAgICAgICAgICAgaWYgKGRhdGVPYmoubW9udGgoKSArIDEgPj0gZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gJiYgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gIT09IDEpIHtcbiAgICAgICAgICAgICAgICBmaXNjYWxfeWVhciArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGRhdGVPYmoubW9udGgoKSArIDEgPCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSAmJiBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSAhPT0gMSkge1xuICAgICAgICAgICAgICAgIGZpc2NhbF95ZWFyIC09IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlzY2FsX3llYXI7XG4gICAgfVxuXG4gICAgZ2V0Rm9yZWNhc3RMYWJlbEZyb21WYWx1ZSh2YWx1ZSwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20sIGZpc2NhbF95ZWFyX2JhY2spIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xuXG4gICAgICAgIGNvbnN0IGRhdGVPYmogPSBtb21lbnQudW5peCh2YWx1ZSk7XG5cbiAgICAgICAgY29uc3QgZmlzY2FsX21vbnRoID0gdGhpcy5nZXRGaXNjYWxNb250aEZyb21EYXRlKGRhdGVPYmosIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tKTtcbiAgICAgICAgY29uc3QgZmlzY2FsX3llYXIgPSB0aGlzLmdldEZpc2NhbFllYXJGcm9tRGF0ZShkYXRlT2JqLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSwgZmlzY2FsX3llYXJfYmFjayk7XG5cbiAgICAgICAgcmV0dXJuIGAkeyBmaXNjYWxfbW9udGggfSskeyAxMiAtIGZpc2NhbF9tb250aCB9ICgkeyBmaXNjYWxfeWVhciB9KWA7XG4gICAgfVxuXG4gICAgY2hhbmdlVGFnSW5wdXRIYW5kbGVyKGV2ZW50OiBNYXRTZWxlY3RDaGFuZ2UgfCBNYXRCdXR0b25Ub2dnbGVDaGFuZ2UpIHtcbiAgICAgICAgdGhpcy5jaG9zZW5UYWdIYW5kbGVyKCk7XG4gICAgfVxuXG4gICAgY2hhbmdlWWVhcklucHV0SGFuZGxlcihldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVMb2NrZWREYXRlKCk7XG4gICAgICAgIHRoaXMuY2hvc2VuVGFnSGFuZGxlcigpO1xuICAgIH1cblxuICAgIGNob3NlblRhZ0hhbmRsZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRGF0ZUV2ZW50SGFwcGVuZWQpIHJldHVybjtcbiAgICAgICAgY29uc3QgbW9udGggPSB0aGlzLmZvcmVjYXN0VmFsdWU7XG4gICAgICAgIGNvbnN0IHllYXIgPSBtb21lbnQudW5peCh0aGlzLmRhdGVPYmouZGF0ZSkueWVhcigpO1xuICAgICAgICBsZXQgbGFiZWwgPSAnJztcblxuICAgICAgICBpZiAoIU51bWJlci5pc05hTihtb250aCkgJiYgIU51bWJlci5pc05hTih5ZWFyKSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudChgJHttb250aH0vMDEvJHt5ZWFyfSAxMjowMDowMGAsICdNTS9ERC9ZWVlZIGhoOm1tOnNzJyk7XG4gICAgICAgICAgICBjb25zdCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSA9IHRoaXMuZmlzY2FsWWVhclN0YXJ0c0Zyb20gfHwgMTtcbiAgICAgICAgICAgIGNvbnN0IGZpc2NhbF95ZWFyX2JhY2sgPSB0aGlzLmZpc2NhbFllYXJCYWNrIHx8IGZhbHNlO1xuICAgICAgICAgICAgaWYgKGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFmaXNjYWxfeWVhcl9iYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGUuc2V0KCdtb250aCcsIGRhdGUubW9udGgoKSAtIDEzICsgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGUuc2V0KCdtb250aCcsIGRhdGUubW9udGgoKSAtIDEgKyBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsYWJlbCA9IHRoaXMuZ2V0Rm9yZWNhc3RMYWJlbEZyb21WYWx1ZShkYXRlLnVuaXgoKSwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20sIGZpc2NhbF95ZWFyX2JhY2spO1xuICAgICAgICAgICAgY29uc3QgZmlzY2FsX3llYXIgPSB0aGlzLmdldEZpc2NhbFllYXJGcm9tRGF0ZShkYXRlLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSwgZmlzY2FsX3llYXJfYmFjayk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVllYXIoZmlzY2FsX3llYXIsIG1vbnRoKTtcbiAgICAgICAgICAgIHRoaXMuaXNEYXRlRXZlbnRIYXBwZW5lZCA9IHRydWU7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgIHRoaXMuaXNEYXRlRXZlbnRIYXBwZW5lZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHRUYWc6IElEYXRlVGFnID0ge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuZGF0ZU9iai5kYXRlLFxuICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICBsb2NrZWQ6ICF0aGlzLmRhdGVGaWx0ZXIobW9tZW50LnVuaXgodGhpcy5kYXRlT2JqLmRhdGUpKVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KHJlc3VsdFRhZyk7XG4gICAgfVxuXG4gICAgZGF0ZUZpbHRlcihkYXRlKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG1vbnRoID0gdGhpcy5mb3JlY2FzdFZhbHVlO1xuICAgICAgICBjb25zdCB5ZWFyID0gZGF0ZS55ZWFyKCk7XG5cbiAgICAgICAgcmV0dXJuICF0aGlzLmxvY2tlZERhdGUuc29tZSgodGltZXN0YW1wKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsb2NrRGF0ZSA9IG1vbWVudC51bml4KHRpbWVzdGFtcCk7XG4gICAgICAgICAgICByZXR1cm4gbG9ja0RhdGUubW9udGgoKSA9PT0gbW9udGggJiYgbG9ja0RhdGUueWVhcigpID09PSB5ZWFyO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuIl19
|
|
@@ -117,17 +117,17 @@ class ForecastTagComponent extends AnyTagComponent {
|
|
|
117
117
|
];
|
|
118
118
|
}
|
|
119
119
|
initDate() {
|
|
120
|
-
|
|
121
|
-
if (this.defaultValue) {
|
|
122
|
-
dateVal = new Date(this.defaultValue * 1000);
|
|
123
|
-
}
|
|
120
|
+
const dateVal = this.defaultValue ? moment$8.unix(this.defaultValue) : moment$8();
|
|
124
121
|
const fiscal_year_starts_from = this.fiscalYearStartsFrom || 1;
|
|
125
122
|
const fiscal_year_back = this.fiscalYearBack || false;
|
|
126
123
|
this.forecastValue = this.getFiscalMonthFromDate(dateVal, fiscal_year_starts_from) - 1;
|
|
127
124
|
const fiscal_year = this.getFiscalYearFromDate(dateVal, fiscal_year_starts_from, fiscal_year_back);
|
|
128
|
-
this.
|
|
125
|
+
this.updateYear(fiscal_year, this.forecastValue);
|
|
129
126
|
this.updateLockedDate();
|
|
130
127
|
}
|
|
128
|
+
updateYear(fiscalYear, month) {
|
|
129
|
+
this.dateObj.date = fiscalYear ? moment$8(`${month || '01'}/01/${fiscalYear} 12:00:00`, 'MM/DD/YYYY hh:mm:ss').utc().unix() : moment$8.utc().unix();
|
|
130
|
+
}
|
|
131
131
|
updateLockedDate() {
|
|
132
132
|
const year = moment$8.unix(this.dateObj.date).year();
|
|
133
133
|
for (const forecastTag of this.forecastTags) {
|
|
@@ -139,7 +139,7 @@ class ForecastTagComponent extends AnyTagComponent {
|
|
|
139
139
|
}
|
|
140
140
|
initName() {
|
|
141
141
|
if (!this.name) {
|
|
142
|
-
this.name = 'Forecast';
|
|
142
|
+
this.name = 'Forecast (New)';
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
getFiscalMonthFromDate(dateObj, fiscal_year_starts_from) {
|
|
@@ -150,31 +150,29 @@ class ForecastTagComponent extends AnyTagComponent {
|
|
|
150
150
|
for (let i = 1; i < fiscal_year_starts_from; i++) {
|
|
151
151
|
all_months.push(i);
|
|
152
152
|
}
|
|
153
|
-
return all_months.indexOf(dateObj.
|
|
153
|
+
return all_months.indexOf(dateObj.month() + 1) + 1;
|
|
154
154
|
}
|
|
155
155
|
getFiscalYearFromDate(dateObj, fiscal_year_starts_from, fiscal_year_back) {
|
|
156
|
-
let fiscal_year = dateObj.
|
|
156
|
+
let fiscal_year = dateObj.year();
|
|
157
157
|
if (!fiscal_year_back) {
|
|
158
|
-
if (dateObj.
|
|
158
|
+
if (dateObj.month() + 1 >= fiscal_year_starts_from && fiscal_year_starts_from !== 1) {
|
|
159
159
|
fiscal_year += 1;
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
else {
|
|
163
|
-
if (dateObj.
|
|
163
|
+
if (dateObj.month() + 1 < fiscal_year_starts_from && fiscal_year_starts_from !== 1) {
|
|
164
164
|
fiscal_year -= 1;
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
return fiscal_year;
|
|
168
168
|
}
|
|
169
169
|
getForecastLabelFromValue(value, fiscal_year_starts_from, fiscal_year_back) {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
}
|
|
177
|
-
return label;
|
|
170
|
+
if (!value)
|
|
171
|
+
return '';
|
|
172
|
+
const dateObj = moment$8.unix(value);
|
|
173
|
+
const fiscal_month = this.getFiscalMonthFromDate(dateObj, fiscal_year_starts_from);
|
|
174
|
+
const fiscal_year = this.getFiscalYearFromDate(dateObj, fiscal_year_starts_from, fiscal_year_back);
|
|
175
|
+
return `${fiscal_month}+${12 - fiscal_month} (${fiscal_year})`;
|
|
178
176
|
}
|
|
179
177
|
changeTagInputHandler(event) {
|
|
180
178
|
this.chosenTagHandler();
|
|
@@ -188,23 +186,22 @@ class ForecastTagComponent extends AnyTagComponent {
|
|
|
188
186
|
return;
|
|
189
187
|
const month = this.forecastValue;
|
|
190
188
|
const year = moment$8.unix(this.dateObj.date).year();
|
|
191
|
-
let timeStampVal = 0;
|
|
192
189
|
let label = '';
|
|
193
190
|
if (!Number.isNaN(month) && !Number.isNaN(year)) {
|
|
194
|
-
const date =
|
|
191
|
+
const date = moment$8(`${month}/01/${year} 12:00:00`, 'MM/DD/YYYY hh:mm:ss');
|
|
195
192
|
const fiscal_year_starts_from = this.fiscalYearStartsFrom || 1;
|
|
196
193
|
const fiscal_year_back = this.fiscalYearBack || false;
|
|
197
194
|
if (fiscal_year_starts_from !== 1) {
|
|
198
195
|
if (!fiscal_year_back) {
|
|
199
|
-
date.
|
|
196
|
+
date.set('month', date.month() - 13 + fiscal_year_starts_from);
|
|
200
197
|
}
|
|
201
198
|
else {
|
|
202
|
-
date.
|
|
199
|
+
date.set('month', date.month() - 1 + fiscal_year_starts_from);
|
|
203
200
|
}
|
|
204
201
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
this.
|
|
202
|
+
label = this.getForecastLabelFromValue(date.unix(), fiscal_year_starts_from, fiscal_year_back);
|
|
203
|
+
const fiscal_year = this.getFiscalYearFromDate(date, fiscal_year_starts_from, fiscal_year_back);
|
|
204
|
+
this.updateYear(fiscal_year, month);
|
|
208
205
|
this.isDateEventHappened = true;
|
|
209
206
|
setTimeout(() => {
|
|
210
207
|
this.isDateEventHappened = false;
|
|
@@ -212,9 +209,9 @@ class ForecastTagComponent extends AnyTagComponent {
|
|
|
212
209
|
}
|
|
213
210
|
const resultTag = {
|
|
214
211
|
name: this.name,
|
|
215
|
-
value:
|
|
212
|
+
value: this.dateObj.date,
|
|
216
213
|
label,
|
|
217
|
-
locked: !this.dateFilter(moment$8.unix(
|
|
214
|
+
locked: !this.dateFilter(moment$8.unix(this.dateObj.date))
|
|
218
215
|
};
|
|
219
216
|
this.dateChange.emit(resultTag);
|
|
220
217
|
}
|
|
@@ -230,7 +227,7 @@ class ForecastTagComponent extends AnyTagComponent {
|
|
|
230
227
|
}
|
|
231
228
|
ForecastTagComponent.decorators = [
|
|
232
229
|
{ type: Component, args: [{
|
|
233
|
-
template: "<div class=\"forecast-tag__container\">\n <div class=\"forecast-tag__forecast\">\n <p class=\"tag__label\">
|
|
230
|
+
template: "<div class=\"forecast-tag__container\">\n <div class=\"forecast-tag__forecast\">\n <p class=\"tag__label\">Forecast</p>\n <dr-select placeholder=\"Select\"\n [(ngModel)]=\"forecastValue\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"disabled\"\n [items]=\"forecastTags\"\n (ngModelChange)=\"changeTagInputHandler($event)\"></dr-select>\n </div>\n <div class=\"forecast-tag__year\">\n <p class=\"tag__label\">Year</p>\n <dr-date-picker format=\"year\"\n [(ngModel)]=\"dateObj.date\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"changeYearInputHandler($event)\"></dr-date-picker>\n </div>\n</div>\n",
|
|
234
231
|
selector: 'forecast-tag',
|
|
235
232
|
providers: [
|
|
236
233
|
{
|