myrtex-mf-competition 1.0.1

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 (48) hide show
  1. package/README.md +14 -0
  2. package/esm2020/lib/modules/competition-header/competition-header.module.mjs +69 -0
  3. package/esm2020/lib/modules/competition-header/components/competition-header.component.mjs +448 -0
  4. package/esm2020/lib/modules/competition-header/constants.mjs +2 -0
  5. package/esm2020/lib/modules/competition-header/directives/competition-header-custom-buttons.directive.mjs +16 -0
  6. package/esm2020/lib/modules/competition-header/directives/index.mjs +2 -0
  7. package/esm2020/lib/modules/competition-header/enums/cancel-competition-type.enum.mjs +7 -0
  8. package/esm2020/lib/modules/competition-header/enums/competition-version-status.enum.mjs +26 -0
  9. package/esm2020/lib/modules/competition-header/index.mjs +6 -0
  10. package/esm2020/lib/modules/competition-header/models/competition-header-version.model.mjs +2 -0
  11. package/esm2020/lib/modules/competition-header/models/competition-rejection.model.mjs +2 -0
  12. package/esm2020/lib/modules/competition-header/models/competition-status.model.mjs +2 -0
  13. package/esm2020/lib/modules/competition-header/models/competition-version.model.mjs +2 -0
  14. package/esm2020/lib/modules/competition-header/models/index.mjs +2 -0
  15. package/esm2020/lib/modules/competition-header/services/competition-header.service.mjs +40 -0
  16. package/esm2020/lib/modules/competition-header/store/competition-header.actions.mjs +37 -0
  17. package/esm2020/lib/modules/competition-header/store/competition-header.effects.mjs +89 -0
  18. package/esm2020/lib/modules/competition-header/store/competition-header.reducers.mjs +30 -0
  19. package/esm2020/lib/modules/competition-header/store/competition-header.selector.mjs +13 -0
  20. package/esm2020/lib/modules/competition-header/store/competition-header.state.mjs +8 -0
  21. package/esm2020/myrtex-mf-competition.mjs +5 -0
  22. package/esm2020/public-api.mjs +6 -0
  23. package/fesm2015/myrtex-mf-competition.mjs +765 -0
  24. package/fesm2015/myrtex-mf-competition.mjs.map +1 -0
  25. package/fesm2020/myrtex-mf-competition.mjs +757 -0
  26. package/fesm2020/myrtex-mf-competition.mjs.map +1 -0
  27. package/lib/modules/competition-header/competition-header.module.d.ts +15 -0
  28. package/lib/modules/competition-header/components/competition-header.component.d.ts +83 -0
  29. package/lib/modules/competition-header/constants.d.ts +1 -0
  30. package/lib/modules/competition-header/directives/competition-header-custom-buttons.directive.d.ts +8 -0
  31. package/lib/modules/competition-header/directives/index.d.ts +1 -0
  32. package/lib/modules/competition-header/enums/cancel-competition-type.enum.d.ts +5 -0
  33. package/lib/modules/competition-header/enums/competition-version-status.enum.d.ts +14 -0
  34. package/lib/modules/competition-header/index.d.ts +5 -0
  35. package/lib/modules/competition-header/models/competition-header-version.model.d.ts +10 -0
  36. package/lib/modules/competition-header/models/competition-rejection.model.d.ts +5 -0
  37. package/lib/modules/competition-header/models/competition-status.model.d.ts +6 -0
  38. package/lib/modules/competition-header/models/competition-version.model.d.ts +11 -0
  39. package/lib/modules/competition-header/models/index.d.ts +1 -0
  40. package/lib/modules/competition-header/services/competition-header.service.d.ts +21 -0
  41. package/lib/modules/competition-header/store/competition-header.actions.d.ts +78 -0
  42. package/lib/modules/competition-header/store/competition-header.effects.d.ts +43 -0
  43. package/lib/modules/competition-header/store/competition-header.reducers.d.ts +3 -0
  44. package/lib/modules/competition-header/store/competition-header.selector.d.ts +6 -0
  45. package/lib/modules/competition-header/store/competition-header.state.d.ts +10 -0
  46. package/myrtex-mf-competition.d.ts +5 -0
  47. package/package.json +33 -0
  48. package/public-api.d.ts +2 -0
