ngx-edu-sharing-metaqs2 0.9.53 → 0.9.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +1 -14
  2. package/fesm2022/ngx-edu-sharing-metaqs2.mjs +195 -197
  3. package/fesm2022/ngx-edu-sharing-metaqs2.mjs.map +1 -1
  4. package/lib/components/collection-issues/collection-issues.component.d.ts +1 -1
  5. package/lib/components/donut-chart-tooltip/donut-chart-tooltip.component.d.ts +1 -1
  6. package/lib/components/filter/quality-matrix-filter.component.d.ts +4 -6
  7. package/lib/components/material-issues/material-issues.component.d.ts +1 -1
  8. package/lib/components/node-entry/node-entry.component.d.ts +1 -1
  9. package/lib/components/node-list/node-list.component.d.ts +1 -1
  10. package/lib/components/quality-matrix/quality_matrix.d.ts +1 -3
  11. package/lib/counts-with-history/counts-with-history.component.d.ts +1 -1
  12. package/lib/ng-meta-widgets-lib.module.d.ts +34 -37
  13. package/lib/node-image-url.pipe.d.ts +1 -1
  14. package/lib/wrap-observable.pipe.d.ts +1 -1
  15. package/package.json +6 -8
  16. package/esm2022/lib/collection-count-history/collection-count-history.component.mjs +0 -131
  17. package/esm2022/lib/collection-count-history/monthpicker/monthpicker.component.mjs +0 -114
  18. package/esm2022/lib/components/collection-issues/collection-issues.component.mjs +0 -23
  19. package/esm2022/lib/components/donut-chart/donut-chart.component.mjs +0 -85
  20. package/esm2022/lib/components/donut-chart/donut-chart.model.mjs +0 -2
  21. package/esm2022/lib/components/donut-chart/donut-chart.pipe.mjs +0 -50
  22. package/esm2022/lib/components/donut-chart-tooltip/donut-chart-tooltip.component.mjs +0 -79
  23. package/esm2022/lib/components/editorial-link-service/editorial-link.service.mjs +0 -169
  24. package/esm2022/lib/components/filter/datepicker/datepicker.component.mjs +0 -99
  25. package/esm2022/lib/components/filter/quality-matrix-filter.component.mjs +0 -47
  26. package/esm2022/lib/components/loading_indicator/overlay/overlay.service.mjs +0 -41
  27. package/esm2022/lib/components/loading_indicator/progress-spinner/progress-spinner.component.mjs +0 -65
  28. package/esm2022/lib/components/material-issues/material-issues.component.mjs +0 -23
  29. package/esm2022/lib/components/node-entry/node-entry.component.mjs +0 -35
  30. package/esm2022/lib/components/node-list/node-list.component.mjs +0 -112
  31. package/esm2022/lib/components/quality-matrix/quality_matrix.mjs +0 -413
  32. package/esm2022/lib/components/quality-matrix/scroll-marker.directive.mjs +0 -17
  33. package/esm2022/lib/config-helper.service.mjs +0 -32
  34. package/esm2022/lib/core/svg-icons.service.mjs +0 -44
  35. package/esm2022/lib/core/tooltip.service.mjs +0 -146
  36. package/esm2022/lib/counts-with-history/counts-with-history.component.mjs +0 -203
  37. package/esm2022/lib/java-api/api/api.mjs +0 -12
  38. package/esm2022/lib/java-api/api/authProxyController.service.mjs +0 -107
  39. package/esm2022/lib/java-api/api/collectionAPI.service.mjs +0 -409
  40. package/esm2022/lib/java-api/api/editorsAPI.service.mjs +0 -157
  41. package/esm2022/lib/java-api/api/filterAPI.service.mjs +0 -237
  42. package/esm2022/lib/java-api/api/replicationSourceAPI.service.mjs +0 -230
  43. package/esm2022/lib/java-api/api.base.service.mjs +0 -66
  44. package/esm2022/lib/java-api/api.module.mjs +0 -40
  45. package/esm2022/lib/java-api/configuration.mjs +0 -103
  46. package/esm2022/lib/java-api/encoder.mjs +0 -19
  47. package/esm2022/lib/java-api/index.mjs +0 -7
  48. package/esm2022/lib/java-api/model/collectionWithMissingAttributes.mjs +0 -11
  49. package/esm2022/lib/java-api/model/count.mjs +0 -11
  50. package/esm2022/lib/java-api/model/eduCollection.mjs +0 -11
  51. package/esm2022/lib/java-api/model/filter.mjs +0 -2
  52. package/esm2022/lib/java-api/model/filterValue.mjs +0 -11
  53. package/esm2022/lib/java-api/model/materialCountDto.mjs +0 -2
  54. package/esm2022/lib/java-api/model/materialCountFilter.mjs +0 -11
  55. package/esm2022/lib/java-api/model/materialWithMissingAttributes.mjs +0 -11
  56. package/esm2022/lib/java-api/model/matrixRowWithCounts.mjs +0 -2
  57. package/esm2022/lib/java-api/model/matrixWithCounts.mjs +0 -2
  58. package/esm2022/lib/java-api/model/missingAttributeResult.mjs +0 -2
  59. package/esm2022/lib/java-api/model/models.mjs +0 -16
  60. package/esm2022/lib/java-api/model/qualityMatrix.mjs +0 -2
  61. package/esm2022/lib/java-api/model/qualityMatrixHeader.mjs +0 -11
  62. package/esm2022/lib/java-api/model/qualityMatrixReplicationSourceCounts.mjs +0 -11
  63. package/esm2022/lib/java-api/model/qualityMatrixRow.mjs +0 -2
  64. package/esm2022/lib/java-api/param.mjs +0 -2
  65. package/esm2022/lib/java-api/variables.mjs +0 -9
  66. package/esm2022/lib/meta-api.service.mjs +0 -77
  67. package/esm2022/lib/ng-meta-widgets-lib.module.mjs +0 -198
  68. package/esm2022/lib/node-image-url.pipe.mjs +0 -29
  69. package/esm2022/lib/tree-collection-details/tree-collection-details.component.mjs +0 -87
  70. package/esm2022/lib/tree-license/tree-license.component.mjs +0 -136
  71. package/esm2022/lib/tree-search-counts/inline-worker.mjs +0 -102
  72. package/esm2022/lib/tree-search-counts/tree-search-counts.component.mjs +0 -209
  73. package/esm2022/lib/wrap-observable.pipe.mjs +0 -21
  74. package/esm2022/ngx-edu-sharing-metaqs2.mjs +0 -5
  75. package/esm2022/public-api.mjs +0 -18
  76. package/esm2022/web-components.mjs +0 -36
