@colijnit/sharedcomponents 1.0.11 → 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/bundles/colijnit-sharedcomponents.umd.js +1583 -53
  2. package/bundles/colijnit-sharedcomponents.umd.js.map +1 -1
  3. package/colijnit-sharedcomponents.d.ts +7 -0
  4. package/colijnit-sharedcomponents.metadata.json +1 -1
  5. package/esm2015/colijnit-sharedcomponents.js +8 -1
  6. package/esm2015/lib/components/docsign/docsign.component.js +5 -7
  7. package/esm2015/lib/components/send-method-dialog/enums/send-option.js +8 -0
  8. package/esm2015/lib/components/send-method-dialog/send-method-dialog.component.js +221 -0
  9. package/esm2015/lib/components/send-method-dialog/send-method-dialog.module.js +27 -0
  10. package/esm2015/lib/components/stock/stock-information/stock-information.component.js +55 -0
  11. package/esm2015/lib/components/stock/stock-information-grid/stock-information-grid.component.js +258 -0
  12. package/esm2015/lib/components/stock/stock-location/stock-location.component.js +68 -0
  13. package/esm2015/lib/components/stock/stock-transfer/co-drop-down-list-fields.interface.js +2 -0
  14. package/esm2015/lib/components/stock/stock-transfer/stock-transfer.component.js +98 -0
  15. package/esm2015/lib/components/stock/stock.component.js +107 -0
  16. package/esm2015/lib/components/stock/stock.module.js +45 -0
  17. package/esm2015/lib/enum/icon.enum.js +23 -0
  18. package/esm2015/lib/factory/business-object-factory.js +120 -0
  19. package/esm2015/lib/factory/decorators/boolean.decorator.js +102 -0
  20. package/esm2015/lib/factory/decorators/complex-array.decorator.js +55 -0
  21. package/esm2015/lib/factory/decorators/complex-field.decorator.js +57 -0
  22. package/esm2015/lib/factory/decorators/date-field.decorator.js +36 -0
  23. package/esm2015/lib/factory/decorators/string-number.decorator.js +43 -0
  24. package/esm2015/lib/model/business-object.js +81 -0
  25. package/esm2015/lib/model/icon-svg.js +22 -0
  26. package/esm2015/lib/service/icon-cache.service.js +51 -0
  27. package/esm2015/lib/service/ione-connector-adapter.service.js +164 -0
  28. package/esm2015/lib/service/stock.service.js +41 -0
  29. package/esm2015/lib/utils/array-utils.js +183 -0
  30. package/esm2015/lib/utils/is-nill.function.js +5 -0
  31. package/esm2015/public-api.js +5 -1
  32. package/fesm2015/colijnit-sharedcomponents.js +1817 -8
  33. package/fesm2015/colijnit-sharedcomponents.js.map +1 -1
  34. package/lib/components/send-method-dialog/enums/send-option.d.ts +6 -0
  35. package/lib/components/send-method-dialog/send-method-dialog.component.d.ts +41 -0
  36. package/lib/components/send-method-dialog/send-method-dialog.module.d.ts +2 -0
  37. package/lib/components/send-method-dialog/style/_layout.scss +192 -0
  38. package/lib/components/send-method-dialog/style/_material-definition.scss +1 -0
  39. package/lib/components/send-method-dialog/style/_theme.scss +7 -0
  40. package/lib/components/send-method-dialog/style/material.scss +4 -0
  41. package/lib/components/stock/stock-information/stock-information.component.d.ts +11 -0
  42. package/lib/components/stock/stock-information-grid/stock-information-grid.component.d.ts +47 -0
  43. package/lib/components/stock/stock-location/stock-location.component.d.ts +16 -0
  44. package/lib/components/stock/stock-transfer/co-drop-down-list-fields.interface.d.ts +4 -0
  45. package/lib/components/stock/stock-transfer/stock-transfer.component.d.ts +21 -0
  46. package/lib/components/stock/stock.component.d.ts +32 -0
  47. package/lib/components/stock/stock.module.d.ts +2 -0
  48. package/lib/components/stock/style/_layout.scss +206 -0
  49. package/lib/components/stock/style/_material-definition.scss +20 -0
  50. package/lib/components/stock/style/_theme.scss +8 -0
  51. package/lib/components/stock/style/material.scss +4 -0
  52. package/lib/enum/icon.enum.d.ts +21 -0
  53. package/lib/factory/business-object-factory.d.ts +23 -0
  54. package/lib/factory/decorators/boolean.decorator.d.ts +43 -0
  55. package/lib/factory/decorators/complex-array.decorator.d.ts +25 -0
  56. package/lib/factory/decorators/complex-field.decorator.d.ts +25 -0
  57. package/lib/factory/decorators/date-field.decorator.d.ts +17 -0
  58. package/lib/factory/decorators/string-number.decorator.d.ts +22 -0
  59. package/lib/model/business-object.d.ts +7 -0
  60. package/lib/model/icon-svg.d.ts +4 -0
  61. package/lib/service/icon-cache.service.d.ts +18 -0
  62. package/lib/service/ione-connector-adapter.service.d.ts +26 -0
  63. package/lib/service/stock.service.d.ts +17 -0
  64. package/lib/utils/array-utils.d.ts +57 -0
  65. package/lib/utils/is-nill.function.d.ts +1 -0
  66. package/package.json +5 -10
  67. package/public-api.d.ts +4 -0
