@hitsoft/uretim-yonetimi 1.0.28 → 1.0.29
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/config/enums/route-names.d.ts +5 -1
- package/config/providers/boiler-ym-product-waste-route.provider.d.ts +9 -0
- package/config/providers/component-wastage-route.provider.d.ts +9 -0
- package/config/providers/filling-control-route.provider.d.ts +9 -0
- package/config/providers/filling-receipt-from-production-route.provider.d.ts +9 -0
- package/esm2020/config/enums/route-names.mjs +1 -1
- package/esm2020/config/providers/boiler-ym-product-waste-route.provider.mjs +19 -0
- package/esm2020/config/providers/component-wastage-route.provider.mjs +19 -0
- package/esm2020/config/providers/filling-control-route.provider.mjs +19 -0
- package/esm2020/config/providers/filling-receipt-from-production-route.provider.mjs +19 -0
- package/esm2020/config/providers/receipt-from-production-route.provider.mjs +2 -2
- package/esm2020/config/providers/route.provider.mjs +9 -2
- package/esm2020/config/uretim-yonetimi-config.module.mjs +9 -1
- package/esm2020/lib/components/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste-routing.module.mjs +26 -0
- package/esm2020/lib/components/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste.component.mjs +151 -0
- package/esm2020/lib/components/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste.module.mjs +65 -0
- package/esm2020/lib/components/hit-component-wastage/hit-component-wastage-routing.module.mjs +24 -0
- package/esm2020/lib/components/hit-component-wastage/hit-component-wastage.component.mjs +236 -0
- package/esm2020/lib/components/hit-component-wastage/hit-component-wastage.module.mjs +74 -0
- package/esm2020/lib/components/hit-filling-control/hit-filling-control-routing.module.mjs +26 -0
- package/esm2020/lib/components/hit-filling-control/hit-filling-control.component.mjs +319 -0
- package/esm2020/lib/components/hit-filling-control/hit-filling-control.module.mjs +65 -0
- package/esm2020/lib/components/hit-filling-receipt-from-production/hit-filling-receipt-from-production-routing.module.mjs +26 -0
- package/esm2020/lib/components/hit-filling-receipt-from-production/hit-filling-receipt-from-production.component.mjs +196 -0
- package/esm2020/lib/components/hit-filling-receipt-from-production/hit-filling-receipt-from-production.module.mjs +65 -0
- package/esm2020/lib/components/hit-production-orders/hit-production-orders.component.mjs +3 -3
- package/esm2020/lib/components/hit-receipt-from-productions/hit-receipt-from-productions.component.mjs +3 -3
- package/esm2020/lib/hit-proxy/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste.service.mjs +27 -0
- package/esm2020/lib/hit-proxy/hit-boiler-ym-product-waste/models.mjs +3 -0
- package/esm2020/lib/hit-proxy/hit-component-wastage/hit-component-wastage.service.mjs +33 -0
- package/esm2020/lib/hit-proxy/hit-component-wastage/models.mjs +17 -0
- package/esm2020/lib/hit-proxy/hit-filling-control/hit-filling-control.service.mjs +40 -0
- package/esm2020/lib/hit-proxy/hit-filling-control/models.mjs +3 -0
- package/esm2020/lib/hit-proxy/hit-filling-receipt-from-production/hit-filling-receipt-from-production.service.mjs +28 -0
- package/esm2020/lib/hit-proxy/hit-production-orders/hit-production-orders.service.mjs +5 -1
- package/esm2020/lib/hit-proxy/hit-receipt-from-productions/models.mjs +1 -1
- package/esm2020/lib/hit-proxy/models.mjs +42 -47
- package/esm2020/lib/uretim-yonetimi-routing.module.mjs +10 -2
- package/esm2020/lib/uretim-yonetimi.module.mjs +21 -1
- package/fesm2015/hitsoft-uretim-yonetimi-config.mjs +92 -13
- package/fesm2015/hitsoft-uretim-yonetimi-config.mjs.map +1 -1
- package/fesm2015/hitsoft-uretim-yonetimi.mjs +1440 -98
- package/fesm2015/hitsoft-uretim-yonetimi.mjs.map +1 -1
- package/fesm2020/hitsoft-uretim-yonetimi-config.mjs +92 -13
- package/fesm2020/hitsoft-uretim-yonetimi-config.mjs.map +1 -1
- package/fesm2020/hitsoft-uretim-yonetimi.mjs +1421 -98
- package/fesm2020/hitsoft-uretim-yonetimi.mjs.map +1 -1
- package/lib/components/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste-routing.module.d.ts +7 -0
- package/lib/components/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste.component.d.ts +35 -0
- package/lib/components/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste.module.d.ts +16 -0
- package/lib/components/hit-component-wastage/hit-component-wastage-routing.module.d.ts +7 -0
- package/lib/components/hit-component-wastage/hit-component-wastage.component.d.ts +38 -0
- package/lib/components/hit-component-wastage/hit-component-wastage.module.d.ts +16 -0
- package/lib/components/hit-filling-control/hit-filling-control-routing.module.d.ts +7 -0
- package/lib/components/hit-filling-control/hit-filling-control.component.d.ts +39 -0
- package/lib/components/hit-filling-control/hit-filling-control.module.d.ts +16 -0
- package/lib/components/hit-filling-receipt-from-production/hit-filling-receipt-from-production-routing.module.d.ts +7 -0
- package/lib/components/hit-filling-receipt-from-production/hit-filling-receipt-from-production.component.d.ts +35 -0
- package/lib/components/hit-filling-receipt-from-production/hit-filling-receipt-from-production.module.d.ts +16 -0
- package/lib/hit-proxy/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste.service.d.ts +14 -0
- package/lib/hit-proxy/hit-boiler-ym-product-waste/models.d.ts +22 -0
- package/lib/hit-proxy/hit-component-wastage/hit-component-wastage.service.d.ts +15 -0
- package/lib/hit-proxy/hit-component-wastage/models.d.ts +40 -0
- package/lib/hit-proxy/hit-filling-control/hit-filling-control.service.d.ts +17 -0
- package/lib/hit-proxy/hit-filling-control/models.d.ts +41 -0
- package/lib/hit-proxy/hit-filling-receipt-from-production/hit-filling-receipt-from-production.service.d.ts +52 -0
- package/lib/hit-proxy/hit-production-orders/hit-production-orders.service.d.ts +1 -0
- package/lib/hit-proxy/hit-receipt-from-productions/models.d.ts +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
import { Component, ViewChild } from '@angular/core';
|
|
2
|
+
import { HitHelper } from '../../hit-proxy/models';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../hit-proxy/hit-filling-control/hit-filling-control.service";
|
|
5
|
+
import * as i2 from "@abp/ng.theme.shared";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
import * as i4 from "@abp/ng.components/page";
|
|
8
|
+
import * as i5 from "devextreme-angular";
|
|
9
|
+
import * as i6 from "devextreme-angular/ui/nested";
|
|
10
|
+
import * as i7 from "@abp/ng.core";
|
|
11
|
+
export class HitFillingControlComponent {
|
|
12
|
+
constructor(service, confirmation, ngZone) {
|
|
13
|
+
this.service = service;
|
|
14
|
+
this.confirmation = confirmation;
|
|
15
|
+
this.ngZone = ngZone;
|
|
16
|
+
this.searchBasildiMi = false;
|
|
17
|
+
this.isEmriBarkoduGecerliMi = false;
|
|
18
|
+
this.isLoading = false;
|
|
19
|
+
this.hatBilgisi = '';
|
|
20
|
+
this.qrCode = '';
|
|
21
|
+
this.lines = [];
|
|
22
|
+
this.isDataLoadedFromDb = false; // DB'den veri mi geldi yoksa yeni mi
|
|
23
|
+
}
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
// Initialization logic
|
|
26
|
+
}
|
|
27
|
+
ngAfterViewInit() {
|
|
28
|
+
this.focusOnIsEmriNo();
|
|
29
|
+
}
|
|
30
|
+
async getProductionOrder() {
|
|
31
|
+
if (!this.isEmriNo) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
this.isLoading = true;
|
|
35
|
+
this.isEmriBarkoduGecerliMi = false;
|
|
36
|
+
this.searchBasildiMi = true;
|
|
37
|
+
this.service.getFillingControlInfo(this.isEmriNo).subscribe({
|
|
38
|
+
next: response => {
|
|
39
|
+
if (response?.isSuccessful) {
|
|
40
|
+
this.hatBilgisi = response.items.u_Hat;
|
|
41
|
+
this.lines = response.items.lines;
|
|
42
|
+
this.isEmriBarkoduGecerliMi = true;
|
|
43
|
+
// DB'den veri gelip gelmediğini kontrol et (en az bir satırda batchNumber varsa DB'den gelmiştir)
|
|
44
|
+
this.isDataLoadedFromDb = this.lines.some(x => x.batchNumber && x.batchNumber.trim() !== '');
|
|
45
|
+
setTimeout(() => {
|
|
46
|
+
this.focusOnQrCode();
|
|
47
|
+
}, 100);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
this.isEmriBarkoduGecerliMi = false;
|
|
51
|
+
}
|
|
52
|
+
this.isLoading = false;
|
|
53
|
+
},
|
|
54
|
+
error: e => {
|
|
55
|
+
this.isEmriBarkoduGecerliMi = false;
|
|
56
|
+
this.searchBasildiMi = true;
|
|
57
|
+
this.isLoading = false;
|
|
58
|
+
this.confirmation.status$.subscribe({
|
|
59
|
+
next: () => {
|
|
60
|
+
this.clearAll();
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
onQrCodeChange() {
|
|
67
|
+
if (!this.qrCode || this.qrCode.trim() === '') {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
debugger;
|
|
71
|
+
const parsed = HitHelper.parseQR(this.qrCode);
|
|
72
|
+
if (!parsed) {
|
|
73
|
+
this.confirmation.error('', 'Geçersiz QR kod formatı!', {
|
|
74
|
+
hideYesBtn: true,
|
|
75
|
+
cancelText: 'Kapat',
|
|
76
|
+
dismissible: false,
|
|
77
|
+
});
|
|
78
|
+
this.qrCode = '';
|
|
79
|
+
this.focusQRInput();
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
// Grid'de bu item'ı bul
|
|
83
|
+
const line = this.lines.find(x => x.itemCode === parsed.chemicalCode);
|
|
84
|
+
if (!line) {
|
|
85
|
+
this.confirmation.error('', `${parsed.chemicalCode} kodlu ürün bu iş emrinde bulunamadı!`, {
|
|
86
|
+
hideYesBtn: true,
|
|
87
|
+
cancelText: 'Kapat',
|
|
88
|
+
dismissible: false,
|
|
89
|
+
});
|
|
90
|
+
this.qrCode = '';
|
|
91
|
+
this.focusQRInput();
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
// İlk okutma kontrolü - Hiç kontrol edilmemiş satır varsa, bu ilk okutma demektir
|
|
95
|
+
const isFirstScan = !this.lines.some(x => x.isControlled);
|
|
96
|
+
if (isFirstScan) {
|
|
97
|
+
// İlk okutma için ürün ağacı ve kalite kontrolü yap
|
|
98
|
+
console.log('İlk okutma tespit edildi, ürün ağacı kontrolü yapılıyor:', parsed.chemicalCode);
|
|
99
|
+
this.service.hasProductionTree(parsed.chemicalCode, this.isEmriNo).subscribe({
|
|
100
|
+
next: response => {
|
|
101
|
+
console.log('HasProductionTree response:', response);
|
|
102
|
+
if (response?.isSuccessful && response.items === true) {
|
|
103
|
+
// Ürün ağacı var, kalite kontrolü yap
|
|
104
|
+
console.log('Ürün ağacı bulundu, kalite kontrolü yapılıyor');
|
|
105
|
+
this.checkQualityAndProcess(line, parsed.lotNumber, isFirstScan);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// Ürün ağacı yok, hata göster
|
|
109
|
+
console.log('Ürün ağacı bulunamadı!');
|
|
110
|
+
this.confirmation.error('', 'İlk okutma işlemi yarı mamül için yapılmalı!', {
|
|
111
|
+
hideYesBtn: true,
|
|
112
|
+
cancelText: 'Kapat',
|
|
113
|
+
dismissible: false,
|
|
114
|
+
});
|
|
115
|
+
this.qrCode = '';
|
|
116
|
+
this.focusQRInput();
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
error: (err) => {
|
|
120
|
+
console.error('HasProductionTree error:', err);
|
|
121
|
+
this.confirmation.error('', 'Ürün ağacı kontrolü yapılırken hata oluştu!', {
|
|
122
|
+
hideYesBtn: true,
|
|
123
|
+
cancelText: 'Kapat',
|
|
124
|
+
dismissible: false,
|
|
125
|
+
});
|
|
126
|
+
this.qrCode = '';
|
|
127
|
+
this.focusQRInput();
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
// İlk okutma değilse direkt işle
|
|
133
|
+
console.log('İlk okutma değil, direkt işleniyor');
|
|
134
|
+
this.processQrScan(line, parsed.lotNumber);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
checkQualityAndProcess(line, batchNumber, isFirstScan) {
|
|
138
|
+
// Kalite durumu kontrolü yap
|
|
139
|
+
this.service.checkQualityStatus(batchNumber, this.isEmriNo, line.itemCode).subscribe({
|
|
140
|
+
next: response => {
|
|
141
|
+
console.log('CheckQualityStatus response:', response);
|
|
142
|
+
if (response?.isSuccessful && response.items) {
|
|
143
|
+
if (response.items.isApproved) {
|
|
144
|
+
// Kalite onaylandı, okutmaya devam et
|
|
145
|
+
console.log('Kalite kontrolü onaylandı, okutmaya devam ediliyor');
|
|
146
|
+
this.processQrScan(line, batchNumber, isFirstScan);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
// Kalite RED, hata göster
|
|
150
|
+
console.log('Kalite kontrolü reddedildi:', response.items.errorMessage);
|
|
151
|
+
this.confirmation.error('', response.items.errorMessage || 'Kalite kontrolü reddedildi!', {
|
|
152
|
+
hideYesBtn: true,
|
|
153
|
+
cancelText: 'Kapat',
|
|
154
|
+
dismissible: false,
|
|
155
|
+
});
|
|
156
|
+
this.qrCode = '';
|
|
157
|
+
this.focusQRInput();
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
// Sorgu sonucu null geldi veya başarısız
|
|
162
|
+
console.log('Kalite kontrolü sorgusu sonuç döndürmedi');
|
|
163
|
+
this.confirmation.error('', 'Bu lot numarası için kalite bilgisi bulunamadı!', {
|
|
164
|
+
hideYesBtn: true,
|
|
165
|
+
cancelText: 'Kapat',
|
|
166
|
+
dismissible: false,
|
|
167
|
+
});
|
|
168
|
+
this.qrCode = '';
|
|
169
|
+
this.focusQRInput();
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
error: (err) => {
|
|
173
|
+
console.error('CheckQualityStatus error:', err);
|
|
174
|
+
this.confirmation.error('', 'Kalite kontrolü yapılırken hata oluştu!', {
|
|
175
|
+
hideYesBtn: true,
|
|
176
|
+
cancelText: 'Kapat',
|
|
177
|
+
dismissible: false,
|
|
178
|
+
});
|
|
179
|
+
this.qrCode = '';
|
|
180
|
+
this.focusQRInput();
|
|
181
|
+
},
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
processQrScan(line, batchNumber, isFirstScan = false) {
|
|
185
|
+
// Kontrol edildi olarak işaretle ve parti numarasını set et
|
|
186
|
+
line.isControlled = true;
|
|
187
|
+
if (isFirstScan) {
|
|
188
|
+
line.batchNumber = batchNumber;
|
|
189
|
+
}
|
|
190
|
+
// Grid'i refresh et
|
|
191
|
+
this.dataGrid.instance.refresh();
|
|
192
|
+
// QR input'u temizle ve focus et
|
|
193
|
+
this.qrCode = '';
|
|
194
|
+
this.focusQRInput();
|
|
195
|
+
}
|
|
196
|
+
save() {
|
|
197
|
+
if (!this.isEmriNo || this.lines.length === 0) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
// Tüm kontroller tamamlanmış mı kontrolü
|
|
201
|
+
if (!this.lines.every(x => x.isControlled)) {
|
|
202
|
+
this.confirmation.warn('', 'Tüm kontroller tamamlanmadan kayıt işlemi yapılamaz.', {
|
|
203
|
+
hideYesBtn: true,
|
|
204
|
+
cancelText: 'Kapat',
|
|
205
|
+
dismissible: false,
|
|
206
|
+
});
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
const saveData = {
|
|
210
|
+
workOrderNo: this.isEmriNo,
|
|
211
|
+
lines: this.lines.map(line => ({
|
|
212
|
+
lineNum: line.lineNum,
|
|
213
|
+
itemCode: line.itemCode,
|
|
214
|
+
isControlled: line.isControlled,
|
|
215
|
+
batchNumber: line.batchNumber || ''
|
|
216
|
+
}))
|
|
217
|
+
};
|
|
218
|
+
this.isLoading = true;
|
|
219
|
+
this.service.saveFillingControl(saveData).subscribe({
|
|
220
|
+
next: response => {
|
|
221
|
+
if (response?.isSuccessful) {
|
|
222
|
+
this.confirmation.success('', 'Kayıt başarılı!', {
|
|
223
|
+
hideYesBtn: true,
|
|
224
|
+
cancelText: 'Kapat',
|
|
225
|
+
dismissible: false,
|
|
226
|
+
});
|
|
227
|
+
this.clearAll();
|
|
228
|
+
}
|
|
229
|
+
this.isLoading = false;
|
|
230
|
+
},
|
|
231
|
+
error: e => {
|
|
232
|
+
this.isLoading = false;
|
|
233
|
+
this.confirmation.status$.subscribe({
|
|
234
|
+
next: () => {
|
|
235
|
+
// Hata sonrası işlem
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
},
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
clearAll() {
|
|
242
|
+
this.isEmriBarkoduGecerliMi = false;
|
|
243
|
+
this.searchBasildiMi = false;
|
|
244
|
+
this.isEmriNo = null;
|
|
245
|
+
this.hatBilgisi = '';
|
|
246
|
+
this.qrCode = '';
|
|
247
|
+
this.lines = [];
|
|
248
|
+
this.isDataLoadedFromDb = false;
|
|
249
|
+
this.focusOnIsEmriNo();
|
|
250
|
+
}
|
|
251
|
+
get showKazanDegisimiButton() {
|
|
252
|
+
// Sadece DB'den veri gelmişse, iş emri okutulmuş ve tüm satırlar kontrol edilmiş ise göster
|
|
253
|
+
return this.isDataLoadedFromDb &&
|
|
254
|
+
this.isEmriBarkoduGecerliMi &&
|
|
255
|
+
this.lines.length > 0 &&
|
|
256
|
+
this.lines.every(x => x.isControlled);
|
|
257
|
+
}
|
|
258
|
+
get isSaveButtonDisabled() {
|
|
259
|
+
// İş emri yoksa veya satır yoksa veya tüm satırlar kontrol edilmemişse disable
|
|
260
|
+
return !this.isEmriNo ||
|
|
261
|
+
this.lines.length === 0 ||
|
|
262
|
+
!this.lines.every(x => x.isControlled);
|
|
263
|
+
}
|
|
264
|
+
kazanDegisimi() {
|
|
265
|
+
this.confirmation.warn('', 'Kazan değişim işlemi için kontrol edilen ürünler sıfırlanacaktır. Devam etmek istiyor musunuz?', {
|
|
266
|
+
yesText: 'Evet',
|
|
267
|
+
cancelText: 'Hayır'
|
|
268
|
+
}).subscribe(status => {
|
|
269
|
+
if (status === 'confirm') {
|
|
270
|
+
// Tüm satırların IsControlled alanını false yap
|
|
271
|
+
this.lines.forEach(line => {
|
|
272
|
+
line.isControlled = false;
|
|
273
|
+
line.batchNumber = '';
|
|
274
|
+
});
|
|
275
|
+
// Grid'i refresh et
|
|
276
|
+
this.dataGrid.instance.refresh();
|
|
277
|
+
// QR input'a focus et
|
|
278
|
+
this.focusOnQrCode();
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
focusOnIsEmriNo() {
|
|
283
|
+
this.ngZone.run(() => {
|
|
284
|
+
setTimeout(() => {
|
|
285
|
+
this.nmbBoxIsEmriNo?.instance.focus();
|
|
286
|
+
}, 0);
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
focusOnQrCode() {
|
|
290
|
+
this.ngZone.run(() => {
|
|
291
|
+
setTimeout(() => {
|
|
292
|
+
this.txtBoxQrCode?.instance.focus();
|
|
293
|
+
}, 0);
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
focusQRInput() {
|
|
297
|
+
this.ngZone.run(() => {
|
|
298
|
+
setTimeout(() => {
|
|
299
|
+
this.txtBoxQrCode?.instance.focus();
|
|
300
|
+
}, 0);
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
HitFillingControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFillingControlComponent, deps: [{ token: i1.HitFillingControlService }, { token: i2.ConfirmationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
305
|
+
HitFillingControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitFillingControlComponent, selector: "lib-hit-filling-control", viewQueries: [{ propertyName: "nmbBoxIsEmriNo", first: true, predicate: ["isEmriNoRef"], descendants: true }, { propertyName: "txtBoxQrCode", first: true, predicate: ["qrCodeRef"], descendants: true }, { propertyName: "dataGrid", first: true, predicate: ["gridLines"], descendants: true }], ngImport: i0, template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row\">\r\n <h3 class=\"page-title\">\r\n {{ 'UretimYonetimi::FillingControl.Title' | abpLocalization }}\r\n </h3>\r\n </div>\r\n <div class=\"row text-lg-end pt-2\">\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-success btn-sm\" type=\"button\" (click)=\"save()\" [disabled]=\"isSaveButtonDisabled\">\r\n <i class=\"fa fa-save me-1\"></i>\r\n {{ 'UretimYonetimi::FillingControl.Save' | abpLocalization }}\r\n </button>\r\n </div>\r\n <div class=\"col-3\" *ngIf=\"showKazanDegisimiButton\">\r\n <button class=\"btn btn-info btn-sm\" type=\"button\" (click)=\"kazanDegisimi()\">\r\n <i class=\"fa fa-recycle me-1\"></i>\r\n Kazan De\u011Fi\u015Fimi\r\n </button>\r\n </div>\r\n <div class=\"col-3\">\r\n <button class=\"btn btn-warning btn-sm\" type=\"button\" (click)=\"clearAll()\">\r\n <i class=\"fa fa-broom me-1\"></i>\r\n {{ 'UretimYonetimi::FillingControl.Clean' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n <div class=\"card mt-2\">\r\n <div class=\"card-body\" style=\"height: calc(100vh - 241px); overflow: auto;\">\r\n <div style=\"display: flex; align-items: center;\">\r\n <dx-number-box #isEmriNoRef class=\"me-1\" style=\"width:100%;\"\r\n [label]=\"'UretimYonetimi::FillingControl.WorkOrderNo' | abpLocalization\"\r\n [(value)]=\"isEmriNo\"\r\n (onChange)=\"getProductionOrder()\" \r\n (onEnterKey)=\"getProductionOrder()\"\r\n [disabled]=\"searchBasildiMi || isEmriBarkoduGecerliMi\">\r\n </dx-number-box>\r\n <dx-button style=\"margin-top: 7.5px;\" \r\n icon=\"search\" \r\n type=\"default\" \r\n (onClick)=\"getProductionOrder()\"\r\n [disabled]=\"searchBasildiMi || isEmriBarkoduGecerliMi\">\r\n </dx-button>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf=\"isEmriBarkoduGecerliMi\">\r\n <dx-text-box style=\"width:100%;\" \r\n [label]=\"'UretimYonetimi::FillingControl.LineInfo' | abpLocalization\"\r\n [(value)]=\"hatBilgisi\" \r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n\r\n <div class=\"mt-3\" style=\"display: flex; align-items: center;\">\r\n <dx-text-box #qrCodeRef \r\n style=\"width:100%;\" \r\n class=\"me-1\"\r\n [label]=\"'UretimYonetimi::FillingControl.QRCode' | abpLocalization\"\r\n [(value)]=\"qrCode\"\r\n (onEnterKey)=\"onQrCodeChange()\"\r\n [placeholder]=\"'UretimYonetimi::FillingControl.QRCode.Placeholder' | abpLocalization\">\r\n </dx-text-box>\r\n <dx-button style=\"margin-top: 7.5px;\" icon=\"plus\" type=\"default\" (onClick)=\"onQrCodeChange()\">\r\n </dx-button>\r\n </div>\r\n\r\n <dx-data-grid #gridLines \r\n class=\"mt-3\" \r\n [dataSource]=\"lines\" \r\n [columnAutoWidth]=\"true\"\r\n [showBorders]=\"true\">\r\n <dxi-column dataField=\"itemCode\"\r\n [caption]=\"'UretimYonetimi::FillingControl.ItemCode' | abpLocalization\"\r\n [allowEditing]=\"false\"></dxi-column>\r\n <dxi-column dataField=\"itemName\"\r\n [caption]=\"'UretimYonetimi::FillingControl.ItemName' | abpLocalization\"\r\n [allowEditing]=\"false\"></dxi-column>\r\n <dxi-column dataField=\"isControlled\"\r\n [caption]=\"'UretimYonetimi::FillingControl.IsControlled' | abpLocalization\"\r\n dataType=\"boolean\"\r\n [allowEditing]=\"false\"></dxi-column>\r\n <dxi-column dataField=\"batchNumber\"\r\n [caption]=\"'UretimYonetimi::FillingControl.BatchNumber' | abpLocalization\"\r\n [allowEditing]=\"false\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i4.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "component", type: i5.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i5.DxNumberBoxComponent, selector: "dx-number-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "format", "height", "hint", "hoverStateEnabled", "inputAttr", "invalidValueMessage", "isValid", "label", "labelMode", "max", "min", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showSpinButtons", "step", "stylingMode", "tabIndex", "text", "useLargeSpinButtons", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "formatChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "invalidValueMessageChange", "isValidChange", "labelChange", "labelModeChange", "maxChange", "minChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showSpinButtonsChange", "stepChange", "stylingModeChange", "tabIndexChange", "textChange", "useLargeSpinButtonsChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i5.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i5.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i6.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "pipe", type: i7.LocalizationPipe, name: "abpLocalization" }] });
|
|
306
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFillingControlComponent, decorators: [{
|
|
307
|
+
type: Component,
|
|
308
|
+
args: [{ selector: 'lib-hit-filling-control', template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row\">\r\n <h3 class=\"page-title\">\r\n {{ 'UretimYonetimi::FillingControl.Title' | abpLocalization }}\r\n </h3>\r\n </div>\r\n <div class=\"row text-lg-end pt-2\">\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-success btn-sm\" type=\"button\" (click)=\"save()\" [disabled]=\"isSaveButtonDisabled\">\r\n <i class=\"fa fa-save me-1\"></i>\r\n {{ 'UretimYonetimi::FillingControl.Save' | abpLocalization }}\r\n </button>\r\n </div>\r\n <div class=\"col-3\" *ngIf=\"showKazanDegisimiButton\">\r\n <button class=\"btn btn-info btn-sm\" type=\"button\" (click)=\"kazanDegisimi()\">\r\n <i class=\"fa fa-recycle me-1\"></i>\r\n Kazan De\u011Fi\u015Fimi\r\n </button>\r\n </div>\r\n <div class=\"col-3\">\r\n <button class=\"btn btn-warning btn-sm\" type=\"button\" (click)=\"clearAll()\">\r\n <i class=\"fa fa-broom me-1\"></i>\r\n {{ 'UretimYonetimi::FillingControl.Clean' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n <div class=\"card mt-2\">\r\n <div class=\"card-body\" style=\"height: calc(100vh - 241px); overflow: auto;\">\r\n <div style=\"display: flex; align-items: center;\">\r\n <dx-number-box #isEmriNoRef class=\"me-1\" style=\"width:100%;\"\r\n [label]=\"'UretimYonetimi::FillingControl.WorkOrderNo' | abpLocalization\"\r\n [(value)]=\"isEmriNo\"\r\n (onChange)=\"getProductionOrder()\" \r\n (onEnterKey)=\"getProductionOrder()\"\r\n [disabled]=\"searchBasildiMi || isEmriBarkoduGecerliMi\">\r\n </dx-number-box>\r\n <dx-button style=\"margin-top: 7.5px;\" \r\n icon=\"search\" \r\n type=\"default\" \r\n (onClick)=\"getProductionOrder()\"\r\n [disabled]=\"searchBasildiMi || isEmriBarkoduGecerliMi\">\r\n </dx-button>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf=\"isEmriBarkoduGecerliMi\">\r\n <dx-text-box style=\"width:100%;\" \r\n [label]=\"'UretimYonetimi::FillingControl.LineInfo' | abpLocalization\"\r\n [(value)]=\"hatBilgisi\" \r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n\r\n <div class=\"mt-3\" style=\"display: flex; align-items: center;\">\r\n <dx-text-box #qrCodeRef \r\n style=\"width:100%;\" \r\n class=\"me-1\"\r\n [label]=\"'UretimYonetimi::FillingControl.QRCode' | abpLocalization\"\r\n [(value)]=\"qrCode\"\r\n (onEnterKey)=\"onQrCodeChange()\"\r\n [placeholder]=\"'UretimYonetimi::FillingControl.QRCode.Placeholder' | abpLocalization\">\r\n </dx-text-box>\r\n <dx-button style=\"margin-top: 7.5px;\" icon=\"plus\" type=\"default\" (onClick)=\"onQrCodeChange()\">\r\n </dx-button>\r\n </div>\r\n\r\n <dx-data-grid #gridLines \r\n class=\"mt-3\" \r\n [dataSource]=\"lines\" \r\n [columnAutoWidth]=\"true\"\r\n [showBorders]=\"true\">\r\n <dxi-column dataField=\"itemCode\"\r\n [caption]=\"'UretimYonetimi::FillingControl.ItemCode' | abpLocalization\"\r\n [allowEditing]=\"false\"></dxi-column>\r\n <dxi-column dataField=\"itemName\"\r\n [caption]=\"'UretimYonetimi::FillingControl.ItemName' | abpLocalization\"\r\n [allowEditing]=\"false\"></dxi-column>\r\n <dxi-column dataField=\"isControlled\"\r\n [caption]=\"'UretimYonetimi::FillingControl.IsControlled' | abpLocalization\"\r\n dataType=\"boolean\"\r\n [allowEditing]=\"false\"></dxi-column>\r\n <dxi-column dataField=\"batchNumber\"\r\n [caption]=\"'UretimYonetimi::FillingControl.BatchNumber' | abpLocalization\"\r\n [allowEditing]=\"false\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n" }]
|
|
309
|
+
}], ctorParameters: function () { return [{ type: i1.HitFillingControlService }, { type: i2.ConfirmationService }, { type: i0.NgZone }]; }, propDecorators: { nmbBoxIsEmriNo: [{
|
|
310
|
+
type: ViewChild,
|
|
311
|
+
args: ['isEmriNoRef', { static: false }]
|
|
312
|
+
}], txtBoxQrCode: [{
|
|
313
|
+
type: ViewChild,
|
|
314
|
+
args: ['qrCodeRef', { static: false }]
|
|
315
|
+
}], dataGrid: [{
|
|
316
|
+
type: ViewChild,
|
|
317
|
+
args: ['gridLines', { static: false }]
|
|
318
|
+
}] } });
|
|
319
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWZpbGxpbmctY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1maWxsaW5nLWNvbnRyb2wvaGl0LWZpbGxpbmctY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1maWxsaW5nLWNvbnRyb2wvaGl0LWZpbGxpbmctY29udHJvbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUs3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7OztBQU9uRCxNQUFNLE9BQU8sMEJBQTBCO0lBY3JDLFlBQ1UsT0FBaUMsRUFDakMsWUFBaUMsRUFDakMsTUFBYztRQUZkLFlBQU8sR0FBUCxPQUFPLENBQTBCO1FBQ2pDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWHhCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQUN4QyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQUNwQixVQUFLLEdBQXlCLEVBQUUsQ0FBQztRQUNqQyx1QkFBa0IsR0FBWSxLQUFLLENBQUMsQ0FBQyxxQ0FBcUM7SUFNdkUsQ0FBQztJQUVKLFFBQVE7UUFDTix1QkFBdUI7SUFDekIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFB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MEJBQTBCLGtXQ1p2QywrMUlBeUZBOzJGRDdFYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UseUJBQXlCO3NLQUtVLGNBQWM7c0JBQTFELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDQSxZQUFZO3NCQUF0RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0UsUUFBUTtzQkFBbEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEeE51bWJlckJveENvbXBvbmVudCwgRHhUZXh0Qm94Q29tcG9uZW50LCBEeERhdGFHcmlkQ29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyJztcclxuaW1wb3J0IHsgSGl0RmlsbGluZ0NvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1maWxsaW5nLWNvbnRyb2wvaGl0LWZpbGxpbmctY29udHJvbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsbGluZ0NvbnRyb2xMaW5lIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1maWxsaW5nLWNvbnRyb2wvbW9kZWxzJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgSGl0SGVscGVyIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L21vZGVscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1oaXQtZmlsbGluZy1jb250cm9sJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGl0LWZpbGxpbmctY29udHJvbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaGl0LWZpbGxpbmctY29udHJvbC5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaXRGaWxsaW5nQ29udHJvbENvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgnaXNFbXJpTm9SZWYnLCB7IHN0YXRpYzogZmFsc2UgfSkgbm1iQm94SXNFbXJpTm86IER4TnVtYmVyQm94Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3FyQ29kZVJlZicsIHsgc3RhdGljOiBmYWxzZSB9KSB0eHRCb3hRckNvZGU6IER4VGV4dEJveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdncmlkTGluZXMnLCB7IHN0YXRpYzogZmFsc2UgfSkgZGF0YUdyaWQ6IER4RGF0YUdyaWRDb21wb25lbnQ7XHJcblxyXG4gIGlzRW1yaU5vOiBudW1iZXI7XHJcbiAgc2VhcmNoQmFzaWxkaU1pOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNFbXJpQmFya29kdUdlY2VybGlNaTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGhhdEJpbGdpc2k6IHN0cmluZyA9ICcnO1xyXG4gIHFyQ29kZTogc3RyaW5nID0gJyc7XHJcbiAgbGluZXM6IEZpbGxpbmdDb250cm9sTGluZVtdID0gW107XHJcbiAgaXNEYXRhTG9hZGVkRnJvbURiOiBib29sZWFuID0gZmFsc2U7IC8vIERCJ2RlbiB2ZXJpIG1pIGdlbGRpIHlva3NhIHllbmkgbWlcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IEhpdEZpbGxpbmdDb250cm9sU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBJbml0aWFsaXphdGlvbiBsb2dpY1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5mb2N1c09uSXNFbXJpTm8oKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFByb2R1Y3Rpb25PcmRlcigpIHtcclxuICAgIGlmICghdGhpcy5pc0VtcmlObykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaEJhc2lsZGlNaSA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5zZXJ2aWNlLmdldEZpbGxpbmdDb250cm9sSW5mbyh0aGlzLmlzRW1yaU5vKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlPy5pc1N1Y2Nlc3NmdWwpIHtcclxuICAgICAgICAgIHRoaXMuaGF0QmlsZ2lzaSA9IHJlc3BvbnNlLml0ZW1zLnVfSGF0O1xyXG4gICAgICAgICAgdGhpcy5saW5lcyA9IHJlc3BvbnNlLml0ZW1zLmxpbmVzO1xyXG4gICAgICAgICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gdHJ1ZTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8gREInZGVuIHZlcmkgZ2VsaXAgZ2VsbWVkacSfaW5pIGtvbnRyb2wgZXQgKGVuIGF6IGJpciBzYXTEsXJkYSBiYXRjaE51bWJlciB2YXJzYSBEQidkZW4gZ2VsbWnFn3RpcilcclxuICAgICAgICAgIHRoaXMuaXNEYXRhTG9hZGVkRnJvbURiID0gdGhpcy5saW5lcy5zb21lKHggPT4geC5iYXRjaE51bWJlciAmJiB4LmJhdGNoTnVtYmVyLnRyaW0oKSAhPT0gJycpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mb2N1c09uUXJDb2RlKCk7XHJcbiAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmlzRW1yaUJhcmtvZHVHZWNlcmxpTWkgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IGUgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoQmFzaWxkaU1pID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLnN0YXR1cyQuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jbGVhckFsbCgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25RckNvZGVDaGFuZ2UoKSB7XHJcbiAgICBpZiAoIXRoaXMucXJDb2RlIHx8IHRoaXMucXJDb2RlLnRyaW0oKSA9PT0gJycpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGRlYnVnZ2VyO1xyXG5cclxuICAgIGNvbnN0IHBhcnNlZCA9IEhpdEhlbHBlci5wYXJzZVFSKHRoaXMucXJDb2RlKTtcclxuICAgIGlmICghcGFyc2VkKSB7XHJcbiAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCAnR2XDp2Vyc2l6IFFSIGtvZCBmb3JtYXTEsSEnLCB7XHJcbiAgICAgICAgaGlkZVllc0J0bjogdHJ1ZSxcclxuICAgICAgICBjYW5jZWxUZXh0OiAnS2FwYXQnLFxyXG4gICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucXJDb2RlID0gJyc7XHJcbiAgICAgIHRoaXMuZm9jdXNRUklucHV0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBHcmlkJ2RlIGJ1IGl0ZW0nxLEgYnVsXHJcbiAgICBjb25zdCBsaW5lID0gdGhpcy5saW5lcy5maW5kKHggPT4geC5pdGVtQ29kZSA9PT0gcGFyc2VkLmNoZW1pY2FsQ29kZSk7XHJcbiAgICBpZiAoIWxpbmUpIHtcclxuICAgICAgdGhpcy5jb25maXJtYXRpb24uZXJyb3IoJycsIGAke3BhcnNlZC5jaGVtaWNhbENvZGV9IGtvZGx1IMO8csO8biBidSBpxZ8gZW1yaW5kZSBidWx1bmFtYWTEsSFgLCB7XHJcbiAgICAgICAgaGlkZVllc0J0bjogdHJ1ZSxcclxuICAgICAgICBjYW5jZWxUZXh0OiAnS2FwYXQnLFxyXG4gICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucXJDb2RlID0gJyc7XHJcbiAgICAgIHRoaXMuZm9jdXNRUklucHV0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyDEsGxrIG9rdXRtYSBrb250cm9sw7wgLSBIacOnIGtvbnRyb2wgZWRpbG1lbWnFnyBzYXTEsXIgdmFyc2EsIGJ1IGlsayBva3V0bWEgZGVtZWt0aXJcclxuICAgIGNvbnN0IGlzRmlyc3RTY2FuID0gIXRoaXMubGluZXMuc29tZSh4ID0+IHguaXNDb250cm9sbGVkKTtcclxuICAgIGlmIChpc0ZpcnN0U2Nhbikge1xyXG4gICAgICAvLyDEsGxrIG9rdXRtYSBpw6dpbiDDvHLDvG4gYcSfYWPEsSB2ZSBrYWxpdGUga29udHJvbMO8IHlhcFxyXG4gICAgICBjb25zb2xlLmxvZygnxLBsayBva3V0bWEgdGVzcGl0IGVkaWxkaSwgw7xyw7xuIGHEn2FjxLEga29udHJvbMO8IHlhcMSxbMSxeW9yOicsIHBhcnNlZC5jaGVtaWNhbENvZGUpO1xyXG4gICAgICB0aGlzLnNlcnZpY2UuaGFzUHJvZHVjdGlvblRyZWUocGFyc2VkLmNoZW1pY2FsQ29kZSwgdGhpcy5pc0VtcmlObykuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnSGFzUHJvZHVjdGlvblRyZWUgcmVzcG9uc2U6JywgcmVzcG9uc2UpO1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5pc1N1Y2Nlc3NmdWwgJiYgcmVzcG9uc2UuaXRlbXMgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgLy8gw5xyw7xuIGHEn2FjxLEgdmFyLCBrYWxpdGUga29udHJvbMO8IHlhcFxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnw5xyw7xuIGHEn2FjxLEgYnVsdW5kdSwga2FsaXRlIGtvbnRyb2zDvCB5YXDEsWzEsXlvcicpO1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrUXVhbGl0eUFuZFByb2Nlc3MobGluZSwgcGFyc2VkLmxvdE51bWJlciwgaXNGaXJzdFNjYW4pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gw5xyw7xuIGHEn2FjxLEgeW9rLCBoYXRhIGfDtnN0ZXJcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ8OccsO8biBhxJ9hY8SxIGJ1bHVuYW1hZMSxIScpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcignJywgJ8SwbGsgb2t1dG1hIGnFn2xlbWkgeWFyxLEgbWFtw7xsIGnDp2luIHlhcMSxbG1hbMSxIScsIHtcclxuICAgICAgICAgICAgICBoaWRlWWVzQnRuOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5xckNvZGUgPSAnJztcclxuICAgICAgICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdIYXNQcm9kdWN0aW9uVHJlZSBlcnJvcjonLCBlcnIpO1xyXG4gICAgICAgICAgdGhpcy5jb25maXJtYXRpb24uZXJyb3IoJycsICfDnHLDvG4gYcSfYWPEsSBrb250cm9sw7wgeWFwxLFsxLFya2VuIGhhdGEgb2x1xZ90dSEnLCB7XHJcbiAgICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5xckNvZGUgPSAnJztcclxuICAgICAgICAgIHRoaXMuZm9jdXNRUklucHV0KCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyDEsGxrIG9rdXRtYSBkZcSfaWxzZSBkaXJla3QgacWfbGVcclxuICAgICAgY29uc29sZS5sb2coJ8SwbGsgb2t1dG1hIGRlxJ9pbCwgZGlyZWt0IGnFn2xlbml5b3InKTtcclxuICAgICAgdGhpcy5wcm9jZXNzUXJTY2FuKGxpbmUsIHBhcnNlZC5sb3ROdW1iZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1F1YWxpdHlBbmRQcm9jZXNzKGxpbmU6IEZpbGxpbmdDb250cm9sTGluZSwgYmF0Y2hOdW1iZXI6IHN0cmluZywgaXNGaXJzdFNjYW46IGJvb2xlYW4pIHtcclxuICAgIC8vIEthbGl0ZSBkdXJ1bXUga29udHJvbMO8IHlhcFxyXG4gICAgdGhpcy5zZXJ2aWNlLmNoZWNrUXVhbGl0eVN0YXR1cyhiYXRjaE51bWJlciwgdGhpcy5pc0VtcmlObywgbGluZS5pdGVtQ29kZSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdDaGVja1F1YWxpdHlTdGF0dXMgcmVzcG9uc2U6JywgcmVzcG9uc2UpO1xyXG4gICAgICAgIGlmIChyZXNwb25zZT8uaXNTdWNjZXNzZnVsICYmIHJlc3BvbnNlLml0ZW1zKSB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UuaXRlbXMuaXNBcHByb3ZlZCkge1xyXG4gICAgICAgICAgICAvLyBLYWxpdGUgb25heWxhbmTEsSwgb2t1dG1heWEgZGV2YW0gZXRcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0thbGl0ZSBrb250cm9sw7wgb25heWxhbmTEsSwgb2t1dG1heWEgZGV2YW0gZWRpbGl5b3InKTtcclxuICAgICAgICAgICAgdGhpcy5wcm9jZXNzUXJTY2FuKGxpbmUsIGJhdGNoTnVtYmVyLCBpc0ZpcnN0U2Nhbik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBLYWxpdGUgUkVELCBoYXRhIGfDtnN0ZXJcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0thbGl0ZSBrb250cm9sw7wgcmVkZGVkaWxkaTonLCByZXNwb25zZS5pdGVtcy5lcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcignJywgcmVzcG9uc2UuaXRlbXMuZXJyb3JNZXNzYWdlIHx8ICdLYWxpdGUga29udHJvbMO8IHJlZGRlZGlsZGkhJywge1xyXG4gICAgICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICAgICAgICBkaXNtaXNzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnFyQ29kZSA9ICcnO1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzUVJJbnB1dCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBTb3JndSBzb251Y3UgbnVsbCBnZWxkaSB2ZXlhIGJhxZ9hcsSxc8SxelxyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0thbGl0ZSBrb250cm9sw7wgc29yZ3VzdSBzb251w6cgZMO2bmTDvHJtZWRpJyk7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcignJywgJ0J1IGxvdCBudW1hcmFzxLEgacOnaW4ga2FsaXRlIGJpbGdpc2kgYnVsdW5hbWFkxLEhJywge1xyXG4gICAgICAgICAgICBoaWRlWWVzQnRuOiB0cnVlLFxyXG4gICAgICAgICAgICBjYW5jZWxUZXh0OiAnS2FwYXQnLFxyXG4gICAgICAgICAgICBkaXNtaXNzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMucXJDb2RlID0gJyc7XHJcbiAgICAgICAgICB0aGlzLmZvY3VzUVJJbnB1dCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdDaGVja1F1YWxpdHlTdGF0dXMgZXJyb3I6JywgZXJyKTtcclxuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcignJywgJ0thbGl0ZSBrb250cm9sw7wgeWFwxLFsxLFya2VuIGhhdGEgb2x1xZ90dSEnLCB7XHJcbiAgICAgICAgICBoaWRlWWVzQnRuOiB0cnVlLFxyXG4gICAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnFyQ29kZSA9ICcnO1xyXG4gICAgICAgIHRoaXMuZm9jdXNRUklucHV0KCk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvY2Vzc1FyU2NhbihsaW5lOiBGaWxsaW5nQ29udHJvbExpbmUsIGJhdGNoTnVtYmVyOiBzdHJpbmcsIGlzRmlyc3RTY2FuOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIC8vIEtvbnRyb2wgZWRpbGRpIG9sYXJhayBpxZ9hcmV0bGUgdmUgcGFydGkgbnVtYXJhc8SxbsSxIHNldCBldFxyXG4gICAgbGluZS5pc0NvbnRyb2xsZWQgPSB0cnVlO1xyXG4gICAgaWYgKGlzRmlyc3RTY2FuKSB7XHJcbiAgICAgIGxpbmUuYmF0Y2hOdW1iZXIgPSBiYXRjaE51bWJlcjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBHcmlkJ2kgcmVmcmVzaCBldFxyXG4gICAgdGhpcy5kYXRhR3JpZC5pbnN0YW5jZS5yZWZyZXNoKCk7XHJcblxyXG4gICAgLy8gUVIgaW5wdXQndSB0ZW1pemxlIHZlIGZvY3VzIGV0XHJcbiAgICB0aGlzLnFyQ29kZSA9ICcnO1xyXG4gICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICB9XHJcblxyXG4gIHNhdmUoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNFbXJpTm8gfHwgdGhpcy5saW5lcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFTDvG0ga29udHJvbGxlciB0YW1hbWxhbm3EscWfIG3EsSBrb250cm9sw7xcclxuICAgIGlmICghdGhpcy5saW5lcy5ldmVyeSh4ID0+IHguaXNDb250cm9sbGVkKSkge1xyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvbi53YXJuKCcnLCAnVMO8bSBrb250cm9sbGVyIHRhbWFtbGFubWFkYW4ga2F5xLF0IGnFn2xlbWkgeWFwxLFsYW1hei4nLCB7XHJcbiAgICAgICAgaGlkZVllc0J0bjogdHJ1ZSxcclxuICAgICAgICBjYW5jZWxUZXh0OiAnS2FwYXQnLFxyXG4gICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzYXZlRGF0YSA9IHtcclxuICAgICAgd29ya09yZGVyTm86IHRoaXMuaXNFbXJpTm8sXHJcbiAgICAgIGxpbmVzOiB0aGlzLmxpbmVzLm1hcChsaW5lID0+ICh7XHJcbiAgICAgICAgbGluZU51bTogbGluZS5saW5lTnVtLFxyXG4gICAgICAgIGl0ZW1Db2RlOiBsaW5lLml0ZW1Db2RlLFxyXG4gICAgICAgIGlzQ29udHJvbGxlZDogbGluZS5pc0NvbnRyb2xsZWQsXHJcbiAgICAgICAgYmF0Y2hOdW1iZXI6IGxpbmUuYmF0Y2hOdW1iZXIgfHwgJydcclxuICAgICAgfSkpXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VydmljZS5zYXZlRmlsbGluZ0NvbnRyb2woc2F2ZURhdGEpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IHJlc3BvbnNlID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2U/LmlzU3VjY2Vzc2Z1bCkge1xyXG4gICAgICAgICAgdGhpcy5jb25maXJtYXRpb24uc3VjY2VzcygnJywgJ0thecSxdCBiYcWfYXLEsWzEsSEnLCB7XHJcbiAgICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jbGVhckFsbCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogZSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5zdGF0dXMkLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIEhhdGEgc29ucmFzxLEgacWfbGVtXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbGVhckFsbCgpIHtcclxuICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWFyY2hCYXNpbGRpTWkgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNFbXJpTm8gPSBudWxsO1xyXG4gICAgdGhpcy5oYXRCaWxnaXNpID0gJyc7XHJcbiAgICB0aGlzLnFyQ29kZSA9ICcnO1xyXG4gICAgdGhpcy5saW5lcyA9IFtdO1xyXG4gICAgdGhpcy5pc0RhdGFMb2FkZWRGcm9tRGIgPSBmYWxzZTtcclxuICAgIHRoaXMuZm9jdXNPbklzRW1yaU5vKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvd0themFuRGVnaXNpbWlCdXR0b24oKTogYm9vbGVhbiB7XHJcbiAgICAvLyBTYWRlY2UgREInZGVuIHZlcmkgZ2VsbWnFn3NlLCBpxZ8gZW1yaSBva3V0dWxtdcWfIHZlIHTDvG0gc2F0xLFybGFyIGtvbnRyb2wgZWRpbG1pxZ8gaXNlIGfDtnN0ZXJcclxuICAgIHJldHVybiB0aGlzLmlzRGF0YUxvYWRlZEZyb21EYiAmJlxyXG4gICAgICAgICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSAmJiBcclxuICAgICAgICAgICB0aGlzLmxpbmVzLmxlbmd0aCA+IDAgJiYgXHJcbiAgICAgICAgICAgdGhpcy5saW5lcy5ldmVyeSh4ID0+IHguaXNDb250cm9sbGVkKTtcclxuICB9XHJcblxyXG4gIGdldCBpc1NhdmVCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIC8vIMSwxZ8gZW1yaSB5b2tzYSB2ZXlhIHNhdMSxciB5b2tzYSB2ZXlhIHTDvG0gc2F0xLFybGFyIGtvbnRyb2wgZWRpbG1lbWnFn3NlIGRpc2FibGVcclxuICAgIHJldHVybiAhdGhpcy5pc0VtcmlObyB8fCBcclxuICAgICAgICAgICB0aGlzLmxpbmVzLmxlbmd0aCA9PT0gMCB8fCBcclxuICAgICAgICAgICAhdGhpcy5saW5lcy5ldmVyeSh4ID0+IHguaXNDb250cm9sbGVkKTtcclxuICB9XHJcblxyXG4gIGthemFuRGVnaXNpbWkoKSB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvbi53YXJuKFxyXG4gICAgICAnJyxcclxuICAgICAgJ0themFuIGRlxJ9pxZ9pbSBpxZ9sZW1pIGnDp2luIGtvbnRyb2wgZWRpbGVuIMO8csO8bmxlciBzxLFmxLFybGFuYWNha3TEsXIuIERldmFtIGV0bWVrIGlzdGl5b3IgbXVzdW51ej8nLFxyXG4gICAgICB7XHJcbiAgICAgICAgeWVzVGV4dDogJ0V2ZXQnLFxyXG4gICAgICAgIGNhbmNlbFRleHQ6ICdIYXnEsXInXHJcbiAgICAgIH1cclxuICAgICkuc3Vic2NyaWJlKHN0YXR1cyA9PiB7XHJcbiAgICAgIGlmIChzdGF0dXMgPT09ICdjb25maXJtJykge1xyXG4gICAgICAgIC8vIFTDvG0gc2F0xLFybGFyxLFuIElzQ29udHJvbGxlZCBhbGFuxLFuxLEgZmFsc2UgeWFwXHJcbiAgICAgICAgdGhpcy5saW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xyXG4gICAgICAgICAgbGluZS5pc0NvbnRyb2xsZWQgPSBmYWxzZTtcclxuICAgICAgICAgIGxpbmUuYmF0Y2hOdW1iZXIgPSAnJztcclxuICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBHcmlkJ2kgcmVmcmVzaCBldFxyXG4gICAgICAgIHRoaXMuZGF0YUdyaWQuaW5zdGFuY2UucmVmcmVzaCgpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIFFSIGlucHV0J2EgZm9jdXMgZXRcclxuICAgICAgICB0aGlzLmZvY3VzT25RckNvZGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmb2N1c09uSXNFbXJpTm8oKSB7XHJcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLm5tYkJveElzRW1yaU5vPy5pbnN0YW5jZS5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNPblFyQ29kZSgpIHtcclxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudHh0Qm94UXJDb2RlPy5pbnN0YW5jZS5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNRUklucHV0KCkge1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50eHRCb3hRckNvZGU/Lmluc3RhbmNlLmZvY3VzKCk7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxhYnAtcGFnZSBbYnJlYWRjcnVtYl09XCJmYWxzZVwiPlxyXG4gIDxhYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lciBjbGFzcz1cImNvbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8aDMgY2xhc3M9XCJwYWdlLXRpdGxlXCI+XHJcbiAgICAgICAge3sgJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5UaXRsZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9oMz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyB0ZXh0LWxnLWVuZCBwdC0yXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlKClcIiBbZGlzYWJsZWRdPVwiaXNTYXZlQnV0dG9uRGlzYWJsZWRcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2F2ZSBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAge3sgJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5TYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCIgKm5nSWY9XCJzaG93S2F6YW5EZWdpc2ltaUJ1dHRvblwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWluZm8gYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJrYXphbkRlZ2lzaW1pKClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcmVjeWNsZSBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgS2F6YW4gRGXEn2nFn2ltaVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4td2FybmluZyBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsZWFyQWxsKClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYnJvb20gbWUtMVwiPjwvaT5cclxuICAgICAgICAgIHt7ICdVcmV0aW1Zb25ldGltaTo6RmlsbGluZ0NvbnRyb2wuQ2xlYW4nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9hYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lcj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBtdC0yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCIgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoMTAwdmggLSAyNDFweCk7IG92ZXJmbG93OiBhdXRvO1wiPlxyXG4gICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cclxuICAgICAgICA8ZHgtbnVtYmVyLWJveCAjaXNFbXJpTm9SZWYgY2xhc3M9XCJtZS0xXCIgc3R5bGU9XCJ3aWR0aDoxMDAlO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidVcmV0aW1Zb25ldGltaTo6RmlsbGluZ0NvbnRyb2wuV29ya09yZGVyTm8nIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJpc0VtcmlOb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImdldFByb2R1Y3Rpb25PcmRlcigpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uRW50ZXJLZXkpPVwiZ2V0UHJvZHVjdGlvbk9yZGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWFyY2hCYXNpbGRpTWkgfHwgaXNFbXJpQmFya29kdUdlY2VybGlNaVwiPlxyXG4gICAgICAgIDwvZHgtbnVtYmVyLWJveD5cclxuICAgICAgICA8ZHgtYnV0dG9uIHN0eWxlPVwibWFyZ2luLXRvcDogNy41cHg7XCIgXHJcbiAgICAgICAgICAgICAgICAgICBpY29uPVwic2VhcmNoXCIgXHJcbiAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGVmYXVsdFwiIFxyXG4gICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiZ2V0UHJvZHVjdGlvbk9yZGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlYXJjaEJhc2lsZGlNaSB8fCBpc0VtcmlCYXJrb2R1R2VjZXJsaU1pXCI+XHJcbiAgICAgICAgPC9keC1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj1cImlzRW1yaUJhcmtvZHVHZWNlcmxpTWlcIj5cclxuICAgICAgICA8ZHgtdGV4dC1ib3ggc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5MaW5lSW5mbycgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJoYXRCaWxnaXNpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keC10ZXh0LWJveD5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICA8ZHgtdGV4dC1ib3ggI3FyQ29kZVJlZiBcclxuICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOjEwMCU7XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5RUkNvZGUnIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJxckNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChvbkVudGVyS2V5KT1cIm9uUXJDb2RlQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInVXJldGltWW9uZXRpbWk6OkZpbGxpbmdDb250cm9sLlFSQ29kZS5QbGFjZWhvbGRlcicgfCBhYnBMb2NhbGl6YXRpb25cIj5cclxuICAgICAgICAgIDwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICA8ZHgtYnV0dG9uIHN0eWxlPVwibWFyZ2luLXRvcDogNy41cHg7XCIgaWNvbj1cInBsdXNcIiB0eXBlPVwiZGVmYXVsdFwiIChvbkNsaWNrKT1cIm9uUXJDb2RlQ2hhbmdlKClcIj5cclxuICAgICAgICAgIDwvZHgtYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZHgtZGF0YS1ncmlkICNncmlkTGluZXMgXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTNcIiBcclxuICAgICAgICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cImxpbmVzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIml0ZW1Db2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cIidVcmV0aW1Zb25ldGltaTo6RmlsbGluZ0NvbnRyb2wuSXRlbUNvZGUnIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpdGVtTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCInVXJldGltWW9uZXRpbWk6OkZpbGxpbmdDb250cm9sLkl0ZW1OYW1lJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaXNDb250cm9sbGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cIidVcmV0aW1Zb25ldGltaTo6RmlsbGluZ0NvbnRyb2wuSXNDb250cm9sbGVkJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZT1cImJvb2xlYW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImJhdGNoTnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cIidVcmV0aW1Zb25ldGltaTo6RmlsbGluZ0NvbnRyb2wuQmF0Y2hOdW1iZXInIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvYWJwLXBhZ2U+XHJcbiJdfQ==
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { CoreModule } from '@abp/ng.core';
|
|
2
|
+
import { ThemeSharedModule } from '@abp/ng.theme.shared';
|
|
3
|
+
import { NgModule } from '@angular/core';
|
|
4
|
+
import { NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, } from '@ng-bootstrap/ng-bootstrap';
|
|
5
|
+
import { NgxValidateCoreModule } from '@ngx-validate/core';
|
|
6
|
+
import { CommercialUiModule } from '@volo/abp.commercial.ng.ui';
|
|
7
|
+
import { PageModule } from '@abp/ng.components/page';
|
|
8
|
+
import { HitFillingControlComponent } from './hit-filling-control.component';
|
|
9
|
+
import { HitFillingControlRoutingModule } from './hit-filling-control-routing.module';
|
|
10
|
+
import { DxButtonModule, DxNumberBoxModule, DxTextBoxModule, DxDataGridModule } from 'devextreme-angular';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
export class HitFillingControlModule {
|
|
13
|
+
}
|
|
14
|
+
HitFillingControlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFillingControlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15
|
+
HitFillingControlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: HitFillingControlModule, declarations: [HitFillingControlComponent], imports: [HitFillingControlRoutingModule,
|
|
16
|
+
CoreModule,
|
|
17
|
+
ThemeSharedModule,
|
|
18
|
+
CommercialUiModule,
|
|
19
|
+
NgxValidateCoreModule,
|
|
20
|
+
NgbCollapseModule,
|
|
21
|
+
NgbDatepickerModule,
|
|
22
|
+
NgbDropdownModule,
|
|
23
|
+
PageModule,
|
|
24
|
+
DxButtonModule,
|
|
25
|
+
DxNumberBoxModule,
|
|
26
|
+
DxTextBoxModule,
|
|
27
|
+
DxDataGridModule] });
|
|
28
|
+
HitFillingControlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFillingControlModule, imports: [HitFillingControlRoutingModule,
|
|
29
|
+
CoreModule,
|
|
30
|
+
ThemeSharedModule,
|
|
31
|
+
CommercialUiModule,
|
|
32
|
+
NgxValidateCoreModule,
|
|
33
|
+
NgbCollapseModule,
|
|
34
|
+
NgbDatepickerModule,
|
|
35
|
+
NgbDropdownModule,
|
|
36
|
+
PageModule,
|
|
37
|
+
DxButtonModule,
|
|
38
|
+
DxNumberBoxModule,
|
|
39
|
+
DxTextBoxModule,
|
|
40
|
+
DxDataGridModule] });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFillingControlModule, decorators: [{
|
|
42
|
+
type: NgModule,
|
|
43
|
+
args: [{
|
|
44
|
+
declarations: [HitFillingControlComponent],
|
|
45
|
+
imports: [
|
|
46
|
+
HitFillingControlRoutingModule,
|
|
47
|
+
CoreModule,
|
|
48
|
+
ThemeSharedModule,
|
|
49
|
+
CommercialUiModule,
|
|
50
|
+
NgxValidateCoreModule,
|
|
51
|
+
NgbCollapseModule,
|
|
52
|
+
NgbDatepickerModule,
|
|
53
|
+
NgbDropdownModule,
|
|
54
|
+
PageModule,
|
|
55
|
+
DxButtonModule,
|
|
56
|
+
DxNumberBoxModule,
|
|
57
|
+
DxTextBoxModule,
|
|
58
|
+
DxDataGridModule,
|
|
59
|
+
],
|
|
60
|
+
}]
|
|
61
|
+
}] });
|
|
62
|
+
export function loadHitFillingControlAsChild() {
|
|
63
|
+
return Promise.resolve(HitFillingControlModule);
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWZpbGxpbmctY29udHJvbC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1maWxsaW5nLWNvbnRyb2wvaGl0LWZpbGxpbmctY29udHJvbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGlCQUFpQixHQUNsQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQW9CMUcsTUFBTSxPQUFPLHVCQUF1Qjs7b0hBQXZCLHVCQUF1QjtxSEFBdkIsdUJBQXVCLGlCQWpCbkIsMEJBQTBCLGFBRXZDLDhCQUE4QjtRQUM5QixVQUFVO1FBQ1YsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixxQkFBcUI7UUFDckIsaUJBQWlCO1FBQ2pCLG1CQUFtQjtRQUNuQixpQkFBaUI7UUFDakIsVUFBVTtRQUNWLGNBQWM7UUFDZCxpQkFBaUI7UUFDakIsZUFBZTtRQUNmLGdCQUFnQjtxSEFHUCx1QkFBdUIsWUFmaEMsOEJBQThCO1FBQzlCLFVBQVU7UUFDVixpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLHFCQUFxQjtRQUNyQixpQkFBaUI7UUFDakIsbUJBQW1CO1FBQ25CLGlCQUFpQjtRQUNqQixVQUFVO1FBQ1YsY0FBYztRQUNkLGlCQUFpQjtRQUNqQixlQUFlO1FBQ2YsZ0JBQWdCOzJGQUdQLHVCQUF1QjtrQkFsQm5DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQzFDLE9BQU8sRUFBRTt3QkFDUCw4QkFBOEI7d0JBQzlCLFVBQVU7d0JBQ1YsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsVUFBVTt3QkFDVixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixnQkFBZ0I7cUJBQ2pCO2lCQUNGOztBQUdELE1BQU0sVUFBVSw0QkFBNEI7SUFDMUMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBUaGVtZVNoYXJlZE1vZHVsZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBOZ2JDb2xsYXBzZU1vZHVsZSxcclxuICBOZ2JEYXRlcGlja2VyTW9kdWxlLFxyXG4gIE5nYkRyb3Bkb3duTW9kdWxlLFxyXG59IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgTmd4VmFsaWRhdGVDb3JlTW9kdWxlIH0gZnJvbSAnQG5neC12YWxpZGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQ29tbWVyY2lhbFVpTW9kdWxlIH0gZnJvbSAnQHZvbG8vYWJwLmNvbW1lcmNpYWwubmcudWknO1xyXG5pbXBvcnQgeyBQYWdlTW9kdWxlIH0gZnJvbSAnQGFicC9uZy5jb21wb25lbnRzL3BhZ2UnO1xyXG5pbXBvcnQgeyBIaXRGaWxsaW5nQ29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vaGl0LWZpbGxpbmctY29udHJvbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIaXRGaWxsaW5nQ29udHJvbFJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2hpdC1maWxsaW5nLWNvbnRyb2wtcm91dGluZy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBEeEJ1dHRvbk1vZHVsZSwgRHhOdW1iZXJCb3hNb2R1bGUsIER4VGV4dEJveE1vZHVsZSwgRHhEYXRhR3JpZE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhcic7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW0hpdEZpbGxpbmdDb250cm9sQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBIaXRGaWxsaW5nQ29udHJvbFJvdXRpbmdNb2R1bGUsXHJcbiAgICBDb3JlTW9kdWxlLFxyXG4gICAgVGhlbWVTaGFyZWRNb2R1bGUsXHJcbiAgICBDb21tZXJjaWFsVWlNb2R1bGUsXHJcbiAgICBOZ3hWYWxpZGF0ZUNvcmVNb2R1bGUsXHJcbiAgICBOZ2JDb2xsYXBzZU1vZHVsZSxcclxuICAgIE5nYkRhdGVwaWNrZXJNb2R1bGUsXHJcbiAgICBOZ2JEcm9wZG93bk1vZHVsZSxcclxuICAgIFBhZ2VNb2R1bGUsXHJcbiAgICBEeEJ1dHRvbk1vZHVsZSxcclxuICAgIER4TnVtYmVyQm94TW9kdWxlLFxyXG4gICAgRHhUZXh0Qm94TW9kdWxlLFxyXG4gICAgRHhEYXRhR3JpZE1vZHVsZSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0RmlsbGluZ0NvbnRyb2xNb2R1bGUge31cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkSGl0RmlsbGluZ0NvbnRyb2xBc0NoaWxkKCkge1xyXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoSGl0RmlsbGluZ0NvbnRyb2xNb2R1bGUpO1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AuthGuard, PermissionGuard } from '@abp/ng.core';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { RouterModule } from '@angular/router';
|
|
4
|
+
import { HitFillingReceiptFromProductionComponent } from './hit-filling-receipt-from-production.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/router";
|
|
7
|
+
const routes = [
|
|
8
|
+
{
|
|
9
|
+
path: '',
|
|
10
|
+
component: HitFillingReceiptFromProductionComponent,
|
|
11
|
+
canActivate: [AuthGuard, PermissionGuard],
|
|
12
|
+
},
|
|
13
|
+
];
|
|
14
|
+
export class HitFillingReceiptFromProductionRoutingModule {
|
|
15
|
+
}
|
|
16
|
+
HitFillingReceiptFromProductionRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFillingReceiptFromProductionRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17
|
+
HitFillingReceiptFromProductionRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: HitFillingReceiptFromProductionRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
|
|
18
|
+
HitFillingReceiptFromProductionRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFillingReceiptFromProductionRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFillingReceiptFromProductionRoutingModule, decorators: [{
|
|
20
|
+
type: NgModule,
|
|
21
|
+
args: [{
|
|
22
|
+
imports: [RouterModule.forChild(routes)],
|
|
23
|
+
exports: [RouterModule],
|
|
24
|
+
}]
|
|
25
|
+
}] });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWZpbGxpbmctcmVjZWlwdC1mcm9tLXByb2R1Y3Rpb24tcm91dGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1maWxsaW5nLXJlY2VpcHQtZnJvbS1wcm9kdWN0aW9uL2hpdC1maWxsaW5nLXJlY2VpcHQtZnJvbS1wcm9kdWN0aW9uLXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOzs7QUFFM0csTUFBTSxNQUFNLEdBQVc7SUFDckI7UUFDRSxJQUFJLEVBQUUsRUFBRTtRQUNSLFNBQVMsRUFBRSx3Q0FBd0M7UUFDbkQsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQztLQUMxQztDQUNGLENBQUM7QUFNRixNQUFNLE9BQU8sNENBQTRDOzt5SUFBNUMsNENBQTRDOzBJQUE1Qyw0Q0FBNEMsd0NBRjdDLFlBQVk7MElBRVgsNENBQTRDLFlBSDdDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQzdCLFlBQVk7MkZBRVgsNENBQTRDO2tCQUp4RCxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoR3VhcmQsIFBlcm1pc3Npb25HdWFyZCB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSwgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgSGl0RmlsbGluZ1JlY2VpcHRGcm9tUHJvZHVjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vaGl0LWZpbGxpbmctcmVjZWlwdC1mcm9tLXByb2R1Y3Rpb24uY29tcG9uZW50JztcclxuXHJcbmNvbnN0IHJvdXRlczogUm91dGVzID0gW1xyXG4gIHtcclxuICAgIHBhdGg6ICcnLFxyXG4gICAgY29tcG9uZW50OiBIaXRGaWxsaW5nUmVjZWlwdEZyb21Qcm9kdWN0aW9uQ29tcG9uZW50LFxyXG4gICAgY2FuQWN0aXZhdGU6IFtBdXRoR3VhcmQsIFBlcm1pc3Npb25HdWFyZF0sXHJcbiAgfSxcclxuXTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1JvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpXSxcclxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpdEZpbGxpbmdSZWNlaXB0RnJvbVByb2R1Y3Rpb25Sb3V0aW5nTW9kdWxlIHt9XHJcbiJdfQ==
|