ngx-edu-sharing-metaqs2 0.9.54 → 0.9.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-edu-sharing-metaqs2.mjs","sources":["../../../projects/ng-meta-widgets-lib/src/lib/java-api/variables.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/encoder.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/configuration.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/api.base.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/api/authProxyController.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/api/collectionAPI.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/api/editorsAPI.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/api/filterAPI.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/api/replicationSourceAPI.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/api/api.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/model/collectionWithMissingAttributes.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/model/count.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/model/eduCollection.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/model/filterValue.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/model/materialCountFilter.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/model/materialWithMissingAttributes.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/model/qualityMatrixHeader.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/model/qualityMatrixReplicationSourceCounts.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/api.module.ts","../../../projects/ng-meta-widgets-lib/src/lib/config-helper.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/filter/quality-matrix-filter.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/filter/quality-matrix-filter.component.html","../../../projects/ng-meta-widgets-lib/src/lib/meta-api.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/editorial-link-service/editorial-link.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/core/tooltip.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/donut-chart/donut-chart.pipe.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/donut-chart/donut-chart.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/donut-chart-tooltip/donut-chart-tooltip.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/donut-chart-tooltip/donut-chart-tooltip.component.html","../../../projects/ng-meta-widgets-lib/src/lib/components/filter/datepicker/datepicker.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/filter/datepicker/datepicker.component.html","../../../projects/ng-meta-widgets-lib/src/lib/components/loading_indicator/overlay/overlay.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/loading_indicator/progress-spinner/progress-spinner.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/loading_indicator/progress-spinner/progress-spinner.component.html","../../../projects/ng-meta-widgets-lib/src/lib/components/quality-matrix/scroll-marker.directive.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/quality-matrix/quality_matrix.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/quality-matrix/quality-matrix.html","../../../projects/ng-meta-widgets-lib/src/lib/wrap-observable.pipe.ts","../../../projects/ng-meta-widgets-lib/src/lib/node-image-url.pipe.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/node-entry/node-entry.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/node-entry/node-entry.component.html","../../../projects/ng-meta-widgets-lib/src/lib/components/node-list/node-list.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/node-list/node-list.component.html","../../../projects/ng-meta-widgets-lib/src/lib/components/material-issues/material-issues.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/material-issues/material-issues.component.html","../../../projects/ng-meta-widgets-lib/src/lib/components/collection-issues/collection-issues.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/collection-issues/collection-issues.component.html","../../../projects/ng-meta-widgets-lib/src/lib/core/svg-icons.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/ng-meta-widgets-lib.module.ts","../../../projects/ng-meta-widgets-lib/src/lib/tree-collection-details/tree-collection-details.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/tree-collection-details/tree-collection-details.component.html","../../../projects/ng-meta-widgets-lib/src/lib/tree-search-counts/inline-worker.ts","../../../projects/ng-meta-widgets-lib/src/lib/tree-search-counts/tree-search-counts.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/tree-search-counts/tree-search-counts.component.html","../../../projects/ng-meta-widgets-lib/src/lib/collection-count-history/monthpicker/monthpicker.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/collection-count-history/monthpicker/monthpicker.component.html","../../../projects/ng-meta-widgets-lib/src/lib/collection-count-history/collection-count-history.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/collection-count-history/collection-count-history.component.html","../../../projects/ng-meta-widgets-lib/src/lib/counts-with-history/counts-with-history.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/counts-with-history/counts-with-history.component.html","../../../projects/ng-meta-widgets-lib/src/web-components.ts","../../../projects/ng-meta-widgets-lib/src/lib/tree-license/tree-license.component.ts","../../../projects/ng-meta-widgets-lib/src/public-api.ts","../../../projects/ng-meta-widgets-lib/src/ngx-edu-sharing-metaqs2.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const BASE_PATH = new InjectionToken<string>('basePath');\nexport const COLLECTION_FORMATS = {\n 'csv': ',',\n 'tsv': ' ',\n 'ssv': ' ',\n 'pipes': '|'\n}\n","import { HttpParameterCodec } from '@angular/common/http';\n\n/**\n * Custom HttpParameterCodec\n * Workaround for https://github.com/angular/angular/issues/18261\n */\nexport class CustomHttpParameterCodec implements HttpParameterCodec {\n encodeKey(k: string): string {\n return encodeURIComponent(k);\n }\n encodeValue(v: string): string {\n return encodeURIComponent(v);\n }\n decodeKey(k: string): string {\n return decodeURIComponent(k);\n }\n decodeValue(v: string): string {\n return decodeURIComponent(v);\n }\n}\n","import { HttpHeaders, HttpParams, HttpParameterCodec } from '@angular/common/http';\nimport { Param } from './param';\n\nexport interface ConfigurationParameters {\n /**\n * @deprecated Since 5.0. Use credentials instead\n */\n apiKeys?: { [key: string]: string };\n username?: string;\n password?: string;\n /**\n * @deprecated Since 5.0. Use credentials instead\n */\n accessToken?: string | (() => string);\n basePath?: string;\n withCredentials?: boolean;\n /**\n * Takes care of encoding query- and form-parameters.\n */\n encoder?: HttpParameterCodec;\n /**\n * Override the default method for encoding path parameters in various\n * <a href=\"https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values\">styles</a>.\n * <p>\n * See {@link README.md} for more details\n * </p>\n */\n encodeParam?: (param: Param) => string;\n /**\n * The keys are the names in the securitySchemes section of the OpenAPI\n * document. They should map to the value used for authentication\n * minus any standard prefixes such as 'Basic' or 'Bearer'.\n */\n credentials?: { [key: string]: string | (() => string | undefined) };\n}\n\nexport class Configuration {\n /**\n * @deprecated Since 5.0. Use credentials instead\n */\n apiKeys?: { [key: string]: string };\n username?: string;\n password?: string;\n /**\n * @deprecated Since 5.0. Use credentials instead\n */\n accessToken?: string | (() => string);\n basePath?: string;\n withCredentials?: boolean;\n /**\n * Takes care of encoding query- and form-parameters.\n */\n encoder?: HttpParameterCodec;\n /**\n * Encoding of various path parameter\n * <a href=\"https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values\">styles</a>.\n * <p>\n * See {@link README.md} for more details\n * </p>\n */\n encodeParam: (param: Param) => string;\n /**\n * The keys are the names in the securitySchemes section of the OpenAPI\n * document. They should map to the value used for authentication\n * minus any standard prefixes such as 'Basic' or 'Bearer'.\n */\n credentials: { [key: string]: string | (() => string | undefined) };\n\n constructor(configurationParameters: ConfigurationParameters = {}) {\n this.apiKeys = configurationParameters.apiKeys;\n this.username = configurationParameters.username;\n this.password = configurationParameters.password;\n this.accessToken = configurationParameters.accessToken;\n this.basePath = configurationParameters.basePath;\n this.withCredentials = configurationParameters.withCredentials;\n this.encoder = configurationParameters.encoder;\n if (configurationParameters.encodeParam) {\n this.encodeParam = configurationParameters.encodeParam;\n } else {\n this.encodeParam = (param) => this.defaultEncodeParam(param);\n }\n if (configurationParameters.credentials) {\n this.credentials = configurationParameters.credentials;\n } else {\n this.credentials = {};\n }\n\n // init default basicAuth credential\n if (!this.credentials['basicAuth']) {\n this.credentials['basicAuth'] = () => {\n return this.username || this.password ? btoa(this.username + ':' + this.password) : undefined;\n };\n }\n }\n\n /**\n * Select the correct content-type to use for a request.\n * Uses {@link Configuration#isJsonMime} to determine the correct content-type.\n * If no content type is found return the first found type if the contentTypes is not empty\n * @param contentTypes - the array of content types that are available for selection\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\n */\n public selectHeaderContentType(contentTypes: string[]): string | undefined {\n if (contentTypes.length === 0) {\n return undefined;\n }\n\n const type = contentTypes.find((x: string) => this.isJsonMime(x));\n if (type === undefined) {\n return contentTypes[0];\n }\n return type;\n }\n\n /**\n * Select the correct accept content-type to use for a request.\n * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.\n * If no content type is found return the first found type if the contentTypes is not empty\n * @param accepts - the array of content types that are available for selection.\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\n */\n public selectHeaderAccept(accepts: string[]): string | undefined {\n if (accepts.length === 0) {\n return undefined;\n }\n\n const type = accepts.find((x: string) => this.isJsonMime(x));\n if (type === undefined) {\n return accepts[0];\n }\n return type;\n }\n\n /**\n * Check if the given MIME is a JSON MIME.\n * JSON MIME examples:\n * application/json\n * application/json; charset=UTF8\n * APPLICATION/JSON\n * application/vnd.company+json\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\n * @return True if the given MIME is JSON, false otherwise.\n */\n public isJsonMime(mime: string): boolean {\n const jsonMime: RegExp = new RegExp('^(application/json|[^;/ \\t]+/[^;/ \\t]+[+]json)[ \\t]*(;.*)?$', 'i');\n return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');\n }\n\n public lookupCredential(key: string): string | undefined {\n const value = this.credentials[key];\n return typeof value === 'function' ? value() : value;\n }\n\n public addCredentialToHeaders(\n credentialKey: string,\n headerName: string,\n headers: HttpHeaders,\n prefix?: string\n ): HttpHeaders {\n const value = this.lookupCredential(credentialKey);\n return value ? headers.set(headerName, (prefix ?? '') + value) : headers;\n }\n\n public addCredentialToQuery(credentialKey: string, paramName: string, query: HttpParams): HttpParams {\n const value = this.lookupCredential(credentialKey);\n return value ? query.set(paramName, value) : query;\n }\n\n private defaultEncodeParam(param: Param): string {\n // This implementation exists as fallback for missing configuration\n // and for backwards compatibility to older typescript-angular generator versions.\n // It only works for the 'simple' parameter style.\n // Date-handling only works for the 'date-time' format.\n // All other styles and Date-formats are probably handled incorrectly.\n //\n // But: if that's all you need (i.e.: the most common use-case): no need for customization!\n\n const value =\n param.dataFormat === 'date-time' && param.value instanceof Date\n ? (param.value as Date).toISOString()\n : param.value;\n\n return encodeURIComponent(String(value));\n }\n}\n","import { HttpHeaders, HttpParams, HttpParameterCodec } from '@angular/common/http';\nimport { CustomHttpParameterCodec } from './encoder';\nimport { Configuration } from './configuration';\n\nexport class BaseService {\n protected basePath = '';\n public defaultHeaders = new HttpHeaders();\n public configuration: Configuration;\n public encoder: HttpParameterCodec;\n\n constructor(basePath?: string | string[], configuration?: Configuration) {\n this.configuration = configuration || new Configuration();\n if (typeof this.configuration.basePath !== 'string') {\n const firstBasePath = Array.isArray(basePath) ? basePath[0] : undefined;\n if (firstBasePath != undefined) {\n basePath = firstBasePath;\n }\n\n if (typeof basePath !== 'string') {\n basePath = this.basePath;\n }\n this.configuration.basePath = basePath;\n }\n this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n }\n\n protected canConsumeForm(consumes: string[]): boolean {\n return consumes.indexOf('multipart/form-data') !== -1;\n }\n\n protected addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n // If the value is an object (but not a Date), recursively add its keys.\n if (typeof value === 'object' && !(value instanceof Date)) {\n return this.addToHttpParamsRecursive(httpParams, value, key);\n }\n return this.addToHttpParamsRecursive(httpParams, value, key);\n }\n\n protected addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n if (value === null || value === undefined) {\n return httpParams;\n }\n if (typeof value === 'object') {\n // If JSON format is preferred, key must be provided.\n if (key != null) {\n return httpParams.append(key, JSON.stringify(value));\n }\n // Otherwise, if it's an array, add each element.\n if (Array.isArray(value)) {\n value.forEach((elem) => (httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)));\n } else if (value instanceof Date) {\n if (key != null) {\n httpParams = httpParams.append(key, value.toISOString());\n } else {\n throw Error('key may not be null if value is Date');\n }\n } else {\n Object.keys(value).forEach((k) => {\n const paramKey = key ? `${key}.${k}` : k;\n httpParams = this.addToHttpParamsRecursive(httpParams, value[k], paramKey);\n });\n }\n return httpParams;\n } else if (key != null) {\n return httpParams.append(key, value);\n }\n throw Error('key may not be null if value is not object or array');\n }\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpEvent, HttpContext } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n// @ts-ignore\nimport { BASE_PATH } from '../variables';\nimport { Configuration } from '../configuration';\nimport { BaseService } from '../api.base.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthProxyControllerService extends BaseService {\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration?: Configuration\n ) {\n super(basePath, configuration);\n }\n\n /**\n * @param jSESSIONID\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public destroySession(\n jSESSIONID?: string,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: undefined; context?: HttpContext; transferCache?: boolean }\n ): Observable<any>;\n public destroySession(\n jSESSIONID?: string,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: undefined; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<any>>;\n public destroySession(\n jSESSIONID?: string,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: undefined; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<any>>;\n public destroySession(\n jSESSIONID?: string,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: undefined; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept([]);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/authentication/v1/destroySession`;\n return this.httpClient.request<any>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * @param authorization\n * @param jSESSIONID\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public validateSession(\n authorization?: string,\n jSESSIONID?: string,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<string>;\n public validateSession(\n authorization?: string,\n jSESSIONID?: string,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<string>>;\n public validateSession(\n authorization?: string,\n jSESSIONID?: string,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<string>>;\n public validateSession(\n authorization?: string,\n jSESSIONID?: string,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n if (authorization !== undefined && authorization !== null) {\n localVarHeaders = localVarHeaders.set('Authorization', String(authorization));\n }\n\n // authentication (basicAuth) required\n localVarHeaders = this.configuration.addCredentialToHeaders(\n 'basicAuth',\n 'Authorization',\n localVarHeaders,\n 'Basic '\n );\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/authentication/v1/validateSession`;\n return this.httpClient.request<string>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpParams, HttpResponse, HttpEvent, HttpContext } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n// @ts-ignore\nimport { EduCollection } from '../model/eduCollection';\n// @ts-ignore\nimport { Filter } from '../model/filter';\n// @ts-ignore\nimport { MatrixWithCounts } from '../model/matrixWithCounts';\n// @ts-ignore\nimport { MissingAttributeResult } from '../model/missingAttributeResult';\n// @ts-ignore\nimport { QualityMatrix } from '../model/qualityMatrix';\n\n// @ts-ignore\nimport { BASE_PATH } from '../variables';\nimport { Configuration } from '../configuration';\nimport { BaseService } from '../api.base.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CollectionAPIService extends BaseService {\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration?: Configuration\n ) {\n super(basePath, configuration);\n }\n\n /**\n * Get collections where a specific attribute is missing\n * A list of collections where a certain attribute is missing or empty belonging to the collection and its sub-collections specified by &lt;code&gt;node_id&lt;/code&gt;. The &lt;code&gt;missingAttr&lt;/code&gt; parameter specifies the attribute that is missing in the materials. The List of possible keywords are: &lt;ul&gt; &lt;li&gt;without_description&lt;/li&gt; &lt;li&gt;without_tags&lt;/li&gt; &lt;li&gt;without_title&lt;/li&gt; &lt;li&gt;without_education_level&lt;/li&gt; &lt;/ul&gt; These values can be obtained from &lt;code&gt;/filters/collection/issues&lt;/code&gt;\n * @param collectionId\n * @param missingAttr\n * @param from\n * @param size\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getCollectionsWithMissingAttribute(\n collectionId: string,\n missingAttr: string,\n from?: number,\n size?: number,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<MissingAttributeResult>;\n public getCollectionsWithMissingAttribute(\n collectionId: string,\n missingAttr: string,\n from?: number,\n size?: number,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<MissingAttributeResult>>;\n public getCollectionsWithMissingAttribute(\n collectionId: string,\n missingAttr: string,\n from?: number,\n size?: number,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<MissingAttributeResult>>;\n public getCollectionsWithMissingAttribute(\n collectionId: string,\n missingAttr: string,\n from?: number,\n size?: number,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n if (collectionId === null || collectionId === undefined) {\n throw new Error(\n 'Required parameter collectionId was null or undefined when calling getCollectionsWithMissingAttribute.'\n );\n }\n if (missingAttr === null || missingAttr === undefined) {\n throw new Error(\n 'Required parameter missingAttr was null or undefined when calling getCollectionsWithMissingAttribute.'\n );\n }\n\n let localVarQueryParameters = new HttpParams({ encoder: this.encoder });\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>from, 'from');\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>size, 'size');\n\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/collections/${this.configuration.encodeParam({\n name: 'collectionId',\n value: collectionId,\n in: 'path',\n style: 'simple',\n explode: false,\n dataType: 'string',\n dataFormat: undefined,\n })}/pending-collections/${this.configuration.encodeParam({\n name: 'missingAttr',\n value: missingAttr,\n in: 'path',\n style: 'simple',\n explode: false,\n dataType: 'string',\n dataFormat: undefined,\n })}`;\n return this.httpClient.request<MissingAttributeResult>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n params: localVarQueryParameters,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get completeness matrix\n * Return matrix with count of material with issues for collections\n * @param collectionId\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getCompleteness(\n collectionId: string,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<MatrixWithCounts>;\n public getCompleteness(\n collectionId: string,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<MatrixWithCounts>>;\n public getCompleteness(\n collectionId: string,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<MatrixWithCounts>>;\n public getCompleteness(\n collectionId: string,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n if (collectionId === null || collectionId === undefined) {\n throw new Error('Required parameter collectionId was null or undefined when calling getCompleteness.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/collections/${this.configuration.encodeParam({\n name: 'collectionId',\n value: collectionId,\n in: 'path',\n style: 'simple',\n explode: false,\n dataType: 'string',\n dataFormat: undefined,\n })}/completeness`;\n return this.httpClient.request<MatrixWithCounts>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get number of search results using a search term\n * Returns count of materials using a given search term, optional OER filter and type filtering\n * @param term\n * @param oerOnly\n * @param type\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getCountBySearchTerm(\n term: string,\n oerOnly?: boolean,\n type?: string,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<number>;\n public getCountBySearchTerm(\n term: string,\n oerOnly?: boolean,\n type?: string,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<number>>;\n public getCountBySearchTerm(\n term: string,\n oerOnly?: boolean,\n type?: string,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<number>>;\n public getCountBySearchTerm(\n term: string,\n oerOnly?: boolean,\n type?: string,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n if (term === null || term === undefined) {\n throw new Error('Required parameter term was null or undefined when calling getCountBySearchTerm.');\n }\n\n let localVarQueryParameters = new HttpParams({ encoder: this.encoder });\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>term, 'term');\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>oerOnly, 'oerOnly');\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>type, 'type');\n\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/collections/material/search`;\n return this.httpClient.request<number>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n params: localVarQueryParameters,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get number of search results using a search term\n * Returns a map of type to material count using a given search term and optional OER filter\n * @param term\n * @param oerOnly\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getCountBySearchTermAggregatedByType(\n term: string,\n oerOnly?: boolean,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<{ [key: string]: number }>;\n public getCountBySearchTermAggregatedByType(\n term: string,\n oerOnly?: boolean,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<{ [key: string]: number }>>;\n public getCountBySearchTermAggregatedByType(\n term: string,\n oerOnly?: boolean,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<{ [key: string]: number }>>;\n public getCountBySearchTermAggregatedByType(\n term: string,\n oerOnly?: boolean,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n if (term === null || term === undefined) {\n throw new Error(\n 'Required parameter term was null or undefined when calling getCountBySearchTermAggregatedByType.'\n );\n }\n\n let localVarQueryParameters = new HttpParams({ encoder: this.encoder });\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>term, 'term');\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>oerOnly, 'oerOnly');\n\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/collections/v2/material/search`;\n return this.httpClient.request<{ [key: string]: number }>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n params: localVarQueryParameters,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get Material Count\n * Return a list of counts aggregated by collection and license )\n * @param collectionId\n * @param filter\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getMaterialCountMatrixByLicenseGroup1(\n collectionId: string,\n filter?: Array<Filter>,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<QualityMatrix>;\n public getMaterialCountMatrixByLicenseGroup1(\n collectionId: string,\n filter?: Array<Filter>,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<QualityMatrix>>;\n public getMaterialCountMatrixByLicenseGroup1(\n collectionId: string,\n filter?: Array<Filter>,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<QualityMatrix>>;\n public getMaterialCountMatrixByLicenseGroup1(\n collectionId: string,\n filter?: Array<Filter>,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n if (collectionId === null || collectionId === undefined) {\n throw new Error(\n 'Required parameter collectionId was null or undefined when calling getMaterialCountMatrixByLicenseGroup1.'\n );\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = ['application/json'];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n let localVarTransferCache: boolean | undefined = options && options.transferCache;\n if (localVarTransferCache === undefined) {\n localVarTransferCache = true;\n }\n\n // to determine the Content-Type header\n const consumes: string[] = ['application/json'];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/collections/${this.configuration.encodeParam({\n name: 'collectionId',\n value: collectionId,\n in: 'path',\n style: 'simple',\n explode: false,\n dataType: 'string',\n dataFormat: undefined,\n })}/licenses/materialCount`;\n return this.httpClient.request<QualityMatrix>('post', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n body: filter,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get material count by collection and type\n * Returns matrix with count of material for collections aggregated by material type\n * @param collectionId\n * @param oerOnly\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getMaterialCountMatrixPerCollection(\n collectionId: string,\n oerOnly?: boolean,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<QualityMatrix>;\n public getMaterialCountMatrixPerCollection(\n collectionId: string,\n oerOnly?: boolean,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<QualityMatrix>>;\n public getMaterialCountMatrixPerCollection(\n collectionId: string,\n oerOnly?: boolean,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<QualityMatrix>>;\n public getMaterialCountMatrixPerCollection(\n collectionId: string,\n oerOnly?: boolean,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n if (collectionId === null || collectionId === undefined) {\n throw new Error(\n 'Required parameter collectionId was null or undefined when calling getMaterialCountMatrixPerCollection.'\n );\n }\n\n let localVarQueryParameters = new HttpParams({ encoder: this.encoder });\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>oerOnly, 'oerOnly');\n\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/collections/${this.configuration.encodeParam({\n name: 'collectionId',\n value: collectionId,\n in: 'path',\n style: 'simple',\n explode: false,\n dataType: 'string',\n dataFormat: undefined,\n })}/materialCount`;\n return this.httpClient.request<QualityMatrix>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n params: localVarQueryParameters,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get materials where a specific attribute is missing\n * A list of materials where a certain attribute is missing or empty belonging to the collection and its sub-collections specified by &lt;code&gt;node_id&lt;/code&gt;. The &lt;code&gt;missingAttr&lt;/code&gt; parameter specifies the attribute that is missing in the materials. The List of possible keywords are: &lt;ul&gt; &lt;li&gt; without_description&lt;/li&gt; &lt;li&gt;without_target_group&lt;/li&gt; &lt;li&gt;without_title&lt;/li&gt; &lt;li&gt;without_education_level&lt;/li&gt; &lt;li&gt;without_license&lt;/li&gt; &lt;li&gt;without_category&lt;/li&gt; &lt;li&gt;without_taxonomy_id&lt;/li&gt; &lt;li&gt;without_publisher&lt;/li&gt; &lt;/ul&gt; These values can be obtained from &lt;code&gt;/filters/material/issues&lt;/code&gt;\n * @param nodeId\n * @param missingAttr\n * @param from\n * @param size\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getMaterialsWithMissingAttribute(\n nodeId: string,\n missingAttr: string,\n from?: number,\n size?: number,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<MissingAttributeResult>;\n public getMaterialsWithMissingAttribute(\n nodeId: string,\n missingAttr: string,\n from?: number,\n size?: number,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<MissingAttributeResult>>;\n public getMaterialsWithMissingAttribute(\n nodeId: string,\n missingAttr: string,\n from?: number,\n size?: number,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<MissingAttributeResult>>;\n public getMaterialsWithMissingAttribute(\n nodeId: string,\n missingAttr: string,\n from?: number,\n size?: number,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n if (nodeId === null || nodeId === undefined) {\n throw new Error('Required parameter nodeId was null or undefined when calling getMaterialsWithMissingAttribute.');\n }\n if (missingAttr === null || missingAttr === undefined) {\n throw new Error(\n 'Required parameter missingAttr was null or undefined when calling getMaterialsWithMissingAttribute.'\n );\n }\n\n let localVarQueryParameters = new HttpParams({ encoder: this.encoder });\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>from, 'from');\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>size, 'size');\n\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/collections/${this.configuration.encodeParam({\n name: 'nodeId',\n value: nodeId,\n in: 'path',\n style: 'simple',\n explode: false,\n dataType: 'string',\n dataFormat: undefined,\n })}/pending-materials/${this.configuration.encodeParam({\n name: 'missingAttr',\n value: missingAttr,\n in: 'path',\n style: 'simple',\n explode: false,\n dataType: 'string',\n dataFormat: undefined,\n })}`;\n return this.httpClient.request<MissingAttributeResult>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n params: localVarQueryParameters,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get all top-level collections\n * Returns id and name of all top-level collections.\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getTopLevelCollection(\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<Array<EduCollection>>;\n public getTopLevelCollection(\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<Array<EduCollection>>>;\n public getTopLevelCollection(\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<Array<EduCollection>>>;\n public getTopLevelCollection(\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/collections`;\n return this.httpClient.request<Array<EduCollection>>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpEvent, HttpContext } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n// @ts-ignore\nimport { Filter } from '../model/filter';\n// @ts-ignore\nimport { MaterialCountDto } from '../model/materialCountDto';\n// @ts-ignore\nimport { MaterialCountFilter } from '../model/materialCountFilter';\n// @ts-ignore\nimport { MatrixWithCounts } from '../model/matrixWithCounts';\n\n// @ts-ignore\nimport { BASE_PATH } from '../variables';\nimport { Configuration } from '../configuration';\nimport { BaseService } from '../api.base.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EditorsAPIService extends BaseService {\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration?: Configuration\n ) {\n super(basePath, configuration);\n }\n\n /**\n * Get completeness matrix for disciplinary portals\n * Return matrix with count of material with issues for all disciplinary portals\n * @param filter\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getCompletenessForDisciplinaryPortals(\n filter?: Array<Filter>,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<MatrixWithCounts>;\n public getCompletenessForDisciplinaryPortals(\n filter?: Array<Filter>,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<MatrixWithCounts>>;\n public getCompletenessForDisciplinaryPortals(\n filter?: Array<Filter>,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<MatrixWithCounts>>;\n public getCompletenessForDisciplinaryPortals(\n filter?: Array<Filter>,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n // to determine the Content-Type header\n const consumes: string[] = ['application/json'];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/editors/completeness`;\n return this.httpClient.request<MatrixWithCounts>('post', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n body: filter,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get Material Count\n * Return a list of counts aggregated by discipline )\n * @param materialCountFilter\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getMaterialCount(\n materialCountFilter: MaterialCountFilter,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<Array<MaterialCountDto>>;\n public getMaterialCount(\n materialCountFilter: MaterialCountFilter,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<Array<MaterialCountDto>>>;\n public getMaterialCount(\n materialCountFilter: MaterialCountFilter,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<Array<MaterialCountDto>>>;\n public getMaterialCount(\n materialCountFilter: MaterialCountFilter,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n if (materialCountFilter === null || materialCountFilter === undefined) {\n throw new Error('Required parameter materialCountFilter was null or undefined when calling getMaterialCount.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n // to determine the Content-Type header\n const consumes: string[] = ['application/json'];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/editors/materialCount`;\n return this.httpClient.request<Array<MaterialCountDto>>('post', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n body: materialCountFilter,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get Material Count\n * Return a list of counts aggregated by discipline and license )\n * @param filter\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getMaterialCountMatrixByLicenseGroup(\n filter?: Array<Filter>,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<MatrixWithCounts>;\n public getMaterialCountMatrixByLicenseGroup(\n filter?: Array<Filter>,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<MatrixWithCounts>>;\n public getMaterialCountMatrixByLicenseGroup(\n filter?: Array<Filter>,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<MatrixWithCounts>>;\n public getMaterialCountMatrixByLicenseGroup(\n filter?: Array<Filter>,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n // to determine the Content-Type header\n const consumes: string[] = ['application/json'];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/editors/licenses/materialCount`;\n return this.httpClient.request<MatrixWithCounts>('post', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n body: filter,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpEvent, HttpContext } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n// @ts-ignore\nimport { Filter } from '../model/filter';\n\n// @ts-ignore\nimport { BASE_PATH } from '../variables';\nimport { Configuration } from '../configuration';\nimport { BaseService } from '../api.base.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FilterAPIService extends BaseService {\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration?: Configuration\n ) {\n super(basePath, configuration);\n }\n\n /**\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getCollectionIssueFieldNames(\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<Array<string>>;\n public getCollectionIssueFieldNames(\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<Array<string>>>;\n public getCollectionIssueFieldNames(\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<Array<string>>>;\n public getCollectionIssueFieldNames(\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/filters/collection/issues`;\n return this.httpClient.request<Array<string>>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getHistoricalTimerange(\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<Array<Filter>>;\n public getHistoricalTimerange(\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<Array<Filter>>>;\n public getHistoricalTimerange(\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<Array<Filter>>>;\n public getHistoricalTimerange(\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/filters/timerange`;\n return this.httpClient.request<Array<Filter>>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getMaterialIssueFieldNames(\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<Array<string>>;\n public getMaterialIssueFieldNames(\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<Array<string>>>;\n public getMaterialIssueFieldNames(\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<Array<string>>>;\n public getMaterialIssueFieldNames(\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/filters/material/issues`;\n return this.httpClient.request<Array<string>>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get Material Types\n * Returns a map of http://w3id.org/openeduhub/vocabs/new_lrt_aggregated/ material types to their corresponding http://w3id.org/openeduhub/vocabs/new_lrt types\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getMaterialTypesMapping(\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<{ [key: string]: Array<string> }>;\n public getMaterialTypesMapping(\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<{ [key: string]: Array<string> }>>;\n public getMaterialTypesMapping(\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<{ [key: string]: Array<string> }>>;\n public getMaterialTypesMapping(\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/filters/material/types`;\n return this.httpClient.request<{ [key: string]: Array<string> }>(\n 'get',\n `${this.configuration.basePath}${localVarPath}`,\n {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n }\n );\n }\n\n /**\n * Get Public Endpoints\n * Returns a list of all public endpoints that are allowed for guests\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getPublicEndpoints(\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<Array<string>>;\n public getPublicEndpoints(\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<Array<string>>>;\n public getPublicEndpoints(\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<Array<string>>>;\n public getPublicEndpoints(\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = ['application/json'];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n let localVarTransferCache: boolean | undefined = options && options.transferCache;\n if (localVarTransferCache === undefined) {\n localVarTransferCache = true;\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/filters/public_endpoints`;\n return this.httpClient.request<Array<string>>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getQualitxMatrixFilters(\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<Array<Filter>>;\n public getQualitxMatrixFilters(\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<Array<Filter>>>;\n public getQualitxMatrixFilters(\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<Array<Filter>>>;\n public getQualitxMatrixFilters(\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/filters`;\n return this.httpClient.request<Array<Filter>>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpEvent, HttpContext } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n// @ts-ignore\nimport { Filter } from '../model/filter';\n// @ts-ignore\nimport { MatrixWithCounts } from '../model/matrixWithCounts';\n// @ts-ignore\nimport { QualityMatrix } from '../model/qualityMatrix';\n\n// @ts-ignore\nimport { BASE_PATH } from '../variables';\nimport { Configuration } from '../configuration';\nimport { BaseService } from '../api.base.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReplicationSourceAPIService extends BaseService {\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration?: Configuration\n ) {\n super(basePath, configuration);\n }\n\n /**\n * Get completeness matrix for replication sources\n * Return matrix with count of material with issues for all replication sources\n * @param filter\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getCompletenessForReplicationSources(\n filter?: Array<Filter>,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<MatrixWithCounts>;\n public getCompletenessForReplicationSources(\n filter?: Array<Filter>,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<MatrixWithCounts>>;\n public getCompletenessForReplicationSources(\n filter?: Array<Filter>,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<MatrixWithCounts>>;\n public getCompletenessForReplicationSources(\n filter?: Array<Filter>,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n // to determine the Content-Type header\n const consumes: string[] = ['application/json'];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/v2/replication-sources/completeness`;\n return this.httpClient.request<MatrixWithCounts>('post', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n body: filter,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get material count by replication source and license\n * Returns matrix with count of material for replication source aggregated by license group\n * @param filter\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getMaterialCountMatrixByReplicationSourceAndLicense(\n filter?: Array<Filter>,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<MatrixWithCounts>;\n public getMaterialCountMatrixByReplicationSourceAndLicense(\n filter?: Array<Filter>,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<MatrixWithCounts>>;\n public getMaterialCountMatrixByReplicationSourceAndLicense(\n filter?: Array<Filter>,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<MatrixWithCounts>>;\n public getMaterialCountMatrixByReplicationSourceAndLicense(\n filter?: Array<Filter>,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n // to determine the Content-Type header\n const consumes: string[] = ['application/json'];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/v2/replication-sources/licenses/materialCount`;\n return this.httpClient.request<MatrixWithCounts>('post', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n body: filter,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get material count by replication source and type\n * Returns matrix with count of material for replication source aggregated by material type\n * @param filter\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getMaterialCountMatrixByReplicationSourceAndType(\n filter?: Array<Filter>,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<MatrixWithCounts>;\n public getMaterialCountMatrixByReplicationSourceAndType(\n filter?: Array<Filter>,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<MatrixWithCounts>>;\n public getMaterialCountMatrixByReplicationSourceAndType(\n filter?: Array<Filter>,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<MatrixWithCounts>>;\n public getMaterialCountMatrixByReplicationSourceAndType(\n filter?: Array<Filter>,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n // to determine the Content-Type header\n const consumes: string[] = ['application/json'];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/v2/replication-sources/types/materialCount`;\n return this.httpClient.request<MatrixWithCounts>('post', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n body: filter,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get Quality Matrix Timestamp V2\n * Return the quality matrix for the given filters grouped by replication source (as columns) for the given timestamp\n * @param filter\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getQualityMatrixTimestampsV2(\n filter?: Array<Filter>,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<QualityMatrix>;\n public getQualityMatrixTimestampsV2(\n filter?: Array<Filter>,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<QualityMatrix>>;\n public getQualityMatrixTimestampsV2(\n filter?: Array<Filter>,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<QualityMatrix>>;\n public getQualityMatrixTimestampsV2(\n filter?: Array<Filter>,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n // to determine the Content-Type header\n const consumes: string[] = ['application/json'];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/v2/replication-sources/quality-matrix/timestamps`;\n return this.httpClient.request<QualityMatrix>('post', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n body: filter,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get Quality Matrix V2\n * Return the quality matrix for the given filters grouped by replication source (as columns)\n * @param filter\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getQualityMatrixV2(\n filter?: Array<Filter>,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<QualityMatrix>;\n public getQualityMatrixV2(\n filter?: Array<Filter>,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<QualityMatrix>>;\n public getQualityMatrixV2(\n filter?: Array<Filter>,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<QualityMatrix>>;\n public getQualityMatrixV2(\n filter?: Array<Filter>,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n // to determine the Content-Type header\n const consumes: string[] = ['application/json'];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/v2/replication-sources/quality-matrix`;\n return this.httpClient.request<QualityMatrix>('post', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n body: filter,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n}\n","export * from './authProxyController.service';\nimport { AuthProxyControllerService } from './authProxyController.service';\nexport * from './collectionAPI.service';\nimport { CollectionAPIService } from './collectionAPI.service';\nexport * from './editorsAPI.service';\nimport { EditorsAPIService } from './editorsAPI.service';\nexport * from './filterAPI.service';\nimport { FilterAPIService } from './filterAPI.service';\nexport * from './replicationSourceAPI.service';\nimport { ReplicationSourceAPIService } from './replicationSourceAPI.service';\nexport const APIS = [AuthProxyControllerService, CollectionAPIService, EditorsAPIService, FilterAPIService, ReplicationSourceAPIService];\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport interface CollectionWithMissingAttributes {\n title?: string;\n description?: string;\n node_id?: string;\n properties?: { [key: string]: string };\n nodeRef?: { [key: string]: string };\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport interface Count {\n date: string;\n count: number;\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport interface EduCollection {\n id: string;\n label: string;\n level: number;\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport interface FilterValue {\n id: string;\n label: string;\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport interface MaterialCountFilter {\n startDate?: string;\n endDate?: string;\n granularity?: string;\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport interface MaterialWithMissingAttributes {\n title?: string;\n description?: Array<string>;\n node_id?: string;\n properties?: { [key: string]: object };\n nodeRef?: { [key: string]: string };\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport interface QualityMatrixHeader {\n id: string;\n label: string;\n altLabel: string;\n level: number;\n total: number;\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport interface QualityMatrixReplicationSourceCounts {\n sufficient: number;\n insufficient: number;\n}\n","import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';\nimport { Configuration } from './configuration';\nimport { HttpClient } from '@angular/common/http';\n\n@NgModule({\n imports: [],\n declarations: [],\n exports: [],\n providers: [],\n})\nexport class ApiModule {\n public static forRoot(configurationFactory: () => Configuration): ModuleWithProviders<ApiModule> {\n return {\n ngModule: ApiModule,\n providers: [{ provide: Configuration, useFactory: configurationFactory }],\n };\n }\n\n constructor(@Optional() @SkipSelf() parentModule: ApiModule, @Optional() http: HttpClient) {\n if (parentModule) {\n throw new Error('ApiModule is already loaded. Import in your base AppModule only.');\n }\n if (!http) {\n throw new Error(\n 'You need to import the HttpClientModule in your AppModule! \\n' +\n 'See also https://github.com/angular/angular/issues/20575'\n );\n }\n }\n}\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\n\nexport class NgMetaWidgetsLibConfiguration {\n apiPath: string;\n eduSharingPath: string;\n}\n\nexport const NG_META_WIDGETS_LIB_CONFIGURATION = new InjectionToken<NgMetaWidgetsLibConfiguration>(\n 'NG_META_WIDGETS_LIB_CONFIGURATION'\n);\n\n/**\n * helper class to provide configuration values\n */\n@Injectable()\nexport class ConfigHelperService implements ConfigHelper {\n constructor(@Inject(NG_META_WIDGETS_LIB_CONFIGURATION) public config: NgMetaWidgetsLibConfiguration) {\n // apply api path given in window url\n }\n\n public patchConfig(config: Partial<NgMetaWidgetsLibConfiguration>) {\n this.config = { ...this.config, ...config };\n }\n\n public get apiPath() {\n return this.config.apiPath;\n }\n\n public get eduSharingPath() {\n return this.config.eduSharingPath;\n }\n}\n\nexport interface ConfigHelper {\n get apiPath(): string;\n\n get eduSharingPath(): string;\n\n patchConfig(config: Partial<NgMetaWidgetsLibConfiguration>): void;\n}\n","import { Component, input, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { FilterValue } from '../../java-api';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatOption, MatSelect } from '@angular/material/select';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n/**\n * This component wraps a mat-select.\n * It's options are populatated from the [options] @Input\n * The label is populated from the [label] @Input\n *\n * You may either provide a FormControl ( which you are tracking )\n * or you can subscribe to the (changedFilters) output.\n */\n@Component({\n selector: 'metaqs2-qm-filter',\n templateUrl: './quality-matrix-filter.component.html',\n styleUrl: './quality-matrix-filter.component.scss',\n standalone: true,\n imports: [MatFormField, MatSelect, ReactiveFormsModule, MatOption, MatLabel],\n})\nexport class QualityMatrixFilterComponent {\n @Input()\n options: FilterValue[] | undefined | null;\n @Input()\n //must not be named \"formControl\" otherwise we would have to implement ControlValueAccessor\n inputFormControl = new FormControl();\n label = input<string>();\n multiple = input<boolean>(true);\n changedFilters = outputFromObservable(this.inputFormControl.valueChanges);\n}\n","<mat-form-field appearance=\"outline\">\n <mat-label>Filter by {{ label() }}</mat-label>\n <mat-select\n [multiple]=\"multiple()\"\n [formControl]=\"inputFormControl\"\n >\n @for( option of options ; track option.id ) {\n <mat-option [value]=\"option.id\"> {{ option.label }} </mat-option>\n }\n </mat-select>\n</mat-form-field>\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport {\n CollectionAPIService,\n EditorsAPIService,\n EduCollection,\n Filter,\n FilterAPIService,\n MaterialCountFilter,\n MatrixWithCounts,\n QualityMatrix,\n ReplicationSourceAPIService,\n} from './java-api';\nimport { map, take } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\n/**\n * This class is a thin wrapper around the API services.\n */\nexport class MetaApiService {\n constructor(\n private collectionsAPI: CollectionAPIService,\n private replicationsAPI: ReplicationSourceAPIService,\n private filterAPI: FilterAPIService,\n private editorsAPI: EditorsAPIService\n ) {}\n\n /**\n * Get the filters for the quality matrix.\n * It pipes the observable to take only one value.\n */\n public getSearchFilters(): Observable<Filter[]> {\n return this.filterAPI.getQualitxMatrixFilters().pipe(take(1));\n }\n public getCategoryFilters(): Observable<Filter[]> {\n return this.getSearchFilters().pipe(map((filters) => filters.filter((filter) => filter.field !== 'timerange')));\n }\n public getCollectionsFilter(): Observable<Array<EduCollection>> {\n return this.collectionsAPI.getTopLevelCollection();\n }\n /**\n * Get the timerange filter for the quality matrix.\n * Returns the first filter of the historical timerange filters.\n */\n public getTimerangeFilter(): Observable<Filter | undefined> {\n return this.filterAPI.getHistoricalTimerange().pipe(\n take(1),\n map((filters) => filters[0])\n );\n }\n\n getMaterialCountMatrixPerCollection(nodeRef: string, oerOnly?: boolean): Observable<QualityMatrix> {\n return this.collectionsAPI.getMaterialCountMatrixPerCollection(nodeRef, oerOnly);\n }\n\n getCollectionCompleteness(colId: string): Observable<MatrixWithCounts> {\n return this.collectionsAPI.getCompleteness(colId);\n }\n\n getQualityMatrixWithFiltersV2(body: Array<Filter>) {\n return this.replicationsAPI.getQualityMatrixV2(body);\n }\n\n getEditorialMaterialCounts(body: MaterialCountFilter) {\n return this.editorsAPI.getMaterialCount(body);\n }\n\n getMaterialTypeCountsByReplicationSource(body: Filter[]) {\n return this.replicationsAPI.getMaterialCountMatrixByReplicationSourceAndType(body);\n }\n\n getLicenseCountsByReplicationSource(body: Filter[]) {\n return this.replicationsAPI.getMaterialCountMatrixByReplicationSourceAndLicense(body);\n }\n\n getLicenseCountsByLicenseGroup(colId: string, filters: Filter[]): Observable<QualityMatrix> {\n return this.collectionsAPI.getMaterialCountMatrixByLicenseGroup1(colId, filters);\n }\n\n getMaterialCountMatrixByLicenseGroup(body: Filter[]) {\n return this.editorsAPI.getMaterialCountMatrixByLicenseGroup(body);\n }\n\n getCompletenessForDisciplinaryPortals(body: Filter[]) {\n return this.editorsAPI.getCompletenessForDisciplinaryPortals(body);\n }\n\n getCompletenessForReplicationSources(body: Filter[]) {\n return this.replicationsAPI.getCompletenessForReplicationSources(body);\n }\n\n getMaterialTypesMapping() {\n return this.filterAPI.getMaterialTypesMapping();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { inject } from '@angular/core';\nimport { ConfigHelperService } from '../../config-helper.service';\nimport { MetaApiService } from '../../meta-api.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n/**\n * This service provides methods to create links to the editorial desk with specific filters.\n */\n/* This map makes it easier for me to keep track which issues are mapped to which filters */\nconst FilterNames2Issues: { [key: string]: string[] } = {\n //Lizenzen\n 'virtual:editorial_license': ['oer', 'other_cc', 'copyright', 'without_license'],\n //Materialtypen werden im Constructor gesetzt\n 'virtual:oeh_lrt': [],\n 'virtual:editorial_exclusion': [\n 'outdated',\n 'without_preview',\n 'without_title',\n 'without_description',\n 'without_url',\n 'without_type',\n 'without_taxonomy_id',\n 'without_education_level',\n 'without_target_group',\n 'without_license',\n 'without_publisher',\n ],\n};\n// Here we map back the issues to the filter names in the editorial desk, so we can look up the filter name for a given issue\nconst Issues2FilterNames: Map<string, string> = Object.entries(FilterNames2Issues).reduce((map, [key, value]) => {\n value.forEach((issue) => map.set(issue, key));\n return map;\n}, new Map<string, string>());\n\n// maps our values to the values of the filter in the editorial desk\nconst MapValuesForFilter: { [key: string]: { [key: string]: string[] | null } } = {\n 'virtual:editorial_exclusion': {\n outdated: null,\n without_preview: null,\n without_title: ['missing_title'],\n without_description: ['missing_description'],\n without_url: ['links'],\n without_type: ['missing_oeh_lrt'],\n without_taxonomy_id: ['without_taxonomy_id'],\n without_education_level: ['missing_educationalcontext'],\n without_target_group: ['missing_educationalintendedenduserrole'],\n without_license: ['missing_license'],\n without_publisher: ['missing_replicationsource'],\n },\n 'virtual:editorial_license': {\n oer: ['oer'],\n copyright: ['none_oer'],\n without_license: ['none'],\n },\n 'virtual:oeh_lrt': {},\n};\n\n/*\nThis is a map from properties of a document to filter names\n */\nconst PROPERTIES2FILTERS = new Map<string, string>([\n ['metadata.educationalContexts', 'ccm:educationalcontext'],\n ['metadata.disciplines', 'virtual:taxonid'],\n //[\"responsibility\", \"virtual:collection_id_primary\"] // das zeigt auf \"sammlungszugehörigkeit\" und ist falsch\n]);\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EditorialLinkService {\n private env = inject(ConfigHelperService);\n private api = inject(MetaApiService);\n public typesLoaded$ = new BehaviorSubject(false);\n\n constructor() {\n this.api\n .getMaterialTypesMapping()\n .pipe(take(1))\n .subscribe((types) => {\n for (const [key, value] of Object.entries(types)) {\n Issues2FilterNames.set(key, 'virtual:oeh_lrt');\n MapValuesForFilter['virtual:oeh_lrt'][key] = value;\n }\n this.typesLoaded$.next(true);\n });\n }\n\n public openByReplicationsourceAndIssueTypeWithFilters(\n source: string,\n issue: string,\n selectedFilters: { [key: string]: string[] | undefined }\n ): void {\n const filters: any = {};\n filters['virtual:audit_filter'] = ['all'];\n filters['ccm:oeh_publisher_combined'] = [source];\n filters['virtual:editorial_exclusion'] = MapValuesForFilter['virtual:editorial_exclusion'][issue];\n for (const [field, values] of Object.entries(selectedFilters)) {\n if (values && values.length) {\n const editorialFiltername = PROPERTIES2FILTERS.get(field) as string;\n filters[editorialFiltername] = values;\n }\n }\n\n const theUrl: string = this.env.eduSharingPath + '/components/editorial-desk';\n const params = new URLSearchParams();\n params.set('mode', 'audit');\n params.set('filters', JSON.stringify(filters));\n window.open(`${theUrl}?${params}`, 'editor_frontend');\n }\n\n public openByCollectionAndIssueType(collectionId: string, issueType: string, pageTitle: string): void {\n const filters: any = {};\n filters['virtual:audit_filter'] = ['all'];\n filters['virtual:editorial_exclusion'] = MapValuesForFilter['virtual:editorial_exclusion'][issueType];\n filters['virtual:collection_id_primary'] = [collectionId];\n const theUrl: string = this.env.eduSharingPath + '/components/editorial-desk';\n const params = new URLSearchParams();\n params.set('title', pageTitle);\n params.set('mode', 'audit');\n // this provides information to the editorial desk that any global group filter needs to be reset for this query\n params.set('resetGroup', 'true');\n params.set('filters', JSON.stringify(filters));\n window.open(`${theUrl}?${params}`, 'editor_frontend');\n }\n\n public openByCollectionId(collectionId: string): void {\n const theUrl: string = this.env.eduSharingPath + '/components/editorial-desk';\n const params = new URLSearchParams();\n params.set('ids', collectionId);\n params.set('mode', 'render');\n window.open(`${theUrl}?${params}`, 'editor_frontend');\n }\n\n /**\n * This method creates a link to the editorial desk with specific filters.\n * It returns the URL to the editorial desk with the filters applied or null if the issueId is not mapped to a filter.\n * With this we can render a link with an href attribute to the editorial desk in the frontend.\n * @see the counts-with-history.component.scss how we style links only if their hrefs are not null\n *\n * @param sourceType The type of the source, e.g. \"replicationSource\" or \"collection\"\n * @param sourceId The id of the source. This is the first column in the table.\n * @param issueId The id of the issue. These are the other columns in the table.\n */\n public createLinkForCountsWithHistory(sourceType: string, sourceId: string, issueId: string): string | null {\n const filters: { [key: string]: string[] } = {};\n filters['virtual:audit_filter'] = ['all'];\n // determine the \"main\" filter\n if (sourceType === 'replicationSource') {\n filters['ccm:oeh_publisher_combined'] = [sourceId];\n } else if (sourceType === 'collection') {\n filters['virtual:collection_id_primary'] = [sourceId];\n }\n if (!Issues2FilterNames.has(issueId)) {\n return null;\n }\n const filterName = Issues2FilterNames.get(issueId);\n if (!filterName) {\n // console.debug(\"No filter name found for issue id: \" + issueId);\n return null;\n }\n const filterValue = MapValuesForFilter[filterName][issueId];\n if (!filterValue) {\n // console.debug(\"No filter value found for issue id: \" + issueId);\n return null;\n }\n filters[filterName] = filterValue;\n\n const theUrl: string = this.env.eduSharingPath + '/components/editorial-desk';\n const params = new URLSearchParams();\n params.set('mode', 'audit');\n params.set('filters', JSON.stringify(filters));\n return `${theUrl}?${params}`;\n }\n}\n","import { ComponentRef, inject, Injectable, InjectionToken, Injector, Renderer2, Type } from '@angular/core';\nimport { ConnectedPosition, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\n\nexport const TOOLTIP_DATA = new InjectionToken<unknown>('TOOLTIP_DATA');\nexport const TOOLTIP_REF = new InjectionToken<TooltipRef<unknown>>('TOOLTIP_REF');\n\nexport interface TooltipRef<T> {\n markForClose(): void;\n cancelCloseAction(): void;\n\n readonly overlay: OverlayRef;\n readonly component: ComponentRef<T> | undefined;\n\n open(): void;\n}\n\nconst noop = Object.freeze(() => {});\n\n/**\n * @internal\n */\nexport class TooltipRefImpl<T> implements TooltipRef<T> {\n public openTimeoutRef: number | undefined;\n public closeTimeoutRef: number | undefined;\n public component: ComponentRef<T>;\n private unlistenMouseEnter: () => void | undefined;\n private unlistenMouseLeave: () => void | undefined;\n public portal: ComponentPortal<T>;\n\n public constructor(\n private readonly renderer: Renderer2,\n public readonly overlay: OverlayRef,\n private readonly openTimeout = 0,\n private readonly closeTimeout = 0,\n private readonly onOpen = noop,\n private readonly onClose = noop\n ) {}\n\n public cancelCloseAction(): void {\n clearTimeout(this.closeTimeoutRef);\n this.closeTimeoutRef = undefined;\n }\n\n public open() {\n this.openTimeoutRef = setTimeout(this.openTooltip.bind(this), this.openTimeout) as unknown as number; // typescript bug (typescript mistakenly uses NodeJS.Timeout instead of number as return type of setTimeout)\n }\n\n public openTooltip() {\n this.openTimeoutRef = undefined;\n this.component = this.overlay.attach(this.portal);\n this.unlistenMouseEnter = this.renderer.listen(\n this.overlay.overlayElement,\n 'mouseenter',\n this.cancelCloseAction.bind(this)\n );\n this.unlistenMouseLeave = this.renderer.listen(\n this.overlay.overlayElement,\n 'mouseleave',\n this.markForClose.bind(this)\n );\n this.onOpen();\n }\n\n public markForClose(): void {\n if (this.openTimeoutRef) {\n // not yet opened, cancel open action\n clearTimeout(this.openTimeoutRef);\n this.openTimeoutRef = undefined;\n return;\n }\n if (this.closeTimeoutRef) {\n // already marked for close\n return;\n }\n this.closeTimeoutRef = setTimeout(this.closeTooltip.bind(this), this.closeTimeout) as unknown as number; // typescript bug (typescript mistakenly uses NodeJS.Timeout instead of number as return type of setTimeout)\n }\n\n public closeTooltip() {\n this.overlay.detach();\n this.onClose();\n this.closeTimeoutRef = undefined;\n this.unlistenMouseEnter?.();\n this.unlistenMouseLeave?.();\n }\n}\n\nexport const centerPositionStrategy: Array<ConnectedPosition> = [\n {\n originX: 'center',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'center',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'center',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'center',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n];\n\nexport const borderPositionStrategy: Array<ConnectedPosition> = [\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n];\n\n// generic argument T is necessary for typescript to check the data passed to the config\nexport type DataTooltipHelper<T> = {\n // this is a workaround to make typescript differentiate between DataTooltipHelper and unknown\n [key in never]: T;\n};\n\nexport interface DataTooltip<T> extends DataTooltipHelper<T> {}\n\ntype DataTypeOfTooltip<T> = T extends DataTooltip<infer U> ? U : never;\n\nexport interface TooltipConfig<TData> {\n injector?: Injector;\n closeTimeout?: number;\n openTimeout?: number;\n data: TData;\n onClose?: () => void;\n onOpen?: () => void;\n overlayConfig?: OverlayConfig;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TooltipService {\n private readonly overlay = inject(Overlay);\n private readonly renderer = inject(Renderer2);\n\n public create<TComponent extends DataTooltip<DataTypeOfTooltip<TComponent>>>(\n component: Type<TComponent>,\n config: TooltipConfig<DataTypeOfTooltip<TComponent>>\n ): TooltipRef<TComponent> {\n const overlayRef = this.overlay.create(\n config.overlayConfig ?? {\n hasBackdrop: false,\n disposeOnNavigation: true,\n }\n );\n\n const tooltipRef = new TooltipRefImpl<TComponent>(\n this.renderer,\n overlayRef,\n config.openTimeout ?? 0,\n config.closeTimeout ?? 0,\n config.onOpen ?? noop,\n config.onClose ?? noop\n );\n tooltipRef.portal = new ComponentPortal(\n component,\n null,\n Injector.create({\n providers: [\n {\n provide: OverlayRef,\n useValue: overlayRef,\n },\n {\n provide: TOOLTIP_DATA,\n useValue: config.data,\n },\n {\n provide: TOOLTIP_REF,\n useValue: tooltipRef,\n },\n ],\n parent: config.injector,\n })\n );\n\n return tooltipRef;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DonutSlice } from './donut-chart.model';\n\ninterface DonutSliceWithCommands extends DonutSlice {\n offset: number;\n commands: string;\n}\n\n@Pipe({\n name: 'slicesWithCommandsAndOffset',\n pure: true,\n standalone: true,\n})\nexport class DonutChartPipe implements PipeTransform {\n transform(donutSlices: DonutSlice[], radius: number, svgSize: number, borderSize: number): DonutSliceWithCommands[] {\n let previousPercent = 0;\n return donutSlices.map((slice) => {\n // this is a hack to that the circle is rendered when the percent is 100\n slice.percent = slice.percent === 100 ? 99.999 : slice.percent;\n const sliceWithCommands: DonutSliceWithCommands = {\n ...slice,\n commands: `${this.getSliceCommands(slice, radius, svgSize, borderSize)} z`,\n offset: previousPercent * 3.6 * -1,\n };\n previousPercent += slice.percent;\n return sliceWithCommands;\n });\n }\n\n getSliceCommands(donutSlice: DonutSlice, radius: number, svgSize: number, borderSize: number): string {\n const degrees = this.percentToDegrees(donutSlice.percent);\n const longPathFlag = degrees > 180 ? 1 : 0;\n const innerRadius = radius - borderSize;\n\n const commands: string[] = [];\n commands.push(`M ${svgSize / 2 + radius} ${svgSize / 2}`);\n commands.push(`A ${radius} ${radius} 0 ${longPathFlag} 0 ${this.getCoordFromDegrees(degrees, radius, svgSize)}`);\n commands.push(`L ${this.getCoordFromDegrees(degrees, innerRadius, svgSize)}`);\n commands.push(`A ${innerRadius} ${innerRadius} 0 ${longPathFlag} 1 ${svgSize / 2 + innerRadius} ${svgSize / 2}`);\n return commands.join(' ');\n }\n\n getCoordFromDegrees(angle: number, radius: number, svgSize: number): string {\n const x = Math.cos((angle * Math.PI) / 180);\n const y = Math.sin((angle * Math.PI) / 180);\n const coordX = x * radius + svgSize / 2;\n const coordY = y * -radius + svgSize / 2;\n return `${coordX} ${coordY}`;\n }\n\n percentToDegrees(percent: number): number {\n return percent * 3.6;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { DonutSlice } from './donut-chart.model';\nimport { DonutChartPipe } from './donut-chart.pipe';\nimport { NgForOf, NgIf } from '@angular/common';\n\n/**\n * A donut chart component that displays a list of slices.\n * The chart is divided into slices, each slice has a color and a label.\n * Each slice is represented by a percentage of the total chart.\n * borrowed from https://medium.com/@theAngularGuy/how-to-create-an-interactive-donut-chart-using-svg-107cbf0b5b6\n */\n@Component({\n selector: 'metaqs2-donut-chart',\n styleUrls: ['./donut-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg [attr.viewBox]=\"'0 0 ' + viewBox + ' ' + viewBox\" *ngIf=\"data\">\n <path\n *ngFor=\"\n let slice of data | slicesWithCommandsAndOffset : radius : viewBox : borderSize;\n trackBy: trackByFn;\n let index = index\n \"\n [attr.fill]=\"slice.color\"\n stroke=\"white\"\n paint-order=\"stroke\"\n stroke-opacity=\"1\"\n [attr.stroke-width]=\"strokeWidth\"\n [attr.d]=\"slice.commands\"\n [attr.transform]=\"'rotate(' + slice.offset + ')'\"\n (click)=\"slice.onClickCb?.()\"\n >\n <title>{{ slice.label }}</title>\n </path>\n </svg>\n `,\n imports: [DonutChartPipe, NgForOf, NgIf],\n standalone: true,\n})\nexport class DonutChartComponent implements OnInit {\n @Input() radius = 50;\n @Input() viewBox = 100;\n @Input() borderSize = 20;\n @Input() strokeWidth = 5;\n @Input() data: DonutSlice[] = [];\n\n ngOnInit() {\n const sum = this.data?.reduce((accu, slice) => accu + slice.percent, 0);\n if (sum !== 100) {\n throw new Error(`The sum of all slices of the donut chart must equal to 100%. Found: ${sum}.`);\n }\n }\n\n trackByFn(index: number, slice: DonutSlice) {\n return slice.id;\n }\n}\n","import { Component, HostBinding, inject } from '@angular/core';\nimport { DonutSlice } from '../donut-chart/donut-chart.model';\nimport { DataTooltip, TOOLTIP_DATA } from '../../core/tooltip.service';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { DonutChartComponent } from '../donut-chart/donut-chart.component';\n\nexport interface DonutChartTooltipData {\n data: Array<[DonutSlice, DonutSlice]>;\n label: string;\n}\n\nexport function transformDonutChartData(data: DonutSlice[]): Array<[DonutSlice, DonutSlice]> {\n return data.map((slice): [DonutSlice, DonutSlice] => [\n // inverted order is necessary for the donut chart to go clockwise\n {\n percent: 100 - slice.percent,\n color: 'transparent',\n id: 999999,\n },\n slice,\n ]);\n}\n\n@Component({\n selector: 'metaqs2-donut-chart-tooltip',\n templateUrl: './donut-chart-tooltip.component.html',\n styleUrl: './donut-chart-tooltip.component.css',\n animations: [\n trigger('fadeInOut', [\n transition(':enter', [\n style({\n opacity: 0,\n scale: 0.5,\n }),\n animate(\n '100ms ease-in',\n style({\n opacity: 1,\n scale: 1,\n })\n ),\n ]),\n transition(':leave', [\n style({\n opacity: 1,\n scale: 1,\n }),\n animate(\n '100ms ease-out',\n style({\n opacity: 0,\n scale: 0.5,\n })\n ),\n ]),\n ]),\n ],\n imports: [CommonModule, DonutChartComponent],\n})\nexport class DonutChartTooltipComponent implements DataTooltip<DonutChartTooltipData> {\n @HostBinding('@fadeInOut') animationState = true;\n public readonly data = inject<DonutChartTooltipData>(TOOLTIP_DATA);\n}\n","<h4>{{ data.label }}</h4>\n<p>Status</p>\n<ng-container *ngFor=\"let slicePair of data.data\">\n <ng-container *ngIf=\"slicePair[1].percent > 0\">\n <div style=\"display: flex; justify-content: flex-start; align-items: center; gap: 0.25rem\">\n <metaqs2-donut-chart [data]=\"slicePair\" [borderSize]=\"25\"></metaqs2-donut-chart>\n <p>{{ slicePair[1].verboseLabel }}</p>\n </div>\n </ng-container>\n</ng-container>\n","import { Component, ElementRef, Input, LOCALE_ID, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatDatepicker, MatDatepickerInput, MatDatepickerToggle } from '@angular/material/datepicker';\nimport { MatFormField, MatLabel, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { DateTime } from 'luxon';\nimport { LuxonDateAdapter, MAT_LUXON_DATE_ADAPTER_OPTIONS } from '@angular/material-luxon-adapter';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MatDateFormats, MatRipple } from '@angular/material/core';\n\nconst datePickerFormats: MatDateFormats = {\n parse: {\n dateInput: 'D',\n },\n display: {\n dateInput: 'D',\n monthYearLabel: 'MMMM yyyy',\n dateA11yLabel: 'DDD',\n monthYearA11yLabel: 'MMMM yyyy',\n },\n};\n\n@Component({\n selector: 'metaqs2-datepicker',\n standalone: true,\n imports: [\n FormsModule,\n MatDatepicker,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatFormField,\n MatInput,\n MatLabel,\n MatSuffix,\n ReactiveFormsModule,\n MatRipple,\n ],\n providers: [\n {\n provide: DateAdapter,\n useClass: LuxonDateAdapter,\n deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS],\n },\n { provide: MAT_DATE_FORMATS, useValue: datePickerFormats },\n\n //provideLuxonDateAdapter(datePickerFormats),\n { provide: LOCALE_ID, useValue: 'de-DE' },\n { provide: MAT_DATE_LOCALE, useValue: 'de-DE' },\n { provide: MAT_LUXON_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true, firstDayOfWeek: 1 } },\n ],\n templateUrl: './datepicker.component.html',\n styleUrl: './datepicker.component.css',\n})\nexport class DatepickerComponent implements OnInit, OnDestroy {\n @Input()\n disabled: boolean = false;\n\n @Input({ required: true })\n inputGroup!: FormGroup<{ start: FormControl<DateTime<boolean>>; end: FormControl<DateTime<boolean>> }>;\n\n @ViewChild('start', {\n read: ElementRef,\n static: true,\n })\n protected start!: ElementRef<HTMLInputElement>;\n\n @ViewChild('ripple', {\n read: MatRipple,\n static: true,\n })\n protected ripple!: MatRipple;\n\n ngOnInit() {\n this.focus();\n }\n\n ngOnDestroy(): void {\n //defer this to avoid an ExpressionChangedAfterItHasBeenCheckedError on the parent component\n Promise.resolve().then(() => this.inputGroup.reset());\n }\n\n focus() {\n this.start?.nativeElement.focus();\n this.ripple.launch({\n centered: true, // Angular Material bug: disabled ripples do not trigger unless centered\n radius: 1000,\n animation: {\n exitDuration: 1000,\n },\n });\n }\n}\n","<div [formGroup]=\"inputGroup\" matRipple #ripple=\"matRipple\" [matRippleDisabled]=\"true\">\n <!-- start date -->\n <mat-form-field>\n <mat-label>Zeitpunkt 1</mat-label>\n <input matInput\n #start\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker1\" formControlName=\"start\"\n placeholder=\"Starts date\"\n >\n <!--\n <mat-hint>d.M.yyyy</mat-hint>\n -->\n <mat-datepicker-toggle matIconSuffix [for]=\"picker1\"></mat-datepicker-toggle>\n <mat-datepicker [disabled]=\"disabled\" #picker1 [startAt]=\"inputGroup.controls.start.defaultValue\">\n </mat-datepicker>\n </mat-form-field>\n <!-- /start date -->\n <!-- end date -->\n <mat-form-field>\n <mat-label>Zeitpunkt2</mat-label>\n <input matInput\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker2\"\n formControlName=\"end\"\n placeholder=\"End date\"\n >\n <!--\n <mat-hint>d.M.yyyy</mat-hint>\n -->\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker [disabled]=\"disabled\" #picker2 [startAt]=\"inputGroup.controls.end.value\">\n </mat-datepicker>\n </mat-form-field>\n <!-- /end date -->\n</div>\n","import { ElementRef, Injectable, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef, PositionStrategy } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\n@Injectable({ providedIn: 'root' })\nexport class OverlayService {\n constructor(private overlay: Overlay) {}\n createOverlay(config: OverlayConfig): OverlayRef {\n return this.overlay.create(config);\n }\n attachTemplatePortal(overlayRef: OverlayRef, templateRef: TemplateRef<any>, vcRef: ViewContainerRef) {\n let templatePortal = new TemplatePortal(templateRef, vcRef);\n overlayRef.attach(templatePortal);\n }\n positionGloballyCenter(): PositionStrategy {\n return this.overlay.position().global().centerHorizontally().centerVertically();\n }\n\n // may be useful, if we only want to \"grey-out\" only the table\n positionFlexibleConnected(parent: Element | ElementRef): PositionStrategy {\n return this.overlay\n .position()\n .flexibleConnectedTo(parent)\n .withPositions([\n {\n overlayX: 'center',\n overlayY: 'center',\n originX: 'center',\n originY: 'center',\n },\n ])\n .withLockedPosition();\n }\n}\n","import {\n Component,\n Input,\n ViewChild,\n TemplateRef,\n ViewContainerRef,\n OnChanges,\n SimpleChanges,\n ElementRef,\n} from '@angular/core';\nimport { OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\n\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { OverlayService } from '../overlay/overlay.service';\n\n@Component({\n selector: 'metaqs2-progress-spinner',\n templateUrl: './progress-spinner.component.html',\n styleUrls: ['./progress-spinner.component.css'],\n standalone: true,\n imports: [MatProgressSpinnerModule],\n})\nexport class ProgressSpinnerComponent implements OnChanges {\n @Input() color?: string = 'primary';\n @Input() diameter?: number = 100;\n @Input() strokeWidth?: number = 10;\n @Input() backdropEnabled = false;\n @Input() positionGloballyCenter = true;\n @Input() displayProgressSpinner: boolean;\n\n @ViewChild('progressSpinnerRef', { static: true })\n private progressSpinnerRef: TemplateRef<any>;\n private progressSpinnerOverlayConfig: OverlayConfig;\n private overlayRef: OverlayRef;\n\n constructor(private vcRef: ViewContainerRef, private overlayService: OverlayService, private el: ElementRef) {\n // we are doing this in the constructor because ngOnInit runs after the first ngOnChanges\n // and we need to create the overlayRef before the first ngOnChanges\n // ngDoCheck runs too often.\n\n this.progressSpinnerOverlayConfig = {\n hasBackdrop: this.backdropEnabled,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n };\n if (this.positionGloballyCenter) {\n this.progressSpinnerOverlayConfig['positionStrategy'] = this.overlayService.positionGloballyCenter();\n } else {\n /*\n see https://stackoverflow.com/questions/63579801/how-do-i-create-a-custom-overlay-container-for-angular-material\n how to create a overlay container.\n With such a directive we can have a spinner that greys-out only e.g. the table like seen here:\n https://reppners.github.io/ngx-cdk-dynamic-overlay-container/\n */\n this.progressSpinnerOverlayConfig['positionStrategy'] = this.overlayService.positionFlexibleConnected(this.el);\n }\n // Create Overlay for progress spinner\n this.overlayRef = this.overlayService.createOverlay(this.progressSpinnerOverlayConfig);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n changes.displayProgressSpinner.currentValue\n ? this.overlayService.attachTemplatePortal(this.overlayRef, this.progressSpinnerRef, this.vcRef)\n : this.overlayRef.detach();\n }\n}\n","<ng-template #progressSpinnerRef>\n <mat-spinner [color]=\"color\" [diameter]=\"diameter\" [strokeWidth]=\"strokeWidth\">\n\t</mat-spinner>\n</ng-template>","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[metaqs2ScrollMarker]',\n standalone: true,\n})\nexport class ScrollMarkerDirective {\n public element = inject(ElementRef);\n}\n","import {\n AfterViewChecked,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n HostListener,\n inject,\n Input,\n OnInit,\n signal,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, of, Subject, Unsubscribable } from 'rxjs';\nimport { filter, finalize, map, switchMap, take, tap, throttleTime } from 'rxjs/operators';\nimport { MetaApiService } from '../../meta-api.service';\nimport { Filter, FilterValue, QualityMatrix, QualityMatrixHeader, QualityMatrixRow } from '../../java-api';\nimport { FormControl, FormGroup, FormRecord, ReactiveFormsModule } from '@angular/forms';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { EditorialLinkService } from '../editorial-link-service/editorial-link.service';\nimport { DateTime } from 'luxon';\nimport { DonutSlice } from '../donut-chart/donut-chart.model';\nimport { KeyValuePipe, NgClass, NgIf, NgFor } from '@angular/common';\nimport { Overlay } from '@angular/cdk/overlay';\nimport {\n DonutChartTooltipComponent,\n transformDonutChartData,\n} from '../donut-chart-tooltip/donut-chart-tooltip.component';\nimport { centerPositionStrategy, TooltipRef, TooltipService } from '../../core/tooltip.service';\nimport { MatCard, MatCardContent, MatCardHeader, MatCardTitle } from '@angular/material/card';\nimport { QualityMatrixFilterComponent } from '../filter/quality-matrix-filter.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { DatepickerComponent } from '../filter/datepicker/datepicker.component';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { ProgressSpinnerComponent } from '../loading_indicator/progress-spinner/progress-spinner.component';\nimport {\n MatCell,\n MatCellDef,\n MatColumnDef,\n MatHeaderCell,\n MatHeaderCellDef,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef,\n MatTable,\n} from '@angular/material/table';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { DonutChartComponent } from '../donut-chart/donut-chart.component';\nimport { ScrollMarkerDirective } from './scroll-marker.directive';\n\nconst openCloseTimeout = 150;\n\n@Component({\n selector: 'metaqs2-quality-matrix-v2',\n providers: [TooltipService],\n standalone: true,\n templateUrl: './quality-matrix.html',\n imports: [\n MatCard,\n MatCardHeader,\n MatCardTitle,\n MatCardContent,\n QualityMatrixFilterComponent,\n TranslateModule,\n KeyValuePipe,\n MatIcon,\n DatepickerComponent,\n MatSlideToggle,\n ReactiveFormsModule,\n ProgressSpinnerComponent,\n MatTable,\n MatTooltip,\n MatCell,\n MatColumnDef,\n MatHeaderCell,\n NgClass,\n MatHeaderRow,\n MatRow,\n MatHeaderRowDef,\n MatRowDef,\n MatHeaderCellDef,\n NgIf,\n NgFor,\n MatCellDef,\n MatButton,\n MatIconButton,\n DonutChartComponent,\n DonutChartTooltipComponent,\n ScrollMarkerDirective,\n ],\n styleUrls: ['./quality_matrix.scss'],\n})\nexport class QualityMatrixComponent implements OnInit, AfterViewChecked {\n protected readonly ref = inject(ElementRef);\n protected readonly destroyRef = inject(DestroyRef);\n protected readonly metaApi = inject(MetaApiService);\n protected readonly linkService = inject(EditorialLinkService);\n protected readonly overlay = inject(Overlay);\n protected readonly tooltipService = inject(TooltipService);\n private readonly scrollLeft = signal(0);\n private readonly scrollWidth = signal(0);\n public readonly isLeftScrollable = computed(() => this.scrollLeft() > 0);\n public readonly isRightScrollable = computed(() => {\n const viewport = globalThis.visualViewport;\n if (!viewport) {\n return;\n }\n const viewportWidth = viewport.width;\n\n return this.scrollWidth() > viewportWidth && this.scrollLeft() + viewportWidth < this.scrollWidth();\n });\n\n readonly filteredColumns = computed<Array<QualityMatrixHeader>>(() => {\n const allColumns = this.allColumns();\n const isOnlySourcesWithMaterialEnabled = this.isOnlySourcesWithMaterialEnabled();\n if (isOnlySourcesWithMaterialEnabled) {\n return allColumns.filter((c) => c.total > 0);\n } else {\n return allColumns;\n }\n });\n readonly datatableColumns = computed(() => {\n return this.filteredColumns()\n .filter((c) => c.level !== 0)\n .map((c) => c.id);\n });\n readonly isHistoricalDataEnabledFormField = new FormControl({ value: false, disabled: true });\n readonly isHistoricalDataEnabled = toSignal(this.isHistoricalDataEnabledFormField.valueChanges);\n readonly isOnlySourcesWithMaterialEnabledFormField = new FormControl({ value: true, disabled: true });\n readonly isOnlySourcesWithMaterialEnabled = toSignal(this.isOnlySourcesWithMaterialEnabledFormField.valueChanges);\n readonly categoryControls = new FormRecord<FormControl<Array<string>>>({});\n readonly loadingCount = signal(0);\n readonly isLoading = computed(() => this.loadingCount() > 0);\n\n // @ViewChildren(ScrollMarkerDirective)\n // private readonly scrollMarkers!: ReadonlyArray<ScrollMarkerDirective>;\n // @ViewChild('issueType', {\n // read: ElementRef,\n // static: true,\n // })\n // private readonly issueTypeHeader!: ElementRef<HTMLTableCellElement>;\n\n private readonly issueTypeHeader = viewChild('issueType', {\n read: ElementRef,\n });\n private readonly scrollMarkers = viewChildren(ScrollMarkerDirective);\n\n readonly categoryFilterValues: Map<string, FilterValue[]> = new Map();\n protected readonly refresh$ = new Subject<void>();\n readonly recentQualityMatrix$ = new BehaviorSubject<QualityMatrix>({ columns: [], rows: [] } as QualityMatrix);\n readonly recentQualityMatrix = toSignal(this.recentQualityMatrix$, {\n initialValue: { columns: [], rows: [] } as QualityMatrix,\n });\n readonly pastQualityMatrix$ = new BehaviorSubject<QualityMatrix | null>({ columns: [], rows: [] } as QualityMatrix);\n readonly range: FormGroup<{\n start: FormControl<DateTime<boolean>>;\n end: FormControl<DateTime<boolean>>;\n }> = new FormGroup({\n start: new FormControl(),\n end: new FormControl(),\n });\n private readonly tooltips = new Map<HTMLElement, TooltipRef<DonutChartTooltipComponent>>();\n protected readonly DateTime = DateTime;\n @Input()\n pageTitle: string = 'Quality Matrix';\n\n readonly allColumns = computed(() =>\n this.recentQualityMatrix()?.columns.toSorted((a, b) => a.label.localeCompare(b.label))\n );\n\n ngAfterViewChecked(): void {\n this.onScroll();\n }\n\n sourceColumns = computed(() => this.datatableColumns().map((c) => c + '_source'));\n\n currentColumns = computed(() => this.datatableColumns().map((c) => c + '_current'));\n\n pastColumns = computed(() => this.datatableColumns().map((c) => c + '_past'));\n\n allDataColumns = computed(() => {\n const pastColumns = this.pastColumns();\n const currentColumns = this.currentColumns();\n if (this.isHistoricalDataEnabled()) {\n return currentColumns.flatMap((e, i) => [pastColumns[i], e]);\n }\n return currentColumns;\n });\n\n private loadData(categories: { [key: string]: Array<string> }, date: DateTime<true>): Observable<QualityMatrix> {\n return of(undefined).pipe(\n tap(() => this.loadingCount.update((it) => it + 1)),\n switchMap(() =>\n this.metaApi\n .getQualityMatrixWithFiltersV2([\n ...this.transformCategoryFilters(categories),\n {\n field: 'asOf',\n values: [\n {\n id: date.toISO({\n includeOffset: false,\n }) as string,\n label: '',\n },\n ],\n },\n ])\n .pipe(take(1))\n ),\n finalize(() => this.loadingCount.update((it) => it - 1))\n );\n }\n\n private transformCategoryFilters(categories: { [key: string]: Array<string> }): Filter[] {\n return Object.entries(categories)\n .filter((pair): pair is [string, Array<string>] => !!pair[1]?.length)\n .map(([field, values]) => ({\n field,\n values: values.map((value) => ({ id: value, label: '' })),\n }));\n }\n\n private loadPastData(categories: any, date: DateTime<true>) {\n return of(undefined).pipe(switchMap(() => this.loadData(categories, date)));\n }\n\n private loadCurrentData(categories: any, date: DateTime<true>) {\n return of(undefined).pipe(switchMap(() => this.loadData(categories, date)));\n }\n\n openEditLink(source: string, issue: string) {\n return this.linkService.openByReplicationsourceAndIssueTypeWithFilters(source, issue, this.categoryControls.value);\n }\n\n // see https://github.com/angular/components/issues/8361#issuecomment-345804954\n columnIdent(_index: number, col: QualityMatrixHeader) {\n return col.id;\n }\n\n refresh() {\n this.refresh$.next();\n }\n\n getPastColumn(columnId: string) {\n return this.pastQualityMatrix$.value?.columns.find((c) => c.id === columnId);\n }\n\n public ngOnInit() {\n this.loadingCount.update((it) => it + 1);\n this.metaApi\n .getCategoryFilters()\n .pipe(\n take(1),\n tap((filters) => {\n filters.forEach((filter) => {\n // do not emit the event when setting the control to prevent unnecessary valueChanges events\n this.categoryControls.addControl(filter.field, new FormControl([], { nonNullable: true }), {\n emitEvent: false,\n });\n this.categoryFilterValues.set(\n filter.field,\n filter.values.toSorted((a, b) => {\n return a.label.localeCompare(b.label);\n })\n );\n });\n // emit the current value of the form group once to trigger the valueChanges observable\n this.categoryControls.setValue(this.categoryControls.value as { [key: string]: string[] }, {\n emitEvent: true,\n });\n }),\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loadingCount.update((it) => it - 1))\n )\n .subscribe();\n\n this.loadingCount.update((it) => it + 1);\n this.metaApi\n .getTimerangeFilter()\n .pipe(\n filter((rangeFilter) => !!rangeFilter),\n tap((rangeFilter) => {\n const startDate = DateTime.fromISO(rangeFilter.values.find((v) => v.id === 'rangeStart')?.label!, {\n zone: 'utc',\n });\n const endDate = DateTime.fromISO(rangeFilter.values.find((v) => v.id === 'rangeEnd')?.label!, {\n zone: 'utc',\n });\n this.range.setControl('start', new FormControl<DateTime>(startDate, { nonNullable: true }), {\n emitEvent: false,\n });\n this.range.setControl('end', new FormControl<DateTime>(endDate, { nonNullable: true }), {\n emitEvent: true,\n });\n }),\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loadingCount.update((it) => it - 1))\n )\n .subscribe();\n\n combineLatest([this.categoryControls.valueChanges, this.range.valueChanges, this.refresh$])\n .pipe(\n filter(\n (data): data is [{ [key: string]: Array<string> }, { end: DateTime<true> }, void] =>\n !!data[0] && !!data[1].end?.isValid\n ),\n throttleTime(500),\n map(([categories, range]) => [categories, range.end] as const),\n switchMap(([categories, end]) => this.loadCurrentData(categories, end)),\n tap((currentQm) => {\n this.recentQualityMatrix$.next(currentQm);\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n\n let pastDataSubscription: Unsubscribable | undefined;\n\n const pastData$ = combineLatest([this.categoryControls.valueChanges, this.range.valueChanges, this.refresh$]).pipe(\n filter(\n (data): data is [{ [key: string]: Array<string> }, { start: DateTime<true> }, void] =>\n !!data[0] && !!data[1].start?.isValid\n ),\n throttleTime(500),\n map(([categories, range]) => [categories, range.start] as const),\n switchMap(([categories, start]) => this.loadPastData(categories, start)),\n tap((pastQm) => {\n this.pastQualityMatrix$.next(pastQm);\n }),\n takeUntilDestroyed(this.destroyRef)\n );\n\n this.isHistoricalDataEnabledFormField.valueChanges\n .pipe(\n tap((isEnabled) => {\n if (isEnabled) {\n pastDataSubscription = pastData$.subscribe();\n this.categoryControls.setValue(this.categoryControls.value as { [key: string]: string[] }, {\n emitEvent: true,\n });\n this.range.setValue(this.range.value as { start: DateTime; end: DateTime }, {\n emitEvent: true,\n });\n this.refresh$.next();\n } else {\n pastDataSubscription?.unsubscribe();\n }\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n\n this.refresh$.next();\n this.isOnlySourcesWithMaterialEnabledFormField.setValue(this.isOnlySourcesWithMaterialEnabledFormField.value, {\n emitEvent: true,\n });\n }\n\n getTrend(row: QualityMatrixRow, column: QualityMatrixHeader): { delta?: number; trend?: string } {\n if (this.pastQualityMatrix$.value === null || this.pastQualityMatrix$.value.columns.length === 0) {\n return {};\n }\n const past_row = this.pastQualityMatrix$?.value.rows.find((pr) => pr.meta.id == row.meta.id);\n const past_column = this.pastQualityMatrix$.value.columns.find((c) => c.id == column.id);\n if (!past_row || !past_column) {\n return {};\n }\n\n const delta = Math.floor(\n (100 * row.counts[column.id].sufficient) / column.total -\n (100 * past_row.counts[column.id].sufficient) / past_column.total\n );\n\n const trend = delta === 0 ? 'trending_flat' : delta < 0 ? 'trending_down' : 'trending_up';\n return { delta, trend };\n }\n\n getDonutSlices(row: QualityMatrixRow, column: QualityMatrixHeader): DonutSlice[] {\n const sufficientTotal = row.counts[column.id].sufficient;\n const insufficientTotal = row.counts[column.id].insufficient;\n const missingTotal = column.total - sufficientTotal - insufficientTotal;\n let sufficientFillRate = 0;\n let insufficientFillRate = 0;\n //Der Wert berechnet sich aus dem total_count - without_description_count.\n\n if (column.total !== 0) {\n sufficientFillRate = Math.round((100 * sufficientTotal) / column.total);\n insufficientFillRate = Math.round((100 * insufficientTotal) / column.total);\n }\n const rest = 100 - (sufficientFillRate + insufficientFillRate); // a.k.a. \"missing\"\n return [\n {\n id: 3,\n percent: rest,\n color: '#D8EDFC',\n label: `${rest} % (${missingTotal})`,\n verboseLabel: `${missingTotal} Metadatens\\u00e4tze fehlen`,\n },\n {\n id: 1,\n percent: insufficientFillRate,\n color: '#C20808',\n label: `${insufficientFillRate} % (${insufficientTotal})`,\n verboseLabel: `${insufficientTotal} Metadatens\\u00e4tze sind unzureichend ausgef\\u00fcllt`,\n },\n {\n id: 2,\n percent: sufficientFillRate,\n color: '#4ABEFF',\n label: `${sufficientFillRate} % (${sufficientTotal})`,\n verboseLabel: `${sufficientTotal} Metadatens\\u00e4tze sind gut ausgef\\u00fcllt`,\n },\n ];\n }\n\n showTooltip(row: QualityMatrixRow, column: QualityMatrixHeader, cell: HTMLElement) {\n if (row.counts[column.id].sufficient + row.counts[column.id].insufficient === 0) {\n return;\n }\n if (this.tooltips.has(cell)) {\n this.tooltips.get(cell)!.cancelCloseAction();\n return;\n }\n\n const tooltipRef = this.tooltipService.create(DonutChartTooltipComponent, {\n closeTimeout: openCloseTimeout,\n openTimeout: openCloseTimeout,\n data: {\n label: column.label,\n data: transformDonutChartData(this.getDonutSlices(row, column)),\n },\n overlayConfig: {\n hasBackdrop: false,\n positionStrategy: this.overlay.position().flexibleConnectedTo(cell).withPositions(centerPositionStrategy),\n disposeOnNavigation: true,\n panelClass: 'donut-chart-tooltip',\n },\n onClose: () => {\n this.tooltips.delete(cell);\n },\n });\n tooltipRef.open();\n this.tooltips.set(cell, tooltipRef);\n }\n\n hideTooltip(cell: HTMLElement) {\n this.tooltips.get(cell)?.markForClose();\n }\n\n findHorizontalScrollContainer(element: Element): Element | null {\n if (element.scrollWidth > element.clientWidth && ['auto', 'scroll'].includes(getComputedStyle(element).overflowX)) {\n // find the nearest horizontally scrollable element\n return element;\n } else {\n if (!element.parentElement) {\n return document.scrollingElement;\n }\n return this.findHorizontalScrollContainer(element.parentElement);\n }\n }\n\n scrollToRight() {\n const scrollingElement = this.findHorizontalScrollContainer(this.ref.nativeElement as HTMLElement);\n if (!scrollingElement) {\n return;\n }\n const viewport = globalThis.visualViewport;\n if (!viewport) {\n return;\n }\n const viewportWidth = viewport.width;\n\n const lastVisible = this.scrollMarkers().findLast(\n (marker) => (marker.element.nativeElement as HTMLElement).getBoundingClientRect().left < viewportWidth\n );\n\n if (!lastVisible) {\n return;\n }\n\n const leftColumnWidth = this.issueTypeHeader()?.nativeElement.getBoundingClientRect().width ?? 0;\n\n scrollingElement.scrollBy({\n left: (lastVisible.element.nativeElement as HTMLElement).getBoundingClientRect().left - leftColumnWidth,\n behavior: 'smooth',\n });\n }\n\n scrollToLeft() {\n const scrollingElement = this.findHorizontalScrollContainer(this.ref.nativeElement as HTMLElement);\n if (!scrollingElement) {\n return;\n }\n const viewport = globalThis.visualViewport;\n if (!viewport) {\n return;\n }\n const viewportWidth = viewport.width;\n\n const leftColumnWidth = this.issueTypeHeader()?.nativeElement.getBoundingClientRect().width ?? 0;\n\n const firstVisible = this.scrollMarkers().find(\n (marker) => (marker.element.nativeElement as HTMLElement).getBoundingClientRect().right > leftColumnWidth\n );\n\n if (!firstVisible) {\n return;\n }\n\n scrollingElement.scrollBy({\n left: (firstVisible.element.nativeElement as HTMLElement).getBoundingClientRect().right - viewportWidth,\n behavior: 'smooth',\n });\n }\n\n @HostListener('window:scroll')\n @HostListener('window:resize')\n onScroll() {\n const scrollingElement = this.findHorizontalScrollContainer(this.ref.nativeElement as HTMLElement);\n if (!scrollingElement) {\n return;\n }\n this.scrollLeft.set(scrollingElement.scrollLeft);\n this.scrollWidth.set(scrollingElement.scrollWidth);\n }\n}\n","\n<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title>Qualitätsmetrik: {{ pageTitle | translate }}{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"toolbar\">\n @for( filter of categoryControls.controls | keyvalue ; track filter.key ) {\n <metaqs2-qm-filter [options]=\"categoryFilterValues.get(filter.key)\" [inputFormControl]=\"filter.value\"\n [label]=\"'filter.' + filter.key | translate\"></metaqs2-qm-filter>\n }@empty {\n <metaqs2-qm-filter aria-disabled=\"true\" [label]=\"'Filter'\"></metaqs2-qm-filter> \n }\n <div class=\"actionbar\">\n <mat-slide-toggle [disabled]=\"isLoading()\" labelPosition=\"before\" [formControl]=\"isOnlySourcesWithMaterialEnabledFormField\" id=\"onlySourcesWithMaterial\">\n show only sources with material\n </mat-slide-toggle>\n <div style=\"flex: 1 1 auto\"></div>\n @if (isHistoricalDataEnabled()) {\n <metaqs2-datepicker [disabled]=\"isLoading()\" [inputGroup]=\"range\"></metaqs2-datepicker> \n }\n <mat-slide-toggle [disabled]=\"isLoading()\" labelPosition=\"before\" [formControl]=\"isHistoricalDataEnabledFormField\" id=\"showHistoricalData\">\n show historical data\n </mat-slide-toggle>\n <button\n mat-icon-button\n color=\"primary\"\n [disabled]=\"isLoading()\"\n (click)=\"refresh()\"\n matTooltip=\"Aktualisiere den IST-Stand\"\n matTooltipShowDelay=\"500\"\n >\n <mat-icon>refresh</mat-icon>\n </button>\n <div [style.flex]=\"'0 0 ' + (scroller?.getBoundingClientRect()?.width || 0) + 'px'\"></div>\n <div class=\"scroll-controller\" #scroller> <!-- put the whole toolbar in a fixed container (MQS- -->\n <button mat-raised-button (click)=\"scrollToLeft()\" [disabled]=\"!isLeftScrollable()\" class=\"scroll-button\">\n <mat-icon style=\"margin: 0\">chevron_left</mat-icon>\n </button>\n <button mat-raised-button (click)=\"scrollToRight()\" [disabled]=\"!isRightScrollable()\" class=\"scroll-button\">\n <mat-icon style=\"margin: 0\">chevron_right</mat-icon>\n </button>\n </div>\n </div>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n <table [class.while-loading]=\"isLoading()\" mat-table [dataSource]=\"recentQualityMatrix().rows\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"row-header\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef #issueType>Issue Type</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"row-header mat-cell-level-{{row.meta.level + 1}}\"\n >\n {{\"quality_matrix.\" + row.meta.label | translate }}\n </td>\n </ng-container>\n <!-- one column for the source -->\n <ng-container *ngFor=\"let col of filteredColumns(); trackBy:columnIdent\" [matColumnDef]=\"col.id + '_source'\">\n <th [attr.colspan]=\"isHistoricalDataEnabled() ? 2 : 1\" metaqs2ScrollMarker mat-header-cell *matHeaderCellDef matTooltip=\"{{col.altLabel}}\">{{col.label}}</th>\n </ng-container>\n <!-- /source -->\n <!-- current Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns(); trackBy:columnIdent\" [matColumnDef]=\"column.id + '_current'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"{{column.altLabel}}\">{{ range.controls.end.value?.toLocaleString(DateTime.DATE_SHORT) }} <br>({{column.total}})</th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\" #cell (mouseover)=\"showTooltip(row, column, cell)\" (mouseleave)=\"hideTooltip(cell)\">\n @if ( column.total > 0) {\n <a class=\"chart-container\" (click)=\"openEditLink( column.label, row.meta.label)\">\n <div>\n <metaqs2-donut-chart [data]=\"getDonutSlices(row, column)\" [borderSize]=\"25\"></metaqs2-donut-chart>\n </div>\n </a>\n \n } @else {\n <div>-</div> \n }\n </td>\n </ng-container>\n <!-- /current Data Columns -->\n\n @if (isHistoricalDataEnabled()) {\n <!-- past Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns(); trackBy:columnIdent\" [matColumnDef]=\"column.id + '_past'\">\n <th class=\"historic-data-cell\" mat-header-cell\n *matHeaderCellDef>{{ range.controls.start.value?.toLocaleString(DateTime.DATE_SHORT) }}\n <br>{{ getPastColumn(column.id)?.total }}\n </th>\n <td class=\"historic-data-cell\" mat-cell *matCellDef=\"let row\">\n <ng-container *ngIf=\"getTrend(row, column) as trend\">\n <span [ngClass]=\"trend.trend\">\n <mat-icon aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" />\n {{ trend.delta }}\n </span>\n </ng-container>\n\n </td>\n </ng-container>\n <!-- /past Data Columns -->\n }\n\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['row-header'].concat(sourceColumns()); sticky: true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"allDataColumns(); sticky: true;\" [hidden]=\"!isHistoricalDataEnabled()\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['row-header'].concat(allDataColumns())\"></tr>\n </table>\n</mat-card>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of, pipe, UnaryFunction } from 'rxjs';\nimport { catchError, map, startWith } from 'rxjs/operators';\nexport type WrappedResponse<T> = { state: 'loading' } | { state: 'success'; data: T } | { state: 'error'; error: any };\n\nexport function wrapResponse<T>(): UnaryFunction<Observable<T>, Observable<WrappedResponse<T>>> {\n return pipe(\n map((data) => ({ state: 'success', data } as WrappedResponse<T>)),\n catchError((error) => of({ state: 'error', error } as WrappedResponse<T>)),\n startWith({ state: 'loading' } as WrappedResponse<T>)\n );\n}\n\n@Pipe({\n name: 'wrapObservable',\n})\nexport class WrapObservablePipe implements PipeTransform {\n transform<T>(value: Observable<T>): Observable<WrappedResponse<T>> {\n return value.pipe(wrapResponse());\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { CollectionWithMissingAttributes, MaterialWithMissingAttributes } from './java-api';\nimport { ConfigHelperService } from './config-helper.service';\n\n@Pipe({\n name: 'nodeImageUrl',\n})\nexport class NodeImageUrlPipe implements PipeTransform {\n private env = inject(ConfigHelperService);\n\n transform(\n value: MaterialWithMissingAttributes | CollectionWithMissingAttributes,\n args = {\n width: 200,\n height: 200,\n }\n ): string {\n return (\n this.env.eduSharingPath +\n '/preview?nodeId=' +\n encodeURIComponent(value.node_id!!) +\n '&crop=true&maxWidth=' +\n encodeURIComponent(args.width) +\n '&maxHeight=' +\n encodeURIComponent(args.height)\n );\n }\n}\n","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { CollectionWithMissingAttributes, MaterialWithMissingAttributes } from '../../java-api';\nimport { ConfigHelperService } from '../../config-helper.service';\nimport { NodeImageUrlPipe } from '../../node-image-url.pipe';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'metaqs2-node-entry',\n templateUrl: './node-entry.component.html',\n styleUrls: ['./node-entry.component.scss'],\n imports: [NodeImageUrlPipe, MatIconModule],\n})\nexport class NodeEntryComponent {\n private env = inject(ConfigHelperService);\n\n @Input() node: MaterialWithMissingAttributes | CollectionWithMissingAttributes;\n @Output() edit = new EventEmitter<MaterialWithMissingAttributes | CollectionWithMissingAttributes>();\n\n constructor() {}\n\n openNode(node: MaterialWithMissingAttributes | CollectionWithMissingAttributes) {\n window.open(\n this.env.eduSharingPath +\n '/components/editorial-desk/?mode=render&viewType=single&ids=' +\n encodeURIComponent(node.node_id!!)\n );\n // this.metaWidget.openNode(node);\n }\n\n isCollectionCount() {\n // @TODO\n return false;\n // return (this.node as MaterialCounts).materials_count !== undefined;\n }\n}\n","<div class=\"node\">\n <img class=\"icon\" [src]=\"node | nodeImageUrl\" loading=\"lazy\" />\n <div class=\"text\">\n <span class=\"title\">{{ node.title }}</span>\n @if (isCollectionCount()) {\n <span class=\"count\">{{ $any(node).materials_count }} Materialien</span>\n } @else {\n <span class=\"description\">{{ node.description }}</span>\n }\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 @if ($any(node).type === 'ccm:io') {\n <button mat-icon-button color=\"primary\" (click)=\"edit.emit(node)\">\n <mat-icon>edit</mat-icon>\n </button>\n }\n </div>\n</div>\n","import { Component, EventEmitter, inject, Input, OnChanges, OnDestroy, Output, SimpleChanges } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { map, shareReplay, takeUntil } from 'rxjs/operators';\nimport {\n CollectionAPIService,\n CollectionWithMissingAttributes,\n MaterialWithMissingAttributes,\n MissingAttributeResult,\n} from '../../java-api';\nimport { WrappedResponse, wrapResponse } from '../../wrap-observable.pipe';\nimport { ConfigHelperService } from '../../config-helper.service';\nimport { NodeEntryComponent } from '../node-entry/node-entry.component';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { FormsModule } from '@angular/forms';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatCardModule } from '@angular/material/card';\n\n@Component({\n selector: 'metaqs2-node-list',\n templateUrl: './node-list.component.html',\n styleUrls: ['./node-list.component.scss'],\n imports: [\n NodeEntryComponent,\n CommonModule,\n TranslateModule,\n MatIconModule,\n MatProgressSpinnerModule,\n FormsModule,\n MatSliderModule,\n MatCardModule,\n ],\n})\nexport class NodeListComponent implements OnChanges, OnDestroy {\n private env = inject(ConfigHelperService);\n @Input() mode: string;\n @Input() type: 'material' | 'collection';\n @Input() collectionId: string;\n /**\n * outputs the current count of materials in this view\n */\n @Output() countChanged = new EventEmitter<number>();\n\n /**\n * default max count of nodes that should be shown in view\n */\n readonly DEFAULT_LIMIT = 25;\n /**\n * default count to fetch from api\n */\n readonly FETCH_LIMIT = 200;\n wrappedData$: Observable<WrappedResponse<MissingAttributeResult>>;\n data = new BehaviorSubject<MissingAttributeResult | undefined>(undefined);\n // rawData: (MaterialWithMissingAttributes | CollectionWithMissingAttributes)[] | undefined;\n count: number | null = 0;\n\n private destroyed$ = new Subject<void>();\n /**\n * should all nodes be shown?\n */\n showAll = false;\n\n constructor(private collectionAPIService: CollectionAPIService) {\n this.data.pipe(takeUntil(this.destroyed$)).subscribe((d) => this.countChanged.next(d?.total || 0));\n }\n\n async ngOnChanges(_changes: SimpleChanges) {\n if (this.collectionId) {\n await this.refresh();\n }\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n async refresh() {\n let getByMissingAttribute = (): Observable<MissingAttributeResult> => {\n if (this.type === 'material') {\n return this.collectionAPIService.getMaterialsWithMissingAttribute(\n this.collectionId,\n this.mode,\n 0,\n this.FETCH_LIMIT\n );\n } else {\n return this.collectionAPIService.getCollectionsWithMissingAttribute(\n this.collectionId,\n this.mode,\n 0,\n this.FETCH_LIMIT\n );\n }\n };\n\n // reset all data before switching\n this.data.next(undefined);\n //this.rawData = undefined;\n this.wrappedData$ = getByMissingAttribute().pipe(wrapResponse(), shareReplay(1));\n this.data.next(\n await this.wrappedData$\n .pipe(map((wrappedData) => (wrappedData.state === 'success' ? wrappedData.data : undefined)))\n .toPromise()\n );\n //this.rawData = this.data.value?.slice();\n\n /**\n * @TODO: Count mode\n */\n /*\n if (?) {\n this.filterCount();\n }\n */\n }\n\n editNode(node: MaterialWithMissingAttributes | CollectionWithMissingAttributes) {\n let action: string;\n if (this.mode === 'without_license') {\n action = 'OPTIONS.LICENSE';\n } else {\n action = 'OPTIONS.EDIT';\n }\n\n const id = node.node_id!!;\n window.open(\n this.env.eduSharingPath +\n '/components/editorial-desk?mode=audit&viewType=single&ids=' +\n encodeURIComponent(id) +\n '&action=' +\n action\n );\n }\n\n filterCount() {\n // @TODO\n // this.data = this.rawData?.filter((d) => (d as MaterialCounts).materials_count <= (this.count ?? 0));\n }\n}\n","<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\">🥳</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","import { Component, OnInit } from '@angular/core';\nimport { FilterAPIService } from '../../java-api';\nimport { NodeListComponent } from '../node-list/node-list.component';\nimport { NgFor } from '@angular/common';\n\n@Component({\n selector: 'metaqs2-material-issues',\n templateUrl: './material-issues.component.html',\n styleUrls: ['./material-issues.component.scss'],\n imports: [NodeListComponent, NgFor],\n})\nexport class MaterialIssuesComponent implements OnInit {\n issues: string[] = [];\n // @TODO: Input is broken, maybe cause of withComponentInputBinding()?!\n collectionId: string = '94f22c9b-0d3a-4c1c-8987-4c8e83f3a92e';\n\n constructor(private filterAPIService: FilterAPIService) {}\n\n async ngOnInit() {\n this.issues = await this.filterAPIService.getMaterialIssueFieldNames().toPromise();\n }\n}\n","<metaqs2-node-list\n *ngFor=\"let mode of issues\"\n [collectionId]=\"collectionId\"\n [mode]=\"mode\"\n type=\"material\"\n></metaqs2-node-list>\n","import { Component, OnInit } from '@angular/core';\nimport { FilterAPIService } from '../../java-api';\nimport { NodeListComponent } from '../node-list/node-list.component';\nimport { NgFor } from '@angular/common';\n\n@Component({\n selector: 'metaqs2-collection-issues',\n templateUrl: './collection-issues.component.html',\n styleUrls: ['./collection-issues.component.scss'],\n imports: [NodeListComponent, NgFor],\n})\nexport class CollectionIssuesComponent implements OnInit {\n issues: string[] = [];\n // @TODO: Input is broken, maybe cause of withComponentInputBinding()?!\n collectionId: string = '94f22c9b-0d3a-4c1c-8987-4c8e83f3a92e';\n\n constructor(private filterAPIService: FilterAPIService) {}\n\n async ngOnInit() {\n this.issues = await this.filterAPIService.getCollectionIssueFieldNames().toPromise();\n }\n}\n","<metaqs2-node-list\n *ngFor=\"let mode of issues\"\n [collectionId]=\"collectionId\"\n [mode]=\"mode\"\n type=\"collection\"\n></metaqs2-node-list>\n","import { Injectable } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nconst ICONS = {\n child:\n '<svg width=\"37\" height=\"37\" viewBox=\"0 0 37 37\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.7188 24.2813H3.46875C2.82991 24.2813 2.3125 23.7638 2.3125 23.125V13.875C2.3125 13.2362 2.82991 12.7188 3.46875 12.7188H12.7188C13.3576 12.7188 13.875 13.2362 13.875 13.875V23.125C13.875 23.7638 13.3576 24.2813 12.7188 24.2813ZM4.625 21.9688H11.5625V15.0313H4.625V21.9688Z\" fill=\"black\"/><path d=\"M33.5313 32.375H24.2813C23.6424 32.375 23.125 31.8576 23.125 31.2188V21.9688C23.125 21.3299 23.6424 20.8125 24.2813 20.8125H33.5313C34.1701 20.8125 34.6875 21.3299 34.6875 21.9688V31.2188C34.6875 31.8576 34.1701 32.375 33.5313 32.375ZM25.4375 30.0625H32.375V23.125H25.4375V30.0625Z\" fill=\"black\"/><path d=\"M33.5313 13.875H24.2813C23.6424 13.875 23.125 13.3576 23.125 12.7188V3.46875C23.125 2.82991 23.6424 2.3125 24.2813 2.3125H33.5313C34.1701 2.3125 34.6875 2.82991 34.6875 3.46875V12.7188C34.6875 13.3576 34.1701 13.875 33.5313 13.875ZM25.4375 11.5625H32.375V4.625H25.4375V11.5625Z\" fill=\"black\"/><path d=\"M18.5 37C17.8612 37 17.3438 36.4826 17.3438 35.8438V1.15625C17.3438 0.517408 17.8612 0 18.5 0C19.1388 0 19.6563 0.517408 19.6563 1.15625V35.8438C19.6563 36.4826 19.1388 37 18.5 37Z\" fill=\"black\"/><path d=\"M18.5 19.6563H12.7188C12.0799 19.6563 11.5625 19.1388 11.5625 18.5C11.5625 17.8612 12.0799 17.3438 12.7188 17.3438H18.5C19.1388 17.3438 19.6563 17.8612 19.6563 18.5C19.6563 19.1388 19.1388 19.6563 18.5 19.6563Z\" fill=\"black\"/><path d=\"M24.2813 9.25H18.5C17.8612 9.25 17.3438 8.73259 17.3438 8.09375C17.3438 7.45491 17.8612 6.9375 18.5 6.9375H24.2813C24.9201 6.9375 25.4375 7.45491 25.4375 8.09375C25.4375 8.73259 24.9201 9.25 24.2813 9.25Z\" fill=\"black\"/><path d=\"M24.2813 27.75H18.5C17.8612 27.75 17.3438 27.2326 17.3438 26.5938C17.3438 25.9549 17.8612 25.4375 18.5 25.4375H24.2813C24.9201 25.4375 25.4375 25.9549 25.4375 26.5938C25.4375 27.2326 24.9201 27.75 24.2813 27.75Z\" fill=\"black\"/></svg>',\n tree: '<svg width=\"43\" height=\"43\" viewBox=\"0 0 43 43\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M36.3082 24.5605C34.6184 24.5605 33.2478 23.1899 33.2478 21.5001C33.2478 19.8086 34.6184 18.4397 36.3082 18.4397C37.9996 18.4397 39.3686 19.8086 39.3686 21.5001C39.3686 23.1899 37.9996 24.5605 36.3082 24.5605V24.5605ZM6.62486 37.0842C4.93341 37.0842 3.56279 35.7136 3.56279 34.0238C3.56279 32.3324 4.93341 30.9634 6.62486 30.9634C8.31463 30.9634 9.68526 32.3324 9.68526 34.0238C9.68526 35.7136 8.31463 37.0842 6.62486 37.0842ZM6.62486 12.0367C4.93341 12.0367 3.56279 10.6661 3.56279 8.97467C3.56279 7.28489 4.93341 5.91427 6.62486 5.91427C8.31463 5.91427 9.68526 7.28489 9.68526 8.97467C9.68526 10.6661 8.31463 12.0367 6.62486 12.0367ZM36.3082 16.3032C34.3261 16.3032 32.6028 17.4151 31.7261 19.0478C30.3387 19.0461 28.4793 19.0511 27.5957 19.0461C25.5633 19.0343 23.8836 17.4017 23.8584 15.3692C23.8316 13.3889 23.3243 11.5782 22.0981 10.0028C20.7006 8.20892 18.9336 6.9811 16.6608 6.58636C16.0863 6.48726 15.4951 6.45534 14.9105 6.44694C13.6609 6.43015 12.4095 6.43518 11.1598 6.4419C10.2712 4.85292 8.57306 3.7796 6.62456 3.7796C3.75397 3.7796 1.42758 6.10599 1.42758 8.97486C1.42758 11.8455 3.75397 14.1718 6.62456 14.1718C8.5713 14.1718 10.2695 13.0985 11.1581 11.5129C12.4901 11.5146 13.822 11.5079 15.154 11.5247C15.4933 11.528 15.8427 11.5935 16.1669 11.6977C17.6937 12.1864 18.7402 13.6192 18.7586 15.2468C18.7855 17.3263 19.3801 19.1975 20.7407 20.7964C20.9523 21.0467 21.1824 21.2818 21.4025 21.522C21.379 21.5506 21.3655 21.5707 21.3487 21.5875C19.7362 23.1665 18.888 25.0846 18.7839 27.3371C18.762 27.7856 18.7671 28.2441 18.6747 28.6791C18.3119 30.3672 16.7817 31.58 15.0348 31.59C13.7617 31.5968 12.4901 31.5917 11.2186 31.5951C10.3452 29.949 8.61675 28.8269 6.62275 28.8269C3.75383 28.8269 1.42749 31.1533 1.42749 34.0239C1.42749 36.8928 3.75388 39.2192 6.62275 39.2192C8.5544 39.2192 10.2374 38.166 11.1343 36.6022C12.4596 36.609 13.7866 36.6123 15.1135 36.5989C15.5771 36.5939 16.0457 36.5569 16.5043 36.4847C18.5031 36.1756 20.1559 35.2165 21.525 33.7501C22.9208 32.2569 23.7052 30.4983 23.8194 28.4491C23.8446 28.009 23.8479 27.5639 23.9135 27.1289C24.162 25.4828 25.7914 24.0752 27.4526 24.0634C28.3949 24.055 30.35 24.0584 31.7878 24.0584C32.6797 25.6323 34.3695 26.6955 36.308 26.6955C39.1786 26.6955 41.505 24.3691 41.505 21.5002C41.505 18.6296 39.1786 16.3033 36.308 16.3033\" fill=\"black\"/></svg>',\n 'types/audio':\n '<svg width=\"35\" height=\"35\" viewBox=\"0 0 35 35\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.5 1.45834C10.2521 1.45834 4.375 7.33543 4.375 14.5833V24.7917C4.375 27.2125 6.32917 29.1667 8.75 29.1667H13.125V17.5H7.29167V14.5833C7.29167 8.93959 11.8563 4.37501 17.5 4.37501C23.1438 4.37501 27.7083 8.93959 27.7083 14.5833V17.5H21.875V29.1667H26.25C28.6708 29.1667 30.625 27.2125 30.625 24.7917V14.5833C30.625 7.33543 24.7479 1.45834 17.5 1.45834Z\" fill=\"black\"/></svg>',\n 'types/exercise':\n '<svg width=\"27\" height=\"33\" viewBox=\"0 0 27 33\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19.9836 14.3248L13.3957 7.61539H2.49795C1.12408 7.61539 0.0124901 8.75769 0.0124901 10.1538L0 30.4615C0 31.8577 1.11159 33 2.48546 33H17.4857C18.8596 33 19.9836 31.8577 19.9836 30.4615V14.3248ZM1.87347 30.462C1.87371 30.8189 2.15862 31.0962 2.48546 31.0962H17.4857C17.8249 31.0962 18.1102 30.8062 18.1102 30.4615V16.2287H11.5222V9.51923H2.49795C2.17097 9.51923 1.88596 9.79672 1.88596 10.1538L1.87347 30.462ZM13.3957 14.3248H17.3462L13.3957 10.1538V14.3248Z\" fill=\"black\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M20.1647 0L26.7526 6.70945V22.8462C26.7526 24.2423 25.6285 25.3846 24.2546 25.3846H19.4616V23.4808H24.2546C24.5938 23.4808 24.8791 23.1908 24.8791 22.8462V8.6133H18.2912V1.90385H9.26691C8.93992 1.90385 8.65491 2.18133 8.65491 2.53846L8.65179 7.61538H6.77832L6.78144 2.53846C6.78144 1.14231 7.89303 0 9.26691 0H20.1647ZM24.1151 6.70945H20.1647V2.53846L24.1151 6.70945Z\" fill=\"black\"/><line x1=\"4\" y1=\"19.25\" x2=\"16\" y2=\"19.25\" stroke=\"black\" stroke-width=\"1.5\"/><line x1=\"4\" y1=\"22.25\" x2=\"16\" y2=\"22.25\" stroke=\"black\" stroke-width=\"1.5\"/><line x1=\"4\" y1=\"25.25\" x2=\"16\" y2=\"25.25\" stroke=\"black\" stroke-width=\"1.5\"/><line x1=\"4\" y1=\"28.25\" x2=\"16\" y2=\"28.25\" stroke=\"black\" stroke-width=\"1.5\"/></svg>',\n 'types/image':\n '<svg width=\"34\" height=\"26\" viewBox=\"0 0 34 26\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3.08885 0.400024C1.71214 0.400024 0.568848 1.54331 0.568848 2.92002V23.08C0.568848 24.4567 1.71214 25.6 3.08885 25.6H31.1688C32.5456 25.6 33.6888 24.4567 33.6888 23.08V2.92002C33.6888 1.54331 32.5456 0.400024 31.1688 0.400024H3.08885ZM3.08885 2.56002H31.1688C31.3868 2.56002 31.5288 2.70206 31.5288 2.92002V17.23L26.0838 12.8762C25.7281 12.5879 25.181 12.564 24.8013 12.8199L19.6937 16.3299L12.7637 10.7161C12.5429 10.5361 12.249 10.4489 11.9649 10.4798C11.7877 10.5009 11.6161 10.567 11.4699 10.6711L2.72874 16.7011V2.91993C2.72874 2.70197 2.87077 2.55993 3.08874 2.55993L3.08885 2.56002ZM19.6488 5.44002C17.8728 5.44002 16.4088 6.90393 16.4088 8.68002C16.4088 10.4561 17.8728 11.92 19.6488 11.92C21.4249 11.92 22.8888 10.4561 22.8888 8.68002C22.8888 6.90393 21.4249 5.44002 19.6488 5.44002ZM19.6488 7.60002C20.2578 7.60002 20.7288 8.07112 20.7288 8.68002C20.7288 9.28893 20.2578 9.76002 19.6488 9.76002C19.0399 9.76002 18.5688 9.28893 18.5688 8.68002C18.5688 8.07112 19.0399 7.60002 19.6488 7.60002ZM12.0438 12.91L18.9738 18.5123C19.3296 18.8006 19.8767 18.8245 20.2563 18.5686L25.3525 15.0586L31.5287 19.9974V23.0799C31.5287 23.2979 31.3866 23.4399 31.1687 23.4399H3.08867C2.8707 23.4399 2.72867 23.2979 2.72867 23.0799V19.3338L12.0438 12.91Z\" fill=\"black\"/></svg>',\n 'types/lesson_planning':\n '<svg width=\"24\" height=\"30\" viewBox=\"0 0 24 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M23.617 7.92935L15.8313 0H2.95213C1.32846 0 0.014761 1.35 0.014761 3L0 27C0 28.65 1.3137 30 2.93737 30H20.6649C22.2886 30 23.617 28.65 23.617 27V7.92935ZM2.2141 27.0005C2.21438 27.4223 2.55109 27.75 2.93737 27.75H20.6649C21.0658 27.75 21.4029 27.4074 21.4029 27V10.1794H13.6172V2.25H2.95213C2.56569 2.25 2.22886 2.57793 2.22886 3L2.2141 27.0005ZM15.8313 7.92935H20.5L15.8313 3V7.92935Z\" fill=\"black\"/><path d=\"M4 19.8H5.66667V18.2H4V19.8ZM4 23H5.66667V21.4H4V23ZM4 16.6H5.66667V15H4V16.6ZM7.33333 19.8H19V18.2H7.33333V19.8ZM7.33333 23H19V21.4H7.33333V23ZM7.33333 15V16.6H19V15H7.33333Z\" fill=\"black\"/></svg>',\n 'types/total':\n '<svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"36\" height=\"36\" fill=\"white\"/><rect x=\"3\" y=\"3\" width=\"8\" height=\"8\" fill=\"black\"/><rect x=\"3\" y=\"14\" width=\"8\" height=\"8\" fill=\"black\"/><rect x=\"3\" y=\"25\" width=\"8\" height=\"8\" fill=\"black\"/><rect x=\"14\" y=\"3\" width=\"8\" height=\"8\" fill=\"black\"/><rect x=\"14\" y=\"14\" width=\"8\" height=\"8\" fill=\"black\"/><rect x=\"14\" y=\"25\" width=\"8\" height=\"8\" fill=\"black\"/><rect x=\"25\" y=\"3\" width=\"8\" height=\"8\" fill=\"black\"/><rect x=\"25\" y=\"14\" width=\"8\" height=\"8\" fill=\"black\"/><rect x=\"25\" y=\"25\" width=\"8\" height=\"8\" fill=\"black\"/></svg>',\n 'types/video':\n '<svg width=\"36\" height=\"27\" viewBox=\"0 0 36 27\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6.45 0.169922C2.89915 0.169922 0 3.06907 0 6.61992V20.3799C0 23.9308 2.89915 26.8299 6.45 26.8299H28.81C32.3609 26.8299 35.26 23.9308 35.26 20.3799V6.61992C35.26 3.06907 32.3609 0.169922 28.81 0.169922H6.45ZM6.45 2.74992H28.81C30.9768 2.74992 32.68 4.45311 32.68 6.61992V20.3799C32.68 22.5467 30.9768 24.2499 28.81 24.2499H6.45C4.28319 24.2499 2.58 22.5467 2.58 20.3799V6.61992C2.58 4.45311 4.28319 2.74992 6.45 2.74992ZM13.8004 6.61992C13.451 6.60816 13.1134 6.73918 12.8615 6.98273C12.6112 7.22629 12.4701 7.56057 12.4701 7.9099V19.0899C12.4667 19.7517 12.9656 20.311 13.6257 20.3799C13.8861 20.4068 14.1481 20.3564 14.3782 20.2321L24.6982 14.6421C25.1165 14.417 25.3751 13.9803 25.3751 13.5066C25.3751 13.0313 25.1165 12.5962 24.6982 12.3712L14.3782 6.78117C14.2002 6.68207 14.0037 6.62664 13.8004 6.61992H13.8004ZM15.0501 10.0868L21.3659 13.4999L15.0501 16.9265V10.0868Z\" fill=\"black\"/></svg>',\n 'types/worksheet':\n '<svg width=\"29\" height=\"28\" viewBox=\"0 0 29 28\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M27.4071 8.81132C26.4479 7.8521 24.886 7.8521 23.9267 8.81132C23.6314 9.10664 21.7469 10.9934 21.4592 11.281L21.4581 4.78081C21.4581 4.12345 21.2022 3.50549 20.7373 3.04066L18.4175 0.720807C17.9526 0.255951 17.3347 3.05176e-05 16.6773 3.05176e-05H2.59083C1.23347 3.05176e-05 0.129883 1.10362 0.129883 2.46098V25.5391C0.129883 26.8965 1.23347 28.0001 2.59083 28.0001H18.9971C20.3545 28.0001 21.4581 26.8965 21.4581 25.5391V18.246L27.407 12.2915C28.3684 11.3301 28.3684 9.77368 27.407 8.8111L27.4071 8.81132ZM16.5364 1.6408C16.6917 1.6408 16.9903 1.61346 17.2572 1.88143L19.577 4.20129C19.8373 4.4616 19.8177 4.74706 19.8177 4.92206H16.5363L16.5364 1.6408ZM19.8177 25.5394C19.8177 25.9922 19.4502 26.3597 18.9974 26.3597H2.59108C2.13827 26.3597 1.77077 25.9922 1.77077 25.5394V2.4612C1.77077 2.00839 2.13827 1.64089 2.59108 1.64089H14.8957V5.74233C14.8957 6.19514 15.2632 6.56264 15.716 6.56264H19.8174V12.924L17.397 15.3466L16.2376 16.506C16.1479 16.5957 16.0801 16.7061 16.0396 16.8264L14.8792 20.3068C14.7807 20.6022 14.8573 20.927 15.0772 21.1468C15.297 21.3667 15.6218 21.4432 15.9172 21.3448L19.3975 20.1843C19.5179 20.1439 19.6283 20.0761 19.718 19.9864L19.8175 19.8868L19.8177 25.5394ZM17.978 17.0859L19.1385 18.2463L18.6955 18.6893L16.9554 19.269L17.5351 17.5288L17.978 17.0859ZM20.2979 17.0859L19.1374 15.9254C19.7554 15.3075 22.4985 12.5609 23.0804 11.9791L24.2408 13.1396L20.2979 17.0859ZM26.2468 11.1325L25.4013 11.9791L24.2408 10.8186L25.0863 9.97206C25.4068 9.6527 25.9263 9.6527 26.2468 9.97206C26.5661 10.2925 26.5683 10.811 26.2468 11.1325Z\" fill=\"black\"/><path d=\"M15.7159 8.20319H4.23145C3.77863 8.20319 3.41113 8.57069 3.41113 9.0235C3.41113 9.47632 3.77863 9.84382 4.23145 9.84382H15.7159C16.1687 9.84382 16.5362 9.47632 16.5362 9.0235C16.5362 8.57069 16.1687 8.20319 15.7159 8.20319Z\" fill=\"black\"/><path d=\"M12.4346 11.4845H4.23145C3.77863 11.4845 3.41113 11.852 3.41113 12.3048C3.41113 12.7576 3.77863 13.1251 4.23145 13.1251H12.4346C12.8874 13.1251 13.2549 12.7576 13.2549 12.3048C13.2549 11.852 12.8874 11.4845 12.4346 11.4845Z\" fill=\"black\"/><path d=\"M12.4346 14.7655H4.23145C3.77863 14.7655 3.41113 15.133 3.41113 15.5859C3.41113 16.0387 3.77863 16.4062 4.23145 16.4062H12.4346C12.8874 16.4062 13.2549 16.0387 13.2549 15.5859C13.2549 15.133 12.8874 14.7655 12.4346 14.7655Z\" fill=\"black\"/><path d=\"M12.4346 18.0468H4.23145C3.77863 18.0468 3.41113 18.4143 3.41113 18.8672C3.41113 19.32 3.77863 19.6875 4.23145 19.6875H12.4346C12.8874 19.6875 13.2549 19.32 13.2549 18.8672C13.2549 18.4143 12.8874 18.0468 12.4346 18.0468Z\" fill=\"black\"/><path d=\"M15.7163 23.0782H10.7944C10.3416 23.0782 9.97412 23.4457 9.97412 23.8985C9.97412 24.3513 10.3416 24.7188 10.7944 24.7188H15.7163C16.1691 24.7188 16.5366 24.3513 16.5366 23.8985C16.5366 23.4457 16.1691 23.0782 15.7163 23.0782V23.0782Z\" fill=\"black\"/></svg>',\n layers:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#5f6368\"><path d=\"M480-118 120-398l66-50 294 228 294-228 66 50-360 280Zm0-202L120-600l360-280 360 280-360 280Zm0-280Zm0 178 230-178-230-178-230 178 230 178Z\"/></svg>',\n 'level-1':\n '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4 12.9L3 13.8L11 20.7C11.6 21.2 12.4 21.2 13 20.7L21 13.8L20 12.9L12 19.8L4 12.9ZM11 3.40002L4 9.40002C3.4 9.90002 3.4 10.7 4 11.1L11 17.2C11.6 17.7 12.4 17.7 13 17.2L20 11.1C20.5 10.6 20.5 9.80002 20 9.40002L13 3.30002C12.4 2.90002 11.6 2.90002 11 3.40002Z\" fill=\"#003B7C\"/></svg>',\n 'level-2':\n '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M20.3 9.90005C20.2 9.70005 20.1 9.60005 20 9.40005L13 3.30005C12.5 2.80005 11.5 2.80005 11 3.30005L4 9.40005C3.5 9.90005 3.5 10.7 4 11.1L11 17.2C11.5 17.7 12.5 17.7 13 17.2L20 11.1C20.3 10.8 20.4 10.5 20.4 10.2C20.4 10.1 20.4 10 20.3 9.90005ZM5 10.3L12 4.20005L19 10.3L12 16.4L5 10.3ZM20 12.9L12 19.8L4 12.9L3 13.8L11 20.7001C11.5 21.2001 12.5 21.2001 13 20.7001L21 13.8L20 12.9Z\" fill=\"#003B7C\"/><path opacity=\"0.3\" d=\"M19 10.3L12 16.3L5 10.3L12 4.19995L19 10.3Z\" fill=\"#003B7C\"/></svg>',\n 'level-3':\n '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M20.3 9.90005C20.2 9.70005 20.1 9.60005 20 9.40005L13 3.30005C12.5 2.80005 11.5 2.80005 11 3.30005L4 9.40005C3.5 9.90005 3.5 10.7 4 11.1L11 17.2C11.5 17.7 12.5 17.7 13 17.2L20 11.1C20.3 10.8 20.4 10.5 20.4 10.2C20.4 10.1 20.4 10 20.3 9.90005ZM5 10.3L12 4.20005L19 10.3L12 16.4L5 10.3ZM20 12.9L12 19.8L4 12.9L3 13.8L11 20.7001C11.5 21.2001 12.5 21.2001 13 20.7001L21 13.8L20 12.9Z\" fill=\"#003B7C\"/></svg>',\n};\n\n@Injectable({ providedIn: 'root' })\nexport class SvgIconsService {\n private initialized = false;\n\n constructor(private matIconRegistry: MatIconRegistry, private domSanitizer: DomSanitizer) {\n this.init();\n }\n\n init() {\n if (this.initialized) {\n return;\n }\n for (const icon of Object.keys(ICONS)) {\n //console.log('!svg-inline-loader?classPrefix!src/assets/svg/' + icon + '.svg');\n this.matIconRegistry.addSvgIconLiteral(\n icon,\n this.domSanitizer.bypassSecurityTrustHtml((ICONS as any)[icon] as string)\n );\n }\n this.initialized = true;\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ApiModule as JavaApiModule, Configuration as JavaConfig } from './java-api';\nimport {\n ConfigHelperService,\n NG_META_WIDGETS_LIB_CONFIGURATION,\n NgMetaWidgetsLibConfiguration,\n} from './config-helper.service';\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { MatListModule } from '@angular/material/list';\nimport { MatSort, MatSortModule } from '@angular/material/sort';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { QualityMatrixFilterComponent } from './components/filter/quality-matrix-filter.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { QualityMatrixComponent } from './components/quality-matrix/quality_matrix';\nimport {\n MatDatepicker,\n MatDatepickerInput,\n MatDatepickerModule,\n MatDatepickerToggle,\n MatDateRangeInput,\n MatDateRangePicker,\n} from '@angular/material/datepicker';\nimport { DatepickerComponent } from './components/filter/datepicker/datepicker.component';\nimport { DonutChartComponent } from './components/donut-chart/donut-chart.component';\nimport { DonutChartPipe } from './components/donut-chart/donut-chart.pipe';\nimport { provideCharts, withDefaultRegisterables } from 'ng2-charts';\nimport { SvgIconsService } from './core/svg-icons.service';\nimport { NodeListComponent } from './components/node-list/node-list.component';\nimport { MaterialIssuesComponent } from './components/material-issues/material-issues.component';\nimport { CollectionIssuesComponent } from './components/collection-issues/collection-issues.component';\nimport { ProgressSpinnerComponent } from './components/loading_indicator/progress-spinner/progress-spinner.component';\nimport { ScrollMarkerDirective } from './components/quality-matrix/scroll-marker.directive';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n declarations: [],\n exports: [CollectionIssuesComponent, MaterialIssuesComponent, NodeListComponent, QualityMatrixComponent],\n imports: [\n CommonModule,\n TranslateModule,\n CollectionIssuesComponent,\n MaterialIssuesComponent,\n NodeListComponent,\n BrowserModule,\n JavaApiModule.forRoot(() => new JavaConfig()),\n MatCardModule,\n MatTreeModule,\n DonutChartComponent,\n DonutChartPipe,\n BrowserAnimationsModule,\n MatIconModule,\n MatSliderModule,\n QualityMatrixComponent,\n MatSlideToggleModule,\n MatButtonModule,\n MatProgressSpinnerModule,\n MatTableModule,\n MatGridListModule,\n MatFormFieldModule,\n MatInputModule,\n MatSidenavModule,\n FormsModule,\n MatSelectModule,\n ReactiveFormsModule,\n MatTooltipModule,\n MatListModule,\n MatSort,\n MatSortModule,\n MatCheckbox,\n TranslateModule,\n QualityMatrixFilterComponent,\n MatDateRangeInput,\n MatDatepickerToggle,\n MatDatepickerModule,\n MatDateRangePicker,\n MatDatepickerInput,\n MatDatepicker,\n DatepickerComponent,\n ProgressSpinnerComponent,\n ScrollMarkerDirective,\n ],\n providers: [provideHttpClient(withInterceptorsFromDi()), provideCharts(withDefaultRegisterables())],\n})\nexport class NgMetaWidgetsLibModule {\n constructor(private readonly svgIconsService: SvgIconsService) {\n // we inject the service here to make sure the icons are registered (the init() method is called in the constructor)\n }\n static forRoot(params: NgMetaWidgetsLibConfiguration): ModuleWithProviders<NgMetaWidgetsLibModule> {\n return {\n ngModule: NgMetaWidgetsLibModule,\n providers: [\n ConfigHelperService,\n { provide: NG_META_WIDGETS_LIB_CONFIGURATION, useValue: params },\n {\n provide: JavaConfig,\n useFactory: () => {\n return new JavaConfig({\n basePath: params.apiPath,\n withCredentials: true,\n });\n },\n },\n ],\n };\n }\n}\n","import { Component, Input, signal } from '@angular/core';\nimport { BehaviorSubject, forkJoin, Observable, of } from 'rxjs';\nimport { finalize, map, take, tap } from 'rxjs/operators';\nimport { MetaApiService } from '../meta-api.service';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { EditorialLinkService } from '../components/editorial-link-service/editorial-link.service';\nimport { MatrixWithCounts, QualityMatrixHeader } from '../java-api';\nimport { AsyncPipe, NgClass, NgForOf, NgIf } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTableModule } from '@angular/material/table';\nimport { ProgressSpinnerComponent } from '../components/loading_indicator/progress-spinner/progress-spinner.component';\n\n@Component({\n selector: 'metaqs2-tree-collection-details',\n templateUrl: './tree-collection-details.component.html',\n standalone: true,\n styleUrls: ['./tree-collection-details.component.scss'],\n imports: [\n TranslateModule,\n AsyncPipe,\n NgClass,\n MatCardModule,\n MatIcon,\n NgIf,\n NgForOf,\n MatTableModule,\n ProgressSpinnerComponent,\n ],\n})\nexport class TreeCollectionDetailsComponent {\n readonly recentQualityMatrix$ = new BehaviorSubject<MatrixWithCounts>({ columns: [], rows: [] });\n\n @Input({ required: true })\n set collectionId(id: string) {\n this.loadDataForCollection(id);\n }\n\n @Input()\n pageTitle: string = '';\n\n isLoading = signal(true);\n dataColumns: Array<QualityMatrixHeader> = [];\n\n constructor(\n private readonly metaApi: MetaApiService,\n private readonly translate: TranslateService,\n private readonly linkService: EditorialLinkService\n ) {}\n\n private async loadDataForCollection(collectionId: string): Promise<void> {\n this.isLoading.set(true);\n this.metaApi\n .getCollectionCompleteness(collectionId)\n .pipe(\n finalize(() => {\n this.isLoading.set(false);\n }),\n tap((qm) => {\n this.dataColumns = qm.columns.map((c) => c);\n })\n )\n .subscribe((qm) => this.recentQualityMatrix$.next(qm));\n }\n\n private extractCollectionIdFromVocabUrl(url: string): string {\n return url.substring(url.lastIndexOf('/') + 1);\n }\n\n get columnIds() {\n return this.dataColumns.map((c) => c.id);\n }\n\n translateCollectionIssues(entries: string[]) {\n if (!entries.length) {\n return of('');\n }\n\n const allTranslations = forkJoin(\n entries.map((entry) => {\n return this.translate.get(`quality_matrix.${entry}`).pipe(take(1)) as Observable<string>;\n })\n );\n return allTranslations.pipe(take(1)).pipe(map((translations) => translations.join(', ')));\n }\n\n openCollection(id: string) {\n const collectionId = this.extractCollectionIdFromVocabUrl(id);\n this.linkService.openByCollectionId(collectionId);\n }\n\n async showMaterialWithIssue(collectionId: string, collectionTitel: string, issueType: string) {\n const translated = await this.translate.get('quality_matrix.' + issueType).toPromise();\n const title = collectionTitel + ' - ' + translated;\n return this.linkService.openByCollectionAndIssueType(collectionId, issueType, title);\n }\n\n protected readonly Math = Math;\n}\n","<mat-card>\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title>\n Qualitätsmetrik: {{pageTitle | translate}}{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n </mat-card-header>\n</mat-card>\n<mat-card>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n <table *ngIf=\"!isLoading()\" [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"recentQualityMatrix$.value.rows\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"row-header\" sticky>\n <th mat-header-cell *matHeaderCellDef>Sammlung</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"row-header {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n <a (click)=\"openCollection(row.meta.id)\">\n <mat-icon [svgIcon]=\"'level-' + Math.min(3, row.meta.level+1)\"></mat-icon>\n {{row.meta.label}}\n </a>\n </td>\n </ng-container>\n\n <!-- Data Columns -->\n <ng-container *ngFor=\"let column of dataColumns\" [matColumnDef]=\"column.id\">\n <th mat-header-cell *matHeaderCellDef>{{ \"quality_matrix.\" + column.label | translate }}</th>\n <td mat-cell *matCellDef=\"let row\">\n @if ( column.id === 'collection_issues' ) {\n {{ translateCollectionIssues(row.counts[column.id]) | async }}\n } @else {\n <a *ngIf=\"row.counts[column.id]\" (click)=\"showMaterialWithIssue(row.meta.id, row.meta.label, column.id)\">\n {{ row.counts[column.id] }}\n </a>\n }\n </td>\n </ng-container>\n\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['row-header'].concat(columnIds); sticky:true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['row-header'].concat(columnIds)\"></tr>\n </table>\n</mat-card>\n","import { Observable, Subject } from 'rxjs';\nexport interface RequestData {\n basePath: string;\n collectionId: string;\n searchTerm: string;\n oerOnly: boolean;\n}\n\nexport class InlineWorker {\n private readonly worker: Worker;\n private onMessage = new Subject<MessageEvent>();\n private onError = new Subject<ErrorEvent>();\n\n private func = () => {\n // START OF WORKER THREAD CODE\n console.debug('Start worker thread, wait for postMessage: ');\n\n const maxConcurrentRequests = 10; // Limit the number of concurrent fetch requests\n let activeRequests = 0;\n let requestQueue: { data: RequestData; resolve: any; reject: any }[] = [];\n\n // Function to process the next request in the queue\n function processQueue() {\n if (activeRequests >= maxConcurrentRequests || requestQueue.length === 0) {\n return; // Exit if max requests are active or queue is empty\n }\n // @ts-ignore\n const { data, resolve, reject } = requestQueue.shift();\n activeRequests++;\n\n // Perform the fetch request\n const { basePath, collectionId, searchTerm, oerOnly } = data;\n searchForTypeAndCollection(basePath, searchTerm, oerOnly)\n .then(\n (response) => (response.ok ? response : Promise.reject(response)),\n (error) => Promise.reject(error)\n )\n .then((response) => response.json())\n .then((data) => {\n resolve({ collectionId, data });\n })\n .catch((error) => {\n reject(error); // Handle the error\n })\n .finally(() => {\n activeRequests--; // Decrement active request count\n processQueue(); // Process the next request in the queue\n });\n }\n\n // Add a new fetch request to the queue\n function enqueueRequest(event: MessageEvent) {\n return new Promise((resolve, reject) => {\n try {\n requestQueue.push({ data: event.data, resolve, reject });\n processQueue(); // Start processing the queue\n } catch (error) {\n console.error('Error enqueuing request:', error);\n }\n });\n }\n\n const searchForTypeAndCollection = (basePath: string, searchTerm: string, oerOnly: boolean = false) => {\n //strip trailing slash from basePath, if present\n const searchUrl = new URL(basePath.replace(/\\/$/, '') + '/collections/v2/material/search');\n searchUrl.searchParams.set('term', searchTerm);\n searchUrl.searchParams.set('oerOnly', oerOnly ? 'true' : 'false');\n return fetch(searchUrl, { credentials: 'include' });\n };\n\n self.onmessage = (evt: MessageEvent) => {\n enqueueRequest(evt)\n .then((data) => {\n postMessage(data);\n })\n .catch((error) => {\n postMessage({ success: false, error: error.message });\n });\n };\n // END OF WORKER THREAD CODE\n };\n private basePath: any;\n\n constructor({ basePath }: { basePath: string }) {\n this.basePath = basePath;\n const WORKER_ENABLED = !!Worker;\n\n if (WORKER_ENABLED) {\n const functionBody = this.func\n .toString()\n .replace(/^[^{]*{\\s*/, '')\n .replace(/\\s*}[^}]*$/, '');\n\n this.worker = new Worker(URL.createObjectURL(new Blob([functionBody], { type: 'text/javascript' })));\n\n this.worker.onmessage = (data) => {\n this.onMessage.next(data);\n };\n\n this.worker.onerror = (data) => {\n console.error('workers error: ', data);\n this.onError.next(data);\n };\n } else {\n throw new Error('WebWorker is not enabled');\n }\n }\n\n postMessage(data: Partial<RequestData>) {\n this.worker.postMessage({ basePath: this.basePath, ...data });\n }\n\n onmessage(): Observable<MessageEvent> {\n return this.onMessage.asObservable();\n }\n\n onerror(): Observable<ErrorEvent> {\n return this.onError.asObservable();\n }\n //TODO: implement graceful shutdown and abort outstanding requests\n terminate() {\n if (this.worker) {\n this.worker.terminate();\n }\n }\n}\n","import { Component, Inject, Input, OnDestroy, OnInit, signal } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { MetaApiService } from '../meta-api.service';\nimport { ConfigHelperService } from '../config-helper.service';\nimport { QualityMatrix } from '../java-api';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { InlineWorker } from './inline-worker';\nimport { AsyncPipe, DOCUMENT, NgClass, NgForOf, NgIf } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { ProgressSpinnerComponent } from '../components/loading_indicator/progress-spinner/progress-spinner.component';\n\nexport interface DataColumn {\n id: string;\n icon: string;\n label: string;\n level?: number;\n}\n\n@Component({\n selector: 'metaqs2-tree-search-counts',\n standalone: true,\n templateUrl: './tree-search-counts.component.html',\n styleUrls: ['./tree-search-counts.component.scss'],\n imports: [\n TranslateModule,\n AsyncPipe,\n NgClass,\n MatCardModule,\n MatIcon,\n NgIf,\n NgForOf,\n MatTableModule,\n MatSlideToggle,\n ReactiveFormsModule,\n ProgressSpinnerComponent,\n ],\n})\nexport class TreeSearchCountsComponent implements OnInit, OnDestroy {\n /**\n * default max count of columns that should be shown\n */\n readonly DEFAULT_COLUMN_LIMIT = 6;\n readonly COLLECTION_POSTFIX = '_collection';\n readonly SEARCH_POSTFIX = '_search';\n readonly searchCounts = new BehaviorSubject<Map<string, number>>(new Map<string, number>());\n readonly showOERonly = new FormControl({ value: true, disabled: false }, { nonNullable: true });\n readonly showAllColumns = new FormControl({ value: false, disabled: false }, { nonNullable: true });\n\n // convert this in an Obeservable\n protected materialCounts: QualityMatrix;\n public columns: DataColumn[];\n protected rowsLoaded: Map<string, boolean> = new Map<string, boolean>();\n\n isLoading = signal(true);\n private worker: InlineWorker;\n private selectedCollectionId: string;\n\n @Input()\n pageTitle: string;\n\n @Input({ required: true })\n set collectionId(id: string) {\n this.selectedCollectionId = id;\n this.loadDataForCollection(id);\n }\n get collectionId(): string {\n return this.selectedCollectionId;\n }\n\n constructor(\n private readonly metaApi: MetaApiService,\n private env: ConfigHelperService,\n @Inject(DOCUMENT)\n private readonly document: Document\n ) {}\n\n ngOnInit(): void {\n this.initOerFilter();\n }\n\n ngOnDestroy(): void {\n if (this.worker) {\n this.worker.terminate();\n }\n }\n\n private letTheWorkerSearch(): void {\n this.searchCounts.next(new Map<string, number>());\n this.rowsLoaded.clear();\n if (this.worker) {\n this.worker.terminate();\n }\n // applications that use us, may provide a relative URL for apiPath.\n // because the Worker runs under a ::blob url, we have to rebase the URL to the search API to the Document, we run in.\n const workerUrl = new URL(this.env.apiPath, this.document.baseURI).toString();\n this.worker = new InlineWorker({ basePath: workerUrl });\n this.worker.onmessage().subscribe((event) => {\n // one message per row\n let total = 0;\n\n Object.entries(event.data.data).forEach(([key, value]) => {\n // key is the material type, value is the count\n const columnKey = key + '_' + event.data.collectionId;\n total += value as number;\n this.searchCounts.value.set(columnKey, value as number);\n });\n this.searchCounts.value.set('totals_' + event.data.collectionId, total);\n this.searchCounts.next(this.searchCounts.value);\n this.rowsLoaded.set(event.data.collectionId, true);\n });\n\n this.worker.onerror().subscribe((data) => {\n console.error('in main thread', data);\n });\n\n this.materialCounts.rows.forEach((row) => {\n this.worker.postMessage({\n collectionId: row.meta.id,\n searchTerm: row.meta.label,\n oerOnly: this.showOERonly.value,\n });\n });\n }\n\n private initOerFilter(): void {\n this.showOERonly.valueChanges.subscribe(() => {\n this.loadDataForCollection(this.collectionId);\n });\n }\n\n private async loadDataForCollection(collectionId: string): Promise<void> {\n this.isLoading.set(true);\n this.materialCounts = await this.metaApi\n .getMaterialCountMatrixPerCollection(collectionId, this.showOERonly.value)\n .toPromise();\n //TODO: try to avoid to recalculate the columns on every change\n this.columns = this.materialCounts.columns.map((c) => {\n return {\n id: c.id,\n icon: 'total',\n label: c.label,\n level: c.level,\n };\n });\n\n this.letTheWorkerSearch();\n\n this.isLoading.set(false);\n }\n\n private extractCollectionIdFromVocabUrl(url: string): string {\n return url.substring(url.lastIndexOf('/') + 1);\n }\n\n openCollection(id: string) {\n const collectionId = this.extractCollectionIdFromVocabUrl(id);\n window.open(\n this.env.eduSharingPath +\n '/components/editorial-desk/?mode=render&viewType=single&ids=' +\n encodeURIComponent(collectionId)\n );\n }\n\n searchInEditor(materialType: string, searchTerm: string) {\n const filters: any = {};\n if (materialType !== 'totals') {\n filters['ccm:oeh_lrt_aggregated'] = [materialType];\n }\n if (this.showOERonly.value) {\n filters['virtual:editorial_license'] = ['oer'];\n }\n const url =\n this.env.eduSharingPath +\n '/components/editorial-desk?mode=audit_metaqs&' +\n 'q=' +\n encodeURIComponent(searchTerm) +\n '&' +\n 'title=' +\n encodeURIComponent('MetaQS - Suchergebnisse für \"' + searchTerm + '\"') +\n '&' +\n 'filters=' +\n encodeURIComponent(JSON.stringify(filters)) +\n '&' +\n 'panel=contents&tab=4&';\n\n window.open(url);\n }\n\n showCollectionItems(collectionId: string, collectionName: string, materialType: string) {\n const id = this.extractCollectionIdFromVocabUrl(collectionId);\n const filters: any = {\n //\"virtual:collection_id_primary\": [id], //works often, but not always\n 'virtual:metaqs_collection_id': [id],\n };\n if (materialType !== 'totals') {\n filters['ccm:oeh_lrt_aggregated'] = [materialType];\n }\n if (this.showOERonly.value) {\n filters['virtual:editorial_license'] = ['oer'];\n }\n window.open(\n this.env.eduSharingPath +\n '/components/editorial-desk?mode=audit_metaqs&' +\n 'title=' +\n encodeURIComponent('MetaQS - Sammlungsinhalte für \"' + collectionName + '\"') +\n '&' +\n 'filters=' +\n encodeURIComponent(JSON.stringify(filters)) +\n '&' +\n 'panel=contents&tab=4&'\n );\n }\n\n columnIdent(_index: number, col: { id: string }) {\n return col.id;\n }\n\n get filteredColumns() {\n // return either all or just a given amount of columns\n return this.showAllColumns.value ? this.columns : this.columns.slice(0, this.DEFAULT_COLUMN_LIMIT);\n }\n\n get columnNames() {\n return this.filteredColumns.map((c) => c.id);\n }\n\n get typeColumns(): string[] {\n return this.columnNames.map((c) => c + '_type');\n }\n\n get collectionColumns(): string[] {\n return this.columnNames.map((c) => c + this.COLLECTION_POSTFIX);\n }\n\n get searchColumns(): string[] {\n return this.columnNames.map((c) => c + this.SEARCH_POSTFIX);\n }\n\n get alternatingDataColumns(): string[] {\n return this.collectionColumns.flatMap((e, i) => [e, this.searchColumns[i]]);\n }\n\n protected readonly Math = Math;\n}\n","<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title>Material in Sammlungen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"toolbar\">\n <div style=\"flex: 1 1 auto;\"></div>\n <div class=\"actionbar\">\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showOERonly\">\n zeige nur OER\n </mat-slide-toggle>\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showAllColumns\">\n zeige alle Typen\n </mat-slide-toggle>\n </div>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n <table *ngIf=\"columns\" [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"materialCounts.rows\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Label Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Sammlung</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"label-col {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n <a (click)=\"openCollection(row.meta.id)\">\n <mat-icon [svgIcon]=\"'level-' + Math.min(3, row.meta.level+1)\"></mat-icon>\n {{ row.meta.label }}\n </a>\n </td>\n </ng-container>\n <!-- one column for the MaterialType spanning the collection and search columns-->\n <ng-container *ngFor=\"let col of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"2\" mat-header-cell *matHeaderCellDef class=\"mat-cell-level-{{col.level}}\">{{col.label}}</th>\n </ng-container>\n <!-- /source -->\n <!-- collection Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"column.id + COLLECTION_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef>in Sammlung</th>\n <td [class.noMaterial]=\"!row.counts[column.id]?.sufficient || row.counts[column.id]?.sufficient <= 1\"\n [class.fewMaterials]=\"1 < row.counts[column.id]?.sufficient && row.counts[column.id]?.sufficient <= 3\"\n class=\"collection-data-cell\"\n mat-cell *matCellDef=\"let row\">\n <a (click)=\"showCollectionItems(row.meta.id, row.meta.label, column.id)\">\n {{ row.counts[column.id]?.sufficient || '0' }}\n </a>\n </td>\n </ng-container>\n <!-- /collection Data Columns -->\n <!-- search Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns let index = index; trackBy:columnIdent\" [matColumnDef]=\"column.id + SEARCH_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef>Suche</th>\n <td class=\"search-data-cell\" mat-cell *matCellDef=\"let row\">\n <a (click)=\"searchInEditor(column.id, row.meta.label)\">\n @if ( (searchCounts | async)?.has(column.id + '_' + row.meta.id) ) {\n {{ (searchCounts | async)?.get(column.id + '_' + row.meta.id) }}\n } @else if (rowsLoaded.has(row.meta.id)) {\n 0\n } @else {\n loading… \n }\n </a>\n </td>\n </ng-container>\n <!-- /search Data Columns -->\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat( typeColumns ); sticky: true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"alternatingDataColumns; sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(alternatingDataColumns)\"></tr>\n </table>\n</mat-card>\n","import { Component, ElementRef, Input, LOCALE_ID, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatDatepicker, MatDatepickerInput, MatDatepickerToggle } from '@angular/material/datepicker';\nimport { MatFormField, MatLabel, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { DateTime } from 'luxon';\nimport { LuxonDateAdapter, MAT_LUXON_DATE_ADAPTER_OPTIONS } from '@angular/material-luxon-adapter';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MatDateFormats, MatRipple } from '@angular/material/core';\n\nexport const datePickerFormats: MatDateFormats = {\n parse: {\n dateInput: 'LLLL yyyy',\n },\n display: {\n dateInput: 'LLLL yyyy',\n monthYearLabel: 'LLLL yyyy',\n dateA11yLabel: 'LLL',\n monthYearA11yLabel: 'MMMM yyyy',\n },\n};\n\n@Component({\n selector: 'metaqs2-monthpicker',\n standalone: true,\n imports: [\n FormsModule,\n MatDatepicker,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatFormField,\n MatInput,\n MatLabel,\n MatSuffix,\n ReactiveFormsModule,\n MatRipple,\n ],\n providers: [\n {\n provide: DateAdapter,\n useClass: LuxonDateAdapter,\n deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS],\n },\n { provide: MAT_DATE_FORMATS, useValue: datePickerFormats },\n //provideLuxonDateAdapter(datePickerFormats),\n { provide: LOCALE_ID, useValue: 'de-DE' },\n { provide: MAT_DATE_LOCALE, useValue: 'de-DE' },\n { provide: MAT_LUXON_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true, firstDayOfWeek: 1 } },\n ],\n templateUrl: './monthpicker.component.html',\n styleUrl: './monthpicker.component.css',\n})\n/**\n * Theoretically, this component should be able to handle both monthly and daily date ranges.\n * But I am unable to find a way to change the date format of the datepicker\n */\nexport class MonthpickerComponent implements OnInit, OnDestroy {\n @Input()\n startView: 'month' | 'year' | 'multi-year' = 'year';\n @Input({ required: true })\n inputGroup: FormGroup<{ start: FormControl<DateTime<boolean>>; end: FormControl<DateTime<boolean>> }>;\n @Input()\n disabled: boolean = false;\n\n @ViewChild('start', {\n read: ElementRef<HTMLInputElement>,\n static: true,\n })\n protected start!: ElementRef<HTMLInputElement>;\n\n @ViewChild('ripple', {\n read: MatRipple,\n static: true,\n })\n protected readonly ripple!: MatRipple;\n\n\n protected setStart(date: DateTime<boolean>, picker: MatDatepicker<DateTime<boolean>>): void {\n this.inputGroup.controls.start.setValue(date);\n picker.close();\n }\n\n protected setEnd(date: DateTime<boolean>, picker: MatDatepicker<DateTime<boolean>>): void {\n this.inputGroup.controls.end.setValue(date.endOf('month'));\n picker.close();\n }\n\n ngOnInit() {\n this.focus();\n }\n\n ngOnDestroy(): void {\n //defer this to avoid an ExpressionChangedAfterItHasBeenCheckedError on the parent component\n Promise.resolve().then(() => this.inputGroup.reset());\n }\n\n focus() {\n this.start?.nativeElement.focus();\n this.ripple.launch({\n centered: true, // Material bug: disabled ripples do not trigger unless centered\n radius: 1000,\n animation: {\n exitDuration: 1000,\n },\n });\n }\n}\n","<!--\n<mat-card>\n <mat-card-header>\n <mat-card-title> Monatlicher Vergleich </mat-card-title>\n </mat-card-header>\n <mat-card-content [formGroup]=\"inputGroup\">\n </!-- start date --/>\n -->\n<div [formGroup]=\"inputGroup\" matRipple #ripple=\"matRipple\" [matRippleDisabled]=\"true\">\n <mat-form-field>\n <mat-label>Zeitpunkt 1</mat-label>\n <input matInput\n #start\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker1\" formControlName=\"start\"\n placeholder=\"Starts date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker1\"></mat-datepicker-toggle>\n <mat-datepicker\n [disabled]=\"disabled\"\n #picker1\n [startAt]=\"inputGroup.controls.start.defaultValue\"\n [startView]=\"startView\"\n (monthSelected)=\"setStart($event, picker1)\"\n\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /start date -->\n <!-- end date -->\n <mat-form-field>\n <mat-label>Zeitpunkt2</mat-label>\n <input matInput\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker2\"\n formControlName=\"end\"\n placeholder=\"End date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker\n [disabled]=\"disabled\"\n #picker2\n [startAt]=\"inputGroup.controls.end.value\"\n [startView]=\"startView\"\n (monthSelected)=\"setEnd($event, picker2)\"\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /end date -->\n</div>\n<!--\n </mat-card-content>\n</mat-card>\n-->\n","import { Component, DestroyRef, effect, Input, OnInit, signal, ViewChild } from '@angular/core';\nimport { ChartConfiguration, ChartDataset } from 'chart.js';\nimport { BaseChartDirective } from 'ng2-charts';\nimport { DateTime, DateTimeUnit } from 'luxon';\nimport { MatCard, MatCardContent, MatCardHeader, MatCardTitle } from '@angular/material/card';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MonthpickerComponent } from './monthpicker/monthpicker.component';\nimport { Count, MaterialCountFilter } from '../java-api';\nimport { MetaApiService } from '../meta-api.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { AsyncPipe, NgIf } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged, filter, finalize, map, switchMap, take, tap } from 'rxjs/operators';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { ProgressSpinnerComponent } from '../components/loading_indicator/progress-spinner/progress-spinner.component';\n\n@Component({\n selector: 'metaqs2-collection-count-history',\n standalone: true,\n imports: [\n BaseChartDirective,\n MonthpickerComponent,\n MatCard,\n MatCardHeader,\n MatCardTitle,\n MatCardContent,\n AsyncPipe,\n ReactiveFormsModule,\n NgIf,\n MatSlideToggle,\n FormsModule,\n ProgressSpinnerComponent,\n ],\n templateUrl: './collection-count-history.component.html',\n styleUrl: './collection-count-history.component.scss',\n})\nexport class CollectionCountHistoryComponent implements OnInit {\n @ViewChild(BaseChartDirective) chart?: BaseChartDirective;\n protected lineChartOptions: ChartConfiguration['options'] = {\n parsing: {\n xAxisKey: 'date',\n yAxisKey: 'count',\n },\n font: {\n family: 'Montserrat',\n },\n animation: false,\n };\n protected datapoints$ = new BehaviorSubject<ChartDataset<'line', Count[]>[]>([]);\n protected isLoading = signal(true);\n readonly range: FormGroup<{\n start: FormControl<DateTime<boolean>>;\n end: FormControl<DateTime<boolean>>;\n }> = new FormGroup({\n start: new FormControl(),\n end: new FormControl(),\n });\n protected granularities: DateTimeUnit[] = ['year', 'month', 'week', 'day'];\n protected granularity = new FormControl<DateTimeUnit>('month', { nonNullable: true });\n\n @Input()\n public pageTitle: string;\n public readonly isHistoryEnabled = signal(true);\n\n constructor(private readonly metaApi: MetaApiService, private readonly destroyRef: DestroyRef) {\n effect(() => {\n this.range.controls.end.reset();\n if (!this.isHistoryEnabled()) {\n this.range.controls.start.setValue(this.range.controls.end.value);\n } else {\n this.range.controls.start.reset();\n }\n });\n }\n\n ngOnInit(): void {\n this.registerDateRangeFilter();\n }\n\n registerDateRangeFilter() {\n this.range.valueChanges\n .pipe(\n filter((range): range is { start: DateTime; end: DateTime } => !!range.start && !!range.end),\n //the Material Datepicker emits the initial values 4 times when it starts, so we need to distinct them\n distinctUntilChanged((prev, curr) => {\n return prev.start === curr.start && prev.end === curr.end;\n }),\n switchMap((range) => {\n if (this.isHistoryEnabled()) {\n return this.loadData(range.start, range.end);\n } else {\n return this.loadData(range.end.startOf(this.granularity.value), range.end);\n }\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n this.metaApi\n .getTimerangeFilter()\n .pipe(take(1))\n .subscribe((rangeFilter) => {\n if (rangeFilter) {\n const startDate = DateTime.fromISO(rangeFilter.values.find((v) => v.id === 'rangeStart')?.label!, {\n zone: 'utc',\n }).startOf(this.granularity.value);\n const endDate = DateTime.fromISO(rangeFilter.values.find((v) => v.id === 'rangeEnd')?.label!, {\n zone: 'utc',\n }).endOf(this.granularity.value);\n this.range.setControl('start', new FormControl<DateTime>(startDate, { nonNullable: true }), {\n emitEvent: false,\n });\n this.range.setControl('end', new FormControl<DateTime>(endDate, { nonNullable: true }), { emitEvent: false });\n }\n });\n }\n\n private loadData(start?: DateTime<boolean>, end?: DateTime<boolean>) {\n this.isLoading.set(true);\n\n const request: MaterialCountFilter = {\n startDate: start?.toISO()!,\n endDate: end?.toISO()!,\n granularity: this.granularity.value,\n };\n\n return this.metaApi.getEditorialMaterialCounts(request).pipe(\n map((response) =>\n response.map((data) => {\n return {\n data: data.counts.map((count) => {\n return {\n date: DateTime.fromISO(count.date).toFormat('LLLL yyyy')!,\n count: count.count,\n };\n }),\n label: data.name,\n };\n })\n ),\n take(1),\n tap((datapoints) => {\n this.datapoints$.next(datapoints);\n }),\n finalize(() => this.isLoading.set(false))\n );\n }\n}\n","<mat-card appearance=\"outlined\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title>\n {{ pageTitle }}{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <div style=\"display: flex; gap: 0.5rem; align-items: center\">\n <div style=\"flex: 1 1 auto\"></div>\n <metaqs2-monthpicker *ngIf=\"isHistoryEnabled()\" [inputGroup]=\"range\"></metaqs2-monthpicker>\n <mat-slide-toggle [ngModel]=\"isHistoryEnabled()\" (ngModelChange)=\"isHistoryEnabled.set($event)\" [disabled]=\"isLoading()\">\n <label>Zeige historische Daten</label>\n </mat-slide-toggle>\n </div>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n\n <div [class.while-loading]=\"isLoading()\">\n <canvas\n baseChart\n [datasets]=\"(datapoints$ | async) || []\"\n [options]=\"lineChartOptions\"\n [type]=\"'line'\"\n ></canvas>\n </div>\n </mat-card-content>\n</mat-card>\n","import { Component, computed, DestroyRef, Directive, inject, Input, OnInit, signal } from '@angular/core';\nimport { MatCard, MatCardContent, MatCardHeader, MatCardModule, MatCardTitle } from '@angular/material/card';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, MatTable, MatTableModule } from '@angular/material/table';\nimport { BehaviorSubject, Observable, of, Subject, Unsubscribable } from 'rxjs';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AsyncPipe, NgForOf, NgIf } from '@angular/common';\nimport { MetaApiService } from '../meta-api.service';\nimport { Filter, MatrixRowWithCounts, MatrixWithCounts, QualityMatrixHeader } from '../java-api';\nimport { DateTime } from 'luxon';\nimport {\n distinctUntilChanged,\n filter,\n finalize,\n map,\n skipWhile,\n switchMap,\n take,\n tap,\n throttleTime,\n} from 'rxjs/operators';\nimport { FormControl, FormGroup, FormsModule } from '@angular/forms';\nimport { DatepickerComponent } from '../components/filter/datepicker/datepicker.component';\nimport { MatIcon } from '@angular/material/icon';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { ProgressSpinnerComponent } from '../components/loading_indicator/progress-spinner/progress-spinner.component';\nimport { EditorialLinkService } from '../components/editorial-link-service/editorial-link.service';\nimport { MatRipple } from '@angular/material/core';\n\nexport type PickKeysByPropertyType<TObject extends object, TPropertyType> = {\n [TKey in keyof TObject]: TObject[TKey] extends TPropertyType ? TKey : never;\n}[keyof TObject];\n\n@Directive()\nexport abstract class BaseHistoricDataTableDirective<\n TLoadingData extends object,\n TMethodType extends MetaApiService[keyof MetaApiService] & Function\n> {\n protected readonly metaApi = inject(MetaApiService);\n protected readonly destroyRef = inject(DestroyRef);\n protected readonly linkService = inject(EditorialLinkService);\n\n @Input()\n apiMethod: PickKeysByPropertyType<MetaApiService, TMethodType>;\n @Input()\n columnTranslationkey: string | null = null;\n @Input()\n pageTitle: string;\n @Input({ required: true })\n sourceType: 'replicationSource' | 'collection';\n\n protected loadingCount = signal(0);\n protected readonly isLoading = computed(() => this.loadingCount() > 0);\n readonly isHistoryEnabled = signal<boolean>(false);\n protected readonly isHistoryEnabled$ = toObservable(this.isHistoryEnabled);\n\n protected readonly timeFilterLoaded = signal(false);\n protected recentTypeCount$ = new BehaviorSubject({ columns: [], rows: [] } as MatrixWithCounts);\n protected pastTypeCount$ = new BehaviorSubject({ columns: [], rows: [] } as MatrixWithCounts);\n protected readonly DateTime = DateTime;\n public columns = signal([] as Array<QualityMatrixHeader>);\n\n protected readonly dataForPastData$ = new Subject<Partial<TLoadingData>>();\n protected readonly dataForRecentData$ = new Subject<Partial<TLoadingData>>();\n\n protected readonly startValues$ = this.dataForPastData$.pipe(\n filter((data) => this.validateLoadingData(data)),\n distinctUntilChanged((a, b) => this.compareLoadingDataEqual(a, b)),\n throttleTime(500),\n switchMap((start) => this.getCountByDate(start)),\n tap((it) => this.pastTypeCount$.next(it)),\n takeUntilDestroyed(this.destroyRef)\n );\n protected readonly endValues$ = this.dataForRecentData$.pipe(\n filter((data) => this.validateLoadingData(data)),\n distinctUntilChanged((a, b) => this.compareLoadingDataEqual(a, b)),\n throttleTime(500),\n switchMap((end) => this.getCountByDate(end)),\n tap((it) => this.recentTypeCount$.next(it)),\n tap((it) => this.columns.set(it.columns.slice())),\n takeUntilDestroyed(this.destroyRef)\n );\n\n protected startDateSubscription: Unsubscribable | undefined;\n protected startValuesSubscription: Unsubscribable | undefined;\n\n /* In this widget's backend we do have data for today\n * therefore we set the end date to today and use the timerange() endpoint to only set the start date\n */\n readonly range: FormGroup<{\n start: FormControl<DateTime<boolean>>;\n end: FormControl<DateTime<boolean>>;\n }> = new FormGroup({\n start: new FormControl(),\n end: new FormControl(DateTime.utc().startOf('day'), { nonNullable: true }),\n });\n\n protected readonly timerangeStart$ = of(undefined).pipe(\n switchMap(() => this.getAvailableDateRange()),\n take(1),\n map((rangeFilter) => this.getStartDateOfRange(rangeFilter)),\n tap((startDate) => {\n //this is to have a default value for the start date => the min date of the range\n this.range.setControl('start', new FormControl<DateTime<true>>(startDate, { nonNullable: true }));\n this.timeFilterLoaded.set(true);\n }),\n takeUntilDestroyed(this.destroyRef)\n );\n\n readonly allColumns = computed<Array<string>>(() => {\n if (!this.isHistoryEnabled()) {\n return this.recentColumns();\n }\n return this.pastColumns().flatMap((e, i) => [e, this.recentColumns()[i]]);\n });\n\n readonly typeColumns = computed(() => {\n return this.columns().map((c) => c.id + '_type');\n });\n\n readonly recentColumns = computed(() => {\n return this.columns().map((c) => c.id + '_recent');\n });\n\n readonly pastColumns = computed(() => {\n return this.columns().map((c) => c.id + '_past');\n });\n\n protected abstract getCountByDate(date: TLoadingData): Observable<MatrixWithCounts>;\n protected abstract validateLoadingData(data: Partial<TLoadingData>): data is TLoadingData;\n protected abstract compareLoadingDataEqual(a: TLoadingData, b: TLoadingData): boolean;\n\n protected getAvailableDateRange() {\n return of(undefined).pipe(\n tap(() => this.loadingCount.update((it) => it + 1)),\n switchMap(() => this.metaApi.getTimerangeFilter()),\n filter((filter): filter is Filter => filter != null),\n tap(() => this.loadingCount.update((it) => it - 1))\n );\n }\n private getStartDateOfRange(rangeFilter: Filter) {\n return DateTime.fromISO(rangeFilter.values.find((v) => v.id === 'rangeStart')?.label!, {\n zone: 'utc',\n }).startOf('day') as DateTime<true>;\n }\n\n public columnIdent(_index: number, col: QualityMatrixHeader) {\n return col.id;\n }\n\n public pastTypeCount(row: MatrixRowWithCounts, columnid: string): { delta?: number; trend?: string; value?: number } {\n if (!this.pastTypeCount$.value.rows.length) {\n return {};\n }\n const past_row = this.pastTypeCount$.value.rows.find((pr) => pr.meta.id == row.meta.id);\n const past_column = this.pastTypeCount$.value.columns.find((c) => c.id == columnid);\n if (!past_row || !past_column) {\n return {};\n }\n\n const currentValue = row.counts[columnid];\n const pastValue = past_row.counts[columnid];\n\n const delta = (currentValue || 0) - (pastValue || 0);\n const trend = delta === 0 ? 'trending_flat' : delta < 0 ? 'trending_down' : 'trending_up';\n return { delta, trend, value: pastValue };\n }\n\n public openInEditor(sourceId: string, issueId: string) {\n if (this.sourceType === 'replicationSource') {\n // find the long name for the source\n sourceId = this.recentTypeCount$.value.rows.find((r) => r.meta.id === sourceId)?.meta.label || sourceId;\n }\n return this.linkService.typesLoaded$.pipe(\n skipWhile((loaded) => !loaded),\n take(1),\n map(() => {\n return this.linkService.createLinkForCountsWithHistory(this.sourceType, sourceId, issueId);\n })\n );\n }\n}\n\ntype LoadingData = {\n date: DateTime;\n};\n\n@Component({\n selector: 'metaqs2-counts-with-history',\n standalone: true,\n imports: [\n MatCardModule,\n MatCard,\n MatCardHeader,\n MatCardTitle,\n MatCardContent,\n MatTooltip,\n MatTableModule,\n MatTable,\n TranslateModule,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef,\n NgForOf,\n DatepickerComponent,\n MatIcon,\n NgIf,\n FormsModule,\n MatSlideToggle,\n AsyncPipe,\n ProgressSpinnerComponent,\n MatRipple,\n ],\n templateUrl: './counts-with-history.component.html',\n styleUrl: './counts-with-history.component.scss',\n})\nexport class CountsWithHistoryComponent\n extends BaseHistoricDataTableDirective<LoadingData, (filters: Filter[]) => Observable<MatrixWithCounts>>\n implements OnInit\n{\n ngOnInit(): void {\n this.apiMethod ??= 'getMaterialTypeCountsByReplicationSource';\n\n this.endValues$.subscribe();\n\n this.range.valueChanges\n .pipe(\n tap((data) => {\n this.dataForPastData$.next({ date: data.start });\n this.dataForRecentData$.next({ date: data.end });\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n\n this.isHistoryEnabled$\n .pipe(\n tap((enabled) => {\n this.range.controls.end.reset();\n if (!enabled) {\n this.startDateSubscription?.unsubscribe();\n this.startValuesSubscription?.unsubscribe();\n return;\n }\n this.range.controls.start.reset();\n if (!this.timeFilterLoaded()) {\n this.startDateSubscription = this.timerangeStart$\n .pipe(\n take(1),\n tap(() => {\n this.startValuesSubscription = this.startValues$.subscribe();\n this.range.controls.start.reset();\n })\n )\n .subscribe();\n } else {\n this.startValuesSubscription = this.startValues$.subscribe();\n this.range.controls.start.reset();\n }\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n }\n\n protected getCountByDate(data: LoadingData): Observable<MatrixWithCounts> {\n const filter: Filter = {\n field: 'asOf',\n values: [{ id: data.date.toISO({ includeOffset: false })!, label: '' }],\n };\n\n return of(undefined).pipe(\n tap(() => this.loadingCount.update((it) => it + 1)),\n switchMap(() => {\n return this.metaApi[this.apiMethod]([filter]).pipe(finalize(() => this.loadingCount.update((it) => it - 1)));\n }),\n map((response) => ({\n ...response,\n rows: response.rows.toSorted((a, b) => a.meta.label.localeCompare(b.meta.label)),\n }))\n );\n }\n\n protected validateLoadingData(data: Partial<LoadingData>): data is LoadingData {\n return data.date?.isValid ?? false;\n }\n\n protected compareLoadingDataEqual(a: LoadingData, b: LoadingData): boolean {\n return a.date.equals(b.date);\n }\n}\n","<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title data-test-id=\"page-title\">\n Qualitätsmetrik: {{ pageTitle | translate }}{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content class=\"toolbar\">\n <metaqs2-datepicker style=\"display: inline-block\" matRipple [disabled]=\"isLoading() || !isHistoryEnabled()\" [inputGroup]=\"range\" *ngIf=\"timeFilterLoaded() && isHistoryEnabled()\"></metaqs2-datepicker>\n <div style=\"flex: 1 1 auto\"></div>\n <mat-slide-toggle [(ngModel)]=\"isHistoryEnabled\" [disabled]=\"isLoading()\">\n <label>Zeige historische Daten</label>\n </mat-slide-toggle>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n <table [class.while-loading]=\"isLoading()\" mat-table [dataSource]=\"recentTypeCount$.value.rows\"\n class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th [attr.rowspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef>\n <div>Quelle</div>\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [matTooltip]=\"row.meta.alt_label\"\n class=\"label-col mat-cell-level-{{row.meta.level + 1}}\"\n >\n {{ row.meta.label }}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef [matTooltip]=\"col.label\">\n {{ columnTranslationkey ? (columnTranslationkey + col.label | translate) : col.label }}\n </th>\n </ng-container>\n <!-- one column for each type for the most current date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef\n matTooltip=\"no tooltip\">{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}\n </th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">\n <a [attr.href]=\"openInEditor(row.meta.id, col.id) | async\" target=\"editor_frontend\">{{ row.counts[col.id] ?? '–' }}</a>\n </td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\">\n {{ (pastTypeCount$ | async)?.rows?.length ? range.controls.start.value.toLocaleString(DateTime.DATE_SHORT) : 'no past data' }}\n </th>\n <td class=\"past-data-cell\" mat-cell *matCellDef=\"let row;\" >\n <ng-container *ngIf=\"(pastTypeCount$ | async)?.rows?.length && pastTypeCount(row, col.id) as trend\">\n <span [class]=\"trend.trend\"> {{ trend.value ?? '–' }}\n <mat-icon *ngIf=\"trend.value\" aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" /></span>\n <span class=\"cdk-visually-hidden\">{{ trend.trend }}</span>\n </ng-container>\n </td>\n </ng-container>\n <!-- generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat(typeColumns()); sticky:true;\"></tr>\n <tr [hidden]=\"!isHistoryEnabled()\" mat-header-row *matHeaderRowDef=\"allColumns(); sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(allColumns())\"></tr>\n\n </table>\n</mat-card>\n","import { createApplication } from '@angular/platform-browser';\nimport { enableProdMode, importProvidersFrom, Type } from '@angular/core';\nimport { NgMetaWidgetsLibModule } from './lib/ng-meta-widgets-lib.module';\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { HttpClient, provideHttpClient } from '@angular/common/http';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { provideAnimations } from '@angular/platform-browser/animations';\nimport { createCustomElement } from '@angular/elements';\n\nexport interface Environment {\n apiPath: string;\n eduSharingPath: string;\n production: boolean;\n}\n\nexport async function createRegister(environment: Environment) {\n if (environment.production) {\n enableProdMode();\n }\n\n const app = await createApplication({\n providers: [\n importProvidersFrom(\n NgMetaWidgetsLibModule.forRoot({\n eduSharingPath: environment.eduSharingPath,\n apiPath: environment.apiPath,\n }),\n TranslateModule.forRoot({\n defaultLanguage: 'de',\n loader: {\n provide: TranslateLoader,\n useFactory: (httpClient: HttpClient) => new TranslateHttpLoader(httpClient),\n deps: [HttpClient],\n },\n })\n ),\n provideHttpClient(),\n provideAnimations(),\n ],\n });\n const injector = app.injector;\n return (tag: string, component: Type<unknown>) => {\n const customElement = createCustomElement(component, { injector });\n customElements.define(tag, customElement);\n };\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { BaseHistoricDataTableDirective } from '../counts-with-history/counts-with-history.component';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { Filter, MatrixWithCounts, QualityMatrix, QualityMatrixRow } from '../java-api';\nimport { finalize, map, switchMap, take, tap } from 'rxjs/operators';\nimport { DateTime } from 'luxon';\nimport { AsyncPipe, NgForOf, NgIf } from '@angular/common';\nimport { DatepickerComponent } from '../components/filter/datepicker/datepicker.component';\nimport { MatCard, MatCardContent, MatCardHeader, MatCardTitle } from '@angular/material/card';\nimport {\n MatCell,\n MatCellDef,\n MatColumnDef,\n MatHeaderCell,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef,\n MatTable,\n MatTableModule\n} from '@angular/material/table';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ProgressSpinnerComponent } from '../components/loading_indicator/progress-spinner/progress-spinner.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormsModule } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatRipple } from '@angular/material/core';\n\ntype LoadingData = {\n date: DateTime;\n collectionId: string;\n};\n\n@Component({\n selector: 'metaqs2-tree-license',\n standalone: true,\n imports: [\n AsyncPipe,\n DatepickerComponent,\n MatCard,\n MatCardContent,\n MatCardHeader,\n MatCardTitle,\n MatCell,\n MatTableModule,\n MatCellDef,\n MatColumnDef,\n MatHeaderCell,\n MatHeaderRow,\n MatHeaderRowDef,\n MatIcon,\n MatRipple,\n MatRow,\n MatRowDef,\n MatSlideToggle,\n MatTable,\n MatTooltip,\n NgForOf,\n NgIf,\n ProgressSpinnerComponent,\n TranslateModule,\n FormsModule,\n ],\n templateUrl: '../counts-with-history/counts-with-history.component.html',\n styleUrls: ['../counts-with-history/counts-with-history.component.scss', './tree-license.component.scss'],\n})\nexport class TreeLicenseComponent\n extends BaseHistoricDataTableDirective<\n LoadingData,\n (collectionId: string, filters: Filter[]) => Observable<QualityMatrix>\n >\n implements OnInit\n{\n private colId$ = new BehaviorSubject<string>('defaultCollection');\n\n @Input({ required: true })\n set collectionId(id: string) {\n this.colId$.next(id);\n }\n\n @Input({ required: false })\n sourceType: 'replicationSource' | 'collection' = 'collection';\n\n protected getCountByDate(data: LoadingData): Observable<MatrixWithCounts> {\n const filter: Filter = {\n field: 'asOf',\n values: [{ id: data.date.toISO({ includeOffset: false })!, label: '' }],\n };\n return of(undefined).pipe(\n tap(() => this.loadingCount.update((it) => it + 1)),\n switchMap(() => {\n return this.metaApi[this.apiMethod](this.colId$.getValue(), [filter]).pipe(\n finalize(() => this.loadingCount.update((it) => it - 1))\n );\n }),\n map((response) => {\n const castedRows = response.rows.map((row) => row as unknown as QualityMatrixRow);\n\n return {\n ...response,\n // return the sufficient part of the counts, because the api return a QualityMatrix not a MatrixWithCounts\n\n rows: castedRows.map((row) => {\n const counts = Object.fromEntries(\n Object.entries(row.counts).map(([key, value]) => [key, value.sufficient] as const)\n );\n\n return {\n ...row,\n counts,\n };\n }),\n };\n })\n );\n }\n\n ngOnInit() {\n this.apiMethod ??= 'getLicenseCountsByLicenseGroup';\n\n combineLatest([this.colId$, this.range.valueChanges])\n .pipe(\n tap(([collectionId, range]) => {\n this.dataForPastData$.next({\n date: range.start,\n collectionId: collectionId,\n });\n this.dataForRecentData$.next({\n date: range.end,\n collectionId: collectionId,\n });\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n\n this.isHistoryEnabled$\n .pipe(\n tap((enabled) => {\n this.range.controls.end.reset();\n if (!enabled) {\n this.startDateSubscription?.unsubscribe();\n this.startValuesSubscription?.unsubscribe();\n return;\n }\n this.range.controls.start.reset();\n if (!this.timeFilterLoaded()) {\n this.startDateSubscription = this.timerangeStart$\n .pipe(\n take(1),\n tap(() => {\n this.startValuesSubscription = this.startValues$.subscribe();\n this.range.controls.start.reset();\n })\n )\n .subscribe();\n } else {\n this.startValuesSubscription = this.startValues$.subscribe();\n this.range.controls.start.reset();\n }\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n\n this.endValues$.subscribe();\n }\n\n protected validateLoadingData(data: Partial<LoadingData>): data is LoadingData {\n return !!data?.collectionId && (data.date?.isValid ?? false);\n }\n\n protected compareLoadingDataEqual(a: LoadingData, b: LoadingData): boolean {\n return a.collectionId === b.collectionId && a.date.equals(b.date);\n }\n}\n","/*\n * Public API Surface of ng-meta-widgets-lib\n */\n\nexport * from './lib/ng-meta-widgets-lib.module';\nexport * from './lib/tree-collection-details/tree-collection-details.component';\nexport * from './lib/tree-search-counts/tree-search-counts.component';\nexport * from './lib/config-helper.service';\nexport * from './lib/components/quality-matrix/quality_matrix';\nexport * from './lib/components/node-list/node-list.component';\nexport * from './lib/components/collection-issues/collection-issues.component';\nexport * from './lib/components/material-issues/material-issues.component';\nexport * from './lib/collection-count-history/collection-count-history.component';\nexport * from './lib/counts-with-history/counts-with-history.component';\nexport * from './lib/core/tooltip.service';\nexport * from './lib/components/donut-chart-tooltip/donut-chart-tooltip.component';\nexport * from './web-components';\nexport * from './lib/tree-license/tree-license.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.Configuration","i1","i1.CollectionAPIService","i1.ReplicationSourceAPIService","i1.FilterAPIService","i1.EditorsAPIService","datePickerFormats","i1.OverlayService","i2","i3","i5","i6","i8","JavaConfig","i1.SvgIconsService","JavaApiModule","i1.MetaApiService","i3.EditorialLinkService","i4"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-edu-sharing-metaqs2.mjs","sources":["../../../projects/ng-meta-widgets-lib/src/lib/java-api/variables.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/encoder.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/configuration.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/api.base.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/api/authProxyController.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/api/collectionAPI.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/api/editorsAPI.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/api/filterAPI.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/api/replicationSourceAPI.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/api/api.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/model/collectionWithMissingAttributes.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/model/count.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/model/eduCollection.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/model/filterValue.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/model/materialCountFilter.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/model/materialWithMissingAttributes.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/model/qualityMatrixHeader.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/model/qualityMatrixReplicationSourceCounts.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/api.module.ts","../../../projects/ng-meta-widgets-lib/src/lib/config-helper.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/filter/quality-matrix-filter.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/filter/quality-matrix-filter.component.html","../../../projects/ng-meta-widgets-lib/src/lib/meta-api.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/editorial-link-service/editorial-link.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/core/tooltip.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/donut-chart/donut-chart.pipe.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/donut-chart/donut-chart.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/donut-chart-tooltip/donut-chart-tooltip.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/donut-chart-tooltip/donut-chart-tooltip.component.html","../../../projects/ng-meta-widgets-lib/src/lib/components/filter/datepicker/datepicker.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/filter/datepicker/datepicker.component.html","../../../projects/ng-meta-widgets-lib/src/lib/components/loading_indicator/overlay/overlay.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/loading_indicator/progress-spinner/progress-spinner.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/loading_indicator/progress-spinner/progress-spinner.component.html","../../../projects/ng-meta-widgets-lib/src/lib/components/quality-matrix/scroll-marker.directive.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/quality-matrix/quality_matrix.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/quality-matrix/quality-matrix.html","../../../projects/ng-meta-widgets-lib/src/lib/wrap-observable.pipe.ts","../../../projects/ng-meta-widgets-lib/src/lib/node-image-url.pipe.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/node-entry/node-entry.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/node-entry/node-entry.component.html","../../../projects/ng-meta-widgets-lib/src/lib/components/node-list/node-list.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/node-list/node-list.component.html","../../../projects/ng-meta-widgets-lib/src/lib/components/material-issues/material-issues.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/material-issues/material-issues.component.html","../../../projects/ng-meta-widgets-lib/src/lib/components/collection-issues/collection-issues.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/components/collection-issues/collection-issues.component.html","../../../projects/ng-meta-widgets-lib/src/lib/core/svg-icons.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/ng-meta-widgets-lib.module.ts","../../../projects/ng-meta-widgets-lib/src/lib/tree-collection-details/tree-collection-details.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/tree-collection-details/tree-collection-details.component.html","../../../projects/ng-meta-widgets-lib/src/lib/tree-search-counts/inline-worker.ts","../../../projects/ng-meta-widgets-lib/src/lib/tree-search-counts/tree-search-counts.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/tree-search-counts/tree-search-counts.component.html","../../../projects/ng-meta-widgets-lib/src/lib/collection-count-history/monthpicker/monthpicker.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/collection-count-history/monthpicker/monthpicker.component.html","../../../projects/ng-meta-widgets-lib/src/lib/collection-count-history/collection-count-history.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/collection-count-history/collection-count-history.component.html","../../../projects/ng-meta-widgets-lib/src/lib/counts-with-history/counts-with-history.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/counts-with-history/counts-with-history.component.html","../../../projects/ng-meta-widgets-lib/src/web-components.ts","../../../projects/ng-meta-widgets-lib/src/lib/tree-license/tree-license.component.ts","../../../projects/ng-meta-widgets-lib/src/public-api.ts","../../../projects/ng-meta-widgets-lib/src/ngx-edu-sharing-metaqs2.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const BASE_PATH = new InjectionToken<string>('basePath');\nexport const COLLECTION_FORMATS = {\n 'csv': ',',\n 'tsv': ' ',\n 'ssv': ' ',\n 'pipes': '|'\n}\n","import { HttpParameterCodec } from '@angular/common/http';\n\n/**\n * Custom HttpParameterCodec\n * Workaround for https://github.com/angular/angular/issues/18261\n */\nexport class CustomHttpParameterCodec implements HttpParameterCodec {\n encodeKey(k: string): string {\n return encodeURIComponent(k);\n }\n encodeValue(v: string): string {\n return encodeURIComponent(v);\n }\n decodeKey(k: string): string {\n return decodeURIComponent(k);\n }\n decodeValue(v: string): string {\n return decodeURIComponent(v);\n }\n}\n","import { HttpHeaders, HttpParams, HttpParameterCodec } from '@angular/common/http';\nimport { Param } from './param';\n\nexport interface ConfigurationParameters {\n /**\n * @deprecated Since 5.0. Use credentials instead\n */\n apiKeys?: { [key: string]: string };\n username?: string;\n password?: string;\n /**\n * @deprecated Since 5.0. Use credentials instead\n */\n accessToken?: string | (() => string);\n basePath?: string;\n withCredentials?: boolean;\n /**\n * Takes care of encoding query- and form-parameters.\n */\n encoder?: HttpParameterCodec;\n /**\n * Override the default method for encoding path parameters in various\n * <a href=\"https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values\">styles</a>.\n * <p>\n * See {@link README.md} for more details\n * </p>\n */\n encodeParam?: (param: Param) => string;\n /**\n * The keys are the names in the securitySchemes section of the OpenAPI\n * document. They should map to the value used for authentication\n * minus any standard prefixes such as 'Basic' or 'Bearer'.\n */\n credentials?: { [key: string]: string | (() => string | undefined) };\n}\n\nexport class Configuration {\n /**\n * @deprecated Since 5.0. Use credentials instead\n */\n apiKeys?: { [key: string]: string };\n username?: string;\n password?: string;\n /**\n * @deprecated Since 5.0. Use credentials instead\n */\n accessToken?: string | (() => string);\n basePath?: string;\n withCredentials?: boolean;\n /**\n * Takes care of encoding query- and form-parameters.\n */\n encoder?: HttpParameterCodec;\n /**\n * Encoding of various path parameter\n * <a href=\"https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values\">styles</a>.\n * <p>\n * See {@link README.md} for more details\n * </p>\n */\n encodeParam: (param: Param) => string;\n /**\n * The keys are the names in the securitySchemes section of the OpenAPI\n * document. They should map to the value used for authentication\n * minus any standard prefixes such as 'Basic' or 'Bearer'.\n */\n credentials: { [key: string]: string | (() => string | undefined) };\n\n constructor(configurationParameters: ConfigurationParameters = {}) {\n this.apiKeys = configurationParameters.apiKeys;\n this.username = configurationParameters.username;\n this.password = configurationParameters.password;\n this.accessToken = configurationParameters.accessToken;\n this.basePath = configurationParameters.basePath;\n this.withCredentials = configurationParameters.withCredentials;\n this.encoder = configurationParameters.encoder;\n if (configurationParameters.encodeParam) {\n this.encodeParam = configurationParameters.encodeParam;\n } else {\n this.encodeParam = (param) => this.defaultEncodeParam(param);\n }\n if (configurationParameters.credentials) {\n this.credentials = configurationParameters.credentials;\n } else {\n this.credentials = {};\n }\n\n // init default basicAuth credential\n if (!this.credentials['basicAuth']) {\n this.credentials['basicAuth'] = () => {\n return this.username || this.password ? btoa(this.username + ':' + this.password) : undefined;\n };\n }\n }\n\n /**\n * Select the correct content-type to use for a request.\n * Uses {@link Configuration#isJsonMime} to determine the correct content-type.\n * If no content type is found return the first found type if the contentTypes is not empty\n * @param contentTypes - the array of content types that are available for selection\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\n */\n public selectHeaderContentType(contentTypes: string[]): string | undefined {\n if (contentTypes.length === 0) {\n return undefined;\n }\n\n const type = contentTypes.find((x: string) => this.isJsonMime(x));\n if (type === undefined) {\n return contentTypes[0];\n }\n return type;\n }\n\n /**\n * Select the correct accept content-type to use for a request.\n * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.\n * If no content type is found return the first found type if the contentTypes is not empty\n * @param accepts - the array of content types that are available for selection.\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\n */\n public selectHeaderAccept(accepts: string[]): string | undefined {\n if (accepts.length === 0) {\n return undefined;\n }\n\n const type = accepts.find((x: string) => this.isJsonMime(x));\n if (type === undefined) {\n return accepts[0];\n }\n return type;\n }\n\n /**\n * Check if the given MIME is a JSON MIME.\n * JSON MIME examples:\n * application/json\n * application/json; charset=UTF8\n * APPLICATION/JSON\n * application/vnd.company+json\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\n * @return True if the given MIME is JSON, false otherwise.\n */\n public isJsonMime(mime: string): boolean {\n const jsonMime: RegExp = new RegExp('^(application/json|[^;/ \\t]+/[^;/ \\t]+[+]json)[ \\t]*(;.*)?$', 'i');\n return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');\n }\n\n public lookupCredential(key: string): string | undefined {\n const value = this.credentials[key];\n return typeof value === 'function' ? value() : value;\n }\n\n public addCredentialToHeaders(\n credentialKey: string,\n headerName: string,\n headers: HttpHeaders,\n prefix?: string\n ): HttpHeaders {\n const value = this.lookupCredential(credentialKey);\n return value ? headers.set(headerName, (prefix ?? '') + value) : headers;\n }\n\n public addCredentialToQuery(credentialKey: string, paramName: string, query: HttpParams): HttpParams {\n const value = this.lookupCredential(credentialKey);\n return value ? query.set(paramName, value) : query;\n }\n\n private defaultEncodeParam(param: Param): string {\n // This implementation exists as fallback for missing configuration\n // and for backwards compatibility to older typescript-angular generator versions.\n // It only works for the 'simple' parameter style.\n // Date-handling only works for the 'date-time' format.\n // All other styles and Date-formats are probably handled incorrectly.\n //\n // But: if that's all you need (i.e.: the most common use-case): no need for customization!\n\n const value =\n param.dataFormat === 'date-time' && param.value instanceof Date\n ? (param.value as Date).toISOString()\n : param.value;\n\n return encodeURIComponent(String(value));\n }\n}\n","import { HttpHeaders, HttpParams, HttpParameterCodec } from '@angular/common/http';\nimport { CustomHttpParameterCodec } from './encoder';\nimport { Configuration } from './configuration';\n\nexport class BaseService {\n protected basePath = '';\n public defaultHeaders = new HttpHeaders();\n public configuration: Configuration;\n public encoder: HttpParameterCodec;\n\n constructor(basePath?: string | string[], configuration?: Configuration) {\n this.configuration = configuration || new Configuration();\n if (typeof this.configuration.basePath !== 'string') {\n const firstBasePath = Array.isArray(basePath) ? basePath[0] : undefined;\n if (firstBasePath != undefined) {\n basePath = firstBasePath;\n }\n\n if (typeof basePath !== 'string') {\n basePath = this.basePath;\n }\n this.configuration.basePath = basePath;\n }\n this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n }\n\n protected canConsumeForm(consumes: string[]): boolean {\n return consumes.indexOf('multipart/form-data') !== -1;\n }\n\n protected addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n // If the value is an object (but not a Date), recursively add its keys.\n if (typeof value === 'object' && !(value instanceof Date)) {\n return this.addToHttpParamsRecursive(httpParams, value, key);\n }\n return this.addToHttpParamsRecursive(httpParams, value, key);\n }\n\n protected addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n if (value === null || value === undefined) {\n return httpParams;\n }\n if (typeof value === 'object') {\n // If JSON format is preferred, key must be provided.\n if (key != null) {\n return httpParams.append(key, JSON.stringify(value));\n }\n // Otherwise, if it's an array, add each element.\n if (Array.isArray(value)) {\n value.forEach((elem) => (httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)));\n } else if (value instanceof Date) {\n if (key != null) {\n httpParams = httpParams.append(key, value.toISOString());\n } else {\n throw Error('key may not be null if value is Date');\n }\n } else {\n Object.keys(value).forEach((k) => {\n const paramKey = key ? `${key}.${k}` : k;\n httpParams = this.addToHttpParamsRecursive(httpParams, value[k], paramKey);\n });\n }\n return httpParams;\n } else if (key != null) {\n return httpParams.append(key, value);\n }\n throw Error('key may not be null if value is not object or array');\n }\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpEvent, HttpContext } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n// @ts-ignore\nimport { BASE_PATH } from '../variables';\nimport { Configuration } from '../configuration';\nimport { BaseService } from '../api.base.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthProxyControllerService extends BaseService {\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration?: Configuration\n ) {\n super(basePath, configuration);\n }\n\n /**\n * @param jSESSIONID\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public destroySession(\n jSESSIONID?: string,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: undefined; context?: HttpContext; transferCache?: boolean }\n ): Observable<any>;\n public destroySession(\n jSESSIONID?: string,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: undefined; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<any>>;\n public destroySession(\n jSESSIONID?: string,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: undefined; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<any>>;\n public destroySession(\n jSESSIONID?: string,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: undefined; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept([]);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/authentication/v1/destroySession`;\n return this.httpClient.request<any>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * @param authorization\n * @param jSESSIONID\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public validateSession(\n authorization?: string,\n jSESSIONID?: string,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<string>;\n public validateSession(\n authorization?: string,\n jSESSIONID?: string,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<string>>;\n public validateSession(\n authorization?: string,\n jSESSIONID?: string,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<string>>;\n public validateSession(\n authorization?: string,\n jSESSIONID?: string,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n if (authorization !== undefined && authorization !== null) {\n localVarHeaders = localVarHeaders.set('Authorization', String(authorization));\n }\n\n // authentication (basicAuth) required\n localVarHeaders = this.configuration.addCredentialToHeaders(\n 'basicAuth',\n 'Authorization',\n localVarHeaders,\n 'Basic '\n );\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/authentication/v1/validateSession`;\n return this.httpClient.request<string>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpParams, HttpResponse, HttpEvent, HttpContext } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n// @ts-ignore\nimport { EduCollection } from '../model/eduCollection';\n// @ts-ignore\nimport { Filter } from '../model/filter';\n// @ts-ignore\nimport { MatrixWithCounts } from '../model/matrixWithCounts';\n// @ts-ignore\nimport { MissingAttributeResult } from '../model/missingAttributeResult';\n// @ts-ignore\nimport { QualityMatrix } from '../model/qualityMatrix';\n\n// @ts-ignore\nimport { BASE_PATH } from '../variables';\nimport { Configuration } from '../configuration';\nimport { BaseService } from '../api.base.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CollectionAPIService extends BaseService {\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration?: Configuration\n ) {\n super(basePath, configuration);\n }\n\n /**\n * Get collections where a specific attribute is missing\n * A list of collections where a certain attribute is missing or empty belonging to the collection and its sub-collections specified by &lt;code&gt;node_id&lt;/code&gt;. The &lt;code&gt;missingAttr&lt;/code&gt; parameter specifies the attribute that is missing in the materials. The List of possible keywords are: &lt;ul&gt; &lt;li&gt;without_description&lt;/li&gt; &lt;li&gt;without_tags&lt;/li&gt; &lt;li&gt;without_title&lt;/li&gt; &lt;li&gt;without_education_level&lt;/li&gt; &lt;/ul&gt; These values can be obtained from &lt;code&gt;/filters/collection/issues&lt;/code&gt;\n * @param collectionId\n * @param missingAttr\n * @param from\n * @param size\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getCollectionsWithMissingAttribute(\n collectionId: string,\n missingAttr: string,\n from?: number,\n size?: number,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<MissingAttributeResult>;\n public getCollectionsWithMissingAttribute(\n collectionId: string,\n missingAttr: string,\n from?: number,\n size?: number,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<MissingAttributeResult>>;\n public getCollectionsWithMissingAttribute(\n collectionId: string,\n missingAttr: string,\n from?: number,\n size?: number,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<MissingAttributeResult>>;\n public getCollectionsWithMissingAttribute(\n collectionId: string,\n missingAttr: string,\n from?: number,\n size?: number,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n if (collectionId === null || collectionId === undefined) {\n throw new Error(\n 'Required parameter collectionId was null or undefined when calling getCollectionsWithMissingAttribute.'\n );\n }\n if (missingAttr === null || missingAttr === undefined) {\n throw new Error(\n 'Required parameter missingAttr was null or undefined when calling getCollectionsWithMissingAttribute.'\n );\n }\n\n let localVarQueryParameters = new HttpParams({ encoder: this.encoder });\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>from, 'from');\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>size, 'size');\n\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/collections/${this.configuration.encodeParam({\n name: 'collectionId',\n value: collectionId,\n in: 'path',\n style: 'simple',\n explode: false,\n dataType: 'string',\n dataFormat: undefined,\n })}/pending-collections/${this.configuration.encodeParam({\n name: 'missingAttr',\n value: missingAttr,\n in: 'path',\n style: 'simple',\n explode: false,\n dataType: 'string',\n dataFormat: undefined,\n })}`;\n return this.httpClient.request<MissingAttributeResult>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n params: localVarQueryParameters,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get completeness matrix\n * Return matrix with count of material with issues for collections\n * @param collectionId\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getCompleteness(\n collectionId: string,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<MatrixWithCounts>;\n public getCompleteness(\n collectionId: string,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<MatrixWithCounts>>;\n public getCompleteness(\n collectionId: string,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<MatrixWithCounts>>;\n public getCompleteness(\n collectionId: string,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n if (collectionId === null || collectionId === undefined) {\n throw new Error('Required parameter collectionId was null or undefined when calling getCompleteness.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/collections/${this.configuration.encodeParam({\n name: 'collectionId',\n value: collectionId,\n in: 'path',\n style: 'simple',\n explode: false,\n dataType: 'string',\n dataFormat: undefined,\n })}/completeness`;\n return this.httpClient.request<MatrixWithCounts>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get number of search results using a search term\n * Returns count of materials using a given search term, optional OER filter and type filtering\n * @param term\n * @param oerOnly\n * @param type\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getCountBySearchTerm(\n term: string,\n oerOnly?: boolean,\n type?: string,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<number>;\n public getCountBySearchTerm(\n term: string,\n oerOnly?: boolean,\n type?: string,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<number>>;\n public getCountBySearchTerm(\n term: string,\n oerOnly?: boolean,\n type?: string,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<number>>;\n public getCountBySearchTerm(\n term: string,\n oerOnly?: boolean,\n type?: string,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n if (term === null || term === undefined) {\n throw new Error('Required parameter term was null or undefined when calling getCountBySearchTerm.');\n }\n\n let localVarQueryParameters = new HttpParams({ encoder: this.encoder });\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>term, 'term');\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>oerOnly, 'oerOnly');\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>type, 'type');\n\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/collections/material/search`;\n return this.httpClient.request<number>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n params: localVarQueryParameters,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get number of search results using a search term\n * Returns a map of type to material count using a given search term and optional OER filter\n * @param term\n * @param oerOnly\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getCountBySearchTermAggregatedByType(\n term: string,\n oerOnly?: boolean,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<{ [key: string]: number }>;\n public getCountBySearchTermAggregatedByType(\n term: string,\n oerOnly?: boolean,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<{ [key: string]: number }>>;\n public getCountBySearchTermAggregatedByType(\n term: string,\n oerOnly?: boolean,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<{ [key: string]: number }>>;\n public getCountBySearchTermAggregatedByType(\n term: string,\n oerOnly?: boolean,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n if (term === null || term === undefined) {\n throw new Error(\n 'Required parameter term was null or undefined when calling getCountBySearchTermAggregatedByType.'\n );\n }\n\n let localVarQueryParameters = new HttpParams({ encoder: this.encoder });\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>term, 'term');\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>oerOnly, 'oerOnly');\n\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/collections/v2/material/search`;\n return this.httpClient.request<{ [key: string]: number }>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n params: localVarQueryParameters,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get Material Count\n * Return a list of counts aggregated by collection and license )\n * @param collectionId\n * @param filter\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getMaterialCountMatrixByLicenseGroup1(\n collectionId: string,\n filter?: Array<Filter>,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<QualityMatrix>;\n public getMaterialCountMatrixByLicenseGroup1(\n collectionId: string,\n filter?: Array<Filter>,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<QualityMatrix>>;\n public getMaterialCountMatrixByLicenseGroup1(\n collectionId: string,\n filter?: Array<Filter>,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<QualityMatrix>>;\n public getMaterialCountMatrixByLicenseGroup1(\n collectionId: string,\n filter?: Array<Filter>,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n if (collectionId === null || collectionId === undefined) {\n throw new Error(\n 'Required parameter collectionId was null or undefined when calling getMaterialCountMatrixByLicenseGroup1.'\n );\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = ['application/json'];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n let localVarTransferCache: boolean | undefined = options && options.transferCache;\n if (localVarTransferCache === undefined) {\n localVarTransferCache = true;\n }\n\n // to determine the Content-Type header\n const consumes: string[] = ['application/json'];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/collections/${this.configuration.encodeParam({\n name: 'collectionId',\n value: collectionId,\n in: 'path',\n style: 'simple',\n explode: false,\n dataType: 'string',\n dataFormat: undefined,\n })}/licenses/materialCount`;\n return this.httpClient.request<QualityMatrix>('post', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n body: filter,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get material count by collection and type\n * Returns matrix with count of material for collections aggregated by material type\n * @param collectionId\n * @param oerOnly\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getMaterialCountMatrixPerCollection(\n collectionId: string,\n oerOnly?: boolean,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<QualityMatrix>;\n public getMaterialCountMatrixPerCollection(\n collectionId: string,\n oerOnly?: boolean,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<QualityMatrix>>;\n public getMaterialCountMatrixPerCollection(\n collectionId: string,\n oerOnly?: boolean,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<QualityMatrix>>;\n public getMaterialCountMatrixPerCollection(\n collectionId: string,\n oerOnly?: boolean,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n if (collectionId === null || collectionId === undefined) {\n throw new Error(\n 'Required parameter collectionId was null or undefined when calling getMaterialCountMatrixPerCollection.'\n );\n }\n\n let localVarQueryParameters = new HttpParams({ encoder: this.encoder });\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>oerOnly, 'oerOnly');\n\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/collections/${this.configuration.encodeParam({\n name: 'collectionId',\n value: collectionId,\n in: 'path',\n style: 'simple',\n explode: false,\n dataType: 'string',\n dataFormat: undefined,\n })}/materialCount`;\n return this.httpClient.request<QualityMatrix>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n params: localVarQueryParameters,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get materials where a specific attribute is missing\n * A list of materials where a certain attribute is missing or empty belonging to the collection and its sub-collections specified by &lt;code&gt;node_id&lt;/code&gt;. The &lt;code&gt;missingAttr&lt;/code&gt; parameter specifies the attribute that is missing in the materials. The List of possible keywords are: &lt;ul&gt; &lt;li&gt; without_description&lt;/li&gt; &lt;li&gt;without_target_group&lt;/li&gt; &lt;li&gt;without_title&lt;/li&gt; &lt;li&gt;without_education_level&lt;/li&gt; &lt;li&gt;without_license&lt;/li&gt; &lt;li&gt;without_category&lt;/li&gt; &lt;li&gt;without_taxonomy_id&lt;/li&gt; &lt;li&gt;without_publisher&lt;/li&gt; &lt;/ul&gt; These values can be obtained from &lt;code&gt;/filters/material/issues&lt;/code&gt;\n * @param nodeId\n * @param missingAttr\n * @param from\n * @param size\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getMaterialsWithMissingAttribute(\n nodeId: string,\n missingAttr: string,\n from?: number,\n size?: number,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<MissingAttributeResult>;\n public getMaterialsWithMissingAttribute(\n nodeId: string,\n missingAttr: string,\n from?: number,\n size?: number,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<MissingAttributeResult>>;\n public getMaterialsWithMissingAttribute(\n nodeId: string,\n missingAttr: string,\n from?: number,\n size?: number,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<MissingAttributeResult>>;\n public getMaterialsWithMissingAttribute(\n nodeId: string,\n missingAttr: string,\n from?: number,\n size?: number,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n if (nodeId === null || nodeId === undefined) {\n throw new Error('Required parameter nodeId was null or undefined when calling getMaterialsWithMissingAttribute.');\n }\n if (missingAttr === null || missingAttr === undefined) {\n throw new Error(\n 'Required parameter missingAttr was null or undefined when calling getMaterialsWithMissingAttribute.'\n );\n }\n\n let localVarQueryParameters = new HttpParams({ encoder: this.encoder });\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>from, 'from');\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>size, 'size');\n\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/collections/${this.configuration.encodeParam({\n name: 'nodeId',\n value: nodeId,\n in: 'path',\n style: 'simple',\n explode: false,\n dataType: 'string',\n dataFormat: undefined,\n })}/pending-materials/${this.configuration.encodeParam({\n name: 'missingAttr',\n value: missingAttr,\n in: 'path',\n style: 'simple',\n explode: false,\n dataType: 'string',\n dataFormat: undefined,\n })}`;\n return this.httpClient.request<MissingAttributeResult>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n params: localVarQueryParameters,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get all top-level collections\n * Returns id and name of all top-level collections.\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getTopLevelCollection(\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<Array<EduCollection>>;\n public getTopLevelCollection(\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<Array<EduCollection>>>;\n public getTopLevelCollection(\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<Array<EduCollection>>>;\n public getTopLevelCollection(\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/collections`;\n return this.httpClient.request<Array<EduCollection>>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpEvent, HttpContext } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n// @ts-ignore\nimport { Filter } from '../model/filter';\n// @ts-ignore\nimport { MaterialCountDto } from '../model/materialCountDto';\n// @ts-ignore\nimport { MaterialCountFilter } from '../model/materialCountFilter';\n// @ts-ignore\nimport { MatrixWithCounts } from '../model/matrixWithCounts';\n\n// @ts-ignore\nimport { BASE_PATH } from '../variables';\nimport { Configuration } from '../configuration';\nimport { BaseService } from '../api.base.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EditorsAPIService extends BaseService {\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration?: Configuration\n ) {\n super(basePath, configuration);\n }\n\n /**\n * Get completeness matrix for disciplinary portals\n * Return matrix with count of material with issues for all disciplinary portals\n * @param filter\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getCompletenessForDisciplinaryPortals(\n filter?: Array<Filter>,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<MatrixWithCounts>;\n public getCompletenessForDisciplinaryPortals(\n filter?: Array<Filter>,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<MatrixWithCounts>>;\n public getCompletenessForDisciplinaryPortals(\n filter?: Array<Filter>,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<MatrixWithCounts>>;\n public getCompletenessForDisciplinaryPortals(\n filter?: Array<Filter>,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n // to determine the Content-Type header\n const consumes: string[] = ['application/json'];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/editors/completeness`;\n return this.httpClient.request<MatrixWithCounts>('post', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n body: filter,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get Material Count\n * Return a list of counts aggregated by discipline )\n * @param materialCountFilter\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getMaterialCount(\n materialCountFilter: MaterialCountFilter,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<Array<MaterialCountDto>>;\n public getMaterialCount(\n materialCountFilter: MaterialCountFilter,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<Array<MaterialCountDto>>>;\n public getMaterialCount(\n materialCountFilter: MaterialCountFilter,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<Array<MaterialCountDto>>>;\n public getMaterialCount(\n materialCountFilter: MaterialCountFilter,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n if (materialCountFilter === null || materialCountFilter === undefined) {\n throw new Error('Required parameter materialCountFilter was null or undefined when calling getMaterialCount.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n // to determine the Content-Type header\n const consumes: string[] = ['application/json'];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/editors/materialCount`;\n return this.httpClient.request<Array<MaterialCountDto>>('post', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n body: materialCountFilter,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get Material Count\n * Return a list of counts aggregated by discipline and license )\n * @param filter\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getMaterialCountMatrixByLicenseGroup(\n filter?: Array<Filter>,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<MatrixWithCounts>;\n public getMaterialCountMatrixByLicenseGroup(\n filter?: Array<Filter>,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<MatrixWithCounts>>;\n public getMaterialCountMatrixByLicenseGroup(\n filter?: Array<Filter>,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<MatrixWithCounts>>;\n public getMaterialCountMatrixByLicenseGroup(\n filter?: Array<Filter>,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n // to determine the Content-Type header\n const consumes: string[] = ['application/json'];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/editors/licenses/materialCount`;\n return this.httpClient.request<MatrixWithCounts>('post', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n body: filter,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpEvent, HttpContext } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n// @ts-ignore\nimport { Filter } from '../model/filter';\n\n// @ts-ignore\nimport { BASE_PATH } from '../variables';\nimport { Configuration } from '../configuration';\nimport { BaseService } from '../api.base.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FilterAPIService extends BaseService {\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration?: Configuration\n ) {\n super(basePath, configuration);\n }\n\n /**\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getCollectionIssueFieldNames(\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<Array<string>>;\n public getCollectionIssueFieldNames(\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<Array<string>>>;\n public getCollectionIssueFieldNames(\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<Array<string>>>;\n public getCollectionIssueFieldNames(\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/filters/collection/issues`;\n return this.httpClient.request<Array<string>>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getHistoricalTimerange(\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<Array<Filter>>;\n public getHistoricalTimerange(\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<Array<Filter>>>;\n public getHistoricalTimerange(\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<Array<Filter>>>;\n public getHistoricalTimerange(\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/filters/timerange`;\n return this.httpClient.request<Array<Filter>>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getMaterialIssueFieldNames(\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<Array<string>>;\n public getMaterialIssueFieldNames(\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<Array<string>>>;\n public getMaterialIssueFieldNames(\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<Array<string>>>;\n public getMaterialIssueFieldNames(\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/filters/material/issues`;\n return this.httpClient.request<Array<string>>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get Material Types\n * Returns a map of http://w3id.org/openeduhub/vocabs/new_lrt_aggregated/ material types to their corresponding http://w3id.org/openeduhub/vocabs/new_lrt types\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getMaterialTypesMapping(\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<{ [key: string]: Array<string> }>;\n public getMaterialTypesMapping(\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<{ [key: string]: Array<string> }>>;\n public getMaterialTypesMapping(\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<{ [key: string]: Array<string> }>>;\n public getMaterialTypesMapping(\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/filters/material/types`;\n return this.httpClient.request<{ [key: string]: Array<string> }>(\n 'get',\n `${this.configuration.basePath}${localVarPath}`,\n {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n }\n );\n }\n\n /**\n * Get Public Endpoints\n * Returns a list of all public endpoints that are allowed for guests\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getPublicEndpoints(\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<Array<string>>;\n public getPublicEndpoints(\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<Array<string>>>;\n public getPublicEndpoints(\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<Array<string>>>;\n public getPublicEndpoints(\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = ['application/json'];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n let localVarTransferCache: boolean | undefined = options && options.transferCache;\n if (localVarTransferCache === undefined) {\n localVarTransferCache = true;\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/filters/public_endpoints`;\n return this.httpClient.request<Array<string>>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getQualitxMatrixFilters(\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<Array<Filter>>;\n public getQualitxMatrixFilters(\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<Array<Filter>>>;\n public getQualitxMatrixFilters(\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<Array<Filter>>>;\n public getQualitxMatrixFilters(\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/filters`;\n return this.httpClient.request<Array<Filter>>('get', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpEvent, HttpContext } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n// @ts-ignore\nimport { Filter } from '../model/filter';\n// @ts-ignore\nimport { MatrixWithCounts } from '../model/matrixWithCounts';\n// @ts-ignore\nimport { QualityMatrix } from '../model/qualityMatrix';\n\n// @ts-ignore\nimport { BASE_PATH } from '../variables';\nimport { Configuration } from '../configuration';\nimport { BaseService } from '../api.base.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReplicationSourceAPIService extends BaseService {\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration?: Configuration\n ) {\n super(basePath, configuration);\n }\n\n /**\n * Get completeness matrix for replication sources\n * Return matrix with count of material with issues for all replication sources\n * @param filter\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getCompletenessForReplicationSources(\n filter?: Array<Filter>,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<MatrixWithCounts>;\n public getCompletenessForReplicationSources(\n filter?: Array<Filter>,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<MatrixWithCounts>>;\n public getCompletenessForReplicationSources(\n filter?: Array<Filter>,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<MatrixWithCounts>>;\n public getCompletenessForReplicationSources(\n filter?: Array<Filter>,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n // to determine the Content-Type header\n const consumes: string[] = ['application/json'];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/v2/replication-sources/completeness`;\n return this.httpClient.request<MatrixWithCounts>('post', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n body: filter,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get material count by replication source and license\n * Returns matrix with count of material for replication source aggregated by license group\n * @param filter\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getMaterialCountMatrixByReplicationSourceAndLicense(\n filter?: Array<Filter>,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<MatrixWithCounts>;\n public getMaterialCountMatrixByReplicationSourceAndLicense(\n filter?: Array<Filter>,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<MatrixWithCounts>>;\n public getMaterialCountMatrixByReplicationSourceAndLicense(\n filter?: Array<Filter>,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<MatrixWithCounts>>;\n public getMaterialCountMatrixByReplicationSourceAndLicense(\n filter?: Array<Filter>,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n // to determine the Content-Type header\n const consumes: string[] = ['application/json'];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/v2/replication-sources/licenses/materialCount`;\n return this.httpClient.request<MatrixWithCounts>('post', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n body: filter,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get material count by replication source and type\n * Returns matrix with count of material for replication source aggregated by material type\n * @param filter\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getMaterialCountMatrixByReplicationSourceAndType(\n filter?: Array<Filter>,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<MatrixWithCounts>;\n public getMaterialCountMatrixByReplicationSourceAndType(\n filter?: Array<Filter>,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<MatrixWithCounts>>;\n public getMaterialCountMatrixByReplicationSourceAndType(\n filter?: Array<Filter>,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<MatrixWithCounts>>;\n public getMaterialCountMatrixByReplicationSourceAndType(\n filter?: Array<Filter>,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n // to determine the Content-Type header\n const consumes: string[] = ['application/json'];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/v2/replication-sources/types/materialCount`;\n return this.httpClient.request<MatrixWithCounts>('post', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n body: filter,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get Quality Matrix Timestamp V2\n * Return the quality matrix for the given filters grouped by replication source (as columns) for the given timestamp\n * @param filter\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getQualityMatrixTimestampsV2(\n filter?: Array<Filter>,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<QualityMatrix>;\n public getQualityMatrixTimestampsV2(\n filter?: Array<Filter>,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<QualityMatrix>>;\n public getQualityMatrixTimestampsV2(\n filter?: Array<Filter>,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<QualityMatrix>>;\n public getQualityMatrixTimestampsV2(\n filter?: Array<Filter>,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n // to determine the Content-Type header\n const consumes: string[] = ['application/json'];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/v2/replication-sources/quality-matrix/timestamps`;\n return this.httpClient.request<QualityMatrix>('post', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n body: filter,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n\n /**\n * Get Quality Matrix V2\n * Return the quality matrix for the given filters grouped by replication source (as columns)\n * @param filter\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getQualityMatrixV2(\n filter?: Array<Filter>,\n observe?: 'body',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<QualityMatrix>;\n public getQualityMatrixV2(\n filter?: Array<Filter>,\n observe?: 'response',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpResponse<QualityMatrix>>;\n public getQualityMatrixV2(\n filter?: Array<Filter>,\n observe?: 'events',\n reportProgress?: boolean,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<HttpEvent<QualityMatrix>>;\n public getQualityMatrixV2(\n filter?: Array<Filter>,\n observe: any = 'body',\n reportProgress: boolean = false,\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext; transferCache?: boolean }\n ): Observable<any> {\n let localVarHeaders = this.defaultHeaders;\n\n const localVarHttpHeaderAcceptSelected: string | undefined =\n options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept(['application/json']);\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();\n\n const localVarTransferCache: boolean = options?.transferCache ?? true;\n\n // to determine the Content-Type header\n const consumes: string[] = ['application/json'];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/v2/replication-sources/quality-matrix`;\n return this.httpClient.request<QualityMatrix>('post', `${this.configuration.basePath}${localVarPath}`, {\n context: localVarHttpContext,\n body: filter,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n transferCache: localVarTransferCache,\n reportProgress: reportProgress,\n });\n }\n}\n","export * from './authProxyController.service';\nimport { AuthProxyControllerService } from './authProxyController.service';\nexport * from './collectionAPI.service';\nimport { CollectionAPIService } from './collectionAPI.service';\nexport * from './editorsAPI.service';\nimport { EditorsAPIService } from './editorsAPI.service';\nexport * from './filterAPI.service';\nimport { FilterAPIService } from './filterAPI.service';\nexport * from './replicationSourceAPI.service';\nimport { ReplicationSourceAPIService } from './replicationSourceAPI.service';\nexport const APIS = [AuthProxyControllerService, CollectionAPIService, EditorsAPIService, FilterAPIService, ReplicationSourceAPIService];\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport interface CollectionWithMissingAttributes {\n title?: string;\n description?: string;\n node_id?: string;\n properties?: { [key: string]: string };\n nodeRef?: { [key: string]: string };\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport interface Count {\n date: string;\n count: number;\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport interface EduCollection {\n id: string;\n label: string;\n level: number;\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport interface FilterValue {\n id: string;\n label: string;\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport interface MaterialCountFilter {\n startDate?: string;\n endDate?: string;\n granularity?: string;\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport interface MaterialWithMissingAttributes {\n title?: string;\n description?: Array<string>;\n node_id?: string;\n properties?: { [key: string]: object };\n nodeRef?: { [key: string]: string };\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport interface QualityMatrixHeader {\n id: string;\n label: string;\n altLabel: string;\n level: number;\n total: number;\n}\n","/**\n * OpenAPI definition\n *\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport interface QualityMatrixReplicationSourceCounts {\n sufficient: number;\n insufficient: number;\n}\n","import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';\nimport { Configuration } from './configuration';\nimport { HttpClient } from '@angular/common/http';\n\n@NgModule({\n imports: [],\n declarations: [],\n exports: [],\n providers: [],\n})\nexport class ApiModule {\n public static forRoot(configurationFactory: () => Configuration): ModuleWithProviders<ApiModule> {\n return {\n ngModule: ApiModule,\n providers: [{ provide: Configuration, useFactory: configurationFactory }],\n };\n }\n\n constructor(@Optional() @SkipSelf() parentModule: ApiModule, @Optional() http: HttpClient) {\n if (parentModule) {\n throw new Error('ApiModule is already loaded. Import in your base AppModule only.');\n }\n if (!http) {\n throw new Error(\n 'You need to import the HttpClientModule in your AppModule! \\n' +\n 'See also https://github.com/angular/angular/issues/20575'\n );\n }\n }\n}\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\n\nexport class NgMetaWidgetsLibConfiguration {\n apiPath: string;\n eduSharingPath: string;\n}\n\nexport const NG_META_WIDGETS_LIB_CONFIGURATION = new InjectionToken<NgMetaWidgetsLibConfiguration>(\n 'NG_META_WIDGETS_LIB_CONFIGURATION'\n);\n\n/**\n * helper class to provide configuration values\n */\n@Injectable()\nexport class ConfigHelperService implements ConfigHelper {\n constructor(@Inject(NG_META_WIDGETS_LIB_CONFIGURATION) public config: NgMetaWidgetsLibConfiguration) {\n // apply api path given in window url\n }\n\n public patchConfig(config: Partial<NgMetaWidgetsLibConfiguration>) {\n this.config = { ...this.config, ...config };\n }\n\n public get apiPath() {\n return this.config.apiPath;\n }\n\n public get eduSharingPath() {\n return this.config.eduSharingPath;\n }\n}\n\nexport interface ConfigHelper {\n get apiPath(): string;\n\n get eduSharingPath(): string;\n\n patchConfig(config: Partial<NgMetaWidgetsLibConfiguration>): void;\n}\n","import { Component, input, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { FilterValue } from '../../java-api';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatOption, MatSelect } from '@angular/material/select';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n/**\n * This component wraps a mat-select.\n * It's options are populatated from the [options] @Input\n * The label is populated from the [label] @Input\n *\n * You may either provide a FormControl ( which you are tracking )\n * or you can subscribe to the (changedFilters) output.\n */\n@Component({\n selector: 'metaqs2-qm-filter',\n templateUrl: './quality-matrix-filter.component.html',\n styleUrl: './quality-matrix-filter.component.scss',\n standalone: true,\n imports: [MatFormField, MatSelect, ReactiveFormsModule, MatOption, MatLabel],\n})\nexport class QualityMatrixFilterComponent {\n @Input()\n options: FilterValue[] | undefined | null;\n @Input()\n //must not be named \"formControl\" otherwise we would have to implement ControlValueAccessor\n inputFormControl = new FormControl();\n label = input<string>();\n multiple = input<boolean>(true);\n changedFilters = outputFromObservable(this.inputFormControl.valueChanges);\n}\n","<mat-form-field appearance=\"outline\">\n <mat-label>Filter by {{ label() }}</mat-label>\n <mat-select\n [multiple]=\"multiple()\"\n [formControl]=\"inputFormControl\"\n >\n @for( option of options ; track option.id ) {\n <mat-option [value]=\"option.id\"> {{ option.label }} </mat-option>\n }\n </mat-select>\n</mat-form-field>\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport {\n CollectionAPIService,\n EditorsAPIService,\n EduCollection,\n Filter,\n FilterAPIService,\n MaterialCountFilter,\n MatrixWithCounts,\n QualityMatrix,\n ReplicationSourceAPIService,\n} from './java-api';\nimport { map, take } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\n/**\n * This class is a thin wrapper around the API services.\n */\nexport class MetaApiService {\n constructor(\n private collectionsAPI: CollectionAPIService,\n private replicationsAPI: ReplicationSourceAPIService,\n private filterAPI: FilterAPIService,\n private editorsAPI: EditorsAPIService\n ) {}\n\n /**\n * Get the filters for the quality matrix.\n * It pipes the observable to take only one value.\n */\n public getSearchFilters(): Observable<Filter[]> {\n return this.filterAPI.getQualitxMatrixFilters().pipe(take(1));\n }\n public getCategoryFilters(): Observable<Filter[]> {\n return this.getSearchFilters().pipe(map((filters) => filters.filter((filter) => filter.field !== 'timerange')));\n }\n public getCollectionsFilter(): Observable<Array<EduCollection>> {\n return this.collectionsAPI.getTopLevelCollection();\n }\n /**\n * Get the timerange filter for the quality matrix.\n * Returns the first filter of the historical timerange filters.\n */\n public getTimerangeFilter(): Observable<Filter | undefined> {\n return this.filterAPI.getHistoricalTimerange().pipe(\n take(1),\n map((filters) => filters[0])\n );\n }\n\n getMaterialCountMatrixPerCollection(nodeRef: string, oerOnly?: boolean): Observable<QualityMatrix> {\n return this.collectionsAPI.getMaterialCountMatrixPerCollection(nodeRef, oerOnly);\n }\n\n getCollectionCompleteness(colId: string): Observable<MatrixWithCounts> {\n return this.collectionsAPI.getCompleteness(colId);\n }\n\n getQualityMatrixWithFiltersV2(body: Array<Filter>) {\n return this.replicationsAPI.getQualityMatrixV2(body);\n }\n\n getEditorialMaterialCounts(body: MaterialCountFilter) {\n return this.editorsAPI.getMaterialCount(body);\n }\n\n getMaterialTypeCountsByReplicationSource(body: Filter[]) {\n return this.replicationsAPI.getMaterialCountMatrixByReplicationSourceAndType(body);\n }\n\n getLicenseCountsByReplicationSource(body: Filter[]) {\n return this.replicationsAPI.getMaterialCountMatrixByReplicationSourceAndLicense(body);\n }\n\n getLicenseCountsByLicenseGroup(colId: string, filters: Filter[]): Observable<QualityMatrix> {\n return this.collectionsAPI.getMaterialCountMatrixByLicenseGroup1(colId, filters);\n }\n\n getMaterialCountMatrixByLicenseGroup(body: Filter[]) {\n return this.editorsAPI.getMaterialCountMatrixByLicenseGroup(body);\n }\n\n getCompletenessForDisciplinaryPortals(body: Filter[]) {\n return this.editorsAPI.getCompletenessForDisciplinaryPortals(body);\n }\n\n getCompletenessForReplicationSources(body: Filter[]) {\n return this.replicationsAPI.getCompletenessForReplicationSources(body);\n }\n\n getMaterialTypesMapping() {\n return this.filterAPI.getMaterialTypesMapping();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { inject } from '@angular/core';\nimport { ConfigHelperService } from '../../config-helper.service';\nimport { MetaApiService } from '../../meta-api.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n/**\n * This service provides methods to create links to the editorial desk with specific filters.\n */\n/* This map makes it easier for me to keep track which issues are mapped to which filters */\nconst FilterNames2Issues: { [key: string]: string[] } = {\n //Lizenzen\n 'virtual:editorial_license': ['oer', 'other_cc', 'copyright', 'without_license'],\n //Materialtypen werden im Constructor gesetzt\n 'virtual:oeh_lrt': [],\n 'virtual:editorial_exclusion': [\n 'outdated',\n 'without_preview',\n 'broken_link',\n 'without_title',\n 'without_description',\n 'without_url',\n 'without_type',\n 'without_taxonomy_id',\n 'without_education_level',\n 'without_target_group',\n 'without_license',\n 'without_publisher',\n ],\n};\n// Here we map back the issues to the filter names in the editorial desk, so we can look up the filter name for a given issue\nconst Issues2FilterNames: Map<string, string> = Object.entries(FilterNames2Issues).reduce((map, [key, value]) => {\n value.forEach((issue) => map.set(issue, key));\n return map;\n}, new Map<string, string>());\n\n// maps our values to the values of the filter in the editorial desk\nconst MapValuesForFilter: { [key: string]: { [key: string]: string[] | null } } = {\n 'virtual:editorial_exclusion': {\n outdated: null,\n without_preview: ['missing_preview'],\n broken_link: ['links'],\n without_title: ['missing_title'],\n without_description: ['missing_description'],\n without_url: ['missing_url'],\n without_type: ['missing_oeh_lrt'],\n without_taxonomy_id: ['without_taxonomy_id'],\n without_education_level: ['missing_educationalcontext'],\n without_target_group: ['missing_educationalintendedenduserrole'],\n without_license: ['missing_license'],\n without_publisher: ['missing_replicationsource'],\n },\n 'virtual:editorial_license': {\n oer: ['oer'],\n other_cc: ['none_oer'],\n copyright: ['licensed'],\n without_license: ['none'],\n },\n 'virtual:oeh_lrt': {},\n};\n\n/*\nThis is a map from properties of a document to filter names\n */\nconst PROPERTIES2FILTERS = new Map<string, string>([\n ['metadata.educationalContexts', 'ccm:educationalcontext'],\n ['metadata.disciplines', 'virtual:taxonid'],\n //[\"responsibility\", \"virtual:collection_id_primary\"] // das zeigt auf \"sammlungszugehörigkeit\" und ist falsch\n]);\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EditorialLinkService {\n private env = inject(ConfigHelperService);\n private api = inject(MetaApiService);\n public typesLoaded$ = new BehaviorSubject(false);\n\n constructor() {\n this.api\n .getMaterialTypesMapping()\n .pipe(take(1))\n .subscribe((types) => {\n for (const [key, value] of Object.entries(types)) {\n Issues2FilterNames.set(key, 'virtual:oeh_lrt');\n MapValuesForFilter['virtual:oeh_lrt'][key] = value;\n }\n this.typesLoaded$.next(true);\n });\n }\n\n public openByReplicationsourceAndIssueTypeWithFilters(\n source: string,\n issue: string,\n selectedFilters: { [key: string]: string[] | undefined }\n ): void {\n const filters: any = {};\n filters['virtual:audit_filter'] = ['all'];\n filters['ccm:oeh_publisher_combined'] = [source];\n filters['virtual:editorial_exclusion'] = MapValuesForFilter['virtual:editorial_exclusion'][issue];\n for (const [field, values] of Object.entries(selectedFilters)) {\n if (values && values.length) {\n const editorialFiltername = PROPERTIES2FILTERS.get(field) as string;\n filters[editorialFiltername] = values;\n }\n }\n\n const theUrl: string = this.env.eduSharingPath + '/components/editorial-desk';\n const params = new URLSearchParams();\n params.set('mode', 'audit');\n params.set('filters', JSON.stringify(filters));\n window.open(`${theUrl}?${params}`, 'editor_frontend');\n }\n\n public openByCollectionAndIssueType(collectionId: string, issueType: string, pageTitle: string): void {\n const filters: any = {};\n filters['virtual:audit_filter'] = ['all'];\n filters['virtual:editorial_exclusion'] = MapValuesForFilter['virtual:editorial_exclusion'][issueType];\n filters['virtual:collection_id_primary'] = [collectionId];\n const theUrl: string = this.env.eduSharingPath + '/components/editorial-desk';\n const params = new URLSearchParams();\n params.set('title', pageTitle);\n params.set('mode', 'audit');\n // this provides information to the editorial desk that any global group filter needs to be reset for this query\n params.set('resetGroup', 'true');\n params.set('filters', JSON.stringify(filters));\n window.open(`${theUrl}?${params}`, 'editor_frontend');\n }\n\n public openByCollectionId(collectionId: string): void {\n const theUrl: string = this.env.eduSharingPath + '/components/editorial-desk';\n const params = new URLSearchParams();\n params.set('ids', collectionId);\n params.set('mode', 'render');\n window.open(`${theUrl}?${params}`, 'editor_frontend');\n }\n\n /**\n * This method creates a link to the editorial desk with specific filters.\n * It returns the URL to the editorial desk with the filters applied or null if the issueId is not mapped to a filter.\n * With this we can render a link with an href attribute to the editorial desk in the frontend.\n * @see the counts-with-history.component.scss how we style links only if their hrefs are not null\n *\n * @param sourceType The type of the source, e.g. \"replicationSource\" or \"collection\"\n * @param sourceId The id of the source. This is the first column in the table.\n * @param issueId The id of the issue. These are the other columns in the table.\n */\n public createLinkForCountsWithHistory(sourceType: string, sourceId: string, issueId: string): string | null {\n const filters: { [key: string]: string[] } = {};\n filters['virtual:audit_filter'] = ['all'];\n // determine the \"main\" filter\n if (sourceType === 'replicationSource') {\n filters['ccm:oeh_publisher_combined'] = [sourceId];\n } else if (sourceType === 'collection') {\n filters['virtual:collection_id_primary'] = [sourceId];\n }\n if (!Issues2FilterNames.has(issueId)) {\n return null;\n }\n const filterName = Issues2FilterNames.get(issueId);\n if (!filterName) {\n // console.debug(\"No filter name found for issue id: \" + issueId);\n return null;\n }\n const filterValue = MapValuesForFilter[filterName][issueId];\n if (!filterValue) {\n // console.debug(\"No filter value found for issue id: \" + issueId);\n return null;\n }\n filters[filterName] = filterValue;\n\n const theUrl: string = this.env.eduSharingPath + '/components/editorial-desk';\n const params = new URLSearchParams();\n params.set('mode', 'audit');\n params.set('filters', JSON.stringify(filters));\n return `${theUrl}?${params}`;\n }\n}\n","import { ComponentRef, inject, Injectable, InjectionToken, Injector, Renderer2, Type } from '@angular/core';\nimport { ConnectedPosition, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\n\nexport const TOOLTIP_DATA = new InjectionToken<unknown>('TOOLTIP_DATA');\nexport const TOOLTIP_REF = new InjectionToken<TooltipRef<unknown>>('TOOLTIP_REF');\n\nexport interface TooltipRef<T> {\n markForClose(): void;\n cancelCloseAction(): void;\n\n readonly overlay: OverlayRef;\n readonly component: ComponentRef<T> | undefined;\n\n open(): void;\n}\n\nconst noop = Object.freeze(() => {});\n\n/**\n * @internal\n */\nexport class TooltipRefImpl<T> implements TooltipRef<T> {\n public openTimeoutRef: number | undefined;\n public closeTimeoutRef: number | undefined;\n public component: ComponentRef<T>;\n private unlistenMouseEnter: () => void | undefined;\n private unlistenMouseLeave: () => void | undefined;\n public portal: ComponentPortal<T>;\n\n public constructor(\n private readonly renderer: Renderer2,\n public readonly overlay: OverlayRef,\n private readonly openTimeout = 0,\n private readonly closeTimeout = 0,\n private readonly onOpen = noop,\n private readonly onClose = noop\n ) {}\n\n public cancelCloseAction(): void {\n clearTimeout(this.closeTimeoutRef);\n this.closeTimeoutRef = undefined;\n }\n\n public open() {\n this.openTimeoutRef = setTimeout(this.openTooltip.bind(this), this.openTimeout) as unknown as number; // typescript bug (typescript mistakenly uses NodeJS.Timeout instead of number as return type of setTimeout)\n }\n\n public openTooltip() {\n this.openTimeoutRef = undefined;\n this.component = this.overlay.attach(this.portal);\n this.unlistenMouseEnter = this.renderer.listen(\n this.overlay.overlayElement,\n 'mouseenter',\n this.cancelCloseAction.bind(this)\n );\n this.unlistenMouseLeave = this.renderer.listen(\n this.overlay.overlayElement,\n 'mouseleave',\n this.markForClose.bind(this)\n );\n this.onOpen();\n }\n\n public markForClose(): void {\n if (this.openTimeoutRef) {\n // not yet opened, cancel open action\n clearTimeout(this.openTimeoutRef);\n this.openTimeoutRef = undefined;\n return;\n }\n if (this.closeTimeoutRef) {\n // already marked for close\n return;\n }\n this.closeTimeoutRef = setTimeout(this.closeTooltip.bind(this), this.closeTimeout) as unknown as number; // typescript bug (typescript mistakenly uses NodeJS.Timeout instead of number as return type of setTimeout)\n }\n\n public closeTooltip() {\n this.overlay.detach();\n this.onClose();\n this.closeTimeoutRef = undefined;\n this.unlistenMouseEnter?.();\n this.unlistenMouseLeave?.();\n }\n}\n\nexport const centerPositionStrategy: Array<ConnectedPosition> = [\n {\n originX: 'center',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'center',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'center',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'center',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n];\n\nexport const borderPositionStrategy: Array<ConnectedPosition> = [\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n];\n\n// generic argument T is necessary for typescript to check the data passed to the config\nexport type DataTooltipHelper<T> = {\n // this is a workaround to make typescript differentiate between DataTooltipHelper and unknown\n [key in never]: T;\n};\n\nexport interface DataTooltip<T> extends DataTooltipHelper<T> {}\n\ntype DataTypeOfTooltip<T> = T extends DataTooltip<infer U> ? U : never;\n\nexport interface TooltipConfig<TData> {\n injector?: Injector;\n closeTimeout?: number;\n openTimeout?: number;\n data: TData;\n onClose?: () => void;\n onOpen?: () => void;\n overlayConfig?: OverlayConfig;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TooltipService {\n private readonly overlay = inject(Overlay);\n private readonly renderer = inject(Renderer2);\n\n public create<TComponent extends DataTooltip<DataTypeOfTooltip<TComponent>>>(\n component: Type<TComponent>,\n config: TooltipConfig<DataTypeOfTooltip<TComponent>>\n ): TooltipRef<TComponent> {\n const overlayRef = this.overlay.create(\n config.overlayConfig ?? {\n hasBackdrop: false,\n disposeOnNavigation: true,\n }\n );\n\n const tooltipRef = new TooltipRefImpl<TComponent>(\n this.renderer,\n overlayRef,\n config.openTimeout ?? 0,\n config.closeTimeout ?? 0,\n config.onOpen ?? noop,\n config.onClose ?? noop\n );\n tooltipRef.portal = new ComponentPortal(\n component,\n null,\n Injector.create({\n providers: [\n {\n provide: OverlayRef,\n useValue: overlayRef,\n },\n {\n provide: TOOLTIP_DATA,\n useValue: config.data,\n },\n {\n provide: TOOLTIP_REF,\n useValue: tooltipRef,\n },\n ],\n parent: config.injector,\n })\n );\n\n return tooltipRef;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DonutSlice } from './donut-chart.model';\n\ninterface DonutSliceWithCommands extends DonutSlice {\n offset: number;\n commands: string;\n}\n\n@Pipe({\n name: 'slicesWithCommandsAndOffset',\n pure: true,\n standalone: true,\n})\nexport class DonutChartPipe implements PipeTransform {\n transform(donutSlices: DonutSlice[], radius: number, svgSize: number, borderSize: number): DonutSliceWithCommands[] {\n let previousPercent = 0;\n return donutSlices.map((slice) => {\n // this is a hack to that the circle is rendered when the percent is 100\n slice.percent = slice.percent === 100 ? 99.999 : slice.percent;\n const sliceWithCommands: DonutSliceWithCommands = {\n ...slice,\n commands: `${this.getSliceCommands(slice, radius, svgSize, borderSize)} z`,\n offset: previousPercent * 3.6 * -1,\n };\n previousPercent += slice.percent;\n return sliceWithCommands;\n });\n }\n\n getSliceCommands(donutSlice: DonutSlice, radius: number, svgSize: number, borderSize: number): string {\n const degrees = this.percentToDegrees(donutSlice.percent);\n const longPathFlag = degrees > 180 ? 1 : 0;\n const innerRadius = radius - borderSize;\n\n const commands: string[] = [];\n commands.push(`M ${svgSize / 2 + radius} ${svgSize / 2}`);\n commands.push(`A ${radius} ${radius} 0 ${longPathFlag} 0 ${this.getCoordFromDegrees(degrees, radius, svgSize)}`);\n commands.push(`L ${this.getCoordFromDegrees(degrees, innerRadius, svgSize)}`);\n commands.push(`A ${innerRadius} ${innerRadius} 0 ${longPathFlag} 1 ${svgSize / 2 + innerRadius} ${svgSize / 2}`);\n return commands.join(' ');\n }\n\n getCoordFromDegrees(angle: number, radius: number, svgSize: number): string {\n const x = Math.cos((angle * Math.PI) / 180);\n const y = Math.sin((angle * Math.PI) / 180);\n const coordX = x * radius + svgSize / 2;\n const coordY = y * -radius + svgSize / 2;\n return `${coordX} ${coordY}`;\n }\n\n percentToDegrees(percent: number): number {\n return percent * 3.6;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { DonutSlice } from './donut-chart.model';\nimport { DonutChartPipe } from './donut-chart.pipe';\nimport { NgForOf, NgIf } from '@angular/common';\n\n/**\n * A donut chart component that displays a list of slices.\n * The chart is divided into slices, each slice has a color and a label.\n * Each slice is represented by a percentage of the total chart.\n * borrowed from https://medium.com/@theAngularGuy/how-to-create-an-interactive-donut-chart-using-svg-107cbf0b5b6\n */\n@Component({\n selector: 'metaqs2-donut-chart',\n styleUrls: ['./donut-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg [attr.viewBox]=\"'0 0 ' + viewBox + ' ' + viewBox\" *ngIf=\"data\">\n <path\n *ngFor=\"\n let slice of data | slicesWithCommandsAndOffset : radius : viewBox : borderSize;\n trackBy: trackByFn;\n let index = index\n \"\n [attr.fill]=\"slice.color\"\n stroke=\"white\"\n paint-order=\"stroke\"\n stroke-opacity=\"1\"\n [attr.stroke-width]=\"strokeWidth\"\n [attr.d]=\"slice.commands\"\n [attr.transform]=\"'rotate(' + slice.offset + ')'\"\n (click)=\"slice.onClickCb?.()\"\n >\n <title>{{ slice.label }}</title>\n </path>\n </svg>\n `,\n imports: [DonutChartPipe, NgForOf, NgIf],\n standalone: true,\n})\nexport class DonutChartComponent implements OnInit {\n @Input() radius = 50;\n @Input() viewBox = 100;\n @Input() borderSize = 20;\n @Input() strokeWidth = 5;\n @Input() data: DonutSlice[] = [];\n\n ngOnInit() {\n const sum = this.data?.reduce((accu, slice) => accu + slice.percent, 0);\n if (sum !== 100) {\n throw new Error(`The sum of all slices of the donut chart must equal to 100%. Found: ${sum}.`);\n }\n }\n\n trackByFn(index: number, slice: DonutSlice) {\n return slice.id;\n }\n}\n","import { Component, HostBinding, inject } from '@angular/core';\nimport { DonutSlice } from '../donut-chart/donut-chart.model';\nimport { DataTooltip, TOOLTIP_DATA } from '../../core/tooltip.service';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { DonutChartComponent } from '../donut-chart/donut-chart.component';\n\nexport interface DonutChartTooltipData {\n data: Array<[DonutSlice, DonutSlice]>;\n label: string;\n}\n\nexport function transformDonutChartData(data: DonutSlice[]): Array<[DonutSlice, DonutSlice]> {\n return data.map((slice): [DonutSlice, DonutSlice] => [\n // inverted order is necessary for the donut chart to go clockwise\n {\n percent: 100 - slice.percent,\n color: 'transparent',\n id: 999999,\n },\n slice,\n ]);\n}\n\n@Component({\n selector: 'metaqs2-donut-chart-tooltip',\n templateUrl: './donut-chart-tooltip.component.html',\n styleUrl: './donut-chart-tooltip.component.css',\n animations: [\n trigger('fadeInOut', [\n transition(':enter', [\n style({\n opacity: 0,\n scale: 0.5,\n }),\n animate(\n '100ms ease-in',\n style({\n opacity: 1,\n scale: 1,\n })\n ),\n ]),\n transition(':leave', [\n style({\n opacity: 1,\n scale: 1,\n }),\n animate(\n '100ms ease-out',\n style({\n opacity: 0,\n scale: 0.5,\n })\n ),\n ]),\n ]),\n ],\n imports: [CommonModule, DonutChartComponent],\n})\nexport class DonutChartTooltipComponent implements DataTooltip<DonutChartTooltipData> {\n @HostBinding('@fadeInOut') animationState = true;\n public readonly data = inject<DonutChartTooltipData>(TOOLTIP_DATA);\n}\n","<h4>{{ data.label }}</h4>\n<p>Status</p>\n<ng-container *ngFor=\"let slicePair of data.data\">\n <ng-container *ngIf=\"slicePair[1].percent > 0\">\n <div style=\"display: flex; justify-content: flex-start; align-items: center; gap: 0.25rem\">\n <metaqs2-donut-chart [data]=\"slicePair\" [borderSize]=\"25\"></metaqs2-donut-chart>\n <p>{{ slicePair[1].verboseLabel }}</p>\n </div>\n </ng-container>\n</ng-container>\n","import { Component, ElementRef, Input, LOCALE_ID, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatDatepicker, MatDatepickerInput, MatDatepickerToggle } from '@angular/material/datepicker';\nimport { MatFormField, MatLabel, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { DateTime } from 'luxon';\nimport { LuxonDateAdapter, MAT_LUXON_DATE_ADAPTER_OPTIONS } from '@angular/material-luxon-adapter';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MatDateFormats, MatRipple } from '@angular/material/core';\n\nconst datePickerFormats: MatDateFormats = {\n parse: {\n dateInput: 'D',\n },\n display: {\n dateInput: 'D',\n monthYearLabel: 'MMMM yyyy',\n dateA11yLabel: 'DDD',\n monthYearA11yLabel: 'MMMM yyyy',\n },\n};\n\n@Component({\n selector: 'metaqs2-datepicker',\n standalone: true,\n imports: [\n FormsModule,\n MatDatepicker,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatFormField,\n MatInput,\n MatLabel,\n MatSuffix,\n ReactiveFormsModule,\n MatRipple,\n ],\n providers: [\n {\n provide: DateAdapter,\n useClass: LuxonDateAdapter,\n deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS],\n },\n { provide: MAT_DATE_FORMATS, useValue: datePickerFormats },\n\n //provideLuxonDateAdapter(datePickerFormats),\n { provide: LOCALE_ID, useValue: 'de-DE' },\n { provide: MAT_DATE_LOCALE, useValue: 'de-DE' },\n { provide: MAT_LUXON_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true, firstDayOfWeek: 1 } },\n ],\n templateUrl: './datepicker.component.html',\n styleUrl: './datepicker.component.css',\n})\nexport class DatepickerComponent implements OnInit, OnDestroy {\n @Input()\n disabled: boolean = false;\n\n @Input({ required: true })\n inputGroup!: FormGroup<{ start: FormControl<DateTime<boolean>>; end: FormControl<DateTime<boolean>> }>;\n\n @ViewChild('start', {\n read: ElementRef,\n static: true,\n })\n protected start!: ElementRef<HTMLInputElement>;\n\n @ViewChild('ripple', {\n read: MatRipple,\n static: true,\n })\n protected ripple!: MatRipple;\n\n ngOnInit() {\n this.focus();\n }\n\n ngOnDestroy(): void {\n //defer this to avoid an ExpressionChangedAfterItHasBeenCheckedError on the parent component\n Promise.resolve().then(() => this.inputGroup.reset());\n }\n\n focus() {\n this.start?.nativeElement.focus();\n this.ripple.launch({\n centered: true, // Angular Material bug: disabled ripples do not trigger unless centered\n radius: 1000,\n animation: {\n exitDuration: 1000,\n },\n });\n }\n}\n","<div [formGroup]=\"inputGroup\" matRipple #ripple=\"matRipple\" [matRippleDisabled]=\"true\">\n <!-- start date -->\n <mat-form-field>\n <mat-label>Zeitpunkt 1</mat-label>\n <input matInput\n #start\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker1\" formControlName=\"start\"\n placeholder=\"Starts date\"\n >\n <!--\n <mat-hint>d.M.yyyy</mat-hint>\n -->\n <mat-datepicker-toggle matIconSuffix [for]=\"picker1\"></mat-datepicker-toggle>\n <mat-datepicker [disabled]=\"disabled\" #picker1 [startAt]=\"inputGroup.controls.start.defaultValue\">\n </mat-datepicker>\n </mat-form-field>\n <!-- /start date -->\n <!-- end date -->\n <mat-form-field>\n <mat-label>Zeitpunkt2</mat-label>\n <input matInput\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker2\"\n formControlName=\"end\"\n placeholder=\"End date\"\n >\n <!--\n <mat-hint>d.M.yyyy</mat-hint>\n -->\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker [disabled]=\"disabled\" #picker2 [startAt]=\"inputGroup.controls.end.value\">\n </mat-datepicker>\n </mat-form-field>\n <!-- /end date -->\n</div>\n","import { ElementRef, Injectable, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef, PositionStrategy } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\n@Injectable({ providedIn: 'root' })\nexport class OverlayService {\n constructor(private overlay: Overlay) {}\n createOverlay(config: OverlayConfig): OverlayRef {\n return this.overlay.create(config);\n }\n attachTemplatePortal(overlayRef: OverlayRef, templateRef: TemplateRef<any>, vcRef: ViewContainerRef) {\n let templatePortal = new TemplatePortal(templateRef, vcRef);\n overlayRef.attach(templatePortal);\n }\n positionGloballyCenter(): PositionStrategy {\n return this.overlay.position().global().centerHorizontally().centerVertically();\n }\n\n // may be useful, if we only want to \"grey-out\" only the table\n positionFlexibleConnected(parent: Element | ElementRef): PositionStrategy {\n return this.overlay\n .position()\n .flexibleConnectedTo(parent)\n .withPositions([\n {\n overlayX: 'center',\n overlayY: 'center',\n originX: 'center',\n originY: 'center',\n },\n ])\n .withLockedPosition();\n }\n}\n","import {\n Component,\n Input,\n ViewChild,\n TemplateRef,\n ViewContainerRef,\n OnChanges,\n SimpleChanges,\n ElementRef,\n} from '@angular/core';\nimport { OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\n\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { OverlayService } from '../overlay/overlay.service';\n\n@Component({\n selector: 'metaqs2-progress-spinner',\n templateUrl: './progress-spinner.component.html',\n styleUrls: ['./progress-spinner.component.css'],\n standalone: true,\n imports: [MatProgressSpinnerModule],\n})\nexport class ProgressSpinnerComponent implements OnChanges {\n @Input() color?: string = 'primary';\n @Input() diameter?: number = 100;\n @Input() strokeWidth?: number = 10;\n @Input() backdropEnabled = false;\n @Input() positionGloballyCenter = true;\n @Input() displayProgressSpinner: boolean;\n\n @ViewChild('progressSpinnerRef', { static: true })\n private progressSpinnerRef: TemplateRef<any>;\n private progressSpinnerOverlayConfig: OverlayConfig;\n private overlayRef: OverlayRef;\n\n constructor(private vcRef: ViewContainerRef, private overlayService: OverlayService, private el: ElementRef) {\n // we are doing this in the constructor because ngOnInit runs after the first ngOnChanges\n // and we need to create the overlayRef before the first ngOnChanges\n // ngDoCheck runs too often.\n\n this.progressSpinnerOverlayConfig = {\n hasBackdrop: this.backdropEnabled,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n };\n if (this.positionGloballyCenter) {\n this.progressSpinnerOverlayConfig['positionStrategy'] = this.overlayService.positionGloballyCenter();\n } else {\n /*\n see https://stackoverflow.com/questions/63579801/how-do-i-create-a-custom-overlay-container-for-angular-material\n how to create a overlay container.\n With such a directive we can have a spinner that greys-out only e.g. the table like seen here:\n https://reppners.github.io/ngx-cdk-dynamic-overlay-container/\n */\n this.progressSpinnerOverlayConfig['positionStrategy'] = this.overlayService.positionFlexibleConnected(this.el);\n }\n // Create Overlay for progress spinner\n this.overlayRef = this.overlayService.createOverlay(this.progressSpinnerOverlayConfig);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n changes.displayProgressSpinner.currentValue\n ? this.overlayService.attachTemplatePortal(this.overlayRef, this.progressSpinnerRef, this.vcRef)\n : this.overlayRef.detach();\n }\n}\n","<ng-template #progressSpinnerRef>\n <mat-spinner [color]=\"color\" [diameter]=\"diameter\" [strokeWidth]=\"strokeWidth\">\n\t</mat-spinner>\n</ng-template>","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[metaqs2ScrollMarker]',\n standalone: true,\n})\nexport class ScrollMarkerDirective {\n public element = inject(ElementRef);\n}\n","import {\n AfterViewChecked,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n HostListener,\n inject,\n Input,\n OnInit,\n signal,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, of, Subject, Unsubscribable } from 'rxjs';\nimport { filter, finalize, map, switchMap, take, tap, throttleTime } from 'rxjs/operators';\nimport { MetaApiService } from '../../meta-api.service';\nimport { Filter, FilterValue, QualityMatrix, QualityMatrixHeader, QualityMatrixRow } from '../../java-api';\nimport { FormControl, FormGroup, FormRecord, ReactiveFormsModule } from '@angular/forms';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { EditorialLinkService } from '../editorial-link-service/editorial-link.service';\nimport { DateTime } from 'luxon';\nimport { DonutSlice } from '../donut-chart/donut-chart.model';\nimport { KeyValuePipe, NgClass, NgIf, NgFor } from '@angular/common';\nimport { Overlay } from '@angular/cdk/overlay';\nimport {\n DonutChartTooltipComponent,\n transformDonutChartData,\n} from '../donut-chart-tooltip/donut-chart-tooltip.component';\nimport { centerPositionStrategy, TooltipRef, TooltipService } from '../../core/tooltip.service';\nimport { MatCard, MatCardContent, MatCardHeader, MatCardTitle } from '@angular/material/card';\nimport { QualityMatrixFilterComponent } from '../filter/quality-matrix-filter.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { DatepickerComponent } from '../filter/datepicker/datepicker.component';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { ProgressSpinnerComponent } from '../loading_indicator/progress-spinner/progress-spinner.component';\nimport {\n MatCell,\n MatCellDef,\n MatColumnDef,\n MatHeaderCell,\n MatHeaderCellDef,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef,\n MatTable,\n} from '@angular/material/table';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { DonutChartComponent } from '../donut-chart/donut-chart.component';\nimport { ScrollMarkerDirective } from './scroll-marker.directive';\n\nconst openCloseTimeout = 150;\n\n@Component({\n selector: 'metaqs2-quality-matrix-v2',\n providers: [TooltipService],\n standalone: true,\n templateUrl: './quality-matrix.html',\n imports: [\n MatCard,\n MatCardHeader,\n MatCardTitle,\n MatCardContent,\n QualityMatrixFilterComponent,\n TranslateModule,\n KeyValuePipe,\n MatIcon,\n DatepickerComponent,\n MatSlideToggle,\n ReactiveFormsModule,\n ProgressSpinnerComponent,\n MatTable,\n MatTooltip,\n MatCell,\n MatColumnDef,\n MatHeaderCell,\n NgClass,\n MatHeaderRow,\n MatRow,\n MatHeaderRowDef,\n MatRowDef,\n MatHeaderCellDef,\n NgIf,\n NgFor,\n MatCellDef,\n MatButton,\n MatIconButton,\n DonutChartComponent,\n DonutChartTooltipComponent,\n ScrollMarkerDirective,\n ],\n styleUrls: ['./quality_matrix.scss'],\n})\nexport class QualityMatrixComponent implements OnInit, AfterViewChecked {\n protected readonly ref = inject(ElementRef);\n protected readonly destroyRef = inject(DestroyRef);\n protected readonly metaApi = inject(MetaApiService);\n protected readonly linkService = inject(EditorialLinkService);\n protected readonly overlay = inject(Overlay);\n protected readonly tooltipService = inject(TooltipService);\n private readonly scrollLeft = signal(0);\n private readonly scrollWidth = signal(0);\n public readonly isLeftScrollable = computed(() => this.scrollLeft() > 0);\n public readonly isRightScrollable = computed(() => {\n const viewport = globalThis.visualViewport;\n if (!viewport) {\n return;\n }\n const viewportWidth = viewport.width;\n\n return this.scrollWidth() > viewportWidth && this.scrollLeft() + viewportWidth < this.scrollWidth();\n });\n\n readonly filteredColumns = computed<Array<QualityMatrixHeader>>(() => {\n const allColumns = this.allColumns();\n const isOnlySourcesWithMaterialEnabled = this.isOnlySourcesWithMaterialEnabled();\n if (isOnlySourcesWithMaterialEnabled) {\n return allColumns.filter((c) => c.total > 0);\n } else {\n return allColumns;\n }\n });\n readonly datatableColumns = computed(() => {\n return this.filteredColumns()\n .filter((c) => c.level !== 0)\n .map((c) => c.id);\n });\n readonly isHistoricalDataEnabledFormField = new FormControl({ value: false, disabled: true });\n readonly isHistoricalDataEnabled = toSignal(this.isHistoricalDataEnabledFormField.valueChanges);\n readonly isOnlySourcesWithMaterialEnabledFormField = new FormControl({ value: true, disabled: true });\n readonly isOnlySourcesWithMaterialEnabled = toSignal(this.isOnlySourcesWithMaterialEnabledFormField.valueChanges);\n readonly categoryControls = new FormRecord<FormControl<Array<string>>>({});\n readonly loadingCount = signal(0);\n readonly isLoading = computed(() => this.loadingCount() > 0);\n\n // @ViewChildren(ScrollMarkerDirective)\n // private readonly scrollMarkers!: ReadonlyArray<ScrollMarkerDirective>;\n // @ViewChild('issueType', {\n // read: ElementRef,\n // static: true,\n // })\n // private readonly issueTypeHeader!: ElementRef<HTMLTableCellElement>;\n\n private readonly issueTypeHeader = viewChild('issueType', {\n read: ElementRef,\n });\n private readonly scrollMarkers = viewChildren(ScrollMarkerDirective);\n\n readonly categoryFilterValues: Map<string, FilterValue[]> = new Map();\n protected readonly refresh$ = new Subject<void>();\n readonly recentQualityMatrix$ = new BehaviorSubject<QualityMatrix>({ columns: [], rows: [] } as QualityMatrix);\n readonly recentQualityMatrix = toSignal(this.recentQualityMatrix$, {\n initialValue: { columns: [], rows: [] } as QualityMatrix,\n });\n readonly pastQualityMatrix$ = new BehaviorSubject<QualityMatrix | null>({ columns: [], rows: [] } as QualityMatrix);\n readonly range: FormGroup<{\n start: FormControl<DateTime<boolean>>;\n end: FormControl<DateTime<boolean>>;\n }> = new FormGroup({\n start: new FormControl(),\n end: new FormControl(),\n });\n private readonly tooltips = new Map<HTMLElement, TooltipRef<DonutChartTooltipComponent>>();\n protected readonly DateTime = DateTime;\n @Input()\n pageTitle: string = 'Quality Matrix';\n\n readonly allColumns = computed(() =>\n this.recentQualityMatrix()?.columns.toSorted((a, b) => a.label.localeCompare(b.label))\n );\n\n ngAfterViewChecked(): void {\n this.onScroll();\n }\n\n sourceColumns = computed(() => this.datatableColumns().map((c) => c + '_source'));\n\n currentColumns = computed(() => this.datatableColumns().map((c) => c + '_current'));\n\n pastColumns = computed(() => this.datatableColumns().map((c) => c + '_past'));\n\n allDataColumns = computed(() => {\n const pastColumns = this.pastColumns();\n const currentColumns = this.currentColumns();\n if (this.isHistoricalDataEnabled()) {\n return currentColumns.flatMap((e, i) => [pastColumns[i], e]);\n }\n return currentColumns;\n });\n\n private loadData(categories: { [key: string]: Array<string> }, date: DateTime<true>): Observable<QualityMatrix> {\n return of(undefined).pipe(\n tap(() => this.loadingCount.update((it) => it + 1)),\n switchMap(() =>\n this.metaApi\n .getQualityMatrixWithFiltersV2([\n ...this.transformCategoryFilters(categories),\n {\n field: 'asOf',\n values: [\n {\n id: date.toISO({\n includeOffset: false,\n }) as string,\n label: '',\n },\n ],\n },\n ])\n .pipe(take(1))\n ),\n finalize(() => this.loadingCount.update((it) => it - 1))\n );\n }\n\n private transformCategoryFilters(categories: { [key: string]: Array<string> }): Filter[] {\n return Object.entries(categories)\n .filter((pair): pair is [string, Array<string>] => !!pair[1]?.length)\n .map(([field, values]) => ({\n field,\n values: values.map((value) => ({ id: value, label: '' })),\n }));\n }\n\n private loadPastData(categories: any, date: DateTime<true>) {\n return of(undefined).pipe(switchMap(() => this.loadData(categories, date)));\n }\n\n private loadCurrentData(categories: any, date: DateTime<true>) {\n return of(undefined).pipe(switchMap(() => this.loadData(categories, date)));\n }\n\n openEditLink(source: string, issue: string) {\n return this.linkService.openByReplicationsourceAndIssueTypeWithFilters(source, issue, this.categoryControls.value);\n }\n\n // see https://github.com/angular/components/issues/8361#issuecomment-345804954\n columnIdent(_index: number, col: QualityMatrixHeader) {\n return col.id;\n }\n\n refresh() {\n this.refresh$.next();\n }\n\n getPastColumn(columnId: string) {\n return this.pastQualityMatrix$.value?.columns.find((c) => c.id === columnId);\n }\n\n public ngOnInit() {\n this.loadingCount.update((it) => it + 1);\n this.metaApi\n .getCategoryFilters()\n .pipe(\n take(1),\n tap((filters) => {\n filters.forEach((filter) => {\n // do not emit the event when setting the control to prevent unnecessary valueChanges events\n this.categoryControls.addControl(filter.field, new FormControl([], { nonNullable: true }), {\n emitEvent: false,\n });\n this.categoryFilterValues.set(\n filter.field,\n filter.values.toSorted((a, b) => {\n return a.label.localeCompare(b.label);\n })\n );\n });\n // emit the current value of the form group once to trigger the valueChanges observable\n this.categoryControls.setValue(this.categoryControls.value as { [key: string]: string[] }, {\n emitEvent: true,\n });\n }),\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loadingCount.update((it) => it - 1))\n )\n .subscribe();\n\n this.loadingCount.update((it) => it + 1);\n this.metaApi\n .getTimerangeFilter()\n .pipe(\n filter((rangeFilter) => !!rangeFilter),\n tap((rangeFilter) => {\n const startDate = DateTime.fromISO(rangeFilter.values.find((v) => v.id === 'rangeStart')?.label!, {\n zone: 'utc',\n });\n const endDate = DateTime.fromISO(rangeFilter.values.find((v) => v.id === 'rangeEnd')?.label!, {\n zone: 'utc',\n });\n this.range.setControl('start', new FormControl<DateTime>(startDate, { nonNullable: true }), {\n emitEvent: false,\n });\n this.range.setControl('end', new FormControl<DateTime>(endDate, { nonNullable: true }), {\n emitEvent: true,\n });\n }),\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loadingCount.update((it) => it - 1))\n )\n .subscribe();\n\n combineLatest([this.categoryControls.valueChanges, this.range.valueChanges, this.refresh$])\n .pipe(\n filter(\n (data): data is [{ [key: string]: Array<string> }, { end: DateTime<true> }, void] =>\n !!data[0] && !!data[1].end?.isValid\n ),\n throttleTime(500),\n map(([categories, range]) => [categories, range.end] as const),\n switchMap(([categories, end]) => this.loadCurrentData(categories, end)),\n tap((currentQm) => {\n this.recentQualityMatrix$.next(currentQm);\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n\n let pastDataSubscription: Unsubscribable | undefined;\n\n const pastData$ = combineLatest([this.categoryControls.valueChanges, this.range.valueChanges, this.refresh$]).pipe(\n filter(\n (data): data is [{ [key: string]: Array<string> }, { start: DateTime<true> }, void] =>\n !!data[0] && !!data[1].start?.isValid\n ),\n throttleTime(500),\n map(([categories, range]) => [categories, range.start] as const),\n switchMap(([categories, start]) => this.loadPastData(categories, start)),\n tap((pastQm) => {\n this.pastQualityMatrix$.next(pastQm);\n }),\n takeUntilDestroyed(this.destroyRef)\n );\n\n this.isHistoricalDataEnabledFormField.valueChanges\n .pipe(\n tap((isEnabled) => {\n if (isEnabled) {\n pastDataSubscription = pastData$.subscribe();\n this.categoryControls.setValue(this.categoryControls.value as { [key: string]: string[] }, {\n emitEvent: true,\n });\n this.range.setValue(this.range.value as { start: DateTime; end: DateTime }, {\n emitEvent: true,\n });\n this.refresh$.next();\n } else {\n pastDataSubscription?.unsubscribe();\n }\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n\n this.refresh$.next();\n this.isOnlySourcesWithMaterialEnabledFormField.setValue(this.isOnlySourcesWithMaterialEnabledFormField.value, {\n emitEvent: true,\n });\n }\n\n getTrend(row: QualityMatrixRow, column: QualityMatrixHeader): { delta?: number; trend?: string } {\n if (this.pastQualityMatrix$.value === null || this.pastQualityMatrix$.value.columns.length === 0) {\n return {};\n }\n const past_row = this.pastQualityMatrix$?.value.rows.find((pr) => pr.meta.id == row.meta.id);\n const past_column = this.pastQualityMatrix$.value.columns.find((c) => c.id == column.id);\n if (!past_row || !past_column) {\n return {};\n }\n\n const delta = Math.floor(\n (100 * row.counts[column.id].sufficient) / column.total -\n (100 * past_row.counts[column.id].sufficient) / past_column.total\n );\n\n const trend = delta === 0 ? 'trending_flat' : delta < 0 ? 'trending_down' : 'trending_up';\n return { delta, trend };\n }\n\n getDonutSlices(row: QualityMatrixRow, column: QualityMatrixHeader): DonutSlice[] {\n const sufficientTotal = row.counts[column.id].sufficient;\n const insufficientTotal = row.counts[column.id].insufficient;\n const missingTotal = column.total - sufficientTotal - insufficientTotal;\n let sufficientFillRate = 0;\n let insufficientFillRate = 0;\n //Der Wert berechnet sich aus dem total_count - without_description_count.\n\n if (column.total !== 0) {\n sufficientFillRate = Math.round((100 * sufficientTotal) / column.total);\n insufficientFillRate = Math.round((100 * insufficientTotal) / column.total);\n }\n const rest = 100 - (sufficientFillRate + insufficientFillRate); // a.k.a. \"missing\"\n return [\n {\n id: 3,\n percent: rest,\n color: '#D8EDFC',\n label: `${rest} % (${missingTotal})`,\n verboseLabel: `${missingTotal} Metadatens\\u00e4tze fehlen`,\n },\n {\n id: 1,\n percent: insufficientFillRate,\n color: '#C20808',\n label: `${insufficientFillRate} % (${insufficientTotal})`,\n verboseLabel: `${insufficientTotal} Metadatens\\u00e4tze sind unzureichend ausgef\\u00fcllt`,\n },\n {\n id: 2,\n percent: sufficientFillRate,\n color: '#4ABEFF',\n label: `${sufficientFillRate} % (${sufficientTotal})`,\n verboseLabel: `${sufficientTotal} Metadatens\\u00e4tze sind gut ausgef\\u00fcllt`,\n },\n ];\n }\n\n showTooltip(row: QualityMatrixRow, column: QualityMatrixHeader, cell: HTMLElement) {\n if (row.counts[column.id].sufficient + row.counts[column.id].insufficient === 0) {\n return;\n }\n if (this.tooltips.has(cell)) {\n this.tooltips.get(cell)!.cancelCloseAction();\n return;\n }\n\n const tooltipRef = this.tooltipService.create(DonutChartTooltipComponent, {\n closeTimeout: openCloseTimeout,\n openTimeout: openCloseTimeout,\n data: {\n label: column.label,\n data: transformDonutChartData(this.getDonutSlices(row, column)),\n },\n overlayConfig: {\n hasBackdrop: false,\n positionStrategy: this.overlay.position().flexibleConnectedTo(cell).withPositions(centerPositionStrategy),\n disposeOnNavigation: true,\n panelClass: 'donut-chart-tooltip',\n },\n onClose: () => {\n this.tooltips.delete(cell);\n },\n });\n tooltipRef.open();\n this.tooltips.set(cell, tooltipRef);\n }\n\n hideTooltip(cell: HTMLElement) {\n this.tooltips.get(cell)?.markForClose();\n }\n\n findHorizontalScrollContainer(element: Element): Element | null {\n if (element.scrollWidth > element.clientWidth && ['auto', 'scroll'].includes(getComputedStyle(element).overflowX)) {\n // find the nearest horizontally scrollable element\n return element;\n } else {\n if (!element.parentElement) {\n return document.scrollingElement;\n }\n return this.findHorizontalScrollContainer(element.parentElement);\n }\n }\n\n scrollToRight() {\n const scrollingElement = this.findHorizontalScrollContainer(this.ref.nativeElement as HTMLElement);\n if (!scrollingElement) {\n return;\n }\n const viewport = globalThis.visualViewport;\n if (!viewport) {\n return;\n }\n const viewportWidth = viewport.width;\n\n const lastVisible = this.scrollMarkers().findLast(\n (marker) => (marker.element.nativeElement as HTMLElement).getBoundingClientRect().left < viewportWidth\n );\n\n if (!lastVisible) {\n return;\n }\n\n const leftColumnWidth = this.issueTypeHeader()?.nativeElement.getBoundingClientRect().width ?? 0;\n\n scrollingElement.scrollBy({\n left: (lastVisible.element.nativeElement as HTMLElement).getBoundingClientRect().left - leftColumnWidth,\n behavior: 'smooth',\n });\n }\n\n scrollToLeft() {\n const scrollingElement = this.findHorizontalScrollContainer(this.ref.nativeElement as HTMLElement);\n if (!scrollingElement) {\n return;\n }\n const viewport = globalThis.visualViewport;\n if (!viewport) {\n return;\n }\n const viewportWidth = viewport.width;\n\n const leftColumnWidth = this.issueTypeHeader()?.nativeElement.getBoundingClientRect().width ?? 0;\n\n const firstVisible = this.scrollMarkers().find(\n (marker) => (marker.element.nativeElement as HTMLElement).getBoundingClientRect().right > leftColumnWidth\n );\n\n if (!firstVisible) {\n return;\n }\n\n scrollingElement.scrollBy({\n left: (firstVisible.element.nativeElement as HTMLElement).getBoundingClientRect().right - viewportWidth,\n behavior: 'smooth',\n });\n }\n\n @HostListener('window:scroll')\n @HostListener('window:resize')\n onScroll() {\n const scrollingElement = this.findHorizontalScrollContainer(this.ref.nativeElement as HTMLElement);\n if (!scrollingElement) {\n return;\n }\n this.scrollLeft.set(scrollingElement.scrollLeft);\n this.scrollWidth.set(scrollingElement.scrollWidth);\n }\n}\n","\n<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title>Qualitätsmetrik: {{ pageTitle | translate }}{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"toolbar\">\n @for( filter of categoryControls.controls | keyvalue ; track filter.key ) {\n <metaqs2-qm-filter [options]=\"categoryFilterValues.get(filter.key)\" [inputFormControl]=\"filter.value\"\n [label]=\"'filter.' + filter.key | translate\"></metaqs2-qm-filter>\n }@empty {\n <metaqs2-qm-filter aria-disabled=\"true\" [label]=\"'Filter'\"></metaqs2-qm-filter> \n }\n <div class=\"actionbar\">\n <mat-slide-toggle [disabled]=\"isLoading()\" labelPosition=\"before\" [formControl]=\"isOnlySourcesWithMaterialEnabledFormField\" id=\"onlySourcesWithMaterial\">\n show only sources with material\n </mat-slide-toggle>\n <div style=\"flex: 1 1 auto\"></div>\n @if (isHistoricalDataEnabled()) {\n <metaqs2-datepicker [disabled]=\"isLoading()\" [inputGroup]=\"range\"></metaqs2-datepicker> \n }\n <mat-slide-toggle [disabled]=\"isLoading()\" labelPosition=\"before\" [formControl]=\"isHistoricalDataEnabledFormField\" id=\"showHistoricalData\">\n show historical data\n </mat-slide-toggle>\n <button\n mat-icon-button\n color=\"primary\"\n [disabled]=\"isLoading()\"\n (click)=\"refresh()\"\n matTooltip=\"Aktualisiere den IST-Stand\"\n matTooltipShowDelay=\"500\"\n >\n <mat-icon>refresh</mat-icon>\n </button>\n <div [style.flex]=\"'0 0 ' + (scroller?.getBoundingClientRect()?.width || 0) + 'px'\"></div>\n <div class=\"scroll-controller\" #scroller> <!-- put the whole toolbar in a fixed container (MQS- -->\n <button mat-raised-button (click)=\"scrollToLeft()\" [disabled]=\"!isLeftScrollable()\" class=\"scroll-button\">\n <mat-icon style=\"margin: 0\">chevron_left</mat-icon>\n </button>\n <button mat-raised-button (click)=\"scrollToRight()\" [disabled]=\"!isRightScrollable()\" class=\"scroll-button\">\n <mat-icon style=\"margin: 0\">chevron_right</mat-icon>\n </button>\n </div>\n </div>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n <table [class.while-loading]=\"isLoading()\" mat-table [dataSource]=\"recentQualityMatrix().rows\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"row-header\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef #issueType>Issue Type</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"row-header mat-cell-level-{{row.meta.level + 1}}\"\n >\n {{\"quality_matrix.\" + row.meta.label | translate }}\n </td>\n </ng-container>\n <!-- one column for the source -->\n <ng-container *ngFor=\"let col of filteredColumns(); trackBy:columnIdent\" [matColumnDef]=\"col.id + '_source'\">\n <th [attr.colspan]=\"isHistoricalDataEnabled() ? 2 : 1\" metaqs2ScrollMarker mat-header-cell *matHeaderCellDef matTooltip=\"{{col.altLabel}}\">{{col.label}}</th>\n </ng-container>\n <!-- /source -->\n <!-- current Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns(); trackBy:columnIdent\" [matColumnDef]=\"column.id + '_current'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"{{column.altLabel}}\">{{ range.controls.end.value?.toLocaleString(DateTime.DATE_SHORT) }} <br>({{column.total}})</th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\" #cell (mouseover)=\"showTooltip(row, column, cell)\" (mouseleave)=\"hideTooltip(cell)\">\n @if ( column.total > 0) {\n <a class=\"chart-container\" (click)=\"openEditLink( column.label, row.meta.label)\">\n <div>\n <metaqs2-donut-chart [data]=\"getDonutSlices(row, column)\" [borderSize]=\"25\"></metaqs2-donut-chart>\n </div>\n </a>\n \n } @else {\n <div>-</div> \n }\n </td>\n </ng-container>\n <!-- /current Data Columns -->\n\n @if (isHistoricalDataEnabled()) {\n <!-- past Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns(); trackBy:columnIdent\" [matColumnDef]=\"column.id + '_past'\">\n <th class=\"historic-data-cell\" mat-header-cell\n *matHeaderCellDef>{{ range.controls.start.value?.toLocaleString(DateTime.DATE_SHORT) }}\n <br>{{ getPastColumn(column.id)?.total }}\n </th>\n <td class=\"historic-data-cell\" mat-cell *matCellDef=\"let row\">\n <ng-container *ngIf=\"getTrend(row, column) as trend\">\n <span [ngClass]=\"trend.trend\">\n <mat-icon aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" />\n {{ trend.delta }}\n </span>\n </ng-container>\n\n </td>\n </ng-container>\n <!-- /past Data Columns -->\n }\n\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['row-header'].concat(sourceColumns()); sticky: true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"allDataColumns(); sticky: true;\" [hidden]=\"!isHistoricalDataEnabled()\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['row-header'].concat(allDataColumns())\"></tr>\n </table>\n</mat-card>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of, pipe, UnaryFunction } from 'rxjs';\nimport { catchError, map, startWith } from 'rxjs/operators';\nexport type WrappedResponse<T> = { state: 'loading' } | { state: 'success'; data: T } | { state: 'error'; error: any };\n\nexport function wrapResponse<T>(): UnaryFunction<Observable<T>, Observable<WrappedResponse<T>>> {\n return pipe(\n map((data) => ({ state: 'success', data } as WrappedResponse<T>)),\n catchError((error) => of({ state: 'error', error } as WrappedResponse<T>)),\n startWith({ state: 'loading' } as WrappedResponse<T>)\n );\n}\n\n@Pipe({\n name: 'wrapObservable',\n})\nexport class WrapObservablePipe implements PipeTransform {\n transform<T>(value: Observable<T>): Observable<WrappedResponse<T>> {\n return value.pipe(wrapResponse());\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { CollectionWithMissingAttributes, MaterialWithMissingAttributes } from './java-api';\nimport { ConfigHelperService } from './config-helper.service';\n\n@Pipe({\n name: 'nodeImageUrl',\n})\nexport class NodeImageUrlPipe implements PipeTransform {\n private env = inject(ConfigHelperService);\n\n transform(\n value: MaterialWithMissingAttributes | CollectionWithMissingAttributes,\n args = {\n width: 200,\n height: 200,\n }\n ): string {\n return (\n this.env.eduSharingPath +\n '/preview?nodeId=' +\n encodeURIComponent(value.node_id!!) +\n '&crop=true&maxWidth=' +\n encodeURIComponent(args.width) +\n '&maxHeight=' +\n encodeURIComponent(args.height)\n );\n }\n}\n","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { CollectionWithMissingAttributes, MaterialWithMissingAttributes } from '../../java-api';\nimport { ConfigHelperService } from '../../config-helper.service';\nimport { NodeImageUrlPipe } from '../../node-image-url.pipe';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'metaqs2-node-entry',\n templateUrl: './node-entry.component.html',\n styleUrls: ['./node-entry.component.scss'],\n imports: [NodeImageUrlPipe, MatIconModule],\n})\nexport class NodeEntryComponent {\n private env = inject(ConfigHelperService);\n\n @Input() node: MaterialWithMissingAttributes | CollectionWithMissingAttributes;\n @Output() edit = new EventEmitter<MaterialWithMissingAttributes | CollectionWithMissingAttributes>();\n\n constructor() {}\n\n openNode(node: MaterialWithMissingAttributes | CollectionWithMissingAttributes) {\n window.open(\n this.env.eduSharingPath +\n '/components/editorial-desk/?mode=render&viewType=single&ids=' +\n encodeURIComponent(node.node_id!!)\n );\n // this.metaWidget.openNode(node);\n }\n\n isCollectionCount() {\n // @TODO\n return false;\n // return (this.node as MaterialCounts).materials_count !== undefined;\n }\n}\n","<div class=\"node\">\n <img class=\"icon\" [src]=\"node | nodeImageUrl\" loading=\"lazy\" />\n <div class=\"text\">\n <span class=\"title\">{{ node.title }}</span>\n @if (isCollectionCount()) {\n <span class=\"count\">{{ $any(node).materials_count }} Materialien</span>\n } @else {\n <span class=\"description\">{{ node.description }}</span>\n }\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 @if ($any(node).type === 'ccm:io') {\n <button mat-icon-button color=\"primary\" (click)=\"edit.emit(node)\">\n <mat-icon>edit</mat-icon>\n </button>\n }\n </div>\n</div>\n","import { Component, EventEmitter, inject, Input, OnChanges, OnDestroy, Output, SimpleChanges } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { map, shareReplay, takeUntil } from 'rxjs/operators';\nimport {\n CollectionAPIService,\n CollectionWithMissingAttributes,\n MaterialWithMissingAttributes,\n MissingAttributeResult,\n} from '../../java-api';\nimport { WrappedResponse, wrapResponse } from '../../wrap-observable.pipe';\nimport { ConfigHelperService } from '../../config-helper.service';\nimport { NodeEntryComponent } from '../node-entry/node-entry.component';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { FormsModule } from '@angular/forms';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatCardModule } from '@angular/material/card';\n\n@Component({\n selector: 'metaqs2-node-list',\n templateUrl: './node-list.component.html',\n styleUrls: ['./node-list.component.scss'],\n imports: [\n NodeEntryComponent,\n CommonModule,\n TranslateModule,\n MatIconModule,\n MatProgressSpinnerModule,\n FormsModule,\n MatSliderModule,\n MatCardModule,\n ],\n})\nexport class NodeListComponent implements OnChanges, OnDestroy {\n private env = inject(ConfigHelperService);\n @Input() mode: string;\n @Input() type: 'material' | 'collection';\n @Input() collectionId: string;\n /**\n * outputs the current count of materials in this view\n */\n @Output() countChanged = new EventEmitter<number>();\n\n /**\n * default max count of nodes that should be shown in view\n */\n readonly DEFAULT_LIMIT = 25;\n /**\n * default count to fetch from api\n */\n readonly FETCH_LIMIT = 200;\n wrappedData$: Observable<WrappedResponse<MissingAttributeResult>>;\n data = new BehaviorSubject<MissingAttributeResult | undefined>(undefined);\n // rawData: (MaterialWithMissingAttributes | CollectionWithMissingAttributes)[] | undefined;\n count: number | null = 0;\n\n private destroyed$ = new Subject<void>();\n /**\n * should all nodes be shown?\n */\n showAll = false;\n\n constructor(private collectionAPIService: CollectionAPIService) {\n this.data.pipe(takeUntil(this.destroyed$)).subscribe((d) => this.countChanged.next(d?.total || 0));\n }\n\n async ngOnChanges(_changes: SimpleChanges) {\n if (this.collectionId) {\n await this.refresh();\n }\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n async refresh() {\n let getByMissingAttribute = (): Observable<MissingAttributeResult> => {\n if (this.type === 'material') {\n return this.collectionAPIService.getMaterialsWithMissingAttribute(\n this.collectionId,\n this.mode,\n 0,\n this.FETCH_LIMIT\n );\n } else {\n return this.collectionAPIService.getCollectionsWithMissingAttribute(\n this.collectionId,\n this.mode,\n 0,\n this.FETCH_LIMIT\n );\n }\n };\n\n // reset all data before switching\n this.data.next(undefined);\n //this.rawData = undefined;\n this.wrappedData$ = getByMissingAttribute().pipe(wrapResponse(), shareReplay(1));\n this.data.next(\n await this.wrappedData$\n .pipe(map((wrappedData) => (wrappedData.state === 'success' ? wrappedData.data : undefined)))\n .toPromise()\n );\n //this.rawData = this.data.value?.slice();\n\n /**\n * @TODO: Count mode\n */\n /*\n if (?) {\n this.filterCount();\n }\n */\n }\n\n editNode(node: MaterialWithMissingAttributes | CollectionWithMissingAttributes) {\n let action: string;\n if (this.mode === 'without_license') {\n action = 'OPTIONS.LICENSE';\n } else {\n action = 'OPTIONS.EDIT';\n }\n\n const id = node.node_id!!;\n window.open(\n this.env.eduSharingPath +\n '/components/editorial-desk?mode=audit&viewType=single&ids=' +\n encodeURIComponent(id) +\n '&action=' +\n action\n );\n }\n\n filterCount() {\n // @TODO\n // this.data = this.rawData?.filter((d) => (d as MaterialCounts).materials_count <= (this.count ?? 0));\n }\n}\n","<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\">🥳</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","import { Component, OnInit } from '@angular/core';\nimport { FilterAPIService } from '../../java-api';\nimport { NodeListComponent } from '../node-list/node-list.component';\nimport { NgFor } from '@angular/common';\n\n@Component({\n selector: 'metaqs2-material-issues',\n templateUrl: './material-issues.component.html',\n styleUrls: ['./material-issues.component.scss'],\n imports: [NodeListComponent, NgFor],\n})\nexport class MaterialIssuesComponent implements OnInit {\n issues: string[] = [];\n // @TODO: Input is broken, maybe cause of withComponentInputBinding()?!\n collectionId: string = '94f22c9b-0d3a-4c1c-8987-4c8e83f3a92e';\n\n constructor(private filterAPIService: FilterAPIService) {}\n\n async ngOnInit() {\n this.issues = await this.filterAPIService.getMaterialIssueFieldNames().toPromise();\n }\n}\n","<metaqs2-node-list\n *ngFor=\"let mode of issues\"\n [collectionId]=\"collectionId\"\n [mode]=\"mode\"\n type=\"material\"\n></metaqs2-node-list>\n","import { Component, OnInit } from '@angular/core';\nimport { FilterAPIService } from '../../java-api';\nimport { NodeListComponent } from '../node-list/node-list.component';\nimport { NgFor } from '@angular/common';\n\n@Component({\n selector: 'metaqs2-collection-issues',\n templateUrl: './collection-issues.component.html',\n styleUrls: ['./collection-issues.component.scss'],\n imports: [NodeListComponent, NgFor],\n})\nexport class CollectionIssuesComponent implements OnInit {\n issues: string[] = [];\n // @TODO: Input is broken, maybe cause of withComponentInputBinding()?!\n collectionId: string = '94f22c9b-0d3a-4c1c-8987-4c8e83f3a92e';\n\n constructor(private filterAPIService: FilterAPIService) {}\n\n async ngOnInit() {\n this.issues = await this.filterAPIService.getCollectionIssueFieldNames().toPromise();\n }\n}\n","<metaqs2-node-list\n *ngFor=\"let mode of issues\"\n [collectionId]=\"collectionId\"\n [mode]=\"mode\"\n type=\"collection\"\n></metaqs2-node-list>\n","import { Injectable } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nconst ICONS = {\n child:\n '<svg width=\"37\" height=\"37\" viewBox=\"0 0 37 37\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.7188 24.2813H3.46875C2.82991 24.2813 2.3125 23.7638 2.3125 23.125V13.875C2.3125 13.2362 2.82991 12.7188 3.46875 12.7188H12.7188C13.3576 12.7188 13.875 13.2362 13.875 13.875V23.125C13.875 23.7638 13.3576 24.2813 12.7188 24.2813ZM4.625 21.9688H11.5625V15.0313H4.625V21.9688Z\" fill=\"black\"/><path d=\"M33.5313 32.375H24.2813C23.6424 32.375 23.125 31.8576 23.125 31.2188V21.9688C23.125 21.3299 23.6424 20.8125 24.2813 20.8125H33.5313C34.1701 20.8125 34.6875 21.3299 34.6875 21.9688V31.2188C34.6875 31.8576 34.1701 32.375 33.5313 32.375ZM25.4375 30.0625H32.375V23.125H25.4375V30.0625Z\" fill=\"black\"/><path d=\"M33.5313 13.875H24.2813C23.6424 13.875 23.125 13.3576 23.125 12.7188V3.46875C23.125 2.82991 23.6424 2.3125 24.2813 2.3125H33.5313C34.1701 2.3125 34.6875 2.82991 34.6875 3.46875V12.7188C34.6875 13.3576 34.1701 13.875 33.5313 13.875ZM25.4375 11.5625H32.375V4.625H25.4375V11.5625Z\" fill=\"black\"/><path d=\"M18.5 37C17.8612 37 17.3438 36.4826 17.3438 35.8438V1.15625C17.3438 0.517408 17.8612 0 18.5 0C19.1388 0 19.6563 0.517408 19.6563 1.15625V35.8438C19.6563 36.4826 19.1388 37 18.5 37Z\" fill=\"black\"/><path d=\"M18.5 19.6563H12.7188C12.0799 19.6563 11.5625 19.1388 11.5625 18.5C11.5625 17.8612 12.0799 17.3438 12.7188 17.3438H18.5C19.1388 17.3438 19.6563 17.8612 19.6563 18.5C19.6563 19.1388 19.1388 19.6563 18.5 19.6563Z\" fill=\"black\"/><path d=\"M24.2813 9.25H18.5C17.8612 9.25 17.3438 8.73259 17.3438 8.09375C17.3438 7.45491 17.8612 6.9375 18.5 6.9375H24.2813C24.9201 6.9375 25.4375 7.45491 25.4375 8.09375C25.4375 8.73259 24.9201 9.25 24.2813 9.25Z\" fill=\"black\"/><path d=\"M24.2813 27.75H18.5C17.8612 27.75 17.3438 27.2326 17.3438 26.5938C17.3438 25.9549 17.8612 25.4375 18.5 25.4375H24.2813C24.9201 25.4375 25.4375 25.9549 25.4375 26.5938C25.4375 27.2326 24.9201 27.75 24.2813 27.75Z\" fill=\"black\"/></svg>',\n tree: '<svg width=\"43\" height=\"43\" viewBox=\"0 0 43 43\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M36.3082 24.5605C34.6184 24.5605 33.2478 23.1899 33.2478 21.5001C33.2478 19.8086 34.6184 18.4397 36.3082 18.4397C37.9996 18.4397 39.3686 19.8086 39.3686 21.5001C39.3686 23.1899 37.9996 24.5605 36.3082 24.5605V24.5605ZM6.62486 37.0842C4.93341 37.0842 3.56279 35.7136 3.56279 34.0238C3.56279 32.3324 4.93341 30.9634 6.62486 30.9634C8.31463 30.9634 9.68526 32.3324 9.68526 34.0238C9.68526 35.7136 8.31463 37.0842 6.62486 37.0842ZM6.62486 12.0367C4.93341 12.0367 3.56279 10.6661 3.56279 8.97467C3.56279 7.28489 4.93341 5.91427 6.62486 5.91427C8.31463 5.91427 9.68526 7.28489 9.68526 8.97467C9.68526 10.6661 8.31463 12.0367 6.62486 12.0367ZM36.3082 16.3032C34.3261 16.3032 32.6028 17.4151 31.7261 19.0478C30.3387 19.0461 28.4793 19.0511 27.5957 19.0461C25.5633 19.0343 23.8836 17.4017 23.8584 15.3692C23.8316 13.3889 23.3243 11.5782 22.0981 10.0028C20.7006 8.20892 18.9336 6.9811 16.6608 6.58636C16.0863 6.48726 15.4951 6.45534 14.9105 6.44694C13.6609 6.43015 12.4095 6.43518 11.1598 6.4419C10.2712 4.85292 8.57306 3.7796 6.62456 3.7796C3.75397 3.7796 1.42758 6.10599 1.42758 8.97486C1.42758 11.8455 3.75397 14.1718 6.62456 14.1718C8.5713 14.1718 10.2695 13.0985 11.1581 11.5129C12.4901 11.5146 13.822 11.5079 15.154 11.5247C15.4933 11.528 15.8427 11.5935 16.1669 11.6977C17.6937 12.1864 18.7402 13.6192 18.7586 15.2468C18.7855 17.3263 19.3801 19.1975 20.7407 20.7964C20.9523 21.0467 21.1824 21.2818 21.4025 21.522C21.379 21.5506 21.3655 21.5707 21.3487 21.5875C19.7362 23.1665 18.888 25.0846 18.7839 27.3371C18.762 27.7856 18.7671 28.2441 18.6747 28.6791C18.3119 30.3672 16.7817 31.58 15.0348 31.59C13.7617 31.5968 12.4901 31.5917 11.2186 31.5951C10.3452 29.949 8.61675 28.8269 6.62275 28.8269C3.75383 28.8269 1.42749 31.1533 1.42749 34.0239C1.42749 36.8928 3.75388 39.2192 6.62275 39.2192C8.5544 39.2192 10.2374 38.166 11.1343 36.6022C12.4596 36.609 13.7866 36.6123 15.1135 36.5989C15.5771 36.5939 16.0457 36.5569 16.5043 36.4847C18.5031 36.1756 20.1559 35.2165 21.525 33.7501C22.9208 32.2569 23.7052 30.4983 23.8194 28.4491C23.8446 28.009 23.8479 27.5639 23.9135 27.1289C24.162 25.4828 25.7914 24.0752 27.4526 24.0634C28.3949 24.055 30.35 24.0584 31.7878 24.0584C32.6797 25.6323 34.3695 26.6955 36.308 26.6955C39.1786 26.6955 41.505 24.3691 41.505 21.5002C41.505 18.6296 39.1786 16.3033 36.308 16.3033\" fill=\"black\"/></svg>',\n 'types/audio':\n '<svg width=\"35\" height=\"35\" viewBox=\"0 0 35 35\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.5 1.45834C10.2521 1.45834 4.375 7.33543 4.375 14.5833V24.7917C4.375 27.2125 6.32917 29.1667 8.75 29.1667H13.125V17.5H7.29167V14.5833C7.29167 8.93959 11.8563 4.37501 17.5 4.37501C23.1438 4.37501 27.7083 8.93959 27.7083 14.5833V17.5H21.875V29.1667H26.25C28.6708 29.1667 30.625 27.2125 30.625 24.7917V14.5833C30.625 7.33543 24.7479 1.45834 17.5 1.45834Z\" fill=\"black\"/></svg>',\n 'types/exercise':\n '<svg width=\"27\" height=\"33\" viewBox=\"0 0 27 33\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19.9836 14.3248L13.3957 7.61539H2.49795C1.12408 7.61539 0.0124901 8.75769 0.0124901 10.1538L0 30.4615C0 31.8577 1.11159 33 2.48546 33H17.4857C18.8596 33 19.9836 31.8577 19.9836 30.4615V14.3248ZM1.87347 30.462C1.87371 30.8189 2.15862 31.0962 2.48546 31.0962H17.4857C17.8249 31.0962 18.1102 30.8062 18.1102 30.4615V16.2287H11.5222V9.51923H2.49795C2.17097 9.51923 1.88596 9.79672 1.88596 10.1538L1.87347 30.462ZM13.3957 14.3248H17.3462L13.3957 10.1538V14.3248Z\" fill=\"black\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M20.1647 0L26.7526 6.70945V22.8462C26.7526 24.2423 25.6285 25.3846 24.2546 25.3846H19.4616V23.4808H24.2546C24.5938 23.4808 24.8791 23.1908 24.8791 22.8462V8.6133H18.2912V1.90385H9.26691C8.93992 1.90385 8.65491 2.18133 8.65491 2.53846L8.65179 7.61538H6.77832L6.78144 2.53846C6.78144 1.14231 7.89303 0 9.26691 0H20.1647ZM24.1151 6.70945H20.1647V2.53846L24.1151 6.70945Z\" fill=\"black\"/><line x1=\"4\" y1=\"19.25\" x2=\"16\" y2=\"19.25\" stroke=\"black\" stroke-width=\"1.5\"/><line x1=\"4\" y1=\"22.25\" x2=\"16\" y2=\"22.25\" stroke=\"black\" stroke-width=\"1.5\"/><line x1=\"4\" y1=\"25.25\" x2=\"16\" y2=\"25.25\" stroke=\"black\" stroke-width=\"1.5\"/><line x1=\"4\" y1=\"28.25\" x2=\"16\" y2=\"28.25\" stroke=\"black\" stroke-width=\"1.5\"/></svg>',\n 'types/image':\n '<svg width=\"34\" height=\"26\" viewBox=\"0 0 34 26\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3.08885 0.400024C1.71214 0.400024 0.568848 1.54331 0.568848 2.92002V23.08C0.568848 24.4567 1.71214 25.6 3.08885 25.6H31.1688C32.5456 25.6 33.6888 24.4567 33.6888 23.08V2.92002C33.6888 1.54331 32.5456 0.400024 31.1688 0.400024H3.08885ZM3.08885 2.56002H31.1688C31.3868 2.56002 31.5288 2.70206 31.5288 2.92002V17.23L26.0838 12.8762C25.7281 12.5879 25.181 12.564 24.8013 12.8199L19.6937 16.3299L12.7637 10.7161C12.5429 10.5361 12.249 10.4489 11.9649 10.4798C11.7877 10.5009 11.6161 10.567 11.4699 10.6711L2.72874 16.7011V2.91993C2.72874 2.70197 2.87077 2.55993 3.08874 2.55993L3.08885 2.56002ZM19.6488 5.44002C17.8728 5.44002 16.4088 6.90393 16.4088 8.68002C16.4088 10.4561 17.8728 11.92 19.6488 11.92C21.4249 11.92 22.8888 10.4561 22.8888 8.68002C22.8888 6.90393 21.4249 5.44002 19.6488 5.44002ZM19.6488 7.60002C20.2578 7.60002 20.7288 8.07112 20.7288 8.68002C20.7288 9.28893 20.2578 9.76002 19.6488 9.76002C19.0399 9.76002 18.5688 9.28893 18.5688 8.68002C18.5688 8.07112 19.0399 7.60002 19.6488 7.60002ZM12.0438 12.91L18.9738 18.5123C19.3296 18.8006 19.8767 18.8245 20.2563 18.5686L25.3525 15.0586L31.5287 19.9974V23.0799C31.5287 23.2979 31.3866 23.4399 31.1687 23.4399H3.08867C2.8707 23.4399 2.72867 23.2979 2.72867 23.0799V19.3338L12.0438 12.91Z\" fill=\"black\"/></svg>',\n 'types/lesson_planning':\n '<svg width=\"24\" height=\"30\" viewBox=\"0 0 24 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M23.617 7.92935L15.8313 0H2.95213C1.32846 0 0.014761 1.35 0.014761 3L0 27C0 28.65 1.3137 30 2.93737 30H20.6649C22.2886 30 23.617 28.65 23.617 27V7.92935ZM2.2141 27.0005C2.21438 27.4223 2.55109 27.75 2.93737 27.75H20.6649C21.0658 27.75 21.4029 27.4074 21.4029 27V10.1794H13.6172V2.25H2.95213C2.56569 2.25 2.22886 2.57793 2.22886 3L2.2141 27.0005ZM15.8313 7.92935H20.5L15.8313 3V7.92935Z\" fill=\"black\"/><path d=\"M4 19.8H5.66667V18.2H4V19.8ZM4 23H5.66667V21.4H4V23ZM4 16.6H5.66667V15H4V16.6ZM7.33333 19.8H19V18.2H7.33333V19.8ZM7.33333 23H19V21.4H7.33333V23ZM7.33333 15V16.6H19V15H7.33333Z\" fill=\"black\"/></svg>',\n 'types/total':\n '<svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"36\" height=\"36\" fill=\"white\"/><rect x=\"3\" y=\"3\" width=\"8\" height=\"8\" fill=\"black\"/><rect x=\"3\" y=\"14\" width=\"8\" height=\"8\" fill=\"black\"/><rect x=\"3\" y=\"25\" width=\"8\" height=\"8\" fill=\"black\"/><rect x=\"14\" y=\"3\" width=\"8\" height=\"8\" fill=\"black\"/><rect x=\"14\" y=\"14\" width=\"8\" height=\"8\" fill=\"black\"/><rect x=\"14\" y=\"25\" width=\"8\" height=\"8\" fill=\"black\"/><rect x=\"25\" y=\"3\" width=\"8\" height=\"8\" fill=\"black\"/><rect x=\"25\" y=\"14\" width=\"8\" height=\"8\" fill=\"black\"/><rect x=\"25\" y=\"25\" width=\"8\" height=\"8\" fill=\"black\"/></svg>',\n 'types/video':\n '<svg width=\"36\" height=\"27\" viewBox=\"0 0 36 27\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6.45 0.169922C2.89915 0.169922 0 3.06907 0 6.61992V20.3799C0 23.9308 2.89915 26.8299 6.45 26.8299H28.81C32.3609 26.8299 35.26 23.9308 35.26 20.3799V6.61992C35.26 3.06907 32.3609 0.169922 28.81 0.169922H6.45ZM6.45 2.74992H28.81C30.9768 2.74992 32.68 4.45311 32.68 6.61992V20.3799C32.68 22.5467 30.9768 24.2499 28.81 24.2499H6.45C4.28319 24.2499 2.58 22.5467 2.58 20.3799V6.61992C2.58 4.45311 4.28319 2.74992 6.45 2.74992ZM13.8004 6.61992C13.451 6.60816 13.1134 6.73918 12.8615 6.98273C12.6112 7.22629 12.4701 7.56057 12.4701 7.9099V19.0899C12.4667 19.7517 12.9656 20.311 13.6257 20.3799C13.8861 20.4068 14.1481 20.3564 14.3782 20.2321L24.6982 14.6421C25.1165 14.417 25.3751 13.9803 25.3751 13.5066C25.3751 13.0313 25.1165 12.5962 24.6982 12.3712L14.3782 6.78117C14.2002 6.68207 14.0037 6.62664 13.8004 6.61992H13.8004ZM15.0501 10.0868L21.3659 13.4999L15.0501 16.9265V10.0868Z\" fill=\"black\"/></svg>',\n 'types/worksheet':\n '<svg width=\"29\" height=\"28\" viewBox=\"0 0 29 28\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M27.4071 8.81132C26.4479 7.8521 24.886 7.8521 23.9267 8.81132C23.6314 9.10664 21.7469 10.9934 21.4592 11.281L21.4581 4.78081C21.4581 4.12345 21.2022 3.50549 20.7373 3.04066L18.4175 0.720807C17.9526 0.255951 17.3347 3.05176e-05 16.6773 3.05176e-05H2.59083C1.23347 3.05176e-05 0.129883 1.10362 0.129883 2.46098V25.5391C0.129883 26.8965 1.23347 28.0001 2.59083 28.0001H18.9971C20.3545 28.0001 21.4581 26.8965 21.4581 25.5391V18.246L27.407 12.2915C28.3684 11.3301 28.3684 9.77368 27.407 8.8111L27.4071 8.81132ZM16.5364 1.6408C16.6917 1.6408 16.9903 1.61346 17.2572 1.88143L19.577 4.20129C19.8373 4.4616 19.8177 4.74706 19.8177 4.92206H16.5363L16.5364 1.6408ZM19.8177 25.5394C19.8177 25.9922 19.4502 26.3597 18.9974 26.3597H2.59108C2.13827 26.3597 1.77077 25.9922 1.77077 25.5394V2.4612C1.77077 2.00839 2.13827 1.64089 2.59108 1.64089H14.8957V5.74233C14.8957 6.19514 15.2632 6.56264 15.716 6.56264H19.8174V12.924L17.397 15.3466L16.2376 16.506C16.1479 16.5957 16.0801 16.7061 16.0396 16.8264L14.8792 20.3068C14.7807 20.6022 14.8573 20.927 15.0772 21.1468C15.297 21.3667 15.6218 21.4432 15.9172 21.3448L19.3975 20.1843C19.5179 20.1439 19.6283 20.0761 19.718 19.9864L19.8175 19.8868L19.8177 25.5394ZM17.978 17.0859L19.1385 18.2463L18.6955 18.6893L16.9554 19.269L17.5351 17.5288L17.978 17.0859ZM20.2979 17.0859L19.1374 15.9254C19.7554 15.3075 22.4985 12.5609 23.0804 11.9791L24.2408 13.1396L20.2979 17.0859ZM26.2468 11.1325L25.4013 11.9791L24.2408 10.8186L25.0863 9.97206C25.4068 9.6527 25.9263 9.6527 26.2468 9.97206C26.5661 10.2925 26.5683 10.811 26.2468 11.1325Z\" fill=\"black\"/><path d=\"M15.7159 8.20319H4.23145C3.77863 8.20319 3.41113 8.57069 3.41113 9.0235C3.41113 9.47632 3.77863 9.84382 4.23145 9.84382H15.7159C16.1687 9.84382 16.5362 9.47632 16.5362 9.0235C16.5362 8.57069 16.1687 8.20319 15.7159 8.20319Z\" fill=\"black\"/><path d=\"M12.4346 11.4845H4.23145C3.77863 11.4845 3.41113 11.852 3.41113 12.3048C3.41113 12.7576 3.77863 13.1251 4.23145 13.1251H12.4346C12.8874 13.1251 13.2549 12.7576 13.2549 12.3048C13.2549 11.852 12.8874 11.4845 12.4346 11.4845Z\" fill=\"black\"/><path d=\"M12.4346 14.7655H4.23145C3.77863 14.7655 3.41113 15.133 3.41113 15.5859C3.41113 16.0387 3.77863 16.4062 4.23145 16.4062H12.4346C12.8874 16.4062 13.2549 16.0387 13.2549 15.5859C13.2549 15.133 12.8874 14.7655 12.4346 14.7655Z\" fill=\"black\"/><path d=\"M12.4346 18.0468H4.23145C3.77863 18.0468 3.41113 18.4143 3.41113 18.8672C3.41113 19.32 3.77863 19.6875 4.23145 19.6875H12.4346C12.8874 19.6875 13.2549 19.32 13.2549 18.8672C13.2549 18.4143 12.8874 18.0468 12.4346 18.0468Z\" fill=\"black\"/><path d=\"M15.7163 23.0782H10.7944C10.3416 23.0782 9.97412 23.4457 9.97412 23.8985C9.97412 24.3513 10.3416 24.7188 10.7944 24.7188H15.7163C16.1691 24.7188 16.5366 24.3513 16.5366 23.8985C16.5366 23.4457 16.1691 23.0782 15.7163 23.0782V23.0782Z\" fill=\"black\"/></svg>',\n layers:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#5f6368\"><path d=\"M480-118 120-398l66-50 294 228 294-228 66 50-360 280Zm0-202L120-600l360-280 360 280-360 280Zm0-280Zm0 178 230-178-230-178-230 178 230 178Z\"/></svg>',\n 'level-1':\n '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4 12.9L3 13.8L11 20.7C11.6 21.2 12.4 21.2 13 20.7L21 13.8L20 12.9L12 19.8L4 12.9ZM11 3.40002L4 9.40002C3.4 9.90002 3.4 10.7 4 11.1L11 17.2C11.6 17.7 12.4 17.7 13 17.2L20 11.1C20.5 10.6 20.5 9.80002 20 9.40002L13 3.30002C12.4 2.90002 11.6 2.90002 11 3.40002Z\" fill=\"#003B7C\"/></svg>',\n 'level-2':\n '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M20.3 9.90005C20.2 9.70005 20.1 9.60005 20 9.40005L13 3.30005C12.5 2.80005 11.5 2.80005 11 3.30005L4 9.40005C3.5 9.90005 3.5 10.7 4 11.1L11 17.2C11.5 17.7 12.5 17.7 13 17.2L20 11.1C20.3 10.8 20.4 10.5 20.4 10.2C20.4 10.1 20.4 10 20.3 9.90005ZM5 10.3L12 4.20005L19 10.3L12 16.4L5 10.3ZM20 12.9L12 19.8L4 12.9L3 13.8L11 20.7001C11.5 21.2001 12.5 21.2001 13 20.7001L21 13.8L20 12.9Z\" fill=\"#003B7C\"/><path opacity=\"0.3\" d=\"M19 10.3L12 16.3L5 10.3L12 4.19995L19 10.3Z\" fill=\"#003B7C\"/></svg>',\n 'level-3':\n '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M20.3 9.90005C20.2 9.70005 20.1 9.60005 20 9.40005L13 3.30005C12.5 2.80005 11.5 2.80005 11 3.30005L4 9.40005C3.5 9.90005 3.5 10.7 4 11.1L11 17.2C11.5 17.7 12.5 17.7 13 17.2L20 11.1C20.3 10.8 20.4 10.5 20.4 10.2C20.4 10.1 20.4 10 20.3 9.90005ZM5 10.3L12 4.20005L19 10.3L12 16.4L5 10.3ZM20 12.9L12 19.8L4 12.9L3 13.8L11 20.7001C11.5 21.2001 12.5 21.2001 13 20.7001L21 13.8L20 12.9Z\" fill=\"#003B7C\"/></svg>',\n};\n\n@Injectable({ providedIn: 'root' })\nexport class SvgIconsService {\n private initialized = false;\n\n constructor(private matIconRegistry: MatIconRegistry, private domSanitizer: DomSanitizer) {\n this.init();\n }\n\n init() {\n if (this.initialized) {\n return;\n }\n for (const icon of Object.keys(ICONS)) {\n //console.log('!svg-inline-loader?classPrefix!src/assets/svg/' + icon + '.svg');\n this.matIconRegistry.addSvgIconLiteral(\n icon,\n this.domSanitizer.bypassSecurityTrustHtml((ICONS as any)[icon] as string)\n );\n }\n this.initialized = true;\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ApiModule as JavaApiModule, Configuration as JavaConfig } from './java-api';\nimport {\n ConfigHelperService,\n NG_META_WIDGETS_LIB_CONFIGURATION,\n NgMetaWidgetsLibConfiguration,\n} from './config-helper.service';\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { MatListModule } from '@angular/material/list';\nimport { MatSort, MatSortModule } from '@angular/material/sort';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { QualityMatrixFilterComponent } from './components/filter/quality-matrix-filter.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { QualityMatrixComponent } from './components/quality-matrix/quality_matrix';\nimport {\n MatDatepicker,\n MatDatepickerInput,\n MatDatepickerModule,\n MatDatepickerToggle,\n MatDateRangeInput,\n MatDateRangePicker,\n} from '@angular/material/datepicker';\nimport { DatepickerComponent } from './components/filter/datepicker/datepicker.component';\nimport { DonutChartComponent } from './components/donut-chart/donut-chart.component';\nimport { DonutChartPipe } from './components/donut-chart/donut-chart.pipe';\nimport { provideCharts, withDefaultRegisterables } from 'ng2-charts';\nimport { SvgIconsService } from './core/svg-icons.service';\nimport { NodeListComponent } from './components/node-list/node-list.component';\nimport { MaterialIssuesComponent } from './components/material-issues/material-issues.component';\nimport { CollectionIssuesComponent } from './components/collection-issues/collection-issues.component';\nimport { ProgressSpinnerComponent } from './components/loading_indicator/progress-spinner/progress-spinner.component';\nimport { ScrollMarkerDirective } from './components/quality-matrix/scroll-marker.directive';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n declarations: [],\n exports: [CollectionIssuesComponent, MaterialIssuesComponent, NodeListComponent, QualityMatrixComponent],\n imports: [\n CommonModule,\n TranslateModule,\n CollectionIssuesComponent,\n MaterialIssuesComponent,\n NodeListComponent,\n BrowserModule,\n JavaApiModule.forRoot(() => new JavaConfig()),\n MatCardModule,\n MatTreeModule,\n DonutChartComponent,\n DonutChartPipe,\n BrowserAnimationsModule,\n MatIconModule,\n MatSliderModule,\n QualityMatrixComponent,\n MatSlideToggleModule,\n MatButtonModule,\n MatProgressSpinnerModule,\n MatTableModule,\n MatGridListModule,\n MatFormFieldModule,\n MatInputModule,\n MatSidenavModule,\n FormsModule,\n MatSelectModule,\n ReactiveFormsModule,\n MatTooltipModule,\n MatListModule,\n MatSort,\n MatSortModule,\n MatCheckbox,\n TranslateModule,\n QualityMatrixFilterComponent,\n MatDateRangeInput,\n MatDatepickerToggle,\n MatDatepickerModule,\n MatDateRangePicker,\n MatDatepickerInput,\n MatDatepicker,\n DatepickerComponent,\n ProgressSpinnerComponent,\n ScrollMarkerDirective,\n ],\n providers: [provideHttpClient(withInterceptorsFromDi()), provideCharts(withDefaultRegisterables())],\n})\nexport class NgMetaWidgetsLibModule {\n constructor(private readonly svgIconsService: SvgIconsService) {\n // we inject the service here to make sure the icons are registered (the init() method is called in the constructor)\n }\n static forRoot(params: NgMetaWidgetsLibConfiguration): ModuleWithProviders<NgMetaWidgetsLibModule> {\n return {\n ngModule: NgMetaWidgetsLibModule,\n providers: [\n ConfigHelperService,\n { provide: NG_META_WIDGETS_LIB_CONFIGURATION, useValue: params },\n {\n provide: JavaConfig,\n useFactory: () => {\n return new JavaConfig({\n basePath: params.apiPath,\n withCredentials: true,\n });\n },\n },\n ],\n };\n }\n}\n","import { Component, Input, signal } from '@angular/core';\nimport { BehaviorSubject, forkJoin, Observable, of } from 'rxjs';\nimport { finalize, map, take, tap } from 'rxjs/operators';\nimport { MetaApiService } from '../meta-api.service';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { EditorialLinkService } from '../components/editorial-link-service/editorial-link.service';\nimport { MatrixWithCounts, QualityMatrixHeader } from '../java-api';\nimport { AsyncPipe, NgClass, NgForOf, NgIf } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTableModule } from '@angular/material/table';\nimport { ProgressSpinnerComponent } from '../components/loading_indicator/progress-spinner/progress-spinner.component';\n\n@Component({\n selector: 'metaqs2-tree-collection-details',\n templateUrl: './tree-collection-details.component.html',\n standalone: true,\n styleUrls: ['./tree-collection-details.component.scss'],\n imports: [\n TranslateModule,\n AsyncPipe,\n NgClass,\n MatCardModule,\n MatIcon,\n NgIf,\n NgForOf,\n MatTableModule,\n ProgressSpinnerComponent,\n ],\n})\nexport class TreeCollectionDetailsComponent {\n readonly recentQualityMatrix$ = new BehaviorSubject<MatrixWithCounts>({ columns: [], rows: [] });\n\n @Input({ required: true })\n set collectionId(id: string) {\n this.loadDataForCollection(id);\n }\n\n @Input()\n pageTitle: string = '';\n\n isLoading = signal(true);\n dataColumns: Array<QualityMatrixHeader> = [];\n\n constructor(\n private readonly metaApi: MetaApiService,\n private readonly translate: TranslateService,\n private readonly linkService: EditorialLinkService\n ) {}\n\n private async loadDataForCollection(collectionId: string): Promise<void> {\n this.isLoading.set(true);\n this.metaApi\n .getCollectionCompleteness(collectionId)\n .pipe(\n finalize(() => {\n this.isLoading.set(false);\n }),\n tap((qm) => {\n this.dataColumns = qm.columns.map((c) => c);\n })\n )\n .subscribe((qm) => this.recentQualityMatrix$.next(qm));\n }\n\n private extractCollectionIdFromVocabUrl(url: string): string {\n return url.substring(url.lastIndexOf('/') + 1);\n }\n\n get columnIds() {\n return this.dataColumns.map((c) => c.id);\n }\n\n translateCollectionIssues(entries: string[]) {\n if (!entries.length) {\n return of('');\n }\n\n const allTranslations = forkJoin(\n entries.map((entry) => {\n return this.translate.get(`quality_matrix.${entry}`).pipe(take(1)) as Observable<string>;\n })\n );\n return allTranslations.pipe(take(1)).pipe(map((translations) => translations.join(', ')));\n }\n\n openCollection(id: string) {\n const collectionId = this.extractCollectionIdFromVocabUrl(id);\n this.linkService.openByCollectionId(collectionId);\n }\n\n async showMaterialWithIssue(collectionId: string, collectionTitel: string, issueType: string) {\n const translated = await this.translate.get('quality_matrix.' + issueType).toPromise();\n const title = collectionTitel + ' - ' + translated;\n return this.linkService.openByCollectionAndIssueType(collectionId, issueType, title);\n }\n\n protected readonly Math = Math;\n}\n","<mat-card>\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title>\n Qualitätsmetrik: {{pageTitle | translate}}{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n </mat-card-header>\n</mat-card>\n<mat-card>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n <table *ngIf=\"!isLoading()\" [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"recentQualityMatrix$.value.rows\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"row-header\" sticky>\n <th mat-header-cell *matHeaderCellDef>Sammlung</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"row-header {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n <a (click)=\"openCollection(row.meta.id)\">\n <mat-icon [svgIcon]=\"'level-' + Math.min(3, row.meta.level+1)\"></mat-icon>\n {{row.meta.label}}\n </a>\n </td>\n </ng-container>\n\n <!-- Data Columns -->\n <ng-container *ngFor=\"let column of dataColumns\" [matColumnDef]=\"column.id\">\n <th mat-header-cell *matHeaderCellDef>{{ \"quality_matrix.\" + column.label | translate }}</th>\n <td mat-cell *matCellDef=\"let row\">\n @if ( column.id === 'collection_issues' ) {\n {{ translateCollectionIssues(row.counts[column.id]) | async }}\n } @else {\n <a *ngIf=\"row.counts[column.id]\" (click)=\"showMaterialWithIssue(row.meta.id, row.meta.label, column.id)\">\n {{ row.counts[column.id] }}\n </a>\n }\n </td>\n </ng-container>\n\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['row-header'].concat(columnIds); sticky:true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['row-header'].concat(columnIds)\"></tr>\n </table>\n</mat-card>\n","import { Observable, Subject } from 'rxjs';\nexport interface RequestData {\n basePath: string;\n collectionId: string;\n searchTerm: string;\n oerOnly: boolean;\n}\n\nexport class InlineWorker {\n private readonly worker: Worker;\n private onMessage = new Subject<MessageEvent>();\n private onError = new Subject<ErrorEvent>();\n\n private func = () => {\n // START OF WORKER THREAD CODE\n console.debug('Start worker thread, wait for postMessage: ');\n\n const maxConcurrentRequests = 10; // Limit the number of concurrent fetch requests\n let activeRequests = 0;\n let requestQueue: { data: RequestData; resolve: any; reject: any }[] = [];\n\n // Function to process the next request in the queue\n function processQueue() {\n if (activeRequests >= maxConcurrentRequests || requestQueue.length === 0) {\n return; // Exit if max requests are active or queue is empty\n }\n // @ts-ignore\n const { data, resolve, reject } = requestQueue.shift();\n activeRequests++;\n\n // Perform the fetch request\n const { basePath, collectionId, searchTerm, oerOnly } = data;\n searchForTypeAndCollection(basePath, searchTerm, oerOnly)\n .then(\n (response) => (response.ok ? response : Promise.reject(response)),\n (error) => Promise.reject(error)\n )\n .then((response) => response.json())\n .then((data) => {\n resolve({ collectionId, data });\n })\n .catch((error) => {\n reject(error); // Handle the error\n })\n .finally(() => {\n activeRequests--; // Decrement active request count\n processQueue(); // Process the next request in the queue\n });\n }\n\n // Add a new fetch request to the queue\n function enqueueRequest(event: MessageEvent) {\n return new Promise((resolve, reject) => {\n try {\n requestQueue.push({ data: event.data, resolve, reject });\n processQueue(); // Start processing the queue\n } catch (error) {\n console.error('Error enqueuing request:', error);\n }\n });\n }\n\n const searchForTypeAndCollection = (basePath: string, searchTerm: string, oerOnly: boolean = false) => {\n //strip trailing slash from basePath, if present\n const searchUrl = new URL(basePath.replace(/\\/$/, '') + '/collections/v2/material/search');\n searchUrl.searchParams.set('term', searchTerm);\n searchUrl.searchParams.set('oerOnly', oerOnly ? 'true' : 'false');\n return fetch(searchUrl, { credentials: 'include' });\n };\n\n self.onmessage = (evt: MessageEvent) => {\n enqueueRequest(evt)\n .then((data) => {\n postMessage(data);\n })\n .catch((error) => {\n postMessage({ success: false, error: error.message });\n });\n };\n // END OF WORKER THREAD CODE\n };\n private basePath: any;\n\n constructor({ basePath }: { basePath: string }) {\n this.basePath = basePath;\n const WORKER_ENABLED = !!Worker;\n\n if (WORKER_ENABLED) {\n const functionBody = this.func\n .toString()\n .replace(/^[^{]*{\\s*/, '')\n .replace(/\\s*}[^}]*$/, '');\n\n this.worker = new Worker(URL.createObjectURL(new Blob([functionBody], { type: 'text/javascript' })));\n\n this.worker.onmessage = (data) => {\n this.onMessage.next(data);\n };\n\n this.worker.onerror = (data) => {\n console.error('workers error: ', data);\n this.onError.next(data);\n };\n } else {\n throw new Error('WebWorker is not enabled');\n }\n }\n\n postMessage(data: Partial<RequestData>) {\n this.worker.postMessage({ basePath: this.basePath, ...data });\n }\n\n onmessage(): Observable<MessageEvent> {\n return this.onMessage.asObservable();\n }\n\n onerror(): Observable<ErrorEvent> {\n return this.onError.asObservable();\n }\n //TODO: implement graceful shutdown and abort outstanding requests\n terminate() {\n if (this.worker) {\n this.worker.terminate();\n }\n }\n}\n","import { Component, Inject, Input, OnDestroy, OnInit, signal } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { MetaApiService } from '../meta-api.service';\nimport { ConfigHelperService } from '../config-helper.service';\nimport { QualityMatrix } from '../java-api';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { InlineWorker } from './inline-worker';\nimport { AsyncPipe, DOCUMENT, NgClass, NgForOf, NgIf } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { ProgressSpinnerComponent } from '../components/loading_indicator/progress-spinner/progress-spinner.component';\n\nexport interface DataColumn {\n id: string;\n icon: string;\n label: string;\n level?: number;\n}\n\n@Component({\n selector: 'metaqs2-tree-search-counts',\n standalone: true,\n templateUrl: './tree-search-counts.component.html',\n styleUrls: ['./tree-search-counts.component.scss'],\n imports: [\n TranslateModule,\n AsyncPipe,\n NgClass,\n MatCardModule,\n MatIcon,\n NgIf,\n NgForOf,\n MatTableModule,\n MatSlideToggle,\n ReactiveFormsModule,\n ProgressSpinnerComponent,\n ],\n})\nexport class TreeSearchCountsComponent implements OnInit, OnDestroy {\n /**\n * default max count of columns that should be shown\n */\n readonly DEFAULT_COLUMN_LIMIT = 6;\n readonly COLLECTION_POSTFIX = '_collection';\n readonly SEARCH_POSTFIX = '_search';\n readonly searchCounts = new BehaviorSubject<Map<string, number>>(new Map<string, number>());\n readonly showOERonly = new FormControl({ value: true, disabled: false }, { nonNullable: true });\n readonly showAllColumns = new FormControl({ value: false, disabled: false }, { nonNullable: true });\n\n // convert this in an Obeservable\n protected materialCounts: QualityMatrix;\n public columns: DataColumn[];\n protected rowsLoaded: Map<string, boolean> = new Map<string, boolean>();\n\n isLoading = signal(true);\n private worker: InlineWorker;\n private selectedCollectionId: string;\n\n @Input()\n pageTitle: string;\n\n @Input({ required: true })\n set collectionId(id: string) {\n this.selectedCollectionId = id;\n this.loadDataForCollection(id);\n }\n get collectionId(): string {\n return this.selectedCollectionId;\n }\n\n constructor(\n private readonly metaApi: MetaApiService,\n private env: ConfigHelperService,\n @Inject(DOCUMENT)\n private readonly document: Document\n ) {}\n\n ngOnInit(): void {\n this.initOerFilter();\n }\n\n ngOnDestroy(): void {\n if (this.worker) {\n this.worker.terminate();\n }\n }\n\n private letTheWorkerSearch(): void {\n this.searchCounts.next(new Map<string, number>());\n this.rowsLoaded.clear();\n if (this.worker) {\n this.worker.terminate();\n }\n // applications that use us, may provide a relative URL for apiPath.\n // because the Worker runs under a ::blob url, we have to rebase the URL to the search API to the Document, we run in.\n const workerUrl = new URL(this.env.apiPath, this.document.baseURI).toString();\n this.worker = new InlineWorker({ basePath: workerUrl });\n this.worker.onmessage().subscribe((event) => {\n // one message per row\n let total = 0;\n\n Object.entries(event.data.data).forEach(([key, value]) => {\n // key is the material type, value is the count\n const columnKey = key + '_' + event.data.collectionId;\n total += value as number;\n this.searchCounts.value.set(columnKey, value as number);\n });\n this.searchCounts.value.set('totals_' + event.data.collectionId, total);\n this.searchCounts.next(this.searchCounts.value);\n this.rowsLoaded.set(event.data.collectionId, true);\n });\n\n this.worker.onerror().subscribe((data) => {\n console.error('in main thread', data);\n });\n\n this.materialCounts.rows.forEach((row) => {\n this.worker.postMessage({\n collectionId: row.meta.id,\n searchTerm: row.meta.label,\n oerOnly: this.showOERonly.value,\n });\n });\n }\n\n private initOerFilter(): void {\n this.showOERonly.valueChanges.subscribe(() => {\n this.loadDataForCollection(this.collectionId);\n });\n }\n\n private async loadDataForCollection(collectionId: string): Promise<void> {\n this.isLoading.set(true);\n this.materialCounts = await this.metaApi\n .getMaterialCountMatrixPerCollection(collectionId, this.showOERonly.value)\n .toPromise();\n //TODO: try to avoid to recalculate the columns on every change\n this.columns = this.materialCounts.columns.map((c) => {\n return {\n id: c.id,\n icon: 'total',\n label: c.label,\n level: c.level,\n };\n });\n\n this.letTheWorkerSearch();\n\n this.isLoading.set(false);\n }\n\n private extractCollectionIdFromVocabUrl(url: string): string {\n return url.substring(url.lastIndexOf('/') + 1);\n }\n\n openCollection(id: string) {\n const collectionId = this.extractCollectionIdFromVocabUrl(id);\n window.open(\n this.env.eduSharingPath +\n '/components/editorial-desk/?mode=render&viewType=single&ids=' +\n encodeURIComponent(collectionId)\n );\n }\n\n searchInEditor(materialType: string, searchTerm: string) {\n const filters: any = {};\n if (materialType !== 'totals') {\n filters['ccm:oeh_lrt_aggregated'] = [materialType];\n }\n if (this.showOERonly.value) {\n filters['virtual:editorial_license'] = ['oer'];\n }\n const url =\n this.env.eduSharingPath +\n '/components/editorial-desk?mode=audit_metaqs&' +\n 'q=' +\n encodeURIComponent(searchTerm) +\n '&' +\n 'title=' +\n encodeURIComponent('MetaQS - Suchergebnisse für \"' + searchTerm + '\"') +\n '&' +\n 'filters=' +\n encodeURIComponent(JSON.stringify(filters)) +\n '&' +\n 'panel=contents&tab=4&';\n\n window.open(url);\n }\n\n showCollectionItems(collectionId: string, collectionName: string, materialType: string) {\n const id = this.extractCollectionIdFromVocabUrl(collectionId);\n const filters: any = {\n //\"virtual:collection_id_primary\": [id], //works often, but not always\n 'virtual:metaqs_collection_id': [id],\n };\n if (materialType !== 'totals') {\n filters['ccm:oeh_lrt_aggregated'] = [materialType];\n }\n if (this.showOERonly.value) {\n filters['virtual:editorial_license'] = ['oer'];\n }\n window.open(\n this.env.eduSharingPath +\n '/components/editorial-desk?mode=audit_metaqs&' +\n 'title=' +\n encodeURIComponent('MetaQS - Sammlungsinhalte für \"' + collectionName + '\"') +\n '&' +\n 'filters=' +\n encodeURIComponent(JSON.stringify(filters)) +\n '&' +\n 'panel=contents&tab=4&'\n );\n }\n\n columnIdent(_index: number, col: { id: string }) {\n return col.id;\n }\n\n get filteredColumns() {\n // return either all or just a given amount of columns\n return this.showAllColumns.value ? this.columns : this.columns.slice(0, this.DEFAULT_COLUMN_LIMIT);\n }\n\n get columnNames() {\n return this.filteredColumns.map((c) => c.id);\n }\n\n get typeColumns(): string[] {\n return this.columnNames.map((c) => c + '_type');\n }\n\n get collectionColumns(): string[] {\n return this.columnNames.map((c) => c + this.COLLECTION_POSTFIX);\n }\n\n get searchColumns(): string[] {\n return this.columnNames.map((c) => c + this.SEARCH_POSTFIX);\n }\n\n get alternatingDataColumns(): string[] {\n return this.collectionColumns.flatMap((e, i) => [e, this.searchColumns[i]]);\n }\n\n protected readonly Math = Math;\n}\n","<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title>Material in Sammlungen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"toolbar\">\n <div style=\"flex: 1 1 auto;\"></div>\n <div class=\"actionbar\">\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showOERonly\">\n zeige nur OER\n </mat-slide-toggle>\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showAllColumns\">\n zeige alle Typen\n </mat-slide-toggle>\n </div>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n <table *ngIf=\"columns\" [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"materialCounts.rows\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Label Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Sammlung</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"label-col {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n <a (click)=\"openCollection(row.meta.id)\">\n <mat-icon [svgIcon]=\"'level-' + Math.min(3, row.meta.level+1)\"></mat-icon>\n {{ row.meta.label }}\n </a>\n </td>\n </ng-container>\n <!-- one column for the MaterialType spanning the collection and search columns-->\n <ng-container *ngFor=\"let col of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"2\" mat-header-cell *matHeaderCellDef class=\"mat-cell-level-{{col.level}}\">{{col.label}}</th>\n </ng-container>\n <!-- /source -->\n <!-- collection Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"column.id + COLLECTION_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef>in Sammlung</th>\n <td [class.noMaterial]=\"!row.counts[column.id]?.sufficient || row.counts[column.id]?.sufficient <= 1\"\n [class.fewMaterials]=\"1 < row.counts[column.id]?.sufficient && row.counts[column.id]?.sufficient <= 3\"\n class=\"collection-data-cell\"\n mat-cell *matCellDef=\"let row\">\n <a (click)=\"showCollectionItems(row.meta.id, row.meta.label, column.id)\">\n {{ row.counts[column.id]?.sufficient || '0' }}\n </a>\n </td>\n </ng-container>\n <!-- /collection Data Columns -->\n <!-- search Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns let index = index; trackBy:columnIdent\" [matColumnDef]=\"column.id + SEARCH_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef>Suche</th>\n <td class=\"search-data-cell\" mat-cell *matCellDef=\"let row\">\n <a (click)=\"searchInEditor(column.id, row.meta.label)\">\n @if ( (searchCounts | async)?.has(column.id + '_' + row.meta.id) ) {\n {{ (searchCounts | async)?.get(column.id + '_' + row.meta.id) }}\n } @else if (rowsLoaded.has(row.meta.id)) {\n 0\n } @else {\n loading… \n }\n </a>\n </td>\n </ng-container>\n <!-- /search Data Columns -->\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat( typeColumns ); sticky: true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"alternatingDataColumns; sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(alternatingDataColumns)\"></tr>\n </table>\n</mat-card>\n","import { Component, ElementRef, Input, LOCALE_ID, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatDatepicker, MatDatepickerInput, MatDatepickerToggle } from '@angular/material/datepicker';\nimport { MatFormField, MatLabel, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { DateTime } from 'luxon';\nimport { LuxonDateAdapter, MAT_LUXON_DATE_ADAPTER_OPTIONS } from '@angular/material-luxon-adapter';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MatDateFormats, MatRipple } from '@angular/material/core';\n\nexport const datePickerFormats: MatDateFormats = {\n parse: {\n dateInput: 'LLLL yyyy',\n },\n display: {\n dateInput: 'LLLL yyyy',\n monthYearLabel: 'LLLL yyyy',\n dateA11yLabel: 'LLL',\n monthYearA11yLabel: 'MMMM yyyy',\n },\n};\n\n@Component({\n selector: 'metaqs2-monthpicker',\n standalone: true,\n imports: [\n FormsModule,\n MatDatepicker,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatFormField,\n MatInput,\n MatLabel,\n MatSuffix,\n ReactiveFormsModule,\n MatRipple,\n ],\n providers: [\n {\n provide: DateAdapter,\n useClass: LuxonDateAdapter,\n deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS],\n },\n { provide: MAT_DATE_FORMATS, useValue: datePickerFormats },\n //provideLuxonDateAdapter(datePickerFormats),\n { provide: LOCALE_ID, useValue: 'de-DE' },\n { provide: MAT_DATE_LOCALE, useValue: 'de-DE' },\n { provide: MAT_LUXON_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true, firstDayOfWeek: 1 } },\n ],\n templateUrl: './monthpicker.component.html',\n styleUrl: './monthpicker.component.css',\n})\n/**\n * Theoretically, this component should be able to handle both monthly and daily date ranges.\n * But I am unable to find a way to change the date format of the datepicker\n */\nexport class MonthpickerComponent implements OnInit, OnDestroy {\n @Input()\n startView: 'month' | 'year' | 'multi-year' = 'year';\n @Input({ required: true })\n inputGroup: FormGroup<{ start: FormControl<DateTime<boolean>>; end: FormControl<DateTime<boolean>> }>;\n @Input()\n disabled: boolean = false;\n\n @ViewChild('start', {\n read: ElementRef<HTMLInputElement>,\n static: true,\n })\n protected start!: ElementRef<HTMLInputElement>;\n\n @ViewChild('ripple', {\n read: MatRipple,\n static: true,\n })\n protected readonly ripple!: MatRipple;\n\n\n protected setStart(date: DateTime<boolean>, picker: MatDatepicker<DateTime<boolean>>): void {\n this.inputGroup.controls.start.setValue(date);\n picker.close();\n }\n\n protected setEnd(date: DateTime<boolean>, picker: MatDatepicker<DateTime<boolean>>): void {\n this.inputGroup.controls.end.setValue(date.endOf('month'));\n picker.close();\n }\n\n ngOnInit() {\n this.focus();\n }\n\n ngOnDestroy(): void {\n //defer this to avoid an ExpressionChangedAfterItHasBeenCheckedError on the parent component\n Promise.resolve().then(() => this.inputGroup.reset());\n }\n\n focus() {\n this.start?.nativeElement.focus();\n this.ripple.launch({\n centered: true, // Material bug: disabled ripples do not trigger unless centered\n radius: 1000,\n animation: {\n exitDuration: 1000,\n },\n });\n }\n}\n","<!--\n<mat-card>\n <mat-card-header>\n <mat-card-title> Monatlicher Vergleich </mat-card-title>\n </mat-card-header>\n <mat-card-content [formGroup]=\"inputGroup\">\n </!-- start date --/>\n -->\n<div [formGroup]=\"inputGroup\" matRipple #ripple=\"matRipple\" [matRippleDisabled]=\"true\">\n <mat-form-field>\n <mat-label>Zeitpunkt 1</mat-label>\n <input matInput\n #start\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker1\" formControlName=\"start\"\n placeholder=\"Starts date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker1\"></mat-datepicker-toggle>\n <mat-datepicker\n [disabled]=\"disabled\"\n #picker1\n [startAt]=\"inputGroup.controls.start.defaultValue\"\n [startView]=\"startView\"\n (monthSelected)=\"setStart($event, picker1)\"\n\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /start date -->\n <!-- end date -->\n <mat-form-field>\n <mat-label>Zeitpunkt2</mat-label>\n <input matInput\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker2\"\n formControlName=\"end\"\n placeholder=\"End date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker\n [disabled]=\"disabled\"\n #picker2\n [startAt]=\"inputGroup.controls.end.value\"\n [startView]=\"startView\"\n (monthSelected)=\"setEnd($event, picker2)\"\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /end date -->\n</div>\n<!--\n </mat-card-content>\n</mat-card>\n-->\n","import { Component, DestroyRef, effect, Input, OnInit, signal, ViewChild } from '@angular/core';\nimport { ChartConfiguration, ChartDataset } from 'chart.js';\nimport { BaseChartDirective } from 'ng2-charts';\nimport { DateTime, DateTimeUnit } from 'luxon';\nimport { MatCard, MatCardContent, MatCardHeader, MatCardTitle } from '@angular/material/card';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MonthpickerComponent } from './monthpicker/monthpicker.component';\nimport { Count, MaterialCountFilter } from '../java-api';\nimport { MetaApiService } from '../meta-api.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { AsyncPipe, NgIf } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged, filter, finalize, map, switchMap, take, tap } from 'rxjs/operators';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { ProgressSpinnerComponent } from '../components/loading_indicator/progress-spinner/progress-spinner.component';\n\n@Component({\n selector: 'metaqs2-collection-count-history',\n standalone: true,\n imports: [\n BaseChartDirective,\n MonthpickerComponent,\n MatCard,\n MatCardHeader,\n MatCardTitle,\n MatCardContent,\n AsyncPipe,\n ReactiveFormsModule,\n NgIf,\n MatSlideToggle,\n FormsModule,\n ProgressSpinnerComponent,\n ],\n templateUrl: './collection-count-history.component.html',\n styleUrl: './collection-count-history.component.scss',\n})\nexport class CollectionCountHistoryComponent implements OnInit {\n @ViewChild(BaseChartDirective) chart?: BaseChartDirective;\n protected lineChartOptions: ChartConfiguration['options'] = {\n parsing: {\n xAxisKey: 'date',\n yAxisKey: 'count',\n },\n font: {\n family: 'Montserrat',\n },\n animation: false,\n };\n protected datapoints$ = new BehaviorSubject<ChartDataset<'line', Count[]>[]>([]);\n protected isLoading = signal(true);\n readonly range: FormGroup<{\n start: FormControl<DateTime<boolean>>;\n end: FormControl<DateTime<boolean>>;\n }> = new FormGroup({\n start: new FormControl(),\n end: new FormControl(),\n });\n protected granularities: DateTimeUnit[] = ['year', 'month', 'week', 'day'];\n protected granularity = new FormControl<DateTimeUnit>('month', { nonNullable: true });\n\n @Input()\n public pageTitle: string;\n public readonly isHistoryEnabled = signal(true);\n\n constructor(private readonly metaApi: MetaApiService, private readonly destroyRef: DestroyRef) {\n effect(() => {\n this.range.controls.end.reset();\n if (!this.isHistoryEnabled()) {\n this.range.controls.start.setValue(this.range.controls.end.value);\n } else {\n this.range.controls.start.reset();\n }\n });\n }\n\n ngOnInit(): void {\n this.registerDateRangeFilter();\n }\n\n registerDateRangeFilter() {\n this.range.valueChanges\n .pipe(\n filter((range): range is { start: DateTime; end: DateTime } => !!range.start && !!range.end),\n //the Material Datepicker emits the initial values 4 times when it starts, so we need to distinct them\n distinctUntilChanged((prev, curr) => {\n return prev.start === curr.start && prev.end === curr.end;\n }),\n switchMap((range) => {\n if (this.isHistoryEnabled()) {\n return this.loadData(range.start, range.end);\n } else {\n return this.loadData(range.end.startOf(this.granularity.value), range.end);\n }\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n this.metaApi\n .getTimerangeFilter()\n .pipe(take(1))\n .subscribe((rangeFilter) => {\n if (rangeFilter) {\n const startDate = DateTime.fromISO(rangeFilter.values.find((v) => v.id === 'rangeStart')?.label!, {\n zone: 'utc',\n }).startOf(this.granularity.value);\n const endDate = DateTime.fromISO(rangeFilter.values.find((v) => v.id === 'rangeEnd')?.label!, {\n zone: 'utc',\n }).endOf(this.granularity.value);\n this.range.setControl('start', new FormControl<DateTime>(startDate, { nonNullable: true }), {\n emitEvent: false,\n });\n this.range.setControl('end', new FormControl<DateTime>(endDate, { nonNullable: true }), { emitEvent: false });\n }\n });\n }\n\n private loadData(start?: DateTime<boolean>, end?: DateTime<boolean>) {\n this.isLoading.set(true);\n\n const request: MaterialCountFilter = {\n startDate: start?.toISO()!,\n endDate: end?.toISO()!,\n granularity: this.granularity.value,\n };\n\n return this.metaApi.getEditorialMaterialCounts(request).pipe(\n map((response) =>\n response.map((data) => {\n return {\n data: data.counts.map((count) => {\n return {\n date: DateTime.fromISO(count.date).toFormat('LLLL yyyy')!,\n count: count.count,\n };\n }),\n label: data.name,\n };\n })\n ),\n take(1),\n tap((datapoints) => {\n this.datapoints$.next(datapoints);\n }),\n finalize(() => this.isLoading.set(false))\n );\n }\n}\n","<mat-card appearance=\"outlined\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title>\n {{ pageTitle }}{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <div style=\"display: flex; gap: 0.5rem; align-items: center\">\n <div style=\"flex: 1 1 auto\"></div>\n <metaqs2-monthpicker *ngIf=\"isHistoryEnabled()\" [inputGroup]=\"range\"></metaqs2-monthpicker>\n <mat-slide-toggle [ngModel]=\"isHistoryEnabled()\" (ngModelChange)=\"isHistoryEnabled.set($event)\" [disabled]=\"isLoading()\">\n <label>Zeige historische Daten</label>\n </mat-slide-toggle>\n </div>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n\n <div [class.while-loading]=\"isLoading()\">\n <canvas\n baseChart\n [datasets]=\"(datapoints$ | async) || []\"\n [options]=\"lineChartOptions\"\n [type]=\"'line'\"\n ></canvas>\n </div>\n </mat-card-content>\n</mat-card>\n","import { Component, computed, DestroyRef, Directive, inject, Input, OnInit, signal } from '@angular/core';\nimport { MatCard, MatCardContent, MatCardHeader, MatCardModule, MatCardTitle } from '@angular/material/card';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, MatTable, MatTableModule } from '@angular/material/table';\nimport { BehaviorSubject, Observable, of, Subject, Unsubscribable } from 'rxjs';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AsyncPipe, NgForOf, NgIf } from '@angular/common';\nimport { MetaApiService } from '../meta-api.service';\nimport { Filter, MatrixRowWithCounts, MatrixWithCounts, QualityMatrixHeader } from '../java-api';\nimport { DateTime } from 'luxon';\nimport {\n distinctUntilChanged,\n filter,\n finalize,\n map,\n skipWhile,\n switchMap,\n take,\n tap,\n throttleTime,\n} from 'rxjs/operators';\nimport { FormControl, FormGroup, FormsModule } from '@angular/forms';\nimport { DatepickerComponent } from '../components/filter/datepicker/datepicker.component';\nimport { MatIcon } from '@angular/material/icon';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { ProgressSpinnerComponent } from '../components/loading_indicator/progress-spinner/progress-spinner.component';\nimport { EditorialLinkService } from '../components/editorial-link-service/editorial-link.service';\nimport { MatRipple } from '@angular/material/core';\n\nexport type PickKeysByPropertyType<TObject extends object, TPropertyType> = {\n [TKey in keyof TObject]: TObject[TKey] extends TPropertyType ? TKey : never;\n}[keyof TObject];\n\n@Directive()\nexport abstract class BaseHistoricDataTableDirective<\n TLoadingData extends object,\n TMethodType extends MetaApiService[keyof MetaApiService] & Function\n> {\n protected readonly metaApi = inject(MetaApiService);\n protected readonly destroyRef = inject(DestroyRef);\n protected readonly linkService = inject(EditorialLinkService);\n\n @Input()\n apiMethod: PickKeysByPropertyType<MetaApiService, TMethodType>;\n @Input()\n columnTranslationkey: string | null = null;\n @Input()\n pageTitle: string;\n @Input({ required: true })\n sourceType: 'replicationSource' | 'collection';\n\n protected loadingCount = signal(0);\n protected readonly isLoading = computed(() => this.loadingCount() > 0);\n readonly isHistoryEnabled = signal<boolean>(false);\n protected readonly isHistoryEnabled$ = toObservable(this.isHistoryEnabled);\n\n protected readonly timeFilterLoaded = signal(false);\n protected recentTypeCount$ = new BehaviorSubject({ columns: [], rows: [] } as MatrixWithCounts);\n protected pastTypeCount$ = new BehaviorSubject({ columns: [], rows: [] } as MatrixWithCounts);\n protected readonly DateTime = DateTime;\n public columns = signal([] as Array<QualityMatrixHeader>);\n\n protected readonly dataForPastData$ = new Subject<Partial<TLoadingData>>();\n protected readonly dataForRecentData$ = new Subject<Partial<TLoadingData>>();\n\n protected readonly startValues$ = this.dataForPastData$.pipe(\n filter((data) => this.validateLoadingData(data)),\n distinctUntilChanged((a, b) => this.compareLoadingDataEqual(a, b)),\n throttleTime(500),\n switchMap((start) => this.getCountByDate(start)),\n tap((it) => this.pastTypeCount$.next(it)),\n takeUntilDestroyed(this.destroyRef)\n );\n protected readonly endValues$ = this.dataForRecentData$.pipe(\n filter((data) => this.validateLoadingData(data)),\n distinctUntilChanged((a, b) => this.compareLoadingDataEqual(a, b)),\n throttleTime(500),\n switchMap((end) => this.getCountByDate(end)),\n tap((it) => this.recentTypeCount$.next(it)),\n tap((it) => this.columns.set(it.columns.slice())),\n takeUntilDestroyed(this.destroyRef)\n );\n\n protected startDateSubscription: Unsubscribable | undefined;\n protected startValuesSubscription: Unsubscribable | undefined;\n\n /* In this widget's backend we do have data for today\n * therefore we set the end date to today and use the timerange() endpoint to only set the start date\n */\n readonly range: FormGroup<{\n start: FormControl<DateTime<boolean>>;\n end: FormControl<DateTime<boolean>>;\n }> = new FormGroup({\n start: new FormControl(),\n end: new FormControl(DateTime.utc().startOf('day'), { nonNullable: true }),\n });\n\n protected readonly timerangeStart$ = of(undefined).pipe(\n switchMap(() => this.getAvailableDateRange()),\n take(1),\n map((rangeFilter) => this.getStartDateOfRange(rangeFilter)),\n tap((startDate) => {\n //this is to have a default value for the start date => the min date of the range\n this.range.setControl('start', new FormControl<DateTime<true>>(startDate, { nonNullable: true }));\n this.timeFilterLoaded.set(true);\n }),\n takeUntilDestroyed(this.destroyRef)\n );\n\n readonly allColumns = computed<Array<string>>(() => {\n if (!this.isHistoryEnabled()) {\n return this.recentColumns();\n }\n return this.pastColumns().flatMap((e, i) => [e, this.recentColumns()[i]]);\n });\n\n readonly typeColumns = computed(() => {\n return this.columns().map((c) => c.id + '_type');\n });\n\n readonly recentColumns = computed(() => {\n return this.columns().map((c) => c.id + '_recent');\n });\n\n readonly pastColumns = computed(() => {\n return this.columns().map((c) => c.id + '_past');\n });\n\n protected abstract getCountByDate(date: TLoadingData): Observable<MatrixWithCounts>;\n protected abstract validateLoadingData(data: Partial<TLoadingData>): data is TLoadingData;\n protected abstract compareLoadingDataEqual(a: TLoadingData, b: TLoadingData): boolean;\n\n protected getAvailableDateRange() {\n return of(undefined).pipe(\n tap(() => this.loadingCount.update((it) => it + 1)),\n switchMap(() => this.metaApi.getTimerangeFilter()),\n filter((filter): filter is Filter => filter != null),\n tap(() => this.loadingCount.update((it) => it - 1))\n );\n }\n private getStartDateOfRange(rangeFilter: Filter) {\n return DateTime.fromISO(rangeFilter.values.find((v) => v.id === 'rangeStart')?.label!, {\n zone: 'utc',\n }).startOf('day') as DateTime<true>;\n }\n\n public columnIdent(_index: number, col: QualityMatrixHeader) {\n return col.id;\n }\n\n public pastTypeCount(row: MatrixRowWithCounts, columnid: string): { delta?: number; trend?: string; value?: number } {\n if (!this.pastTypeCount$.value.rows.length) {\n return {};\n }\n const past_row = this.pastTypeCount$.value.rows.find((pr) => pr.meta.id == row.meta.id);\n const past_column = this.pastTypeCount$.value.columns.find((c) => c.id == columnid);\n if (!past_row || !past_column) {\n return {};\n }\n\n const currentValue = row.counts[columnid];\n const pastValue = past_row.counts[columnid];\n\n const delta = (currentValue || 0) - (pastValue || 0);\n const trend = delta === 0 ? 'trending_flat' : delta < 0 ? 'trending_down' : 'trending_up';\n return { delta, trend, value: pastValue };\n }\n\n public openInEditor(sourceId: string, issueId: string) {\n if (this.sourceType === 'replicationSource') {\n // find the long name for the source\n sourceId = this.recentTypeCount$.value.rows.find((r) => r.meta.id === sourceId)?.meta.label || sourceId;\n }\n return this.linkService.typesLoaded$.pipe(\n skipWhile((loaded) => !loaded),\n take(1),\n map(() => {\n return this.linkService.createLinkForCountsWithHistory(this.sourceType, sourceId, issueId);\n })\n );\n }\n}\n\ntype LoadingData = {\n date: DateTime;\n};\n\n@Component({\n selector: 'metaqs2-counts-with-history',\n standalone: true,\n imports: [\n MatCardModule,\n MatCard,\n MatCardHeader,\n MatCardTitle,\n MatCardContent,\n MatTooltip,\n MatTableModule,\n MatTable,\n TranslateModule,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef,\n NgForOf,\n DatepickerComponent,\n MatIcon,\n NgIf,\n FormsModule,\n MatSlideToggle,\n AsyncPipe,\n ProgressSpinnerComponent,\n MatRipple,\n ],\n templateUrl: './counts-with-history.component.html',\n styleUrl: './counts-with-history.component.scss',\n})\nexport class CountsWithHistoryComponent\n extends BaseHistoricDataTableDirective<LoadingData, (filters: Filter[]) => Observable<MatrixWithCounts>>\n implements OnInit\n{\n ngOnInit(): void {\n this.apiMethod ??= 'getMaterialTypeCountsByReplicationSource';\n\n this.endValues$.subscribe();\n\n this.range.valueChanges\n .pipe(\n tap((data) => {\n this.dataForPastData$.next({ date: data.start });\n this.dataForRecentData$.next({ date: data.end });\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n\n this.isHistoryEnabled$\n .pipe(\n tap((enabled) => {\n this.range.controls.end.reset();\n if (!enabled) {\n this.startDateSubscription?.unsubscribe();\n this.startValuesSubscription?.unsubscribe();\n return;\n }\n this.range.controls.start.reset();\n if (!this.timeFilterLoaded()) {\n this.startDateSubscription = this.timerangeStart$\n .pipe(\n take(1),\n tap(() => {\n this.startValuesSubscription = this.startValues$.subscribe();\n this.range.controls.start.reset();\n })\n )\n .subscribe();\n } else {\n this.startValuesSubscription = this.startValues$.subscribe();\n this.range.controls.start.reset();\n }\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n }\n\n protected getCountByDate(data: LoadingData): Observable<MatrixWithCounts> {\n const filter: Filter = {\n field: 'asOf',\n values: [{ id: data.date.toISO({ includeOffset: false })!, label: '' }],\n };\n\n return of(undefined).pipe(\n tap(() => this.loadingCount.update((it) => it + 1)),\n switchMap(() => {\n return this.metaApi[this.apiMethod]([filter]).pipe(finalize(() => this.loadingCount.update((it) => it - 1)));\n }),\n map((response) => ({\n ...response,\n rows: response.rows.toSorted((a, b) => a.meta.label.localeCompare(b.meta.label)),\n }))\n );\n }\n\n protected validateLoadingData(data: Partial<LoadingData>): data is LoadingData {\n return data.date?.isValid ?? false;\n }\n\n protected compareLoadingDataEqual(a: LoadingData, b: LoadingData): boolean {\n return a.date.equals(b.date);\n }\n}\n","<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title data-test-id=\"page-title\">\n Qualitätsmetrik: {{ pageTitle | translate }}{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content class=\"toolbar\">\n <metaqs2-datepicker style=\"display: inline-block\" matRipple [disabled]=\"isLoading() || !isHistoryEnabled()\" [inputGroup]=\"range\" *ngIf=\"timeFilterLoaded() && isHistoryEnabled()\"></metaqs2-datepicker>\n <div style=\"flex: 1 1 auto\"></div>\n <mat-slide-toggle [(ngModel)]=\"isHistoryEnabled\" [disabled]=\"isLoading()\">\n <label>Zeige historische Daten</label>\n </mat-slide-toggle>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n <table [class.while-loading]=\"isLoading()\" mat-table [dataSource]=\"recentTypeCount$.value.rows\"\n class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th [attr.rowspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef>\n <div>Quelle</div>\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [matTooltip]=\"row.meta.alt_label\"\n class=\"label-col mat-cell-level-{{row.meta.level + 1}}\"\n >\n {{ row.meta.label }}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef [matTooltip]=\"col.label\">\n {{ columnTranslationkey ? (columnTranslationkey + col.label | translate) : col.label }}\n </th>\n </ng-container>\n <!-- one column for each type for the most current date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef\n matTooltip=\"no tooltip\">{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}\n </th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">\n <a [attr.href]=\"openInEditor(row.meta.id, col.id) | async\" target=\"editor_frontend\">{{ row.counts[col.id] ?? '–' }}</a>\n </td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\">\n {{ (pastTypeCount$ | async)?.rows?.length ? range.controls.start.value.toLocaleString(DateTime.DATE_SHORT) : 'no past data' }}\n </th>\n <td class=\"past-data-cell\" mat-cell *matCellDef=\"let row;\" >\n <ng-container *ngIf=\"(pastTypeCount$ | async)?.rows?.length && pastTypeCount(row, col.id) as trend\">\n <span [class]=\"trend.trend\"> {{ trend.value ?? '–' }}\n <mat-icon *ngIf=\"trend.value\" aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" /></span>\n <span class=\"cdk-visually-hidden\">{{ trend.trend }}</span>\n </ng-container>\n </td>\n </ng-container>\n <!-- generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat(typeColumns()); sticky:true;\"></tr>\n <tr [hidden]=\"!isHistoryEnabled()\" mat-header-row *matHeaderRowDef=\"allColumns(); sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(allColumns())\"></tr>\n\n </table>\n</mat-card>\n","import { createApplication } from '@angular/platform-browser';\nimport { enableProdMode, importProvidersFrom, Type } from '@angular/core';\nimport { NgMetaWidgetsLibModule } from './lib/ng-meta-widgets-lib.module';\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { HttpClient, provideHttpClient } from '@angular/common/http';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { provideAnimations } from '@angular/platform-browser/animations';\nimport { createCustomElement } from '@angular/elements';\n\nexport interface Environment {\n apiPath: string;\n eduSharingPath: string;\n production: boolean;\n}\n\nexport async function createRegister(environment: Environment) {\n if (environment.production) {\n enableProdMode();\n }\n\n const app = await createApplication({\n providers: [\n importProvidersFrom(\n NgMetaWidgetsLibModule.forRoot({\n eduSharingPath: environment.eduSharingPath,\n apiPath: environment.apiPath,\n }),\n TranslateModule.forRoot({\n defaultLanguage: 'de',\n loader: {\n provide: TranslateLoader,\n useFactory: (httpClient: HttpClient) => new TranslateHttpLoader(httpClient),\n deps: [HttpClient],\n },\n })\n ),\n provideHttpClient(),\n provideAnimations(),\n ],\n });\n const injector = app.injector;\n return (tag: string, component: Type<unknown>) => {\n const customElement = createCustomElement(component, { injector });\n customElements.define(tag, customElement);\n };\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { BaseHistoricDataTableDirective } from '../counts-with-history/counts-with-history.component';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { Filter, MatrixWithCounts, QualityMatrix, QualityMatrixRow } from '../java-api';\nimport { finalize, map, switchMap, take, tap } from 'rxjs/operators';\nimport { DateTime } from 'luxon';\nimport { AsyncPipe, NgForOf, NgIf } from '@angular/common';\nimport { DatepickerComponent } from '../components/filter/datepicker/datepicker.component';\nimport { MatCard, MatCardContent, MatCardHeader, MatCardTitle } from '@angular/material/card';\nimport {\n MatCell,\n MatCellDef,\n MatColumnDef,\n MatHeaderCell,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef,\n MatTable,\n MatTableModule\n} from '@angular/material/table';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ProgressSpinnerComponent } from '../components/loading_indicator/progress-spinner/progress-spinner.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormsModule } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatRipple } from '@angular/material/core';\n\ntype LoadingData = {\n date: DateTime;\n collectionId: string;\n};\n\n@Component({\n selector: 'metaqs2-tree-license',\n standalone: true,\n imports: [\n AsyncPipe,\n DatepickerComponent,\n MatCard,\n MatCardContent,\n MatCardHeader,\n MatCardTitle,\n MatCell,\n MatTableModule,\n MatCellDef,\n MatColumnDef,\n MatHeaderCell,\n MatHeaderRow,\n MatHeaderRowDef,\n MatIcon,\n MatRipple,\n MatRow,\n MatRowDef,\n MatSlideToggle,\n MatTable,\n MatTooltip,\n NgForOf,\n NgIf,\n ProgressSpinnerComponent,\n TranslateModule,\n FormsModule,\n ],\n templateUrl: '../counts-with-history/counts-with-history.component.html',\n styleUrls: ['../counts-with-history/counts-with-history.component.scss', './tree-license.component.scss'],\n})\nexport class TreeLicenseComponent\n extends BaseHistoricDataTableDirective<\n LoadingData,\n (collectionId: string, filters: Filter[]) => Observable<QualityMatrix>\n >\n implements OnInit\n{\n private colId$ = new BehaviorSubject<string>('defaultCollection');\n\n @Input({ required: true })\n set collectionId(id: string) {\n this.colId$.next(id);\n }\n\n @Input({ required: false })\n sourceType: 'replicationSource' | 'collection' = 'collection';\n\n protected getCountByDate(data: LoadingData): Observable<MatrixWithCounts> {\n const filter: Filter = {\n field: 'asOf',\n values: [{ id: data.date.toISO({ includeOffset: false })!, label: '' }],\n };\n return of(undefined).pipe(\n tap(() => this.loadingCount.update((it) => it + 1)),\n switchMap(() => {\n return this.metaApi[this.apiMethod](this.colId$.getValue(), [filter]).pipe(\n finalize(() => this.loadingCount.update((it) => it - 1))\n );\n }),\n map((response) => {\n const castedRows = response.rows.map((row) => row as unknown as QualityMatrixRow);\n\n return {\n ...response,\n // return the sufficient part of the counts, because the api return a QualityMatrix not a MatrixWithCounts\n\n rows: castedRows.map((row) => {\n const counts = Object.fromEntries(\n Object.entries(row.counts).map(([key, value]) => [key, value.sufficient] as const)\n );\n\n return {\n ...row,\n counts,\n };\n }),\n };\n })\n );\n }\n\n ngOnInit() {\n this.apiMethod ??= 'getLicenseCountsByLicenseGroup';\n\n combineLatest([this.colId$, this.range.valueChanges])\n .pipe(\n tap(([collectionId, range]) => {\n this.dataForPastData$.next({\n date: range.start,\n collectionId: collectionId,\n });\n this.dataForRecentData$.next({\n date: range.end,\n collectionId: collectionId,\n });\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n\n this.isHistoryEnabled$\n .pipe(\n tap((enabled) => {\n this.range.controls.end.reset();\n if (!enabled) {\n this.startDateSubscription?.unsubscribe();\n this.startValuesSubscription?.unsubscribe();\n return;\n }\n this.range.controls.start.reset();\n if (!this.timeFilterLoaded()) {\n this.startDateSubscription = this.timerangeStart$\n .pipe(\n take(1),\n tap(() => {\n this.startValuesSubscription = this.startValues$.subscribe();\n this.range.controls.start.reset();\n })\n )\n .subscribe();\n } else {\n this.startValuesSubscription = this.startValues$.subscribe();\n this.range.controls.start.reset();\n }\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n\n this.endValues$.subscribe();\n }\n\n protected validateLoadingData(data: Partial<LoadingData>): data is LoadingData {\n return !!data?.collectionId && (data.date?.isValid ?? false);\n }\n\n protected compareLoadingDataEqual(a: LoadingData, b: LoadingData): boolean {\n return a.collectionId === b.collectionId && a.date.equals(b.date);\n }\n}\n","/*\n * Public API Surface of ng-meta-widgets-lib\n */\n\nexport * from './lib/ng-meta-widgets-lib.module';\nexport * from './lib/tree-collection-details/tree-collection-details.component';\nexport * from './lib/tree-search-counts/tree-search-counts.component';\nexport * from './lib/config-helper.service';\nexport * from './lib/components/quality-matrix/quality_matrix';\nexport * from './lib/components/node-list/node-list.component';\nexport * from './lib/components/collection-issues/collection-issues.component';\nexport * from './lib/components/material-issues/material-issues.component';\nexport * from './lib/collection-count-history/collection-count-history.component';\nexport * from './lib/counts-with-history/counts-with-history.component';\nexport * from './lib/core/tooltip.service';\nexport * from './lib/components/donut-chart-tooltip/donut-chart-tooltip.component';\nexport * from './web-components';\nexport * from './lib/tree-license/tree-license.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.Configuration","i1","i1.CollectionAPIService","i1.ReplicationSourceAPIService","i1.FilterAPIService","i1.EditorsAPIService","datePickerFormats","i1.OverlayService","i2","i3","i5","i6","i8","JavaConfig","i1.SvgIconsService","JavaApiModule","i1.MetaApiService","i3.EditorialLinkService","i4"],"mappings":"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"}