@@ -1,47 +0,0 @@
1
- import { Component, Input, Output } from '@angular/core';
2
- import { FormControl, ReactiveFormsModule } from '@angular/forms';
3
- import { MatFormFieldModule } from '@angular/material/form-field';
4
- import { MatSelectModule } from '@angular/material/select';
5
- import { NgForOf } from '@angular/common';
6
- import * as i0 from "@angular/core";
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";
11
- /**
12
- * This component wraps a mat-select.
13
- * It's options are populatated from the [options] @Input
14
- * The label is populated from the [label] @Input
15
- *
16
- * You may either provide a FormControl ( which you are tracking )
17
- * or you can subscribe to the (changedFilters) output.
18
- */
19
- export class QualityMatrixFilterComponent {
20
- constructor() {
21
- this.inputFormControl = new FormControl();
22
- this.multiple = true;
23
- this.changedFilters = this.inputFormControl.valueChanges;
24
- }
25
- optionIdent(_index, option) {
26
- return option.id;
27
- }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QualityMatrixFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: QualityMatrixFilterComponent, isStandalone: true, selector: "metaqs2-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"] }] }); }
30
- }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QualityMatrixFilterComponent, decorators: [{
32
- type: Component,
33
- args: [{ selector: 'metaqs2-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"] }]
34
- }], propDecorators: { options: [{
35
- type: Input
36
- }],
37
- //must not be named "formControl" otherwise we would have to implement ControlValueAccessor
38
- inputFormControl: [{
39
- type: Input
40
- }], label: [{
41
- type: Input
42
- }], multiple: [{
43
- type: Input
44
- }], changedFilters: [{
45
- type: Output
46
- }] } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhbGl0eS1tYXRyaXgtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbHRlci9xdWFsaXR5LW1hdHJpeC1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWV0YS13aWRnZXRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZmlsdGVyL3F1YWxpdHktbWF0cml4LWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQUUxQzs7Ozs7OztHQU9HO0FBUUgsTUFBTSxPQUFPLDRCQUE0QjtJQVB6QztRQVlFLHFCQUFnQixHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFJckMsYUFBUSxHQUFZLElBQUksQ0FBQztRQUV6QixtQkFBYyxHQUFvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDO0tBSXRFO0lBSEMsV0FBVyxDQUFDLE1BQWMsRUFBRSxNQUFtQjtRQUM3QyxPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDbkIsQ0FBQzsrR0FkVSw0QkFBNEI7bUdBQTVCLDRCQUE0Qix3T0N2QnpDLDhWQVVBLDZJRFdZLGtCQUFrQiwwU0FBRSxlQUFlLG1yQkFBRSxtQkFBbUIsMFRBQUUsT0FBTzs7NEZBRWhFLDRCQUE0QjtrQkFQeEMsU0FBUzsrQkFDRSxtQkFBbUIsY0FHakIsSUFBSSxXQUNQLENBQUMsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE9BQU8sQ0FBQzs4QkFJNUUsT0FBTztzQkFETixLQUFLOztRQUdOLDJGQUEyRjtRQUMzRixnQkFBZ0I7c0JBRmYsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUdOLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGaWx0ZXJWYWx1ZSB9IGZyb20gJy4uLy4uL2phdmEtYXBpJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5nRm9yT2YgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IHdyYXBzIGEgbWF0LXNlbGVjdC5cbiAqIEl0J3Mgb3B0aW9ucyBhcmUgcG9wdWxhdGF0ZWQgZnJvbSB0aGUgW29wdGlvbnNdIEBJbnB1dFxuICogVGhlIGxhYmVsIGlzIHBvcHVsYXRlZCBmcm9tIHRoZSBbbGFiZWxdIEBJbnB1dFxuICpcbiAqIFlvdSBtYXkgZWl0aGVyIHByb3ZpZGUgYSBGb3JtQ29udHJvbCAoIHdoaWNoIHlvdSBhcmUgdHJhY2tpbmcgKVxuICogb3IgeW91IGNhbiBzdWJzY3JpYmUgdG8gdGhlIChjaGFuZ2VkRmlsdGVycykgb3V0cHV0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZXRhcXMyLXFtLWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWFsaXR5LW1hdHJpeC1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcXVhbGl0eS1tYXRyaXgtZmlsdGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdEZvcm1GaWVsZE1vZHVsZSwgTWF0U2VsZWN0TW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBOZ0Zvck9mXSxcbn0pXG5leHBvcnQgY2xhc3MgUXVhbGl0eU1hdHJpeEZpbHRlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIG9wdGlvbnM6IEZpbHRlclZhbHVlW10gfCB1bmRlZmluZWQgfCBudWxsO1xuICBASW5wdXQoKVxuICAvL211c3Qgbm90IGJlIG5hbWVkIFwiZm9ybUNvbnRyb2xcIiBvdGhlcndpc2Ugd2Ugd291bGQgaGF2ZSB0byBpbXBsZW1lbnQgQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgaW5wdXRGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICBASW5wdXQoKVxuICBsYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKVxuICBtdWx0aXBsZTogYm9vbGVhbiA9IHRydWU7XG4gIEBPdXRwdXQoKVxuICBjaGFuZ2VkRmlsdGVyczogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5pbnB1dEZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcztcbiAgb3B0aW9uSWRlbnQoX2luZGV4OiBudW1iZXIsIG9wdGlvbjogRmlsdGVyVmFsdWUpIHtcbiAgICByZXR1cm4gb3B0aW9uLmlkO1xuICB9XG59XG4iLCI8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgPG1hdC1sYWJlbD5GaWx0ZXIgYnkge3sgbGFiZWwgfX08L21hdC1sYWJlbD5cbiAgPG1hdC1zZWxlY3RcbiAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgIFtmb3JtQ29udHJvbF09XCJpbnB1dEZvcm1Db250cm9sXCJcbiAgPlxuICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zOyB0cmFja0J5OiBvcHRpb25JZGVudCBcIiAgW3ZhbHVlXT1cIm9wdGlvbi5pZFwiPiB7eyBvcHRpb24ubGFiZWwgfX0gPC9tYXQtb3B0aW9uPlxuXG4gIDwvbWF0LXNlbGVjdD5cbjwvbWF0LWZvcm0tZmllbGQ+XG4iXX0=
@@ -1,41 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { TemplatePortal } from '@angular/cdk/portal';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/cdk/overlay";
5
- export class OverlayService {
6
- constructor(overlay) {
7
- this.overlay = overlay;
8
- }
9
- createOverlay(config) {
10
- return this.overlay.create(config);
11
- }
12
- attachTemplatePortal(overlayRef, templateRef, vcRef) {
13
- let templatePortal = new TemplatePortal(templateRef, vcRef);
14
- overlayRef.attach(templatePortal);
15
- }
16
- positionGloballyCenter() {
17
- return this.overlay.position().global().centerHorizontally().centerVertically();
18
- }
19
- // may be useful, if we only want to "grey-out" only the table
20
- positionFlexibleConnected(parent) {
21
- return this.overlay
22
- .position()
23
- .flexibleConnectedTo(parent)
24
- .withPositions([
25
- {
26
- overlayX: 'center',
27
- overlayY: 'center',
28
- originX: 'center',
29
- originY: 'center',
30
- },
31
- ])
32
- .withLockedPosition();
33
- }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OverlayService, deps: [{ token: i1.Overlay }], target: i0.ɵɵFactoryTarget.Injectable }); }
35
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OverlayService, providedIn: 'root' }); }
36
- }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OverlayService, decorators: [{
38
- type: Injectable,
39
- args: [{ providedIn: 'root' }]
40
- }], ctorParameters: () => [{ type: i1.Overlay }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWV0YS13aWRnZXRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvbG9hZGluZ19pbmRpY2F0b3Ivb3ZlcmxheS9vdmVybGF5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFFdEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFHckQsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFBb0IsT0FBZ0I7UUFBaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztJQUFHLENBQUM7SUFDeEMsYUFBYSxDQUFDLE1BQXFCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNELG9CQUFvQixDQUFDLFVBQXNCLEVBQUUsV0FBNkIsRUFBRSxLQUF1QjtRQUNqRyxJQUFJLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0Qsc0JBQXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDbEYsQ0FBQztJQUVELDhEQUE4RDtJQUM5RCx5QkFBeUIsQ0FBQyxNQUE0QjtRQUNwRCxPQUFPLElBQUksQ0FBQyxPQUFPO2FBQ2hCLFFBQVEsRUFBRTthQUNWLG1CQUFtQixDQUFDLE1BQU0sQ0FBQzthQUMzQixhQUFhLENBQUM7WUFDYjtnQkFDRSxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixPQUFPLEVBQUUsUUFBUTthQUNsQjtTQUNGLENBQUM7YUFDRCxrQkFBa0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7K0dBM0JVLGNBQWM7bUhBQWQsY0FBYyxjQURELE1BQU07OzRGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmLCBQb3NpdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBPdmVybGF5U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSkge31cbiAgY3JlYXRlT3ZlcmxheShjb25maWc6IE92ZXJsYXlDb25maWcpOiBPdmVybGF5UmVmIHtcbiAgICByZXR1cm4gdGhpcy5vdmVybGF5LmNyZWF0ZShjb25maWcpO1xuICB9XG4gIGF0dGFjaFRlbXBsYXRlUG9ydGFsKG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYsIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCB2Y1JlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgIGxldCB0ZW1wbGF0ZVBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0ZW1wbGF0ZVJlZiwgdmNSZWYpO1xuICAgIG92ZXJsYXlSZWYuYXR0YWNoKHRlbXBsYXRlUG9ydGFsKTtcbiAgfVxuICBwb3NpdGlvbkdsb2JhbGx5Q2VudGVyKCk6IFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgIHJldHVybiB0aGlzLm92ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKS5jZW50ZXJIb3Jpem9udGFsbHkoKS5jZW50ZXJWZXJ0aWNhbGx5KCk7XG4gIH1cblxuICAvLyBtYXkgYmUgdXNlZnVsLCBpZiB3ZSBvbmx5IHdhbnQgdG8gXCJncmV5LW91dFwiIG9ubHkgdGhlIHRhYmxlXG4gIHBvc2l0aW9uRmxleGlibGVDb25uZWN0ZWQocGFyZW50OiBFbGVtZW50IHwgRWxlbWVudFJlZik6IFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgIHJldHVybiB0aGlzLm92ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhwYXJlbnQpXG4gICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgIHtcbiAgICAgICAgICBvdmVybGF5WDogJ2NlbnRlcicsXG4gICAgICAgICAgb3ZlcmxheVk6ICdjZW50ZXInLFxuICAgICAgICAgIG9yaWdpblg6ICdjZW50ZXInLFxuICAgICAgICAgIG9yaWdpblk6ICdjZW50ZXInLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24oKTtcbiAgfVxufVxuIl19
@@ -1,65 +0,0 @@
1
- import { Component, Input, ViewChild, } from '@angular/core';
2
- import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../overlay/overlay.service";
5
- import * as i2 from "@angular/material/progress-spinner";
6
- export class ProgressSpinnerComponent {
7
- constructor(vcRef, overlayService, el) {
8
- // we are doing this in the constructor because ngOnInit runs after the first ngOnChanges
9
- // and we need to create the overlayRef before the first ngOnChanges
10
- // ngDoCheck runs too often.
11
- this.vcRef = vcRef;
12
- this.overlayService = overlayService;
13
- this.el = el;
14
- this.color = 'primary';
15
- this.diameter = 100;
16
- this.strokeWidth = 10;
17
- this.backdropEnabled = false;
18
- this.positionGloballyCenter = true;
19
- this.progressSpinnerOverlayConfig = {
20
- hasBackdrop: this.backdropEnabled,
21
- backdropClass: 'cdk-overlay-transparent-backdrop',
22
- };
23
- if (this.positionGloballyCenter) {
24
- this.progressSpinnerOverlayConfig['positionStrategy'] = this.overlayService.positionGloballyCenter();
25
- }
26
- else {
27
- /*
28
- see https://stackoverflow.com/questions/63579801/how-do-i-create-a-custom-overlay-container-for-angular-material
29
- how to create a overlay container.
30
- With such a directive we can have a spinner that greys-out only e.g. the table like seen here:
31
- https://reppners.github.io/ngx-cdk-dynamic-overlay-container/
32
- */
33
- this.progressSpinnerOverlayConfig['positionStrategy'] = this.overlayService.positionFlexibleConnected(this.el);
34
- }
35
- // Create Overlay for progress spinner
36
- this.overlayRef = this.overlayService.createOverlay(this.progressSpinnerOverlayConfig);
37
- }
38
- ngOnChanges(changes) {
39
- changes.displayProgressSpinner.currentValue
40
- ? this.overlayService.attachTemplatePortal(this.overlayRef, this.progressSpinnerRef, this.vcRef)
41
- : this.overlayRef.detach();
42
- }
43
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgressSpinnerComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.OverlayService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
44
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProgressSpinnerComponent, isStandalone: true, selector: "metaqs2-progress-spinner", inputs: { color: "color", diameter: "diameter", strokeWidth: "strokeWidth", backdropEnabled: "backdropEnabled", positionGloballyCenter: "positionGloballyCenter", displayProgressSpinner: "displayProgressSpinner" }, viewQueries: [{ propertyName: "progressSpinnerRef", first: true, predicate: ["progressSpinnerRef"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #progressSpinnerRef>\n <mat-spinner [color]=\"color\" [diameter]=\"diameter\" [strokeWidth]=\"strokeWidth\">\n\t</mat-spinner>\n</ng-template>", styles: [""], dependencies: [{ kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] }); }
45
- }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgressSpinnerComponent, decorators: [{
47
- type: Component,
48
- args: [{ selector: 'metaqs2-progress-spinner', standalone: true, imports: [MatProgressSpinnerModule], template: "<ng-template #progressSpinnerRef>\n <mat-spinner [color]=\"color\" [diameter]=\"diameter\" [strokeWidth]=\"strokeWidth\">\n\t</mat-spinner>\n</ng-template>" }]
49
- }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i1.OverlayService }, { type: i0.ElementRef }], propDecorators: { color: [{
50
- type: Input
51
- }], diameter: [{
52
- type: Input
53
- }], strokeWidth: [{
54
- type: Input
55
- }], backdropEnabled: [{
56
- type: Input
57
- }], positionGloballyCenter: [{
58
- type: Input
59
- }], displayProgressSpinner: [{
60
- type: Input
61
- }], progressSpinnerRef: [{
62
- type: ViewChild,
63
- args: ['progressSpinnerRef', { static: true }]
64
- }] } });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3Mtc3Bpbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1tZXRhLXdpZGdldHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9sb2FkaW5nX2luZGljYXRvci9wcm9ncmVzcy1zcGlubmVyL3Byb2dyZXNzLXNwaW5uZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWV0YS13aWRnZXRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvbG9hZGluZ19pbmRpY2F0b3IvcHJvZ3Jlc3Mtc3Bpbm5lci9wcm9ncmVzcy1zcGlubmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFNBQVMsR0FNVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQVU5RSxNQUFNLE9BQU8sd0JBQXdCO0lBYW5DLFlBQW9CLEtBQXVCLEVBQVUsY0FBOEIsRUFBVSxFQUFjO1FBQ3pHLHlGQUF5RjtRQUN6RixvRUFBb0U7UUFDcEUsNEJBQTRCO1FBSFYsVUFBSyxHQUFMLEtBQUssQ0FBa0I7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBWmxHLFVBQUssR0FBWSxTQUFTLENBQUM7UUFDM0IsYUFBUSxHQUFZLEdBQUcsQ0FBQztRQUN4QixnQkFBVyxHQUFZLEVBQUUsQ0FBQztRQUMxQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QiwyQkFBc0IsR0FBRyxJQUFJLENBQUM7UUFhckMsSUFBSSxDQUFDLDRCQUE0QixHQUFHO1lBQ2xDLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNqQyxhQUFhLEVBQUUsa0NBQWtDO1NBQ2xELENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN2RyxDQUFDO2FBQU0sQ0FBQztZQUNOOzs7OztjQUtFO1lBQ0YsSUFBSSxDQUFDLDRCQUE0QixDQUFDLGtCQUFrQixDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakgsQ0FBQztRQUNELHNDQUFzQztRQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLFlBQVk7WUFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNoRyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMvQixDQUFDOytHQXpDVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qix1Y0N0QnJDLDhKQUdjLHlERGlCRix3QkFBd0I7OzRGQUV2Qix3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBR3hCLElBQUksV0FDUCxDQUFDLHdCQUF3QixDQUFDOzJJQUcxQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFHRSxrQkFBa0I7c0JBRHpCLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVmlld0NoaWxkLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBFbGVtZW50UmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgT3ZlcmxheVNlcnZpY2UgfSBmcm9tICcuLi9vdmVybGF5L292ZXJsYXkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21ldGFxczItcHJvZ3Jlc3Mtc3Bpbm5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9ncmVzcy1zcGlubmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZ3Jlc3Mtc3Bpbm5lci5jb21wb25lbnQuY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9ncmVzc1NwaW5uZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBjb2xvcj86IHN0cmluZyA9ICdwcmltYXJ5JztcbiAgQElucHV0KCkgZGlhbWV0ZXI/OiBudW1iZXIgPSAxMDA7XG4gIEBJbnB1dCgpIHN0cm9rZVdpZHRoPzogbnVtYmVyID0gMTA7XG4gIEBJbnB1dCgpIGJhY2tkcm9wRW5hYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBwb3NpdGlvbkdsb2JhbGx5Q2VudGVyID0gdHJ1ZTtcbiAgQElucHV0KCkgZGlzcGxheVByb2dyZXNzU3Bpbm5lcjogYm9vbGVhbjtcblxuICBAVmlld0NoaWxkKCdwcm9ncmVzc1NwaW5uZXJSZWYnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIHByb2dyZXNzU3Bpbm5lclJlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgcHJpdmF0ZSBwcm9ncmVzc1NwaW5uZXJPdmVybGF5Q29uZmlnOiBPdmVybGF5Q29uZmlnO1xuICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB2Y1JlZjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBvdmVybGF5U2VydmljZTogT3ZlcmxheVNlcnZpY2UsIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHtcbiAgICAvLyB3ZSBhcmUgZG9pbmcgdGhpcyBpbiB0aGUgY29uc3RydWN0b3IgYmVjYXVzZSBuZ09uSW5pdCBydW5zIGFmdGVyIHRoZSBmaXJzdCBuZ09uQ2hhbmdlc1xuICAgIC8vIGFuZCB3ZSBuZWVkIHRvIGNyZWF0ZSB0aGUgb3ZlcmxheVJlZiBiZWZvcmUgdGhlIGZpcnN0IG5nT25DaGFuZ2VzXG4gICAgLy8gbmdEb0NoZWNrIHJ1bnMgdG9vIG9mdGVuLlxuXG4gICAgdGhpcy5wcm9ncmVzc1NwaW5uZXJPdmVybGF5Q29uZmlnID0ge1xuICAgICAgaGFzQmFja2Ryb3A6IHRoaXMuYmFja2Ryb3BFbmFibGVkLFxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICB9O1xuICAgIGlmICh0aGlzLnBvc2l0aW9uR2xvYmFsbHlDZW50ZXIpIHtcbiAgICAgIHRoaXMucHJvZ3Jlc3NTcGlubmVyT3ZlcmxheUNvbmZpZ1sncG9zaXRpb25TdHJhdGVneSddID0gdGhpcy5vdmVybGF5U2VydmljZS5wb3NpdGlvbkdsb2JhbGx5Q2VudGVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qXG4gICAgICBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNjM1Nzk4MDEvaG93LWRvLWktY3JlYXRlLWEtY3VzdG9tLW92ZXJsYXktY29udGFpbmVyLWZvci1hbmd1bGFyLW1hdGVyaWFsXG4gICAgICBob3cgdG8gY3JlYXRlIGEgb3ZlcmxheSBjb250YWluZXIuXG4gICAgICBXaXRoIHN1Y2ggYSBkaXJlY3RpdmUgd2UgY2FuIGhhdmUgYSBzcGlubmVyIHRoYXQgZ3JleXMtb3V0IG9ubHkgZS5nLiB0aGUgdGFibGUgbGlrZSBzZWVuIGhlcmU6XG4gICAgICBodHRwczovL3JlcHBuZXJzLmdpdGh1Yi5pby9uZ3gtY2RrLWR5bmFtaWMtb3ZlcmxheS1jb250YWluZXIvXG4gICAgICAqL1xuICAgICAgdGhpcy5wcm9ncmVzc1NwaW5uZXJPdmVybGF5Q29uZmlnWydwb3NpdGlvblN0cmF0ZWd5J10gPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLnBvc2l0aW9uRmxleGlibGVDb25uZWN0ZWQodGhpcy5lbCk7XG4gICAgfVxuICAgIC8vIENyZWF0ZSBPdmVybGF5IGZvciBwcm9ncmVzcyBzcGlubmVyXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5U2VydmljZS5jcmVhdGVPdmVybGF5KHRoaXMucHJvZ3Jlc3NTcGlubmVyT3ZlcmxheUNvbmZpZyk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY2hhbmdlcy5kaXNwbGF5UHJvZ3Jlc3NTcGlubmVyLmN1cnJlbnRWYWx1ZVxuICAgICAgPyB0aGlzLm92ZXJsYXlTZXJ2aWNlLmF0dGFjaFRlbXBsYXRlUG9ydGFsKHRoaXMub3ZlcmxheVJlZiwgdGhpcy5wcm9ncmVzc1NwaW5uZXJSZWYsIHRoaXMudmNSZWYpXG4gICAgICA6IHRoaXMub3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNwcm9ncmVzc1NwaW5uZXJSZWY+XG4gIDxtYXQtc3Bpbm5lciBbY29sb3JdPVwiY29sb3JcIiBbZGlhbWV0ZXJdPVwiZGlhbWV0ZXJcIiBbc3Ryb2tlV2lkdGhdPVwic3Ryb2tlV2lkdGhcIj5cblx0PC9tYXQtc3Bpbm5lcj5cbjwvbmctdGVtcGxhdGU+Il19
@@ -1,23 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../../java-api";
4
- import * as i2 from "@angular/common";
5
- import * as i3 from "../node-list/node-list.component";
6
- export class MaterialIssuesComponent {
7
- constructor(filterAPIService) {
8
- this.filterAPIService = filterAPIService;
9
- this.issues = [];
10
- // @TODO: Input is broken, maybe cause of withComponentInputBinding()?!
11
- this.collectionId = '94f22c9b-0d3a-4c1c-8987-4c8e83f3a92e';
12
- }
13
- async ngOnInit() {
14
- this.issues = await this.filterAPIService.getMaterialIssueFieldNames().toPromise();
15
- }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaterialIssuesComponent, deps: [{ token: i1.FilterAPIService }], target: i0.ɵɵFactoryTarget.Component }); }
17
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MaterialIssuesComponent, selector: "metaqs2-material-issues", ngImport: i0, template: "<metaqs2-node-list\n *ngFor=\"let mode of issues\"\n [collectionId]=\"collectionId\"\n [mode]=\"mode\"\n type=\"material\"\n></metaqs2-node-list>\n", styles: [".while-loading{filter:blur(2px)}:host{padding:0 30px;display:flex;gap:30px;flex-wrap:wrap}:host>metaqs2-node-list{width:400px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.NodeListComponent, selector: "metaqs2-node-list", inputs: ["mode", "type", "collectionId"], outputs: ["countChanged"] }] }); }
18
- }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaterialIssuesComponent, decorators: [{
20
- type: Component,
21
- args: [{ selector: 'metaqs2-material-issues', template: "<metaqs2-node-list\n *ngFor=\"let mode of issues\"\n [collectionId]=\"collectionId\"\n [mode]=\"mode\"\n type=\"material\"\n></metaqs2-node-list>\n", styles: [".while-loading{filter:blur(2px)}:host{padding:0 30px;display:flex;gap:30px;flex-wrap:wrap}:host>metaqs2-node-list{width:400px}\n"] }]
22
- }], ctorParameters: () => [{ type: i1.FilterAPIService }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtaXNzdWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL21hdGVyaWFsLWlzc3Vlcy9tYXRlcmlhbC1pc3N1ZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWV0YS13aWRnZXRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvbWF0ZXJpYWwtaXNzdWVzL21hdGVyaWFsLWlzc3Vlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7OztBQVFsRCxNQUFNLE9BQU8sdUJBQXVCO0lBS2xDLFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBSnRELFdBQU0sR0FBYSxFQUFFLENBQUM7UUFDdEIsdUVBQXVFO1FBQ3ZFLGlCQUFZLEdBQVcsc0NBQXNDLENBQUM7SUFFTCxDQUFDO0lBRTFELEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JGLENBQUM7K0dBVFUsdUJBQXVCO21HQUF2Qix1QkFBdUIsK0RDUnBDLHlKQU1BOzs0RkRFYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpbHRlckFQSVNlcnZpY2UgfSBmcm9tICcuLi8uLi9qYXZhLWFwaSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21ldGFxczItbWF0ZXJpYWwtaXNzdWVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hdGVyaWFsLWlzc3Vlcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hdGVyaWFsLWlzc3Vlcy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbElzc3Vlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGlzc3Vlczogc3RyaW5nW10gPSBbXTtcbiAgLy8gQFRPRE86IElucHV0IGlzIGJyb2tlbiwgbWF5YmUgY2F1c2Ugb2Ygd2l0aENvbXBvbmVudElucHV0QmluZGluZygpPyFcbiAgY29sbGVjdGlvbklkOiBzdHJpbmcgPSAnOTRmMjJjOWItMGQzYS00YzFjLTg5ODctNGM4ZTgzZjNhOTJlJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZpbHRlckFQSVNlcnZpY2U6IEZpbHRlckFQSVNlcnZpY2UpIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pc3N1ZXMgPSBhd2FpdCB0aGlzLmZpbHRlckFQSVNlcnZpY2UuZ2V0TWF0ZXJpYWxJc3N1ZUZpZWxkTmFtZXMoKS50b1Byb21pc2UoKTtcbiAgfVxufVxuIiwiPG1ldGFxczItbm9kZS1saXN0XG4gICpuZ0Zvcj1cImxldCBtb2RlIG9mIGlzc3Vlc1wiXG4gIFtjb2xsZWN0aW9uSWRdPVwiY29sbGVjdGlvbklkXCJcbiAgW21vZGVdPVwibW9kZVwiXG4gIHR5cGU9XCJtYXRlcmlhbFwiXG4+PC9tZXRhcXMyLW5vZGUtbGlzdD5cbiJdfQ==
@@ -1,35 +0,0 @@
1
- import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
2
- import { ConfigHelperService } from '../../config-helper.service';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/material/icon";
6
- import * as i3 from "@angular/material/button";
7
- import * as i4 from "../../node-image-url.pipe";
8
- export class NodeEntryComponent {
9
- constructor() {
10
- this.env = inject(ConfigHelperService);
11
- this.edit = new EventEmitter();
12
- }
13
- openNode(node) {
14
- window.open(this.env.eduSharingPath +
15
- '/components/editorial-desk/?mode=render&viewType=single&ids=' +
16
- encodeURIComponent(node.node_id));
17
- // this.metaWidget.openNode(node);
18
- }
19
- isCollectionCount() {
20
- // @TODO
21
- return false;
22
- // return (this.node as MaterialCounts).materials_count !== undefined;
23
- }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodeEntryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NodeEntryComponent, selector: "metaqs2-node-entry", inputs: { node: "node" }, outputs: { edit: "edit" }, ngImport: i0, template: "<div class=\"node\">\n <img class=\"icon\" [src]=\"node | nodeImageUrl\" loading=\"lazy\" />\n <div class=\"text\">\n <span class=\"title\">{{ node.title }}</span>\n <span class=\"description\" *ngIf=\"!isCollectionCount()\">{{ node.description }}</span>\n <span class=\"count\" *ngIf=\"isCollectionCount()\">{{ $any(node).materials_count }} Materialien</span>\n </div>\n <div class=\"actions\">\n <button mat-icon-button color=\"primary\" (click)=\"openNode(node)\">\n <mat-icon>open_in_new</mat-icon>\n </button>\n <button *ngIf=\"$any(node).type === 'ccm:io'\" mat-icon-button color=\"primary\" (click)=\"edit.emit(node)\">\n <mat-icon>edit</mat-icon>\n </button>\n </div>\n</div>\n", styles: [".while-loading{filter:blur(2px)}.node{display:flex;align-items:center;padding:5px 0}.node .icon{width:50px;min-width:50px;height:50px;object-fit:cover;padding-right:10px}.node .text{flex-grow:1;display:flex;flex-direction:column}.node .text .title{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;word-break:break-word;-webkit-line-clamp:2;-webkit-box-orient:vertical}.node .text .description,.node .text .count{font-size:90%;color:#555;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;word-break:break-word;-webkit-line-clamp:1;-webkit-box-orient:vertical}.node .actions{display:flex}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "pipe", type: i4.NodeImageUrlPipe, name: "nodeImageUrl" }] }); }
26
- }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodeEntryComponent, decorators: [{
28
- type: Component,
29
- args: [{ selector: 'metaqs2-node-entry', template: "<div class=\"node\">\n <img class=\"icon\" [src]=\"node | nodeImageUrl\" loading=\"lazy\" />\n <div class=\"text\">\n <span class=\"title\">{{ node.title }}</span>\n <span class=\"description\" *ngIf=\"!isCollectionCount()\">{{ node.description }}</span>\n <span class=\"count\" *ngIf=\"isCollectionCount()\">{{ $any(node).materials_count }} Materialien</span>\n </div>\n <div class=\"actions\">\n <button mat-icon-button color=\"primary\" (click)=\"openNode(node)\">\n <mat-icon>open_in_new</mat-icon>\n </button>\n <button *ngIf=\"$any(node).type === 'ccm:io'\" mat-icon-button color=\"primary\" (click)=\"edit.emit(node)\">\n <mat-icon>edit</mat-icon>\n </button>\n </div>\n</div>\n", styles: [".while-loading{filter:blur(2px)}.node{display:flex;align-items:center;padding:5px 0}.node .icon{width:50px;min-width:50px;height:50px;object-fit:cover;padding-right:10px}.node .text{flex-grow:1;display:flex;flex-direction:column}.node .text .title{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;word-break:break-word;-webkit-line-clamp:2;-webkit-box-orient:vertical}.node .text .description,.node .text .count{font-size:90%;color:#555;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;word-break:break-word;-webkit-line-clamp:1;-webkit-box-orient:vertical}.node .actions{display:flex}\n"] }]
30
- }], ctorParameters: () => [], propDecorators: { node: [{
31
- type: Input
32
- }], edit: [{
33
- type: Output
34
- }] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1lbnRyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1tZXRhLXdpZGdldHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9ub2RlLWVudHJ5L25vZGUtZW50cnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWV0YS13aWRnZXRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvbm9kZS1lbnRyeS9ub2RlLWVudHJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7QUFPbEUsTUFBTSxPQUFPLGtCQUFrQjtJQU03QjtRQUxRLFFBQUcsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUdoQyxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQW1FLENBQUM7SUFFdEYsQ0FBQztJQUVoQixRQUFRLENBQUMsSUFBcUU7UUFDNUUsTUFBTSxDQUFDLElBQUksQ0FDVCxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWM7WUFDckIsOERBQThEO1lBQzlELGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFTLENBQUMsQ0FDckMsQ0FBQztRQUNGLGtDQUFrQztJQUNwQyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsUUFBUTtRQUNSLE9BQU8sS0FBSyxDQUFDO1FBQ2Isc0VBQXNFO0lBQ3hFLENBQUM7K0dBckJVLGtCQUFrQjttR0FBbEIsa0JBQWtCLCtHQ1QvQixtdEJBZ0JBOzs0RkRQYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0Usb0JBQW9CO3dEQU9yQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksSUFBSTtzQkFBYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbldpdGhNaXNzaW5nQXR0cmlidXRlcywgTWF0ZXJpYWxXaXRoTWlzc2luZ0F0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9qYXZhLWFwaSc7XG5pbXBvcnQgeyBDb25maWdIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29uZmlnLWhlbHBlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWV0YXFzMi1ub2RlLWVudHJ5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vZGUtZW50cnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ub2RlLWVudHJ5LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVFbnRyeUNvbXBvbmVudCB7XG4gIHByaXZhdGUgZW52ID0gaW5qZWN0KENvbmZpZ0hlbHBlclNlcnZpY2UpO1xuXG4gIEBJbnB1dCgpIG5vZGU6IE1hdGVyaWFsV2l0aE1pc3NpbmdBdHRyaWJ1dGVzIHwgQ29sbGVjdGlvbldpdGhNaXNzaW5nQXR0cmlidXRlcztcbiAgQE91dHB1dCgpIGVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPE1hdGVyaWFsV2l0aE1pc3NpbmdBdHRyaWJ1dGVzIHwgQ29sbGVjdGlvbldpdGhNaXNzaW5nQXR0cmlidXRlcz4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgb3Blbk5vZGUobm9kZTogTWF0ZXJpYWxXaXRoTWlzc2luZ0F0dHJpYnV0ZXMgfCBDb2xsZWN0aW9uV2l0aE1pc3NpbmdBdHRyaWJ1dGVzKSB7XG4gICAgd2luZG93Lm9wZW4oXG4gICAgICB0aGlzLmVudi5lZHVTaGFyaW5nUGF0aCArXG4gICAgICAgICcvY29tcG9uZW50cy9lZGl0b3JpYWwtZGVzay8/bW9kZT1yZW5kZXImdmlld1R5cGU9c2luZ2xlJmlkcz0nICtcbiAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KG5vZGUubm9kZV9pZCEhKVxuICAgICk7XG4gICAgLy8gdGhpcy5tZXRhV2lkZ2V0Lm9wZW5Ob2RlKG5vZGUpO1xuICB9XG5cbiAgaXNDb2xsZWN0aW9uQ291bnQoKSB7XG4gICAgLy8gQFRPRE9cbiAgICByZXR1cm4gZmFsc2U7XG4gICAgLy8gcmV0dXJuICh0aGlzLm5vZGUgYXMgTWF0ZXJpYWxDb3VudHMpLm1hdGVyaWFsc19jb3VudCAhPT0gdW5kZWZpbmVkO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibm9kZVwiPlxuICA8aW1nIGNsYXNzPVwiaWNvblwiIFtzcmNdPVwibm9kZSB8IG5vZGVJbWFnZVVybFwiIGxvYWRpbmc9XCJsYXp5XCIgLz5cbiAgPGRpdiBjbGFzcz1cInRleHRcIj5cbiAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3sgbm9kZS50aXRsZSB9fTwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cImRlc2NyaXB0aW9uXCIgKm5nSWY9XCIhaXNDb2xsZWN0aW9uQ291bnQoKVwiPnt7IG5vZGUuZGVzY3JpcHRpb24gfX08L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwiaXNDb2xsZWN0aW9uQ291bnQoKVwiPnt7ICRhbnkobm9kZSkubWF0ZXJpYWxzX2NvdW50IH19IE1hdGVyaWFsaWVuPC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib3Blbk5vZGUobm9kZSlcIj5cbiAgICAgIDxtYXQtaWNvbj5vcGVuX2luX25ldzwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiAqbmdJZj1cIiRhbnkobm9kZSkudHlwZSA9PT0gJ2NjbTppbydcIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImVkaXQuZW1pdChub2RlKVwiPlxuICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,112 +0,0 @@
1
- import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
2
- import { BehaviorSubject, Subject } from 'rxjs';
3
- import { map, shareReplay, takeUntil } from 'rxjs/operators';
4
- import { wrapResponse } from '../../wrap-observable.pipe';
5
- import { ConfigHelperService } from '../../config-helper.service';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../../java-api";
8
- import * as i2 from "@angular/common";
9
- import * as i3 from "@angular/material/card";
10
- import * as i4 from "@angular/material/icon";
11
- import * as i5 from "@angular/material/slider";
12
- import * as i6 from "@angular/material/button";
13
- import * as i7 from "@angular/material/progress-spinner";
14
- import * as i8 from "@angular/forms";
15
- import * as i9 from "../node-entry/node-entry.component";
16
- import * as i10 from "@ngx-translate/core";
17
- export class NodeListComponent {
18
- constructor(collectionAPIService) {
19
- this.collectionAPIService = collectionAPIService;
20
- this.env = inject(ConfigHelperService);
21
- /**
22
- * outputs the current count of materials in this view
23
- */
24
- this.countChanged = new EventEmitter();
25
- /**
26
- * default max count of nodes that should be shown in view
27
- */
28
- this.DEFAULT_LIMIT = 25;
29
- /**
30
- * default count to fetch from api
31
- */
32
- this.FETCH_LIMIT = 200;
33
- this.data = new BehaviorSubject(undefined);
34
- // rawData: (MaterialWithMissingAttributes | CollectionWithMissingAttributes)[] | undefined;
35
- this.count = 0;
36
- this.destroyed$ = new Subject();
37
- /**
38
- * should all nodes be shown?
39
- */
40
- this.showAll = false;
41
- this.data.pipe(takeUntil(this.destroyed$)).subscribe((d) => this.countChanged.next(d?.total || 0));
42
- }
43
- async ngOnChanges(_changes) {
44
- if (this.collectionId) {
45
- await this.refresh();
46
- }
47
- }
48
- ngOnDestroy() {
49
- this.destroyed$.next();
50
- this.destroyed$.complete();
51
- }
52
- async refresh() {
53
- let getByMissingAttribute = () => {
54
- if (this.type === 'material') {
55
- return this.collectionAPIService.getMaterialsWithMissingAttribute(this.collectionId, this.mode, 0, this.FETCH_LIMIT);
56
- }
57
- else {
58
- return this.collectionAPIService.getCollectionsWithMissingAttribute(this.collectionId, this.mode, 0, this.FETCH_LIMIT);
59
- }
60
- };
61
- // reset all data before switching
62
- this.data.next(undefined);
63
- //this.rawData = undefined;
64
- this.wrappedData$ = getByMissingAttribute().pipe(wrapResponse(), shareReplay(1));
65
- this.data.next(await this.wrappedData$
66
- .pipe(map((wrappedData) => (wrappedData.state === 'success' ? wrappedData.data : undefined)))
67
- .toPromise());
68
- //this.rawData = this.data.value?.slice();
69
- /**
70
- * @TODO: Count mode
71
- */
72
- /*
73
- if (?) {
74
- this.filterCount();
75
- }
76
- */
77
- }
78
- editNode(node) {
79
- let action;
80
- if (this.mode === 'without_license') {
81
- action = 'OPTIONS.LICENSE';
82
- }
83
- else {
84
- action = 'OPTIONS.EDIT';
85
- }
86
- const id = node.node_id;
87
- window.open(this.env.eduSharingPath +
88
- '/components/editorial-desk?mode=audit&viewType=single&ids=' +
89
- encodeURIComponent(id) +
90
- '&action=' +
91
- action);
92
- }
93
- filterCount() {
94
- // @TODO
95
- // this.data = this.rawData?.filter((d) => (d as MaterialCounts).materials_count <= (this.count ?? 0));
96
- }
97
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodeListComponent, deps: [{ token: i1.CollectionAPIService }], target: i0.ɵɵFactoryTarget.Component }); }
98
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NodeListComponent, selector: "metaqs2-node-list", inputs: { mode: "mode", type: "type", collectionId: "collectionId" }, outputs: { countChanged: "countChanged" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"wrapper\">\n <mat-card *ngIf=\"mode\">\n <mat-card-header>\n <mat-card-title>\n {{ 'issues.' + mode | translate }}\n <span class=\"count\" *ngIf=\"(data | async) as d\">({{ d.total || 0 }})</span>\n </mat-card-title>\n <button mat-icon-button color=\"primary\" [disabled]=\"!(data | async)\" (click)=\"refresh()\">\n <mat-icon>refresh</mat-icon>\n </button>\n </mat-card-header>\n <!-- @TODO -->\n <div *ngIf=\"type === 'collection' && mode === 'TODO_count'\" class=\"count-slider\">\n <label>Sammlungen mit {{ count }} oder weniger Inhalten</label>\n <mat-slider\n [showTickMarks]=\"true\"\n step=\"1\"\n [ngModel]=\"count\"\n (ngModelChange)=\"count = $event; filterCount()\"\n min=\"0\"\n max=\"10\"\n ></mat-slider>\n </div>\n <ng-container *ngIf=\"wrappedData$ | async as wrappedData\">\n <mat-spinner *ngIf=\"wrappedData.state === 'loading'\" diameter=\"40\" color=\"primary\"></mat-spinner>\n <div class=\"error\" *ngIf=\"wrappedData.state === 'error'\">\n <p class=\"error-text\">Etwas ist schief gelaufen.</p>\n </div>\n <div class=\"scroll\" *ngIf=\"wrappedData.state === 'success'\">\n <ng-container *ngIf=\"(data | async) as d\">\n <metaqs2-node-entry\n *ngFor=\"let node of DEFAULT_LIMIT < (d?.total || 0) && !showAll ? $any(d.materials || d.collections)?.slice(0, DEFAULT_LIMIT) : (d.materials || d.collections)\"\n [node]=\"node\"\n (edit)=\"editNode(node)\"\n ></metaqs2-node-entry>\n <div *ngIf=\"!d.total\">\n <div class=\"all-done\">\n <p class=\"all-done-emoji\">\uD83E\uDD73</p>\n <p class=\"all-done-text\">Keine Elemente ausstehend</p>\n </div>\n </div>\n <button *ngIf=\"DEFAULT_LIMIT < (d?.total || 0) && !showAll\" (click)=\"showAll = true\" color=\"primary\" mat-button>\n Alle Elemente anzeigen <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </ng-container>\n </div>\n </ng-container>\n </mat-card>\n</div>\n", styles: [".while-loading{filter:blur(2px)}.wrapper{width:100%;height:100%}.wrapper mat-card{display:flex;flex-direction:column;width:100%;height:100%;padding:0;box-shadow:none}.wrapper mat-card ::ng-deep mat-card-header{align-items:center}.wrapper mat-card ::ng-deep mat-card-header .mat-card-header-text{flex-grow:1;margin:0}.wrapper mat-card ::ng-deep mat-card-header .mat-card-header-text mat-card-title{padding-top:20px;font-size:120%}.wrapper mat-card ::ng-deep mat-card-header .mat-card-header-text mat-card-title .count{font-size:80%;color:#888}.wrapper mat-card .count-slider{display:flex;flex-direction:column;width:100%}.wrapper mat-card .count-slider>label{padding:0 20px;font-size:90%}.wrapper mat-card .count-slider>mat-slider{width:100%}.wrapper mat-card mat-spinner{flex-grow:1;display:flex;align-self:center;justify-self:center;margin-top:20%}.wrapper mat-card .scroll{flex-grow:1;overflow-y:auto}.wrapper mat-card .scroll>button{display:flex;margin:auto}.wrapper mat-card .scroll .all-done{display:flex;flex-direction:column;align-items:center}.wrapper mat-card .scroll .all-done .all-done-emoji{font-size:72px;margin-bottom:20px}.wrapper mat-card .scroll .all-done .all-done-text{text-align:center;font-size:1.3em;color:var(--font-light)}.wrapper mat-card .error{border:#d00 solid 2px;background-color:#d005;display:flex;flex-direction:column;align-items:center}.wrapper mat-card .error .error-text{font-size:1.3em}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.NodeEntryComponent, selector: "metaqs2-node-entry", inputs: ["node"], outputs: ["edit"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] }); }
99
- }
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodeListComponent, decorators: [{
101
- type: Component,
102
- args: [{ selector: 'metaqs2-node-list', template: "<div class=\"wrapper\">\n <mat-card *ngIf=\"mode\">\n <mat-card-header>\n <mat-card-title>\n {{ 'issues.' + mode | translate }}\n <span class=\"count\" *ngIf=\"(data | async) as d\">({{ d.total || 0 }})</span>\n </mat-card-title>\n <button mat-icon-button color=\"primary\" [disabled]=\"!(data | async)\" (click)=\"refresh()\">\n <mat-icon>refresh</mat-icon>\n </button>\n </mat-card-header>\n <!-- @TODO -->\n <div *ngIf=\"type === 'collection' && mode === 'TODO_count'\" class=\"count-slider\">\n <label>Sammlungen mit {{ count }} oder weniger Inhalten</label>\n <mat-slider\n [showTickMarks]=\"true\"\n step=\"1\"\n [ngModel]=\"count\"\n (ngModelChange)=\"count = $event; filterCount()\"\n min=\"0\"\n max=\"10\"\n ></mat-slider>\n </div>\n <ng-container *ngIf=\"wrappedData$ | async as wrappedData\">\n <mat-spinner *ngIf=\"wrappedData.state === 'loading'\" diameter=\"40\" color=\"primary\"></mat-spinner>\n <div class=\"error\" *ngIf=\"wrappedData.state === 'error'\">\n <p class=\"error-text\">Etwas ist schief gelaufen.</p>\n </div>\n <div class=\"scroll\" *ngIf=\"wrappedData.state === 'success'\">\n <ng-container *ngIf=\"(data | async) as d\">\n <metaqs2-node-entry\n *ngFor=\"let node of DEFAULT_LIMIT < (d?.total || 0) && !showAll ? $any(d.materials || d.collections)?.slice(0, DEFAULT_LIMIT) : (d.materials || d.collections)\"\n [node]=\"node\"\n (edit)=\"editNode(node)\"\n ></metaqs2-node-entry>\n <div *ngIf=\"!d.total\">\n <div class=\"all-done\">\n <p class=\"all-done-emoji\">\uD83E\uDD73</p>\n <p class=\"all-done-text\">Keine Elemente ausstehend</p>\n </div>\n </div>\n <button *ngIf=\"DEFAULT_LIMIT < (d?.total || 0) && !showAll\" (click)=\"showAll = true\" color=\"primary\" mat-button>\n Alle Elemente anzeigen <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </ng-container>\n </div>\n </ng-container>\n </mat-card>\n</div>\n", styles: [".while-loading{filter:blur(2px)}.wrapper{width:100%;height:100%}.wrapper mat-card{display:flex;flex-direction:column;width:100%;height:100%;padding:0;box-shadow:none}.wrapper mat-card ::ng-deep mat-card-header{align-items:center}.wrapper mat-card ::ng-deep mat-card-header .mat-card-header-text{flex-grow:1;margin:0}.wrapper mat-card ::ng-deep mat-card-header .mat-card-header-text mat-card-title{padding-top:20px;font-size:120%}.wrapper mat-card ::ng-deep mat-card-header .mat-card-header-text mat-card-title .count{font-size:80%;color:#888}.wrapper mat-card .count-slider{display:flex;flex-direction:column;width:100%}.wrapper mat-card .count-slider>label{padding:0 20px;font-size:90%}.wrapper mat-card .count-slider>mat-slider{width:100%}.wrapper mat-card mat-spinner{flex-grow:1;display:flex;align-self:center;justify-self:center;margin-top:20%}.wrapper mat-card .scroll{flex-grow:1;overflow-y:auto}.wrapper mat-card .scroll>button{display:flex;margin:auto}.wrapper mat-card .scroll .all-done{display:flex;flex-direction:column;align-items:center}.wrapper mat-card .scroll .all-done .all-done-emoji{font-size:72px;margin-bottom:20px}.wrapper mat-card .scroll .all-done .all-done-text{text-align:center;font-size:1.3em;color:var(--font-light)}.wrapper mat-card .error{border:#d00 solid 2px;background-color:#d005;display:flex;flex-direction:column;align-items:center}.wrapper mat-card .error .error-text{font-size:1.3em}\n"] }]
103
- }], ctorParameters: () => [{ type: i1.CollectionAPIService }], propDecorators: { mode: [{
104
- type: Input
105
- }], type: [{
106
- type: Input
107
- }], collectionId: [{
108
- type: Input
109
- }], countChanged: [{
110
- type: Output
111
- }] } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL25vZGUtbGlzdC9ub2RlLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWV0YS13aWRnZXRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvbm9kZS1saXN0L25vZGUtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUF3QixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTzdELE9BQU8sRUFBbUIsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7Ozs7OztBQU9sRSxNQUFNLE9BQU8saUJBQWlCO0lBNkI1QixZQUFvQixvQkFBMEM7UUFBMUMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQTVCdEQsUUFBRyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBSTFDOztXQUVHO1FBQ08saUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXBEOztXQUVHO1FBQ00sa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDNUI7O1dBRUc7UUFDTSxnQkFBVyxHQUFHLEdBQUcsQ0FBQztRQUUzQixTQUFJLEdBQUcsSUFBSSxlQUFlLENBQXFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFFLDRGQUE0RjtRQUM1RixVQUFLLEdBQWtCLENBQUMsQ0FBQztRQUVqQixlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN6Qzs7V0FFRztRQUNILFlBQU8sR0FBRyxLQUFLLENBQUM7UUFHZCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBdUI7UUFDdkMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLElBQUkscUJBQXFCLEdBQUcsR0FBdUMsRUFBRTtZQUNuRSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQzdCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdDQUFnQyxDQUMvRCxJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsSUFBSSxFQUNULENBQUMsRUFDRCxJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGtDQUFrQyxDQUNqRSxJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsSUFBSSxFQUNULENBQUMsRUFDRCxJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQiwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxxQkFBcUIsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDWixNQUFNLElBQUksQ0FBQyxZQUFZO2FBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7YUFDNUYsU0FBUyxFQUFFLENBQ2YsQ0FBQztRQUNGLDBDQUEwQztRQUUxQzs7V0FFRztRQUNIOzs7O2VBSU87SUFDVCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQXFFO1FBQzVFLElBQUksTUFBYyxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQztRQUM3QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sR0FBRyxjQUFjLENBQUM7UUFDMUIsQ0FBQztRQUVELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFTLENBQUM7UUFDMUIsTUFBTSxDQUFDLElBQUksQ0FDVCxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWM7WUFDckIsNERBQTREO1lBQzVELGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUN0QixVQUFVO1lBQ1YsTUFBTSxDQUNULENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULFFBQVE7UUFDUix1R0FBdUc7SUFDekcsQ0FBQzsrR0F6R1UsaUJBQWlCO21HQUFqQixpQkFBaUIsK0xDakI5Qiw2bkVBaURBOzs0RkRoQ2EsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLG1CQUFtQjt5RkFNcEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBDb2xsZWN0aW9uQVBJU2VydmljZSxcbiAgQ29sbGVjdGlvbldpdGhNaXNzaW5nQXR0cmlidXRlcyxcbiAgTWF0ZXJpYWxXaXRoTWlzc2luZ0F0dHJpYnV0ZXMsXG4gIE1pc3NpbmdBdHRyaWJ1dGVSZXN1bHQsXG59IGZyb20gJy4uLy4uL2phdmEtYXBpJztcbmltcG9ydCB7IFdyYXBwZWRSZXNwb25zZSwgd3JhcFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vd3JhcC1vYnNlcnZhYmxlLnBpcGUnO1xuaW1wb3J0IHsgQ29uZmlnSGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbmZpZy1oZWxwZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21ldGFxczItbm9kZS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vZGUtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25vZGUtbGlzdC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBOb2RlTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBlbnYgPSBpbmplY3QoQ29uZmlnSGVscGVyU2VydmljZSk7XG4gIEBJbnB1dCgpIG1vZGU6IHN0cmluZztcbiAgQElucHV0KCkgdHlwZTogJ21hdGVyaWFsJyB8ICdjb2xsZWN0aW9uJztcbiAgQElucHV0KCkgY29sbGVjdGlvbklkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBvdXRwdXRzIHRoZSBjdXJyZW50IGNvdW50IG9mIG1hdGVyaWFscyBpbiB0aGlzIHZpZXdcbiAgICovXG4gIEBPdXRwdXQoKSBjb3VudENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAvKipcbiAgICogZGVmYXVsdCBtYXggY291bnQgb2Ygbm9kZXMgdGhhdCBzaG91bGQgYmUgc2hvd24gaW4gdmlld1xuICAgKi9cbiAgcmVhZG9ubHkgREVGQVVMVF9MSU1JVCA9IDI1O1xuICAvKipcbiAgICogZGVmYXVsdCBjb3VudCB0byBmZXRjaCBmcm9tIGFwaVxuICAgKi9cbiAgcmVhZG9ubHkgRkVUQ0hfTElNSVQgPSAyMDA7XG4gIHdyYXBwZWREYXRhJDogT2JzZXJ2YWJsZTxXcmFwcGVkUmVzcG9uc2U8TWlzc2luZ0F0dHJpYnV0ZVJlc3VsdD4+O1xuICBkYXRhID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNaXNzaW5nQXR0cmlidXRlUmVzdWx0IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAvLyByYXdEYXRhOiAoTWF0ZXJpYWxXaXRoTWlzc2luZ0F0dHJpYnV0ZXMgfCBDb2xsZWN0aW9uV2l0aE1pc3NpbmdBdHRyaWJ1dGVzKVtdIHwgdW5kZWZpbmVkO1xuICBjb3VudDogbnVtYmVyIHwgbnVsbCA9IDA7XG5cbiAgcHJpdmF0ZSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgLyoqXG4gICAqIHNob3VsZCBhbGwgbm9kZXMgYmUgc2hvd24/XG4gICAqL1xuICBzaG93QWxsID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb2xsZWN0aW9uQVBJU2VydmljZTogQ29sbGVjdGlvbkFQSVNlcnZpY2UpIHtcbiAgICB0aGlzLmRhdGEucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChkKSA9PiB0aGlzLmNvdW50Q2hhbmdlZC5uZXh0KGQ/LnRvdGFsIHx8IDApKTtcbiAgfVxuXG4gIGFzeW5jIG5nT25DaGFuZ2VzKF9jaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKHRoaXMuY29sbGVjdGlvbklkKSB7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaCgpIHtcbiAgICBsZXQgZ2V0QnlNaXNzaW5nQXR0cmlidXRlID0gKCk6IE9ic2VydmFibGU8TWlzc2luZ0F0dHJpYnV0ZVJlc3VsdD4gPT4ge1xuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ21hdGVyaWFsJykge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uQVBJU2VydmljZS5nZXRNYXRlcmlhbHNXaXRoTWlzc2luZ0F0dHJpYnV0ZShcbiAgICAgICAgICB0aGlzLmNvbGxlY3Rpb25JZCxcbiAgICAgICAgICB0aGlzLm1vZGUsXG4gICAgICAgICAgMCxcbiAgICAgICAgICB0aGlzLkZFVENIX0xJTUlUXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uQVBJU2VydmljZS5nZXRDb2xsZWN0aW9uc1dpdGhNaXNzaW5nQXR0cmlidXRlKFxuICAgICAgICAgIHRoaXMuY29sbGVjdGlvbklkLFxuICAgICAgICAgIHRoaXMubW9kZSxcbiAgICAgICAgICAwLFxuICAgICAgICAgIHRoaXMuRkVUQ0hfTElNSVRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gcmVzZXQgYWxsIGRhdGEgYmVmb3JlIHN3aXRjaGluZ1xuICAgIHRoaXMuZGF0YS5uZXh0KHVuZGVmaW5lZCk7XG4gICAgLy90aGlzLnJhd0RhdGEgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy53cmFwcGVkRGF0YSQgPSBnZXRCeU1pc3NpbmdBdHRyaWJ1dGUoKS5waXBlKHdyYXBSZXNwb25zZSgpLCBzaGFyZVJlcGxheSgxKSk7XG4gICAgdGhpcy5kYXRhLm5leHQoXG4gICAgICBhd2FpdCB0aGlzLndyYXBwZWREYXRhJFxuICAgICAgICAucGlwZShtYXAoKHdyYXBwZWREYXRhKSA9PiAod3JhcHBlZERhdGEuc3RhdGUgPT09ICdzdWNjZXNzJyA/IHdyYXBwZWREYXRhLmRhdGEgOiB1bmRlZmluZWQpKSlcbiAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgKTtcbiAgICAvL3RoaXMucmF3RGF0YSA9IHRoaXMuZGF0YS52YWx1ZT8uc2xpY2UoKTtcblxuICAgIC8qKlxuICAgICAqIEBUT0RPOiBDb3VudCBtb2RlXG4gICAgICovXG4gICAgLypcbiAgICAgICAgaWYgKD8pIHtcbiAgICAgICAgICB0aGlzLmZpbHRlckNvdW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgICovXG4gIH1cblxuICBlZGl0Tm9kZShub2RlOiBNYXRlcmlhbFdpdGhNaXNzaW5nQXR0cmlidXRlcyB8IENvbGxlY3Rpb25XaXRoTWlzc2luZ0F0dHJpYnV0ZXMpIHtcbiAgICBsZXQgYWN0aW9uOiBzdHJpbmc7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ3dpdGhvdXRfbGljZW5zZScpIHtcbiAgICAgIGFjdGlvbiA9ICdPUFRJT05TLkxJQ0VOU0UnO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY3Rpb24gPSAnT1BUSU9OUy5FRElUJztcbiAgICB9XG5cbiAgICBjb25zdCBpZCA9IG5vZGUubm9kZV9pZCEhO1xuICAgIHdpbmRvdy5vcGVuKFxuICAgICAgdGhpcy5lbnYuZWR1U2hhcmluZ1BhdGggK1xuICAgICAgICAnL2NvbXBvbmVudHMvZWRpdG9yaWFsLWRlc2s/bW9kZT1hdWRpdCZ2aWV3VHlwZT1zaW5nbGUmaWRzPScgK1xuICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoaWQpICtcbiAgICAgICAgJyZhY3Rpb249JyArXG4gICAgICAgIGFjdGlvblxuICAgICk7XG4gIH1cblxuICBmaWx0ZXJDb3VudCgpIHtcbiAgICAvLyBAVE9ET1xuICAgIC8vIHRoaXMuZGF0YSA9IHRoaXMucmF3RGF0YT8uZmlsdGVyKChkKSA9PiAoZCBhcyBNYXRlcmlhbENvdW50cykubWF0ZXJpYWxzX2NvdW50IDw9ICh0aGlzLmNvdW50ID8/IDApKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgPG1hdC1jYXJkICpuZ0lmPVwibW9kZVwiPlxuICAgIDxtYXQtY2FyZC1oZWFkZXI+XG4gICAgICA8bWF0LWNhcmQtdGl0bGU+XG4gICAgICAgIHt7ICdpc3N1ZXMuJyArIG1vZGUgIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cIihkYXRhIHwgYXN5bmMpIGFzIGRcIj4oe3sgZC50b3RhbCB8fCAwIH19KTwvc3Bhbj5cbiAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiIShkYXRhIHwgYXN5bmMpXCIgKGNsaWNrKT1cInJlZnJlc2goKVwiPlxuICAgICAgICA8bWF0LWljb24+cmVmcmVzaDwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cbiAgICA8IS0tIEBUT0RPIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJ0eXBlID09PSAnY29sbGVjdGlvbicgJiYgbW9kZSA9PT0gJ1RPRE9fY291bnQnXCIgY2xhc3M9XCJjb3VudC1zbGlkZXJcIj5cbiAgICAgIDxsYWJlbD5TYW1tbHVuZ2VuIG1pdCB7eyBjb3VudCB9fSBvZGVyIHdlbmlnZXIgSW5oYWx0ZW48L2xhYmVsPlxuICAgICAgPG1hdC1zbGlkZXJcbiAgICAgICAgW3Nob3dUaWNrTWFya3NdPVwidHJ1ZVwiXG4gICAgICAgIHN0ZXA9XCIxXCJcbiAgICAgICAgW25nTW9kZWxdPVwiY291bnRcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjb3VudCA9ICRldmVudDsgZmlsdGVyQ291bnQoKVwiXG4gICAgICAgIG1pbj1cIjBcIlxuICAgICAgICBtYXg9XCIxMFwiXG4gICAgICA+PC9tYXQtc2xpZGVyPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3cmFwcGVkRGF0YSQgfCBhc3luYyBhcyB3cmFwcGVkRGF0YVwiPlxuICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwid3JhcHBlZERhdGEuc3RhdGUgPT09ICdsb2FkaW5nJ1wiIGRpYW1ldGVyPVwiNDBcIiBjb2xvcj1cInByaW1hcnlcIj48L21hdC1zcGlubmVyPlxuICAgICAgPGRpdiBjbGFzcz1cImVycm9yXCIgKm5nSWY9XCJ3cmFwcGVkRGF0YS5zdGF0ZSA9PT0gJ2Vycm9yJ1wiPlxuICAgICAgICA8cCBjbGFzcz1cImVycm9yLXRleHRcIj5FdHdhcyBpc3Qgc2NoaWVmIGdlbGF1ZmVuLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbFwiICpuZ0lmPVwid3JhcHBlZERhdGEuc3RhdGUgPT09ICdzdWNjZXNzJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGRhdGEgfCBhc3luYykgYXMgZFwiPlxuICAgICAgICAgIDxtZXRhcXMyLW5vZGUtZW50cnlcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBub2RlIG9mIERFRkFVTFRfTElNSVQgPCAoZD8udG90YWwgfHwgMCkgJiYgIXNob3dBbGwgPyAkYW55KGQubWF0ZXJpYWxzIHx8IGQuY29sbGVjdGlvbnMpPy5zbGljZSgwLCBERUZBVUxUX0xJTUlUKSA6IChkLm1hdGVyaWFscyB8fCBkLmNvbGxlY3Rpb25zKVwiXG4gICAgICAgICAgICBbbm9kZV09XCJub2RlXCJcbiAgICAgICAgICAgIChlZGl0KT1cImVkaXROb2RlKG5vZGUpXCJcbiAgICAgICAgICA+PC9tZXRhcXMyLW5vZGUtZW50cnk+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFkLnRvdGFsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxsLWRvbmVcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhbGwtZG9uZS1lbW9qaVwiPvCfpbM8L3A+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiYWxsLWRvbmUtdGV4dFwiPktlaW5lIEVsZW1lbnRlIGF1c3N0ZWhlbmQ8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiREVGQVVMVF9MSU1JVCA8IChkPy50b3RhbCB8fCAwKSAmJiAhc2hvd0FsbFwiIChjbGljayk9XCJzaG93QWxsID0gdHJ1ZVwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1idXR0b24+XG4gICAgICAgICAgICBBbGxlIEVsZW1lbnRlIGFuemVpZ2VuIDxtYXQtaWNvbj5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9tYXQtY2FyZD5cbjwvZGl2PlxuIl19