@aggdirect/coolmap 2.9.8 → 3.0.0

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 (115) hide show
  1. package/esm2022/aggdirect-coolmap.mjs +5 -0
  2. package/esm2022/lib/component/add-route/add-route.component.mjs +433 -0
  3. package/esm2022/lib/component/job-code/job-code.component.mjs +181 -0
  4. package/esm2022/lib/component/map/map.component.mjs +39 -0
  5. package/esm2022/lib/component/nav/layout/add-route-nav/add-route-nav.component.mjs +151 -0
  6. package/esm2022/lib/component/nav/layout/job-code-nav/job-code-nav.component.mjs +141 -0
  7. package/esm2022/lib/component/nav/nav.component.mjs +54 -0
  8. package/esm2022/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.mjs +77 -0
  9. package/esm2022/lib/component/route-jobcode-list/route-jobcode-list.component.mjs +319 -0
  10. package/esm2022/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.mjs +19 -0
  11. package/esm2022/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.mjs +37 -0
  12. package/esm2022/lib/component/shared/dialog/dialog.component.mjs +31 -0
  13. package/esm2022/lib/component/shared/estimation-display/estimation-display.component.mjs +18 -0
  14. package/esm2022/lib/component/shared/job-route-list/job-route-list.component.mjs +79 -0
  15. package/esm2022/lib/component/shared/jobcode-overview/jobcode-overview.component.mjs +24 -0
  16. package/esm2022/lib/component/shared/jobcode-status/jobcode-status.component.mjs +15 -0
  17. package/esm2022/lib/component/shared/route-info-card/route-info-card.component.mjs +62 -0
  18. package/esm2022/lib/component/shared/searchoptiongroup/searchoptiongroup.component.mjs +25 -0
  19. package/esm2022/lib/coolmap.module.mjs +193 -0
  20. package/esm2022/public-api.mjs +19 -0
  21. package/fesm2022/aggdirect-coolmap.mjs +1769 -0
  22. package/fesm2022/aggdirect-coolmap.mjs.map +1 -0
  23. package/index.d.ts +5 -0
  24. package/lib/component/add-route/add-route.component.d.ts +73 -0
  25. package/lib/component/job-code/job-code.component.d.ts +41 -0
  26. package/lib/component/map/map.component.d.ts +15 -0
  27. package/lib/component/nav/layout/add-route-nav/add-route-nav.component.d.ts +49 -0
  28. package/lib/component/nav/layout/job-code-nav/job-code-nav.component.d.ts +42 -0
  29. package/lib/component/nav/nav.component.d.ts +31 -0
  30. package/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.d.ts +20 -0
  31. package/lib/component/route-jobcode-list/route-jobcode-list.component.d.ts +42 -0
  32. package/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.d.ts +9 -0
  33. package/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.d.ts +12 -0
  34. package/lib/component/shared/dialog/dialog.component.d.ts +13 -0
  35. package/lib/component/shared/estimation-display/estimation-display.component.d.ts +8 -0
  36. package/lib/component/shared/job-route-list/job-route-list.component.d.ts +26 -0
  37. package/lib/component/shared/jobcode-overview/jobcode-overview.component.d.ts +10 -0
  38. package/lib/component/shared/jobcode-status/jobcode-status.component.d.ts +7 -0
  39. package/lib/component/shared/route-info-card/route-info-card.component.d.ts +32 -0
  40. package/lib/component/shared/searchoptiongroup/searchoptiongroup.component.d.ts +14 -0
  41. package/lib/coolmap.module.d.ts +46 -0
  42. package/package.json +22 -5
  43. package/{src/public-api.ts → public-api.d.ts} +0 -8
  44. package/karma.conf.js +0 -44
  45. package/ng-package.json +0 -7
  46. package/src/assets/mixin.scss +0 -28
  47. package/src/assets/palette.scss +0 -24
  48. package/src/assets/variable.scss +0 -15
  49. package/src/lib/component/add-route/add-route.component.html +0 -172
  50. package/src/lib/component/add-route/add-route.component.scss +0 -243
  51. package/src/lib/component/add-route/add-route.component.spec.ts +0 -23
  52. package/src/lib/component/add-route/add-route.component.ts +0 -394
  53. package/src/lib/component/job-code/job-code.component.html +0 -79
  54. package/src/lib/component/job-code/job-code.component.scss +0 -396
  55. package/src/lib/component/job-code/job-code.component.ts +0 -146
  56. package/src/lib/component/map/map.component.css +0 -0
  57. package/src/lib/component/map/map.component.html +0 -4
  58. package/src/lib/component/map/map.component.spec.ts +0 -23
  59. package/src/lib/component/map/map.component.ts +0 -34
  60. package/src/lib/component/nav/layout/add-route-nav/add-route-nav.component.html +0 -46
  61. package/src/lib/component/nav/layout/add-route-nav/add-route-nav.component.scss +0 -18
  62. package/src/lib/component/nav/layout/add-route-nav/add-route-nav.component.spec.ts +0 -23
  63. package/src/lib/component/nav/layout/add-route-nav/add-route-nav.component.ts +0 -130
  64. package/src/lib/component/nav/layout/job-code-nav/job-code-nav.component.html +0 -48
  65. package/src/lib/component/nav/layout/job-code-nav/job-code-nav.component.scss +0 -24
  66. package/src/lib/component/nav/layout/job-code-nav/job-code-nav.component.ts +0 -143
  67. package/src/lib/component/nav/nav.component.html +0 -19
  68. package/src/lib/component/nav/nav.component.scss +0 -67
  69. package/src/lib/component/nav/nav.component.ts +0 -38
  70. package/src/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.html +0 -56
  71. package/src/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.scss +0 -168
  72. package/src/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.spec.ts +0 -23
  73. package/src/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.ts +0 -43
  74. package/src/lib/component/route-jobcode-list/route-jobcode-list.component.html +0 -73
  75. package/src/lib/component/route-jobcode-list/route-jobcode-list.component.scss +0 -227
  76. package/src/lib/component/route-jobcode-list/route-jobcode-list.component.ts +0 -233
  77. package/src/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.html +0 -7
  78. package/src/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.scss +0 -10
  79. package/src/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.spec.ts +0 -23
  80. package/src/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.ts +0 -15
  81. package/src/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.html +0 -28
  82. package/src/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.scss +0 -172
  83. package/src/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.spec.ts +0 -23
  84. package/src/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.ts +0 -20
  85. package/src/lib/component/shared/dialog/dialog.component.html +0 -7
  86. package/src/lib/component/shared/dialog/dialog.component.scss +0 -30
  87. package/src/lib/component/shared/dialog/dialog.component.ts +0 -18
  88. package/src/lib/component/shared/estimation-display/estimation-display.component.html +0 -7
  89. package/src/lib/component/shared/estimation-display/estimation-display.component.scss +0 -7
  90. package/src/lib/component/shared/estimation-display/estimation-display.component.ts +0 -13
  91. package/src/lib/component/shared/job-route-list/job-route-list.component.html +0 -46
  92. package/src/lib/component/shared/job-route-list/job-route-list.component.scss +0 -15
  93. package/src/lib/component/shared/job-route-list/job-route-list.component.spec.ts +0 -23
  94. package/src/lib/component/shared/job-route-list/job-route-list.component.ts +0 -54
  95. package/src/lib/component/shared/jobcode-overview/jobcode-overview.component.html +0 -11
  96. package/src/lib/component/shared/jobcode-overview/jobcode-overview.component.scss +0 -13
  97. package/src/lib/component/shared/jobcode-overview/jobcode-overview.component.spec.ts +0 -23
  98. package/src/lib/component/shared/jobcode-overview/jobcode-overview.component.ts +0 -19
  99. package/src/lib/component/shared/jobcode-status/jobcode-status.component.html +0 -5
  100. package/src/lib/component/shared/jobcode-status/jobcode-status.component.scss +0 -40
  101. package/src/lib/component/shared/jobcode-status/jobcode-status.component.spec.ts +0 -23
  102. package/src/lib/component/shared/jobcode-status/jobcode-status.component.ts +0 -11
  103. package/src/lib/component/shared/route-info-card/route-info-card.component.html +0 -19
  104. package/src/lib/component/shared/route-info-card/route-info-card.component.scss +0 -50
  105. package/src/lib/component/shared/route-info-card/route-info-card.component.spec.ts +0 -23
  106. package/src/lib/component/shared/route-info-card/route-info-card.component.ts +0 -74
  107. package/src/lib/component/shared/searchoptiongroup/searchoptiongroup.component.css +0 -3
  108. package/src/lib/component/shared/searchoptiongroup/searchoptiongroup.component.html +0 -6
  109. package/src/lib/component/shared/searchoptiongroup/searchoptiongroup.component.spec.ts +0 -23
  110. package/src/lib/component/shared/searchoptiongroup/searchoptiongroup.component.ts +0 -21
  111. package/src/lib/coolmap.module.ts +0 -120
  112. package/src/test.ts +0 -27
  113. package/tsconfig.lib.json +0 -15
  114. package/tsconfig.lib.prod.json +0 -10
  115. package/tsconfig.spec.json +0 -17
