ngx-edu-sharing-metaqs2 0.9.25 → 0.9.27

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 (37) hide show
  1. package/esm2022/lib/components/collection-issues/collection-issues.component.mjs +23 -0
  2. package/esm2022/lib/components/editorial-link-service/editorial-link.service.mjs +37 -37
  3. package/esm2022/lib/components/material-issues/material-issues.component.mjs +23 -0
  4. package/esm2022/lib/components/node-entry/node-entry.component.mjs +35 -0
  5. package/esm2022/lib/components/node-list/node-list.component.mjs +101 -0
  6. package/esm2022/lib/config-helper.service.mjs +31 -0
  7. package/esm2022/lib/counts-with-history/counts-with-history.component.mjs +2 -2
  8. package/esm2022/lib/java-api/api/authProxyController.service.mjs +2 -2
  9. package/esm2022/lib/java-api/api/collectionAPI.service.mjs +130 -2
  10. package/esm2022/lib/java-api/api/editorsAPI.service.mjs +2 -2
  11. package/esm2022/lib/java-api/api/filterAPI.service.mjs +86 -2
  12. package/esm2022/lib/java-api/api/replicationSourceAPI.service.mjs +2 -2
  13. package/esm2022/lib/java-api/model/collectionWithMissingAttributes.mjs +11 -0
  14. package/esm2022/lib/java-api/model/materialWithMissingAttributes.mjs +11 -0
  15. package/esm2022/lib/java-api/model/models.mjs +3 -1
  16. package/esm2022/lib/ng-meta-widgets-lib.module.mjs +31 -6
  17. package/esm2022/lib/node-image-url.pipe.mjs +29 -0
  18. package/esm2022/lib/tree-search-counts/tree-search-counts.component.mjs +4 -4
  19. package/esm2022/public-api.mjs +5 -2
  20. package/fesm2022/ngx-edu-sharing-metaqs2.mjs +486 -57
  21. package/fesm2022/ngx-edu-sharing-metaqs2.mjs.map +1 -1
  22. package/lib/components/collection-issues/collection-issues.component.d.ts +12 -0
  23. package/lib/components/material-issues/material-issues.component.d.ts +12 -0
  24. package/lib/components/node-entry/node-entry.component.d.ts +13 -0
  25. package/lib/components/node-list/node-list.component.d.ts +32 -0
  26. package/lib/{env-helper.service.d.ts → config-helper.service.d.ts} +5 -5
  27. package/lib/java-api/api/collectionAPI.service.d.ts +48 -0
  28. package/lib/java-api/api/filterAPI.service.d.ts +38 -0
  29. package/lib/java-api/model/collectionWithMissingAttributes.d.ts +20 -0
  30. package/lib/java-api/model/materialWithMissingAttributes.d.ts +20 -0
  31. package/lib/java-api/model/models.d.ts +2 -0
  32. package/lib/ng-meta-widgets-lib.module.d.ts +32 -27
  33. package/lib/node-image-url.pipe.d.ts +12 -0
  34. package/lib/tree-search-counts/tree-search-counts.component.d.ts +2 -2
  35. package/package.json +1 -1
  36. package/public-api.d.ts +4 -1
  37. package/esm2022/lib/env-helper.service.mjs +0 -31
