ngx-edu-sharing-metaqs2 0.9.21 → 0.9.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -3
- package/esm2022/lib/collection-count-history/monthpicker/monthpicker.component.mjs +17 -5
- package/esm2022/lib/components/filter/datepicker/datepicker.component.mjs +17 -5
- package/fesm2022/ngx-edu-sharing-metaqs2.mjs +30 -6
- package/fesm2022/ngx-edu-sharing-metaqs2.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-edu-sharing-metaqs2.mjs","sources":["../../../projects/ng-meta-widgets-lib/src/lib/java-api/encoder.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/variables.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/configuration.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/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/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/tree-search-counts/inline-worker.ts","../../../projects/ng-meta-widgets-lib/src/lib/meta-api.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/env-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/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/components/editorial-link-service/editorial-link.service.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/wrap-observable.pipe.ts","../../../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/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/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/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/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/materialtypes-by-sources/materialtypes-by-sources.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/materialtypes-by-sources/materialtypes-by-sources.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/public-api.ts","../../../projects/ng-meta-widgets-lib/src/ngx-edu-sharing-metaqs2.ts"],"sourcesContent":["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 { 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';\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 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","/**\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 {\n HttpClient,\n HttpHeaders,\n HttpParams,\n HttpResponse,\n HttpEvent,\n HttpParameterCodec,\n HttpContext,\n} from '@angular/common/http';\nimport { CustomHttpParameterCodec } from '../encoder';\nimport { Observable } from 'rxjs';\n\n// @ts-ignore\nimport { BASE_PATH } from '../variables';\nimport { Configuration } from '../configuration';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthProxyControllerService {\n protected basePath = 'https://metaqs-2.staging.openeduhub.net';\n public defaultHeaders = new HttpHeaders();\n public configuration = new Configuration();\n public encoder: HttpParameterCodec;\n\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration: Configuration\n ) {\n if (configuration) {\n this.configuration = configuration;\n }\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 // @ts-ignore\n private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n if (typeof value === 'object' && value instanceof Date === false) {\n httpParams = this.addToHttpParamsRecursive(httpParams, value);\n } else {\n httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n }\n return httpParams;\n }\n\n private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n if (value == null) {\n return httpParams;\n }\n\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n (value as any[]).forEach((elem) => (httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)));\n } else if (value instanceof Date) {\n if (key != null) {\n httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10));\n } else {\n throw Error('key may not be null if value is Date');\n }\n } else {\n Object.keys(value).forEach(\n (k) => (httpParams = this.addToHttpParamsRecursive(httpParams, value[k], key != null ? `${key}.${k}` : k))\n );\n }\n } else if (key != null) {\n httpParams = httpParams.append(key, value);\n } else {\n throw Error('key may not be null if value is not object or array');\n }\n return httpParams;\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 let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = [];\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 = `/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 let localVarCredential: string | undefined;\n // authentication (basicAuth) required\n localVarCredential = this.configuration.lookupCredential('basicAuth');\n if (localVarCredential) {\n localVarHeaders = localVarHeaders.set('Authorization', 'Basic ' + localVarCredential);\n }\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 = `/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 {\n HttpClient,\n HttpHeaders,\n HttpParams,\n HttpResponse,\n HttpEvent,\n HttpParameterCodec,\n HttpContext,\n} from '@angular/common/http';\nimport { CustomHttpParameterCodec } from '../encoder';\nimport { Observable } from 'rxjs';\n\n// @ts-ignore\nimport { EduCollection } from '../model/eduCollection';\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';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CollectionAPIService {\n protected basePath = 'https://metaqs-2.staging.openeduhub.net';\n public defaultHeaders = new HttpHeaders();\n public configuration = new Configuration();\n public encoder: HttpParameterCodec;\n\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration: Configuration\n ) {\n if (configuration) {\n this.configuration = configuration;\n }\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 // @ts-ignore\n private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n if (typeof value === 'object' && value instanceof Date === false) {\n httpParams = this.addToHttpParamsRecursive(httpParams, value);\n } else {\n httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n }\n return httpParams;\n }\n\n private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n if (value == null) {\n return httpParams;\n }\n\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n (value as any[]).forEach((elem) => (httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)));\n } else if (value instanceof Date) {\n if (key != null) {\n httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10));\n } else {\n throw Error('key may not be null if value is Date');\n }\n } else {\n Object.keys(value).forEach(\n (k) => (httpParams = this.addToHttpParamsRecursive(httpParams, value[k], key != null ? `${key}.${k}` : k))\n );\n }\n } else if (key != null) {\n httpParams = httpParams.append(key, value);\n } else {\n throw Error('key may not be null if value is not object or array');\n }\n return httpParams;\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 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 = `/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 if (term !== undefined && term !== null) {\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>term, 'term');\n }\n if (oerOnly !== undefined && oerOnly !== null) {\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>oerOnly, 'oerOnly');\n }\n if (type !== undefined && type !== null) {\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>type, 'type');\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 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 if (term !== undefined && term !== null) {\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>term, 'term');\n }\n if (oerOnly !== undefined && oerOnly !== null) {\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>oerOnly, 'oerOnly');\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 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 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 if (oerOnly !== undefined && oerOnly !== null) {\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>oerOnly, 'oerOnly');\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 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 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 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 = `/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 {\n HttpClient,\n HttpHeaders,\n HttpParams,\n HttpResponse,\n HttpEvent,\n HttpParameterCodec,\n HttpContext,\n} from '@angular/common/http';\nimport { CustomHttpParameterCodec } from '../encoder';\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';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EditorsAPIService {\n protected basePath = 'https://metaqs-2.staging.openeduhub.net';\n public defaultHeaders = new HttpHeaders();\n public configuration = new Configuration();\n public encoder: HttpParameterCodec;\n\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration: Configuration\n ) {\n if (configuration) {\n this.configuration = configuration;\n }\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 // @ts-ignore\n private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n if (typeof value === 'object' && value instanceof Date === false) {\n httpParams = this.addToHttpParamsRecursive(httpParams, value);\n } else {\n httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n }\n return httpParams;\n }\n\n private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n if (value == null) {\n return httpParams;\n }\n\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n (value as any[]).forEach((elem) => (httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)));\n } else if (value instanceof Date) {\n if (key != null) {\n httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10));\n } else {\n throw Error('key may not be null if value is Date');\n }\n } else {\n Object.keys(value).forEach(\n (k) => (httpParams = this.addToHttpParamsRecursive(httpParams, value[k], key != null ? `${key}.${k}` : k))\n );\n }\n } else if (key != null) {\n httpParams = httpParams.append(key, value);\n } else {\n throw Error('key may not be null if value is not object or array');\n }\n return httpParams;\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 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 = `/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 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 = `/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 )\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 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 = `/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 {\n HttpClient,\n HttpHeaders,\n HttpParams,\n HttpResponse,\n HttpEvent,\n HttpParameterCodec,\n HttpContext,\n} from '@angular/common/http';\nimport { CustomHttpParameterCodec } from '../encoder';\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';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FilterAPIService {\n protected basePath = 'https://metaqs-2.staging.openeduhub.net';\n public defaultHeaders = new HttpHeaders();\n public configuration = new Configuration();\n public encoder: HttpParameterCodec;\n\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration: Configuration\n ) {\n if (configuration) {\n this.configuration = configuration;\n }\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 // @ts-ignore\n private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n if (typeof value === 'object' && value instanceof Date === false) {\n httpParams = this.addToHttpParamsRecursive(httpParams, value);\n } else {\n httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n }\n return httpParams;\n }\n\n private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n if (value == null) {\n return httpParams;\n }\n\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n (value as any[]).forEach((elem) => (httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)));\n } else if (value instanceof Date) {\n if (key != null) {\n httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10));\n } else {\n throw Error('key may not be null if value is Date');\n }\n } else {\n Object.keys(value).forEach(\n (k) => (httpParams = this.addToHttpParamsRecursive(httpParams, value[k], key != null ? `${key}.${k}` : k))\n );\n }\n } else if (key != null) {\n httpParams = httpParams.append(key, value);\n } else {\n throw Error('key may not be null if value is not object or array');\n }\n return httpParams;\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 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/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 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 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`;\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 {\n HttpClient,\n HttpHeaders,\n HttpParams,\n HttpResponse,\n HttpEvent,\n HttpParameterCodec,\n HttpContext,\n} from '@angular/common/http';\nimport { CustomHttpParameterCodec } from '../encoder';\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';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReplicationSourceAPIService {\n protected basePath = 'https://metaqs-2.staging.openeduhub.net';\n public defaultHeaders = new HttpHeaders();\n public configuration = new Configuration();\n public encoder: HttpParameterCodec;\n\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration: Configuration\n ) {\n if (configuration) {\n this.configuration = configuration;\n }\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 // @ts-ignore\n private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n if (typeof value === 'object' && value instanceof Date === false) {\n httpParams = this.addToHttpParamsRecursive(httpParams, value);\n } else {\n httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n }\n return httpParams;\n }\n\n private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n if (value == null) {\n return httpParams;\n }\n\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n (value as any[]).forEach((elem) => (httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)));\n } else if (value instanceof Date) {\n if (key != null) {\n httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10));\n } else {\n throw Error('key may not be null if value is Date');\n }\n } else {\n Object.keys(value).forEach(\n (k) => (httpParams = this.addToHttpParamsRecursive(httpParams, value[k], key != null ? `${key}.${k}` : k))\n );\n }\n } else if (key != null) {\n httpParams = httpParams.append(key, value);\n } else {\n throw Error('key may not be null if value is not object or array');\n }\n return httpParams;\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 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 = `/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 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 = `/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 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 = `/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 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 = `/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 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 = `/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 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 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 { 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((response) => (response.ok ? response : Promise.reject(response)))\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 const urlParams = new URLSearchParams({\n term: searchTerm,\n oerOnly: oerOnly ? 'true' : 'false',\n });\n const url = basePath + '/collections/v2/material/search?' + urlParams;\n return fetch(url, { 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 { 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 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","import { Inject, Injectable } from '@angular/core';\n\nexport class NgMetaWidgetsLibConfiguration {\n useDummyValues = false;\n apiPath: string;\n eduSharingPath: string;\n}\n\n/**\n * helper class to fetch current env variables based on the current context or the given env file as a fallback\n */\n@Injectable()\nexport class EnvHelperService implements EnvHelper {\n constructor(@Inject('config') 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 (window as any).METAQS_API_URL || this.config.apiPath;\n }\n\n public get eduSharingPath() {\n return (window as any).METAQS_EDUSHARING_URL || this.config.eduSharingPath;\n }\n}\n\nexport interface EnvHelper {\n get apiPath(): string;\n\n get eduSharingPath(): string;\n\n patchConfig(config: Partial<NgMetaWidgetsLibConfiguration>): void;\n}\n","import { Component, Input, Output } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { FilterValue } from '../../java-api';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { Observable } from 'rxjs';\nimport { NgForOf } from '@angular/common';\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: 'lib-qm-filter',\n templateUrl: './quality-matrix-filter.component.html',\n styleUrl: './quality-matrix-filter.component.scss',\n standalone: true,\n imports: [MatFormFieldModule, MatSelectModule, ReactiveFormsModule, NgForOf],\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 @Input()\n label: string;\n @Input()\n multiple: boolean = true;\n @Output()\n changedFilters: Observable<any> = this.inputFormControl.valueChanges;\n optionIdent(_index: number, option: FilterValue) {\n return option.id;\n }\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 <mat-option *ngFor=\"let option of options; trackBy: optionIdent \" [value]=\"option.id\"> {{ option.label }} </mat-option>\n\n </mat-select>\n</mat-form-field>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit, signal } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { MetaApiService } from '../meta-api.service';\nimport { EnvHelperService } from '../env-helper.service';\nimport { FilterValue, QualityMatrix } from '../java-api';\nimport { FormControl } from '@angular/forms';\nimport { InlineWorker } from './inline-worker';\n\nexport interface DataColumn {\n id: string;\n icon: string;\n label: string;\n level?: number;\n}\n\n@Component({\n selector: 'app-tree-search-counts',\n templateUrl: './tree-search-counts.component.html',\n styleUrls: ['./tree-search-counts.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\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 collections$: BehaviorSubject<FilterValue[]> = new BehaviorSubject<FilterValue[]>([]);\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 readonly selectedCollection = new FormControl<string>('', { nonNullable: true });\n\n // convert this in an Obeservable\n materialCounts: QualityMatrix;\n columns: DataColumn[];\n rowsLoaded: Map<string, boolean> = new Map<string, boolean>();\n\n isLoading = signal(true);\n worker: InlineWorker;\n\n constructor(\n private readonly metaApi: MetaApiService,\n private env: EnvHelperService,\n private readonly changeDetector: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n this.initCollectionsFilter();\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 this.worker = new InlineWorker({ basePath: this.env.apiPath });\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 const collectionId = this.extractCollectionIdFromVocabUrl(this.selectedCollection.value);\n this.loadDataForCollection(collectionId);\n });\n }\n\n private initCollectionsFilter(): void {\n this.selectedCollection.valueChanges.subscribe((collectionIdValue) => {\n const id = this.extractCollectionIdFromVocabUrl(collectionIdValue);\n this.loadDataForCollection(id);\n });\n this.metaApi\n .getCollectionsFilter()\n .pipe(take(1))\n .subscribe((collections) => {\n const sortedCollections = collections.sort((a, b) => a.label.localeCompare(b.label));\n this.collections$.next(sortedCollections);\n this.selectedCollection.setValue(sortedCollections[0].id);\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 this.changeDetector.detectChanges();\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 const ref = 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","<mat-card appearance=\"raised\">\n<mat-card-header>\n <mat-card-title>\n Material in Sammlungen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n</mat-card-header>\n<mat-card-content>\n<!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <lib-qm-filter\n aria-disabled=\"true\"\n [label]=\"'Sammlung'\"\n [options]=\"collections$ | async\"\n [multiple]=\"false\"\n [inputFormControl]=\"selectedCollection\"\n >\n </lib-qm-filter>\n\n</mat-card-content>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"materialCounts.rows\" *ngIf=\"columns\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Label Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Sammlung\n <div >\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showOERonly\" >\n zeige nur OER\n </mat-slide-toggle>\n </div>\n <div>\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showAllColumns\" >\n zeige alle Typen\n </mat-slide-toggle>\n </div>\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"label-col {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n <a (click)=\"openCollection(row.meta.id)\">\n <mat-icon [svgIcon]=\"row.meta.level<=1?'layers':'child'\" />\n {{ row.meta.label }}\n </a>\n </td>\n </ng-container>\n <!-- one column for the MaterialType spanning the collection and search columns-->\n <ng-container *ngFor=\"let col of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"2\" mat-header-cell *matHeaderCellDef class='mat-cell-level-\"{{col.level}}\"' matTooltip=\"{{col.label}}\" >{{col.label}}</th>\n </ng-container>\n <!-- /source -->\n <!-- collection Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"column.id + COLLECTION_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef matTooltip=\"{{column.label}}\" >in Sammlung</th>\n <td [class.noMaterial]=\"!row.counts[column.id]?.sufficient || row.counts[column.id]?.sufficient <= 1\"\n [class.fewMaterials]=\"1 < row.counts[column.id]?.sufficient && row.counts[column.id]?.sufficient <= 3\"\n class=\"collection-data-cell\"\n mat-cell *matCellDef=\"let row\">\n <a (click)=\"showCollectionItems(row.meta.id, row.meta.label, column.id)\">\n {{ row.counts[column.id]?.sufficient || '0' }}\n </a>\n </td>\n </ng-container>\n <!-- /collection Data Columns -->\n <!-- search Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns let index = index; trackBy:columnIdent\" [matColumnDef]=\"column.id + SEARCH_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef>Suche</th>\n <td class=\"search-data-cell\" mat-cell *matCellDef=\"let row\">\n <a (click)=\"searchInEditor(column.id, row.meta.label)\">\n <ng-container *ngIf=\"(( searchCounts | async)?.has(column.id + '_' + row.meta.id) ) else zeroOrLoading\">\n {{ (searchCounts | async)?.get(column.id + '_' + row.meta.id) }}\n </ng-container>\n <ng-template #zeroOrLoading>\n <ng-container *ngIf=\"rowsLoaded.has(row.meta.id) else loadingBlock\"> 0 </ng-container>\n </ng-template>\n <ng-template #loadingBlock>\n loading…\n </ng-template>\n </a>\n </td>\n </ng-container>\n <!-- /search Data Columns -->\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat( typeColumns ); sticky: true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"alternatingDataColumns; sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(alternatingDataColumns)\"></tr>\n </table>\n</mat-card>","import { Injectable } from '@angular/core';\nimport { inject } from \"@angular/core\";\nimport { EnvHelperService } from \"../../env-helper.service\";\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 [\"collections.nodeRef.id.keyword\", \"virtual:collection_id_primary\"],\n //[\"responsibility\", \"virtual:collection_id_primary\"] // das zeigt auf \"sammlungszugehörigkeit\" und ist falsch\n]);\n/*\nThis map our column \"names\" to the valid values of the virtual:editorial_exclusion Filter\n*/\n\nconst ISSUETYPE2FILTERS: Map<string, string> = new Map<string, string>([\n [\"without_title\", \"missing_title\"],\n [\"without_description\", \"missing_description\"],\n [\"without_education_level\", \"missing_educationalcontext\"],\n [\"without_target_group\", \"missing_educationalintendedenduserrole\"],\n [\"without_taxonomy_id\", \"missing_taxonid\"],\n [\"without_category\", \"missing_oeh_lrt\"],\n [\"without_license\", \"missing_license\"]\n]);\n/*\ninterestingly it is not necessary to combine the nodeRef.id\nwith https://vocabs.openeduhub.de/w3id.org/openeduhub/vocabs/oeh-topics/{nodeRef.id}\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class EditorialLinkService {\n private env = inject(EnvHelperService);\n\n constructor() { }\n\n public openByReplicationsourceAndIssueTypeWithFilters(source: string, issue: string , selectedFilters:{ [key: string]: string[] | undefined}): void {\n const filters: any = {};\n filters[\"virtual:audit_filter\"] = [\"all\"];\n filters[\"ccm:oeh_publisher_combined\"] = [source];\n filters[\"virtual:editorial_exclusion\"] = [ ISSUETYPE2FILTERS.get( 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: URL = new URL(this.env.eduSharingPath + \"/components/editorial-desk\");\n const params = theUrl.searchParams;\n params.set(\"mode\", \"audit\");\n params.set(\"filters\", JSON.stringify(filters) );\n window.open(theUrl, \"editor_frontend\")\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\"] = [ ISSUETYPE2FILTERS.get( issueType )];\n filters[\"virtual:collection_id_primary\"] = [collectionId];\n const theUrl: URL = new URL(this.env.eduSharingPath + \"/components/editorial-desk\");\n const params = theUrl.searchParams;\n params.set(\"title\", pageTitle)\n params.set(\"mode\", \"audit\");\n params.set(\"filters\", JSON.stringify(filters) );\n window.open(theUrl, \"editor_frontend\")\n }\n\n public openByCollectionId(collectionId: string): void {\n\n const theUrl: URL = new URL(this.env.eduSharingPath + \"/components/editorial-desk\");\n const params = theUrl.searchParams;\n params.set(\"ids\", collectionId);\n params.set(\"mode\", \"render\");\n window.open(theUrl, \"editor_frontend\")\n }\n}\n","import { Component, OnInit, 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 { FormControl } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { EditorialLinkService } from '../components/editorial-link-service/editorial-link.service';\nimport { FilterValue, MatrixWithCounts, QualityMatrixHeader } from '../java-api';\n\n@Component({\n selector: 'app-tree-collection-details',\n templateUrl: './tree-collection-details.component.html',\n styleUrls: ['./tree-collection-details.component.scss'],\n})\nexport class TreeCollectionDetailsComponent implements OnInit {\n readonly selectedCollection = new FormControl<string>('', { nonNullable: true });\n readonly collections$: BehaviorSubject<FilterValue[]> = new BehaviorSubject<FilterValue[]>([]);\n readonly recentQualityMatrix$ = new BehaviorSubject<MatrixWithCounts>({ columns: [], rows: [] });\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 ngOnInit(): void {\n this.initCollectionsFilter();\n }\n\n private initCollectionsFilter(): void {\n this.selectedCollection.valueChanges.subscribe((collectionIdValue) => {\n const id = this.extractCollectionIdFromVocabUrl(collectionIdValue);\n this.loadDataForCollection(id);\n });\n this.metaApi\n .getCollectionsFilter()\n .pipe(take(1))\n .subscribe((collections) => {\n const sortedCollections = collections.sort((a, b) => a.label.localeCompare(b.label));\n this.collections$.next(sortedCollections);\n this.selectedCollection.setValue(sortedCollections[0].id);\n });\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 filter() {\n //this.dataSource.data = this.statsData.filter((l) => l.title.toLowerCase().includes(this.searchToken.toLowerCase()));\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","<mat-card>\n <mat-card-header>\n <mat-card-title>\n Qualitätsmetrik: Metadatenvollständigkeit von Sammlungen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n </mat-card-header>\n <mat-card-content>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <lib-qm-filter\n aria-disabled=\"true\"\n [label]=\"'Sammlung'\"\n [options]=\"collections$ | async\"\n [multiple]=\"false\"\n [inputFormControl]=\"selectedCollection\"\n >\n </lib-qm-filter>\n\n </mat-card-content>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"recentQualityMatrix$.value.rows\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"row-header\" sticky>\n <th mat-header-cell *matHeaderCellDef>Sammlung</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"row-header {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n <a (click)=\"openCollection(row.meta.id)\">\n <mat-icon [svgIcon]=\"row.meta.level === 1 ? 'tree' : 'child'\"></mat-icon>\n {{row.meta.label}}\n </a>\n </td>\n </ng-container>\n\n <!-- Data Columns -->\n <ng-container *ngFor=\"let column of dataColumns\" [matColumnDef]=\"column.id\">\n <th mat-header-cell *matHeaderCellDef matTooltip=\"{{column.altLabel}}\" >{{ \"quality_matrix.\" + column.label | translate }}</th>\n <td mat-cell *matCellDef=\"let row\" matTooltip=\"{{'cell tooltip' //getCellTooltip(row, column.id)}}\">\n <ng-container *ngIf=\" column.id === 'collection_issues' else countsWithLinks\">\n {{ translateCollectionIssues(row.counts[column.id]) | async }}\n </ng-container>\n <ng-template #countsWithLinks>\n <a *ngIf=\"row.counts[column.id]\" (click)=\"showMaterialWithIssue(row.meta.id, row.meta.label, column.id)\">\n {{ row.counts[column.id] }}\n </a>\n </ng-template>\n\n\n </td>\n </ng-container>\n\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['row-header'].concat(columnIds); sticky:true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['row-header'].concat(columnIds)\"></tr>\n </table>\n</mat-card>\n","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 { Component, Input, LOCALE_ID, OnDestroy } from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatCard, MatCardContent, MatCardHeader, MatCardTitle } from '@angular/material/card';\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 { MAT_LUXON_DATE_ADAPTER_OPTIONS, provideLuxonDateAdapter } from '@angular/material-luxon-adapter';\nimport { MAT_DATE_LOCALE, MatDateFormats } 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: 'lib-datepicker',\n standalone: true,\n imports: [\n FormsModule,\n MatCard,\n MatCardContent,\n MatCardHeader,\n MatCardTitle,\n MatDatepicker,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatFormField,\n MatInput,\n MatLabel,\n MatSuffix,\n ReactiveFormsModule,\n ],\n providers: [\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 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 constructor() {}\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","<mat-card>\n <mat-card-header>\n <mat-card-title> Zeitlicher Vergleich </mat-card-title>\n </mat-card-header>\n <mat-card-content [formGroup]=\"inputGroup\">\n <!-- start date -->\n <mat-form-field>\n <mat-label>Zeitpunkt 1</mat-label>\n <input matInput\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker1\" formControlName=\"start\"\n placeholder=\"Starts date\"\n >\n<!--\n <mat-hint>d.M.yyyy</mat-hint>\n-->\n <mat-datepicker-toggle matIconSuffix [for]=\"picker1\"></mat-datepicker-toggle>\n <mat-datepicker [disabled]=\"disabled\" #picker1 [startAt]=\"inputGroup.controls.start.defaultValue\">\n </mat-datepicker>\n </mat-form-field>\n <!-- /start date -->\n <!-- end date -->\n <mat-form-field>\n <mat-label>Zeitpunkt2</mat-label>\n <input matInput\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker2\"\n formControlName=\"end\"\n placeholder=\"End date\"\n >\n <!--\n <mat-hint>d.M.yyyy</mat-hint>\n -->\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker [disabled]=\"disabled\" #picker2 [startAt]=\"inputGroup.controls.end.value\">\n </mat-datepicker>\n </mat-form-field>\n <!-- /end date -->\n </mat-card-content>\n</mat-card>","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})\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}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { DonutSlice } from './donut-chart.model';\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: 'app-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 *ngFor=\"let slice of data | slicesWithCommandsAndOffset:radius:viewBox:borderSize; \n trackBy: trackByFn; \n let index = index\"\n [attr.fill]=\"slice.color\"\n [attr.stroke]=\"'white'\"\n [attr.paint-order]=\"'stroke'\"\n [attr.stroke-opacity]=\"'1'\" \n [attr.stroke-width]=\"strokeWidth\" \n [attr.d]=\"slice.commands\"\n [attr.transform]=\"'rotate(' + slice.offset + ')'\"\n (click)=\"slice.onClickCb ? slice.onClickCb() : null\"\n >\n <title>{{slice.label}}</title>\n </path>\n </svg>\n `,\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(\n `The sum of all slices of the donut chart must equal to 100%. Found: ${sum}.`\n );\n }\n }\n\n trackByFn(index: number, slice: DonutSlice) {\n return slice.id;\n }\n}\n","import { Component, signal } from '@angular/core';\nimport { BehaviorSubject, forkJoin, Observable, of } from 'rxjs';\nimport { filter, finalize, take, tap } from 'rxjs/operators';\nimport { MetaApiService } from '../../meta-api.service';\nimport { QualityMatrix, QualityMatrixHeader, QualityMatrixRow } from '../../java-api';\nimport { FormControl, FormGroup, FormRecord } from '@angular/forms';\nimport { takeUntilDestroyed } 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 { Filter, FilterValue } from '../../java-api';\nimport { KeyValue } from '@angular/common';\n\n@Component({\n selector: 'app-quality-matrix-v2',\n templateUrl: './quality-matrix.html',\n styleUrls: ['./quality_matrix.scss'],\n})\nexport class QualityMatrixComponent {\n filteredColumns: QualityMatrixHeader[] = [];\n datatableColumns: Array<string> = [];\n showHistoricalData = new FormControl({ value: false, disabled: true });\n onlySourcesWithMaterial = new FormControl({ value: true, disabled: true });\n categoryControls: FormRecord<FormControl<string[]>>;\n isLoading = signal(true);\n readonly categoryFilterValues: Map<string, FilterValue[]> = new Map();\n readonly recentQualityMatrix$ = new BehaviorSubject<QualityMatrix>({ columns: [], rows: [] } as QualityMatrix);\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\n constructor(private readonly metaApi: MetaApiService, private readonly linkService: EditorialLinkService) {\n // a FormRecord has to be initialized with one source to determine its type :-(\n this.categoryControls = new FormRecord({ dummy: new FormControl([], { nonNullable: true }) });\n this.categoryControls.removeControl('dummy', { emitEvent: false });\n this.registerCategoryFilters();\n this.registerDateRangeFilter();\n // TODO: consider a register() functions\n this.onlySourcesWithMaterial.valueChanges.pipe(takeUntilDestroyed()).subscribe((onlyWithMaterial) => {\n this.filterTableBySourcesWithMaterial(onlyWithMaterial);\n });\n this.onLoadedDataChanges();\n //this.loadDataWithCurrentlySelectedFilters();\n }\n\n filterIdent(_index: number, item: KeyValue<string, FormControl<string[]>>) {\n return item.key;\n }\n\n get qualityMatrix(): QualityMatrix {\n return this.recentQualityMatrix$.value;\n }\n\n get sourceColumns(): string[] {\n return this.datatableColumns.map((c) => c + '_source');\n }\n\n get currentColumns(): string[] {\n return this.datatableColumns.map((c) => c + '_current');\n }\n\n get pastColumns(): string[] {\n return this.datatableColumns.map((c) => c + '_past');\n }\n\n get allDataColumns(): string[] {\n if (this.showHistoricalData.value) {\n return this.pastColumns.flatMap((e, i) => [e, this.currentColumns[i]]);\n }\n return this.currentColumns;\n }\n\n private filterTableBySourcesWithMaterial(onlyWith: boolean | null) {\n const allColumns = this.recentQualityMatrix$.value.columns.slice();\n // avoid filtering when not necessary\n this.filteredColumns = onlyWith ? allColumns.filter((c) => c.total > 0) : allColumns;\n this.datatableColumns = this.filteredColumns.map((c) => c.id);\n }\n\n registerDateRangeFilter() {\n this.range.valueChanges.pipe(takeUntilDestroyed()).subscribe(() => {\n this.loadDataWithCurrentlySelectedFilters();\n });\n this.metaApi.getTimerangeFilter().subscribe((rangeFilter) => {\n if (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!, { zone: 'utc' });\n //toggle the emitEvent to initially load the data or not\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: true });\n }\n });\n }\n\n private registerCategoryFilters() {\n this.metaApi\n .getCategoryFilters()\n .pipe(take(1))\n .subscribe((filters) => {\n filters.forEach((filter) => {\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 });\n this.categoryControls.valueChanges\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.loadDataWithCurrentlySelectedFilters());\n }\n\n private onLoadedDataChanges() {\n this.recentQualityMatrix$\n .pipe(\n takeUntilDestroyed(),\n filter((qm) => qm !== null),\n tap(() => this.filterTableBySourcesWithMaterial(this.onlySourcesWithMaterial.value))\n )\n .subscribe();\n }\n\n private loadDataForStart(): Observable<QualityMatrix | null> {\n if (this.range.controls.start?.value) {\n const body: Filter[] = this.getCurrentFilterValues();\n body.push({\n field: 'asOf',\n values: [{ id: this.range.controls.start.value.toISO({ includeOffset: false }) as string, label: '' }],\n });\n return this.metaApi.getQualityMatrixWithFiltersV2(body).pipe(take(1));\n }\n return of(null);\n }\n\n private loadDataForEnd(): Observable<QualityMatrix> {\n const body: Filter[] = this.getCurrentFilterValues();\n body.push({\n field: 'asOf',\n values: [{ id: this.range.controls.end.value.toISO({ includeOffset: false }) as string, label: '' }],\n });\n return this.metaApi.getQualityMatrixWithFiltersV2(body).pipe(take(1));\n }\n\n private getCurrentFilterValues(): Filter[] {\n const body: Filter[] = [];\n for (const [field, values] of Object.entries(this.categoryControls.value)) {\n let requestValues: FilterValue[] = [];\n if (values && values.length) {\n requestValues = values.map((value) => ({ id: value, label: '' }));\n body.push({ field, values: requestValues });\n }\n }\n return body;\n }\n\n private loadDataWithCurrentlySelectedFilters() {\n this.isLoading.set(true);\n forkJoin({\n pastQm: this.loadDataForStart(),\n currentQm: this.loadDataForEnd(),\n })\n .pipe(\n finalize(() => {\n this.isLoading.set(false);\n }),\n tap(({ pastQm: _, currentQm }) => {\n this.datatableColumns = currentQm.columns.filter((c) => c.level !== 0).map((c) => c.id);\n })\n )\n .subscribe(({ pastQm, currentQm }) => {\n this.recentQualityMatrix$.next(currentQm);\n this.pastQualityMatrix$.next(pastQm);\n });\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 async refresh(): Promise<void> {\n //or should we reset all Filter?\n this.loadDataWithCurrentlySelectedFilters();\n }\n\n getPastColumn(columnId: string) {\n return this.pastQualityMatrix$.value?.columns.find((c) => c.id === columnId);\n }\n\n getTrend(row: QualityMatrixRow, column: QualityMatrixHeader): { delta?: number; trend?: string } {\n if (this.pastQualityMatrix$.value === null) {\n return {};\n }\n if (this.pastQualityMatrix$.value.columns.length > 0) {\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 } else {\n return {};\n }\n }\n\n getDonutSlices(row: QualityMatrixRow, column: QualityMatrixHeader): DonutSlice[] {\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 * row.counts[column.id].sufficient) / column.total);\n insufficientfillRate = Math.round((100 * row.counts[column.id].insufficient) / column.total);\n }\n const sufficientTotal = row.counts[column.id].sufficient;\n const insufficientTotal = row.counts[column.id].insufficient;\n const missingTotal = column.total - sufficientTotal - insufficientTotal;\n const rest = 100 - (sufficientfillRate + insufficientfillRate); // a.k.a. \"missing\"\n const slices = [\n {\n id: 3,\n percent: rest,\n color: '#D8EDFC',\n label: `${rest} % (${missingTotal})`,\n },\n {\n id: 1,\n percent: insufficientfillRate,\n color: '#C20808',\n label: `${insufficientfillRate} % (${insufficientTotal})`,\n },\n {\n id: 2,\n percent: sufficientfillRate,\n color: '#4ABEFF',\n label: `${sufficientfillRate} % (${sufficientTotal})`,\n },\n ];\n return slices;\n }\n protected readonly DateTime = DateTime;\n}\n","<mat-card appearance=\"raised\">\n <mat-card-header>\n <mat-card-title>\n Qualitätsmetrik: Metadatenvollständigkeit von Quellen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n </mat-card-header>\n <mat-card-content>\n <lib-qm-filter\n *ngFor=\"let filter of categoryControls.controls | keyvalue; trackBy: filterIdent\"\n [options]=\"categoryFilterValues.get(filter.key)\"\n [inputFormControl]=\"filter.value\"\n [label] = \"'filter.' + filter.key | translate\"></lib-qm-filter>\n </mat-card-content>\n <mat-card-actions align=\"end\">\n <mat-slide-toggle [disabled]=\"isLoading()\" labelPosition=\"before\" [formControl]=\"onlySourcesWithMaterial\" id=\"onlySourcesWithMaterial\" >\n show only sources with material\n </mat-slide-toggle>\n <mat-slide-toggle [disabled]=\"isLoading()\" labelPosition=\"before\" [formControl]=\"showHistoricalData\" id=\"showHistoricalData\" >\n show historical data\n </mat-slide-toggle>\n <button\n mat-icon-button\n color=\"primary\"\n [disabled]=\"isLoading\"\n (click)=\"refresh()\"\n matTooltip=\"Aktualisiere den IST-Stand\"\n matTooltipShowDelay=\"500\"\n >\n <mat-icon>refresh</mat-icon>\n </button>\n </mat-card-actions>\n</mat-card>\n<lib-datepicker *ngIf=\"showHistoricalData.value\" [disabled]=\"isLoading()\" [inputGroup]=\"range\" ></lib-datepicker>\n\n\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"recentQualityMatrix$.value.rows\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"row-header\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Issue Type</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"row-header {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n {{\"quality_matrix.\" + row.meta.label | translate }}\n </td>\n </ng-container>\n <!-- one column for the source -->\n <ng-container *ngFor=\"let col of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_source'\">\n <th [attr.colspan]=\"showHistoricalData.value?2:1\" mat-header-cell *matHeaderCellDef matTooltip=\"{{col.altLabel}}\" >{{col.label}}</th>\n </ng-container>\n <!-- /source -->\n <!-- current Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"column.id + '_current'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"{{column.altLabel}}\" >{{ range.controls.end.value?.toLocaleString(DateTime.DATE_SHORT) }} <br>({{column.total}})</th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">\n <a *ngIf=\"column.total > 0 else emptyDiv\" class=\"chart-container\" (click)=\"openEditLink( column.label, row.meta.label)\">\n <div >\n <app-donut-chart [data]=\"getDonutSlices(row, column)\" [borderSize]=\"25\"></app-donut-chart>\n </div>\n </a>\n <ng-template #emptyDiv>\n <div>-</div>\n </ng-template>\n </td>\n </ng-container>\n <!-- /current Data Columns -->\n <!-- past Data Columns -->\n <ng-container *ngIf=\"showHistoricalData.value\">\n <ng-container *ngFor=\"let column of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"column.id + '_past'\">\n <th class=\"historic-data-cell\" mat-header-cell\n *matHeaderCellDef>{{ range.controls.start.value?.toLocaleString(DateTime.DATE_SHORT) }}\n <br>{{ getPastColumn(column.id)?.total }}\n </th>\n <td class=\"historic-data-cell\" mat-cell *matCellDef=\"let row\">\n <ng-container *ngIf=\"getTrend(row, column) as trend\">\n <span [ngClass]=\"trend.trend\">\n <mat-icon aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" />\n {{ trend.delta }}\n </span>\n </ng-container>\n\n </td>\n </ng-container>\n </ng-container>\n <!-- /past Data Columns -->\n\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['row-header'].concat( sourceColumns); sticky: true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"allDataColumns; sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['row-header'].concat(allDataColumns)\"></tr>\n </table>\n</mat-card>\n","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};\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 { TreeSearchCountsComponent } from './tree-search-counts/tree-search-counts.component';\nimport { TreeCollectionDetailsComponent } from './tree-collection-details/tree-collection-details.component';\nimport { WrapObservablePipe } from './wrap-observable.pipe';\nimport { EnvHelperService, NgMetaWidgetsLibConfiguration } from './env-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';\n\n@NgModule({\n declarations: [\n TreeSearchCountsComponent,\n TreeCollectionDetailsComponent,\n WrapObservablePipe,\n QualityMatrixComponent,\n DonutChartComponent,\n DonutChartPipe,\n ],\n exports: [TreeCollectionDetailsComponent, TreeSearchCountsComponent],\n imports: [\n BrowserModule,\n JavaApiModule.forRoot(() => new JavaConfig()),\n MatCardModule,\n MatTreeModule,\n BrowserAnimationsModule,\n MatIconModule,\n MatSliderModule,\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 ],\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 EnvHelperService,\n { provide: 'config', 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, LOCALE_ID, OnDestroy } 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 { MAT_LUXON_DATE_ADAPTER_OPTIONS, provideLuxonDateAdapter } from '@angular/material-luxon-adapter';\nimport { MAT_DATE_LOCALE, MatDateFormats } 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: 'lib-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 ],\n providers: [\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 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\n constructor() {}\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 ngOnDestroy(): void {\n //defer this to avoid an ExpressionChangedAfterItHasBeenCheckedError on the parent component\n Promise.resolve().then(() => this.inputGroup.reset());\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<ng-container [formGroup]=\"inputGroup\" >\n <mat-form-field>\n <mat-label>Zeitpunkt 1</mat-label>\n <input matInput\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker1\" formControlName=\"start\"\n placeholder=\"Starts date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker1\"></mat-datepicker-toggle>\n <mat-datepicker\n #picker1\n [startAt]=\"inputGroup.controls.start.defaultValue\"\n [startView]=\"startView\"\n (monthSelected)=\"setStart($event, picker1)\"\n\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /start date -->\n <!-- end date -->\n <mat-form-field>\n <mat-label>Zeitpunkt2</mat-label>\n <input matInput\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker2\"\n formControlName=\"end\"\n placeholder=\"End date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker\n #picker2\n [startAt]=\"inputGroup.controls.end.value\"\n [startView]=\"startView\"\n (monthSelected)=\"setEnd($event, picker2)\"\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /end date -->\n</ng-container>\n<!--\n </mat-card-content>\n</mat-card>\n-->","import { Component, DestroyRef, 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, ReactiveFormsModule } from '@angular/forms';\n\nimport { MonthpickerComponent } from './monthpicker/monthpicker.component';\nimport { Count } from '../java-api';\nimport { MetaApiService } from '../meta-api.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { AsyncPipe, NgClass } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged, finalize, take } from 'rxjs/operators';\nimport { MaterialCountFilter } from '../java-api';\n\n@Component({\n selector: 'lib-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 NgClass,\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 constructor(private readonly metaApi: MetaApiService, private readonly destroyRef: DestroyRef) {}\n\n ngOnInit(): void {\n this.registerDateRangeFilter();\n }\n\n registerDateRangeFilter() {\n this.range.valueChanges\n .pipe(\n takeUntilDestroyed(this.destroyRef),\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 )\n .subscribe(() => {\n this.loadData();\n });\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(): void {\n this.isLoading.set(true);\n\n const request: MaterialCountFilter = {\n startDate: this.range.value.start?.toISO()!,\n endDate: this.range.value.end?.toISO()!,\n granularity: this.granularity.value,\n };\n\n this.metaApi\n .getEditorialMaterialCounts(request)\n .pipe(\n take(1),\n finalize(() => this.isLoading.set(false))\n )\n .subscribe((response) => {\n const datapoints = 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 this.datapoints$.next(datapoints);\n });\n }\n}\n","<mat-card appearance=\"outlined\">\n <mat-card-header>\n <mat-card-title>\n collection-count-history{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <mat-card-content>\n\n <lib-monthpicker\n [inputGroup]=\"range\"></lib-monthpicker>\n\n <div [ngClass]=\"{'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>","import { Component, OnDestroy, OnInit, signal } from '@angular/core';\nimport {\n MatCard,\n MatCardActions,\n MatCardContent,\n MatCardHeader,\n MatCardModule,\n MatCardTitle,\n} from '@angular/material/card';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, MatTable, MatTableModule } from '@angular/material/table';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NgClass, NgForOf, NgIf } from '@angular/common';\nimport { MetaApiService } from '../meta-api.service';\nimport { Filter, MatrixRowWithCounts, MatrixWithCounts, QualityMatrixHeader } from '../java-api';\nimport { DateTime } from 'luxon';\nimport { finalize, takeUntil, tap } from 'rxjs/operators';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { DatepickerComponent } from '../components/filter/datepicker/datepicker.component';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: 'lib-content-type-count',\n standalone: true,\n imports: [\n MatCardModule,\n MatCard,\n MatCardHeader,\n MatCardTitle,\n MatCardContent,\n MatCardActions,\n MatTooltip,\n MatTableModule,\n MatTable,\n TranslateModule,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef,\n NgForOf,\n DatepickerComponent,\n NgClass,\n MatIcon,\n NgIf,\n ],\n //changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './materialtypes-by-sources.component.html',\n styleUrl: './materialtypes-by-sources.component.scss',\n})\nexport class MaterialtypesBySourcesComponent implements OnInit, OnDestroy {\n protected readonly isLoading = signal(true);\n protected readonly timeFilterLoaded = signal(false);\n private readonly destroyed$ = new Subject<void>();\n protected readonly recentTypeCount$ = new BehaviorSubject<MatrixWithCounts>({ columns: [], rows: [] });\n protected readonly pastTypeCount$ = new BehaviorSubject<MatrixWithCounts>({ columns: [], rows: [] });\n private columns: QualityMatrixHeader[] = [];\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 constructor(private readonly metaApi: MetaApiService) {}\n columnIdent(_index: number, col: QualityMatrixHeader) {\n return col.id;\n }\n\n get typeColumns(): string[] {\n return this.columns.map((c) => c.id + '_type');\n }\n\n get recentColumns(): string[] {\n return this.columns.map((c) => c.id + '_recent');\n }\n\n get pastColumns(): string[] {\n return this.columns.map((c) => c.id + '_past');\n }\n\n get allColumns(): string[] {\n //return this.recentColumns;\n return this.pastColumns.flatMap((e, i) => [e, this.recentColumns[i]]);\n }\n\n protected pastTypeCount(row: MatrixRowWithCounts, columnid: string) {\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 private registerDateRangeFilter() {\n /* we cannot use the takeUntilDestroyed() helper here,\n * because this method is indirectly called in the finalization of the getTimerangeFilter() call\n */\n this.range.controls.end.valueChanges.pipe(takeUntil(this.destroyed$)).subscribe((date) => {\n this.getCountByDate(date).subscribe((response) => {\n this.recentTypeCount$.next(response);\n });\n });\n this.range.controls.start.valueChanges.pipe(takeUntil(this.destroyed$)).subscribe((date) => {\n this.getCountByDate(date).subscribe((response) => {\n this.pastTypeCount$.next(response);\n });\n });\n }\n\n private getTimeRangeFilter() {\n return this.metaApi\n .getTimerangeFilter()\n .pipe(\n finalize(() => {\n this.timeFilterLoaded.set(true);\n this.registerDateRangeFilter();\n })\n )\n .subscribe((rangeFilter) => {\n if (rangeFilter) {\n const startDate = DateTime.fromISO(rangeFilter.values.find((v) => v.id === 'rangeStart')?.label!, {\n zone: 'utc',\n }).startOf('day');\n this.range.setControl('start', new FormControl<DateTime>(startDate, { nonNullable: true }));\n }\n });\n }\n\n private getCountByDate(date: DateTime) {\n this.isLoading.set(true);\n const filter: Filter = {\n field: 'asOf',\n values: [{ id: date.toISO({ includeOffset: false })!, label: '' }],\n };\n return this.metaApi\n .getMaterialTypeCountsByReplicationSource([filter])\n .pipe(finalize(() => this.isLoading.set(false)));\n }\n\n ngOnInit(): void {\n this.getTimeRangeFilter();\n this.getCountByDate(this.range.controls.end.value)\n .pipe(\n tap((response) => {\n this.columns = response.columns.slice();\n })\n )\n .subscribe((response) => {\n this.recentTypeCount$.next(response);\n });\n }\n\n protected readonly DateTime = DateTime;\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n}\n","<mat-card appearance=\"raised\">\n <mat-card-header>\n <mat-card-title>\n Qualitätsmetrik: Inhaltsarten von Quellen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content *ngIf=\"timeFilterLoaded()\">\n <lib-datepicker [disabled]=\"isLoading()\" [inputGroup]=\"range\" ></lib-datepicker>\n </mat-card-content>\n <mat-card-actions align=\"end\">and some knops</mat-card-actions>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"recentTypeCount$.value.rows\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Quelle</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"label-col\"\n >\n {{row.meta.label}}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of recentTypeCount$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_type'\">\n <th colspan=\"2\" mat-header-cell *matHeaderCellDef matTooltip=\"{{col.label}}\" >{{col.label}}</th>\n </ng-container>\n <!-- one column for each type for the most current date-->\n <ng-container *ngFor=\"let col of recentTypeCount$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\" >{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}</th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">{{ row.counts[col.id] ?? 'n/a' }}</td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of recentTypeCount$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\" >\n {{ pastTypeCount$.value.rows.length ? range.controls.start.value.toLocaleString(DateTime.DATE_SHORT) : 'no past data' }}\n </th>\n <td class=\"past-data-cell\" mat-cell *matCellDef=\"let row;\">\n <ng-container *ngIf=\"pastTypeCount$.value.rows.length && pastTypeCount(row, col.id) as trend\">\n <span [ngClass]=\"trend.trend\"> {{ trend.value ?? 'n/a' }}<mat-icon aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" /></span>\n <span class=\"cdk-visually-hidden\">{{trend.trend}}</span>\n </ng-container>\n </td>\n </ng-container>\n <!-- generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat(typeColumns); sticky:true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"allColumns; sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(allColumns)\"></tr>\n\n </table>\n</mat-card>.","import { Component, OnDestroy, 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, Subject } from 'rxjs';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AsyncPipe, NgClass, NgForOf, NgIf } from '@angular/common';\nimport { MetaApiService } from '../meta-api.service';\nimport { Filter, MatrixRowWithCounts, MatrixWithCounts, QualityMatrixHeader } from '../java-api';\nimport { DateTime } from 'luxon';\nimport { finalize, take, takeUntil, tap } from 'rxjs/operators';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { DatepickerComponent } from '../components/filter/datepicker/datepicker.component';\nimport { MatIcon } from '@angular/material/icon';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n selector: 'lib-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 NgClass,\n MatIcon,\n NgIf,\n AsyncPipe,\n ],\n templateUrl: './counts-with-history.component.html',\n styleUrl: './counts-with-history.component.scss',\n})\nexport class CountsWithHistoryComponent implements OnInit, OnDestroy {\n protected readonly isLoading = signal(true);\n protected readonly timeFilterLoaded = signal(false);\n private readonly destroyed$ = new Subject<void>();\n protected readonly recentTypeCount$ = new BehaviorSubject<MatrixWithCounts>({ columns: [], rows: [] });\n protected readonly pastTypeCount$ = new BehaviorSubject<MatrixWithCounts>({ columns: [], rows: [] });\n protected readonly pageTitle = new BehaviorSubject<string | null>(null);\n private columns: QualityMatrixHeader[] = [];\n private apiMethod: keyof MetaApiService = 'getMaterialTypeCountsByReplicationSource';\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 protected columnTranslationkey: string | null = null;\n\n constructor(private readonly metaApi: MetaApiService, private readonly route: ActivatedRoute) {\n this.pageTitle.next('Hallo Welt');\n }\n columnIdent(_index: number, col: QualityMatrixHeader) {\n return col.id;\n }\n\n get typeColumns(): string[] {\n return this.columns.map((c) => c.id + '_type');\n }\n\n get recentColumns(): string[] {\n return this.columns.map((c) => c.id + '_recent');\n }\n\n get pastColumns(): string[] {\n return this.columns.map((c) => c.id + '_past');\n }\n\n get allColumns(): string[] {\n //return this.recentColumns;\n return this.pastColumns.flatMap((e, i) => [e, this.recentColumns[i]]);\n }\n private registerDateRangeFilter() {\n /* we cannot use the takeUntilDestroyed() helper here,\n * because this method is indirectly called in the finalization of the getTimerangeFilter() call\n */\n this.range.controls.end.valueChanges.pipe(takeUntil(this.destroyed$)).subscribe((date) => {\n this.getCountByDate(date).subscribe((response) => {\n this.recentTypeCount$.next(response);\n });\n });\n this.range.controls.start.valueChanges.pipe(takeUntil(this.destroyed$)).subscribe((date) => {\n this.getCountByDate(date).subscribe((response) => {\n this.pastTypeCount$.next(response);\n });\n });\n }\n\n private getTimeRangeFilter() {\n return this.metaApi\n .getTimerangeFilter()\n .pipe(\n finalize(() => {\n this.timeFilterLoaded.set(true);\n this.registerDateRangeFilter();\n this.range.controls.start.reset();\n })\n )\n .subscribe((rangeFilter) => {\n if (rangeFilter) {\n const startDate = DateTime.fromISO(rangeFilter.values.find((v) => v.id === 'rangeStart')?.label!, {\n zone: 'utc',\n }).startOf('day');\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>(startDate, { nonNullable: true }));\n }\n });\n }\n\n private getCountByDate(date: DateTime): Observable<MatrixWithCounts> {\n this.isLoading.set(true);\n const filter: Filter = {\n field: 'asOf',\n values: [{ id: date.toISO({ includeOffset: false })!, label: '' }],\n };\n // type of this.metaApi[this.apiMethod]([filter]) is Observable<MatrixWithCounts>\n // but typescript does not know that\n // @ts-ignore\n return this.metaApi[this.apiMethod]([filter]).pipe(finalize(() => this.isLoading.set(false)));\n }\n\n protected pastTypeCount(row: MatrixRowWithCounts, columnid: string) {\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 ngOnInit(): void {\n //this.registerDateRangeFilter();\n this.route.data.pipe(take(1)).subscribe(({ columnTranslationkey = null, title, apiMethod }) => {\n this.columnTranslationkey = columnTranslationkey;\n this.pageTitle.next(title);\n this.apiMethod = apiMethod;\n this.getTimeRangeFilter();\n this.getCountByDate(this.range.controls.end.value)\n .pipe(\n tap((response) => {\n this.columns = response.columns.slice();\n })\n )\n .subscribe((response) => {\n this.recentTypeCount$.next(response);\n });\n });\n }\n\n protected readonly DateTime = DateTime;\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n}\n","<mat-card appearance=\"raised\">\n <mat-card-header>\n <mat-card-title data-test-id=\"page-title\">\n Qualitätsmetrik: {{(pageTitle | async ) || '' | translate}}{{isLoading() ? \": Lade neue Daten.\" : \"\"}}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content *ngIf=\"timeFilterLoaded()\">\n <lib-datepicker [disabled]=\"isLoading()\" [inputGroup]=\"range\" ></lib-datepicker>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"recentTypeCount$.value.rows\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Quelle</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"label-col\"\n >\n {{row.meta.label}}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of recentTypeCount$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_type'\">\n <th colspan=\"2\" mat-header-cell *matHeaderCellDef matTooltip=\"{{col.label}}\" >\n {{columnTranslationkey ? (columnTranslationkey + col.label | translate ) : col.label }}\n </th>\n </ng-container>\n <!-- one column for each type for the most current date-->\n <ng-container *ngFor=\"let col of recentTypeCount$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\" >{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}</th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">{{ row.counts[col.id] ?? 'n/a' }}</td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of recentTypeCount$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\" >\n {{ pastTypeCount$.value.rows.length ? range.controls.start.value.toLocaleString(DateTime.DATE_SHORT) : 'no past data' }}\n </th>\n <td class=\"past-data-cell\" mat-cell *matCellDef=\"let row;\">\n <ng-container *ngIf=\"pastTypeCount$.value.rows.length && pastTypeCount(row, col.id) as trend\">\n <span [ngClass]=\"trend.trend\"> {{ trend.value ?? 'n/a' }}<mat-icon aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" /></span>\n <span class=\"cdk-visually-hidden\">{{trend.trend}}</span>\n </ng-container>\n </td>\n </ng-container>\n <!-- generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat(typeColumns); sticky:true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"allColumns; sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(allColumns)\"></tr>\n\n </table>\n</mat-card>","/*\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/env-helper.service';\nexport * from './lib/components/quality-matrix/quality_matrix';\nexport * from './lib/collection-count-history/collection-count-history.component';\nexport * from './lib/materialtypes-by-sources/materialtypes-by-sources.component';\nexport * from './lib/counts-with-history/counts-with-history.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.Configuration","i1.CollectionAPIService","i1.ReplicationSourceAPIService","i1.FilterAPIService","i1.EditorsAPIService","i4","i1.MetaApiService","i2.EnvHelperService","i3","i8","i10.QualityMatrixFilterComponent","i2","i3.EditorialLinkService","i5","i6","i9.QualityMatrixFilterComponent","datePickerFormats","i1","i2.DonutChartPipe","i2.EditorialLinkService","i7","i9","i10","i11.QualityMatrixFilterComponent","i12.DatepickerComponent","i13.DonutChartComponent","i14","JavaConfig","i1.SvgIconsService","i2.ApiModule","JavaApiModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-edu-sharing-metaqs2.mjs","sources":["../../../projects/ng-meta-widgets-lib/src/lib/java-api/encoder.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/variables.ts","../../../projects/ng-meta-widgets-lib/src/lib/java-api/configuration.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/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/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/tree-search-counts/inline-worker.ts","../../../projects/ng-meta-widgets-lib/src/lib/meta-api.service.ts","../../../projects/ng-meta-widgets-lib/src/lib/env-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/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/components/editorial-link-service/editorial-link.service.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/wrap-observable.pipe.ts","../../../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/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/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/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/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/materialtypes-by-sources/materialtypes-by-sources.component.ts","../../../projects/ng-meta-widgets-lib/src/lib/materialtypes-by-sources/materialtypes-by-sources.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/public-api.ts","../../../projects/ng-meta-widgets-lib/src/ngx-edu-sharing-metaqs2.ts"],"sourcesContent":["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 { 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';\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 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","/**\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 {\n HttpClient,\n HttpHeaders,\n HttpParams,\n HttpResponse,\n HttpEvent,\n HttpParameterCodec,\n HttpContext,\n} from '@angular/common/http';\nimport { CustomHttpParameterCodec } from '../encoder';\nimport { Observable } from 'rxjs';\n\n// @ts-ignore\nimport { BASE_PATH } from '../variables';\nimport { Configuration } from '../configuration';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthProxyControllerService {\n protected basePath = 'https://metaqs-2.staging.openeduhub.net';\n public defaultHeaders = new HttpHeaders();\n public configuration = new Configuration();\n public encoder: HttpParameterCodec;\n\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration: Configuration\n ) {\n if (configuration) {\n this.configuration = configuration;\n }\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 // @ts-ignore\n private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n if (typeof value === 'object' && value instanceof Date === false) {\n httpParams = this.addToHttpParamsRecursive(httpParams, value);\n } else {\n httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n }\n return httpParams;\n }\n\n private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n if (value == null) {\n return httpParams;\n }\n\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n (value as any[]).forEach((elem) => (httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)));\n } else if (value instanceof Date) {\n if (key != null) {\n httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10));\n } else {\n throw Error('key may not be null if value is Date');\n }\n } else {\n Object.keys(value).forEach(\n (k) => (httpParams = this.addToHttpParamsRecursive(httpParams, value[k], key != null ? `${key}.${k}` : k))\n );\n }\n } else if (key != null) {\n httpParams = httpParams.append(key, value);\n } else {\n throw Error('key may not be null if value is not object or array');\n }\n return httpParams;\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 let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = [];\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 = `/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 let localVarCredential: string | undefined;\n // authentication (basicAuth) required\n localVarCredential = this.configuration.lookupCredential('basicAuth');\n if (localVarCredential) {\n localVarHeaders = localVarHeaders.set('Authorization', 'Basic ' + localVarCredential);\n }\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 = `/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 {\n HttpClient,\n HttpHeaders,\n HttpParams,\n HttpResponse,\n HttpEvent,\n HttpParameterCodec,\n HttpContext,\n} from '@angular/common/http';\nimport { CustomHttpParameterCodec } from '../encoder';\nimport { Observable } from 'rxjs';\n\n// @ts-ignore\nimport { EduCollection } from '../model/eduCollection';\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';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CollectionAPIService {\n protected basePath = 'https://metaqs-2.staging.openeduhub.net';\n public defaultHeaders = new HttpHeaders();\n public configuration = new Configuration();\n public encoder: HttpParameterCodec;\n\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration: Configuration\n ) {\n if (configuration) {\n this.configuration = configuration;\n }\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 // @ts-ignore\n private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n if (typeof value === 'object' && value instanceof Date === false) {\n httpParams = this.addToHttpParamsRecursive(httpParams, value);\n } else {\n httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n }\n return httpParams;\n }\n\n private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n if (value == null) {\n return httpParams;\n }\n\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n (value as any[]).forEach((elem) => (httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)));\n } else if (value instanceof Date) {\n if (key != null) {\n httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10));\n } else {\n throw Error('key may not be null if value is Date');\n }\n } else {\n Object.keys(value).forEach(\n (k) => (httpParams = this.addToHttpParamsRecursive(httpParams, value[k], key != null ? `${key}.${k}` : k))\n );\n }\n } else if (key != null) {\n httpParams = httpParams.append(key, value);\n } else {\n throw Error('key may not be null if value is not object or array');\n }\n return httpParams;\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 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 = `/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 if (term !== undefined && term !== null) {\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>term, 'term');\n }\n if (oerOnly !== undefined && oerOnly !== null) {\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>oerOnly, 'oerOnly');\n }\n if (type !== undefined && type !== null) {\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>type, 'type');\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 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 if (term !== undefined && term !== null) {\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>term, 'term');\n }\n if (oerOnly !== undefined && oerOnly !== null) {\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>oerOnly, 'oerOnly');\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 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 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 if (oerOnly !== undefined && oerOnly !== null) {\n localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, <any>oerOnly, 'oerOnly');\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 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 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 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 = `/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 {\n HttpClient,\n HttpHeaders,\n HttpParams,\n HttpResponse,\n HttpEvent,\n HttpParameterCodec,\n HttpContext,\n} from '@angular/common/http';\nimport { CustomHttpParameterCodec } from '../encoder';\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';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EditorsAPIService {\n protected basePath = 'https://metaqs-2.staging.openeduhub.net';\n public defaultHeaders = new HttpHeaders();\n public configuration = new Configuration();\n public encoder: HttpParameterCodec;\n\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration: Configuration\n ) {\n if (configuration) {\n this.configuration = configuration;\n }\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 // @ts-ignore\n private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n if (typeof value === 'object' && value instanceof Date === false) {\n httpParams = this.addToHttpParamsRecursive(httpParams, value);\n } else {\n httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n }\n return httpParams;\n }\n\n private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n if (value == null) {\n return httpParams;\n }\n\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n (value as any[]).forEach((elem) => (httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)));\n } else if (value instanceof Date) {\n if (key != null) {\n httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10));\n } else {\n throw Error('key may not be null if value is Date');\n }\n } else {\n Object.keys(value).forEach(\n (k) => (httpParams = this.addToHttpParamsRecursive(httpParams, value[k], key != null ? `${key}.${k}` : k))\n );\n }\n } else if (key != null) {\n httpParams = httpParams.append(key, value);\n } else {\n throw Error('key may not be null if value is not object or array');\n }\n return httpParams;\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 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 = `/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 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 = `/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 )\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 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 = `/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 {\n HttpClient,\n HttpHeaders,\n HttpParams,\n HttpResponse,\n HttpEvent,\n HttpParameterCodec,\n HttpContext,\n} from '@angular/common/http';\nimport { CustomHttpParameterCodec } from '../encoder';\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';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FilterAPIService {\n protected basePath = 'https://metaqs-2.staging.openeduhub.net';\n public defaultHeaders = new HttpHeaders();\n public configuration = new Configuration();\n public encoder: HttpParameterCodec;\n\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration: Configuration\n ) {\n if (configuration) {\n this.configuration = configuration;\n }\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 // @ts-ignore\n private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n if (typeof value === 'object' && value instanceof Date === false) {\n httpParams = this.addToHttpParamsRecursive(httpParams, value);\n } else {\n httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n }\n return httpParams;\n }\n\n private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n if (value == null) {\n return httpParams;\n }\n\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n (value as any[]).forEach((elem) => (httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)));\n } else if (value instanceof Date) {\n if (key != null) {\n httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10));\n } else {\n throw Error('key may not be null if value is Date');\n }\n } else {\n Object.keys(value).forEach(\n (k) => (httpParams = this.addToHttpParamsRecursive(httpParams, value[k], key != null ? `${key}.${k}` : k))\n );\n }\n } else if (key != null) {\n httpParams = httpParams.append(key, value);\n } else {\n throw Error('key may not be null if value is not object or array');\n }\n return httpParams;\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 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/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 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 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`;\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 {\n HttpClient,\n HttpHeaders,\n HttpParams,\n HttpResponse,\n HttpEvent,\n HttpParameterCodec,\n HttpContext,\n} from '@angular/common/http';\nimport { CustomHttpParameterCodec } from '../encoder';\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';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReplicationSourceAPIService {\n protected basePath = 'https://metaqs-2.staging.openeduhub.net';\n public defaultHeaders = new HttpHeaders();\n public configuration = new Configuration();\n public encoder: HttpParameterCodec;\n\n constructor(\n protected httpClient: HttpClient,\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\n @Optional() configuration: Configuration\n ) {\n if (configuration) {\n this.configuration = configuration;\n }\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 // @ts-ignore\n private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n if (typeof value === 'object' && value instanceof Date === false) {\n httpParams = this.addToHttpParamsRecursive(httpParams, value);\n } else {\n httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n }\n return httpParams;\n }\n\n private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n if (value == null) {\n return httpParams;\n }\n\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n (value as any[]).forEach((elem) => (httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)));\n } else if (value instanceof Date) {\n if (key != null) {\n httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10));\n } else {\n throw Error('key may not be null if value is Date');\n }\n } else {\n Object.keys(value).forEach(\n (k) => (httpParams = this.addToHttpParamsRecursive(httpParams, value[k], key != null ? `${key}.${k}` : k))\n );\n }\n } else if (key != null) {\n httpParams = httpParams.append(key, value);\n } else {\n throw Error('key may not be null if value is not object or array');\n }\n return httpParams;\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 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 = `/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 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 = `/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 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 = `/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 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 = `/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 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 = `/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 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 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 { 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((response) => (response.ok ? response : Promise.reject(response)))\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 const urlParams = new URLSearchParams({\n term: searchTerm,\n oerOnly: oerOnly ? 'true' : 'false',\n });\n const url = basePath + '/collections/v2/material/search?' + urlParams;\n return fetch(url, { 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 { 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 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","import { Inject, Injectable } from '@angular/core';\n\nexport class NgMetaWidgetsLibConfiguration {\n useDummyValues = false;\n apiPath: string;\n eduSharingPath: string;\n}\n\n/**\n * helper class to fetch current env variables based on the current context or the given env file as a fallback\n */\n@Injectable()\nexport class EnvHelperService implements EnvHelper {\n constructor(@Inject('config') 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 (window as any).METAQS_API_URL || this.config.apiPath;\n }\n\n public get eduSharingPath() {\n return (window as any).METAQS_EDUSHARING_URL || this.config.eduSharingPath;\n }\n}\n\nexport interface EnvHelper {\n get apiPath(): string;\n\n get eduSharingPath(): string;\n\n patchConfig(config: Partial<NgMetaWidgetsLibConfiguration>): void;\n}\n","import { Component, Input, Output } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { FilterValue } from '../../java-api';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { Observable } from 'rxjs';\nimport { NgForOf } from '@angular/common';\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: 'lib-qm-filter',\n templateUrl: './quality-matrix-filter.component.html',\n styleUrl: './quality-matrix-filter.component.scss',\n standalone: true,\n imports: [MatFormFieldModule, MatSelectModule, ReactiveFormsModule, NgForOf],\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 @Input()\n label: string;\n @Input()\n multiple: boolean = true;\n @Output()\n changedFilters: Observable<any> = this.inputFormControl.valueChanges;\n optionIdent(_index: number, option: FilterValue) {\n return option.id;\n }\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 <mat-option *ngFor=\"let option of options; trackBy: optionIdent \" [value]=\"option.id\"> {{ option.label }} </mat-option>\n\n </mat-select>\n</mat-form-field>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit, signal } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { MetaApiService } from '../meta-api.service';\nimport { EnvHelperService } from '../env-helper.service';\nimport { FilterValue, QualityMatrix } from '../java-api';\nimport { FormControl } from '@angular/forms';\nimport { InlineWorker } from './inline-worker';\n\nexport interface DataColumn {\n id: string;\n icon: string;\n label: string;\n level?: number;\n}\n\n@Component({\n selector: 'app-tree-search-counts',\n templateUrl: './tree-search-counts.component.html',\n styleUrls: ['./tree-search-counts.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\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 collections$: BehaviorSubject<FilterValue[]> = new BehaviorSubject<FilterValue[]>([]);\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 readonly selectedCollection = new FormControl<string>('', { nonNullable: true });\n\n // convert this in an Obeservable\n materialCounts: QualityMatrix;\n columns: DataColumn[];\n rowsLoaded: Map<string, boolean> = new Map<string, boolean>();\n\n isLoading = signal(true);\n worker: InlineWorker;\n\n constructor(\n private readonly metaApi: MetaApiService,\n private env: EnvHelperService,\n private readonly changeDetector: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n this.initCollectionsFilter();\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 this.worker = new InlineWorker({ basePath: this.env.apiPath });\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 const collectionId = this.extractCollectionIdFromVocabUrl(this.selectedCollection.value);\n this.loadDataForCollection(collectionId);\n });\n }\n\n private initCollectionsFilter(): void {\n this.selectedCollection.valueChanges.subscribe((collectionIdValue) => {\n const id = this.extractCollectionIdFromVocabUrl(collectionIdValue);\n this.loadDataForCollection(id);\n });\n this.metaApi\n .getCollectionsFilter()\n .pipe(take(1))\n .subscribe((collections) => {\n const sortedCollections = collections.sort((a, b) => a.label.localeCompare(b.label));\n this.collections$.next(sortedCollections);\n this.selectedCollection.setValue(sortedCollections[0].id);\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 this.changeDetector.detectChanges();\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 const ref = 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","<mat-card appearance=\"raised\">\n<mat-card-header>\n <mat-card-title>\n Material in Sammlungen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n</mat-card-header>\n<mat-card-content>\n<!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <lib-qm-filter\n aria-disabled=\"true\"\n [label]=\"'Sammlung'\"\n [options]=\"collections$ | async\"\n [multiple]=\"false\"\n [inputFormControl]=\"selectedCollection\"\n >\n </lib-qm-filter>\n\n</mat-card-content>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"materialCounts.rows\" *ngIf=\"columns\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Label Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Sammlung\n <div >\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showOERonly\" >\n zeige nur OER\n </mat-slide-toggle>\n </div>\n <div>\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showAllColumns\" >\n zeige alle Typen\n </mat-slide-toggle>\n </div>\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"label-col {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n <a (click)=\"openCollection(row.meta.id)\">\n <mat-icon [svgIcon]=\"row.meta.level<=1?'layers':'child'\" />\n {{ row.meta.label }}\n </a>\n </td>\n </ng-container>\n <!-- one column for the MaterialType spanning the collection and search columns-->\n <ng-container *ngFor=\"let col of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"2\" mat-header-cell *matHeaderCellDef class='mat-cell-level-\"{{col.level}}\"' matTooltip=\"{{col.label}}\" >{{col.label}}</th>\n </ng-container>\n <!-- /source -->\n <!-- collection Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"column.id + COLLECTION_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef matTooltip=\"{{column.label}}\" >in Sammlung</th>\n <td [class.noMaterial]=\"!row.counts[column.id]?.sufficient || row.counts[column.id]?.sufficient <= 1\"\n [class.fewMaterials]=\"1 < row.counts[column.id]?.sufficient && row.counts[column.id]?.sufficient <= 3\"\n class=\"collection-data-cell\"\n mat-cell *matCellDef=\"let row\">\n <a (click)=\"showCollectionItems(row.meta.id, row.meta.label, column.id)\">\n {{ row.counts[column.id]?.sufficient || '0' }}\n </a>\n </td>\n </ng-container>\n <!-- /collection Data Columns -->\n <!-- search Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns let index = index; trackBy:columnIdent\" [matColumnDef]=\"column.id + SEARCH_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef>Suche</th>\n <td class=\"search-data-cell\" mat-cell *matCellDef=\"let row\">\n <a (click)=\"searchInEditor(column.id, row.meta.label)\">\n <ng-container *ngIf=\"(( searchCounts | async)?.has(column.id + '_' + row.meta.id) ) else zeroOrLoading\">\n {{ (searchCounts | async)?.get(column.id + '_' + row.meta.id) }}\n </ng-container>\n <ng-template #zeroOrLoading>\n <ng-container *ngIf=\"rowsLoaded.has(row.meta.id) else loadingBlock\"> 0 </ng-container>\n </ng-template>\n <ng-template #loadingBlock>\n loading…\n </ng-template>\n </a>\n </td>\n </ng-container>\n <!-- /search Data Columns -->\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat( typeColumns ); sticky: true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"alternatingDataColumns; sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(alternatingDataColumns)\"></tr>\n </table>\n</mat-card>","import { Injectable } from '@angular/core';\nimport { inject } from \"@angular/core\";\nimport { EnvHelperService } from \"../../env-helper.service\";\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 [\"collections.nodeRef.id.keyword\", \"virtual:collection_id_primary\"],\n //[\"responsibility\", \"virtual:collection_id_primary\"] // das zeigt auf \"sammlungszugehörigkeit\" und ist falsch\n]);\n/*\nThis map our column \"names\" to the valid values of the virtual:editorial_exclusion Filter\n*/\n\nconst ISSUETYPE2FILTERS: Map<string, string> = new Map<string, string>([\n [\"without_title\", \"missing_title\"],\n [\"without_description\", \"missing_description\"],\n [\"without_education_level\", \"missing_educationalcontext\"],\n [\"without_target_group\", \"missing_educationalintendedenduserrole\"],\n [\"without_taxonomy_id\", \"missing_taxonid\"],\n [\"without_category\", \"missing_oeh_lrt\"],\n [\"without_license\", \"missing_license\"]\n]);\n/*\ninterestingly it is not necessary to combine the nodeRef.id\nwith https://vocabs.openeduhub.de/w3id.org/openeduhub/vocabs/oeh-topics/{nodeRef.id}\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class EditorialLinkService {\n private env = inject(EnvHelperService);\n\n constructor() { }\n\n public openByReplicationsourceAndIssueTypeWithFilters(source: string, issue: string , selectedFilters:{ [key: string]: string[] | undefined}): void {\n const filters: any = {};\n filters[\"virtual:audit_filter\"] = [\"all\"];\n filters[\"ccm:oeh_publisher_combined\"] = [source];\n filters[\"virtual:editorial_exclusion\"] = [ ISSUETYPE2FILTERS.get( 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: URL = new URL(this.env.eduSharingPath + \"/components/editorial-desk\");\n const params = theUrl.searchParams;\n params.set(\"mode\", \"audit\");\n params.set(\"filters\", JSON.stringify(filters) );\n window.open(theUrl, \"editor_frontend\")\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\"] = [ ISSUETYPE2FILTERS.get( issueType )];\n filters[\"virtual:collection_id_primary\"] = [collectionId];\n const theUrl: URL = new URL(this.env.eduSharingPath + \"/components/editorial-desk\");\n const params = theUrl.searchParams;\n params.set(\"title\", pageTitle)\n params.set(\"mode\", \"audit\");\n params.set(\"filters\", JSON.stringify(filters) );\n window.open(theUrl, \"editor_frontend\")\n }\n\n public openByCollectionId(collectionId: string): void {\n\n const theUrl: URL = new URL(this.env.eduSharingPath + \"/components/editorial-desk\");\n const params = theUrl.searchParams;\n params.set(\"ids\", collectionId);\n params.set(\"mode\", \"render\");\n window.open(theUrl, \"editor_frontend\")\n }\n}\n","import { Component, OnInit, 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 { FormControl } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { EditorialLinkService } from '../components/editorial-link-service/editorial-link.service';\nimport { FilterValue, MatrixWithCounts, QualityMatrixHeader } from '../java-api';\n\n@Component({\n selector: 'app-tree-collection-details',\n templateUrl: './tree-collection-details.component.html',\n styleUrls: ['./tree-collection-details.component.scss'],\n})\nexport class TreeCollectionDetailsComponent implements OnInit {\n readonly selectedCollection = new FormControl<string>('', { nonNullable: true });\n readonly collections$: BehaviorSubject<FilterValue[]> = new BehaviorSubject<FilterValue[]>([]);\n readonly recentQualityMatrix$ = new BehaviorSubject<MatrixWithCounts>({ columns: [], rows: [] });\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 ngOnInit(): void {\n this.initCollectionsFilter();\n }\n\n private initCollectionsFilter(): void {\n this.selectedCollection.valueChanges.subscribe((collectionIdValue) => {\n const id = this.extractCollectionIdFromVocabUrl(collectionIdValue);\n this.loadDataForCollection(id);\n });\n this.metaApi\n .getCollectionsFilter()\n .pipe(take(1))\n .subscribe((collections) => {\n const sortedCollections = collections.sort((a, b) => a.label.localeCompare(b.label));\n this.collections$.next(sortedCollections);\n this.selectedCollection.setValue(sortedCollections[0].id);\n });\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 filter() {\n //this.dataSource.data = this.statsData.filter((l) => l.title.toLowerCase().includes(this.searchToken.toLowerCase()));\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","<mat-card>\n <mat-card-header>\n <mat-card-title>\n Qualitätsmetrik: Metadatenvollständigkeit von Sammlungen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n </mat-card-header>\n <mat-card-content>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <lib-qm-filter\n aria-disabled=\"true\"\n [label]=\"'Sammlung'\"\n [options]=\"collections$ | async\"\n [multiple]=\"false\"\n [inputFormControl]=\"selectedCollection\"\n >\n </lib-qm-filter>\n\n </mat-card-content>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"recentQualityMatrix$.value.rows\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"row-header\" sticky>\n <th mat-header-cell *matHeaderCellDef>Sammlung</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"row-header {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n <a (click)=\"openCollection(row.meta.id)\">\n <mat-icon [svgIcon]=\"row.meta.level === 1 ? 'tree' : 'child'\"></mat-icon>\n {{row.meta.label}}\n </a>\n </td>\n </ng-container>\n\n <!-- Data Columns -->\n <ng-container *ngFor=\"let column of dataColumns\" [matColumnDef]=\"column.id\">\n <th mat-header-cell *matHeaderCellDef matTooltip=\"{{column.altLabel}}\" >{{ \"quality_matrix.\" + column.label | translate }}</th>\n <td mat-cell *matCellDef=\"let row\" matTooltip=\"{{'cell tooltip' //getCellTooltip(row, column.id)}}\">\n <ng-container *ngIf=\" column.id === 'collection_issues' else countsWithLinks\">\n {{ translateCollectionIssues(row.counts[column.id]) | async }}\n </ng-container>\n <ng-template #countsWithLinks>\n <a *ngIf=\"row.counts[column.id]\" (click)=\"showMaterialWithIssue(row.meta.id, row.meta.label, column.id)\">\n {{ row.counts[column.id] }}\n </a>\n </ng-template>\n\n\n </td>\n </ng-container>\n\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['row-header'].concat(columnIds); sticky:true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['row-header'].concat(columnIds)\"></tr>\n </table>\n</mat-card>\n","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 { Component, Input, LOCALE_ID, OnDestroy } from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatCard, MatCardContent, MatCardHeader, MatCardTitle } from '@angular/material/card';\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 } 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: 'lib-datepicker',\n standalone: true,\n imports: [\n FormsModule,\n MatCard,\n MatCardContent,\n MatCardHeader,\n MatCardTitle,\n MatDatepicker,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatFormField,\n MatInput,\n MatLabel,\n MatSuffix,\n ReactiveFormsModule,\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 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 constructor() {}\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","<mat-card>\n <mat-card-header>\n <mat-card-title> Zeitlicher Vergleich </mat-card-title>\n </mat-card-header>\n <mat-card-content [formGroup]=\"inputGroup\">\n <!-- start date -->\n <mat-form-field>\n <mat-label>Zeitpunkt 1</mat-label>\n <input matInput\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker1\" formControlName=\"start\"\n placeholder=\"Starts date\"\n >\n<!--\n <mat-hint>d.M.yyyy</mat-hint>\n-->\n <mat-datepicker-toggle matIconSuffix [for]=\"picker1\"></mat-datepicker-toggle>\n <mat-datepicker [disabled]=\"disabled\" #picker1 [startAt]=\"inputGroup.controls.start.defaultValue\">\n </mat-datepicker>\n </mat-form-field>\n <!-- /start date -->\n <!-- end date -->\n <mat-form-field>\n <mat-label>Zeitpunkt2</mat-label>\n <input matInput\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker2\"\n formControlName=\"end\"\n placeholder=\"End date\"\n >\n <!--\n <mat-hint>d.M.yyyy</mat-hint>\n -->\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker [disabled]=\"disabled\" #picker2 [startAt]=\"inputGroup.controls.end.value\">\n </mat-datepicker>\n </mat-form-field>\n <!-- /end date -->\n </mat-card-content>\n</mat-card>","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})\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}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { DonutSlice } from './donut-chart.model';\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: 'app-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 *ngFor=\"let slice of data | slicesWithCommandsAndOffset:radius:viewBox:borderSize; \n trackBy: trackByFn; \n let index = index\"\n [attr.fill]=\"slice.color\"\n [attr.stroke]=\"'white'\"\n [attr.paint-order]=\"'stroke'\"\n [attr.stroke-opacity]=\"'1'\" \n [attr.stroke-width]=\"strokeWidth\" \n [attr.d]=\"slice.commands\"\n [attr.transform]=\"'rotate(' + slice.offset + ')'\"\n (click)=\"slice.onClickCb ? slice.onClickCb() : null\"\n >\n <title>{{slice.label}}</title>\n </path>\n </svg>\n `,\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(\n `The sum of all slices of the donut chart must equal to 100%. Found: ${sum}.`\n );\n }\n }\n\n trackByFn(index: number, slice: DonutSlice) {\n return slice.id;\n }\n}\n","import { Component, signal } from '@angular/core';\nimport { BehaviorSubject, forkJoin, Observable, of } from 'rxjs';\nimport { filter, finalize, take, tap } from 'rxjs/operators';\nimport { MetaApiService } from '../../meta-api.service';\nimport { QualityMatrix, QualityMatrixHeader, QualityMatrixRow } from '../../java-api';\nimport { FormControl, FormGroup, FormRecord } from '@angular/forms';\nimport { takeUntilDestroyed } 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 { Filter, FilterValue } from '../../java-api';\nimport { KeyValue } from '@angular/common';\n\n@Component({\n selector: 'app-quality-matrix-v2',\n templateUrl: './quality-matrix.html',\n styleUrls: ['./quality_matrix.scss'],\n})\nexport class QualityMatrixComponent {\n filteredColumns: QualityMatrixHeader[] = [];\n datatableColumns: Array<string> = [];\n showHistoricalData = new FormControl({ value: false, disabled: true });\n onlySourcesWithMaterial = new FormControl({ value: true, disabled: true });\n categoryControls: FormRecord<FormControl<string[]>>;\n isLoading = signal(true);\n readonly categoryFilterValues: Map<string, FilterValue[]> = new Map();\n readonly recentQualityMatrix$ = new BehaviorSubject<QualityMatrix>({ columns: [], rows: [] } as QualityMatrix);\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\n constructor(private readonly metaApi: MetaApiService, private readonly linkService: EditorialLinkService) {\n // a FormRecord has to be initialized with one source to determine its type :-(\n this.categoryControls = new FormRecord({ dummy: new FormControl([], { nonNullable: true }) });\n this.categoryControls.removeControl('dummy', { emitEvent: false });\n this.registerCategoryFilters();\n this.registerDateRangeFilter();\n // TODO: consider a register() functions\n this.onlySourcesWithMaterial.valueChanges.pipe(takeUntilDestroyed()).subscribe((onlyWithMaterial) => {\n this.filterTableBySourcesWithMaterial(onlyWithMaterial);\n });\n this.onLoadedDataChanges();\n //this.loadDataWithCurrentlySelectedFilters();\n }\n\n filterIdent(_index: number, item: KeyValue<string, FormControl<string[]>>) {\n return item.key;\n }\n\n get qualityMatrix(): QualityMatrix {\n return this.recentQualityMatrix$.value;\n }\n\n get sourceColumns(): string[] {\n return this.datatableColumns.map((c) => c + '_source');\n }\n\n get currentColumns(): string[] {\n return this.datatableColumns.map((c) => c + '_current');\n }\n\n get pastColumns(): string[] {\n return this.datatableColumns.map((c) => c + '_past');\n }\n\n get allDataColumns(): string[] {\n if (this.showHistoricalData.value) {\n return this.pastColumns.flatMap((e, i) => [e, this.currentColumns[i]]);\n }\n return this.currentColumns;\n }\n\n private filterTableBySourcesWithMaterial(onlyWith: boolean | null) {\n const allColumns = this.recentQualityMatrix$.value.columns.slice();\n // avoid filtering when not necessary\n this.filteredColumns = onlyWith ? allColumns.filter((c) => c.total > 0) : allColumns;\n this.datatableColumns = this.filteredColumns.map((c) => c.id);\n }\n\n registerDateRangeFilter() {\n this.range.valueChanges.pipe(takeUntilDestroyed()).subscribe(() => {\n this.loadDataWithCurrentlySelectedFilters();\n });\n this.metaApi.getTimerangeFilter().subscribe((rangeFilter) => {\n if (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!, { zone: 'utc' });\n //toggle the emitEvent to initially load the data or not\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: true });\n }\n });\n }\n\n private registerCategoryFilters() {\n this.metaApi\n .getCategoryFilters()\n .pipe(take(1))\n .subscribe((filters) => {\n filters.forEach((filter) => {\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 });\n this.categoryControls.valueChanges\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.loadDataWithCurrentlySelectedFilters());\n }\n\n private onLoadedDataChanges() {\n this.recentQualityMatrix$\n .pipe(\n takeUntilDestroyed(),\n filter((qm) => qm !== null),\n tap(() => this.filterTableBySourcesWithMaterial(this.onlySourcesWithMaterial.value))\n )\n .subscribe();\n }\n\n private loadDataForStart(): Observable<QualityMatrix | null> {\n if (this.range.controls.start?.value) {\n const body: Filter[] = this.getCurrentFilterValues();\n body.push({\n field: 'asOf',\n values: [{ id: this.range.controls.start.value.toISO({ includeOffset: false }) as string, label: '' }],\n });\n return this.metaApi.getQualityMatrixWithFiltersV2(body).pipe(take(1));\n }\n return of(null);\n }\n\n private loadDataForEnd(): Observable<QualityMatrix> {\n const body: Filter[] = this.getCurrentFilterValues();\n body.push({\n field: 'asOf',\n values: [{ id: this.range.controls.end.value.toISO({ includeOffset: false }) as string, label: '' }],\n });\n return this.metaApi.getQualityMatrixWithFiltersV2(body).pipe(take(1));\n }\n\n private getCurrentFilterValues(): Filter[] {\n const body: Filter[] = [];\n for (const [field, values] of Object.entries(this.categoryControls.value)) {\n let requestValues: FilterValue[] = [];\n if (values && values.length) {\n requestValues = values.map((value) => ({ id: value, label: '' }));\n body.push({ field, values: requestValues });\n }\n }\n return body;\n }\n\n private loadDataWithCurrentlySelectedFilters() {\n this.isLoading.set(true);\n forkJoin({\n pastQm: this.loadDataForStart(),\n currentQm: this.loadDataForEnd(),\n })\n .pipe(\n finalize(() => {\n this.isLoading.set(false);\n }),\n tap(({ pastQm: _, currentQm }) => {\n this.datatableColumns = currentQm.columns.filter((c) => c.level !== 0).map((c) => c.id);\n })\n )\n .subscribe(({ pastQm, currentQm }) => {\n this.recentQualityMatrix$.next(currentQm);\n this.pastQualityMatrix$.next(pastQm);\n });\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 async refresh(): Promise<void> {\n //or should we reset all Filter?\n this.loadDataWithCurrentlySelectedFilters();\n }\n\n getPastColumn(columnId: string) {\n return this.pastQualityMatrix$.value?.columns.find((c) => c.id === columnId);\n }\n\n getTrend(row: QualityMatrixRow, column: QualityMatrixHeader): { delta?: number; trend?: string } {\n if (this.pastQualityMatrix$.value === null) {\n return {};\n }\n if (this.pastQualityMatrix$.value.columns.length > 0) {\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 } else {\n return {};\n }\n }\n\n getDonutSlices(row: QualityMatrixRow, column: QualityMatrixHeader): DonutSlice[] {\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 * row.counts[column.id].sufficient) / column.total);\n insufficientfillRate = Math.round((100 * row.counts[column.id].insufficient) / column.total);\n }\n const sufficientTotal = row.counts[column.id].sufficient;\n const insufficientTotal = row.counts[column.id].insufficient;\n const missingTotal = column.total - sufficientTotal - insufficientTotal;\n const rest = 100 - (sufficientfillRate + insufficientfillRate); // a.k.a. \"missing\"\n const slices = [\n {\n id: 3,\n percent: rest,\n color: '#D8EDFC',\n label: `${rest} % (${missingTotal})`,\n },\n {\n id: 1,\n percent: insufficientfillRate,\n color: '#C20808',\n label: `${insufficientfillRate} % (${insufficientTotal})`,\n },\n {\n id: 2,\n percent: sufficientfillRate,\n color: '#4ABEFF',\n label: `${sufficientfillRate} % (${sufficientTotal})`,\n },\n ];\n return slices;\n }\n protected readonly DateTime = DateTime;\n}\n","<mat-card appearance=\"raised\">\n <mat-card-header>\n <mat-card-title>\n Qualitätsmetrik: Metadatenvollständigkeit von Quellen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n </mat-card-header>\n <mat-card-content>\n <lib-qm-filter\n *ngFor=\"let filter of categoryControls.controls | keyvalue; trackBy: filterIdent\"\n [options]=\"categoryFilterValues.get(filter.key)\"\n [inputFormControl]=\"filter.value\"\n [label] = \"'filter.' + filter.key | translate\"></lib-qm-filter>\n </mat-card-content>\n <mat-card-actions align=\"end\">\n <mat-slide-toggle [disabled]=\"isLoading()\" labelPosition=\"before\" [formControl]=\"onlySourcesWithMaterial\" id=\"onlySourcesWithMaterial\" >\n show only sources with material\n </mat-slide-toggle>\n <mat-slide-toggle [disabled]=\"isLoading()\" labelPosition=\"before\" [formControl]=\"showHistoricalData\" id=\"showHistoricalData\" >\n show historical data\n </mat-slide-toggle>\n <button\n mat-icon-button\n color=\"primary\"\n [disabled]=\"isLoading\"\n (click)=\"refresh()\"\n matTooltip=\"Aktualisiere den IST-Stand\"\n matTooltipShowDelay=\"500\"\n >\n <mat-icon>refresh</mat-icon>\n </button>\n </mat-card-actions>\n</mat-card>\n<lib-datepicker *ngIf=\"showHistoricalData.value\" [disabled]=\"isLoading()\" [inputGroup]=\"range\" ></lib-datepicker>\n\n\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"recentQualityMatrix$.value.rows\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"row-header\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Issue Type</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"row-header {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n {{\"quality_matrix.\" + row.meta.label | translate }}\n </td>\n </ng-container>\n <!-- one column for the source -->\n <ng-container *ngFor=\"let col of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_source'\">\n <th [attr.colspan]=\"showHistoricalData.value?2:1\" mat-header-cell *matHeaderCellDef matTooltip=\"{{col.altLabel}}\" >{{col.label}}</th>\n </ng-container>\n <!-- /source -->\n <!-- current Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"column.id + '_current'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"{{column.altLabel}}\" >{{ range.controls.end.value?.toLocaleString(DateTime.DATE_SHORT) }} <br>({{column.total}})</th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">\n <a *ngIf=\"column.total > 0 else emptyDiv\" class=\"chart-container\" (click)=\"openEditLink( column.label, row.meta.label)\">\n <div >\n <app-donut-chart [data]=\"getDonutSlices(row, column)\" [borderSize]=\"25\"></app-donut-chart>\n </div>\n </a>\n <ng-template #emptyDiv>\n <div>-</div>\n </ng-template>\n </td>\n </ng-container>\n <!-- /current Data Columns -->\n <!-- past Data Columns -->\n <ng-container *ngIf=\"showHistoricalData.value\">\n <ng-container *ngFor=\"let column of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"column.id + '_past'\">\n <th class=\"historic-data-cell\" mat-header-cell\n *matHeaderCellDef>{{ range.controls.start.value?.toLocaleString(DateTime.DATE_SHORT) }}\n <br>{{ getPastColumn(column.id)?.total }}\n </th>\n <td class=\"historic-data-cell\" mat-cell *matCellDef=\"let row\">\n <ng-container *ngIf=\"getTrend(row, column) as trend\">\n <span [ngClass]=\"trend.trend\">\n <mat-icon aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" />\n {{ trend.delta }}\n </span>\n </ng-container>\n\n </td>\n </ng-container>\n </ng-container>\n <!-- /past Data Columns -->\n\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['row-header'].concat( sourceColumns); sticky: true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"allDataColumns; sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['row-header'].concat(allDataColumns)\"></tr>\n </table>\n</mat-card>\n","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};\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 { TreeSearchCountsComponent } from './tree-search-counts/tree-search-counts.component';\nimport { TreeCollectionDetailsComponent } from './tree-collection-details/tree-collection-details.component';\nimport { WrapObservablePipe } from './wrap-observable.pipe';\nimport { EnvHelperService, NgMetaWidgetsLibConfiguration } from './env-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';\n\n@NgModule({\n declarations: [\n TreeSearchCountsComponent,\n TreeCollectionDetailsComponent,\n WrapObservablePipe,\n QualityMatrixComponent,\n DonutChartComponent,\n DonutChartPipe,\n ],\n exports: [TreeCollectionDetailsComponent, TreeSearchCountsComponent],\n imports: [\n BrowserModule,\n JavaApiModule.forRoot(() => new JavaConfig()),\n MatCardModule,\n MatTreeModule,\n BrowserAnimationsModule,\n MatIconModule,\n MatSliderModule,\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 ],\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 EnvHelperService,\n { provide: 'config', 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, LOCALE_ID, OnDestroy } 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 } 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: 'lib-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 ],\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 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\n constructor() {}\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 ngOnDestroy(): void {\n //defer this to avoid an ExpressionChangedAfterItHasBeenCheckedError on the parent component\n Promise.resolve().then(() => this.inputGroup.reset());\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<ng-container [formGroup]=\"inputGroup\" >\n <mat-form-field>\n <mat-label>Zeitpunkt 1</mat-label>\n <input matInput\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker1\" formControlName=\"start\"\n placeholder=\"Starts date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker1\"></mat-datepicker-toggle>\n <mat-datepicker\n #picker1\n [startAt]=\"inputGroup.controls.start.defaultValue\"\n [startView]=\"startView\"\n (monthSelected)=\"setStart($event, picker1)\"\n\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /start date -->\n <!-- end date -->\n <mat-form-field>\n <mat-label>Zeitpunkt2</mat-label>\n <input matInput\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker2\"\n formControlName=\"end\"\n placeholder=\"End date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker\n #picker2\n [startAt]=\"inputGroup.controls.end.value\"\n [startView]=\"startView\"\n (monthSelected)=\"setEnd($event, picker2)\"\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /end date -->\n</ng-container>\n<!--\n </mat-card-content>\n</mat-card>\n-->","import { Component, DestroyRef, 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, ReactiveFormsModule } from '@angular/forms';\n\nimport { MonthpickerComponent } from './monthpicker/monthpicker.component';\nimport { Count } from '../java-api';\nimport { MetaApiService } from '../meta-api.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { AsyncPipe, NgClass } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged, finalize, take } from 'rxjs/operators';\nimport { MaterialCountFilter } from '../java-api';\n\n@Component({\n selector: 'lib-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 NgClass,\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 constructor(private readonly metaApi: MetaApiService, private readonly destroyRef: DestroyRef) {}\n\n ngOnInit(): void {\n this.registerDateRangeFilter();\n }\n\n registerDateRangeFilter() {\n this.range.valueChanges\n .pipe(\n takeUntilDestroyed(this.destroyRef),\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 )\n .subscribe(() => {\n this.loadData();\n });\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(): void {\n this.isLoading.set(true);\n\n const request: MaterialCountFilter = {\n startDate: this.range.value.start?.toISO()!,\n endDate: this.range.value.end?.toISO()!,\n granularity: this.granularity.value,\n };\n\n this.metaApi\n .getEditorialMaterialCounts(request)\n .pipe(\n take(1),\n finalize(() => this.isLoading.set(false))\n )\n .subscribe((response) => {\n const datapoints = 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 this.datapoints$.next(datapoints);\n });\n }\n}\n","<mat-card appearance=\"outlined\">\n <mat-card-header>\n <mat-card-title>\n collection-count-history{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <mat-card-content>\n\n <lib-monthpicker\n [inputGroup]=\"range\"></lib-monthpicker>\n\n <div [ngClass]=\"{'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>","import { Component, OnDestroy, OnInit, signal } from '@angular/core';\nimport {\n MatCard,\n MatCardActions,\n MatCardContent,\n MatCardHeader,\n MatCardModule,\n MatCardTitle,\n} from '@angular/material/card';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, MatTable, MatTableModule } from '@angular/material/table';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NgClass, NgForOf, NgIf } from '@angular/common';\nimport { MetaApiService } from '../meta-api.service';\nimport { Filter, MatrixRowWithCounts, MatrixWithCounts, QualityMatrixHeader } from '../java-api';\nimport { DateTime } from 'luxon';\nimport { finalize, takeUntil, tap } from 'rxjs/operators';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { DatepickerComponent } from '../components/filter/datepicker/datepicker.component';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: 'lib-content-type-count',\n standalone: true,\n imports: [\n MatCardModule,\n MatCard,\n MatCardHeader,\n MatCardTitle,\n MatCardContent,\n MatCardActions,\n MatTooltip,\n MatTableModule,\n MatTable,\n TranslateModule,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef,\n NgForOf,\n DatepickerComponent,\n NgClass,\n MatIcon,\n NgIf,\n ],\n //changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './materialtypes-by-sources.component.html',\n styleUrl: './materialtypes-by-sources.component.scss',\n})\nexport class MaterialtypesBySourcesComponent implements OnInit, OnDestroy {\n protected readonly isLoading = signal(true);\n protected readonly timeFilterLoaded = signal(false);\n private readonly destroyed$ = new Subject<void>();\n protected readonly recentTypeCount$ = new BehaviorSubject<MatrixWithCounts>({ columns: [], rows: [] });\n protected readonly pastTypeCount$ = new BehaviorSubject<MatrixWithCounts>({ columns: [], rows: [] });\n private columns: QualityMatrixHeader[] = [];\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 constructor(private readonly metaApi: MetaApiService) {}\n columnIdent(_index: number, col: QualityMatrixHeader) {\n return col.id;\n }\n\n get typeColumns(): string[] {\n return this.columns.map((c) => c.id + '_type');\n }\n\n get recentColumns(): string[] {\n return this.columns.map((c) => c.id + '_recent');\n }\n\n get pastColumns(): string[] {\n return this.columns.map((c) => c.id + '_past');\n }\n\n get allColumns(): string[] {\n //return this.recentColumns;\n return this.pastColumns.flatMap((e, i) => [e, this.recentColumns[i]]);\n }\n\n protected pastTypeCount(row: MatrixRowWithCounts, columnid: string) {\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 private registerDateRangeFilter() {\n /* we cannot use the takeUntilDestroyed() helper here,\n * because this method is indirectly called in the finalization of the getTimerangeFilter() call\n */\n this.range.controls.end.valueChanges.pipe(takeUntil(this.destroyed$)).subscribe((date) => {\n this.getCountByDate(date).subscribe((response) => {\n this.recentTypeCount$.next(response);\n });\n });\n this.range.controls.start.valueChanges.pipe(takeUntil(this.destroyed$)).subscribe((date) => {\n this.getCountByDate(date).subscribe((response) => {\n this.pastTypeCount$.next(response);\n });\n });\n }\n\n private getTimeRangeFilter() {\n return this.metaApi\n .getTimerangeFilter()\n .pipe(\n finalize(() => {\n this.timeFilterLoaded.set(true);\n this.registerDateRangeFilter();\n })\n )\n .subscribe((rangeFilter) => {\n if (rangeFilter) {\n const startDate = DateTime.fromISO(rangeFilter.values.find((v) => v.id === 'rangeStart')?.label!, {\n zone: 'utc',\n }).startOf('day');\n this.range.setControl('start', new FormControl<DateTime>(startDate, { nonNullable: true }));\n }\n });\n }\n\n private getCountByDate(date: DateTime) {\n this.isLoading.set(true);\n const filter: Filter = {\n field: 'asOf',\n values: [{ id: date.toISO({ includeOffset: false })!, label: '' }],\n };\n return this.metaApi\n .getMaterialTypeCountsByReplicationSource([filter])\n .pipe(finalize(() => this.isLoading.set(false)));\n }\n\n ngOnInit(): void {\n this.getTimeRangeFilter();\n this.getCountByDate(this.range.controls.end.value)\n .pipe(\n tap((response) => {\n this.columns = response.columns.slice();\n })\n )\n .subscribe((response) => {\n this.recentTypeCount$.next(response);\n });\n }\n\n protected readonly DateTime = DateTime;\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n}\n","<mat-card appearance=\"raised\">\n <mat-card-header>\n <mat-card-title>\n Qualitätsmetrik: Inhaltsarten von Quellen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content *ngIf=\"timeFilterLoaded()\">\n <lib-datepicker [disabled]=\"isLoading()\" [inputGroup]=\"range\" ></lib-datepicker>\n </mat-card-content>\n <mat-card-actions align=\"end\">and some knops</mat-card-actions>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"recentTypeCount$.value.rows\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Quelle</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"label-col\"\n >\n {{row.meta.label}}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of recentTypeCount$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_type'\">\n <th colspan=\"2\" mat-header-cell *matHeaderCellDef matTooltip=\"{{col.label}}\" >{{col.label}}</th>\n </ng-container>\n <!-- one column for each type for the most current date-->\n <ng-container *ngFor=\"let col of recentTypeCount$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\" >{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}</th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">{{ row.counts[col.id] ?? 'n/a' }}</td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of recentTypeCount$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\" >\n {{ pastTypeCount$.value.rows.length ? range.controls.start.value.toLocaleString(DateTime.DATE_SHORT) : 'no past data' }}\n </th>\n <td class=\"past-data-cell\" mat-cell *matCellDef=\"let row;\">\n <ng-container *ngIf=\"pastTypeCount$.value.rows.length && pastTypeCount(row, col.id) as trend\">\n <span [ngClass]=\"trend.trend\"> {{ trend.value ?? 'n/a' }}<mat-icon aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" /></span>\n <span class=\"cdk-visually-hidden\">{{trend.trend}}</span>\n </ng-container>\n </td>\n </ng-container>\n <!-- generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat(typeColumns); sticky:true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"allColumns; sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(allColumns)\"></tr>\n\n </table>\n</mat-card>.","import { Component, OnDestroy, 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, Subject } from 'rxjs';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AsyncPipe, NgClass, NgForOf, NgIf } from '@angular/common';\nimport { MetaApiService } from '../meta-api.service';\nimport { Filter, MatrixRowWithCounts, MatrixWithCounts, QualityMatrixHeader } from '../java-api';\nimport { DateTime } from 'luxon';\nimport { finalize, take, takeUntil, tap } from 'rxjs/operators';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { DatepickerComponent } from '../components/filter/datepicker/datepicker.component';\nimport { MatIcon } from '@angular/material/icon';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n selector: 'lib-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 NgClass,\n MatIcon,\n NgIf,\n AsyncPipe,\n ],\n templateUrl: './counts-with-history.component.html',\n styleUrl: './counts-with-history.component.scss',\n})\nexport class CountsWithHistoryComponent implements OnInit, OnDestroy {\n protected readonly isLoading = signal(true);\n protected readonly timeFilterLoaded = signal(false);\n private readonly destroyed$ = new Subject<void>();\n protected readonly recentTypeCount$ = new BehaviorSubject<MatrixWithCounts>({ columns: [], rows: [] });\n protected readonly pastTypeCount$ = new BehaviorSubject<MatrixWithCounts>({ columns: [], rows: [] });\n protected readonly pageTitle = new BehaviorSubject<string | null>(null);\n private columns: QualityMatrixHeader[] = [];\n private apiMethod: keyof MetaApiService = 'getMaterialTypeCountsByReplicationSource';\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 protected columnTranslationkey: string | null = null;\n\n constructor(private readonly metaApi: MetaApiService, private readonly route: ActivatedRoute) {\n this.pageTitle.next('Hallo Welt');\n }\n columnIdent(_index: number, col: QualityMatrixHeader) {\n return col.id;\n }\n\n get typeColumns(): string[] {\n return this.columns.map((c) => c.id + '_type');\n }\n\n get recentColumns(): string[] {\n return this.columns.map((c) => c.id + '_recent');\n }\n\n get pastColumns(): string[] {\n return this.columns.map((c) => c.id + '_past');\n }\n\n get allColumns(): string[] {\n //return this.recentColumns;\n return this.pastColumns.flatMap((e, i) => [e, this.recentColumns[i]]);\n }\n private registerDateRangeFilter() {\n /* we cannot use the takeUntilDestroyed() helper here,\n * because this method is indirectly called in the finalization of the getTimerangeFilter() call\n */\n this.range.controls.end.valueChanges.pipe(takeUntil(this.destroyed$)).subscribe((date) => {\n this.getCountByDate(date).subscribe((response) => {\n this.recentTypeCount$.next(response);\n });\n });\n this.range.controls.start.valueChanges.pipe(takeUntil(this.destroyed$)).subscribe((date) => {\n this.getCountByDate(date).subscribe((response) => {\n this.pastTypeCount$.next(response);\n });\n });\n }\n\n private getTimeRangeFilter() {\n return this.metaApi\n .getTimerangeFilter()\n .pipe(\n finalize(() => {\n this.timeFilterLoaded.set(true);\n this.registerDateRangeFilter();\n this.range.controls.start.reset();\n })\n )\n .subscribe((rangeFilter) => {\n if (rangeFilter) {\n const startDate = DateTime.fromISO(rangeFilter.values.find((v) => v.id === 'rangeStart')?.label!, {\n zone: 'utc',\n }).startOf('day');\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>(startDate, { nonNullable: true }));\n }\n });\n }\n\n private getCountByDate(date: DateTime): Observable<MatrixWithCounts> {\n this.isLoading.set(true);\n const filter: Filter = {\n field: 'asOf',\n values: [{ id: date.toISO({ includeOffset: false })!, label: '' }],\n };\n // type of this.metaApi[this.apiMethod]([filter]) is Observable<MatrixWithCounts>\n // but typescript does not know that\n // @ts-ignore\n return this.metaApi[this.apiMethod]([filter]).pipe(finalize(() => this.isLoading.set(false)));\n }\n\n protected pastTypeCount(row: MatrixRowWithCounts, columnid: string) {\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 ngOnInit(): void {\n //this.registerDateRangeFilter();\n this.route.data.pipe(take(1)).subscribe(({ columnTranslationkey = null, title, apiMethod }) => {\n this.columnTranslationkey = columnTranslationkey;\n this.pageTitle.next(title);\n this.apiMethod = apiMethod;\n this.getTimeRangeFilter();\n this.getCountByDate(this.range.controls.end.value)\n .pipe(\n tap((response) => {\n this.columns = response.columns.slice();\n })\n )\n .subscribe((response) => {\n this.recentTypeCount$.next(response);\n });\n });\n }\n\n protected readonly DateTime = DateTime;\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n}\n","<mat-card appearance=\"raised\">\n <mat-card-header>\n <mat-card-title data-test-id=\"page-title\">\n Qualitätsmetrik: {{(pageTitle | async ) || '' | translate}}{{isLoading() ? \": Lade neue Daten.\" : \"\"}}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content *ngIf=\"timeFilterLoaded()\">\n <lib-datepicker [disabled]=\"isLoading()\" [inputGroup]=\"range\" ></lib-datepicker>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"recentTypeCount$.value.rows\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Quelle</th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"label-col\"\n >\n {{row.meta.label}}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of recentTypeCount$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_type'\">\n <th colspan=\"2\" mat-header-cell *matHeaderCellDef matTooltip=\"{{col.label}}\" >\n {{columnTranslationkey ? (columnTranslationkey + col.label | translate ) : col.label }}\n </th>\n </ng-container>\n <!-- one column for each type for the most current date-->\n <ng-container *ngFor=\"let col of recentTypeCount$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\" >{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}</th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">{{ row.counts[col.id] ?? 'n/a' }}</td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of recentTypeCount$.value.columns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\" >\n {{ pastTypeCount$.value.rows.length ? range.controls.start.value.toLocaleString(DateTime.DATE_SHORT) : 'no past data' }}\n </th>\n <td class=\"past-data-cell\" mat-cell *matCellDef=\"let row;\">\n <ng-container *ngIf=\"pastTypeCount$.value.rows.length && pastTypeCount(row, col.id) as trend\">\n <span [ngClass]=\"trend.trend\"> {{ trend.value ?? 'n/a' }}<mat-icon aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" /></span>\n <span class=\"cdk-visually-hidden\">{{trend.trend}}</span>\n </ng-container>\n </td>\n </ng-container>\n <!-- generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat(typeColumns); sticky:true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"allColumns; sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(allColumns)\"></tr>\n\n </table>\n</mat-card>","/*\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/env-helper.service';\nexport * from './lib/components/quality-matrix/quality_matrix';\nexport * from './lib/collection-count-history/collection-count-history.component';\nexport * from './lib/materialtypes-by-sources/materialtypes-by-sources.component';\nexport * from './lib/counts-with-history/counts-with-history.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.Configuration","i1.CollectionAPIService","i1.ReplicationSourceAPIService","i1.FilterAPIService","i1.EditorsAPIService","i4","i1.MetaApiService","i2.EnvHelperService","i3","i8","i10.QualityMatrixFilterComponent","i2","i3.EditorialLinkService","i5","i6","i9.QualityMatrixFilterComponent","datePickerFormats","i1","i2.DonutChartPipe","i2.EditorialLinkService","i7","i9","i10","i11.QualityMatrixFilterComponent","i12.DatepickerComponent","i13.DonutChartComponent","i14","JavaConfig","i1.SvgIconsService","i2.ApiModule","JavaApiModule"],"mappings":"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"}
|