@annalib/anna-core 20.3.0 → 20.3.2
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 +28 -24
- package/{esm2020 → esm2022}/annalib-anna-core.mjs +4 -4
- package/esm2022/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +12 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component.mjs +11 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component.mjs +11 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.mjs +46 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +12 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +22 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +11 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +20 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +12 -0
- package/esm2022/lib/anna-core-shared-lib/constants/shared.constant.mjs +47 -0
- package/esm2022/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.mjs +266 -0
- package/esm2022/lib/anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive.mjs +46 -0
- package/esm2022/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.mjs +41 -0
- package/esm2022/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +2 -0
- package/esm2022/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +2 -0
- package/esm2022/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +22 -0
- package/esm2022/lib/anna-core-shared-lib/models/anna-sort.model.mjs +7 -0
- package/{esm2020 → esm2022}/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +30 -30
- package/esm2022/lib/anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe.mjs +39 -0
- package/esm2022/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.mjs +27 -0
- package/esm2022/lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe.mjs +21 -0
- package/esm2022/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +53 -0
- package/esm2022/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.mjs +27 -0
- package/esm2022/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.mjs +17 -0
- package/esm2022/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +229 -0
- package/esm2022/lib/anna-core-shared-lib/services/anna-filter.service.mjs +1265 -0
- package/esm2022/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +149 -0
- package/esm2022/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +135 -0
- package/esm2022/lib/anna-core-shared-lib/services/anna-number-format.service.mjs +59 -0
- package/esm2022/lib/anna-core-shared-lib/services/anna-persisting-filter.service.mjs +64 -0
- package/esm2022/lib/anna-core-shared-lib/services/anna-sort.service.mjs +176 -0
- package/esm2022/lib/anna-core.module.mjs +222 -0
- package/esm2022/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +160 -0
- package/esm2022/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +359 -0
- package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component.mjs +256 -0
- package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component.mjs +186 -0
- package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component.mjs +316 -0
- package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component.mjs +295 -0
- package/esm2022/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +870 -0
- package/esm2022/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +68 -0
- package/esm2022/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +353 -0
- package/esm2022/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.mjs +204 -0
- package/{esm2020 → esm2022}/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.mjs +1 -1
- package/esm2022/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +186 -0
- package/{esm2020 → esm2022}/lib/anna-generic-table-lib/directives/anna-virtual-table/index.mjs +1 -1
- package/esm2022/public-api.mjs +59 -0
- package/fesm2022/annalib-anna-core.mjs +6111 -0
- package/fesm2022/annalib-anna-core.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.d.ts +5 -8
- package/lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component.d.ts +5 -8
- package/lib/anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component.d.ts +5 -0
- package/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.d.ts +15 -17
- package/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.d.ts +5 -8
- package/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.d.ts +11 -11
- package/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.d.ts +5 -8
- package/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.d.ts +9 -12
- package/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.d.ts +5 -8
- package/lib/anna-core-shared-lib/constants/shared.constant.d.ts +45 -41
- package/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.d.ts +34 -34
- package/lib/anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive.d.ts +16 -16
- package/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.d.ts +10 -10
- package/lib/anna-core-shared-lib/models/anna-generic-data-type.model.d.ts +16 -16
- package/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts +97 -97
- package/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts +128 -118
- package/lib/anna-core-shared-lib/models/anna-sort.model.d.ts +11 -11
- package/lib/anna-core-shared-lib/models/anna-tooltip.model.d.ts +25 -25
- package/lib/anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe.d.ts +9 -0
- package/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.d.ts +9 -9
- package/lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe.d.ts +7 -8
- package/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.d.ts +9 -9
- package/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.d.ts +9 -9
- package/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.d.ts +7 -7
- package/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +30 -28
- package/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +154 -154
- package/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +27 -27
- package/lib/anna-core-shared-lib/services/anna-global-config.service.d.ts +21 -21
- package/lib/anna-core-shared-lib/services/anna-number-format.service.d.ts +8 -8
- package/lib/anna-core-shared-lib/services/anna-persisting-filter.service.d.ts +8 -9
- package/lib/anna-core-shared-lib/services/anna-sort.service.d.ts +18 -18
- package/lib/anna-core.module.d.ts +45 -43
- package/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +45 -45
- package/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +70 -70
- package/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component.d.ts +60 -60
- package/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component.d.ts +53 -53
- package/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component.d.ts +65 -65
- package/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component.d.ts +83 -83
- package/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +175 -174
- package/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +17 -17
- package/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +141 -141
- package/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.d.ts +89 -89
- package/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.d.ts +1 -1
- package/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.d.ts +45 -45
- package/lib/anna-generic-table-lib/directives/anna-virtual-table/index.d.ts +1 -1
- package/package.json +13 -18
- package/public-api.d.ts +42 -41
- package/src/lib/anna-common-scss/_animate.scss +27 -27
- package/src/lib/anna-common-scss/_application-spacing.scss +7 -6
- package/src/lib/anna-common-scss/_bootstrap-tooltip.scss +27 -25
- package/src/lib/anna-common-scss/_button.scss +18 -18
- package/src/lib/anna-common-scss/_colors.scss +107 -107
- package/src/lib/anna-common-scss/_common-order-listing-table.scss +176 -165
- package/src/lib/anna-common-scss/_custom-anna-datepicker.scss +14 -14
- package/src/lib/anna-common-scss/_customDropdown.scss +123 -122
- package/src/lib/anna-common-scss/_dashboard-partials.scss +106 -104
- package/src/lib/anna-common-scss/_date-picker-form.scss +87 -87
- package/src/lib/anna-common-scss/_easy-filter.scss +138 -158
- package/src/lib/anna-common-scss/_edit-filter-popup.scss +70 -71
- package/src/lib/anna-common-scss/_filters.scss +724 -713
- package/src/lib/anna-common-scss/_font.scss +9 -10
- package/src/lib/anna-common-scss/_fonts.scss +86 -86
- package/src/lib/anna-common-scss/_generic-modal.scss +63 -59
- package/src/lib/anna-common-scss/_generic-table-common.scss +198 -203
- package/src/lib/anna-common-scss/_gt-table.scss +425 -434
- package/src/lib/anna-common-scss/_icons.scss +3 -0
- package/src/lib/anna-common-scss/_legend.scss +11 -11
- package/src/lib/anna-common-scss/_mat-button-toggle.scss +38 -38
- package/src/lib/anna-common-scss/_mat-menu.scss +17 -17
- package/src/lib/anna-common-scss/_mixins.scss +187 -188
- package/src/lib/anna-common-scss/_modal.scss +37 -37
- package/src/lib/anna-common-scss/_popup-filter-toggle-button.scss +36 -0
- package/src/lib/anna-common-scss/_scrollbar.scss +14 -14
- package/src/lib/anna-common-scss/_sort.scss +30 -30
- package/src/lib/anna-common-scss/_toggle.scss +86 -84
- package/src/lib/anna-common-scss/style.scss +1 -1
- package/src/lib/anna-common-scss/third-party-lib/_angular-material-mat-radio.scss +25 -21
- package/src/lib/anna-common-scss/third-party-lib/_anna-mat-button-toggle-group-size-lg.scss +34 -0
- package/src/lib/anna-common-scss/third-party-lib/_mat-autocomplete.scss +31 -28
- package/esm2020/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +0 -15
- package/esm2020/lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component.mjs +0 -14
- package/esm2020/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.mjs +0 -36
- package/esm2020/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +0 -15
- package/esm2020/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +0 -22
- package/esm2020/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +0 -14
- package/esm2020/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +0 -23
- package/esm2020/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +0 -15
- package/esm2020/lib/anna-core-shared-lib/constants/shared.constant.mjs +0 -43
- package/esm2020/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.mjs +0 -284
- package/esm2020/lib/anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive.mjs +0 -43
- package/esm2020/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.mjs +0 -36
- package/esm2020/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +0 -2
- package/esm2020/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +0 -2
- package/esm2020/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +0 -11
- package/esm2020/lib/anna-core-shared-lib/models/anna-sort.model.mjs +0 -7
- package/esm2020/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.mjs +0 -26
- package/esm2020/lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe.mjs +0 -22
- package/esm2020/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +0 -53
- package/esm2020/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.mjs +0 -25
- package/esm2020/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.mjs +0 -16
- package/esm2020/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +0 -208
- package/esm2020/lib/anna-core-shared-lib/services/anna-filter.service.mjs +0 -1145
- package/esm2020/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +0 -151
- package/esm2020/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +0 -132
- package/esm2020/lib/anna-core-shared-lib/services/anna-number-format.service.mjs +0 -53
- package/esm2020/lib/anna-core-shared-lib/services/anna-persisting-filter.service.mjs +0 -66
- package/esm2020/lib/anna-core-shared-lib/services/anna-sort.service.mjs +0 -175
- package/esm2020/lib/anna-core.module.mjs +0 -213
- package/esm2020/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +0 -151
- package/esm2020/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +0 -364
- package/esm2020/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component.mjs +0 -237
- package/esm2020/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component.mjs +0 -180
- package/esm2020/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component.mjs +0 -306
- package/esm2020/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component.mjs +0 -291
- package/esm2020/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +0 -781
- package/esm2020/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +0 -64
- package/esm2020/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +0 -357
- package/esm2020/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.mjs +0 -189
- package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +0 -178
- package/esm2020/public-api.mjs +0 -57
- package/fesm2015/annalib-anna-core.mjs +0 -5782
- package/fesm2015/annalib-anna-core.mjs.map +0 -1
- package/fesm2020/annalib-anna-core.mjs +0 -5774
- package/fesm2020/annalib-anna-core.mjs.map +0 -1
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import { NgClass, NgFor, NgIf } from "@angular/common";
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from "@angular/core";
|
|
3
|
+
import { FormsModule } from "@angular/forms";
|
|
4
|
+
import { MatButtonToggleModule } from "@angular/material/button-toggle";
|
|
5
|
+
import { cloneDeep, isEqual } from "lodash-es";
|
|
6
|
+
import { AnnaDateTimeFormatService } from "../../../../anna-core-shared-lib/services/anna-date-time-format.service";
|
|
7
|
+
import { AnnaFilterService } from "../../../../anna-core-shared-lib/services/anna-filter.service";
|
|
8
|
+
import { AnnaSortService } from "../../../../anna-core-shared-lib/services/anna-sort.service";
|
|
9
|
+
import { AnnaSortComponent } from "../../anna-sort/anna-sort.component";
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "../../../../anna-core-shared-lib/services/anna-sort.service";
|
|
12
|
+
import * as i2 from "../../../../anna-core-shared-lib/services/anna-date-time-format.service";
|
|
13
|
+
import * as i3 from "../../../../anna-core-shared-lib/services/anna-filter.service";
|
|
14
|
+
import * as i4 from "@angular/forms";
|
|
15
|
+
import * as i5 from "@angular/material/button-toggle";
|
|
16
|
+
export class AnnaColumnTimeFilterComponent {
|
|
17
|
+
constructor(annaSortService, annaDateTimeFormatService, annaFilterService) {
|
|
18
|
+
this.annaSortService = annaSortService;
|
|
19
|
+
this.annaDateTimeFormatService = annaDateTimeFormatService;
|
|
20
|
+
this.annaFilterService = annaFilterService;
|
|
21
|
+
this.showClearAllFilter = true;
|
|
22
|
+
this.startFromText = "From";
|
|
23
|
+
this.endToText = "To";
|
|
24
|
+
this.isSortAndFilterAbsent = false;
|
|
25
|
+
this.timeChanges = new EventEmitter();
|
|
26
|
+
this.filterAppliedToTable = new EventEmitter();
|
|
27
|
+
this.sortingAppliedToTable = new EventEmitter();
|
|
28
|
+
this.getSortType = new EventEmitter();
|
|
29
|
+
this.closeTooltip = new EventEmitter();
|
|
30
|
+
this.tempSortOrder = null;
|
|
31
|
+
this.showSortComponent = false;
|
|
32
|
+
this.showFilterComponent = false;
|
|
33
|
+
this.disableColumnClearAllBtn = true;
|
|
34
|
+
this.tableColumns = [];
|
|
35
|
+
this.totalRowColumns = null;
|
|
36
|
+
}
|
|
37
|
+
ngOnInit() {
|
|
38
|
+
this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);
|
|
39
|
+
}
|
|
40
|
+
populateTooltipDataBasedOnSelectedRadio(activeTab, reload) {
|
|
41
|
+
const header = activeTab.key;
|
|
42
|
+
this.showSortComponent = activeTab.isSortRequired;
|
|
43
|
+
this.showFilterComponent = activeTab.isFilterRequired;
|
|
44
|
+
this.tempSortOrder = null;
|
|
45
|
+
this.isFilterChanged = false;
|
|
46
|
+
this.isSortChanged = false;
|
|
47
|
+
this.annaFilterService.selectedRadio = header;
|
|
48
|
+
this.disableColumnClearAllBtn = this.annaFilterService.disableActiveFilterClearButton();
|
|
49
|
+
if (reload) {
|
|
50
|
+
setTimeout(() => {
|
|
51
|
+
this.createFilterTooltipData(activeTab, header);
|
|
52
|
+
}, 100);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this.createFilterTooltipData(activeTab, header);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
createFilterTooltipData(activeTab, header) {
|
|
59
|
+
this.showSortComponent = activeTab.isSortRequired;
|
|
60
|
+
this.showFilterComponent = activeTab.isFilterRequired;
|
|
61
|
+
this.disableTimeFilterApplyBtn = true;
|
|
62
|
+
if (this.showFilterComponent) {
|
|
63
|
+
this.getTimeFilterData(header);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
getTimeFilterData(header) {
|
|
67
|
+
this.startTimeHourErr = false;
|
|
68
|
+
this.startTimeMinErr = false;
|
|
69
|
+
this.endTimeHourErr = false;
|
|
70
|
+
this.endTimeMinErr = false;
|
|
71
|
+
if (this.isSortAndFilterAbsent) {
|
|
72
|
+
this.selectedFromTime = this.clonedTableData[0].time;
|
|
73
|
+
this.selectedToTime = this.clonedTableData[1].time;
|
|
74
|
+
this.selectedFromTime = AnnaDateTimeFormatService.formatToTwelveHrs(this.selectedFromTime, true);
|
|
75
|
+
this.selectedToTime = AnnaDateTimeFormatService.formatToTwelveHrs(this.selectedToTime, true);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
[this.selectedFromTime, this.selectedToTime] = this.annaFilterService.getSelectedTimeRange(header, this.clonedTableData);
|
|
79
|
+
}
|
|
80
|
+
this.clonedSelectedFromTime = cloneDeep(this.selectedFromTime);
|
|
81
|
+
this.clonedSelectedToTime = cloneDeep(this.selectedToTime);
|
|
82
|
+
const optionsData = this.annaFilterService?.getFilterOptionsData(this.tableData, this.clonedTableData);
|
|
83
|
+
const checkedSelectedObj = this.annaFilterService?.selectUnselectTimeFilterCheckbox(header, optionsData);
|
|
84
|
+
this.showMultiTimeCheckbox = checkedSelectedObj.showMultiTimeCheckbox;
|
|
85
|
+
this.showZeroTimeCheckbox = checkedSelectedObj.showZeroTimeCheckbox;
|
|
86
|
+
this.showEnterTimeCheckbox = checkedSelectedObj.showEnterTimeCheckbox;
|
|
87
|
+
this.multiTimeCheckboxChecked = checkedSelectedObj.multiTimeCheckboxChecked;
|
|
88
|
+
this.zeroTimeCheckboxChecked = checkedSelectedObj.zeroTimeCheckboxChecked;
|
|
89
|
+
this.enterTimeCheckboxChecked = checkedSelectedObj.enterTimeCheckboxChecked;
|
|
90
|
+
}
|
|
91
|
+
selectOrUnselectMultiTimeCheckbox() {
|
|
92
|
+
this.multiTimeCheckboxChecked = !this.multiTimeCheckboxChecked;
|
|
93
|
+
this.disableTimeFilterApplyButton();
|
|
94
|
+
}
|
|
95
|
+
selectOrUnselectZeroTimeCheckbox() {
|
|
96
|
+
this.zeroTimeCheckboxChecked = !this.zeroTimeCheckboxChecked;
|
|
97
|
+
this.disableTimeFilterApplyButton();
|
|
98
|
+
}
|
|
99
|
+
selectOrUnselectEnterTimeCheckbox() {
|
|
100
|
+
this.enterTimeCheckboxChecked = !this.enterTimeCheckboxChecked;
|
|
101
|
+
this.disableTimeFilterApplyButton();
|
|
102
|
+
}
|
|
103
|
+
checkIfTimeTooltipIsFiltered() {
|
|
104
|
+
const previousSelectedTimeFilter = this.annaFilterService.getPreviousSelectedTimeFilter();
|
|
105
|
+
const currentSelectedTimeFilter = this.annaFilterService.getCurrentSelectedTimeFilter(this.selectedFromTime, this.selectedToTime, this.multiTimeCheckboxChecked, this.zeroTimeCheckboxChecked, this.enterTimeCheckboxChecked);
|
|
106
|
+
this.isFilterChanged = !isEqual(previousSelectedTimeFilter, currentSelectedTimeFilter);
|
|
107
|
+
return this.isFilterChanged;
|
|
108
|
+
}
|
|
109
|
+
checkIfInvalidTimeIsEntered() {
|
|
110
|
+
if (this.startTimeHourErr || this.startTimeMinErr || this.endTimeHourErr || this.endTimeMinErr) {
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
disableTimeFilterApplyButton() {
|
|
116
|
+
if (this.isSortAndFilterAbsent) {
|
|
117
|
+
this.disableTimeFilterApplyBtn = this.checkIfInvalidTimeIsEntered() || !this.checkIfTimeTooltipIsFiltered();
|
|
118
|
+
}
|
|
119
|
+
else if (this.showFilterComponent && this.showSortComponent) {
|
|
120
|
+
const isFilterChanged = this.checkIfTimeTooltipIsFiltered();
|
|
121
|
+
const isSortChanged = this.checkIfSortingChanged();
|
|
122
|
+
this.disableTimeFilterApplyBtn = !this.validateTimeFilterInput() || (!isSortChanged && !isFilterChanged);
|
|
123
|
+
}
|
|
124
|
+
else if (this.showFilterComponent) {
|
|
125
|
+
this.disableTimeFilterApplyBtn = !this.validateTimeFilterInput() || !this.checkIfTimeTooltipIsFiltered();
|
|
126
|
+
}
|
|
127
|
+
else if (this.showSortComponent) {
|
|
128
|
+
this.disableTimeFilterApplyBtn = !this.checkIfSortingChanged();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
checkIfSortingChanged() {
|
|
132
|
+
this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);
|
|
133
|
+
return this.isSortChanged;
|
|
134
|
+
}
|
|
135
|
+
validateTimeFilterInput() {
|
|
136
|
+
if (this.startTimeHourErr || this.startTimeMinErr || this.endTimeHourErr || this.endTimeMinErr) {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
if (this.showMultiTimeCheckbox &&
|
|
140
|
+
!this.multiTimeCheckboxChecked &&
|
|
141
|
+
this.showZeroTimeCheckbox &&
|
|
142
|
+
!this.zeroTimeCheckboxChecked &&
|
|
143
|
+
this.showEnterTimeCheckbox &&
|
|
144
|
+
!this.enterTimeCheckboxChecked) {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
return !this.annaFilterService.checkIfStartTimeIsAfterEndTime(this.selectedFromTime, this.selectedToTime);
|
|
148
|
+
}
|
|
149
|
+
applyTimeFilters() {
|
|
150
|
+
if (this.isSortAndFilterAbsent) {
|
|
151
|
+
const timeSelected = [this.selectedFromTime, this.selectedToTime];
|
|
152
|
+
this.timeChanges.emit(timeSelected);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
this.applyTimeFilterOnData();
|
|
156
|
+
this.applySortingOnFilteredData();
|
|
157
|
+
this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);
|
|
158
|
+
this.emitData();
|
|
159
|
+
}
|
|
160
|
+
this.closeTooltip.emit();
|
|
161
|
+
}
|
|
162
|
+
emitData() {
|
|
163
|
+
if (this.isFilterChanged && this.isSortChanged) {
|
|
164
|
+
this.filterAppliedToTable.emit(this.tableData);
|
|
165
|
+
}
|
|
166
|
+
else if (this.isFilterChanged) {
|
|
167
|
+
this.filterAppliedToTable.emit(this.tableData);
|
|
168
|
+
}
|
|
169
|
+
else if (this.isSortChanged) {
|
|
170
|
+
this.getSortType.emit(this.tempSortOrder);
|
|
171
|
+
this.sortingAppliedToTable.emit(this.tableData);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
changeStartTimeHour(increment) {
|
|
175
|
+
if (!this.startTimeHourErr) {
|
|
176
|
+
this.annaFilterService.incrementOrDecrementHour(increment, this.selectedFromTime);
|
|
177
|
+
this.startTimeHourChange(this.selectedFromTime[0].toString());
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
changeEndTimeHour(increment) {
|
|
181
|
+
if (!this.endTimeHourErr) {
|
|
182
|
+
this.annaFilterService.incrementOrDecrementHour(increment, this.selectedToTime);
|
|
183
|
+
this.endTimeHourChange(this.selectedToTime[0].toString());
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
changeEndTimeMinute(increment) {
|
|
187
|
+
if (!this.endTimeMinErr) {
|
|
188
|
+
this.annaFilterService.incrementOrDecrementMin(increment, this.selectedToTime);
|
|
189
|
+
this.endTimeMinChange(this.selectedToTime[1].toString());
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
changeStartTimeMinute(increment) {
|
|
193
|
+
if (!this.startTimeMinErr) {
|
|
194
|
+
this.annaFilterService.incrementOrDecrementMin(increment, this.selectedFromTime);
|
|
195
|
+
this.startTimeMinChange(this.selectedFromTime[1].toString());
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
startTimeHourChange(val) {
|
|
199
|
+
this.startTimeHourErr = this.annaFilterService.isHourValueInvalid(val);
|
|
200
|
+
this.disableTimeFilterApplyButton();
|
|
201
|
+
}
|
|
202
|
+
startTimeMinChange(val) {
|
|
203
|
+
this.startTimeMinErr = this.annaFilterService.isMinuteValueInvalid(val);
|
|
204
|
+
this.disableTimeFilterApplyButton();
|
|
205
|
+
}
|
|
206
|
+
endTimeHourChange(val) {
|
|
207
|
+
this.endTimeHourErr = this.annaFilterService.isHourValueInvalid(val);
|
|
208
|
+
this.disableTimeFilterApplyButton();
|
|
209
|
+
}
|
|
210
|
+
endTimeMinChange(val) {
|
|
211
|
+
this.endTimeMinErr = this.annaFilterService.isMinuteValueInvalid(val);
|
|
212
|
+
this.disableTimeFilterApplyButton();
|
|
213
|
+
}
|
|
214
|
+
applySortingOnFilteredData() {
|
|
215
|
+
if (this.showSortComponent) {
|
|
216
|
+
if (this.isSortChanged) {
|
|
217
|
+
this.tableData = this.annaFilterService.updateSortMap(this.tempSortOrder, this.tableData, this.isLurAndCsrComponent);
|
|
218
|
+
}
|
|
219
|
+
else if (this.isFilterChanged) {
|
|
220
|
+
this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
else if (this.isFilterChanged) {
|
|
224
|
+
this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
applyTimeFilterOnData() {
|
|
228
|
+
if (this.showFilterComponent && this.isFilterChanged) {
|
|
229
|
+
const currentSelectedTimeFilter = this.annaFilterService.getCurrentSelectedTimeFilter(this.selectedFromTime, this.selectedToTime, this.multiTimeCheckboxChecked, this.zeroTimeCheckboxChecked, this.enterTimeCheckboxChecked);
|
|
230
|
+
const isFiltered = this.annaFilterService.reOrderAppliedFiltersState(this.clonedTableData, currentSelectedTimeFilter);
|
|
231
|
+
this.annaFilterService.tooltipSelectedMap.set(this.annaFilterService.selectedRadio, currentSelectedTimeFilter);
|
|
232
|
+
this.tableData = this.annaFilterService.filterData(this.clonedTableData, "");
|
|
233
|
+
if (!isFiltered) {
|
|
234
|
+
this.annaFilterService.tooltipSelectedMap.delete(this.annaFilterService.selectedRadio);
|
|
235
|
+
}
|
|
236
|
+
this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
closeTimeFilter() {
|
|
240
|
+
this.selectedFromTime = cloneDeep(this.clonedSelectedFromTime);
|
|
241
|
+
this.selectedToTime = cloneDeep(this.clonedSelectedToTime);
|
|
242
|
+
this.closeTooltip.emit();
|
|
243
|
+
}
|
|
244
|
+
clearColumnFilter() {
|
|
245
|
+
this.annaFilterService.clearColumnFilter();
|
|
246
|
+
this.tableData = cloneDeep(this.annaFilterService.filterData(this.clonedTableData, ""));
|
|
247
|
+
this.annaSortService.noSortingAppliedData = this.tableData;
|
|
248
|
+
this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);
|
|
249
|
+
this.annaFilterService.updateStateOfTheCurrentFilterTab(this.annaSortService.columnSortState);
|
|
250
|
+
this.filterAppliedToTable.emit(this.tableData);
|
|
251
|
+
}
|
|
252
|
+
storeSortTypeInTempVariable(event) {
|
|
253
|
+
this.tempSortOrder = event;
|
|
254
|
+
this.disableTimeFilterApplyButton();
|
|
255
|
+
}
|
|
256
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AnnaColumnTimeFilterComponent, deps: [{ token: i1.AnnaSortService }, { token: i2.AnnaDateTimeFormatService }, { token: i3.AnnaFilterService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
257
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AnnaColumnTimeFilterComponent, isStandalone: true, selector: "anna-core-anna-column-time-filter", inputs: { tableData: "tableData", clonedTableData: "clonedTableData", filterTabObjects: "filterTabObjects", showFilterHeaderTabs: "showFilterHeaderTabs", showAllTimeRangeCheckboxes: "showAllTimeRangeCheckboxes", isLurAndCsrComponent: "isLurAndCsrComponent", gtGeneralConfig: "gtGeneralConfig", showClearAllFilter: "showClearAllFilter", startFromText: "startFromText", endToText: "endToText", isSortAndFilterAbsent: "isSortAndFilterAbsent" }, outputs: { timeChanges: "timeChanges", filterAppliedToTable: "filterAppliedToTable", sortingAppliedToTable: "sortingAppliedToTable", getSortType: "getSortType", closeTooltip: "closeTooltip" }, ngImport: i0, template: "<div\n class=\"radio-container\"\n *ngIf=\"showFilterHeaderTabs\"\n>\n <div *ngFor=\"let data of filterTabObjects\">\n <p\n class=\"filter-tab\"\n [title]=\"data.label\"\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\"\n [ngClass]=\"{ active: annaFilterService.selectedRadio === data.key }\"\n *ngIf=\"filterTabObjects.length > 0\"\n >\n {{ data.label }}\n </p>\n </div>\n</div>\n\n<anna-core-sort-lib\n *ngIf=\"showSortComponent\"\n [ngClass]=\"{ 'no-bottom-border': !showFilterComponent }\"\n (sortOptionClicked)=\"storeSortTypeInTempVariable($event)\"\n [sortObjectKey]=\"annaFilterService.selectedRadio\"\n></anna-core-sort-lib>\n\n<ng-container *ngIf=\"showFilterComponent\">\n <button\n class=\"column-clear-all\"\n *ngIf=\"showClearAllFilter\"\n [disabled]=\"disableColumnClearAllBtn\"\n (click)=\"clearColumnFilter()\"\n >\n Clear filter\n </button>\n <div\n class=\"time-filter-checkboxes\"\n *ngIf=\"showAllTimeRangeCheckboxes\"\n >\n <!-- Multi time option checkbox -->\n <div\n class=\"d-flex align-items-center checkbox-container-padding\"\n *ngIf=\"showMultiTimeCheckbox\"\n >\n <span\n *ngIf=\"multiTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-checked\"\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\n >\n check_box\n </span>\n <span\n *ngIf=\"!multiTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-unchecked\"\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\n >\n check_box_outline_blank\n </span>\n <p class=\"label\">Include Multi</p>\n </div>\n <!-- Zero time option checkbox -->\n <div\n class=\"d-flex align-items-center checkbox-container-padding\"\n *ngIf=\"showZeroTimeCheckbox\"\n >\n <span\n *ngIf=\"zeroTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-checked\"\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\n >\n check_box\n </span>\n <span\n *ngIf=\"!zeroTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-unchecked\"\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\n >\n check_box_outline_blank\n </span>\n <p class=\"label\">Include Zero</p>\n </div>\n <!-- Enter time range option checkbox -->\n <div\n class=\"d-flex align-items-center checkbox-container-padding\"\n *ngIf=\"showEnterTimeCheckbox\"\n >\n <span\n *ngIf=\"enterTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-checked\"\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\n >\n check_box\n </span>\n <span\n *ngIf=\"!enterTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-unchecked\"\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\n >\n check_box_outline_blank\n </span>\n <p class=\"label\">Enter time range</p>\n </div>\n </div>\n <div class=\"time-label-container\">\n <label>{{ startFromText }}</label>\n </div>\n <div class=\"time-container\">\n <input\n class=\"form-control numberInput\"\n [ngClass]=\"{ 'error-border': startTimeHourErr }\"\n [(ngModel)]=\"selectedFromTime[0]\"\n type=\"text\"\n pattern=\"[1-12]*\"\n (ngModelChange)=\"startTimeHourChange($event)\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeStartTimeHour(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n (click)=\"changeStartTimeHour(false)\"\n ></i>\n </div>\n <span class=\"dot\">:</span>\n <input\n class=\"form-control numberInput\"\n [ngClass]=\"{ 'error-border': startTimeMinErr }\"\n [(ngModel)]=\"selectedFromTime[1]\"\n type=\"text\"\n pattern=\"[0-59]*\"\n (ngModelChange)=\"startTimeMinChange($event)\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeStartTimeMinute(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n (click)=\"changeStartTimeMinute(false)\"\n ></i>\n </div>\n <div>\n <mat-button-toggle-group\n [(ngModel)]=\"selectedFromTime[2]\"\n (ngModelChange)=\"disableTimeFilterApplyButton()\"\n >\n <mat-button-toggle value=\"AM\">\n <span>AM</span>\n </mat-button-toggle>\n <mat-button-toggle value=\"PM\">\n <span>PM</span>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n </div>\n\n <div class=\"time-label-container\">\n <label>{{ endToText }}</label>\n </div>\n <div class=\"time-container\">\n <input\n class=\"form-control numberInput\"\n [(ngModel)]=\"selectedToTime[0]\"\n [ngClass]=\"{ 'error-border': endTimeHourErr }\"\n (ngModelChange)=\"endTimeHourChange($event)\"\n type=\"text\"\n pattern=\"[1-12]*\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeEndTimeHour(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n (click)=\"changeEndTimeHour(false)\"\n ></i>\n </div>\n <span class=\"dot\">:</span>\n <input\n class=\"form-control numberInput\"\n [ngClass]=\"{ 'error-border': endTimeMinErr }\"\n [(ngModel)]=\"selectedToTime[1]\"\n (ngModelChange)=\"endTimeMinChange($event)\"\n type=\"text\"\n pattern=\"[0-59]*\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeEndTimeMinute(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n (click)=\"changeEndTimeMinute(false)\"\n ></i>\n </div>\n <div>\n <mat-button-toggle-group\n [(ngModel)]=\"selectedToTime[2]\"\n (ngModelChange)=\"disableTimeFilterApplyButton()\"\n >\n <mat-button-toggle value=\"AM\">\n <span>AM</span>\n </mat-button-toggle>\n <mat-button-toggle value=\"PM\">\n <span>PM</span>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n </div>\n</ng-container>\n\n<div class=\"buttons-container\">\n <button\n class=\"button\"\n (click)=\"closeTimeFilter()\"\n >\n Cancel\n </button>\n <button\n class=\"button\"\n [ngClass]=\"{ disabled: disableTimeFilterApplyBtn }\"\n (click)=\"applyTimeFilters()\"\n [disabled]=\"disableTimeFilterApplyBtn\"\n >\n Apply\n </button>\n</div>\n", styles: [":host ::ng-deep .mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:30px;width:42px;padding:0 10px}:host ::ng-deep .mat-button-toggle-checked{background-color:#268bff;color:#fff!important}:host ::ng-deep .mat-button-toggle-group-appearance-standard{border-radius:0;border:none!important}::ng-deep .mat-button-toggle-disabled.mat-button-toggle-checked{background:#bdbdbd!important}::ng-deep .mat-button-toggle-disabled.mat-button-toggle-checked button{color:#fff;opacity:1}::ng-deep .mat-button-toggle-appearance-standard{opacity:.5;border:solid 1px #b3b3b3}::ng-deep .mat-button-toggle-appearance-standard button{opacity:1}::ng-deep .mat-button-toggle-appearance-standard.mat-button-toggle-checked{opacity:1}.sort-btn{background:#fff;border:none;border-right:1px solid #1b88ff;text-decoration:underline;font-family:Roboto;font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.07;letter-spacing:normal;color:#1b88ff;cursor:pointer;flex:1;text-align:center}.sort-btn:last-of-type{border-right:none}.sort-btn.active{color:#202b47;text-decoration:none}p.sort-container{margin-top:8px;padding-bottom:8px;border-bottom:1px solid #e6e6e6;margin-bottom:0;display:flex}::ng-deep .tooltip-inner{max-height:22rem;background-color:#fff;border:1px solid white;border-radius:5px;box-shadow:0 2px 2px #0000003d,0 0 2px #0000001f;max-width:251px;width:100%;padding:0!important}::ng-deep .tooltip-inner div.radio-container{flex-wrap:wrap}::ng-deep .md-drppicker{box-shadow:unset!important}::ng-deep .available{color:#999}::ng-deep .bs-tooltip-bottom .arrow:before{border-bottom-color:#fff!important}::ng-deep .bs-tooltip-left .arrow:before{border-left-color:#fff!important}::ng-deep .tooltip.show{opacity:1}.input{text-align:left;margin:5px 10px 5px 5px;display:flex;align-items:center;width:230px;white-space:nowrap}.data{color:#000;font-weight:700;margin-left:5px;margin-right:5px}span.data{display:inline-block;text-overflow:ellipsis;white-space:pre;width:100%;overflow:hidden}.check-box{font-size:14px;cursor:pointer;position:relative;top:-1px}span.mdi-filter.active{color:#000;opacity:1!important;pointer-events:all!important}p{margin-bottom:0;line-height:initial}span.mdi-filter{color:#cbcbcb}::ng-deep .ngx-slider-pointer{top:-5px!important;width:12px!important;height:12px!important;background:#bdbdbd!important;border:1px solid #ffffff!important;box-shadow:0 1px 3px #0000004d!important;border-radius:16px!important}input:focus{outline:none}input::placeholder{color:#c8c8c8}.cancel-btn{background:#c7e1ff;color:#268bff}.apply-btn{background:#268bff;color:#fff;margin-left:.3125rem}div.radio-container{display:flex;white-space:nowrap;justify-content:space-between;background-color:#f4f4f4;border-radius:.125rem;margin:.4375rem .4375rem .25rem}div.radio-container div{flex:1;width:50%}div.radio-container div.full-width{width:100%}div.radio-container input{position:relative;top:.125rem;margin-right:.25rem}div.radio-container label{font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.29;letter-spacing:0;color:#4a4a4a;margin:0;padding-left:.125rem}div.radio-container label:first-of-type{margin-right:.188rem}div.radio-container input[type=radio]{appearance:none;display:inline-block;width:.9375rem;height:.9375rem;padding:.125rem;background-clip:content-box;border:.125rem solid #268bff;background-color:transparent;border-radius:50%}div.radio-container input[type=radio]:checked{background-color:#268bff}.checkbox-filter-buttons-container{padding:0 8px!important}.buttons-container{display:flex;margin:0px auto .4375rem;justify-content:center;padding:0 12px}.buttons-container .button{padding:0 10px;width:100%;margin:8px 0 0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.buttons-container button:last-of-type{background-color:#268bff;color:#fff;margin-left:.5rem}.buttons-container button.disabled{background:#bdbdbd;opacity:.5;color:#4a4a4a}.button{display:inline-block;margin:8px 4px 0 8px;padding:0 16px;border-radius:4px;text-align:center;outline:none;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.67;letter-spacing:normal;border:none;color:#268bff;background-color:#e5f1ff}.search-box{display:flex;align-items:center;color:#c8c8c8;border:1px solid #e6e6e6;border-radius:.125rem;margin:.25rem .4375rem .188rem;height:1.5rem;padding:.188rem 8px .188rem .5rem}.search-box .search-bar-close{margin-left:auto;float:right}.search-icon{margin:0 4px 0 0;font-size:1.125rem;color:#9b9b9b}.filter-icon{justify-content:right;margin-left:auto;color:#d4d4d4;color:#a1a1a1;font-size:16px;cursor:pointer}.data{margin:0 13px 0 8px;font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.86;letter-spacing:\"\";color:#4a4a4a}.search-input{font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;color:#c8c8c8;width:calc(100% - 38px);margin:1px 0 1px 2px;border:none;padding:0}.check-box{color:#268bff}.tooltip-data-container{overflow-y:scroll;max-height:8rem}.searchbar{width:100%;display:flex;justify-content:flex-end;align-items:flex-end}.clear-button{opacity:.5;font-family:Roboto;font-size:.9375rem;font-weight:500;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;text-decoration:underline;border:none;background-color:#fff;color:#4a4a4a;margin-left:.625rem;padding:0}.clear-button:focus{outline:none;box-shadow:none}.unchecked{color:#268bff}cdk-virtual-scroll-viewport.dropdown-data-container{max-height:12.3rem;width:100%;overflow-y:auto;overflow-x:hidden}cdk-virtual-scroll-viewport.dropdown-data-container p.input{margin-left:0}cdk-virtual-scroll-viewport.dropdown-data-container p.input span.mi{padding-left:.4375rem}cdk-virtual-scroll-viewport.dropdown-data-container p.input:hover{background-color:#ebebeb;cursor:pointer}cdk-virtual-scroll-viewport.dropdown-data-container::-webkit-scrollbar{width:.188rem}cdk-virtual-scroll-viewport.dropdown-data-container::-webkit-scrollbar-thumb{color:#d3d3d3;background:#d3d3d3}section.min-maxContainer{display:flex;justify-content:center;margin-bottom:-.125rem;margin-top:.5rem;width:100%}section.min-maxContainer input{width:30%;height:1.875rem;border:1px solid lightgray;color:gray}section.min-maxContainer span{display:inline-block;padding-left:.5rem;padding-right:.5rem;position:relative;top:.3125rem;color:#666}.time-container{width:100%;display:flex;padding:0 .75rem}.time-container input.form-control:disabled{background-color:#fff;width:2.813rem}.time-container input.numberInput:focus{box-shadow:none;border-color:#c2cfd6}.time-container .dot{color:#cbcbcb;position:relative;left:-7px;font-size:17px}.time-container div.arrow-container{flex-direction:column;display:flex;margin-top:.375rem;width:9px;height:18px;margin-right:1.1875rem}.time-container div.arrow-container i{color:#000;cursor:pointer;max-height:9px;font-size:25px;width:10px}.time-container div.arrow-container i:before{width:0;height:0;pointer-events:none;position:relative;left:-9px;top:-11px}.mdi-filter{cursor:pointer}.time-label-container{display:flex;justify-content:flex-start}.time-label-container label{margin-bottom:0;color:#4a4a4a;margin-top:.125rem;margin-left:.75rem;font-weight:700}.time-heading{color:#000;font-size:.8125rem;text-align:left;padding-left:.625rem;margin-top:.625rem;font-weight:700}.column-clear-all{width:94%;text-align:center;border:none;font-size:14px;background:none;text-decoration:underline;color:#268bff}.checkbox-container{display:flex;padding-inline:.625rem}.checkbox-container .data{text-align:left}.checkbox-container:first-of-type{margin-top:.625rem;font-weight:500}.column-clear-all{width:94%;text-align:center;border:none;background:none;text-decoration:underline;color:#268bff}.column-clear-all:disabled{opacity:.5;color:#4a4a4a;font-weight:400}.column-clear-all.align-center{text-align:center}span.mdi-filter-variant.disabled{pointer-events:none;opacity:.5}.datepicker-container{width:100%}span.mdi-filter-variant{color:#cbcbcb;cursor:pointer;font-size:.875rem}span.mdi-filter-variant.active{color:#000}p.filter-tab{font-family:Roboto;font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.29;letter-spacing:normal;color:#1b88ff;border-radius:5px;background-color:#f4f4f4;padding-inline:8px;cursor:pointer;overflow:hidden;text-align:center;text-overflow:ellipsis}p.filter-tab.active{color:#fff;background-color:#1b88ff}button.filter-text-btn{background:#fff;text-decoration:underline;font-family:Roboto;font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;border:none;color:#268bff;margin-inline:4px;margin-top:2px}button.filter-text-btn:disabled{color:#b1b1b1;cursor:not-allowed}::ng-deep .non-edit-datepicker-tooltip .tooltip-inner{max-width:310px!important;width:283px!important;overflow-y:initial!important;padding:0!important}input.slider-text::-webkit-outer-spin-button,input.slider-text::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input.slider-text{-moz-appearance:textfield}input.slider-text.red-border{border:1px solid #f44336!important}::ng-deep .checkbox-sort p.sort-container{margin-top:8px!important;padding-bottom:8px!important}i.mdi-close{cursor:pointer}i.mdi-close.disable-close-icon{pointer-events:none;cursor:not-allowed}input.error-border{border:1px solid #f44336!important}::ng-deep .non-edit-checkbox-tooltip .tooltip-inner{width:238px!important;padding:0!important}::ng-deep .non-edit-slider-tooltip .tooltip-inner{width:238px!important;padding:0!important}::ng-deep .non-edit-time-tooltip .tooltip-inner{width:250px!important;padding:0!important}::ng-deep .non-edit-time-tooltip.bs-tooltip-start{padding:.4rem}::ng-deep .non-edit-time-tooltip.bs-tooltip-start .tooltip-arrow{right:0;top:5px!important;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}::ng-deep .non-edit-time-tooltip.bs-tooltip-start .tooltip-arrow:before{border-left-color:#fff;left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height)}::ng-deep .no-bottom-border p.sort-container{border-bottom:none!important}::ng-deep .ngx-slider-pointer-min:after{display:none}::ng-deep .ngx-slider-pointer-max:after{display:none}::ng-deep .ngx-slider span.ngx-slider-pointer{width:12px;height:12px;top:-5px;background-color:#bdbdbd}::ng-deep .ngx-slider span.ngx-slider-bar{height:3px;background:#ededed}::ng-deep .ngx-slider span.ngx-slider-selection{background:#bdbdbd}::ng-deep .ngx-slider span.ngx-slider-bubble{bottom:-22px;font-size:12px;color:#333}::ng-deep .show-min.ngx-slider span.ngx-slider-model-value{background:#fff;box-shadow:0 6px 10px #0000004d,0 2px 2px #0003}::ng-deep .show-max.ngx-slider span.ngx-slider-model-high{background:#fff;box-shadow:none}::ng-deep .ngx-slider span.ngx-slider-combined{background:#fff;box-shadow:0 6px 10px #0000004d,0 2px 2px #0003}::ng-deep .ngx-slider{top:10px!important;margin:5px 0 2px!important}::ng-deep .ngx-slider-animate{top:0!important}.sidebar-slider{margin-bottom:35px!important;margin-left:5px;margin-right:5px}.slider-placeholder{height:14px}::ng-deep .filter-calendar select.form-select:focus{border-color:#c2cfd6;box-shadow:none}::ng-deep .filter-calendar select.form-select{background-color:#fff}.no-data-case{padding-left:.4375rem!important;font-size:.875rem!important;margin-top:10px!important;cursor:pointer}.custom-column-checkbox-checked,.custom-column-checkbox-unchecked{font-size:.875rem;cursor:pointer}.custom-column-checkbox-checked{color:#268bff}.custom-column-checkbox-unchecked{color:#4a4a4a}.virtual-scroll-div{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{opacity:1}.redcolor-status{color:#c62a2a}#no-filter-space{width:.875rem}input.numberInput{margin-right:-.8125rem;padding:0 0 0 .625rem;height:1.875rem}.hidden{display:none}div.checkbox-container-padding{padding:.5rem 0 .5rem .5rem}div.checkbox-container-padding .label{margin-left:2px}i.mdi-menu-down{position:relative;left:.25px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AnnaSortComponent, selector: "anna-core-sort-lib", inputs: ["sortObjectKey"], outputs: ["sortOptionClicked"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i5.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i5.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }] }); }
|
|
258
|
+
}
|
|
259
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AnnaColumnTimeFilterComponent, decorators: [{
|
|
260
|
+
type: Component,
|
|
261
|
+
args: [{ selector: "anna-core-anna-column-time-filter", standalone: true, imports: [NgIf, NgFor, NgClass, AnnaSortComponent, FormsModule, MatButtonToggleModule], template: "<div\n class=\"radio-container\"\n *ngIf=\"showFilterHeaderTabs\"\n>\n <div *ngFor=\"let data of filterTabObjects\">\n <p\n class=\"filter-tab\"\n [title]=\"data.label\"\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\"\n [ngClass]=\"{ active: annaFilterService.selectedRadio === data.key }\"\n *ngIf=\"filterTabObjects.length > 0\"\n >\n {{ data.label }}\n </p>\n </div>\n</div>\n\n<anna-core-sort-lib\n *ngIf=\"showSortComponent\"\n [ngClass]=\"{ 'no-bottom-border': !showFilterComponent }\"\n (sortOptionClicked)=\"storeSortTypeInTempVariable($event)\"\n [sortObjectKey]=\"annaFilterService.selectedRadio\"\n></anna-core-sort-lib>\n\n<ng-container *ngIf=\"showFilterComponent\">\n <button\n class=\"column-clear-all\"\n *ngIf=\"showClearAllFilter\"\n [disabled]=\"disableColumnClearAllBtn\"\n (click)=\"clearColumnFilter()\"\n >\n Clear filter\n </button>\n <div\n class=\"time-filter-checkboxes\"\n *ngIf=\"showAllTimeRangeCheckboxes\"\n >\n <!-- Multi time option checkbox -->\n <div\n class=\"d-flex align-items-center checkbox-container-padding\"\n *ngIf=\"showMultiTimeCheckbox\"\n >\n <span\n *ngIf=\"multiTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-checked\"\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\n >\n check_box\n </span>\n <span\n *ngIf=\"!multiTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-unchecked\"\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\n >\n check_box_outline_blank\n </span>\n <p class=\"label\">Include Multi</p>\n </div>\n <!-- Zero time option checkbox -->\n <div\n class=\"d-flex align-items-center checkbox-container-padding\"\n *ngIf=\"showZeroTimeCheckbox\"\n >\n <span\n *ngIf=\"zeroTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-checked\"\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\n >\n check_box\n </span>\n <span\n *ngIf=\"!zeroTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-unchecked\"\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\n >\n check_box_outline_blank\n </span>\n <p class=\"label\">Include Zero</p>\n </div>\n <!-- Enter time range option checkbox -->\n <div\n class=\"d-flex align-items-center checkbox-container-padding\"\n *ngIf=\"showEnterTimeCheckbox\"\n >\n <span\n *ngIf=\"enterTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-checked\"\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\n >\n check_box\n </span>\n <span\n *ngIf=\"!enterTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-unchecked\"\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\n >\n check_box_outline_blank\n </span>\n <p class=\"label\">Enter time range</p>\n </div>\n </div>\n <div class=\"time-label-container\">\n <label>{{ startFromText }}</label>\n </div>\n <div class=\"time-container\">\n <input\n class=\"form-control numberInput\"\n [ngClass]=\"{ 'error-border': startTimeHourErr }\"\n [(ngModel)]=\"selectedFromTime[0]\"\n type=\"text\"\n pattern=\"[1-12]*\"\n (ngModelChange)=\"startTimeHourChange($event)\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeStartTimeHour(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n (click)=\"changeStartTimeHour(false)\"\n ></i>\n </div>\n <span class=\"dot\">:</span>\n <input\n class=\"form-control numberInput\"\n [ngClass]=\"{ 'error-border': startTimeMinErr }\"\n [(ngModel)]=\"selectedFromTime[1]\"\n type=\"text\"\n pattern=\"[0-59]*\"\n (ngModelChange)=\"startTimeMinChange($event)\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeStartTimeMinute(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n (click)=\"changeStartTimeMinute(false)\"\n ></i>\n </div>\n <div>\n <mat-button-toggle-group\n [(ngModel)]=\"selectedFromTime[2]\"\n (ngModelChange)=\"disableTimeFilterApplyButton()\"\n >\n <mat-button-toggle value=\"AM\">\n <span>AM</span>\n </mat-button-toggle>\n <mat-button-toggle value=\"PM\">\n <span>PM</span>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n </div>\n\n <div class=\"time-label-container\">\n <label>{{ endToText }}</label>\n </div>\n <div class=\"time-container\">\n <input\n class=\"form-control numberInput\"\n [(ngModel)]=\"selectedToTime[0]\"\n [ngClass]=\"{ 'error-border': endTimeHourErr }\"\n (ngModelChange)=\"endTimeHourChange($event)\"\n type=\"text\"\n pattern=\"[1-12]*\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeEndTimeHour(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n (click)=\"changeEndTimeHour(false)\"\n ></i>\n </div>\n <span class=\"dot\">:</span>\n <input\n class=\"form-control numberInput\"\n [ngClass]=\"{ 'error-border': endTimeMinErr }\"\n [(ngModel)]=\"selectedToTime[1]\"\n (ngModelChange)=\"endTimeMinChange($event)\"\n type=\"text\"\n pattern=\"[0-59]*\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeEndTimeMinute(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n (click)=\"changeEndTimeMinute(false)\"\n ></i>\n </div>\n <div>\n <mat-button-toggle-group\n [(ngModel)]=\"selectedToTime[2]\"\n (ngModelChange)=\"disableTimeFilterApplyButton()\"\n >\n <mat-button-toggle value=\"AM\">\n <span>AM</span>\n </mat-button-toggle>\n <mat-button-toggle value=\"PM\">\n <span>PM</span>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n </div>\n</ng-container>\n\n<div class=\"buttons-container\">\n <button\n class=\"button\"\n (click)=\"closeTimeFilter()\"\n >\n Cancel\n </button>\n <button\n class=\"button\"\n [ngClass]=\"{ disabled: disableTimeFilterApplyBtn }\"\n (click)=\"applyTimeFilters()\"\n [disabled]=\"disableTimeFilterApplyBtn\"\n >\n Apply\n </button>\n</div>\n", styles: [":host ::ng-deep .mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:30px;width:42px;padding:0 10px}:host ::ng-deep .mat-button-toggle-checked{background-color:#268bff;color:#fff!important}:host ::ng-deep .mat-button-toggle-group-appearance-standard{border-radius:0;border:none!important}::ng-deep .mat-button-toggle-disabled.mat-button-toggle-checked{background:#bdbdbd!important}::ng-deep .mat-button-toggle-disabled.mat-button-toggle-checked button{color:#fff;opacity:1}::ng-deep .mat-button-toggle-appearance-standard{opacity:.5;border:solid 1px #b3b3b3}::ng-deep .mat-button-toggle-appearance-standard button{opacity:1}::ng-deep .mat-button-toggle-appearance-standard.mat-button-toggle-checked{opacity:1}.sort-btn{background:#fff;border:none;border-right:1px solid #1b88ff;text-decoration:underline;font-family:Roboto;font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.07;letter-spacing:normal;color:#1b88ff;cursor:pointer;flex:1;text-align:center}.sort-btn:last-of-type{border-right:none}.sort-btn.active{color:#202b47;text-decoration:none}p.sort-container{margin-top:8px;padding-bottom:8px;border-bottom:1px solid #e6e6e6;margin-bottom:0;display:flex}::ng-deep .tooltip-inner{max-height:22rem;background-color:#fff;border:1px solid white;border-radius:5px;box-shadow:0 2px 2px #0000003d,0 0 2px #0000001f;max-width:251px;width:100%;padding:0!important}::ng-deep .tooltip-inner div.radio-container{flex-wrap:wrap}::ng-deep .md-drppicker{box-shadow:unset!important}::ng-deep .available{color:#999}::ng-deep .bs-tooltip-bottom .arrow:before{border-bottom-color:#fff!important}::ng-deep .bs-tooltip-left .arrow:before{border-left-color:#fff!important}::ng-deep .tooltip.show{opacity:1}.input{text-align:left;margin:5px 10px 5px 5px;display:flex;align-items:center;width:230px;white-space:nowrap}.data{color:#000;font-weight:700;margin-left:5px;margin-right:5px}span.data{display:inline-block;text-overflow:ellipsis;white-space:pre;width:100%;overflow:hidden}.check-box{font-size:14px;cursor:pointer;position:relative;top:-1px}span.mdi-filter.active{color:#000;opacity:1!important;pointer-events:all!important}p{margin-bottom:0;line-height:initial}span.mdi-filter{color:#cbcbcb}::ng-deep .ngx-slider-pointer{top:-5px!important;width:12px!important;height:12px!important;background:#bdbdbd!important;border:1px solid #ffffff!important;box-shadow:0 1px 3px #0000004d!important;border-radius:16px!important}input:focus{outline:none}input::placeholder{color:#c8c8c8}.cancel-btn{background:#c7e1ff;color:#268bff}.apply-btn{background:#268bff;color:#fff;margin-left:.3125rem}div.radio-container{display:flex;white-space:nowrap;justify-content:space-between;background-color:#f4f4f4;border-radius:.125rem;margin:.4375rem .4375rem .25rem}div.radio-container div{flex:1;width:50%}div.radio-container div.full-width{width:100%}div.radio-container input{position:relative;top:.125rem;margin-right:.25rem}div.radio-container label{font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.29;letter-spacing:0;color:#4a4a4a;margin:0;padding-left:.125rem}div.radio-container label:first-of-type{margin-right:.188rem}div.radio-container input[type=radio]{appearance:none;display:inline-block;width:.9375rem;height:.9375rem;padding:.125rem;background-clip:content-box;border:.125rem solid #268bff;background-color:transparent;border-radius:50%}div.radio-container input[type=radio]:checked{background-color:#268bff}.checkbox-filter-buttons-container{padding:0 8px!important}.buttons-container{display:flex;margin:0px auto .4375rem;justify-content:center;padding:0 12px}.buttons-container .button{padding:0 10px;width:100%;margin:8px 0 0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.buttons-container button:last-of-type{background-color:#268bff;color:#fff;margin-left:.5rem}.buttons-container button.disabled{background:#bdbdbd;opacity:.5;color:#4a4a4a}.button{display:inline-block;margin:8px 4px 0 8px;padding:0 16px;border-radius:4px;text-align:center;outline:none;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.67;letter-spacing:normal;border:none;color:#268bff;background-color:#e5f1ff}.search-box{display:flex;align-items:center;color:#c8c8c8;border:1px solid #e6e6e6;border-radius:.125rem;margin:.25rem .4375rem .188rem;height:1.5rem;padding:.188rem 8px .188rem .5rem}.search-box .search-bar-close{margin-left:auto;float:right}.search-icon{margin:0 4px 0 0;font-size:1.125rem;color:#9b9b9b}.filter-icon{justify-content:right;margin-left:auto;color:#d4d4d4;color:#a1a1a1;font-size:16px;cursor:pointer}.data{margin:0 13px 0 8px;font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.86;letter-spacing:\"\";color:#4a4a4a}.search-input{font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;color:#c8c8c8;width:calc(100% - 38px);margin:1px 0 1px 2px;border:none;padding:0}.check-box{color:#268bff}.tooltip-data-container{overflow-y:scroll;max-height:8rem}.searchbar{width:100%;display:flex;justify-content:flex-end;align-items:flex-end}.clear-button{opacity:.5;font-family:Roboto;font-size:.9375rem;font-weight:500;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;text-decoration:underline;border:none;background-color:#fff;color:#4a4a4a;margin-left:.625rem;padding:0}.clear-button:focus{outline:none;box-shadow:none}.unchecked{color:#268bff}cdk-virtual-scroll-viewport.dropdown-data-container{max-height:12.3rem;width:100%;overflow-y:auto;overflow-x:hidden}cdk-virtual-scroll-viewport.dropdown-data-container p.input{margin-left:0}cdk-virtual-scroll-viewport.dropdown-data-container p.input span.mi{padding-left:.4375rem}cdk-virtual-scroll-viewport.dropdown-data-container p.input:hover{background-color:#ebebeb;cursor:pointer}cdk-virtual-scroll-viewport.dropdown-data-container::-webkit-scrollbar{width:.188rem}cdk-virtual-scroll-viewport.dropdown-data-container::-webkit-scrollbar-thumb{color:#d3d3d3;background:#d3d3d3}section.min-maxContainer{display:flex;justify-content:center;margin-bottom:-.125rem;margin-top:.5rem;width:100%}section.min-maxContainer input{width:30%;height:1.875rem;border:1px solid lightgray;color:gray}section.min-maxContainer span{display:inline-block;padding-left:.5rem;padding-right:.5rem;position:relative;top:.3125rem;color:#666}.time-container{width:100%;display:flex;padding:0 .75rem}.time-container input.form-control:disabled{background-color:#fff;width:2.813rem}.time-container input.numberInput:focus{box-shadow:none;border-color:#c2cfd6}.time-container .dot{color:#cbcbcb;position:relative;left:-7px;font-size:17px}.time-container div.arrow-container{flex-direction:column;display:flex;margin-top:.375rem;width:9px;height:18px;margin-right:1.1875rem}.time-container div.arrow-container i{color:#000;cursor:pointer;max-height:9px;font-size:25px;width:10px}.time-container div.arrow-container i:before{width:0;height:0;pointer-events:none;position:relative;left:-9px;top:-11px}.mdi-filter{cursor:pointer}.time-label-container{display:flex;justify-content:flex-start}.time-label-container label{margin-bottom:0;color:#4a4a4a;margin-top:.125rem;margin-left:.75rem;font-weight:700}.time-heading{color:#000;font-size:.8125rem;text-align:left;padding-left:.625rem;margin-top:.625rem;font-weight:700}.column-clear-all{width:94%;text-align:center;border:none;font-size:14px;background:none;text-decoration:underline;color:#268bff}.checkbox-container{display:flex;padding-inline:.625rem}.checkbox-container .data{text-align:left}.checkbox-container:first-of-type{margin-top:.625rem;font-weight:500}.column-clear-all{width:94%;text-align:center;border:none;background:none;text-decoration:underline;color:#268bff}.column-clear-all:disabled{opacity:.5;color:#4a4a4a;font-weight:400}.column-clear-all.align-center{text-align:center}span.mdi-filter-variant.disabled{pointer-events:none;opacity:.5}.datepicker-container{width:100%}span.mdi-filter-variant{color:#cbcbcb;cursor:pointer;font-size:.875rem}span.mdi-filter-variant.active{color:#000}p.filter-tab{font-family:Roboto;font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.29;letter-spacing:normal;color:#1b88ff;border-radius:5px;background-color:#f4f4f4;padding-inline:8px;cursor:pointer;overflow:hidden;text-align:center;text-overflow:ellipsis}p.filter-tab.active{color:#fff;background-color:#1b88ff}button.filter-text-btn{background:#fff;text-decoration:underline;font-family:Roboto;font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;border:none;color:#268bff;margin-inline:4px;margin-top:2px}button.filter-text-btn:disabled{color:#b1b1b1;cursor:not-allowed}::ng-deep .non-edit-datepicker-tooltip .tooltip-inner{max-width:310px!important;width:283px!important;overflow-y:initial!important;padding:0!important}input.slider-text::-webkit-outer-spin-button,input.slider-text::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input.slider-text{-moz-appearance:textfield}input.slider-text.red-border{border:1px solid #f44336!important}::ng-deep .checkbox-sort p.sort-container{margin-top:8px!important;padding-bottom:8px!important}i.mdi-close{cursor:pointer}i.mdi-close.disable-close-icon{pointer-events:none;cursor:not-allowed}input.error-border{border:1px solid #f44336!important}::ng-deep .non-edit-checkbox-tooltip .tooltip-inner{width:238px!important;padding:0!important}::ng-deep .non-edit-slider-tooltip .tooltip-inner{width:238px!important;padding:0!important}::ng-deep .non-edit-time-tooltip .tooltip-inner{width:250px!important;padding:0!important}::ng-deep .non-edit-time-tooltip.bs-tooltip-start{padding:.4rem}::ng-deep .non-edit-time-tooltip.bs-tooltip-start .tooltip-arrow{right:0;top:5px!important;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}::ng-deep .non-edit-time-tooltip.bs-tooltip-start .tooltip-arrow:before{border-left-color:#fff;left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height)}::ng-deep .no-bottom-border p.sort-container{border-bottom:none!important}::ng-deep .ngx-slider-pointer-min:after{display:none}::ng-deep .ngx-slider-pointer-max:after{display:none}::ng-deep .ngx-slider span.ngx-slider-pointer{width:12px;height:12px;top:-5px;background-color:#bdbdbd}::ng-deep .ngx-slider span.ngx-slider-bar{height:3px;background:#ededed}::ng-deep .ngx-slider span.ngx-slider-selection{background:#bdbdbd}::ng-deep .ngx-slider span.ngx-slider-bubble{bottom:-22px;font-size:12px;color:#333}::ng-deep .show-min.ngx-slider span.ngx-slider-model-value{background:#fff;box-shadow:0 6px 10px #0000004d,0 2px 2px #0003}::ng-deep .show-max.ngx-slider span.ngx-slider-model-high{background:#fff;box-shadow:none}::ng-deep .ngx-slider span.ngx-slider-combined{background:#fff;box-shadow:0 6px 10px #0000004d,0 2px 2px #0003}::ng-deep .ngx-slider{top:10px!important;margin:5px 0 2px!important}::ng-deep .ngx-slider-animate{top:0!important}.sidebar-slider{margin-bottom:35px!important;margin-left:5px;margin-right:5px}.slider-placeholder{height:14px}::ng-deep .filter-calendar select.form-select:focus{border-color:#c2cfd6;box-shadow:none}::ng-deep .filter-calendar select.form-select{background-color:#fff}.no-data-case{padding-left:.4375rem!important;font-size:.875rem!important;margin-top:10px!important;cursor:pointer}.custom-column-checkbox-checked,.custom-column-checkbox-unchecked{font-size:.875rem;cursor:pointer}.custom-column-checkbox-checked{color:#268bff}.custom-column-checkbox-unchecked{color:#4a4a4a}.virtual-scroll-div{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{opacity:1}.redcolor-status{color:#c62a2a}#no-filter-space{width:.875rem}input.numberInput{margin-right:-.8125rem;padding:0 0 0 .625rem;height:1.875rem}.hidden{display:none}div.checkbox-container-padding{padding:.5rem 0 .5rem .5rem}div.checkbox-container-padding .label{margin-left:2px}i.mdi-menu-down{position:relative;left:.25px}\n"] }]
|
|
262
|
+
}], ctorParameters: function () { return [{ type: i1.AnnaSortService }, { type: i2.AnnaDateTimeFormatService }, { type: i3.AnnaFilterService }]; }, propDecorators: { tableData: [{
|
|
263
|
+
type: Input
|
|
264
|
+
}], clonedTableData: [{
|
|
265
|
+
type: Input
|
|
266
|
+
}], filterTabObjects: [{
|
|
267
|
+
type: Input
|
|
268
|
+
}], showFilterHeaderTabs: [{
|
|
269
|
+
type: Input
|
|
270
|
+
}], showAllTimeRangeCheckboxes: [{
|
|
271
|
+
type: Input
|
|
272
|
+
}], isLurAndCsrComponent: [{
|
|
273
|
+
type: Input
|
|
274
|
+
}], gtGeneralConfig: [{
|
|
275
|
+
type: Input
|
|
276
|
+
}], showClearAllFilter: [{
|
|
277
|
+
type: Input
|
|
278
|
+
}], startFromText: [{
|
|
279
|
+
type: Input
|
|
280
|
+
}], endToText: [{
|
|
281
|
+
type: Input
|
|
282
|
+
}], isSortAndFilterAbsent: [{
|
|
283
|
+
type: Input
|
|
284
|
+
}], timeChanges: [{
|
|
285
|
+
type: Output
|
|
286
|
+
}], filterAppliedToTable: [{
|
|
287
|
+
type: Output
|
|
288
|
+
}], sortingAppliedToTable: [{
|
|
289
|
+
type: Output
|
|
290
|
+
}], getSortType: [{
|
|
291
|
+
type: Output
|
|
292
|
+
}], closeTooltip: [{
|
|
293
|
+
type: Output
|
|
294
|
+
}] } });
|
|
295
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb3JlL3NyYy9saWIvYW5uYS1nZW5lcmljLXRhYmxlLWxpYi9jb21wb25lbnRzL2FubmEtY29sdW1uLWZpbHRlcnMvYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIvYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb3JlL3NyYy9saWIvYW5uYS1nZW5lcmljLXRhYmxlLWxpYi9jb21wb25lbnRzL2FubmEtY29sdW1uLWZpbHRlcnMvYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIvYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFLL0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFDcEgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDbEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7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QU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ0ZvciwgTmdJZiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlXCI7XHJcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcclxuXHJcbmltcG9ydCB7IElHdEdlbmVyYWxDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtbm9uLWVkaXRhYmxlLWd0LW1vZGVsc1wiO1xyXG5pbXBvcnQgeyBTb3J0VHlwZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS1zb3J0Lm1vZGVsXCI7XHJcbmltcG9ydCB7IFJhZGlvQnV0dG9uTW9kZWwgfSBmcm9tIFwiLi4vLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtdG9vbHRpcC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtZGF0ZS10aW1lLWZvcm1hdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFubmFGaWx0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtZmlsdGVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQW5uYVNvcnRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtc29ydC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFubmFTb3J0Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2FubmEtc29ydC9hbm5hLXNvcnQuY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImFubmEtY29yZS1hbm5hLWNvbHVtbi10aW1lLWZpbHRlclwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9hbm5hLWNvbHVtbi10aW1lLWZpbHRlci5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL2FubmEtY29sdW1uLXRpbWUtZmlsdGVyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtOZ0lmLCBOZ0ZvciwgTmdDbGFzcywgQW5uYVNvcnRDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBNYXRCdXR0b25Ub2dnbGVNb2R1bGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5uYUNvbHVtblRpbWVGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgdGFibGVEYXRhOiBhbnlbXTtcclxuICAgIEBJbnB1dCgpIGNsb25lZFRhYmxlRGF0YTogYW55W107XHJcbiAgICBASW5wdXQoKSBmaWx0ZXJUYWJPYmplY3RzOiBhbnlbXTtcclxuICAgIEBJbnB1dCgpIHNob3dGaWx0ZXJIZWFkZXJUYWJzOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgc2hvd0FsbFRpbWVSYW5nZUNoZWNrYm94ZXM6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpc0x1ckFuZENzckNvbXBvbmVudDogYm9vbGVhbjtcclxuXHJcbiAgICBASW5wdXQoKSBndEdlbmVyYWxDb25maWc6IElHdEdlbmVyYWxDb25maWc7XHJcbiAgICBASW5wdXQoKSBzaG93Q2xlYXJBbGxGaWx0ZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgc3RhcnRGcm9tVGV4dDogc3RyaW5nID0gXCJGcm9tXCI7XHJcbiAgICBASW5wdXQoKSBlbmRUb1RleHQ6IHN0cmluZyA9IFwiVG9cIjtcclxuICAgIEBJbnB1dCgpIGlzU29ydEFuZEZpbHRlckFic2VudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQE91dHB1dCgpIHRpbWVDaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIGZpbHRlckFwcGxpZWRUb1RhYmxlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIHNvcnRpbmdBcHBsaWVkVG9UYWJsZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBnZXRTb3J0VHlwZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBjbG9zZVRvb2x0aXAgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgaXNGaWx0ZXJDaGFuZ2VkOiBib29sZWFuO1xyXG4gICAgdGVtcFNvcnRPcmRlcjogU29ydFR5cGUgPSBudWxsO1xyXG4gICAgaXNTb3J0Q2hhbmdlZDogYm9vbGVhbjtcclxuICAgIHNob3dTb3J0Q29tcG9uZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBzaG93RmlsdGVyQ29tcG9uZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBkaXNhYmxlQ29sdW1uQ2xlYXJBbGxCdG46IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIHN0YXJ0VGltZUhvdXJFcnI6IGJvb2xlYW47XHJcbiAgICBzdGFydFRpbWVNaW5FcnI6IGJvb2xlYW47XHJcbiAgICBlbmRUaW1lSG91ckVycjogYm9vbGVhbjtcclxuICAgIGVuZFRpbWVNaW5FcnI6IGJvb2xlYW47XHJcbiAgICBzZWxlY3RlZEZyb21UaW1lOiBhbnlbXTtcclxuICAgIHNlbGVjdGVkVG9UaW1lOiBhbnlbXTtcclxuICAgIGNsb25lZFNlbGVjdGVkRnJvbVRpbWU6IGFueTtcclxuICAgIGNsb25lZFNlbGVjdGVkVG9UaW1lOiBhbnk7XHJcbiAgICBkaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuOiBib29sZWFuO1xyXG4gICAgdGFibGVDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgdG90YWxSb3dDb2x1bW5zOiBzdHJpbmdbXSA9IG51bGw7XHJcbiAgICBzaG93TXVsdGlUaW1lQ2hlY2tib3g6IGJvb2xlYW47XHJcbiAgICBzaG93WmVyb1RpbWVDaGVja2JveDogYm9vbGVhbjtcclxuICAgIHNob3dFbnRlclRpbWVDaGVja2JveDogYm9vbGVhbjtcclxuICAgIG11bHRpVGltZUNoZWNrYm94Q2hlY2tlZDogYm9vbGVhbjtcclxuICAgIHplcm9UaW1lQ2hlY2tib3hDaGVja2VkOiBib29sZWFuO1xyXG4gICAgZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkOiBib29sZWFuO1xyXG4gICAgYmluZFZhbHVlRnVuY0NhbGxlZDogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGFubmFTb3J0U2VydmljZTogQW5uYVNvcnRTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBhbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlOiBBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBhbm5hRmlsdGVyU2VydmljZTogQW5uYUZpbHRlclNlcnZpY2UsXHJcbiAgICApIHt9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8odGhpcy5maWx0ZXJUYWJPYmplY3RzWzBdLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGFjdGl2ZVRhYjogUmFkaW9CdXR0b25Nb2RlbCwgcmVsb2FkOiBib29sZWFuKSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyID0gYWN0aXZlVGFiLmtleTtcclxuXHJcbiAgICAgICAgdGhpcy5zaG93U29ydENvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc1NvcnRSZXF1aXJlZDtcclxuICAgICAgICB0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgPSBhY3RpdmVUYWIuaXNGaWx0ZXJSZXF1aXJlZDtcclxuXHJcbiAgICAgICAgdGhpcy50ZW1wU29ydE9yZGVyID0gbnVsbDtcclxuICAgICAgICB0aGlzLmlzRmlsdGVyQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTb3J0Q2hhbmdlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPSBoZWFkZXI7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlQ29sdW1uQ2xlYXJBbGxCdG4gPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmRpc2FibGVBY3RpdmVGaWx0ZXJDbGVhckJ1dHRvbigpO1xyXG5cclxuICAgICAgICBpZiAocmVsb2FkKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVGaWx0ZXJUb29sdGlwRGF0YShhY3RpdmVUYWIsIGhlYWRlcik7XHJcbiAgICAgICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVGaWx0ZXJUb29sdGlwRGF0YShhY3RpdmVUYWIsIGhlYWRlcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUZpbHRlclRvb2x0aXBEYXRhKGFjdGl2ZVRhYjogUmFkaW9CdXR0b25Nb2RlbCwgaGVhZGVyOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLnNob3dTb3J0Q29tcG9uZW50ID0gYWN0aXZlVGFiLmlzU29ydFJlcXVpcmVkO1xyXG4gICAgICAgIHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc0ZpbHRlclJlcXVpcmVkO1xyXG5cclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VGltZUZpbHRlckRhdGEoaGVhZGVyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VGltZUZpbHRlckRhdGEoaGVhZGVyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN0YXJ0VGltZUhvdXJFcnIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnN0YXJ0VGltZU1pbkVyciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZW5kVGltZUhvdXJFcnIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmVuZFRpbWVNaW5FcnIgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNTb3J0QW5kRmlsdGVyQWJzZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSA9IHRoaXMuY2xvbmVkVGFibGVEYXRhWzBdLnRpbWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWUgPSB0aGlzLmNsb25lZFRhYmxlRGF0YVsxXS50aW1lO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUgPSBBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmZvcm1hdFRvVHdlbHZlSHJzKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWUgPSBBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmZvcm1hdFRvVHdlbHZlSHJzKHRoaXMuc2VsZWN0ZWRUb1RpbWUsIHRydWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIFt0aGlzLnNlbGVjdGVkRnJvbVRpbWUsIHRoaXMuc2VsZWN0ZWRUb1RpbWVdID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRTZWxlY3RlZFRpbWVSYW5nZShcclxuICAgICAgICAgICAgICAgIGhlYWRlcixcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jbG9uZWRTZWxlY3RlZEZyb21UaW1lID0gY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICAgICAgdGhpcy5jbG9uZWRTZWxlY3RlZFRvVGltZSA9IGNsb25lRGVlcCh0aGlzLnNlbGVjdGVkVG9UaW1lKTtcclxuXHJcbiAgICAgICAgY29uc3Qgb3B0aW9uc0RhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlPy5nZXRGaWx0ZXJPcHRpb25zRGF0YSh0aGlzLnRhYmxlRGF0YSwgdGhpcy5jbG9uZWRUYWJsZURhdGEpO1xyXG5cclxuICAgICAgICBjb25zdCBjaGVja2VkU2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlPy5zZWxlY3RVbnNlbGVjdFRpbWVGaWx0ZXJDaGVja2JveChoZWFkZXIsIG9wdGlvbnNEYXRhKTtcclxuXHJcbiAgICAgICAgdGhpcy5zaG93TXVsdGlUaW1lQ2hlY2tib3ggPSBjaGVja2VkU2VsZWN0ZWRPYmouc2hvd011bHRpVGltZUNoZWNrYm94O1xyXG4gICAgICAgIHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggPSBjaGVja2VkU2VsZWN0ZWRPYmouc2hvd1plcm9UaW1lQ2hlY2tib3g7XHJcbiAgICAgICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSBjaGVja2VkU2VsZWN0ZWRPYmouc2hvd0VudGVyVGltZUNoZWNrYm94O1xyXG4gICAgICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gY2hlY2tlZFNlbGVjdGVkT2JqLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZDtcclxuICAgICAgICB0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkID0gY2hlY2tlZFNlbGVjdGVkT2JqLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkO1xyXG4gICAgICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkID0gY2hlY2tlZFNlbGVjdGVkT2JqLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZDtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RPclVuc2VsZWN0TXVsdGlUaW1lQ2hlY2tib3goKSB7XHJcbiAgICAgICAgdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQgPSAhdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQ7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0T3JVbnNlbGVjdFplcm9UaW1lQ2hlY2tib3goKSB7XHJcbiAgICAgICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9ICF0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdE9yVW5zZWxlY3RFbnRlclRpbWVDaGVja2JveCgpIHtcclxuICAgICAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCA9ICF0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZDtcclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCkge1xyXG4gICAgICAgIGNvbnN0IHByZXZpb3VzU2VsZWN0ZWRUaW1lRmlsdGVyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRQcmV2aW91c1NlbGVjdGVkVGltZUZpbHRlcigpO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldEN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIoXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSxcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZSxcclxuICAgICAgICAgICAgdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQsXHJcbiAgICAgICAgICAgIHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQsXHJcbiAgICAgICAgICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkLFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkID0gIWlzRXF1YWwocHJldmlvdXNTZWxlY3RlZFRpbWVGaWx0ZXIsIGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzRmlsdGVyQ2hhbmdlZDtcclxuICAgIH1cclxuICAgIGNoZWNrSWZJbnZhbGlkVGltZUlzRW50ZXJlZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5zdGFydFRpbWVIb3VyRXJyIHx8IHRoaXMuc3RhcnRUaW1lTWluRXJyIHx8IHRoaXMuZW5kVGltZUhvdXJFcnIgfHwgdGhpcy5lbmRUaW1lTWluRXJyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBkaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzU29ydEFuZEZpbHRlckFic2VudCkge1xyXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSB0aGlzLmNoZWNrSWZJbnZhbGlkVGltZUlzRW50ZXJlZCgpIHx8ICF0aGlzLmNoZWNrSWZUaW1lVG9vbHRpcElzRmlsdGVyZWQoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLnNob3dTb3J0Q29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzRmlsdGVyQ2hhbmdlZCA9IHRoaXMuY2hlY2tJZlRpbWVUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgICAgICAgICBjb25zdCBpc1NvcnRDaGFuZ2VkID0gdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuID0gIXRoaXMudmFsaWRhdGVUaW1lRmlsdGVySW5wdXQoKSB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuID0gIXRoaXMudmFsaWRhdGVUaW1lRmlsdGVySW5wdXQoKSB8fCAhdGhpcy5jaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3dTb3J0Q29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9ICF0aGlzLmNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmU29ydGluZ0NoYW5nZWQoKSB7XHJcbiAgICAgICAgdGhpcy5pc1NvcnRDaGFuZ2VkID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5jaGVja0lmU29ydGluZ0NoYW5nZWQodGhpcy50ZW1wU29ydE9yZGVyKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1NvcnRDaGFuZ2VkO1xyXG4gICAgfVxyXG5cclxuICAgIHZhbGlkYXRlVGltZUZpbHRlcklucHV0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXJ0VGltZUhvdXJFcnIgfHwgdGhpcy5zdGFydFRpbWVNaW5FcnIgfHwgdGhpcy5lbmRUaW1lSG91ckVyciB8fCB0aGlzLmVuZFRpbWVNaW5FcnIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCAmJlxyXG4gICAgICAgICAgICAhdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQgJiZcclxuICAgICAgICAgICAgdGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCAmJlxyXG4gICAgICAgICAgICAhdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCAmJlxyXG4gICAgICAgICAgICB0aGlzLnNob3dFbnRlclRpbWVDaGVja2JveCAmJlxyXG4gICAgICAgICAgICAhdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmNoZWNrSWZTdGFydFRpbWVJc0FmdGVyRW5kVGltZSh0aGlzLnNlbGVjdGVkRnJvbVRpbWUsIHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGFwcGx5VGltZUZpbHRlcnMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNTb3J0QW5kRmlsdGVyQWJzZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRpbWVTZWxlY3RlZCA9IFt0aGlzLnNlbGVjdGVkRnJvbVRpbWUsIHRoaXMuc2VsZWN0ZWRUb1RpbWVdO1xyXG4gICAgICAgICAgICB0aGlzLnRpbWVDaGFuZ2VzLmVtaXQodGltZVNlbGVjdGVkKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFwcGx5VGltZUZpbHRlck9uRGF0YSgpO1xyXG4gICAgICAgICAgICB0aGlzLmFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCk7XHJcbiAgICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZkFsbFRoZUtleXModGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgICAgICAgICAgdGhpcy5lbWl0RGF0YSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jbG9zZVRvb2x0aXAuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGVtaXREYXRhKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRmlsdGVyQ2hhbmdlZCAmJiB0aGlzLmlzU29ydENoYW5nZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQXBwbGllZFRvVGFibGUuZW1pdCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzU29ydENoYW5nZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRTb3J0VHlwZS5lbWl0KHRoaXMudGVtcFNvcnRPcmRlcik7XHJcbiAgICAgICAgICAgIHRoaXMuc29ydGluZ0FwcGxpZWRUb1RhYmxlLmVtaXQodGhpcy50YWJsZURhdGEpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VTdGFydFRpbWVIb3VyKGluY3JlbWVudDogYm9vbGVhbikge1xyXG4gICAgICAgIGlmICghdGhpcy5zdGFydFRpbWVIb3VyRXJyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5jcmVtZW50T3JEZWNyZW1lbnRIb3VyKGluY3JlbWVudCwgdGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVIb3VyQ2hhbmdlKHRoaXMuc2VsZWN0ZWRGcm9tVGltZVswXS50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlRW5kVGltZUhvdXIoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmVuZFRpbWVIb3VyRXJyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5jcmVtZW50T3JEZWNyZW1lbnRIb3VyKGluY3JlbWVudCwgdGhpcy5zZWxlY3RlZFRvVGltZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kVGltZUhvdXJDaGFuZ2UodGhpcy5zZWxlY3RlZFRvVGltZVswXS50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlRW5kVGltZU1pbnV0ZShpbmNyZW1lbnQ6IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAoIXRoaXMuZW5kVGltZU1pbkVycikge1xyXG4gICAgICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluY3JlbWVudE9yRGVjcmVtZW50TWluKGluY3JlbWVudCwgdGhpcy5zZWxlY3RlZFRvVGltZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kVGltZU1pbkNoYW5nZSh0aGlzLnNlbGVjdGVkVG9UaW1lWzFdLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VTdGFydFRpbWVNaW51dGUoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXJ0VGltZU1pbkVycikge1xyXG4gICAgICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluY3JlbWVudE9yRGVjcmVtZW50TWluKGluY3JlbWVudCwgdGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVNaW5DaGFuZ2UodGhpcy5zZWxlY3RlZEZyb21UaW1lWzFdLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGFydFRpbWVIb3VyQ2hhbmdlKHZhbDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWVIb3VyRXJyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc0hvdXJWYWx1ZUludmFsaWQodmFsKTtcclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydFRpbWVNaW5DaGFuZ2UodmFsOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLnN0YXJ0VGltZU1pbkVyciA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaXNNaW51dGVWYWx1ZUludmFsaWQodmFsKTtcclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBlbmRUaW1lSG91ckNoYW5nZSh2YWw6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuZW5kVGltZUhvdXJFcnIgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmlzSG91clZhbHVlSW52YWxpZCh2YWwpO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGVuZFRpbWVNaW5DaGFuZ2UodmFsOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmVuZFRpbWVNaW5FcnIgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmlzTWludXRlVmFsdWVJbnZhbGlkKHZhbCk7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwbHlTb3J0aW5nT25GaWx0ZXJlZERhdGEoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2hvd1NvcnRDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNTb3J0Q2hhbmdlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnVwZGF0ZVNvcnRNYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZW1wU29ydE9yZGVyLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVEYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMdXJBbmRDc3JDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVEYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMdXJBbmRDc3JDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRmlsdGVyQ2hhbmdlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKHRoaXMudGFibGVEYXRhLCB0aGlzLmlzTHVyQW5kQ3NyQ29tcG9uZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXBwbHlUaW1lRmlsdGVyT25EYXRhKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlciA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0Q3VycmVudFNlbGVjdGVkVGltZUZpbHRlcihcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSxcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWUsXHJcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCxcclxuICAgICAgICAgICAgICAgIHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCxcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGlzRmlsdGVyZWQgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJlT3JkZXJBcHBsaWVkRmlsdGVyc1N0YXRlKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9uZWRUYWJsZURhdGEsXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRUaW1lRmlsdGVyLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5zZXQoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRUaW1lRmlsdGVyLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIik7XHJcblxyXG4gICAgICAgICAgICBpZiAoIWlzRmlsdGVyZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmRlbGV0ZSh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLm5vU29ydGluZ0FwcGxpZWREYXRhID0gY2xvbmVEZWVwKHRoaXMudGFibGVEYXRhKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VUaW1lRmlsdGVyKCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSA9IGNsb25lRGVlcCh0aGlzLmNsb25lZFNlbGVjdGVkRnJvbVRpbWUpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWUgPSBjbG9uZURlZXAodGhpcy5jbG9uZWRTZWxlY3RlZFRvVGltZSk7XHJcbiAgICAgICAgdGhpcy5jbG9zZVRvb2x0aXAuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQ29sdW1uRmlsdGVyKCkge1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY2xlYXJDb2x1bW5GaWx0ZXIoKTtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IGNsb25lRGVlcCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmZpbHRlckRhdGEodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwiXCIpKTtcclxuICAgICAgICB0aGlzLmFubmFTb3J0U2VydmljZS5ub1NvcnRpbmdBcHBsaWVkRGF0YSA9IHRoaXMudGFibGVEYXRhO1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5hbm5hU29ydFNlcnZpY2UuY2hlY2tJZlNvcnRpbmdJc0FwcGxpZWQodGhpcy50YWJsZURhdGEsIHRoaXMuaXNMdXJBbmRDc3JDb21wb25lbnQpO1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZlRoZUN1cnJlbnRGaWx0ZXJUYWIodGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgICAgICB0aGlzLmZpbHRlckFwcGxpZWRUb1RhYmxlLmVtaXQodGhpcy50YWJsZURhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0b3JlU29ydFR5cGVJblRlbXBWYXJpYWJsZShldmVudDogU29ydFR5cGUpIHtcclxuICAgICAgICB0aGlzLnRlbXBTb3J0T3JkZXIgPSBldmVudDtcclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIlxuICAgICpuZ0lmPVwic2hvd0ZpbHRlckhlYWRlclRhYnNcIlxuPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiPlxuICAgICAgICA8cFxuICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItdGFiXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJkYXRhLmxhYmVsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oZGF0YSwgdHJ1ZSlcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT09IGRhdGEua2V5IH1cIlxuICAgICAgICAgICAgKm5nSWY9XCJmaWx0ZXJUYWJPYmplY3RzLmxlbmd0aCA+IDBcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBkYXRhLmxhYmVsIH19XG4gICAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48YW5uYS1jb3JlLXNvcnQtbGliXG4gICAgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiXG4gICAgW25nQ2xhc3NdPVwieyAnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50IH1cIlxuICAgIChzb3J0T3B0aW9uQ2xpY2tlZCk9XCJzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoJGV2ZW50KVwiXG4gICAgW3NvcnRPYmplY3RLZXldPVwiYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpb1wiXG4+PC9hbm5hLWNvcmUtc29ydC1saWI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XG4gICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIlxuICAgICAgICAqbmdJZj1cInNob3dDbGVhckFsbEZpbHRlclwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlQ29sdW1uQ2xlYXJBbGxCdG5cIlxuICAgICAgICAoY2xpY2spPVwiY2xlYXJDb2x1bW5GaWx0ZXIoKVwiXG4gICAgPlxuICAgICAgICBDbGVhciBmaWx0ZXJcbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidGltZS1maWx0ZXItY2hlY2tib3hlc1wiXG4gICAgICAgICpuZ0lmPVwic2hvd0FsbFRpbWVSYW5nZUNoZWNrYm94ZXNcIlxuICAgID5cbiAgICAgICAgPCEtLSBNdWx0aSB0aW1lIG9wdGlvbiBjaGVja2JveCAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGNoZWNrYm94LWNvbnRhaW5lci1wYWRkaW5nXCJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd011bHRpVGltZUNoZWNrYm94XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0TXVsdGlUaW1lQ2hlY2tib3goKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgY2hlY2tfYm94XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIW11bHRpVGltZUNoZWNrYm94Q2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RNdWx0aVRpbWVDaGVja2JveCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJsYWJlbFwiPkluY2x1ZGUgTXVsdGk8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIFplcm8gdGltZSBvcHRpb24gY2hlY2tib3ggLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBjaGVja2JveC1jb250YWluZXItcGFkZGluZ1wiXG4gICAgICAgICAgICAqbmdJZj1cInNob3daZXJvVGltZUNoZWNrYm94XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cInplcm9UaW1lQ2hlY2tib3hDaGVja2VkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RaZXJvVGltZUNoZWNrYm94KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIGNoZWNrX2JveFxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiF6ZXJvVGltZUNoZWNrYm94Q2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RaZXJvVGltZUNoZWNrYm94KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImxhYmVsXCI+SW5jbHVkZSBaZXJvPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBFbnRlciB0aW1lIHJhbmdlIG9wdGlvbiBjaGVja2JveCAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGNoZWNrYm94LWNvbnRhaW5lci1wYWRkaW5nXCJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0VudGVyVGltZUNoZWNrYm94XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cImVudGVyVGltZUNoZWNrYm94Q2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0RW50ZXJUaW1lQ2hlY2tib3goKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgY2hlY2tfYm94XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWVudGVyVGltZUNoZWNrYm94Q2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RFbnRlclRpbWVDaGVja2JveCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJsYWJlbFwiPkVudGVyIHRpbWUgcmFuZ2U8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWxhYmVsLWNvbnRhaW5lclwiPlxuICAgICAgICA8bGFiZWw+e3sgc3RhcnRGcm9tVGV4dCB9fTwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRpbWUtY29udGFpbmVyXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZXJyb3ItYm9yZGVyJzogc3RhcnRUaW1lSG91ckVyciB9XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGcm9tVGltZVswXVwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBwYXR0ZXJuPVwiWzEtMTJdKlwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzdGFydFRpbWVIb3VyQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1tZW51LXVwIHVwd2FyZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZUhvdXIodHJ1ZSlcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLW1lbnUtZG93biBkb3dud2FyZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZUhvdXIoZmFsc2UpXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiPjo8L3NwYW4+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZXJyb3ItYm9yZGVyJzogc3RhcnRUaW1lTWluRXJyIH1cIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEZyb21UaW1lWzFdXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHBhdHRlcm49XCJbMC01OV0qXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInN0YXJ0VGltZU1pbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktbWVudS11cCB1cHdhcmRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VTdGFydFRpbWVNaW51dGUodHJ1ZSlcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLW1lbnUtZG93biBkb3dud2FyZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZU1pbnV0ZShmYWxzZSlcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRnJvbVRpbWVbMl1cIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiQU1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+QU08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJQTVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5QTTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGltZS1sYWJlbC1jb250YWluZXJcIj5cbiAgICAgICAgPGxhYmVsPnt7IGVuZFRvVGV4dCB9fTwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRpbWUtY29udGFpbmVyXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRvVGltZVswXVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdlcnJvci1ib3JkZXInOiBlbmRUaW1lSG91ckVyciB9XCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImVuZFRpbWVIb3VyQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgcGF0dGVybj1cIlsxLTEyXSpcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1tZW51LXVwIHVwd2FyZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZUVuZFRpbWVIb3VyKHRydWUpXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1tZW51LWRvd24gZG93bndhcmRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VFbmRUaW1lSG91cihmYWxzZSlcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCI+Ojwvc3Bhbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBudW1iZXJJbnB1dFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdlcnJvci1ib3JkZXInOiBlbmRUaW1lTWluRXJyIH1cIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRvVGltZVsxXVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJlbmRUaW1lTWluQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgcGF0dGVybj1cIlswLTU5XSpcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1tZW51LXVwIHVwd2FyZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZUVuZFRpbWVNaW51dGUodHJ1ZSlcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLW1lbnUtZG93biBkb3dud2FyZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZUVuZFRpbWVNaW51dGUoZmFsc2UpXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRvVGltZVsyXVwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJBTVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BTTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cIlBNXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlBNPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cImNsb3NlVGltZUZpbHRlcigpXCJcbiAgICA+XG4gICAgICAgIENhbmNlbFxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidXR0b25cIlxuICAgICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuIH1cIlxuICAgICAgICAoY2xpY2spPVwiYXBwbHlUaW1lRmlsdGVycygpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG5cIlxuICAgID5cbiAgICAgICAgQXBwbHlcbiAgICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
|