@barcoding/widget-piecework-in 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/barcoding-widget-piecework-in.d.ts +5 -0
- package/esm2020/barcoding-widget-piecework-in.mjs +5 -0
- package/esm2020/lib/config/config.component.mjs +33 -0
- package/esm2020/lib/piece-work-in-form/piece-work-in-form.component.mjs +98 -0
- package/esm2020/lib/widget-piecework-in.component.mjs +367 -0
- package/esm2020/lib/widget-piecework-in.module.mjs +99 -0
- package/esm2020/public-api.mjs +6 -0
- package/fesm2015/barcoding-widget-piecework-in.mjs +577 -0
- package/fesm2015/barcoding-widget-piecework-in.mjs.map +1 -0
- package/fesm2020/barcoding-widget-piecework-in.mjs +576 -0
- package/fesm2020/barcoding-widget-piecework-in.mjs.map +1 -0
- package/lib/config/config.component.d.ts +14 -0
- package/lib/piece-work-in-form/piece-work-in-form.component.d.ts +24 -0
- package/lib/widget-piecework-in.component.d.ts +71 -0
- package/lib/widget-piecework-in.module.d.ts +24 -0
- package/package.json +34 -0
- package/public-api.d.ts +2 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# WidgetPieceworkIn
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.1.2.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project widget-piecework-in` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project widget-piecework-in`.
|
|
8
|
+
> Note: Don't forget to add `--project widget-piecework-in` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build widget-piecework-in` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build widget-piecework-in`, go to the dist folder `cd dist/widget-piecework-in` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test widget-piecework-in` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyY29kaW5nLXdpZGdldC1waWVjZXdvcmstaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmFyY29kaW5nLXdpZGdldC1waWVjZXdvcmstaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
2
|
+
import { Component, Inject } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/material/dialog";
|
|
5
|
+
import * as i2 from "@progress/kendo-angular-inputs";
|
|
6
|
+
import * as i3 from "@angular/material/button";
|
|
7
|
+
import * as i4 from "@angular/forms";
|
|
8
|
+
import * as i5 from "@angular/flex-layout/flex";
|
|
9
|
+
export class PieceworkInConfigModal {
|
|
10
|
+
constructor(dialogRef, data) {
|
|
11
|
+
this.dialogRef = dialogRef;
|
|
12
|
+
this.data = data;
|
|
13
|
+
this.config = {};
|
|
14
|
+
this.config = Object.assign({}, data.currentConfig);
|
|
15
|
+
}
|
|
16
|
+
ngOnInit() { }
|
|
17
|
+
save(config) {
|
|
18
|
+
this.dialogRef.close(config);
|
|
19
|
+
}
|
|
20
|
+
onNoClick() {
|
|
21
|
+
this.dialogRef.close();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
PieceworkInConfigModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PieceworkInConfigModal, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
+
PieceworkInConfigModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PieceworkInConfigModal, selector: "assignmentFormDialog", ngImport: i0, template: "<form class=\"k-form\" autocomplete=\"off\" #configForm=\"ngForm\">\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n <div fxLayout=\"column\" fxLayoutAlign=\" stretch\">\n <fieldset>\n <legend>Main</legend>\n <label fxFlex class=\"k-form-field\">\n <span>Current User</span>\n <kendo-switch\n name=\"current_user\"\n [(ngModel)]=\"config.current_user\"\n [onLabel]=\"'Yes'\"\n [offLabel]=\"'No'\"\n ></kendo-switch>\n </label>\n </fieldset>\n </div>\n\n <div\n fxLayoutGap=\"20px\"\n style=\"margin-top: 10px\"\n fxLayout=\"row\"\n fxLayoutAlign=\"space-around end\"\n >\n <button fxFlex (click)=\"onNoClick()\" mat-raised-button>Cancel</button>\n <button\n fxFlex\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save(config)\"\n color=\"primary\"\n mat-raised-button\n >\n Save\n </button>\n </div>\n </div>\n</form>\n", styles: [".mat-tab-body-wrapper{flex-grow:1}.mat-tab-body{display:flex!important;flex-direction:column}.mat-tab-body-content{display:flex;flex-direction:column;flex-grow:1}mat-form-field{margin-top:20px}\n"], components: [{ type: i2.SwitchComponent, selector: "kendo-switch", inputs: ["focusableId", "onLabel", "offLabel", "checked", "disabled", "readonly", "tabindex", "size", "thumbRounded", "trackRounded", "tabIndex"], outputs: ["focus", "blur", "valueChange"], exportAs: ["kendoSwitch"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i5.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }] });
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PieceworkInConfigModal, decorators: [{
|
|
27
|
+
type: Component,
|
|
28
|
+
args: [{ selector: 'assignmentFormDialog', template: "<form class=\"k-form\" autocomplete=\"off\" #configForm=\"ngForm\">\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n <div fxLayout=\"column\" fxLayoutAlign=\" stretch\">\n <fieldset>\n <legend>Main</legend>\n <label fxFlex class=\"k-form-field\">\n <span>Current User</span>\n <kendo-switch\n name=\"current_user\"\n [(ngModel)]=\"config.current_user\"\n [onLabel]=\"'Yes'\"\n [offLabel]=\"'No'\"\n ></kendo-switch>\n </label>\n </fieldset>\n </div>\n\n <div\n fxLayoutGap=\"20px\"\n style=\"margin-top: 10px\"\n fxLayout=\"row\"\n fxLayoutAlign=\"space-around end\"\n >\n <button fxFlex (click)=\"onNoClick()\" mat-raised-button>Cancel</button>\n <button\n fxFlex\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save(config)\"\n color=\"primary\"\n mat-raised-button\n >\n Save\n </button>\n </div>\n </div>\n</form>\n", styles: [".mat-tab-body-wrapper{flex-grow:1}.mat-tab-body{display:flex!important;flex-direction:column}.mat-tab-body-content{display:flex;flex-direction:column;flex-grow:1}mat-form-field{margin-top:20px}\n"] }]
|
|
29
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
30
|
+
type: Inject,
|
|
31
|
+
args: [MAT_DIALOG_DATA]
|
|
32
|
+
}] }]; } });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29uZmlnL2NvbmZpZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbmZpZy9tb2RhbC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFVMUQsTUFBTSxPQUFPLHNCQUFzQjtJQUVqQyxZQUNTLFNBQStDLEVBQ3RCLElBQVM7UUFEbEMsY0FBUyxHQUFULFNBQVMsQ0FBc0M7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBSztRQUhwQyxXQUFNLEdBQVEsRUFBRSxDQUFDO1FBS3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxRQUFRLEtBQUksQ0FBQztJQUViLElBQUksQ0FBQyxNQUFNO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7O21IQWpCVSxzQkFBc0IsOENBSXZCLGVBQWU7dUdBSmQsc0JBQXNCLDREQ1huQyxvaENBb0NBOzJGRHpCYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0Usc0JBQXNCOzswQkFRN0IsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRXh0ZXJuYWxEYXNoYm9hcmRDb250cm9sbGVyU2VydmljZSxcbiAgRXh0ZXJuYWxEYXNoYm9hcmRXaXRoUmVsYXRpb25zLFxufSBmcm9tICdAYmFyY29kaW5nL3Nkayc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhc3NpZ25tZW50Rm9ybURpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnbW9kYWwuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0eWxlLmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQaWVjZXdvcmtJbkNvbmZpZ01vZGFsIGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIGNvbmZpZzogYW55ID0ge307XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxQaWVjZXdvcmtJbkNvbmZpZ01vZGFsPixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueVxuICApIHtcbiAgICB0aGlzLmNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIGRhdGEuY3VycmVudENvbmZpZyk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgc2F2ZShjb25maWcpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShjb25maWcpO1xuICB9XG5cbiAgb25Ob0NsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cbn1cbiIsIjxmb3JtIGNsYXNzPVwiay1mb3JtXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgI2NvbmZpZ0Zvcm09XCJuZ0Zvcm1cIj5cbiAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIG5vbmVcIj5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cIiBzdHJldGNoXCI+XG4gICAgICA8ZmllbGRzZXQ+XG4gICAgICAgIDxsZWdlbmQ+TWFpbjwvbGVnZW5kPlxuICAgICAgICA8bGFiZWwgZnhGbGV4IGNsYXNzPVwiay1mb3JtLWZpZWxkXCI+XG4gICAgICAgICAgPHNwYW4+Q3VycmVudCBVc2VyPC9zcGFuPlxuICAgICAgICAgIDxrZW5kby1zd2l0Y2hcbiAgICAgICAgICAgIG5hbWU9XCJjdXJyZW50X3VzZXJcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWcuY3VycmVudF91c2VyXCJcbiAgICAgICAgICAgIFtvbkxhYmVsXT1cIidZZXMnXCJcbiAgICAgICAgICAgIFtvZmZMYWJlbF09XCInTm8nXCJcbiAgICAgICAgICA+PC9rZW5kby1zd2l0Y2g+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2ZpZWxkc2V0PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgZnhMYXlvdXRHYXA9XCIyMHB4XCJcbiAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogMTBweFwiXG4gICAgICBmeExheW91dD1cInJvd1wiXG4gICAgICBmeExheW91dEFsaWduPVwic3BhY2UtYXJvdW5kIGVuZFwiXG4gICAgPlxuICAgICAgPGJ1dHRvbiBmeEZsZXggKGNsaWNrKT1cIm9uTm9DbGljaygpXCIgbWF0LXJhaXNlZC1idXR0b24+Q2FuY2VsPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGZ4RmxleFxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNvbmZpZ0Zvcm0uZm9ybS52YWxpZFwiXG4gICAgICAgIChjbGljayk9XCJzYXZlKGNvbmZpZylcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgPlxuICAgICAgICBTYXZlXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Component, Inject } from '@angular/core';
|
|
2
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@barcoding/frontend-core";
|
|
5
|
+
import * as i2 from "@barcoding/sdk";
|
|
6
|
+
import * as i3 from "@angular/material/dialog";
|
|
7
|
+
import * as i4 from "@ngxs/store";
|
|
8
|
+
import * as i5 from "@progress/kendo-angular-inputs";
|
|
9
|
+
import * as i6 from "@angular/material/checkbox";
|
|
10
|
+
import * as i7 from "@angular/material/button";
|
|
11
|
+
import * as i8 from "@angular/flex-layout/flex";
|
|
12
|
+
import * as i9 from "@angular/forms";
|
|
13
|
+
export class PieceWorkInForm {
|
|
14
|
+
constructor(focusService, pieceWorkLineApi, dialogRef, store, data) {
|
|
15
|
+
this.focusService = focusService;
|
|
16
|
+
this.pieceWorkLineApi = pieceWorkLineApi;
|
|
17
|
+
this.dialogRef = dialogRef;
|
|
18
|
+
this.store = store;
|
|
19
|
+
this.data = data;
|
|
20
|
+
this.finish = false;
|
|
21
|
+
this.qty_in = 0;
|
|
22
|
+
this.line = Object.assign({}, data.line);
|
|
23
|
+
this.qty_in = this.line.out - this.line.in;
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
this.focusService.unFocus();
|
|
27
|
+
}
|
|
28
|
+
ngOnDestroy() {
|
|
29
|
+
this.focusService.setFocus();
|
|
30
|
+
}
|
|
31
|
+
cancel() {
|
|
32
|
+
this.dialogRef.close();
|
|
33
|
+
}
|
|
34
|
+
save(qty_in, finish) {
|
|
35
|
+
this.pieceWorkLineApi
|
|
36
|
+
.find({
|
|
37
|
+
filter: JSON.stringify({
|
|
38
|
+
where: { piecework_id: this.line.piecework_id },
|
|
39
|
+
}),
|
|
40
|
+
})
|
|
41
|
+
.subscribe(lines => {
|
|
42
|
+
let isFinished = false;
|
|
43
|
+
const totalLines = lines.length;
|
|
44
|
+
let totalFinishedLines = 0;
|
|
45
|
+
lines.forEach(line => {
|
|
46
|
+
if (line.piecework_line_status_id === 2) {
|
|
47
|
+
totalFinishedLines++;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
if (qty_in === this.line.out) {
|
|
51
|
+
totalFinishedLines++;
|
|
52
|
+
}
|
|
53
|
+
if (totalFinishedLines === totalLines) {
|
|
54
|
+
isFinished = true;
|
|
55
|
+
}
|
|
56
|
+
this.dialogRef.close({
|
|
57
|
+
qty_in,
|
|
58
|
+
finish,
|
|
59
|
+
isFinished,
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
PieceWorkInForm.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PieceWorkInForm, deps: [{ token: i1.FocusService }, { token: i2.PieceWorkLineControllerService }, { token: i3.MatDialogRef }, { token: i4.Store }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
65
|
+
PieceWorkInForm.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PieceWorkInForm, selector: "piece-work-in-form", ngImport: i0, template: "<div fxLayout=\"column\" style=\"width: 100%\" fxLayoutAlign=\" none\">\n <h4>Piece Work</h4>\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n <span class=\"h_t\">Assembly Name</span>\n <span class=\"v_t\">{{ line.part?.part_number }}</span>\n </div>\n\n <div class=\"spacer\"></div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n <span class=\"h_t\">Mode</span>\n <span class=\"v_t\">{{ line.mode?.controller }}</span>\n </div>\n\n <div class=\"spacer\"></div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n <span class=\"h_t\">Allocated Time</span>\n <span class=\"v_t\">--</span>\n </div>\n </div>\n <form class=\"k-form\" autocomplete=\"off\" #pieceWork=\"ngForm\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start start\" fxLayoutGap=\"20px\">\n <kendo-floatinglabel fxFlex=\"80%\" text=\"Qty\">\n <kendo-numerictextbox\n [format]=\"'n0'\"\n style=\"width: 100%\"\n [min]=\"1\"\n required\n [(ngModel)]=\"qty_in\"\n [name]=\"'in'\"\n [max]=\"line.out\"\n type=\"number\"></kendo-numerictextbox>\n </kendo-floatinglabel>\n <mat-checkbox fxFlexAlign=\"center\" name=\"finish\" [(ngModel)]=\"finish\">\n Finish\n </mat-checkbox>\n </div>\n </form>\n</div>\n<div\n style=\"margin-top: 25px\"\n fxLayoutGap=\"10px\"\n fxLayout=\"row\"\n fxLayoutAlign=\"end none\">\n <button (click)=\"cancel()\" mat-raised-button color=\"danger\">Cancel</button>\n <button\n (click)=\"save(qty_in, finish)\"\n [disabled]=\"!pieceWork.valid\"\n mat-raised-button\n class=\"save_button\"\n color=\"primary\">\n Save\n </button>\n</div>\n", styles: ["kendo-textbox-container{width:100%}.h_t{font: 10px/40px IBM Plex Sans;letter-spacing:0px;color:#666;opacity:1}.v_t{font: 18px/40px IBM Plex Sans;letter-spacing:0px;color:#666;opacity:1}.spacer{display:flex;flex-grow:1}\n"], components: [{ type: i5.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }, { type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i9.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }] });
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PieceWorkInForm, decorators: [{
|
|
67
|
+
type: Component,
|
|
68
|
+
args: [{ selector: 'piece-work-in-form', styles: [
|
|
69
|
+
`
|
|
70
|
+
kendo-textbox-container {
|
|
71
|
+
width: 100%;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.h_t {
|
|
75
|
+
font: normal normal normal 10px/40px IBM Plex Sans;
|
|
76
|
+
letter-spacing: 0px;
|
|
77
|
+
color: #666666;
|
|
78
|
+
opacity: 1;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.v_t {
|
|
82
|
+
font: normal normal normal 18px/40px IBM Plex Sans;
|
|
83
|
+
letter-spacing: 0px;
|
|
84
|
+
color: #666666;
|
|
85
|
+
opacity: 1;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.spacer {
|
|
89
|
+
display: flex;
|
|
90
|
+
flex-grow: 1;
|
|
91
|
+
}
|
|
92
|
+
`,
|
|
93
|
+
], template: "<div fxLayout=\"column\" style=\"width: 100%\" fxLayoutAlign=\" none\">\n <h4>Piece Work</h4>\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n <span class=\"h_t\">Assembly Name</span>\n <span class=\"v_t\">{{ line.part?.part_number }}</span>\n </div>\n\n <div class=\"spacer\"></div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n <span class=\"h_t\">Mode</span>\n <span class=\"v_t\">{{ line.mode?.controller }}</span>\n </div>\n\n <div class=\"spacer\"></div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n <span class=\"h_t\">Allocated Time</span>\n <span class=\"v_t\">--</span>\n </div>\n </div>\n <form class=\"k-form\" autocomplete=\"off\" #pieceWork=\"ngForm\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start start\" fxLayoutGap=\"20px\">\n <kendo-floatinglabel fxFlex=\"80%\" text=\"Qty\">\n <kendo-numerictextbox\n [format]=\"'n0'\"\n style=\"width: 100%\"\n [min]=\"1\"\n required\n [(ngModel)]=\"qty_in\"\n [name]=\"'in'\"\n [max]=\"line.out\"\n type=\"number\"></kendo-numerictextbox>\n </kendo-floatinglabel>\n <mat-checkbox fxFlexAlign=\"center\" name=\"finish\" [(ngModel)]=\"finish\">\n Finish\n </mat-checkbox>\n </div>\n </form>\n</div>\n<div\n style=\"margin-top: 25px\"\n fxLayoutGap=\"10px\"\n fxLayout=\"row\"\n fxLayoutAlign=\"end none\">\n <button (click)=\"cancel()\" mat-raised-button color=\"danger\">Cancel</button>\n <button\n (click)=\"save(qty_in, finish)\"\n [disabled]=\"!pieceWork.valid\"\n mat-raised-button\n class=\"save_button\"\n color=\"primary\">\n Save\n </button>\n</div>\n" }]
|
|
94
|
+
}], ctorParameters: function () { return [{ type: i1.FocusService }, { type: i2.PieceWorkLineControllerService }, { type: i3.MatDialogRef }, { type: i4.Store }, { type: undefined, decorators: [{
|
|
95
|
+
type: Inject,
|
|
96
|
+
args: [MAT_DIALOG_DATA]
|
|
97
|
+
}] }]; } });
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGllY2Utd29yay1pbi1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcGllY2Utd29yay1pbi1mb3JtL3BpZWNlLXdvcmstaW4tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvbGliL3BpZWNlLXdvcmstaW4tZm9ybS9waWVjZS13b3JrLWluLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7O0FBZ0R6RSxNQUFNLE9BQU8sZUFBZTtJQUkxQixZQUNVLFlBQTBCLEVBQzFCLGdCQUFnRCxFQUNqRCxTQUF3QyxFQUN2QyxLQUFZLEVBQ1ksSUFBUztRQUpqQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWdDO1FBQ2pELGNBQVMsR0FBVCxTQUFTLENBQStCO1FBQ3ZDLFVBQUssR0FBTCxLQUFLLENBQU87UUFDWSxTQUFJLEdBQUosSUFBSSxDQUFLO1FBUHBDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBUWhCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBQ0QsTUFBTTtRQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTTtRQUNqQixJQUFJLENBQUMsZ0JBQWdCO2FBQ2xCLElBQUksQ0FBQztZQUNKLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUNyQixLQUFLLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7YUFDaEQsQ0FBQztTQUNILENBQUM7YUFDRCxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDaEMsSUFBSSxrQkFBa0IsR0FBRyxDQUFDLENBQUM7WUFFM0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssQ0FBQyxFQUFFO29CQUN2QyxrQkFBa0IsRUFBRSxDQUFDO2lCQUN0QjtZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQzVCLGtCQUFrQixFQUFFLENBQUM7YUFDdEI7WUFDRCxJQUFJLGtCQUFrQixLQUFLLFVBQVUsRUFBRTtnQkFDckMsVUFBVSxHQUFHLElBQUksQ0FBQzthQUNuQjtZQUVELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO2dCQUNuQixNQUFNO2dCQUNOLE1BQU07Z0JBQ04sVUFBVTthQUNYLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7NEdBeERVLGVBQWUsNklBU2hCLGVBQWU7Z0dBVGQsZUFBZSwwRENqRDVCLHd5REF3REE7MkZEUGEsZUFBZTtrQkE5QjNCLFNBQVM7K0JBQ0Usb0JBQW9CLFVBQ3RCO3dCQUNOOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXVCQztxQkFDRjs7MEJBWUUsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9jdXNTZXJ2aWNlIH0gZnJvbSAnQGJhcmNvZGluZy9mcm9udGVuZC1jb3JlJztcbmltcG9ydCB7XG4gIEZhdWx0Q2F0ZWdvcnlDb250cm9sbGVyU2VydmljZSxcbiAgRmF1bHRDb250cm9sbGVyU2VydmljZSxcbiAgRmF1bHRzQ2F0ZWdvcnlXaXRoUmVsYXRpb25zLFxuICBGYXVsdFdpdGhSZWxhdGlvbnMsXG4gIFBpZWNlV29ya0xpbmVXaXRoUmVsYXRpb25zLFxuICBTZXNzaW9uV2l0aFJlbGF0aW9ucyxcbiAgVXNlcixcbiAgVXNlckNvbnRyb2xsZXJTZXJ2aWNlLFxuICBVc2VyV2l0aFJlbGF0aW9ucyxcbn0gZnJvbSAnQGJhcmNvZGluZy9zZGsnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBBdXRoU3RhdGUgfSBmcm9tICdAYmFyY29kaW5nL2F1dGgtY29yZSc7XG5pbXBvcnQgeyBQaWVjZVdvcmtMaW5lQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICdAYmFyY29kaW5nL3Nkayc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BpZWNlLXdvcmstaW4tZm9ybScsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIGtlbmRvLXRleHRib3gtY29udGFpbmVyIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC5oX3Qge1xuICAgICAgICBmb250OiBub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4LzQwcHggSUJNIFBsZXggU2FucztcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDBweDtcbiAgICAgICAgY29sb3I6ICM2NjY2NjY7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG5cbiAgICAgIC52X3Qge1xuICAgICAgICBmb250OiBub3JtYWwgbm9ybWFsIG5vcm1hbCAxOHB4LzQwcHggSUJNIFBsZXggU2FucztcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDBweDtcbiAgICAgICAgY29sb3I6ICM2NjY2NjY7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG5cbiAgICAgIC5zcGFjZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICdwaWVjZS13b3JrLWluLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBQaWVjZVdvcmtJbkZvcm0gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGxpbmU6IFBpZWNlV29ya0xpbmVXaXRoUmVsYXRpb25zO1xuICBwdWJsaWMgZmluaXNoID0gZmFsc2U7XG4gIHB1YmxpYyBxdHlfaW4gPSAwO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvY3VzU2VydmljZTogRm9jdXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGllY2VXb3JrTGluZUFwaTogUGllY2VXb3JrTGluZUNvbnRyb2xsZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxQaWVjZVdvcmtJbkZvcm0+LFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55XG4gICkge1xuICAgIHRoaXMubGluZSA9IE9iamVjdC5hc3NpZ24oe30sIGRhdGEubGluZSk7XG4gICAgdGhpcy5xdHlfaW4gPSB0aGlzLmxpbmUub3V0IC0gdGhpcy5saW5lLmluO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb2N1c1NlcnZpY2UudW5Gb2N1cygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb2N1c1NlcnZpY2Uuc2V0Rm9jdXMoKTtcbiAgfVxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgfVxuXG4gIHNhdmUocXR5X2luLCBmaW5pc2gpIHtcbiAgICB0aGlzLnBpZWNlV29ya0xpbmVBcGlcbiAgICAgIC5maW5kKHtcbiAgICAgICAgZmlsdGVyOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgd2hlcmU6IHsgcGllY2V3b3JrX2lkOiB0aGlzLmxpbmUucGllY2V3b3JrX2lkIH0sXG4gICAgICAgIH0pLFxuICAgICAgfSlcbiAgICAgIC5zdWJzY3JpYmUobGluZXMgPT4ge1xuICAgICAgICBsZXQgaXNGaW5pc2hlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCB0b3RhbExpbmVzID0gbGluZXMubGVuZ3RoO1xuICAgICAgICBsZXQgdG90YWxGaW5pc2hlZExpbmVzID0gMDtcblxuICAgICAgICBsaW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xuICAgICAgICAgIGlmIChsaW5lLnBpZWNld29ya19saW5lX3N0YXR1c19pZCA9PT0gMikge1xuICAgICAgICAgICAgdG90YWxGaW5pc2hlZExpbmVzKys7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHF0eV9pbiA9PT0gdGhpcy5saW5lLm91dCkge1xuICAgICAgICAgIHRvdGFsRmluaXNoZWRMaW5lcysrO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b3RhbEZpbmlzaGVkTGluZXMgPT09IHRvdGFsTGluZXMpIHtcbiAgICAgICAgICBpc0ZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgICBxdHlfaW4sXG4gICAgICAgICAgZmluaXNoLFxuICAgICAgICAgIGlzRmluaXNoZWQsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBzdHlsZT1cIndpZHRoOiAxMDAlXCIgZnhMYXlvdXRBbGlnbj1cIiBub25lXCI+XG4gIDxoND5QaWVjZSBXb3JrPC9oND5cbiAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gbm9uZVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJoX3RcIj5Bc3NlbWJseSBOYW1lPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ2X3RcIj57eyBsaW5lLnBhcnQ/LnBhcnRfbnVtYmVyIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInNwYWNlclwiPjwvZGl2PlxuXG4gICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIG5vbmVcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaF90XCI+TW9kZTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidl90XCI+e3sgbGluZS5tb2RlPy5jb250cm9sbGVyIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInNwYWNlclwiPjwvZGl2PlxuXG4gICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIG5vbmVcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaF90XCI+QWxsb2NhdGVkIFRpbWU8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInZfdFwiPi0tPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGZvcm0gY2xhc3M9XCJrLWZvcm1cIiBhdXRvY29tcGxldGU9XCJvZmZcIiAjcGllY2VXb3JrPVwibmdGb3JtXCI+XG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBzdGFydFwiIGZ4TGF5b3V0R2FwPVwiMjBweFwiPlxuICAgICAgPGtlbmRvLWZsb2F0aW5nbGFiZWwgZnhGbGV4PVwiODAlXCIgdGV4dD1cIlF0eVwiPlxuICAgICAgICA8a2VuZG8tbnVtZXJpY3RleHRib3hcbiAgICAgICAgICBbZm9ybWF0XT1cIiduMCdcIlxuICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCVcIlxuICAgICAgICAgIFttaW5dPVwiMVwiXG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInF0eV9pblwiXG4gICAgICAgICAgW25hbWVdPVwiJ2luJ1wiXG4gICAgICAgICAgW21heF09XCJsaW5lLm91dFwiXG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiPjwva2VuZG8tbnVtZXJpY3RleHRib3g+XG4gICAgICA8L2tlbmRvLWZsb2F0aW5nbGFiZWw+XG4gICAgICA8bWF0LWNoZWNrYm94IGZ4RmxleEFsaWduPVwiY2VudGVyXCIgbmFtZT1cImZpbmlzaFwiIFsobmdNb2RlbCldPVwiZmluaXNoXCI+XG4gICAgICAgIEZpbmlzaFxuICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvZGl2PlxuPGRpdlxuICBzdHlsZT1cIm1hcmdpbi10b3A6IDI1cHhcIlxuICBmeExheW91dEdhcD1cIjEwcHhcIlxuICBmeExheW91dD1cInJvd1wiXG4gIGZ4TGF5b3V0QWxpZ249XCJlbmQgbm9uZVwiPlxuICA8YnV0dG9uIChjbGljayk9XCJjYW5jZWwoKVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwiZGFuZ2VyXCI+Q2FuY2VsPC9idXR0b24+XG4gIDxidXR0b25cbiAgICAoY2xpY2spPVwic2F2ZShxdHlfaW4sIGZpbmlzaClcIlxuICAgIFtkaXNhYmxlZF09XCIhcGllY2VXb3JrLnZhbGlkXCJcbiAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgIGNsYXNzPVwic2F2ZV9idXR0b25cIlxuICAgIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgIFNhdmVcbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|