@@ -0,0 +1,23 @@
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 CollectionIssuesComponent {
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.getCollectionIssueFieldNames().toPromise();
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CollectionIssuesComponent, deps: [{ token: i1.FilterAPIService }], target: i0.ɵɵFactoryTarget.Component }); }
17
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CollectionIssuesComponent, selector: "metaqs2-collection-issues", ngImport: i0, template: "<metaqs2-node-list\n *ngFor=\"let mode of issues\"\n [parentId]=\"collectionId\"\n [mode]=\"mode\"\n type=\"collection\"\n></metaqs2-node-list>\n", styles: [":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", "parentId"] }] }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CollectionIssuesComponent, decorators: [{
20
+ type: Component,
21
+ args: [{ selector: 'metaqs2-collection-issues', template: "<metaqs2-node-list\n *ngFor=\"let mode of issues\"\n [parentId]=\"collectionId\"\n [mode]=\"mode\"\n type=\"collection\"\n></metaqs2-node-list>\n", styles: [":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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi1pc3N1ZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWV0YS13aWRnZXRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY29sbGVjdGlvbi1pc3N1ZXMvY29sbGVjdGlvbi1pc3N1ZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWV0YS13aWRnZXRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY29sbGVjdGlvbi1pc3N1ZXMvY29sbGVjdGlvbi1pc3N1ZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFRbEQsTUFBTSxPQUFPLHlCQUF5QjtJQUtwQyxZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUp0RCxXQUFNLEdBQWEsRUFBRSxDQUFDO1FBQ3RCLHVFQUF1RTtRQUN2RSxpQkFBWSxHQUFXLHNDQUFzQyxDQUFDO0lBRUwsQ0FBQztJQUUxRCxLQUFLLENBQUMsUUFBUTtRQUNaLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN2RixDQUFDOytHQVRVLHlCQUF5QjttR0FBekIseUJBQXlCLGlFQ1J0Qyx1SkFNQTs7NEZERWEseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWx0ZXJBUElTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vamF2YS1hcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZXRhcXMyLWNvbGxlY3Rpb24taXNzdWVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbGxlY3Rpb24taXNzdWVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29sbGVjdGlvbi1pc3N1ZXMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29sbGVjdGlvbklzc3Vlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGlzc3Vlczogc3RyaW5nW10gPSBbXTtcbiAgLy8gQFRPRE86IElucHV0IGlzIGJyb2tlbiwgbWF5YmUgY2F1c2Ugb2Ygd2l0aENvbXBvbmVudElucHV0QmluZGluZygpPyFcbiAgY29sbGVjdGlvbklkOiBzdHJpbmcgPSAnOTRmMjJjOWItMGQzYS00YzFjLTg5ODctNGM4ZTgzZjNhOTJlJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZpbHRlckFQSVNlcnZpY2U6IEZpbHRlckFQSVNlcnZpY2UpIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pc3N1ZXMgPSBhd2FpdCB0aGlzLmZpbHRlckFQSVNlcnZpY2UuZ2V0Q29sbGVjdGlvbklzc3VlRmllbGROYW1lcygpLnRvUHJvbWlzZSgpO1xuICB9XG59XG4iLCI8bWV0YXFzMi1ub2RlLWxpc3RcbiAgKm5nRm9yPVwibGV0IG1vZGUgb2YgaXNzdWVzXCJcbiAgW3BhcmVudElkXT1cImNvbGxlY3Rpb25JZFwiXG4gIFttb2RlXT1cIm1vZGVcIlxuICB0eXBlPVwiY29sbGVjdGlvblwiXG4+PC9tZXRhcXMyLW5vZGUtbGlzdD5cbiJdfQ==
@@ -1,27 +1,27 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { inject } from "@angular/core";
3
- import { EnvHelperService } from "../../env-helper.service";
2
+ import { inject } from '@angular/core';
3
+ import { ConfigHelperService } from '../../config-helper.service';
4
4
  import * as i0 from "@angular/core";
5
5
  /*
6
6
  This is a map from properties of a document to filter names
7
7
  */
8
8
  const PROPERTIES2FILTERS = new Map([
9
- ["metadata.educationalContexts", "ccm:educationalcontext"],
10
- ["metadata.disciplines", "virtual:taxonid"],
11
- ["collections.nodeRef.id.keyword", "virtual:collection_id_primary"],
9
+ ['metadata.educationalContexts', 'ccm:educationalcontext'],
10
+ ['metadata.disciplines', 'virtual:taxonid'],
11
+ ['collections.nodeRef.id.keyword', 'virtual:collection_id_primary'],
12
12
  //["responsibility", "virtual:collection_id_primary"] // das zeigt auf "sammlungszugehörigkeit" und ist falsch
13
13
  ]);
14
14
  /*
15
15
  This map our column "names" to the valid values of the virtual:editorial_exclusion Filter
16
16
  */
17
17
  const ISSUETYPE2FILTERS = new Map([
18
- ["without_title", "missing_title"],
19
- ["without_description", "missing_description"],
20
- ["without_education_level", "missing_educationalcontext"],
21
- ["without_target_group", "missing_educationalintendedenduserrole"],
22
- ["without_taxonomy_id", "missing_taxonid"],
23
- ["without_category", "missing_oeh_lrt"],
24
- ["without_license", "missing_license"]
18
+ ['without_title', 'missing_title'],
19
+ ['without_description', 'missing_description'],
20
+ ['without_education_level', 'missing_educationalcontext'],
21
+ ['without_target_group', 'missing_educationalintendedenduserrole'],
22
+ ['without_taxonomy_id', 'missing_taxonid'],
23
+ ['without_category', 'missing_oeh_lrt'],
24
+ ['without_license', 'missing_license'],
25
25
  ]);
26
26
  /*
27
27
  interestingly it is not necessary to combine the nodeRef.id
@@ -29,43 +29,43 @@ with https://vocabs.openeduhub.de/w3id.org/openeduhub/vocabs/oeh-topics/{nodeRef
29
29
  */
30
30
  export class EditorialLinkService {
31
31
  constructor() {
32
- this.env = inject(EnvHelperService);
32
+ this.env = inject(ConfigHelperService);
33
33
  }
34
34
  openByReplicationsourceAndIssueTypeWithFilters(source, issue, selectedFilters) {
35
35
  const filters = {};
36
- filters["virtual:audit_filter"] = ["all"];
37
- filters["ccm:oeh_publisher_combined"] = [source];
38
- filters["virtual:editorial_exclusion"] = [ISSUETYPE2FILTERS.get(issue)];
36
+ filters['virtual:audit_filter'] = ['all'];
37
+ filters['ccm:oeh_publisher_combined'] = [source];
38
+ filters['virtual:editorial_exclusion'] = [ISSUETYPE2FILTERS.get(issue)];
39
39
  for (const [field, values] of Object.entries(selectedFilters)) {
40
40
  if (values && values.length) {
41
41
  const editorialFiltername = PROPERTIES2FILTERS.get(field);
42
42
  filters[editorialFiltername] = values;
43
43
  }
44
44
  }
45
- const theUrl = new URL(this.env.eduSharingPath + "/components/editorial-desk");
46
- const params = theUrl.searchParams;
47
- params.set("mode", "audit");
48
- params.set("filters", JSON.stringify(filters));
49
- window.open(theUrl, "editor_frontend");
45
+ const theUrl = this.env.eduSharingPath + '/components/editorial-desk';
46
+ const params = new URLSearchParams();
47
+ params.set('mode', 'audit');
48
+ params.set('filters', JSON.stringify(filters));
49
+ window.open(`${theUrl}?${params}`, 'editor_frontend');
50
50
  }
51
51
  openByCollectionAndIssueType(collectionId, issueType, pageTitle) {
52
52
  const filters = {};
53
- filters["virtual:audit_filter"] = ["all"];
54
- filters["virtual:editorial_exclusion"] = [ISSUETYPE2FILTERS.get(issueType)];
55
- filters["virtual:collection_id_primary"] = [collectionId];
56
- const theUrl = new URL(this.env.eduSharingPath + "/components/editorial-desk");
57
- const params = theUrl.searchParams;
58
- params.set("title", pageTitle);
59
- params.set("mode", "audit");
60
- params.set("filters", JSON.stringify(filters));
61
- window.open(theUrl, "editor_frontend");
53
+ filters['virtual:audit_filter'] = ['all'];
54
+ filters['virtual:editorial_exclusion'] = [ISSUETYPE2FILTERS.get(issueType)];
55
+ filters['virtual:collection_id_primary'] = [collectionId];
56
+ const theUrl = this.env.eduSharingPath + '/components/editorial-desk';
57
+ const params = new URLSearchParams();
58
+ params.set('title', pageTitle);
59
+ params.set('mode', 'audit');
60
+ params.set('filters', JSON.stringify(filters));
61
+ window.open(`${theUrl}?${params}`, 'editor_frontend');
62
62
  }
63
63
  openByCollectionId(collectionId) {
64
- const theUrl = new URL(this.env.eduSharingPath + "/components/editorial-desk");
65
- const params = theUrl.searchParams;
66
- params.set("ids", collectionId);
67
- params.set("mode", "render");
68
- window.open(theUrl, "editor_frontend");
64
+ const theUrl = this.env.eduSharingPath + '/components/editorial-desk';
65
+ const params = new URLSearchParams();
66
+ params.set('ids', collectionId);
67
+ params.set('mode', 'render');
68
+ window.open(`${theUrl}?${params}`, 'editor_frontend');
69
69
  }
70
70
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EditorialLinkService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
71
71
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EditorialLinkService, providedIn: 'root' }); }
@@ -73,7 +73,7 @@ export class EditorialLinkService {
73
73
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EditorialLinkService, decorators: [{
74
74
  type: Injectable,
75
75
  args: [{
76
- providedIn: 'root'
76
+ providedIn: 'root',
77
77
  }]
78
78
  }], ctorParameters: () => [] });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yaWFsLWxpbmsuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvcmlhbC1saW5rLXNlcnZpY2UvZWRpdG9yaWFsLWxpbmsuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRzVEOztHQUVHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsQ0FBaUI7SUFDakQsQ0FBQyw4QkFBOEIsRUFBRSx3QkFBd0IsQ0FBQztJQUMxRCxDQUFDLHNCQUFzQixFQUFFLGlCQUFpQixDQUFDO0lBQzNDLENBQUMsZ0NBQWdDLEVBQUUsK0JBQStCLENBQUM7SUFDbkUsOEdBQThHO0NBQy9HLENBQUMsQ0FBQztBQUNIOztFQUVFO0FBRUYsTUFBTSxpQkFBaUIsR0FBd0IsSUFBSSxHQUFHLENBQWlCO0lBQ3JFLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQztJQUNsQyxDQUFDLHFCQUFxQixFQUFFLHFCQUFxQixDQUFDO0lBQzlDLENBQUMseUJBQXlCLEVBQUUsNEJBQTRCLENBQUM7SUFDekQsQ0FBQyxzQkFBc0IsRUFBRSx3Q0FBd0MsQ0FBQztJQUNsRSxDQUFDLHFCQUFxQixFQUFFLGlCQUFpQixDQUFDO0lBQzFDLENBQUMsa0JBQWtCLEVBQUUsaUJBQWlCLENBQUM7SUFDdkMsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQztDQUN2QyxDQUFDLENBQUM7QUFDSDs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sb0JBQW9CO0lBRy9CO1FBRlEsUUFBRyxHQUFHLE1BQU0sQ0FBQyxn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K0dBM0NVLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRW52SGVscGVyU2VydmljZSB9IGZyb20gXCIuLi8uLi9lbnYtaGVscGVyLnNlcnZpY2VcIjtcblxuXG4vKlxuVGhpcyBpcyBhIG1hcCBmcm9tIHByb3BlcnRpZXMgb2YgYSBkb2N1bWVudCB0byBmaWx0ZXIgbmFtZXNcbiAqL1xuY29uc3QgUFJPUEVSVElFUzJGSUxURVJTID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1xuICBbXCJtZXRhZGF0YS5lZHVjYXRpb25hbENvbnRleHRzXCIsIFwiY2NtOmVkdWNhdGlvbmFsY29udGV4dFwiXSxcbiAgW1wibWV0YWRhdGEuZGlzY2lwbGluZXNcIiwgXCJ2aXJ0dWFsOnRheG9uaWRcIl0sXG4gIFtcImNvbGxlY3Rpb25zLm5vZGVSZWYuaWQua2V5d29yZFwiLCBcInZpcnR1YWw6Y29sbGVjdGlvbl9pZF9wcmltYXJ5XCJdLFxuICAvL1tcInJlc3BvbnNpYmlsaXR5XCIsIFwidmlydHVhbDpjb2xsZWN0aW9uX2lkX3ByaW1hcnlcIl0gLy8gZGFzIHplaWd0IGF1ZiBcInNhbW1sdW5nc3p1Z2Vow7ZyaWdrZWl0XCIgdW5kIGlzdCBmYWxzY2hcbl0pO1xuLypcblRoaXMgbWFwIG91ciBjb2x1bW4gXCJuYW1lc1wiIHRvIHRoZSB2YWxpZCB2YWx1ZXMgb2YgdGhlIHZpcnR1YWw6ZWRpdG9yaWFsX2V4Y2x1c2lvbiBGaWx0ZXJcbiovXG5cbmNvbnN0IElTU1VFVFlQRTJGSUxURVJTOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1xuICBbXCJ3aXRob3V0X3RpdGxlXCIsIFwibWlzc2luZ190aXRsZVwiXSxcbiAgW1wid2l0aG91dF9kZXNjcmlwdGlvblwiLCBcIm1pc3NpbmdfZGVzY3JpcHRpb25cIl0sXG4gIFtcIndpdGhvdXRfZWR1Y2F0aW9uX2xldmVsXCIsIFwibWlzc2luZ19lZHVjYXRpb25hbGNvbnRleHRcIl0sXG4gIFtcIndpdGhvdXRfdGFyZ2V0X2dyb3VwXCIsIFwibWlzc2luZ19lZHVjYXRpb25hbGludGVuZGVkZW5kdXNlcnJvbGVcIl0sXG4gIFtcIndpdGhvdXRfdGF4b25vbXlfaWRcIiwgXCJtaXNzaW5nX3RheG9uaWRcIl0sXG4gIFtcIndpdGhvdXRfY2F0ZWdvcnlcIiwgXCJtaXNzaW5nX29laF9scnRcIl0sXG4gIFtcIndpdGhvdXRfbGljZW5zZVwiLCBcIm1pc3NpbmdfbGljZW5zZVwiXVxuXSk7XG4vKlxuaW50ZXJlc3RpbmdseSBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGNvbWJpbmUgdGhlIG5vZGVSZWYuaWRcbndpdGggaHR0cHM6Ly92b2NhYnMub3BlbmVkdWh1Yi5kZS93M2lkLm9yZy9vcGVuZWR1aHViL3ZvY2Ficy9vZWgtdG9waWNzL3tub2RlUmVmLmlkfVxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBFZGl0b3JpYWxMaW5rU2VydmljZSB7XG4gIHByaXZhdGUgZW52ID0gaW5qZWN0KEVudkhlbHBlclNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgcHVibGljIG9wZW5CeVJlcGxpY2F0aW9uc291cmNlQW5kSXNzdWVUeXBlV2l0aEZpbHRlcnMoc291cmNlOiBzdHJpbmcsIGlzc3VlOiBzdHJpbmcgLCBzZWxlY3RlZEZpbHRlcnM6eyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB8IHVuZGVmaW5lZH0pOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJzOiBhbnkgPSB7fTtcbiAgICBmaWx0ZXJzW1widmlydHVhbDphdWRpdF9maWx0ZXJcIl0gPSBbXCJhbGxcIl07XG4gICAgZmlsdGVyc1tcImNjbTpvZWhfcHVibGlzaGVyX2NvbWJpbmVkXCJdID0gW3NvdXJjZV07XG4gICAgZmlsdGVyc1tcInZpcnR1YWw6ZWRpdG9yaWFsX2V4Y2x1c2lvblwiXSA9IFsgSVNTVUVUWVBFMkZJTFRFUlMuZ2V0KCBpc3N1ZSApXTtcbiAgICBmb3IgKCBjb25zdCBbZmllbGQsIHZhbHVlc10gb2YgT2JqZWN0LmVudHJpZXMoc2VsZWN0ZWRGaWx0ZXJzKSAgKSB7XG4gICAgICBpZiAodmFsdWVzICYmIHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZWRpdG9yaWFsRmlsdGVybmFtZSA9IFBST1BFUlRJRVMyRklMVEVSUy5nZXQoZmllbGQpIGFzIHN0cmluZztcbiAgICAgICAgZmlsdGVyc1tlZGl0b3JpYWxGaWx0ZXJuYW1lXSA9IHZhbHVlc1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHRoZVVybDogVVJMID0gbmV3IFVSTCh0aGlzLmVudi5lZHVTaGFyaW5nUGF0aCArIFwiL2NvbXBvbmVudHMvZWRpdG9yaWFsLWRlc2tcIik7XG4gICAgY29uc3QgcGFyYW1zID0gdGhlVXJsLnNlYXJjaFBhcmFtcztcbiAgICBwYXJhbXMuc2V0KFwibW9kZVwiLCBcImF1ZGl0XCIpO1xuICAgIHBhcmFtcy5zZXQoXCJmaWx0ZXJzXCIsIEpTT04uc3RyaW5naWZ5KGZpbHRlcnMpICk7XG4gICAgd2luZG93Lm9wZW4odGhlVXJsLCBcImVkaXRvcl9mcm9udGVuZFwiKVxuICB9XG4gIHB1YmxpYyBvcGVuQnlDb2xsZWN0aW9uQW5kSXNzdWVUeXBlKGNvbGxlY3Rpb25JZDogc3RyaW5nLCBpc3N1ZVR5cGU6IHN0cmluZywgcGFnZVRpdGxlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJzOiBhbnkgPSB7fTtcbiAgICBmaWx0ZXJzW1widmlydHVhbDphdWRpdF9maWx0ZXJcIl0gPSBbXCJhbGxcIl07XG4gICAgZmlsdGVyc1tcInZpcnR1YWw6ZWRpdG9yaWFsX2V4Y2x1c2lvblwiXSA9IFsgSVNTVUVUWVBFMkZJTFRFUlMuZ2V0KCBpc3N1ZVR5cGUgKV07XG4gICAgZmlsdGVyc1tcInZpcnR1YWw6Y29sbGVjdGlvbl9pZF9wcmltYXJ5XCJdID0gW2NvbGxlY3Rpb25JZF07XG4gICAgY29uc3QgdGhlVXJsOiBVUkwgPSBuZXcgVVJMKHRoaXMuZW52LmVkdVNoYXJpbmdQYXRoICsgXCIvY29tcG9uZW50cy9lZGl0b3JpYWwtZGVza1wiKTtcbiAgICBjb25zdCBwYXJhbXMgPSB0aGVVcmwuc2VhcmNoUGFyYW1zO1xuICAgIHBhcmFtcy5zZXQoXCJ0aXRsZVwiLCBwYWdlVGl0bGUpXG4gICAgcGFyYW1zLnNldChcIm1vZGVcIiwgXCJhdWRpdFwiKTtcbiAgICBwYXJhbXMuc2V0KFwiZmlsdGVyc1wiLCBKU09OLnN0cmluZ2lmeShmaWx0ZXJzKSApO1xuICAgIHdpbmRvdy5vcGVuKHRoZVVybCwgXCJlZGl0b3JfZnJvbnRlbmRcIilcbiAgfVxuXG4gIHB1YmxpYyBvcGVuQnlDb2xsZWN0aW9uSWQoY29sbGVjdGlvbklkOiBzdHJpbmcpOiB2b2lkIHtcblxuICAgIGNvbnN0IHRoZVVybDogVVJMID0gbmV3IFVSTCh0aGlzLmVudi5lZHVTaGFyaW5nUGF0aCArIFwiL2NvbXBvbmVudHMvZWRpdG9yaWFsLWRlc2tcIik7XG4gICAgY29uc3QgcGFyYW1zID0gdGhlVXJsLnNlYXJjaFBhcmFtcztcbiAgICBwYXJhbXMuc2V0KFwiaWRzXCIsIGNvbGxlY3Rpb25JZCk7XG4gICAgcGFyYW1zLnNldChcIm1vZGVcIiwgXCJyZW5kZXJcIik7XG4gICAgd2luZG93Lm9wZW4odGhlVXJsLCBcImVkaXRvcl9mcm9udGVuZFwiKVxuICB9XG59XG4iXX0=
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yaWFsLWxpbmsuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvcmlhbC1saW5rLXNlcnZpY2UvZWRpdG9yaWFsLWxpbmsuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBRWxFOztHQUVHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsQ0FBaUI7SUFDakQsQ0FBQyw4QkFBOEIsRUFBRSx3QkFBd0IsQ0FBQztJQUMxRCxDQUFDLHNCQUFzQixFQUFFLGlCQUFpQixDQUFDO0lBQzNDLENBQUMsZ0NBQWdDLEVBQUUsK0JBQStCLENBQUM7SUFDbkUsOEdBQThHO0NBQy9HLENBQUMsQ0FBQztBQUNIOztFQUVFO0FBRUYsTUFBTSxpQkFBaUIsR0FBd0IsSUFBSSxHQUFHLENBQWlCO0lBQ3JFLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQztJQUNsQyxDQUFDLHFCQUFxQixFQUFFLHFCQUFxQixDQUFDO0lBQzlDLENBQUMseUJBQXlCLEVBQUUsNEJBQTRCLENBQUM7SUFDekQsQ0FBQyxzQkFBc0IsRUFBRSx3Q0FBd0MsQ0FBQztJQUNsRSxDQUFDLHFCQUFxQixFQUFFLGlCQUFpQixDQUFDO0lBQzFDLENBQUMsa0JBQWtCLEVBQUUsaUJBQWlCLENBQUM7SUFDdkMsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQztDQUN2QyxDQUFDLENBQUM7QUFDSDs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sb0JBQW9CO0lBRy9CO1FBRlEsUUFBRyxHQUFHLE1BQU0sQ0FBQyxt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OytHQTlDVSxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQUZuQixNQUFNOzs0RkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25maWdIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29uZmlnLWhlbHBlci5zZXJ2aWNlJztcblxuLypcblRoaXMgaXMgYSBtYXAgZnJvbSBwcm9wZXJ0aWVzIG9mIGEgZG9jdW1lbnQgdG8gZmlsdGVyIG5hbWVzXG4gKi9cbmNvbnN0IFBST1BFUlRJRVMyRklMVEVSUyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcbiAgWydtZXRhZGF0YS5lZHVjYXRpb25hbENvbnRleHRzJywgJ2NjbTplZHVjYXRpb25hbGNvbnRleHQnXSxcbiAgWydtZXRhZGF0YS5kaXNjaXBsaW5lcycsICd2aXJ0dWFsOnRheG9uaWQnXSxcbiAgWydjb2xsZWN0aW9ucy5ub2RlUmVmLmlkLmtleXdvcmQnLCAndmlydHVhbDpjb2xsZWN0aW9uX2lkX3ByaW1hcnknXSxcbiAgLy9bXCJyZXNwb25zaWJpbGl0eVwiLCBcInZpcnR1YWw6Y29sbGVjdGlvbl9pZF9wcmltYXJ5XCJdIC8vIGRhcyB6ZWlndCBhdWYgXCJzYW1tbHVuZ3N6dWdlaMO2cmlna2VpdFwiIHVuZCBpc3QgZmFsc2NoXG5dKTtcbi8qXG5UaGlzIG1hcCBvdXIgY29sdW1uIFwibmFtZXNcIiB0byB0aGUgdmFsaWQgdmFsdWVzIG9mIHRoZSB2aXJ0dWFsOmVkaXRvcmlhbF9leGNsdXNpb24gRmlsdGVyXG4qL1xuXG5jb25zdCBJU1NVRVRZUEUyRklMVEVSUzogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcbiAgWyd3aXRob3V0X3RpdGxlJywgJ21pc3NpbmdfdGl0bGUnXSxcbiAgWyd3aXRob3V0X2Rlc2NyaXB0aW9uJywgJ21pc3NpbmdfZGVzY3JpcHRpb24nXSxcbiAgWyd3aXRob3V0X2VkdWNhdGlvbl9sZXZlbCcsICdtaXNzaW5nX2VkdWNhdGlvbmFsY29udGV4dCddLFxuICBbJ3dpdGhvdXRfdGFyZ2V0X2dyb3VwJywgJ21pc3NpbmdfZWR1Y2F0aW9uYWxpbnRlbmRlZGVuZHVzZXJyb2xlJ10sXG4gIFsnd2l0aG91dF90YXhvbm9teV9pZCcsICdtaXNzaW5nX3RheG9uaWQnXSxcbiAgWyd3aXRob3V0X2NhdGVnb3J5JywgJ21pc3Npbmdfb2VoX2xydCddLFxuICBbJ3dpdGhvdXRfbGljZW5zZScsICdtaXNzaW5nX2xpY2Vuc2UnXSxcbl0pO1xuLypcbmludGVyZXN0aW5nbHkgaXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjb21iaW5lIHRoZSBub2RlUmVmLmlkXG53aXRoIGh0dHBzOi8vdm9jYWJzLm9wZW5lZHVodWIuZGUvdzNpZC5vcmcvb3BlbmVkdWh1Yi92b2NhYnMvb2VoLXRvcGljcy97bm9kZVJlZi5pZH1cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVkaXRvcmlhbExpbmtTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBlbnYgPSBpbmplY3QoQ29uZmlnSGVscGVyU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHB1YmxpYyBvcGVuQnlSZXBsaWNhdGlvbnNvdXJjZUFuZElzc3VlVHlwZVdpdGhGaWx0ZXJzKFxuICAgIHNvdXJjZTogc3RyaW5nLFxuICAgIGlzc3VlOiBzdHJpbmcsXG4gICAgc2VsZWN0ZWRGaWx0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIHwgdW5kZWZpbmVkIH1cbiAgKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVyczogYW55ID0ge307XG4gICAgZmlsdGVyc1sndmlydHVhbDphdWRpdF9maWx0ZXInXSA9IFsnYWxsJ107XG4gICAgZmlsdGVyc1snY2NtOm9laF9wdWJsaXNoZXJfY29tYmluZWQnXSA9IFtzb3VyY2VdO1xuICAgIGZpbHRlcnNbJ3ZpcnR1YWw6ZWRpdG9yaWFsX2V4Y2x1c2lvbiddID0gW0lTU1VFVFlQRTJGSUxURVJTLmdldChpc3N1ZSldO1xuICAgIGZvciAoY29uc3QgW2ZpZWxkLCB2YWx1ZXNdIG9mIE9iamVjdC5lbnRyaWVzKHNlbGVjdGVkRmlsdGVycykpIHtcbiAgICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBlZGl0b3JpYWxGaWx0ZXJuYW1lID0gUFJPUEVSVElFUzJGSUxURVJTLmdldChmaWVsZCkgYXMgc3RyaW5nO1xuICAgICAgICBmaWx0ZXJzW2VkaXRvcmlhbEZpbHRlcm5hbWVdID0gdmFsdWVzO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHRoZVVybDogc3RyaW5nID0gdGhpcy5lbnYuZWR1U2hhcmluZ1BhdGggKyAnL2NvbXBvbmVudHMvZWRpdG9yaWFsLWRlc2snO1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBwYXJhbXMuc2V0KCdtb2RlJywgJ2F1ZGl0Jyk7XG4gICAgcGFyYW1zLnNldCgnZmlsdGVycycsIEpTT04uc3RyaW5naWZ5KGZpbHRlcnMpKTtcbiAgICB3aW5kb3cub3BlbihgJHt0aGVVcmx9PyR7cGFyYW1zfWAsICdlZGl0b3JfZnJvbnRlbmQnKTtcbiAgfVxuICBwdWJsaWMgb3BlbkJ5Q29sbGVjdGlvbkFuZElzc3VlVHlwZShjb2xsZWN0aW9uSWQ6IHN0cmluZywgaXNzdWVUeXBlOiBzdHJpbmcsIHBhZ2VUaXRsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVyczogYW55ID0ge307XG4gICAgZmlsdGVyc1sndmlydHVhbDphdWRpdF9maWx0ZXInXSA9IFsnYWxsJ107XG4gICAgZmlsdGVyc1sndmlydHVhbDplZGl0b3JpYWxfZXhjbHVzaW9uJ10gPSBbSVNTVUVUWVBFMkZJTFRFUlMuZ2V0KGlzc3VlVHlwZSldO1xuICAgIGZpbHRlcnNbJ3ZpcnR1YWw6Y29sbGVjdGlvbl9pZF9wcmltYXJ5J10gPSBbY29sbGVjdGlvbklkXTtcbiAgICBjb25zdCB0aGVVcmw6IHN0cmluZyA9IHRoaXMuZW52LmVkdVNoYXJpbmdQYXRoICsgJy9jb21wb25lbnRzL2VkaXRvcmlhbC1kZXNrJztcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgcGFyYW1zLnNldCgndGl0bGUnLCBwYWdlVGl0bGUpO1xuICAgIHBhcmFtcy5zZXQoJ21vZGUnLCAnYXVkaXQnKTtcbiAgICBwYXJhbXMuc2V0KCdmaWx0ZXJzJywgSlNPTi5zdHJpbmdpZnkoZmlsdGVycykpO1xuICAgIHdpbmRvdy5vcGVuKGAke3RoZVVybH0/JHtwYXJhbXN9YCwgJ2VkaXRvcl9mcm9udGVuZCcpO1xuICB9XG5cbiAgcHVibGljIG9wZW5CeUNvbGxlY3Rpb25JZChjb2xsZWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHRoZVVybDogc3RyaW5nID0gdGhpcy5lbnYuZWR1U2hhcmluZ1BhdGggKyAnL2NvbXBvbmVudHMvZWRpdG9yaWFsLWRlc2snO1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBwYXJhbXMuc2V0KCdpZHMnLCBjb2xsZWN0aW9uSWQpO1xuICAgIHBhcmFtcy5zZXQoJ21vZGUnLCAncmVuZGVyJyk7XG4gICAgd2luZG93Lm9wZW4oYCR7dGhlVXJsfT8ke3BhcmFtc31gLCAnZWRpdG9yX2Zyb250ZW5kJyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,23 @@
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 [parentId]=\"collectionId\"\n [mode]=\"mode\"\n type=\"material\"\n></metaqs2-node-list>\n", styles: [":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", "parentId"] }] }); }
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 [parentId]=\"collectionId\"\n [mode]=\"mode\"\n type=\"material\"\n></metaqs2-node-list>\n", styles: [":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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtaXNzdWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL21hdGVyaWFsLWlzc3Vlcy9tYXRlcmlhbC1pc3N1ZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWV0YS13aWRnZXRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvbWF0ZXJpYWwtaXNzdWVzL21hdGVyaWFsLWlzc3Vlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7OztBQVFsRCxNQUFNLE9BQU8sdUJBQXVCO0lBS2xDLFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBSnRELFdBQU0sR0FBYSxFQUFFLENBQUM7UUFDdEIsdUVBQXVFO1FBQ3ZFLGlCQUFZLEdBQVcsc0NBQXNDLENBQUM7SUFFTCxDQUFDO0lBRTFELEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JGLENBQUM7K0dBVFUsdUJBQXVCO21HQUF2Qix1QkFBdUIsK0RDUnBDLHFKQU1BOzs0RkRFYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpbHRlckFQSVNlcnZpY2UgfSBmcm9tICcuLi8uLi9qYXZhLWFwaSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21ldGFxczItbWF0ZXJpYWwtaXNzdWVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hdGVyaWFsLWlzc3Vlcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hdGVyaWFsLWlzc3Vlcy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbElzc3Vlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGlzc3Vlczogc3RyaW5nW10gPSBbXTtcbiAgLy8gQFRPRE86IElucHV0IGlzIGJyb2tlbiwgbWF5YmUgY2F1c2Ugb2Ygd2l0aENvbXBvbmVudElucHV0QmluZGluZygpPyFcbiAgY29sbGVjdGlvbklkOiBzdHJpbmcgPSAnOTRmMjJjOWItMGQzYS00YzFjLTg5ODctNGM4ZTgzZjNhOTJlJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZpbHRlckFQSVNlcnZpY2U6IEZpbHRlckFQSVNlcnZpY2UpIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pc3N1ZXMgPSBhd2FpdCB0aGlzLmZpbHRlckFQSVNlcnZpY2UuZ2V0TWF0ZXJpYWxJc3N1ZUZpZWxkTmFtZXMoKS50b1Byb21pc2UoKTtcbiAgfVxufVxuIiwiPG1ldGFxczItbm9kZS1saXN0XG4gICpuZ0Zvcj1cImxldCBtb2RlIG9mIGlzc3Vlc1wiXG4gIFtwYXJlbnRJZF09XCJjb2xsZWN0aW9uSWRcIlxuICBbbW9kZV09XCJtb2RlXCJcbiAgdHlwZT1cIm1hdGVyaWFsXCJcbj48L21ldGFxczItbm9kZS1saXN0PlxuIl19
@@ -0,0 +1,35 @@
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: [".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: [".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
@@ -0,0 +1,101 @@
1
+ import { Component, inject, Input } from '@angular/core';
2
+ import { BehaviorSubject, Subject } from 'rxjs';
3
+ import { map, shareReplay } 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
+ * default max count of nodes that should be shown
23
+ */
24
+ this.DEFAULT_LIMIT = 25;
25
+ this.data = new BehaviorSubject(undefined);
26
+ // rawData: (MaterialWithMissingAttributes | CollectionWithMissingAttributes)[] | undefined;
27
+ this.count = 0;
28
+ this.destroyed$ = new Subject();
29
+ /**
30
+ * should all nodes be shown?
31
+ */
32
+ this.showAll = false;
33
+ }
34
+ async ngOnChanges(changes) {
35
+ if (this.parentId) {
36
+ await this.refresh();
37
+ }
38
+ }
39
+ ngOnDestroy() {
40
+ this.destroyed$.next();
41
+ this.destroyed$.complete();
42
+ }
43
+ async refresh() {
44
+ let getByMissingAttribute = () => {
45
+ if (this.type === 'material') {
46
+ return this.collectionAPIService.getMaterialsWithMissingAttribute(this.parentId, this.mode);
47
+ }
48
+ else {
49
+ return this.collectionAPIService.getCollectionsWithMissingAttribute(this.parentId, this.mode);
50
+ }
51
+ };
52
+ // reset all data before switching
53
+ this.data.next(undefined);
54
+ //this.rawData = undefined;
55
+ this.wrappedData$ = getByMissingAttribute().pipe(wrapResponse(), shareReplay(1));
56
+ this.data.next(await this.wrappedData$
57
+ .pipe(map((wrappedData) => (wrappedData.state === 'success' ? wrappedData.data : undefined)))
58
+ .toPromise());
59
+ //this.rawData = this.data.value?.slice();
60
+ /**
61
+ * @TODO: Count mode
62
+ */
63
+ /*
64
+ if (?) {
65
+ this.filterCount();
66
+ }
67
+ */
68
+ }
69
+ editNode(node) {
70
+ let action;
71
+ if (this.mode === 'without_license') {
72
+ action = 'OPTIONS.LICENSE';
73
+ }
74
+ else {
75
+ action = 'OPTIONS.EDIT';
76
+ }
77
+ const id = node.node_id;
78
+ const win = window.open(this.env.eduSharingPath +
79
+ '/components/editorial-desk?mode=audit&viewType=single&ids=' +
80
+ encodeURIComponent(id) +
81
+ '&action=' +
82
+ action);
83
+ }
84
+ filterCount() {
85
+ // @TODO
86
+ // this.data = this.rawData?.filter((d) => (d as MaterialCounts).materials_count <= (this.count ?? 0));
87
+ }
88
+ 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 }); }
89
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NodeListComponent, selector: "metaqs2-node-list", inputs: { mode: "mode", type: "type", parentId: "parentId" }, 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.length || 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.length && !showAll ? d.slice(0, DEFAULT_LIMIT) : d\"\n [node]=\"node\"\n (edit)=\"editNode(node)\"\n ></metaqs2-node-entry>\n <div *ngIf=\"!d.length\">\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.length && !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: [".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" }] }); }
90
+ }
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodeListComponent, decorators: [{
92
+ type: Component,
93
+ 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.length || 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.length && !showAll ? d.slice(0, DEFAULT_LIMIT) : d\"\n [node]=\"node\"\n (edit)=\"editNode(node)\"\n ></metaqs2-node-entry>\n <div *ngIf=\"!d.length\">\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.length && !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: [".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"] }]
94
+ }], ctorParameters: () => [{ type: i1.CollectionAPIService }], propDecorators: { mode: [{
95
+ type: Input
96
+ }], type: [{
97
+ type: Input
98
+ }], parentId: [{
99
+ type: Input
100
+ }] } });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL25vZGUtbGlzdC9ub2RlLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWV0YS13aWRnZXRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvbm9kZS1saXN0L25vZGUtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXVDLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsT0FBTyxFQUFtQixZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBT2xFLE1BQU0sT0FBTyxpQkFBaUI7SUF1QjVCLFlBQW9CLG9CQUEwQztRQUExQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBdEJ0RCxRQUFHLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFLMUM7O1dBRUc7UUFDTSxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUU1QixTQUFJLEdBQUcsSUFBSSxlQUFlLENBQ3hCLFNBQVMsQ0FDVixDQUFDO1FBQ0YsNEZBQTRGO1FBQzVGLFVBQUssR0FBa0IsQ0FBQyxDQUFDO1FBRWpCLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3pDOztXQUVHO1FBQ0gsWUFBTyxHQUFHLEtBQUssQ0FBQztJQUVpRCxDQUFDO0lBRWxFLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBc0I7UUFDdEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLElBQUkscUJBQXFCLEdBQUcsR0FBb0YsRUFBRTtZQUNoSCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQzdCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlGLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoRyxDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsa0NBQWtDO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLDJCQUEyQjtRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLHFCQUFxQixFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNaLE1BQU0sSUFBSSxDQUFDLFlBQVk7YUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzthQUM1RixTQUFTLEVBQUUsQ0FDZixDQUFDO1FBQ0YsMENBQTBDO1FBRTFDOztXQUVHO1FBQ0g7Ozs7ZUFJTztJQUNULENBQUM7SUFFRCxRQUFRLENBQUMsSUFBcUU7UUFDNUUsSUFBSSxNQUFjLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGlCQUFpQixFQUFFLENBQUM7WUFDcEMsTUFBTSxHQUFHLGlCQUFpQixDQUFDO1FBQzdCLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxHQUFHLGNBQWMsQ0FBQztRQUMxQixDQUFDO1FBRUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQVMsQ0FBQztRQUMxQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWM7WUFDckIsNERBQTREO1lBQzVELGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUN0QixVQUFVO1lBQ1YsTUFBTSxDQUNULENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULFFBQVE7UUFDUix1R0FBdUc7SUFDekcsQ0FBQzsrR0F2RlUsaUJBQWlCO21HQUFqQixpQkFBaUIsNElDWjlCLGtqRUFpREE7OzRGRHJDYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsbUJBQW1CO3lGQU1wQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uQVBJU2VydmljZSwgQ29sbGVjdGlvbldpdGhNaXNzaW5nQXR0cmlidXRlcywgTWF0ZXJpYWxXaXRoTWlzc2luZ0F0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9qYXZhLWFwaSc7XG5pbXBvcnQgeyBXcmFwcGVkUmVzcG9uc2UsIHdyYXBSZXNwb25zZSB9IGZyb20gJy4uLy4uL3dyYXAtb2JzZXJ2YWJsZS5waXBlJztcbmltcG9ydCB7IENvbmZpZ0hlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb25maWctaGVscGVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZXRhcXMyLW5vZGUtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ub2RlLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ub2RlLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTm9kZUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgZW52ID0gaW5qZWN0KENvbmZpZ0hlbHBlclNlcnZpY2UpO1xuICBASW5wdXQoKSBtb2RlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR5cGU6ICdtYXRlcmlhbCcgfCAnY29sbGVjdGlvbic7XG4gIEBJbnB1dCgpIHBhcmVudElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGRlZmF1bHQgbWF4IGNvdW50IG9mIG5vZGVzIHRoYXQgc2hvdWxkIGJlIHNob3duXG4gICAqL1xuICByZWFkb25seSBERUZBVUxUX0xJTUlUID0gMjU7XG4gIHdyYXBwZWREYXRhJDogT2JzZXJ2YWJsZTxXcmFwcGVkUmVzcG9uc2U8KE1hdGVyaWFsV2l0aE1pc3NpbmdBdHRyaWJ1dGVzIHwgQ29sbGVjdGlvbldpdGhNaXNzaW5nQXR0cmlidXRlcylbXT4+O1xuICBkYXRhID0gbmV3IEJlaGF2aW9yU3ViamVjdDwoTWF0ZXJpYWxXaXRoTWlzc2luZ0F0dHJpYnV0ZXMgfCBDb2xsZWN0aW9uV2l0aE1pc3NpbmdBdHRyaWJ1dGVzKVtdIHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWRcbiAgKTtcbiAgLy8gcmF3RGF0YTogKE1hdGVyaWFsV2l0aE1pc3NpbmdBdHRyaWJ1dGVzIHwgQ29sbGVjdGlvbldpdGhNaXNzaW5nQXR0cmlidXRlcylbXSB8IHVuZGVmaW5lZDtcbiAgY291bnQ6IG51bWJlciB8IG51bGwgPSAwO1xuXG4gIHByaXZhdGUgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIC8qKlxuICAgKiBzaG91bGQgYWxsIG5vZGVzIGJlIHNob3duP1xuICAgKi9cbiAgc2hvd0FsbCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29sbGVjdGlvbkFQSVNlcnZpY2U6IENvbGxlY3Rpb25BUElTZXJ2aWNlKSB7fVxuXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAodGhpcy5wYXJlbnRJZCkge1xuICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2goKSB7XG4gICAgbGV0IGdldEJ5TWlzc2luZ0F0dHJpYnV0ZSA9ICgpOiBPYnNlcnZhYmxlPChNYXRlcmlhbFdpdGhNaXNzaW5nQXR0cmlidXRlcyB8IENvbGxlY3Rpb25XaXRoTWlzc2luZ0F0dHJpYnV0ZXMpW10+ID0+IHtcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdtYXRlcmlhbCcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbkFQSVNlcnZpY2UuZ2V0TWF0ZXJpYWxzV2l0aE1pc3NpbmdBdHRyaWJ1dGUodGhpcy5wYXJlbnRJZCwgdGhpcy5tb2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb25BUElTZXJ2aWNlLmdldENvbGxlY3Rpb25zV2l0aE1pc3NpbmdBdHRyaWJ1dGUodGhpcy5wYXJlbnRJZCwgdGhpcy5tb2RlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gcmVzZXQgYWxsIGRhdGEgYmVmb3JlIHN3aXRjaGluZ1xuICAgIHRoaXMuZGF0YS5uZXh0KHVuZGVmaW5lZCk7XG4gICAgLy90aGlzLnJhd0RhdGEgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy53cmFwcGVkRGF0YSQgPSBnZXRCeU1pc3NpbmdBdHRyaWJ1dGUoKS5waXBlKHdyYXBSZXNwb25zZSgpLCBzaGFyZVJlcGxheSgxKSk7XG4gICAgdGhpcy5kYXRhLm5leHQoXG4gICAgICBhd2FpdCB0aGlzLndyYXBwZWREYXRhJFxuICAgICAgICAucGlwZShtYXAoKHdyYXBwZWREYXRhKSA9PiAod3JhcHBlZERhdGEuc3RhdGUgPT09ICdzdWNjZXNzJyA/IHdyYXBwZWREYXRhLmRhdGEgOiB1bmRlZmluZWQpKSlcbiAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgKTtcbiAgICAvL3RoaXMucmF3RGF0YSA9IHRoaXMuZGF0YS52YWx1ZT8uc2xpY2UoKTtcblxuICAgIC8qKlxuICAgICAqIEBUT0RPOiBDb3VudCBtb2RlXG4gICAgICovXG4gICAgLypcbiAgICAgICAgaWYgKD8pIHtcbiAgICAgICAgICB0aGlzLmZpbHRlckNvdW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgICovXG4gIH1cblxuICBlZGl0Tm9kZShub2RlOiBNYXRlcmlhbFdpdGhNaXNzaW5nQXR0cmlidXRlcyB8IENvbGxlY3Rpb25XaXRoTWlzc2luZ0F0dHJpYnV0ZXMpIHtcbiAgICBsZXQgYWN0aW9uOiBzdHJpbmc7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ3dpdGhvdXRfbGljZW5zZScpIHtcbiAgICAgIGFjdGlvbiA9ICdPUFRJT05TLkxJQ0VOU0UnO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY3Rpb24gPSAnT1BUSU9OUy5FRElUJztcbiAgICB9XG5cbiAgICBjb25zdCBpZCA9IG5vZGUubm9kZV9pZCEhO1xuICAgIGNvbnN0IHdpbiA9IHdpbmRvdy5vcGVuKFxuICAgICAgdGhpcy5lbnYuZWR1U2hhcmluZ1BhdGggK1xuICAgICAgICAnL2NvbXBvbmVudHMvZWRpdG9yaWFsLWRlc2s/bW9kZT1hdWRpdCZ2aWV3VHlwZT1zaW5nbGUmaWRzPScgK1xuICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoaWQpICtcbiAgICAgICAgJyZhY3Rpb249JyArXG4gICAgICAgIGFjdGlvblxuICAgICk7XG4gIH1cblxuICBmaWx0ZXJDb3VudCgpIHtcbiAgICAvLyBAVE9ET1xuICAgIC8vIHRoaXMuZGF0YSA9IHRoaXMucmF3RGF0YT8uZmlsdGVyKChkKSA9PiAoZCBhcyBNYXRlcmlhbENvdW50cykubWF0ZXJpYWxzX2NvdW50IDw9ICh0aGlzLmNvdW50ID8/IDApKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgPG1hdC1jYXJkICpuZ0lmPVwibW9kZVwiPlxuICAgIDxtYXQtY2FyZC1oZWFkZXI+XG4gICAgICA8bWF0LWNhcmQtdGl0bGU+XG4gICAgICAgIHt7ICdpc3N1ZXMuJyArIG1vZGUgIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cIihkYXRhIHwgYXN5bmMpIGFzIGRcIj4oe3sgZC5sZW5ndGggfHwgMCB9fSk8L3NwYW4+XG4gICAgICA8L21hdC1jYXJkLXRpdGxlPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cIiEoZGF0YSB8IGFzeW5jKVwiIChjbGljayk9XCJyZWZyZXNoKClcIj5cbiAgICAgICAgPG1hdC1pY29uPnJlZnJlc2g8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtY2FyZC1oZWFkZXI+XG4gICAgPCEtLSBAVE9ETyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PT0gJ2NvbGxlY3Rpb24nICYmIG1vZGUgPT09ICdUT0RPX2NvdW50J1wiIGNsYXNzPVwiY291bnQtc2xpZGVyXCI+XG4gICAgICA8bGFiZWw+U2FtbWx1bmdlbiBtaXQge3sgY291bnQgfX0gb2RlciB3ZW5pZ2VyIEluaGFsdGVuPC9sYWJlbD5cbiAgICAgIDxtYXQtc2xpZGVyXG4gICAgICAgIFtzaG93VGlja01hcmtzXT1cInRydWVcIlxuICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgIFtuZ01vZGVsXT1cImNvdW50XCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY291bnQgPSAkZXZlbnQ7IGZpbHRlckNvdW50KClcIlxuICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgbWF4PVwiMTBcIlxuICAgICAgPjwvbWF0LXNsaWRlcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid3JhcHBlZERhdGEkIHwgYXN5bmMgYXMgd3JhcHBlZERhdGFcIj5cbiAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cIndyYXBwZWREYXRhLnN0YXRlID09PSAnbG9hZGluZydcIiBkaWFtZXRlcj1cIjQwXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlcnJvclwiICpuZ0lmPVwid3JhcHBlZERhdGEuc3RhdGUgPT09ICdlcnJvcidcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJlcnJvci10ZXh0XCI+RXR3YXMgaXN0IHNjaGllZiBnZWxhdWZlbi48L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxcIiAqbmdJZj1cIndyYXBwZWREYXRhLnN0YXRlID09PSAnc3VjY2VzcydcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihkYXRhIHwgYXN5bmMpIGFzIGRcIj5cbiAgICAgICAgICA8bWV0YXFzMi1ub2RlLWVudHJ5XG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgbm9kZSBvZiBERUZBVUxUX0xJTUlUIDwgZC5sZW5ndGggJiYgIXNob3dBbGwgPyBkLnNsaWNlKDAsIERFRkFVTFRfTElNSVQpIDogZFwiXG4gICAgICAgICAgICBbbm9kZV09XCJub2RlXCJcbiAgICAgICAgICAgIChlZGl0KT1cImVkaXROb2RlKG5vZGUpXCJcbiAgICAgICAgICA+PC9tZXRhcXMyLW5vZGUtZW50cnk+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFkLmxlbmd0aFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsbC1kb25lXCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiYWxsLWRvbmUtZW1vamlcIj7wn6WzPC9wPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImFsbC1kb25lLXRleHRcIj5LZWluZSBFbGVtZW50ZSBhdXNzdGVoZW5kPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIkRFRkFVTFRfTElNSVQgPCBkLmxlbmd0aCAmJiAhc2hvd0FsbFwiIChjbGljayk9XCJzaG93QWxsID0gdHJ1ZVwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1idXR0b24+XG4gICAgICAgICAgICBBbGxlIEVsZW1lbnRlIGFuemVpZ2VuIDxtYXQtaWNvbj5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9tYXQtY2FyZD5cbjwvZGl2PlxuIl19
@@ -0,0 +1,31 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NgMetaWidgetsLibConfiguration {
4
+ }
5
+ /**
6
+ * helper class to provide configuration values
7
+ */
8
+ export class ConfigHelperService {
9
+ constructor(config) {
10
+ this.config = config;
11
+ // apply api path given in window url
12
+ }
13
+ patchConfig(config) {
14
+ this.config = { ...this.config, ...config };
15
+ }
16
+ get apiPath() {
17
+ return this.config.apiPath;
18
+ }
19
+ get eduSharingPath() {
20
+ return this.config.eduSharingPath;
21
+ }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfigHelperService, deps: [{ token: 'config' }], target: i0.ɵɵFactoryTarget.Injectable }); }
23
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfigHelperService }); }
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfigHelperService, decorators: [{
26
+ type: Injectable
27
+ }], ctorParameters: () => [{ type: NgMetaWidgetsLibConfiguration, decorators: [{
28
+ type: Inject,
29
+ args: ['config']
30
+ }] }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWhlbHBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWV0YS13aWRnZXRzLWxpYi9zcmMvbGliL2NvbmZpZy1oZWxwZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFbkQsTUFBTSxPQUFPLDZCQUE2QjtDQUd6QztBQUVEOztHQUVHO0FBRUgsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUFxQyxNQUFxQztRQUFyQyxXQUFNLEdBQU4sTUFBTSxDQUErQjtRQUN4RSxxQ0FBcUM7SUFDdkMsQ0FBQztJQUVNLFdBQVcsQ0FBQyxNQUE4QztRQUMvRCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztJQUNwQyxDQUFDOytHQWZVLG1CQUFtQixrQkFDVixRQUFRO21IQURqQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVU7OzBCQUVJLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgTmdNZXRhV2lkZ2V0c0xpYkNvbmZpZ3VyYXRpb24ge1xuICBhcGlQYXRoOiBzdHJpbmc7XG4gIGVkdVNoYXJpbmdQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogaGVscGVyIGNsYXNzIHRvIHByb3ZpZGUgY29uZmlndXJhdGlvbiB2YWx1ZXNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbmZpZ0hlbHBlclNlcnZpY2UgaW1wbGVtZW50cyBDb25maWdIZWxwZXIge1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KCdjb25maWcnKSBwdWJsaWMgY29uZmlnOiBOZ01ldGFXaWRnZXRzTGliQ29uZmlndXJhdGlvbikge1xuICAgIC8vIGFwcGx5IGFwaSBwYXRoIGdpdmVuIGluIHdpbmRvdyB1cmxcbiAgfVxuXG4gIHB1YmxpYyBwYXRjaENvbmZpZyhjb25maWc6IFBhcnRpYWw8TmdNZXRhV2lkZ2V0c0xpYkNvbmZpZ3VyYXRpb24+KSB7XG4gICAgdGhpcy5jb25maWcgPSB7IC4uLnRoaXMuY29uZmlnLCAuLi5jb25maWcgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXBpUGF0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuYXBpUGF0aDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZWR1U2hhcmluZ1BhdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmVkdVNoYXJpbmdQYXRoO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnSGVscGVyIHtcbiAgZ2V0IGFwaVBhdGgoKTogc3RyaW5nO1xuXG4gIGdldCBlZHVTaGFyaW5nUGF0aCgpOiBzdHJpbmc7XG5cbiAgcGF0Y2hDb25maWcoY29uZmlnOiBQYXJ0aWFsPE5nTWV0YVdpZGdldHNMaWJDb25maWd1cmF0aW9uPik6IHZvaWQ7XG59XG4iXX0=
@@ -130,7 +130,7 @@ export class CountsWithHistoryComponent {
130
130
  this.destroyed$.complete();
131
131
  }
132
132
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CountsWithHistoryComponent, deps: [{ token: i1.MetaApiService }], target: i0.ɵɵFactoryTarget.Component }); }
133
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CountsWithHistoryComponent, isStandalone: true, selector: "metaqs2-counts-with-history", inputs: { apiMethod: "apiMethod", columnTranslationkey: "columnTranslationkey", pageTitle: "pageTitle" }, ngImport: i0, template: "<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title data-test-id=\"page-title\">\n Qualit\u00E4tsmetrik: {{ pageTitle | translate}}{{isLoading() ? \": Lade neue Daten.\" : \"\"}}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content *ngIf=\"timeFilterLoaded()\">\n <metaqs2-datepicker [disabled]=\"isLoading()\" [inputGroup]=\"range\" ></metaqs2-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: i2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i2.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i2.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: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: DatepickerComponent, selector: "metaqs2-datepicker", inputs: ["disabled", "inputGroup"] }, { kind: "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"] }] }); }
133
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CountsWithHistoryComponent, isStandalone: true, selector: "metaqs2-counts-with-history", inputs: { apiMethod: "apiMethod", columnTranslationkey: "columnTranslationkey", pageTitle: "pageTitle" }, ngImport: i0, template: "<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title data-test-id=\"page-title\">\n Qualit\u00E4tsmetrik: {{ pageTitle | translate}}{{isLoading() ? \": Lade neue Daten.\" : \"\"}}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content *ngIf=\"timeFilterLoaded()\">\n <metaqs2-datepicker [disabled]=\"isLoading()\" [inputGroup]=\"range\" ></metaqs2-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_down{color:#4abeff}.trending_up{color:#c20808}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i2.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i2.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: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: DatepickerComponent, selector: "metaqs2-datepicker", inputs: ["disabled", "inputGroup"] }, { kind: "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"] }] }); }
134
134
  }
135
135
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CountsWithHistoryComponent, decorators: [{
136
136
  type: Component,
@@ -154,7 +154,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
154
154
  MatIcon,
155
155
  NgIf,
156
156
  AsyncPipe,
157
- ], template: "<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title data-test-id=\"page-title\">\n Qualit\u00E4tsmetrik: {{ pageTitle | translate}}{{isLoading() ? \": Lade neue Daten.\" : \"\"}}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content *ngIf=\"timeFilterLoaded()\">\n <metaqs2-datepicker [disabled]=\"isLoading()\" [inputGroup]=\"range\" ></metaqs2-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"] }]
157
+ ], template: "<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title data-test-id=\"page-title\">\n Qualit\u00E4tsmetrik: {{ pageTitle | translate}}{{isLoading() ? \": Lade neue Daten.\" : \"\"}}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content *ngIf=\"timeFilterLoaded()\">\n <metaqs2-datepicker [disabled]=\"isLoading()\" [inputGroup]=\"range\" ></metaqs2-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_down{color:#4abeff}.trending_up{color:#c20808}\n"] }]
158
158
  }], ctorParameters: () => [{ type: i1.MetaApiService }], propDecorators: { apiMethod: [{
159
159
  type: Input,
160
160
  args: [{ required: true }]