{ "version": 3, "sources": ["src/app/model/news.ts", "src/app/services/news/berufepool.service.ts"], "sourcesContent": ["import { Link } from './link';\n\nexport class News {\n constructor() {}\n\n id: number;\n nummer: string;\n created: string;\n validFrom: string;\n validUntil: string;\n titel: string;\n text: string;\n sourceName: string;\n sourceUrl: string;\n user: string;\n onTop: boolean;\n _links: {\n self: Link;\n };\n\n /**\n * Sortiert die News absteigend nach Datum und sekundär nach ID.\n * News mit \"onTop\" werden auf die ersten Stellen sortiert falls sie\n * nicht archviert sind.\n *\n * @param news News-Array\n * @param onTopBerueckischtigen Soll das OnTopFlag bei der Sortierung berücksichtigt werden\n */\n public sortiereNews(news: News[], onTopBerueckischtigen: boolean): News[] {\n return news.sort((a: News, b: News) => {\n if (onTopBerueckischtigen) {\n if (a.onTop && !b.onTop) {\n return -1;\n }\n if (b.onTop && !a.onTop) {\n return 1;\n }\n }\n const diff = new Date(b.validFrom).getTime() - new Date(a.validFrom).getTime();\n if (diff !== 0) {\n return diff;\n }\n // fuer deterministische reihenfolge\n return b.id - a.id;\n });\n }\n\n public static formatierungText(news: News) {\n let newText = news.text?.trim();\n if (!newText) {\n newText = '';\n }\n // der bw verlag liefert die news mit einem umgebenden p-tag.\n // wir entfernen dies um:\n // - keinen extra margin durch das p-tag zu bekommen\n // - im style zu __news-text_ 'line-clamp' verwenden zu können, um den text zu kürzen\n if (newText.startsWith('

')) {\n newText = newText.slice(3);\n }\n if (newText.endsWith('

')) {\n newText = newText.slice(0, newText.length - 4);\n }\n return newText;\n }\n\n public static formatierungDate(news: News) {\n const validFrom = news?.validFrom;\n let date = !!validFrom ? new Date(validFrom) : null;\n if (date !== null && isNaN(date.getTime())) {\n date = null;\n }\n return date;\n }\n}\n", "import { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { LoggingService } from '@infosysbub/ng-lib-dpl3';\nimport { EMPTY, Observable } from 'rxjs';\nimport { catchError, expand, reduce } from 'rxjs/operators';\nimport { SHOW_MODAL_ON_ERROR } from 'src/app/shared/utils/interceptor-tokent';\nimport { AppConfig } from '../../app.config';\nimport { BerufepoolNews } from '../../model/berufepool-news';\nimport { News } from '../../model/news';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BerufepoolService {\n private verfahren = 'spraf';\n\n constructor(\n private http: HttpClient,\n private appConfig: AppConfig,\n private logger: LoggingService\n ) {}\n\n /**\n * Liefert eine News-Ergebnis-Seite anhand der Seitennummer\n *\n * @param page Seitennummer\n */\n private getBerufepoolNews(page: number): Observable {\n return this.http\n .get(`${this.appConfig.berufepoolHost}/pc/v1/aktuellenews`, {\n responseType: 'json',\n params: {\n 'verfahren.name': this.verfahren,\n page: page.toString()\n },\n context: new HttpContext().set(SHOW_MODAL_ON_ERROR, true)\n })\n .pipe(\n catchError((error) => {\n this.logger.error('Fehler beim laden der aktuellen News', error);\n return EMPTY;\n })\n );\n }\n\n /**\n * Liefert eine Archivierte-News-Ergebnis-Seite anhand der Seitennummer\n *\n * @param page Seitennummer\n */\n private getAbgelaufeneBerufepoolNews(page: number): Observable {\n return this.http\n .get(`${this.appConfig.berufepoolHost}/pc/v1/abgelaufenenews`, {\n responseType: 'json',\n params: {\n 'verfahren.name': this.verfahren,\n page: page.toString()\n },\n context: new HttpContext().set(SHOW_MODAL_ON_ERROR, true)\n })\n .pipe(\n catchError((error) => {\n this.logger.error('Fehler beim laden der abgelaufenenews News', error);\n return EMPTY;\n })\n );\n }\n\n /**\n * Verwendet die Pagination um alle aktuellen News mit mehreren Requests vom Berufepool zu laden.\n */\n public getAllBerufepoolNews(): Observable {\n return this.getBerufepoolNews(1).pipe(\n expand((berufepoolNews) =>\n berufepoolNews.page.number < berufepoolNews.page.totalPages\n ? this.getBerufepoolNews(berufepoolNews.page.number + 1)\n : EMPTY\n ),\n reduce(\n (news, berufepoolNews) => [...news, ...berufepoolNews._embedded.news],\n []\n )\n );\n }\n\n /**\n * Verwendet die Pagination um alle abgelaufenen News mit mehreren Requests vom Berufepool zu laden.\n */\n public getAllAbgelaufeneBerufepoolNews(): Observable {\n return this.getAbgelaufeneBerufepoolNews(1).pipe(\n expand((berufepoolNews) =>\n berufepoolNews.page.number < berufepoolNews.page.totalPages\n ? this.getAbgelaufeneBerufepoolNews(berufepoolNews.page.number + 1)\n : EMPTY\n ),\n reduce(\n (news, berufepoolNews) => [...news, ...berufepoolNews._embedded.news],\n []\n )\n );\n }\n}\n"], "mappings": "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", "names": ["News", "constructor", "sortiereNews", "news", "onTopBerueckischtigen", "sort", "a", "b", "onTop", "diff", "Date", "validFrom", "getTime", "id", "formatierungText", "newText", "text", "trim", "startsWith", "slice", "endsWith", "length", "formatierungDate", "date", "isNaN", "BerufepoolService", "constructor", "http", "appConfig", "logger", "verfahren", "getBerufepoolNews", "page", "get", "berufepoolHost", "responseType", "params", "toString", "context", "HttpContext", "set", "SHOW_MODAL_ON_ERROR", "pipe", "catchError", "error", "EMPTY", "getAbgelaufeneBerufepoolNews", "getAllBerufepoolNews", "expand", "berufepoolNews", "number", "totalPages", "reduce", "news", "_embedded", "getAllAbgelaufeneBerufepoolNews", "\u0275\u0275inject", "HttpClient", "AppConfig", "LoggingService", "factory", "\u0275fac", "providedIn", "_BerufepoolService"] }