ngx-edu-sharing-metaqs2 0.9.20 → 0.9.21

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.
@@ -1,10 +1,13 @@
1
1
  import { Component, Input, Output } from '@angular/core';
2
2
  import { FormControl, ReactiveFormsModule } from '@angular/forms';
3
- import { MatFormField, MatLabel } from '@angular/material/form-field';
4
- import { MatOption, MatSelect } from '@angular/material/select';
3
+ import { MatFormFieldModule } from '@angular/material/form-field';
4
+ import { MatSelectModule } from '@angular/material/select';
5
5
  import { NgForOf } from '@angular/common';
6
6
  import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/forms";
7
+ import * as i1 from "@angular/material/form-field";
8
+ import * as i2 from "@angular/material/select";
9
+ import * as i3 from "@angular/material/core";
10
+ import * as i4 from "@angular/forms";
8
11
  /**
9
12
  * This component wraps a mat-select.
10
13
  * It's options are populatated from the [options] @Input
@@ -23,11 +26,11 @@ export class QualityMatrixFilterComponent {
23
26
  return option.id;
24
27
  }
25
28
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QualityMatrixFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: QualityMatrixFilterComponent, isStandalone: true, selector: "lib-qm-filter", inputs: { options: "options", inputFormControl: "inputFormControl", label: "label", multiple: "multiple" }, outputs: { changedFilters: "changedFilters" }, ngImport: i0, template: "<mat-form-field appearance=\"outline\">\n <mat-label>Filter by {{ label }}</mat-label>\n <mat-select\n [multiple]=\"multiple\"\n [formControl]=\"inputFormControl\"\n >\n <mat-option *ngFor=\"let option of options; trackBy: optionIdent \" [value]=\"option.id\"> {{ option.label }} </mat-option>\n\n </mat-select>\n</mat-form-field>\n", styles: [":host ::ng-deep>mat-form-field>.mat-mdc-form-field-subscript-wrapper{display:none}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
29
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: QualityMatrixFilterComponent, isStandalone: true, selector: "lib-qm-filter", inputs: { options: "options", inputFormControl: "inputFormControl", label: "label", multiple: "multiple" }, outputs: { changedFilters: "changedFilters" }, ngImport: i0, template: "<mat-form-field appearance=\"outline\">\n <mat-label>Filter by {{ label }}</mat-label>\n <mat-select\n [multiple]=\"multiple\"\n [formControl]=\"inputFormControl\"\n >\n <mat-option *ngFor=\"let option of options; trackBy: optionIdent \" [value]=\"option.id\"> {{ option.label }} </mat-option>\n\n </mat-select>\n</mat-form-field>\n", styles: [":host ::ng-deep>mat-form-field>.mat-mdc-form-field-subscript-wrapper{display:none}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
27
30
  }
28
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QualityMatrixFilterComponent, decorators: [{
29
32
  type: Component,
30
- args: [{ selector: 'lib-qm-filter', standalone: true, imports: [MatFormField, MatSelect, ReactiveFormsModule, MatOption, MatLabel, NgForOf], template: "<mat-form-field appearance=\"outline\">\n <mat-label>Filter by {{ label }}</mat-label>\n <mat-select\n [multiple]=\"multiple\"\n [formControl]=\"inputFormControl\"\n >\n <mat-option *ngFor=\"let option of options; trackBy: optionIdent \" [value]=\"option.id\"> {{ option.label }} </mat-option>\n\n </mat-select>\n</mat-form-field>\n", styles: [":host ::ng-deep>mat-form-field>.mat-mdc-form-field-subscript-wrapper{display:none}\n"] }]
33
+ args: [{ selector: 'lib-qm-filter', standalone: true, imports: [MatFormFieldModule, MatSelectModule, ReactiveFormsModule, NgForOf], template: "<mat-form-field appearance=\"outline\">\n <mat-label>Filter by {{ label }}</mat-label>\n <mat-select\n [multiple]=\"multiple\"\n [formControl]=\"inputFormControl\"\n >\n <mat-option *ngFor=\"let option of options; trackBy: optionIdent \" [value]=\"option.id\"> {{ option.label }} </mat-option>\n\n </mat-select>\n</mat-form-field>\n", styles: [":host ::ng-deep>mat-form-field>.mat-mdc-form-field-subscript-wrapper{display:none}\n"] }]
31
34
  }], propDecorators: { options: [{
32
35
  type: Input
33
36
  }],
@@ -41,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
41
44
  }], changedFilters: [{
42
45
  type: Output
43
46
  }] } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhbGl0eS1tYXRyaXgtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbHRlci9xdWFsaXR5LW1hdHJpeC1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWV0YS13aWRnZXRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZmlsdGVyL3F1YWxpdHktbWF0cml4LWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUUxQzs7Ozs7OztHQU9HO0FBUUgsTUFBTSxPQUFPLDRCQUE0QjtJQVB6QztRQVlFLHFCQUFnQixHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFJckMsYUFBUSxHQUFZLElBQUksQ0FBQztRQUV6QixtQkFBYyxHQUFvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDO0tBSXRFO0lBSEMsV0FBVyxDQUFDLE1BQWMsRUFBRSxNQUFtQjtRQUM3QyxPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDbkIsQ0FBQzsrR0FkVSw0QkFBNEI7bUdBQTVCLDRCQUE0QixvT0N2QnpDLDhWQVVBLDhJRFdZLFlBQVksNExBQUUsU0FBUyx1ZUFBRSxtQkFBbUIsMFRBQUUsU0FBUyxxSkFBRSxRQUFRLHNEQUFFLE9BQU87OzRGQUV6RSw0QkFBNEI7a0JBUHhDLFNBQVM7K0JBQ0UsZUFBZSxjQUdiLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUM7OEJBSXJGLE9BQU87c0JBRE4sS0FBSzs7UUFHTiwyRkFBMkY7UUFDM0YsZ0JBQWdCO3NCQUZmLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUdOLFFBQVE7c0JBRFAsS0FBSztnQkFHTixjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmlsdGVyVmFsdWUgfSBmcm9tICcuLi8uLi9qYXZhLWFwaSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdExhYmVsIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRPcHRpb24sIE1hdFNlbGVjdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZ0Zvck9mIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCB3cmFwcyBhIG1hdC1zZWxlY3QuXG4gKiBJdCdzIG9wdGlvbnMgYXJlIHBvcHVsYXRhdGVkIGZyb20gdGhlIFtvcHRpb25zXSBASW5wdXRcbiAqIFRoZSBsYWJlbCBpcyBwb3B1bGF0ZWQgZnJvbSB0aGUgW2xhYmVsXSBASW5wdXRcbiAqXG4gKiBZb3UgbWF5IGVpdGhlciBwcm92aWRlIGEgRm9ybUNvbnRyb2wgKCB3aGljaCB5b3UgYXJlIHRyYWNraW5nIClcbiAqIG9yIHlvdSBjYW4gc3Vic2NyaWJlIHRvIHRoZSAoY2hhbmdlZEZpbHRlcnMpIG91dHB1dC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXFtLWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWFsaXR5LW1hdHJpeC1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcXVhbGl0eS1tYXRyaXgtZmlsdGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdEZvcm1GaWVsZCwgTWF0U2VsZWN0LCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNYXRPcHRpb24sIE1hdExhYmVsLCBOZ0Zvck9mXSxcbn0pXG5leHBvcnQgY2xhc3MgUXVhbGl0eU1hdHJpeEZpbHRlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIG9wdGlvbnM6IEZpbHRlclZhbHVlW10gfCB1bmRlZmluZWQgfCBudWxsO1xuICBASW5wdXQoKVxuICAvL211c3Qgbm90IGJlIG5hbWVkIFwiZm9ybUNvbnRyb2xcIiBvdGhlcndpc2Ugd2Ugd291bGQgaGF2ZSB0byBpbXBsZW1lbnQgQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgaW5wdXRGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICBASW5wdXQoKVxuICBsYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKVxuICBtdWx0aXBsZTogYm9vbGVhbiA9IHRydWU7XG4gIEBPdXRwdXQoKVxuICBjaGFuZ2VkRmlsdGVyczogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5pbnB1dEZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcztcbiAgb3B0aW9uSWRlbnQoX2luZGV4OiBudW1iZXIsIG9wdGlvbjogRmlsdGVyVmFsdWUpIHtcbiAgICByZXR1cm4gb3B0aW9uLmlkO1xuICB9XG59XG4iLCI8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgPG1hdC1sYWJlbD5GaWx0ZXIgYnkge3sgbGFiZWwgfX08L21hdC1sYWJlbD5cbiAgPG1hdC1zZWxlY3RcbiAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgIFtmb3JtQ29udHJvbF09XCJpbnB1dEZvcm1Db250cm9sXCJcbiAgPlxuICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zOyB0cmFja0J5OiBvcHRpb25JZGVudCBcIiAgW3ZhbHVlXT1cIm9wdGlvbi5pZFwiPiB7eyBvcHRpb24ubGFiZWwgfX0gPC9tYXQtb3B0aW9uPlxuXG4gIDwvbWF0LXNlbGVjdD5cbjwvbWF0LWZvcm0tZmllbGQ+XG4iXX0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhbGl0eS1tYXRyaXgtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbHRlci9xdWFsaXR5LW1hdHJpeC1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWV0YS13aWRnZXRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZmlsdGVyL3F1YWxpdHktbWF0cml4LWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQUUxQzs7Ozs7OztHQU9HO0FBUUgsTUFBTSxPQUFPLDRCQUE0QjtJQVB6QztRQVlFLHFCQUFnQixHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFJckMsYUFBUSxHQUFZLElBQUksQ0FBQztRQUV6QixtQkFBYyxHQUFvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDO0tBSXRFO0lBSEMsV0FBVyxDQUFDLE1BQWMsRUFBRSxNQUFtQjtRQUM3QyxPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDbkIsQ0FBQzsrR0FkVSw0QkFBNEI7bUdBQTVCLDRCQUE0QixvT0N2QnpDLDhWQVVBLDZJRFdZLGtCQUFrQiwwU0FBRSxlQUFlLG1yQkFBRSxtQkFBbUIsMFRBQUUsT0FBTzs7NEZBRWhFLDRCQUE0QjtrQkFQeEMsU0FBUzsrQkFDRSxlQUFlLGNBR2IsSUFBSSxXQUNQLENBQUMsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE9BQU8sQ0FBQzs4QkFJNUUsT0FBTztzQkFETixLQUFLOztRQUdOLDJGQUEyRjtRQUMzRixnQkFBZ0I7c0JBRmYsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUdOLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGaWx0ZXJWYWx1ZSB9IGZyb20gJy4uLy4uL2phdmEtYXBpJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5nRm9yT2YgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IHdyYXBzIGEgbWF0LXNlbGVjdC5cbiAqIEl0J3Mgb3B0aW9ucyBhcmUgcG9wdWxhdGF0ZWQgZnJvbSB0aGUgW29wdGlvbnNdIEBJbnB1dFxuICogVGhlIGxhYmVsIGlzIHBvcHVsYXRlZCBmcm9tIHRoZSBbbGFiZWxdIEBJbnB1dFxuICpcbiAqIFlvdSBtYXkgZWl0aGVyIHByb3ZpZGUgYSBGb3JtQ29udHJvbCAoIHdoaWNoIHlvdSBhcmUgdHJhY2tpbmcgKVxuICogb3IgeW91IGNhbiBzdWJzY3JpYmUgdG8gdGhlIChjaGFuZ2VkRmlsdGVycykgb3V0cHV0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcW0tZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3F1YWxpdHktbWF0cml4LWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9xdWFsaXR5LW1hdHJpeC1maWx0ZXIuY29tcG9uZW50LnNjc3MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRTZWxlY3RNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE5nRm9yT2ZdLFxufSlcbmV4cG9ydCBjbGFzcyBRdWFsaXR5TWF0cml4RmlsdGVyQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgb3B0aW9uczogRmlsdGVyVmFsdWVbXSB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIEBJbnB1dCgpXG4gIC8vbXVzdCBub3QgYmUgbmFtZWQgXCJmb3JtQ29udHJvbFwiIG90aGVyd2lzZSB3ZSB3b3VsZCBoYXZlIHRvIGltcGxlbWVudCBDb250cm9sVmFsdWVBY2Nlc3NvclxuICBpbnB1dEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gIEBJbnB1dCgpXG4gIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIG11bHRpcGxlOiBib29sZWFuID0gdHJ1ZTtcbiAgQE91dHB1dCgpXG4gIGNoYW5nZWRGaWx0ZXJzOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLmlucHV0Rm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzO1xuICBvcHRpb25JZGVudChfaW5kZXg6IG51bWJlciwgb3B0aW9uOiBGaWx0ZXJWYWx1ZSkge1xuICAgIHJldHVybiBvcHRpb24uaWQ7XG4gIH1cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICA8bWF0LWxhYmVsPkZpbHRlciBieSB7eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxuICA8bWF0LXNlbGVjdFxuICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgW2Zvcm1Db250cm9sXT1cImlucHV0Rm9ybUNvbnRyb2xcIlxuICA+XG4gICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnM7IHRyYWNrQnk6IG9wdGlvbklkZW50IFwiICBbdmFsdWVdPVwib3B0aW9uLmlkXCI+IHt7IG9wdGlvbi5sYWJlbCB9fSA8L21hdC1vcHRpb24+XG5cbiAgPC9tYXQtc2VsZWN0PlxuPC9tYXQtZm9ybS1maWVsZD5cbiJdfQ==
@@ -15,23 +15,27 @@ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
15
15
  import * as i7 from '@angular/material/table';
16
16
  import { MatTableModule, MatTable, MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef } from '@angular/material/table';
17
17
  import { MatGridListModule } from '@angular/material/grid-list';
18
- import { MatFormField, MatLabel, MatSuffix, MatFormFieldModule } from '@angular/material/form-field';
18
+ import * as i1$1 from '@angular/material/form-field';
19
+ import { MatFormFieldModule, MatFormField, MatLabel, MatSuffix } from '@angular/material/form-field';
19
20
  import { MatInput, MatInputModule } from '@angular/material/input';
20
21
  import { MatSidenavModule } from '@angular/material/sidenav';
21
- import * as i1$1 from '@angular/forms';
22
+ import * as i1$2 from '@angular/forms';
22
23
  import { FormControl, ReactiveFormsModule, FormsModule, FormGroup, FormRecord } from '@angular/forms';
23
- import { MatSelect, MatOption, MatSelectModule } from '@angular/material/select';
24
+ import * as i2 from '@angular/material/select';
25
+ import { MatSelectModule } from '@angular/material/select';
24
26
  import * as i9 from '@angular/material/tooltip';
25
27
  import { MatTooltipModule, MatTooltip } from '@angular/material/tooltip';
26
28
  import * as i1 from '@angular/common/http';
27
29
  import { HttpHeaders, HttpContext, HttpParams, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
28
30
  import { Subject, BehaviorSubject, of, forkJoin, pipe } from 'rxjs';
29
31
  import { take, map, finalize, tap, catchError, startWith, filter, distinctUntilChanged, takeUntil } from 'rxjs/operators';
30
- import * as i3 from '@angular/common';
32
+ import * as i3$1 from '@angular/common';
31
33
  import { NgForOf, AsyncPipe, NgClass, NgIf } from '@angular/common';
32
- import * as i2 from '@ngx-translate/core';
34
+ import * as i3 from '@angular/material/core';
35
+ import { MAT_DATE_LOCALE } from '@angular/material/core';
36
+ import * as i2$1 from '@ngx-translate/core';
33
37
  import { TranslateModule } from '@ngx-translate/core';
34
- import * as i2$1 from '@angular/platform-browser';
38
+ import * as i2$2 from '@angular/platform-browser';
35
39
  import { BrowserModule } from '@angular/platform-browser';
36
40
  import { MatListModule } from '@angular/material/list';
37
41
  import { MatSort, MatSortModule } from '@angular/material/sort';
@@ -40,9 +44,8 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
40
44
  import { DateTime } from 'luxon';
41
45
  import { MatDatepicker, MatDatepickerInput, MatDatepickerToggle, MatDateRangeInput, MatDatepickerModule, MatDateRangePicker } from '@angular/material/datepicker';
42
46
  import { provideLuxonDateAdapter, MAT_LUXON_DATE_ADAPTER_OPTIONS } from '@angular/material-luxon-adapter';
43
- import { MAT_DATE_LOCALE } from '@angular/material/core';
44
47
  import { provideCharts, withDefaultRegisterables, BaseChartDirective } from 'ng2-charts';
45
- import * as i2$2 from '@angular/router';
48
+ import * as i2$3 from '@angular/router';
46
49
 
47
50
  /**
48
51
  * Custom HttpParameterCodec
@@ -1747,11 +1750,11 @@ class QualityMatrixFilterComponent {
1747
1750
  return option.id;
1748
1751
  }
1749
1752
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QualityMatrixFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1750
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: QualityMatrixFilterComponent, isStandalone: true, selector: "lib-qm-filter", inputs: { options: "options", inputFormControl: "inputFormControl", label: "label", multiple: "multiple" }, outputs: { changedFilters: "changedFilters" }, ngImport: i0, template: "<mat-form-field appearance=\"outline\">\n <mat-label>Filter by {{ label }}</mat-label>\n <mat-select\n [multiple]=\"multiple\"\n [formControl]=\"inputFormControl\"\n >\n <mat-option *ngFor=\"let option of options; trackBy: optionIdent \" [value]=\"option.id\"> {{ option.label }} </mat-option>\n\n </mat-select>\n</mat-form-field>\n", styles: [":host ::ng-deep>mat-form-field>.mat-mdc-form-field-subscript-wrapper{display:none}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
1753
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: QualityMatrixFilterComponent, isStandalone: true, selector: "lib-qm-filter", inputs: { options: "options", inputFormControl: "inputFormControl", label: "label", multiple: "multiple" }, outputs: { changedFilters: "changedFilters" }, ngImport: i0, template: "<mat-form-field appearance=\"outline\">\n <mat-label>Filter by {{ label }}</mat-label>\n <mat-select\n [multiple]=\"multiple\"\n [formControl]=\"inputFormControl\"\n >\n <mat-option *ngFor=\"let option of options; trackBy: optionIdent \" [value]=\"option.id\"> {{ option.label }} </mat-option>\n\n </mat-select>\n</mat-form-field>\n", styles: [":host ::ng-deep>mat-form-field>.mat-mdc-form-field-subscript-wrapper{display:none}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
1751
1754
  }
1752
1755
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QualityMatrixFilterComponent, decorators: [{
1753
1756
  type: Component,
1754
- args: [{ selector: 'lib-qm-filter', standalone: true, imports: [MatFormField, MatSelect, ReactiveFormsModule, MatOption, MatLabel, NgForOf], template: "<mat-form-field appearance=\"outline\">\n <mat-label>Filter by {{ label }}</mat-label>\n <mat-select\n [multiple]=\"multiple\"\n [formControl]=\"inputFormControl\"\n >\n <mat-option *ngFor=\"let option of options; trackBy: optionIdent \" [value]=\"option.id\"> {{ option.label }} </mat-option>\n\n </mat-select>\n</mat-form-field>\n", styles: [":host ::ng-deep>mat-form-field>.mat-mdc-form-field-subscript-wrapper{display:none}\n"] }]
1757
+ args: [{ selector: 'lib-qm-filter', standalone: true, imports: [MatFormFieldModule, MatSelectModule, ReactiveFormsModule, NgForOf], template: "<mat-form-field appearance=\"outline\">\n <mat-label>Filter by {{ label }}</mat-label>\n <mat-select\n [multiple]=\"multiple\"\n [formControl]=\"inputFormControl\"\n >\n <mat-option *ngFor=\"let option of options; trackBy: optionIdent \" [value]=\"option.id\"> {{ option.label }} </mat-option>\n\n </mat-select>\n</mat-form-field>\n", styles: [":host ::ng-deep>mat-form-field>.mat-mdc-form-field-subscript-wrapper{display:none}\n"] }]
1755
1758
  }], propDecorators: { options: [{
1756
1759
  type: Input
1757
1760
  }],
@@ -1939,7 +1942,7 @@ class TreeSearchCountsComponent {
1939
1942
  return this.collectionColumns.flatMap((e, i) => [e, this.searchColumns[i]]);
1940
1943
  }
1941
1944
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeSearchCountsComponent, deps: [{ token: MetaApiService }, { token: EnvHelperService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1942
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TreeSearchCountsComponent, selector: "app-tree-search-counts", ngImport: i0, template: "<mat-card appearance=\"raised\">\n<mat-card-header>\n <mat-card-title>\n Material in Sammlungen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n</mat-card-header>\n<mat-card-content>\n<!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <lib-qm-filter\n aria-disabled=\"true\"\n [label]=\"'Sammlung'\"\n [options]=\"collections$ | async\"\n [multiple]=\"false\"\n [inputFormControl]=\"selectedCollection\"\n >\n </lib-qm-filter>\n\n</mat-card-content>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"materialCounts.rows\" *ngIf=\"columns\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Label Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Sammlung\n <div >\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showOERonly\" >\n zeige nur OER\n </mat-slide-toggle>\n </div>\n <div>\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showAllColumns\" >\n zeige alle Typen\n </mat-slide-toggle>\n </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 <a (click)=\"openCollection(row.meta.id)\">\n <mat-icon [svgIcon]=\"row.meta.level<=1?'layers':'child'\" />\n {{ row.meta.label }}\n </a>\n </td>\n </ng-container>\n <!-- one column for the MaterialType spanning the collection and search columns-->\n <ng-container *ngFor=\"let col of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"2\" mat-header-cell *matHeaderCellDef class='mat-cell-level-\"{{col.level}}\"' matTooltip=\"{{col.label}}\" >{{col.label}}</th>\n </ng-container>\n <!-- /source -->\n <!-- collection Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"column.id + COLLECTION_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef matTooltip=\"{{column.label}}\" >in Sammlung</th>\n <td [class.noMaterial]=\"!row.counts[column.id]?.sufficient || row.counts[column.id]?.sufficient <= 1\"\n [class.fewMaterials]=\"1 < row.counts[column.id]?.sufficient && row.counts[column.id]?.sufficient <= 3\"\n class=\"collection-data-cell\"\n mat-cell *matCellDef=\"let row\">\n <a (click)=\"showCollectionItems(row.meta.id, row.meta.label, column.id)\">\n {{ row.counts[column.id]?.sufficient || '0' }}\n </a>\n </td>\n </ng-container>\n <!-- /collection Data Columns -->\n <!-- search Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns let index = index; trackBy:columnIdent\" [matColumnDef]=\"column.id + SEARCH_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef>Suche</th>\n <td class=\"search-data-cell\" mat-cell *matCellDef=\"let row\">\n <a (click)=\"searchInEditor(column.id, row.meta.label)\">\n <ng-container *ngIf=\"(( searchCounts | async)?.has(column.id + '_' + row.meta.id) ) else zeroOrLoading\">\n {{ (searchCounts | async)?.get(column.id + '_' + row.meta.id) }}\n </ng-container>\n <ng-template #zeroOrLoading>\n <ng-container *ngIf=\"rowsLoaded.has(row.meta.id) else loadingBlock\"> 0 </ng-container>\n </ng-template>\n <ng-template #loadingBlock>\n loading\u2026\n </ng-template>\n </a>\n </td>\n </ng-container>\n <!-- /search Data Columns -->\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat( typeColumns ); sticky: true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"alternatingDataColumns; sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(alternatingDataColumns)\"></tr>\n </table>\n</mat-card>", styles: ["tr:nth-child(2n){background-color:#e4e4e4}tr:nth-child(2n)>.mat-column-label-col,tr:nth-child(2n) .search-data-cell{border-right-color:#fff}.search-data-cell,.mat-mdc-header-cell,.mat-column-label-col{border-right:1px solid #e4e4e4}.search-data-cell mat-icon,.mat-mdc-header-cell mat-icon,.mat-column-label-col mat-icon{color:var(--mat-table-row-item-label-text-color);height:16px;padding-right:5px;font-size:16px}.mat-mdc-header-cell,.mat-mdc-cell{padding-left:5px;text-align:center}.mat-mdc-header-cell a,.mat-mdc-cell a{cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a:hover,.mat-mdc-cell a:hover{text-decoration:underline}.label-col a{text-decoration:none;align-items:center;display:flex}.mat-column-totals_collection.noMaterial{background-color:#fad6da}.mat-column-totals_collection.fewMaterials{background-color:#fff1d6}.mat-cell-level-1{padding-left:20px!important;text-align:left}.mat-cell-level-2{padding-left:40px!important;text-align:left}.mat-cell-level-3{padding-left:60px!important;text-align:left}.mat-cell-level-4{padding-left:80px!important;text-align:left}.mat-cell-level-5{padding-left:100px!important;text-align:left}.mat-cell-level-6{padding-left:120px!important;text-align:left}.mat-cell-level-7{padding-left:140px!important;text-align:left}.mat-cell-level-8{padding-left:160px!important;text-align:left}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.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: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: QualityMatrixFilterComponent, selector: "lib-qm-filter", inputs: ["options", "inputFormControl", "label", "multiple"], outputs: ["changedFilters"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1945
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TreeSearchCountsComponent, selector: "app-tree-search-counts", ngImport: i0, template: "<mat-card appearance=\"raised\">\n<mat-card-header>\n <mat-card-title>\n Material in Sammlungen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n</mat-card-header>\n<mat-card-content>\n<!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <lib-qm-filter\n aria-disabled=\"true\"\n [label]=\"'Sammlung'\"\n [options]=\"collections$ | async\"\n [multiple]=\"false\"\n [inputFormControl]=\"selectedCollection\"\n >\n </lib-qm-filter>\n\n</mat-card-content>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"materialCounts.rows\" *ngIf=\"columns\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Label Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Sammlung\n <div >\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showOERonly\" >\n zeige nur OER\n </mat-slide-toggle>\n </div>\n <div>\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showAllColumns\" >\n zeige alle Typen\n </mat-slide-toggle>\n </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 <a (click)=\"openCollection(row.meta.id)\">\n <mat-icon [svgIcon]=\"row.meta.level<=1?'layers':'child'\" />\n {{ row.meta.label }}\n </a>\n </td>\n </ng-container>\n <!-- one column for the MaterialType spanning the collection and search columns-->\n <ng-container *ngFor=\"let col of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"2\" mat-header-cell *matHeaderCellDef class='mat-cell-level-\"{{col.level}}\"' matTooltip=\"{{col.label}}\" >{{col.label}}</th>\n </ng-container>\n <!-- /source -->\n <!-- collection Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"column.id + COLLECTION_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef matTooltip=\"{{column.label}}\" >in Sammlung</th>\n <td [class.noMaterial]=\"!row.counts[column.id]?.sufficient || row.counts[column.id]?.sufficient <= 1\"\n [class.fewMaterials]=\"1 < row.counts[column.id]?.sufficient && row.counts[column.id]?.sufficient <= 3\"\n class=\"collection-data-cell\"\n mat-cell *matCellDef=\"let row\">\n <a (click)=\"showCollectionItems(row.meta.id, row.meta.label, column.id)\">\n {{ row.counts[column.id]?.sufficient || '0' }}\n </a>\n </td>\n </ng-container>\n <!-- /collection Data Columns -->\n <!-- search Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns let index = index; trackBy:columnIdent\" [matColumnDef]=\"column.id + SEARCH_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef>Suche</th>\n <td class=\"search-data-cell\" mat-cell *matCellDef=\"let row\">\n <a (click)=\"searchInEditor(column.id, row.meta.label)\">\n <ng-container *ngIf=\"(( searchCounts | async)?.has(column.id + '_' + row.meta.id) ) else zeroOrLoading\">\n {{ (searchCounts | async)?.get(column.id + '_' + row.meta.id) }}\n </ng-container>\n <ng-template #zeroOrLoading>\n <ng-container *ngIf=\"rowsLoaded.has(row.meta.id) else loadingBlock\"> 0 </ng-container>\n </ng-template>\n <ng-template #loadingBlock>\n loading\u2026\n </ng-template>\n </a>\n </td>\n </ng-container>\n <!-- /search Data Columns -->\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat( typeColumns ); sticky: true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"alternatingDataColumns; sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(alternatingDataColumns)\"></tr>\n </table>\n</mat-card>", styles: ["tr:nth-child(2n){background-color:#e4e4e4}tr:nth-child(2n)>.mat-column-label-col,tr:nth-child(2n) .search-data-cell{border-right-color:#fff}.search-data-cell,.mat-mdc-header-cell,.mat-column-label-col{border-right:1px solid #e4e4e4}.search-data-cell mat-icon,.mat-mdc-header-cell mat-icon,.mat-column-label-col mat-icon{color:var(--mat-table-row-item-label-text-color);height:16px;padding-right:5px;font-size:16px}.mat-mdc-header-cell,.mat-mdc-cell{padding-left:5px;text-align:center}.mat-mdc-header-cell a,.mat-mdc-cell a{cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a:hover,.mat-mdc-cell a:hover{text-decoration:underline}.label-col a{text-decoration:none;align-items:center;display:flex}.mat-column-totals_collection.noMaterial{background-color:#fad6da}.mat-column-totals_collection.fewMaterials{background-color:#fff1d6}.mat-cell-level-1{padding-left:20px!important;text-align:left}.mat-cell-level-2{padding-left:40px!important;text-align:left}.mat-cell-level-3{padding-left:60px!important;text-align:left}.mat-cell-level-4{padding-left:80px!important;text-align:left}.mat-cell-level-5{padding-left:100px!important;text-align:left}.mat-cell-level-6{padding-left:120px!important;text-align:left}.mat-cell-level-7{padding-left:140px!important;text-align:left}.mat-cell-level-8{padding-left:160px!important;text-align:left}\n"], dependencies: [{ kind: "directive", type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.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: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: QualityMatrixFilterComponent, selector: "lib-qm-filter", inputs: ["options", "inputFormControl", "label", "multiple"], outputs: ["changedFilters"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1943
1946
  }
1944
1947
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeSearchCountsComponent, decorators: [{
1945
1948
  type: Component,
@@ -2087,13 +2090,13 @@ class TreeCollectionDetailsComponent {
2087
2090
  const title = collectionTitel + ' - ' + translated;
2088
2091
  return this.linkService.openByCollectionAndIssueType(collectionId, issueType, title);
2089
2092
  }
2090
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeCollectionDetailsComponent, deps: [{ token: MetaApiService }, { token: i2.TranslateService }, { token: EditorialLinkService }], target: i0.ɵɵFactoryTarget.Component }); }
2091
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TreeCollectionDetailsComponent, selector: "app-tree-collection-details", ngImport: i0, template: "<mat-card>\n <mat-card-header>\n <mat-card-title>\n Qualit\u00E4tsmetrik: Metadatenvollst\u00E4ndigkeit von Sammlungen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n </mat-card-header>\n <mat-card-content>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <lib-qm-filter\n aria-disabled=\"true\"\n [label]=\"'Sammlung'\"\n [options]=\"collections$ | async\"\n [multiple]=\"false\"\n [inputFormControl]=\"selectedCollection\"\n >\n </lib-qm-filter>\n\n </mat-card-content>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"recentQualityMatrix$.value.rows\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"row-header\" sticky>\n <th mat-header-cell *matHeaderCellDef>Sammlung</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"row-header {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n <a (click)=\"openCollection(row.meta.id)\">\n <mat-icon [svgIcon]=\"row.meta.level === 1 ? 'tree' : 'child'\"></mat-icon>\n {{row.meta.label}}\n </a>\n </td>\n </ng-container>\n\n <!-- Data Columns -->\n <ng-container *ngFor=\"let column of dataColumns\" [matColumnDef]=\"column.id\">\n <th mat-header-cell *matHeaderCellDef matTooltip=\"{{column.altLabel}}\" >{{ \"quality_matrix.\" + column.label | translate }}</th>\n <td mat-cell *matCellDef=\"let row\" matTooltip=\"{{'cell tooltip' //getCellTooltip(row, column.id)}}\">\n <ng-container *ngIf=\" column.id === 'collection_issues' else countsWithLinks\">\n {{ translateCollectionIssues(row.counts[column.id]) | async }}\n </ng-container>\n <ng-template #countsWithLinks>\n <a *ngIf=\"row.counts[column.id]\" (click)=\"showMaterialWithIssue(row.meta.id, row.meta.label, column.id)\">\n {{ row.counts[column.id] }}\n </a>\n </ng-template>\n\n\n </td>\n </ng-container>\n\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['row-header'].concat(columnIds); sticky:true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['row-header'].concat(columnIds)\"></tr>\n </table>\n</mat-card>\n", styles: ["tr:nth-child(2n){background-color:#e4e4e4}tr:nth-child(2n)>.mat-column-row-header,tr:nth-child(2n) .mat-mdc-cell{border-right-color:#fff}.mat-mdc-cell,.mat-mdc-header-cell,.mat-column-row-header{border-right:1px solid #e4e4e4}.mat-mdc-cell mat-icon,.mat-mdc-header-cell mat-icon,.mat-column-row-header mat-icon{color:var(--mat-table-row-item-label-text-color);height:16px;padding-right:5px;font-size:16px}.mat-mdc-header-cell,.mat-mdc-cell{padding-left:5px;text-align:center}.mat-mdc-header-cell a,.mat-mdc-cell a{cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a:hover,.mat-mdc-cell a:hover{text-decoration:underline}.row-header a{text-decoration:none;align-items:center;display:flex}.mat-column-totals_collection.noMaterial{background-color:#fad6da}.mat-column-totals_collection.fewMaterials{background-color:#fff1d6}.mat-cell-level-1{padding-left:20px!important;text-align:left}.mat-cell-level-2{padding-left:40px!important;text-align:left}.mat-cell-level-3{padding-left:60px!important;text-align:left}.mat-cell-level-4{padding-left:80px!important;text-align:left}.mat-cell-level-5{padding-left:100px!important;text-align:left}.mat-cell-level-6{padding-left:120px!important;text-align:left}.mat-cell-level-7{padding-left:140px!important;text-align:left}.mat-cell-level-8{padding-left:160px!important;text-align:left}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: QualityMatrixFilterComponent, selector: "lib-qm-filter", inputs: ["options", "inputFormControl", "label", "multiple"], outputs: ["changedFilters"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
2093
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeCollectionDetailsComponent, deps: [{ token: MetaApiService }, { token: i2$1.TranslateService }, { token: EditorialLinkService }], target: i0.ɵɵFactoryTarget.Component }); }
2094
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TreeCollectionDetailsComponent, selector: "app-tree-collection-details", ngImport: i0, template: "<mat-card>\n <mat-card-header>\n <mat-card-title>\n Qualit\u00E4tsmetrik: Metadatenvollst\u00E4ndigkeit von Sammlungen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n </mat-card-header>\n <mat-card-content>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <lib-qm-filter\n aria-disabled=\"true\"\n [label]=\"'Sammlung'\"\n [options]=\"collections$ | async\"\n [multiple]=\"false\"\n [inputFormControl]=\"selectedCollection\"\n >\n </lib-qm-filter>\n\n </mat-card-content>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"recentQualityMatrix$.value.rows\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"row-header\" sticky>\n <th mat-header-cell *matHeaderCellDef>Sammlung</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"row-header {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n <a (click)=\"openCollection(row.meta.id)\">\n <mat-icon [svgIcon]=\"row.meta.level === 1 ? 'tree' : 'child'\"></mat-icon>\n {{row.meta.label}}\n </a>\n </td>\n </ng-container>\n\n <!-- Data Columns -->\n <ng-container *ngFor=\"let column of dataColumns\" [matColumnDef]=\"column.id\">\n <th mat-header-cell *matHeaderCellDef matTooltip=\"{{column.altLabel}}\" >{{ \"quality_matrix.\" + column.label | translate }}</th>\n <td mat-cell *matCellDef=\"let row\" matTooltip=\"{{'cell tooltip' //getCellTooltip(row, column.id)}}\">\n <ng-container *ngIf=\" column.id === 'collection_issues' else countsWithLinks\">\n {{ translateCollectionIssues(row.counts[column.id]) | async }}\n </ng-container>\n <ng-template #countsWithLinks>\n <a *ngIf=\"row.counts[column.id]\" (click)=\"showMaterialWithIssue(row.meta.id, row.meta.label, column.id)\">\n {{ row.counts[column.id] }}\n </a>\n </ng-template>\n\n\n </td>\n </ng-container>\n\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['row-header'].concat(columnIds); sticky:true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['row-header'].concat(columnIds)\"></tr>\n </table>\n</mat-card>\n", styles: ["tr:nth-child(2n){background-color:#e4e4e4}tr:nth-child(2n)>.mat-column-row-header,tr:nth-child(2n) .mat-mdc-cell{border-right-color:#fff}.mat-mdc-cell,.mat-mdc-header-cell,.mat-column-row-header{border-right:1px solid #e4e4e4}.mat-mdc-cell mat-icon,.mat-mdc-header-cell mat-icon,.mat-column-row-header mat-icon{color:var(--mat-table-row-item-label-text-color);height:16px;padding-right:5px;font-size:16px}.mat-mdc-header-cell,.mat-mdc-cell{padding-left:5px;text-align:center}.mat-mdc-header-cell a,.mat-mdc-cell a{cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a:hover,.mat-mdc-cell a:hover{text-decoration:underline}.row-header a{text-decoration:none;align-items:center;display:flex}.mat-column-totals_collection.noMaterial{background-color:#fad6da}.mat-column-totals_collection.fewMaterials{background-color:#fff1d6}.mat-cell-level-1{padding-left:20px!important;text-align:left}.mat-cell-level-2{padding-left:40px!important;text-align:left}.mat-cell-level-3{padding-left:60px!important;text-align:left}.mat-cell-level-4{padding-left:80px!important;text-align:left}.mat-cell-level-5{padding-left:100px!important;text-align:left}.mat-cell-level-6{padding-left:120px!important;text-align:left}.mat-cell-level-7{padding-left:140px!important;text-align:left}.mat-cell-level-8{padding-left:160px!important;text-align:left}\n"], dependencies: [{ kind: "directive", type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: QualityMatrixFilterComponent, selector: "lib-qm-filter", inputs: ["options", "inputFormControl", "label", "multiple"], outputs: ["changedFilters"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }] }); }
2092
2095
  }
2093
2096
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeCollectionDetailsComponent, decorators: [{
2094
2097
  type: Component,
2095
2098
  args: [{ selector: 'app-tree-collection-details', template: "<mat-card>\n <mat-card-header>\n <mat-card-title>\n Qualit\u00E4tsmetrik: Metadatenvollst\u00E4ndigkeit von Sammlungen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n </mat-card-header>\n <mat-card-content>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <lib-qm-filter\n aria-disabled=\"true\"\n [label]=\"'Sammlung'\"\n [options]=\"collections$ | async\"\n [multiple]=\"false\"\n [inputFormControl]=\"selectedCollection\"\n >\n </lib-qm-filter>\n\n </mat-card-content>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"recentQualityMatrix$.value.rows\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"row-header\" sticky>\n <th mat-header-cell *matHeaderCellDef>Sammlung</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"row-header {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n <a (click)=\"openCollection(row.meta.id)\">\n <mat-icon [svgIcon]=\"row.meta.level === 1 ? 'tree' : 'child'\"></mat-icon>\n {{row.meta.label}}\n </a>\n </td>\n </ng-container>\n\n <!-- Data Columns -->\n <ng-container *ngFor=\"let column of dataColumns\" [matColumnDef]=\"column.id\">\n <th mat-header-cell *matHeaderCellDef matTooltip=\"{{column.altLabel}}\" >{{ \"quality_matrix.\" + column.label | translate }}</th>\n <td mat-cell *matCellDef=\"let row\" matTooltip=\"{{'cell tooltip' //getCellTooltip(row, column.id)}}\">\n <ng-container *ngIf=\" column.id === 'collection_issues' else countsWithLinks\">\n {{ translateCollectionIssues(row.counts[column.id]) | async }}\n </ng-container>\n <ng-template #countsWithLinks>\n <a *ngIf=\"row.counts[column.id]\" (click)=\"showMaterialWithIssue(row.meta.id, row.meta.label, column.id)\">\n {{ row.counts[column.id] }}\n </a>\n </ng-template>\n\n\n </td>\n </ng-container>\n\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['row-header'].concat(columnIds); sticky:true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['row-header'].concat(columnIds)\"></tr>\n </table>\n</mat-card>\n", styles: ["tr:nth-child(2n){background-color:#e4e4e4}tr:nth-child(2n)>.mat-column-row-header,tr:nth-child(2n) .mat-mdc-cell{border-right-color:#fff}.mat-mdc-cell,.mat-mdc-header-cell,.mat-column-row-header{border-right:1px solid #e4e4e4}.mat-mdc-cell mat-icon,.mat-mdc-header-cell mat-icon,.mat-column-row-header mat-icon{color:var(--mat-table-row-item-label-text-color);height:16px;padding-right:5px;font-size:16px}.mat-mdc-header-cell,.mat-mdc-cell{padding-left:5px;text-align:center}.mat-mdc-header-cell a,.mat-mdc-cell a{cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a:hover,.mat-mdc-cell a:hover{text-decoration:underline}.row-header a{text-decoration:none;align-items:center;display:flex}.mat-column-totals_collection.noMaterial{background-color:#fad6da}.mat-column-totals_collection.fewMaterials{background-color:#fff1d6}.mat-cell-level-1{padding-left:20px!important;text-align:left}.mat-cell-level-2{padding-left:40px!important;text-align:left}.mat-cell-level-3{padding-left:60px!important;text-align:left}.mat-cell-level-4{padding-left:80px!important;text-align:left}.mat-cell-level-5{padding-left:100px!important;text-align:left}.mat-cell-level-6{padding-left:120px!important;text-align:left}.mat-cell-level-7{padding-left:140px!important;text-align:left}.mat-cell-level-8{padding-left:160px!important;text-align:left}\n"] }]
2096
- }], ctorParameters: () => [{ type: MetaApiService }, { type: i2.TranslateService }, { type: EditorialLinkService }] });
2099
+ }], ctorParameters: () => [{ type: MetaApiService }, { type: i2$1.TranslateService }, { type: EditorialLinkService }] });
2097
2100
 
2098
2101
  function wrapResponse() {
2099
2102
  return pipe(map((data) => ({ state: 'success', data })), catchError((error) => of({ state: 'error', error })), startWith({ state: 'loading' }));
@@ -2137,7 +2140,7 @@ class DatepickerComponent {
2137
2140
  { provide: LOCALE_ID, useValue: 'de-DE' },
2138
2141
  { provide: MAT_DATE_LOCALE, useValue: 'de-DE' },
2139
2142
  { provide: MAT_LUXON_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true, firstDayOfWeek: 1 } },
2140
- ], ngImport: i0, template: "<mat-card>\n <mat-card-header>\n <mat-card-title> Zeitlicher Vergleich </mat-card-title>\n </mat-card-header>\n <mat-card-content [formGroup]=\"inputGroup\">\n <!-- start date -->\n <mat-form-field>\n <mat-label>Zeitpunkt 1</mat-label>\n <input matInput\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker1\" formControlName=\"start\"\n placeholder=\"Starts date\"\n >\n<!--\n <mat-hint>d.M.yyyy</mat-hint>\n-->\n <mat-datepicker-toggle matIconSuffix [for]=\"picker1\"></mat-datepicker-toggle>\n <mat-datepicker [disabled]=\"disabled\" #picker1 [startAt]=\"inputGroup.controls.start.defaultValue\">\n </mat-datepicker>\n </mat-form-field>\n <!-- /start date -->\n <!-- end date -->\n <mat-form-field>\n <mat-label>Zeitpunkt2</mat-label>\n <input matInput\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker2\"\n formControlName=\"end\"\n placeholder=\"End date\"\n >\n <!--\n <mat-hint>d.M.yyyy</mat-hint>\n -->\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker [disabled]=\"disabled\" #picker2 [startAt]=\"inputGroup.controls.end.value\">\n </mat-datepicker>\n </mat-form-field>\n <!-- /end date -->\n </mat-card-content>\n</mat-card>", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.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: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
2143
+ ], ngImport: i0, template: "<mat-card>\n <mat-card-header>\n <mat-card-title> Zeitlicher Vergleich </mat-card-title>\n </mat-card-header>\n <mat-card-content [formGroup]=\"inputGroup\">\n <!-- start date -->\n <mat-form-field>\n <mat-label>Zeitpunkt 1</mat-label>\n <input matInput\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker1\" formControlName=\"start\"\n placeholder=\"Starts date\"\n >\n<!--\n <mat-hint>d.M.yyyy</mat-hint>\n-->\n <mat-datepicker-toggle matIconSuffix [for]=\"picker1\"></mat-datepicker-toggle>\n <mat-datepicker [disabled]=\"disabled\" #picker1 [startAt]=\"inputGroup.controls.start.defaultValue\">\n </mat-datepicker>\n </mat-form-field>\n <!-- /start date -->\n <!-- end date -->\n <mat-form-field>\n <mat-label>Zeitpunkt2</mat-label>\n <input matInput\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker2\"\n formControlName=\"end\"\n placeholder=\"End date\"\n >\n <!--\n <mat-hint>d.M.yyyy</mat-hint>\n -->\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker [disabled]=\"disabled\" #picker2 [startAt]=\"inputGroup.controls.end.value\">\n </mat-datepicker>\n </mat-form-field>\n <!-- /end date -->\n </mat-card-content>\n</mat-card>", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.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: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
2141
2144
  }
2142
2145
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatepickerComponent, decorators: [{
2143
2146
  type: Component,
@@ -2256,7 +2259,7 @@ class DonutChartComponent {
2256
2259
  <title>{{slice.label}}</title>
2257
2260
  </path>
2258
2261
  </svg>
2259
- `, isInline: true, styles: [":host{display:block}svg{overflow:visible;transform-origin:center;width:3.5rem;aspect-ratio:1/1;rotate:-90deg}path{transform-origin:center;fill-opacity:.7;cursor:pointer}path:hover{fill-opacity:1}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: DonutChartPipe, name: "slicesWithCommandsAndOffset" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2262
+ `, isInline: true, styles: [":host{display:block}svg{overflow:visible;transform-origin:center;width:3.5rem;aspect-ratio:1/1;rotate:-90deg}path{transform-origin:center;fill-opacity:.7;cursor:pointer}path:hover{fill-opacity:1}\n"], dependencies: [{ kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: DonutChartPipe, name: "slicesWithCommandsAndOffset" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2260
2263
  }
2261
2264
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DonutChartComponent, decorators: [{
2262
2265
  type: Component,
@@ -2501,7 +2504,7 @@ class QualityMatrixComponent {
2501
2504
  return slices;
2502
2505
  }
2503
2506
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QualityMatrixComponent, deps: [{ token: MetaApiService }, { token: EditorialLinkService }], target: i0.ɵɵFactoryTarget.Component }); }
2504
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: QualityMatrixComponent, selector: "app-quality-matrix-v2", ngImport: i0, template: "<mat-card appearance=\"raised\">\n <mat-card-header>\n <mat-card-title>\n Qualit\u00E4tsmetrik: Metadatenvollst\u00E4ndigkeit von Quellen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n </mat-card-header>\n <mat-card-content>\n <lib-qm-filter\n *ngFor=\"let filter of categoryControls.controls | keyvalue; trackBy: filterIdent\"\n [options]=\"categoryFilterValues.get(filter.key)\"\n [inputFormControl]=\"filter.value\"\n [label] = \"'filter.' + filter.key | translate\"></lib-qm-filter>\n </mat-card-content>\n <mat-card-actions align=\"end\">\n <mat-slide-toggle [disabled]=\"isLoading()\" labelPosition=\"before\" [formControl]=\"onlySourcesWithMaterial\" id=\"onlySourcesWithMaterial\" >\n show only sources with material\n </mat-slide-toggle>\n <mat-slide-toggle [disabled]=\"isLoading()\" labelPosition=\"before\" [formControl]=\"showHistoricalData\" id=\"showHistoricalData\" >\n show historical data\n </mat-slide-toggle>\n <button\n mat-icon-button\n color=\"primary\"\n [disabled]=\"isLoading\"\n (click)=\"refresh()\"\n matTooltip=\"Aktualisiere den IST-Stand\"\n matTooltipShowDelay=\"500\"\n >\n <mat-icon>refresh</mat-icon>\n </button>\n </mat-card-actions>\n</mat-card>\n<lib-datepicker *ngIf=\"showHistoricalData.value\" [disabled]=\"isLoading()\" [inputGroup]=\"range\" ></lib-datepicker>\n\n\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"recentQualityMatrix$.value.rows\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"row-header\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Issue Type</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"row-header {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n {{\"quality_matrix.\" + row.meta.label | translate }}\n </td>\n </ng-container>\n <!-- one column for the source -->\n <ng-container *ngFor=\"let col of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_source'\">\n <th [attr.colspan]=\"showHistoricalData.value?2:1\" mat-header-cell *matHeaderCellDef matTooltip=\"{{col.altLabel}}\" >{{col.label}}</th>\n </ng-container>\n <!-- /source -->\n <!-- current Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"column.id + '_current'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"{{column.altLabel}}\" >{{ range.controls.end.value?.toLocaleString(DateTime.DATE_SHORT) }} <br>({{column.total}})</th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">\n <a *ngIf=\"column.total > 0 else emptyDiv\" class=\"chart-container\" (click)=\"openEditLink( column.label, row.meta.label)\">\n <div >\n <app-donut-chart [data]=\"getDonutSlices(row, column)\" [borderSize]=\"25\"></app-donut-chart>\n </div>\n </a>\n <ng-template #emptyDiv>\n <div>-</div>\n </ng-template>\n </td>\n </ng-container>\n <!-- /current Data Columns -->\n <!-- past Data Columns -->\n <ng-container *ngIf=\"showHistoricalData.value\">\n <ng-container *ngFor=\"let column of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"column.id + '_past'\">\n <th class=\"historic-data-cell\" mat-header-cell\n *matHeaderCellDef>{{ range.controls.start.value?.toLocaleString(DateTime.DATE_SHORT) }}\n <br>{{ getPastColumn(column.id)?.total }}\n </th>\n <td class=\"historic-data-cell\" mat-cell *matCellDef=\"let row\">\n <ng-container *ngIf=\"getTrend(row, column) as trend\">\n <span [ngClass]=\"trend.trend\">\n <mat-icon aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" />\n {{ trend.delta }}\n </span>\n </ng-container>\n\n </td>\n </ng-container>\n </ng-container>\n <!-- /past Data Columns -->\n\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['row-header'].concat( sourceColumns); sticky: true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"allDataColumns; sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['row-header'].concat(allDataColumns)\"></tr>\n </table>\n</mat-card>\n", styles: ["mat-card-actions>mat-slide-toggle{margin-left:20px}.row{flex-grow:1;display:flex;align-items:center}table{width:100%;overflow-y:auto}table .scroll{flex-grow:1;overflow-y:auto}.cell{flex:1}.mat-mdc-cell{padding-top:5px}.mat-mdc-cell,.mat-mdc-header-cell{padding-left:5px;text-align:center}.mat-mdc-cell a.chart-container,.mat-mdc-header-cell a.chart-container{display:flex;justify-content:center}.mat-mdc-cell .trending_up,.mat-mdc-header-cell .trending_up{color:#4abeff}.mat-mdc-cell .trending_down,.mat-mdc-header-cell .trending_down{color:#c20808}.recent-data-cell,.mat-column-row-header{border-right:1px solid #e4e4e4}.mat-header-cell-label{color:#000;padding-left:30px;padding-right:30px;justify-content:left;border-bottom:1px solid #e4e4e4;font-style:normal;font-weight:500;font-size:110%;background:#ddf0fb;text-align:left}.mat-header-cell-label>div{display:flex;font-weight:700;font-style:normal;justify-content:left}.mat-header-cell-small{padding-left:5px;padding-right:5px;justify-content:left;font-style:normal;font-weight:400;font-size:105%;background:#ddf0fb;border-top:1px solid #e4e4e4;border-bottom:1px solid #e4e4e4}.mat-mdc-cell a{cursor:pointer;display:flex;align-items:center;justify-content:left}.mat-mdc-cell a>mat-icon{padding-right:5px;font-size:22px;height:20px;opacity:.75}.mat-mdc-cell a>mat-icon:hover,.mat-mdc-cell a>mat-icon:focus{text-decoration:none}.mat-mdc-cell .number{display:flex;height:47px;justify-content:left;align-items:center;padding-left:15px}.mat-mdc-cell .row-header{display:flex;height:47px;max-height:47px;justify-content:left;align-items:center;padding-left:15px}.mat-mdc-cell .row-header-sum{display:flex;height:47px;max-height:47px;justify-content:left;align-items:center;border-right:5px solid #bdbdbd}.mat-mdc-card{width:100%;box-shadow:none}.mat-mdc-card ::ng-deep mat-card-header{align-items:center}.mat-mdc-card ::ng-deep mat-card-header .mat-card-header-text{flex-grow:1;margin:0}.mat-mdc-card ::ng-deep mat-card-header .mat-card-header-text mat-card-title{padding-top:20px;font-size:120%}.mat-mdc-card ::ng-deep mat-card-header .mat-card-header-text mat-card-title .count{font-size:80%;color:#888}.mat-mdc-card .source-header{font-style:normal;font-weight:400;font-size:20px;height:30px;width:60%}.mat-mdc-card .source-header .robot-explanation{font-size:15px}.mat-mdc-card .scroll{flex-grow:1;overflow-y:auto}.mat-header-cell-scope{color:#545454}.mat-mdc-header-row{height:70px;max-height:70px;min-height:56px}:host{overflow:auto}:host ::ng-deep thead{border:10px solid #ff0000;position:relative;z-index:1}.mat-cell-level-1{padding-left:20px!important}.mat-cell-level-2{padding-left:40px!important}.mat-cell-level-3{padding-left:60px!important}.mat-cell-level-4{padding-left:80px!important}.mat-cell-level-5{padding-left:100px!important}.mat-cell-level-6{padding-left:120px!important}.mat-cell-level-7{padding-left:140px!important}.mat-cell-level-8{padding-left:160px!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.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: "component", type: i7$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: QualityMatrixFilterComponent, selector: "lib-qm-filter", inputs: ["options", "inputFormControl", "label", "multiple"], outputs: ["changedFilters"] }, { kind: "component", type: DatepickerComponent, selector: "lib-datepicker", inputs: ["disabled", "inputGroup"] }, { kind: "component", type: DonutChartComponent, selector: "app-donut-chart", inputs: ["radius", "viewBox", "borderSize", "strokeWidth", "data"] }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
2507
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: QualityMatrixComponent, selector: "app-quality-matrix-v2", ngImport: i0, template: "<mat-card appearance=\"raised\">\n <mat-card-header>\n <mat-card-title>\n Qualit\u00E4tsmetrik: Metadatenvollst\u00E4ndigkeit von Quellen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n </mat-card-header>\n <mat-card-content>\n <lib-qm-filter\n *ngFor=\"let filter of categoryControls.controls | keyvalue; trackBy: filterIdent\"\n [options]=\"categoryFilterValues.get(filter.key)\"\n [inputFormControl]=\"filter.value\"\n [label] = \"'filter.' + filter.key | translate\"></lib-qm-filter>\n </mat-card-content>\n <mat-card-actions align=\"end\">\n <mat-slide-toggle [disabled]=\"isLoading()\" labelPosition=\"before\" [formControl]=\"onlySourcesWithMaterial\" id=\"onlySourcesWithMaterial\" >\n show only sources with material\n </mat-slide-toggle>\n <mat-slide-toggle [disabled]=\"isLoading()\" labelPosition=\"before\" [formControl]=\"showHistoricalData\" id=\"showHistoricalData\" >\n show historical data\n </mat-slide-toggle>\n <button\n mat-icon-button\n color=\"primary\"\n [disabled]=\"isLoading\"\n (click)=\"refresh()\"\n matTooltip=\"Aktualisiere den IST-Stand\"\n matTooltipShowDelay=\"500\"\n >\n <mat-icon>refresh</mat-icon>\n </button>\n </mat-card-actions>\n</mat-card>\n<lib-datepicker *ngIf=\"showHistoricalData.value\" [disabled]=\"isLoading()\" [inputGroup]=\"range\" ></lib-datepicker>\n\n\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"recentQualityMatrix$.value.rows\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"row-header\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Issue Type</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"row-header {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n {{\"quality_matrix.\" + row.meta.label | translate }}\n </td>\n </ng-container>\n <!-- one column for the source -->\n <ng-container *ngFor=\"let col of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_source'\">\n <th [attr.colspan]=\"showHistoricalData.value?2:1\" mat-header-cell *matHeaderCellDef matTooltip=\"{{col.altLabel}}\" >{{col.label}}</th>\n </ng-container>\n <!-- /source -->\n <!-- current Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"column.id + '_current'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"{{column.altLabel}}\" >{{ range.controls.end.value?.toLocaleString(DateTime.DATE_SHORT) }} <br>({{column.total}})</th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">\n <a *ngIf=\"column.total > 0 else emptyDiv\" class=\"chart-container\" (click)=\"openEditLink( column.label, row.meta.label)\">\n <div >\n <app-donut-chart [data]=\"getDonutSlices(row, column)\" [borderSize]=\"25\"></app-donut-chart>\n </div>\n </a>\n <ng-template #emptyDiv>\n <div>-</div>\n </ng-template>\n </td>\n </ng-container>\n <!-- /current Data Columns -->\n <!-- past Data Columns -->\n <ng-container *ngIf=\"showHistoricalData.value\">\n <ng-container *ngFor=\"let column of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"column.id + '_past'\">\n <th class=\"historic-data-cell\" mat-header-cell\n *matHeaderCellDef>{{ range.controls.start.value?.toLocaleString(DateTime.DATE_SHORT) }}\n <br>{{ getPastColumn(column.id)?.total }}\n </th>\n <td class=\"historic-data-cell\" mat-cell *matCellDef=\"let row\">\n <ng-container *ngIf=\"getTrend(row, column) as trend\">\n <span [ngClass]=\"trend.trend\">\n <mat-icon aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" />\n {{ trend.delta }}\n </span>\n </ng-container>\n\n </td>\n </ng-container>\n </ng-container>\n <!-- /past Data Columns -->\n\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['row-header'].concat( sourceColumns); sticky: true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"allDataColumns; sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['row-header'].concat(allDataColumns)\"></tr>\n </table>\n</mat-card>\n", styles: ["mat-card-actions>mat-slide-toggle{margin-left:20px}.row{flex-grow:1;display:flex;align-items:center}table{width:100%;overflow-y:auto}table .scroll{flex-grow:1;overflow-y:auto}.cell{flex:1}.mat-mdc-cell{padding-top:5px}.mat-mdc-cell,.mat-mdc-header-cell{padding-left:5px;text-align:center}.mat-mdc-cell a.chart-container,.mat-mdc-header-cell a.chart-container{display:flex;justify-content:center}.mat-mdc-cell .trending_up,.mat-mdc-header-cell .trending_up{color:#4abeff}.mat-mdc-cell .trending_down,.mat-mdc-header-cell .trending_down{color:#c20808}.recent-data-cell,.mat-column-row-header{border-right:1px solid #e4e4e4}.mat-header-cell-label{color:#000;padding-left:30px;padding-right:30px;justify-content:left;border-bottom:1px solid #e4e4e4;font-style:normal;font-weight:500;font-size:110%;background:#ddf0fb;text-align:left}.mat-header-cell-label>div{display:flex;font-weight:700;font-style:normal;justify-content:left}.mat-header-cell-small{padding-left:5px;padding-right:5px;justify-content:left;font-style:normal;font-weight:400;font-size:105%;background:#ddf0fb;border-top:1px solid #e4e4e4;border-bottom:1px solid #e4e4e4}.mat-mdc-cell a{cursor:pointer;display:flex;align-items:center;justify-content:left}.mat-mdc-cell a>mat-icon{padding-right:5px;font-size:22px;height:20px;opacity:.75}.mat-mdc-cell a>mat-icon:hover,.mat-mdc-cell a>mat-icon:focus{text-decoration:none}.mat-mdc-cell .number{display:flex;height:47px;justify-content:left;align-items:center;padding-left:15px}.mat-mdc-cell .row-header{display:flex;height:47px;max-height:47px;justify-content:left;align-items:center;padding-left:15px}.mat-mdc-cell .row-header-sum{display:flex;height:47px;max-height:47px;justify-content:left;align-items:center;border-right:5px solid #bdbdbd}.mat-mdc-card{width:100%;box-shadow:none}.mat-mdc-card ::ng-deep mat-card-header{align-items:center}.mat-mdc-card ::ng-deep mat-card-header .mat-card-header-text{flex-grow:1;margin:0}.mat-mdc-card ::ng-deep mat-card-header .mat-card-header-text mat-card-title{padding-top:20px;font-size:120%}.mat-mdc-card ::ng-deep mat-card-header .mat-card-header-text mat-card-title .count{font-size:80%;color:#888}.mat-mdc-card .source-header{font-style:normal;font-weight:400;font-size:20px;height:30px;width:60%}.mat-mdc-card .source-header .robot-explanation{font-size:15px}.mat-mdc-card .scroll{flex-grow:1;overflow-y:auto}.mat-header-cell-scope{color:#545454}.mat-mdc-header-row{height:70px;max-height:70px;min-height:56px}:host{overflow:auto}:host ::ng-deep thead{border:10px solid #ff0000;position:relative;z-index:1}.mat-cell-level-1{padding-left:20px!important}.mat-cell-level-2{padding-left:40px!important}.mat-cell-level-3{padding-left:60px!important}.mat-cell-level-4{padding-left:80px!important}.mat-cell-level-5{padding-left:100px!important}.mat-cell-level-6{padding-left:120px!important}.mat-cell-level-7{padding-left:140px!important}.mat-cell-level-8{padding-left:160px!important}\n"], dependencies: [{ kind: "directive", type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.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: "component", type: i7$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: QualityMatrixFilterComponent, selector: "lib-qm-filter", inputs: ["options", "inputFormControl", "label", "multiple"], outputs: ["changedFilters"] }, { kind: "component", type: DatepickerComponent, selector: "lib-datepicker", inputs: ["disabled", "inputGroup"] }, { kind: "component", type: DonutChartComponent, selector: "app-donut-chart", inputs: ["radius", "viewBox", "borderSize", "strokeWidth", "data"] }, { kind: "pipe", type: i3$1.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }] }); }
2505
2508
  }
2506
2509
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QualityMatrixComponent, decorators: [{
2507
2510
  type: Component,
@@ -2537,13 +2540,13 @@ class SvgIconsService {
2537
2540
  }
2538
2541
  this.initialized = true;
2539
2542
  }
2540
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SvgIconsService, deps: [{ token: i5.MatIconRegistry }, { token: i2$1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable }); }
2543
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SvgIconsService, deps: [{ token: i5.MatIconRegistry }, { token: i2$2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable }); }
2541
2544
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SvgIconsService, providedIn: 'root' }); }
2542
2545
  }
2543
2546
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SvgIconsService, decorators: [{
2544
2547
  type: Injectable,
2545
2548
  args: [{ providedIn: 'root' }]
2546
- }], ctorParameters: () => [{ type: i5.MatIconRegistry }, { type: i2$1.DomSanitizer }] });
2549
+ }], ctorParameters: () => [{ type: i5.MatIconRegistry }, { type: i2$2.DomSanitizer }] });
2547
2550
 
2548
2551
  class NgMetaWidgetsLibModule {
2549
2552
  constructor(svgIconsService) {
@@ -2722,7 +2725,7 @@ class MonthpickerComponent {
2722
2725
  { provide: LOCALE_ID, useValue: 'de-DE' },
2723
2726
  { provide: MAT_DATE_LOCALE, useValue: 'de-DE' },
2724
2727
  { provide: MAT_LUXON_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true, firstDayOfWeek: 1 } },
2725
- ], ngImport: i0, template: "<!--\n<mat-card>\n <mat-card-header>\n <mat-card-title> Monatlicher Vergleich </mat-card-title>\n </mat-card-header>\n <mat-card-content [formGroup]=\"inputGroup\">\n </!-- start date --/>\n -->\n<ng-container [formGroup]=\"inputGroup\" >\n <mat-form-field>\n <mat-label>Zeitpunkt 1</mat-label>\n <input matInput\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker1\" formControlName=\"start\"\n placeholder=\"Starts date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker1\"></mat-datepicker-toggle>\n <mat-datepicker\n #picker1\n [startAt]=\"inputGroup.controls.start.defaultValue\"\n [startView]=\"startView\"\n (monthSelected)=\"setStart($event, picker1)\"\n\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /start date -->\n <!-- end date -->\n <mat-form-field>\n <mat-label>Zeitpunkt2</mat-label>\n <input matInput\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker2\"\n formControlName=\"end\"\n placeholder=\"End date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker\n #picker2\n [startAt]=\"inputGroup.controls.end.value\"\n [startView]=\"startView\"\n (monthSelected)=\"setEnd($event, picker2)\"\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /end date -->\n</ng-container>\n<!--\n </mat-card-content>\n</mat-card>\n-->", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.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: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
2728
+ ], ngImport: i0, template: "<!--\n<mat-card>\n <mat-card-header>\n <mat-card-title> Monatlicher Vergleich </mat-card-title>\n </mat-card-header>\n <mat-card-content [formGroup]=\"inputGroup\">\n </!-- start date --/>\n -->\n<ng-container [formGroup]=\"inputGroup\" >\n <mat-form-field>\n <mat-label>Zeitpunkt 1</mat-label>\n <input matInput\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker1\" formControlName=\"start\"\n placeholder=\"Starts date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker1\"></mat-datepicker-toggle>\n <mat-datepicker\n #picker1\n [startAt]=\"inputGroup.controls.start.defaultValue\"\n [startView]=\"startView\"\n (monthSelected)=\"setStart($event, picker1)\"\n\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /start date -->\n <!-- end date -->\n <mat-form-field>\n <mat-label>Zeitpunkt2</mat-label>\n <input matInput\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker2\"\n formControlName=\"end\"\n placeholder=\"End date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker\n #picker2\n [startAt]=\"inputGroup.controls.end.value\"\n [startView]=\"startView\"\n (monthSelected)=\"setEnd($event, picker2)\"\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /end date -->\n</ng-container>\n<!--\n </mat-card-content>\n</mat-card>\n-->", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.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: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
2726
2729
  }
2727
2730
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonthpickerComponent, decorators: [{
2728
2731
  type: Component,
@@ -3099,8 +3102,8 @@ class CountsWithHistoryComponent {
3099
3102
  this.destroyed$.next();
3100
3103
  this.destroyed$.complete();
3101
3104
  }
3102
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CountsWithHistoryComponent, deps: [{ token: MetaApiService }, { token: i2$2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
3103
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CountsWithHistoryComponent, isStandalone: true, selector: "lib-counts-with-history", ngImport: i0, template: "<mat-card appearance=\"raised\">\n <mat-card-header>\n <mat-card-title data-test-id=\"page-title\">\n Qualit\u00E4tsmetrik: {{(pageTitle | async ) || '' | 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 *ngIf=\"timeFilterLoaded()\">\n <lib-datepicker [disabled]=\"isLoading()\" [inputGroup]=\"range\" ></lib-datepicker>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"recentTypeCount$.value.rows\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Quelle</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"label-col\"\n >\n {{row.meta.label}}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of recentTypeCount$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_type'\">\n <th colspan=\"2\" 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$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\" >{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}</th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">{{ row.counts[col.id] ?? 'n/a' }}</td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of recentTypeCount$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\" >\n {{ pastTypeCount$.value.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$.value.rows.length && pastTypeCount(row, col.id) as trend\">\n <span [ngClass]=\"trend.trend\"> {{ trend.value ?? 'n/a' }}<mat-icon 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 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>", styles: ["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,.mat-mdc-cell a{cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a:hover,.mat-mdc-cell a:hover{text-decoration:underline}.mat-mdc-header-cell mat-icon,.mat-mdc-cell mat-icon{margin-left:5px;vertical-align:middle}.trending_up{color:#4abeff}.trending_down{color:#c20808}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.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: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: DatepickerComponent, selector: "lib-datepicker", inputs: ["disabled", "inputGroup"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "pipe", type: AsyncPipe, name: "async" }] }); }
3105
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CountsWithHistoryComponent, deps: [{ token: MetaApiService }, { token: i2$3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
3106
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CountsWithHistoryComponent, isStandalone: true, selector: "lib-counts-with-history", ngImport: i0, template: "<mat-card appearance=\"raised\">\n <mat-card-header>\n <mat-card-title data-test-id=\"page-title\">\n Qualit\u00E4tsmetrik: {{(pageTitle | async ) || '' | 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 *ngIf=\"timeFilterLoaded()\">\n <lib-datepicker [disabled]=\"isLoading()\" [inputGroup]=\"range\" ></lib-datepicker>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"recentTypeCount$.value.rows\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Quelle</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"label-col\"\n >\n {{row.meta.label}}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of recentTypeCount$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_type'\">\n <th colspan=\"2\" 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$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\" >{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}</th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">{{ row.counts[col.id] ?? 'n/a' }}</td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of recentTypeCount$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\" >\n {{ pastTypeCount$.value.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$.value.rows.length && pastTypeCount(row, col.id) as trend\">\n <span [ngClass]=\"trend.trend\"> {{ trend.value ?? 'n/a' }}<mat-icon 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 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>", styles: ["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,.mat-mdc-cell a{cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a:hover,.mat-mdc-cell a:hover{text-decoration:underline}.mat-mdc-header-cell mat-icon,.mat-mdc-cell mat-icon{margin-left:5px;vertical-align:middle}.trending_up{color:#4abeff}.trending_down{color:#c20808}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.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: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: DatepickerComponent, selector: "lib-datepicker", inputs: ["disabled", "inputGroup"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "pipe", type: AsyncPipe, name: "async" }] }); }
3104
3107
  }
3105
3108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CountsWithHistoryComponent, decorators: [{
3106
3109
  type: Component,
@@ -3125,7 +3128,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3125
3128
  NgIf,
3126
3129
  AsyncPipe,
3127
3130
  ], template: "<mat-card appearance=\"raised\">\n <mat-card-header>\n <mat-card-title data-test-id=\"page-title\">\n Qualit\u00E4tsmetrik: {{(pageTitle | async ) || '' | 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 *ngIf=\"timeFilterLoaded()\">\n <lib-datepicker [disabled]=\"isLoading()\" [inputGroup]=\"range\" ></lib-datepicker>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"recentTypeCount$.value.rows\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Quelle</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"label-col\"\n >\n {{row.meta.label}}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of recentTypeCount$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_type'\">\n <th colspan=\"2\" 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$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\" >{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}</th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">{{ row.counts[col.id] ?? 'n/a' }}</td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of recentTypeCount$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\" >\n {{ pastTypeCount$.value.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$.value.rows.length && pastTypeCount(row, col.id) as trend\">\n <span [ngClass]=\"trend.trend\"> {{ trend.value ?? 'n/a' }}<mat-icon 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 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>", styles: ["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,.mat-mdc-cell a{cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a:hover,.mat-mdc-cell a:hover{text-decoration:underline}.mat-mdc-header-cell mat-icon,.mat-mdc-cell mat-icon{margin-left:5px;vertical-align:middle}.trending_up{color:#4abeff}.trending_down{color:#c20808}\n"] }]
3128
- }], ctorParameters: () => [{ type: MetaApiService }, { type: i2$2.ActivatedRoute }] });
3131
+ }], ctorParameters: () => [{ type: MetaApiService }, { type: i2$3.ActivatedRoute }] });
3129
3132
 
3130
3133
  /*
3131
3134
  * Public API Surface of ng-meta-widgets-lib