ngx-edu-sharing-metaqs2 0.9.36 → 0.9.38
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/esm2022/lib/collection-count-history/collection-count-history.component.mjs +3 -3
- package/esm2022/lib/collection-count-history/monthpicker/monthpicker.component.mjs +32 -6
- package/esm2022/lib/components/filter/datepicker/datepicker.component.mjs +32 -6
- package/esm2022/lib/components/quality-matrix/quality_matrix.mjs +167 -163
- package/esm2022/lib/counts-with-history/counts-with-history.component.mjs +103 -85
- package/esm2022/lib/meta-api.service.mjs +1 -1
- package/esm2022/lib/tree-license/tree-license.component.mjs +57 -29
- package/fesm2022/ngx-edu-sharing-metaqs2.mjs +644 -543
- package/fesm2022/ngx-edu-sharing-metaqs2.mjs.map +1 -1
- package/lib/collection-count-history/collection-count-history.component.d.ts +1 -1
- package/lib/collection-count-history/monthpicker/monthpicker.component.d.ts +7 -4
- package/lib/components/filter/datepicker/datepicker.component.d.ts +7 -3
- package/lib/components/quality-matrix/quality_matrix.d.ts +31 -29
- package/lib/counts-with-history/counts-with-history.component.d.ts +38 -20
- package/lib/meta-api.service.d.ts +1 -1
- package/lib/tree-license/tree-license.component.d.ts +12 -7
- package/package.json +1 -1
|
@@ -1,39 +1,45 @@
|
|
|
1
|
-
import { Component, computed,
|
|
1
|
+
import { Component, computed, DestroyRef, Directive, inject, Input, signal } from '@angular/core';
|
|
2
2
|
import { MatCard, MatCardContent, MatCardHeader, MatCardModule, MatCardTitle } from '@angular/material/card';
|
|
3
3
|
import { MatTooltip } from '@angular/material/tooltip';
|
|
4
4
|
import { MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, MatTable, MatTableModule } from '@angular/material/table';
|
|
5
|
-
import { BehaviorSubject,
|
|
5
|
+
import { BehaviorSubject, of, Subject } from 'rxjs';
|
|
6
6
|
import { TranslateModule } from '@ngx-translate/core';
|
|
7
7
|
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
|
|
8
|
+
import { MetaApiService } from '../meta-api.service';
|
|
8
9
|
import { DateTime } from 'luxon';
|
|
9
|
-
import { filter, finalize, map, skipWhile, switchMap, take, tap } from 'rxjs/operators';
|
|
10
|
+
import { distinctUntilChanged, filter, finalize, map, skipWhile, switchMap, take, tap, throttleTime, } from 'rxjs/operators';
|
|
10
11
|
import { FormControl, FormGroup, FormsModule } from '@angular/forms';
|
|
11
12
|
import { DatepickerComponent } from '../components/filter/datepicker/datepicker.component';
|
|
12
13
|
import { MatIcon } from '@angular/material/icon';
|
|
13
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
14
|
+
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
14
15
|
import { MatSlideToggle } from '@angular/material/slide-toggle';
|
|
15
16
|
import { ProgressSpinnerComponent } from '../components/loading_indicator/progress-spinner/progress-spinner.component';
|
|
17
|
+
import { EditorialLinkService } from '../components/editorial-link-service/editorial-link.service';
|
|
18
|
+
import { MatRipple } from '@angular/material/core';
|
|
16
19
|
import * as i0 from "@angular/core";
|
|
17
|
-
import * as i1 from "
|
|
18
|
-
import * as i2 from "
|
|
19
|
-
import * as i3 from "@
|
|
20
|
-
import * as i4 from "@angular/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
this.
|
|
26
|
-
this.
|
|
27
|
-
this.linkService = linkService;
|
|
20
|
+
import * as i1 from "@angular/material/card";
|
|
21
|
+
import * as i2 from "@angular/material/table";
|
|
22
|
+
import * as i3 from "@ngx-translate/core";
|
|
23
|
+
import * as i4 from "@angular/forms";
|
|
24
|
+
export class BaseHistoricDataTableDirective {
|
|
25
|
+
constructor() {
|
|
26
|
+
this.metaApi = inject(MetaApiService);
|
|
27
|
+
this.destroyRef = inject(DestroyRef);
|
|
28
|
+
this.linkService = inject(EditorialLinkService);
|
|
29
|
+
this.columnTranslationkey = null;
|
|
28
30
|
this.loadingCount = signal(0);
|
|
29
31
|
this.isLoading = computed(() => this.loadingCount() > 0);
|
|
32
|
+
this.isHistoryEnabled = signal(false);
|
|
33
|
+
this.isHistoryEnabled$ = toObservable(this.isHistoryEnabled);
|
|
30
34
|
this.timeFilterLoaded = signal(false);
|
|
31
35
|
this.recentTypeCount$ = new BehaviorSubject({ columns: [], rows: [] });
|
|
32
36
|
this.pastTypeCount$ = new BehaviorSubject({ columns: [], rows: [] });
|
|
33
37
|
this.DateTime = DateTime;
|
|
34
38
|
this.columns = signal([]);
|
|
35
|
-
this.
|
|
36
|
-
this.
|
|
39
|
+
this.dataForPastData$ = new Subject();
|
|
40
|
+
this.dataForRecentData$ = new Subject();
|
|
41
|
+
this.startValues$ = this.dataForPastData$.pipe(filter((data) => this.validateLoadingData(data)), distinctUntilChanged((a, b) => this.compareLoadingDataEqual(a, b)), throttleTime(500), switchMap((start) => this.getCountByDate(start)), tap((it) => this.pastTypeCount$.next(it)), takeUntilDestroyed(this.destroyRef));
|
|
42
|
+
this.endValues$ = this.dataForRecentData$.pipe(filter((data) => this.validateLoadingData(data)), distinctUntilChanged((a, b) => this.compareLoadingDataEqual(a, b)), throttleTime(500), switchMap((end) => this.getCountByDate(end)), tap((it) => this.recentTypeCount$.next(it)), tap((it) => this.columns.set(it.columns.slice())), takeUntilDestroyed(this.destroyRef));
|
|
37
43
|
/* In this widget's backend we do have data for today
|
|
38
44
|
* therefore we set the end date to today and use the timerange() endpoint to only set the start date
|
|
39
45
|
*/
|
|
@@ -41,7 +47,11 @@ export class CountsWithHistoryComponent {
|
|
|
41
47
|
start: new FormControl(),
|
|
42
48
|
end: new FormControl(DateTime.utc().startOf('day'), { nonNullable: true }),
|
|
43
49
|
});
|
|
44
|
-
this.
|
|
50
|
+
this.timerangeStart$ = of(undefined).pipe(switchMap(() => this.getAvailableDateRange()), take(1), map((rangeFilter) => this.getStartDateOfRange(rangeFilter)), tap((startDate) => {
|
|
51
|
+
//this is to have a default value for the start date => the min date of the range
|
|
52
|
+
this.range.setControl('start', new FormControl(startDate, { nonNullable: true }));
|
|
53
|
+
this.timeFilterLoaded.set(true);
|
|
54
|
+
}), takeUntilDestroyed(this.destroyRef));
|
|
45
55
|
this.allColumns = computed(() => {
|
|
46
56
|
if (!this.isHistoryEnabled()) {
|
|
47
57
|
return this.recentColumns();
|
|
@@ -57,39 +67,9 @@ export class CountsWithHistoryComponent {
|
|
|
57
67
|
this.pastColumns = computed(() => {
|
|
58
68
|
return this.columns().map((c) => c.id + '_past');
|
|
59
69
|
});
|
|
60
|
-
effect(() => {
|
|
61
|
-
this.range.controls.end.reset();
|
|
62
|
-
if (!this.isHistoryEnabled()) {
|
|
63
|
-
this.range.controls.start.setValue(this.range.controls.end.value.startOf('day'));
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
this.range.controls.start.reset();
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
70
|
}
|
|
70
|
-
|
|
71
|
-
this.
|
|
72
|
-
.pipe(tap((rangeFilter) => {
|
|
73
|
-
const startDate = this.getStartDateOfRange(rangeFilter);
|
|
74
|
-
//this is to have a default value for the start date => the min date of the range
|
|
75
|
-
this.range.setControl('start', new FormControl(startDate, { nonNullable: true }));
|
|
76
|
-
}), finalize(() => {
|
|
77
|
-
this.timeFilterLoaded.set(true);
|
|
78
|
-
this.range.controls.start.reset();
|
|
79
|
-
}), takeUntilDestroyed(this.destroyRef))
|
|
80
|
-
.subscribe();
|
|
81
|
-
this.getCountByDate(this.range.controls.end.value)
|
|
82
|
-
.pipe(tap((response) => {
|
|
83
|
-
this.columns.set(response.columns.slice());
|
|
84
|
-
this.recentTypeCount$.next(response);
|
|
85
|
-
}), takeUntilDestroyed(this.destroyRef))
|
|
86
|
-
.subscribe();
|
|
87
|
-
this.getValuesInDateRange()
|
|
88
|
-
.pipe(tap(([past, recent]) => {
|
|
89
|
-
this.pastTypeCount$.next(past);
|
|
90
|
-
this.recentTypeCount$.next(recent);
|
|
91
|
-
}), takeUntilDestroyed(this.destroyRef))
|
|
92
|
-
.subscribe();
|
|
71
|
+
getAvailableDateRange() {
|
|
72
|
+
return of(undefined).pipe(tap(() => this.loadingCount.update((it) => it + 1)), switchMap(() => this.metaApi.getTimerangeFilter()), filter((filter) => filter != null), tap(() => this.loadingCount.update((it) => it - 1)));
|
|
93
73
|
}
|
|
94
74
|
getStartDateOfRange(rangeFilter) {
|
|
95
75
|
return DateTime.fromISO(rangeFilter.values.find((v) => v.id === 'rangeStart')?.label, {
|
|
@@ -99,26 +79,6 @@ export class CountsWithHistoryComponent {
|
|
|
99
79
|
columnIdent(_index, col) {
|
|
100
80
|
return col.id;
|
|
101
81
|
}
|
|
102
|
-
getAvailableDateRange() {
|
|
103
|
-
this.loadingCount.update((it) => it + 1);
|
|
104
|
-
return this.metaApi.getTimerangeFilter().pipe(filter((filter) => filter != null), finalize(() => this.loadingCount.update((it) => it - 1)));
|
|
105
|
-
}
|
|
106
|
-
getValuesInDateRange() {
|
|
107
|
-
return this.range.valueChanges.pipe(filter((range) => !!range.start?.isValid && !!range.end?.isValid), switchMap((range) => {
|
|
108
|
-
return zip(this.getCountByDate(range.start), this.getCountByDate(range.end));
|
|
109
|
-
}));
|
|
110
|
-
}
|
|
111
|
-
getCountByDate(date) {
|
|
112
|
-
this.loadingCount.update((it) => it + 1);
|
|
113
|
-
const filter = {
|
|
114
|
-
field: 'asOf',
|
|
115
|
-
values: [{ id: date.toISO({ includeOffset: false }), label: '' }],
|
|
116
|
-
};
|
|
117
|
-
return this.metaApi[this.apiMethod]([filter]).pipe(finalize(() => this.loadingCount.update((it) => it - 1)), map((response) => ({
|
|
118
|
-
...response,
|
|
119
|
-
rows: response.rows.toSorted((a, b) => a.meta.label.localeCompare(b.meta.label)),
|
|
120
|
-
})));
|
|
121
|
-
}
|
|
122
82
|
pastTypeCount(row, columnid) {
|
|
123
83
|
if (!this.pastTypeCount$.value.rows.length) {
|
|
124
84
|
return {};
|
|
@@ -143,8 +103,75 @@ export class CountsWithHistoryComponent {
|
|
|
143
103
|
return this.linkService.createLinkForCountsWithHistory(this.sourceType, sourceId, issueId);
|
|
144
104
|
}));
|
|
145
105
|
}
|
|
146
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
147
|
-
static { this.ɵ
|
|
106
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseHistoricDataTableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
107
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: BaseHistoricDataTableDirective, inputs: { apiMethod: "apiMethod", columnTranslationkey: "columnTranslationkey", pageTitle: "pageTitle", sourceType: "sourceType" }, ngImport: i0 }); }
|
|
108
|
+
}
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseHistoricDataTableDirective, decorators: [{
|
|
110
|
+
type: Directive
|
|
111
|
+
}], propDecorators: { apiMethod: [{
|
|
112
|
+
type: Input
|
|
113
|
+
}], columnTranslationkey: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], pageTitle: [{
|
|
116
|
+
type: Input
|
|
117
|
+
}], sourceType: [{
|
|
118
|
+
type: Input,
|
|
119
|
+
args: [{ required: true }]
|
|
120
|
+
}] } });
|
|
121
|
+
export class CountsWithHistoryComponent extends BaseHistoricDataTableDirective {
|
|
122
|
+
ngOnInit() {
|
|
123
|
+
this.apiMethod ??= 'getMaterialTypeCountsByReplicationSource';
|
|
124
|
+
this.range.valueChanges
|
|
125
|
+
.pipe(tap((data) => {
|
|
126
|
+
this.dataForPastData$.next({ date: data.start });
|
|
127
|
+
this.dataForRecentData$.next({ date: data.end });
|
|
128
|
+
}), takeUntilDestroyed(this.destroyRef))
|
|
129
|
+
.subscribe();
|
|
130
|
+
this.isHistoryEnabled$
|
|
131
|
+
.pipe(tap((enabled) => {
|
|
132
|
+
this.range.controls.end.reset();
|
|
133
|
+
if (!enabled) {
|
|
134
|
+
this.startDateSubscription?.unsubscribe();
|
|
135
|
+
this.startValuesSubscription?.unsubscribe();
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
this.range.controls.start.reset();
|
|
139
|
+
if (!this.timeFilterLoaded()) {
|
|
140
|
+
this.startDateSubscription = this.timerangeStart$
|
|
141
|
+
.pipe(take(1), tap(() => {
|
|
142
|
+
this.startValuesSubscription = this.startValues$.subscribe();
|
|
143
|
+
this.range.controls.start.reset();
|
|
144
|
+
}))
|
|
145
|
+
.subscribe();
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
this.startValuesSubscription = this.startValues$.subscribe();
|
|
149
|
+
this.range.controls.start.reset();
|
|
150
|
+
}
|
|
151
|
+
}), takeUntilDestroyed(this.destroyRef))
|
|
152
|
+
.subscribe();
|
|
153
|
+
this.endValues$.subscribe();
|
|
154
|
+
}
|
|
155
|
+
getCountByDate(data) {
|
|
156
|
+
const filter = {
|
|
157
|
+
field: 'asOf',
|
|
158
|
+
values: [{ id: data.date.toISO({ includeOffset: false }), label: '' }],
|
|
159
|
+
};
|
|
160
|
+
return of(undefined).pipe(tap(() => this.loadingCount.update((it) => it + 1)), switchMap(() => {
|
|
161
|
+
return this.metaApi[this.apiMethod]([filter]).pipe(finalize(() => this.loadingCount.update((it) => it - 1)));
|
|
162
|
+
}), map((response) => ({
|
|
163
|
+
...response,
|
|
164
|
+
rows: response.rows.toSorted((a, b) => a.meta.label.localeCompare(b.meta.label)),
|
|
165
|
+
})));
|
|
166
|
+
}
|
|
167
|
+
validateLoadingData(data) {
|
|
168
|
+
return data.date?.isValid ?? false;
|
|
169
|
+
}
|
|
170
|
+
compareLoadingDataEqual(a, b) {
|
|
171
|
+
return a.date.equals(b.date);
|
|
172
|
+
}
|
|
173
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CountsWithHistoryComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
174
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CountsWithHistoryComponent, isStandalone: true, selector: "metaqs2-counts-with-history", usesInheritance: true, ngImport: i0, template: "<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title data-test-id=\"page-title\">\n Qualit\u00E4tsmetrik: {{ pageTitle | translate }}{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content class=\"toolbar\">\n <metaqs2-datepicker style=\"display: inline-block\" matRipple [disabled]=\"isLoading() || !isHistoryEnabled()\" [inputGroup]=\"range\" *ngIf=\"timeFilterLoaded() && isHistoryEnabled()\"></metaqs2-datepicker>\n <div style=\"flex: 1 1 auto\"></div>\n <mat-slide-toggle [ngModel]=\"isHistoryEnabled()\" (ngModelChange)=\"isHistoryEnabled.set($event)\" [disabled]=\"isLoading()\">\n <label>Zeige historische Daten</label>\n </mat-slide-toggle>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n <table [class.while-loading]=\"isLoading()\" mat-table [dataSource]=\"recentTypeCount$.value.rows\"\n class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th [attr.rowspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef>\n <div>Quelle</div>\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [matTooltip]=\"row.meta.alt_label\"\n class=\"label-col mat-cell-level-{{row.meta.level + 1}}\"\n >\n {{ row.meta.label }}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef [matTooltip]=\"col.label\">\n {{ columnTranslationkey ? (columnTranslationkey + col.label | translate) : col.label }}\n </th>\n </ng-container>\n <!-- one column for each type for the most current date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef\n matTooltip=\"no tooltip\">{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}\n </th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">\n <a [attr.href]=\"openInEditor(row.meta.id, col.id) | async\" target=\"editor_frontend\">{{ row.counts[col.id] ?? '\u2013' }}</a>\n </td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\">\n {{ (pastTypeCount$ | async)?.rows?.length ? range.controls.start.value.toLocaleString(DateTime.DATE_SHORT) : 'no past data' }}\n </th>\n <td class=\"past-data-cell\" mat-cell *matCellDef=\"let row;\" >\n <ng-container *ngIf=\"(pastTypeCount$ | async)?.rows?.length && pastTypeCount(row, col.id) as trend\">\n <span [class]=\"trend.trend\"> {{ trend.value ?? '\u2013' }}\n <mat-icon *ngIf=\"trend.value\" aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" /></span>\n <span class=\"cdk-visually-hidden\">{{ trend.trend }}</span>\n </ng-container>\n </td>\n </ng-container>\n <!-- generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat(typeColumns()); sticky:true;\"></tr>\n <tr [hidden]=\"!isHistoryEnabled()\" mat-header-row *matHeaderRowDef=\"allColumns(); sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(allColumns())\"></tr>\n\n </table>\n</mat-card>\n", styles: [".while-loading{filter:blur(2px)}tr:nth-child(2n){background-color:#e4e4e4}tr:nth-child(2n)>td.label-col,tr:nth-child(2n) td.recent-data-cell{border-right:1px solid white}tr:nth-child(odd){background-color:#fff}tr:nth-child(odd)>td.label-col,tr:nth-child(odd) td.recent-data-cell{border-right:1px solid #e4e4e4}td.label-col{text-align:left}.mat-mdc-header-cell,.mat-mdc-cell{text-align:center}.mat-mdc-header-cell a[href],.mat-mdc-cell a[href]{color:var(--mat-table-row-item-label-text-color);cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a[href]:hover,.mat-mdc-cell a[href]:hover{text-decoration:underline}.mat-mdc-header-cell mat-icon,.mat-mdc-cell mat-icon{margin-left:5px;vertical-align:middle}.trending_down{color:#4abeff}.trending_up{color:#c20808}.toolbar,.actionbar{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: DatepickerComponent, selector: "metaqs2-datepicker", inputs: ["disabled", "inputGroup"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: ProgressSpinnerComponent, selector: "metaqs2-progress-spinner", inputs: ["color", "diameter", "strokeWidth", "backdropEnabled", "positionGloballyCenter", "displayProgressSpinner"] }, { kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }] }); }
|
|
148
175
|
}
|
|
149
176
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CountsWithHistoryComponent, decorators: [{
|
|
150
177
|
type: Component,
|
|
@@ -170,16 +197,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
170
197
|
MatSlideToggle,
|
|
171
198
|
AsyncPipe,
|
|
172
199
|
ProgressSpinnerComponent,
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
args: [{ required: true }]
|
|
177
|
-
}], columnTranslationkey: [{
|
|
178
|
-
type: Input
|
|
179
|
-
}], pageTitle: [{
|
|
180
|
-
type: Input
|
|
181
|
-
}], sourceType: [{
|
|
182
|
-
type: Input,
|
|
183
|
-
args: [{ required: true }]
|
|
184
|
-
}] } });
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRzLXdpdGgtaGlzdG9yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1tZXRhLXdpZGdldHMtbGliL3NyYy9saWIvY291bnRzLXdpdGgtaGlzdG9yeS9jb3VudHMtd2l0aC1oaXN0b3J5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb3VudHMtd2l0aC1oaXN0b3J5L2NvdW50cy13aXRoLWhpc3RvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckgsT0FBTyxFQUFFLGVBQWUsRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcs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QjtzQkFEbkIsS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sVUFBVTtzQkFEVCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIERlc3Ryb3lSZWYsIGVmZmVjdCwgSW5wdXQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRDYXJkLCBNYXRDYXJkQ29udGVudCwgTWF0Q2FyZEhlYWRlciwgTWF0Q2FyZE1vZHVsZSwgTWF0Q2FyZFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQgeyBNYXRUb29sdGlwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBNYXRIZWFkZXJSb3csIE1hdEhlYWRlclJvd0RlZiwgTWF0Um93LCBNYXRSb3dEZWYsIE1hdFRhYmxlLCBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgemlwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNZXRhQXBpU2VydmljZSB9IGZyb20gJy4uL21ldGEtYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsdGVyLCBNYXRyaXhSb3dXaXRoQ291bnRzLCBNYXRyaXhXaXRoQ291bnRzLCBRdWFsaXR5TWF0cml4SGVhZGVyIH0gZnJvbSAnLi4vamF2YS1hcGknO1xuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgeyBmaWx0ZXIsIGZpbmFsaXplLCBtYXAsIHNraXBXaGlsZSwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2ZpbHRlci9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvbG9hZGluZ19pbmRpY2F0b3IvcHJvZ3Jlc3Mtc3Bpbm5lci9wcm9ncmVzcy1zcGlubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFZGl0b3JpYWxMaW5rU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvZWRpdG9yaWFsLWxpbmstc2VydmljZS9lZGl0b3JpYWwtbGluay5zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgTWV0aG9kVHlwZSA9XG4gIHwgKChpdDogRmlsdGVyW10pID0+IE9ic2VydmFibGU8TWF0cml4V2l0aENvdW50cz4pXG4gIHwgKCh4OiBzdHJpbmcsIGl0OiBGaWx0ZXJbXSkgPT4gT2JzZXJ2YWJsZTxNYXRyaXhXaXRoQ291bnRzPik7XG5cbmV4cG9ydCB0eXBlIFBpY2tLZXlzQnlQcm9wZXJ0eVR5cGU8VE9iamVjdCBleHRlbmRzIG9iamVjdCwgVFByb3BlcnR5VHlwZT4gPSB7XG4gIFtUS2V5IGluIGtleW9mIFRPYmplY3RdOiBUT2JqZWN0W1RLZXldIGV4dGVuZHMgVFByb3BlcnR5VHlwZSA/IFRLZXkgOiBuZXZlcjtcbn1ba2V5b2YgVE9iamVjdF07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21ldGFxczItY291bnRzLXdpdGgtaGlzdG9yeScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRDYXJkTW9kdWxlLFxuICAgIE1hdENhcmQsXG4gICAgTWF0Q2FyZEhlYWRlcixcbiAgICBNYXRDYXJkVGl0bGUsXG4gICAgTWF0Q2FyZENvbnRlbnQsXG4gICAgTWF0VG9vbHRpcCxcbiAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICBNYXRUYWJsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTWF0SGVhZGVyUm93LFxuICAgIE1hdEhlYWRlclJvd0RlZixcbiAgICBNYXRSb3csXG4gICAgTWF0Um93RGVmLFxuICAgIE5nRm9yT2YsXG4gICAgRGF0ZXBpY2tlckNvbXBvbmVudCxcbiAgICBNYXRJY29uLFxuICAgIE5nSWYsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIFByb2dyZXNzU3Bpbm5lckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvdW50cy13aXRoLWhpc3RvcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY291bnRzLXdpdGgtaGlzdG9yeS5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIENvdW50c1dpdGhIaXN0b3J5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvYWRpbmdDb3VudCA9IHNpZ25hbCgwKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzTG9hZGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMubG9hZGluZ0NvdW50KCkgPiAwKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpbWVGaWx0ZXJMb2FkZWQgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVjZW50VHlwZUNvdW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF0cml4V2l0aENvdW50cz4oeyBjb2x1bW5zOiBbXSwgcm93czogW10gfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBwYXN0VHlwZUNvdW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF0cml4V2l0aENvdW50cz4oeyBjb2x1bW5zOiBbXSwgcm93czogW10gfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBEYXRlVGltZSA9IERhdGVUaW1lO1xuICBwdWJsaWMgY29sdW1ucyA9IHNpZ25hbChbXSBhcyBBcnJheTxRdWFsaXR5TWF0cml4SGVhZGVyPik7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgYXBpTWV0aG9kOiBQaWNrS2V5c0J5UHJvcGVydHlUeXBlPE1ldGFBcGlTZXJ2aWNlLCBNZXRob2RUeXBlPiA9ICdnZXRNYXRlcmlhbFR5cGVDb3VudHNCeVJlcGxpY2F0aW9uU291cmNlJztcblxuICBASW5wdXQoKVxuICBjb2x1bW5UcmFuc2xhdGlvbmtleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpXG4gIHBhZ2VUaXRsZTogc3RyaW5nO1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBzb3VyY2VUeXBlOiAncmVwbGljYXRpb25Tb3VyY2UnIHwgJ2NvbGxlY3Rpb24nO1xuXG4gIC8qIEluIHRoaXMgd2lkZ2V0J3MgYmFja2VuZCB3ZSBkbyBoYXZlIGRhdGEgZm9yIHRvZGF5XG4gICAqIHRoZXJlZm9yZSB3ZSBzZXQgdGhlIGVuZCBkYXRlIHRvIHRvZGF5IGFuZCB1c2UgdGhlIHRpbWVyYW5nZSgpIGVuZHBvaW50IHRvIG9ubHkgc2V0IHRoZSBzdGFydCBkYXRlXG4gICAqL1xuICByZWFkb25seSByYW5nZTogRm9ybUdyb3VwPHtcbiAgICBzdGFydDogRm9ybUNvbnRyb2w8RGF0ZVRpbWU8Ym9vbGVhbj4+O1xuICAgIGVuZDogRm9ybUNvbnRyb2w8RGF0ZVRpbWU8Ym9vbGVhbj4+O1xuICB9PiA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIHN0YXJ0OiBuZXcgRm9ybUNvbnRyb2woKSxcbiAgICBlbmQ6IG5ldyBGb3JtQ29udHJvbChEYXRlVGltZS51dGMoKS5zdGFydE9mKCdkYXknKSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgfSk7XG4gIHJlYWRvbmx5IGlzSGlzdG9yeUVuYWJsZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHJlYWRvbmx5IGFsbENvbHVtbnMgPSBjb21wdXRlZDxBcnJheTxzdHJpbmc+PigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmlzSGlzdG9yeUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVjZW50Q29sdW1ucygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wYXN0Q29sdW1ucygpLmZsYXRNYXAoKGUsIGkpID0+IFtlLCB0aGlzLnJlY2VudENvbHVtbnMoKVtpXV0pO1xuICB9KTtcblxuICByZWFkb25seSB0eXBlQ29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zKCkubWFwKChjKSA9PiBjLmlkICsgJ190eXBlJyk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHJlY2VudENvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucygpLm1hcCgoYykgPT4gYy5pZCArICdfcmVjZW50Jyk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHBhc3RDb2x1bW5zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMoKS5tYXAoKGMpID0+IGMuaWQgKyAnX3Bhc3QnKTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1ldGFBcGk6IE1ldGFBcGlTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBkZXN0cm95UmVmOiBEZXN0cm95UmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlua1NlcnZpY2U6IEVkaXRvcmlhbExpbmtTZXJ2aWNlXG4gICkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnJhbmdlLmNvbnRyb2xzLmVuZC5yZXNldCgpO1xuICAgICAgaWYgKCF0aGlzLmlzSGlzdG9yeUVuYWJsZWQoKSkge1xuICAgICAgICB0aGlzLnJhbmdlLmNvbnRyb2xzLnN0YXJ0LnNldFZhbHVlKHRoaXMucmFuZ2UuY29udHJvbHMuZW5kLnZhbHVlLnN0YXJ0T2YoJ2RheScpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmFuZ2UuY29udHJvbHMuc3RhcnQucmVzZXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0QXZhaWxhYmxlRGF0ZVJhbmdlKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHJhbmdlRmlsdGVyKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5nZXRTdGFydERhdGVPZlJhbmdlKHJhbmdlRmlsdGVyKTtcbiAgICAgICAgICAvL3RoaXMgaXMgdG8gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBzdGFydCBkYXRlID0+IHRoZSBtaW4gZGF0ZSBvZiB0aGUgcmFuZ2VcbiAgICAgICAgICB0aGlzLnJhbmdlLnNldENvbnRyb2woJ3N0YXJ0JywgbmV3IEZvcm1Db250cm9sPERhdGVUaW1lPHRydWU+PihzdGFydERhdGUsIHsgbm9uTnVsbGFibGU6IHRydWUgfSkpO1xuICAgICAgICB9KSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudGltZUZpbHRlckxvYWRlZC5zZXQodHJ1ZSk7XG4gICAgICAgICAgdGhpcy5yYW5nZS5jb250cm9scy5zdGFydC5yZXNldCgpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmdldENvdW50QnlEYXRlKHRoaXMucmFuZ2UuY29udHJvbHMuZW5kLnZhbHVlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLmNvbHVtbnMuc2V0KHJlc3BvbnNlLmNvbHVtbnMuc2xpY2UoKSk7XG4gICAgICAgICAgdGhpcy5yZWNlbnRUeXBlQ291bnQkLm5leHQocmVzcG9uc2UpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmdldFZhbHVlc0luRGF0ZVJhbmdlKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKFtwYXN0LCByZWNlbnRdKSA9PiB7XG4gICAgICAgICAgdGhpcy5wYXN0VHlwZUNvdW50JC5uZXh0KHBhc3QpO1xuICAgICAgICAgIHRoaXMucmVjZW50VHlwZUNvdW50JC5uZXh0KHJlY2VudCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdGFydERhdGVPZlJhbmdlKHJhbmdlRmlsdGVyOiBGaWx0ZXIpIHtcbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUlTTyhyYW5nZUZpbHRlci52YWx1ZXMuZmluZCgodikgPT4gdi5pZCA9PT0gJ3JhbmdlU3RhcnQnKT8ubGFiZWwhLCB7XG4gICAgICB6b25lOiAndXRjJyxcbiAgICB9KS5zdGFydE9mKCdkYXknKSBhcyBEYXRlVGltZTx0cnVlPjtcbiAgfVxuXG4gIGNvbHVtbklkZW50KF9pbmRleDogbnVtYmVyLCBjb2w6IFF1YWxpdHlNYXRyaXhIZWFkZXIpIHtcbiAgICByZXR1cm4gY29sLmlkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBdmFpbGFibGVEYXRlUmFuZ2UoKSB7XG4gICAgdGhpcy5sb2FkaW5nQ291bnQudXBkYXRlKChpdCkgPT4gaXQgKyAxKTtcbiAgICByZXR1cm4gdGhpcy5tZXRhQXBpLmdldFRpbWVyYW5nZUZpbHRlcigpLnBpcGUoXG4gICAgICBmaWx0ZXIoKGZpbHRlcik6IGZpbHRlciBpcyBGaWx0ZXIgPT4gZmlsdGVyICE9IG51bGwpLFxuICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5sb2FkaW5nQ291bnQudXBkYXRlKChpdCkgPT4gaXQgLSAxKSlcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFZhbHVlc0luRGF0ZVJhbmdlKCkge1xuICAgIHJldHVybiB0aGlzLnJhbmdlLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgZmlsdGVyKFxuICAgICAgICAocmFuZ2UpOiByYW5nZSBpcyB7IHN0YXJ0OiBEYXRlVGltZTx0cnVlPjsgZW5kOiBEYXRlVGltZTx0cnVlPiB9ID0+XG4gICAgICAgICAgISFyYW5nZS5zdGFydD8uaXNWYWxpZCAmJiAhIXJhbmdlLmVuZD8uaXNWYWxpZFxuICAgICAgKSxcbiAgICAgIHN3aXRjaE1hcCgocmFuZ2UpID0+IHtcbiAgICAgICAgcmV0dXJuIHppcCh0aGlzLmdldENvdW50QnlEYXRlKHJhbmdlLnN0YXJ0KSwgdGhpcy5nZXRDb3VudEJ5RGF0ZShyYW5nZS5lbmQpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb3VudEJ5RGF0ZShkYXRlOiBEYXRlVGltZSk6IE9ic2VydmFibGU8TWF0cml4V2l0aENvdW50cz4ge1xuICAgIHRoaXMubG9hZGluZ0NvdW50LnVwZGF0ZSgoaXQpID0+IGl0ICsgMSk7XG4gICAgY29uc3QgZmlsdGVyOiBGaWx0ZXIgPSB7XG4gICAgICBmaWVsZDogJ2FzT2YnLFxuICAgICAgdmFsdWVzOiBbeyBpZDogZGF0ZS50b0lTTyh7IGluY2x1ZGVPZmZzZXQ6IGZhbHNlIH0pISwgbGFiZWw6ICcnIH1dLFxuICAgIH07XG5cbiAgICByZXR1cm4gKHRoaXMubWV0YUFwaVt0aGlzLmFwaU1ldGhvZF0gYXMgKGZpbHRlcnM6IEZpbHRlcltdKSA9PiBPYnNlcnZhYmxlPE1hdHJpeFdpdGhDb3VudHM+KShbZmlsdGVyXSkucGlwZShcbiAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMubG9hZGluZ0NvdW50LnVwZGF0ZSgoaXQpID0+IGl0IC0gMSkpLFxuICAgICAgbWFwKChyZXNwb25zZSkgPT4gKHtcbiAgICAgICAgLi4ucmVzcG9uc2UsXG4gICAgICAgIHJvd3M6IHJlc3BvbnNlLnJvd3MudG9Tb3J0ZWQoKGEsIGIpID0+IGEubWV0YS5sYWJlbC5sb2NhbGVDb21wYXJlKGIubWV0YS5sYWJlbCkpLFxuICAgICAgfSkpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXN0VHlwZUNvdW50KFxuICAgIHJvdzogTWF0cml4Um93V2l0aENvdW50cyxcbiAgICBjb2x1bW5pZDogc3RyaW5nXG4gICk6IHsgZGVsdGE/OiBudW1iZXI7IHRyZW5kPzogc3RyaW5nOyB2YWx1ZT86IG51bWJlciB9IHtcbiAgICBpZiAoIXRoaXMucGFzdFR5cGVDb3VudCQudmFsdWUucm93cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgcGFzdF9yb3cgPSB0aGlzLnBhc3RUeXBlQ291bnQkLnZhbHVlLnJvd3MuZmluZCgocHIpID0+IHByLm1ldGEuaWQgPT0gcm93Lm1ldGEuaWQpO1xuICAgIGNvbnN0IHBhc3RfY29sdW1uID0gdGhpcy5wYXN0VHlwZUNvdW50JC52YWx1ZS5jb2x1bW5zLmZpbmQoKGMpID0+IGMuaWQgPT0gY29sdW1uaWQpO1xuICAgIGlmICghcGFzdF9yb3cgfHwgIXBhc3RfY29sdW1uKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gcm93LmNvdW50c1tjb2x1bW5pZF07XG4gICAgY29uc3QgcGFzdFZhbHVlID0gcGFzdF9yb3cuY291bnRzW2NvbHVtbmlkXTtcblxuICAgIGNvbnN0IGRlbHRhID0gKGN1cnJlbnRWYWx1ZSB8fCAwKSAtIChwYXN0VmFsdWUgfHwgMCk7XG4gICAgY29uc3QgdHJlbmQgPSBkZWx0YSA9PT0gMCA/ICd0cmVuZGluZ19mbGF0JyA6IGRlbHRhIDwgMCA/ICd0cmVuZGluZ19kb3duJyA6ICd0cmVuZGluZ191cCc7XG4gICAgcmV0dXJuIHsgZGVsdGEsIHRyZW5kLCB2YWx1ZTogcGFzdFZhbHVlIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgb3BlbkluRWRpdG9yKHNvdXJjZUlkOiBzdHJpbmcsIGlzc3VlSWQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNvdXJjZVR5cGUgPT09ICdyZXBsaWNhdGlvblNvdXJjZScpIHtcbiAgICAgIC8vIGZpbmQgdGhlIGxvbmcgbmFtZSBmb3IgdGhlIHNvdXJjZVxuICAgICAgc291cmNlSWQgPSB0aGlzLnJlY2VudFR5cGVDb3VudCQudmFsdWUucm93cy5maW5kKChyKSA9PiByLm1ldGEuaWQgPT09IHNvdXJjZUlkKT8ubWV0YS5sYWJlbCB8fCBzb3VyY2VJZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubGlua1NlcnZpY2UudHlwZXNMb2FkZWQkLnBpcGUoXG4gICAgICBza2lwV2hpbGUoKGxvYWRlZCkgPT4gIWxvYWRlZCksXG4gICAgICB0YWtlKDEpLFxuICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGlua1NlcnZpY2UuY3JlYXRlTGlua0ZvckNvdW50c1dpdGhIaXN0b3J5KHRoaXMuc291cmNlVHlwZSwgc291cmNlSWQsIGlzc3VlSWQpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iLCI8bWF0LWNhcmQgYXBwZWFyYW5jZT1cInJhaXNlZFwiPlxuICA8bWF0LWNhcmQtaGVhZGVyICpuZ0lmPVwicGFnZVRpdGxlXCI+XG4gICAgPG1hdC1jYXJkLXRpdGxlIGRhdGEtdGVzdC1pZD1cInBhZ2UtdGl0bGVcIj5cbiAgICAgIFF1YWxpdMOkdHNtZXRyaWs6IHt7IHBhZ2VUaXRsZSB8IHRyYW5zbGF0ZSB9fXt7IGlzTG9hZGluZygpID8gXCI6IExhZGUgbmV1ZSBEYXRlbi5cIiA6IFwiXCIgfX1cbiAgICA8L21hdC1jYXJkLXRpdGxlPlxuICA8L21hdC1jYXJkLWhlYWRlcj5cbiAgPCEtLSBjb25zaWRlciB0byBwdXQgdGhlIGZpbHRlciBpbiB0aGUgdGFibGUgaGVhZGVyIHRvIGF2b2lkIHRoYXQgaXQgaXMgc2Nyb2xsZWQgb3V0IG9mIHZpZXctLT5cbiAgPCEtLSBzaG93IHRoZSBmaWx0ZXIgYWZ0ZXIgdGhlIHZhbHVlcyBhcmUgbG9hZGVkIHRvIGF2b2lkIGxvYWRpbmcgY3VycmVudCBkYXRhIHR3aWNlIC0tPlxuICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cInRvb2xiYXJcIj5cbiAgICA8bWV0YXFzMi1kYXRlcGlja2VyIFtkaXNhYmxlZF09XCJpc0xvYWRpbmcoKSB8fCAhaXNIaXN0b3J5RW5hYmxlZCgpXCIgW2lucHV0R3JvdXBdPVwicmFuZ2VcIiAqbmdJZj1cInRpbWVGaWx0ZXJMb2FkZWQoKSAmJiBpc0hpc3RvcnlFbmFibGVkKClcIj48L21ldGFxczItZGF0ZXBpY2tlcj5cbiAgICA8ZGl2IHN0eWxlPVwiZmxleDogMSAxIGF1dG9cIj48L2Rpdj5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbbmdNb2RlbF09XCJpc0hpc3RvcnlFbmFibGVkKClcIiAobmdNb2RlbENoYW5nZSk9XCJpc0hpc3RvcnlFbmFibGVkLnNldCgkZXZlbnQpXCIgW2Rpc2FibGVkXT1cImlzTG9hZGluZygpXCIgKm5nSWY9XCJ0aW1lRmlsdGVyTG9hZGVkKClcIj5cbiAgICAgIDxsYWJlbD5aZWlnZSBoaXN0b3Jpc2NoZSBEYXRlbjwvbGFiZWw+XG4gICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICA8L21hdC1jYXJkLWNvbnRlbnQ+XG48L21hdC1jYXJkPlxuPG1hdC1jYXJkPlxuICA8bWV0YXFzMi1wcm9ncmVzcy1zcGlubmVyIFtkaXNwbGF5UHJvZ3Jlc3NTcGlubmVyXT1cImlzTG9hZGluZygpXCI+PC9tZXRhcXMyLXByb2dyZXNzLXNwaW5uZXI+XG4gIDx0YWJsZSBbY2xhc3Mud2hpbGUtbG9hZGluZ109XCJpc0xvYWRpbmcoKVwiIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJyZWNlbnRUeXBlQ291bnQkLnZhbHVlLnJvd3NcIlxuICAgICAgICAgY2xhc3M9XCJxdWFsaXR5LW1hdHJpeFwiPlxuICAgIDwhLS0gRGVmaW5lIGNvbHVtbnMgb2YgdGFibGUgLS0+XG4gICAgPCEtLSBSb3cgSGVhZGVyIENvbHVtbiAtLT5cbiAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImxhYmVsLWNvbFwiIHN0aWNreT5cbiAgICAgIDx0aCBbYXR0ci5yb3dzcGFuXT1cImlzSGlzdG9yeUVuYWJsZWQoKSA/ICcyJyA6ICcxJ1wiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgPGRpdj5RdWVsbGU8L2Rpdj5cbiAgICAgIDwvdGg+XG4gICAgICA8dGRcbiAgICAgICAgbWF0LWNlbGxcbiAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93XCJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwicm93Lm1ldGEuYWx0X2xhYmVsXCJcbiAgICAgICAgY2xhc3M9XCJsYWJlbC1jb2wgbWF0LWNlbGwtbGV2ZWwte3tyb3cubWV0YS5sZXZlbCArIDF9fVwiXG4gICAgICA+XG4gICAgICAgIHt7IHJvdy5tZXRhLmxhYmVsIH19XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gb25lIGNvbHVtbiBmb3IgZWFjaCB0eXBlIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiAocmVjZW50VHlwZUNvdW50JCB8IGFzeW5jKT8uY29sdW1uczsgdHJhY2tCeTpjb2x1bW5JZGVudFwiXG4gICAgICAgICAgICAgICAgICBbbWF0Q29sdW1uRGVmXT1cImNvbC5pZCArICdfdHlwZSdcIj5cbiAgICAgIDx0aCBbYXR0ci5jb2xzcGFuXT1cImlzSGlzdG9yeUVuYWJsZWQoKSA/ICcyJyA6ICcxJ1wiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBbbWF0VG9vbHRpcF09XCJjb2wubGFiZWxcIj5cbiAgICAgICAge3sgY29sdW1uVHJhbnNsYXRpb25rZXkgPyAoY29sdW1uVHJhbnNsYXRpb25rZXkgKyBjb2wubGFiZWwgfCB0cmFuc2xhdGUpIDogY29sLmxhYmVsIH19XG4gICAgICA8L3RoPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gb25lIGNvbHVtbiBmb3IgZWFjaCB0eXBlIGZvciB0aGUgbW9zdCBjdXJyZW50IGRhdGUtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgKHJlY2VudFR5cGVDb3VudCQgfCBhc3luYyk/LmNvbHVtbnM7IHRyYWNrQnk6Y29sdW1uSWRlbnRcIlxuICAgICAgICAgICAgICAgICAgW21hdENvbHVtbkRlZl09XCJjb2wuaWQgKyAnX3JlY2VudCdcIj5cbiAgICAgIDx0aCBjbGFzcz1cInJlY2VudC1kYXRhLWNlbGxcIiBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWZcbiAgICAgICAgICBtYXRUb29sdGlwPVwibm8gdG9vbHRpcFwiPnt7IHJhbmdlLmNvbnRyb2xzLmVuZC52YWx1ZS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX1NIT1JUKSB9fVxuICAgICAgPC90aD5cbiAgICAgIDx0ZCBjbGFzcz1cInJlY2VudC1kYXRhLWNlbGxcIiBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgPGEgW2F0dHIuaHJlZl09XCJvcGVuSW5FZGl0b3Iocm93Lm1ldGEuaWQsIGNvbC5pZCkgfCBhc3luY1wiIHRhcmdldD1cImVkaXRvcl9mcm9udGVuZFwiPnt7IHJvdy5jb3VudHNbY29sLmlkXSA/PyAn4oCTJyB9fTwvYT5cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSBvbmUgY29sdW1uIGZvciBlYWNoIHR5cGUgZm9yIHRoZSBvbGRlciBkYXRlLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIChyZWNlbnRUeXBlQ291bnQkIHwgYXN5bmMpPy5jb2x1bW5zOyB0cmFja0J5OmNvbHVtbklkZW50XCJcbiAgICAgICAgICAgICAgICAgIFttYXRDb2x1bW5EZWZdPVwiY29sLmlkICsgJ19wYXN0J1wiPlxuICAgICAgPHRoIGNsYXNzPVwicGFzdC1kYXRhLWNlbGxcIiBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0VG9vbHRpcD1cIm5vIHRvb2x0aXBcIj5cbiAgICAgICAge3sgKHBhc3RUeXBlQ291bnQkIHwgYXN5bmMpPy5yb3dzPy5sZW5ndGggPyByYW5nZS5jb250cm9scy5zdGFydC52YWx1ZS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX1NIT1JUKSA6ICdubyBwYXN0IGRhdGEnIH19XG4gICAgICA8L3RoPlxuICAgICAgPHRkIGNsYXNzPVwicGFzdC1kYXRhLWNlbGxcIiBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3c7XCIgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHBhc3RUeXBlQ291bnQkIHwgYXN5bmMpPy5yb3dzPy5sZW5ndGggJiYgcGFzdFR5cGVDb3VudChyb3csIGNvbC5pZCkgYXMgdHJlbmRcIj5cbiAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwidHJlbmQudHJlbmRcIj4ge3sgdHJlbmQudmFsdWUgPz8gJ+KAkycgfX1cbiAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInRyZW5kLnZhbHVlXCIgYXJpYS1oaWRkZW49XCJmYWxzZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwidHJlbmQudHJlbmRcIiBbZm9udEljb25dPVwidHJlbmQudHJlbmQhXCIgLz48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjZGstdmlzdWFsbHktaGlkZGVuXCI+e3sgdHJlbmQudHJlbmQgfX08L3NwYW4+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIGdlbmVyYXRlIGFjdHVhbCB0YWJsZSAtLT5cbiAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cIlsnbGFiZWwtY29sJ10uY29uY2F0KHR5cGVDb2x1bW5zKCkpOyBzdGlja3k6dHJ1ZTtcIj48L3RyPlxuICAgIDx0ciBbaGlkZGVuXT1cIiFpc0hpc3RvcnlFbmFibGVkKClcIiBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiYWxsQ29sdW1ucygpOyBzdGlja3k6IHRydWU7XCI+PC90cj5cbiAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydsYWJlbC1jb2wnXS5jb25jYXQoYWxsQ29sdW1ucygpKVwiPjwvdHI+XG5cbiAgPC90YWJsZT5cbjwvbWF0LWNhcmQ+XG4iXX0=
|
|
200
|
+
MatRipple,
|
|
201
|
+
], template: "<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title data-test-id=\"page-title\">\n Qualit\u00E4tsmetrik: {{ pageTitle | translate }}{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content class=\"toolbar\">\n <metaqs2-datepicker style=\"display: inline-block\" matRipple [disabled]=\"isLoading() || !isHistoryEnabled()\" [inputGroup]=\"range\" *ngIf=\"timeFilterLoaded() && isHistoryEnabled()\"></metaqs2-datepicker>\n <div style=\"flex: 1 1 auto\"></div>\n <mat-slide-toggle [ngModel]=\"isHistoryEnabled()\" (ngModelChange)=\"isHistoryEnabled.set($event)\" [disabled]=\"isLoading()\">\n <label>Zeige historische Daten</label>\n </mat-slide-toggle>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n <table [class.while-loading]=\"isLoading()\" mat-table [dataSource]=\"recentTypeCount$.value.rows\"\n class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th [attr.rowspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef>\n <div>Quelle</div>\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [matTooltip]=\"row.meta.alt_label\"\n class=\"label-col mat-cell-level-{{row.meta.level + 1}}\"\n >\n {{ row.meta.label }}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef [matTooltip]=\"col.label\">\n {{ columnTranslationkey ? (columnTranslationkey + col.label | translate) : col.label }}\n </th>\n </ng-container>\n <!-- one column for each type for the most current date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef\n matTooltip=\"no tooltip\">{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}\n </th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">\n <a [attr.href]=\"openInEditor(row.meta.id, col.id) | async\" target=\"editor_frontend\">{{ row.counts[col.id] ?? '\u2013' }}</a>\n </td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\">\n {{ (pastTypeCount$ | async)?.rows?.length ? range.controls.start.value.toLocaleString(DateTime.DATE_SHORT) : 'no past data' }}\n </th>\n <td class=\"past-data-cell\" mat-cell *matCellDef=\"let row;\" >\n <ng-container *ngIf=\"(pastTypeCount$ | async)?.rows?.length && pastTypeCount(row, col.id) as trend\">\n <span [class]=\"trend.trend\"> {{ trend.value ?? '\u2013' }}\n <mat-icon *ngIf=\"trend.value\" aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" /></span>\n <span class=\"cdk-visually-hidden\">{{ trend.trend }}</span>\n </ng-container>\n </td>\n </ng-container>\n <!-- generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat(typeColumns()); sticky:true;\"></tr>\n <tr [hidden]=\"!isHistoryEnabled()\" mat-header-row *matHeaderRowDef=\"allColumns(); sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(allColumns())\"></tr>\n\n </table>\n</mat-card>\n", styles: [".while-loading{filter:blur(2px)}tr:nth-child(2n){background-color:#e4e4e4}tr:nth-child(2n)>td.label-col,tr:nth-child(2n) td.recent-data-cell{border-right:1px solid white}tr:nth-child(odd){background-color:#fff}tr:nth-child(odd)>td.label-col,tr:nth-child(odd) td.recent-data-cell{border-right:1px solid #e4e4e4}td.label-col{text-align:left}.mat-mdc-header-cell,.mat-mdc-cell{text-align:center}.mat-mdc-header-cell a[href],.mat-mdc-cell a[href]{color:var(--mat-table-row-item-label-text-color);cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a[href]:hover,.mat-mdc-cell a[href]:hover{text-decoration:underline}.mat-mdc-header-cell mat-icon,.mat-mdc-cell mat-icon{margin-left:5px;vertical-align:middle}.trending_down{color:#4abeff}.trending_up{color:#c20808}.toolbar,.actionbar{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:.5rem}\n"] }]
|
|
202
|
+
}] });
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRzLXdpdGgtaGlzdG9yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1tZXRhLXdpZGdldHMtbGliL3NyYy9saWIvY291bnRzLXdpdGgtaGlzdG9yeS9jb3VudHMtd2l0aC1oaXN0b3J5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb3VudHMtd2l0aC1oaXN0b3J5L2NvdW50cy13aXRoLWhpc3RvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNySCxPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQWtCLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNqQyxP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d0JBQXdCO3dCQUN4QixTQUFTO3FCQUNWIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2FyZCwgTWF0Q2FyZENvbnRlbnQsIE1hdENhcmRIZWFkZXIsIE1hdENhcmRNb2R1bGUsIE1hdENhcmRUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgTWF0SGVhZGVyUm93LCBNYXRIZWFkZXJSb3dEZWYsIE1hdFJvdywgTWF0Um93RGVmLCBNYXRUYWJsZSwgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBVbnN1YnNjcmliYWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWV0YUFwaVNlcnZpY2UgfSBmcm9tICcuLi9tZXRhLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlciwgTWF0cml4Um93V2l0aENvdW50cywgTWF0cml4V2l0aENvdW50cywgUXVhbGl0eU1hdHJpeEhlYWRlciB9IGZyb20gJy4uL2phdmEtYXBpJztcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nO1xuaW1wb3J0IHtcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgZmluYWxpemUsXG4gIG1hcCxcbiAgc2tpcFdoaWxlLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRhcCxcbiAgdGhyb3R0bGVUaW1lLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2ZpbHRlci9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9sb2FkaW5nX2luZGljYXRvci9wcm9ncmVzcy1zcGlubmVyL3Byb2dyZXNzLXNwaW5uZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEVkaXRvcmlhbExpbmtTZXJ2aWNlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9lZGl0b3JpYWwtbGluay1zZXJ2aWNlL2VkaXRvcmlhbC1saW5rLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0UmlwcGxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFBpY2tLZXlzQnlQcm9wZXJ0eVR5cGU8VE9iamVjdCBleHRlbmRzIG9iamVjdCwgVFByb3BlcnR5VHlwZT4gPSB7XG4gIFtUS2V5IGluIGtleW9mIFRPYmplY3RdOiBUT2JqZWN0W1RLZXldIGV4dGVuZHMgVFByb3BlcnR5VHlwZSA/IFRLZXkgOiBuZXZlcjtcbn1ba2V5b2YgVE9iamVjdF07XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VIaXN0b3JpY0RhdGFUYWJsZURpcmVjdGl2ZTxcbiAgVExvYWRpbmdEYXRhIGV4dGVuZHMgb2JqZWN0LFxuICBUTWV0aG9kVHlwZSBleHRlbmRzIE1ldGFBcGlTZXJ2aWNlW2tleW9mIE1ldGFBcGlTZXJ2aWNlXSAmIEZ1bmN0aW9uXG4+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1ldGFBcGkgPSBpbmplY3QoTWV0YUFwaVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxpbmtTZXJ2aWNlID0gaW5qZWN0KEVkaXRvcmlhbExpbmtTZXJ2aWNlKTtcblxuICBASW5wdXQoKVxuICBhcGlNZXRob2Q6IFBpY2tLZXlzQnlQcm9wZXJ0eVR5cGU8TWV0YUFwaVNlcnZpY2UsIFRNZXRob2RUeXBlPjtcbiAgQElucHV0KClcbiAgY29sdW1uVHJhbnNsYXRpb25rZXk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKVxuICBwYWdlVGl0bGU6IHN0cmluZztcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgc291cmNlVHlwZTogJ3JlcGxpY2F0aW9uU291cmNlJyB8ICdjb2xsZWN0aW9uJztcblxuICBwcm90ZWN0ZWQgbG9hZGluZ0NvdW50ID0gc2lnbmFsKDApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNMb2FkaW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sb2FkaW5nQ291bnQoKSA+IDApO1xuICByZWFkb25seSBpc0hpc3RvcnlFbmFibGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzSGlzdG9yeUVuYWJsZWQkID0gdG9PYnNlcnZhYmxlKHRoaXMuaXNIaXN0b3J5RW5hYmxlZCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpbWVGaWx0ZXJMb2FkZWQgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVjZW50VHlwZUNvdW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoeyBjb2x1bW5zOiBbXSwgcm93czogW10gfSBhcyBNYXRyaXhXaXRoQ291bnRzKTtcbiAgcHJvdGVjdGVkIHBhc3RUeXBlQ291bnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7IGNvbHVtbnM6IFtdLCByb3dzOiBbXSB9IGFzIE1hdHJpeFdpdGhDb3VudHMpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRGF0ZVRpbWUgPSBEYXRlVGltZTtcbiAgcHVibGljIGNvbHVtbnMgPSBzaWduYWwoW10gYXMgQXJyYXk8UXVhbGl0eU1hdHJpeEhlYWRlcj4pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhRm9yUGFzdERhdGEkID0gbmV3IFN1YmplY3Q8UGFydGlhbDxUTG9hZGluZ0RhdGE+PigpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0YUZvclJlY2VudERhdGEkID0gbmV3IFN1YmplY3Q8UGFydGlhbDxUTG9hZGluZ0RhdGE+PigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzdGFydFZhbHVlcyQgPSB0aGlzLmRhdGFGb3JQYXN0RGF0YSQucGlwZShcbiAgICBmaWx0ZXIoKGRhdGEpID0+IHRoaXMudmFsaWRhdGVMb2FkaW5nRGF0YShkYXRhKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IHRoaXMuY29tcGFyZUxvYWRpbmdEYXRhRXF1YWwoYSwgYikpLFxuICAgIHRocm90dGxlVGltZSg1MDApLFxuICAgIHN3aXRjaE1hcCgoc3RhcnQpID0+IHRoaXMuZ2V0Q291bnRCeURhdGUoc3RhcnQpKSxcbiAgICB0YXAoKGl0KSA9PiB0aGlzLnBhc3RUeXBlQ291bnQkLm5leHQoaXQpKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZW5kVmFsdWVzJCA9IHRoaXMuZGF0YUZvclJlY2VudERhdGEkLnBpcGUoXG4gICAgZmlsdGVyKChkYXRhKSA9PiB0aGlzLnZhbGlkYXRlTG9hZGluZ0RhdGEoZGF0YSkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiB0aGlzLmNvbXBhcmVMb2FkaW5nRGF0YUVxdWFsKGEsIGIpKSxcbiAgICB0aHJvdHRsZVRpbWUoNTAwKSxcbiAgICBzd2l0Y2hNYXAoKGVuZCkgPT4gdGhpcy5nZXRDb3VudEJ5RGF0ZShlbmQpKSxcbiAgICB0YXAoKGl0KSA9PiB0aGlzLnJlY2VudFR5cGVDb3VudCQubmV4dChpdCkpLFxuICAgIHRhcCgoaXQpID0+IHRoaXMuY29sdW1ucy5zZXQoaXQuY29sdW1ucy5zbGljZSgpKSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgKTtcblxuICBwcm90ZWN0ZWQgc3RhcnREYXRlU3Vic2NyaXB0aW9uOiBVbnN1YnNjcmliYWJsZSB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIHN0YXJ0VmFsdWVzU3Vic2NyaXB0aW9uOiBVbnN1YnNjcmliYWJsZSB8IHVuZGVmaW5lZDtcblxuICAvKiBJbiB0aGlzIHdpZGdldCdzIGJhY2tlbmQgd2UgZG8gaGF2ZSBkYXRhIGZvciB0b2RheVxuICAgKiB0aGVyZWZvcmUgd2Ugc2V0IHRoZSBlbmQgZGF0ZSB0byB0b2RheSBhbmQgdXNlIHRoZSB0aW1lcmFuZ2UoKSBlbmRwb2ludCB0byBvbmx5IHNldCB0aGUgc3RhcnQgZGF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmFuZ2U6IEZvcm1Hcm91cDx7XG4gICAgc3RhcnQ6IEZvcm1Db250cm9sPERhdGVUaW1lPGJvb2xlYW4+PjtcbiAgICBlbmQ6IEZvcm1Db250cm9sPERhdGVUaW1lPGJvb2xlYW4+PjtcbiAgfT4gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBzdGFydDogbmV3IEZvcm1Db250cm9sKCksXG4gICAgZW5kOiBuZXcgRm9ybUNvbnRyb2woRGF0ZVRpbWUudXRjKCkuc3RhcnRPZignZGF5JyksIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB0aW1lcmFuZ2VTdGFydCQgPSBvZih1bmRlZmluZWQpLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZ2V0QXZhaWxhYmxlRGF0ZVJhbmdlKCkpLFxuICAgIHRha2UoMSksXG4gICAgbWFwKChyYW5nZUZpbHRlcikgPT4gdGhpcy5nZXRTdGFydERhdGVPZlJhbmdlKHJhbmdlRmlsdGVyKSksXG4gICAgdGFwKChzdGFydERhdGUpID0+IHtcbiAgICAgIC8vdGhpcyBpcyB0byBoYXZlIGEgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIHN0YXJ0IGRhdGUgPT4gdGhlIG1pbiBkYXRlIG9mIHRoZSByYW5nZVxuICAgICAgdGhpcy5yYW5nZS5zZXRDb250cm9sKCdzdGFydCcsIG5ldyBGb3JtQ29udHJvbDxEYXRlVGltZTx0cnVlPj4oc3RhcnREYXRlLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pKTtcbiAgICAgIHRoaXMudGltZUZpbHRlckxvYWRlZC5zZXQodHJ1ZSk7XG4gICAgfSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgKTtcblxuICByZWFkb25seSBhbGxDb2x1bW5zID0gY29tcHV0ZWQ8QXJyYXk8c3RyaW5nPj4oKCkgPT4ge1xuICAgIGlmICghdGhpcy5pc0hpc3RvcnlFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlY2VudENvbHVtbnMoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucGFzdENvbHVtbnMoKS5mbGF0TWFwKChlLCBpKSA9PiBbZSwgdGhpcy5yZWNlbnRDb2x1bW5zKClbaV1dKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdHlwZUNvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucygpLm1hcCgoYykgPT4gYy5pZCArICdfdHlwZScpO1xuICB9KTtcblxuICByZWFkb25seSByZWNlbnRDb2x1bW5zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMoKS5tYXAoKGMpID0+IGMuaWQgKyAnX3JlY2VudCcpO1xuICB9KTtcblxuICByZWFkb25seSBwYXN0Q29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zKCkubWFwKChjKSA9PiBjLmlkICsgJ19wYXN0Jyk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRDb3VudEJ5RGF0ZShkYXRlOiBUTG9hZGluZ0RhdGEpOiBPYnNlcnZhYmxlPE1hdHJpeFdpdGhDb3VudHM+O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgdmFsaWRhdGVMb2FkaW5nRGF0YShkYXRhOiBQYXJ0aWFsPFRMb2FkaW5nRGF0YT4pOiBkYXRhIGlzIFRMb2FkaW5nRGF0YTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNvbXBhcmVMb2FkaW5nRGF0YUVxdWFsKGE6IFRMb2FkaW5nRGF0YSwgYjogVExvYWRpbmdEYXRhKTogYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgZ2V0QXZhaWxhYmxlRGF0ZVJhbmdlKCkge1xuICAgIHJldHVybiBvZih1bmRlZmluZWQpLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nQ291bnQudXBkYXRlKChpdCkgPT4gaXQgKyAxKSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5tZXRhQXBpLmdldFRpbWVyYW5nZUZpbHRlcigpKSxcbiAgICAgIGZpbHRlcigoZmlsdGVyKTogZmlsdGVyIGlzIEZpbHRlciA9PiBmaWx0ZXIgIT0gbnVsbCksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nQ291bnQudXBkYXRlKChpdCkgPT4gaXQgLSAxKSlcbiAgICApO1xuICB9XG4gIHByaXZhdGUgZ2V0U3RhcnREYXRlT2ZSYW5nZShyYW5nZUZpbHRlcjogRmlsdGVyKSB7XG4gICAgcmV0dXJuIERhdGVUaW1lLmZyb21JU08ocmFuZ2VGaWx0ZXIudmFsdWVzLmZpbmQoKHYpID0+IHYuaWQgPT09ICdyYW5nZVN0YXJ0Jyk/LmxhYmVsISwge1xuICAgICAgem9uZTogJ3V0YycsXG4gICAgfSkuc3RhcnRPZignZGF5JykgYXMgRGF0ZVRpbWU8dHJ1ZT47XG4gIH1cblxuICBwdWJsaWMgY29sdW1uSWRlbnQoX2luZGV4OiBudW1iZXIsIGNvbDogUXVhbGl0eU1hdHJpeEhlYWRlcikge1xuICAgIHJldHVybiBjb2wuaWQ7XG4gIH1cblxuICBwdWJsaWMgcGFzdFR5cGVDb3VudChyb3c6IE1hdHJpeFJvd1dpdGhDb3VudHMsIGNvbHVtbmlkOiBzdHJpbmcpOiB7IGRlbHRhPzogbnVtYmVyOyB0cmVuZD86IHN0cmluZzsgdmFsdWU/OiBudW1iZXIgfSB7XG4gICAgaWYgKCF0aGlzLnBhc3RUeXBlQ291bnQkLnZhbHVlLnJvd3MubGVuZ3RoKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHBhc3Rfcm93ID0gdGhpcy5wYXN0VHlwZUNvdW50JC52YWx1ZS5yb3dzLmZpbmQoKHByKSA9PiBwci5tZXRhLmlkID09IHJvdy5tZXRhLmlkKTtcbiAgICBjb25zdCBwYXN0X2NvbHVtbiA9IHRoaXMucGFzdFR5cGVDb3VudCQudmFsdWUuY29sdW1ucy5maW5kKChjKSA9PiBjLmlkID09IGNvbHVtbmlkKTtcbiAgICBpZiAoIXBhc3Rfcm93IHx8ICFwYXN0X2NvbHVtbikge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHJvdy5jb3VudHNbY29sdW1uaWRdO1xuICAgIGNvbnN0IHBhc3RWYWx1ZSA9IHBhc3Rfcm93LmNvdW50c1tjb2x1bW5pZF07XG5cbiAgICBjb25zdCBkZWx0YSA9IChjdXJyZW50VmFsdWUgfHwgMCkgLSAocGFzdFZhbHVlIHx8IDApO1xuICAgIGNvbnN0IHRyZW5kID0gZGVsdGEgPT09IDAgPyAndHJlbmRpbmdfZmxhdCcgOiBkZWx0YSA8IDAgPyAndHJlbmRpbmdfZG93bicgOiAndHJlbmRpbmdfdXAnO1xuICAgIHJldHVybiB7IGRlbHRhLCB0cmVuZCwgdmFsdWU6IHBhc3RWYWx1ZSB9O1xuICB9XG5cbiAgcHVibGljIG9wZW5JbkVkaXRvcihzb3VyY2VJZDogc3RyaW5nLCBpc3N1ZUlkOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zb3VyY2VUeXBlID09PSAncmVwbGljYXRpb25Tb3VyY2UnKSB7XG4gICAgICAvLyBmaW5kIHRoZSBsb25nIG5hbWUgZm9yIHRoZSBzb3VyY2VcbiAgICAgIHNvdXJjZUlkID0gdGhpcy5yZWNlbnRUeXBlQ291bnQkLnZhbHVlLnJvd3MuZmluZCgocikgPT4gci5tZXRhLmlkID09PSBzb3VyY2VJZCk/Lm1ldGEubGFiZWwgfHwgc291cmNlSWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmxpbmtTZXJ2aWNlLnR5cGVzTG9hZGVkJC5waXBlKFxuICAgICAgc2tpcFdoaWxlKChsb2FkZWQpID0+ICFsb2FkZWQpLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpbmtTZXJ2aWNlLmNyZWF0ZUxpbmtGb3JDb3VudHNXaXRoSGlzdG9yeSh0aGlzLnNvdXJjZVR5cGUsIHNvdXJjZUlkLCBpc3N1ZUlkKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuXG50eXBlIExvYWRpbmdEYXRhID0ge1xuICBkYXRlOiBEYXRlVGltZTtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21ldGFxczItY291bnRzLXdpdGgtaGlzdG9yeScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRDYXJkTW9kdWxlLFxuICAgIE1hdENhcmQsXG4gICAgTWF0Q2FyZEhlYWRlcixcbiAgICBNYXRDYXJkVGl0bGUsXG4gICAgTWF0Q2FyZENvbnRlbnQsXG4gICAgTWF0VG9vbHRpcCxcbiAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICBNYXRUYWJsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTWF0SGVhZGVyUm93LFxuICAgIE1hdEhlYWRlclJvd0RlZixcbiAgICBNYXRSb3csXG4gICAgTWF0Um93RGVmLFxuICAgIE5nRm9yT2YsXG4gICAgRGF0ZXBpY2tlckNvbXBvbmVudCxcbiAgICBNYXRJY29uLFxuICAgIE5nSWYsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIFByb2dyZXNzU3Bpbm5lckNvbXBvbmVudCxcbiAgICBNYXRSaXBwbGUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3VudHMtd2l0aC1oaXN0b3J5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2NvdW50cy13aXRoLWhpc3RvcnkuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBDb3VudHNXaXRoSGlzdG9yeUNvbXBvbmVudFxuICBleHRlbmRzIEJhc2VIaXN0b3JpY0RhdGFUYWJsZURpcmVjdGl2ZTxMb2FkaW5nRGF0YSwgKGZpbHRlcnM6IEZpbHRlcltdKSA9PiBPYnNlcnZhYmxlPE1hdHJpeFdpdGhDb3VudHM+PlxuICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFwaU1ldGhvZCA/Pz0gJ2dldE1hdGVyaWFsVHlwZUNvdW50c0J5UmVwbGljYXRpb25Tb3VyY2UnO1xuXG4gICAgdGhpcy5yYW5nZS52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKGRhdGEpID0+IHtcbiAgICAgICAgICB0aGlzLmRhdGFGb3JQYXN0RGF0YSQubmV4dCh7IGRhdGU6IGRhdGEuc3RhcnQgfSk7XG4gICAgICAgICAgdGhpcy5kYXRhRm9yUmVjZW50RGF0YSQubmV4dCh7IGRhdGU6IGRhdGEuZW5kIH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuaXNIaXN0b3J5RW5hYmxlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKGVuYWJsZWQpID0+IHtcbiAgICAgICAgICB0aGlzLnJhbmdlLmNvbnRyb2xzLmVuZC5yZXNldCgpO1xuICAgICAgICAgIGlmICghZW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5zdGFydERhdGVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWVzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnJhbmdlLmNvbnRyb2xzLnN0YXJ0LnJlc2V0KCk7XG4gICAgICAgICAgaWYgKCF0aGlzLnRpbWVGaWx0ZXJMb2FkZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5zdGFydERhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnRpbWVyYW5nZVN0YXJ0JFxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWVzU3Vic2NyaXB0aW9uID0gdGhpcy5zdGFydFZhbHVlcyQuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLnJhbmdlLmNvbnRyb2xzLnN0YXJ0LnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRWYWx1ZXNTdWJzY3JpcHRpb24gPSB0aGlzLnN0YXJ0VmFsdWVzJC5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMucmFuZ2UuY29udHJvbHMuc3RhcnQucmVzZXQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5lbmRWYWx1ZXMkLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldENvdW50QnlEYXRlKGRhdGE6IExvYWRpbmdEYXRhKTogT2JzZXJ2YWJsZTxNYXRyaXhXaXRoQ291bnRzPiB7XG4gICAgY29uc3QgZmlsdGVyOiBGaWx0ZXIgPSB7XG4gICAgICBmaWVsZDogJ2FzT2YnLFxuICAgICAgdmFsdWVzOiBbeyBpZDogZGF0YS5kYXRlLnRvSVNPKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkhLCBsYWJlbDogJycgfV0sXG4gICAgfTtcblxuICAgIHJldHVybiBvZih1bmRlZmluZWQpLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nQ291bnQudXBkYXRlKChpdCkgPT4gaXQgKyAxKSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXRhQXBpW3RoaXMuYXBpTWV0aG9kXShbZmlsdGVyXSkucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLmxvYWRpbmdDb3VudC51cGRhdGUoKGl0KSA9PiBpdCAtIDEpKSk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgocmVzcG9uc2UpID0+ICh7XG4gICAgICAgIC4uLnJlc3BvbnNlLFxuICAgICAgICByb3dzOiByZXNwb25zZS5yb3dzLnRvU29ydGVkKChhLCBiKSA9PiBhLm1ldGEubGFiZWwubG9jYWxlQ29tcGFyZShiLm1ldGEubGFiZWwpKSxcbiAgICAgIH0pKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVMb2FkaW5nRGF0YShkYXRhOiBQYXJ0aWFsPExvYWRpbmdEYXRhPik6IGRhdGEgaXMgTG9hZGluZ0RhdGEge1xuICAgIHJldHVybiBkYXRhLmRhdGU/LmlzVmFsaWQgPz8gZmFsc2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29tcGFyZUxvYWRpbmdEYXRhRXF1YWwoYTogTG9hZGluZ0RhdGEsIGI6IExvYWRpbmdEYXRhKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGEuZGF0ZS5lcXVhbHMoYi5kYXRlKTtcbiAgfVxufVxuIiwiPG1hdC1jYXJkIGFwcGVhcmFuY2U9XCJyYWlzZWRcIj5cbiAgPG1hdC1jYXJkLWhlYWRlciAqbmdJZj1cInBhZ2VUaXRsZVwiPlxuICAgIDxtYXQtY2FyZC10aXRsZSBkYXRhLXRlc3QtaWQ9XCJwYWdlLXRpdGxlXCI+XG4gICAgICBRdWFsaXTDpHRzbWV0cmlrOiB7eyBwYWdlVGl0bGUgfCB0cmFuc2xhdGUgfX17eyBpc0xvYWRpbmcoKSA/IFwiOiBMYWRlIG5ldWUgRGF0ZW4uXCIgOiBcIlwiIH19XG4gICAgPC9tYXQtY2FyZC10aXRsZT5cbiAgPC9tYXQtY2FyZC1oZWFkZXI+XG4gIDwhLS0gY29uc2lkZXIgdG8gcHV0IHRoZSBmaWx0ZXIgaW4gdGhlIHRhYmxlIGhlYWRlciB0byBhdm9pZCB0aGF0IGl0IGlzIHNjcm9sbGVkIG91dCBvZiB2aWV3LS0+XG4gIDwhLS0gc2hvdyB0aGUgZmlsdGVyIGFmdGVyIHRoZSB2YWx1ZXMgYXJlIGxvYWRlZCB0byBhdm9pZCBsb2FkaW5nIGN1cnJlbnQgZGF0YSB0d2ljZSAtLT5cbiAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJ0b29sYmFyXCI+XG4gICAgPG1ldGFxczItZGF0ZXBpY2tlciBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9ja1wiIG1hdFJpcHBsZSBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nKCkgfHwgIWlzSGlzdG9yeUVuYWJsZWQoKVwiIFtpbnB1dEdyb3VwXT1cInJhbmdlXCIgKm5nSWY9XCJ0aW1lRmlsdGVyTG9hZGVkKCkgJiYgaXNIaXN0b3J5RW5hYmxlZCgpXCI+PC9tZXRhcXMyLWRhdGVwaWNrZXI+XG4gICAgPGRpdiBzdHlsZT1cImZsZXg6IDEgMSBhdXRvXCI+PC9kaXY+XG4gICAgPG1hdC1zbGlkZS10b2dnbGUgW25nTW9kZWxdPVwiaXNIaXN0b3J5RW5hYmxlZCgpXCIgKG5nTW9kZWxDaGFuZ2UpPVwiaXNIaXN0b3J5RW5hYmxlZC5zZXQoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJpc0xvYWRpbmcoKVwiPlxuICAgICAgPGxhYmVsPlplaWdlIGhpc3RvcmlzY2hlIERhdGVuPC9sYWJlbD5cbiAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gIDwvbWF0LWNhcmQtY29udGVudD5cbjwvbWF0LWNhcmQ+XG48bWF0LWNhcmQ+XG4gIDxtZXRhcXMyLXByb2dyZXNzLXNwaW5uZXIgW2Rpc3BsYXlQcm9ncmVzc1NwaW5uZXJdPVwiaXNMb2FkaW5nKClcIj48L21ldGFxczItcHJvZ3Jlc3Mtc3Bpbm5lcj5cbiAgPHRhYmxlIFtjbGFzcy53aGlsZS1sb2FkaW5nXT1cImlzTG9hZGluZygpXCIgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cInJlY2VudFR5cGVDb3VudCQudmFsdWUucm93c1wiXG4gICAgICAgICBjbGFzcz1cInF1YWxpdHktbWF0cml4XCI+XG4gICAgPCEtLSBEZWZpbmUgY29sdW1ucyBvZiB0YWJsZSAtLT5cbiAgICA8IS0tIFJvdyBIZWFkZXIgQ29sdW1uIC0tPlxuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibGFiZWwtY29sXCIgc3RpY2t5PlxuICAgICAgPHRoIFthdHRyLnJvd3NwYW5dPVwiaXNIaXN0b3J5RW5hYmxlZCgpID8gJzInIDogJzEnXCIgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICA8ZGl2PlF1ZWxsZTwvZGl2PlxuICAgICAgPC90aD5cbiAgICAgIDx0ZFxuICAgICAgICBtYXQtY2VsbFxuICAgICAgICAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxuICAgICAgICBbbWF0VG9vbHRpcF09XCJyb3cubWV0YS5hbHRfbGFiZWxcIlxuICAgICAgICBjbGFzcz1cImxhYmVsLWNvbCBtYXQtY2VsbC1sZXZlbC17e3Jvdy5tZXRhLmxldmVsICsgMX19XCJcbiAgICAgID5cbiAgICAgICAge3sgcm93Lm1ldGEubGFiZWwgfX1cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSBvbmUgY29sdW1uIGZvciBlYWNoIHR5cGUgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIChyZWNlbnRUeXBlQ291bnQkIHwgYXN5bmMpPy5jb2x1bW5zOyB0cmFja0J5OmNvbHVtbklkZW50XCJcbiAgICAgICAgICAgICAgICAgIFttYXRDb2x1bW5EZWZdPVwiY29sLmlkICsgJ190eXBlJ1wiPlxuICAgICAgPHRoIFthdHRyLmNvbHNwYW5dPVwiaXNIaXN0b3J5RW5hYmxlZCgpID8gJzInIDogJzEnXCIgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFttYXRUb29sdGlwXT1cImNvbC5sYWJlbFwiPlxuICAgICAgICB7eyBjb2x1bW5UcmFuc2xhdGlvbmtleSA/IChjb2x1bW5UcmFuc2xhdGlvbmtleSArIGNvbC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiBjb2wubGFiZWwgfX1cbiAgICAgIDwvdGg+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSBvbmUgY29sdW1uIGZvciBlYWNoIHR5cGUgZm9yIHRoZSBtb3N0IGN1cnJlbnQgZGF0ZS0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiAocmVjZW50VHlwZUNvdW50JCB8IGFzeW5jKT8uY29sdW1uczsgdHJhY2tCeTpjb2x1bW5JZGVudFwiXG4gICAgICAgICAgICAgICAgICBbbWF0Q29sdW1uRGVmXT1cImNvbC5pZCArICdfcmVjZW50J1wiPlxuICAgICAgPHRoIGNsYXNzPVwicmVjZW50LWRhdGEtY2VsbFwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgIG1hdFRvb2x0aXA9XCJubyB0b29sdGlwXCI+e3sgcmFuZ2UuY29udHJvbHMuZW5kLnZhbHVlLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfU0hPUlQpIH19XG4gICAgICA8L3RoPlxuICAgICAgPHRkIGNsYXNzPVwicmVjZW50LWRhdGEtY2VsbFwiIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICA8YSBbYXR0ci5ocmVmXT1cIm9wZW5JbkVkaXRvcihyb3cubWV0YS5pZCwgY29sLmlkKSB8IGFzeW5jXCIgdGFyZ2V0PVwiZWRpdG9yX2Zyb250ZW5kXCI+e3sgcm93LmNvdW50c1tjb2wuaWRdID8/ICfigJMnIH19PC9hPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIG9uZSBjb2x1bW4gZm9yIGVhY2ggdHlwZSBmb3IgdGhlIG9sZGVyIGRhdGUtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgKHJlY2VudFR5cGVDb3VudCQgfCBhc3luYyk/LmNvbHVtbnM7IHRyYWNrQnk6Y29sdW1uSWRlbnRcIlxuICAgICAgICAgICAgICAgICAgW21hdENvbHVtbkRlZl09XCJjb2wuaWQgKyAnX3Bhc3QnXCI+XG4gICAgICA8dGggY2xhc3M9XCJwYXN0LWRhdGEtY2VsbFwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXRUb29sdGlwPVwibm8gdG9vbHRpcFwiPlxuICAgICAgICB7eyAocGFzdFR5cGVDb3VudCQgfCBhc3luYyk/LnJvd3M/Lmxlbmd0aCA/IHJhbmdlLmNvbnRyb2xzLnN0YXJ0LnZhbHVlLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfU0hPUlQpIDogJ25vIHBhc3QgZGF0YScgfX1cbiAgICAgIDwvdGg+XG4gICAgICA8dGQgY2xhc3M9XCJwYXN0LWRhdGEtY2VsbFwiIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdztcIiA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIocGFzdFR5cGVDb3VudCQgfCBhc3luYyk/LnJvd3M/Lmxlbmd0aCAmJiBwYXN0VHlwZUNvdW50KHJvdywgY29sLmlkKSBhcyB0cmVuZFwiPlxuICAgICAgICAgIDxzcGFuIFtjbGFzc109XCJ0cmVuZC50cmVuZFwiPiB7eyB0cmVuZC52YWx1ZSA/PyAn4oCTJyB9fVxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwidHJlbmQudmFsdWVcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0cmVuZC50cmVuZFwiIFtmb250SWNvbl09XCJ0cmVuZC50cmVuZCFcIiAvPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNkay12aXN1YWxseS1oaWRkZW5cIj57eyB0cmVuZC50cmVuZCB9fTwvc3Bhbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gZ2VuZXJhdGUgYWN0dWFsIHRhYmxlIC0tPlxuICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiWydsYWJlbC1jb2wnXS5jb25jYXQodHlwZUNvbHVtbnMoKSk7IHN0aWNreTp0cnVlO1wiPjwvdHI+XG4gICAgPHRyIFtoaWRkZW5dPVwiIWlzSGlzdG9yeUVuYWJsZWQoKVwiIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJhbGxDb2x1bW5zKCk7IHN0aWNreTogdHJ1ZTtcIj48L3RyPlxuICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ2xhYmVsLWNvbCddLmNvbmNhdChhbGxDb2x1bW5zKCkpXCI+PC90cj5cblxuICA8L3RhYmxlPlxuPC9tYXQtY2FyZD5cbiJdfQ==
|
|
@@ -74,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
74
74
|
providedIn: 'root',
|
|
75
75
|
}]
|
|
76
76
|
}], ctorParameters: () => [{ type: i1.CollectionAPIService }, { type: i1.ReplicationSourceAPIService }, { type: i1.FilterAPIService }, { type: i1.EditorsAPIService }] });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9tZXRhLWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFjM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBSzNDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFDVSxjQUFvQyxFQUNwQyxlQUE0QyxFQUM1QyxTQUEyQixFQUMzQixVQUE2QjtRQUg3QixtQkFBYyxHQUFkLGNBQWMsQ0FBc0I7UUFDcEMsb0JBQWUsR0FBZixlQUFlLENBQTZCO1FBQzVDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGVBQVUsR0FBVixVQUFVLENBQW1CO0lBQ3BDLENBQUM7SUFFSjs7O09BR0c7SUFDSSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFDTSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsSCxDQUFDO0lBQ00sb0JBQW9CO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFDRDs7O09BR0c7SUFDSSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUMsSUFBSSxDQUNqRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDN0IsQ0FBQztJQUNKLENBQUM7SUFFRCxtQ0FBbUMsQ0FBQyxPQUFlLEVBQUUsT0FBaUI7UUFDcEUsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLG1DQUFtQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQseUJBQXlCLENBQUMsS0FBYTtRQUNyQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCw2QkFBNkIsQ0FBQyxJQUFtQjtRQUMvQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELDBCQUEwQixDQUFDLElBQXlCO1FBQ2xELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsd0NBQXdDLENBQUMsSUFBYztRQUNyRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsZ0RBQWdELENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELG1DQUFtQyxDQUFDLElBQWM7UUFDaEQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLG1EQUFtRCxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxLQUFhLEVBQUUsT0FBaUI7UUFDN0QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLHFDQUFxQyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsb0NBQW9DLENBQUMsSUFBYztRQUNqRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsb0NBQW9DLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELHFDQUFxQyxDQUFDLElBQWM7UUFDbEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLHFDQUFxQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxvQ0FBb0MsQ0FBQyxJQUFjO1FBQ2pELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQ0FBb0MsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2xELENBQUM7K0dBMUVVLGNBQWM7bUhBQWQsY0FBYyxjQUxiLE1BQU07OzRGQUtQLGNBQWM7a0JBTjFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBDb2xsZWN0aW9uQVBJU2VydmljZSxcbiAgRWRpdG9yc0FQSVNlcnZpY2UsXG4gIEVkdUNvbGxlY3Rpb24sXG4gIEZpbHRlcixcbiAgRmlsdGVyQVBJU2VydmljZSxcbiAgTWF0ZXJpYWxDb3VudEZpbHRlcixcbiAgTWF0cml4V2l0aENvdW50cyxcbiAgUXVhbGl0eU1hdHJpeCxcbiAgUmVwbGljYXRpb25Tb3VyY2VBUElTZXJ2aWNlLFxufSBmcm9tICcuL2phdmEtYXBpJztcbmltcG9ydCB7IG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuLyoqXG4gKiBUaGlzIGNsYXNzIGlzIGEgdGhpbiB3cmFwcGVyIGFyb3VuZCB0aGUgQVBJIHNlcnZpY2VzLlxuICovXG5leHBvcnQgY2xhc3MgTWV0YUFwaVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbGxlY3Rpb25zQVBJOiBDb2xsZWN0aW9uQVBJU2VydmljZSxcbiAgICBwcml2YXRlIHJlcGxpY2F0aW9uc0FQSTogUmVwbGljYXRpb25Tb3VyY2VBUElTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmlsdGVyQVBJOiBGaWx0ZXJBUElTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWRpdG9yc0FQSTogRWRpdG9yc0FQSVNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZpbHRlcnMgZm9yIHRoZSBxdWFsaXR5IG1hdHJpeC5cbiAgICogSXQgcGlwZXMgdGhlIG9ic2VydmFibGUgdG8gdGFrZSBvbmx5IG9uZSB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBnZXRTZWFyY2hGaWx0ZXJzKCk6IE9ic2VydmFibGU8RmlsdGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJBUEkuZ2V0UXVhbGl0eE1hdHJpeEZpbHRlcnMoKS5waXBlKHRha2UoMSkpO1xuICB9XG4gIHB1YmxpYyBnZXRDYXRlZ29yeUZpbHRlcnMoKTogT2JzZXJ2YWJsZTxGaWx0ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLmdldFNlYXJjaEZpbHRlcnMoKS5waXBlKG1hcCgoZmlsdGVycykgPT4gZmlsdGVycy5maWx0ZXIoKGZpbHRlcikgPT4gZmlsdGVyLmZpZWxkICE9PSAndGltZXJhbmdlJykpKTtcbiAgfVxuICBwdWJsaWMgZ2V0Q29sbGVjdGlvbnNGaWx0ZXIoKTogT2JzZXJ2YWJsZTxBcnJheTxFZHVDb2xsZWN0aW9uPj4ge1xuICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb25zQVBJLmdldFRvcExldmVsQ29sbGVjdGlvbigpO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgdGhlIHRpbWVyYW5nZSBmaWx0ZXIgZm9yIHRoZSBxdWFsaXR5IG1hdHJpeC5cbiAgICogUmV0dXJucyB0aGUgZmlyc3QgZmlsdGVyIG9mIHRoZSBoaXN0b3JpY2FsIHRpbWVyYW5nZSBmaWx0ZXJzLlxuICAgKi9cbiAgcHVibGljIGdldFRpbWVyYW5nZUZpbHRlcigpOiBPYnNlcnZhYmxlPEZpbHRlciB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckFQSS5nZXRIaXN0b3JpY2FsVGltZXJhbmdlKCkucGlwZShcbiAgICAgIHRha2UoMSksXG4gICAgICBtYXAoKGZpbHRlcnMpID0+IGZpbHRlcnNbMF0pXG4gICAgKTtcbiAgfVxuXG4gIGdldE1hdGVyaWFsQ291bnRNYXRyaXhQZXJDb2xsZWN0aW9uKG5vZGVSZWY6IHN0cmluZywgb2VyT25seT86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPFF1YWxpdHlNYXRyaXg+IHtcbiAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uc0FQSS5nZXRNYXRlcmlhbENvdW50TWF0cml4UGVyQ29sbGVjdGlvbihub2RlUmVmLCBvZXJPbmx5KTtcbiAgfVxuXG4gIGdldENvbGxlY3Rpb25Db21wbGV0ZW5lc3MoY29sSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8TWF0cml4V2l0aENvdW50cz4ge1xuICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb25zQVBJLmdldENvbXBsZXRlbmVzcyhjb2xJZCk7XG4gIH1cblxuICBnZXRRdWFsaXR5TWF0cml4V2l0aEZpbHRlcnNWMihib2R5OiBBcnJheTxGaWx0ZXI+KSB7XG4gICAgcmV0dXJuIHRoaXMucmVwbGljYXRpb25zQVBJLmdldFF1YWxpdHlNYXRyaXhWMihib2R5KTtcbiAgfVxuXG4gIGdldEVkaXRvcmlhbE1hdGVyaWFsQ291bnRzKGJvZHk6IE1hdGVyaWFsQ291bnRGaWx0ZXIpIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JzQVBJLmdldE1hdGVyaWFsQ291bnQoYm9keSk7XG4gIH1cblxuICBnZXRNYXRlcmlhbFR5cGVDb3VudHNCeVJlcGxpY2F0aW9uU291cmNlKGJvZHk6IEZpbHRlcltdKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwbGljYXRpb25zQVBJLmdldE1hdGVyaWFsQ291bnRNYXRyaXhCeVJlcGxpY2F0aW9uU291cmNlQW5kVHlwZShib2R5KTtcbiAgfVxuXG4gIGdldExpY2Vuc2VDb3VudHNCeVJlcGxpY2F0aW9uU291cmNlKGJvZHk6IEZpbHRlcltdKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwbGljYXRpb25zQVBJLmdldE1hdGVyaWFsQ291bnRNYXRyaXhCeVJlcGxpY2F0aW9uU291cmNlQW5kTGljZW5zZShib2R5KTtcbiAgfVxuXG4gIGdldExpY2Vuc2VDb3VudHNCeUxpY2Vuc2VHcm91cChjb2xJZDogc3RyaW5nLCBmaWx0ZXJzOiBGaWx0ZXJbXSk6IE9ic2VydmFibGU8UXVhbGl0eU1hdHJpeD4ge1xuICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb25zQVBJLmdldE1hdGVyaWFsQ291bnRNYXRyaXhCeUxpY2Vuc2VHcm91cDEoY29sSWQsIGZpbHRlcnMpO1xuICB9XG5cbiAgZ2V0TWF0ZXJpYWxDb3VudE1hdHJpeEJ5TGljZW5zZUdyb3VwKGJvZHk6IEZpbHRlcltdKSB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yc0FQSS5nZXRNYXRlcmlhbENvdW50TWF0cml4QnlMaWNlbnNlR3JvdXAoYm9keSk7XG4gIH1cblxuICBnZXRDb21wbGV0ZW5lc3NGb3JEaXNjaXBsaW5hcnlQb3J0YWxzKGJvZHk6IEZpbHRlcltdKSB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yc0FQSS5nZXRDb21wbGV0ZW5lc3NGb3JEaXNjaXBsaW5hcnlQb3J0YWxzKGJvZHkpO1xuICB9XG5cbiAgZ2V0Q29tcGxldGVuZXNzRm9yUmVwbGljYXRpb25Tb3VyY2VzKGJvZHk6IEZpbHRlcltdKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwbGljYXRpb25zQVBJLmdldENvbXBsZXRlbmVzc0ZvclJlcGxpY2F0aW9uU291cmNlcyhib2R5KTtcbiAgfVxuXG4gIGdldE1hdGVyaWFsVHlwZXNNYXBwaW5nKCkge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckFQSS5nZXRNYXRlcmlhbFR5cGVzTWFwcGluZygpO1xuICB9XG59XG4iXX0=
|