{
"version": 3,
"sources": ["src/app/services/ergebnisseite/systematik.service.ts", "src/app/services/facetten/beginntermin.service.ts", "src/app/model/beginntermine.ts", "src/app/services/suche/ort.service.ts", "src/app/services/suche/bildungsziele.service.ts", "src/app/services/ergebnisseite/ladestatus.service.ts", "src/app/model/sortierung.ts", "src/app/services/ergebnisseite/sortierung.service.ts", "src/app/services/ergebnisseite/sprachfoerder-termin.service.ts", "src/app/model/berufsbereiche.ts", "src/app/services/facetten/berufsbereich.service.ts", "src/app/model/sprachniveaus.ts", "src/app/services/facetten/berufsfachsprachkurs.service.ts", "src/app/services/facetten/sprachniveau.service.ts", "src/app/services/facetten/anbieter.service.ts", "src/app/services/facetten/berufliche-integration.service.ts", "src/app/services/facetten/deutschniveau.service.ts", "src/app/services/facetten/azubi-eignung.service.ts", "src/app/services/facetten/berufstaetigen-eignung.service.ts", "src/app/services/facetten/zielgruppe.service.ts", "src/app/services/facetten/unterrichtsform.service.ts"],
"sourcesContent": ["import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport type Systematik = 'MQ' | 'MC' | 'A8';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SystematikService {\n systematik$ = new BehaviorSubject(undefined);\n\n public setSystematik(systematik: Systematik) {\n this.systematik$.next(systematik);\n }\n}\n", "import { Injectable, Provider } from '@angular/core';\nimport dayjs from 'dayjs';\nimport { orderedBeginntermine } from '../../model/beginntermine';\nimport { SprachfoerderTerminService } from '../ergebnisseite/sprachfoerder-termin.service';\nimport { UrlService } from '../url.service';\nimport { FacettenService } from './facetten.service';\nimport { FacettenUrlService } from './facetten.url.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BeginnterminUrlService extends FacettenUrlService {\n static URL_PARAM = 'beginntermin';\n constructor(urlService: UrlService) {\n super(urlService, BeginnterminUrlService.URL_PARAM, 'beginntermine');\n }\n}\n\nconst monthNames = [\n 'Januar',\n 'Februar',\n 'März',\n 'April',\n 'Mai',\n 'Juni',\n 'Juli',\n 'August',\n 'September',\n 'Oktober',\n 'November',\n 'Dezember'\n];\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BeginnterminService extends FacettenService {\n constructor(\n terminService: SprachfoerderTerminService,\n beginnterminUrlService: BeginnterminUrlService\n ) {\n // Berechnung des aktuellen Monats und der folgenden, um dynamische Anzeige zu ermöglichen\n const aktuellesDatum = dayjs();\n const naechsterMonat = aktuellesDatum.add(1, 'M').format('MMMM');\n const uebernaechsterMonat = aktuellesDatum.add(2, 'M').format('MMMM');\n const drittnaechsterMonat = aktuellesDatum.add(3, 'M').format('MMMM');\n const aktuelleBeginntermine = orderedBeginntermine.map(({ id, bezeichnung }) => {\n switch (id) {\n case '2':\n return { id, bezeichnung: naechsterMonat };\n case '3':\n return { id, bezeichnung: uebernaechsterMonat };\n case '4':\n return { id, bezeichnung: drittnaechsterMonat };\n default:\n return { id, bezeichnung };\n }\n });\n super(terminService, beginnterminUrlService, 'BEGINNTERMIN', aktuelleBeginntermine);\n }\n}\n\nexport function provideBeginnterminFacetten(): Provider[] {\n return [\n { provide: FacettenUrlService, multi: true, useExisting: BeginnterminUrlService },\n { provide: FacettenService, multi: true, useExisting: BeginnterminService },\n BeginnterminService\n ];\n}\n", "import { FacettenOptionInfo } from '../services/facetten/facetten-option-info';\n\nexport const orderedBeginntermine: FacettenOptionInfo[] = [\n { bezeichnung: 'regelmäßiger Start', id: '0' },\n { bezeichnung: 'diesen Monat', id: '1' },\n { bezeichnung: 'nächster Monat', id: '2' },\n { bezeichnung: 'übernächster Monat', id: '3' },\n { bezeichnung: 'drittnächster Monat', id: '4' },\n { bezeichnung: 'spätere Termine', id: '5' },\n { bezeichnung: 'frühere Termine', id: '6' }\n];\n", "import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\nimport { AppConfig } from '../../app.config';\nimport { EncodedOrt, Ort, decodeOrt, encodeOrt } from '../../model/ort';\nimport { checkParams, createValidUrlParameter, validiereSuchUmkreis } from '../../shared/utils';\nimport { UrlService } from '../url.service';\n\nexport enum OrtServiceParams {\n SUCHWORT = 'suchwort',\n SELEKTIERT = 'selektiert'\n}\nexport interface UmkreisParameter {\n orte: EncodedOrt[];\n uk: string;\n}\n@Injectable({\n providedIn: 'root'\n})\nexport class OrtService {\n private umkreisParameter: UmkreisParameter;\n\n constructor(\n private config: AppConfig,\n private http: HttpClient,\n private urlService: UrlService\n ) {\n combineLatest([this.orte$, this.umkreis$])\n .pipe(\n map(([orte, umkreis]) => ({\n orte: orte.map(encodeOrt),\n uk: umkreis\n }))\n )\n .subscribe((umkreisParameter) => (this.umkreisParameter = umkreisParameter));\n }\n\n umkreisParameter$: Observable = combineLatest([\n this.urlService.getQueryParameterValue(UrlService.ORTE),\n this.urlService.getQueryParameterValue(UrlService.UMKREIS)\n ]).pipe(\n map(([orte, umkreis]) => ({\n orte: orte ? orte.split(UrlService.VALUE_SEPARATOR).slice(0, 3) : [],\n uk: validiereSuchUmkreis(umkreis)\n }))\n );\n\n orte$: Observable = this.umkreisParameter$.pipe(\n map(({ orte }) => [...new Set(orte)]),\n switchMap((orteEncoded) => of(orteEncoded.map(decodeOrt)))\n );\n\n umkreis$ = this.umkreisParameter$.pipe(map(({ uk }) => uk));\n\n setzeUmkreis(umkreis: string, route?: string): void {\n this.urlService.updateUrl(\n {\n [UrlService.UMKREIS]: umkreis,\n [UrlService.AKTUELLE_SEITE]: 0\n },\n route\n );\n }\n\n getOrtBySuchwort(searchText: string): Observable> {\n return this.orte$.pipe(switchMap((orte) => this._getOrtBySuchwort(searchText, orte)));\n }\n\n resetOrte(route?: string): void {\n // mit path /suche, weil man beim Ändern des Ortes gleich Ergebnisse sehen soll.\n this.urlService.updateUrl(\n {\n [UrlService.ORTE]: null,\n [UrlService.UMKREIS]: null,\n [UrlService.AKTUELLE_SEITE]: 0\n },\n route\n );\n }\n\n // WBSUCHE-821 Die Suche nach einem Ort soll die Region zurücksetzen.\n setzeOrte(ort: EncodedOrt, route?: string): void {\n // mit path /suche, weil man beim Setzen des Ortes gleich Ergebnisse sehen soll.\n const orte = this.umkreisParameter.orte.concat(ort);\n const uk =\n this.umkreisParameter.orte.length === 0 && this.umkreisParameter.uk === 'Bundesweit'\n ? '10'\n : this.umkreisParameter.uk;\n this.urlService.updateUrl(\n {\n [UrlService.ORTE]: createValidUrlParameter(orte),\n [UrlService.UMKREIS]: uk,\n [UrlService.AKTUELLE_SEITE]: 0,\n [UrlService.REGION]: null\n },\n route\n );\n }\n\n // Beim Löschen der Orte werden alle Facetten-Filter beibehalten.\n loescheOrte(ort: EncodedOrt, route?: string): void {\n // mit path /suche, weil man beim Ändern des Ortes gleich Ergebnisse sehen soll.\n const orte = this.umkreisParameter.orte.filter((o) => o !== ort);\n this.urlService.updateUrl(\n {\n [UrlService.ORTE]: createValidUrlParameter(orte),\n [UrlService.UMKREIS]: orte.length > 0 ? this.umkreisParameter.uk : null,\n [UrlService.AKTUELLE_SEITE]: 0\n },\n route\n );\n }\n\n private _getOrtBySuchwort(suchString: string, orte: Ort[]): Observable> {\n let urlParams = new HttpParams();\n const selektierteOrte = orte\n .map((ort) => {\n const ortString = ort.postleitzahl ? String(ort.postleitzahl) : ort.name.toLowerCase();\n return encodeURIComponent(ortString);\n })\n .join(UrlService.VALUE_SEPARATOR);\n if (suchString) {\n urlParams = urlParams\n .set(OrtServiceParams.SUCHWORT, suchString)\n .set(OrtServiceParams.SELEKTIERT, selektierteOrte);\n }\n return this.getOrteBy(urlParams);\n }\n\n private getOrteBy(urlParams: HttpParams): Observable> {\n return this.http\n .get>(`${this.config.backendHost}/pc/v1/orte`, {\n params: checkParams(urlParams),\n responseType: 'json'\n })\n .pipe(\n catchError((error) => {\n throw new Error(error);\n })\n );\n }\n}\n", "import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, combineLatest } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { AppConfig } from '../../app.config';\nimport { Bildungsziel } from '../../model/bildungsziel';\nimport { checkParams } from '../../shared/utils';\nimport { Systematik, SystematikService } from '../ergebnisseite/systematik.service';\nimport { UrlService } from '../url.service';\nimport { OrtService, UmkreisParameter } from './ort.service';\n\nexport enum BildungszielServiceParams {\n SUCHWORT = 'suchwort',\n SELEKTIERTE_SUCHWORTE = 'selektierteSuchworte',\n SYSTEMATIK = 'systematik',\n UMKREIS = 'umkreis',\n ORTE = 'orte'\n}\n\n@Injectable({\n providedIn: 'root'\n})\n/**\n * Dieser Service ruft die Vorschläge fürs Autosuggest ab\n * und verwaltet die ausgewählten Suchworte.\n *\n * Vorlage: WBSUCHE\n */\nexport class BildungszieleService {\n private suchworte: string[];\n\n constructor(\n private config: AppConfig,\n private httpClient: HttpClient,\n private urlService: UrlService,\n private systematikService: SystematikService,\n private ortService: OrtService\n ) {\n this.suchworte$.subscribe((suchworte) => {\n this.suchworte = suchworte;\n });\n }\n\n public suchworteEncoded$: Observable = this.urlService.getQueryParameterValues(\n UrlService.SUCHWORTE\n );\n\n public suchworte$: Observable = this.suchworteEncoded$.pipe(\n map((suchworte) => suchworte.map(decodeURIComponent))\n );\n\n public async addSuchwort(suchwort: string) {\n const suchworteSet = new Set(this.suchworte);\n suchworteSet.add(suchwort);\n await this.setzeSuchworte(Array.from(suchworteSet));\n }\n\n public async removeSuchwort(suchwort: string) {\n const suchworteSet = new Set(this.suchworte);\n suchworteSet.delete(suchwort);\n await this.setzeSuchworte(Array.from(suchworteSet));\n }\n\n public async resetSuchworte() {\n await this.setzeSuchworte([]);\n }\n\n private async setzeSuchworte(suchworte: string[]): Promise {\n await this.urlService.updateView({\n [UrlService.SUCHWORTE]: UrlService.createValidUrlParameter(suchworte.map(encodeURIComponent)),\n [UrlService.AKTUELLE_SEITE]: 0\n });\n }\n\n public loadBildungsziele(suchwort: string): Observable> {\n return combineLatest([\n this.suchworteEncoded$,\n this.systematikService.systematik$,\n this.ortService.umkreisParameter$\n ]).pipe(\n map(([params, systematik, umkreisParameter]) =>\n BildungszieleService.buildParams(suchwort, systematik, umkreisParameter, params)\n ),\n switchMap((params) => this.getBildungszieleFor(params))\n );\n }\n\n private static buildParams(\n suchwort: string,\n systematik: Systematik,\n umkreisParameter: UmkreisParameter,\n suchworte: string[]\n ): HttpParams {\n return new HttpParams()\n .set(BildungszielServiceParams.SUCHWORT, suchwort)\n .set(BildungszielServiceParams.SYSTEMATIK, systematik)\n .set(BildungszielServiceParams.UMKREIS, umkreisParameter.uk)\n .set(BildungszielServiceParams.ORTE, umkreisParameter.orte.join(UrlService.VALUE_SEPARATOR))\n .set(\n BildungszielServiceParams.SELEKTIERTE_SUCHWORTE,\n suchworte.join(UrlService.VALUE_SEPARATOR)\n );\n }\n\n private getBildungszieleFor(params: HttpParams): Observable {\n return this.httpClient.get>(\n `${this.config.backendHost}/pc/v1/sprachfoerdervorschlag`,\n {\n params: checkParams(params),\n responseType: 'json'\n }\n );\n }\n}\n", "import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LadestatusService {\n private loadingState$ = new BehaviorSubject(true);\n\n public ladeStatus$: Observable = this.loadingState$.pipe(distinctUntilChanged());\n\n public setLadeStatus(status: boolean) {\n this.loadingState$.next(status);\n }\n}\n", "export type Sortierung = 'basc' | 'easc';\nexport const sortierungsMoeglichkeiten: { value: Sortierung; name: string }[] = [\n {\n value: 'basc',\n name: 'Beginntermin - frühester'\n },\n {\n value: 'easc',\n name: 'Entfernung - geringste'\n }\n];\n", "import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { defaultIfEmpty, map } from 'rxjs/operators';\nimport { Sortierung, sortierungsMoeglichkeiten } from '../../model/sortierung';\nimport { UrlService } from '../url.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SortierungService {\n private static readonly URL_PARAM: string = 'sort';\n\n constructor(private urlService: UrlService) {}\n\n public sortierung$: Observable = this.urlService\n .getQueryParameterValue(SortierungService.URL_PARAM)\n .pipe(\n map(\n (sort) =>\n sortierungsMoeglichkeiten.find(({ value }) => value == sort)?.value || this.defaultSort()\n ),\n defaultIfEmpty(this.defaultSort())\n );\n\n public async setSortierung(sort: Sortierung): Promise {\n await this.urlService.updateView({\n [SortierungService.URL_PARAM]: sort.toLocaleLowerCase()\n });\n }\n\n private defaultSort(): Sortierung {\n return 'basc';\n }\n}\n", "import { HttpClient, HttpContext, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { LoggingService } from '@infosysbub/ng-lib-dpl3';\nimport { EMPTY, Observable, combineLatest } from 'rxjs';\nimport {\n catchError,\n defaultIfEmpty,\n distinctUntilChanged,\n map,\n pluck,\n shareReplay,\n switchMap,\n tap\n} from 'rxjs/operators';\nimport { SHOW_MODAL_ON_ERROR } from 'src/app/shared/utils/interceptor-tokent';\nimport { AppConfig } from '../../app.config';\nimport { Aggregations } from '../../model/aggregations';\nimport { Sortierung } from '../../model/sortierung';\nimport { SprachfoerderTermin } from '../../model/sprachfoerderTermin';\nimport { SprachfoerderTerminRest } from '../../model/sprachfoerderTermin-rest';\nimport { checkParams } from '../../shared/utils';\nimport { CombinedFacettenUrlService } from '../facetten/combined-facetten.services';\nimport { BildungszielServiceParams, BildungszieleService } from '../suche/bildungsziele.service';\nimport { OrtService, UmkreisParameter } from '../suche/ort.service';\nimport { UrlService } from '../url.service';\nimport { LadestatusService } from './ladestatus.service';\nimport { SortierungService } from './sortierung.service';\nimport { SystematikService } from './systematik.service';\n\n/**\n * Objekt zum Übergeben der gesetzten Filter und Suchparameter an den Service\n */\nexport interface SprachfoerderTerminFilterkategorien {\n suchworte: string[];\n seite?: number;\n systematik?: string;\n umkreisParameter: UmkreisParameter;\n sortierung: Sortierung;\n}\n\n/**\n * Repräsentation der Params zum Aufruf des Backends der Sprachfördertermine\n */\nexport enum SprachfoerderTerminServiceParams {\n ORTE = 'orte',\n SUCHWORTE = 'suchworte',\n SEITE = 'page',\n SYSTEMATIKEN = 'systematiken',\n SORTIERUNG = 'sort'\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SprachfoerderTerminService {\n constructor(\n private config: AppConfig,\n private httpClient: HttpClient,\n private urlService: UrlService,\n private bildungszieleService: BildungszieleService,\n private systematikService: SystematikService,\n private ortService: OrtService,\n private ladestatusService: LadestatusService,\n private combinedFacettenUrlService: CombinedFacettenUrlService,\n private sortierungService: SortierungService,\n private logger: LoggingService\n ) {}\n\n aktuelleSeite$: Observable = this.urlService\n .getQueryParameterValue(UrlService.AKTUELLE_SEITE)\n .pipe(\n distinctUntilChanged(),\n map((seitenParam) => {\n const pageCandidate = parseInt(seitenParam);\n return isNaN(pageCandidate) ? 0 : pageCandidate;\n }),\n shareReplay(1)\n );\n\n /**\n * Sollte nur in anderen Services verwendet werden.\n */\n public sprachfoerderTerminRest$: Observable = this.aktuelleSeite$.pipe(\n switchMap((seite) => this.sprachfoerderTerminRestByPage$(seite)),\n shareReplay(1)\n );\n\n private preparedRequest$ = (seite: number): Observable =>\n combineLatest([\n this.bildungszieleService.suchworteEncoded$,\n this.systematikService.systematik$,\n this.ortService.umkreisParameter$,\n this.combinedFacettenUrlService.combinedFacetteParameters$,\n this.sortierungService.sortierung$\n ]).pipe(\n tap(() => this.ladestatusService.setLadeStatus(true)),\n map(([suchworte, systematik, umkreisParameter, facetteOptions, sortierung]) => {\n let httpParams = SprachfoerderTerminService.buildParams({\n suchworte,\n seite,\n systematik,\n umkreisParameter,\n sortierung\n });\n httpParams = facetteOptions\n .filter(({ ids }) => ids.length > 0)\n .reduce(\n (httpParams, { param, ids }) =>\n httpParams.set(param, ids.join(UrlService.VALUE_SEPARATOR)),\n httpParams\n );\n return httpParams;\n })\n );\n\n public sprachfoerderTerminRestByPage$ = (seite: number) =>\n this.preparedRequest$(seite).pipe(\n switchMap((httpParams) =>\n this.getSprachfoerderTermineFor(httpParams).pipe(\n tap(() => this.ladestatusService.setLadeStatus(false))\n )\n )\n );\n\n public sprachfoerderTerminByPage$: (seite: number) => Observable = (\n seite: number\n ) =>\n this.sprachfoerderTerminRestByPage$(seite).pipe(\n pluck('_embedded', 'termine'),\n defaultIfEmpty([]),\n shareReplay(1)\n );\n\n public sprachfoerderTerminSeite$: Observable =\n this.sprachfoerderTerminRest$.pipe(pluck('_embedded', 'termine'), defaultIfEmpty([]));\n\n public facettes$: Observable = this.preparedRequest$(1).pipe(\n switchMap((httpParams) =>\n this.getFacettesFor(httpParams).pipe(tap(() => this.ladestatusService.setLadeStatus(false)))\n ),\n shareReplay(1)\n );\n\n private static buildParams(params: SprachfoerderTerminFilterkategorien): HttpParams {\n return new HttpParams()\n .set(\n SprachfoerderTerminServiceParams.SUCHWORTE,\n params.suchworte?.join(UrlService.VALUE_SEPARATOR)\n )\n .set(SprachfoerderTerminServiceParams.SYSTEMATIKEN, params.systematik)\n .set(SprachfoerderTerminServiceParams.SEITE, params.seite ?? 0)\n .set(BildungszielServiceParams.UMKREIS, params.umkreisParameter.uk)\n .set(\n BildungszielServiceParams.ORTE,\n params.umkreisParameter.orte.join(UrlService.VALUE_SEPARATOR)\n )\n .set(SprachfoerderTerminServiceParams.SORTIERUNG, params.sortierung);\n }\n\n private getSprachfoerderTermineFor(params: HttpParams): Observable {\n return this.httpClient\n .get(`${this.config.backendHost}/pc/v1/bildungsangebot`, {\n params: checkParams(params),\n responseType: 'json',\n context: new HttpContext().set(SHOW_MODAL_ON_ERROR, true)\n })\n .pipe(\n catchError((error) => {\n this.logger.error('Fehler beim laden der Bildungsangebote', error);\n return EMPTY;\n })\n );\n }\n\n private getFacettesFor(params: HttpParams): Observable {\n return this.httpClient\n .get(`${this.config.backendHost}/pc/v1/facetten`, {\n params: checkParams(params),\n responseType: 'json',\n context: new HttpContext().set(SHOW_MODAL_ON_ERROR, true)\n })\n .pipe(\n catchError((error) => {\n this.logger.error('Fehler beim laden der Facetten', error);\n return EMPTY;\n })\n );\n }\n}\n", "import { FacettenOptionInfo } from '../services/facetten/facetten-option-info';\n\nexport const orderedBerufsbereiche: FacettenOptionInfo[] = [\n { bezeichnung: 'Büro-Kaufmännisch', id: 'MQ 04' },\n { bezeichnung: 'Gesundheit-Erziehung-Soziales', id: 'MQ 06' },\n { bezeichnung: 'Gesundheit-Erziehung-Soziales', id: 'MQ 07' },\n { bezeichnung: 'Gesundheit-Erziehung-Soziales', id: 'MQ 08' },\n { bezeichnung: 'Gesundheit-Erziehung-Soziales', id: 'MQ 09' },\n { bezeichnung: 'Gesundheit-Erziehung-Soziales', id: 'MQ 10' },\n { bezeichnung: 'Verkauf-Handel', id: 'MQ 05' },\n { bezeichnung: 'Handwerk-Technik-Ingenieure', id: 'MQ 11' },\n { bezeichnung: 'Handwerk-Technik-Ingenieure', id: 'MQ 12' },\n { bezeichnung: 'IT-Berufe-Naturwissenschaften', id: 'MQ 13' },\n { bezeichnung: 'IT-Berufe-Naturwissenschaften', id: 'MQ 14' },\n { bezeichnung: 'Rechts-Wirtschaftswissenschaft', id: 'MQ 15' },\n { bezeichnung: 'Andere Berufsbereiche', id: 'MQ 01' },\n { bezeichnung: 'Andere Berufsbereiche', id: 'MQ 02' },\n { bezeichnung: 'Andere Berufsbereiche', id: 'MQ 03' }\n];\n\nexport const orderedGroupedBerufsbereiche = [\n { bezeichnung: 'Büro-Kaufmännisch', ids: ['MQ 04'] },\n {\n bezeichnung: 'Gesundheit-Erziehung-Soziales',\n ids: ['MQ 06', 'MQ 07', 'MQ 08', 'MQ 09', 'MQ 10']\n },\n { bezeichnung: 'Verkauf-Handel', ids: ['MQ 05'] },\n { bezeichnung: 'Handwerk-Technik-Ingenieure', ids: ['MQ 11', 'MQ 12'] },\n { bezeichnung: 'IT-Berufe-Naturwissenschaften', ids: ['MQ 13', 'MQ 14'] },\n { bezeichnung: 'Rechts-Wirtschaftswissenschaft', ids: ['MQ 15'] },\n { bezeichnung: 'Andere Berufsbereiche', ids: ['MQ 01', 'MQ 02', 'MQ 03'] }\n];\n", "import { Injectable, Provider } from '@angular/core';\nimport { FilterSelectItem } from '@infosysbub/ng-lib-dpl3';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { FacetteOption } from '../../model/aggregations';\nimport { orderedBerufsbereiche, orderedGroupedBerufsbereiche } from '../../model/berufsbereiche';\nimport { SprachfoerderTerminService } from '../ergebnisseite/sprachfoerder-termin.service';\nimport { UrlService } from '../url.service';\nimport { FacettenService } from './facetten.service';\nimport { FacettenUrlService } from './facetten.url.service';\nimport { SystematikService } from '../ergebnisseite/systematik.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BerufsbereichUrlService extends FacettenUrlService {\n static URL_PARAM = 'berufsbereiche';\n constructor(urlService: UrlService) {\n super(urlService, BerufsbereichUrlService.URL_PARAM, 'berufsbereiche');\n }\n /**\n * Wechselt den Zustand einer Optionen von selektierten auf nicht-selektierten und umgekehrt.\n *\n * @param facetteOptionIds IDs der Facetten-Option\n * @param wasSelected Ehemaliger Status der Selektion vor dem auslösenden Event\n */\n public async toggleMultiOptionsSelection(\n facetteOptionIds: string[],\n wasSelected: boolean\n ): Promise {\n let parameter;\n if (wasSelected) {\n parameter = this.selectedOptions$.value.filter((s) => !facetteOptionIds.includes(s));\n } else {\n parameter = this.selectedOptions$.value.concat(...facetteOptionIds);\n }\n await this.updateSelection(parameter);\n }\n}\n\n/**\n * In dieser Facette werden gruppierte! Facettenoptionen verwendet,\n * so dass bei deren Selektion und Faltung aufgepasst werden muss\n * vgl. berufliche-integration-service\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class BerufsbereichService extends FacettenService {\n private aggregationWithFixedCounts?: Observable;\n constructor(terminService: SprachfoerderTerminService, urlService: BerufsbereichUrlService) {\n super(terminService, urlService, 'BERUFSBEREICH', orderedBerufsbereiche);\n //Erklärung siehe BerufsbereichsFacettenHandler\n this.aggregationWithFixedCounts = terminService.facettes$.pipe(\n map((aggregations) => aggregations['BERUFSBEREICH_FIX'])\n );\n }\n\n /**\n * Gibt selektierte Filter-Einträge zurück,\n * dabei ist zu beachten, dass sie in dieser Facette gruppiert und damit zusammengefaltet sind\n */\n public override getSelectItems$(): Observable {\n const selecteditems = combineLatest([\n super.getSelectItems$() ?? of([]),\n this.aggregationWithFixedCounts ?? of([])\n ]).pipe(\n map(([items, fix]) => {\n return orderedGroupedBerufsbereiche.map(\n ({ ids: groupids, bezeichnung: groupbezeichnung }) => {\n // fuer alle items, deren key in den gruppierten Keys ist\n const berufsbereicheGroup: any = items.filter(({ key }) => groupids.includes(key));\n // summiere die treffer (accumulator)\n const anzahl = fix.find ? fix.find(({ id }) => id == groupids.join(','))?.anzahl : 0;\n // selektiert, wenn ein gruppenmitglied selektiert\n let selected = berufsbereicheGroup.reduce((acc, item) => acc || item.selected, false);\n\n // Zusammenfaltung / Abbildung der Berufsbereiche-Gruppe auf EIN SelectItem\n const foldedSelectItem = {\n key: groupids.join(','),\n ariaLabel: groupbezeichnung,\n treffer: anzahl,\n label: groupbezeichnung,\n selected: selected,\n active: anzahl > 0\n };\n return foldedSelectItem;\n }\n );\n })\n );\n return selecteditems;\n }\n\n public override getNumberSelected$(): Observable {\n return this.getSelectItems$().pipe(\n map((items) => items.filter(({ selected, active }) => selected && active).length)\n );\n }\n}\n\nexport function provideBerufsbereichFacette(): Provider[] {\n return [\n BerufsbereichService,\n { provide: FacettenUrlService, multi: true, useExisting: BerufsbereichUrlService },\n { provide: FacettenService, multi: true, useExisting: BerufsbereichService },\n SystematikService\n ];\n}\n", "import { FacettenOptionInfo } from '../services/facetten/facetten-option-info';\n\n// Die Icons der Sprachniveaus sollen nur auf der Detailseite angezeigt werden\nexport const orderedSprachniveaus: FacettenOptionInfo[] = [\n {\n bezeichnung: 'Berufssprachkurs mit Ziel A2',\n id: 'MC 01 1',\n icon: 'spraf-icon-berufssprachkurs-a2',\n zeigeIconNurAufDetailseite: true\n },\n {\n bezeichnung: 'Berufssprachkurs mit Ziel B1',\n id: 'MC 01 2',\n icon: 'spraf-icon-berufssprachkurs-b1',\n zeigeIconNurAufDetailseite: true\n },\n {\n bezeichnung: 'Berufssprachkurs mit Ziel B2',\n id: 'MC 01 3',\n icon: 'spraf-icon-berufssprachkurs-b2',\n zeigeIconNurAufDetailseite: true\n },\n {\n bezeichnung: 'Berufssprachkurs mit Ziel C1',\n id: 'MC 01 4',\n icon: 'spraf-icon-berufssprachkurs-c1',\n zeigeIconNurAufDetailseite: true\n },\n {\n bezeichnung: 'Berufssprachkurs mit Ziel C2',\n id: 'MC 01 5',\n icon: 'spraf-icon-berufssprachkurs-c2',\n zeigeIconNurAufDetailseite: true\n },\n {\n bezeichnung: 'Spezialberufskurs',\n id: 'MC 02',\n icon: 'spraf-icon-berufsfachsprachkurs',\n zeigeIconNurAufDetailseite: true\n },\n {\n bezeichnung: 'Berufsanerkennung',\n id: 'MC 03',\n icon: 'spraf-icon-berufsfachsprachkurs',\n zeigeIconNurAufDetailseite: true\n }\n];\n", "import { Injectable, Provider } from '@angular/core';\nimport { SprachfoerderTerminService } from '../ergebnisseite/sprachfoerder-termin.service';\nimport { UrlService } from '../url.service';\nimport { FacettenOptionInfo } from './facetten-option-info';\nimport { FacettenService } from './facetten.service';\nimport { FacettenUrlService } from './facetten.url.service';\n\n// Die Icons der Berufsfachsprachkurse sollen nur auf der Detailseite angezeigt werden\nexport const orderedBerufsfachsprachkurse: FacettenOptionInfo[] = [\n {\n bezeichnung: 'Spezialberufskurs',\n id: 'MC 02',\n icon: 'spraf-icon-berufsfachsprachkurs',\n zeigeIconNurAufDetailseite: true\n },\n {\n bezeichnung: 'Berufsanerkennung',\n id: 'MC 03',\n icon: 'spraf-icon-berufsfachsprachkurs',\n zeigeIconNurAufDetailseite: true\n }\n];\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BerufsfachsprachkursUrlService extends FacettenUrlService {\n static URL_PARAM = 'berufsfachsprachkurse';\n constructor(urlService: UrlService) {\n super(urlService, BerufsfachsprachkursUrlService.URL_PARAM, 'berufsfachsprachkurse');\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BerufsfachsprachkursService extends FacettenService {\n constructor(\n terminService: SprachfoerderTerminService,\n berufsfachsprachkursUrlService: BerufsfachsprachkursUrlService\n ) {\n super(\n terminService,\n berufsfachsprachkursUrlService,\n 'SPRACHKURSE',\n orderedBerufsfachsprachkurse\n );\n }\n}\n", "import { Injectable, Provider } from '@angular/core';\nimport { orderedSprachniveaus } from '../../model/sprachniveaus';\nimport { SprachfoerderTerminService } from '../ergebnisseite/sprachfoerder-termin.service';\nimport { UrlService } from '../url.service';\nimport { FacettenService } from './facetten.service';\nimport { FacettenUrlService } from './facetten.url.service';\nimport { SystematikService } from '../ergebnisseite/systematik.service';\nimport { BerufsfachsprachkursUrlService } from './berufsfachsprachkurs.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SprachniveauUrlService extends FacettenUrlService {\n static URL_PARAM = 'sprachniveaus';\n constructor(urlService: UrlService) {\n super(urlService, SprachniveauUrlService.URL_PARAM, 'sprachniveaus');\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SprachniveauService extends FacettenService {\n constructor(\n terminService: SprachfoerderTerminService,\n sprachniveauUrlService: SprachniveauUrlService\n ) {\n super(terminService, sprachniveauUrlService, 'SPRACHKURSE', orderedSprachniveaus);\n }\n}\n\nexport function provideSprachniveauFacette(): Provider[] {\n return [\n SprachniveauService,\n { provide: FacettenUrlService, multi: true, useExisting: SprachniveauUrlService },\n { provide: FacettenService, multi: true, useExisting: SprachniveauService },\n SystematikService,\n BerufsfachsprachkursUrlService\n ];\n}\n", "import { Injectable, Provider } from '@angular/core';\nimport { Anbieter } from '@infosysbub/ng-lib-dpl3';\nimport { combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { SprachfoerderTerminService } from '../ergebnisseite/sprachfoerder-termin.service';\nimport { UrlService } from '../url.service';\nimport { FacettenUrlService } from './facetten.url.service';\nimport { FacettenService } from './facetten.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AnbieterUrlService extends FacettenUrlService {\n static URL_PARAM = 'anbieter';\n\n constructor(urlService: UrlService) {\n super(urlService, AnbieterUrlService.URL_PARAM, 'anbieter');\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AnbieterService {\n constructor(\n private terminService: SprachfoerderTerminService,\n private anbieterUrlService: AnbieterUrlService\n ) {}\n\n public anbieter$: Observable = combineLatest([\n this.terminService.facettes$,\n this.anbieterUrlService.getSelectedOptionIds$()\n ]).pipe(\n map(([{ ANBIETER }, selektierteAnbieter]) =>\n ANBIETER.map((anbieter) => ({\n id: anbieter.id,\n name: anbieter.name,\n ausgewaehlt: selektierteAnbieter.includes(anbieter.id),\n anzahlAngebote: anbieter.anzahl\n }))\n )\n );\n\n /**\n * Anzahl der ausgewählten, aktiven Optionen\n */\n public getNumberSelected$(): Observable {\n return this.anbieterUrlService\n .getSelectedOptionIds$()\n .pipe(map((anbieterIds) => anbieterIds.length));\n }\n\n getHasItems$(): Observable {\n return this.anbieter$.pipe(map((anbieter) => anbieter?.length > 0));\n }\n}\n\nexport function provideAnbieterFacette(): Provider[] {\n return [\n { provide: FacettenUrlService, multi: true, useExisting: AnbieterUrlService },\n { provide: FacettenService, multi: true, useExisting: AnbieterService },\n AnbieterService\n ];\n}\n", "import { Injectable, Provider } from '@angular/core';\nimport { FilterSelectItem } from '@infosysbub/ng-lib-dpl3';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { SprachfoerderTerminService } from '../ergebnisseite/sprachfoerder-termin.service';\nimport { UrlService } from '../url.service';\nimport { FacettenOptionInfo } from './facetten-option-info';\nimport { FacettenService } from './facetten.service';\nimport { FacettenUrlService } from './facetten.url.service';\nimport { DeutschniveauUrlService } from './deutschniveau.service';\nimport { SystematikService } from '../ergebnisseite/systematik.service';\n\nexport const orderedBeruflicheIntegrationSystematik: FacettenOptionInfo[] = [\n { bezeichnung: 'Berufsvorbereitung', id: 'A 8.5' },\n { bezeichnung: 'Berufliche Integration', id: 'A 8.4' },\n { bezeichnung: 'Alphabetisierungskurs', id: 'A 8.2' },\n { bezeichnung: 'Allgemeine Integration', id: 'A 8.3' },\n { bezeichnung: 'Schule und Studium', id: 'A 8.61' },\n { bezeichnung: 'Schule und Studium', id: 'A 8.62' },\n { bezeichnung: 'Schule und Studium', id: 'A 8.63' }\n];\n\nexport const orderedGroupedBeruflicheIntegrationSystematik = [\n { bezeichnung: 'Berufsvorbereitung', ids: ['A 8.5'] },\n { bezeichnung: 'Berufliche Integration', ids: ['A 8.4'] },\n { bezeichnung: 'Sonstige Unterstützung', ids: ['A 8.2', 'A 8.3', 'A 8.61', 'A 8.62', 'A 8.63'] }\n];\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BeruflicheIntegrationUrlService extends FacettenUrlService {\n static URL_PARAM = 'berufliche-integration';\n constructor(urlService: UrlService) {\n super(urlService, BeruflicheIntegrationUrlService.URL_PARAM, 'integrationen');\n }\n\n /**\n * Wechselt den Zustand einer Optionen von selektierten auf nicht-selektierten und umgekehrt.\n *\n * @param facetteOptionIds IDs der Facetten-Option\n * @param wasSelected Ehemaliger Status der Selektion vor dem auslösenden Event\n */\n public async toggleMultiOptionsSelection(\n facetteOptionIds: string[],\n wasSelected: boolean\n ): Promise {\n let parameter;\n if (wasSelected) {\n parameter = this.selectedOptions$.value.filter((s) => !facetteOptionIds.includes(s));\n } else {\n parameter = this.selectedOptions$.value.concat(...facetteOptionIds);\n }\n await this.updateSelection(parameter);\n }\n}\n\n/**\n * In dieser Facette werden gruppierte! Facettenoptionen verwendet,\n * so dass bei deren Selektion und Faltung aufgepasst werden muss\n * vgl. berufsbereiche-service\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class BeruflicheIntegrationService extends FacettenService {\n constructor(\n terminService: SprachfoerderTerminService,\n urlService: BeruflicheIntegrationUrlService\n ) {\n super(terminService, urlService, 'MIGRATIONSKURSE', orderedBeruflicheIntegrationSystematik);\n }\n\n /**\n * Gibt selektierte Filter-Einträge zurück,\n * dabei ist zu beachten, dass sie in dieser Facette gruppiert und damit zusammengefaltet sind\n */\n public getSelectItems$(): Observable {\n const selecteditems = super.getSelectItems$().pipe(\n map((items) => {\n return orderedGroupedBeruflicheIntegrationSystematik.map(({ ids, bezeichnung }) => {\n // fuer alle items, deren key in den gruppierten Keys ist\n const beruflicheIntegrationGroup = items.filter(({ key }) => ids.includes(key));\n // summiere die treffer (accumulator)\n const anzahl = beruflicheIntegrationGroup.reduce((acc, { treffer }) => acc + treffer, 0);\n // selektiert, wenn ein gruppenmitglied selektiert\n let selected = beruflicheIntegrationGroup.reduce(\n (acc, item) => acc || item.selected,\n false\n );\n\n // Zusammenfaltung / Abbildung der BeruflicheIntegration-Gruppe auf EIN SelectItem\n const foldedSelectItem = {\n key: ids.join(','),\n ariaLabel: bezeichnung,\n treffer: anzahl,\n label: bezeichnung,\n selected: selected,\n active: anzahl > 0\n };\n return foldedSelectItem;\n });\n })\n );\n return selecteditems;\n }\n}\n\nexport function provideBeruflicheIntefrationFacette(): Provider[] {\n return [\n BeruflicheIntegrationService,\n DeutschniveauUrlService,\n { provide: FacettenUrlService, multi: true, useExisting: BeruflicheIntegrationUrlService },\n { provide: FacettenService, multi: true, useExisting: BeruflicheIntegrationService },\n SystematikService\n ];\n}\n", "import { Injectable, Provider } from '@angular/core';\nimport { SprachfoerderTerminService } from '../ergebnisseite/sprachfoerder-termin.service';\nimport { UrlService } from '../url.service';\nimport { FacettenOptionInfo } from './facetten-option-info';\nimport { FacettenService } from './facetten.service';\nimport { FacettenUrlService } from './facetten.url.service';\nimport { SystematikService } from '../ergebnisseite/systematik.service';\nimport { BeruflicheIntegrationUrlService } from './berufliche-integration.service';\n\nexport const orderedDeutschniveaus: FacettenOptionInfo[] = [\n { bezeichnung: 'Deutsch - Alle Niveaus', id: 'A 8.11' },\n { bezeichnung: 'Deutsch - Grundstufe', id: 'A 8.12' },\n { bezeichnung: 'Deutsch - Mittelstufe', id: 'A 8.13' },\n { bezeichnung: 'Deutsch - Oberstufe', id: 'A 8.14' },\n { bezeichnung: 'Deutsch - Zielgruppe/Berufe', id: 'A 8.15' }\n];\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DeutschniveauUrlService extends FacettenUrlService {\n static URL_PARAM = 'deutschniveau';\n constructor(urlService: UrlService) {\n super(urlService, DeutschniveauUrlService.URL_PARAM, 'deutschniveaus');\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DeutschniveauService extends FacettenService {\n constructor(\n terminService: SprachfoerderTerminService,\n deutschniveauUrlService: DeutschniveauUrlService\n ) {\n super(terminService, deutschniveauUrlService, 'MIGRATIONSKURSE', orderedDeutschniveaus);\n }\n}\n\nexport function provideDeutnieveauFacette(): Provider[] {\n return [\n DeutschniveauService,\n BeruflicheIntegrationUrlService,\n { provide: FacettenUrlService, multi: true, useExisting: DeutschniveauUrlService },\n { provide: FacettenService, multi: true, useExisting: DeutschniveauService },\n SystematikService\n ];\n}\n", "import { Injectable, Provider } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { FacetteOption } from '../../model/aggregations';\nimport { SprachfoerderTerminService } from '../ergebnisseite/sprachfoerder-termin.service';\nimport { UrlService } from '../url.service';\nimport { FacettenService } from './facetten.service';\nimport { FacettenUrlService } from './facetten.url.service';\n\n// Die Icons der Berufsfachsprachkurse sollen nur auf der Detailseite angezeigt werden\nexport const orderedAzubiEignung = [\n {\n bezeichnung: 'Nur für Auszubildende',\n id: 'azubiGeeignet'\n }\n];\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AzubiEignungUrlService extends FacettenUrlService {\n static URL_PARAM = 'azubi';\n constructor(urlService: UrlService) {\n super(urlService, AzubiEignungUrlService.URL_PARAM, 'azubiGeeignet');\n }\n\n // Wir wollen in der Browser-Url einfach 'true' anzeigen\n override getBackendIds$(): Observable {\n return super.getBackendIds$().pipe(map((ids) => ids.map(() => 'true')));\n }\n\n // Zurück-Konvertieren von 'true' zu 'azubiGeeignet'\n override getSelectedOptionIds$(): Observable {\n return super.getSelectedOptionIds$().pipe(map((ids) => ids.map(() => 'azubiGeeignet')));\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AzubiEignungService extends FacettenService {\n constructor(\n terminService: SprachfoerderTerminService,\n azubiEignungUrlService: AzubiEignungUrlService\n ) {\n super(terminService, azubiEignungUrlService, 'INDIVIDUELLE_KURSE', orderedAzubiEignung);\n }\n\n override getFacetteOptions$(): Observable {\n return super.getFacetteOptions$().pipe(\n map((options) =>\n options.map((option) => ({\n ...option,\n id: 'true'\n }))\n )\n );\n }\n}\n\nexport function provideAzubiEignungFacette(): Provider[] {\n return [\n { provide: FacettenUrlService, multi: true, useExisting: AzubiEignungUrlService },\n { provide: FacettenService, multi: true, useExisting: AzubiEignungService }\n ];\n}\n", "import { Injectable, Provider } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { FacetteOption } from '../../model/aggregations';\nimport { SprachfoerderTerminService } from '../ergebnisseite/sprachfoerder-termin.service';\nimport { UrlService } from '../url.service';\nimport { FacettenService } from './facetten.service';\nimport { FacettenUrlService } from './facetten.url.service';\n\n// Die Icons der Berufsfachsprachkurse sollen nur auf der Detailseite angezeigt werden\nexport const orderedBerufstaetigenEignung = [\n {\n bezeichnung: 'Nur für Beschäftigte',\n id: 'berufstaetigeGeeignet'\n }\n];\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BerufstaetigenEignungUrlService extends FacettenUrlService {\n static URL_PARAM = 'berufstaetige';\n constructor(urlService: UrlService) {\n super(urlService, BerufstaetigenEignungUrlService.URL_PARAM, 'berufstaetigeGeeignet');\n }\n\n // Wir wollen in der Browser-Url einfach 'true' anzeigen\n override getBackendIds$(): Observable {\n return super.getBackendIds$().pipe(map((ids) => ids.map(() => 'true')));\n }\n\n // Zurück-Konvertieren von 'true' zu 'berufstaetigeGeeignet'\n override getSelectedOptionIds$(): Observable {\n return super.getSelectedOptionIds$().pipe(map((ids) => ids.map(() => 'berufstaetigeGeeignet')));\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BerufstaetigenEignungService extends FacettenService {\n constructor(\n terminService: SprachfoerderTerminService,\n berufstaetigenEignungUrlService: BerufstaetigenEignungUrlService\n ) {\n super(\n terminService,\n berufstaetigenEignungUrlService,\n 'INDIVIDUELLE_KURSE',\n orderedBerufstaetigenEignung\n );\n }\n\n override getFacetteOptions$(): Observable {\n return super.getFacetteOptions$().pipe(\n map((options) =>\n options.map((option) => ({\n ...option,\n id: 'true'\n }))\n )\n );\n }\n}\n\nexport function provideBerufstaetigeneignungFacette(): Provider[] {\n return [\n { provide: FacettenUrlService, multi: true, useExisting: BerufstaetigenEignungUrlService },\n { provide: FacettenService, multi: true, useExisting: BerufstaetigenEignungService }\n ];\n}\n", "import { Injectable, Provider } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { FacetteOption } from '../../model/aggregations';\nimport { SprachfoerderTerminService } from '../ergebnisseite/sprachfoerder-termin.service';\nimport { UrlService } from '../url.service';\nimport { FacettenService } from './facetten.service';\nimport { FacettenUrlService } from './facetten.url.service';\n\n// Die Icons der Berufsfachsprachkurse sollen nur auf der Detailseite angezeigt werden\nexport const orderedZielgruppe = [\n {\n bezeichnung: 'Für Auszubildende und Beschäftigte geeignet',\n id: 'combinedZielgruppe'\n }\n];\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ZielgruppeUrlService extends FacettenUrlService {\n static URL_PARAM = 'combinedZielgruppe';\n constructor(urlService: UrlService) {\n super(urlService, ZielgruppeUrlService.URL_PARAM, 'combinedZielgruppe');\n }\n\n // Wir wollen in der Browser-Url einfach 'true' anzeigen\n override getBackendIds$(): Observable {\n return super.getBackendIds$().pipe(map((ids) => ids.map(() => 'true')));\n }\n\n // Zurück-Konvertieren von 'true' zu 'combinedZielgruppe'\n override getSelectedOptionIds$(): Observable {\n return super.getSelectedOptionIds$().pipe(map((ids) => ids.map(() => 'combinedZielgruppe')));\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ZielgruppeService extends FacettenService {\n constructor(\n terminService: SprachfoerderTerminService,\n zielgruppeUrlService: ZielgruppeUrlService\n ) {\n super(terminService, zielgruppeUrlService, 'INDIVIDUELLE_KURSE', orderedZielgruppe);\n }\n\n override getFacetteOptions$(): Observable {\n return super.getFacetteOptions$().pipe(\n map((options) =>\n options.map((option) => ({\n ...option,\n id: 'true'\n }))\n )\n );\n }\n}\n\nexport function provideZielgruppeFacette(): Provider[] {\n return [\n { provide: FacettenUrlService, multi: true, useExisting: ZielgruppeUrlService },\n { provide: FacettenService, multi: true, useExisting: ZielgruppeService }\n ];\n}\n", "import { Injectable, Provider } from '@angular/core';\nimport { unterrichtsformen } from '../../model/unterrichtsformen';\nimport { SprachfoerderTerminService } from '../ergebnisseite/sprachfoerder-termin.service';\nimport { UrlService } from '../url.service';\nimport { FacettenService } from './facetten.service';\nimport { FacettenUrlService } from './facetten.url.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UnterrichtsformUrlService extends FacettenUrlService {\n static URL_PARAM = 'lernformen';\n constructor(urlService: UrlService) {\n // In der Browser-URL soll 'lernformen' verwendet werden, da die Facette so betitelt ist.\n super(urlService, UnterrichtsformUrlService.URL_PARAM, 'unterrichtsformen');\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UnterrichtsformService extends FacettenService {\n constructor(\n terminService: SprachfoerderTerminService,\n unterrichtsformUrlService: UnterrichtsformUrlService\n ) {\n super(terminService, unterrichtsformUrlService, 'UNTERRICHTSFORMEN', unterrichtsformen);\n }\n}\n\nexport function provideUnterrichtsformFacette(): Provider[] {\n return [\n { provide: FacettenUrlService, multi: true, useExisting: UnterrichtsformUrlService },\n { provide: FacettenService, multi: true, useExisting: UnterrichtsformService },\n UnterrichtsformService\n ];\n}\n"],
"mappings": "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",
"names": ["SystematikService", "constructor", "systematik$", "BehaviorSubject", "undefined", "setSystematik", "systematik", "next", "factory", "\u0275fac", "providedIn", "_SystematikService", "import_dayjs", "orderedBeginntermine", "bezeichnung", "id", "OrtServiceParams", "OrtService", "constructor", "config", "http", "urlService", "umkreisParameter$", "combineLatest", "getQueryParameterValue", "UrlService", "ORTE", "UMKREIS", "pipe", "map", "orte", "umkreis", "split", "VALUE_SEPARATOR", "slice", "uk", "validiereSuchUmkreis", "orte$", "Set", "switchMap", "orteEncoded", "of", "decodeOrt", "umkreis$", "encodeOrt", "subscribe", "umkreisParameter", "setzeUmkreis", "route", "updateUrl", "AKTUELLE_SEITE", "getOrtBySuchwort", "searchText", "_getOrtBySuchwort", "resetOrte", "setzeOrte", "ort", "concat", "length", "createValidUrlParameter", "REGION", "loescheOrte", "filter", "o", "suchString", "urlParams", "HttpParams", "selektierteOrte", "ortString", "postleitzahl", "String", "name", "toLowerCase", "encodeURIComponent", "join", "set", "SUCHWORT", "SELEKTIERT", "getOrteBy", "get", "backendHost", "params", "checkParams", "responseType", "catchError", "error", "Error", "\u0275\u0275inject", "AppConfig", "HttpClient", "factory", "\u0275fac", "providedIn", "_OrtService", "BildungszielServiceParams", "BildungszieleService", "constructor", "config", "httpClient", "urlService", "systematikService", "ortService", "suchworteEncoded$", "getQueryParameterValues", "UrlService", "SUCHWORTE", "suchworte$", "pipe", "map", "suchworte", "decodeURIComponent", "subscribe", "addSuchwort", "suchwort", "__async", "suchworteSet", "Set", "add", "setzeSuchworte", "Array", "from", "removeSuchwort", "delete", "resetSuchworte", "updateView", "createValidUrlParameter", "encodeURIComponent", "AKTUELLE_SEITE", "loadBildungsziele", "combineLatest", "systematik$", "umkreisParameter$", "params", "systematik", "umkreisParameter", "buildParams", "switchMap", "getBildungszieleFor", "HttpParams", "set", "SUCHWORT", "SYSTEMATIK", "UMKREIS", "uk", "ORTE", "orte", "join", "VALUE_SEPARATOR", "SELEKTIERTE_SUCHWORTE", "get", "backendHost", "checkParams", "responseType", "\u0275\u0275inject", "AppConfig", "HttpClient", "SystematikService", "OrtService", "factory", "\u0275fac", "providedIn", "_BildungszieleService", "LadestatusService", "constructor", "loadingState$", "BehaviorSubject", "ladeStatus$", "pipe", "distinctUntilChanged", "setLadeStatus", "status", "next", "factory", "\u0275fac", "providedIn", "_LadestatusService", "sortierungsMoeglichkeiten", "value", "name", "SortierungService", "constructor", "urlService", "sortierung$", "getQueryParameterValue", "URL_PARAM", "pipe", "map", "sort", "sortierungsMoeglichkeiten", "find", "value", "defaultSort", "defaultIfEmpty", "setSortierung", "__async", "updateView", "toLocaleLowerCase", "_SortierungService", "\u0275\u0275inject", "UrlService", "factory", "\u0275fac", "providedIn", "SprachfoerderTerminServiceParams", "SprachfoerderTerminService", "constructor", "config", "httpClient", "urlService", "bildungszieleService", "systematikService", "ortService", "ladestatusService", "combinedFacettenUrlService", "sortierungService", "logger", "aktuelleSeite$", "getQueryParameterValue", "UrlService", "AKTUELLE_SEITE", "pipe", "distinctUntilChanged", "map", "seitenParam", "pageCandidate", "parseInt", "isNaN", "shareReplay", "sprachfoerderTerminRest$", "switchMap", "seite", "sprachfoerderTerminRestByPage$", "preparedRequest$", "combineLatest", "suchworteEncoded$", "systematik$", "umkreisParameter$", "combinedFacetteParameters$", "sortierung$", "tap", "setLadeStatus", "suchworte", "systematik", "umkreisParameter", "facetteOptions", "sortierung", "httpParams", "buildParams", "filter", "ids", "length", "reduce", "param", "set", "join", "VALUE_SEPARATOR", "getSprachfoerderTermineFor", "sprachfoerderTerminByPage$", "pluck", "defaultIfEmpty", "sprachfoerderTerminSeite$", "facettes$", "getFacettesFor", "params", "HttpParams", "SUCHWORTE", "SYSTEMATIKEN", "SEITE", "BildungszielServiceParams", "UMKREIS", "uk", "ORTE", "orte", "SORTIERUNG", "get", "backendHost", "checkParams", "responseType", "context", "HttpContext", "SHOW_MODAL_ON_ERROR", "catchError", "error", "EMPTY", "\u0275\u0275inject", "AppConfig", "HttpClient", "BildungszieleService", "SystematikService", "OrtService", "LadestatusService", "CombinedFacettenUrlService", "SortierungService", "LoggingService", "factory", "\u0275fac", "providedIn", "_SprachfoerderTerminService", "BeginnterminUrlService", "FacettenUrlService", "constructor", "urlService", "URL_PARAM", "_BeginnterminUrlService", "\u0275\u0275inject", "UrlService", "factory", "\u0275fac", "providedIn", "BeginnterminService", "FacettenService", "constructor", "terminService", "beginnterminUrlService", "aktuellesDatum", "dayjs", "naechsterMonat", "add", "format", "uebernaechsterMonat", "drittnaechsterMonat", "aktuelleBeginntermine", "orderedBeginntermine", "map", "id", "bezeichnung", "\u0275\u0275inject", "SprachfoerderTerminService", "BeginnterminUrlService", "factory", "\u0275fac", "providedIn", "_BeginnterminService", "provideBeginnterminFacetten", "provide", "FacettenUrlService", "multi", "useExisting", "orderedBerufsbereiche", "bezeichnung", "id", "orderedGroupedBerufsbereiche", "ids", "BerufsbereichUrlService", "FacettenUrlService", "constructor", "urlService", "URL_PARAM", "toggleMultiOptionsSelection", "facetteOptionIds", "wasSelected", "__async", "parameter", "selectedOptions$", "value", "filter", "s", "includes", "concat", "updateSelection", "_BerufsbereichUrlService", "\u0275\u0275inject", "UrlService", "factory", "\u0275fac", "providedIn", "BerufsbereichService", "FacettenService", "terminService", "orderedBerufsbereiche", "aggregationWithFixedCounts", "facettes$", "pipe", "map", "aggregations", "getSelectItems$", "combineLatest", "of", "items", "fix", "orderedGroupedBerufsbereiche", "ids", "groupids", "bezeichnung", "groupbezeichnung", "berufsbereicheGroup", "key", "anzahl", "find", "id", "join", "selected", "reduce", "acc", "item", "ariaLabel", "treffer", "label", "active", "getNumberSelected$", "length", "SprachfoerderTerminService", "_BerufsbereichService", "provideBerufsbereichFacette", "provide", "multi", "useExisting", "SystematikService", "orderedSprachniveaus", "bezeichnung", "id", "icon", "zeigeIconNurAufDetailseite", "orderedBerufsfachsprachkurse", "bezeichnung", "id", "icon", "zeigeIconNurAufDetailseite", "BerufsfachsprachkursUrlService", "FacettenUrlService", "constructor", "urlService", "URL_PARAM", "_BerufsfachsprachkursUrlService", "\u0275\u0275inject", "UrlService", "factory", "\u0275fac", "providedIn", "BerufsfachsprachkursService", "FacettenService", "terminService", "berufsfachsprachkursUrlService", "SprachfoerderTerminService", "_BerufsfachsprachkursService", "SprachniveauUrlService", "FacettenUrlService", "constructor", "urlService", "URL_PARAM", "_SprachniveauUrlService", "\u0275\u0275inject", "UrlService", "factory", "\u0275fac", "providedIn", "SprachniveauService", "FacettenService", "terminService", "sprachniveauUrlService", "orderedSprachniveaus", "SprachfoerderTerminService", "_SprachniveauService", "provideSprachniveauFacette", "provide", "multi", "useExisting", "SystematikService", "BerufsfachsprachkursUrlService", "AnbieterUrlService", "FacettenUrlService", "constructor", "urlService", "URL_PARAM", "_AnbieterUrlService", "\u0275\u0275inject", "UrlService", "factory", "\u0275fac", "providedIn", "AnbieterService", "terminService", "anbieterUrlService", "anbieter$", "combineLatest", "facettes$", "getSelectedOptionIds$", "pipe", "map", "ANBIETER", "selektierteAnbieter", "anbieter", "id", "name", "ausgewaehlt", "includes", "anzahlAngebote", "anzahl", "getNumberSelected$", "anbieterIds", "length", "getHasItems$", "SprachfoerderTerminService", "_AnbieterService", "provideAnbieterFacette", "provide", "multi", "useExisting", "FacettenService", "orderedBeruflicheIntegrationSystematik", "bezeichnung", "id", "orderedGroupedBeruflicheIntegrationSystematik", "ids", "BeruflicheIntegrationUrlService", "FacettenUrlService", "constructor", "urlService", "URL_PARAM", "toggleMultiOptionsSelection", "facetteOptionIds", "wasSelected", "__async", "parameter", "selectedOptions$", "value", "filter", "s", "includes", "concat", "updateSelection", "_BeruflicheIntegrationUrlService", "\u0275\u0275inject", "UrlService", "factory", "\u0275fac", "providedIn", "BeruflicheIntegrationService", "FacettenService", "terminService", "getSelectItems$", "pipe", "map", "items", "beruflicheIntegrationGroup", "key", "anzahl", "reduce", "acc", "treffer", "selected", "item", "join", "ariaLabel", "label", "active", "SprachfoerderTerminService", "_BeruflicheIntegrationService", "provideBeruflicheIntefrationFacette", "DeutschniveauUrlService", "provide", "multi", "useExisting", "SystematikService", "orderedDeutschniveaus", "bezeichnung", "id", "DeutschniveauUrlService", "FacettenUrlService", "constructor", "urlService", "URL_PARAM", "_DeutschniveauUrlService", "\u0275\u0275inject", "UrlService", "factory", "\u0275fac", "providedIn", "DeutschniveauService", "FacettenService", "terminService", "deutschniveauUrlService", "SprachfoerderTerminService", "_DeutschniveauService", "provideDeutnieveauFacette", "BeruflicheIntegrationUrlService", "provide", "multi", "useExisting", "SystematikService", "orderedAzubiEignung", "bezeichnung", "id", "AzubiEignungUrlService", "FacettenUrlService", "constructor", "urlService", "URL_PARAM", "getBackendIds$", "pipe", "map", "ids", "getSelectedOptionIds$", "_AzubiEignungUrlService", "\u0275\u0275inject", "UrlService", "factory", "\u0275fac", "providedIn", "AzubiEignungService", "FacettenService", "terminService", "azubiEignungUrlService", "getFacetteOptions$", "options", "option", "__spreadProps", "__spreadValues", "SprachfoerderTerminService", "_AzubiEignungService", "provideAzubiEignungFacette", "provide", "multi", "useExisting", "orderedBerufstaetigenEignung", "bezeichnung", "id", "BerufstaetigenEignungUrlService", "FacettenUrlService", "constructor", "urlService", "URL_PARAM", "getBackendIds$", "pipe", "map", "ids", "getSelectedOptionIds$", "_BerufstaetigenEignungUrlService", "\u0275\u0275inject", "UrlService", "factory", "\u0275fac", "providedIn", "BerufstaetigenEignungService", "FacettenService", "terminService", "berufstaetigenEignungUrlService", "getFacetteOptions$", "options", "option", "__spreadProps", "__spreadValues", "SprachfoerderTerminService", "_BerufstaetigenEignungService", "provideBerufstaetigeneignungFacette", "provide", "multi", "useExisting", "orderedZielgruppe", "bezeichnung", "id", "ZielgruppeUrlService", "FacettenUrlService", "constructor", "urlService", "URL_PARAM", "getBackendIds$", "pipe", "map", "ids", "getSelectedOptionIds$", "_ZielgruppeUrlService", "\u0275\u0275inject", "UrlService", "factory", "\u0275fac", "providedIn", "ZielgruppeService", "FacettenService", "terminService", "zielgruppeUrlService", "getFacetteOptions$", "options", "option", "__spreadProps", "__spreadValues", "SprachfoerderTerminService", "_ZielgruppeService", "provideZielgruppeFacette", "provide", "multi", "useExisting", "UnterrichtsformUrlService", "FacettenUrlService", "constructor", "urlService", "URL_PARAM", "_UnterrichtsformUrlService", "\u0275\u0275inject", "UrlService", "factory", "\u0275fac", "providedIn", "UnterrichtsformService", "FacettenService", "terminService", "unterrichtsformUrlService", "unterrichtsformen", "SprachfoerderTerminService", "_UnterrichtsformService", "provideUnterrichtsformFacette", "provide", "multi", "useExisting"]
}