@@ -0,0 +1,765 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Directive, EventEmitter, Component, ContentChild, Input, Output, Injectable, NgModule } from '@angular/core';
3
+ import * as i5 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import * as i2$1 from '@ngrx/effects';
6
+ import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
7
+ import * as i2 from '@ngrx/store';
8
+ import { createAction, props, createFeatureSelector, createSelector, select, createReducer, on, StoreModule } from '@ngrx/store';
9
+ import * as i3 from 'myrtex-mf-ui-composite';
10
+ import { selectCompetitionIdAndVersionId, UnSubscriber, CompetitionStatusEnum, CompetitionStatusEnumLabel, CompetitionModeEnum, selectCompetitionLabel, selectCompetitionConfig, DialogColor, DialogType, EndpointBaseService, selectCompetitionId, MessageSeverity, Utilities, TenantSettingsModule, MyrtexUiComponentsModule, MyrtexMfUiCompositeModule } from 'myrtex-mf-ui-composite';
11
+ import * as i1 from 'myrtex-mf-signer';
12
+ import { MyrtexSignerModule } from 'myrtex-mf-signer';
13
+ import * as i4 from '@ng-select/ng-select';
14
+ import { NgSelectModule } from '@ng-select/ng-select';
15
+ import * as i6 from '@angular/forms';
16
+ import { FormsModule } from '@angular/forms';
17
+ import { EMPTY } from 'rxjs';
18
+ import { withLatestFrom, switchMap, map, catchError, tap } from 'rxjs/operators';
19
+ import * as i1$1 from '@angular/common/http';
20
+
21
+ var CompetitionVersionStatusEnum;
22
+ (function (CompetitionVersionStatusEnum) {
23
+ CompetitionVersionStatusEnum[CompetitionVersionStatusEnum["Draft"] = 0] = "Draft";
24
+ CompetitionVersionStatusEnum[CompetitionVersionStatusEnum["Validation"] = 1] = "Validation";
25
+ CompetitionVersionStatusEnum[CompetitionVersionStatusEnum["Confirmed"] = 2] = "Confirmed";
26
+ CompetitionVersionStatusEnum[CompetitionVersionStatusEnum["Active"] = 5] = "Active";
27
+ CompetitionVersionStatusEnum[CompetitionVersionStatusEnum["Used"] = 6] = "Used";
28
+ CompetitionVersionStatusEnum[CompetitionVersionStatusEnum["Rejected"] = 10] = "Rejected";
29
+ })(CompetitionVersionStatusEnum || (CompetitionVersionStatusEnum = {}));
30
+ const CompetitionVersionStatusEnumLabel = {
31
+ [CompetitionVersionStatusEnum.Draft]: 'черновик',
32
+ [CompetitionVersionStatusEnum.Validation]: 'на согласовании',
33
+ [CompetitionVersionStatusEnum.Confirmed]: 'утверждено',
34
+ [CompetitionVersionStatusEnum.Active]: 'опубликовано',
35
+ [CompetitionVersionStatusEnum.Used]: 'в архиве',
36
+ [CompetitionVersionStatusEnum.Rejected]: 'отклонено',
37
+ };
38
+ const CompetitionVersionStatusGrouppingLabel = {
39
+ [CompetitionVersionStatusEnum.Draft]: 'не опубликовано',
40
+ [CompetitionVersionStatusEnum.Validation]: 'не опубликовано',
41
+ [CompetitionVersionStatusEnum.Confirmed]: 'не опубликовано',
42
+ [CompetitionVersionStatusEnum.Active]: 'опубликовано',
43
+ [CompetitionVersionStatusEnum.Used]: 'в архиве',
44
+ [CompetitionVersionStatusEnum.Rejected]: 'не опубликовано',
45
+ };
46
+
47
+ var ECompetitionHeaderActions;
48
+ (function (ECompetitionHeaderActions) {
49
+ ECompetitionHeaderActions["LoadCompetitionHeader"] = "[Competition] Load Header";
50
+ ECompetitionHeaderActions["LoadCompetitionHeaderSuccess"] = "[Competition] Load Header Success";
51
+ ECompetitionHeaderActions["DeleteCompetitionVersion"] = "[Competition] Delete Version";
52
+ ECompetitionHeaderActions["DeleteCompetitionVersionSuccess"] = "[Competition] Delete Version Success";
53
+ ECompetitionHeaderActions["CreateCompetitionVersion"] = "[Competition] Create Version";
54
+ ECompetitionHeaderActions["CreateCompetitionVersionSuccess"] = "[Competition] Create Version Success";
55
+ ECompetitionHeaderActions["CompetitionVersionChangeStatus"] = "[Competition] Version Change Status";
56
+ ECompetitionHeaderActions["CompetitionVersionChangeStatusSuccess"] = "[Competition] Version Change Status Success";
57
+ ECompetitionHeaderActions["CompetitionVersionChangeStatusManual"] = "[Competition] Version Change Status Manual";
58
+ ECompetitionHeaderActions["SelectCompetitionVersion"] = "[Competition] Select Version";
59
+ ECompetitionHeaderActions["ActivateCompetition"] = "[Competition] Activate";
60
+ ECompetitionHeaderActions["PauseCompetition"] = "[Competition] Pause";
61
+ ECompetitionHeaderActions["CancelCompetition"] = "[Competition] Cancel";
62
+ ECompetitionHeaderActions["CancelCompetitionWithValidation"] = "[Competition] Cancel With Validation";
63
+ ECompetitionHeaderActions["CompleteCompetition"] = "[Competition] Complete";
64
+ ECompetitionHeaderActions["CompetitionChangeStatusSuccess"] = "[Competition] ChangeStatus Success";
65
+ })(ECompetitionHeaderActions || (ECompetitionHeaderActions = {}));
66
+ const loadCompetitionHeader = createAction(ECompetitionHeaderActions.LoadCompetitionHeader);
67
+ const loadCompetitionHeaderSuccess = createAction(ECompetitionHeaderActions.LoadCompetitionHeaderSuccess, props());
68
+ const deleteCompetitionVersion = createAction(ECompetitionHeaderActions.DeleteCompetitionVersion, props());
69
+ const deleteCompetitionVersionSuccess = createAction(ECompetitionHeaderActions.DeleteCompetitionVersionSuccess, props());
70
+ const createCompetitionVersion = createAction(ECompetitionHeaderActions.CreateCompetitionVersion);
71
+ const competitionVersionChangeStatus = createAction(ECompetitionHeaderActions.CompetitionVersionChangeStatus, props());
72
+ const competitionVersionChangeStatusSuccess = createAction(ECompetitionHeaderActions.CompetitionVersionChangeStatusSuccess, props());
73
+ const competitionVersionChangeStatusManual = createAction(ECompetitionHeaderActions.CompetitionVersionChangeStatusManual, props());
74
+ const createCompetitionVersionSuccess = createAction(ECompetitionHeaderActions.CreateCompetitionVersionSuccess, props());
75
+ const selectCompetitionVersion = createAction(ECompetitionHeaderActions.SelectCompetitionVersion, props());
76
+ const activateCompetition = createAction(ECompetitionHeaderActions.ActivateCompetition);
77
+ const pauseCompetition = createAction(ECompetitionHeaderActions.PauseCompetition);
78
+ const cancelCompetition = createAction(ECompetitionHeaderActions.CancelCompetition);
79
+ const cancelCompetitionWithValidation = createAction(ECompetitionHeaderActions.CancelCompetitionWithValidation, props());
80
+ const completeCompetition = createAction(ECompetitionHeaderActions.CompleteCompetition);
81
+ const competitionChangeStatusSuccess = createAction(ECompetitionHeaderActions.CompetitionChangeStatusSuccess);
82
+
83
+ const COMPETITION_HEADER_FEATURE_NAME = 'competition-header';
84
+
85
+ const competitionVersionsFeature = createFeatureSelector(COMPETITION_HEADER_FEATURE_NAME);
86
+ const selectCompetitionVersions = createSelector(competitionVersionsFeature, (state) => state.competitionVersions);
87
+ const selectCompetitionDefaultVersionId = createSelector(competitionVersionsFeature, (state) => state.defaultVersionVersionId);
88
+ const selectCompetitionSelectedVersionId = createSelector(selectCompetitionIdAndVersionId, selectCompetitionDefaultVersionId, (cv, dv) => {
89
+ return cv.versionId ? cv.versionId : dv;
90
+ });
91
+ const selectCompetitionStatus = createSelector(competitionVersionsFeature, (state) => state.competition);
92
+ const selectManualVersionStatusChanged = createSelector(competitionVersionsFeature, (state) => state.manualVersionStatusChanged);
93
+ const selectActivityId = createSelector(competitionVersionsFeature, (state) => state.activityId);
94
+
95
+ class CompetitionHeaderCustomButtonsDirective {
96
+ constructor(templateRef) {
97
+ this.templateRef = templateRef;
98
+ }
99
+ }
100
+ CompetitionHeaderCustomButtonsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderCustomButtonsDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
101
+ CompetitionHeaderCustomButtonsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: CompetitionHeaderCustomButtonsDirective, selector: "[myCompetitionHeaderCustomButtons]", ngImport: i0 });
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderCustomButtonsDirective, decorators: [{
103
+ type: Directive,
104
+ args: [{
105
+ selector: '[myCompetitionHeaderCustomButtons]'
106
+ }]
107
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
108
+
109
+ var CancelCompetitionTypeEnum;
110
+ (function (CancelCompetitionTypeEnum) {
111
+ CancelCompetitionTypeEnum[CancelCompetitionTypeEnum["Disabled"] = 0] = "Disabled";
112
+ CancelCompetitionTypeEnum[CancelCompetitionTypeEnum["Enabled"] = 1] = "Enabled";
113
+ CancelCompetitionTypeEnum[CancelCompetitionTypeEnum["WithValidation"] = 2] = "WithValidation";
114
+ })(CancelCompetitionTypeEnum || (CancelCompetitionTypeEnum = {}));
115
+
116
+ class CompetitionHeaderComponent extends UnSubscriber {
117
+ constructor(signService, store, alertService) {
118
+ super();
119
+ this.signService = signService;
120
+ this.store = store;
121
+ this.alertService = alertService;
122
+ this.canChangeStatus = true;
123
+ this.validateVersionAction = undefined;
124
+ this.validateManagementAccess = undefined;
125
+ this.validatePiblicationAccess = undefined;
126
+ this.selectedCompetitionVersionInfo = new EventEmitter();
127
+ this.versions = [];
128
+ this.selectedVersion = '';
129
+ this.competitionStatusEnum = CompetitionStatusEnum;
130
+ this.cancelCompetitionTypeEnum = CancelCompetitionTypeEnum;
131
+ this.competitionVersionStatusEnum = CompetitionVersionStatusEnum;
132
+ this.competitionLabel = '';
133
+ this.showCancelCompetitionButton = false;
134
+ this.cancelCompetitionButtonLabel = 'Отменить отбор';
135
+ this.showCompleteCompetitionButton = false;
136
+ this.restoreButtonName = 'Возобновить';
137
+ this.isControl = false;
138
+ }
139
+ get competitionAggregateStatusEnumLabel() {
140
+ if (this.versions && this.versions.length == 1 && this.selected
141
+ && this.selected.status !== CompetitionVersionStatusEnum.Active) {
142
+ return CompetitionVersionStatusEnumLabel[this.selected.status];
143
+ }
144
+ return this.competition ? CompetitionStatusEnumLabel[this.competition.status] : '';
145
+ }
146
+ get competitionAggregateStatusCssClass() {
147
+ var _a, _b, _c, _d, _e, _f, _g, _h;
148
+ if (this.versions && this.versions.length == 1 && this.selected
149
+ && (((_a = this.competition) === null || _a === void 0 ? void 0 : _a.status) || CompetitionStatusEnum.New) <= CompetitionStatusEnum.Active) {
150
+ return {
151
+ '': ((_b = this.selected) === null || _b === void 0 ? void 0 : _b.status) !== CompetitionVersionStatusEnum.Active,
152
+ 'color-green': ((_c = this.selected) === null || _c === void 0 ? void 0 : _c.status) === CompetitionVersionStatusEnum.Active,
153
+ };
154
+ }
155
+ return {
156
+ '': ((_d = this.competition) === null || _d === void 0 ? void 0 : _d.status) === CompetitionStatusEnum.New
157
+ || ((_e = this.competition) === null || _e === void 0 ? void 0 : _e.status) !== CompetitionStatusEnum.Completed,
158
+ 'color-green': ((_f = this.competition) === null || _f === void 0 ? void 0 : _f.status) === CompetitionStatusEnum.Active,
159
+ 'color-orange': ((_g = this.competition) === null || _g === void 0 ? void 0 : _g.status) === CompetitionStatusEnum.Staying,
160
+ 'color-red': ((_h = this.competition) === null || _h === void 0 ? void 0 : _h.status) === CompetitionStatusEnum.Canceled
161
+ };
162
+ }
163
+ get canCreateVersion() {
164
+ var _a, _b;
165
+ if (this.validateManagementAccess === undefined) {
166
+ return this.isLastVersion && ((_a = this.selected) === null || _a === void 0 ? void 0 : _a.status) === CompetitionVersionStatusEnum.Active &&
167
+ this.competition !== undefined && this.competition.mode > CompetitionModeEnum.Base
168
+ && (this.competition.status === CompetitionStatusEnum.Active ||
169
+ this.competition.status === CompetitionStatusEnum.Staying ||
170
+ this.competition.status === CompetitionStatusEnum.Canceled);
171
+ }
172
+ else {
173
+ return this.isLastVersion && ((_b = this.selected) === null || _b === void 0 ? void 0 : _b.status) === CompetitionVersionStatusEnum.Active &&
174
+ this.competition !== undefined && this.competition.mode > CompetitionModeEnum.Base
175
+ && (this.competition.status === CompetitionStatusEnum.Active ||
176
+ this.competition.status === CompetitionStatusEnum.Staying ||
177
+ this.competition.status === CompetitionStatusEnum.Canceled) &&
178
+ this.validateManagementAccess();
179
+ }
180
+ }
181
+ get canDeleteVersion() {
182
+ var _a, _b;
183
+ if (this.validateManagementAccess === undefined) {
184
+ return ((_a = this.selected) === null || _a === void 0 ? void 0 : _a.status) === this.competitionVersionStatusEnum.Draft
185
+ && this.versions
186
+ && this.versions.length > 1;
187
+ }
188
+ else {
189
+ return ((_b = this.selected) === null || _b === void 0 ? void 0 : _b.status) === this.competitionVersionStatusEnum.Draft
190
+ && this.versions
191
+ && this.versions.length > 1
192
+ && this.validateManagementAccess();
193
+ }
194
+ }
195
+ get canActivateVersion() {
196
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
197
+ if (this.validatePiblicationAccess === undefined) {
198
+ return (((_a = this.selected) === null || _a === void 0 ? void 0 : _a.status) === CompetitionVersionStatusEnum.Draft &&
199
+ ((_b = this.competition) === null || _b === void 0 ? void 0 : _b.mode) !== CompetitionModeEnum.VersionedExtended) ||
200
+ ((((_c = this.selected) === null || _c === void 0 ? void 0 : _c.status) === CompetitionVersionStatusEnum.Confirmed ||
201
+ ((_d = this.selected) === null || _d === void 0 ? void 0 : _d.status) === CompetitionVersionStatusEnum.Validation) &&
202
+ ((_e = this.competition) === null || _e === void 0 ? void 0 : _e.mode) === CompetitionModeEnum.VersionedExtended);
203
+ }
204
+ else {
205
+ return (((_f = this.selected) === null || _f === void 0 ? void 0 : _f.status) === CompetitionVersionStatusEnum.Draft &&
206
+ ((_g = this.competition) === null || _g === void 0 ? void 0 : _g.mode) !== CompetitionModeEnum.VersionedExtended) ||
207
+ ((((_h = this.selected) === null || _h === void 0 ? void 0 : _h.status) === CompetitionVersionStatusEnum.Confirmed ||
208
+ ((_j = this.selected) === null || _j === void 0 ? void 0 : _j.status) === CompetitionVersionStatusEnum.Validation) &&
209
+ ((_k = this.competition) === null || _k === void 0 ? void 0 : _k.mode) === CompetitionModeEnum.VersionedExtended) &&
210
+ this.validatePiblicationAccess();
211
+ }
212
+ }
213
+ get activateVersionDisabled() {
214
+ var _a, _b, _c, _d, _e, _f, _g, _h;
215
+ if (this.validatePiblicationAccess === undefined) {
216
+ return (!this.canChangeStatus ||
217
+ ((((_a = this.selected) === null || _a === void 0 ? void 0 : _a.status) !== CompetitionVersionStatusEnum.Draft &&
218
+ ((_b = this.competition) === null || _b === void 0 ? void 0 : _b.mode) !== CompetitionModeEnum.VersionedExtended) ||
219
+ (((_c = this.selected) === null || _c === void 0 ? void 0 : _c.status) !== CompetitionVersionStatusEnum.Confirmed &&
220
+ ((_d = this.competition) === null || _d === void 0 ? void 0 : _d.mode) === CompetitionModeEnum.VersionedExtended)));
221
+ }
222
+ else {
223
+ return (!this.canChangeStatus ||
224
+ ((((_e = this.selected) === null || _e === void 0 ? void 0 : _e.status) !== CompetitionVersionStatusEnum.Draft &&
225
+ ((_f = this.competition) === null || _f === void 0 ? void 0 : _f.mode) !== CompetitionModeEnum.VersionedExtended) ||
226
+ (((_g = this.selected) === null || _g === void 0 ? void 0 : _g.status) !== CompetitionVersionStatusEnum.Confirmed &&
227
+ ((_h = this.competition) === null || _h === void 0 ? void 0 : _h.mode) === CompetitionModeEnum.VersionedExtended))) &&
228
+ this.validatePiblicationAccess();
229
+ }
230
+ }
231
+ get validateVersionDisabled() {
232
+ if (this.validatePiblicationAccess === undefined) {
233
+ return !this.canChangeStatus;
234
+ }
235
+ else {
236
+ return !this.canChangeStatus && !!this.validatePiblicationAccess();
237
+ }
238
+ }
239
+ get createVersionDisabled() {
240
+ if (this.validateManagementAccess === undefined) {
241
+ return !this.canChangeStatus;
242
+ }
243
+ else {
244
+ const validationRes = this.validateManagementAccess();
245
+ return !this.canChangeStatus && validationRes;
246
+ }
247
+ }
248
+ get backToEditDisabled() {
249
+ if (this.validateManagementAccess === undefined) {
250
+ return !this.canChangeStatus;
251
+ }
252
+ else {
253
+ const validationRes = this.validateManagementAccess();
254
+ return !this.canChangeStatus && validationRes;
255
+ }
256
+ }
257
+ get canValidateVersion() {
258
+ var _a, _b, _c, _d;
259
+ if (this.validatePiblicationAccess === undefined) {
260
+ return ((_a = this.selected) === null || _a === void 0 ? void 0 : _a.status) === CompetitionVersionStatusEnum.Draft &&
261
+ ((_b = this.competition) === null || _b === void 0 ? void 0 : _b.mode) === CompetitionModeEnum.VersionedExtended;
262
+ }
263
+ else {
264
+ return ((_c = this.selected) === null || _c === void 0 ? void 0 : _c.status) === CompetitionVersionStatusEnum.Draft &&
265
+ ((_d = this.competition) === null || _d === void 0 ? void 0 : _d.mode) === CompetitionModeEnum.VersionedExtended &&
266
+ this.validatePiblicationAccess();
267
+ }
268
+ }
269
+ get isLastVersion() {
270
+ var _a, _b;
271
+ if (((_a = this.versions) === null || _a === void 0 ? void 0 : _a.length) > 0) {
272
+ const m = Math.max(...this.versions.map(x => x.num));
273
+ return m === ((_b = this.selected) === null || _b === void 0 ? void 0 : _b.num);
274
+ }
275
+ return false;
276
+ }
277
+ get showRejectionReason() {
278
+ var _a, _b, _c;
279
+ return !!((_a = this.selected) === null || _a === void 0 ? void 0 : _a.rejectionReason) &&
280
+ (((_b = this.selected) === null || _b === void 0 ? void 0 : _b.status) === CompetitionVersionStatusEnum.Draft
281
+ || ((_c = this.selected) === null || _c === void 0 ? void 0 : _c.status) === CompetitionVersionStatusEnum.Rejected);
282
+ }
283
+ get versionStatusClass() {
284
+ var _a, _b;
285
+ return {
286
+ '': ((_a = this.selected) === null || _a === void 0 ? void 0 : _a.status) !== CompetitionVersionStatusEnum.Active,
287
+ 'color-green': ((_b = this.selected) === null || _b === void 0 ? void 0 : _b.status) === CompetitionVersionStatusEnum.Active
288
+ };
289
+ }
290
+ /** Контекст для кастомных кнопок, может расширяться */
291
+ get customButtonsTemplateContext() {
292
+ var _a, _b;
293
+ return {
294
+ activityId: this._activityId,
295
+ competitionId: (_a = this.competition) === null || _a === void 0 ? void 0 : _a.id,
296
+ competitionVersionId: (_b = this.selected) === null || _b === void 0 ? void 0 : _b.id
297
+ };
298
+ }
299
+ get canReturnToEdit() {
300
+ var _a, _b;
301
+ if (this.validateManagementAccess === undefined) {
302
+ return ((_a = this.selected) === null || _a === void 0 ? void 0 : _a.status) === CompetitionVersionStatusEnum.Rejected;
303
+ }
304
+ else {
305
+ return ((_b = this.selected) === null || _b === void 0 ? void 0 : _b.status) === CompetitionVersionStatusEnum.Rejected && this.validateManagementAccess();
306
+ }
307
+ }
308
+ get canSeeThreeDots() {
309
+ var _a, _b, _c;
310
+ if (this.validateManagementAccess === undefined) {
311
+ return false;
312
+ }
313
+ else {
314
+ return this.validateManagementAccess() &&
315
+ ((_a = this.competition) === null || _a === void 0 ? void 0 : _a.status) != this.competitionStatusEnum.New &&
316
+ ((_b = this.competition) === null || _b === void 0 ? void 0 : _b.status) != this.competitionStatusEnum.Completed &&
317
+ ((_c = this.competition) === null || _c === void 0 ? void 0 : _c.status) != this.competitionStatusEnum.NotPlace;
318
+ }
319
+ }
320
+ ngOnInit() {
321
+ this.store.dispatch(loadCompetitionHeader());
322
+ this.appendSubscription(this.store.pipe(select(selectCompetitionVersions)).subscribe(result => {
323
+ if (result) {
324
+ this.versions = result;
325
+ this.select();
326
+ }
327
+ }));
328
+ this.appendSubscription(this.store.pipe(select(selectCompetitionSelectedVersionId)).subscribe(result => {
329
+ if (result) {
330
+ this.selectedVersion = result;
331
+ this.select();
332
+ }
333
+ }));
334
+ this.appendSubscription(this.store.pipe(select(selectCompetitionStatus)).subscribe(result => {
335
+ if (result) {
336
+ this.competition = result;
337
+ }
338
+ }));
339
+ this.appendSubscription(this.store.pipe(select(selectCompetitionLabel)).subscribe(result => {
340
+ this.competitionLabel = result;
341
+ }));
342
+ this.appendSubscription(this.store.pipe(select(selectActivityId)).subscribe(result => {
343
+ this._activityId = result;
344
+ }));
345
+ this.appendSubscription(this.store.pipe(select(selectCompetitionConfig)).subscribe(result => {
346
+ if (result) {
347
+ this.competitionConfig = result;
348
+ if (this.competitionConfig.cancelCompetitionLabel) {
349
+ this.cancelCompetitionButtonLabel = this.competitionConfig.cancelCompetitionLabel;
350
+ }
351
+ if (this.competitionConfig.cancelCompetitionType
352
+ && this.competitionConfig.cancelCompetitionType > this.cancelCompetitionTypeEnum.Disabled) {
353
+ this.showCancelCompetitionButton = true;
354
+ }
355
+ this.showCompleteCompetitionButton = this.competitionConfig.showCompleteCompetitionButton;
356
+ if (this.competitionConfig.restoreButtonName) {
357
+ this.restoreButtonName = this.competitionConfig.restoreButtonName;
358
+ }
359
+ }
360
+ }));
361
+ this.appendSubscription(this.store.pipe(select(selectManualVersionStatusChanged)).subscribe(result => {
362
+ // произошло ручное изменение статуса, толкаем дальше по таймауту
363
+ if (result) {
364
+ setTimeout(() => {
365
+ const selectedItem = this.selected;
366
+ if (selectedItem) {
367
+ this.store.dispatch(competitionVersionChangeStatus({
368
+ versionId: selectedItem.id,
369
+ status: CompetitionVersionStatusEnum.Confirmed
370
+ }));
371
+ }
372
+ }, 10000);
373
+ }
374
+ }));
375
+ }
376
+ ngOnDestroy() {
377
+ super.ngOnDestroy();
378
+ }
379
+ getCompetitionVersionStatusEnumLabel(value) {
380
+ return CompetitionVersionStatusEnumLabel[value];
381
+ }
382
+ getCompetitionVersionStatusGrouppingLabel(value) {
383
+ return CompetitionVersionStatusGrouppingLabel[value];
384
+ }
385
+ createVersion() {
386
+ this.alertService.showDialog({
387
+ title: `Формирование изменений`,
388
+ message: `${this.getWarningMessageHtml('Внимание! Формирование изменений приведет к созданию новой версии отбора')}
389
+ <p>
390
+ Вы действительно хотите сформировать изменения?
391
+ </p>`,
392
+ color: DialogColor.yellow,
393
+ type: DialogType.confirm,
394
+ okLabel: 'Подтвердить',
395
+ cancelLabel: 'Отменить',
396
+ okCallback: () => {
397
+ this.store.dispatch(createCompetitionVersion());
398
+ }
399
+ });
400
+ }
401
+ activateVersion() {
402
+ if (this.selected) {
403
+ const selectedItem = this.selected;
404
+ this.alertService.showDialog({
405
+ title: `Публикация ${this.competitionLabel}а`,
406
+ message: `${this.getWarningMessageHtml()}
407
+ <p>
408
+ Вы действительно хотите опубликовать ${this.competitionLabel}?
409
+ </p>`,
410
+ color: DialogColor.yellow,
411
+ type: DialogType.confirm,
412
+ okLabel: 'Подтвердить',
413
+ cancelLabel: 'Отменить',
414
+ okCallback: () => {
415
+ this.store.dispatch(competitionVersionChangeStatus({
416
+ versionId: selectedItem.id,
417
+ status: CompetitionVersionStatusEnum.Active
418
+ }));
419
+ }
420
+ });
421
+ }
422
+ }
423
+ validateVersion() {
424
+ if (this.selected) {
425
+ const selectedItem = this.selected;
426
+ if (this.validateVersionAction) {
427
+ this.validateVersionAction(selectedItem.id, () => {
428
+ this.signService.sign({
429
+ title: 'Направление документа на согласование',
430
+ okLabel: 'Отправить',
431
+ cancelLabel: 'Отменить',
432
+ pdfUrl: `/m-data/minfin/pdf-competition/${selectedItem.id}`,
433
+ xmlUrl: `/m-data/minfin/xml-competition/${selectedItem.id}`,
434
+ provider: 'empty'
435
+ }, () => {
436
+ this.store.dispatch(competitionVersionChangeStatus({
437
+ versionId: selectedItem.id,
438
+ status: CompetitionVersionStatusEnum.Validation
439
+ }));
440
+ }, () => {
441
+ });
442
+ });
443
+ }
444
+ }
445
+ }
446
+ removeVersion() {
447
+ var _a;
448
+ if (this.selected) {
449
+ const selectedItem = this.selected;
450
+ this.alertService.showDialog(`Удалить версию ${this.competitionLabel}а?`, `${this.getWarningMessageHtml()}
451
+ <p>
452
+ Вы действительно хотите удалить версию ${(_a = this.competitionLabel) === null || _a === void 0 ? void 0 : _a.toLowerCase()}а?
453
+ </p>`, DialogType.confirm, (ok) => {
454
+ this.store.dispatch(deleteCompetitionVersion({ versionId: selectedItem.id }));
455
+ }, undefined, null, undefined, undefined, DialogColor.red);
456
+ }
457
+ }
458
+ restore() {
459
+ this.hideControls();
460
+ this.alertService.showDialog(`Возобновить ${this.competitionLabel}?`, null, DialogType.confirm, (ok) => {
461
+ this.store.dispatch(activateCompetition());
462
+ });
463
+ }
464
+ pause() {
465
+ this.hideControls();
466
+ this.alertService.showDialog(`Приостановить ${this.competitionLabel}?`, null, DialogType.confirm, (ok) => {
467
+ this.store.dispatch(pauseCompetition());
468
+ });
469
+ }
470
+ cancel() {
471
+ this.hideControls();
472
+ if (this.competitionConfig && this.competitionConfig.cancelCompetitionType == this.cancelCompetitionTypeEnum.WithValidation) {
473
+ if (this.selected) {
474
+ const selectedItem = this.selected;
475
+ this.store.dispatch(cancelCompetitionWithValidation({ versionId: selectedItem.id }));
476
+ }
477
+ }
478
+ else {
479
+ this.alertService.showDialog(`Отменить ${this.competitionLabel}?`, null, DialogType.confirm, (ok) => {
480
+ this.store.dispatch(cancelCompetition());
481
+ });
482
+ }
483
+ }
484
+ complete() {
485
+ this.hideControls();
486
+ this.alertService.showDialog(`Завершить ${this.competitionLabel}?`, null, DialogType.confirm, (ok) => {
487
+ this.store.dispatch(completeCompetition());
488
+ });
489
+ }
490
+ selectVersion(id) {
491
+ this.store.dispatch(selectCompetitionVersion({ versionId: id }));
492
+ }
493
+ backToEdit() {
494
+ this.hideControls();
495
+ this.alertService.showDialog(`редактирование текущей версии`, `Вы действительно хотите редактировать текущую версию ${this.competitionLabel.toLowerCase()}a`, DialogType.confirm, (ok) => {
496
+ if (!!this.selected) {
497
+ this.store.dispatch(competitionVersionChangeStatus({
498
+ versionId: this.selected.id,
499
+ status: CompetitionVersionStatusEnum.Draft
500
+ }));
501
+ }
502
+ }, undefined, null, 'Подтвердить', undefined, DialogColor.yellow);
503
+ }
504
+ showControls() {
505
+ this.isControl = !this.isControl;
506
+ }
507
+ hideControls() {
508
+ this.isControl = false;
509
+ }
510
+ showRejection(model) {
511
+ this.alertService.showDialog(`Причина отклонения`, ` <div class="modal-body__author">
512
+ <span>${model.author}</span>
513
+ <span>${model.createdDate}</span>
514
+ </div>
515
+ <p class="modal-body__text">${model.reason}</p>
516
+ `, DialogType.confirm, undefined, undefined, null, undefined, '', DialogColor.yellow);
517
+ }
518
+ select() {
519
+ if (this.versions && this.selectedVersion) {
520
+ this.selected = this.versions.find(s => s.id === this.selectedVersion);
521
+ this.selectedCompetitionVersionInfo.emit(this.selected);
522
+ }
523
+ }
524
+ getWarningMessageHtml(customText = undefined) {
525
+ if (!customText) {
526
+ customText = 'Внимание! Данное действие нельзя отменить';
527
+ }
528
+ return `<div class="bg-news px-3 py-2 radius-4 my-3 d-flex">
529
+ <div class="mr-3">
530
+ <svg width="16" height="16" fill="none">
531
+ <use href="#alert"></use>
532
+ </svg>
533
+ </div>
534
+ <div class="small m-0 bold">
535
+ <span class="color-orange">
536
+ ${customText}
537
+ </span>
538
+ </div>
539
+ </div>`;
540
+ }
541
+ }
542
+ CompetitionHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderComponent, deps: [{ token: i1.SignService }, { token: i2.Store }, { token: i3.AlertService }], target: i0.ɵɵFactoryTarget.Component });
543
+ CompetitionHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: CompetitionHeaderComponent, selector: "my-competition-new-header", inputs: { canChangeStatus: "canChangeStatus", validateVersionAction: "validateVersionAction", validateManagementAccess: "validateManagementAccess", validatePiblicationAccess: "validatePiblicationAccess" }, outputs: { selectedCompetitionVersionInfo: "selectedCompetitionVersionInfo" }, queries: [{ propertyName: "customButtonsTemplate", first: true, predicate: CompetitionHeaderCustomButtonsDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"info-banner\" *ngIf=\"selected\">\r\n <div class=\"info-banner-body\">\r\n <div class=\"info-banner-block\">\r\n <!-- \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0441\u0443\u0431\u0441\u0438\u0434\u0438\u0438/\u043E\u0442\u0431\u043E\u0440\u0430 -->\r\n <div class=\"info-banner-item wpx-160 mr-3\">\r\n <!-- \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0441\u0443\u0449\u043D\u043E\u0441\u0442\u0438, \u043B\u0438\u0431\u043E \"\u0421\u0443\u0431\u0441\u0438\u0434\u0438\u044F\" \u043B\u0438\u0431\u043E \"\u041E\u0442\u0431\u043E\u0440\" -->\r\n <span class=\"info-banner-item__title\" myCompetitionLabel>\r\n\r\n </span>\r\n <!-- \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0441\u0443\u0431\u0441\u0438\u0434\u0438\u0438/\u043E\u0442\u0431\u043E\u0440\u0430 -->\r\n <!-- \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0442\u044C \u0434\u043B\u0438\u043D\u0443 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u044F \u0432 44 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 -->\r\n <!-- \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u0432 \u0442\u0443\u043B\u0442\u0438\u043F \u043F\u043E\u043B\u043D\u043E\u0435 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0441\u0443\u0431\u0441\u0438\u0434\u0438\u0438/\u043E\u0442\u0431\u043E\u0440\u0430 -->\r\n <span class=\"info-banner-item__text text-normal\" myTooltip [tooltip]=\"selected.name\" [tooltipMaxWidth]=\"320\">\r\n {{ selected.shortName ? selected.shortName : '\u041D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D' }}\r\n </span>\r\n </div>\r\n <!-- \u0441\u0442\u0430\u0442\u0443\u0441 \u0441\u0443\u0431\u0441\u0438\u0434\u0438\u0438/\u043E\u0442\u0431\u043E\u0440\u0430 -->\r\n <div class=\"info-banner-item wpx-110\">\r\n <span class=\"info-banner-item__title\">\r\n \u0421\u0442\u0430\u0442\u0443\u0441\r\n </span>\r\n <!-- \u0441\u0442\u0430\u0442\u0443\u0441 \u0441\u0443\u0431\u0441\u0438\u0434\u0438\u0438/\u043E\u0442\u0431\u043E\u0440\u0430 -->\r\n <!-- \u0434\u043B\u044F \u0437\u0430\u0434\u0430\u043D\u0438\u044F \u0446\u0432\u0435\u0442\u0430 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0442\u044C \u043A\u043B\u0430\u0441\u0441\u044B: \u043E\u0440\u0430\u043D\u0436\u0435\u0432\u044B\u0439 - \"color-orange\", \u0437\u0435\u043B\u0435\u043D\u044B\u0439 - \"color-green\" -->\r\n <span class=\"info-banner-item__text\" [ngClass]=\"competitionAggregateStatusCssClass\">\r\n {{ competitionAggregateStatusEnumLabel }}\r\n </span>\r\n </div>\r\n </div>\r\n <!-- \u0441\u0435\u043B\u0435\u043A\u0442 \u0441 \u0432\u044B\u0431\u043E\u0440\u043E\u043C \u0432\u0435\u0440\u0441\u0438\u0438 -->\r\n <div class=\"info-banner-item info-banner-item_input wpx-260 mr-3\" *ngIf=\"versions && versions.length > 1\">\r\n <div class=\"inputbox inputbox-md mb-0\">\r\n <ng-select [items]=\"versions\" [ngModel]=\"selected.id\"\r\n (ngModelChange)=\"selectVersion($event)\"\r\n [clearable]=\"false\"\r\n bindValue=\"id\"\r\n bindLabel=\"name\"\r\n groupBy=\"status\"\r\n notFoundText=\"\u041D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E\">\r\n <ng-template ng-optgroup-tmp let-item=\"item\" let-index=\"index\">\r\n {{getCompetitionVersionStatusGrouppingLabel(item.status)}}\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\r\n \u0412\u0435\u0440\u0441\u0438\u044F {{item.num}} \u043E\u0442 {{item.createdDate}}\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\">\r\n \u0412\u0435\u0440\u0441\u0438\u044F {{item.num}} \u043E\u0442 {{item.createdDate}}\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n <!-- \u0441\u0442\u0430\u0442\u0430\u0443\u0441 \u0432\u0435\u0440\u0441\u0438\u0438 -->\r\n <!-- \u043D\u0435 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C, \u0435\u0441\u043B\u0438 \u043D\u0435\u0442 \u0432\u0435\u0440\u0441\u0438\u0439 -->\r\n <div class=\"info-banner-item wpx-110\" *ngIf=\"versions && versions.length > 1\">\r\n <span class=\"info-banner-item__title\">\r\n \u0421\u0442\u0430\u0442\u0443\u0441 \u0432\u0435\u0440\u0441\u0438\u0438\r\n </span>\r\n <!-- \u0441\u0442\u0430\u0442\u0443\u0441 \u0432\u0435\u0440\u0441\u0438\u0438 -->\r\n <!-- \u0434\u043B\u044F \u0437\u0430\u0434\u0430\u043D\u0438\u044F \u0446\u0432\u0435\u0442\u0430 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0442\u044C \u043A\u043B\u0430\u0441\u0441\u044B: \u043E\u0440\u0430\u043D\u0436\u0435\u0432\u044B\u0439 - \"color-orange\", \u0437\u0435\u043B\u0435\u043D\u044B\u0439 - \"color-green\" -->\r\n <span class=\"info-banner-item__text\" *ngIf=\"selected\" [ngClass]=\"versionStatusClass\">\r\n {{ getCompetitionVersionStatusEnumLabel(selected.status) }}\r\n </span>\r\n </div>\r\n <!-- \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0435, \u0432\u044B\u0437\u043E\u0432 \u043C\u043E\u0434\u0430\u043B\u043A\u0438, \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435 \u043E\u0431 \u0432\u043D\u0435\u0441\u0435\u043D\u0438\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 -->\r\n <div class=\"info-banner-item\">\r\n <!-- \u043D\u0435 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C, \u0435\u0441\u043B\u0438 \u043D\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F -->\r\n <!-- \"\u043A\u043E\u043D\u0432\u0435\u0440\u0442\" -->\r\n <div class=\"info-banner-item__icon\" *ngIf=\"showRejectionReason\"\r\n myTooltip\r\n [tooltip]=\"'\u041F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u043F\u0440\u0438\u0447\u0438\u043D\u0443 \u043E\u0442\u043A\u043B\u043E\u043D\u0435\u043D\u0438\u044F'\"\r\n (click)=\"showRejection(selected.rejectionReason)\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"6\" width=\"18\" height=\"12\" rx=\"1\" stroke=\"#282828\" stroke-width=\"1.5\"/>\r\n <path d=\"M3 6.25L11.3356 13.6595C11.7145 13.9962 12.2855 13.9962 12.6644 13.6595L21 6.25\" stroke=\"#282828\" stroke-width=\"1.5\"/>\r\n <path d=\"M3 18L7.5 14L9.75 12M21 18L16.5 14L14.25 12\" stroke=\"#282828\" stroke-width=\"1.5\"/>\r\n </svg>\r\n </div>\r\n <!-- \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 -->\r\n <div *ngIf=\"canDeleteVersion\" (click)=\"removeVersion()\" class=\"info-banner-item__icon\" myTooltip [tooltip]=\"'\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u0435\u0440\u0441\u0438\u044E'\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M3 6H5H21\" stroke=\"#D14114\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M19 6V20C19 20.5304 18.7893 21.0391 18.4142 21.4142C18.0391 21.7893 17.5304 22 17 22H7C6.46957 22 5.96086 21.7893 5.58579 21.4142C5.21071 21.0391 5 20.5304 5 20V6H19Z\" stroke=\"#D14114\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10 11V17\" stroke=\"#D14114\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M14 11V17\" stroke=\"#D14114\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <!-- \u0432\u043E\u0441\u043A\u043B\u0438\u0446\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u0437\u043D\u0430\u043A -->\r\n <div *ngIf=\"!isLastVersion\" class=\"info-banner-item__icon\" myTooltip [tooltip]=\"'\u0412\u043D\u0435\u0441\u0435\u043D\u0438\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E \u043D\u0430 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438'\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M12.2302 18V17M12.2302 14V10M4.00298 21.25H20.4575C21.9971 21.25 22.9593 19.5833 22.1895 18.25L13.9623 4C13.1925 2.66667 11.268 2.66667 10.4982 4L2.27093 18.25C1.50113 19.5833 2.46338 21.25 4.00298 21.25Z\" stroke=\"#D57B1C\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"info-banner-control\">\r\n <div *ngIf=\"!!customButtonsTemplate\">\r\n <ng-container *ngTemplateOutlet=\"customButtonsTemplate.templateRef;context:customButtonsTemplateContext\"></ng-container>\r\n </div>\r\n <button class=\"btn btn-md green\"\r\n (click)=\"createVersion()\"\r\n *ngIf=\"canCreateVersion\"\r\n [disabled]=\"createVersionDisabled\">\r\n \u0421\u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\r\n </button>\r\n <button class=\"btn btn-md green\"\r\n (click)=\"activateVersion()\"\r\n *ngIf=\"canActivateVersion\"\r\n [disabled]=\"activateVersionDisabled\">\r\n \u041E\u043F\u0443\u0431\u043B\u0438\u043A\u043E\u0432\u0430\u0442\u044C\r\n </button>\r\n <button class=\"btn btn-md\"\r\n (click)=\"validateVersion()\"\r\n *ngIf=\"canValidateVersion\"\r\n [disabled]=\"validateVersionDisabled\">\r\n \u0421\u043E\u0433\u043B\u0430\u0441\u043E\u0432\u0430\u043D\u0438\u0435\r\n </button>\r\n <button *ngIf=\"canReturnToEdit\" class=\"btn btn-md\"\r\n (click)=\"backToEdit()\"\r\n [disabled]=\"backToEditDisabled\">\r\n \u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C\r\n </button>\r\n <!-- \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u043C/\u043E\u0442\u0431\u043E\u0440\u043E\u043C -->\r\n <!-- \u043D\u0435 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0435\u0441\u043B\u0438 \u043D\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F -->\r\n <div class=\"info-banner-control__action\"\r\n *ngIf=\"competition && canSeeThreeDots\">\r\n <div class=\"info-banner-control__icon\" (click)=\"showControls()\" [ngClass]=\"{'active': isControl}\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M10.5 12C10.5 12.8284 11.1716 13.5 12 13.5C12.8284 13.5 13.5 12.8284 13.5 12C13.5 11.1716 12.8284 10.5 12 10.5C11.1716 10.5 10.5 11.1716 10.5 12Z\" fill=\"#253E49\"/>\r\n <path d=\"M10.5 19C10.5 19.8284 11.1716 20.5 12 20.5C12.8284 20.5 13.5 19.8284 13.5 19C13.5 18.1716 12.8284 17.5 12 17.5C11.1716 17.5 10.5 18.1716 10.5 19Z\" fill=\"#253E49\"/>\r\n <path d=\"M10.5 5C10.5 5.82843 11.1716 6.5 12 6.5C12.8284 6.5 13.5 5.82843 13.5 5C13.5 4.17157 12.8284 3.5 12 3.5C11.1716 3.5 10.5 4.17157 10.5 5Z\" fill=\"#253E49\"/>\r\n </svg>\r\n </div>\r\n <div *ngIf=\"isControl\" class=\"info-banner-control__menu\">\r\n <div class=\"info-banner-control__menu-item\"\r\n *ngIf=\"competition.status == competitionStatusEnum.Active\"\r\n (click)=\"pause()\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"5\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\" fill=\"#253E49\"/>\r\n <rect x=\"14\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\" fill=\"#253E49\"/>\r\n </svg>\r\n <span>\r\n \u041F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C\r\n </span>\r\n </div>\r\n <div class=\"info-banner-control__menu-item\"\r\n *ngIf=\"competition.status == competitionStatusEnum.Staying\"\r\n (click)=\"restore()\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M20.5518 10.8276C21.2044 11.2151 21.2044 12.1599 20.5518 12.5474L5.51054 21.4781C4.84395 21.8739 4 21.3935 4 20.6183L4 2.75674C4 1.9815 4.84395 1.50109 5.51054 1.89688L20.5518 10.8276Z\" fill=\"#253E49\"/>\r\n </svg>\r\n <span>\r\n {{restoreButtonName}}\r\n </span>\r\n </div>\r\n <div class=\"info-banner-control__menu-item\"\r\n *ngIf=\"(\r\n competition.status == competitionStatusEnum.Active ||\r\n competition.status == competitionStatusEnum.Staying)\r\n && showCompleteCompetitionButton\"\r\n (click)=\"complete()\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" fill=\"#253E49\"/>\r\n </svg>\r\n <span>\r\n \u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044C\r\n </span>\r\n </div>\r\n <div class=\"info-banner-control__menu-item\"\r\n *ngIf=\"(\r\n competition.status == competitionStatusEnum.Active ||\r\n competition.status == competitionStatusEnum.Staying ||\r\n competition.status == competitionStatusEnum.Canceled)\r\n && showCancelCompetitionButton\"\r\n (click)=\"cancel()\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19.7677 4.23213C21.5354 5.9999 20.744 6.79135 19.7677 7.76766L7.76771 19.7677C6.7914 20.744 5.99987 21.5355 4.23217 19.7677C2.46454 17.9999 3.25586 17.2084 4.23217 16.2321L16.2322 4.23213C17.2085 3.25582 18 2.46453 19.7677 4.23213Z\" fill=\"#253E49\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.23222 4.23196C5.96445 2.49991 6.79144 3.25565 7.76775 4.23196L19.7678 16.232C20.7441 17.2083 21.5 18.0353 19.7678 19.7675C18.0355 21.4997 17.2085 20.7438 16.2322 19.7675L4.23222 7.7675C3.25591 6.79119 2.46429 6 4.23222 4.23196Z\" fill=\"#253E49\"/>\r\n </svg>\r\n <span>\r\n {{cancelCompetitionButtonLabel}}\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isControl\" class=\"info-banner-control__bg\" (click)=\"hideControls()\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", components: [{ type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.CompetitionLabelDirective, selector: "[myCompetitionLabel]" }, { type: i3.TooltipDirective, selector: "[myTooltip]", inputs: ["tooltip", "tooltipPosition", "tooltipMinWidth", "tooltipMaxWidth", "tooltipInteractive", "tooltipActive"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { type: i4.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { type: i4.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
544
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderComponent, decorators: [{
545
+ type: Component,
546
+ args: [{ selector: 'my-competition-new-header', template: "<div class=\"info-banner\" *ngIf=\"selected\">\r\n <div class=\"info-banner-body\">\r\n <div class=\"info-banner-block\">\r\n <!-- \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0441\u0443\u0431\u0441\u0438\u0434\u0438\u0438/\u043E\u0442\u0431\u043E\u0440\u0430 -->\r\n <div class=\"info-banner-item wpx-160 mr-3\">\r\n <!-- \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0441\u0443\u0449\u043D\u043E\u0441\u0442\u0438, \u043B\u0438\u0431\u043E \"\u0421\u0443\u0431\u0441\u0438\u0434\u0438\u044F\" \u043B\u0438\u0431\u043E \"\u041E\u0442\u0431\u043E\u0440\" -->\r\n <span class=\"info-banner-item__title\" myCompetitionLabel>\r\n\r\n </span>\r\n <!-- \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0441\u0443\u0431\u0441\u0438\u0434\u0438\u0438/\u043E\u0442\u0431\u043E\u0440\u0430 -->\r\n <!-- \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0442\u044C \u0434\u043B\u0438\u043D\u0443 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u044F \u0432 44 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 -->\r\n <!-- \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u0432 \u0442\u0443\u043B\u0442\u0438\u043F \u043F\u043E\u043B\u043D\u043E\u0435 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0441\u0443\u0431\u0441\u0438\u0434\u0438\u0438/\u043E\u0442\u0431\u043E\u0440\u0430 -->\r\n <span class=\"info-banner-item__text text-normal\" myTooltip [tooltip]=\"selected.name\" [tooltipMaxWidth]=\"320\">\r\n {{ selected.shortName ? selected.shortName : '\u041D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D' }}\r\n </span>\r\n </div>\r\n <!-- \u0441\u0442\u0430\u0442\u0443\u0441 \u0441\u0443\u0431\u0441\u0438\u0434\u0438\u0438/\u043E\u0442\u0431\u043E\u0440\u0430 -->\r\n <div class=\"info-banner-item wpx-110\">\r\n <span class=\"info-banner-item__title\">\r\n \u0421\u0442\u0430\u0442\u0443\u0441\r\n </span>\r\n <!-- \u0441\u0442\u0430\u0442\u0443\u0441 \u0441\u0443\u0431\u0441\u0438\u0434\u0438\u0438/\u043E\u0442\u0431\u043E\u0440\u0430 -->\r\n <!-- \u0434\u043B\u044F \u0437\u0430\u0434\u0430\u043D\u0438\u044F \u0446\u0432\u0435\u0442\u0430 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0442\u044C \u043A\u043B\u0430\u0441\u0441\u044B: \u043E\u0440\u0430\u043D\u0436\u0435\u0432\u044B\u0439 - \"color-orange\", \u0437\u0435\u043B\u0435\u043D\u044B\u0439 - \"color-green\" -->\r\n <span class=\"info-banner-item__text\" [ngClass]=\"competitionAggregateStatusCssClass\">\r\n {{ competitionAggregateStatusEnumLabel }}\r\n </span>\r\n </div>\r\n </div>\r\n <!-- \u0441\u0435\u043B\u0435\u043A\u0442 \u0441 \u0432\u044B\u0431\u043E\u0440\u043E\u043C \u0432\u0435\u0440\u0441\u0438\u0438 -->\r\n <div class=\"info-banner-item info-banner-item_input wpx-260 mr-3\" *ngIf=\"versions && versions.length > 1\">\r\n <div class=\"inputbox inputbox-md mb-0\">\r\n <ng-select [items]=\"versions\" [ngModel]=\"selected.id\"\r\n (ngModelChange)=\"selectVersion($event)\"\r\n [clearable]=\"false\"\r\n bindValue=\"id\"\r\n bindLabel=\"name\"\r\n groupBy=\"status\"\r\n notFoundText=\"\u041D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E\">\r\n <ng-template ng-optgroup-tmp let-item=\"item\" let-index=\"index\">\r\n {{getCompetitionVersionStatusGrouppingLabel(item.status)}}\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\r\n \u0412\u0435\u0440\u0441\u0438\u044F {{item.num}} \u043E\u0442 {{item.createdDate}}\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\">\r\n \u0412\u0435\u0440\u0441\u0438\u044F {{item.num}} \u043E\u0442 {{item.createdDate}}\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n <!-- \u0441\u0442\u0430\u0442\u0430\u0443\u0441 \u0432\u0435\u0440\u0441\u0438\u0438 -->\r\n <!-- \u043D\u0435 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C, \u0435\u0441\u043B\u0438 \u043D\u0435\u0442 \u0432\u0435\u0440\u0441\u0438\u0439 -->\r\n <div class=\"info-banner-item wpx-110\" *ngIf=\"versions && versions.length > 1\">\r\n <span class=\"info-banner-item__title\">\r\n \u0421\u0442\u0430\u0442\u0443\u0441 \u0432\u0435\u0440\u0441\u0438\u0438\r\n </span>\r\n <!-- \u0441\u0442\u0430\u0442\u0443\u0441 \u0432\u0435\u0440\u0441\u0438\u0438 -->\r\n <!-- \u0434\u043B\u044F \u0437\u0430\u0434\u0430\u043D\u0438\u044F \u0446\u0432\u0435\u0442\u0430 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0442\u044C \u043A\u043B\u0430\u0441\u0441\u044B: \u043E\u0440\u0430\u043D\u0436\u0435\u0432\u044B\u0439 - \"color-orange\", \u0437\u0435\u043B\u0435\u043D\u044B\u0439 - \"color-green\" -->\r\n <span class=\"info-banner-item__text\" *ngIf=\"selected\" [ngClass]=\"versionStatusClass\">\r\n {{ getCompetitionVersionStatusEnumLabel(selected.status) }}\r\n </span>\r\n </div>\r\n <!-- \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0435, \u0432\u044B\u0437\u043E\u0432 \u043C\u043E\u0434\u0430\u043B\u043A\u0438, \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435 \u043E\u0431 \u0432\u043D\u0435\u0441\u0435\u043D\u0438\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 -->\r\n <div class=\"info-banner-item\">\r\n <!-- \u043D\u0435 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C, \u0435\u0441\u043B\u0438 \u043D\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F -->\r\n <!-- \"\u043A\u043E\u043D\u0432\u0435\u0440\u0442\" -->\r\n <div class=\"info-banner-item__icon\" *ngIf=\"showRejectionReason\"\r\n myTooltip\r\n [tooltip]=\"'\u041F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u043F\u0440\u0438\u0447\u0438\u043D\u0443 \u043E\u0442\u043A\u043B\u043E\u043D\u0435\u043D\u0438\u044F'\"\r\n (click)=\"showRejection(selected.rejectionReason)\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"6\" width=\"18\" height=\"12\" rx=\"1\" stroke=\"#282828\" stroke-width=\"1.5\"/>\r\n <path d=\"M3 6.25L11.3356 13.6595C11.7145 13.9962 12.2855 13.9962 12.6644 13.6595L21 6.25\" stroke=\"#282828\" stroke-width=\"1.5\"/>\r\n <path d=\"M3 18L7.5 14L9.75 12M21 18L16.5 14L14.25 12\" stroke=\"#282828\" stroke-width=\"1.5\"/>\r\n </svg>\r\n </div>\r\n <!-- \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 -->\r\n <div *ngIf=\"canDeleteVersion\" (click)=\"removeVersion()\" class=\"info-banner-item__icon\" myTooltip [tooltip]=\"'\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u0435\u0440\u0441\u0438\u044E'\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M3 6H5H21\" stroke=\"#D14114\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M19 6V20C19 20.5304 18.7893 21.0391 18.4142 21.4142C18.0391 21.7893 17.5304 22 17 22H7C6.46957 22 5.96086 21.7893 5.58579 21.4142C5.21071 21.0391 5 20.5304 5 20V6H19Z\" stroke=\"#D14114\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10 11V17\" stroke=\"#D14114\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M14 11V17\" stroke=\"#D14114\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <!-- \u0432\u043E\u0441\u043A\u043B\u0438\u0446\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u0437\u043D\u0430\u043A -->\r\n <div *ngIf=\"!isLastVersion\" class=\"info-banner-item__icon\" myTooltip [tooltip]=\"'\u0412\u043D\u0435\u0441\u0435\u043D\u0438\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E \u043D\u0430 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438'\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M12.2302 18V17M12.2302 14V10M4.00298 21.25H20.4575C21.9971 21.25 22.9593 19.5833 22.1895 18.25L13.9623 4C13.1925 2.66667 11.268 2.66667 10.4982 4L2.27093 18.25C1.50113 19.5833 2.46338 21.25 4.00298 21.25Z\" stroke=\"#D57B1C\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"info-banner-control\">\r\n <div *ngIf=\"!!customButtonsTemplate\">\r\n <ng-container *ngTemplateOutlet=\"customButtonsTemplate.templateRef;context:customButtonsTemplateContext\"></ng-container>\r\n </div>\r\n <button class=\"btn btn-md green\"\r\n (click)=\"createVersion()\"\r\n *ngIf=\"canCreateVersion\"\r\n [disabled]=\"createVersionDisabled\">\r\n \u0421\u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\r\n </button>\r\n <button class=\"btn btn-md green\"\r\n (click)=\"activateVersion()\"\r\n *ngIf=\"canActivateVersion\"\r\n [disabled]=\"activateVersionDisabled\">\r\n \u041E\u043F\u0443\u0431\u043B\u0438\u043A\u043E\u0432\u0430\u0442\u044C\r\n </button>\r\n <button class=\"btn btn-md\"\r\n (click)=\"validateVersion()\"\r\n *ngIf=\"canValidateVersion\"\r\n [disabled]=\"validateVersionDisabled\">\r\n \u0421\u043E\u0433\u043B\u0430\u0441\u043E\u0432\u0430\u043D\u0438\u0435\r\n </button>\r\n <button *ngIf=\"canReturnToEdit\" class=\"btn btn-md\"\r\n (click)=\"backToEdit()\"\r\n [disabled]=\"backToEditDisabled\">\r\n \u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C\r\n </button>\r\n <!-- \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u043C/\u043E\u0442\u0431\u043E\u0440\u043E\u043C -->\r\n <!-- \u043D\u0435 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0435\u0441\u043B\u0438 \u043D\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F -->\r\n <div class=\"info-banner-control__action\"\r\n *ngIf=\"competition && canSeeThreeDots\">\r\n <div class=\"info-banner-control__icon\" (click)=\"showControls()\" [ngClass]=\"{'active': isControl}\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M10.5 12C10.5 12.8284 11.1716 13.5 12 13.5C12.8284 13.5 13.5 12.8284 13.5 12C13.5 11.1716 12.8284 10.5 12 10.5C11.1716 10.5 10.5 11.1716 10.5 12Z\" fill=\"#253E49\"/>\r\n <path d=\"M10.5 19C10.5 19.8284 11.1716 20.5 12 20.5C12.8284 20.5 13.5 19.8284 13.5 19C13.5 18.1716 12.8284 17.5 12 17.5C11.1716 17.5 10.5 18.1716 10.5 19Z\" fill=\"#253E49\"/>\r\n <path d=\"M10.5 5C10.5 5.82843 11.1716 6.5 12 6.5C12.8284 6.5 13.5 5.82843 13.5 5C13.5 4.17157 12.8284 3.5 12 3.5C11.1716 3.5 10.5 4.17157 10.5 5Z\" fill=\"#253E49\"/>\r\n </svg>\r\n </div>\r\n <div *ngIf=\"isControl\" class=\"info-banner-control__menu\">\r\n <div class=\"info-banner-control__menu-item\"\r\n *ngIf=\"competition.status == competitionStatusEnum.Active\"\r\n (click)=\"pause()\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"5\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\" fill=\"#253E49\"/>\r\n <rect x=\"14\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\" fill=\"#253E49\"/>\r\n </svg>\r\n <span>\r\n \u041F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C\r\n </span>\r\n </div>\r\n <div class=\"info-banner-control__menu-item\"\r\n *ngIf=\"competition.status == competitionStatusEnum.Staying\"\r\n (click)=\"restore()\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M20.5518 10.8276C21.2044 11.2151 21.2044 12.1599 20.5518 12.5474L5.51054 21.4781C4.84395 21.8739 4 21.3935 4 20.6183L4 2.75674C4 1.9815 4.84395 1.50109 5.51054 1.89688L20.5518 10.8276Z\" fill=\"#253E49\"/>\r\n </svg>\r\n <span>\r\n {{restoreButtonName}}\r\n </span>\r\n </div>\r\n <div class=\"info-banner-control__menu-item\"\r\n *ngIf=\"(\r\n competition.status == competitionStatusEnum.Active ||\r\n competition.status == competitionStatusEnum.Staying)\r\n && showCompleteCompetitionButton\"\r\n (click)=\"complete()\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" fill=\"#253E49\"/>\r\n </svg>\r\n <span>\r\n \u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044C\r\n </span>\r\n </div>\r\n <div class=\"info-banner-control__menu-item\"\r\n *ngIf=\"(\r\n competition.status == competitionStatusEnum.Active ||\r\n competition.status == competitionStatusEnum.Staying ||\r\n competition.status == competitionStatusEnum.Canceled)\r\n && showCancelCompetitionButton\"\r\n (click)=\"cancel()\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19.7677 4.23213C21.5354 5.9999 20.744 6.79135 19.7677 7.76766L7.76771 19.7677C6.7914 20.744 5.99987 21.5355 4.23217 19.7677C2.46454 17.9999 3.25586 17.2084 4.23217 16.2321L16.2322 4.23213C17.2085 3.25582 18 2.46453 19.7677 4.23213Z\" fill=\"#253E49\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.23222 4.23196C5.96445 2.49991 6.79144 3.25565 7.76775 4.23196L19.7678 16.232C20.7441 17.2083 21.5 18.0353 19.7678 19.7675C18.0355 21.4997 17.2085 20.7438 16.2322 19.7675L4.23222 7.7675C3.25591 6.79119 2.46429 6 4.23222 4.23196Z\" fill=\"#253E49\"/>\r\n </svg>\r\n <span>\r\n {{cancelCompetitionButtonLabel}}\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isControl\" class=\"info-banner-control__bg\" (click)=\"hideControls()\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
547
+ }], ctorParameters: function () { return [{ type: i1.SignService }, { type: i2.Store }, { type: i3.AlertService }]; }, propDecorators: { customButtonsTemplate: [{
548
+ type: ContentChild,
549
+ args: [CompetitionHeaderCustomButtonsDirective]
550
+ }], canChangeStatus: [{
551
+ type: Input
552
+ }], validateVersionAction: [{
553
+ type: Input
554
+ }], validateManagementAccess: [{
555
+ type: Input
556
+ }], validatePiblicationAccess: [{
557
+ type: Input
558
+ }], selectedCompetitionVersionInfo: [{
559
+ type: Output
560
+ }] } });
561
+
562
+ class CompetitionHeaderService extends EndpointBaseService {
563
+ constructor(http, injector) {
564
+ super(http, injector);
565
+ this.url = '/application' + this.restPath + '/competition';
566
+ }
567
+ getHeader(competitionId) {
568
+ return this.http.get(`${this.url}/${competitionId}/header`);
569
+ }
570
+ createVersion(competitionId) {
571
+ return this.http.post(`${this.url}/${competitionId}/version`, {});
572
+ }
573
+ deleteVersion(competitionId, versionId) {
574
+ return this.http.delete(`${this.url}/${competitionId}/version/${versionId}`);
575
+ }
576
+ versionChangeStatus(competitionId, versionId, status) {
577
+ return this.http.post(`${this.url}/${competitionId}/version/${versionId}/to-status/${status}`, {});
578
+ }
579
+ activate(competitionId) {
580
+ return this.http.post(`${this.url}/${competitionId}/activate`, {});
581
+ }
582
+ pause(competitionId) {
583
+ return this.http.post(`${this.url}/${competitionId}/pause`, {});
584
+ }
585
+ complete(competitionId) {
586
+ return this.http.post(`${this.url}/${competitionId}/complete`, {});
587
+ }
588
+ cancel(competitionId) {
589
+ return this.http.post(`${this.url}/${competitionId}/cancel`, {});
590
+ }
591
+ }
592
+ CompetitionHeaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderService, deps: [{ token: i1$1.HttpClient }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
593
+ CompetitionHeaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderService });
594
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderService, decorators: [{
595
+ type: Injectable
596
+ }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: i0.Injector }]; } });
597
+
598
+ class CompetitionHeaderEffects {
599
+ constructor(competitionHeaderService, actions$, store, alertService) {
600
+ this.competitionHeaderService = competitionHeaderService;
601
+ this.actions$ = actions$;
602
+ this.store = store;
603
+ this.alertService = alertService;
604
+ this.loadCompetitionHeader$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.LoadCompetitionHeader), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
605
+ return this.competitionHeaderService.getHeader(competitionId).pipe(map((result) => loadCompetitionHeaderSuccess({ competitionHeader: result })), catchError((err) => {
606
+ this.alertService.showMessage(err, null, MessageSeverity.error);
607
+ return EMPTY;
608
+ }));
609
+ })));
610
+ this.deleteCompetitionVersion$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.DeleteCompetitionVersion), map((action) => action.versionId), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([versionId, competitionId]) => {
611
+ return this.competitionHeaderService.deleteVersion(competitionId, versionId).pipe(map((result) => deleteCompetitionVersionSuccess({ versionId })), catchError((err) => {
612
+ this.alertService.showMessage(err, null, MessageSeverity.error);
613
+ return EMPTY;
614
+ }));
615
+ })));
616
+ this.deleteCompetitionVersionSuccess$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.DeleteCompetitionVersionSuccess), withLatestFrom(this.store.pipe(select(selectCompetitionId))), tap(([, competitionId]) => window.location.href = `/application/competitions/item?competitionId=${competitionId}`)), { dispatch: false });
617
+ this.createCompetitionVersion$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CreateCompetitionVersion), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
618
+ return this.competitionHeaderService.createVersion(competitionId).pipe(map((result) => createCompetitionVersionSuccess({ versionId: result })), catchError((err) => {
619
+ this.alertService.showMessage(err, null, MessageSeverity.error);
620
+ return EMPTY;
621
+ }));
622
+ })));
623
+ this.createCompetitionVersionSuccess$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CreateCompetitionVersionSuccess), map((action) => action.versionId), withLatestFrom(this.store.pipe(select(selectCompetitionId))), tap(([versionId, competitionId]) => window.location.href = `/application/competitions/item?competitionId=${competitionId}&versionId=${versionId}`)), { dispatch: false });
624
+ this.competitionVersionChangeStatus$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CompetitionVersionChangeStatus), map((action) => action), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([action, competitionId]) => {
625
+ return this.competitionHeaderService.versionChangeStatus(competitionId, action.versionId, action.status).pipe(map((result) => {
626
+ return competitionVersionChangeStatusSuccess({
627
+ versionId: action.versionId,
628
+ status: action.status
629
+ });
630
+ }), catchError((err) => {
631
+ this.alertService.showMessage(err, null, MessageSeverity.error);
632
+ return EMPTY;
633
+ }));
634
+ })));
635
+ this.competitionVersionChangeStatusSuccess$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CompetitionVersionChangeStatusSuccess), map((action) => action), tap((action) => window.location.reload())), { dispatch: false });
636
+ this.selectCompetitionVersion$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.SelectCompetitionVersion), map((action) => action.versionId), withLatestFrom(this.store.pipe(select(selectCompetitionId))), tap(([versionId, competitionId]) => {
637
+ const newUri = Utilities.updateQueryStringParameter(window.location.href, 'versionId', versionId);
638
+ window.location.href = newUri;
639
+ })), { dispatch: false });
640
+ this.activateCompetition$ = createEffect(() => (this.actions$.pipe(ofType(ECompetitionHeaderActions.ActivateCompetition), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
641
+ return this.competitionHeaderService.activate(competitionId).pipe(map((result) => competitionChangeStatusSuccess()), catchError((err, caught) => {
642
+ this.alertService.showStickyMessage(err, 'Ошибка активации', MessageSeverity.error);
643
+ return EMPTY;
644
+ }));
645
+ }))));
646
+ this.pauseCompetition$ = createEffect(() => (this.actions$.pipe(ofType(ECompetitionHeaderActions.PauseCompetition), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
647
+ return this.competitionHeaderService.pause(competitionId).pipe(map((result) => competitionChangeStatusSuccess()), catchError((err, caught) => {
648
+ this.alertService.showStickyMessage(err, 'Ошибка приостановки', MessageSeverity.error);
649
+ return EMPTY;
650
+ }));
651
+ }))));
652
+ this.completeCompetition$ = createEffect(() => (this.actions$.pipe(ofType(ECompetitionHeaderActions.CompleteCompetition), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
653
+ return this.competitionHeaderService.complete(competitionId).pipe(map((result) => competitionChangeStatusSuccess()), catchError((err, caught) => {
654
+ this.alertService.showStickyMessage(err, 'Ошибка при завершении', MessageSeverity.error);
655
+ return EMPTY;
656
+ }));
657
+ }))));
658
+ this.cancelCompetition$ = createEffect(() => (this.actions$.pipe(ofType(ECompetitionHeaderActions.CancelCompetition), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
659
+ return this.competitionHeaderService.cancel(competitionId).pipe(map((result) => competitionChangeStatusSuccess()), catchError((err, caught) => {
660
+ this.alertService.showStickyMessage(err, 'Ошибка при отмене', MessageSeverity.error);
661
+ return EMPTY;
662
+ }));
663
+ }))));
664
+ this.cancelCompetitionWithValidation$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CancelCompetitionWithValidation), map((action) => action.versionId), withLatestFrom(this.store.pipe(select(selectCompetitionId))), tap(([versionId, competitionId]) => window.location.href = `/m-data/minfin/selection/edit/cancel?competitionId=${competitionId}&versionId=${versionId}`)), { dispatch: false });
665
+ this.competitionChangeStatusSuccess$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CompetitionChangeStatusSuccess), tap(() => window.location.reload())), { dispatch: false });
666
+ }
667
+ }
668
+ CompetitionHeaderEffects.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderEffects, deps: [{ token: CompetitionHeaderService }, { token: i2$1.Actions }, { token: i2.Store }, { token: i3.AlertService }], target: i0.ɵɵFactoryTarget.Injectable });
669
+ CompetitionHeaderEffects.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderEffects });
670
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderEffects, decorators: [{
671
+ type: Injectable
672
+ }], ctorParameters: function () { return [{ type: CompetitionHeaderService }, { type: i2$1.Actions }, { type: i2.Store }, { type: i3.AlertService }]; } });
673
+
674
+ const initialCompetitionHeaderState = {
675
+ competition: null,
676
+ competitionVersions: [],
677
+ defaultVersionVersionId: '',
678
+ manualVersionStatusChanged: false,
679
+ activityId: undefined
680
+ };
681
+
682
+ const competitionHeaderReducerCreator = createReducer(initialCompetitionHeaderState, on(loadCompetitionHeaderSuccess, (state, { competitionHeader }) => {
683
+ const versions = competitionHeader.versions;
684
+ const competition = {
685
+ id: competitionHeader.id,
686
+ status: competitionHeader.status,
687
+ mode: competitionHeader.mode
688
+ };
689
+ return Object.assign(Object.assign({}, state), { competitionVersions: versions, defaultVersionVersionId: competitionHeader.selectedCompetitionVersionId, competition, activityId: competitionHeader.activityId });
690
+ }), on(competitionVersionChangeStatusManual, (state, { versionId, status }) => {
691
+ const versions = [...state.competitionVersions];
692
+ const version = versions.find(s => s.id === versionId);
693
+ if (version) {
694
+ const newVersion = Object.assign({}, version);
695
+ newVersion.status = status;
696
+ versions.splice(versions.indexOf(version), 1, newVersion);
697
+ }
698
+ return Object.assign(Object.assign({}, state), { competitionVersions: versions, manualVersionStatusChanged: true });
699
+ }));
700
+ function competitionHeaderReducer(state, action) {
701
+ return competitionHeaderReducerCreator(state, action);
702
+ }
703
+
704
+ class CompetitionHeaderModule {
705
+ }
706
+ CompetitionHeaderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
707
+ CompetitionHeaderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderModule, declarations: [CompetitionHeaderComponent,
708
+ CompetitionHeaderCustomButtonsDirective], imports: [CommonModule, i2$1.EffectsFeatureModule, i2.StoreFeatureModule, TenantSettingsModule,
709
+ FormsModule,
710
+ MyrtexUiComponentsModule,
711
+ MyrtexMfUiCompositeModule,
712
+ MyrtexSignerModule,
713
+ NgSelectModule], exports: [CompetitionHeaderComponent,
714
+ CompetitionHeaderCustomButtonsDirective] });
715
+ CompetitionHeaderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderModule, providers: [
716
+ CompetitionHeaderService
717
+ ], imports: [[
718
+ CommonModule,
719
+ EffectsModule.forFeature([CompetitionHeaderEffects]),
720
+ StoreModule.forFeature(COMPETITION_HEADER_FEATURE_NAME, competitionHeaderReducer),
721
+ TenantSettingsModule,
722
+ FormsModule,
723
+ MyrtexUiComponentsModule,
724
+ MyrtexMfUiCompositeModule,
725
+ MyrtexSignerModule,
726
+ NgSelectModule
727
+ ]] });
728
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderModule, decorators: [{
729
+ type: NgModule,
730
+ args: [{
731
+ declarations: [
732
+ CompetitionHeaderComponent,
733
+ CompetitionHeaderCustomButtonsDirective,
734
+ ],
735
+ imports: [
736
+ CommonModule,
737
+ EffectsModule.forFeature([CompetitionHeaderEffects]),
738
+ StoreModule.forFeature(COMPETITION_HEADER_FEATURE_NAME, competitionHeaderReducer),
739
+ TenantSettingsModule,
740
+ FormsModule,
741
+ MyrtexUiComponentsModule,
742
+ MyrtexMfUiCompositeModule,
743
+ MyrtexSignerModule,
744
+ NgSelectModule
745
+ ],
746
+ providers: [
747
+ CompetitionHeaderService
748
+ ],
749
+ exports: [
750
+ CompetitionHeaderComponent,
751
+ CompetitionHeaderCustomButtonsDirective,
752
+ ]
753
+ }]
754
+ }] });
755
+
756
+ /*
757
+ * Public API Surface of myrtex-mf-competition
758
+ */
759
+
760
+ /**
761
+ * Generated bundle index. Do not edit.
762
+ */
763
+
764
+ export { CompetitionHeaderComponent, CompetitionHeaderCustomButtonsDirective, CompetitionHeaderModule, CompetitionVersionStatusEnum, CompetitionVersionStatusEnumLabel, CompetitionVersionStatusGrouppingLabel };
765
+ //# sourceMappingURL=myrtex-mf-competition.mjs.map