@@ -0,0 +1,258 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Component, Output, ViewChild, ViewEncapsulation, EventEmitter, Input } from "@angular/core";
3
+ import { StockService } from "../../../service/stock.service";
4
+ import { IconCacheService } from "../../../service/icon-cache.service";
5
+ import { Icon } from "../../../enum/icon.enum";
6
+ import { ArticleStock } from "@colijnit/articleapi/build/model/article-stock";
7
+ import { PrintStockStickers } from "@colijnit/sharedapi/build/model/print-stock-stickers";
8
+ export class StockInformationGridComponent {
9
+ constructor(iconCacheService, _stockService) {
10
+ this.iconCacheService = iconCacheService;
11
+ this._stockService = _stockService;
12
+ this.icons = Icon;
13
+ this.locationLineClicked = new EventEmitter();
14
+ this.transferIconClicked = new EventEmitter();
15
+ this.show = false;
16
+ this.hideOrShowLocationTab = false;
17
+ this.showStockHistory = false;
18
+ this.showSendMethodDialog = false;
19
+ this.data = [
20
+ { test: "test" }
21
+ ];
22
+ this.inOrderInformation = [
23
+ { inOrder: "275432", customer: "Test customer", orderDate: "date", orderAmount: "2", warehouseNumber: "8", warehouseDescription: "A nice warehouse", amountInStock: "17", commission: "4014321" },
24
+ { inOrder: "275432", customer: "Test customer", orderDate: "date", orderAmount: "2", warehouseNumber: "8", warehouseDescription: "A nice warehouse", amountInStock: "17", commission: "4014321" },
25
+ { inOrder: "275432", customer: "Test customer", orderDate: "date", orderAmount: "2", warehouseNumber: "8", warehouseDescription: "A nice warehouse", amountInStock: "17", commission: "4014321" },
26
+ { inOrder: "275432", customer: "Test customer", orderDate: "date", orderAmount: "2", warehouseNumber: "8", warehouseDescription: "A nice warehouse", amountInStock: "17", commission: "4014321" },
27
+ { inOrder: "275432", customer: "Test customer", orderDate: "date", orderAmount: "2", warehouseNumber: "8", warehouseDescription: "A nice warehouse", amountInStock: "17", commission: "4014321" },
28
+ ];
29
+ this.orderInformation = [];
30
+ this.hideOrShowTabs = true;
31
+ this.dataWareHouseCode = 0;
32
+ this.dataWareHouseFields = { text: "warehouseDescription", value: "warehouseNumber" };
33
+ this.articleStockSearchInfo = new ArticleStock();
34
+ this.tabs = [
35
+ "STOCK",
36
+ "IN_ORDER2",
37
+ "ORDERS1"
38
+ ];
39
+ this.activeTab = this.tabs[0];
40
+ }
41
+ get activeTabText() {
42
+ switch (this.activeTab) {
43
+ case this.tabs[0]:
44
+ return "Voorraadregels";
45
+ case this.tabs[1]:
46
+ return "Gevonden in order(s)";
47
+ case this.tabs[2]:
48
+ return "Gevonden in bestellingen";
49
+ default:
50
+ return "Voorraadlocatie regels";
51
+ }
52
+ }
53
+ handleTabClick(tabData) {
54
+ this.activeTab = tabData;
55
+ }
56
+ onLocationClick(data) {
57
+ this.articleStockSearchInfo.goodId = data.goodId.toString();
58
+ this.articleStockSearchInfo.wareHouseNo = data.warehouseNo.toString();
59
+ this.articleStockSearchInfo.viewKind = "D";
60
+ this.locationLineClicked.emit(this.articleStockSearchInfo);
61
+ this.hideOrShowTabs = false;
62
+ this.hideOrShowLocationTab = true;
63
+ }
64
+ onPopupClose() {
65
+ this.show = false;
66
+ }
67
+ handleHistoryClick() {
68
+ // console.warn('Not yet implemented');
69
+ // this.showStockHistory = true;
70
+ }
71
+ handleCloseClick() {
72
+ this.onPopupClose();
73
+ }
74
+ handleStockTransferClick(event) {
75
+ this.transferIconClicked.emit(event);
76
+ }
77
+ handleBackToStockClick() {
78
+ return __awaiter(this, void 0, void 0, function* () {
79
+ this.activeTab = this.tabs[0];
80
+ this.hideOrShowTabs = true;
81
+ this.hideOrShowLocationTab = false;
82
+ });
83
+ }
84
+ openSendMethodDialog() {
85
+ this.showSendMethodDialog = !this.showSendMethodDialog;
86
+ }
87
+ printStockStickers() {
88
+ this.printSticker = new PrintStockStickers();
89
+ this.printSticker.goodId = 10;
90
+ this._stockService.getPrintStockStickers(this.printSticker);
91
+ }
92
+ onOkClick() {
93
+ }
94
+ onCancelClick() {
95
+ }
96
+ }
97
+ StockInformationGridComponent.decorators = [
98
+ { type: Component, args: [{
99
+ selector: "co-stock-information-grid",
100
+ template: `
101
+ <div class="tab-link show" *ngIf="hideOrShowTabs">
102
+ <span class="tab-link-buttons"
103
+ *ngFor="let tab of tabs"
104
+ (click)="handleTabClick(tab)"
105
+ [textContent]="tab"
106
+ [class.active]="tab === activeTab"
107
+ ></span>
108
+ </div>
109
+
110
+ <div class="stock-line">
111
+ <div [textContent]="activeTabText"></div>
112
+
113
+ </div>
114
+
115
+ <div class="stock-grid">
116
+ <co-simple-grid *ngIf="activeTab === tabs[0] && hideOrShowTabs"
117
+ [data]="articleStockInformation"
118
+ >
119
+ <co-simple-grid-column [headerText]="'WAREHOUSE'" [field]="'warehouseNo'"></co-simple-grid-column>
120
+ <co-simple-grid-column [headerText]="'DESCRIPTION'" [field]="'warehouseName'"></co-simple-grid-column>
121
+ <co-simple-grid-column [headerText]="'STOCK'" [field]="'technicalStock'"></co-simple-grid-column>
122
+ <co-simple-grid-column [headerText]="'AVAILABLE_STOCK'" [field]="'availableStock'"></co-simple-grid-column>
123
+ <co-simple-grid-column [headerText]="'ECONOMICAL_STOCK'" [field]="'economicalStock'"></co-simple-grid-column>
124
+ <co-simple-grid-column [headerText]="'LOCATION'" [field]="'locationNo'">
125
+ <ng-template #template let-row="row">
126
+ <span [textContent]="'bekijken'" (click)="onLocationClick(row)"></span>
127
+ </ng-template>
128
+ </co-simple-grid-column>
129
+ </co-simple-grid>
130
+
131
+ <co-simple-grid *ngIf="activeTab === tabs[1]"
132
+ [data]="inOrderInformation"
133
+ >
134
+ <co-simple-grid-column [headerText]="'IN_ORDER2'" [field]="'inOrder'"></co-simple-grid-column>
135
+ <co-simple-grid-column [headerText]="'CUSTOMER'" [field]="'customer'"></co-simple-grid-column>
136
+ <co-simple-grid-column [headerText]="'DATE'" [field]="'orderDate'"></co-simple-grid-column>
137
+ <co-simple-grid-column [headerText]="'AMOUNT'" [field]="'orderAmount'"></co-simple-grid-column>
138
+ <co-simple-grid-column [headerText]="'WAREHOUSE'" [field]="'warehouseNumber'"></co-simple-grid-column>
139
+ <co-simple-grid-column [headerText]="'DESCRIPTION'" [field]="'warehouseDescription'"></co-simple-grid-column>
140
+ <co-simple-grid-column [headerText]="'STOCK'" [field]="'amountInStock'"></co-simple-grid-column>
141
+ <co-simple-grid-column [headerText]="'COMMISSION2'" [field]="'commission'"></co-simple-grid-column>
142
+ <co-simple-grid-column [headerText]="'TRANSFER'" [field]="'transfer'">
143
+ <ng-template #template let-row="row">
144
+ <co-icon class="menu-icon" [iconData]="iconCacheService.getIcon(icons.DeliveryTruck)" (click)="handleStockTransferClick($event)"></co-icon>
145
+ </ng-template>
146
+ </co-simple-grid-column>
147
+ <co-simple-grid-column [headerText]="'STICKER'" [field]="'sticker'">
148
+ <ng-template #template let-row="row">
149
+ <co-icon class="menu-icon" [iconData]="iconCacheService.getIcon(icons.Print)" (click)="openSendMethodDialog()"></co-icon>
150
+ </ng-template>
151
+ </co-simple-grid-column>
152
+ </co-simple-grid>
153
+
154
+ <co-simple-grid *ngIf="activeTab === tabs[2]"
155
+ [data]="orderInformation"
156
+ >
157
+ <co-simple-grid-column [headerText]="'PURCHASE_ORDER_NR'" [field]="'purchaseOrderNo'"></co-simple-grid-column>
158
+ <co-simple-grid-column [headerText]="'DATE'" [field]="'orderDate'"></co-simple-grid-column>
159
+ <co-simple-grid-column [headerText]="'AMOUNT'" [field]="'orderAmount'"></co-simple-grid-column>
160
+ <co-simple-grid-column [headerText]="'RESERVED'" [field]="'reserved'"></co-simple-grid-column>
161
+ <co-simple-grid-column [headerText]="'FREE_STOCK'" [field]="'freeStock'"></co-simple-grid-column>
162
+ <co-simple-grid-column [headerText]="'DELIVERY_DATE1'" [field]="'deliveryDate'"></co-simple-grid-column>
163
+ <co-simple-grid-column [headerText]="'RESERVE'" [field]="'reservation'"></co-simple-grid-column>
164
+ </co-simple-grid>
165
+ </div>
166
+
167
+ <div class="stock-grid" *ngIf="hideOrShowLocationTab">
168
+ <div class="stock-location-group">
169
+ <div class="stock-location-left-group">
170
+ <span class="stock-button-back" [textContent]="'BACK_TO_STOCK_LINES'" (click)="handleBackToStockClick()"></span>
171
+ </div>
172
+ <div class="stock-location-right-group">
173
+ <co-input-combo-box [(model)]="dataWareHouseCode"
174
+ [fields]="dataWareHouseFields"
175
+ [placeholder]="'WAREHOUSE'"
176
+ [required]="true"
177
+ ></co-input-combo-box>
178
+ </div>
179
+ </div>
180
+
181
+ <!-- TODO move to own component stock-location-->
182
+ <co-simple-grid [data]="stockLocationData"
183
+ >
184
+ <div class="stock-location-group">
185
+ <div class="stock-location-left-group">
186
+ <co-button class="stock-lines-button" [textContent]="'BACK_TO_STOCK_LINES'" (click)="handleBackToStockClick()"></co-button>
187
+ </div>
188
+ </div>
189
+ <co-simple-grid-column [headerText]="'WAREHOUSE'" [field]="'warehouseName'"></co-simple-grid-column>
190
+ <co-simple-grid-column [headerText]="'BATCH'" [field]="'batchNo'"></co-simple-grid-column>
191
+ <co-simple-grid-column [headerText]="'SERIAL_NO'" [field]="'serialNo'"></co-simple-grid-column>
192
+ <co-simple-grid-column [headerText]="'STOCK'" [field]="'notAssignedStock'"></co-simple-grid-column>
193
+ <co-simple-grid-column [headerText]="'ALLOCATED'" [field]="'economicalStock'"></co-simple-grid-column>
194
+ <co-simple-grid-column [headerText]="'AVAILABLE_STOCK'" [field]="'availableStock'"></co-simple-grid-column>
195
+ <co-simple-grid-column [headerText]="'TRANSFER'" [field]="'transfer'">
196
+ <ng-template #template let-row="row">
197
+ <co-icon class="menu-icon" [iconData]="iconCacheService.getIcon(icons.DeliveryTruck)" (click)="handleStockTransferClick(row)"></co-icon>
198
+ </ng-template>
199
+ </co-simple-grid-column>
200
+ <co-simple-grid-column [headerText]="'STICKER'" [field]="'sticker'">
201
+ <ng-template #template let-row="row">
202
+ <co-icon class="menu-icon" [iconData]="iconCacheService.getIcon(icons.Print)" (click)="openSendMethodDialog()"></co-icon>
203
+ </ng-template>
204
+ </co-simple-grid-column>
205
+ </co-simple-grid>
206
+ </div>
207
+
208
+ <div class="stock-grid" *ngIf="showStockHistory">
209
+ <co-simple-grid [data]="stockHistoryInformation"
210
+ >
211
+ <co-simple-grid-column [headerText]="'WAREHOUSE'" [field]="'location'"></co-simple-grid-column>
212
+ <co-simple-grid-column [headerText]="'BATCH'" [field]="'batch'"></co-simple-grid-column>
213
+ <co-simple-grid-column [headerText]="'SERIAL_NO'" [field]="'serialNo'"></co-simple-grid-column>
214
+ <co-simple-grid-column [headerText]="'STOCK'" [field]="'amountInStock'"></co-simple-grid-column>
215
+ <co-simple-grid-column [headerText]="'ALLOCATED'" [field]="'allocated'"></co-simple-grid-column>
216
+ <co-simple-grid-column [headerText]="'AVAILABLE_STOCK'" [field]="'amountAvailable'"></co-simple-grid-column>
217
+ <co-simple-grid-column [headerText]="'STICKER'" [field]="'sticker'">
218
+ <ng-template #template let-row="row">
219
+ <co-icon class="menu-icon" [iconData]="iconCacheService.getIcon(icons.Print)" (click)="openSendMethodDialog()"></co-icon>
220
+ </ng-template>
221
+ </co-simple-grid-column>
222
+ </co-simple-grid>
223
+ </div>
224
+
225
+ <div class="stock-button-toolbar">
226
+ <div class="stock-button-left-group">
227
+ <co-button [label]="'HISTORY'" (click)="handleHistoryClick()"></co-button>
228
+ </div>
229
+ <div class="stock-button-middle-group">
230
+ <div class="button-left">
231
+ <co-button [textContent]="'Ok'" (click)="onOkClick()"></co-button>
232
+ </div>
233
+ <div class="button-right">
234
+ <co-button [textContent]="'Annuleren'" (click)="onCancelClick()"></co-button>
235
+ </div>
236
+ </div>
237
+ </div>
238
+ <ione-send-method-dialog
239
+ [showDialog]="showSendMethodDialog"
240
+ (printButtonClicked)="printStockStickers()"
241
+ ></ione-send-method-dialog>
242
+ `,
243
+ encapsulation: ViewEncapsulation.None
244
+ },] }
245
+ ];
246
+ StockInformationGridComponent.ctorParameters = () => [
247
+ { type: IconCacheService },
248
+ { type: StockService }
249
+ ];
250
+ StockInformationGridComponent.propDecorators = {
251
+ stock: [{ type: ViewChild, args: [StockInformationGridComponent,] }],
252
+ articleStockInformation: [{ type: Input }],
253
+ stockHistoryInformation: [{ type: Input }],
254
+ stockLocationData: [{ type: Input }],
255
+ locationLineClicked: [{ type: Output }],
256
+ transferIconClicked: [{ type: Output }]
257
+ };
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staW5mb3JtYXRpb24tZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zdG9jay9zdG9jay1pbmZvcm1hdGlvbi1ncmlkL3N0b2NrLWluZm9ybWF0aW9uLWdyaWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRzdDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQXFKeEYsTUFBTSxPQUFPLDZCQUE2QjtJQWtFeEMsWUFDUyxnQkFBa0MsRUFDakMsYUFBMkI7UUFENUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQW5FckIsVUFBSyxHQUFnQixJQUFJLENBQUM7UUFlMUIsd0JBQW1CLEdBQStCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHckUsd0JBQW1CLEdBQWlDLElBQUksWUFBWSxFQUFFLENBQUM7UUFHaEYsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUN0QiwwQkFBcUIsR0FBWSxLQUFLLENBQUM7UUFDdkMscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUV0QyxTQUFJLEdBQVU7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Z0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOElUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUF6Sk8sZ0JBQWdCO1lBRGhCLFlBQVk7OztvQkE4SmpCLFNBQVMsU0FBQyw2QkFBNkI7c0NBR3ZDLEtBQUs7c0NBR0wsS0FBSztnQ0FHTCxLQUFLO2tDQUdMLE1BQU07a0NBR04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIEV2ZW50RW1pdHRlciwgSW5wdXR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7U3RvY2tTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS9zdG9jay5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSBcIi4uLy4uLy4uL2VudW0vaWNvbi5lbnVtXCI7XHJcbmltcG9ydCB7QXJ0aWNsZVN0b2NrQm99IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLXN0b2NrLmJvXCI7XHJcbmltcG9ydCB7R2V0U3RvY2tIaXN0b3J5UmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2dldC1zdG9jay1oaXN0b3J5LXJlcXVlc3RcIjtcclxuaW1wb3J0IHtBcnRpY2xlU3RvY2t9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLXN0b2NrXCI7XHJcbmltcG9ydCB7UHJpbnRTdG9ja1N0aWNrZXJzfSBmcm9tIFwiQGNvbGlqbml0L3NoYXJlZGFwaS9idWlsZC9tb2RlbC9wcmludC1zdG9jay1zdGlja2Vyc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY28tc3RvY2staW5mb3JtYXRpb24tZ3JpZFwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwidGFiLWxpbmsgc2hvd1wiICpuZ0lmPVwiaGlkZU9yU2hvd1RhYnNcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJ0YWItbGluay1idXR0b25zXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVRhYkNsaWNrKHRhYilcIlxyXG4gICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwidGFiXCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJ0YWIgPT09IGFjdGl2ZVRhYlwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic3RvY2stbGluZVwiPlxyXG4gICAgICA8ZGl2IFt0ZXh0Q29udGVudF09XCJhY3RpdmVUYWJUZXh0XCI+PC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInN0b2NrLWdyaWRcIj5cclxuICAgICAgPGNvLXNpbXBsZS1ncmlkICpuZ0lmPVwiYWN0aXZlVGFiID09PSB0YWJzWzBdICYmIGhpZGVPclNob3dUYWJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImFydGljbGVTdG9ja0luZm9ybWF0aW9uXCJcclxuICAgICAgPlxyXG4gICAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInV0FSRUhPVVNFJ1wiIFtmaWVsZF09XCInd2FyZWhvdXNlTm8nXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidERVNDUklQVElPTidcIiBbZmllbGRdPVwiJ3dhcmVob3VzZU5hbWUnXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidTVE9DSydcIiBbZmllbGRdPVwiJ3RlY2huaWNhbFN0b2NrJ1wiPjwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInQVZBSUxBQkxFX1NUT0NLJ1wiIFtmaWVsZF09XCInYXZhaWxhYmxlU3RvY2snXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidFQ09OT01JQ0FMX1NUT0NLJ1wiIFtmaWVsZF09XCInZWNvbm9taWNhbFN0b2NrJ1wiPjwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInTE9DQVRJT04nXCIgW2ZpZWxkXT1cIidsb2NhdGlvbk5vJ1wiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RlbXBsYXRlIGxldC1yb3c9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwiJ2Jla2lqa2VuJ1wiIChjbGljayk9XCJvbkxvY2F0aW9uQ2xpY2socm93KVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICA8L2NvLXNpbXBsZS1ncmlkPlxyXG5cclxuICAgICAgPGNvLXNpbXBsZS1ncmlkICpuZ0lmPVwiYWN0aXZlVGFiID09PSB0YWJzWzFdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImluT3JkZXJJbmZvcm1hdGlvblwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidJTl9PUkRFUjInXCIgW2ZpZWxkXT1cIidpbk9yZGVyJ1wiPjwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0NVU1RPTUVSJ1wiIFtmaWVsZF09XCInY3VzdG9tZXInXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInREFURSdcIiBbZmllbGRdPVwiJ29yZGVyRGF0ZSdcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidBTU9VTlQnXCIgW2ZpZWxkXT1cIidvcmRlckFtb3VudCdcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidXQVJFSE9VU0UnXCIgW2ZpZWxkXT1cIid3YXJlaG91c2VOdW1iZXInXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInREVTQ1JJUFRJT04nXCIgW2ZpZWxkXT1cIid3YXJlaG91c2VEZXNjcmlwdGlvbidcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidTVE9DSydcIiBbZmllbGRdPVwiJ2Ftb3VudEluU3RvY2snXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInQ09NTUlTU0lPTjInXCIgW2ZpZWxkXT1cIidjb21taXNzaW9uJ1wiPjwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ1RSQU5TRkVSJ1wiIFtmaWVsZF09XCIndHJhbnNmZXInXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3RlbXBsYXRlIGxldC1yb3c9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGNvLWljb24gY2xhc3M9XCJtZW51LWljb25cIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkRlbGl2ZXJ5VHJ1Y2spXCIgKGNsaWNrKT1cImhhbmRsZVN0b2NrVHJhbnNmZXJDbGljaygkZXZlbnQpXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidTVElDS0VSJ1wiIFtmaWVsZF09XCInc3RpY2tlcidcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cIm1lbnUtaWNvblwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuUHJpbnQpXCIgKGNsaWNrKT1cIm9wZW5TZW5kTWV0aG9kRGlhbG9nKClcIj48L2NvLWljb24+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICA8L2NvLXNpbXBsZS1ncmlkPlxyXG5cclxuICAgICAgPGNvLXNpbXBsZS1ncmlkICpuZ0lmPVwiYWN0aXZlVGFiID09PSB0YWJzWzJdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cIm9yZGVySW5mb3JtYXRpb25cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInUFVSQ0hBU0VfT1JERVJfTlInXCIgW2ZpZWxkXT1cIidwdXJjaGFzZU9yZGVyTm8nXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInREFURSdcIiBbZmllbGRdPVwiJ29yZGVyRGF0ZSdcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidBTU9VTlQnXCIgW2ZpZWxkXT1cIidvcmRlckFtb3VudCdcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidSRVNFUlZFRCdcIiBbZmllbGRdPVwiJ3Jlc2VydmVkJ1wiPjwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0ZSRUVfU1RPQ0snXCIgW2ZpZWxkXT1cIidmcmVlU3RvY2snXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInREVMSVZFUllfREFURTEnXCIgW2ZpZWxkXT1cIidkZWxpdmVyeURhdGUnXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInUkVTRVJWRSdcIiBbZmllbGRdPVwiJ3Jlc2VydmF0aW9uJ1wiPjwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICA8L2NvLXNpbXBsZS1ncmlkPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInN0b2NrLWdyaWRcIiAqbmdJZj1cImhpZGVPclNob3dMb2NhdGlvblRhYlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3RvY2stbG9jYXRpb24tZ3JvdXBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RvY2stbG9jYXRpb24tbGVmdC1ncm91cFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdG9jay1idXR0b24tYmFja1wiIFt0ZXh0Q29udGVudF09XCInQkFDS19UT19TVE9DS19MSU5FUydcIiAoY2xpY2spPVwiaGFuZGxlQmFja1RvU3RvY2tDbGljaygpXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdG9jay1sb2NhdGlvbi1yaWdodC1ncm91cFwiPlxyXG4gICAgICAgICAgPGNvLWlucHV0LWNvbWJvLWJveCBbKG1vZGVsKV09XCJkYXRhV2FyZUhvdXNlQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZHNdPVwiZGF0YVdhcmVIb3VzZUZpZWxkc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInV0FSRUhPVVNFJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcclxuICAgICAgICAgID48L2NvLWlucHV0LWNvbWJvLWJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG48IS0tICAgICAgVE9ETyBtb3ZlIHRvIG93biBjb21wb25lbnQgc3RvY2stbG9jYXRpb24tLT5cclxuICAgICAgPGNvLXNpbXBsZS1ncmlkIFtkYXRhXT1cInN0b2NrTG9jYXRpb25EYXRhXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdG9jay1sb2NhdGlvbi1ncm91cFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0b2NrLWxvY2F0aW9uLWxlZnQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cInN0b2NrLWxpbmVzLWJ1dHRvblwiIFt0ZXh0Q29udGVudF09XCInQkFDS19UT19TVE9DS19MSU5FUydcIiAoY2xpY2spPVwiaGFuZGxlQmFja1RvU3RvY2tDbGljaygpXCI+PC9jby1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidXQVJFSE9VU0UnXCIgW2ZpZWxkXT1cIid3YXJlaG91c2VOYW1lJ1wiPjwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0JBVENIJ1wiIFtmaWVsZF09XCInYmF0Y2hObydcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidTRVJJQUxfTk8nXCIgW2ZpZWxkXT1cIidzZXJpYWxObydcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidTVE9DSydcIiBbZmllbGRdPVwiJ25vdEFzc2lnbmVkU3RvY2snXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInQUxMT0NBVEVEJ1wiIFtmaWVsZF09XCInZWNvbm9taWNhbFN0b2NrJ1wiPjwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0FWQUlMQUJMRV9TVE9DSydcIiBbZmllbGRdPVwiJ2F2YWlsYWJsZVN0b2NrJ1wiPjwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ1RSQU5TRkVSJ1wiIFtmaWVsZF09XCIndHJhbnNmZXInXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3RlbXBsYXRlIGxldC1yb3c9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGNvLWljb24gY2xhc3M9XCJtZW51LWljb25cIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkRlbGl2ZXJ5VHJ1Y2spXCIgKGNsaWNrKT1cImhhbmRsZVN0b2NrVHJhbnNmZXJDbGljayhyb3cpXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidTVElDS0VSJ1wiIFtmaWVsZF09XCInc3RpY2tlcidcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cIm1lbnUtaWNvblwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuUHJpbnQpXCIgKGNsaWNrKT1cIm9wZW5TZW5kTWV0aG9kRGlhbG9nKClcIj48L2NvLWljb24+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICA8L2NvLXNpbXBsZS1ncmlkPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInN0b2NrLWdyaWRcIiAqbmdJZj1cInNob3dTdG9ja0hpc3RvcnlcIj5cclxuICAgICAgPGNvLXNpbXBsZS1ncmlkIFtkYXRhXT1cInN0b2NrSGlzdG9yeUluZm9ybWF0aW9uXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ1dBUkVIT1VTRSdcIiBbZmllbGRdPVwiJ2xvY2F0aW9uJ1wiPjwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0JBVENIJ1wiIFtmaWVsZF09XCInYmF0Y2gnXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInU0VSSUFMX05PJ1wiIFtmaWVsZF09XCInc2VyaWFsTm8nXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInU1RPQ0snXCIgW2ZpZWxkXT1cIidhbW91bnRJblN0b2NrJ1wiPjwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0FMTE9DQVRFRCdcIiBbZmllbGRdPVwiJ2FsbG9jYXRlZCdcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidBVkFJTEFCTEVfU1RPQ0snXCIgW2ZpZWxkXT1cIidhbW91bnRBdmFpbGFibGUnXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInU1RJQ0tFUidcIiBbZmllbGRdPVwiJ3N0aWNrZXInXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3RlbXBsYXRlIGxldC1yb3c9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGNvLWljb24gY2xhc3M9XCJtZW51LWljb25cIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLlByaW50KVwiIChjbGljayk9XCJvcGVuU2VuZE1ldGhvZERpYWxvZygpXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgPC9jby1zaW1wbGUtZ3JpZD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzdG9jay1idXR0b24tdG9vbGJhclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3RvY2stYnV0dG9uLWxlZnQtZ3JvdXBcIj5cclxuICAgICAgICA8Y28tYnV0dG9uIFtsYWJlbF09XCInSElTVE9SWSdcIiAoY2xpY2spPVwiaGFuZGxlSGlzdG9yeUNsaWNrKClcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdG9jay1idXR0b24tbWlkZGxlLWdyb3VwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1sZWZ0XCI+XHJcbiAgICAgICAgICA8Y28tYnV0dG9uIFt0ZXh0Q29udGVudF09XCInT2snXCIgKGNsaWNrKT1cIm9uT2tDbGljaygpXCI+PC9jby1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1yaWdodFwiPlxyXG4gICAgICAgICAgPGNvLWJ1dHRvbiBbdGV4dENvbnRlbnRdPVwiJ0FubnVsZXJlbidcIiAoY2xpY2spPVwib25DYW5jZWxDbGljaygpXCI+PC9jby1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aW9uZS1zZW5kLW1ldGhvZC1kaWFsb2dcclxuICAgICAgW3Nob3dEaWFsb2ddPVwic2hvd1NlbmRNZXRob2REaWFsb2dcIlxyXG4gICAgICAocHJpbnRCdXR0b25DbGlja2VkKT1cInByaW50U3RvY2tTdGlja2VycygpXCJcclxuICAgID48L2lvbmUtc2VuZC1tZXRob2QtZGlhbG9nPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RvY2tJbmZvcm1hdGlvbkdyaWRDb21wb25lbnQge1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG5cclxuICBAVmlld0NoaWxkKFN0b2NrSW5mb3JtYXRpb25HcmlkQ29tcG9uZW50KVxyXG4gIHB1YmxpYyBzdG9jazogU3RvY2tJbmZvcm1hdGlvbkdyaWRDb21wb25lbnQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFydGljbGVTdG9ja0luZm9ybWF0aW9uOiBBcnRpY2xlU3RvY2tCb1tdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzdG9ja0hpc3RvcnlJbmZvcm1hdGlvbjogR2V0U3RvY2tIaXN0b3J5UmVxdWVzdFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzdG9ja0xvY2F0aW9uRGF0YTogQXJ0aWNsZVN0b2NrQm9bXTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IGxvY2F0aW9uTGluZUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxBcnRpY2xlU3RvY2s+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgdHJhbnNmZXJJY29uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPEFydGljbGVTdG9ja0JvPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgcHVibGljIGltYWdlOiBzdHJpbmc7XHJcbiAgcHVibGljIHNob3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaGlkZU9yU2hvd0xvY2F0aW9uVGFiOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dTdG9ja0hpc3Rvcnk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1NlbmRNZXRob2REaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGRhdGE6IGFueVtdID0gW1xyXG4gICAge3Rlc3Q6IFwidGVzdFwifVxyXG4gIF07XHJcblxyXG4gIHB1YmxpYyBpbk9yZGVySW5mb3JtYXRpb246IE9iamVjdFtdID0gW1xyXG4gICAge2luT3JkZXI6IFwiMjc1NDMyXCIsIGN1c3RvbWVyOiBcIlRlc3QgY3VzdG9tZXJcIiwgb3JkZXJEYXRlOiBcImRhdGVcIiwgb3JkZXJBbW91bnQ6IFwiMlwiLCB3YXJlaG91c2VOdW1iZXI6IFwiOFwiLCB3YXJlaG91c2VEZXNjcmlwdGlvbjogXCJBIG5pY2Ugd2FyZWhvdXNlXCIsIGFtb3VudEluU3RvY2s6IFwiMTdcIiwgY29tbWlzc2lvbjogXCI0MDE0MzIxXCJ9LFxyXG4gICAge2luT3JkZXI6IFwiMjc1NDMyXCIsIGN1c3RvbWVyOiBcIlRlc3QgY3VzdG9tZXJcIiwgb3JkZXJEYXRlOiBcImRhdGVcIiwgb3JkZXJBbW91bnQ6IFwiMlwiLCB3YXJlaG91c2VOdW1iZXI6IFwiOFwiLCB3YXJlaG91c2VEZXNjcmlwdGlvbjogXCJBIG5pY2Ugd2FyZWhvdXNlXCIsIGFtb3VudEluU3RvY2s6IFwiMTdcIiwgY29tbWlzc2lvbjogXCI0MDE0MzIxXCJ9LFxyXG4gICAge2luT3JkZXI6IFwiMjc1NDMyXCIsIGN1c3RvbWVyOiBcIlRlc3QgY3VzdG9tZXJcIiwgb3JkZXJEYXRlOiBcImRhdGVcIiwgb3JkZXJBbW91bnQ6IFwiMlwiLCB3YXJlaG91c2VOdW1iZXI6IFwiOFwiLCB3YXJlaG91c2VEZXNjcmlwdGlvbjogXCJBIG5pY2Ugd2FyZWhvdXNlXCIsIGFtb3VudEluU3RvY2s6IFwiMTdcIiwgY29tbWlzc2lvbjogXCI0MDE0MzIxXCJ9LFxyXG4gICAge2luT3JkZXI6IFwiMjc1NDMyXCIsIGN1c3RvbWVyOiBcIlRlc3QgY3VzdG9tZXJcIiwgb3JkZXJEYXRlOiBcImRhdGVcIiwgb3JkZXJBbW91bnQ6IFwiMlwiLCB3YXJlaG91c2VOdW1iZXI6IFwiOFwiLCB3YXJlaG91c2VEZXNjcmlwdGlvbjogXCJBIG5pY2Ugd2FyZWhvdXNlXCIsIGFtb3VudEluU3RvY2s6IFwiMTdcIiwgY29tbWlzc2lvbjogXCI0MDE0MzIxXCJ9LFxyXG4gICAge2luT3JkZXI6IFwiMjc1NDMyXCIsIGN1c3RvbWVyOiBcIlRlc3QgY3VzdG9tZXJcIiwgb3JkZXJEYXRlOiBcImRhdGVcIiwgb3JkZXJBbW91bnQ6IFwiMlwiLCB3YXJlaG91c2VOdW1iZXI6IFwiOFwiLCB3YXJlaG91c2VEZXNjcmlwdGlvbjogXCJBIG5pY2Ugd2FyZWhvdXNlXCIsIGFtb3VudEluU3RvY2s6IFwiMTdcIiwgY29tbWlzc2lvbjogXCI0MDE0MzIxXCJ9LFxyXG4gIF07XHJcblxyXG4gIHB1YmxpYyBvcmRlckluZm9ybWF0aW9uOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBoaWRlT3JTaG93VGFiczogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIGRhdGFXYXJlSG91c2VDb2RlOiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBkYXRhV2FyZUhvdXNlRmllbGRzOiBPYmplY3QgPSB7IHRleHQ6IFwid2FyZWhvdXNlRGVzY3JpcHRpb25cIiwgdmFsdWU6IFwid2FyZWhvdXNlTnVtYmVyXCIgfTtcclxuICBwdWJsaWMgYXJ0aWNsZVN0b2NrU2VhcmNoSW5mbzogQXJ0aWNsZVN0b2NrID0gbmV3IEFydGljbGVTdG9jaygpO1xyXG4gIHB1YmxpYyBwcmludFN0aWNrZXI6IFByaW50U3RvY2tTdGlja2VycztcclxuXHJcbiAgcHVibGljIHRhYnM6IHN0cmluZ1tdID0gW1xyXG4gICAgXCJTVE9DS1wiLFxyXG4gICAgXCJJTl9PUkRFUjJcIixcclxuICAgIFwiT1JERVJTMVwiXHJcbiAgXTtcclxuICBwdWJsaWMgYWN0aXZlVGFiOiBzdHJpbmcgPSB0aGlzLnRhYnNbMF07XHJcblxyXG4gIHB1YmxpYyBnZXQgYWN0aXZlVGFiVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoICh0aGlzLmFjdGl2ZVRhYikge1xyXG4gICAgICBjYXNlIHRoaXMudGFic1swXTpcclxuICAgICAgICByZXR1cm4gXCJWb29ycmFhZHJlZ2Vsc1wiO1xyXG4gICAgICBjYXNlIHRoaXMudGFic1sxXTpcclxuICAgICAgICByZXR1cm4gXCJHZXZvbmRlbiBpbiBvcmRlcihzKVwiO1xyXG4gICAgICBjYXNlIHRoaXMudGFic1syXTpcclxuICAgICAgICByZXR1cm4gXCJHZXZvbmRlbiBpbiBiZXN0ZWxsaW5nZW5cIjtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gXCJWb29ycmFhZGxvY2F0aWUgcmVnZWxzXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc3RvY2tTZXJ2aWNlOiBTdG9ja1NlcnZpY2UsXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlVGFiQ2xpY2sodGFiRGF0YSk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWJEYXRhO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uTG9jYXRpb25DbGljayhkYXRhOiBBcnRpY2xlU3RvY2tCbyk6IHZvaWQge1xyXG4gICAgdGhpcy5hcnRpY2xlU3RvY2tTZWFyY2hJbmZvLmdvb2RJZCA9IGRhdGEuZ29vZElkLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLmFydGljbGVTdG9ja1NlYXJjaEluZm8ud2FyZUhvdXNlTm8gPSBkYXRhLndhcmVob3VzZU5vLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLmFydGljbGVTdG9ja1NlYXJjaEluZm8udmlld0tpbmQgPSBcIkRcIjtcclxuICAgIHRoaXMubG9jYXRpb25MaW5lQ2xpY2tlZC5lbWl0KHRoaXMuYXJ0aWNsZVN0b2NrU2VhcmNoSW5mbyk7XHJcbiAgICB0aGlzLmhpZGVPclNob3dUYWJzID0gZmFsc2U7XHJcbiAgICB0aGlzLmhpZGVPclNob3dMb2NhdGlvblRhYiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Qb3B1cENsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlSGlzdG9yeUNsaWNrKCk6IHZvaWQge1xyXG4gICAgLy8gY29uc29sZS53YXJuKCdOb3QgeWV0IGltcGxlbWVudGVkJyk7XHJcbiAgICAvLyB0aGlzLnNob3dTdG9ja0hpc3RvcnkgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNsb3NlQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uUG9wdXBDbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVN0b2NrVHJhbnNmZXJDbGljayhldmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2Zlckljb25DbGlja2VkLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZUJhY2tUb1N0b2NrQ2xpY2soKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IHRoaXMudGFic1swXTtcclxuICAgIHRoaXMuaGlkZU9yU2hvd1RhYnMgPSB0cnVlO1xyXG4gICAgdGhpcy5oaWRlT3JTaG93TG9jYXRpb25UYWIgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuU2VuZE1ldGhvZERpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1NlbmRNZXRob2REaWFsb2cgPSEgdGhpcy5zaG93U2VuZE1ldGhvZERpYWxvZztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcmludFN0b2NrU3RpY2tlcnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnByaW50U3RpY2tlciA9IG5ldyBQcmludFN0b2NrU3RpY2tlcnMoKTtcclxuICAgIHRoaXMucHJpbnRTdGlja2VyLmdvb2RJZCA9IDEwO1xyXG4gICAgdGhpcy5fc3RvY2tTZXJ2aWNlLmdldFByaW50U3RvY2tTdGlja2Vycyh0aGlzLnByaW50U3RpY2tlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Pa0NsaWNrKCk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNhbmNlbENsaWNrKCk6IHZvaWQge1xyXG5cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,68 @@
1
+ import { Component, EventEmitter, Input, Output, ViewEncapsulation } from "@angular/core";
2
+ export class StockLocationComponent {
3
+ constructor() {
4
+ this.backToStockLines = new EventEmitter();
5
+ this.MAX_GRID_ROWS = 10;
6
+ this.stockLocationColumns = [];
7
+ this.stockLocation = [
8
+ { location: "title 1", batch: "1", serieNo: "1", amountInStock: "1", allocated: "1", amountAvailable: "1" },
9
+ { location: "title 2", amountInStock: "2" },
10
+ { location: "title 3", amountInStock: "3" },
11
+ { location: "title 4", amountInStock: "4" },
12
+ { location: "title 5", amountInStock: "5" },
13
+ ];
14
+ this.stockLocationColumns.push({ field: "location", headerText: "WAREHOUSE", editType: "none" }, { field: "batch", headerText: "BATCH" }, { field: "serieNo", headerText: "SERIAL_NO" }, { field: "amountInStock", headerText: "STOCK", textAlign: "Right", editType: "numericEdit" }, { field: "allocated", headerText: "ALLOCATED", textAlign: "Right" }, { field: "amountAvailable", headerText: "AVAILABLE_STOCK", textAlign: "Right" }, { field: "PhysicalStock", headerText: "PHYSICAL_STOCK", textAlign: "Right" }, { field: "Valuta", headerText: "VALUTA", textAlign: "Right" }, { field: "PurchasePrice", headerText: "PURSCHASE_PRICE", textAlign: "Right" }, { field: "SupplierNo", headerText: "SUPPLIER_NO", textAlign: "Right" }, { field: "Transfer", headerText: "TRANSFER" }, { field: "sticker", headerText: "STICKER" });
15
+ }
16
+ backToStockInformation() {
17
+ this.backToStockLines.emit();
18
+ }
19
+ onStickerClick(event) {
20
+ }
21
+ onOkClick() {
22
+ }
23
+ onCancelClick() {
24
+ }
25
+ onSelectWarehouse(event) {
26
+ }
27
+ }
28
+ StockLocationComponent.decorators = [
29
+ { type: Component, args: [{
30
+ selector: "co-stock-location",
31
+ template: `
32
+ <div class="stock-location-wrapper">
33
+ <div class="buttons-wrapper">
34
+ <div class="stock-button-left-group">
35
+ <span class="stock-button-back" [textContent]="'BACK_TO_STOCK_LINES'" (click)="backToStockInformation()"></span>
36
+ </div>
37
+ <div class="dropdown-wrapper">
38
+ <co-drop-down-list
39
+ [collection]="allWarehouses"
40
+ [placeholder]="'WAREHOUSES'"
41
+ (modelChange)="onSelectWarehouse($event)"
42
+ ></co-drop-down-list>
43
+ </div>
44
+ </div>
45
+
46
+ <div class="stock-grid">
47
+
48
+ </div>
49
+ <div class="button-wrapper">
50
+ <div class="button-left">
51
+ <co-button (click)="onOkClick()"></co-button>
52
+ </div>
53
+ <div class="button-right">
54
+ <co-button (click)="onCancelClick()"></co-button>
55
+ </div>
56
+ </div>
57
+ </div>
58
+
59
+ `,
60
+ encapsulation: ViewEncapsulation.None
61
+ },] }
62
+ ];
63
+ StockLocationComponent.ctorParameters = () => [];
64
+ StockLocationComponent.propDecorators = {
65
+ stockLocationInformation: [{ type: Input }],
66
+ backToStockLines: [{ type: Output }]
67
+ };
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stbG9jYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc3RvY2svc3RvY2stbG9jYXRpb24vc3RvY2stbG9jYXRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFxQ3hGLE1BQU0sT0FBTyxzQkFBc0I7SUFxQmpDO1FBZk8scUJBQWdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFaEQsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFFcEMseUJBQW9CLEdBQVUsRUFBRSxDQUFDO1FBR2pDLGtCQUFhLEdBQWE7WUFDL0IsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBQztZQUN6RyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBQztZQUN6QyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBQztZQUN6QyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBQztZQUN6QyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBQztTQUMxQyxDQUFDO1FBSUEsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FDNUIsRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxFQUM5RCxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxFQUNyQyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBQyxFQUMzQyxFQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUMsRUFDMUYsRUFBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBQyxFQUNqRSxFQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBQyxFQUM3RSxFQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUMsRUFDMUUsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBQyxFQUMzRCxFQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUMsRUFDM0UsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBQyxFQUNwRSxFQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBQyxFQUMzQyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBQyxDQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVNLHNCQUFzQjtRQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVNLGNBQWMsQ0FBQyxLQUFLO0lBRTNCLENBQUM7SUFFTSxTQUFTO0lBRWhCLENBQUM7SUFFTSxhQUFhO0lBRXBCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxLQUFLO0lBRTlCLENBQUM7OztZQTFGRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7O3VDQUdFLEtBQUs7K0JBR0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0FydGljbGVTdG9ja0JvfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1zdG9jay5ib1wiO1xyXG5pbXBvcnQge0FydGljbGVTdG9ja30gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtc3RvY2tcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLXN0b2NrLWxvY2F0aW9uXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJzdG9jay1sb2NhdGlvbi13cmFwcGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLXdyYXBwZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RvY2stYnV0dG9uLWxlZnQtZ3JvdXBcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RvY2stYnV0dG9uLWJhY2tcIiBbdGV4dENvbnRlbnRdPVwiJ0JBQ0tfVE9fU1RPQ0tfTElORVMnXCIgKGNsaWNrKT1cImJhY2tUb1N0b2NrSW5mb3JtYXRpb24oKVwiPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24td3JhcHBlclwiPlxyXG4gICAgICAgICAgPGNvLWRyb3AtZG93bi1saXN0XHJcbiAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cImFsbFdhcmVob3VzZXNcIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1dBUkVIT1VTRVMnXCJcclxuICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cIm9uU2VsZWN0V2FyZWhvdXNlKCRldmVudClcIlxyXG4gICAgICAgICAgPjwvY28tZHJvcC1kb3duLWxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0b2NrLWdyaWRcIj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXdyYXBwZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWxlZnRcIj5cclxuICAgICAgICAgIDxjby1idXR0b24gKGNsaWNrKT1cIm9uT2tDbGljaygpXCI+PC9jby1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1yaWdodFwiPlxyXG4gICAgICAgICAgPGNvLWJ1dHRvbiAoY2xpY2spPVwib25DYW5jZWxDbGljaygpXCI+PC9jby1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RvY2tMb2NhdGlvbkNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHN0b2NrTG9jYXRpb25JbmZvcm1hdGlvbjogQXJ0aWNsZVN0b2NrO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgYmFja1RvU3RvY2tMaW5lczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBNQVhfR1JJRF9ST1dTOiBudW1iZXIgPSAxMDtcclxuXHJcbiAgcHVibGljIHN0b2NrTG9jYXRpb25Db2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBhbGxXYXJlaG91c2VzOiBhbnk7XHJcblxyXG4gIHB1YmxpYyBzdG9ja0xvY2F0aW9uOiBPYmplY3RbXSA9IFtcclxuICAgIHtsb2NhdGlvbjogXCJ0aXRsZSAxXCIsIGJhdGNoOiBcIjFcIiwgc2VyaWVObzogXCIxXCIsIGFtb3VudEluU3RvY2s6IFwiMVwiLCBhbGxvY2F0ZWQ6IFwiMVwiLCBhbW91bnRBdmFpbGFibGU6IFwiMVwifSxcclxuICAgIHtsb2NhdGlvbjogXCJ0aXRsZSAyXCIsIGFtb3VudEluU3RvY2s6IFwiMlwifSxcclxuICAgIHtsb2NhdGlvbjogXCJ0aXRsZSAzXCIsIGFtb3VudEluU3RvY2s6IFwiM1wifSxcclxuICAgIHtsb2NhdGlvbjogXCJ0aXRsZSA0XCIsIGFtb3VudEluU3RvY2s6IFwiNFwifSxcclxuICAgIHtsb2NhdGlvbjogXCJ0aXRsZSA1XCIsIGFtb3VudEluU3RvY2s6IFwiNVwifSxcclxuICBdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICApIHtcclxuICAgIHRoaXMuc3RvY2tMb2NhdGlvbkNvbHVtbnMucHVzaChcclxuICAgICAge2ZpZWxkOiBcImxvY2F0aW9uXCIsIGhlYWRlclRleHQ6IFwiV0FSRUhPVVNFXCIsIGVkaXRUeXBlOiBcIm5vbmVcIn0sXHJcbiAgICAgIHtmaWVsZDogXCJiYXRjaFwiLCBoZWFkZXJUZXh0OiBcIkJBVENIXCJ9LFxyXG4gICAgICB7ZmllbGQ6IFwic2VyaWVOb1wiLCBoZWFkZXJUZXh0OiBcIlNFUklBTF9OT1wifSxcclxuICAgICAge2ZpZWxkOiBcImFtb3VudEluU3RvY2tcIiwgaGVhZGVyVGV4dDogXCJTVE9DS1wiLCB0ZXh0QWxpZ246IFwiUmlnaHRcIiwgZWRpdFR5cGU6IFwibnVtZXJpY0VkaXRcIn0sXHJcbiAgICAgIHtmaWVsZDogXCJhbGxvY2F0ZWRcIiwgaGVhZGVyVGV4dDogXCJBTExPQ0FURURcIiwgdGV4dEFsaWduOiBcIlJpZ2h0XCJ9LFxyXG4gICAgICB7ZmllbGQ6IFwiYW1vdW50QXZhaWxhYmxlXCIsIGhlYWRlclRleHQ6IFwiQVZBSUxBQkxFX1NUT0NLXCIsIHRleHRBbGlnbjogXCJSaWdodFwifSxcclxuICAgICAge2ZpZWxkOiBcIlBoeXNpY2FsU3RvY2tcIiwgaGVhZGVyVGV4dDogXCJQSFlTSUNBTF9TVE9DS1wiLCB0ZXh0QWxpZ246IFwiUmlnaHRcIn0sXHJcbiAgICAgIHtmaWVsZDogXCJWYWx1dGFcIiwgaGVhZGVyVGV4dDogXCJWQUxVVEFcIiwgdGV4dEFsaWduOiBcIlJpZ2h0XCJ9LFxyXG4gICAgICB7ZmllbGQ6IFwiUHVyY2hhc2VQcmljZVwiLCBoZWFkZXJUZXh0OiBcIlBVUlNDSEFTRV9QUklDRVwiLCB0ZXh0QWxpZ246IFwiUmlnaHRcIn0sXHJcbiAgICAgIHtmaWVsZDogXCJTdXBwbGllck5vXCIsIGhlYWRlclRleHQ6IFwiU1VQUExJRVJfTk9cIiwgdGV4dEFsaWduOiBcIlJpZ2h0XCJ9LFxyXG4gICAgICB7ZmllbGQ6IFwiVHJhbnNmZXJcIiwgaGVhZGVyVGV4dDogXCJUUkFOU0ZFUlwifSxcclxuICAgICAge2ZpZWxkOiBcInN0aWNrZXJcIiwgaGVhZGVyVGV4dDogXCJTVElDS0VSXCJ9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBiYWNrVG9TdG9ja0luZm9ybWF0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5iYWNrVG9TdG9ja0xpbmVzLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblN0aWNrZXJDbGljayhldmVudCk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbk9rQ2xpY2soKTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2FuY2VsQ2xpY2soKTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU2VsZWN0V2FyZWhvdXNlKGV2ZW50KTogdm9pZCB7XHJcblxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY28tZHJvcC1kb3duLWxpc3QtZmllbGRzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZGNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3N0b2NrL3N0b2NrLXRyYW5zZmVyL2NvLWRyb3AtZG93bi1saXN0LWZpZWxkcy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ29Ecm9wRG93bkxpc3RGaWVsZHMge1xyXG4gIHRleHQ6IHN0cmluZztcclxuICB2YWx1ZTogc3RyaW5nO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,98 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Component, EventEmitter, Input, Output, ViewEncapsulation } from "@angular/core";
3
+ import { StockService } from "../../../service/stock.service";
4
+ export class StockTransferComponent {
5
+ constructor(_stockService) {
6
+ this._stockService = _stockService;
7
+ this.handleCancelClicked = new EventEmitter();
8
+ this.handleStickerClicked = new EventEmitter();
9
+ this.allWarehousesDropdownFields = { value: "warehouseNo", text: "description" };
10
+ this.showSendMethodDialog = false;
11
+ }
12
+ handleOkClick() {
13
+ }
14
+ handleCancelClick() {
15
+ this.handleCancelClicked.emit();
16
+ }
17
+ handleSelectedWarehouse(event) {
18
+ }
19
+ handleStickerClick() {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ this.handleStickerClicked.emit();
22
+ this.showSendMethodDialog = true;
23
+ });
24
+ }
25
+ }
26
+ StockTransferComponent.decorators = [
27
+ { type: Component, args: [{
28
+ selector: "co-stock-transfer",
29
+ template: `
30
+ <div class="stock-transfer">
31
+ <div class="stock-transfer-columns">
32
+ <h1 [textContent]="'Nog niet geimplmenteerd'"></h1>
33
+ <div *ngIf="article" class="stock-transfer-left-column">
34
+ <co-input-text disabled
35
+ [(model)]="article.warehouseNo"
36
+ [textContent]="article.warehouseNo"
37
+ [placeholder]="'Standaard magazijn'">
38
+ </co-input-text>
39
+ <co-input-text disabled
40
+ [(model)]="article.locationNo"
41
+ [textContent]="article.locationNo"
42
+ [placeholder]="'Standaard locatie'">
43
+ </co-input-text>
44
+ <co-input-text disabled
45
+ [(model)]="stockSticker.batch"
46
+ [placeholder]="'Batch'">
47
+ </co-input-text>
48
+ <co-input-text disabled
49
+ [(model)]="stockSticker.serial"
50
+ [placeholder]="'Serie'">
51
+ </co-input-text>
52
+ <co-input-text
53
+ [(model)]="article.amountAssigned"
54
+ [placeholder]="'Aantal'">
55
+
56
+ </co-input-text>
57
+ </div>
58
+
59
+ <div class="stock-transfer-right-column">
60
+ <co-drop-down-list [collection]="allWarehouses"
61
+ [fields]="allWarehousesDropdownFields"
62
+ (modelChange)="handleSelectedWarehouse($event)"
63
+ >
64
+ </co-drop-down-list>
65
+ <co-drop-down-list>
66
+
67
+ </co-drop-down-list>
68
+ <co-input-text [placeholder]="'Voorraadstatus'">
69
+
70
+ </co-input-text>
71
+ <co-input-text [placeholder]="'Omschrijving'">
72
+
73
+ </co-input-text>
74
+ </div>
75
+ </div>
76
+
77
+ <div class="ok-cancel-buttons">
78
+ <co-button [textContent]="'Ok'" (click)="handleOkClick()"></co-button>
79
+ <co-button [textContent]="'Annuleren'" (click)="handleCancelClick()"></co-button>
80
+ <co-button [textContent]="'Sticker'" (click)="handleStickerClick()"></co-button>
81
+ </div>
82
+ </div>
83
+ `,
84
+ encapsulation: ViewEncapsulation.None
85
+ },] }
86
+ ];
87
+ StockTransferComponent.ctorParameters = () => [
88
+ { type: StockService }
89
+ ];
90
+ StockTransferComponent.propDecorators = {
91
+ stockSticker: [{ type: Input }],
92
+ article: [{ type: Input }],
93
+ articleWarehouse: [{ type: Input }],
94
+ allWarehouses: [{ type: Input }],
95
+ handleCancelClicked: [{ type: Output }],
96
+ handleStickerClicked: [{ type: Output }]
97
+ };
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stdHJhbnNmZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc3RvY2svc3RvY2stdHJhbnNmZXIvc3RvY2stdHJhbnNmZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXhGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQStENUQsTUFBTSxPQUFPLHNCQUFzQjtJQXdCakMsWUFDVSxhQUEyQjtRQUEzQixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQVY5Qix3QkFBbUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUc1RCx5QkFBb0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU3RCxnQ0FBMkIsR0FBeUIsRUFBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUMsQ0FBQztRQUVoRyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7SUFLN0MsQ0FBQztJQUVNLGFBQWE7SUFFcEIsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVNLHVCQUF1QixDQUFDLEtBQUs7SUFDcEMsQ0FBQztJQUVZLGtCQUFrQjs7WUFDN0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDbkMsQ0FBQztLQUFBOzs7WUF0R0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0RUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUE5RE8sWUFBWTs7OzJCQWlFakIsS0FBSztzQkFHTCxLQUFLOytCQUdMLEtBQUs7NEJBR0wsS0FBSztrQ0FHTCxNQUFNO21DQUdOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtQcmludFN0b2NrU3RpY2tlcnN9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9wcmludC1zdG9jay1zdGlja2Vyc1wiO1xyXG5pbXBvcnQge1N0b2NrU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2Uvc3RvY2suc2VydmljZVwiO1xyXG5pbXBvcnQge0NvRHJvcERvd25MaXN0RmllbGRzfSBmcm9tIFwiLi9jby1kcm9wLWRvd24tbGlzdC1maWVsZHMuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7QXJ0aWNsZVN0b2NrQm99IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLXN0b2NrLmJvXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1zdG9jay10cmFuc2ZlclwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdG9jay10cmFuc2ZlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdG9jay10cmFuc2Zlci1jb2x1bW5zXCI+XHJcbiAgICAgICAgICA8aDEgW3RleHRDb250ZW50XT1cIidOb2cgbmlldCBnZWltcGxtZW50ZWVyZCdcIj48L2gxPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImFydGljbGVcIiBjbGFzcz1cInN0b2NrLXRyYW5zZmVyLWxlZnQtY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IGRpc2FibGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImFydGljbGUud2FyZWhvdXNlTm9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiYXJ0aWNsZS53YXJlaG91c2VOb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU3RhbmRhYXJkIG1hZ2F6aWpuJ1wiPlxyXG4gICAgICAgICAgICA8L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IGRpc2FibGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImFydGljbGUubG9jYXRpb25Ob1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJhcnRpY2xlLmxvY2F0aW9uTm9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1N0YW5kYWFyZCBsb2NhdGllJ1wiPlxyXG4gICAgICAgICAgICA8L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IGRpc2FibGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInN0b2NrU3RpY2tlci5iYXRjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQmF0Y2gnXCI+XHJcbiAgICAgICAgICAgIDwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgZGlzYWJsZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic3RvY2tTdGlja2VyLnNlcmlhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU2VyaWUnXCI+XHJcbiAgICAgICAgICAgIDwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICAgICAgPGNvLWlucHV0LXRleHRcclxuICAgICAgICAgICAgICBbKG1vZGVsKV09XCJhcnRpY2xlLmFtb3VudEFzc2lnbmVkXCJcclxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0FhbnRhbCdcIj5cclxuXHJcbiAgICAgICAgICAgIDwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdG9jay10cmFuc2Zlci1yaWdodC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPGNvLWRyb3AtZG93bi1saXN0IFtjb2xsZWN0aW9uXT1cImFsbFdhcmVob3VzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkc109XCJhbGxXYXJlaG91c2VzRHJvcGRvd25GaWVsZHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZVNlbGVjdGVkV2FyZWhvdXNlKCRldmVudClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvY28tZHJvcC1kb3duLWxpc3Q+XHJcbiAgICAgICAgICAgIDxjby1kcm9wLWRvd24tbGlzdD5cclxuXHJcbiAgICAgICAgICAgIDwvY28tZHJvcC1kb3duLWxpc3Q+XHJcbiAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFtwbGFjZWhvbGRlcl09XCInVm9vcnJhYWRzdGF0dXMnXCI+XHJcblxyXG4gICAgICAgICAgICA8L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFtwbGFjZWhvbGRlcl09XCInT21zY2hyaWp2aW5nJ1wiPlxyXG5cclxuICAgICAgICAgICAgPC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvay1jYW5jZWwtYnV0dG9uc1wiPlxyXG4gICAgICAgICAgPGNvLWJ1dHRvbiBbdGV4dENvbnRlbnRdPVwiJ09rJ1wiIChjbGljayk9XCJoYW5kbGVPa0NsaWNrKClcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICAgIDxjby1idXR0b24gW3RleHRDb250ZW50XT1cIidBbm51bGVyZW4nXCIgKGNsaWNrKT1cImhhbmRsZUNhbmNlbENsaWNrKClcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICAgIDxjby1idXR0b24gW3RleHRDb250ZW50XT1cIidTdGlja2VyJ1wiIChjbGljayk9XCJoYW5kbGVTdGlja2VyQ2xpY2soKVwiPjwvY28tYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0b2NrVHJhbnNmZXJDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzdG9ja1N0aWNrZXI6IFByaW50U3RvY2tTdGlja2VycztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYXJ0aWNsZTogQXJ0aWNsZVN0b2NrQm87XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFydGljbGVXYXJlaG91c2U6IGFueVtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhbGxXYXJlaG91c2VzOiBhbnlbXTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGhhbmRsZUNhbmNlbENsaWNrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgaGFuZGxlU3RpY2tlckNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwdWJsaWMgYWxsV2FyZWhvdXNlc0Ryb3Bkb3duRmllbGRzOiBDb0Ryb3BEb3duTGlzdEZpZWxkcyA9IHt2YWx1ZTogXCJ3YXJlaG91c2VOb1wiLCB0ZXh0OiBcImRlc2NyaXB0aW9uXCJ9O1xyXG5cclxuICBwdWJsaWMgc2hvd1NlbmRNZXRob2REaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9zdG9ja1NlcnZpY2U6IFN0b2NrU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZU9rQ2xpY2soKTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNhbmNlbENsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5oYW5kbGVDYW5jZWxDbGlja2VkLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTZWxlY3RlZFdhcmVob3VzZShldmVudCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZVN0aWNrZXJDbGljaygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuaGFuZGxlU3RpY2tlckNsaWNrZWQuZW1pdCgpO1xyXG4gICAgdGhpcy5zaG93U2VuZE1ldGhvZERpYWxvZyA9IHRydWU7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -0,0 +1,107 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Component, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation } from "@angular/core";
3
+ import { StockService } from "../../service/stock.service";
4
+ import { PrintStockStickers } from "@colijnit/articleapi/build/model/print-stock-stickers";
5
+ import { ArticleStock } from "@colijnit/articleapi/build/model/article-stock";
6
+ export class StockComponent {
7
+ constructor(stockService) {
8
+ this.stockService = stockService;
9
+ this.handleStickerClicked = new EventEmitter();
10
+ this.showStockInformationGrid = true;
11
+ this.showStockLocation = false;
12
+ this.showStockTransfer = false;
13
+ }
14
+ set options(value) {
15
+ this.stockService.connectConnector(value);
16
+ }
17
+ showClass() {
18
+ return true;
19
+ }
20
+ ngAfterViewInit() {
21
+ if (this.article) {
22
+ this.getStockInformation(this.article);
23
+ }
24
+ }
25
+ backToStockLinesClicked() {
26
+ this.showStockLocation = false;
27
+ this.showStockInformationGrid = true;
28
+ }
29
+ handleStockTransferClick(event) {
30
+ this.stockTransferArticle = event;
31
+ this.showStockTransfer = !this.showStockTransfer;
32
+ this.showStockInformationGrid = !this.showStockInformationGrid;
33
+ this.stockService.stockStickers = new PrintStockStickers();
34
+ }
35
+ backToStock() {
36
+ this.showStockTransfer = !this.showStockTransfer;
37
+ this.showStockInformationGrid = !this.showStockInformationGrid;
38
+ }
39
+ loadStockHistory(data) {
40
+ this.stockService.getStockHistory(data);
41
+ }
42
+ buttonClick() {
43
+ this.getStockInformation(this.article);
44
+ }
45
+ getStockInformation(data) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ const articleData = new ArticleStock();
48
+ articleData.goodId = data.goodId.toString();
49
+ articleData.viewKind = "M";
50
+ this.stockInformation = yield this.stockService.getStockInformation(articleData);
51
+ // const allAvailableStock = this.stockInformation.reduce((a, b) => a.availableStock + b.availableStock ? a : b);
52
+ });
53
+ }
54
+ getStockLocationInformation(data) {
55
+ return __awaiter(this, void 0, void 0, function* () {
56
+ this.stockLocationInformation = yield this.stockService.getStockInformation(data);
57
+ });
58
+ }
59
+ }
60
+ StockComponent.decorators = [
61
+ { type: Component, args: [{
62
+ selector: "co-stock",
63
+ template: `
64
+ <div class="stock-info-container">
65
+ <co-stock-information [article]="article"
66
+ [articleStock]="">
67
+
68
+ </co-stock-information>
69
+ <hr>
70
+ <co-stock-information-grid *ngIf="showStockInformationGrid"
71
+ [stockLocationData]="stockLocationInformation"
72
+ (locationLineClicked)="getStockLocationInformation($event)"
73
+ [articleStockInformation]="stockInformation"
74
+ (transferIconClicked)="handleStockTransferClick($event)">
75
+ </co-stock-information-grid>
76
+ <co-stock-location *ngIf="showStockLocation"
77
+ (backToStockLines)="backToStockLinesClicked()">
78
+
79
+ </co-stock-location>
80
+ <co-stock-transfer *ngIf="showStockTransfer"
81
+ (handleCancelClicked)="backToStock()"
82
+ [article]="stockTransferArticle"
83
+ [stockSticker]="stockService.stockStickers"
84
+ (handleStickerClicked)="handleStickerClicked.emit($event)"
85
+ [articleWarehouse]="articleWarehouse"
86
+ [allWarehouses]="allWarehouses"
87
+ >
88
+ </co-stock-transfer>
89
+ <co-button (click)="buttonClick()"></co-button>
90
+ </div>
91
+ `,
92
+ encapsulation: ViewEncapsulation.None
93
+ },] }
94
+ ];
95
+ StockComponent.ctorParameters = () => [
96
+ { type: StockService }
97
+ ];
98
+ StockComponent.propDecorators = {
99
+ stock: [{ type: ViewChild, args: [StockComponent,] }],
100
+ handleStickerClicked: [{ type: Output }],
101
+ options: [{ type: Input }],
102
+ article: [{ type: Input }],
103
+ articleWarehouse: [{ type: Input }],
104
+ allWarehouses: [{ type: Input }],
105
+ showClass: [{ type: HostBinding, args: ["class.co-stock",] }]
106
+ };
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc3RvY2svc3RvY2suY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUl6RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFtQzVFLE1BQU0sT0FBTyxjQUFjO0lBbUN6QixZQUNTLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBOUI1Qix5QkFBb0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQXFCN0QsNkJBQXdCLEdBQVksSUFBSSxDQUFDO1FBQ3pDLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7SUFTMUMsQ0FBQztJQTlCRCxJQUNXLE9BQU8sQ0FBQyxLQUFVO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQVlNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFlRCxlQUFlO1FBQ2IsSUFBRyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFjLENBQUMsQ0FBQztTQUMvQztJQUNILENBQUM7SUFFTSx1QkFBdUI7UUFDNUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxLQUFLO1FBQ25DLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ2pELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUMvRCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ2pELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztJQUNqRSxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsSUFBNEI7UUFDbEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFjLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRVksbUJBQW1CLENBQUMsSUFBa0I7O1lBQ2pELE1BQU0sV0FBVyxHQUFpQixJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ3JELFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM1QyxXQUFXLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUMzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2pGLGlIQUFpSDtRQUNuSCxDQUFDO0tBQUE7SUFFWSwyQkFBMkIsQ0FBQyxJQUFrQjs7WUFDekQsSUFBSSxDQUFDLHdCQUF3QixHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRixDQUFDO0tBQUE7OztZQWxIRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBdkNPLFlBQVk7OztvQkEwQ2pCLFNBQVMsU0FBQyxjQUFjO21DQUd4QixNQUFNO3NCQUdOLEtBQUs7c0JBS0wsS0FBSzsrQkFHTCxLQUFLOzRCQUdMLEtBQUs7d0JBR0wsV0FBVyxTQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LCBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7U3RvY2tTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS9zdG9jay5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7UHJpbnRTdG9ja1N0aWNrZXJzfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvcHJpbnQtc3RvY2stc3RpY2tlcnNcIjtcclxuaW1wb3J0IHtHZXRTdG9ja0hpc3RvcnlSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvZ2V0LXN0b2NrLWhpc3RvcnktcmVxdWVzdFwiO1xyXG5pbXBvcnQge0FydGljbGVTdG9ja0JvfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1zdG9jay5ib1wiO1xyXG5pbXBvcnQge0FydGljbGVFeHRlbmRlZH0gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZXh0ZW5kZWQuYm9cIjtcclxuaW1wb3J0IHtBcnRpY2xlU3RvY2t9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLXN0b2NrXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1zdG9ja1wiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdG9jay1pbmZvLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxjby1zdG9jay1pbmZvcm1hdGlvbiBbYXJ0aWNsZV09XCJhcnRpY2xlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FydGljbGVTdG9ja109XCJcIj5cclxuXHJcbiAgICAgICAgPC9jby1zdG9jay1pbmZvcm1hdGlvbj5cclxuICAgICAgICA8aHI+XHJcbiAgICAgICAgPGNvLXN0b2NrLWluZm9ybWF0aW9uLWdyaWQgKm5nSWY9XCJzaG93U3RvY2tJbmZvcm1hdGlvbkdyaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdG9ja0xvY2F0aW9uRGF0YV09XCJzdG9ja0xvY2F0aW9uSW5mb3JtYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhdGlvbkxpbmVDbGlja2VkKT1cImdldFN0b2NrTG9jYXRpb25JbmZvcm1hdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJ0aWNsZVN0b2NrSW5mb3JtYXRpb25dPVwic3RvY2tJbmZvcm1hdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5zZmVySWNvbkNsaWNrZWQpPVwiaGFuZGxlU3RvY2tUcmFuc2ZlckNsaWNrKCRldmVudClcIj5cclxuICAgICAgICA8L2NvLXN0b2NrLWluZm9ybWF0aW9uLWdyaWQ+XHJcbiAgICAgICAgPGNvLXN0b2NrLWxvY2F0aW9uICpuZ0lmPVwic2hvd1N0b2NrTG9jYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFja1RvU3RvY2tMaW5lcyk9XCJiYWNrVG9TdG9ja0xpbmVzQ2xpY2tlZCgpXCI+XHJcblxyXG4gICAgICAgIDwvY28tc3RvY2stbG9jYXRpb24+XHJcbiAgICAgICAgPGNvLXN0b2NrLXRyYW5zZmVyICpuZ0lmPVwic2hvd1N0b2NrVHJhbnNmZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFuZGxlQ2FuY2VsQ2xpY2tlZCk9XCJiYWNrVG9TdG9jaygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnRpY2xlXT1cInN0b2NrVHJhbnNmZXJBcnRpY2xlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0b2NrU3RpY2tlcl09XCJzdG9ja1NlcnZpY2Uuc3RvY2tTdGlja2Vyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChoYW5kbGVTdGlja2VyQ2xpY2tlZCk9XCJoYW5kbGVTdGlja2VyQ2xpY2tlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJ0aWNsZVdhcmVob3VzZV09XCJhcnRpY2xlV2FyZWhvdXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsbFdhcmVob3VzZXNdPVwiYWxsV2FyZWhvdXNlc1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvY28tc3RvY2stdHJhbnNmZXI+XHJcbiAgICAgICAgPGNvLWJ1dHRvbiAoY2xpY2spPVwiYnV0dG9uQ2xpY2soKVwiPjwvY28tYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0b2NrQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoU3RvY2tDb21wb25lbnQpXHJcbiAgcHVibGljIHN0b2NrOiBTdG9ja0NvbXBvbmVudDtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGhhbmRsZVN0aWNrZXJDbGlja2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IG9wdGlvbnModmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5zdG9ja1NlcnZpY2UuY29ubmVjdENvbm5lY3Rvcih2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhcnRpY2xlOiBBcnRpY2xlRXh0ZW5kZWQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFydGljbGVXYXJlaG91c2U6IGFueVtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhbGxXYXJlaG91c2VzOiBhbnlbXTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tc3RvY2tcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd1N0b2NrSW5mb3JtYXRpb25HcmlkOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgc2hvd1N0b2NrTG9jYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1N0b2NrVHJhbnNmZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgYXJ0aWNsZVN0b2NrSW5mb3JtYXRpb246IEFydGljbGVTdG9jaztcclxuICBwdWJsaWMgc3RvY2tJbmZvcm1hdGlvbjogQXJ0aWNsZVN0b2NrQm9bXTtcclxuICBwdWJsaWMgc3RvY2tMb2NhdGlvbkluZm9ybWF0aW9uOiBBcnRpY2xlU3RvY2tCb1tdO1xyXG4gIHB1YmxpYyBzdG9ja1RyYW5zZmVyQXJ0aWNsZTogQXJ0aWNsZVN0b2NrQm87XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHN0b2NrU2VydmljZTogU3RvY2tTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZih0aGlzLmFydGljbGUpIHtcclxuICAgICAgdGhpcy5nZXRTdG9ja0luZm9ybWF0aW9uKHRoaXMuYXJ0aWNsZSBhcyBhbnkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGJhY2tUb1N0b2NrTGluZXNDbGlja2VkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93U3RvY2tMb2NhdGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U3RvY2tJbmZvcm1hdGlvbkdyaWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVN0b2NrVHJhbnNmZXJDbGljayhldmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9ja1RyYW5zZmVyQXJ0aWNsZSA9IGV2ZW50O1xyXG4gICAgdGhpcy5zaG93U3RvY2tUcmFuc2ZlciA9ICF0aGlzLnNob3dTdG9ja1RyYW5zZmVyO1xyXG4gICAgdGhpcy5zaG93U3RvY2tJbmZvcm1hdGlvbkdyaWQgPSAhdGhpcy5zaG93U3RvY2tJbmZvcm1hdGlvbkdyaWQ7XHJcbiAgICB0aGlzLnN0b2NrU2VydmljZS5zdG9ja1N0aWNrZXJzID0gbmV3IFByaW50U3RvY2tTdGlja2VycygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGJhY2tUb1N0b2NrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93U3RvY2tUcmFuc2ZlciA9ICF0aGlzLnNob3dTdG9ja1RyYW5zZmVyO1xyXG4gICAgdGhpcy5zaG93U3RvY2tJbmZvcm1hdGlvbkdyaWQgPSAhdGhpcy5zaG93U3RvY2tJbmZvcm1hdGlvbkdyaWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9hZFN0b2NrSGlzdG9yeShkYXRhOiBHZXRTdG9ja0hpc3RvcnlSZXF1ZXN0KTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b2NrU2VydmljZS5nZXRTdG9ja0hpc3RvcnkoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYnV0dG9uQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldFN0b2NrSW5mb3JtYXRpb24odGhpcy5hcnRpY2xlIGFzIGFueSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U3RvY2tJbmZvcm1hdGlvbihkYXRhOiBBcnRpY2xlU3RvY2spOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGFydGljbGVEYXRhOiBBcnRpY2xlU3RvY2sgPSBuZXcgQXJ0aWNsZVN0b2NrKCk7XHJcbiAgICBhcnRpY2xlRGF0YS5nb29kSWQgPSBkYXRhLmdvb2RJZC50b1N0cmluZygpO1xyXG4gICAgYXJ0aWNsZURhdGEudmlld0tpbmQgPSBcIk1cIjtcclxuICAgIHRoaXMuc3RvY2tJbmZvcm1hdGlvbiA9IGF3YWl0IHRoaXMuc3RvY2tTZXJ2aWNlLmdldFN0b2NrSW5mb3JtYXRpb24oYXJ0aWNsZURhdGEpO1xyXG4gICAgLy8gY29uc3QgYWxsQXZhaWxhYmxlU3RvY2sgPSB0aGlzLnN0b2NrSW5mb3JtYXRpb24ucmVkdWNlKChhLCBiKSA9PiBhLmF2YWlsYWJsZVN0b2NrICsgYi5hdmFpbGFibGVTdG9jayA/IGEgOiBiKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRTdG9ja0xvY2F0aW9uSW5mb3JtYXRpb24oZGF0YTogQXJ0aWNsZVN0b2NrKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnN0b2NrTG9jYXRpb25JbmZvcm1hdGlvbiA9IGF3YWl0IHRoaXMuc3RvY2tTZXJ2aWNlLmdldFN0b2NrSW5mb3JtYXRpb24oZGF0YSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=