@snabcentr/client-ui 4.16.9 → 4.16.11-profstroy
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/alerts/confirm-alert/sc-confirm-alert.component.d.ts +22 -0
- package/alerts/index.d.ts +1 -0
- package/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.d.ts +1 -1
- package/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.d.ts +3 -3
- package/catalog/input-quantity/sc-input-quantity.component.d.ts +17 -1
- package/esm2022/alerts/confirm-alert/sc-confirm-alert.component.mjs +29 -0
- package/esm2022/alerts/index.mjs +2 -0
- package/esm2022/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.mjs +4 -3
- package/esm2022/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.mjs +5 -16
- package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +24 -4
- package/esm2022/helpers/sc-api-error-helper.mjs +25 -0
- package/esm2022/helpers/sc-file-helper.mjs +29 -0
- package/esm2022/order/draft/helpers/sc-draft-list-helper.mjs +83 -0
- package/esm2022/order/draft/models/sc-i-draft-list-item.mjs +2 -0
- package/esm2022/order/draft/profstroy/actualization-panel/sc-profstroy-actualization-panel.component.mjs +73 -0
- package/esm2022/order/draft/profstroy/badge/sc-profstroy-badge.component.mjs +21 -0
- package/esm2022/order/draft/profstroy/badges/sc-profstroy-draft-badges.component.mjs +31 -0
- package/esm2022/order/draft/profstroy/create-dialog/sc-profstroy-draft-create-dialog.component.mjs +139 -0
- package/esm2022/order/draft/profstroy/enums/sc-profstroy-draft-state.mjs +32 -0
- package/esm2022/order/draft/profstroy/helpers/sc-profstroy-draft-helper.mjs +94 -0
- package/esm2022/order/draft/profstroy/index.mjs +8 -0
- package/esm2022/order/draft/profstroy/models/sc-i-profstroy-draft-state-view.mjs +2 -0
- package/esm2022/order/draft/sc-draft.component.mjs +148 -14
- package/esm2022/order/draft/services/sc-draft-expiration-clock.service.mjs +42 -0
- package/esm2022/order/draft/services/sc-draft-list-updates.service.mjs +288 -0
- package/esm2022/order/index.mjs +6 -1
- package/esm2022/order/new-order-items/sc-new-order-items.component.mjs +11 -3
- package/esm2022/order/order-form/sc-order-form.component.mjs +4 -2
- package/esm2022/order/order-item/sc-order-item.component.mjs +37 -5
- package/esm2022/order/order-items-list/sc-order-items-list.component.mjs +254 -47
- package/esm2022/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.mjs +1 -1
- package/esm2022/order/order-items-list-with-actions/sc-order-items-list-with-actions.component.mjs +15 -3
- package/esm2022/pipes/sc-format-date.mjs +1 -1
- package/esm2022/providers/sc-date-formatter.mjs +1 -1
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/snabcentr-client-ui.mjs +1318 -93
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/helpers/sc-api-error-helper.d.ts +18 -0
- package/helpers/sc-file-helper.d.ts +13 -0
- package/order/draft/helpers/sc-draft-list-helper.d.ts +51 -0
- package/order/draft/models/sc-i-draft-list-item.d.ts +14 -0
- package/order/draft/profstroy/actualization-panel/sc-profstroy-actualization-panel.component.d.ts +58 -0
- package/order/draft/profstroy/badge/sc-profstroy-badge.component.d.ts +12 -0
- package/order/draft/profstroy/badges/sc-profstroy-draft-badges.component.d.ts +21 -0
- package/order/draft/profstroy/create-dialog/sc-profstroy-draft-create-dialog.component.d.ts +65 -0
- package/order/draft/profstroy/enums/sc-profstroy-draft-state.d.ts +29 -0
- package/order/draft/profstroy/helpers/sc-profstroy-draft-helper.d.ts +33 -0
- package/order/draft/profstroy/index.d.ts +7 -0
- package/order/draft/profstroy/models/sc-i-profstroy-draft-state-view.d.ts +17 -0
- package/order/draft/sc-draft.component.d.ts +73 -1
- package/order/draft/services/sc-draft-expiration-clock.service.d.ts +29 -0
- package/order/draft/services/sc-draft-list-updates.service.d.ts +158 -0
- package/order/index.d.ts +5 -0
- package/order/new-order-items/sc-new-order-items.component.d.ts +9 -1
- package/order/order-form/sc-order-form.component.d.ts +1 -0
- package/order/order-item/sc-order-item.component.d.ts +25 -1
- package/order/order-items-list/sc-order-items-list.component.d.ts +132 -9
- package/order/order-items-list-with-actions/sc-order-items-list-with-actions.component.d.ts +13 -1
- package/package.json +2 -2
- package/pipes/sc-format-date.d.ts +1 -1
- package/providers/sc-date-formatter.d.ts +1 -1
- package/public-api.d.ts +1 -0
- package/release_notes.tmp +1 -1
- package/styles/tailwind/tailwind.scss +41 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { ScOrderDraft } from '@snabcentr/client-core';
|
|
2
|
+
/**
|
|
3
|
+
* Класс-помощник для работы со списком черновиков.
|
|
4
|
+
*/
|
|
5
|
+
export class ScDraftListHelper {
|
|
6
|
+
/**
|
|
7
|
+
* Возвращает признак, что состав страницы не изменился: то же общее количество черновиков и те же черновики в том же порядке.
|
|
8
|
+
*
|
|
9
|
+
* @param items Текущие элементы списка.
|
|
10
|
+
* @param total Текущее общее количество черновиков.
|
|
11
|
+
* @param drafts Черновики полученной страницы.
|
|
12
|
+
* @param receivedTotal Общее количество черновиков в полученных данных.
|
|
13
|
+
*/
|
|
14
|
+
static isSamePage(items, total, drafts, receivedTotal) {
|
|
15
|
+
return total === receivedTotal && items.length === drafts.length && drafts.every((draft, index) => draft.id === items.at(index)?.order.id);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Возвращает подпись состава страницы: общее количество черновиков и номера черновиков страницы по порядку.
|
|
19
|
+
*
|
|
20
|
+
* @param page Страница списка.
|
|
21
|
+
*/
|
|
22
|
+
static getSignature(page) {
|
|
23
|
+
return `${page.meta.total}:${page.data.map(({ id }) => id).join(',')}`;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Возвращает элементы новой страницы списка. Черновики, которые уже есть в списке, сохраняют раскрытие и полные данные.
|
|
27
|
+
*
|
|
28
|
+
* @param items Текущие элементы списка.
|
|
29
|
+
* @param drafts Черновики новой страницы.
|
|
30
|
+
*/
|
|
31
|
+
static fromPage(items, drafts) {
|
|
32
|
+
return drafts.map((short) => {
|
|
33
|
+
const item = items.find(({ order }) => order.id === short.id);
|
|
34
|
+
return item ? ScDraftListHelper.update(item, short) : { order: short, isExpanded: false };
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Возвращает список с обновлёнными краткими данными полученных черновиков, состав и порядок списка не меняются.
|
|
39
|
+
* Полные данные раскрытых черновиков не меняются: их обновляет кэш черновика.
|
|
40
|
+
*
|
|
41
|
+
* @param items Текущие элементы списка.
|
|
42
|
+
* @param drafts Полученные краткие данные черновиков.
|
|
43
|
+
*/
|
|
44
|
+
static merge(items, drafts) {
|
|
45
|
+
return items.map((item) => {
|
|
46
|
+
const short = drafts.find(({ id }) => id === item.order.id);
|
|
47
|
+
return short ? ScDraftListHelper.update(item, short) : item;
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Возвращает номера черновиков с полными данными, у которых краткие данные отличаются: название или данные актуализации.
|
|
52
|
+
*
|
|
53
|
+
* @param items Текущие элементы списка.
|
|
54
|
+
* @param drafts Полученные краткие данные черновиков.
|
|
55
|
+
*/
|
|
56
|
+
static getChangedFullDraftIds(items, drafts) {
|
|
57
|
+
return items
|
|
58
|
+
.filter(({ order }) => order instanceof ScOrderDraft)
|
|
59
|
+
.filter(({ order }) => {
|
|
60
|
+
const short = drafts.find(({ id }) => id === order.id);
|
|
61
|
+
if (!short) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
const isSameActualization = short.actualization ? short.actualization.isSameAs(order.actualization) : order.actualization === undefined;
|
|
65
|
+
return short.name !== order.name || !isSameActualization;
|
|
66
|
+
})
|
|
67
|
+
.map(({ order }) => order.id);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Обновляет элемент списка краткими данными черновика. Полные данные черновика не заменяются.
|
|
71
|
+
*
|
|
72
|
+
* @param item Элемент списка.
|
|
73
|
+
* @param short Краткие данные черновика.
|
|
74
|
+
*/
|
|
75
|
+
static update(item, short) {
|
|
76
|
+
if (!(item.order instanceof ScOrderDraft)) {
|
|
77
|
+
// eslint-disable-next-line no-param-reassign
|
|
78
|
+
item.order = short;
|
|
79
|
+
}
|
|
80
|
+
return item;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZHJhZnQtbGlzdC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvb3JkZXIvZHJhZnQvaGVscGVycy9zYy1kcmFmdC1saXN0LWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsWUFBWSxFQUFxQixNQUFNLHdCQUF3QixDQUFDO0FBSXRGOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUMxQjs7Ozs7OztPQU9HO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUF5QixFQUFFLEtBQWEsRUFBRSxNQUEyQixFQUFFLGFBQXFCO1FBQ2pILE9BQU8sS0FBSyxLQUFLLGFBQWEsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0ksQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQW9DO1FBQzNELE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQzNFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBeUIsRUFBRSxNQUEyQjtRQUN6RSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN4QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFOUQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDOUYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUF5QixFQUFFLE1BQTJCO1FBQ3RFLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3RCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUU1RCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLHNCQUFzQixDQUFDLEtBQXlCLEVBQUUsTUFBMkI7UUFDdkYsT0FBTyxLQUFLO2FBQ1AsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxZQUFZLFlBQVksQ0FBQzthQUNwRCxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDbEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFdkQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNULE9BQU8sS0FBSyxDQUFDO1lBQ2pCLENBQUM7WUFFRCxNQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsS0FBSyxTQUFTLENBQUM7WUFFeEksT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUM3RCxDQUFDLENBQUM7YUFDRCxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFzQixFQUFFLEtBQXdCO1FBQ2xFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLFlBQVksWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUN4Qyw2Q0FBNkM7WUFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjSVBhZ2luYXRlLCBTY09yZGVyRHJhZnQsIFNjT3JkZXJEcmFmdFNob3J0IH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5cbmltcG9ydCB7IFNjSURyYWZ0TGlzdEl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvc2MtaS1kcmFmdC1saXN0LWl0ZW0nO1xuXG4vKipcbiAqINCa0LvQsNGB0YEt0L/QvtC80L7RidC90LjQuiDQtNC70Y8g0YDQsNCx0L7RgtGLINGB0L4g0YHQv9C40YHQutC+0Lwg0YfQtdGA0L3QvtCy0LjQutC+0LIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTY0RyYWZ0TGlzdEhlbHBlciB7XG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/RgNC40LfQvdCw0LosINGH0YLQviDRgdC+0YHRgtCw0LIg0YHRgtGA0LDQvdC40YbRiyDQvdC1INC40LfQvNC10L3QuNC70YHRjzog0YLQviDQttC1INC+0LHRidC10LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YfQtdGA0L3QvtCy0LjQutC+0LIg0Lgg0YLQtSDQttC1INGH0LXRgNC90L7QstC40LrQuCDQsiDRgtC+0Lwg0LbQtSDQv9C+0YDRj9C00LrQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtcyDQotC10LrRg9GJ0LjQtSDRjdC70LXQvNC10L3RgtGLINGB0L/QuNGB0LrQsC5cbiAgICAgKiBAcGFyYW0gdG90YWwg0KLQtdC60YPRidC10LUg0L7QsdGJ0LXQtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRh9C10YDQvdC+0LLQuNC60L7Qsi5cbiAgICAgKiBAcGFyYW0gZHJhZnRzINCn0LXRgNC90L7QstC40LrQuCDQv9C+0LvRg9GH0LXQvdC90L7QuSDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqIEBwYXJhbSByZWNlaXZlZFRvdGFsINCe0LHRidC10LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YfQtdGA0L3QvtCy0LjQutC+0LIg0LIg0L/QvtC70YPRh9C10L3QvdGL0YUg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaXNTYW1lUGFnZShpdGVtczogU2NJRHJhZnRMaXN0SXRlbVtdLCB0b3RhbDogbnVtYmVyLCBkcmFmdHM6IFNjT3JkZXJEcmFmdFNob3J0W10sIHJlY2VpdmVkVG90YWw6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdG90YWwgPT09IHJlY2VpdmVkVG90YWwgJiYgaXRlbXMubGVuZ3RoID09PSBkcmFmdHMubGVuZ3RoICYmIGRyYWZ0cy5ldmVyeSgoZHJhZnQsIGluZGV4KSA9PiBkcmFmdC5pZCA9PT0gaXRlbXMuYXQoaW5kZXgpPy5vcmRlci5pZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/QvtC00L/QuNGB0Ywg0YHQvtGB0YLQsNCy0LAg0YHRgtGA0LDQvdC40YbRizog0L7QsdGJ0LXQtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRh9C10YDQvdC+0LLQuNC60L7QsiDQuCDQvdC+0LzQtdGA0LAg0YfQtdGA0L3QvtCy0LjQutC+0LIg0YHRgtGA0LDQvdC40YbRiyDQv9C+INC/0L7RgNGP0LTQutGDLlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhZ2Ug0KHRgtGA0LDQvdC40YbQsCDRgdC/0LjRgdC60LAuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXRTaWduYXR1cmUocGFnZTogU2NJUGFnaW5hdGU8U2NPcmRlckRyYWZ0U2hvcnQ+KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3BhZ2UubWV0YS50b3RhbH06JHtwYWdlLmRhdGEubWFwKCh7IGlkIH0pID0+IGlkKS5qb2luKCcsJyl9YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRjdC70LXQvNC10L3RgtGLINC90L7QstC+0Lkg0YHRgtGA0LDQvdC40YbRiyDRgdC/0LjRgdC60LAuINCn0LXRgNC90L7QstC40LrQuCwg0LrQvtGC0L7RgNGL0LUg0YPQttC1INC10YHRgtGMINCyINGB0L/QuNGB0LrQtSwg0YHQvtGF0YDQsNC90Y/RjtGCINGA0LDRgdC60YDRi9GC0LjQtSDQuCDQv9C+0LvQvdGL0LUg0LTQsNC90L3Ri9C1LlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1zINCi0LXQutGD0YnQuNC1INGN0LvQtdC80LXQvdGC0Ysg0YHQv9C40YHQutCwLlxuICAgICAqIEBwYXJhbSBkcmFmdHMg0KfQtdGA0L3QvtCy0LjQutC4INC90L7QstC+0Lkg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZyb21QYWdlKGl0ZW1zOiBTY0lEcmFmdExpc3RJdGVtW10sIGRyYWZ0czogU2NPcmRlckRyYWZ0U2hvcnRbXSk6IFNjSURyYWZ0TGlzdEl0ZW1bXSB7XG4gICAgICAgIHJldHVybiBkcmFmdHMubWFwKChzaG9ydCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zLmZpbmQoKHsgb3JkZXIgfSkgPT4gb3JkZXIuaWQgPT09IHNob3J0LmlkKTtcblxuICAgICAgICAgICAgcmV0dXJuIGl0ZW0gPyBTY0RyYWZ0TGlzdEhlbHBlci51cGRhdGUoaXRlbSwgc2hvcnQpIDogeyBvcmRlcjogc2hvcnQsIGlzRXhwYW5kZWQ6IGZhbHNlIH07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDRgSDQvtCx0L3QvtCy0LvRkdC90L3Ri9C80Lgg0LrRgNCw0YLQutC40LzQuCDQtNCw0L3QvdGL0LzQuCDQv9C+0LvRg9GH0LXQvdC90YvRhSDRh9C10YDQvdC+0LLQuNC60L7Qsiwg0YHQvtGB0YLQsNCyINC4INC/0L7RgNGP0LTQvtC6INGB0L/QuNGB0LrQsCDQvdC1INC80LXQvdGP0Y7RgtGB0Y8uXG4gICAgICog0J/QvtC70L3Ri9C1INC00LDQvdC90YvQtSDRgNCw0YHQutGA0YvRgtGL0YUg0YfQtdGA0L3QvtCy0LjQutC+0LIg0L3QtSDQvNC10L3Rj9GO0YLRgdGPOiDQuNGFINC+0LHQvdC+0LLQu9GP0LXRgiDQutGN0Ygg0YfQtdGA0L3QvtCy0LjQutCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1zINCi0LXQutGD0YnQuNC1INGN0LvQtdC80LXQvdGC0Ysg0YHQv9C40YHQutCwLlxuICAgICAqIEBwYXJhbSBkcmFmdHMg0J/QvtC70YPRh9C10L3QvdGL0LUg0LrRgNCw0YLQutC40LUg0LTQsNC90L3Ri9C1INGH0LXRgNC90L7QstC40LrQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgbWVyZ2UoaXRlbXM6IFNjSURyYWZ0TGlzdEl0ZW1bXSwgZHJhZnRzOiBTY09yZGVyRHJhZnRTaG9ydFtdKTogU2NJRHJhZnRMaXN0SXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2hvcnQgPSBkcmFmdHMuZmluZCgoeyBpZCB9KSA9PiBpZCA9PT0gaXRlbS5vcmRlci5pZCk7XG5cbiAgICAgICAgICAgIHJldHVybiBzaG9ydCA/IFNjRHJhZnRMaXN0SGVscGVyLnVwZGF0ZShpdGVtLCBzaG9ydCkgOiBpdGVtO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQvdC+0LzQtdGA0LAg0YfQtdGA0L3QvtCy0LjQutC+0LIg0YEg0L/QvtC70L3Ri9C80Lgg0LTQsNC90L3Ri9C80LgsINGDINC60L7RgtC+0YDRi9GFINC60YDQsNGC0LrQuNC1INC00LDQvdC90YvQtSDQvtGC0LvQuNGH0LDRjtGC0YHRjzog0L3QsNC30LLQsNC90LjQtSDQuNC70Lgg0LTQsNC90L3Ri9C1INCw0LrRgtGD0LDQu9C40LfQsNGG0LjQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtcyDQotC10LrRg9GJ0LjQtSDRjdC70LXQvNC10L3RgtGLINGB0L/QuNGB0LrQsC5cbiAgICAgKiBAcGFyYW0gZHJhZnRzINCf0L7Qu9GD0YfQtdC90L3Ri9C1INC60YDQsNGC0LrQuNC1INC00LDQvdC90YvQtSDRh9C10YDQvdC+0LLQuNC60L7Qsi5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldENoYW5nZWRGdWxsRHJhZnRJZHMoaXRlbXM6IFNjSURyYWZ0TGlzdEl0ZW1bXSwgZHJhZnRzOiBTY09yZGVyRHJhZnRTaG9ydFtdKTogbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gaXRlbXNcbiAgICAgICAgICAgIC5maWx0ZXIoKHsgb3JkZXIgfSkgPT4gb3JkZXIgaW5zdGFuY2VvZiBTY09yZGVyRHJhZnQpXG4gICAgICAgICAgICAuZmlsdGVyKCh7IG9yZGVyIH0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzaG9ydCA9IGRyYWZ0cy5maW5kKCh7IGlkIH0pID0+IGlkID09PSBvcmRlci5pZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXNob3J0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpc1NhbWVBY3R1YWxpemF0aW9uID0gc2hvcnQuYWN0dWFsaXphdGlvbiA/IHNob3J0LmFjdHVhbGl6YXRpb24uaXNTYW1lQXMob3JkZXIuYWN0dWFsaXphdGlvbikgOiBvcmRlci5hY3R1YWxpemF0aW9uID09PSB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnQubmFtZSAhPT0gb3JkZXIubmFtZSB8fCAhaXNTYW1lQWN0dWFsaXphdGlvbjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAubWFwKCh7IG9yZGVyIH0pID0+IG9yZGVyLmlkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0L3QvtCy0LvRj9C10YIg0Y3Qu9C10LzQtdC90YIg0YHQv9C40YHQutCwINC60YDQsNGC0LrQuNC80Lgg0LTQsNC90L3Ri9C80Lgg0YfQtdGA0L3QvtCy0LjQutCwLiDQn9C+0LvQvdGL0LUg0LTQsNC90L3Ri9C1INGH0LXRgNC90L7QstC40LrQsCDQvdC1INC30LDQvNC10L3Rj9GO0YLRgdGPLlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW0g0K3Qu9C10LzQtdC90YIg0YHQv9C40YHQutCwLlxuICAgICAqIEBwYXJhbSBzaG9ydCDQmtGA0LDRgtC60LjQtSDQtNCw0L3QvdGL0LUg0YfQtdGA0L3QvtCy0LjQutCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgc3RhdGljIHVwZGF0ZShpdGVtOiBTY0lEcmFmdExpc3RJdGVtLCBzaG9ydDogU2NPcmRlckRyYWZ0U2hvcnQpOiBTY0lEcmFmdExpc3RJdGVtIHtcbiAgICAgICAgaWYgKCEoaXRlbS5vcmRlciBpbnN0YW5jZW9mIFNjT3JkZXJEcmFmdCkpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgICAgaXRlbS5vcmRlciA9IHNob3J0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1kcmFmdC1saXN0LWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvb3JkZXIvZHJhZnQvbW9kZWxzL3NjLWktZHJhZnQtbGlzdC1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY09yZGVyRHJhZnQsIFNjT3JkZXJEcmFmdFNob3J0IH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5cbi8qKlxuICog0JTQsNC90L3Ri9C1INC+0LEg0Y3Qu9C10LzQtdC90YLQtSDRgdC/0LjRgdC60LAg0YfQtdGA0L3QvtCy0LjQutC+0LIg0LfQsNC60LDQt9C+0LIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NJRHJhZnRMaXN0SXRlbSB7XG4gICAgLyoqXG4gICAgICog0JrRgNCw0YLQutC40LUg0LjQu9C4INC/0L7Qu9C90YvQtSDQtNCw0L3QvdGL0LUg0L4g0YfQtdGA0L3QvtCy0LjQutC1INC30LDQutCw0LfQsC5cbiAgICAgKi9cbiAgICBvcmRlcjogU2NPcmRlckRyYWZ0IHwgU2NPcmRlckRyYWZ0U2hvcnQ7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INGH0LXRgNC90L7QstC40Log0YDQsNGB0LrRgNGL0YIg0LIg0YHQv9C40YHQutC1LlxuICAgICAqL1xuICAgIGlzRXhwYW5kZWQ6IGJvb2xlYW47XG59XG4iXX0=
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';
|
|
3
|
+
import { SC_URLS } from '@snabcentr/client-core';
|
|
4
|
+
import { TuiButton, TuiLink, TuiLoader, TuiNotification } from '@taiga-ui/core';
|
|
5
|
+
import { ScFormatDatePipe } from '../../../../pipes/sc-format-date';
|
|
6
|
+
import { ScProfstroyDraftState } from '../enums/sc-profstroy-draft-state';
|
|
7
|
+
import { ScProfstroyDraftHelper } from '../helpers/sc-profstroy-draft-helper';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
/**
|
|
10
|
+
* Компонент панели состояния актуализации черновика Профстрой с действиями актуализации и пересборки.
|
|
11
|
+
*/
|
|
12
|
+
export class ScProfstroyActualizationPanelComponent {
|
|
13
|
+
constructor() {
|
|
14
|
+
/**
|
|
15
|
+
* Список ссылок приложения.
|
|
16
|
+
*/
|
|
17
|
+
this.urls = inject(SC_URLS);
|
|
18
|
+
/**
|
|
19
|
+
* Объект документа.
|
|
20
|
+
*/
|
|
21
|
+
this.document = inject(DOCUMENT);
|
|
22
|
+
/**
|
|
23
|
+
* Черновик Профстрой.
|
|
24
|
+
*/
|
|
25
|
+
this.draft = input.required();
|
|
26
|
+
/**
|
|
27
|
+
* Момент, на который определяется состояние. Передаётся снаружи и обновляется по таймеру проверки срока, иначе метка «Данные устарели» не сменится.
|
|
28
|
+
*/
|
|
29
|
+
this.now = input.required();
|
|
30
|
+
/**
|
|
31
|
+
* Признак, что действия над черновиком недоступны.
|
|
32
|
+
*/
|
|
33
|
+
this.busy = input(false);
|
|
34
|
+
/**
|
|
35
|
+
* Событие запуска актуализации.
|
|
36
|
+
*/
|
|
37
|
+
this.actualize = output();
|
|
38
|
+
/**
|
|
39
|
+
* Событие запуска пересборки из файла.
|
|
40
|
+
*/
|
|
41
|
+
this.reload = output();
|
|
42
|
+
/**
|
|
43
|
+
* Текущее состояние черновика.
|
|
44
|
+
*/
|
|
45
|
+
this.state = computed(() => ScProfstroyDraftHelper.getState(this.draft().actualization, this.now()));
|
|
46
|
+
/**
|
|
47
|
+
* Данные об отображении состояния.
|
|
48
|
+
*/
|
|
49
|
+
this.stateView = computed(() => ScProfstroyDraftHelper.getPanelView(this.draft(), this.now()));
|
|
50
|
+
/**
|
|
51
|
+
* Признак, что выполняется обработка.
|
|
52
|
+
*/
|
|
53
|
+
this.isProcessing = computed(() => this.state() === ScProfstroyDraftState.processing);
|
|
54
|
+
/**
|
|
55
|
+
* Признак, что срок действия актуализации ещё не истёк.
|
|
56
|
+
*/
|
|
57
|
+
this.isActual = computed(() => this.state() === ScProfstroyDraftState.actual);
|
|
58
|
+
/**
|
|
59
|
+
* Абсолютная ссылка на исходный файл заявки. Файл лежит на хосте API, адрес API может быть указан относительно сайта.
|
|
60
|
+
*/
|
|
61
|
+
this.fileUrl = computed(() => {
|
|
62
|
+
const url = this.draft().file?.url;
|
|
63
|
+
return url ? new URL(url, new URL(this.urls.apiUrl, this.document.baseURI)).href : null;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScProfstroyActualizationPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
67
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScProfstroyActualizationPanelComponent, isStandalone: true, selector: "sc-profstroy-actualization-panel", inputs: { draft: { classPropertyName: "draft", publicName: "draft", isSignal: true, isRequired: true, transformFunction: null }, now: { classPropertyName: "now", publicName: "now", isSignal: true, isRequired: true, transformFunction: null }, busy: { classPropertyName: "busy", publicName: "busy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { actualize: "actualize", reload: "reload" }, ngImport: i0, template: "@let actualization = draft().actualization;\n@let view = stateView();\n\n<tui-notification\n [appearance]=\"view.appearance\"\n size=\"m\"\n>\n <div class=\"flex flex-col items-start gap-2 text-start\">\n <div class=\"flex items-center justify-start gap-2 text-start font-bold\">\n @if (isProcessing()) {\n <tui-loader size=\"s\" />\n }\n {{ view.label }}\n </div>\n\n <div class=\"flex flex-col items-start gap-1\">\n @if (actualization?.actualizedAt; as actualizedAt) {\n <span>\u0410\u043A\u0442\u0443\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D {{ actualizedAt | scFormatDate }}</span>\n }\n @if (isActual() && actualization?.expiresAt; as expiresAt) {\n <span>\u0410\u043A\u0442\u0443\u0430\u043B\u0435\u043D \u0434\u043E {{ expiresAt | scFormatDate }}</span>\n }\n @if (view.description) {\n <span>{{ view.description }}</span>\n }\n @if (actualization?.error; as error) {\n <span class=\"font-bold\">{{ error }}</span>\n }\n @if (fileUrl(); as url) {\n <span>\n \u0424\u0430\u0439\u043B \u0437\u0430\u044F\u0432\u043A\u0438:\n <a\n tuiLink\n [href]=\"url\"\n target=\"_blank\"\n rel=\"noopener\"\n class=\"break-all\"\n >\n {{ draft().file?.originalName ?? '\u0441\u043A\u0430\u0447\u0430\u0442\u044C' }}\n </a>\n </span>\n }\n </div>\n\n <div class=\"flex flex-wrap gap-2\">\n <button\n tuiButton\n type=\"button\"\n size=\"s\"\n appearance=\"secondary\"\n iconStart=\"@tui.refresh-cw\"\n [disabled]=\"isProcessing() || busy()\"\n (click)=\"actualize.emit()\"\n >\n \u0410\u043A\u0442\u0443\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u0442\u044C\n </button>\n <button\n tuiButton\n type=\"button\"\n size=\"s\"\n appearance=\"secondary\"\n iconStart=\"@tui.file-up\"\n [disabled]=\"isProcessing() || busy()\"\n (click)=\"reload.emit()\"\n >\n \u0421\u043E\u0431\u0440\u0430\u0442\u044C \u0437\u0430\u043D\u043E\u0432\u043E \u0438\u0437 \u0444\u0430\u0439\u043B\u0430\n </button>\n </div>\n </div>\n</tui-notification>\n", dependencies: [{ kind: "directive", type: TuiNotification, selector: "tui-notification,a[tuiNotification],button[tuiNotification]", inputs: ["appearance", "icon", "size"] }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "pipe", type: ScFormatDatePipe, name: "scFormatDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
68
|
+
}
|
|
69
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScProfstroyActualizationPanelComponent, decorators: [{
|
|
70
|
+
type: Component,
|
|
71
|
+
args: [{ standalone: true, selector: 'sc-profstroy-actualization-panel', imports: [TuiNotification, TuiLoader, TuiButton, TuiLink, ScFormatDatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let actualization = draft().actualization;\n@let view = stateView();\n\n<tui-notification\n [appearance]=\"view.appearance\"\n size=\"m\"\n>\n <div class=\"flex flex-col items-start gap-2 text-start\">\n <div class=\"flex items-center justify-start gap-2 text-start font-bold\">\n @if (isProcessing()) {\n <tui-loader size=\"s\" />\n }\n {{ view.label }}\n </div>\n\n <div class=\"flex flex-col items-start gap-1\">\n @if (actualization?.actualizedAt; as actualizedAt) {\n <span>\u0410\u043A\u0442\u0443\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D {{ actualizedAt | scFormatDate }}</span>\n }\n @if (isActual() && actualization?.expiresAt; as expiresAt) {\n <span>\u0410\u043A\u0442\u0443\u0430\u043B\u0435\u043D \u0434\u043E {{ expiresAt | scFormatDate }}</span>\n }\n @if (view.description) {\n <span>{{ view.description }}</span>\n }\n @if (actualization?.error; as error) {\n <span class=\"font-bold\">{{ error }}</span>\n }\n @if (fileUrl(); as url) {\n <span>\n \u0424\u0430\u0439\u043B \u0437\u0430\u044F\u0432\u043A\u0438:\n <a\n tuiLink\n [href]=\"url\"\n target=\"_blank\"\n rel=\"noopener\"\n class=\"break-all\"\n >\n {{ draft().file?.originalName ?? '\u0441\u043A\u0430\u0447\u0430\u0442\u044C' }}\n </a>\n </span>\n }\n </div>\n\n <div class=\"flex flex-wrap gap-2\">\n <button\n tuiButton\n type=\"button\"\n size=\"s\"\n appearance=\"secondary\"\n iconStart=\"@tui.refresh-cw\"\n [disabled]=\"isProcessing() || busy()\"\n (click)=\"actualize.emit()\"\n >\n \u0410\u043A\u0442\u0443\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u0442\u044C\n </button>\n <button\n tuiButton\n type=\"button\"\n size=\"s\"\n appearance=\"secondary\"\n iconStart=\"@tui.file-up\"\n [disabled]=\"isProcessing() || busy()\"\n (click)=\"reload.emit()\"\n >\n \u0421\u043E\u0431\u0440\u0430\u0442\u044C \u0437\u0430\u043D\u043E\u0432\u043E \u0438\u0437 \u0444\u0430\u0439\u043B\u0430\n </button>\n </div>\n </div>\n</tui-notification>\n" }]
|
|
72
|
+
}] });
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJvZnN0cm95LWFjdHVhbGl6YXRpb24tcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL29yZGVyL2RyYWZ0L3Byb2ZzdHJveS9hY3R1YWxpemF0aW9uLXBhbmVsL3NjLXByb2ZzdHJveS1hY3R1YWxpemF0aW9uLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9vcmRlci9kcmFmdC9wcm9mc3Ryb3kvYWN0dWFsaXphdGlvbi1wYW5lbC9zYy1wcm9mc3Ryb3ktYWN0dWFsaXphdGlvbi1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7O0FBRTlFOztHQUVHO0FBUUgsTUFBTSxPQUFPLHNDQUFzQztJQVBuRDtRQVFJOztXQUVHO1FBQ2MsU0FBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4Qzs7V0FFRztRQUNjLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFN0M7O1dBRUc7UUFDYSxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBZ0IsQ0FBQztRQUV2RDs7V0FFRztRQUNhLFFBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFRLENBQUM7UUFFN0M7O1dBRUc7UUFDYSxTQUFJLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRTdDOztXQUVHO1FBQ2EsY0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBRXJDOztXQUVHO1FBQ2EsV0FBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBRWxDOztXQUVHO1FBQ2dCLFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVuSDs7V0FFRztRQUNnQixjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU3Rzs7V0FFRztRQUNnQixpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUsscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFcEc7O1dBRUc7UUFDZ0IsYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUsscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFNUY7O1dBRUc7UUFDZ0IsWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7WUFFbkMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDNUYsQ0FBQyxDQUFDLENBQUM7S0FDTjsrR0FoRVksc0NBQXNDO21HQUF0QyxzQ0FBc0MsNGZDbkJuRCwwdEZBc0VBLDRDRHREYyxlQUFlLGdKQUFFLFNBQVMsaUlBQUUsU0FBUyxvSUFBRSxPQUFPLHVGQUFFLGdCQUFnQjs7NEZBR2pFLHNDQUFzQztrQkFQbEQsU0FBUztpQ0FDTSxJQUFJLFlBQ04sa0NBQWtDLFdBRW5DLENBQUMsZUFBZSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDLG1CQUMxRCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU0NfVVJMUywgU2NPcmRlckRyYWZ0IH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUdWlCdXR0b24sIFR1aUxpbmssIFR1aUxvYWRlciwgVHVpTm90aWZpY2F0aW9uIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuXG5pbXBvcnQgeyBTY0Zvcm1hdERhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMvc2MtZm9ybWF0LWRhdGUnO1xuaW1wb3J0IHsgU2NQcm9mc3Ryb3lEcmFmdFN0YXRlIH0gZnJvbSAnLi4vZW51bXMvc2MtcHJvZnN0cm95LWRyYWZ0LXN0YXRlJztcbmltcG9ydCB7IFNjUHJvZnN0cm95RHJhZnRIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL3NjLXByb2ZzdHJveS1kcmFmdC1oZWxwZXInO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDQv9Cw0L3QtdC70Lgg0YHQvtGB0YLQvtGP0L3QuNGPINCw0LrRgtGD0LDQu9C40LfQsNGG0LjQuCDRh9C10YDQvdC+0LLQuNC60LAg0J/RgNC+0YTRgdGC0YDQvtC5INGBINC00LXQudGB0YLQstC40Y/QvNC4INCw0LrRgtGD0LDQu9C40LfQsNGG0LjQuCDQuCDQv9C10YDQtdGB0LHQvtGA0LrQuC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3NjLXByb2ZzdHJveS1hY3R1YWxpemF0aW9uLXBhbmVsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtcHJvZnN0cm95LWFjdHVhbGl6YXRpb24tcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtUdWlOb3RpZmljYXRpb24sIFR1aUxvYWRlciwgVHVpQnV0dG9uLCBUdWlMaW5rLCBTY0Zvcm1hdERhdGVQaXBlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NQcm9mc3Ryb3lBY3R1YWxpemF0aW9uUGFuZWxDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L/RgNC40LvQvtC20LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1cmxzID0gaW5qZWN0KFNDX1VSTFMpO1xuXG4gICAgLyoqXG4gICAgICog0J7QsdGK0LXQutGCINC00L7QutGD0LzQtdC90YLQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblxuICAgIC8qKlxuICAgICAqINCn0LXRgNC90L7QstC40Log0J/RgNC+0YTRgdGC0YDQvtC5LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBkcmFmdCA9IGlucHV0LnJlcXVpcmVkPFNjT3JkZXJEcmFmdD4oKTtcblxuICAgIC8qKlxuICAgICAqINCc0L7QvNC10L3Rgiwg0L3QsCDQutC+0YLQvtGA0YvQuSDQvtC/0YDQtdC00LXQu9GP0LXRgtGB0Y8g0YHQvtGB0YLQvtGP0L3QuNC1LiDQn9C10YDQtdC00LDRkdGC0YHRjyDRgdC90LDRgNGD0LbQuCDQuCDQvtCx0L3QvtCy0LvRj9C10YLRgdGPINC/0L4g0YLQsNC50LzQtdGA0YMg0L/RgNC+0LLQtdGA0LrQuCDRgdGA0L7QutCwLCDQuNC90LDRh9C1INC80LXRgtC60LAgwqvQlNCw0L3QvdGL0LUg0YPRgdGC0LDRgNC10LvQuMK7INC90LUg0YHQvNC10L3QuNGC0YHRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbm93ID0gaW5wdXQucmVxdWlyZWQ8RGF0ZT4oKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0LTQtdC50YHRgtCy0LjRjyDQvdCw0LQg0YfQtdGA0L3QvtCy0LjQutC+0Lwg0L3QtdC00L7RgdGC0YPQv9C90YsuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGJ1c3kgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQt9Cw0L/Rg9GB0LrQsCDQsNC60YLRg9Cw0LvQuNC30LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGFjdHVhbGl6ZSA9IG91dHB1dCgpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0LfQsNC/0YPRgdC60LAg0L/QtdGA0LXRgdCx0L7RgNC60Lgg0LjQtyDRhNCw0LnQu9CwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSByZWxvYWQgPSBvdXRwdXQoKTtcblxuICAgIC8qKlxuICAgICAqINCi0LXQutGD0YnQtdC1INGB0L7RgdGC0L7Rj9C90LjQtSDRh9C10YDQvdC+0LLQuNC60LAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YXRlID0gY29tcHV0ZWQoKCkgPT4gU2NQcm9mc3Ryb3lEcmFmdEhlbHBlci5nZXRTdGF0ZSh0aGlzLmRyYWZ0KCkuYWN0dWFsaXphdGlvbiwgdGhpcy5ub3coKSkpO1xuXG4gICAgLyoqXG4gICAgICog0JTQsNC90L3Ri9C1INC+0LEg0L7RgtC+0LHRgNCw0LbQtdC90LjQuCDRgdC+0YHRgtC+0Y/QvdC40Y8uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YXRlVmlldyA9IGNvbXB1dGVkKCgpID0+IFNjUHJvZnN0cm95RHJhZnRIZWxwZXIuZ2V0UGFuZWxWaWV3KHRoaXMuZHJhZnQoKSwgdGhpcy5ub3coKSkpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQstGL0L/QvtC70L3Rj9C10YLRgdGPINC+0LHRgNCw0LHQvtGC0LrQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNQcm9jZXNzaW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZSgpID09PSBTY1Byb2ZzdHJveURyYWZ0U3RhdGUucHJvY2Vzc2luZyk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INGB0YDQvtC6INC00LXQudGB0YLQstC40Y8g0LDQutGC0YPQsNC70LjQt9Cw0YbQuNC4INC10YnRkSDQvdC1INC40YHRgtGR0LouXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzQWN0dWFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZSgpID09PSBTY1Byb2ZzdHJveURyYWZ0U3RhdGUuYWN0dWFsKTtcblxuICAgIC8qKlxuICAgICAqINCQ0LHRgdC+0LvRjtGC0L3QsNGPINGB0YHRi9C70LrQsCDQvdCwINC40YHRhdC+0LTQvdGL0Lkg0YTQsNC50Lsg0LfQsNGP0LLQutC4LiDQpNCw0LnQuyDQu9C10LbQuNGCINC90LAg0YXQvtGB0YLQtSBBUEksINCw0LTRgNC10YEgQVBJINC80L7QttC10YIg0LHRi9GC0Ywg0YPQutCw0LfQsNC9INC+0YLQvdC+0YHQuNGC0LXQu9GM0L3QviDRgdCw0LnRgtCwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBmaWxlVXJsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmRyYWZ0KCkuZmlsZT8udXJsO1xuXG4gICAgICAgIHJldHVybiB1cmwgPyBuZXcgVVJMKHVybCwgbmV3IFVSTCh0aGlzLnVybHMuYXBpVXJsLCB0aGlzLmRvY3VtZW50LmJhc2VVUkkpKS5ocmVmIDogbnVsbDtcbiAgICB9KTtcbn1cbiIsIkBsZXQgYWN0dWFsaXphdGlvbiA9IGRyYWZ0KCkuYWN0dWFsaXphdGlvbjtcbkBsZXQgdmlldyA9IHN0YXRlVmlldygpO1xuXG48dHVpLW5vdGlmaWNhdGlvblxuICAgIFthcHBlYXJhbmNlXT1cInZpZXcuYXBwZWFyYW5jZVwiXG4gICAgc2l6ZT1cIm1cIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0yIHRleHQtc3RhcnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnQgZ2FwLTIgdGV4dC1zdGFydCBmb250LWJvbGRcIj5cbiAgICAgICAgICAgIEBpZiAoaXNQcm9jZXNzaW5nKCkpIHtcbiAgICAgICAgICAgICAgICA8dHVpLWxvYWRlciBzaXplPVwic1wiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7eyB2aWV3LmxhYmVsIH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0xXCI+XG4gICAgICAgICAgICBAaWYgKGFjdHVhbGl6YXRpb24/LmFjdHVhbGl6ZWRBdDsgYXMgYWN0dWFsaXplZEF0KSB7XG4gICAgICAgICAgICAgICAgPHNwYW4+0JDQutGC0YPQsNC70LjQt9C40YDQvtCy0LDQvSB7eyBhY3R1YWxpemVkQXQgfCBzY0Zvcm1hdERhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGlzQWN0dWFsKCkgJiYgYWN0dWFsaXphdGlvbj8uZXhwaXJlc0F0OyBhcyBleHBpcmVzQXQpIHtcbiAgICAgICAgICAgICAgICA8c3Bhbj7QkNC60YLRg9Cw0LvQtdC9INC00L4ge3sgZXhwaXJlc0F0IHwgc2NGb3JtYXREYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICh2aWV3LmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdmlldy5kZXNjcmlwdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoYWN0dWFsaXphdGlvbj8uZXJyb3I7IGFzIGVycm9yKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGRcIj57eyBlcnJvciB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZmlsZVVybCgpOyBhcyB1cmwpIHtcbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAg0KTQsNC50Lsg0LfQsNGP0LLQutC4OlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgdHVpTGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwidXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJyZWFrLWFsbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRyYWZ0KCkuZmlsZT8ub3JpZ2luYWxOYW1lID8/ICfRgdC60LDRh9Cw0YLRjCcgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGdhcC0yXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkucmVmcmVzaC1jd1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZygpIHx8IGJ1c3koKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdHVhbGl6ZS5lbWl0KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCQ0LrRgtGD0LDQu9C40LfQuNGA0L7QstCw0YLRjFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuZmlsZS11cFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZygpIHx8IGJ1c3koKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbG9hZC5lbWl0KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCh0L7QsdGA0LDRgtGMINC30LDQvdC+0LLQviDQuNC3INGE0LDQudC70LBcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvdHVpLW5vdGlmaWNhdGlvbj5cbiJdfQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, input } from '@angular/core';
|
|
2
|
+
import { TuiBadge } from '@taiga-ui/kit';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Компонент метки «Профстрой» у черновика или заказа, созданного из файла программы «Профстрой».
|
|
6
|
+
*/
|
|
7
|
+
export class ScProfstroyBadgeComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
/**
|
|
10
|
+
* Размер метки.
|
|
11
|
+
*/
|
|
12
|
+
this.size = input('m');
|
|
13
|
+
}
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScProfstroyBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: ScProfstroyBadgeComponent, isStandalone: true, selector: "sc-profstroy-badge", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<tui-badge\n class=\"!font-medium\"\n appearance=\"primary\"\n [size]=\"size()\"\n>\n \u041F\u0440\u043E\u0444\u0441\u0442\u0440\u043E\u0439\n</tui-badge>\n", dependencies: [{ kind: "directive", type: TuiBadge, selector: "tui-badge,[tuiBadge]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScProfstroyBadgeComponent, decorators: [{
|
|
18
|
+
type: Component,
|
|
19
|
+
args: [{ standalone: true, selector: 'sc-profstroy-badge', imports: [TuiBadge], changeDetection: ChangeDetectionStrategy.OnPush, template: "<tui-badge\n class=\"!font-medium\"\n appearance=\"primary\"\n [size]=\"size()\"\n>\n \u041F\u0440\u043E\u0444\u0441\u0442\u0440\u043E\u0439\n</tui-badge>\n" }]
|
|
20
|
+
}] });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJvZnN0cm95LWJhZGdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9vcmRlci9kcmFmdC9wcm9mc3Ryb3kvYmFkZ2Uvc2MtcHJvZnN0cm95LWJhZGdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9vcmRlci9kcmFmdC9wcm9mc3Ryb3kvYmFkZ2Uvc2MtcHJvZnN0cm95LWJhZGdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXpDOztHQUVHO0FBUUgsTUFBTSxPQUFPLHlCQUF5QjtJQVB0QztRQVFJOztXQUVHO1FBQ2EsU0FBSSxHQUFHLEtBQUssQ0FBWSxHQUFHLENBQUMsQ0FBQztLQUNoRDsrR0FMWSx5QkFBeUI7bUdBQXpCLHlCQUF5QiwrTUNidEMsMEtBT0EsNENER2MsUUFBUTs7NEZBR1QseUJBQXlCO2tCQVByQyxTQUFTO2lDQUNNLElBQUksWUFDTixvQkFBb0IsV0FFckIsQ0FBQyxRQUFRLENBQUMsbUJBQ0YsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUdWlCYWRnZSB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDQvNC10YLQutC4IMKr0J/RgNC+0YTRgdGC0YDQvtC5wrsg0YMg0YfQtdGA0L3QvtCy0LjQutCwINC40LvQuCDQt9Cw0LrQsNC30LAsINGB0L7Qt9C00LDQvdC90L7Qs9C+INC40Lcg0YTQsNC50LvQsCDQv9GA0L7Qs9GA0LDQvNC80YsgwqvQn9GA0L7RhNGB0YLRgNC+0LnCuy5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3NjLXByb2ZzdHJveS1iYWRnZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLXByb2ZzdHJveS1iYWRnZS5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1R1aUJhZGdlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NQcm9mc3Ryb3lCYWRnZUNvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICog0KDQsNC30LzQtdGAINC80LXRgtC60LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHNpemUgPSBpbnB1dDwncycgfCAnbSc+KCdtJyk7XG59XG4iLCI8dHVpLWJhZGdlXG4gICAgY2xhc3M9XCIhZm9udC1tZWRpdW1cIlxuICAgIGFwcGVhcmFuY2U9XCJwcmltYXJ5XCJcbiAgICBbc2l6ZV09XCJzaXplKClcIlxuPlxuICAgINCf0YDQvtGE0YHRgtGA0L7QuVxuPC90dWktYmFkZ2U+XG4iXX0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
|
|
2
|
+
import { TuiBadge } from '@taiga-ui/kit';
|
|
3
|
+
import { ScProfstroyBadgeComponent } from '../badge/sc-profstroy-badge.component';
|
|
4
|
+
import { ScProfstroyDraftHelper } from '../helpers/sc-profstroy-draft-helper';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Компонент меток черновика Профстрой: признак и текущее состояние обработки.
|
|
8
|
+
*/
|
|
9
|
+
export class ScProfstroyDraftBadgesComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
/**
|
|
12
|
+
* Данные об актуализации черновика.
|
|
13
|
+
*/
|
|
14
|
+
this.actualization = input();
|
|
15
|
+
/**
|
|
16
|
+
* Момент, на который определяется состояние. Передаётся снаружи и обновляется по таймеру проверки срока, иначе метка «Данные устарели» не сменится.
|
|
17
|
+
*/
|
|
18
|
+
this.now = input.required();
|
|
19
|
+
/**
|
|
20
|
+
* Данные об отображении состояния.
|
|
21
|
+
*/
|
|
22
|
+
this.stateView = computed(() => ScProfstroyDraftHelper.getStateView(this.actualization(), this.now()));
|
|
23
|
+
}
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScProfstroyDraftBadgesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: ScProfstroyDraftBadgesComponent, isStandalone: true, selector: "sc-profstroy-draft-badges", inputs: { actualization: { classPropertyName: "actualization", publicName: "actualization", isSignal: true, isRequired: false, transformFunction: null }, now: { classPropertyName: "now", publicName: "now", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<span class=\"inline-flex flex-wrap items-center gap-1\">\n <sc-profstroy-badge />\n <tui-badge\n class=\"!font-medium\"\n [appearance]=\"stateView().appearance\"\n size=\"m\"\n >\n {{ stateView().label }}\n </tui-badge>\n</span>\n", dependencies: [{ kind: "directive", type: TuiBadge, selector: "tui-badge,[tuiBadge]", inputs: ["size"] }, { kind: "component", type: ScProfstroyBadgeComponent, selector: "sc-profstroy-badge", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26
|
+
}
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScProfstroyDraftBadgesComponent, decorators: [{
|
|
28
|
+
type: Component,
|
|
29
|
+
args: [{ standalone: true, selector: 'sc-profstroy-draft-badges', imports: [TuiBadge, ScProfstroyBadgeComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span class=\"inline-flex flex-wrap items-center gap-1\">\n <sc-profstroy-badge />\n <tui-badge\n class=\"!font-medium\"\n [appearance]=\"stateView().appearance\"\n size=\"m\"\n >\n {{ stateView().label }}\n </tui-badge>\n</span>\n" }]
|
|
30
|
+
}] });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJvZnN0cm95LWRyYWZ0LWJhZGdlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvb3JkZXIvZHJhZnQvcHJvZnN0cm95L2JhZGdlcy9zYy1wcm9mc3Ryb3ktZHJhZnQtYmFkZ2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9vcmRlci9kcmFmdC9wcm9mc3Ryb3kvYmFkZ2VzL3NjLXByb2ZzdHJveS1kcmFmdC1iYWRnZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7O0FBRTlFOztHQUVHO0FBUUgsTUFBTSxPQUFPLCtCQUErQjtJQVA1QztRQVFJOztXQUVHO1FBQ2Esa0JBQWEsR0FBRyxLQUFLLEVBQXlDLENBQUM7UUFFL0U7O1dBRUc7UUFDYSxRQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBUSxDQUFDO1FBRTdDOztXQUVHO1FBQ2dCLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ3hIOytHQWZZLCtCQUErQjttR0FBL0IsK0JBQStCLGtXQ2pCNUMsaVJBVUEsNENESWMsUUFBUSxtRkFBRSx5QkFBeUI7OzRGQUdwQywrQkFBK0I7a0JBUDNDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLDJCQUEyQixXQUU1QixDQUFDLFFBQVEsRUFBRSx5QkFBeUIsQ0FBQyxtQkFDN0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2NPcmRlckRyYWZ0QWN0dWFsaXphdGlvbiB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpQmFkZ2UgfSBmcm9tICdAdGFpZ2EtdWkva2l0JztcblxuaW1wb3J0IHsgU2NQcm9mc3Ryb3lCYWRnZUNvbXBvbmVudCB9IGZyb20gJy4uL2JhZGdlL3NjLXByb2ZzdHJveS1iYWRnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NQcm9mc3Ryb3lEcmFmdEhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvc2MtcHJvZnN0cm95LWRyYWZ0LWhlbHBlcic7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINC80LXRgtC+0Log0YfQtdGA0L3QvtCy0LjQutCwINCf0YDQvtGE0YHRgtGA0L7QuTog0L/RgNC40LfQvdCw0Log0Lgg0YLQtdC60YPRidC10LUg0YHQvtGB0YLQvtGP0L3QuNC1INC+0LHRgNCw0LHQvtGC0LrQuC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3NjLXByb2ZzdHJveS1kcmFmdC1iYWRnZXMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1wcm9mc3Ryb3ktZHJhZnQtYmFkZ2VzLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbVHVpQmFkZ2UsIFNjUHJvZnN0cm95QmFkZ2VDb21wb25lbnRdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY1Byb2ZzdHJveURyYWZ0QmFkZ2VzQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiDQlNCw0L3QvdGL0LUg0L7QsSDQsNC60YLRg9Cw0LvQuNC30LDRhtC40Lgg0YfQtdGA0L3QvtCy0LjQutCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBhY3R1YWxpemF0aW9uID0gaW5wdXQ8U2NPcmRlckRyYWZ0QWN0dWFsaXphdGlvbiB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCc0L7QvNC10L3Rgiwg0L3QsCDQutC+0YLQvtGA0YvQuSDQvtC/0YDQtdC00LXQu9GP0LXRgtGB0Y8g0YHQvtGB0YLQvtGP0L3QuNC1LiDQn9C10YDQtdC00LDRkdGC0YHRjyDRgdC90LDRgNGD0LbQuCDQuCDQvtCx0L3QvtCy0LvRj9C10YLRgdGPINC/0L4g0YLQsNC50LzQtdGA0YMg0L/RgNC+0LLQtdGA0LrQuCDRgdGA0L7QutCwLCDQuNC90LDRh9C1INC80LXRgtC60LAgwqvQlNCw0L3QvdGL0LUg0YPRgdGC0LDRgNC10LvQuMK7INC90LUg0YHQvNC10L3QuNGC0YHRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbm93ID0gaW5wdXQucmVxdWlyZWQ8RGF0ZT4oKTtcblxuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQvtCxINC+0YLQvtCx0YDQsNC20LXQvdC40Lgg0YHQvtGB0YLQvtGP0L3QuNGPLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzdGF0ZVZpZXcgPSBjb21wdXRlZCgoKSA9PiBTY1Byb2ZzdHJveURyYWZ0SGVscGVyLmdldFN0YXRlVmlldyh0aGlzLmFjdHVhbGl6YXRpb24oKSwgdGhpcy5ub3coKSkpO1xufVxuIiwiPHNwYW4gY2xhc3M9XCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgPHNjLXByb2ZzdHJveS1iYWRnZSAvPlxuICAgIDx0dWktYmFkZ2VcbiAgICAgICAgY2xhc3M9XCIhZm9udC1tZWRpdW1cIlxuICAgICAgICBbYXBwZWFyYW5jZV09XCJzdGF0ZVZpZXcoKS5hcHBlYXJhbmNlXCJcbiAgICAgICAgc2l6ZT1cIm1cIlxuICAgID5cbiAgICAgICAge3sgc3RhdGVWaWV3KCkubGFiZWwgfX1cbiAgICA8L3R1aS1iYWRnZT5cbjwvc3Bhbj5cbiJdfQ==
|
package/esm2022/order/draft/profstroy/create-dialog/sc-profstroy-draft-create-dialog.component.mjs
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/unbound-method */
|
|
2
|
+
import { AsyncPipe } from '@angular/common';
|
|
3
|
+
import { HttpErrorResponse, HttpStatusCode } from '@angular/common/http';
|
|
4
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, inject, signal } from '@angular/core';
|
|
5
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
|
+
import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
7
|
+
import { ScOrderDraftsService } from '@snabcentr/client-core';
|
|
8
|
+
import { TuiValidationError } from '@taiga-ui/cdk';
|
|
9
|
+
import { TuiButton, TuiError, TuiLabel, TuiNotification, TuiTextfield } from '@taiga-ui/core';
|
|
10
|
+
import { TUI_INPUT_FILE_TEXTS, TUI_INPUT_FILES_OPTIONS, TuiButtonLoading, tuiCreateFileFormatValidator, tuiCreateFileSizeValidator, TuiFieldErrorPipe, TuiFileRejectedPipe, TuiFiles, } from '@taiga-ui/kit';
|
|
11
|
+
import { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';
|
|
12
|
+
import { finalize, map, switchMap } from 'rxjs';
|
|
13
|
+
import { ScApiErrorHelper } from '../../../../helpers/sc-api-error-helper';
|
|
14
|
+
import { ScFileHelper } from '../../../../helpers/sc-file-helper';
|
|
15
|
+
import * as i0 from "@angular/core";
|
|
16
|
+
import * as i1 from "@angular/forms";
|
|
17
|
+
import * as i2 from "@taiga-ui/kit";
|
|
18
|
+
import * as i3 from "@taiga-ui/core";
|
|
19
|
+
/**
|
|
20
|
+
* Компонент диалога создания черновика заказа из файла программы «Профстрой».
|
|
21
|
+
*/
|
|
22
|
+
export class ScProfstroyDraftCreateDialogComponent {
|
|
23
|
+
constructor() {
|
|
24
|
+
/**
|
|
25
|
+
* Контекст диалогового окна, в котором открыт компонент.
|
|
26
|
+
*/
|
|
27
|
+
this.context = inject(POLYMORPHEUS_CONTEXT);
|
|
28
|
+
/**
|
|
29
|
+
* Сервис для работы с черновиками заказов.
|
|
30
|
+
*/
|
|
31
|
+
this.draftsService = inject(ScOrderDraftsService);
|
|
32
|
+
/**
|
|
33
|
+
* Ссылка для автоматического управления уничтожением зависимостей.
|
|
34
|
+
*/
|
|
35
|
+
this.destroyRef = inject(DestroyRef);
|
|
36
|
+
/**
|
|
37
|
+
* Настройки поля выбора файлов, в том числе наибольший размер файла из настроек приложения.
|
|
38
|
+
*/
|
|
39
|
+
this.inputFilesOptions = inject(TUI_INPUT_FILES_OPTIONS);
|
|
40
|
+
/**
|
|
41
|
+
* Допустимое расширение файла.
|
|
42
|
+
*/
|
|
43
|
+
this.accept = '.xlsx';
|
|
44
|
+
/**
|
|
45
|
+
* Наибольшая длина названия заявки.
|
|
46
|
+
*/
|
|
47
|
+
this.nameMaxLength = 255;
|
|
48
|
+
/**
|
|
49
|
+
* Форма создания черновика. Формат и размер файла проверяются на самом поле: после выбора файла поле выбора убирается вместе со своими проверками.
|
|
50
|
+
*/
|
|
51
|
+
this.form = new FormGroup({
|
|
52
|
+
file: new FormControl(null, [Validators.required, tuiCreateFileFormatValidator(this.accept), tuiCreateFileSizeValidator(this.inputFilesOptions.maxFileSize)]),
|
|
53
|
+
name: new FormControl('', { nonNullable: true, validators: Validators.maxLength(this.nameMaxLength) }),
|
|
54
|
+
});
|
|
55
|
+
/**
|
|
56
|
+
* Признак выполнения запроса создания.
|
|
57
|
+
*/
|
|
58
|
+
this.submitting = signal(false);
|
|
59
|
+
/**
|
|
60
|
+
* Признак попытки создать заявку. До неё незаполненное поле файла ошибкой не подсвечивается: поле теряет фокус уже при открытии окна выбора файла.
|
|
61
|
+
*/
|
|
62
|
+
this.submitAttempted = signal(false);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Удаляет выбранный файл.
|
|
66
|
+
*/
|
|
67
|
+
removeFile() {
|
|
68
|
+
this.form.controls.file.setValue(null);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Отправляет файл и создаёт черновик. Ошибки сервера с прошлой отправки не мешают отправить форму снова.
|
|
72
|
+
*/
|
|
73
|
+
submit() {
|
|
74
|
+
this.submitAttempted.set(true);
|
|
75
|
+
Object.values(this.form.controls).forEach((control) => {
|
|
76
|
+
control.updateValueAndValidity();
|
|
77
|
+
});
|
|
78
|
+
this.form.markAllAsTouched();
|
|
79
|
+
const file = this.form.controls.file.value;
|
|
80
|
+
if (this.form.invalid || !file || this.submitting()) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
this.submitting.set(true);
|
|
84
|
+
ScFileHelper.readAsUploadedFile$(file)
|
|
85
|
+
.pipe(switchMap((uploadedFile) => this.draftsService.createProfstroy$({ file: uploadedFile, name: this.form.controls.name.value.trim() || undefined })), finalize(() => {
|
|
86
|
+
this.submitting.set(false);
|
|
87
|
+
}), takeUntilDestroyed(this.destroyRef))
|
|
88
|
+
.subscribe({
|
|
89
|
+
next: (draft) => {
|
|
90
|
+
this.context.completeWith(draft);
|
|
91
|
+
},
|
|
92
|
+
error: (error) => {
|
|
93
|
+
this.applyError(error);
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Показывает ошибку создания в форме: ошибки проверки данных у полей, ошибку чтения файла у поля файла, остальные ошибкой формы (401 обрабатывает авторизация).
|
|
99
|
+
* Диалог остаётся открытым.
|
|
100
|
+
*
|
|
101
|
+
* @param error Ошибка чтения файла или запроса.
|
|
102
|
+
*/
|
|
103
|
+
applyError(error) {
|
|
104
|
+
if (!(error instanceof HttpErrorResponse)) {
|
|
105
|
+
this.form.controls.file.setErrors({ serverResponse: new TuiValidationError('Не удалось прочитать файл.') });
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (error.status === HttpStatusCode.Unauthorized) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const { errors } = (error.error ?? {});
|
|
112
|
+
if (error.status !== HttpStatusCode.UnprocessableEntity || !errors) {
|
|
113
|
+
this.form.setErrors({ serverResponse: new TuiValidationError(ScApiErrorHelper.getMessage(error, 'Не удалось создать заявку.')) });
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
Object.entries(errors).forEach(([key, messages]) => {
|
|
117
|
+
const control = key === 'name' ? this.form.controls.name : this.form.controls.file;
|
|
118
|
+
control.setErrors({ serverResponse: new TuiValidationError(messages.join(' ')) });
|
|
119
|
+
control.markAsTouched();
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScProfstroyDraftCreateDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
123
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScProfstroyDraftCreateDialogComponent, isStandalone: true, selector: "sc-profstroy-draft-create-dialog", providers: [
|
|
124
|
+
{
|
|
125
|
+
provide: TUI_INPUT_FILE_TEXTS,
|
|
126
|
+
useFactory: () => inject(TUI_INPUT_FILE_TEXTS, { skipSelf: true }).pipe(map((texts) => ({ ...texts, formatRejectionReason: 'Файл должен быть в формате .xlsx' }))),
|
|
127
|
+
},
|
|
128
|
+
], ngImport: i0, template: "<form\n [formGroup]=\"form\"\n class=\"flex flex-col gap-5\"\n (ngSubmit)=\"submit()\"\n>\n <!-- \u0424\u0430\u0439\u043B. \u041F\u0440\u0438\u0447\u0438\u043D\u0443 \u043E\u0442\u043A\u043B\u043E\u043D\u0435\u043D\u0438\u044F \u0444\u0430\u0439\u043B\u0430 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043E\u043A\u0430 \u0444\u0430\u0439\u043B\u0430, \u043F\u043E\u0434 \u043F\u043E\u043B\u0435\u043C \u043E\u043D\u0430 \u043D\u0435 \u043F\u043E\u0432\u0442\u043E\u0440\u044F\u0435\u0442\u0441\u044F. \u041D\u0435\u0437\u0430\u043F\u043E\u043B\u043D\u0435\u043D\u043D\u043E\u0435 \u043F\u043E\u043B\u0435 \u043F\u043E\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u0441\u043B\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0438 \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u0437\u0430\u044F\u0432\u043A\u0443. -->\n <div class=\"flex flex-col gap-1\">\n @let file = form.controls.file.value;\n @let rejected = file | tuiFileRejected: { accept } | async;\n @if (!file) {\n <label tuiInputFiles>\n <input\n tuiInputFiles\n formControlName=\"file\"\n [accept]=\"accept\"\n [invalid]=\"submitAttempted() ? null : false\"\n />\n </label>\n }\n <tui-files>\n @if (file) {\n <tui-file\n [state]=\"rejected ? 'error' : 'normal'\"\n [file]=\"rejected ?? file\"\n (remove)=\"removeFile()\"\n />\n }\n </tui-files>\n <span class=\"text-body-s text-tui-text-02\">\u0424\u0430\u0439\u043B Excel, \u0432\u044B\u0433\u0440\u0443\u0436\u0435\u043D\u043D\u044B\u0439 \u0438\u0437 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B \u00AB\u041F\u0440\u043E\u0444\u0441\u0442\u0440\u043E\u0439\u00BB: {{ accept }}</span>\n @if (!rejected) {\n @let fileErrorVisible = submitAttempted() || !form.controls.file.hasError('required');\n <tui-error\n formControlName=\"file\"\n [error]=\"fileErrorVisible ? (['required', 'serverResponse'] | tuiFieldError | async) : null\"\n />\n }\n </div>\n\n <!-- \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0437\u0430\u044F\u0432\u043A\u0438. -->\n <label tuiLabel>\n \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0437\u0430\u044F\u0432\u043A\u0438\n <tui-textfield>\n <input\n tuiTextfield\n formControlName=\"name\"\n placeholder=\"\u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440: \u0411\u0430\u043B\u043A\u043E\u043D\u044B, \u043E\u0431\u044A\u0435\u043A\u0442 \u043D\u0430 \u041B\u0435\u043D\u0438\u043D\u0430\"\n autocomplete=\"off\"\n [maxLength]=\"nameMaxLength\"\n />\n </tui-textfield>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n @if (form.errors?.['serverResponse']) {\n <tui-error [error]=\"[] | tuiFieldError | async\" />\n }\n\n <tui-notification\n appearance=\"info\"\n size=\"m\"\n >\n \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u0444\u0430\u0439\u043B\u0430 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u0432 \u0444\u043E\u043D\u0435: \u043F\u043E\u0437\u0438\u0446\u0438\u0438 \u0438 \u0446\u0435\u043D\u044B \u043F\u043E\u044F\u0432\u044F\u0442\u0441\u044F \u0432 \u0447\u0435\u0440\u043D\u043E\u0432\u0438\u043A\u0435 \u0447\u0435\u0440\u0435\u0437 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u043E\u0435 \u0432\u0440\u0435\u043C\u044F.\n </tui-notification>\n\n <div class=\"flex flex-wrap gap-2\">\n <button\n tuiButton\n type=\"submit\"\n iconStart=\"@tui.sc.send\"\n [loading]=\"submitting()\"\n >\n \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u0437\u0430\u044F\u0432\u043A\u0443\n </button>\n <button\n tuiButton\n type=\"button\"\n appearance=\"secondary\"\n [disabled]=\"submitting()\"\n (click)=\"context.$implicit.complete()\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.TuiFile, selector: "tui-file,a[tuiFile],button[tuiFile]", inputs: ["file", "state", "size", "showDelete", "showSize", "leftContent"], outputs: ["remove"] }, { kind: "component", type: i2.TuiInputFiles, selector: "label[tuiInputFiles]" }, { kind: "component", type: i2.TuiFilesComponent, selector: "tui-files", inputs: ["max", "expanded"], outputs: ["expandedChange"] }, { kind: "pipe", type: i2.TuiFileRejectedPipe, name: "tuiFileRejected" }, { kind: "directive", type: i2.TuiInputFilesDirective, selector: "input[tuiInputFiles]", outputs: ["reject"] }, { kind: "directive", type: TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "pipe", type: TuiFieldErrorPipe, name: "tuiFieldError" }, { kind: "component", type: i3.TuiTextfieldComponent, selector: "tui-textfield:not([multi])" }, { kind: "directive", type: i3.TuiTextfieldDirective, selector: "input[tuiTextfield]:not([tuiInputCard]):not([tuiInputExpire]):not([tuiInputCVC])" }, { kind: "directive", type: TuiNotification, selector: "tui-notification,a[tuiNotification],button[tuiNotification]", inputs: ["appearance", "icon", "size"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
129
|
+
}
|
|
130
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScProfstroyDraftCreateDialogComponent, decorators: [{
|
|
131
|
+
type: Component,
|
|
132
|
+
args: [{ standalone: true, selector: 'sc-profstroy-draft-create-dialog', imports: [ReactiveFormsModule, TuiFiles, TuiFileRejectedPipe, TuiLabel, TuiError, TuiFieldErrorPipe, TuiTextfield, TuiNotification, TuiButton, TuiButtonLoading, AsyncPipe], providers: [
|
|
133
|
+
{
|
|
134
|
+
provide: TUI_INPUT_FILE_TEXTS,
|
|
135
|
+
useFactory: () => inject(TUI_INPUT_FILE_TEXTS, { skipSelf: true }).pipe(map((texts) => ({ ...texts, formatRejectionReason: 'Файл должен быть в формате .xlsx' }))),
|
|
136
|
+
},
|
|
137
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n [formGroup]=\"form\"\n class=\"flex flex-col gap-5\"\n (ngSubmit)=\"submit()\"\n>\n <!-- \u0424\u0430\u0439\u043B. \u041F\u0440\u0438\u0447\u0438\u043D\u0443 \u043E\u0442\u043A\u043B\u043E\u043D\u0435\u043D\u0438\u044F \u0444\u0430\u0439\u043B\u0430 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043E\u043A\u0430 \u0444\u0430\u0439\u043B\u0430, \u043F\u043E\u0434 \u043F\u043E\u043B\u0435\u043C \u043E\u043D\u0430 \u043D\u0435 \u043F\u043E\u0432\u0442\u043E\u0440\u044F\u0435\u0442\u0441\u044F. \u041D\u0435\u0437\u0430\u043F\u043E\u043B\u043D\u0435\u043D\u043D\u043E\u0435 \u043F\u043E\u043B\u0435 \u043F\u043E\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u0441\u043B\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0438 \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u0437\u0430\u044F\u0432\u043A\u0443. -->\n <div class=\"flex flex-col gap-1\">\n @let file = form.controls.file.value;\n @let rejected = file | tuiFileRejected: { accept } | async;\n @if (!file) {\n <label tuiInputFiles>\n <input\n tuiInputFiles\n formControlName=\"file\"\n [accept]=\"accept\"\n [invalid]=\"submitAttempted() ? null : false\"\n />\n </label>\n }\n <tui-files>\n @if (file) {\n <tui-file\n [state]=\"rejected ? 'error' : 'normal'\"\n [file]=\"rejected ?? file\"\n (remove)=\"removeFile()\"\n />\n }\n </tui-files>\n <span class=\"text-body-s text-tui-text-02\">\u0424\u0430\u0439\u043B Excel, \u0432\u044B\u0433\u0440\u0443\u0436\u0435\u043D\u043D\u044B\u0439 \u0438\u0437 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B \u00AB\u041F\u0440\u043E\u0444\u0441\u0442\u0440\u043E\u0439\u00BB: {{ accept }}</span>\n @if (!rejected) {\n @let fileErrorVisible = submitAttempted() || !form.controls.file.hasError('required');\n <tui-error\n formControlName=\"file\"\n [error]=\"fileErrorVisible ? (['required', 'serverResponse'] | tuiFieldError | async) : null\"\n />\n }\n </div>\n\n <!-- \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0437\u0430\u044F\u0432\u043A\u0438. -->\n <label tuiLabel>\n \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0437\u0430\u044F\u0432\u043A\u0438\n <tui-textfield>\n <input\n tuiTextfield\n formControlName=\"name\"\n placeholder=\"\u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440: \u0411\u0430\u043B\u043A\u043E\u043D\u044B, \u043E\u0431\u044A\u0435\u043A\u0442 \u043D\u0430 \u041B\u0435\u043D\u0438\u043D\u0430\"\n autocomplete=\"off\"\n [maxLength]=\"nameMaxLength\"\n />\n </tui-textfield>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n @if (form.errors?.['serverResponse']) {\n <tui-error [error]=\"[] | tuiFieldError | async\" />\n }\n\n <tui-notification\n appearance=\"info\"\n size=\"m\"\n >\n \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u0444\u0430\u0439\u043B\u0430 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u0432 \u0444\u043E\u043D\u0435: \u043F\u043E\u0437\u0438\u0446\u0438\u0438 \u0438 \u0446\u0435\u043D\u044B \u043F\u043E\u044F\u0432\u044F\u0442\u0441\u044F \u0432 \u0447\u0435\u0440\u043D\u043E\u0432\u0438\u043A\u0435 \u0447\u0435\u0440\u0435\u0437 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u043E\u0435 \u0432\u0440\u0435\u043C\u044F.\n </tui-notification>\n\n <div class=\"flex flex-wrap gap-2\">\n <button\n tuiButton\n type=\"submit\"\n iconStart=\"@tui.sc.send\"\n [loading]=\"submitting()\"\n >\n \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u0437\u0430\u044F\u0432\u043A\u0443\n </button>\n <button\n tuiButton\n type=\"button\"\n appearance=\"secondary\"\n [disabled]=\"submitting()\"\n (click)=\"context.$implicit.complete()\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n </div>\n</form>\n" }]
|
|
138
|
+
}] });
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJvZnN0cm95LWRyYWZ0LWNyZWF0ZS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL29yZGVyL2RyYWZ0L3Byb2ZzdHJveS9jcmVhdGUtZGlhbG9nL3NjLXByb2ZzdHJveS1kcmFmdC1jcmVhdGUtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9vcmRlci9kcmFmdC9wcm9mc3Ryb3kvY3JlYXRlLWRpYWxvZy9zYy1wcm9mc3Ryb3ktZHJhZnQtY3JlYXRlLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzREFBc0Q7QUFFdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBcUMsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBb0IsUUFBUSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEgsT0FBTyxFQUNILG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsZ0JB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aUIsMFNBQWdCLGVBQWUsZ0pBQUUsU0FBUyxvSUFBRSxnQkFBZ0Isa0hBQUUsU0FBUzs7NEZBU2pLLHFDQUFxQztrQkFiakQsU0FBUztpQ0FDTSxJQUFJLFlBQ04sa0NBQWtDLFdBRW5DLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLGFBQ2hLO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxvQkFBb0I7NEJBQzdCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsa0NBQWtDLEVBQUUsQ0FBQyxDQUFDLENBQUM7eUJBQ3JLO3FCQUNKLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kICovXG5cbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cFN0YXR1c0NvZGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNjSUFwaUVycm9yUmVzcG9uc2UsIFNjT3JkZXJEcmFmdCwgU2NPcmRlckRyYWZ0c1NlcnZpY2UgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFR1aVZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQnV0dG9uLCBUdWlEaWFsb2dDb250ZXh0LCBUdWlFcnJvciwgVHVpTGFiZWwsIFR1aU5vdGlmaWNhdGlvbiwgVHVpVGV4dGZpZWxkIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBUVUlfSU5QVVRfRklMRV9URVhUUyxcbiAgICBUVUlfSU5QVVRfRklMRVNfT1BUSU9OUyxcbiAgICBUdWlCdXR0b25Mb2FkaW5nLFxuICAgIHR1aUNyZWF0ZUZpbGVGb3JtYXRWYWxpZGF0b3IsXG4gICAgdHVpQ3JlYXRlRmlsZVNpemVWYWxpZGF0b3IsXG4gICAgVHVpRmllbGRFcnJvclBpcGUsXG4gICAgVHVpRmlsZVJlamVjdGVkUGlwZSxcbiAgICBUdWlGaWxlcyxcbn0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBQT0xZTU9SUEhFVVNfQ09OVEVYVCB9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHsgZmluYWxpemUsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjQXBpRXJyb3JIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9oZWxwZXJzL3NjLWFwaS1lcnJvci1oZWxwZXInO1xuaW1wb3J0IHsgU2NGaWxlSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vaGVscGVycy9zYy1maWxlLWhlbHBlcic7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINC00LjQsNC70L7Qs9CwINGB0L7Qt9C00LDQvdC40Y8g0YfQtdGA0L3QvtCy0LjQutCwINC30LDQutCw0LfQsCDQuNC3INGE0LDQudC70LAg0L/RgNC+0LPRgNCw0LzQvNGLIMKr0J/RgNC+0YTRgdGC0YDQvtC5wrsuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdzYy1wcm9mc3Ryb3ktZHJhZnQtY3JlYXRlLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLXByb2ZzdHJveS1kcmFmdC1jcmVhdGUtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgVHVpRmlsZXMsIFR1aUZpbGVSZWplY3RlZFBpcGUsIFR1aUxhYmVsLCBUdWlFcnJvciwgVHVpRmllbGRFcnJvclBpcGUsIFR1aVRleHRmaWVsZCwgVHVpTm90aWZpY2F0aW9uLCBUdWlCdXR0b24sIFR1aUJ1dHRvbkxvYWRpbmcsIEFzeW5jUGlwZV0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRVSV9JTlBVVF9GSUxFX1RFWFRTLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKCkgPT4gaW5qZWN0KFRVSV9JTlBVVF9GSUxFX1RFWFRTLCB7IHNraXBTZWxmOiB0cnVlIH0pLnBpcGUobWFwKCh0ZXh0cykgPT4gKHsgLi4udGV4dHMsIGZvcm1hdFJlamVjdGlvblJlYXNvbjogJ9Ck0LDQudC7INC00L7Qu9C20LXQvSDQsdGL0YLRjCDQsiDRhNC+0YDQvNCw0YLQtSAueGxzeCcgfSkpKSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY1Byb2ZzdHJveURyYWZ0Q3JlYXRlRGlhbG9nQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiDQmtC+0L3RgtC10LrRgdGCINC00LjQsNC70L7Qs9C+0LLQvtCz0L4g0L7QutC90LAsINCyINC60L7RgtC+0YDQvtC8INC+0YLQutGA0YvRgiDQutC+0LzQv9C+0L3QtdC90YIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRleHQgPSBpbmplY3Q8VHVpRGlhbG9nQ29udGV4dDxTY09yZGVyRHJhZnQgfCB1bmRlZmluZWQ+PihQT0xZTU9SUEhFVVNfQ09OVEVYVCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDRh9C10YDQvdC+0LLQuNC60LDQvNC4INC30LDQutCw0LfQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZHJhZnRzU2VydmljZSA9IGluamVjdChTY09yZGVyRHJhZnRzU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0LTQu9GPINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC+0LPQviDRg9C/0YDQsNCy0LvQtdC90LjRjyDRg9C90LjRh9GC0L7QttC10L3QuNC10Lwg0LfQsNCy0LjRgdC40LzQvtGB0YLQtdC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKlxuICAgICAqINCd0LDRgdGC0YDQvtC50LrQuCDQv9C+0LvRjyDQstGL0LHQvtGA0LAg0YTQsNC50LvQvtCyLCDQsiDRgtC+0Lwg0YfQuNGB0LvQtSDQvdCw0LjQsdC+0LvRjNGI0LjQuSDRgNCw0LfQvNC10YAg0YTQsNC50LvQsCDQuNC3INC90LDRgdGC0YDQvtC10Log0L/RgNC40LvQvtC20LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dEZpbGVzT3B0aW9ucyA9IGluamVjdChUVUlfSU5QVVRfRklMRVNfT1BUSU9OUyk7XG5cbiAgICAvKipcbiAgICAgKiDQlNC+0L/Rg9GB0YLQuNC80L7QtSDRgNCw0YHRiNC40YDQtdC90LjQtSDRhNCw0LnQu9CwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBhY2NlcHQgPSAnLnhsc3gnO1xuXG4gICAgLyoqXG4gICAgICog0J3QsNC40LHQvtC70YzRiNCw0Y8g0LTQu9C40L3QsCDQvdCw0LfQstCw0L3QuNGPINC30LDRj9Cy0LrQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbmFtZU1heExlbmd0aCA9IDI1NTtcblxuICAgIC8qKlxuICAgICAqINCk0L7RgNC80LAg0YHQvtC30LTQsNC90LjRjyDRh9C10YDQvdC+0LLQuNC60LAuINCk0L7RgNC80LDRgiDQuCDRgNCw0LfQvNC10YAg0YTQsNC50LvQsCDQv9GA0L7QstC10YDRj9GO0YLRgdGPINC90LAg0YHQsNC80L7QvCDQv9C+0LvQtTog0L/QvtGB0LvQtSDQstGL0LHQvtGA0LAg0YTQsNC50LvQsCDQv9C+0LvQtSDQstGL0LHQvtGA0LAg0YPQsdC40YDQsNC10YLRgdGPINCy0LzQtdGB0YLQtSDRgdC+INGB0LLQvtC40LzQuCDQv9GA0L7QstC10YDQutCw0LzQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBmaWxlOiBuZXcgRm9ybUNvbnRyb2w8RmlsZSB8IG51bGw+KG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0dWlDcmVhdGVGaWxlRm9ybWF0VmFsaWRhdG9yKHRoaXMuYWNjZXB0KSwgdHVpQ3JlYXRlRmlsZVNpemVWYWxpZGF0b3IodGhpcy5pbnB1dEZpbGVzT3B0aW9ucy5tYXhGaWxlU2l6ZSldKSxcbiAgICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycsIHsgbm9uTnVsbGFibGU6IHRydWUsIHZhbGlkYXRvcnM6IFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMubmFtZU1heExlbmd0aCkgfSksXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDQstGL0L/QvtC70L3QtdC90LjRjyDQt9Cw0L/RgNC+0YHQsCDRgdC+0LfQtNCw0L3QuNGPLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzdWJtaXR0aW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INC/0L7Qv9GL0YLQutC4INGB0L7Qt9C00LDRgtGMINC30LDRj9Cy0LrRgy4g0JTQviDQvdC10ZEg0L3QtdC30LDQv9C+0LvQvdC10L3QvdC+0LUg0L/QvtC70LUg0YTQsNC50LvQsCDQvtGI0LjQsdC60L7QuSDQvdC1INC/0L7QtNGB0LLQtdGH0LjQstCw0LXRgtGB0Y86INC/0L7Qu9C1INGC0LXRgNGP0LXRgiDRhNC+0LrRg9GBINGD0LbQtSDQv9GA0Lgg0L7RgtC60YDRi9GC0LjQuCDQvtC60L3QsCDQstGL0LHQvtGA0LAg0YTQsNC50LvQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3VibWl0QXR0ZW1wdGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqINCj0LTQsNC70Y/QtdGCINCy0YvQsdGA0LDQvdC90YvQuSDRhNCw0LnQuy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVtb3ZlRmlsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmZpbGUuc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7RgtC/0YDQsNCy0LvRj9C10YIg0YTQsNC50Lsg0Lgg0YHQvtC30LTQsNGR0YIg0YfQtdGA0L3QvtCy0LjQui4g0J7RiNC40LHQutC4INGB0LXRgNCy0LXRgNCwINGBINC/0YDQvtGI0LvQvtC5INC+0YLQv9GA0LDQstC60Lgg0L3QtSDQvNC10YjQsNGO0YIg0L7RgtC/0YDQsNCy0LjRgtGMINGE0L7RgNC80YMg0YHQvdC+0LLQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3VibWl0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1Ym1pdEF0dGVtcHRlZC5zZXQodHJ1ZSk7XG4gICAgICAgIE9iamVjdC52YWx1ZXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sKSA9PiB7XG4gICAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG5cbiAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMuZm9ybS5jb250cm9scy5maWxlLnZhbHVlO1xuXG4gICAgICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCB8fCAhZmlsZSB8fCB0aGlzLnN1Ym1pdHRpbmcoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdWJtaXR0aW5nLnNldCh0cnVlKTtcblxuICAgICAgICBTY0ZpbGVIZWxwZXIucmVhZEFzVXBsb2FkZWRGaWxlJChmaWxlKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh1cGxvYWRlZEZpbGUpID0+IHRoaXMuZHJhZnRzU2VydmljZS5jcmVhdGVQcm9mc3Ryb3kkKHsgZmlsZTogdXBsb2FkZWRGaWxlLCBuYW1lOiB0aGlzLmZvcm0uY29udHJvbHMubmFtZS52YWx1ZS50cmltKCkgfHwgdW5kZWZpbmVkIH0pKSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWl0dGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoZHJhZnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmNvbXBsZXRlV2l0aChkcmFmdCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0L7QutCw0LfRi9Cy0LDQtdGCINC+0YjQuNCx0LrRgyDRgdC+0LfQtNCw0L3QuNGPINCyINGE0L7RgNC80LU6INC+0YjQuNCx0LrQuCDQv9GA0L7QstC10YDQutC4INC00LDQvdC90YvRhSDRgyDQv9C+0LvQtdC5LCDQvtGI0LjQsdC60YMg0YfRgtC10L3QuNGPINGE0LDQudC70LAg0YMg0L/QvtC70Y8g0YTQsNC50LvQsCwg0L7RgdGC0LDQu9GM0L3Ri9C1INC+0YjQuNCx0LrQvtC5INGE0L7RgNC80YsgKDQwMSDQvtCx0YDQsNCx0LDRgtGL0LLQsNC10YIg0LDQstGC0L7RgNC40LfQsNGG0LjRjykuXG4gICAgICog0JTQuNCw0LvQvtCzINC+0YHRgtCw0ZHRgtGB0Y8g0L7RgtC60YDRi9GC0YvQvC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlcnJvciDQntGI0LjQsdC60LAg0YfRgtC10L3QuNGPINGE0LDQudC70LAg0LjQu9C4INC30LDQv9GA0L7RgdCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgYXBwbHlFcnJvcihlcnJvcjogdW5rbm93bik6IHZvaWQge1xuICAgICAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmZpbGUuc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IG5ldyBUdWlWYWxpZGF0aW9uRXJyb3IoJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0L/RgNC+0YfQuNGC0LDRgtGMINGE0LDQudC7LicpIH0pO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKGVycm9yLnN0YXR1cyBhcyBIdHRwU3RhdHVzQ29kZSkgPT09IEh0dHBTdGF0dXNDb2RlLlVuYXV0aG9yaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBlcnJvcnMgfSA9IChlcnJvci5lcnJvciA/PyB7fSkgYXMgUGFydGlhbDxTY0lBcGlFcnJvclJlc3BvbnNlPjtcblxuICAgICAgICBpZiAoKGVycm9yLnN0YXR1cyBhcyBIdHRwU3RhdHVzQ29kZSkgIT09IEh0dHBTdGF0dXNDb2RlLlVucHJvY2Vzc2FibGVFbnRpdHkgfHwgIWVycm9ycykge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBuZXcgVHVpVmFsaWRhdGlvbkVycm9yKFNjQXBpRXJyb3JIZWxwZXIuZ2V0TWVzc2FnZShlcnJvciwgJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0YHQvtC30LTQsNGC0Ywg0LfQsNGP0LLQutGDLicpKSB9KTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMoZXJyb3JzKS5mb3JFYWNoKChba2V5LCBtZXNzYWdlc10pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBrZXkgPT09ICduYW1lJyA/IHRoaXMuZm9ybS5jb250cm9scy5uYW1lIDogdGhpcy5mb3JtLmNvbnRyb2xzLmZpbGU7XG5cbiAgICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IG5ldyBUdWlWYWxpZGF0aW9uRXJyb3IobWVzc2FnZXMuam9pbignICcpKSB9KTtcbiAgICAgICAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8Zm9ybVxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC01XCJcbiAgICAobmdTdWJtaXQpPVwic3VibWl0KClcIlxuPlxuICAgIDwhLS0g0KTQsNC50LsuINCf0YDQuNGH0LjQvdGDINC+0YLQutC70L7QvdC10L3QuNGPINGE0LDQudC70LAg0L/QvtC60LDQt9GL0LLQsNC10YIg0YHRgtGA0L7QutCwINGE0LDQudC70LAsINC/0L7QtCDQv9C+0LvQtdC8INC+0L3QsCDQvdC1INC/0L7QstGC0L7RgNGP0LXRgtGB0Y8uINCd0LXQt9Cw0L/QvtC70L3QtdC90L3QvtC1INC/0L7Qu9C1INC/0L7QtNGB0LLQtdGH0LjQstCw0LXRgtGB0Y8g0YLQvtC70YzQutC+INC/0L7RgdC70LUg0L/QvtC/0YvRgtC60Lgg0YHQvtC30LTQsNGC0Ywg0LfQsNGP0LLQutGDLiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMVwiPlxuICAgICAgICBAbGV0IGZpbGUgPSBmb3JtLmNvbnRyb2xzLmZpbGUudmFsdWU7XG4gICAgICAgIEBsZXQgcmVqZWN0ZWQgPSBmaWxlIHwgdHVpRmlsZVJlamVjdGVkOiB7IGFjY2VwdCB9IHwgYXN5bmM7XG4gICAgICAgIEBpZiAoIWZpbGUpIHtcbiAgICAgICAgICAgIDxsYWJlbCB0dWlJbnB1dEZpbGVzPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0dWlJbnB1dEZpbGVzXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImZpbGVcIlxuICAgICAgICAgICAgICAgICAgICBbYWNjZXB0XT1cImFjY2VwdFwiXG4gICAgICAgICAgICAgICAgICAgIFtpbnZhbGlkXT1cInN1Ym1pdEF0dGVtcHRlZCgpID8gbnVsbCA6IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgfVxuICAgICAgICA8dHVpLWZpbGVzPlxuICAgICAgICAgICAgQGlmIChmaWxlKSB7XG4gICAgICAgICAgICAgICAgPHR1aS1maWxlXG4gICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJyZWplY3RlZCA/ICdlcnJvcicgOiAnbm9ybWFsJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtmaWxlXT1cInJlamVjdGVkID8/IGZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cInJlbW92ZUZpbGUoKVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC90dWktZmlsZXM+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ib2R5LXMgdGV4dC10dWktdGV4dC0wMlwiPtCk0LDQudC7IEV4Y2VsLCDQstGL0LPRgNGD0LbQtdC90L3Ri9C5INC40Lcg0L/RgNC+0LPRgNCw0LzQvNGLIMKr0J/RgNC+0YTRgdGC0YDQvtC5wrs6IHt7IGFjY2VwdCB9fTwvc3Bhbj5cbiAgICAgICAgQGlmICghcmVqZWN0ZWQpIHtcbiAgICAgICAgICAgIEBsZXQgZmlsZUVycm9yVmlzaWJsZSA9IHN1Ym1pdEF0dGVtcHRlZCgpIHx8ICFmb3JtLmNvbnRyb2xzLmZpbGUuaGFzRXJyb3IoJ3JlcXVpcmVkJyk7XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZmlsZVwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cImZpbGVFcnJvclZpc2libGUgPyAoWydyZXF1aXJlZCcsICdzZXJ2ZXJSZXNwb25zZSddIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jKSA6IG51bGxcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSDQndCw0LfQstCw0L3QuNC1INC30LDRj9Cy0LrQuC4gLS0+XG4gICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICDQndCw0LfQstCw0L3QuNC1INC30LDRj9Cy0LrQuFxuICAgICAgICA8dHVpLXRleHRmaWVsZD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR1aVRleHRmaWVsZFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi0J3QsNC/0YDQuNC80LXRgDog0JHQsNC70LrQvtC90YssINC+0LHRitC10LrRgiDQvdCwINCb0LXQvdC40L3QsFwiXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoXT1cIm5hbWVNYXhMZW5ndGhcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC90dWktdGV4dGZpZWxkPlxuICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIEBpZiAoZm9ybS5lcnJvcnM/Llsnc2VydmVyUmVzcG9uc2UnXSkge1xuICAgICAgICA8dHVpLWVycm9yIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiIC8+XG4gICAgfVxuXG4gICAgPHR1aS1ub3RpZmljYXRpb25cbiAgICAgICAgYXBwZWFyYW5jZT1cImluZm9cIlxuICAgICAgICBzaXplPVwibVwiXG4gICAgPlxuICAgICAgICDQntCx0YDQsNCx0L7RgtC60LAg0YTQsNC50LvQsCDQstGL0L/QvtC70L3Rj9C10YLRgdGPINCyINGE0L7QvdC1OiDQv9C+0LfQuNGG0LjQuCDQuCDRhtC10L3RiyDQv9C+0Y/QstGP0YLRgdGPINCyINGH0LXRgNC90L7QstC40LrQtSDRh9C10YDQtdC3INC90LXQutC+0YLQvtGA0L7QtSDQstGA0LXQvNGPLlxuICAgIDwvdHVpLW5vdGlmaWNhdGlvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMlwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5zYy5zZW5kXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cInN1Ym1pdHRpbmcoKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgINCh0L7Qt9C00LDRgtGMINC30LDRj9Cy0LrRg1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInN1Ym1pdHRpbmcoKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY29udGV4dC4kaW1wbGljaXQuY29tcGxldGUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgINCe0YLQvNC10L3QsFxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Перечисление состояний черновика Профстрой для отображения пользователю.
|
|
3
|
+
*/
|
|
4
|
+
// eslint-disable-next-line no-shadow
|
|
5
|
+
export var ScProfstroyDraftState;
|
|
6
|
+
(function (ScProfstroyDraftState) {
|
|
7
|
+
/**
|
|
8
|
+
* Выполняется обработка.
|
|
9
|
+
*/
|
|
10
|
+
ScProfstroyDraftState["processing"] = "processing";
|
|
11
|
+
/**
|
|
12
|
+
* Актуализирован, срок действия не истёк.
|
|
13
|
+
*/
|
|
14
|
+
ScProfstroyDraftState["actual"] = "actual";
|
|
15
|
+
/**
|
|
16
|
+
* Актуализирован, но срок действия истёк.
|
|
17
|
+
*/
|
|
18
|
+
ScProfstroyDraftState["outdated"] = "outdated";
|
|
19
|
+
/**
|
|
20
|
+
* Обработка завершилась с ошибкой.
|
|
21
|
+
*/
|
|
22
|
+
ScProfstroyDraftState["error"] = "error";
|
|
23
|
+
/**
|
|
24
|
+
* Требуется актуализация после изменения состава.
|
|
25
|
+
*/
|
|
26
|
+
ScProfstroyDraftState["needsActualization"] = "needsActualization";
|
|
27
|
+
/**
|
|
28
|
+
* Состояние не известно.
|
|
29
|
+
*/
|
|
30
|
+
ScProfstroyDraftState["unknown"] = "unknown";
|
|
31
|
+
})(ScProfstroyDraftState || (ScProfstroyDraftState = {}));
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJvZnN0cm95LWRyYWZ0LXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL29yZGVyL2RyYWZ0L3Byb2ZzdHJveS9lbnVtcy9zYy1wcm9mc3Ryb3ktZHJhZnQtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxxQ0FBcUM7QUFDckMsTUFBTSxDQUFOLElBQVkscUJBOEJYO0FBOUJELFdBQVkscUJBQXFCO0lBQzdCOztPQUVHO0lBQ0gsa0RBQXlCLENBQUE7SUFFekI7O09BRUc7SUFDSCwwQ0FBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILDhDQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gsd0NBQWUsQ0FBQTtJQUVmOztPQUVHO0lBQ0gsa0VBQXlDLENBQUE7SUFFekM7O09BRUc7SUFDSCw0Q0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBOUJXLHFCQUFxQixLQUFyQixxQkFBcUIsUUE4QmhDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDQn9C10YDQtdGH0LjRgdC70LXQvdC40LUg0YHQvtGB0YLQvtGP0L3QuNC5INGH0LXRgNC90L7QstC40LrQsCDQn9GA0L7RhNGB0YLRgNC+0Lkg0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GOLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93XG5leHBvcnQgZW51bSBTY1Byb2ZzdHJveURyYWZ0U3RhdGUge1xuICAgIC8qKlxuICAgICAqINCS0YvQv9C+0LvQvdGP0LXRgtGB0Y8g0L7QsdGA0LDQsdC+0YLQutCwLlxuICAgICAqL1xuICAgIHByb2Nlc3NpbmcgPSAncHJvY2Vzc2luZycsXG5cbiAgICAvKipcbiAgICAgKiDQkNC60YLRg9Cw0LvQuNC30LjRgNC+0LLQsNC9LCDRgdGA0L7QuiDQtNC10LnRgdGC0LLQuNGPINC90LUg0LjRgdGC0ZHQui5cbiAgICAgKi9cbiAgICBhY3R1YWwgPSAnYWN0dWFsJyxcblxuICAgIC8qKlxuICAgICAqINCQ0LrRgtGD0LDQu9C40LfQuNGA0L7QstCw0L0sINC90L4g0YHRgNC+0Log0LTQtdC50YHRgtCy0LjRjyDQuNGB0YLRkdC6LlxuICAgICAqL1xuICAgIG91dGRhdGVkID0gJ291dGRhdGVkJyxcblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0LrQsCDQt9Cw0LLQtdGA0YjQuNC70LDRgdGMINGBINC+0YjQuNCx0LrQvtC5LlxuICAgICAqL1xuICAgIGVycm9yID0gJ2Vycm9yJyxcblxuICAgIC8qKlxuICAgICAqINCi0YDQtdCx0YPQtdGC0YHRjyDQsNC60YLRg9Cw0LvQuNC30LDRhtC40Y8g0L/QvtGB0LvQtSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQsNCy0LAuXG4gICAgICovXG4gICAgbmVlZHNBY3R1YWxpemF0aW9uID0gJ25lZWRzQWN0dWFsaXphdGlvbicsXG5cbiAgICAvKipcbiAgICAgKiDQodC+0YHRgtC+0Y/QvdC40LUg0L3QtSDQuNC30LLQtdGB0YLQvdC+LlxuICAgICAqL1xuICAgIHVua25vd24gPSAndW5rbm93bicsXG59XG4iXX0=
|