@@ -0,0 +1,141 @@
1
+ import { Component, EventEmitter, Output, Inject, Input, } from '@angular/core';
2
+ import { map, startWith } from 'rxjs';
3
+ import { FormControl, FormGroup } from '@angular/forms';
4
+ import { Subject, takeUntil } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@aggdirect/coolmap-services";
7
+ import * as i2 from "@angular/common";
8
+ import * as i3 from "@angular/forms";
9
+ import * as i4 from "@angular/material/input";
10
+ import * as i5 from "@angular/material/form-field";
11
+ import * as i6 from "@angular/material/core";
12
+ import * as i7 from "@angular/material/icon";
13
+ import * as i8 from "@angular/material/autocomplete";
14
+ import * as i9 from "@angular/material/chips";
15
+ import * as i10 from "@angular/material/datepicker";
16
+ import * as i11 from "@angular/material/button";
17
+ import * as i12 from "../../../route-jobcode-list/route-jobcode-list.component";
18
+ export class JobCodeNavComponent {
19
+ utils;
20
+ config;
21
+ filterForm = new FormGroup({ search: new FormControl() });
22
+ listData = [];
23
+ loaderVal = false;
24
+ dateValue = new Date();
25
+ jobemit = new EventEmitter();
26
+ value = '';
27
+ filteredOptions;
28
+ filters = [];
29
+ clearJobDetails = new EventEmitter();
30
+ destroyer$ = new Subject();
31
+ customerRepoDetails;
32
+ selectedDate;
33
+ constructor(utils, config) {
34
+ this.utils = utils;
35
+ this.config = config;
36
+ this.selectedDate = this.utils.getDateFormat(new Date());
37
+ utils.navChangeObserve.pipe(takeUntil(this.destroyer$)).subscribe((res) => {
38
+ if (res) {
39
+ this.loaderVal = false;
40
+ }
41
+ else
42
+ this.loaderVal = true;
43
+ });
44
+ }
45
+ ngOnChanges(changes) {
46
+ if (changes['customerRepoDetails'] &&
47
+ changes['customerRepoDetails']['currentValue']) {
48
+ this.loadData(this.selectedDate);
49
+ this.filters = [];
50
+ this.utils.clearViewRouteforJobCode.next(true);
51
+ }
52
+ }
53
+ loadData(value) {
54
+ this.selectedDate = value;
55
+ this.filteredOptions = this.filterForm.get('search')?.valueChanges.pipe(startWith(''), map((value) => this.utils.filter(value, this.filters)));
56
+ this.utils.preventnavChange.next(false);
57
+ this.loaderVal = true;
58
+ let dataSet;
59
+ if (this.config.repository === 'customer') {
60
+ dataSet = {
61
+ date: value,
62
+ customer_id: this.customerRepoDetails.customer.id,
63
+ project_id: this.customerRepoDetails.projectId,
64
+ };
65
+ }
66
+ else {
67
+ dataSet = { date: value };
68
+ }
69
+ this.utils
70
+ .postdata('jobs_report_v2', dataSet)
71
+ .pipe(takeUntil(this.destroyer$))
72
+ .subscribe((res) => {
73
+ if (typeof res['data'] !== 'string') {
74
+ if (res['data'].length > 0) {
75
+ this.listData = res['data'].map((ele) => {
76
+ ele['date'] = value;
77
+ return ele;
78
+ });
79
+ }
80
+ this.listData.forEach((ele) => {
81
+ this.utils.makeOptions(ele);
82
+ });
83
+ }
84
+ else
85
+ this.listData = [];
86
+ this.clearJobDetails.emit(true);
87
+ this.utils.clearViewRouteforJobCode.next(true);
88
+ this.filters = [];
89
+ if (typeof res['data'] === 'string')
90
+ this.utils.preventnavChange.next(true);
91
+ }, (err) => {
92
+ if (err)
93
+ this.utils.preventnavChange.next(true);
94
+ });
95
+ }
96
+ getRoute(job) {
97
+ if (job['type'] === 'jobcode') {
98
+ this.jobemit.emit(job);
99
+ }
100
+ }
101
+ getDate(ev) {
102
+ this.loadData(this.utils.getDateFormat(ev.value));
103
+ }
104
+ filterSearch(e) {
105
+ this.filterForm.controls.search.setValue(null);
106
+ this.filterForm.controls.search.updateValueAndValidity();
107
+ this.filters = [
108
+ {
109
+ name: e.source.value.label,
110
+ type: e.source.value.type,
111
+ value: e.source.value,
112
+ },
113
+ ];
114
+ }
115
+ removeFromFilter(filter) {
116
+ const index = this.filters.indexOf(filter);
117
+ if (index >= 0) {
118
+ this.filters = [];
119
+ }
120
+ }
121
+ ngOnDestroy() {
122
+ this.destroyer$.next(true);
123
+ this.destroyer$.unsubscribe();
124
+ }
125
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: JobCodeNavComponent, deps: [{ token: i1.UtilsService }, { token: 'memberData' }], target: i0.ɵɵFactoryTarget.Component });
126
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: JobCodeNavComponent, selector: "app-job-code-nav", inputs: { customerRepoDetails: "customerRepoDetails" }, outputs: { jobemit: "jobemit", clearJobDetails: "clearJobDetails" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"nav_body\">\n <div class=\"search-panel\">\n <div class=\"datepicker\">\n <mat-form-field>\n <mat-label>Choose a date</mat-label>\n <input readonly matInput (click)=\"picker.open()\" [disabled]=\"loaderVal\" [(ngModel)]=\"dateValue\" [matDatepicker]=\"picker\" (dateChange)=\"getDate($event)\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n </div>\n <div class=\"search\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field class=\"full-width\" [class.disabled]=\"loaderVal\">\n <input matInput [matChipInputFor]=\"chipList\" formControlName=\"search\" [matAutocomplete]=\"auto\"\n [disabled]=\"loaderVal\" placeholder=\"Search\">\n <mat-icon matSuffix *ngIf=\"!utils.conveySearchIcon(filterForm.value.search)\">search</mat-icon>\n <button\n matSuffix \n mat-icon-button \n aria-label=\"Clear\" \n *ngIf=\"utils.conveySearchIcon(filterForm.value.search)\" (click)=\"filterForm.reset()\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" class=\"whole_width\">\n <mat-option *ngFor=\"let option of filteredOptions | async\" (onSelectionChange)=\"filterSearch($event)\"\n [value]=\"option\">\n {{option.type | titlecase }}: {{option['label']}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </form>\n </div>\n\n <div class=\"chip-list\">\n <mat-chip-grid #chipList aria-label=\"Filter selection\">\n @for (filter of filters; track filter) {\n <mat-chip-row class=\"chip-grid\" (removed)=\"removeFromFilter(filter)\">\n {{filter.type | titlecase }}: {{filter.name}}\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n </mat-chip-grid>\n </div>\n </div>\n <app-route-jobcode-list [type]=\"'jobcode'\" [searchTerm]=\"filters\" [data]=\"listData\" [loader]=\"loaderVal\" (clearJobDetailsFromList)=\"clearJobDetails.emit(true)\" (showAllRoute)=\"filters = []; clearJobDetails.emit(true)\" (emitroute)=\"getRoute($event)\"></app-route-jobcode-list>\n</div>\n", styles: [".search-panel .datepicker,.search-panel .search{width:47%}.chip-grid{width:auto;height:auto}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i8.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i8.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i9.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i9.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i9.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i9.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: i10.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i10.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i10.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i11.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i12.RouteJobCodeListComponent, selector: "app-route-jobcode-list", inputs: ["loader", "type", "data", "currentNav", "searchTerm", "clearListSeletion"], outputs: ["emitroute", "showAllRoute", "clearJobDetailsFromList"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }] });
127
+ }
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: JobCodeNavComponent, decorators: [{
129
+ type: Component,
130
+ args: [{ selector: 'app-job-code-nav', template: "<div class=\"nav_body\">\n <div class=\"search-panel\">\n <div class=\"datepicker\">\n <mat-form-field>\n <mat-label>Choose a date</mat-label>\n <input readonly matInput (click)=\"picker.open()\" [disabled]=\"loaderVal\" [(ngModel)]=\"dateValue\" [matDatepicker]=\"picker\" (dateChange)=\"getDate($event)\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n </div>\n <div class=\"search\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field class=\"full-width\" [class.disabled]=\"loaderVal\">\n <input matInput [matChipInputFor]=\"chipList\" formControlName=\"search\" [matAutocomplete]=\"auto\"\n [disabled]=\"loaderVal\" placeholder=\"Search\">\n <mat-icon matSuffix *ngIf=\"!utils.conveySearchIcon(filterForm.value.search)\">search</mat-icon>\n <button\n matSuffix \n mat-icon-button \n aria-label=\"Clear\" \n *ngIf=\"utils.conveySearchIcon(filterForm.value.search)\" (click)=\"filterForm.reset()\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" class=\"whole_width\">\n <mat-option *ngFor=\"let option of filteredOptions | async\" (onSelectionChange)=\"filterSearch($event)\"\n [value]=\"option\">\n {{option.type | titlecase }}: {{option['label']}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </form>\n </div>\n\n <div class=\"chip-list\">\n <mat-chip-grid #chipList aria-label=\"Filter selection\">\n @for (filter of filters; track filter) {\n <mat-chip-row class=\"chip-grid\" (removed)=\"removeFromFilter(filter)\">\n {{filter.type | titlecase }}: {{filter.name}}\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n </mat-chip-grid>\n </div>\n </div>\n <app-route-jobcode-list [type]=\"'jobcode'\" [searchTerm]=\"filters\" [data]=\"listData\" [loader]=\"loaderVal\" (clearJobDetailsFromList)=\"clearJobDetails.emit(true)\" (showAllRoute)=\"filters = []; clearJobDetails.emit(true)\" (emitroute)=\"getRoute($event)\"></app-route-jobcode-list>\n</div>\n", styles: [".search-panel .datepicker,.search-panel .search{width:47%}.chip-grid{width:auto;height:auto}\n"] }]
131
+ }], ctorParameters: () => [{ type: i1.UtilsService }, { type: i1.CoolmapConfigModel, decorators: [{
132
+ type: Inject,
133
+ args: ['memberData']
134
+ }] }], propDecorators: { jobemit: [{
135
+ type: Output
136
+ }], clearJobDetails: [{
137
+ type: Output
138
+ }], customerRepoDetails: [{
139
+ type: Input
140
+ }] } });
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLWNvZGUtbmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvbmF2L2xheW91dC9qb2ItY29kZS1uYXYvam9iLWNvZGUtbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvbmF2L2xheW91dC9qb2ItY29kZS1uYXYvam9iLWNvZGUtbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFFTixNQUFNLEVBQ04sS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBYTFDLE1BQU0sT0FBTyxtQkFBbUI7SUFlckI7SUFDdUI7SUFmaEMsVUFBVSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFELFFBQVEsR0FBWSxFQUFFLENBQUM7SUFDdkIsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUMzQixTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUNOLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzlDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxlQUFlLENBQWlDO0lBQ2hELE9BQU8sR0FBYSxFQUFFLENBQUM7SUFDTixlQUFlLEdBQUcsSUFBSSxZQUFZLEVB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Q29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbiAgT25EZXN0cm95LFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW50ZXJmYWNlIEZpbHRlciB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgdmFsdWU6IGFueTtcbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENvb2xtYXBDb25maWdNb2RlbCxcbiAgQ3VzdG9tZXJSZXBvRGV0YWlsc01vZGVsLFxuICBSb3V0ZSxcbiAgVXRpbHNTZXJ2aWNlLFxufSBmcm9tICdAYWdnZGlyZWN0L2Nvb2xtYXAtc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtam9iLWNvZGUtbmF2JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2pvYi1jb2RlLW5hdi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2pvYi1jb2RlLW5hdi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBKb2JDb2RlTmF2Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBmaWx0ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7IHNlYXJjaDogbmV3IEZvcm1Db250cm9sKCkgfSk7XG4gIGxpc3REYXRhOiBSb3V0ZVtdID0gW107XG4gIGxvYWRlclZhbDogYm9vbGVhbiA9IGZhbHNlO1xuICBkYXRlVmFsdWUgPSBuZXcgRGF0ZSgpO1xuICBAT3V0cHV0KCkgcHVibGljIGpvYmVtaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHZhbHVlID0gJyc7XG4gIGZpbHRlcmVkT3B0aW9ucyE6IE9ic2VydmFibGU8YW55W10+IHwgdW5kZWZpbmVkO1xuICBmaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xuICBAT3V0cHV0KCkgcHVibGljIGNsZWFySm9iRGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHVibGljIGRlc3Ryb3llciQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tZXJSZXBvRGV0YWlscyE6IEN1c3RvbWVyUmVwb0RldGFpbHNNb2RlbDtcbiAgc2VsZWN0ZWREYXRlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHV0aWxzOiBVdGlsc1NlcnZpY2UsXG4gICAgQEluamVjdCgnbWVtYmVyRGF0YScpIHByaXZhdGUgY29uZmlnOiBDb29sbWFwQ29uZmlnTW9kZWxcbiAgKSB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSB0aGlzLnV0aWxzLmdldERhdGVGb3JtYXQobmV3IERhdGUoKSk7XG4gICAgdXRpbHMubmF2Q2hhbmdlT2JzZXJ2ZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLmxvYWRlclZhbCA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHRoaXMubG9hZGVyVmFsID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgY2hhbmdlc1snY3VzdG9tZXJSZXBvRGV0YWlscyddICYmXG4gICAgICBjaGFuZ2VzWydjdXN0b21lclJlcG9EZXRhaWxzJ11bJ2N1cnJlbnRWYWx1ZSddXG4gICAgKSB7XG4gICAgICB0aGlzLmxvYWREYXRhKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICAgIHRoaXMuZmlsdGVycyA9IFtdO1xuICAgICAgdGhpcy51dGlscy5jbGVhclZpZXdSb3V0ZWZvckpvYkNvZGUubmV4dCh0cnVlKTtcbiAgICB9XG4gIH1cbiAgbG9hZERhdGEodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdmFsdWU7XG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLmZpbHRlckZvcm0uZ2V0KCdzZWFyY2gnKT8udmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgbWFwKCh2YWx1ZSkgPT4gdGhpcy51dGlscy5maWx0ZXIodmFsdWUsIHRoaXMuZmlsdGVycykpXG4gICAgKTtcbiAgICB0aGlzLnV0aWxzLnByZXZlbnRuYXZDaGFuZ2UubmV4dChmYWxzZSk7XG4gICAgdGhpcy5sb2FkZXJWYWwgPSB0cnVlO1xuICAgIGxldCBkYXRhU2V0O1xuICAgIGlmICh0aGlzLmNvbmZpZy5yZXBvc2l0b3J5ID09PSAnY3VzdG9tZXInKSB7XG4gICAgICBkYXRhU2V0ID0ge1xuICAgICAgICBkYXRlOiB2YWx1ZSxcbiAgICAgICAgY3VzdG9tZXJfaWQ6IHRoaXMuY3VzdG9tZXJSZXBvRGV0YWlscy5jdXN0b21lci5pZCxcbiAgICAgICAgcHJvamVjdF9pZDogdGhpcy5jdXN0b21lclJlcG9EZXRhaWxzLnByb2plY3RJZCxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGFTZXQgPSB7IGRhdGU6IHZhbHVlIH07XG4gICAgfVxuICAgIHRoaXMudXRpbHNcbiAgICAgIC5wb3N0ZGF0YSgnam9ic19yZXBvcnRfdjInLCBkYXRhU2V0KVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHJlc1snZGF0YSddICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWYgKHJlc1snZGF0YSddLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5saXN0RGF0YSA9IHJlc1snZGF0YSddLm1hcCgoZWxlOiBSb3V0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGVsZVsnZGF0ZSddID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5saXN0RGF0YS5mb3JFYWNoKChlbGU6IFJvdXRlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnV0aWxzLm1ha2VPcHRpb25zKGVsZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHRoaXMubGlzdERhdGEgPSBbXTtcbiAgICAgICAgICB0aGlzLmNsZWFySm9iRGV0YWlscy5lbWl0KHRydWUpO1xuICAgICAgICAgIHRoaXMudXRpbHMuY2xlYXJWaWV3Um91dGVmb3JKb2JDb2RlLm5leHQodHJ1ZSk7XG4gICAgICAgICAgdGhpcy5maWx0ZXJzID0gW107XG4gICAgICAgICAgaWYgKHR5cGVvZiByZXNbJ2RhdGEnXSA9PT0gJ3N0cmluZycpIHRoaXMudXRpbHMucHJldmVudG5hdkNoYW5nZS5uZXh0KHRydWUpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgaWYgKGVycikgdGhpcy51dGlscy5wcmV2ZW50bmF2Q2hhbmdlLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRSb3V0ZShqb2I6IFJvdXRlKSB7XG4gICAgaWYgKGpvYlsndHlwZSddID09PSAnam9iY29kZScpIHtcbiAgICAgIHRoaXMuam9iZW1pdC5lbWl0KGpvYik7XG4gICAgfVxuICB9XG4gIGdldERhdGUoZXY6IE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50PERhdGU+KSB7XG4gICAgdGhpcy5sb2FkRGF0YSh0aGlzLnV0aWxzLmdldERhdGVGb3JtYXQoZXYudmFsdWUpKTtcbiAgfVxuXG4gIGZpbHRlclNlYXJjaChlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlckZvcm0uY29udHJvbHMuc2VhcmNoLnNldFZhbHVlKG51bGwpO1xuICAgIHRoaXMuZmlsdGVyRm9ybS5jb250cm9scy5zZWFyY2gudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIHRoaXMuZmlsdGVycyA9IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogZS5zb3VyY2UudmFsdWUubGFiZWwsXG4gICAgICAgIHR5cGU6IGUuc291cmNlLnZhbHVlLnR5cGUsXG4gICAgICAgIHZhbHVlOiBlLnNvdXJjZS52YWx1ZSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuICByZW1vdmVGcm9tRmlsdGVyKGZpbHRlcjogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbHRlcnMuaW5kZXhPZihmaWx0ZXIpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB0aGlzLmZpbHRlcnMgPSBbXTtcbiAgICB9XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZXIkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95ZXIkLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJuYXZfYm9keVwiPlxuICA8ZGl2IGNsYXNzPVwic2VhcmNoLXBhbmVsXCI+XG4gICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1sYWJlbD5DaG9vc2UgYSBkYXRlPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCByZWFkb25seSBtYXRJbnB1dCAoY2xpY2spPVwicGlja2VyLm9wZW4oKVwiIFtkaXNhYmxlZF09XCJsb2FkZXJWYWxcIiAgWyhuZ01vZGVsKV09XCJkYXRlVmFsdWVcIiBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIiAoZGF0ZUNoYW5nZSk9XCJnZXREYXRlKCRldmVudClcIj5cbiAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgICAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaFwiPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybVwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiIFtjbGFzcy5kaXNhYmxlZF09XCJsb2FkZXJWYWxcIj5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcExpc3RcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkZXJWYWxcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBtYXRTdWZmaXggKm5nSWY9XCIhdXRpbHMuY29udmV5U2VhcmNoSWNvbihmaWx0ZXJGb3JtLnZhbHVlLnNlYXJjaClcIj5zZWFyY2g8L21hdC1pY29uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG1hdFN1ZmZpeCBcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvbiBcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhclwiIFxuICAgICAgICAgICAgKm5nSWY9XCJ1dGlscy5jb252ZXlTZWFyY2hJY29uKGZpbHRlckZvcm0udmFsdWUuc2VhcmNoKVwiIChjbGljayk9XCJmaWx0ZXJGb3JtLnJlc2V0KClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIGNsYXNzPVwid2hvbGVfd2lkdGhcIj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9ucyB8IGFzeW5jXCIgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cImZpbHRlclNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgIHt7b3B0aW9uLnR5cGUgfCB0aXRsZWNhc2UgfX06IHt7b3B0aW9uWydsYWJlbCddfX1cbiAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNoaXAtbGlzdFwiPlxuICAgICAgPG1hdC1jaGlwLWdyaWQgI2NoaXBMaXN0IGFyaWEtbGFiZWw9XCJGaWx0ZXIgc2VsZWN0aW9uXCI+XG4gICAgICAgIEBmb3IgKGZpbHRlciBvZiBmaWx0ZXJzOyB0cmFjayBmaWx0ZXIpIHtcbiAgICAgICAgICA8bWF0LWNoaXAtcm93IGNsYXNzPVwiY2hpcC1ncmlkXCIgKHJlbW92ZWQpPVwicmVtb3ZlRnJvbUZpbHRlcihmaWx0ZXIpXCI+XG4gICAgICAgICAgICB7e2ZpbHRlci50eXBlIHwgdGl0bGVjYXNlIH19OiB7e2ZpbHRlci5uYW1lfX1cbiAgICAgICAgICAgIDxidXR0b24gbWF0Q2hpcFJlbW92ZT5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNhbmNlbDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L21hdC1jaGlwLXJvdz5cbiAgICAgICAgfVxuICAgICAgPC9tYXQtY2hpcC1ncmlkPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGFwcC1yb3V0ZS1qb2Jjb2RlLWxpc3QgW3R5cGVdPVwiJ2pvYmNvZGUnXCIgW3NlYXJjaFRlcm1dPVwiZmlsdGVyc1wiIFtkYXRhXT1cImxpc3REYXRhXCIgW2xvYWRlcl09XCJsb2FkZXJWYWxcIiAoY2xlYXJKb2JEZXRhaWxzRnJvbUxpc3QpPVwiY2xlYXJKb2JEZXRhaWxzLmVtaXQodHJ1ZSlcIiAoc2hvd0FsbFJvdXRlKT1cImZpbHRlcnMgPSBbXTsgY2xlYXJKb2JEZXRhaWxzLmVtaXQodHJ1ZSlcIiAoZW1pdHJvdXRlKT1cImdldFJvdXRlKCRldmVudClcIj48L2FwcC1yb3V0ZS1qb2Jjb2RlLWxpc3Q+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,54 @@
1
+ import { Component, EventEmitter, Output } from '@angular/core';
2
+ import { Subject, takeUntil } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@aggdirect/coolmap-services";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@angular/material/tooltip";
7
+ import * as i4 from "@angular/material/button";
8
+ export class NavComponent {
9
+ utils;
10
+ coolMap;
11
+ drawer = new EventEmitter();
12
+ changeNav = new EventEmitter();
13
+ navValue = 'Jobcode';
14
+ isnavChange = true;
15
+ paddinForJobCode = { top: 0, bottom: 250, left: 500, right: 400 };
16
+ paddinForViewRoute = { top: 0, bottom: 400, left: 400, right: 0 };
17
+ destroyer$ = new Subject();
18
+ constructor(utils, coolMap) {
19
+ this.utils = utils;
20
+ this.coolMap = coolMap;
21
+ this.utils.navChangeObserve.pipe(takeUntil(this.destroyer$)).subscribe(res => { this.isnavChange = res; });
22
+ this.coolMap.setPadding(this.paddinForJobCode);
23
+ }
24
+ openDrawer() { this.drawer.emit(true); }
25
+ chnageNav(name) {
26
+ if (this.isnavChange) {
27
+ this.changeNav.emit(name);
28
+ this.navValue = name;
29
+ this.coolMap.clearBound();
30
+ if (name === 'Addroute') {
31
+ this.coolMap.setPadding(this.paddinForViewRoute);
32
+ }
33
+ else {
34
+ this.coolMap.setPadding(this.paddinForJobCode);
35
+ }
36
+ this.utils.clearOptions();
37
+ }
38
+ }
39
+ ngOnDestroy() {
40
+ this.destroyer$.next(true);
41
+ this.destroyer$.unsubscribe();
42
+ }
43
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavComponent, deps: [{ token: i1.UtilsService }, { token: i1.CoolmapService }], target: i0.ɵɵFactoryTarget.Component });
44
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NavComponent, selector: "app-nav", outputs: { drawer: "drawer", changeNav: "changeNav" }, ngImport: i0, template: "<div class=\"nav\">\n <button (click)=\"openDrawer()\" class=\"toggle\">\n <img src=\"assets/images/toggle.svg\" alt=\"\" />\n </button>\n\n <ul class=\"m-100\">\n <li [ngClass]=\"{'active': navValue === 'Jobcode'}\">\n <a mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"Job Code\" aria-label=\"Job-code\" (click)=\"chnageNav('Jobcode')\">\n <img src=\"assets/images/job-code.svg\" alt=\"\" />\n </a>\n </li>\n\n <li [ngClass]=\"{'active': navValue === 'Addroute', 'disabled': !isnavChange }\">\n <a mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"View Route\" aria-label=\"View-route\" (click)=\"chnageNav('Addroute')\">\n <img src=\"assets/images/route.svg\" alt=\"\" />\n </a>\n </li>\n </ul>\n</div>\n", styles: [".nav{background:#e8e8e8;height:100vh;padding:15px 0;display:flex;align-items:center;flex-direction:column}.nav button{background:#fff;border-radius:15px;padding:5px 6px}.nav button img{width:28px}.nav ul{display:flex;flex-direction:column;align-items:center}.nav ul li{margin:10px 0;padding:0 5px;border-right:2px solid #e8e8e8}.nav ul li:hover{border-right:2px solid #326ad3;padding:0 5px}.nav ul li.disabled a{pointer-events:none;opacity:.5}.nav ul li.disabled:hover{border-right:2px solid #e8e8e8}.nav ul li a{padding:0!important;display:flex;border-radius:15px;min-width:42px;box-shadow:none;align-items:center;height:42px;line-height:10px}.nav ul li a img{width:27px}.nav ul li a:hover{background:#fff}.nav ul li a:hover img{filter:invert(.2) sepia(1) saturate(8) hue-rotate(180deg)}.nav ul li.active{border-right:2px solid #326ad3}.nav ul li.active a{background:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i4.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }] });
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavComponent, decorators: [{
47
+ type: Component,
48
+ args: [{ selector: 'app-nav', template: "<div class=\"nav\">\n <button (click)=\"openDrawer()\" class=\"toggle\">\n <img src=\"assets/images/toggle.svg\" alt=\"\" />\n </button>\n\n <ul class=\"m-100\">\n <li [ngClass]=\"{'active': navValue === 'Jobcode'}\">\n <a mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"Job Code\" aria-label=\"Job-code\" (click)=\"chnageNav('Jobcode')\">\n <img src=\"assets/images/job-code.svg\" alt=\"\" />\n </a>\n </li>\n\n <li [ngClass]=\"{'active': navValue === 'Addroute', 'disabled': !isnavChange }\">\n <a mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"View Route\" aria-label=\"View-route\" (click)=\"chnageNav('Addroute')\">\n <img src=\"assets/images/route.svg\" alt=\"\" />\n </a>\n </li>\n </ul>\n</div>\n", styles: [".nav{background:#e8e8e8;height:100vh;padding:15px 0;display:flex;align-items:center;flex-direction:column}.nav button{background:#fff;border-radius:15px;padding:5px 6px}.nav button img{width:28px}.nav ul{display:flex;flex-direction:column;align-items:center}.nav ul li{margin:10px 0;padding:0 5px;border-right:2px solid #e8e8e8}.nav ul li:hover{border-right:2px solid #326ad3;padding:0 5px}.nav ul li.disabled a{pointer-events:none;opacity:.5}.nav ul li.disabled:hover{border-right:2px solid #e8e8e8}.nav ul li a{padding:0!important;display:flex;border-radius:15px;min-width:42px;box-shadow:none;align-items:center;height:42px;line-height:10px}.nav ul li a img{width:27px}.nav ul li a:hover{background:#fff}.nav ul li a:hover img{filter:invert(.2) sepia(1) saturate(8) hue-rotate(180deg)}.nav ul li.active{border-right:2px solid #326ad3}.nav ul li.active a{background:#fff}\n"] }]
49
+ }], ctorParameters: () => [{ type: i1.UtilsService }, { type: i1.CoolmapService }], propDecorators: { drawer: [{
50
+ type: Output
51
+ }], changeNav: [{
52
+ type: Output
53
+ }] } });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvbmF2L25hdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L25hdi9uYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFPMUMsTUFBTSxPQUFPLFlBQVk7SUFTSjtJQUE0QjtJQVI5QixNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUNyQyxTQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUN4RCxRQUFRLEdBQVcsU0FBUyxDQUFDO0lBQzdCLFdBQVcsR0FBWSxJQUFJLENBQUM7SUFDNUIsZ0JBQWdCLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDbEUsa0JBQWtCLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDM0QsVUFBVSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7SUFFM0MsWUFBbUIsS0FBbUIsRUFBUyxPQUF1QjtRQUFuRCxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDcEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDekcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELFVBQVUsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDdkMsU0FBUyxDQUFDLElBQVk7UUFDcEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFBQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDM0UsSUFBSSxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUE7WUFBQyxDQUFDO2lCQUN4RSxDQUFDO2dCQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1lBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQzt3R0EzQlUsWUFBWTs0RkFBWixZQUFZLHNHQ1R6Qixzd0JBbUJBOzs0RkRWYSxZQUFZO2tCQUx4QixTQUFTOytCQUNFLFNBQVM7OEdBS0YsTUFBTTtzQkFBdEIsTUFBTTtnQkFDVSxTQUFTO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb29sbWFwU2VydmljZSwgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnQGFnZ2RpcmVjdC9jb29sbWFwLXNlcnZpY2VzJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbmF2JyxcbiAgdGVtcGxhdGVVcmw6ICcuL25hdi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25hdi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5hdkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBPdXRwdXQoKSBwdWJsaWMgZHJhd2VyID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZU5hdiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBuYXZWYWx1ZTogc3RyaW5nID0gJ0pvYmNvZGUnO1xuICBpc25hdkNoYW5nZTogYm9vbGVhbiA9IHRydWU7XG4gIHBhZGRpbkZvckpvYkNvZGUgPSB7IHRvcDogMCwgYm90dG9tOiAyNTAsIGxlZnQ6IDUwMCwgcmlnaHQ6IDQwMCB9O1xuICBwYWRkaW5Gb3JWaWV3Um91dGUgPSB7IHRvcDogMCwgYm90dG9tOiA0MDAsIGxlZnQ6IDQwMCwgcmlnaHQ6IDAgfTtcbiAgcHVibGljIGRlc3Ryb3llciQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1dGlsczogVXRpbHNTZXJ2aWNlLCBwdWJsaWMgY29vbE1hcDogQ29vbG1hcFNlcnZpY2UpIHtcbiAgICB0aGlzLnV0aWxzLm5hdkNoYW5nZU9ic2VydmUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKHJlcyA9PiB7IHRoaXMuaXNuYXZDaGFuZ2UgPSByZXMgfSlcbiAgICB0aGlzLmNvb2xNYXAuc2V0UGFkZGluZyh0aGlzLnBhZGRpbkZvckpvYkNvZGUpO1xuICB9XG5cbiAgb3BlbkRyYXdlcigpIHsgdGhpcy5kcmF3ZXIuZW1pdCh0cnVlKSB9XG4gIGNobmFnZU5hdihuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc25hdkNoYW5nZSkge1xuICAgICAgdGhpcy5jaGFuZ2VOYXYuZW1pdChuYW1lKTsgdGhpcy5uYXZWYWx1ZSA9IG5hbWU7IHRoaXMuY29vbE1hcC5jbGVhckJvdW5kKCk7XG4gICAgICBpZiAobmFtZSA9PT0gJ0FkZHJvdXRlJykgeyB0aGlzLmNvb2xNYXAuc2V0UGFkZGluZyh0aGlzLnBhZGRpbkZvclZpZXdSb3V0ZSkgfVxuICAgICAgZWxzZSB7IHRoaXMuY29vbE1hcC5zZXRQYWRkaW5nKHRoaXMucGFkZGluRm9ySm9iQ29kZSkgfVxuICAgICAgdGhpcy51dGlscy5jbGVhck9wdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llciQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3llciQudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm5hdlwiPlxuICA8YnV0dG9uIChjbGljayk9XCJvcGVuRHJhd2VyKClcIiBjbGFzcz1cInRvZ2dsZVwiPlxuICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy90b2dnbGUuc3ZnXCIgYWx0PVwiXCIgLz5cbiAgPC9idXR0b24+XG5cbiAgPHVsIGNsYXNzPVwibS0xMDBcIj5cbiAgICA8bGkgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBuYXZWYWx1ZSA9PT0gJ0pvYmNvZGUnfVwiPlxuICAgICAgPGEgbWF0LXJhaXNlZC1idXR0b24gI3Rvb2x0aXA9XCJtYXRUb29sdGlwXCIgbWF0VG9vbHRpcD1cIkpvYiBDb2RlXCIgYXJpYS1sYWJlbD1cIkpvYi1jb2RlXCIgKGNsaWNrKT1cImNobmFnZU5hdignSm9iY29kZScpXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy9qb2ItY29kZS5zdmdcIiBhbHQ9XCJcIiAvPlxuICAgICAgPC9hPlxuICAgIDwvbGk+XG5cbiAgICA8bGkgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBuYXZWYWx1ZSA9PT0gJ0FkZHJvdXRlJywgJ2Rpc2FibGVkJzogIWlzbmF2Q2hhbmdlIH1cIj5cbiAgICAgIDxhIG1hdC1yYWlzZWQtYnV0dG9uICN0b29sdGlwPVwibWF0VG9vbHRpcFwiIG1hdFRvb2x0aXA9XCJWaWV3IFJvdXRlXCIgYXJpYS1sYWJlbD1cIlZpZXctcm91dGVcIiAoY2xpY2spPVwiY2huYWdlTmF2KCdBZGRyb3V0ZScpXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy9yb3V0ZS5zdmdcIiBhbHQ9XCJcIiAvPlxuICAgICAgPC9hPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,77 @@
1
+ import { Component, EventEmitter, Input, Output, Inject } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@aggdirect/coolmap-services";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "@angular/material/tooltip";
6
+ export class JobCodeListCardComponent {
7
+ utils;
8
+ config;
9
+ route;
10
+ routeSeletion = new EventEmitter();
11
+ toggleDrivermenu = new EventEmitter();
12
+ emitJobdetails;
13
+ preventCloseDetails;
14
+ constructor(utils, config) {
15
+ this.utils = utils;
16
+ this.config = config;
17
+ }
18
+ selectRoute(route) { this.routeSeletion.emit(route); }
19
+ toggleDriverlist(mouseevntType, route, isHoverOut) {
20
+ const data = { mouseevntType, route, isHoverOut };
21
+ this.toggleDrivermenu.emit(data);
22
+ if (mouseevntType === 'click')
23
+ this.utils.setdictValue('driver-details', JSON.stringify(this.route));
24
+ }
25
+ toggleJobCodeDetails(mouseEventType, route) {
26
+ if (mouseEventType) {
27
+ route['type'] = 'jobcode';
28
+ this.emitJobdetails.emitroute.emit(route);
29
+ }
30
+ else if (!mouseEventType && this.preventCloseDetails) {
31
+ route = this.utils.getdictValue('route-details');
32
+ route['type'] = 'jobcode';
33
+ this.emitJobdetails.emitroute.emit(route);
34
+ }
35
+ else if (!mouseEventType && !this.preventCloseDetails)
36
+ this.emitJobdetails.clearJobDetailsFromList.emit(true);
37
+ }
38
+ calculateStatusPercentage(type, route) {
39
+ const total = route['Done'] + route['Ongoing'] + route['Open'];
40
+ if (type === 'done') {
41
+ return Math.round((100 * route['Done']) / total);
42
+ }
43
+ else if (type === 'ongoing') {
44
+ return Math.round((100 * route['Ongoing']) / total);
45
+ }
46
+ else if (type === 'open') {
47
+ return Math.round((100 * route['Open']) / total);
48
+ }
49
+ else {
50
+ return null;
51
+ }
52
+ }
53
+ setRouteItem() {
54
+ this.utils.preVentJobdetailclose.next(true);
55
+ this.utils.setdictValue('route-details', JSON.stringify(this.route));
56
+ }
57
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: JobCodeListCardComponent, deps: [{ token: i1.UtilsService }, { token: 'memberData' }], target: i0.ɵɵFactoryTarget.Component });
58
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: JobCodeListCardComponent, selector: "app-job-code-list-card", inputs: { route: "route", emitJobdetails: "emitJobdetails", preventCloseDetails: "preventCloseDetails" }, outputs: { routeSeletion: "routeSeletion", toggleDrivermenu: "toggleDrivermenu" }, ngImport: i0, template: "<div class=\"innerbox\">\n <div class=\"inputarea\">\n <input type=\"checkbox\" name=\"selectroute\" [checked]=\"route['isSelected']\" (change)=\"$event ? selectRoute(route) : null\" />\n <label>&nbsp;</label>\n <div class=\"border\"></div>\n </div>\n <div class=\"job_intro\">\n <div class=\"heading\">\n <h2>\n {{route['order_number'] ? route['order_number'] : ''}}\n </h2>\n |\n <span>\n {{route['customer_name']}}\n </span>\n |\n <span>\n {{route['project']}}\n </span>\n </div>\n <div class=\"destinationprt\">\n <span style=\"padding-left: 0;\">\n {{route['pickup_location']}}\n </span>\n <b>></b>\n <span>\n {{route['delivery_location']}}\n </span>\n </div>\n <div class=\"mat_cat\">\n <span>\n {{route['material']}}\n </span>\n </div>\n\n <div class=\"statusbar\">\n <div class=\"status_percent\">\n <span class=\"done\" [style]=\"'width:'+calculateStatusPercentage('done',route['values'])+'%'\"></span>\n <span class=\"ongoing\" [style]=\"'width:'+calculateStatusPercentage('ongoing', route['values'])+'%'\"> </span>\n <span class=\"open\" [style]=\"'width:'+calculateStatusPercentage('open', route['values'])+'%'\"> </span>\n </div>\n </div>\n </div>\n <div class=\"statusarea\">\n <div class=\"statusunit\" [ngClass]=\"route['unit']\">{{route['unit']}}</div>\n <div class=\"driver_icon\" *ngIf=\"config.repository !== 'customer'\" (mouseover)=\"toggleDriverlist(true, route)\" (mouseout)=\"toggleDriverlist(false, route, true)\"\n mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"Click on icon to show the driver list\" matTooltipPosition=\"above\"\n (click)=\"toggleDriverlist('click', route)\">\n <img src=\"assets/images/driver_icon.png\" [alt]=\"\" />\n </div>\n <div class=\"infoicon\" (click)=\"setRouteItem()\" (mouseover)=\"toggleJobCodeDetails(true, route)\"\n (mouseout)=\"toggleJobCodeDetails(false, route)\">\n <img src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n </div>\n</div>\n", styles: [".innerbox{display:flex;justify-content:space-between}.innerbox .inputarea{display:flex;align-items:center}.innerbox .inputarea input[type=checkbox]{width:100%;height:100%;margin-right:10px;opacity:0;position:absolute;left:0;margin-left:0;top:0;z-index:3;cursor:pointer}.innerbox .inputarea label{width:100%;position:relative;z-index:2;font-size:12px;color:#878787;height:100%;position:absolute;top:0;left:0}.innerbox .inputarea .border{position:absolute;width:100%;height:100%;left:0;right:0;top:-1px;border-radius:15px}.innerbox .inputarea input:checked~.border{border-left:3px solid #39c471;border-right:1px solid #39c471;border-top:1px solid #39c471;border-bottom:1px solid #39c471}.innerbox .inputarea h2{margin-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:214px;padding-left:16px;margin-bottom:5px;margin-top:0}.innerbox .job_intro{width:90%}.innerbox .job_intro .heading{display:flex;font-size:.8rem}.innerbox .job_intro .heading h2{margin:0 4px 0 0;font-size:.8rem}.innerbox .job_intro .heading span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100px;padding:0 3px;display:block}.innerbox .job_intro .destinationprt{display:flex;margin-top:10px;font-size:.8rem}.innerbox .job_intro .destinationprt span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:132px;padding:0 5px;display:block}.innerbox .job_intro .mat_cat{margin-top:10px;font-size:.8rem}.innerbox .job_intro .statusbar{width:100%;position:relative;height:5px;margin-top:10px}.innerbox .job_intro .statusbar .status_percent{position:absolute;left:0;display:flex;width:100%;height:100%}.innerbox .job_intro .statusbar .status_percent span{display:block}.innerbox .job_intro .statusbar .status_percent .done{background:green}.innerbox .job_intro .statusbar .status_percent .ongoing{background:#fc0}.innerbox .job_intro .statusbar .status_percent .open{background:#bfbfbf}.innerbox .statusarea{display:flex;flex-direction:column;align-items:center;width:10%}.innerbox .statusarea .statusunit{border-radius:30px;font-size:0;color:#fff;text-transform:capitalize;font-weight:500;width:20px;height:20px;text-align:center;line-height:20px}.innerbox .statusarea .statusunit:first-letter{font-size:.8rem}.innerbox .statusarea .statusunit.routestatus{right:10px}.innerbox .statusarea .statusunit.Ton{background:#39c471}.innerbox .statusarea .statusunit.Load{background:#326ad3}.innerbox .statusarea .statusunit.Hourly{background:#ffad56}.innerbox .statusarea .driver_icon,.innerbox .statusarea .infoicon{z-index:9999}.innerbox .statusarea .driver_icon img,.innerbox .statusarea .infoicon img{width:20px;height:20px}.innerbox .statusarea .driver_icon{margin:5px 0}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
59
+ }
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: JobCodeListCardComponent, decorators: [{
61
+ type: Component,
62
+ args: [{ selector: 'app-job-code-list-card', template: "<div class=\"innerbox\">\n <div class=\"inputarea\">\n <input type=\"checkbox\" name=\"selectroute\" [checked]=\"route['isSelected']\" (change)=\"$event ? selectRoute(route) : null\" />\n <label>&nbsp;</label>\n <div class=\"border\"></div>\n </div>\n <div class=\"job_intro\">\n <div class=\"heading\">\n <h2>\n {{route['order_number'] ? route['order_number'] : ''}}\n </h2>\n |\n <span>\n {{route['customer_name']}}\n </span>\n |\n <span>\n {{route['project']}}\n </span>\n </div>\n <div class=\"destinationprt\">\n <span style=\"padding-left: 0;\">\n {{route['pickup_location']}}\n </span>\n <b>></b>\n <span>\n {{route['delivery_location']}}\n </span>\n </div>\n <div class=\"mat_cat\">\n <span>\n {{route['material']}}\n </span>\n </div>\n\n <div class=\"statusbar\">\n <div class=\"status_percent\">\n <span class=\"done\" [style]=\"'width:'+calculateStatusPercentage('done',route['values'])+'%'\"></span>\n <span class=\"ongoing\" [style]=\"'width:'+calculateStatusPercentage('ongoing', route['values'])+'%'\"> </span>\n <span class=\"open\" [style]=\"'width:'+calculateStatusPercentage('open', route['values'])+'%'\"> </span>\n </div>\n </div>\n </div>\n <div class=\"statusarea\">\n <div class=\"statusunit\" [ngClass]=\"route['unit']\">{{route['unit']}}</div>\n <div class=\"driver_icon\" *ngIf=\"config.repository !== 'customer'\" (mouseover)=\"toggleDriverlist(true, route)\" (mouseout)=\"toggleDriverlist(false, route, true)\"\n mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"Click on icon to show the driver list\" matTooltipPosition=\"above\"\n (click)=\"toggleDriverlist('click', route)\">\n <img src=\"assets/images/driver_icon.png\" [alt]=\"\" />\n </div>\n <div class=\"infoicon\" (click)=\"setRouteItem()\" (mouseover)=\"toggleJobCodeDetails(true, route)\"\n (mouseout)=\"toggleJobCodeDetails(false, route)\">\n <img src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n </div>\n</div>\n", styles: [".innerbox{display:flex;justify-content:space-between}.innerbox .inputarea{display:flex;align-items:center}.innerbox .inputarea input[type=checkbox]{width:100%;height:100%;margin-right:10px;opacity:0;position:absolute;left:0;margin-left:0;top:0;z-index:3;cursor:pointer}.innerbox .inputarea label{width:100%;position:relative;z-index:2;font-size:12px;color:#878787;height:100%;position:absolute;top:0;left:0}.innerbox .inputarea .border{position:absolute;width:100%;height:100%;left:0;right:0;top:-1px;border-radius:15px}.innerbox .inputarea input:checked~.border{border-left:3px solid #39c471;border-right:1px solid #39c471;border-top:1px solid #39c471;border-bottom:1px solid #39c471}.innerbox .inputarea h2{margin-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:214px;padding-left:16px;margin-bottom:5px;margin-top:0}.innerbox .job_intro{width:90%}.innerbox .job_intro .heading{display:flex;font-size:.8rem}.innerbox .job_intro .heading h2{margin:0 4px 0 0;font-size:.8rem}.innerbox .job_intro .heading span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100px;padding:0 3px;display:block}.innerbox .job_intro .destinationprt{display:flex;margin-top:10px;font-size:.8rem}.innerbox .job_intro .destinationprt span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:132px;padding:0 5px;display:block}.innerbox .job_intro .mat_cat{margin-top:10px;font-size:.8rem}.innerbox .job_intro .statusbar{width:100%;position:relative;height:5px;margin-top:10px}.innerbox .job_intro .statusbar .status_percent{position:absolute;left:0;display:flex;width:100%;height:100%}.innerbox .job_intro .statusbar .status_percent span{display:block}.innerbox .job_intro .statusbar .status_percent .done{background:green}.innerbox .job_intro .statusbar .status_percent .ongoing{background:#fc0}.innerbox .job_intro .statusbar .status_percent .open{background:#bfbfbf}.innerbox .statusarea{display:flex;flex-direction:column;align-items:center;width:10%}.innerbox .statusarea .statusunit{border-radius:30px;font-size:0;color:#fff;text-transform:capitalize;font-weight:500;width:20px;height:20px;text-align:center;line-height:20px}.innerbox .statusarea .statusunit:first-letter{font-size:.8rem}.innerbox .statusarea .statusunit.routestatus{right:10px}.innerbox .statusarea .statusunit.Ton{background:#39c471}.innerbox .statusarea .statusunit.Load{background:#326ad3}.innerbox .statusarea .statusunit.Hourly{background:#ffad56}.innerbox .statusarea .driver_icon,.innerbox .statusarea .infoicon{z-index:9999}.innerbox .statusarea .driver_icon img,.innerbox .statusarea .infoicon img{width:20px;height:20px}.innerbox .statusarea .driver_icon{margin:5px 0}\n"] }]
63
+ }], ctorParameters: () => [{ type: i1.UtilsService }, { type: i1.CoolmapConfigModel, decorators: [{
64
+ type: Inject,
65
+ args: ['memberData']
66
+ }] }], propDecorators: { route: [{
67
+ type: Input
68
+ }], routeSeletion: [{
69
+ type: Output
70
+ }], toggleDrivermenu: [{
71
+ type: Output
72
+ }], emitJobdetails: [{
73
+ type: Input
74
+ }], preventCloseDetails: [{
75
+ type: Input
76
+ }] } });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLWNvZGUtbGlzdC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvcm91dGUtam9iY29kZS1saXN0L2pvYi1jb2RlLWxpc3QtY2FyZC9qb2ItY29kZS1saXN0LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29vbG1hcC9zcmMvbGliL2NvbXBvbmVudC9yb3V0ZS1qb2Jjb2RlLWxpc3Qvam9iLWNvZGUtbGlzdC1jYXJkL2pvYi1jb2RlLWxpc3QtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFRL0UsTUFBTSxPQUFPLHdCQUF3QjtJQU1oQjtJQUNZO0lBTmYsS0FBSyxDQUFTO0lBQ2IsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDbkMsZ0JBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUN2QyxjQUFjLENBQU07SUFDcEIsbUJBQW1CLENBQVc7SUFDOUMsWUFBbUIsS0FBbUIsRUFDUCxNQUEwQjtRQUR0QyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ1AsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7SUFBSSxDQUFDO0lBRTlELFdBQVcsQ0FBQyxLQUFZLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQzVELGdCQUFnQixDQUFDLGFBQStCLEVBQUUsS0FBWSxFQUFFLFVBQW9CO1FBQ2xGLE1BQU0sSUFBSSxHQUFHLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQTtRQUNqRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksYUFBYSxLQUFLLE9BQU87WUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxjQUF1QixFQUFFLEtBQVk7UUFDeEQsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7WUFBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFBQyxDQUFDO2FBQ3ZGLElBQUcsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFDLENBQUM7WUFDbkQsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ2pELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7WUFBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDckUsQ0FBQzthQUNHLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CO1lBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUNELHlCQUF5QixDQUFDLElBQVksRUFBRSxLQUFVO1FBQ2hELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFBO1FBQUMsQ0FBQzthQUNwRSxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQTtRQUFDLENBQUM7YUFDL0UsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7WUFBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFBQyxDQUFDO2FBQ3pFLENBQUM7WUFBQyxPQUFPLElBQUksQ0FBQTtRQUFDLENBQUM7SUFDdEIsQ0FBQztJQUNELFlBQVk7UUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO3dHQWpDVSx3QkFBd0IsOENBT3pCLFlBQVk7NEZBUFgsd0JBQXdCLDJQQ1JyQyx1bUVBd0RBOzs0RkRoRGEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHdCQUF3Qjs7MEJBVy9CLE1BQU07MkJBQUMsWUFBWTt5Q0FOTixLQUFLO3NCQUFwQixLQUFLO2dCQUNXLGFBQWE7c0JBQTdCLE1BQU07Z0JBQ1UsZ0JBQWdCO3NCQUFoQyxNQUFNO2dCQUNTLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsbUJBQW1CO3NCQUFsQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29vbG1hcENvbmZpZ01vZGVsLCBSb3V0ZSwgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnQGFnZ2RpcmVjdC9jb29sbWFwLXNlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWpvYi1jb2RlLWxpc3QtY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9qb2ItY29kZS1saXN0LWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9qb2ItY29kZS1saXN0LWNhcmQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBKb2JDb2RlTGlzdENhcmRDb21wb25lbnQge1xuICBASW5wdXQoKSBwdWJsaWMgcm91dGUhOiBSb3V0ZTtcbiAgQE91dHB1dCgpIHB1YmxpYyByb3V0ZVNlbGV0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIHRvZ2dsZURyaXZlcm1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIHB1YmxpYyBlbWl0Sm9iZGV0YWlsczogYW55O1xuICBASW5wdXQoKSBwdWJsaWMgcHJldmVudENsb3NlRGV0YWlscyE6IGJvb2xlYW47XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1dGlsczogVXRpbHNTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ21lbWJlckRhdGEnKSBwdWJsaWMgY29uZmlnOiBDb29sbWFwQ29uZmlnTW9kZWwpIHsgfVxuXG4gIHNlbGVjdFJvdXRlKHJvdXRlOiBSb3V0ZSkgeyB0aGlzLnJvdXRlU2VsZXRpb24uZW1pdChyb3V0ZSkgfVxuICB0b2dnbGVEcml2ZXJsaXN0KG1vdXNlZXZudFR5cGU6IGJvb2xlYW4gfCBzdHJpbmcsIHJvdXRlOiBSb3V0ZSwgaXNIb3Zlck91dD86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBkYXRhID0geyBtb3VzZWV2bnRUeXBlLCByb3V0ZSwgaXNIb3Zlck91dCB9XG4gICAgdGhpcy50b2dnbGVEcml2ZXJtZW51LmVtaXQoZGF0YSk7XG4gICAgaWYgKG1vdXNlZXZudFR5cGUgPT09ICdjbGljaycpIHRoaXMudXRpbHMuc2V0ZGljdFZhbHVlKCdkcml2ZXItZGV0YWlscycsIEpTT04uc3RyaW5naWZ5KHRoaXMucm91dGUpKTtcbiAgfVxuICB0b2dnbGVKb2JDb2RlRGV0YWlscyhtb3VzZUV2ZW50VHlwZTogYm9vbGVhbiwgcm91dGU6IFJvdXRlKSB7XG4gICAgaWYgKG1vdXNlRXZlbnRUeXBlKSB7IHJvdXRlWyd0eXBlJ10gPSAnam9iY29kZSc7IHRoaXMuZW1pdEpvYmRldGFpbHMuZW1pdHJvdXRlLmVtaXQocm91dGUpIH1cbiAgICBlbHNlIGlmKCFtb3VzZUV2ZW50VHlwZSAmJiB0aGlzLnByZXZlbnRDbG9zZURldGFpbHMpe1xuICAgICAgcm91dGUgPSB0aGlzLnV0aWxzLmdldGRpY3RWYWx1ZSgncm91dGUtZGV0YWlscycpO1xuICAgICAgcm91dGVbJ3R5cGUnXSA9ICdqb2Jjb2RlJzsgdGhpcy5lbWl0Sm9iZGV0YWlscy5lbWl0cm91dGUuZW1pdChyb3V0ZSlcbiAgICAgfVxuICAgIGVsc2UgaWYgKCFtb3VzZUV2ZW50VHlwZSAmJiAhdGhpcy5wcmV2ZW50Q2xvc2VEZXRhaWxzKSB0aGlzLmVtaXRKb2JkZXRhaWxzLmNsZWFySm9iRGV0YWlsc0Zyb21MaXN0LmVtaXQodHJ1ZSk7XG4gIH1cbiAgY2FsY3VsYXRlU3RhdHVzUGVyY2VudGFnZSh0eXBlOiBzdHJpbmcsIHJvdXRlOiBhbnkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHJvdXRlWydEb25lJ10gKyByb3V0ZVsnT25nb2luZyddICsgcm91dGVbJ09wZW4nXTtcbiAgICBpZiAodHlwZSA9PT0gJ2RvbmUnKSB7IHJldHVybiBNYXRoLnJvdW5kKCgxMDAgKiByb3V0ZVsnRG9uZSddKSAvIHRvdGFsKSB9XG4gICAgZWxzZSBpZiAodHlwZSA9PT0gJ29uZ29pbmcnKSB7IHJldHVybiBNYXRoLnJvdW5kKCgxMDAgKiByb3V0ZVsnT25nb2luZyddKSAvIHRvdGFsKSB9XG4gICAgZWxzZSBpZiAodHlwZSA9PT0gJ29wZW4nKSB7IHJldHVybiBNYXRoLnJvdW5kKCgxMDAgKiByb3V0ZVsnT3BlbiddKSAvIHRvdGFsKSB9XG4gICAgZWxzZSB7IHJldHVybiBudWxsIH1cbiAgfVxuICBzZXRSb3V0ZUl0ZW0oKXtcbiAgICB0aGlzLnV0aWxzLnByZVZlbnRKb2JkZXRhaWxjbG9zZS5uZXh0KHRydWUpO1xuICAgIHRoaXMudXRpbHMuc2V0ZGljdFZhbHVlKCdyb3V0ZS1kZXRhaWxzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5yb3V0ZSkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaW5uZXJib3hcIj5cbiAgPGRpdiBjbGFzcz1cImlucHV0YXJlYVwiPlxuICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwic2VsZWN0cm91dGVcIiBbY2hlY2tlZF09XCJyb3V0ZVsnaXNTZWxlY3RlZCddXCIgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3RSb3V0ZShyb3V0ZSkgOiBudWxsXCIgLz5cbiAgICA8bGFiZWw+Jm5ic3A7PC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyXCI+PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiam9iX2ludHJvXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5cbiAgICAgIDxoMj5cbiAgICAgICAge3tyb3V0ZVsnb3JkZXJfbnVtYmVyJ10gPyByb3V0ZVsnb3JkZXJfbnVtYmVyJ10gOiAnJ319XG4gICAgICA8L2gyPlxuICAgICAgfFxuICAgICAgPHNwYW4+XG4gICAgICAgIHt7cm91dGVbJ2N1c3RvbWVyX25hbWUnXX19XG4gICAgICA8L3NwYW4+XG4gICAgICB8XG4gICAgICA8c3Bhbj5cbiAgICAgICAge3tyb3V0ZVsncHJvamVjdCddfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZGVzdGluYXRpb25wcnRcIj5cbiAgICAgIDxzcGFuIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAwO1wiPlxuICAgICAgICB7e3JvdXRlWydwaWNrdXBfbG9jYXRpb24nXX19XG4gICAgICA8L3NwYW4+XG4gICAgICA8Yj4+PC9iPlxuICAgICAgPHNwYW4+XG4gICAgICAgIHt7cm91dGVbJ2RlbGl2ZXJ5X2xvY2F0aW9uJ119fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtYXRfY2F0XCI+XG4gICAgICA8c3Bhbj5cbiAgICAgICAge3tyb3V0ZVsnbWF0ZXJpYWwnXX19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwic3RhdHVzYmFyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzX3BlcmNlbnRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkb25lXCIgW3N0eWxlXT1cIid3aWR0aDonK2NhbGN1bGF0ZVN0YXR1c1BlcmNlbnRhZ2UoJ2RvbmUnLHJvdXRlWyd2YWx1ZXMnXSkrJyUnXCI+PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm9uZ29pbmdcIiBbc3R5bGVdPVwiJ3dpZHRoOicrY2FsY3VsYXRlU3RhdHVzUGVyY2VudGFnZSgnb25nb2luZycsIHJvdXRlWyd2YWx1ZXMnXSkrJyUnXCI+IDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJvcGVuXCIgW3N0eWxlXT1cIid3aWR0aDonK2NhbGN1bGF0ZVN0YXR1c1BlcmNlbnRhZ2UoJ29wZW4nLCByb3V0ZVsndmFsdWVzJ10pKyclJ1wiPiA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzdGF0dXNhcmVhXCI+XG4gICAgPGRpdiBjbGFzcz1cInN0YXR1c3VuaXRcIiBbbmdDbGFzc109XCJyb3V0ZVsndW5pdCddXCI+e3tyb3V0ZVsndW5pdCddfX08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZHJpdmVyX2ljb25cIiAqbmdJZj1cImNvbmZpZy5yZXBvc2l0b3J5ICE9PSAnY3VzdG9tZXInXCIgKG1vdXNlb3Zlcik9XCJ0b2dnbGVEcml2ZXJsaXN0KHRydWUsIHJvdXRlKVwiIChtb3VzZW91dCk9XCJ0b2dnbGVEcml2ZXJsaXN0KGZhbHNlLCByb3V0ZSwgdHJ1ZSlcIlxuICAgICAgbWF0LXJhaXNlZC1idXR0b24gI3Rvb2x0aXA9XCJtYXRUb29sdGlwXCIgbWF0VG9vbHRpcD1cIkNsaWNrIG9uIGljb24gdG8gc2hvdyB0aGUgZHJpdmVyIGxpc3RcIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlRHJpdmVybGlzdCgnY2xpY2snLCByb3V0ZSlcIj5cbiAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy9kcml2ZXJfaWNvbi5wbmdcIiBbYWx0XT1cIlwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImluZm9pY29uXCIgKGNsaWNrKT1cInNldFJvdXRlSXRlbSgpXCIgKG1vdXNlb3Zlcik9XCJ0b2dnbGVKb2JDb2RlRGV0YWlscyh0cnVlLCByb3V0ZSlcIlxuICAgICAgKG1vdXNlb3V0KT1cInRvZ2dsZUpvYkNvZGVEZXRhaWxzKGZhbHNlLCByb3V0ZSlcIj5cbiAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy9pbmZvX2ljb24ucG5nXCIgW2FsdF09XCJcIiAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19