@datarailsshared/datarailsshared 1.6.273 → 1.6.277
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/datarailsshared-datarailsshared-1.6.277.tgz +0 -0
- package/esm2022/lib/dr-inputs/date-pickers/dr-fiscal-month-calendar-picker/dr-fiscal-month-calendar-picker.component.mjs +2 -2
- package/esm2022/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.mjs +34 -19
- package/esm2022/lib/dr-tags/_consts/scenario-tags-config.mjs +87 -0
- package/esm2022/lib/dr-tags/_interfaces/scenario.mjs +8 -0
- package/esm2022/lib/dr-tags/_services/scenario.service.mjs +195 -0
- package/esm2022/lib/dr-tags/_services/tags-constructor.service.mjs +71 -0
- package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/any-tag.component.mjs +42 -0
- package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-date.component.mjs +151 -0
- package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-day/dr-tag-day.component.mjs +98 -0
- package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-forecast/dr-tag-forecast.component.mjs +225 -0
- package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-forecast/forecast-tag.service.mjs +87 -0
- package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-month/dr-tag-month.component.mjs +101 -0
- package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-quarter/dr-tag-quarter.component.mjs +129 -0
- package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-week/dr-tag-week.component.mjs +105 -0
- package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-year/dr-tag-year.component.mjs +99 -0
- package/esm2022/lib/dr-tags/dr-tag/dr-tag-dynamic/dr-tag-dynamic.component.mjs +230 -0
- package/esm2022/lib/dr-tags/dr-tag/dr-tag-list/dr-tag-list.component.mjs +85 -0
- package/esm2022/lib/dr-tags/dr-tag/dr-tag.component.mjs +241 -0
- package/esm2022/lib/dr-tags/dr-tag/dr-tag.types.mjs +2 -0
- package/esm2022/lib/dr-tags/dr-tags-and-scenario/dr-tags-and-scenario.component.mjs +103 -0
- package/esm2022/lib/dr-tags/dr-tags-and-scenario-constructor/dr-tags-and-scenario-constructor.component.mjs +107 -0
- package/esm2022/lib/dr-tags/dr-tags-constructor/dr-tags-constructor.component.mjs +164 -0
- package/esm2022/local-api.mjs +18 -25
- package/fesm2022/datarailsshared-datarailsshared.mjs +8655 -8743
- package/fesm2022/datarailsshared-datarailsshared.mjs.map +1 -1
- package/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.d.ts +6 -3
- package/lib/{dr-scenario/consts → dr-tags/_consts}/scenario-tags-config.d.ts +1 -1
- package/lib/{dr-scenario/services → dr-tags/_services}/scenario.service.d.ts +1 -1
- package/lib/{dr-tags-constructor → dr-tags/_services}/tags-constructor.service.d.ts +2 -2
- package/lib/{date-tags → dr-tags/dr-tag/dr-tag-date}/any-tag.component.d.ts +1 -1
- package/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-date.component.d.ts +18 -0
- package/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-day/dr-tag-day.component.d.ts +14 -0
- package/lib/{date-tags/forecast-tag/forecast-tag.component.d.ts → dr-tags/dr-tag/dr-tag-date/dr-tag-forecast/dr-tag-forecast.component.d.ts} +5 -5
- package/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-month/dr-tag-month.component.d.ts +14 -0
- package/lib/{date-tags/quarter-tag/quarter-tag.component.d.ts → dr-tags/dr-tag/dr-tag-date/dr-tag-quarter/dr-tag-quarter.component.d.ts} +3 -3
- package/lib/{date-tags/week-tag/week-tag.component.d.ts → dr-tags/dr-tag/dr-tag-date/dr-tag-week/dr-tag-week.component.d.ts} +3 -3
- package/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-year/dr-tag-year.component.d.ts +14 -0
- package/lib/{dr-dynamic-tag/dr-dynamic-tag.component.d.ts → dr-tags/dr-tag/dr-tag-dynamic/dr-tag-dynamic.component.d.ts} +5 -5
- package/lib/dr-tags/dr-tag/dr-tag-list/dr-tag-list.component.d.ts +15 -0
- package/lib/dr-tags/{dr-tag.component.d.ts → dr-tag/dr-tag.component.d.ts} +2 -2
- package/lib/dr-tags/dr-tags-and-scenario/dr-tags-and-scenario.component.d.ts +31 -0
- package/lib/{dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.d.ts → dr-tags/dr-tags-and-scenario-constructor/dr-tags-and-scenario-constructor.component.d.ts} +6 -6
- package/lib/{dr-tags-constructor → dr-tags/dr-tags-constructor}/dr-tags-constructor.component.d.ts +6 -6
- package/local-api.d.ts +17 -24
- package/package.json +1 -1
- package/datarailsshared-datarailsshared-1.6.273.tgz +0 -0
- package/esm2022/lib/date-tags/any-tag.component.mjs +0 -42
- package/esm2022/lib/date-tags/date-tag.component.mjs +0 -131
- package/esm2022/lib/date-tags/date-tag.module.mjs +0 -53
- package/esm2022/lib/date-tags/day-tag/day-tag.component.mjs +0 -95
- package/esm2022/lib/date-tags/forecast-tag/forecast-tag.component.mjs +0 -222
- package/esm2022/lib/date-tags/forecast-tag/forecast-tag.service.mjs +0 -87
- package/esm2022/lib/date-tags/month-tag/month-tag.component.mjs +0 -98
- package/esm2022/lib/date-tags/quarter-tag/quarter-tag.component.mjs +0 -126
- package/esm2022/lib/date-tags/week-tag/week-tag.component.mjs +0 -102
- package/esm2022/lib/date-tags/year-tag/year-tag.component.mjs +0 -96
- package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.component.mjs +0 -227
- package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.module.mjs +0 -21
- package/esm2022/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.mjs +0 -104
- package/esm2022/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.mjs +0 -100
- package/esm2022/lib/dr-scenario/consts/scenario-tags-config.mjs +0 -87
- package/esm2022/lib/dr-scenario/dr-scenario.module.mjs +0 -27
- package/esm2022/lib/dr-scenario/interfaces/scenario.mjs +0 -8
- package/esm2022/lib/dr-scenario/services/scenario.service.mjs +0 -195
- package/esm2022/lib/dr-tags/dr-tag.component.mjs +0 -240
- package/esm2022/lib/dr-tags/dr-tag.module.mjs +0 -23
- package/esm2022/lib/dr-tags/dr-tag.types.mjs +0 -2
- package/esm2022/lib/dr-tags-constructor/dr-tags-constructor.component.mjs +0 -161
- package/esm2022/lib/dr-tags-constructor/dr-tags-constructor.module.mjs +0 -24
- package/esm2022/lib/dr-tags-constructor/tags-constructor.service.mjs +0 -71
- package/esm2022/lib/list-tags/list-tag.component.mjs +0 -82
- package/esm2022/lib/list-tags/list-tag.module.mjs +0 -22
- package/lib/date-tags/date-tag.component.d.ts +0 -18
- package/lib/date-tags/date-tag.module.d.ts +0 -21
- package/lib/date-tags/day-tag/day-tag.component.d.ts +0 -14
- package/lib/date-tags/month-tag/month-tag.component.d.ts +0 -14
- package/lib/date-tags/year-tag/year-tag.component.d.ts +0 -14
- package/lib/dr-dynamic-tag/dr-dynamic-tag.module.d.ts +0 -10
- package/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.d.ts +0 -31
- package/lib/dr-scenario/dr-scenario.module.d.ts +0 -13
- package/lib/dr-tags/dr-tag.module.d.ts +0 -11
- package/lib/dr-tags-constructor/dr-tags-constructor.module.d.ts +0 -10
- package/lib/list-tags/list-tag.component.d.ts +0 -15
- package/lib/list-tags/list-tag.module.d.ts +0 -10
- /package/lib/{dr-scenario/interfaces → dr-tags/_interfaces}/scenario.d.ts +0 -0
- /package/lib/{date-tags/forecast-tag → dr-tags/dr-tag/dr-tag-date/dr-tag-forecast}/forecast-tag.service.d.ts +0 -0
- /package/lib/dr-tags/{dr-tag.types.d.ts → dr-tag/dr-tag.types.d.ts} +0 -0
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { TagsConfigSubType, TagTypes } from '../../models/serverTags';
|
|
3
|
+
import { Scenario } from '../_interfaces/scenario';
|
|
4
|
+
import { cloneDeep as _cloneDeep, filter as _filter, find as _find, forEach as _forEach, orderBy as _orderBy, indexOf as _indexOf, reduce as _reduce, some as _some, map as _map, includes as _includes, } from 'lodash';
|
|
5
|
+
import { getScenarioTagDataConfig } from '../_consts/scenario-tags-config';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class ScenarioService {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.DEFAULT_FORECAST_DATE_TAG = 'Month';
|
|
10
|
+
}
|
|
11
|
+
get scenarios() {
|
|
12
|
+
return _orderBy(Object.values(Scenario), (scenario) => (scenario === Scenario.NONE ? 1 : 0));
|
|
13
|
+
}
|
|
14
|
+
get areExistingTagsConfig() {
|
|
15
|
+
return !!this.currentTagsConfig;
|
|
16
|
+
}
|
|
17
|
+
initScenarioTags(wholeTagsConfig, currentTagsConfig, isMultipleDimension, isForecastMultipleDimension) {
|
|
18
|
+
if (!wholeTagsConfig?.length)
|
|
19
|
+
return;
|
|
20
|
+
this.wholeTagsConfig = _cloneDeep(wholeTagsConfig);
|
|
21
|
+
this.currentTagsConfig = currentTagsConfig;
|
|
22
|
+
this.isMultipleDimension = isMultipleDimension;
|
|
23
|
+
this.isForecastMultipleDimension = isForecastMultipleDimension;
|
|
24
|
+
}
|
|
25
|
+
getTagsConfigByScenarioTags(scenarioTags, tagsConfig) {
|
|
26
|
+
const scenarioTagsConfig = _filter(tagsConfig, (tagConfig) => _some(scenarioTags, (scenarioTag) => scenarioTag.toggle && scenarioTag.selectedTagSubType === tagConfig.options.sub_type));
|
|
27
|
+
return this.sortScenarioTags(scenarioTagsConfig);
|
|
28
|
+
}
|
|
29
|
+
getScenarioTagsByScenario(scenario) {
|
|
30
|
+
const scenarioTagsConfig = this.getScenarioTagsConfig(scenario, this.wholeTagsConfig);
|
|
31
|
+
const scenarioTagsUi = [];
|
|
32
|
+
_forEach(scenarioTagsConfig, (scenarioTag) => {
|
|
33
|
+
const isTagWithSubTags = scenarioTag.type === TagTypes.DATE;
|
|
34
|
+
const tagWithSubTags = isTagWithSubTags && _find(scenarioTagsUi, { type: scenarioTag.type });
|
|
35
|
+
const tag = tagWithSubTags || this.prepareScenarioTag(scenarioTagsConfig, scenarioTag, scenario, isTagWithSubTags);
|
|
36
|
+
if (isTagWithSubTags) {
|
|
37
|
+
this.updateScenarioSubTags(tag, scenarioTag);
|
|
38
|
+
tag.subTags = ScenarioService.sortedSubTags(tag);
|
|
39
|
+
}
|
|
40
|
+
if (tagWithSubTags)
|
|
41
|
+
return;
|
|
42
|
+
scenarioTagsUi.push(tag);
|
|
43
|
+
});
|
|
44
|
+
if (this.areExistingTagsConfig) {
|
|
45
|
+
this.initExistingTagsConfig(scenario, scenarioTagsUi);
|
|
46
|
+
}
|
|
47
|
+
const isTagNotSupportingDates = _some(scenarioTagsUi, { turnOffDateTags: true, toggle: true });
|
|
48
|
+
if (isTagNotSupportingDates) {
|
|
49
|
+
this.turnOffDateTag(scenarioTagsUi);
|
|
50
|
+
}
|
|
51
|
+
const tagWithSpecificDateTags = _find(scenarioTagsUi, (tag) => tag.toggle && !!tag.acceptableSubTags?.length);
|
|
52
|
+
if (tagWithSpecificDateTags) {
|
|
53
|
+
this.hideNotAvailableTags(tagWithSpecificDateTags, scenarioTagsUi);
|
|
54
|
+
}
|
|
55
|
+
return this.sortScenarioTags(scenarioTagsUi);
|
|
56
|
+
}
|
|
57
|
+
tagNotSupportingDatesHandler(tag, tagNotSupportingDates, dateTag) {
|
|
58
|
+
if (!tagNotSupportingDates || !tag.toggle)
|
|
59
|
+
return;
|
|
60
|
+
if (tag.type === TagTypes.DATE) {
|
|
61
|
+
tagNotSupportingDates.toggle = false;
|
|
62
|
+
}
|
|
63
|
+
if (tag === tagNotSupportingDates) {
|
|
64
|
+
if (dateTag) {
|
|
65
|
+
dateTag.toggle = false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
tagAcceptableSubTagsHandler(tag, dateTag) {
|
|
70
|
+
if (!tag.acceptableSubTags?.length)
|
|
71
|
+
return;
|
|
72
|
+
if (!dateTag)
|
|
73
|
+
return;
|
|
74
|
+
dateTag.subTags = _map(dateTag.subTags, (subTag) => {
|
|
75
|
+
subTag.hidden = tag.toggle && !_includes(tag.acceptableSubTags, subTag.subType);
|
|
76
|
+
return subTag;
|
|
77
|
+
});
|
|
78
|
+
dateTag.selectedTagSubType = tag.acceptableSubTags[0];
|
|
79
|
+
}
|
|
80
|
+
sortScenarioTags(scenarioTagsUi) {
|
|
81
|
+
return _orderBy(scenarioTagsUi, [(tag) => (tag.type === TagTypes.DATE ? 0 : 1), (tag) => tag.name === 'File Status']);
|
|
82
|
+
}
|
|
83
|
+
static sortedSubTags(tag) {
|
|
84
|
+
const SUB_TAGS_ORDER = [
|
|
85
|
+
TagsConfigSubType.DAY,
|
|
86
|
+
TagsConfigSubType.WEEK,
|
|
87
|
+
TagsConfigSubType.MONTH,
|
|
88
|
+
TagsConfigSubType.QUARTER,
|
|
89
|
+
TagsConfigSubType.YEAR,
|
|
90
|
+
];
|
|
91
|
+
return _orderBy(tag.subTags, (subTag) => _indexOf(SUB_TAGS_ORDER, subTag.subType));
|
|
92
|
+
}
|
|
93
|
+
initExistingTagsConfig(scenario, scenarioTagsUi) {
|
|
94
|
+
_forEach(this.currentTagsConfig, (tagConfig) => {
|
|
95
|
+
const tagSubType = tagConfig?.options?.sub_type;
|
|
96
|
+
const scenarioTagDataConfig = getScenarioTagDataConfig(this.isMultipleDimension, this.isForecastMultipleDimension);
|
|
97
|
+
if (!scenarioTagDataConfig || !scenarioTagDataConfig[scenario] || !scenarioTagDataConfig[scenario][tagSubType]) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const scenarioTagUi = tagConfig.type === TagTypes.DATE
|
|
101
|
+
? _find(scenarioTagsUi, { type: tagConfig.type })
|
|
102
|
+
: _find(scenarioTagsUi, { selectedTagSubType: tagSubType });
|
|
103
|
+
if (scenarioTagUi) {
|
|
104
|
+
scenarioTagUi.toggle = true;
|
|
105
|
+
scenarioTagUi.selectedTagSubType = tagSubType;
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
prepareScenarioTag(scenarioTagsConfig, scenarioTag, scenario, isDateTag) {
|
|
110
|
+
const toggleStatus = isDateTag
|
|
111
|
+
? _some(scenarioTagsConfig, (tag) => tag.type === TagTypes.DATE && tag.scenarioData.toggle)
|
|
112
|
+
: scenarioTag.scenarioData.toggle;
|
|
113
|
+
const selectedTagSubType = isDateTag
|
|
114
|
+
? this.getScenarioSelectedDateTag(scenario, scenarioTagsConfig)
|
|
115
|
+
: scenarioTag.options.sub_type;
|
|
116
|
+
const tag = {
|
|
117
|
+
toggle: this.areExistingTagsConfig ? false : toggleStatus,
|
|
118
|
+
name: scenarioTag.scenarioData.name || scenarioTag.name,
|
|
119
|
+
description: scenarioTag.scenarioData.description || scenarioTag.description,
|
|
120
|
+
type: scenarioTag.type,
|
|
121
|
+
selectedTagSubType,
|
|
122
|
+
};
|
|
123
|
+
if (scenarioTag.scenarioData.turnOffDateTags) {
|
|
124
|
+
tag.turnOffDateTags = scenarioTag.scenarioData.turnOffDateTags;
|
|
125
|
+
}
|
|
126
|
+
if (scenarioTag.scenarioData.acceptableSubTags) {
|
|
127
|
+
tag.acceptableSubTags = scenarioTag.scenarioData.acceptableSubTags;
|
|
128
|
+
}
|
|
129
|
+
return tag;
|
|
130
|
+
}
|
|
131
|
+
updateScenarioSubTags(tag, scenarioTag) {
|
|
132
|
+
if (!tag.subTags) {
|
|
133
|
+
tag.subTags = [];
|
|
134
|
+
}
|
|
135
|
+
const tagSubType = scenarioTag.options.sub_type;
|
|
136
|
+
tag.subTags.push({
|
|
137
|
+
subType: tagSubType,
|
|
138
|
+
name: tagSubType === TagsConfigSubType.FORECAST_NEW ? this.DEFAULT_FORECAST_DATE_TAG : scenarioTag.name,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
turnOffDateTag(scenarioTags) {
|
|
142
|
+
const dateTag = _find(scenarioTags, { type: TagTypes.DATE });
|
|
143
|
+
if (!dateTag)
|
|
144
|
+
return;
|
|
145
|
+
dateTag.toggle = false;
|
|
146
|
+
}
|
|
147
|
+
hideNotAvailableTags(tagWithSpecificDateTags, scenarioTags) {
|
|
148
|
+
const subTags = _find(scenarioTags, { type: TagTypes.DATE })?.subTags;
|
|
149
|
+
if (!subTags.length)
|
|
150
|
+
return;
|
|
151
|
+
_forEach(scenarioTags, (tag) => {
|
|
152
|
+
if (!tag.acceptableSubTags?.length)
|
|
153
|
+
return;
|
|
154
|
+
if (tag !== tagWithSpecificDateTags) {
|
|
155
|
+
tag.toggle = false;
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
_forEach(subTags, (subTag) => {
|
|
159
|
+
subTag.hidden = !tagWithSpecificDateTags.acceptableSubTags.includes(subTag.subType);
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
getScenarioSelectedDateTag(scenario, dateTags) {
|
|
163
|
+
const monthSubType = _find(dateTags, (tag) => tag.options.sub_type === TagsConfigSubType.MONTH)?.options
|
|
164
|
+
?.sub_type;
|
|
165
|
+
const scenarioSelectedDateTag = {
|
|
166
|
+
[Scenario.ACTUALS]: () => monthSubType,
|
|
167
|
+
[Scenario.BUDGET]: () => _find(dateTags, (tag) => tag.options.sub_type === TagsConfigSubType.YEAR)?.options?.sub_type,
|
|
168
|
+
[Scenario.FORECAST]: () => _find(dateTags, (tag) => tag.options.sub_type === TagsConfigSubType.FORECAST_NEW)?.options
|
|
169
|
+
?.sub_type,
|
|
170
|
+
[Scenario.NONE]: () => monthSubType,
|
|
171
|
+
};
|
|
172
|
+
if (!scenarioSelectedDateTag[scenario])
|
|
173
|
+
return;
|
|
174
|
+
return scenarioSelectedDateTag[scenario]();
|
|
175
|
+
}
|
|
176
|
+
getScenarioTagsConfig(scenario, tagsConfig) {
|
|
177
|
+
return _reduce(tagsConfig, (acc, tagConfig) => {
|
|
178
|
+
const tagSubType = tagConfig?.options?.sub_type;
|
|
179
|
+
const scenarioTagDataConfig = getScenarioTagDataConfig(this.isMultipleDimension, this.isForecastMultipleDimension);
|
|
180
|
+
const scenarioTagConfig = scenarioTagDataConfig && scenarioTagDataConfig[scenario] ? scenarioTagDataConfig[scenario][tagSubType] : null;
|
|
181
|
+
if (!scenarioTagConfig || scenarioTagConfig.hidden)
|
|
182
|
+
return acc;
|
|
183
|
+
const clonedTagConfig = _cloneDeep(tagConfig);
|
|
184
|
+
const scenarioTag = { ...clonedTagConfig, scenarioData: scenarioTagConfig };
|
|
185
|
+
acc.push(scenarioTag);
|
|
186
|
+
return acc;
|
|
187
|
+
}, []);
|
|
188
|
+
}
|
|
189
|
+
/** @nocollapse */ static { this.ɵfac = function ScenarioService_Factory(t) { return new (t || ScenarioService)(); }; }
|
|
190
|
+
/** @nocollapse */ static { this.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: ScenarioService, factory: ScenarioService.ɵfac }); }
|
|
191
|
+
}
|
|
192
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ScenarioService, [{
|
|
193
|
+
type: Injectable
|
|
194
|
+
}], null, null); })();
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLXRhZ3MvX3NlcnZpY2VzL3NjZW5hcmlvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVEsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUUsT0FBTyxFQUE0RCxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RyxPQUFPLEVBQ0gsU0FBUyxJQUFJLFVBQVUsRUFDdkIsTUFBTSxJQUFJLE9BQU8sRUFDakIsSUFBSSxJQUFJLEtBQUssRUFDYixPQUFPLElBQUksUUFBUSxFQUNuQixPQUFPLElBQUksUUFBUSxFQUNuQixPQUFPLElBQUksUUFBUSxFQUNuQixNQUFNLElBQUksT0FBTyxFQUNqQixJQUFJLElBQUksS0FBSyxFQUNiLEdBQUcsSUFBSSxJQUFJLEVBQ1gsUUFBUSxJQUFJLFNBQVMsR0FDeEIsTUFBTSxRQUFRLENBQUM7QUFDaEIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBRzNFLE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRVksOEJBQXlCLEdBQUcsT0FBTyxDQUFDO0tBNFAvQztJQXJQRyxJQUFXLFNBQVM7UUFDaEIsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRCxJQUFZLHFCQUFxQjtRQUM3QixPQUFPLENBQUMsQ0FBQyxJ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QzttR0E1UFEsZUFBZTtzR0FBZixlQUFlLFdBQWYsZUFBZTs7dUZBQWYsZUFBZTtjQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVRhZywgVGFnc0NvbmZpZ1N1YlR5cGUsIFRhZ1R5cGVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlcnZlclRhZ3MnO1xuaW1wb3J0IHsgSVNjZW5hcmlvLCBJU2NlbmFyaW9TdWJUYWcsIElTY2VuYXJpb1RhZywgSVNjZW5hcmlvVGFnVWksIFNjZW5hcmlvIH0gZnJvbSAnLi4vX2ludGVyZmFjZXMvc2NlbmFyaW8nO1xuaW1wb3J0IHtcbiAgICBjbG9uZURlZXAgYXMgX2Nsb25lRGVlcCxcbiAgICBmaWx0ZXIgYXMgX2ZpbHRlcixcbiAgICBmaW5kIGFzIF9maW5kLFxuICAgIGZvckVhY2ggYXMgX2ZvckVhY2gsXG4gICAgb3JkZXJCeSBhcyBfb3JkZXJCeSxcbiAgICBpbmRleE9mIGFzIF9pbmRleE9mLFxuICAgIHJlZHVjZSBhcyBfcmVkdWNlLFxuICAgIHNvbWUgYXMgX3NvbWUsXG4gICAgbWFwIGFzIF9tYXAsXG4gICAgaW5jbHVkZXMgYXMgX2luY2x1ZGVzLFxufSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZ2V0U2NlbmFyaW9UYWdEYXRhQ29uZmlnIH0gZnJvbSAnLi4vX2NvbnN0cy9zY2VuYXJpby10YWdzLWNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTY2VuYXJpb1NlcnZpY2Uge1xuICAgIHByaXZhdGUgREVGQVVMVF9GT1JFQ0FTVF9EQVRFX1RBRyA9ICdNb250aCc7XG5cbiAgICBwcml2YXRlIHdob2xlVGFnc0NvbmZpZzogSVRhZ1tdO1xuICAgIHByaXZhdGUgY3VycmVudFRhZ3NDb25maWc6IElUYWdbXTtcbiAgICBwcml2YXRlIGlzTXVsdGlwbGVEaW1lbnNpb246IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBpc0ZvcmVjYXN0TXVsdGlwbGVEaW1lbnNpb246IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgZ2V0IHNjZW5hcmlvcygpOiBTY2VuYXJpb1tdIHtcbiAgICAgICAgcmV0dXJuIF9vcmRlckJ5KE9iamVjdC52YWx1ZXMoU2NlbmFyaW8pLCAoc2NlbmFyaW8pID0+IChzY2VuYXJpbyA9PT0gU2NlbmFyaW8uTk9ORSA/IDEgOiAwKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgYXJlRXhpc3RpbmdUYWdzQ29uZmlnKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmN1cnJlbnRUYWdzQ29uZmlnO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0U2NlbmFyaW9UYWdzKFxuICAgICAgICB3aG9sZVRhZ3NDb25maWc6IElUYWdbXSxcbiAgICAgICAgY3VycmVudFRhZ3NDb25maWc6IElUYWdbXSxcbiAgICAgICAgaXNNdWx0aXBsZURpbWVuc2lvbjogYm9vbGVhbixcbiAgICAgICAgaXNGb3JlY2FzdE11bHRpcGxlRGltZW5zaW9uOiBib29sZWFuLFxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAoIXdob2xlVGFnc0NvbmZpZz8ubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy53aG9sZVRhZ3NDb25maWcgPSBfY2xvbmVEZWVwKHdob2xlVGFnc0NvbmZpZyk7XG4gICAgICAgIHRoaXMuY3VycmVudFRhZ3NDb25maWcgPSBjdXJyZW50VGFnc0NvbmZpZztcbiAgICAgICAgdGhpcy5pc011bHRpcGxlRGltZW5zaW9uID0gaXNNdWx0aXBsZURpbWVuc2lvbjtcbiAgICAgICAgdGhpcy5pc0ZvcmVjYXN0TXVsdGlwbGVEaW1lbnNpb24gPSBpc0ZvcmVjYXN0TXVsdGlwbGVEaW1lbnNpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRhZ3NDb25maWdCeVNjZW5hcmlvVGFncyhzY2VuYXJpb1RhZ3M6IElTY2VuYXJpb1RhZ1VpW10sIHRhZ3NDb25maWc6IElUYWdbXSk6IElUYWdbXSB7XG4gICAgICAgIGNvbnN0IHNjZW5hcmlvVGFnc0NvbmZpZyA9IF9maWx0ZXIodGFnc0NvbmZpZywgKHRhZ0NvbmZpZykgPT5cbiAgICAgICAgICAgIF9zb21lKFxuICAgICAgICAgICAgICAgIHNjZW5hcmlvVGFncyxcbiAgICAgICAgICAgICAgICAoc2NlbmFyaW9UYWcpID0+IHNjZW5hcmlvVGFnLnRvZ2dsZSAmJiBzY2VuYXJpb1RhZy5zZWxlY3RlZFRhZ1N1YlR5cGUgPT09IHRhZ0NvbmZpZy5vcHRpb25zLnN1Yl90eXBlLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5zb3J0U2NlbmFyaW9UYWdzKHNjZW5hcmlvVGFnc0NvbmZpZyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNjZW5hcmlvVGFnc0J5U2NlbmFyaW8oc2NlbmFyaW86IFNjZW5hcmlvKSB7XG4gICAgICAgIGNvbnN0IHNjZW5hcmlvVGFnc0NvbmZpZzogSVNjZW5hcmlvVGFnW10gPSB0aGlzLmdldFNjZW5hcmlvVGFnc0NvbmZpZyhzY2VuYXJpbywgdGhpcy53aG9sZVRhZ3NDb25maWcpO1xuICAgICAgICBjb25zdCBzY2VuYXJpb1RhZ3NVaTogSVNjZW5hcmlvVGFnVWlbXSA9IFtdO1xuXG4gICAgICAgIF9mb3JFYWNoKHNjZW5hcmlvVGFnc0NvbmZpZywgKHNjZW5hcmlvVGFnOiBJU2NlbmFyaW9UYWcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzVGFnV2l0aFN1YlRhZ3MgPSBzY2VuYXJpb1RhZy50eXBlID09PSBUYWdUeXBlcy5EQVRFO1xuICAgICAgICAgICAgY29uc3QgdGFnV2l0aFN1YlRhZ3MgPSBpc1RhZ1dpdGhTdWJUYWdzICYmIF9maW5kKHNjZW5hcmlvVGFnc1VpLCB7IHR5cGU6IHNjZW5hcmlvVGFnLnR5cGUgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHRhZzogSVNjZW5hcmlvVGFnVWkgPVxuICAgICAgICAgICAgICAgIHRhZ1dpdGhTdWJUYWdzIHx8IHRoaXMucHJlcGFyZVNjZW5hcmlvVGFnKHNjZW5hcmlvVGFnc0NvbmZpZywgc2NlbmFyaW9UYWcsIHNjZW5hcmlvLCBpc1RhZ1dpdGhTdWJUYWdzKTtcblxuICAgICAgICAgICAgaWYgKGlzVGFnV2l0aFN1YlRhZ3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNjZW5hcmlvU3ViVGFncyh0YWcsIHNjZW5hcmlvVGFnKTtcbiAgICAgICAgICAgICAgICB0YWcuc3ViVGFncyA9IFNjZW5hcmlvU2VydmljZS5zb3J0ZWRTdWJUYWdzKHRhZyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0YWdXaXRoU3ViVGFncykgcmV0dXJuO1xuICAgICAgICAgICAgc2NlbmFyaW9UYWdzVWkucHVzaCh0YWcpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5hcmVFeGlzdGluZ1RhZ3NDb25maWcpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdEV4aXN0aW5nVGFnc0NvbmZpZyhzY2VuYXJpbywgc2NlbmFyaW9UYWdzVWkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNUYWdOb3RTdXBwb3J0aW5nRGF0ZXMgPSBfc29tZShzY2VuYXJpb1RhZ3NVaSwgeyB0dXJuT2ZmRGF0ZVRhZ3M6IHRydWUsIHRvZ2dsZTogdHJ1ZSB9KTtcbiAgICAgICAgaWYgKGlzVGFnTm90U3VwcG9ydGluZ0RhdGVzKSB7XG4gICAgICAgICAgICB0aGlzLnR1cm5PZmZEYXRlVGFnKHNjZW5hcmlvVGFnc1VpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhZ1dpdGhTcGVjaWZpY0RhdGVUYWdzOiBJU2NlbmFyaW9UYWdVaSA9IF9maW5kKFxuICAgICAgICAgICAgc2NlbmFyaW9UYWdzVWksXG4gICAgICAgICAgICAodGFnKSA9PiB0YWcudG9nZ2xlICYmICEhdGFnLmFjY2VwdGFibGVTdWJUYWdzPy5sZW5ndGgsXG4gICAgICAgICk7XG4gICAgICAgIGlmICh0YWdXaXRoU3BlY2lmaWNEYXRlVGFncykge1xuICAgICAgICAgICAgdGhpcy5oaWRlTm90QXZhaWxhYmxlVGFncyh0YWdXaXRoU3BlY2lmaWNEYXRlVGFncywgc2NlbmFyaW9UYWdzVWkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc29ydFNjZW5hcmlvVGFncyhzY2VuYXJpb1RhZ3NVaSk7XG4gICAgfVxuXG4gICAgcHVibGljIHRhZ05vdFN1cHBvcnRpbmdEYXRlc0hhbmRsZXI8VCBleHRlbmRzIElTY2VuYXJpb1RhZ1VpPih0YWc6IFQsIHRhZ05vdFN1cHBvcnRpbmdEYXRlczogVCwgZGF0ZVRhZzogVCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRhZ05vdFN1cHBvcnRpbmdEYXRlcyB8fCAhdGFnLnRvZ2dsZSkgcmV0dXJuO1xuXG4gICAgICAgIGlmICh0YWcudHlwZSA9PT0gVGFnVHlwZXMuREFURSkge1xuICAgICAgICAgICAgdGFnTm90U3VwcG9ydGluZ0RhdGVzLnRvZ2dsZSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRhZyA9PT0gdGFnTm90U3VwcG9ydGluZ0RhdGVzKSB7XG4gICAgICAgICAgICBpZiAoZGF0ZVRhZykge1xuICAgICAgICAgICAgICAgIGRhdGVUYWcudG9nZ2xlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdGFnQWNjZXB0YWJsZVN1YlRhZ3NIYW5kbGVyPFQgZXh0ZW5kcyBJU2NlbmFyaW9UYWdVaT4odGFnOiBULCBkYXRlVGFnOiBUKTogdm9pZCB7XG4gICAgICAgIGlmICghdGFnLmFjY2VwdGFibGVTdWJUYWdzPy5sZW5ndGgpIHJldHVybjtcblxuICAgICAgICBpZiAoIWRhdGVUYWcpIHJldHVybjtcblxuICAgICAgICBkYXRlVGFnLnN1YlRhZ3MgPSBfbWFwKGRhdGVUYWcuc3ViVGFncywgKHN1YlRhZykgPT4ge1xuICAgICAgICAgICAgc3ViVGFnLmhpZGRlbiA9IHRhZy50b2dnbGUgJiYgIV9pbmNsdWRlcyh0YWcuYWNjZXB0YWJsZVN1YlRhZ3MsIHN1YlRhZy5zdWJUeXBlKTtcbiAgICAgICAgICAgIHJldHVybiBzdWJUYWc7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRhdGVUYWcuc2VsZWN0ZWRUYWdTdWJUeXBlID0gdGFnLmFjY2VwdGFibGVTdWJUYWdzWzBdO1xuICAgIH1cblxuICAgIHB1YmxpYyBzb3J0U2NlbmFyaW9UYWdzKHNjZW5hcmlvVGFnc1VpOiBhbnlbXSk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIF9vcmRlckJ5KHNjZW5hcmlvVGFnc1VpLCBbKHRhZykgPT4gKHRhZy50eXBlID09PSBUYWdUeXBlcy5EQVRFID8gMCA6IDEpLCAodGFnKSA9PiB0YWcubmFtZSA9PT0gJ0ZpbGUgU3RhdHVzJ10pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc29ydGVkU3ViVGFncyh0YWc6IElTY2VuYXJpb1RhZ1VpKTogSVNjZW5hcmlvU3ViVGFnW10ge1xuICAgICAgICBjb25zdCBTVUJfVEFHU19PUkRFUiA9IFtcbiAgICAgICAgICAgIFRhZ3NDb25maWdTdWJUeXBlLkRBWSxcbiAgICAgICAgICAgIFRhZ3NDb25maWdTdWJUeXBlLldFRUssXG4gICAgICAgICAgICBUYWdzQ29uZmlnU3ViVHlwZS5NT05USCxcbiAgICAgICAgICAgIFRhZ3NDb25maWdTdWJUeXBlLlFVQVJURVIsXG4gICAgICAgICAgICBUYWdzQ29uZmlnU3ViVHlwZS5ZRUFSLFxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gX29yZGVyQnkodGFnLnN1YlRhZ3MsIChzdWJUYWcpID0+IF9pbmRleE9mKFNVQl9UQUdTX09SREVSLCBzdWJUYWcuc3ViVHlwZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEV4aXN0aW5nVGFnc0NvbmZpZyhzY2VuYXJpbzogU2NlbmFyaW8sIHNjZW5hcmlvVGFnc1VpOiBJU2NlbmFyaW9UYWdVaVtdKSB7XG4gICAgICAgIF9mb3JFYWNoKHRoaXMuY3VycmVudFRhZ3NDb25maWcsICh0YWdDb25maWcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ1N1YlR5cGUgPSB0YWdDb25maWc/Lm9wdGlvbnM/LnN1Yl90eXBlO1xuICAgICAgICAgICAgY29uc3Qgc2NlbmFyaW9UYWdEYXRhQ29uZmlnID0gZ2V0U2NlbmFyaW9UYWdEYXRhQ29uZmlnKHRoaXMuaXNNdWx0aXBsZURpbWVuc2lvbiwgdGhpcy5pc0ZvcmVjYXN0TXVsdGlwbGVEaW1lbnNpb24pO1xuICAgICAgICAgICAgaWYgKCFzY2VuYXJpb1RhZ0RhdGFDb25maWcgfHwgIXNjZW5hcmlvVGFnRGF0YUNvbmZpZ1tzY2VuYXJpb10gfHwgIXNjZW5hcmlvVGFnRGF0YUNvbmZpZ1tzY2VuYXJpb11bdGFnU3ViVHlwZV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNjZW5hcmlvVGFnVWkgPVxuICAgICAgICAgICAgICAgIHRhZ0NvbmZpZy50eXBlID09PSBUYWdUeXBlcy5EQVRFXG4gICAgICAgICAgICAgICAgICAgID8gX2ZpbmQoc2NlbmFyaW9UYWdzVWksIHsgdHlwZTogdGFnQ29uZmlnLnR5cGUgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBfZmluZChzY2VuYXJpb1RhZ3NVaSwgeyBzZWxlY3RlZFRhZ1N1YlR5cGU6IHRhZ1N1YlR5cGUgfSk7XG5cbiAgICAgICAgICAgIGlmIChzY2VuYXJpb1RhZ1VpKSB7XG4gICAgICAgICAgICAgICAgc2NlbmFyaW9UYWdVaS50b2dnbGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNjZW5hcmlvVGFnVWkuc2VsZWN0ZWRUYWdTdWJUeXBlID0gdGFnU3ViVHlwZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcmVwYXJlU2NlbmFyaW9UYWcoXG4gICAgICAgIHNjZW5hcmlvVGFnc0NvbmZpZzogSVNjZW5hcmlvVGFnW10sXG4gICAgICAgIHNjZW5hcmlvVGFnOiBJU2NlbmFyaW9UYWcsXG4gICAgICAgIHNjZW5hcmlvOiBTY2VuYXJpbyxcbiAgICAgICAgaXNEYXRlVGFnOiBib29sZWFuLFxuICAgICk6IElTY2VuYXJpb1RhZ1VpIHtcbiAgICAgICAgY29uc3QgdG9nZ2xlU3RhdHVzID0gaXNEYXRlVGFnXG4gICAgICAgICAgICA/IF9zb21lKHNjZW5hcmlvVGFnc0NvbmZpZywgKHRhZykgPT4gdGFnLnR5cGUgPT09IFRhZ1R5cGVzLkRBVEUgJiYgdGFnLnNjZW5hcmlvRGF0YS50b2dnbGUpXG4gICAgICAgICAgICA6IHNjZW5hcmlvVGFnLnNjZW5hcmlvRGF0YS50b2dnbGU7XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRUYWdTdWJUeXBlID0gaXNEYXRlVGFnXG4gICAgICAgICAgICA/IHRoaXMuZ2V0U2NlbmFyaW9TZWxlY3RlZERhdGVUYWcoc2NlbmFyaW8sIHNjZW5hcmlvVGFnc0NvbmZpZylcbiAgICAgICAgICAgIDogc2NlbmFyaW9UYWcub3B0aW9ucy5zdWJfdHlwZTtcblxuICAgICAgICBjb25zdCB0YWc6IElTY2VuYXJpb1RhZ1VpID0ge1xuICAgICAgICAgICAgdG9nZ2xlOiB0aGlzLmFyZUV4aXN0aW5nVGFnc0NvbmZpZyA/IGZhbHNlIDogdG9nZ2xlU3RhdHVzLFxuICAgICAgICAgICAgbmFtZTogc2NlbmFyaW9UYWcuc2NlbmFyaW9EYXRhLm5hbWUgfHwgc2NlbmFyaW9UYWcubmFtZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzY2VuYXJpb1RhZy5zY2VuYXJpb0RhdGEuZGVzY3JpcHRpb24gfHwgc2NlbmFyaW9UYWcuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB0eXBlOiBzY2VuYXJpb1RhZy50eXBlLFxuICAgICAgICAgICAgc2VsZWN0ZWRUYWdTdWJUeXBlLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChzY2VuYXJpb1RhZy5zY2VuYXJpb0RhdGEudHVybk9mZkRhdGVUYWdzKSB7XG4gICAgICAgICAgICB0YWcudHVybk9mZkRhdGVUYWdzID0gc2NlbmFyaW9UYWcuc2NlbmFyaW9EYXRhLnR1cm5PZmZEYXRlVGFncztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzY2VuYXJpb1RhZy5zY2VuYXJpb0RhdGEuYWNjZXB0YWJsZVN1YlRhZ3MpIHtcbiAgICAgICAgICAgIHRhZy5hY2NlcHRhYmxlU3ViVGFncyA9IHNjZW5hcmlvVGFnLnNjZW5hcmlvRGF0YS5hY2NlcHRhYmxlU3ViVGFncztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YWc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTY2VuYXJpb1N1YlRhZ3ModGFnOiBJU2NlbmFyaW9UYWdVaSwgc2NlbmFyaW9UYWc6IElTY2VuYXJpb1RhZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRhZy5zdWJUYWdzKSB7XG4gICAgICAgICAgICB0YWcuc3ViVGFncyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFnU3ViVHlwZSA9IHNjZW5hcmlvVGFnLm9wdGlvbnMuc3ViX3R5cGU7XG5cbiAgICAgICAgdGFnLnN1YlRhZ3MucHVzaCh7XG4gICAgICAgICAgICBzdWJUeXBlOiB0YWdTdWJUeXBlLFxuICAgICAgICAgICAgbmFtZTogdGFnU3ViVHlwZSA9PT0gVGFnc0NvbmZpZ1N1YlR5cGUuRk9SRUNBU1RfTkVXID8gdGhpcy5ERUZBVUxUX0ZPUkVDQVNUX0RBVEVfVEFHIDogc2NlbmFyaW9UYWcubmFtZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0dXJuT2ZmRGF0ZVRhZyhzY2VuYXJpb1RhZ3M6IElTY2VuYXJpb1RhZ1VpW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGF0ZVRhZyA9IF9maW5kKHNjZW5hcmlvVGFncywgeyB0eXBlOiBUYWdUeXBlcy5EQVRFIH0pO1xuXG4gICAgICAgIGlmICghZGF0ZVRhZykgcmV0dXJuO1xuICAgICAgICBkYXRlVGFnLnRvZ2dsZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZU5vdEF2YWlsYWJsZVRhZ3ModGFnV2l0aFNwZWNpZmljRGF0ZVRhZ3M6IElTY2VuYXJpb1RhZ1VpLCBzY2VuYXJpb1RhZ3M6IElTY2VuYXJpb1RhZ1VpW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3ViVGFncyA9IF9maW5kKHNjZW5hcmlvVGFncywgeyB0eXBlOiBUYWdUeXBlcy5EQVRFIH0pPy5zdWJUYWdzO1xuICAgICAgICBpZiAoIXN1YlRhZ3MubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgICAgX2ZvckVhY2goc2NlbmFyaW9UYWdzLCAodGFnKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRhZy5hY2NlcHRhYmxlU3ViVGFncz8ubGVuZ3RoKSByZXR1cm47XG4gICAgICAgICAgICBpZiAodGFnICE9PSB0YWdXaXRoU3BlY2lmaWNEYXRlVGFncykge1xuICAgICAgICAgICAgICAgIHRhZy50b2dnbGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgX2ZvckVhY2goc3ViVGFncywgKHN1YlRhZykgPT4ge1xuICAgICAgICAgICAgc3ViVGFnLmhpZGRlbiA9ICF0YWdXaXRoU3BlY2lmaWNEYXRlVGFncy5hY2NlcHRhYmxlU3ViVGFncy5pbmNsdWRlcyhzdWJUYWcuc3ViVHlwZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2NlbmFyaW9TZWxlY3RlZERhdGVUYWcoc2NlbmFyaW86IFNjZW5hcmlvLCBkYXRlVGFnczogSVNjZW5hcmlvVGFnW10pOiBUYWdzQ29uZmlnU3ViVHlwZSB7XG4gICAgICAgIGNvbnN0IG1vbnRoU3ViVHlwZSA9IF9maW5kKGRhdGVUYWdzLCAodGFnOiBJU2NlbmFyaW9UYWcpID0+IHRhZy5vcHRpb25zLnN1Yl90eXBlID09PSBUYWdzQ29uZmlnU3ViVHlwZS5NT05USCk/Lm9wdGlvbnNcbiAgICAgICAgICAgID8uc3ViX3R5cGU7XG5cbiAgICAgICAgY29uc3Qgc2NlbmFyaW9TZWxlY3RlZERhdGVUYWcgPSB7XG4gICAgICAgICAgICBbU2NlbmFyaW8uQUNUVUFMU106ICgpID0+IG1vbnRoU3ViVHlwZSxcbiAgICAgICAgICAgIFtTY2VuYXJpby5CVURHRVRdOiAoKSA9PlxuICAgICAgICAgICAgICAgIF9maW5kKGRhdGVUYWdzLCAodGFnOiBJU2NlbmFyaW9UYWcpID0+IHRhZy5vcHRpb25zLnN1Yl90eXBlID09PSBUYWdzQ29uZmlnU3ViVHlwZS5ZRUFSKT8ub3B0aW9ucz8uc3ViX3R5cGUsXG4gICAgICAgICAgICBbU2NlbmFyaW8uRk9SRUNBU1RdOiAoKSA9PlxuICAgICAgICAgICAgICAgIF9maW5kKGRhdGVUYWdzLCAodGFnOiBJU2NlbmFyaW9UYWcpID0+IHRhZy5vcHRpb25zLnN1Yl90eXBlID09PSBUYWdzQ29uZmlnU3ViVHlwZS5GT1JFQ0FTVF9ORVcpPy5vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgID8uc3ViX3R5cGUsXG4gICAgICAgICAgICBbU2NlbmFyaW8uTk9ORV06ICgpID0+IG1vbnRoU3ViVHlwZSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoIXNjZW5hcmlvU2VsZWN0ZWREYXRlVGFnW3NjZW5hcmlvXSkgcmV0dXJuO1xuICAgICAgICByZXR1cm4gc2NlbmFyaW9TZWxlY3RlZERhdGVUYWdbc2NlbmFyaW9dKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTY2VuYXJpb1RhZ3NDb25maWcoc2NlbmFyaW86IFNjZW5hcmlvLCB0YWdzQ29uZmlnOiBJVGFnW10pOiBJU2NlbmFyaW9UYWdbXSB7XG4gICAgICAgIHJldHVybiBfcmVkdWNlKFxuICAgICAgICAgICAgdGFnc0NvbmZpZyxcbiAgICAgICAgICAgIChhY2M6IElTY2VuYXJpb1RhZ1tdLCB0YWdDb25maWc6IElUYWcpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YWdTdWJUeXBlID0gdGFnQ29uZmlnPy5vcHRpb25zPy5zdWJfdHlwZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNjZW5hcmlvVGFnRGF0YUNvbmZpZyA9IGdldFNjZW5hcmlvVGFnRGF0YUNvbmZpZyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc011bHRpcGxlRGltZW5zaW9uLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRm9yZWNhc3RNdWx0aXBsZURpbWVuc2lvbixcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjZW5hcmlvVGFnQ29uZmlnOiBJU2NlbmFyaW8gPVxuICAgICAgICAgICAgICAgICAgICBzY2VuYXJpb1RhZ0RhdGFDb25maWcgJiYgc2NlbmFyaW9UYWdEYXRhQ29uZmlnW3NjZW5hcmlvXSA/IHNjZW5hcmlvVGFnRGF0YUNvbmZpZ1tzY2VuYXJpb11bdGFnU3ViVHlwZV0gOiBudWxsO1xuICAgICAgICAgICAgICAgIGlmICghc2NlbmFyaW9UYWdDb25maWcgfHwgc2NlbmFyaW9UYWdDb25maWcuaGlkZGVuKSByZXR1cm4gYWNjO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvbmVkVGFnQ29uZmlnID0gX2Nsb25lRGVlcCh0YWdDb25maWcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjZW5hcmlvVGFnOiBJU2NlbmFyaW9UYWcgPSB7IC4uLmNsb25lZFRhZ0NvbmZpZywgc2NlbmFyaW9EYXRhOiBzY2VuYXJpb1RhZ0NvbmZpZyB9O1xuXG4gICAgICAgICAgICAgICAgYWNjLnB1c2goc2NlbmFyaW9UYWcpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW10sXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { TagsConfigSubType, TagTypes } from '../../models/serverTags';
|
|
3
|
+
import { find as _find, reduce as _reduce, some as _some } from 'lodash';
|
|
4
|
+
import { ScenarioService } from './scenario.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class TagsConstructorService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.tagsNotSupportingDatesTag = [TagsConfigSubType.PLAN];
|
|
9
|
+
this.tagsAcceptableSubTags = {
|
|
10
|
+
[TagsConfigSubType.BUDGET_CYCLE]: [TagsConfigSubType.YEAR],
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
buildTags(tagsConfigToDisplay, selectedTagsConfig) {
|
|
14
|
+
return _reduce(tagsConfigToDisplay, (acc, tagConfig) => {
|
|
15
|
+
const isTagWithSubTags = tagConfig.type === TagTypes.DATE && tagConfig.options.sub_type !== TagsConfigSubType.FORECAST_NEW;
|
|
16
|
+
const tagWithSubTags = isTagWithSubTags && _find(acc, { type: tagConfig.type });
|
|
17
|
+
const tag = tagWithSubTags || this.prepareTag(tagConfig, selectedTagsConfig, isTagWithSubTags);
|
|
18
|
+
if (isTagWithSubTags) {
|
|
19
|
+
this.updateSubTags(tag, tagConfig, selectedTagsConfig);
|
|
20
|
+
tag.subTags = ScenarioService.sortedSubTags(tag);
|
|
21
|
+
}
|
|
22
|
+
if (tagWithSubTags)
|
|
23
|
+
return acc;
|
|
24
|
+
acc.push(tag);
|
|
25
|
+
return acc;
|
|
26
|
+
}, []);
|
|
27
|
+
}
|
|
28
|
+
updateSubTags(tag, tagConfig, selectedTagsConfig) {
|
|
29
|
+
const tagSubType = tagConfig.options.sub_type;
|
|
30
|
+
if (tagSubType === TagsConfigSubType.FORECAST_NEW)
|
|
31
|
+
return;
|
|
32
|
+
if (!tag.subTags) {
|
|
33
|
+
tag.subTags = [];
|
|
34
|
+
}
|
|
35
|
+
tag.name = 'Date';
|
|
36
|
+
const enabledTagSubType = _find(selectedTagsConfig, (_tagConfig) => _tagConfig.options.sub_type === tagSubType)?.options
|
|
37
|
+
?.sub_type;
|
|
38
|
+
tag.toggle = !!enabledTagSubType || tag.toggle;
|
|
39
|
+
if (tag.toggle && enabledTagSubType) {
|
|
40
|
+
tag.selectedTagSubType = tagSubType;
|
|
41
|
+
}
|
|
42
|
+
tag.subTags.push({
|
|
43
|
+
subType: tagSubType,
|
|
44
|
+
name: tagConfig.name,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
prepareTag(tagConfig, selectedTagsConfig, isTagWithSubTags) {
|
|
48
|
+
const selectedTagSubType = isTagWithSubTags ? TagsConfigSubType.MONTH : tagConfig.options.sub_type;
|
|
49
|
+
const toggleStatus = _some(selectedTagsConfig, (_tagConfig) => _tagConfig.options.sub_type === selectedTagSubType);
|
|
50
|
+
const tag = {
|
|
51
|
+
toggle: toggleStatus,
|
|
52
|
+
name: tagConfig.name,
|
|
53
|
+
description: tagConfig.description,
|
|
54
|
+
type: tagConfig.type,
|
|
55
|
+
selectedTagSubType,
|
|
56
|
+
};
|
|
57
|
+
if (this.tagsNotSupportingDatesTag.includes(selectedTagSubType)) {
|
|
58
|
+
tag.turnOffDateTags = true;
|
|
59
|
+
}
|
|
60
|
+
if (this.tagsAcceptableSubTags[selectedTagSubType]) {
|
|
61
|
+
tag.acceptableSubTags = this.tagsAcceptableSubTags[selectedTagSubType];
|
|
62
|
+
}
|
|
63
|
+
return tag;
|
|
64
|
+
}
|
|
65
|
+
/** @nocollapse */ static { this.ɵfac = function TagsConstructorService_Factory(t) { return new (t || TagsConstructorService)(); }; }
|
|
66
|
+
/** @nocollapse */ static { this.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: TagsConstructorService, factory: TagsConstructorService.ɵfac }); }
|
|
67
|
+
}
|
|
68
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TagsConstructorService, [{
|
|
69
|
+
type: Injectable
|
|
70
|
+
}], null, null); })();
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy1jb25zdHJ1Y3Rvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItdGFncy9fc2VydmljZXMvdGFncy1jb25zdHJ1Y3Rvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFRLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sSUFBSSxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBSXJELE1BQU0sT0FBTyxzQkFBc0I7SUFEbkM7UUFFcUIsOEJBQXlCLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCwwQkFBcUIsR0FBRztZQUNyQyxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDO1NBQzdELENBQUM7S0F3RUw7SUF0RVUsU0FBUyxDQUFDLG1CQUEyQixFQUFFLGtCQUEwQjtRQUNwRSxPQUFPLE9BQU8sQ0FDVixtQkFBbUIsRUFDbkIsQ0FBQyxHQUFHLEVBQUUsU0FBZSxFQUFFLEVBQUU7WUFDckIsTUFBTSxnQkFBZ0IsR0FDbEIsU0FBUyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLGlCQUFpQixDQUFDLFlBQVksQ0FBQztZQUN0RyxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FB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Y0FEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElUYWcsIFRhZ3NDb25maWdTdWJUeXBlLCBUYWdUeXBlcyB9IGZyb20gJy4uLy4uL21vZGVscy9zZXJ2ZXJUYWdzJztcbmltcG9ydCB7IGZpbmQgYXMgX2ZpbmQsIHJlZHVjZSBhcyBfcmVkdWNlLCBzb21lIGFzIF9zb21lIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFNjZW5hcmlvU2VydmljZSB9IGZyb20gJy4vc2NlbmFyaW8uc2VydmljZSc7XG5pbXBvcnQgeyBJU2NlbmFyaW9UYWdVaSB9IGZyb20gJy4uL19pbnRlcmZhY2VzL3NjZW5hcmlvJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhZ3NDb25zdHJ1Y3RvclNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFnc05vdFN1cHBvcnRpbmdEYXRlc1RhZyA9IFtUYWdzQ29uZmlnU3ViVHlwZS5QTEFOXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhZ3NBY2NlcHRhYmxlU3ViVGFncyA9IHtcbiAgICAgICAgW1RhZ3NDb25maWdTdWJUeXBlLkJVREdFVF9DWUNMRV06IFtUYWdzQ29uZmlnU3ViVHlwZS5ZRUFSXSxcbiAgICB9O1xuXG4gICAgcHVibGljIGJ1aWxkVGFncyh0YWdzQ29uZmlnVG9EaXNwbGF5OiBJVGFnW10sIHNlbGVjdGVkVGFnc0NvbmZpZzogSVRhZ1tdKTogSVNjZW5hcmlvVGFnVWlbXSB7XG4gICAgICAgIHJldHVybiBfcmVkdWNlKFxuICAgICAgICAgICAgdGFnc0NvbmZpZ1RvRGlzcGxheSxcbiAgICAgICAgICAgIChhY2MsIHRhZ0NvbmZpZzogSVRhZykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzVGFnV2l0aFN1YlRhZ3MgPVxuICAgICAgICAgICAgICAgICAgICB0YWdDb25maWcudHlwZSA9PT0gVGFnVHlwZXMuREFURSAmJiB0YWdDb25maWcub3B0aW9ucy5zdWJfdHlwZSAhPT0gVGFnc0NvbmZpZ1N1YlR5cGUuRk9SRUNBU1RfTkVXO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhZ1dpdGhTdWJUYWdzID0gaXNUYWdXaXRoU3ViVGFncyAmJiBfZmluZChhY2MsIHsgdHlwZTogdGFnQ29uZmlnLnR5cGUgfSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0YWcgPSB0YWdXaXRoU3ViVGFncyB8fCB0aGlzLnByZXBhcmVUYWcodGFnQ29uZmlnLCBzZWxlY3RlZFRhZ3NDb25maWcsIGlzVGFnV2l0aFN1YlRhZ3MpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzVGFnV2l0aFN1YlRhZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdWJUYWdzKHRhZywgdGFnQ29uZmlnLCBzZWxlY3RlZFRhZ3NDb25maWcpO1xuICAgICAgICAgICAgICAgICAgICB0YWcuc3ViVGFncyA9IFNjZW5hcmlvU2VydmljZS5zb3J0ZWRTdWJUYWdzKHRhZyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRhZ1dpdGhTdWJUYWdzKSByZXR1cm4gYWNjO1xuXG4gICAgICAgICAgICAgICAgYWNjLnB1c2godGFnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU3ViVGFncyh0YWc6IElTY2VuYXJpb1RhZ1VpLCB0YWdDb25maWc6IElUYWcsIHNlbGVjdGVkVGFnc0NvbmZpZzogSVRhZ1tdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhZ1N1YlR5cGUgPSB0YWdDb25maWcub3B0aW9ucy5zdWJfdHlwZTtcbiAgICAgICAgaWYgKHRhZ1N1YlR5cGUgPT09IFRhZ3NDb25maWdTdWJUeXBlLkZPUkVDQVNUX05FVykgcmV0dXJuO1xuXG4gICAgICAgIGlmICghdGFnLnN1YlRhZ3MpIHtcbiAgICAgICAgICAgIHRhZy5zdWJUYWdzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICB0YWcubmFtZSA9ICdEYXRlJztcblxuICAgICAgICBjb25zdCBlbmFibGVkVGFnU3ViVHlwZSA9IF9maW5kKHNlbGVjdGVkVGFnc0NvbmZpZywgKF90YWdDb25maWcpID0+IF90YWdDb25maWcub3B0aW9ucy5zdWJfdHlwZSA9PT0gdGFnU3ViVHlwZSk/Lm9wdGlvbnNcbiAgICAgICAgICAgID8uc3ViX3R5cGU7XG4gICAgICAgIHRhZy50b2dnbGUgPSAhIWVuYWJsZWRUYWdTdWJUeXBlIHx8IHRhZy50b2dnbGU7XG5cbiAgICAgICAgaWYgKHRhZy50b2dnbGUgJiYgZW5hYmxlZFRhZ1N1YlR5cGUpIHtcbiAgICAgICAgICAgIHRhZy5zZWxlY3RlZFRhZ1N1YlR5cGUgPSB0YWdTdWJUeXBlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGFnLnN1YlRhZ3MucHVzaCh7XG4gICAgICAgICAgICBzdWJUeXBlOiB0YWdTdWJUeXBlLFxuICAgICAgICAgICAgbmFtZTogdGFnQ29uZmlnLm5hbWUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJlcGFyZVRhZyh0YWdDb25maWc6IElUYWcsIHNlbGVjdGVkVGFnc0NvbmZpZzogSVRhZ1tdLCBpc1RhZ1dpdGhTdWJUYWdzOiBib29sZWFuKTogSVNjZW5hcmlvVGFnVWkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFRhZ1N1YlR5cGUgPSBpc1RhZ1dpdGhTdWJUYWdzID8gVGFnc0NvbmZpZ1N1YlR5cGUuTU9OVEggOiB0YWdDb25maWcub3B0aW9ucy5zdWJfdHlwZTtcbiAgICAgICAgY29uc3QgdG9nZ2xlU3RhdHVzID0gX3NvbWUoc2VsZWN0ZWRUYWdzQ29uZmlnLCAoX3RhZ0NvbmZpZykgPT4gX3RhZ0NvbmZpZy5vcHRpb25zLnN1Yl90eXBlID09PSBzZWxlY3RlZFRhZ1N1YlR5cGUpO1xuXG4gICAgICAgIGNvbnN0IHRhZzogSVNjZW5hcmlvVGFnVWkgPSB7XG4gICAgICAgICAgICB0b2dnbGU6IHRvZ2dsZVN0YXR1cyxcbiAgICAgICAgICAgIG5hbWU6IHRhZ0NvbmZpZy5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRhZ0NvbmZpZy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHR5cGU6IHRhZ0NvbmZpZy50eXBlLFxuICAgICAgICAgICAgc2VsZWN0ZWRUYWdTdWJUeXBlLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLnRhZ3NOb3RTdXBwb3J0aW5nRGF0ZXNUYWcuaW5jbHVkZXMoc2VsZWN0ZWRUYWdTdWJUeXBlKSkge1xuICAgICAgICAgICAgdGFnLnR1cm5PZmZEYXRlVGFncyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50YWdzQWNjZXB0YWJsZVN1YlRhZ3Nbc2VsZWN0ZWRUYWdTdWJUeXBlXSkge1xuICAgICAgICAgICAgdGFnLmFjY2VwdGFibGVTdWJUYWdzID0gdGhpcy50YWdzQWNjZXB0YWJsZVN1YlRhZ3Nbc2VsZWN0ZWRUYWdTdWJUeXBlXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YWc7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class AnyTagComponent {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.dateChange = new EventEmitter();
|
|
6
|
+
this.name = undefined;
|
|
7
|
+
this.defaultValue = undefined;
|
|
8
|
+
this.dateObj = { date: undefined };
|
|
9
|
+
}
|
|
10
|
+
ngOnInit() {
|
|
11
|
+
this.initDate();
|
|
12
|
+
this.initName();
|
|
13
|
+
this.chosenTagHandler(this.dateObj.date);
|
|
14
|
+
}
|
|
15
|
+
initDate() { }
|
|
16
|
+
initName() { }
|
|
17
|
+
changeInputHandler(event) {
|
|
18
|
+
const input = event.target;
|
|
19
|
+
this.chosenTagHandler(input.value);
|
|
20
|
+
}
|
|
21
|
+
chosenTagHandler(value) {
|
|
22
|
+
// need implement in all tags
|
|
23
|
+
}
|
|
24
|
+
/** @nocollapse */ static { this.ɵfac = function AnyTagComponent_Factory(t) { return new (t || AnyTagComponent)(); }; }
|
|
25
|
+
/** @nocollapse */ static { this.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: AnyTagComponent, selectors: [["any-tag"]], inputs: { name: "name", defaultValue: "defaultValue", disabled: "disabled" }, outputs: { dateChange: "dateChange" }, decls: 0, vars: 0, template: function AnyTagComponent_Template(rf, ctx) { }, encapsulation: 2 }); }
|
|
26
|
+
}
|
|
27
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AnyTagComponent, [{
|
|
28
|
+
type: Component,
|
|
29
|
+
args: [{
|
|
30
|
+
template: ``,
|
|
31
|
+
selector: 'any-tag',
|
|
32
|
+
}]
|
|
33
|
+
}], function () { return []; }, { dateChange: [{
|
|
34
|
+
type: Output
|
|
35
|
+
}], name: [{
|
|
36
|
+
type: Input
|
|
37
|
+
}], defaultValue: [{
|
|
38
|
+
type: Input
|
|
39
|
+
}], disabled: [{
|
|
40
|
+
type: Input
|
|
41
|
+
}] }); })();
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW55LXRhZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci10YWdzL2RyLXRhZy9kci10YWctZGF0ZS9hbnktdGFnLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU8vRSxNQUFNLE9BQU8sZUFBZTtJQU14QjtRQUxVLGVBQVUsR0FBMkIsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUNuRSxTQUFJLEdBQXVCLFNBQVMsQ0FBQztRQUNyQyxpQkFBWSxHQUF1QixTQUFTLENBQUM7UUFFdEQsWUFBTyxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUNoQixRQUFRO1FBQ0osSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsUUFBUSxLQUFJLENBQUM7SUFDYixRQUFRLEtBQUksQ0FBQztJQUNiLGtCQUFrQixDQUFDLEtBQVk7UUFDM0IsTUFBTSxLQUFLLEdBQXVDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDL0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsS0FBSztRQUNsQiw2QkFBNkI7SUFDakMsQ0FBQzttR0FwQlEsZUFBZTttR0FBZixlQUFlOzt1RkFBZixlQUFlO2NBSjNCLFNBQVM7ZUFBQztnQkFDUCxRQUFRLEVBQUUsRUFBRTtnQkFDWixRQUFRLEVBQUUsU0FBUzthQUN0QjtzQ0FFYSxVQUFVO2tCQUFuQixNQUFNO1lBQ0UsSUFBSTtrQkFBWixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJRGF0ZVRhZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9zZXJ2ZXJUYWdzJztcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGU6IGBgLFxuICAgIHNlbGVjdG9yOiAnYW55LXRhZycsXG59KVxuZXhwb3J0IGNsYXNzIEFueVRhZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQE91dHB1dCgpIGRhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJRGF0ZVRhZz4gPSBuZXcgRXZlbnRFbWl0dGVyPElEYXRlVGFnPigpO1xuICAgIEBJbnB1dCgpIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBkZWZhdWx0VmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICBkYXRlT2JqID0geyBkYXRlOiB1bmRlZmluZWQgfTtcbiAgICBjb25zdHJ1Y3RvcigpIHt9XG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaW5pdERhdGUoKTtcbiAgICAgICAgdGhpcy5pbml0TmFtZSgpO1xuICAgICAgICB0aGlzLmNob3NlblRhZ0hhbmRsZXIodGhpcy5kYXRlT2JqLmRhdGUpO1xuICAgIH1cbiAgICBpbml0RGF0ZSgpIHt9XG4gICAgaW5pdE5hbWUoKSB7fVxuICAgIGNoYW5nZUlucHV0SGFuZGxlcihldmVudDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQgPSA8SFRNTElucHV0RWxlbWVudD5ldmVudC50YXJnZXQ7XG4gICAgICAgIHRoaXMuY2hvc2VuVGFnSGFuZGxlcihpbnB1dC52YWx1ZSk7XG4gICAgfVxuICAgIGNob3NlblRhZ0hhbmRsZXIodmFsdWUpIHtcbiAgICAgICAgLy8gbmVlZCBpbXBsZW1lbnQgaW4gYWxsIHRhZ3NcbiAgICB9XG59XG4iXX0=
|