adb-shared 6.2.13 → 6.2.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"adb-shared.mjs","sources":["../../../projects/artdata-shared/src/lib/components/adb-artportalen-nav/environment.service.ts","../../../projects/artdata-shared/src/lib/directives/click-outside.directive.ts","../../../projects/artdata-shared/src/lib/directives/file-upload.directive.ts","../../../projects/artdata-shared/src/lib/directives/focus.directive.ts","../../../projects/artdata-shared/src/lib/directives/redlist-badge-class.directive.ts","../../../projects/artdata-shared/src/lib/directives/risk-class.directive.ts","../../../projects/artdata-shared/src/lib/directives/active-fragment.directive.ts","../../../projects/artdata-shared/src/lib/directives/image-loader.directive.ts","../../../projects/artdata-shared/src/lib/directives/directives.module.ts","../../../projects/artdata-shared/src/lib/components/adb-artportalen-nav/adb-artportalen-nav.component.ts","../../../projects/artdata-shared/src/lib/components/adb-artportalen-nav/adb-artportalen-nav.component.html","../../../projects/artdata-shared/src/lib/components/adb-dropdown/adb-dropdown.service.ts","../../../projects/artdata-shared/src/lib/components/adb-dropdown/adb-dropdown.directive.ts","../../../projects/artdata-shared/src/lib/components/adb-dropdown/adb-dropdown2.directive.ts","../../../projects/artdata-shared/src/lib/components/adb-dropdown/adb-dropdown.module.ts","../../../projects/artdata-shared/src/lib/components/pagers/infinite-scroll.component.ts","../../../projects/artdata-shared/src/lib/components/pagers/pager-base.directive.ts","../../../projects/artdata-shared/src/lib/components/pagers/pager.ts","../../../projects/artdata-shared/src/lib/components/pagers/pager.html","../../../projects/artdata-shared/src/lib/components/pagers/pager-inline.ts","../../../projects/artdata-shared/src/lib/components/pagers/pager-inline.html","../../../projects/artdata-shared/src/lib/components/pagers/pagers.module.ts","../../../projects/artdata-shared/src/lib/components/adb-artportalen-nav/adb-artportalen-footer.component.ts","../../../projects/artdata-shared/src/lib/components/adb-artportalen-nav/adb-artportalen-footer.component.html","../../../projects/artdata-shared/src/lib/components/adb-artportalen-nav/adb-artportalen-nav.module.ts","../../../projects/artdata-shared/src/lib/pipes/date.pipe.ts","../../../projects/artdata-shared/src/lib/pipes/emptyValue.pipe.ts","../../../projects/artdata-shared/src/lib/pipes/highlight.pipe.ts","../../../projects/artdata-shared/src/lib/pipes/number-spacing.pipe.ts","../../../projects/artdata-shared/src/lib/pipes/highlight-html.pipe.ts","../../../projects/artdata-shared/src/lib/pipes/pipes.module.ts","../../../projects/artdata-shared/src/lib/components/date-picker/adb-date-picker.component.ts","../../../projects/artdata-shared/src/lib/components/date-picker/adb-date-picker.component.html","../../../projects/artdata-shared/src/lib/components/date-picker/adb-date-picker.service.ts","../../../projects/artdata-shared/src/lib/components/date-picker/adb-date-picker.directive.ts","../../../projects/artdata-shared/src/lib/components/date-picker/adb-date-picker.module.ts","../../../projects/artdata-shared/src/lib/components/adb-confirm-modal/adb-modal.service.ts","../../../projects/artdata-shared/src/lib/components/adb-confirm-modal/adb-confirm-modal.ts","../../../projects/artdata-shared/src/lib/components/adb-confirm-modal/adb-confirm-modal.html","../../../projects/artdata-shared/src/lib/components/adb-confirm-modal/adb-modal.module.ts","../../../projects/artdata-shared/src/lib/components/adb-toast/adb-toast.service.ts","../../../projects/artdata-shared/src/lib/components/adb-toast/adb-toast.ts","../../../projects/artdata-shared/src/lib/components/adb-toast/adb-toast.html","../../../projects/artdata-shared/src/lib/components/adb-toast/adb-toast.module.ts","../../../projects/artdata-shared/src/lib/components/adb-buttons/help-button.component.ts","../../../projects/artdata-shared/src/lib/components/adb-buttons/help-button.component.html","../../../projects/artdata-shared/src/lib/components/adb-buttons/adb-buttons.module.ts","../../../projects/artdata-shared/src/lib/components/adb-rich-editor/adb-rich-editor.component.ts","../../../projects/artdata-shared/src/lib/components/adb-rich-editor/adb-rich-editor.component.html","../../../projects/artdata-shared/src/lib/components/adb-rich-editor/rich-module-config.ts","../../../projects/artdata-shared/src/lib/components/adb-rich-editor/adb-rich-text.ts","../../../projects/artdata-shared/src/lib/components/adb-rich-editor/adb-rich-text.html","../../../projects/artdata-shared/src/lib/components/adb-rich-editor/adb-rich-editor.module.ts","../../../projects/artdata-shared/src/lib/components/adb-filter-section/filter-section.component.ts","../../../projects/artdata-shared/src/lib/components/adb-filter-section/filter-section.component.html","../../../projects/artdata-shared/src/lib/components/adb-filter-section/adb-filter-section.module.ts","../../../projects/artdata-shared/src/lib/components/adb-user/adb-user-service-config.ts","../../../projects/artdata-shared/src/lib/components/adb-user/user-constants.ts","../../../projects/artdata-shared/src/lib/components/adb-user/adb-user.service.ts","../../../projects/artdata-shared/src/lib/components/adb-user/auth-callback.component.ts","../../../projects/artdata-shared/src/lib/components/adb-user/adb-user.interceptor.ts","../../../projects/artdata-shared/src/lib/components/adb-user/adb-user.module.ts","../../../projects/artdata-shared/src/lib/components/adb-picker-module/components/adb-generic-picker.ts","../../../projects/artdata-shared/src/lib/components/adb-picker-module/components/adb-generic-picker.html","../../../projects/artdata-shared/src/lib/components/adb-picker-module/adb-picker-config.ts","../../../projects/artdata-shared/src/lib/components/adb-picker-module/components/taxon-picker.ts","../../../projects/artdata-shared/src/lib/components/adb-picker-module/components/taxon-picker.html","../../../projects/artdata-shared/src/lib/components/adb-picker-module/components/area-picker.ts","../../../projects/artdata-shared/src/lib/components/adb-picker-module/components/area-picker.html","../../../projects/artdata-shared/src/lib/components/adb-picker-module/adb-picker.module.ts","../../../projects/artdata-shared/src/lib/components/adb-map-module/mapUtils.ts","../../../projects/artdata-shared/src/lib/components/adb-map-module/components/polygon-drawer.component.ts","../../../projects/artdata-shared/src/lib/components/adb-map-module/components/polygon-drawer.component.html","../../../projects/artdata-shared/src/lib/components/adb-map-module/config.ts","../../../projects/artdata-shared/src/lib/components/adb-map-module/components/treeview.ts","../../../projects/artdata-shared/src/lib/components/adb-map-module/components/treeview.html","../../../projects/artdata-shared/src/lib/components/adb-map-module/components/observations-map.ts","../../../projects/artdata-shared/src/lib/components/adb-map-module/components/observations-map.html","../../../projects/artdata-shared/src/lib/components/adb-map-module/constants.ts","../../../projects/artdata-shared/src/lib/components/adb-map-module/components/map-filter.ts","../../../projects/artdata-shared/src/lib/components/adb-map-module/components/map-filter.html","../../../projects/artdata-shared/src/lib/components/adb-map-module/adb-map.module.ts","../../../projects/artdata-shared/src/public-api.ts","../../../projects/artdata-shared/src/adb-shared.ts"],"sourcesContent":["import { Inject, Injectable } from \"@angular/core\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class EnvironmentService {\r\n constructor(@Inject('env') public environment) {\r\n }\r\n}","import { Directive, Output, EventEmitter, ElementRef, HostListener } from '@angular/core';\r\n@Directive({\r\n selector: '[adbClickOutside]',\r\n standalone: false\r\n})\r\nexport class ClickOutsideDirective {\r\n @Output() adbClickOutside = new EventEmitter<any>();\r\n constructor(private elementRef: ElementRef) { }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(target: any) {\r\n const clickedInside = this.elementRef.nativeElement.contains(target);\r\n if (!clickedInside) {\r\n this.adbClickOutside.emit(target);\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, EventEmitter } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: 'input[adbFileUpload]',\r\n host: {\r\n '(change)': 'onBeginUpload($event.target)',\r\n '(click)': 'onClick($event.target)'\r\n },\r\n outputs: ['upload'],\r\n standalone: false\r\n})\r\nexport class FileUploadDirective {\r\n upload = new EventEmitter();\r\n click = new EventEmitter();\r\n constructor(private el: ElementRef) {}\r\n \r\n onBeginUpload(target: any) {\r\n if (target) {\r\n if (target.files && target.files[0]) {\r\n this.upload.emit(target.files[0]);\r\n }\r\n }\r\n }\r\n\r\n onClick(target: any) {\r\n (this.el.nativeElement as HTMLInputElement).value = '';\r\n if (target) {\r\n this.click.emit(target);\r\n }\r\n }\r\n}","/* eslint-disable @angular-eslint/directive-selector */\r\nimport { Directive, ElementRef, AfterViewInit, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[adbFocus]',\r\n standalone: false\r\n})\r\nexport class FocusDirective implements AfterViewInit {\r\n focused: boolean;\r\n @Input() set adbFocus(value: boolean) {\r\n this.focused = value;\r\n if (this.focused) {\r\n this.element.nativeElement.focus();\r\n }else{\r\n this.element.nativeElement.blur();\r\n }\r\n }\r\n\r\n constructor(public element: ElementRef<HTMLElement>) {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.\r\n if (this.focused) {\r\n setTimeout(() => this.element.nativeElement.focus(), 0);\r\n }\r\n }\r\n}\r\n","import { Directive, Input, HostBinding } from '@angular/core';\r\n@Directive({\r\n selector: '[adbRedListBadgeClass]',\r\n standalone: false\r\n})\r\nexport class RedListBadgeClassDirective {\r\n @Input('adbRedListBadgeClass') redlistId: string;\r\n @HostBinding('class')\r\n get hostClasses(): string {\r\n this.redlistId = this.redlistId ? this.redlistId.replace('°', '') : '';\r\n if (this.redlistId === 'EX' || this.redlistId === 'RE') {\r\n return 'bg-redlist-re border';\r\n } else if (this.redlistId === 'DD' || this.redlistId === 'NE' || this.redlistId === 'NA') {\r\n return 'bg-redlist-dd border';\r\n } else if (this.redlistId === 'CR') {\r\n return 'bg-redlist-cr border';\r\n } else if (this.redlistId === 'EN') {\r\n return 'bg-redlist-en border';\r\n } else if (this.redlistId === 'VU') {\r\n return 'bg-redlist-vu border';\r\n } else if (this.redlistId === 'NT') {\r\n return 'bg-redlist-nt border';\r\n } else if (this.redlistId === 'NONE') {\r\n return '';\r\n }\r\n return 'bg-redlist-lc border';\r\n }\r\n}\r\n\r\n","import { Directive, Input, HostBinding } from '@angular/core';\r\n@Directive({\r\n selector: '[adbRiskClass]',\r\n standalone: false\r\n})\r\nexport class RiskClassDirective { //move to shared\r\n @Input('adbRiskClass') category: string;\r\n @HostBinding('class')\r\n get hostClasses(): string {\r\n if (this.category === 'NK') {\r\n return 'bg-risk-class-nk text-dark border';\r\n } else if (this.category === 'LO') {\r\n return 'bg-risk-class-lo border';\r\n } else if (this.category === 'PH') {\r\n return 'bg-risk-class-ph border';\r\n } else if (this.category === 'HI') {\r\n return 'bg-risk-class-hi border';\r\n } else if (this.category === 'SE') {\r\n return 'bg-risk-class-se border';\r\n }\r\n return 'text-dark';\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[adbActiveFragment]',\r\n standalone: false\r\n})\r\nexport class RouterLinkActiveFragmentDirective implements OnInit, OnDestroy {\r\n @Input('adbActiveFragment') activeClass = 'active';\r\n @Input() fragment: string | null = null;\r\n\r\n private sub!: Subscription;\r\n\r\n constructor(\r\n private router: Router,\r\n private el: ElementRef,\r\n private renderer: Renderer2\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.updateActiveState();\r\n this.sub = this.router.events.subscribe(event => {\r\n if (event instanceof NavigationEnd) {\r\n this.updateActiveState();\r\n }\r\n });\r\n }\r\n\r\n private updateActiveState(): void {\r\n const currentFragment = this.router.parseUrl(this.router.url).fragment;\r\n const isActive = this.fragment && currentFragment === this.fragment;\r\n const classes = this.activeClass.split(' ').filter(c => !!c); // handle multiple classes\r\n if (this.fragment && currentFragment === this.fragment) {\r\n classes.forEach(cls => this.renderer.addClass(this.el.nativeElement, cls));\r\n } else {\r\n classes.forEach(cls => this.renderer.removeClass(this.el.nativeElement, cls));\r\n }\r\n if (isActive) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'aria-current', 'page');\r\n } else {\r\n this.renderer.removeAttribute(this.el.nativeElement, 'aria-current');\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.sub) {\r\n this.sub.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Directive, HostListener, Input, Renderer2, ElementRef, OnDestroy } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: 'img[adbImageLoader]',\r\n standalone: false\r\n})\r\nexport class ImageLoaderDirective implements OnDestroy {\r\n private _fallbackKey = 'IMAGE_MISSING';\r\n\r\n @Input('adbImageLoader')\r\n set fallbackKey(value: string | undefined) {\r\n this._fallbackKey = value && value.trim() ? value : 'IMAGE_MISSING';\r\n }\r\n\r\n get fallbackKey(): string {\r\n return this._fallbackKey;\r\n }\r\n\r\n private translationSub?: Subscription;\r\n private spinnerElement?: HTMLElement;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n private translate: TranslateService\r\n ) {\r\n this.showSpinner();\r\n }\r\n\r\n\r\n\r\n private showSpinner() {\r\n this.spinnerElement = this.renderer.createElement('i');\r\n this.renderer.addClass(this.spinnerElement, 'fa');\r\n this.renderer.addClass(this.spinnerElement, 'fa-spinner');\r\n this.renderer.addClass(this.spinnerElement, 'fa-spin');\r\n this.renderer.addClass(this.spinnerElement, 'text-dark');\r\n const parent = this.renderer.parentNode(this.el.nativeElement);\r\n this.renderer.insertBefore(parent, this.spinnerElement, this.el.nativeElement);\r\n }\r\n\r\n private hideSpinner() {\r\n if (this.spinnerElement) {\r\n const parent = this.renderer.parentNode(this.el.nativeElement);\r\n if (parent && this.spinnerElement) {\r\n this.renderer.removeChild(parent, this.spinnerElement);\r\n this.spinnerElement = undefined;\r\n }\r\n }\r\n }\r\n\r\n @HostListener('load')\r\n onLoad() {\r\n this.hideSpinner();\r\n }\r\n\r\n @HostListener('error')\r\n onError() {\r\n console.log('error');\r\n this.hideSpinner();\r\n this.renderer.setStyle(this.el.nativeElement, 'display', 'none');\r\n this.translationSub?.unsubscribe();\r\n this.translationSub = this.translate.get(this._fallbackKey).subscribe((translatedText) => {\r\n const textElement = this.renderer.createElement('p');\r\n const text = this.renderer.createText(translatedText);\r\n this.renderer.addClass(textElement,'fs-3')\r\n this.renderer.appendChild(textElement, text);\r\n const parent = this.renderer.parentNode(this.el.nativeElement);\r\n this.renderer.appendChild(parent, textElement);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.translationSub?.unsubscribe();\r\n this.hideSpinner();\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { ClickOutsideDirective } from \"./click-outside.directive\";\r\nimport { FileUploadDirective } from \"./file-upload.directive\";\r\nimport { FocusDirective } from \"./focus.directive\";\r\nimport { RedListBadgeClassDirective } from \"./redlist-badge-class.directive\";\r\nimport { RiskClassDirective } from \"./risk-class.directive\";\r\nimport { RouterLinkActiveFragmentDirective } from \"./active-fragment.directive\";\r\nimport { ImageLoaderDirective } from \"./image-loader.directive\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [ClickOutsideDirective, FocusDirective, FileUploadDirective, RedListBadgeClassDirective, RiskClassDirective, ImageLoaderDirective, RouterLinkActiveFragmentDirective],\r\n exports: [ClickOutsideDirective, FocusDirective, FileUploadDirective, RedListBadgeClassDirective, RiskClassDirective, ImageLoaderDirective, RouterLinkActiveFragmentDirective]\r\n})\r\nexport class AdbDirectivesModule { }","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\r\nimport { TranslateService, TranslationObject } from \"@ngx-translate/core\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { Event, NavigationEnd, Router } from \"@angular/router\";\r\nimport { Navigation } from \"./navigation.model\";\r\nimport { EnvironmentService } from \"./environment.service\";\r\n\r\n\r\n@Component({\r\n selector: 'adb-artportalen-nav',\r\n templateUrl: './adb-artportalen-nav.component.html',\r\n standalone: false\r\n})\r\nexport class ArtportalenNavComponent implements OnInit, OnDestroy {\r\n private subscription = new Subscription();\r\n @Output() loginClicked = new EventEmitter();\r\n @Output() logoutClicked = new EventEmitter();\r\n @Output() dropMenuChange = new EventEmitter<boolean>();\r\n\r\n @Input() showPattern = false;\r\n fullName: string;\r\n translationFinished = false;\r\n lastPosition = 0;\r\n\r\n @Input() set userName(fullName: string) {\r\n this.fullName = fullName;\r\n };\r\n\r\n navigation: Navigation;\r\n url: string;\r\n showNavMenu = false;\r\n showUserMenu = false;\r\n\r\n showReport = true;\r\n showObservations = true;\r\n showSubs = false;\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n private router: Router,\r\n public trans: TranslateService,\r\n private envService: EnvironmentService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.url = window.location.href;\r\n const baseUrl = this.envService.environment.resourceUrl;\r\n const url = '/assets/artportalen/links-ap3.json';\r\n this.subscription.add(this.httpClient.get<Navigation>(baseUrl + url).subscribe(result => {\r\n this.navigation = result;\r\n }));\r\n this.initTranslations(baseUrl);\r\n this.router.events.subscribe((event: Event) => {\r\n if (event instanceof NavigationEnd) {\r\n this.showNavMenu = false;\r\n this.dropMenuChange.emit(this.showNavMenu)\r\n }\r\n });\r\n }\r\n\r\n showMenuDropdown(show: boolean): void {\r\n this.showUserMenu = false;\r\n if (this.showNavMenu !== show) {\r\n this.showNavMenu = show;\r\n this.dropMenuChange.emit(show);\r\n }\r\n }\r\n\r\n setLanguage(lang): void {\r\n this.trans.use(lang);\r\n this.showNavMenu = false;\r\n this.dropMenuChange.emit(false);\r\n }\r\n\r\n onUserClick():void{\r\n if(this.fullName){\r\n this.logout(); \r\n }else{\r\n this.login(); \r\n }\r\n }\r\n\r\n login(): void {\r\n this.loginClicked.emit();\r\n }\r\n\r\n logout(): void {\r\n this.logoutClicked.emit();\r\n }\r\n\r\n\r\n private initTranslations(baseUrl: string): void {\r\n this.loadTranslation(baseUrl, this.trans.getCurrentLang());\r\n this.subscription.add(this.trans.onLangChange.subscribe((event) => {\r\n this.translationFinished = false;\r\n this.loadTranslation(baseUrl, event.lang);\r\n }));\r\n }\r\n\r\n private loadTranslation(baseUrl: string, lang: string): void {\r\n //TODO: Prepare for diffents lang then en sv (en-GB) or add more files in devcomponentserver :)\r\n const url = baseUrl + `/assets/artportalen/i18n/${lang}.json`;\r\n this.subscription.add(this.httpClient.get<TranslationObject>(url).subscribe(translations => {\r\n this.trans.setTranslation(lang, translations, true);\r\n this.translationFinished = true;\r\n }));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n\r\n","<div class=\"bg-primary adb-main-header position-static\" (adbClickOutside)=\"showMenuDropdown(false);\">\r\n @if (translationFinished) {\r\n <header class=\"container-lg px-0\">\r\n <div [attr.id]=\"showPattern?'banner':''\" class=\"px-1 d-flex flex-wrap align-items-center gap-2\">\r\n <nav class=\"d-flex flex-grow-1 align-items-center pe-2 py-2 gap-2\">\r\n <a class=\"d-flex text-white text-decoration-none d-flex gap-2\" href=\"https://www.artdatabanken.se/\" target=\"new\">\r\n <img style=\"height: 2rem;\" src=\"/assets/images/slu.svg\" alt=\"logo\">\r\n <div class=\"border-end d-none d-sm-block\"></div>\r\n <img class=\"d-none d-sm-block align-self-center pe-5\" style=\"height: 0.7rem;\" src=\"/assets/images/artdatabanken.svg\" alt=\"logo\">\r\n </a>\r\n <a [href]=\"navigation?.home\" class=\"text-white text-decoration-none fs-1 fw-bold\">{{'HEADER.TITLE'|translate}}</a>\r\n </nav>\r\n <div class=\"ms-auto d-flex align-items-center gap-2\">\r\n <div><ng-content></ng-content></div>\r\n <div>\r\n <button class=\"d-none d-md-block btn btn-primary-dark btn-lg\" type=\"button\"\r\n title=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\"\r\n attr.aria-label=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\"\r\n (click)=\"onUserClick()\">\r\n <small>{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}</small>\r\n </button>\r\n </div>\r\n <div>\r\n <button class=\"btn btn-primary-dark btn-lg\" type=\"button\" title=\"{{'HEADER.MENY'|translate}}\" attr.aria-label=\"{{'HEADER.MENY'|translate}}\" (click)=\"showMenuDropdown(!showNavMenu)\">\r\n <i class=\"fas fa-bars\"></i>\r\n <small class=\"ms-2 d-none d-md-inline-block\">{{'HEADER.MENY'|translate}}</small>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-center d-md-none p-2 border-dark border-top\">\r\n <button class=\"btn btn-primary-dark btn-lg\" type=\"button\"\r\n title=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\"\r\n attr.aria-label=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\" (click)=\"onUserClick()\">\r\n <small>{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}</small>\r\n </button>\r\n </div>\r\n </header>\r\n }\r\n @if (navigation) {\r\n <div role=\"dialog\" class=\"offcanvas offcanvas-end bg-primary text-white\" [class.show]=\"showNavMenu\" tabindex=\"-1\" aria-labelledby=\"offcanvasNav\">\r\n <div class=\"offcanvas-header\">\r\n <h1 class=\"offcanvas-title h-section mb-0\" id=\"offcanvasNav\"><a [href]=\"navigation.home\" class=\"text-white text-decoration-none\">{{'HEADER.TITLE'|translate}}</a></h1>\r\n <button type=\"button\" class=\"btn-close btn-close-white\" attr.aria-label=\"{{'CLOSE'|translate}}\" (click)=\"showMenuDropdown(false)\"></button>\r\n </div>\r\n <div class=\"offcanvas-body d-flex flex-column p-0\">\r\n <div class=\"px-3\">\r\n <div class=\"d-flex flex-wrap justify-content-between align-items-center mb-2 gap-1 px-2\">\r\n @if (fullName) {\r\n <div>\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-primary-dark\">\r\n {{'HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div>{{fullName}}</div>\r\n }\r\n @if (!fullName) {\r\n <div class=\"text-center\">\r\n <button type=\"button\" class=\"btn btn-primary-dark\" (click)=\"login()\" id=\"start-login\">{{'HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n @if (navigation) {\r\n <a class=\"text-white\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'HEADER.CREATE_USER'|translate}}\r\n </a>\r\n }\r\n }\r\n </div>\r\n <ul class=\"list-group list-group-flush border-top\">\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showReport?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"py-1 text-white flex-grow-1\" href=\"{{navigation.report.url}}\">\r\n {{navigation.report.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showReport = !showReport\" attr.aria-controls=\"report-links\" attr.aria-expanded=\"{{showReport}}\">\r\n <span class=\"fas\" [ngClass]=\"showReport?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n @if (showReport) {\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" id=\"report-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <div class=\"d-flex\">\r\n <a href=\"{{navigation.checklist.url}}\" class=\"text-white flex-grow-1\">\r\n {{navigation.checklist.transId|translate}}\r\n </a>\r\n </div>\r\n </li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.report.url}}\">\r\n {{'HEADER.REPORT'|translate}}\r\n </a>\r\n <li class=\"d-block py-1\">\r\n <div class=\"d-flex \">\r\n <a href=\"{{navigation.wanted.url}}\" class=\"text-white flex-grow-1\">\r\n {{navigation.wanted.transId|translate}}\r\n </a>\r\n </div>\r\n </li>\r\n </ul>\r\n </li>\r\n }\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showObservations?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"py-1 text-white flex-grow-1\" href=\"{{navigation.observations.url}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showObservations = !showObservations\" attr.aria-controls=\"observations-links\" attr.aria-expanded=\"{{showObservations}}\">\r\n <span class=\"fas\" [ngClass]=\"showObservations?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n @if (showObservations) {\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" id=\"observations-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.observations.url}}\">\r\n {{'HEADER.TODAYS_OBSERVATIONS'|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-0\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.fieldDiary.url}}\">\r\n {{'HEADER.FIELD_DIARY'|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n }\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showSubs?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <button class=\"btn btn-link p-0 text-white w-100 text-start\" (click)=\"showSubs = !showSubs\">\r\n {{navigation.subcriptions.transId|translate}}\r\n </button>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showSubs = !showSubs\" attr.aria-controls=\"subs-links\" attr.aria-expanded=\"{{showSubs}}\">\r\n <span class=\"fas\" [ngClass]=\"showSubs?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n @if (showSubs) {\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" id=\"subs-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.subcriptions.url}}\">\r\n {{'HEADER.MY_SUBSCRIPTIONS'|translate}}\r\n </a>\r\n </li>\r\n <li class=\"py-1\">\r\n <div class=\"d-flex\">\r\n <a href=\"{{navigation.events.url}}\" class=\"text-white flex-grow-1\">\r\n {{navigation.events.transId|translate}}\r\n </a>\r\n </div>\r\n </li>\r\n </ul>\r\n </li>\r\n }\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.fyndregler.url}}\">\r\n {{navigation.fyndregler.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block fw-bold py-1 text-white\" [href]=\"navigation.artportalenUrl\">\r\n Artportalen.se\r\n <i class=\"fas fa-external-link\"></i>\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block fw-bold py-1 text-white\" [href]=\"navigation.artfaktaUrl\">\r\n {{'HEADER.ARTFAKTA'|translate}}\r\n <i class=\"fas fa-external-link\"></i>\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <small class=\"d-block text-white pt-1\">\r\n {{'HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\">\r\n {{'HEADER.ARTDATABANKEN'|translate}}\r\n <span class=\"fas fa-external-link\"></span>\r\n </a>\r\n </small>\r\n </li>\r\n </ul>\r\n </div>\r\n <div id=\"pattern\" class=\"flex-grow-1\"> </div>\r\n </div>\r\n </div>\r\n }\r\n</div>","import { ElementRef, Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class AdbDropdownService {\r\n currentMenu: any;\r\n currentMenuId: string;\r\n}","import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output } from \"@angular/core\";\r\nimport { AdbDropdownService } from \"./adb-dropdown.service\";\r\n\r\n@Directive({\r\n selector: '[adbDropdown]',\r\n exportAs: 'adbDropdown',\r\n standalone: false\r\n})\r\nexport class AdbDropdownDirective {\r\n\r\n constructor(\r\n private elementRef: ElementRef,\r\n private adbDropdownService: AdbDropdownService) {\r\n this.id = this.getId();\r\n this.dropId = this.getId();\r\n }\r\n\r\n @Output() adbDropdown = new EventEmitter();\r\n @Input() insideClick = false;\r\n\r\n @HostBinding('id')\r\n id: string;\r\n\r\n @HostBinding('attr.data-toggle')\r\n dataToggle = \"dropdown\";\r\n\r\n @HostBinding('attr.aria-haspopup')\r\n haspPopup = true;\r\n\r\n @HostBinding('attr.aria-expanded')\r\n expanded = false;\r\n\r\n @HostBinding('attr.aria-controls')\r\n dropId:string;\r\n\r\n @HostListener('click')\r\n onClick(): void {\r\n this.adbDropdownService.currentMenuId = this.id;\r\n const node = this.elementRef.nativeElement.parentNode;\r\n const toggleButton = node.querySelector('.dropdown-toggle');\r\n let style = `transform:translate3d(0px, ${toggleButton?.clientHeight + 1}px, 0px);`;\r\n const menu = node.querySelector('.dropdown-menu');\r\n if (menu) {\r\n this.adbDropdownService.currentMenu = this.elementRef.nativeElement;\r\n if (menu.classList?.contains('dropdown-menu-end')) {\r\n style = style + 'inset: 0px 0px auto auto;';\r\n }\r\n menu.setAttribute('style', style);\r\n menu.setAttribute('id', this.dropId);\r\n if (menu.classList.contains('show')) {\r\n menu.classList.remove('show');\r\n this.expanded = false;\r\n } else {\r\n this.adbDropdown.emit();\r\n menu.classList.add('show');\r\n this.expanded = true;\r\n }\r\n }\r\n }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n onCheckOutSideClick(target: any): void {\r\n if (this.adbDropdownService.currentMenuId === this.id) {\r\n const parent = this.insideClick?this.elementRef.nativeElement.parentNode:this.elementRef.nativeElement;\r\n const clickedInside = parent.contains(target);\r\n if (!clickedInside) {\r\n const parent = this.elementRef.nativeElement.parentNode.querySelector('.dropdown-menu');\r\n parent?.classList.remove('show');\r\n this.expanded = false;\r\n }\r\n } else {\r\n const parent = this.elementRef.nativeElement.parentNode.querySelector('.dropdown-menu');\r\n parent?.classList.remove('show');\r\n this.expanded = false;\r\n }\r\n }\r\n\r\n close(): void {\r\n const node = this.elementRef.nativeElement.parentNode;\r\n const menu = node.querySelector('.dropdown-menu');\r\n menu.classList.remove('show');\r\n this.expanded = false;\r\n }\r\n\r\n private getId(): string {\r\n return '' + Math.floor(Math.random() * Date.now())\r\n }\r\n}","import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output } from \"@angular/core\";\r\nimport { AdbDropdownService } from \"./adb-dropdown.service\";\r\n\r\n@Directive({\r\n selector: '[adbDropdown2]',\r\n exportAs: 'adbDropdown',\r\n standalone: false\r\n})\r\nexport class AdbDropdown2Directive {\r\n\r\n constructor(\r\n private elementRef: ElementRef,\r\n private adbDropdownService: AdbDropdownService) {\r\n this.id = this.getId();\r\n this.dropId = this.getId();\r\n }\r\n\r\n @Output() adbDropdown = new EventEmitter();\r\n @Input() insideClick = false;\r\n\r\n @HostBinding('id')\r\n id: string;\r\n\r\n @HostBinding('attr.data-toggle')\r\n dataToggle = \"dropdown\";\r\n\r\n @HostBinding('attr.aria-haspopup')\r\n haspPopup = true;\r\n\r\n @HostBinding('attr.aria-expanded')\r\n expanded = false;\r\n\r\n @HostBinding('attr.aria-controls')\r\n dropId: string;\r\n\r\n @HostListener('click')\r\n onClick(): void {\r\n this.adbDropdownService.currentMenuId = this.id;\r\n const node = this.elementRef.nativeElement.parentNode;\r\n const menu = node.querySelector('.dropdown-menu');\r\n if (menu) {\r\n this.adbDropdownService.currentMenu = this.elementRef.nativeElement;\r\n this.setMenuPosition(node, menu);\r\n menu.setAttribute('id', this.dropId);\r\n if (menu.classList.contains('show')) {\r\n menu.classList.remove('show');\r\n this.expanded = false;\r\n } else {\r\n this.adbDropdown.emit();\r\n menu.classList.add('show');\r\n this.expanded = true;\r\n }\r\n }\r\n }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n onCheckOutSideClick(target: any): void {\r\n if (this.adbDropdownService.currentMenuId === this.id) {\r\n const parent = this.insideClick ? this.elementRef.nativeElement.parentNode : this.elementRef.nativeElement;\r\n const clickedInside = parent.contains(target);\r\n if (!clickedInside) {\r\n const parent = this.elementRef.nativeElement.parentNode.querySelector('.dropdown-menu');\r\n parent?.classList.remove('show');\r\n this.expanded = false;\r\n }\r\n } else {\r\n const parent = this.elementRef.nativeElement.parentNode.querySelector('.dropdown-menu');\r\n parent?.classList.remove('show');\r\n this.expanded = false;\r\n }\r\n }\r\n\r\n @HostListener('window:scroll')\r\n onWindowScroll(): void {\r\n const node = this.elementRef.nativeElement.parentNode;\r\n const menu = node.querySelector('.dropdown-menu');\r\n if (menu.classList?.contains('show')) {\r\n this.setMenuPosition(node, menu);\r\n }\r\n }\r\n\r\n private setMenuPosition(dropdownNode: any, menu: any): void {\r\n const toggleButton = dropdownNode.querySelector('.dropdown-toggle');\r\n menu.setAttribute('style', 'visibility:hidden');\r\n menu.setAttribute('style', 'display:block');\r\n const menuWidth = menu.offsetWidth;\r\n menu.setAttribute('style', 'visibility:visible');\r\n menu.setAttribute('style', 'display:none');\r\n const buttonRect = toggleButton.getBoundingClientRect();\r\n let menuPosition = `top:${buttonRect.bottom}px;left:${buttonRect.left}px;position:fixed;`;\r\n if (menu.classList?.contains('dropdown-menu-end')) {\r\n menuPosition = `top:${buttonRect.bottom}px;left:${buttonRect.right-menuWidth}px;position:fixed;`;\r\n }\r\n menu.setAttribute('style', menuPosition);\r\n }\r\n\r\n close(): void {\r\n const node = this.elementRef.nativeElement.parentNode;\r\n const menu = node.querySelector('.dropdown-menu');\r\n menu.classList.remove('show');\r\n this.expanded = false;\r\n }\r\n\r\n private getId(): string {\r\n return '' + Math.floor(Math.random() * Date.now())\r\n }\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { AdbDirectivesModule } from \"../../directives/directives.module\";\r\nimport { AdbDropdownDirective } from \"./adb-dropdown.directive\";\r\nimport { AdbDropdownService } from \"./adb-dropdown.service\";\r\nimport { AdbDropdown2Directive } from \"./adb-dropdown2.directive\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, TranslateModule.forChild(), AdbDirectivesModule],\r\n declarations: [AdbDropdownDirective, AdbDropdown2Directive],\r\n exports: [AdbDropdownDirective, AdbDropdown2Directive],\r\n providers: [AdbDropdownService]\r\n})\r\nexport class AdbDropdownModule { }","import { AfterViewInit, Directive, ElementRef, EventEmitter, HostBinding, OnDestroy, Output } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[onVisible]\",\r\n standalone: false\r\n})\r\nexport class InfiniteScrollComponent implements AfterViewInit, OnDestroy {\r\n @Output() public onVisible: EventEmitter<any> = new EventEmitter();\r\n @Output() public onHidden: EventEmitter<any> = new EventEmitter();\r\n \r\n @HostBinding('style.height') height = '1px';\r\n private _intersectionObserver?: IntersectionObserver;\r\n\r\n constructor(private _element: ElementRef) { }\r\n\r\n public ngAfterViewInit() {\r\n this._intersectionObserver = new IntersectionObserver(entries => {\r\n this.checkForIntersection(entries);\r\n }, {});\r\n this._intersectionObserver.observe(<Element>this._element.nativeElement);\r\n }\r\n\r\n public ngOnDestroy() {\r\n if (this._intersectionObserver) {\r\n this._intersectionObserver.disconnect();\r\n }\r\n }\r\n\r\n private checkForIntersection = (\r\n entries: Array<IntersectionObserverEntry>\r\n ) => {\r\n entries.forEach((entry: IntersectionObserverEntry) => {\r\n const isIntersecting =\r\n (<any>entry).isIntersecting &&\r\n entry.target === this._element.nativeElement;\r\n\r\n if (isIntersecting) {\r\n this.onVisible.emit();\r\n }else{\r\n this.onHidden.emit();\r\n }\r\n });\r\n };\r\n}\r\n","import { Input} from '@angular/core';\r\nimport { Directive } from '@angular/core';\r\n@Directive()\r\nexport abstract class PagerBaseDirective {\r\n private static DEFAULT_LIMIT = 10;\r\n private static VISIBLE_PAGES = 5;\r\n protected static SKIP_RESOURCE = 'offset';\r\n limit: number = PagerBaseDirective.DEFAULT_LIMIT;\r\n totalCount: number;\r\n\r\n @Input('totalCount') set setTotalCount(count: number) {\r\n this.totalCount = count;\r\n this.ngOnInitReady();\r\n }\r\n\r\n @Input('limit') set setLimit(value: number) {\r\n this.limit = value ?? PagerBaseDirective.DEFAULT_LIMIT;\r\n this.ngOnInitReady();\r\n }\r\n\r\n pages: Array<number>;\r\n amountOfPages: number;\r\n currentPage = 1;\r\n\r\n protected calculatePages(): void {\r\n if (this.totalCount >= 0 && this.limit > 0) {\r\n this.amountOfPages = Math.ceil(this.totalCount / this.limit);\r\n if ((this.currentPage + 1) > PagerBaseDirective.VISIBLE_PAGES) {\r\n this.pages = [\r\n this.currentPage - 2,\r\n this.currentPage - 1, this.currentPage];\r\n const above = this.amountOfPages - this.currentPage;\r\n if (above >= 1) {\r\n this.pages.push(this.currentPage + 1);\r\n }\r\n if (above >= 2) {\r\n this.pages.push(this.currentPage + 2);\r\n }\r\n } else if (this.totalCount) {\r\n const max = this.amountOfPages > PagerBaseDirective.VISIBLE_PAGES ? 5 : this.amountOfPages;\r\n this.pages = Array(Math.ceil(max)).fill(1).map((x, i) => i + 1);\r\n }\r\n } else {\r\n this.amountOfPages = 0;\r\n }\r\n }\r\n\r\n protected abstract ngOnInitReady():void;\r\n}\r\n","import { Component, Input, OnDestroy } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { PagerBaseDirective } from './pager-base.directive';\r\n\r\n@Component({\r\n selector: 'adb-pager-nav',\r\n templateUrl: 'pager.html',\r\n standalone: false\r\n})\r\nexport class PagerComponent extends PagerBaseDirective implements OnDestroy {\r\n private subscription = new Subscription();\r\n @Input() offsetName: string = \"offset\";\r\n @Input() infiniteLimit = false;\r\n params: { first: any, prev: any, pages?: any[], next: any, last: any };\r\n constructor(private activatedRoute: ActivatedRoute) {\r\n super();\r\n }\r\n\r\n ngOnInitReady() {\r\n this.subscription.add(this.activatedRoute.queryParams.subscribe(params => {\r\n if (params[this.offsetName]) {\r\n this.currentPage = (+params[this.offsetName] / this.limit) + 1;\r\n } else {\r\n this.currentPage = 1;\r\n }\r\n this.calculatePages();\r\n //create model\r\n this.params = {\r\n first: { [this.offsetName]: 0 },\r\n prev: { [this.offsetName]: (this.currentPage - 2) * this.limit },\r\n pages: [],\r\n next: { [this.offsetName]: this.currentPage * this.limit },\r\n last: { [this.offsetName]: (this.amountOfPages - 1) * this.limit },\r\n };\r\n if (this.pages) {\r\n for (const page of this.pages) {\r\n this.params.pages.push({ name: page, params: { [this.offsetName]: (page - 1) * this.limit } });\r\n }\r\n }\r\n\r\n }));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","@if (pages&&pages.length>1&&currentPage<=amountOfPages) {\r\n <nav class=\"d-flex justify-content-end my-1\">\r\n <ul class=\"pagination flex-wrap mb-0\">\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.first\" queryParamsHandling=\"merge\"\r\n [ngClass]=\"{'pe-none opacity-50':currentPage===1}\" [attr.aria-disabled]=\"currentPage===1\">\r\n <i class=\"fas fa-chevron-double-left\"></i>\r\n </a>\r\n </li>\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.prev\" queryParamsHandling=\"merge\"\r\n [ngClass]=\"{'pe-none opacity-50':currentPage===1}\" [attr.aria-disabled]=\"currentPage===1\">\r\n <i class=\"fas fa-chevron-left\"></i>\r\n </a>\r\n </li>\r\n @for (page of params.pages; track page) {\r\n <li class=\"page-item\" [class.active]=\"currentPage===page.name\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"page.params\"\r\n queryParamsHandling=\"merge\">{{page.name}}</a>\r\n </li>\r\n }\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.next\" queryParamsHandling=\"merge\"\r\n [ngClass]=\"{'pe-none opacity-50':currentPage>=amountOfPages}\" [attr.aria-disabled]=\"currentPage>=amountOfPages\">\r\n <i class=\"fas fa-chevron-right\"></i>\r\n </a>\r\n </li>\r\n @if (!infiniteLimit) {\r\n @if ((amountOfPages-1)*limit<10000) {\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.last\" queryParamsHandling=\"merge\"\r\n [attr.aria-disabled]=\"currentPage>=amountOfPages\" [ngClass]=\"{'pe-none opacity-50':currentPage>=amountOfPages}\">\r\n <i class=\"fas fa-chevron-double-right\"></i>\r\n </a>\r\n </li>\r\n }\r\n }\r\n @if (infiniteLimit) {\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.last\" queryParamsHandling=\"merge\"\r\n [attr.aria-disabled]=\"currentPage>=amountOfPages\" [ngClass]=\"{'pe-none opacity-50':currentPage>=amountOfPages}\">\r\n <i class=\"fas fa-chevron-double-right\"></i>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n </nav>\r\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { PagerBaseDirective } from './pager-base.directive';\r\n\r\n@Component({\r\n selector: 'adb-pager',\r\n templateUrl: 'pager-inline.html',\r\n standalone: false\r\n})\r\nexport class PagerInlineComponent extends PagerBaseDirective {\r\n @Output() pageChanged = new EventEmitter<number>();\r\n @Input() infiniteLimit = false;\r\n constructor() {\r\n super();\r\n }\r\n \r\n ngOnInitReady(): void {\r\n this.calculatePages();\r\n }\r\n\r\n onFirstClick(): void {\r\n this.currentPage = 1;\r\n this.pageChanged.emit(this.currentPage - 1);\r\n this.calculatePages();\r\n }\r\n onPrevClick(): void {\r\n this.currentPage = this.currentPage - 1;\r\n this.pageChanged.emit(this.currentPage - 1);\r\n this.calculatePages();\r\n }\r\n onPageClick(page: number): void {\r\n this.currentPage = page;\r\n this.pageChanged.emit(this.currentPage - 1);\r\n }\r\n onNextClick(): void {\r\n this.currentPage = this.currentPage + 1;\r\n this.pageChanged.emit(this.currentPage - 1);\r\n this.calculatePages();\r\n }\r\n onLastClick(): void {\r\n this.currentPage = this.amountOfPages;\r\n this.pageChanged.emit(this.currentPage - 1);\r\n this.calculatePages();\r\n }\r\n}\r\n","@if (pages&&pages.length>1&&currentPage<=amountOfPages) {\r\n <nav class=\"d-flex justify-content-end pr-2 my-1\">\r\n <ul class=\"pagination flex-wrap\">\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onFirstClick()\" [ngClass]=\"currentPage==1?'opacity-50 pe-none':''\" [disabled]=\"currentPage==1\">\r\n <i class=\"fas fa-chevron-double-left\"></i>\r\n </button>\r\n </li>\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onPrevClick()\" [ngClass]=\"currentPage==1?'opacity-50 pe-none':''\" [disabled]=\"currentPage==1\">\r\n <i class=\"fas fa-chevron-left\"></i>\r\n </button>\r\n </li>\r\n @for (page of pages; track page) {\r\n <li class=\"page-item\" [class.active]=\"currentPage==page\">\r\n <button class=\"page-link\" (click)=\"onPageClick(page)\">\r\n {{page}}\r\n </button>\r\n </li>\r\n }\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onNextClick()\" [ngClass]=\"currentPage>=amountOfPages?'opacity-50 pe-none':''\" [disabled]=\"currentPage>=amountOfPages\">\r\n <i class=\"fas fa-chevron-right\"></i>\r\n </button>\r\n </li>\r\n @if (!infiniteLimit) {\r\n @if ((amountOfPages-1)*limit<10000) {\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onLastClick()\" [ngClass]=\"currentPage>=amountOfPages?'opacity-50 pe-none':''\" [disabled]=\"currentPage>=amountOfPages\">\r\n <i class=\"fas fa-chevron-double-right\"></i>\r\n </button>\r\n </li>\r\n }\r\n }\r\n @if (infiniteLimit) {\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onLastClick()\" [ngClass]=\"currentPage>=amountOfPages?'opacity-50 pe-none':''\" [disabled]=\"currentPage>=amountOfPages\">\r\n <i class=\"fas fa-chevron-double-right\"></i>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </nav>\r\n}\r\n","\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { InfiniteScrollComponent } from \"./infinite-scroll.component\";\r\nimport { PagerComponent } from \"./pager\";\r\nimport { PagerInlineComponent } from \"./pager-inline\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule\r\n ],\r\n declarations: [InfiniteScrollComponent, PagerComponent, PagerInlineComponent],\r\n exports: [InfiniteScrollComponent, PagerComponent, PagerInlineComponent]\r\n})\r\nexport class AdbPagersModule { }","import { Component, Input, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { EnvironmentService } from \"./environment.service\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { TranslateService, TranslationObject } from \"@ngx-translate/core\";\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Navigation } from \"./navigation.model\";\r\n\r\n@Component({\r\n selector: 'adb-artportalen-footer',\r\n templateUrl: './adb-artportalen-footer.component.html',\r\n standalone: false\r\n})\r\nexport class ArtportalenFooterComponent implements OnInit,OnDestroy {\r\n private subscription = new Subscription();\r\n translationFinished = false;\r\n url: string;\r\n navigation: Navigation;\r\n baseUrl: any;\r\n constructor(\r\n private httpClient: HttpClient,\r\n private envService: EnvironmentService,\r\n public trans: TranslateService) {\r\n\r\n }\r\n ngOnInit(): void {\r\n this.url = window.location.href;\r\n this.baseUrl = this.envService.environment.resourceUrl;\r\n this.initTranslations(this.baseUrl);\r\n }\r\n\r\n private initTranslations(baseUrl: string): void {\r\n this.loadTranslation(baseUrl, this.trans.getCurrentLang());\r\n this.subscription.add(this.trans.onLangChange.subscribe((event) => {\r\n this.translationFinished = false;\r\n this.loadTranslation(baseUrl, event.lang);\r\n }));\r\n }\r\n\r\n private loadTranslation(baseUrl: string, lang: string): void {\r\n //TODO: Prepare for diffents lang then en sv (en-GB) or add more files in devcomponentserver :)\r\n const url = baseUrl + `/assets/artportalen/i18n/${lang}.json`;\r\n this.subscription.add(this.httpClient.get<TranslationObject>(url).subscribe(translations => {\r\n this.trans.setTranslation(lang, translations, true);\r\n this.translationFinished = true;\r\n }));\r\n }\r\n\r\n \r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}","@if (translationFinished) {\r\n <footer class=\"bg-primary-dark py-2 mt-auto container-fluid\">\r\n <div class=\"d-flex justify-content-center\">\r\n <div class=\"container py-3 px-5 justify-content-center text-white\">\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-2\"></div>\r\n <div class=\"col-md-4 mb-3\">\r\n <a href=\"https://www.slu.se/artdatabanken/rapportering-och-fynd/artportalen/om\" class=\"d-block text-white mb-2\">{{'FOOTER.ABOUT'|translate}}</a>\r\n <a href=\"https://www.slu.se/artdatabanken/rapportering-och-fynd/artportalen/artportalen-tillganglighetsredogorelse\" class=\"d-block text-white mb-2\">{{'FOOTER.WCAG'|translate}}</a>\r\n <a href=\"https://www.slu.se/artdatabanken/om-oss/kontakt/artportalen-support\" class=\"d-block text-white mb-2\"><span class=\"me-1\">{{'FOOTER.SUPPORT'|translate}}</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://www.slu.se/artdatabanken/rapportering-och-fynd/villkor-kontohavare\" class=\"d-block text-white mb-2\"><span class=\"me-1\">{{'FOOTER.TERMS_OF_USE'|translate}}</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://www.slu.se/artdatabanken/om-oss/behandling-av-personuppgifter\" class=\"d-block text-white mb-2\"><span class=\"me-1\">{{'FOOTER.PERSONAL_DATA'|translate}}</span><span class=\"fas fa-external-link\"></span></a>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"mb-2\" style=\"font-variant: small-caps;\"><sub><strong>{{'FOOTER.PARTNERS'|translate}}</strong></sub></div>\r\n <a href=\"https://birdlife.se\" class=\"d-block text-white mb-2\"><span class=\"me-1\">BirdLife Sverige</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://svenskbotanik.se\" class=\"d-block text-nowrap text-white mb-2\"><span class=\"me-1\">Svenska Botaniska Föreningen</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://www.sef.nu\" class=\"d-block text-nowrap text-white mb-2\"><span class=\"me-1\">Sveriges Entomologiska Förening</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://www.svampar.se\" class=\"d-block text-nowrap text-white mb-2\"><span class=\"me-1\">Sveriges Mykologiska Förening</span><span class=\"fas fa-external-link\"></span></a>\r\n </div>\r\n <div class=\"col-md-2\"></div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-2\"></div>\r\n <div class=\"col-md-4\">\r\n <div class=\"mb-3 text-white\">\r\n <div>{{'FOOTER.INFO'|translate}}</div>\r\n <div>{{'FOOTER.INFO2'|translate}}</div>\r\n <div>{{'FOOTER.INFO3'|translate}}\r\n <a href=\"https://www.naturvardsverket.se\" class=\"text-white mb-2\"><u class=\"me-1\">Naturvårdsverket.</u><span class=\"fas fa-external-link\"></span></a>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">{{'FOOTER.INFO4'|translate}}.</div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <a class=\"text-white text-decoration-none d-flex gap-2 mb-3\" href=\"https://www.artdatabanken.se/\" target=\"new\">\r\n <img class=\"d-block d-md-none\" style=\"height: 2.6rem;\" src=\"/assets/images/slu.svg\" alt=\"logo\">\r\n <img class=\"d-none d-md-block\" style=\"height: 2rem;\" src=\"/assets/images/slu.svg\" alt=\"logo\">\r\n <div class=\"border-end d-none d-sm-block\"></div>\r\n <div class=\"border-end d-block d-sm-none\"></div>\r\n <img class=\"d-none d-md-block align-self-center pe-5\" style=\"height: 0.7rem;\" src=\"/assets/images/artdatabanken.svg\" alt=\"logo\">\r\n <img class=\"d-block d-md-none align-self-center pe-5\" style=\"height: 0.8rem;\" src=\"/assets/images/artdatabanken.svg\" alt=\"logo\">\r\n </a>\r\n </div>\r\n <div class=\"col-md-2\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </footer>\r\n}","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { RouterModule } from '@angular/router';\r\nimport { AdbDirectivesModule } from '../../directives/directives.module';\r\nimport { ArtportalenNavComponent } from './adb-artportalen-nav.component';\r\nimport { AdbDropdownModule } from '../adb-dropdown/adb-dropdown.module';\r\nimport { AdbPagersModule } from '../pagers/pagers.module';\r\nimport { ArtportalenFooterComponent } from './adb-artportalen-footer.component';\r\n\r\n@NgModule({ declarations: [\r\n ArtportalenNavComponent,\r\n ArtportalenFooterComponent\r\n ],\r\n exports: [\r\n ArtportalenNavComponent,\r\n ArtportalenFooterComponent\r\n ], imports: [CommonModule,\r\n RouterModule,\r\n TranslateModule,\r\n AdbDirectivesModule,\r\n AdbDropdownModule,\r\n AdbPagersModule], \r\n providers: [EnvironmentService,provideHttpClient(withInterceptorsFromDi())] })\r\nexport class ArtportalenNavModule {\r\n public static forRoot(environment: any): ModuleWithProviders<ArtportalenNavModule> {\r\n return {\r\n ngModule: ArtportalenNavModule,\r\n providers: [\r\n EnvironmentService,\r\n {\r\n provide: 'env', // you can also use InjectionToken\r\n useValue: environment\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","import { DatePipe } from \"@angular/common\";\r\nimport { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\n@Pipe({\r\n name: 'adbLocaleDate',\r\n pure: false,\r\n standalone: false\r\n})\r\nexport class LocaleDatePipe implements PipeTransform {\r\n constructor(private translate: TranslateService) {}\r\n transform(value: any, format: string) {\r\n return new DatePipe(this.translate.currentLang).transform(value, format, null, this.translate.currentLang);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'adbEmptyValue',\r\n standalone: false\r\n})\r\nexport class EmptyValuePipe implements PipeTransform {\r\n transform(value: any) {\r\n if (!value) {\r\n return '-';\r\n }\r\n if (String(value).trim() === '') {\r\n return '-';\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'adbHighlight',\r\n standalone: false\r\n})\r\nexport class HighlightPipe implements PipeTransform {\r\n forbiddenSymbols = /[`!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?~]/;\r\n transform(value: any, searchs: any): any {\r\n if (!value) { return value; }\r\n value = value + '';\r\n if (searchs) {\r\n if (!Array.isArray(searchs)) {\r\n searchs = searchs.split(' ').filter(s => s);\r\n }\r\n for (let search of searchs) {\r\n if (this.forbiddenSymbols.test(search)) {\r\n search = search.replace(this.forbiddenSymbols, '');\r\n }\r\n const normalizedSearch = this.normalizeText(search);\r\n const normalizedValue = this.normalizeText(value);\r\n const start = normalizedValue ? normalizedValue.indexOf(normalizedSearch) : -1;\r\n if (start !== -1) {\r\n const regex = new RegExp(`(${search})(?![^<]*>)`, 'gi');\r\n const match = value.match(regex);\r\n if (match) {\r\n value = value.replace(regex, '<mark>$1</mark>');\r\n }\r\n }\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n private normalizeText(text: string): string {\r\n return text?.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '').toLocaleLowerCase();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'adbSpacing',\r\n pure: false,\r\n standalone: false\r\n})\r\nexport class NumberSpacingPipe implements PipeTransform {\r\n transform(value) {\r\n // If value is empty, 0 is falsy so perform an extra check to not make '0' to an empty string\r\n if (!value && value !== 0) {\r\n return '';\r\n }\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'adbHighlightHtml',\r\n standalone: false\r\n})\r\nexport class HighlightHtmlPipe implements PipeTransform {\r\n forbiddenSymbols = /[`!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?~]/;\r\n transform(value: any, searchs: any): any {\r\n if (!value) { return value; }\r\n value = value + '';\r\n if (searchs) {\r\n if (!Array.isArray(searchs)) {\r\n searchs = searchs.split(' ').filter(s => s);\r\n }\r\n for (let search of searchs) {\r\n if (this.forbiddenSymbols.test(search)) {\r\n search = search.replace(this.forbiddenSymbols, '');\r\n }\r\n const normalizedSearch = this.normalizeText(search);\r\n const normalizedValue = this.normalizeText(value);\r\n const start = normalizedValue ? normalizedValue.indexOf(normalizedSearch) : -1;\r\n if (start !== -1) {\r\n const regex =new RegExp(`([^<\\\\w]|^)(${this.escapeRegExp(search)})(?![^<]*>)`, 'gi');\r\n value = value.replace(regex, '$1<mark>$2</mark>');\r\n }\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n private normalizeText(text: string): string {\r\n return text?.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '').toLocaleLowerCase();\r\n }\r\n\r\n private escapeRegExp(text: string): string {\r\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { LocaleDatePipe } from \"./date.pipe\";\r\nimport { EmptyValuePipe } from \"./emptyValue.pipe\";\r\nimport { HighlightPipe } from \"./highlight.pipe\";\r\nimport { NumberSpacingPipe } from \"./number-spacing.pipe\";\r\nimport { HighlightHtmlPipe } from \"./highlight-html.pipe\";\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [HighlightPipe, HighlightHtmlPipe, NumberSpacingPipe, LocaleDatePipe, EmptyValuePipe],\r\n exports: [HighlightPipe, HighlightHtmlPipe, NumberSpacingPipe, LocaleDatePipe, EmptyValuePipe]\r\n})\r\nexport class AdbPipesModule { }","import { Component, ElementRef, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { addDays, addMonths, addYears, eachDayOfInterval, eachWeekOfInterval, endOfDay, endOfMonth, getHours, getISOWeek, getMinutes, getMonth, isSameDay, isSameMonth, isSameYear, isValid, isWithinInterval, parseISO, startOfDay, startOfMonth, subMonths, subYears } from \"date-fns\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Component({\r\n selector: 'adb-date-picker',\r\n templateUrl: './adb-date-picker.component.html',\r\n standalone: false\r\n})\r\nexport class AdbDatePickerComponent implements OnInit, OnDestroy {\r\n private subscriptions = new Subscription();\r\n static MONTHS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\r\n static WEEK_DAYS = ['1', '2', '3', '4', '5', '6', '7'];\r\n static YEAR_INTERVALL = 8;\r\n currentdDate: Date = new Date();\r\n currentMonth: number;\r\n\r\n selectedDate: Date = new Date();\r\n years: { value: Date, title: string, isThisYear: boolean }[];\r\n months: { value: number, isThisMonth: boolean }[];\r\n weekDays = AdbDatePickerComponent.WEEK_DAYS;\r\n weeks: PickerWeek[];\r\n range: { start: any; end: any; };\r\n noYearMode = false;;\r\n\r\n @Input() initialDate: Date;\r\n @Input() settings: any;\r\n @Input() toLeft: boolean;\r\n\r\n @HostBinding('id')\r\n @Input() id: string;\r\n\r\n @Output() selectDate = new EventEmitter<Date>();\r\n\r\n constructor(public elementRef: ElementRef, private translate: TranslateService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.settings) {\r\n if (this.settings?.minDate || this.settings?.maxDate) {\r\n const minDate = AdbDatePickerComponent.parseDate(this.settings.minDate);\r\n const maxDate = AdbDatePickerComponent.parseDate(this.settings.maxDate);\r\n this.range = {\r\n start: minDate ? startOfDay(minDate) : subYears(new Date(), 1000),\r\n end: maxDate ? endOfDay(maxDate) : addYears(new Date(), 1000)\r\n };\r\n }\r\n if(this.settings.noYear){\r\n this.noYearMode = this.settings.noYear;\r\n }\r\n }\r\n this.selectedDate = this.currentdDate = this.initialDate ?? new Date();\r\n this.currentMonth = getMonth(this.selectedDate);\r\n this.createCalendar()\r\n }\r\n\r\n onShowYear(): void {\r\n this.months = null;\r\n this.loadYearsInterval();\r\n }\r\n\r\n onShowMonth(): void {\r\n this.years = null;\r\n this.loadMonths();\r\n }\r\n\r\n onSelectYear(inYear?: Date): void {\r\n this.selectedDate.setFullYear(inYear.getFullYear());\r\n this.loadMonths();\r\n this.years = null;\r\n }\r\n\r\n onSelectMonth(inMonth?: number): void {\r\n this.selectedDate.setMonth(inMonth);\r\n this.currentMonth = getMonth(this.selectedDate);\r\n this.createCalendar();\r\n this.years = null;\r\n this.months = null;\r\n }\r\n\r\n onPrev(): void {\r\n if (this.years) {\r\n this.selectedDate = subYears(this.selectedDate, AdbDatePickerComponent.YEAR_INTERVALL);\r\n this.loadYearsInterval();\r\n } else if (this.months) {\r\n this.selectedDate = subYears(this.selectedDate, 1);\r\n this.loadMonths();\r\n } else {\r\n this.selectedDate = subMonths(this.selectedDate, 1);\r\n this.createCalendar();\r\n }\r\n this.currentMonth = getMonth(this.selectedDate);\r\n }\r\n\r\n onNext(): void {\r\n if (this.years) {\r\n this.selectedDate = addYears(this.selectedDate, AdbDatePickerComponent.YEAR_INTERVALL);\r\n this.loadYearsInterval();\r\n } else if (this.months) {\r\n this.selectedDate = addYears(this.selectedDate, 1);\r\n this.loadMonths();\r\n } else {\r\n this.selectedDate = addMonths(this.selectedDate, 1);\r\n this.createCalendar();\r\n }\r\n this.currentMonth = getMonth(this.selectedDate);\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n\r\n private loadMonths(): void {\r\n this.months = AdbDatePickerComponent.MONTHS.map(x => {\r\n return {\r\n value: x,\r\n isThisMonth: getMonth(this.selectedDate) === x && isSameYear(this.currentdDate, this.selectedDate)\r\n }\r\n });\r\n }\r\n\r\n private loadYearsInterval() {\r\n let year = subYears(this.selectedDate, AdbDatePickerComponent.YEAR_INTERVALL);\r\n const years = [];\r\n for (let i = 0; i < 16; i++) {\r\n years.push({\r\n value: year,\r\n title: year.getFullYear(),\r\n isThisYear: isSameYear(year, this.currentdDate)\r\n });\r\n year = addYears(year, 1);\r\n }\r\n this.years = years;\r\n }\r\n\r\n onSelectDate(day: PickerDay): void {\r\n this.selectDate.emit(day.value);\r\n }\r\n\r\n private createCalendar() {\r\n const weeks = [];\r\n const monthInterval = { start: startOfMonth(this.selectedDate), end: endOfMonth(this.selectedDate) };\r\n var fnsWweeks = eachWeekOfInterval(monthInterval, { weekStartsOn: this.translate.currentLang === 'sv' || this.translate.currentLang === 'sv-SE' ? 1 : 0 });\r\n for (const fnsWeek of fnsWweeks) {\r\n const week = { weekNumber: 0, days: [] };\r\n week.weekNumber = getISOWeek(new Date(fnsWeek));\r\n const weekInterval = { start: new Date(fnsWeek), end: addDays(new Date(fnsWeek), 6) };\r\n week.days = eachDayOfInterval(weekInterval).map(day => {\r\n day.setHours(getHours(new Date()));\r\n day.setMinutes(getMinutes(new Date()));\r\n return {\r\n value: day,\r\n isSelected: isSameYear(day, this.initialDate) && isSameDay(day, this.initialDate) && isSameMonth(day, this.initialDate),\r\n isInRange: this.range ? isWithinInterval(day, this.range) : true,\r\n isToday: isSameDay(day, new Date()),\r\n inMonth: monthInterval.start.getMonth() === day.getMonth()\r\n };\r\n });\r\n weeks.push(week);\r\n }\r\n this.weeks = weeks;\r\n }\r\n\r\n static parseDate(value: Date | string): Date {\r\n if (typeof value === 'string') {\r\n if (isValid(parseISO(value))) {\r\n return parseISO(value);\r\n } else {\r\n return null;\r\n }\r\n } else if (value instanceof Date) {\r\n return value;\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\nexport interface PickerWeek {\r\n weeks: {\r\n weekNumber: number;\r\n days: PickerDay[]\r\n }[];\r\n}\r\n\r\nexport interface PickerDay {\r\n value: Date,\r\n isToday: boolean,\r\n isInRange: boolean,\r\n inMonth: boolean,\r\n isSelected: boolean\r\n}","<div class=\"position-relative\" [class.to-left]=\"toLeft\">\r\n <nav class=\"bg-white shadow rounded position-absolute\">\r\n <header class=\"bg-primary p-2 rounded-top d-flex justify-content-between align-items-center gap-1\">\r\n <button tabIndex=\"-1\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onPrev()\" [disabled]=\"noYearMode&&currentMonth===0\"><span class=\"fa fa-chevron-left\"></span></button>\r\n <ng-container *ngIf=\"!years&&!months\">\r\n <button tabIndex=\"-1\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onShowMonth();$event.stopPropagation()\">{{selectedDate|adbLocaleDate:'MMM'}}</button>\r\n <button *ngIf=\"!noYearMode\" tabIndex=\"-1\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onShowYear();$event.stopPropagation()\">{{selectedDate|date:'yyyy'}}</button>\r\n </ng-container>\r\n <button tabIndex=\"-1\" *ngIf=\"years\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"years=null;$event.stopPropagation()\">{{years[0].title}} - {{years[years.length-1].title}}</button>\r\n <button tabIndex=\"-1\" *ngIf=\"months\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onShowYear();$event.stopPropagation()\">{{selectedDate|date:'yyyy'}}</button>\r\n <button tabIndex=\"-1\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onNext()\" [disabled]=\"noYearMode&&currentMonth===11\"><span class=\"fa fa-chevron-right\"></span></button>\r\n </header>\r\n <div class=\"p-0 border calendar\">\r\n <ul class=\"list-unstyled row\" *ngIf=\"years\">\r\n <li class=\"col-3 text-center px-2 py-3\" *ngFor=\"let year of years\">\r\n <button type=\"button\" tabIndex=\"-1\" class=\"btn btn-sm btn-outline-secondary rounded-pill\" (click)=\"onSelectYear(year.value);$event.stopPropagation()\" [class.active]=\"year.hasObservation\" [ngClass]=\"{'border border-secondary':year.isThisYear}\">{{year.title}}</button>\r\n </li>\r\n </ul>\r\n <ul class=\"list-unstyled row\" *ngIf=\"months\">\r\n <li class=\"col-4 text-center px-2 py-3\" *ngFor=\"let month of months\">\r\n <button type=\"button\" tabIndex=\"-1\" class=\"btn btn-sm btn-outline-secondary rounded-pill\" (click)=\"onSelectMonth(month.value);$event.stopPropagation()\" [class.active]=\"month.observation\" [ngClass]=\"{'border border-secondary':month.isThisMonth}\">\r\n {{'MONTHS.'+(month.value+1)|translate}}\r\n </button>\r\n </li>\r\n </ul>\r\n <div class=\"days\" *ngIf=\"!years&&!months\">\r\n <div class=\"text-center border-bottom py-2 text-muted\" *ngFor=\"let weekDay of weekDays\">{{'WEEK_DAYS.'+weekDay|translate}}</div>\r\n <ng-container *ngFor=\"let week of weeks\">\r\n <button tabIndex=\"-1\" class=\"btn rounded-circle p-0\" *ngFor=\"let day of week.days\" (click)=\"onSelectDate(day)\" type=\"button\" \r\n [class.border]=\"day.isToday\" [class.bg-primary]=\"day.isSelected\" [class.text-white]=\"day.isSelected\" [ngClass]=\"{'pe-none text-muted opacity-50':!day.inMonth||!day.isInRange}\">\r\n <small>{{day.value|date:'d'}}</small>\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </nav>\r\n</div>\r\n","import { ComponentRef, Inject, Injectable } from \"@angular/core\";\r\nimport { BehaviorSubject, Subject } from \"rxjs\";\r\nimport { AdbDatePickerComponent } from \"./adb-date-picker.component\";\r\n\r\n@Injectable()\r\nexport class AdbDatePickerService {\r\n viewRef: ComponentRef<AdbDatePickerComponent>;\r\n}","import { formatDate } from \"@angular/common\";\r\nimport { Directive, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Input, OnChanges, OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef } from \"@angular/core\";\r\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from \"@angular/forms\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { isValid, parseISO } from \"date-fns\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { AdbDatePickerComponent } from \"./adb-date-picker.component\";\r\nimport { AdbDatePickerService } from \"./adb-date-picker.service\";\r\n\r\n@Directive({\r\n selector: `input[adbDatepicker]`,\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => AdbDatePickerDirective),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: AdbDatePickerDirective,\r\n multi: true,\r\n },],\r\n standalone: false\r\n})\r\nexport class AdbDatePickerDirective implements ControlValueAccessor, Validator, OnInit, OnDestroy {\r\n private subscriptions = new Subscription();\r\n @HostBinding('autocomplete') autocomplete = 'off';\r\n @Output() adbBlur = new EventEmitter<Date>();\r\n @Input() format = 'yyyy-MM-dd';\r\n @Input() toLeft: boolean;\r\n @Input() settings: { maxDate?: Date | string, minDate?: Date | string } = null;\r\n id: string;\r\n currentDate: Date;\r\n isValid: boolean;\r\n\r\n constructor(\r\n private viewContainerRef: ViewContainerRef,\r\n private renderer: Renderer2,\r\n private elementRef: ElementRef,\r\n private adbDatePickerService: AdbDatePickerService,\r\n public translate: TranslateService) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.elementRef.nativeElement.setAttribute(\"placeholder\", this.format);\r\n }\r\n\r\n @HostListener('click')\r\n onClick(): void {\r\n if (this.adbDatePickerService.viewRef) {\r\n this.adbDatePickerService.viewRef.destroy();\r\n }\r\n const viewRef = this.viewContainerRef.createComponent<AdbDatePickerComponent>(AdbDatePickerComponent);\r\n viewRef.instance.settings = this.settings;\r\n viewRef.instance.toLeft = this.toLeft;\r\n viewRef.instance.initialDate = this.currentDate;\r\n this.id = this.getId();\r\n viewRef.instance.id = this.id;\r\n viewRef.instance.selectDate.subscribe((date) => {\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', formatDate(date, this.format, this.translate.currentLang));\r\n this.onChange(date);\r\n this.currentDate = date;\r\n this.onHide();\r\n this.adbBlur.emit(date);\r\n });\r\n this.adbDatePickerService.viewRef = viewRef;\r\n }\r\n\r\n @HostListener('keyup', ['$event']) public onKeyup(event: KeyboardEvent): void {\r\n const date = AdbDatePickerDirective.tryParse((event.target as HTMLInputElement).value);\r\n if (date) {\r\n const now = new Date();\r\n date.setHours(now.getHours()); date.setMinutes(now.getMinutes()); date.setSeconds(now.getSeconds());\r\n this.onChange(date);\r\n } else {\r\n this.onChange((event.target as HTMLInputElement).value); //send inccorect values to form\r\n }\r\n }\r\n\r\n @HostListener('keydown.shift.tab')\r\n @HostListener('keydown.tab')\r\n onTabDown(): void {\r\n this.updateValueOnLeave();\r\n this.onHide();\r\n this.adbBlur.emit(this.currentDate);\r\n }\r\n\r\n @HostListener('keydown.esc')\r\n onEscdOWN(): void {\r\n this.updateValueOnLeave();\r\n this.onHide();\r\n }\r\n\r\n\r\n onHide(): void {\r\n this.adbDatePickerService.viewRef = null;\r\n this.viewContainerRef.detach();\r\n this.viewContainerRef.clear();\r\n }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n onCheckOutSideClick(target: any): void {\r\n const nativeElement = this.adbDatePickerService.viewRef?.instance.elementRef.nativeElement ?? null;\r\n if (nativeElement) {\r\n if (nativeElement.id === this.id) {\r\n if (!target.hasAttribute('adbdatepicker')) {\r\n const clickedInside = nativeElement.contains(target);\r\n if (!clickedInside) {\r\n this.updateValueOnLeave();\r\n this.onHide();\r\n this.adbBlur.emit(this.currentDate);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private updateValueOnLeave(): void {\r\n if (this.isValid) {\r\n if (this.currentDate) {\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', formatDate(this.currentDate, this.format, this.translate.currentLang));\r\n } else {\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', '');\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n\r\n //Validator\r\n validate(control: AbstractControl): ValidationErrors {\r\n const value = control.value;\r\n if (!value) {\r\n this.currentDate = null;\r\n this.isValid = true;\r\n return null;\r\n }\r\n if (value instanceof Date) {\r\n this.currentDate = value;\r\n this.isValid = true;\r\n return null;\r\n }\r\n if (typeof value === 'string' || value instanceof String) {\r\n const date = AdbDatePickerDirective.tryParse(value as string);\r\n if (!date) {\r\n this.isValid = false;\r\n return { date: true }\r\n }\r\n }\r\n this.isValid = true;\r\n return null;\r\n }\r\n\r\n //ControlValueAccessor\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n onValidationChange: any = () => { };\r\n\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this.onValidationChange = fn;\r\n }\r\n\r\n writeValue(value: Date | string): void {\r\n if (!value) {\r\n this.currentDate = null;\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', '');\r\n return;\r\n }\r\n if (typeof value === 'string' || value instanceof String) {\r\n const date = AdbDatePickerDirective.tryParse(value as string);\r\n if (!date) {\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\r\n return;\r\n }\r\n value = date;\r\n }\r\n if (value instanceof Date) {\r\n this.currentDate = value;\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', formatDate(this.currentDate, this.format, this.translate.currentLang));\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.viewContainerRef.clear();\r\n }\r\n\r\n static tryParse(dateString: string): Date {\r\n const parsed = parseISO(dateString);\r\n return isValid(parsed) ? parsed : null;\r\n }\r\n\r\n private getId(): string {\r\n return '' + Math.floor(Math.random() * Date.now())\r\n }\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { AdbDirectivesModule } from \"../../directives/directives.module\";\r\nimport { AdbPipesModule } from \"../../pipes/pipes.module\";\r\nimport { AdbDatePickerComponent } from \"./adb-date-picker.component\";\r\nimport { AdbDatePickerDirective } from \"./adb-date-picker.directive\";\r\nimport { AdbDatePickerService } from \"./adb-date-picker.service\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, TranslateModule.forChild(), AdbPipesModule, AdbDirectivesModule],\r\n declarations: [AdbDatePickerComponent, AdbDatePickerDirective],\r\n exports: [AdbDatePickerComponent, AdbDatePickerDirective],\r\n providers: [AdbDatePickerService]\r\n})\r\nexport class AdbDatePickerModule { }","import { ApplicationRef, ComponentFactoryResolver, EmbeddedViewRef, Injectable, Injector, Renderer2, RendererFactory2 } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\nimport { AdbConfirmModal, DialogModel } from \"./adb-confirm-modal\";\r\n\r\n@Injectable()\r\nexport class AdbModalService {\r\n private closeSubject = new Subject<boolean>();\r\n close$ = this.closeSubject.asObservable();\r\n\r\n renderer: Renderer2;\r\n domElem: HTMLElement;\r\n backdrop: any;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n rendererFactory: RendererFactory2,\r\n private appRef: ApplicationRef,\r\n private injector: Injector) {\r\n this.renderer = rendererFactory.createRenderer(null, null);\r\n }\r\n\r\n hide(confirm: boolean): void {\r\n this.closeSubject.next(confirm);\r\n document.body.removeChild(this.domElem);\r\n document.body.removeChild(this.backdrop);\r\n var main = this.renderer.selectRootElement('main',true);\r\n this.renderer.removeAttribute(main, 'inert');\r\n this.closeSubject.unsubscribe();\r\n this.closeSubject = new Subject<boolean>();\r\n this.close$ = this.closeSubject.asObservable();\r\n }\r\n\r\n showConfirm(model: DialogModel): void {\r\n var main = this.renderer.selectRootElement('main',true);\r\n main.setAttribute('inert','');\r\n this.backdrop = this.renderer.createElement('div');\r\n this.backdrop.classList.add('modal-backdrop', 'fade', 'show');\r\n this.renderer.appendChild(document.body, this.backdrop);\r\n\r\n let componentRef = this.componentFactoryResolver.resolveComponentFactory(AdbConfirmModal).create(this.injector);\r\n model.header = model.header ?? 'NOT_SET';\r\n model.text = model.text ?? 'NOT_SET';\r\n model.confirm = model.confirm ?? 'OK';\r\n model.decline = model.decline ?? 'CANCEL';\r\n model.showDecline = model.showDecline ?? true;\r\n componentRef.instance.model = model;\r\n\r\n this.appRef.attachView(componentRef.hostView);\r\n this.domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(this.domElem);\r\n }\r\n}","import { AfterViewInit, Component, ElementRef, Input } from '@angular/core';\r\nimport { AdbModalService } from './adb-modal.service';\r\n@Component({\r\n templateUrl: 'adb-confirm-modal.html',\r\n standalone: false\r\n})\r\nexport class AdbConfirmModal implements AfterViewInit {\r\n @Input() public model: DialogModel;\r\n constructor(public modalRef: AdbModalService, private elementRef: ElementRef) {\r\n\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const element = this.elementRef.nativeElement.querySelector('#modal-close');\r\n if (element) {\r\n element.focus();\r\n }\r\n }\r\n\r\n onClose(confirm: boolean): void {\r\n this.modalRef.hide(confirm);\r\n }\r\n}\r\n\r\nexport interface DialogModel {\r\n header: string;\r\n text: string;\r\n confirm?: string;\r\n decline?: string;\r\n showDecline?: boolean;\r\n value?: any;\r\n}\r\n","@if (model) {\r\n <div class=\"modal fade show\" role=\"dialog\"\r\n attr.aria-labelledby=\"mod_header\"\r\n attr.aria-describedby=\"mod_desc\">\r\n <div class=\"modal-dialog modal-dialog-centered\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h1 class=\"h-subsection mb-0 modal-title\" id=\"mod_header\">{{model.header|translate}}</h1>\r\n <button type=\"button\" class=\"btn-close\" id=\"modal-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\" (click)=\"onClose(false)\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div id=\"mod_desc\">{{model.text|translate}}</div>\r\n @if (model.value) {\r\n <div>\r\n <strong>{{model.value}}</strong>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"modal-footer\">\r\n <div class=\"d-flex gap-2 justify-content-end\">\r\n @if (model.showDecline) {\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"onClose(false)\">{{model.decline|translate}}</button>\r\n }\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onClose(true)\">{{model.confirm|translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { AdbDirectivesModule } from \"../../directives/directives.module\";\r\nimport { AdbConfirmModal } from \"./adb-confirm-modal\";\r\nimport { AdbModalService } from \"./adb-modal.service\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, TranslateModule.forChild(), AdbDirectivesModule],\r\n declarations: [AdbConfirmModal],\r\n exports: [AdbConfirmModal],\r\n providers: [AdbModalService]\r\n})\r\nexport class AdbModalModule { }","import { ApplicationRef, ComponentFactoryResolver, EmbeddedViewRef, Injectable, Injector, Renderer2, RendererFactory2 } from \"@angular/core\";\r\nimport { Observable, of, Subject } from \"rxjs\";\r\nimport { delay } from \"rxjs/operators\";\r\nimport { AdbToast } from \"./adb-toast\";\r\n@Injectable()\r\nexport class AdbToastService {\r\n private toasts = new Array<ToastMessage>();\r\n private toastsSubject = new Subject<ToastMessage[]>();\r\n $toasts: Observable<ToastMessage[]> = this.toastsSubject.asObservable();\r\n renderer: Renderer2;\r\n domElement: HTMLElement;\r\n container: any;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private rendererFactory: RendererFactory2,\r\n private appRef: ApplicationRef,\r\n private injector: Injector) {\r\n }\r\n\r\n add(toastMessage: ToastMessage, time = 4000): void {\r\n this.addContainer();\r\n toastMessage.type = toastMessage.type ? toastMessage.type : ToastType.Primary;\r\n toastMessage.index = this.toasts.length;\r\n toastMessage.delay = of(toastMessage).pipe(delay(time)).subscribe(toast => {\r\n this.remove(toast);\r\n });\r\n this.toasts.push(toastMessage);\r\n this.toastsSubject.next(this.toasts);\r\n }\r\n\r\n remove(toast: ToastMessage) {\r\n this.toasts = this.toasts?.filter(x => x.index !== toast.index);\r\n this.toastsSubject.next(this.toasts);\r\n }\r\n\r\n private addContainer(): void {\r\n if (!this.container) {\r\n this.renderer = this.rendererFactory.createRenderer(null, null);\r\n //create container i top\r\n this.container = this.renderer.createElement('div');\r\n this.renderer.appendChild(document.body, this.container);\r\n let componentRef = this.componentFactoryResolver.resolveComponentFactory(AdbToast).create(this.injector);\r\n this.appRef.attachView(componentRef.hostView);\r\n const element = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n this.container.prepend(element);\r\n }\r\n }\r\n}\r\nexport interface ToastMessage {\r\n header?: string,\r\n headerValue?: any;\r\n message: string,\r\n messageValue?: any;\r\n type?: ToastType,\r\n index?: number;\r\n delay?: any;\r\n}\r\nexport enum ToastType {\r\n Primary = 1,\r\n Success = 2,\r\n Warn = 3,\r\n Danger = 4\r\n}","\r\nimport { Component } from '@angular/core';\r\nimport { AdbToastService, ToastMessage, ToastType } from './adb-toast.service';\r\n@Component({\r\n templateUrl: 'adb-toast.html',\r\n standalone: false\r\n})\r\nexport class AdbToast {\r\n toasts: ToastMessage[];\r\n toastType = ToastType;\r\n constructor(public toastService: AdbToastService) {\r\n this.toastService.$toasts.subscribe(toasts => {\r\n this.toasts = toasts;\r\n });\r\n }\r\n onRemoveToast(toast: ToastMessage): void {\r\n this.toastService.remove(toast);\r\n }\r\n}","<div class=\"position-fixed bottom-0 end-0\" style=\"z-index: 50000;min-width: 15rem;\">\r\n @for (toast of toasts; track toast) {\r\n <div class=\"alert alert-dismissible\" role=\"alert\"\r\n [class.alert-primary]=\"toast.type===toastType.Primary\"\r\n [class.alert-success]=\"toast.type===toastType.Success\"\r\n [class.alert-warning]=\"toast.type===toastType.Warn\"\r\n [class.alert-danger]=\"toast.type===toastType.Danger\">\r\n @if (toast.header) {\r\n <div class=\"d-flex align-items-center justify-content-between pb-1\">\r\n @if (!toast.headerValue) {\r\n <div class=\"fw-bold pb-1\">{{toast.header|translate}}</div>\r\n }\r\n @if (toast.headerValue) {\r\n <div class=\"fw-bold pb-1\">{{(toast.header|translate:toast.headerValue )}}</div>\r\n }\r\n <button type=\"button\" class=\"btn-close\" (click)=\"onRemoveToast(toast)\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\r\n </div>\r\n }\r\n <div class=\"d-flex align-items-center justify-content-between mt-1\">\r\n @if (!toast.messageValue) {\r\n <div>{{toast.message|translate}}</div>\r\n }\r\n @if (toast.messageValue) {\r\n <div>{{(toast.message|translate:toast.messageValue )}}</div>\r\n }\r\n <button type=\"button\" class=\"btn-close\" (click)=\"onRemoveToast(toast)\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\r\n </div>\r\n </div>\r\n }\r\n</div>","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { AdbDirectivesModule } from \"../../directives/directives.module\";\r\nimport { AdbToast } from \"./adb-toast\";\r\nimport { AdbToastService } from \"./adb-toast.service\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, TranslateModule.forChild(), AdbDirectivesModule],\r\n declarations: [AdbToast],\r\n exports: [AdbToast],\r\n providers: [AdbToastService]\r\n})\r\nexport class AdbToastModule { }","import { Component, ElementRef, HostBinding, HostListener, Input, OnInit } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'adb-help-button',\r\n templateUrl: 'help-button.component.html',\r\n standalone: false\r\n})\r\nexport class AdbHelpButtonComponent implements OnInit {\r\n showHelp = false;\r\n @Input() buttonClass = 'btn btn-invisible p-0';\r\n @Input() iconClass = 'fas fa-question-circle text-primary';\r\n @Input() label = '';\r\n id: number;\r\n @HostListener('document:click', ['$event'])\r\n public onClickDoc(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n const parent = target.parentElement;\r\n const clickedInside = this.elementRef.nativeElement.contains(parent);\r\n if (!clickedInside) {\r\n this.showHelp = false;\r\n }\r\n }\r\n\r\n\r\n constructor(private elementRef: ElementRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.id = + Math.floor(Math.random() * Date.now())\r\n }\r\n\r\n onClose(): void {\r\n const node = this.elementRef.nativeElement.parentNode;\r\n if (node) {\r\n if (this.showHelp) {\r\n node.classList.remove('position-relative');\r\n } else {\r\n node.classList.add('position-relative');\r\n }\r\n }\r\n this.showHelp = !this.showHelp\r\n }\r\n}","<button type=\"button\"\r\n class=\"w-auto d-flex gap-1 align-items-baseline help-button\"\r\n [ngClass]=\"buttonClass\"\r\n [attr.aria-controls]=\"id\" aria-label=\"Help\"\r\n [attr.aria-expanded]=\"showHelp\" (click)=\"onClose()\">\r\n <span [ngClass]=\"iconClass\"></span>\r\n {{label}}\r\n</button>\r\n<div>\r\n @if (showHelp) {\r\n <div [id]=\"id\" class=\"position-absolute start-0 w-100 adb-plate-primary text-start shadow\" style=\"z-index:4\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"flex-grow-1\"><ng-content></ng-content></div>\r\n <div class=\"ms-auto align-self-start d-flex align-items-start\">\r\n <button type=\"button\" class=\"btn-close p-1\" data-bs-dismiss=\"modal\" aria-label=\"Close\" (click)=\"showHelp=false\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { AdbDirectivesModule } from \"../../directives/directives.module\";\r\nimport { AdbHelpButtonComponent } from \"./help-button.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, AdbDirectivesModule],\r\n declarations: [AdbHelpButtonComponent],\r\n exports: [AdbHelpButtonComponent]\r\n})\r\nexport class AdbButtonsModule { }","import {\r\n Component,\r\n ElementRef,\r\n forwardRef,\r\n Input,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\ntype FormatType = 'italic' | 'bold';\r\n\r\nconst FORMAT_MARKERS: Record<FormatType, string[]> = {\r\n italic: ['*', '_'],\r\n bold: ['**', '__']\r\n};\r\n\r\nconst DEFAULT_MARKER: Record<FormatType, string> = {\r\n italic: '*',\r\n bold: '**'\r\n};\r\n\r\n@Component({\r\n selector: 'adb-rich-editor',\r\n templateUrl: './adb-rich-editor.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AdbRichEditorComponent),\r\n multi: true\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class AdbRichEditorComponent\r\n implements ControlValueAccessor, OnDestroy {\r\n\r\n text = '';\r\n\r\n @Input() hasTaxon = false;\r\n @Input() hasReference = false;\r\n @Input() rows = 3;\r\n\r\n constructor(private el: ElementRef) {}\r\n\r\n private getTextarea(): HTMLTextAreaElement | null {\r\n return this.el.nativeElement.querySelector('textarea');\r\n }\r\n\r\n onDoubleClick(): void {\r\n const textarea = this.getTextarea();\r\n if (!textarea) return;\r\n\r\n const start = textarea.selectionStart;\r\n let end = textarea.selectionEnd;\r\n\r\n while (end > start && textarea.value[end - 1] === ' ') {\r\n end--;\r\n }\r\n\r\n textarea.setSelectionRange(start, end);\r\n }\r\n\r\n\r\n onItalicClick(): void {\r\n this.applyFormatting('italic');\r\n }\r\n\r\n onBoldClick(): void {\r\n this.applyFormatting('bold');\r\n }\r\n\r\n private applyFormatting(type: FormatType): void {\r\n const textarea = this.getTextarea();\r\n if (!textarea) return;\r\n\r\n const start = textarea.selectionStart;\r\n const end = textarea.selectionEnd;\r\n const value = textarea.value;\r\n\r\n if (start === end) {\r\n const marker = DEFAULT_MARKER[type];\r\n const newValue =\r\n value.slice(0, start) +\r\n marker +\r\n marker +\r\n value.slice(start);\r\n\r\n this.updateValue(newValue);\r\n\r\n const cursor = start + marker.length;\r\n textarea.focus();\r\n textarea.setSelectionRange(cursor, cursor);\r\n return;\r\n }\r\n\r\n const existingMarker = this.findWrappingMarker(\r\n value,\r\n start,\r\n end,\r\n FORMAT_MARKERS[type]\r\n );\r\n\r\n const marker = existingMarker ?? DEFAULT_MARKER[type];\r\n\r\n const newValue = existingMarker\r\n ? value.slice(0, start - marker.length) +\r\n value.slice(start, end) +\r\n value.slice(end + marker.length)\r\n : value.slice(0, start) +\r\n marker +\r\n value.slice(start, end) +\r\n marker +\r\n value.slice(end);\r\n\r\n this.updateValue(newValue);\r\n\r\n const cursorStart = existingMarker\r\n ? start - marker.length\r\n : start + marker.length;\r\n\r\n const cursorEnd = existingMarker\r\n ? end - marker.length\r\n : end + marker.length;\r\n\r\n textarea.focus();\r\n textarea.setSelectionRange(cursorStart, cursorEnd);\r\n }\r\n\r\n private findWrappingMarker(\r\n value: string,\r\n start: number,\r\n end: number,\r\n markers: string[]\r\n ): string | null {\r\n return (\r\n markers.find(marker =>\r\n value.substring(start - marker.length, start) === marker &&\r\n value.substring(end, end + marker.length) === marker\r\n ) ?? null\r\n );\r\n }\r\n\r\n onTaxonClick(): void {\r\n this.replaceMarked('[Name](taxon:0)');\r\n }\r\n\r\n onReferenceClick(): void {\r\n this.replaceMarked('[Name](reference:0)');\r\n }\r\n\r\n private replaceMarked(replaceTag: string): void {\r\n const textarea = this.getTextarea();\r\n if (!textarea) return;\r\n\r\n const start = textarea.selectionStart;\r\n const end = textarea.selectionEnd;\r\n const value = textarea.value;\r\n\r\n const before = start > 0 ? value[start - 1] : '';\r\n const after = end < value.length ? value[end] : '';\r\n\r\n const spaceBefore = before && !/\\s/.test(before) ? ' ' : '';\r\n const spaceAfter = after && !/\\s/.test(after) ? ' ' : '';\r\n\r\n const newValue =\r\n value.slice(0, start) +\r\n spaceBefore +\r\n replaceTag +\r\n spaceAfter +\r\n value.slice(end);\r\n\r\n this.updateValue(newValue);\r\n\r\n const nameStart = newValue.indexOf('Name', start);\r\n if (nameStart === -1) return;\r\n\r\n const nameEnd = nameStart + 'Name'.length;\r\n\r\n requestAnimationFrame(() => {\r\n textarea.focus();\r\n textarea.setSelectionRange(nameStart, nameEnd);\r\n });\r\n }\r\n\r\n // ---------------------------------------\r\n // ControlValueAccessor\r\n // ---------------------------------------\r\n onChange: (value: string) => void = () => {};\r\n onTouched: () => void = () => {};\r\n\r\n writeValue(value: string): void {\r\n this.text = value ?? '';\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n // Intentionally left minimal\r\n // Disabled state should be handled via template binding\r\n }\r\n\r\n onTextChange(): void {\r\n this.onChange(this.text);\r\n }\r\n\r\n private updateValue(value: string): void {\r\n this.text = value;\r\n this.onChange(this.text);\r\n }\r\n\r\n ngOnDestroy(): void {}\r\n}\r\n","<div>\r\n <div class=\"d-flex justify-content-end gap-3 mb-1\">\r\n <button class=\"btn btn-secondary\" (click)=\"onItalicClick()\" title=\"Italic\" aria-label=\"Italic\" type=\"button\"><span class=\"fas fa-italic\"></span></button>\r\n <button class=\"btn btn-secondary\" (click)=\"onBoldClick()\" title=\"Italic\" aria-label=\"strong\" type=\"button\"><span class=\"fas fa-bold\"></span></button>\r\n @if (hasTaxon) {\r\n <button class=\"btn btn-secondary\" (click)=\"onTaxonClick()\" title=\"Taxon\" aria-label=\"Taxon\" type=\"button\"><span class=\"fas fa-bug\"></span></button>\r\n }\r\n @if (hasReference) {\r\n <button class=\"btn btn-secondary\" (click)=\"onReferenceClick()\" title=\"Reference\" aria-label=\"Reference\" type=\"button\"><span class=\"fas fa-asterisk\"></span></button>\r\n }\r\n </div>\r\n <textarea class=\"form-control\" [(ngModel)]=\"text\" (ngModelChange)=\"onTextChange()\" [rows]=\"rows\" (dblclick)=\"onDoubleClick()\"></textarea>\r\n</div>\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface RichModuleConfig {\r\n taxonUrl: string;\r\n}\r\n\r\nexport const RICH_MODULE_CONFIG = new InjectionToken<RichModuleConfig>('richModule.config');\r\n","import { Component, Inject, Input } from '@angular/core';\r\nimport { RICH_MODULE_CONFIG, RichModuleConfig } from './rich-module-config';\r\n\r\nexport interface RichTextPart {\r\n type: 'text' | 'italic' | 'bold' | 'taxon' | 'term' | 'reference';\r\n content: string;\r\n id?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'adb-rich-text',\r\n templateUrl: './adb-rich-text.html',\r\n standalone: false\r\n})\r\nexport class RichTextComponent {\r\n @Input() text: string = '';\r\n\r\n parts: RichTextPart[] = [];\r\n taxonUrl: string;\r\n\r\n constructor(@Inject(RICH_MODULE_CONFIG) config: RichModuleConfig) {\r\n this.taxonUrl = config.taxonUrl;\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.parts = this.text\r\n ? this.parseCustomMarkdown(this.text)\r\n : [];\r\n }\r\n\r\n private parseCustomMarkdown(input: string): RichTextPart[] {\r\n const parts: RichTextPart[] = [];\r\n const boldRegex = /(\\*\\*|__)(.+?)\\1/g;\r\n const italicRegex = /(\\*|_)([^*_]+?)\\1/g;\r\n const taxonRegex = /\\[([^\\]]+)\\]\\(taxon:([^)]+)\\)/g;\r\n const termRegex = /\\[([^\\]]+)\\]\\(term:([^)]+)\\)/g;\r\n const referenceRegex = /\\[([^\\]]+)\\]\\(reference:([^)]+)\\)/g;\r\n\r\n const combinedRegex = new RegExp(\r\n [\r\n boldRegex.source,\r\n italicRegex.source,\r\n taxonRegex.source,\r\n termRegex.source,\r\n referenceRegex.source\r\n ].join('|'),\r\n 'g'\r\n );\r\n\r\n let lastIndex = 0;\r\n let match: RegExpExecArray | null;\r\n\r\n while ((match = combinedRegex.exec(input)) !== null) {\r\n if (match.index > lastIndex) {\r\n parts.push({\r\n type: 'text',\r\n content: input.slice(lastIndex, match.index)\r\n });\r\n }\r\n\r\n if (match[2]) {\r\n parts.push({\r\n type: 'bold',\r\n content: match[2]\r\n });\r\n }\r\n else if (match[4]) {\r\n parts.push({\r\n type: 'italic',\r\n content: match[4]\r\n });\r\n }\r\n else if (match[5]) {\r\n parts.push({\r\n type: 'taxon',\r\n content: match[5],\r\n id: match[6]\r\n });\r\n }\r\n else if (match[7]) {\r\n parts.push({\r\n type: 'term',\r\n content: match[7],\r\n id: match[8]\r\n });\r\n }\r\n else if (match[9]) {\r\n parts.push({\r\n type: 'reference',\r\n content: match[9],\r\n id: match[10]\r\n });\r\n }\r\n lastIndex = combinedRegex.lastIndex;\r\n }\r\n if (lastIndex < input.length) {\r\n parts.push({\r\n type: 'text',\r\n content: input.slice(lastIndex)\r\n });\r\n }\r\n return parts;\r\n }\r\n}\r\n","<div style=\"white-space: pre-wrap;\">\r\n @for (part of parts; track part) {\r\n @if (part.type === 'text') {\r\n <span>{{ part.content }}</span>\r\n }\r\n @if (part.type === 'italic') {\r\n <em>{{ part.content }}</em>\r\n }\r\n @if (part.type === 'bold') {\r\n <b>{{ part.content }}</b>\r\n }\r\n @if (part.type === 'taxon') {\r\n <a [href]=\"taxonUrl + part.id\">{{ part.content }}</a>\r\n }\r\n @if (part.type === 'term') {\r\n <span>{{ part.content }}</span>\r\n }\r\n @if (part.type === 'reference') {\r\n <span>{{ part.content }}</span>\r\n }\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AdbRichEditorComponent } from './adb-rich-editor.component';\r\nimport { RichTextComponent } from './adb-rich-text';\r\nimport { RICH_MODULE_CONFIG, RichModuleConfig } from './rich-module-config';\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormsModule],\r\n declarations: [AdbRichEditorComponent, RichTextComponent],\r\n exports: [AdbRichEditorComponent, RichTextComponent]\r\n})\r\nexport class AdbRichEditorModule {\r\n static forRoot(config: RichModuleConfig): ModuleWithProviders<AdbRichEditorModule> {\r\n return {\r\n ngModule: AdbRichEditorModule,\r\n providers: [\r\n { provide: RICH_MODULE_CONFIG, useValue: config }\r\n ]\r\n };\r\n }\r\n}\r\n","import { Component, ContentChild, Input, OnDestroy, OnInit, TemplateRef } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'adb-filter-section',\r\n templateUrl: './filter-section.component.html',\r\n standalone: false\r\n})\r\nexport class FilterSectionComponent implements OnInit, OnDestroy {\r\n @Input() titleResource = 'Not set';\r\n @Input() helpResource = null;\r\n @Input() count: number;\r\n @Input() expanded;\r\n @Input() lazy = false;\r\n id: number;\r\n @ContentChild(TemplateRef)\r\n template?: TemplateRef<unknown>;\r\n\r\n ngOnInit(): void {\r\n this.id = + Math.floor(Math.random() * Date.now())\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n}\r\n","<button [attr.aria-expanded]=\"expanded\" [attr.aria-controls]=\"id\" class=\"btn btn-invisible px-1 bg-white\" type=\"button\" (click)=\"expanded = !expanded\">\r\n <div class=\"d-flex align-items-center gap-1 flex-wrap \">\r\n <div class=\"d-flex align-items-center\">\r\n <i class=\"fas fa-fw\" [ngClass]=\"expanded?'fa-chevron-down':'fa-chevron-right'\"></i>\r\n {{titleResource|translate}}\r\n </div>\r\n @if(helpResource){\r\n <adb-help-button (click)=\"$event.stopPropagation()\">{{helpResource|translate}}</adb-help-button>\r\n }\r\n @if(count > 0){\r\n <div class=\"ms-auto badge bg-dark\">{{count}}</div>\r\n }\r\n </div>\r\n</button>\r\n@if (expanded) {\r\n<div class=\"px-3 pb-3 border-bottom\" [id]=\"id\">\r\n @if (lazy && template) {\r\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n</div>\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { FilterSectionComponent } from \"./filter-section.component\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { AdbButtonsModule } from \"../adb-buttons/adb-buttons.module\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormsModule, TranslateModule, AdbButtonsModule],\r\n declarations: [FilterSectionComponent],\r\n exports: [FilterSectionComponent,AdbButtonsModule]\r\n})\r\nexport class AdbFilterSectionModule { }","import { InjectionToken } from \"@angular/core\";\r\n\r\n// adb-services/adb-data-service-config.ts\r\nexport interface AdbUserServiceConfig {\r\n redirectUrl: string;\r\n clientId: string;\r\n issuer: string;\r\n scope?: string;\r\n responseType?: string;\r\n idleTime?: number;\r\n autoLogin?: boolean;\r\n postLogoutUrl?: string;\r\n overrideIssuer?: boolean,\r\n log?: boolean\r\n}\r\nexport const ADB_USER_SERVICE_CONFIG = new InjectionToken<AdbUserServiceConfig>('ADB_DATA_SERVICE_CONFIG');\r\nexport const DEFAULT_ADB_USER_SERVICE_CONFIG = {\r\n scope: 'roles profile email',\r\n idleTime: 25,\r\n autoLogin: false,\r\n response_type: 'code',\r\n overrideIssuer: false,\r\n log: false\r\n};\r\n","export class UserModuleConstants {\r\n static CURRENT_URL = \"current_url\";\r\n static CODE_VERIFIER = 'nonce';\r\n static REFRESH_TOKEN = 'refresh-token';\r\n static TOKEN_EXPIRES = 'token_expires';\r\n static ACCESS_TOKEN = 'access-token';\r\n static USER_LAST_ACTIVE = 'lastActive'\r\n static ONGOING_CODEFLOW = 'ongoing-codeflow';\r\n}\r\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\r\nimport { ADB_USER_SERVICE_CONFIG, AdbUserServiceConfig } from './adb-user-service-config';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { addSeconds, format } from 'date-fns';\r\nimport { UserModuleConstants } from './user-constants';\r\nimport { NavigationStart, Router } from '@angular/router';\r\n\r\n\r\n@Injectable()\r\nexport class AdbUserService implements OnDestroy {\r\n\r\n private subscriptions = new Subscription();\r\n private userSubject: BehaviorSubject<any> = new BehaviorSubject<any>(null);\r\n user$ = this.userSubject.asObservable();\r\n\r\n lastRefreshTime = 0;\r\n intervalId: any;\r\n // hasEmitted = false;\r\n\r\n constructor(\r\n @Inject(ADB_USER_SERVICE_CONFIG) public config: AdbUserServiceConfig,\r\n private http: HttpClient,\r\n private router: Router) {\r\n this.config = { ...{ scope: 'roles', idleTime: 30, response_type: 'code' }, ...config };\r\n }\r\n\r\n init(): void {\r\n const accessToken = sessionStorage.getItem(UserModuleConstants.ACCESS_TOKEN);\r\n if (accessToken) {\r\n const user = this.getUser(accessToken);\r\n this.userSubject.next(user);\r\n this.startMainLoop();\r\n } else if (this.config.autoLogin) {\r\n //NOTE: Avoid re-triggering login if we're in the middle of the auth-callback handling\r\n const urlParams = new URLSearchParams(window.location.search);\r\n if (urlParams.has('code')) {\r\n this.log('Detected auth callback, skipping init login.');\r\n return;\r\n }\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationStart) {\r\n this.login(event.url);\r\n }\r\n });\r\n }\r\n }\r\n\r\n startMainLoop() {\r\n this.checkStatus();\r\n this.intervalId = setInterval(() => this.checkStatus(), 60 * 1000); // 60 seconds * 1000 milliseconds\r\n }\r\n\r\n login(url: string = null): void {\r\n this.log('url when login', url);\r\n if (url) {\r\n sessionStorage.setItem(UserModuleConstants.CURRENT_URL, url);\r\n } else {\r\n sessionStorage.setItem(UserModuleConstants.CURRENT_URL, this.router.url);\r\n }\r\n this.authorize();\r\n }\r\n\r\n logout(): void {\r\n clearInterval(this.intervalId);\r\n // this.hasEmitted = false;\r\n sessionStorage.clear();\r\n window.location.href = `${this.config.issuer}/connect/endsession?post_logout_redirect_uri=${this.config.postLogoutUrl}`;\r\n }\r\n\r\n private checkStatus(): void {\r\n this.log('checkStatus runs')\r\n const accessToken = sessionStorage.getItem(UserModuleConstants.ACCESS_TOKEN);\r\n if (accessToken) {\r\n this.log('has accesstoken')\r\n const timeToLive = this.getTokenTimeToLive();\r\n this.log('timeToLive', timeToLive)\r\n if (timeToLive === 0) {\r\n sessionStorage.removeItem(UserModuleConstants.ACCESS_TOKEN);\r\n this.authorize();\r\n } else {\r\n if (this.getTokenTimeToLive() <= 60 && this.hasUserBeenActive() && this.canRefreshToken()) {\r\n console.log('token is about to timeout but we will refresh it because user has been active the last 5minutes');\r\n this.refreshToken();\r\n }\r\n //NOTE: Might not be needed in this variant\r\n // if (!this.hasEmitted) {\r\n // const user = this.getUser(accessToken);\r\n // this.userSubject.next(user);\r\n // this.hasEmitted = true;\r\n // }\r\n }\r\n }\r\n }\r\n\r\n //TODO: make it not exported by the module\r\n _internalTriggerUserEvent(token: string): void {\r\n const user = this.getUser(token);\r\n this.userSubject.next(user);\r\n\r\n }\r\n\r\n private refreshToken() {\r\n const body = `client_id=${encodeURIComponent(this.config.clientId)}&` +\r\n `grant_type=${encodeURIComponent(\"refresh_token\")}&` +\r\n `refresh_token=${encodeURIComponent(sessionStorage.getItem(UserModuleConstants.REFRESH_TOKEN))}`;\r\n this.http.post<any>(`${this.config.issuer}/connect/token`, body, { headers: new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' }) }).subscribe({\r\n next: response => {\r\n this.setTokensInSession(response);\r\n }\r\n });\r\n this.lastRefreshTime = Date.now();\r\n }\r\n\r\n setTokensInSession(params: any): void {\r\n if (params.refresh_token) {\r\n sessionStorage.setItem(UserModuleConstants.REFRESH_TOKEN, params.refresh_token);\r\n }\r\n if (params.access_token) {\r\n sessionStorage.setItem(UserModuleConstants.ACCESS_TOKEN, params.access_token);\r\n }\r\n if (params.expires_in) {\r\n const expireTime = addSeconds(new Date(), params.expires_in);\r\n sessionStorage.setItem(UserModuleConstants.TOKEN_EXPIRES, format(expireTime, 'yyyy-MM-dd HH:mm:ss'));\r\n }\r\n }\r\n\r\n async authorize() {\r\n const codeVerifier = Array.from(crypto.getRandomValues(new Uint8Array(64)), byte =>\r\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'[(byte as number) % 62]\r\n ).join('');\r\n sessionStorage.setItem(UserModuleConstants.CODE_VERIFIER, codeVerifier);\r\n\r\n const encoder = new TextEncoder();\r\n const data = encoder.encode(codeVerifier);\r\n const hashBuffer = await crypto.subtle.digest('SHA-256', data);\r\n const hashArray = new Uint8Array(hashBuffer);\r\n let codeChallenge = btoa(String.fromCharCode(...hashArray));\r\n codeChallenge = codeChallenge.replace(/=/g, '')\r\n .replace(/\\+/g, '-')\r\n .replace(/\\//g, '_');\r\n\r\n const params = {\r\n response_type: this.config.responseType,\r\n client_id: this.config.clientId,\r\n redirect_uri: this.config.redirectUrl,\r\n scope: this.config.scope,\r\n code_challenge: codeChallenge,\r\n code_challenge_method: 'S256'\r\n };\r\n const url = new URL(this.config.issuer + '/connect/authorize');\r\n url.search = this.addQueryParams(params).toString();\r\n window.location.href = url.toString();\r\n }\r\n\r\n\r\n private addQueryParams(object: any): URLSearchParams {\r\n if (!object) {\r\n return null;\r\n }\r\n const urlParams = new URLSearchParams();\r\n for (const prop in object) {\r\n urlParams.append(prop, object[prop]);\r\n }\r\n return urlParams;\r\n }\r\n\r\n private getTokenTimeToLive(): number {\r\n const expires = sessionStorage.getItem(UserModuleConstants.TOKEN_EXPIRES);\r\n if (expires) {\r\n const expireDate = new Date(expires);\r\n const now = new Date();\r\n const timeToLive = Math.floor((expireDate.getTime() - now.getTime()) / 1000);\r\n return timeToLive < 0 ? 0 : timeToLive;\r\n }\r\n return 0;\r\n }\r\n\r\n //Cooldown for avoiding infinite refresh\r\n private canRefreshToken(): boolean {\r\n const now = Date.now();\r\n if (now - this.lastRefreshTime > (2 * 60 * 1000)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private hasUserBeenActive(): boolean {\r\n const lastActive = sessionStorage.getItem(UserModuleConstants.USER_LAST_ACTIVE);\r\n if (!lastActive) {\r\n return false;\r\n }\r\n const timeSinceLastActive = Date.now() - parseInt(lastActive, 10);\r\n const idleTimeMs = this.config.idleTime * 60 * 1000;\r\n return timeSinceLastActive <= idleTimeMs;\r\n }\r\n\r\n log(message: string, ...optionalParams: any[]): void {\r\n if (this.config?.log) {\r\n if (optionalParams?.length > 0) {\r\n console.log(message, optionalParams);\r\n } else {\r\n console.log(message);\r\n }\r\n }\r\n }\r\n\r\n getUser(token: string): any {\r\n try {\r\n const [header, payload, signature] = token.split('.');\r\n const base64Url = payload.replace(/-/g, '+').replace(/_/g, '/');\r\n const decodedPayload = atob(base64Url);\r\n const utf8Decoder = new TextDecoder('utf-8');\r\n const utf8DecodedPayload = utf8Decoder.decode(new Uint8Array(decodedPayload.split('').map(char => char.charCodeAt(0))));\r\n const parsedPayload = JSON.parse(utf8DecodedPayload);\r\n return parsedPayload;\r\n } catch (error) {\r\n console.error('Error decoding JWT', error);\r\n return null;\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n\r\n}","import { Component, OnInit } from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { UserModuleConstants } from \"./user-constants\";\r\nimport { AdbUserService } from \"./adb-user.service\";\r\n\r\n@Component({\r\n template: '<div class=\"loading-dead-spinner\"></div>',\r\n standalone: false\r\n})\r\nexport class AuthCallbackComponent implements OnInit {\r\n private subscriptions = new Subscription();\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n private router: Router,\r\n private http: HttpClient,\r\n private adbUserService: AdbUserService) { }\r\n\r\n ngOnInit(): void {\r\n this.subscriptions.add(this.activatedRoute.queryParamMap.subscribe(qParmas => {\r\n if (qParmas.has('code')) {\r\n const body = `grant_type=authorization_code` +\r\n `&code=${encodeURIComponent(qParmas.get('code'))}` +\r\n `&code_verifier=${encodeURIComponent(sessionStorage.getItem(UserModuleConstants.CODE_VERIFIER))}` +\r\n `&redirect_uri=${encodeURIComponent(this.adbUserService.config.redirectUrl)}` +\r\n `&client_id=${encodeURIComponent(this.adbUserService.config.clientId)}`;\r\n\r\n this.http.post<any>(`${this.adbUserService.config.issuer}/connect/token`, body,\r\n { headers: new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded','Accept': 'application/json; charset=utf-8' }) }).subscribe({\r\n next: response => {\r\n this.adbUserService.setTokensInSession(response);\r\n let requestedUrl = sessionStorage.getItem(UserModuleConstants.CURRENT_URL) ?? null;\r\n sessionStorage.removeItem(UserModuleConstants.CURRENT_URL);\r\n this.adbUserService._internalTriggerUserEvent(response.access_token);\r\n this.adbUserService.log('redirect url in auth-callback',requestedUrl);\r\n if (requestedUrl) {\r\n this.router.navigateByUrl(decodeURIComponent(requestedUrl), { replaceUrl: true }).then(() => {\r\n this.adbUserService.startMainLoop();\r\n });\r\n }else{\r\n this.router.navigate(['/'], { replaceUrl: true }).then(() => {\r\n this.adbUserService.startMainLoop();\r\n });;\r\n }\r\n }\r\n });\r\n }\r\n }));\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpErrorResponse, HttpResponse } from '@angular/common/http';\r\nimport { catchError, Observable, throwError } from 'rxjs';\r\nimport { UserModuleConstants } from './user-constants';\r\nimport { AdbUserService } from './adb-user.service';\r\n\r\n@Injectable()\r\nexport class AdbUserInterceptor implements HttpInterceptor {\r\n private static UNAUTHENTICATED = 401;\r\n constructor(private adbUserService: AdbUserService) { }\r\n\r\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (req.headers.get('X-System-Request') !== 'true') {\r\n sessionStorage.setItem(UserModuleConstants.USER_LAST_ACTIVE, Date.now().toString());\r\n }\r\n const accessToken = sessionStorage.getItem(UserModuleConstants.ACCESS_TOKEN);\r\n if (accessToken) {\r\n const clonedRequest = req.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${accessToken}`\r\n }\r\n });\r\n return next.handle(clonedRequest).pipe(catchError((err: HttpErrorResponse) => this.handleErrors(err)));\r\n } else {\r\n return next.handle(req).pipe(catchError((err: HttpErrorResponse) => this.handleErrors(err)));;\r\n }\r\n }\r\n\r\n\r\n private handleErrors(error: HttpErrorResponse) {\r\n if (error.error instanceof ErrorEvent) {\r\n // Client-side error\r\n } else {\r\n if (error.status === AdbUserInterceptor.UNAUTHENTICATED) {\r\n // this.adbUserService.authorize();\r\n }\r\n }\r\n return throwError(() => error);\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { HTTP_INTERCEPTORS } from \"@angular/common/http\";\r\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { ADB_USER_SERVICE_CONFIG, AdbUserServiceConfig, DEFAULT_ADB_USER_SERVICE_CONFIG } from \"./adb-user-service-config\";\r\n\r\nimport { RouterModule, Routes } from \"@angular/router\";\r\nimport { AuthCallbackComponent } from \"./auth-callback.component\";\r\nimport { AdbUserService } from \"./adb-user.service\";\r\nimport { AdbUserInterceptor } from \"./adb-user.interceptor\";\r\nconst routes: Routes = [\r\n { path: 'auth-callback', component: AuthCallbackComponent }\r\n];\r\n@NgModule({\r\n imports: [CommonModule, RouterModule.forChild(routes), TranslateModule.forChild()],\r\n declarations: [AuthCallbackComponent],\r\n exports: [AuthCallbackComponent],\r\n providers: [\r\n AdbUserService,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: AdbUserInterceptor,\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class AdbUserModule {\r\n static forRoot(config?: AdbUserServiceConfig): ModuleWithProviders<AdbUserModule> {\r\n return {\r\n ngModule: AdbUserModule,\r\n providers: [\r\n {\r\n provide: ADB_USER_SERVICE_CONFIG,\r\n useValue: {\r\n ...DEFAULT_ADB_USER_SERVICE_CONFIG,\r\n ...config,\r\n scope: `${config.scope || ''} offline_access`.trim() }\r\n }\r\n ],\r\n };\r\n }\r\n}","import {\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { BehaviorSubject, Observable, of, Subscription } from 'rxjs';\r\nimport { catchError, debounceTime, map, switchMap } from 'rxjs/operators';\r\nimport { PagedResult } from '../models';\r\n\r\n@Component({\r\n selector: 'adb-generic-picker',\r\n templateUrl: './adb-generic-picker.html',\r\n standalone: false\r\n})\r\nexport class GenericPickerComponent<T> implements OnInit, OnDestroy {\r\n private readonly subs = new Subscription();\r\n private readonly searchChanged$ = new BehaviorSubject<string>('');\r\n\r\n @Input() search!: (query: string) => Observable<PagedResult<T>>;\r\n @Input() displayFn!: (item: T) => string;\r\n @Input() loadById?: (id: any) => Observable<T>;\r\n @Input() disabled = false;\r\n @Input() placeholder = '';\r\n\r\n @ContentChild('itemTemplate') itemTemplate!: TemplateRef<any>;\r\n\r\n @Output() selectItemChange = new EventEmitter<T | null>();\r\n @Output() focus = new EventEmitter<FocusEvent>();\r\n\r\n @Input()\r\n set initialValue(item: T | null) {\r\n if (item) {\r\n this.searchQuery = this.displayFn(item);\r\n } else {\r\n this.searchQuery = '';\r\n }\r\n }\r\n searchQuery = '';\r\n loading = false;\r\n error: any = null;\r\n\r\n items$: Observable<T[]> = of([]);\r\n private itemsSnapshot: T[] = [];\r\n showPop = false;\r\n rowIndex = -1;\r\n\r\n ngOnInit(): void {\r\n this.items$ = this.searchChanged$.pipe(\r\n debounceTime(300),\r\n switchMap(query => {\r\n if (!query) {\r\n this.showPop = false;\r\n this.itemsSnapshot = [];\r\n this.loading = false;\r\n return of([]);\r\n }\r\n this.loading = true;\r\n this.showPop = true;\r\n return this.search(query).pipe(\r\n map(result => {\r\n this.loading = false;\r\n const items =\r\n result?.records?.length\r\n ? result.records\r\n : result?.items ?? [];\r\n this.itemsSnapshot = items;\r\n return items;\r\n }),\r\n catchError(err => {\r\n this.loading = false;\r\n this.error = err;\r\n this.itemsSnapshot = [];\r\n return of([]);\r\n })\r\n );\r\n })\r\n );\r\n }\r\n\r\n onModelChange(): void {\r\n this.rowIndex = -1;\r\n this.loading = true;\r\n this.showPop = true;\r\n this.searchChanged$.next(this.searchQuery);\r\n }\r\n\r\n onArrowDown(): void {\r\n if (!this.itemsSnapshot.length) return;\r\n this.rowIndex = (this.rowIndex + 1) % this.itemsSnapshot.length;\r\n }\r\n\r\n onArrowUp(): void {\r\n if (!this.itemsSnapshot.length) return;\r\n this.rowIndex = (this.rowIndex - 1 + this.itemsSnapshot.length) % this.itemsSnapshot.length;\r\n }\r\n\r\n onEnter(event: KeyboardEvent): void {\r\n if (this.rowIndex < 0) return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.selectItem(this.itemsSnapshot[this.rowIndex]);\r\n }\r\n\r\n resetPopup(): void {\r\n this.showPop = false;\r\n this.itemsSnapshot = [];\r\n this.rowIndex = -1;\r\n }\r\n\r\n selectItem(item: T | null): void {\r\n this.searchQuery = item ? this.displayFn(item) : '';\r\n this.selectItemChange.emit(item);\r\n this.resetPopup();\r\n }\r\n\r\n resetModel(): void {\r\n this.selectItem(null);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","<div (adbClickOutside)=\"resetPopup()\">\r\n <div class=\"input-group\">\r\n <input [(ngModel)]=\"searchQuery\" class=\"form-control\" role=\"combobox\" aria-autocomplete=\"list\" [attr.aria-expanded]=\"showPop\" aria-controls=\"picker-listbox\" [disabled]=\"disabled\" autocomplete=\"off\" (keyup.arrowdown)=\"onArrowDown()\"\r\n (keyup.arrowup)=\"onArrowUp()\" (keydown.enter)=\"onEnter($event)\" (keydown.escape)=\"resetPopup()\" (keydown.tab)=\"resetPopup()\" (ngModelChange)=\"onModelChange()\" (focus)=\"focus.emit($event)\" [placeholder]=\"placeholder\" />\r\n @if (searchQuery && !showPop) {\r\n <div>\r\n <button type=\"button\" (click)=\"resetModel()\" class=\"btn btn-secondary border border-start-0\">\r\n <span class=\"fas fa-times\"></span>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n@let items = items$ | async;\r\n@if (showPop) {\r\n<div class=\"pop\">\r\n <div class=\"pop-body\">\r\n <div [class.loading]=\"loading\">\r\n @if (error) {\r\n <div class=\"alert alert-danger mb-0\">\r\n Serverfel\r\n </div>\r\n }\r\n @else {\r\n <ul class=\"list-group list-group-flush\" role=\"listbox\" id=\"picker-listbox\">\r\n @for (item of items; track item; let i = $index) {\r\n <li role=\"option\" class=\"list-group-item list-group-item-action pointer\" [class.active]=\"i === rowIndex\" (click)=\"$event.preventDefault(); $event.stopPropagation(); selectItem(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item, searchQuery: searchQuery }\"></ng-container>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n}","import { InjectionToken } from \"@angular/core\";\r\nimport { Inject, Injectable } from \"@angular/core\";\r\nexport interface AdbPickerConfig {\r\n api: string\r\n}\r\n\r\nexport const ADB_PICKER_CONFIG = new InjectionToken<AdbPickerConfig>('ADB_PICKER_CONFIG');\r\n\r\n@Injectable()\r\nexport class AdbPickerConfigService {\r\n readonly areas: string;\r\n readonly taxa: string;\r\n constructor(@Inject(ADB_PICKER_CONFIG) config: AdbPickerConfig) {\r\n this.areas = config.api + '/areas';\r\n this.taxa = config.api + '/taxalookup';\r\n }\r\n}","import { Component, forwardRef, HostBinding, Input, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { map, catchError, of, tap } from 'rxjs';\r\nimport { Taxon } from '../models';\r\nimport { AdbPickerConfigService } from '../adb-picker-config';\r\n\r\n@Component({\r\n selector: 'adb-taxon-picker',\r\n templateUrl: 'taxon-picker.html',\r\n standalone: false,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AdbTaxonPickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class AdbTaxonPickerComponent implements ControlValueAccessor {\r\n @HostBinding('class.w-100') fullWidth = true;\r\n\r\n @Input() placeholder = 'Sök taxon';\r\n @Input() useObject = false;\r\n @Input() prefill = false;\r\n\r\n initialValue = signal<Taxon | null>(null);\r\n isDisabled = false;\r\n loading = false;\r\n showPrefill = false;\r\n\r\n\r\n private onChange: (value: any) => void = () => { };\r\n private onTouched: () => void = () => { };\r\n\r\n constructor(\r\n private config: AdbPickerConfigService,\r\n private http: HttpClient\r\n ) { }\r\n\r\n getTaxa = (query: string) => {\r\n this.loading = true;\r\n const params = { search: query };\r\n return this.http.get<Taxon[]>(this.config.taxa, { params }).pipe(\r\n map(result => Array.isArray(result) ? { items: result } : result),\r\n tap(() => this.loading = false),\r\n catchError(() => {\r\n this.loading = false;\r\n return of({ items: [] });\r\n })\r\n );\r\n };\r\n\r\n displayTaxon = (taxon: Taxon) => {\r\n if (!taxon) return '';\r\n if (taxon.swedishName && taxon.scientificName) {\r\n return `${taxon.swedishName} ${taxon.scientificName}`;\r\n }\r\n return taxon.scientificName ?? '';\r\n };\r\n\r\n loadTaxonById(id: any) {\r\n if (!id) return of(null);\r\n this.loading = true;\r\n return this.http.get<Taxon>(`${this.config.taxa}/${id}`).pipe(\r\n tap(() => this.loading = false),\r\n catchError(() => {\r\n this.loading = false;\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n onSelect(taxon: Taxon | null) {\r\n const value = this.useObject ? taxon : taxon?.id ?? null;\r\n this.onChange(value);\r\n }\r\n\r\n onFocus() {\r\n this.showPrefill = true;\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (!value) {\r\n this.initialValue.set(null);\r\n return;\r\n }\r\n if (this.useObject) {\r\n if (value.id) {\r\n this.loadTaxonById(value.id).subscribe(taxon => {\r\n this.initialValue.set(taxon);\r\n });\r\n } else {\r\n this.initialValue.set(value);\r\n }\r\n } else {\r\n this.loadTaxonById(value).subscribe(taxon => {\r\n this.initialValue.set(taxon);\r\n });\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n}\r\n","<adb-generic-picker [search]=\"getTaxa\" [displayFn]=\"displayTaxon\" [placeholder]=\"placeholder\" [disabled]=\"isDisabled\" [initialValue]=\"initialValue()\" (selectItemChange)=\"onSelect($event)\" (focus)=\"onFocus()\">\r\n <ng-template #itemTemplate let-taxon let-searchQuery=\"searchQuery\">\r\n <div class=\"d-flex flex-wrap gap-1 align-items-center\">\r\n <div innerHTML=\"{{taxon.swedishName | adbHighlight: searchQuery}}\"></div>\r\n <em innerHTML=\"{{taxon.scientificName | adbHighlight: searchQuery}}\"></em>\r\n </div>\r\n </ng-template>\r\n</adb-generic-picker>\r\n@if (showPrefill && prefill) {\r\n<div class=\"pop\">\r\n <div class=\"pop-body\">\r\n <div class=\"p-3\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n}","\r\nimport { Component, forwardRef, HostBinding, Input, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Area, PagedResult, SOSArea } from '../models';\r\nimport { AdbPickerConfigService } from '../adb-picker-config';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { tap } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'adb-area-picker',\r\n templateUrl: 'area-picker.html',\r\n standalone: false,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AdbAreaPickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class AdbAreaPickerComponent implements ControlValueAccessor {\r\n @HostBinding('class.w-100') fullWidth = true;\r\n\r\n @Input() placeholder = 'Sök område';\r\n @Input() useObject = false;\r\n @Input() prefill = false;\r\n\r\n initialValue = signal<Area | null>(null);\r\n isDisabled = false;\r\n loading = false;\r\n showPrefill = false;\r\n\r\n\r\n private onChange: (value: any) => void = () => { };\r\n private onTouched: () => void = () => { };\r\n\r\n constructor(\r\n private translate: TranslateService,\r\n private config: AdbPickerConfigService,\r\n private http: HttpClient\r\n ) { }\r\n\r\n getAreas = (query: string) => {\r\n this.showPrefill = false;\r\n const params = { search: query, skip: 0, take: 10 };\r\n return this.http.get<PagedResult<Area>>(this.config.areas, { params: params });\r\n };\r\n\r\n displayArea = (area: SOSArea) => {\r\n if (!area || Object.keys(area).length === 0) {\r\n return '';\r\n }\r\n return area ? `${area.name} ${this.translate.instant('AREATYPES.' + area.areaType)}` : '';\r\n }\r\n\r\n loadAreaId = (id: any) => {\r\n this.loading = true;\r\n const url = `${this.config.areas}/${id}`;\r\n return this.http.get<Area>(url).pipe(\r\n tap(() => this.loading = false)\r\n );\r\n }\r\n\r\n onSelect(area: Area | null) {\r\n const value = this.useObject ? area : area?.id ?? null;\r\n this.onChange(value);\r\n }\r\n\r\n onFocus() {\r\n this.showPrefill = true;\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (!value) {\r\n this.initialValue.set(null);\r\n return;\r\n }\r\n if (this.useObject) {\r\n if (value.id) {\r\n this.loadAreaId(value.id).subscribe(area => {\r\n this.initialValue.set(area);\r\n });\r\n } else {\r\n this.initialValue.set(value);\r\n }\r\n } else {\r\n this.loadAreaId(value).subscribe(area => {\r\n this.initialValue.set(area);\r\n });\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n}","<adb-generic-picker [search]=\"getAreas\" [displayFn]=\"displayArea\" [placeholder]=\"placeholder\" [disabled]=\"isDisabled\" [initialValue]=\"initialValue()\" (selectItemChange)=\"onSelect($event)\" (focus)=\"onFocus()\">\r\n <ng-template #itemTemplate let-area let-searchQuery=\"searchQuery\">\r\n <div class=\"d-flex flex-wrap gap-1 align-items-center\">\r\n <div innerHTML=\"{{area.name|adbHighlight: searchQuery}}\"></div>\r\n <div>{{'AREATYPES.'+area.areaType|translate}}</div>\r\n </div>\r\n </ng-template>\r\n</adb-generic-picker>\r\n@if (showPrefill && prefill) {\r\n<div class=\"pop\">\r\n <div class=\"pop-body\">\r\n <div class=\"p-3\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { GenericPickerComponent } from \"./components/adb-generic-picker\";\r\nimport { ADB_PICKER_CONFIG, AdbPickerConfig, AdbPickerConfigService } from \"./adb-picker-config\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { AdbTaxonPickerComponent } from \"./components/taxon-picker\";\r\nimport { AdbDirectivesModule } from \"../../directives/directives.module\";\r\nimport { AdbPipesModule } from \"../../pipes/pipes.module\";\r\nimport { AdbAreaPickerComponent } from \"./components/area-picker\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormsModule, TranslateModule.forChild(), AdbPipesModule, AdbDirectivesModule],\r\n declarations: [\r\n GenericPickerComponent,\r\n AdbAreaPickerComponent,\r\n AdbTaxonPickerComponent\r\n ],\r\n exports: [\r\n GenericPickerComponent,\r\n AdbAreaPickerComponent,\r\n AdbTaxonPickerComponent\r\n ],\r\n providers: [AdbPickerConfigService]\r\n})\r\nexport class AdbPickerModule {\r\n static forRoot(config?: AdbPickerConfig): ModuleWithProviders<AdbPickerModule> {\r\n return {\r\n ngModule: AdbPickerModule,\r\n providers: [\r\n {\r\n provide: ADB_PICKER_CONFIG,\r\n useValue: config\r\n }\r\n ]\r\n };\r\n }\r\n}","import { MapOptions } from \"./models\";\r\nimport * as Leaflet from 'leaflet';\r\n\r\nexport class AdbMapUtils {\r\n static readonly INITIAL_CENTER_LAT = 62;\r\n static readonly INITIAL_CENTER_LNG = 17;\r\n static OverlayMaps = {\r\n 'Altitude': new Leaflet.TileLayer.WMS(\"https://maps.sgu.se/lmv/hojdmodell/v1.1?SERVICE=WMS\",\r\n { layers: \"terrangskuggning\", format: \"image/png\", transparent: true, opacity: 0.3, maxZoom: 16, version: \"1.3.0\" }),\r\n 'Fjällkarta': new Leaflet.TileLayer.WMS(\r\n 'api/maps/mountain',\r\n {\r\n minZoom: 6,\r\n maxZoom: 18,\r\n maxNativeZoom: 14,\r\n attribution: '© <a href=\"https://www.lantmateriet.se/\">Fjällkart</a>',\r\n wms: true\r\n }),\r\n 'Kommuner': new Leaflet.TileLayer.WMS(\r\n 'https://sosgeo.artdata.slu.se/geoserver/GeoRegion/wms?',\r\n {\r\n layers: 'GeoRegion:Municipality',\r\n version: '1.1.0',\r\n transparent: true,\r\n format: 'image/png'\r\n }\r\n ),\r\n 'Län': new Leaflet.TileLayer.WMS(\r\n 'https://sosgeo.artdata.slu.se/geoserver/GeoRegion/wms?',\r\n {\r\n layers: 'GeoRegion:County',\r\n version: '1.1.0',\r\n transparent: true,\r\n format: 'image/png'\r\n }\r\n )\r\n , 'Ortnamn': new Leaflet.TileLayer.WMS(\r\n \"https://maps.sgu.se/lmv/topowebb-skikt/v1.1?SERVICE=WMS\",\r\n {\r\n layers: \"text\",\r\n format: \"image/png\",\r\n transparent: true,\r\n version: \"1.3.0\",\r\n }\r\n ),\r\n 'Ekonomisk zon': new Leaflet.TileLayer.WMS(\r\n \"https://sosgeo.artdata.slu.se/geoserver/it.geosolutions/wms?\",\r\n {\r\n layers: \"it.geosolutions:Ekonomiska_zonens_yttre_avgränsningslinjer_linje\",\r\n format: \"image/png\",\r\n transparent: true,\r\n version: \"1.1.0\"\r\n }\r\n )\r\n };\r\n\r\n static Providers: MapProvider[] = [\r\n {\r\n name: 'Open Streetmap',\r\n id: 3,\r\n url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\r\n minZoom: 0,\r\n maxZoom: 18,\r\n params: {\r\n maxNativeZoom: 18,\r\n attribution: '© <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'\r\n },\r\n wms: false\r\n },\r\n {\r\n name: 'Sveriges gränser',\r\n id: 7,\r\n url: 'https://sosgeo.artdata.slu.se/geoserver/GeoRegion/wms',\r\n minZoom: 6,\r\n maxZoom: 18,\r\n params: {\r\n maxNativeZoom: 14,\r\n attribution: '© <a href=\"https://www.lantmateriet.se/\">Sveriges gränser</a>',\r\n layers: 'GeoRegion:County', styles: 'municipality_name_yellow'\r\n },\r\n wms: true\r\n }\r\n ]\r\n\r\n //NOTE: Will be move\r\n static redListMapper2 = {\r\n 'VU': '228',\r\n 'EN': '229',\r\n 'CR': '230',\r\n 'RE': '231',\r\n 'DD': '232',\r\n 'NT': '233'\r\n }\r\n\r\n static createMap(\r\n elementId: string,\r\n options: MapOptions = {}\r\n ): Leaflet.Map {\r\n\r\n const map = Leaflet.map(elementId, {\r\n zoomAnimation: false,\r\n fadeAnimation: false,\r\n markerZoomAnimation: false,\r\n inertia: false,\r\n scrollWheelZoom: options.scrollZoom ?? true,\r\n zoomControl: options.zoom ?? true,\r\n dragging: options.zoom ?? true,\r\n minZoom: -1\r\n });\r\n\r\n map.setView([62, 17], 5);\r\n\r\n Leaflet.control.scale().addTo(map);\r\n\r\n if (options.providers !== false) {\r\n this.addProviders(map);\r\n }\r\n\r\n return map;\r\n }\r\n\r\n private static addProviders(map: Leaflet.Map): void {\r\n const backgroundMaps: Record<string, Leaflet.Layer> = {};\r\n\r\n for (const value of Object.values(AdbMapUtils.Providers)) {\r\n const baseOptions = {\r\n ...value.params,\r\n updateWhenZooming: false,\r\n updateWhenIdle: true,\r\n keepBuffer: 2,\r\n crossOrigin: true\r\n };\r\n backgroundMaps[value.name] = value.wms\r\n ? Leaflet.tileLayer.wms(value.url, baseOptions)\r\n : Leaflet.tileLayer(value.url, baseOptions);\r\n }\r\n\r\n map.addLayer(backgroundMaps['Open Streetmap']);\r\n Leaflet.control.layers(backgroundMaps, AdbMapUtils.OverlayMaps).addTo(map);\r\n }\r\n}\r\n\r\ninterface MapProvider {\r\n name: string;\r\n id: number;\r\n url: string;\r\n minZoom: number;\r\n maxZoom: number;\r\n wms: boolean;\r\n params?: any;\r\n}","import {\r\n Component,\r\n forwardRef,\r\n OnDestroy,\r\n OnInit,\r\n AfterViewInit\r\n} from \"@angular/core\";\r\nimport {\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR\r\n} from \"@angular/forms\";\r\nimport Leaflet from \"leaflet\";\r\nimport \"@geoman-io/leaflet-geoman-free\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { AdbMapUtils } from \"../mapUtils\";\r\n\r\n@Component({\r\n selector: \"adb-polygon-drawer\",\r\n templateUrl: \"polygon-drawer.component.html\",\r\n standalone: false,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => PolygonDrawerInput),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class PolygonDrawerInput\r\n implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy {\r\n\r\n private subscriptions = new Subscription();\r\n\r\n mapId = \"\" + Math.floor(Math.random() * Date.now());\r\n map!: Leaflet.Map;\r\n\r\n polygonDraw = false;\r\n shapeLayer: Leaflet.GeoJSON | null = null;\r\n geoJson: any;\r\n\r\n ngAfterViewInit(): void {\r\n this.map = AdbMapUtils.createMap(this.mapId, {\r\n zoom: true,\r\n scrollZoom: true,\r\n providers: true\r\n });\r\n\r\n this.map.whenReady(() => {\r\n this.initDraw();\r\n this.renderInitialShape();\r\n });\r\n }\r\n\r\n ngOnInit(): void { }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n\r\n private initDraw(): void {\r\n this.map.pm.removeControls();\r\n this.map.pm.enableDraw('Polygon', {\r\n tooltips: false,\r\n finishOn: 'snap',\r\n snapDistance: 30, \r\n snapMiddle: false\r\n });\r\n this.map.on(\"pm:create\", (e: any) => {\r\n if (e.shape !== \"Polygon\") return;\r\n\r\n this.polygonDraw = false;\r\n this.map.pm.disableDraw();\r\n\r\n this.clearShape();\r\n\r\n this.shapeLayer = Leaflet.geoJSON(e.layer.toGeoJSON(), {\r\n interactive: false\r\n });\r\n\r\n this.map.addLayer(this.shapeLayer);\r\n this.map.fitBounds(this.shapeLayer.getBounds());\r\n\r\n this.onChange(e.layer.toGeoJSON());\r\n\r\n this.map.removeLayer(e.layer);\r\n });\r\n }\r\n\r\n private renderInitialShape(): void {\r\n if (this.geoJson?.type === \"Feature\") {\r\n this.shapeLayer = Leaflet.geoJSON(this.geoJson, {\r\n interactive: false\r\n });\r\n this.map.addLayer(this.shapeLayer);\r\n this.map.fitBounds(this.shapeLayer.getBounds());\r\n } else {\r\n this.map.setView(\r\n [AdbMapUtils.INITIAL_CENTER_LAT, AdbMapUtils.INITIAL_CENTER_LNG],\r\n 5\r\n );\r\n }\r\n }\r\n\r\n private clearShape(): void {\r\n if (this.shapeLayer) {\r\n this.map.removeLayer(this.shapeLayer);\r\n this.shapeLayer = null;\r\n }\r\n }\r\n\r\n onDrawPolygon(): void {\r\n this.polygonDraw = true;\r\n\r\n this.map.pm.enableDraw(\"Polygon\", {\r\n allowSelfIntersection: false,\r\n snappable: false\r\n });\r\n }\r\n\r\n onUndoStep(): void {\r\n const draw = (this.map.pm as any).Draw?.Polygon;\r\n draw?._removeLastVertex();\r\n }\r\n\r\n onDeleteShape(): void {\r\n this.clearShape();\r\n this.map.pm.disableDraw();\r\n this.polygonDraw = false;\r\n this.onChange(null);\r\n this.map.setView([62, 17], 5);\r\n }\r\n\r\n // ControlValueAccessor\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n writeValue(geoJson: any): void {\r\n this.geoJson = geoJson;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void { }\r\n}\r\n","<div class=\"mb-1 d-flex gap-1 flex-wrap align-items-start\">\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"onDrawPolygon()\" title=\"Polygon\">\r\n <span class=\"fas fa-draw-polygon\"></span> {{'OBSERVATION.DRAW'|translate}}\r\n </button>\r\n @if (polygonDraw) {\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"onDeleteShape()\" title=\"Ta bort\">\r\n <span class=\"fas fa-times\"></span>\r\n </button>\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"onUndoStep()\" title=\"Ångra\">\r\n <span class=\"fas fa-undo\"></span>\r\n </button>\r\n }\r\n</div>\r\n<div [id]=\"mapId\" class=\"border\" style=\"height:20rem\"></div>","import { Inject, Injectable } from \"@angular/core\";\r\nimport { InjectionToken } from \"@angular/core\";\r\nexport interface AdbMapConfig {\r\n api: string,\r\n artfaktaTaxonLists: string,\r\n observationPage?: string;\r\n filters?: AdbMapFilterType[],\r\n log?: boolean\r\n}\r\n\r\nexport enum AdbMapFilterType {\r\n Taxon = 'taxon',\r\n Area = 'area',\r\n OwnArea = 'ownArea',\r\n Time = 'time',\r\n RedList = 'redlist',\r\n RiskList = 'risklist',\r\n TaxaLists = 'taxonLists',\r\n Datasources = 'datasources'\r\n}\r\n\r\nexport class VisibleFilters {\r\n showTaxon: boolean;\r\n showTime: boolean;\r\n showArea: boolean;\r\n showOwnArea: boolean;\r\n showTaxaLists: boolean;\r\n showDatasets: boolean;\r\n}\r\n\r\nexport const ADB_MAP_CONFIG = new InjectionToken<AdbMapConfig>('ADB_MAP_CONFIG');\r\n\r\n@Injectable()\r\nexport class AdbMapConfigService {\r\n readonly log: boolean;\r\n readonly artfaktaTaxonLists: string;\r\n readonly observationFeatures: string;\r\n readonly taxaListsApi: string;\r\n readonly filters: VisibleFilters;\r\n readonly observationPage: string;\r\n\r\n constructor(@Inject(ADB_MAP_CONFIG) config: AdbMapConfig) {\r\n this.log = config.log ?? false;\r\n this.artfaktaTaxonLists = config.artfaktaTaxonLists ?? 'https://artfakta.se/metadata/listor';\r\n this.taxaListsApi = config.api + '/taxalists';\r\n this.observationFeatures = config.api + '/observation-features';\r\n this.observationPage = config.observationPage ?? 'https://mobil.artportalen.se/observationer';\r\n this.filters = {\r\n showTaxon: this.hasFilter(AdbMapFilterType.Taxon, config.filters),\r\n showTime: this.hasFilter(AdbMapFilterType.Time, config.filters),\r\n showArea: this.hasFilter(AdbMapFilterType.Area, config.filters),\r\n showOwnArea: this.hasFilter(AdbMapFilterType.OwnArea, config.filters),\r\n showTaxaLists: this.hasFilter(AdbMapFilterType.TaxaLists, config.filters),\r\n showDatasets: this.hasFilter(AdbMapFilterType.Datasources, config.filters),\r\n };\r\n }\r\n\r\n private hasFilter(f: AdbMapFilterType, filters: AdbMapFilterType[]): boolean {\r\n return filters?.includes(f) ?? true;\r\n }\r\n}","import { Component, Input, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-treeview',\r\n templateUrl: './treeview.html',\r\n standalone:false,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TreeviewComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class TreeviewComponent implements ControlValueAccessor {\r\n @Input() nodes: ListItem[] = [];\r\n\r\n private selectedIds: number[] = [];\r\n private onChange: (value: number[]) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(ids: number[] | null): void {\r\n this.selectedIds = ids ?? [];\r\n this.applySelection(this.nodes);\r\n }\r\n\r\n registerOnChange(fn: (value: number[]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.setReadOnly(this.nodes, isDisabled);\r\n }\r\n\r\n onLeafToggle(node: ListItem): void {\r\n if (node._readOnly) return;\r\n\r\n node._selected = !node._selected;\r\n\r\n this.selectedIds = TreeviewComponent.collectSelectedLeafIds(this.nodes);\r\n this.onChange(this.selectedIds);\r\n this.onTouched();\r\n }\r\n\r\n private applySelection(nodes: ListItem[]): void {\r\n for (const node of nodes) {\r\n if (node.children?.length) {\r\n this.applySelection(node.children);\r\n } else {\r\n node._selected = this.selectedIds.includes(node.id);\r\n }\r\n }\r\n }\r\n\r\n private setReadOnly(nodes: ListItem[], readOnly: boolean): void {\r\n for (const node of nodes) {\r\n node._readOnly = readOnly;\r\n if (node.children?.length) {\r\n this.setReadOnly(node.children, readOnly);\r\n }\r\n }\r\n }\r\n\r\n private static collectSelectedLeafIds(nodes: ListItem[]): number[] {\r\n const ids: number[] = [];\r\n\r\n for (const node of nodes) {\r\n if (node.children?.length) {\r\n ids.push(...this.collectSelectedLeafIds(node.children));\r\n } else if (node._selected) {\r\n ids.push(node.id);\r\n }\r\n }\r\n\r\n return ids;\r\n }\r\n}\r\n\r\n interface ListItem {\r\n id: number;\r\n name?: string;\r\n children?: ListItem[];\r\n\r\n _selected?: boolean;\r\n _readOnly?: boolean;\r\n}\r\n\r\n","<ng-container *ngTemplateOutlet=\"nodeTpl; context: { $implicit: nodes }\">\r\n</ng-container>\r\n<ng-template #nodeTpl let-nodes>\r\n @for (node of nodes; track node) {\r\n <div class=\"ms-3\">\r\n @if(!node.children || node.children.length === 0){\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <input id=\"{{node.id}}\" type=\"checkbox\" class=\"form-check-input m-0\" [checked]=\"node._selected\" [disabled]=\"node._readOnly\" (change)=\"onLeafToggle(node)\" />\r\n <label for=\"{{node.id}}\">{{ node.name }}</label>\r\n </div>\r\n }\r\n @else {\r\n {{ node.name }}\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $implicit: node.children }\">\r\n </ng-container>\r\n </div>\r\n }\r\n </div>\r\n}\r\n</ng-template>","import { AfterViewInit, Component, effect, OnDestroy, OnInit, signal } from \"@angular/core\";\r\nimport * as Leaflet from 'leaflet';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { ActivatedRoute, ParamMap, Params, Router } from \"@angular/router\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { HttpClient, HttpResponse } from \"@angular/common/http\";\r\nimport { GeoJson } from \"../models\";\r\nimport { AdbMapConfigService } from \"../config\";\r\nimport { AdbMapUtils } from \"../mapUtils\";\r\n@Component({\r\n selector: 'adb-obs-map',\r\n templateUrl: 'observations-map.html',\r\n standalone: false\r\n})\r\nexport class AdbObsMapComponent implements AfterViewInit, OnInit, OnDestroy {\r\n private subscriptions = new Subscription();\r\n error: null;\r\n mapLoading = signal(false);\r\n siteLayer: Leaflet.FeatureGroup;\r\n hasBox: boolean;\r\n count: any;\r\n mapId = '' + Math.floor(Math.random() * Date.now());\r\n map = Leaflet.map;\r\n //Lock start\r\n mapReady = signal(false);\r\n hasQueryParams = false;\r\n hasUrlParams = false;\r\n queryParams: Params;\r\n urlParams: ParamMap;\r\n //Lock end\r\n\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n private config: AdbMapConfigService,\r\n private router: Router,\r\n private http: HttpClient) {\r\n effect(() => {\r\n // This will re-run whenever mapReady() changes\r\n if (this.mapReady() && this.hasQueryParams && this.hasUrlParams) {\r\n this.tryLoad();\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.map = AdbMapUtils.createMap(this.mapId, {\r\n zoom: true,\r\n scrollZoom: false,\r\n providers: true\r\n });\r\n\r\n this.map.whenReady(() => {\r\n this.mapReady.set(true);\r\n });\r\n }\r\n\r\n // Loads data only after:\r\n // - the Leaflet map is ready\r\n // - Angular has emitted query params (may be empty)\r\n // - Angular has emitted route params (may be empty)\r\n private tryLoad(): void {\r\n if (!this.mapReady() || !this.hasQueryParams || !this.hasUrlParams) {\r\n return;\r\n }\r\n const params: Params = { ...this.queryParams };\r\n this.hasBox = params.bbox ? true : false;\r\n if (this.urlParams.has('taxonId')) {\r\n params.taxonId = this.urlParams.get('taxonId');\r\n }\r\n this.loadFeature(params);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscriptions.add(\r\n this.activatedRoute.queryParams.subscribe(q => {\r\n this.queryParams = q ?? {};\r\n this.hasQueryParams = true;\r\n this.tryLoad();\r\n })\r\n );\r\n this.subscriptions.add(\r\n this.activatedRoute.paramMap.subscribe(p => {\r\n this.urlParams = p;\r\n this.hasUrlParams = true;\r\n this.tryLoad();\r\n })\r\n );\r\n }\r\n\r\n private loadFeature(qParams: Params): void {\r\n this.mapLoading.set(true);\r\n this.error = null;\r\n const url = this.config.observationFeatures;\r\n this.subscriptions.add(this.http.get<GeoJson>(url, { observe: 'response', params: qParams }).\r\n pipe(\r\n finalize(() => {\r\n this.mapLoading.set(false);\r\n })\r\n ).\r\n subscribe({\r\n next: (response: HttpResponse<GeoJson>) => {\r\n if (!response.body) {\r\n throw new Error('No GeoJson body');\r\n }\r\n const geo = response.body;\r\n geo.properties = { count: response.headers.get('X-Observations-TotalCount') };\r\n this.buildMap(geo);\r\n }, error: err => {\r\n this.error = err;\r\n }\r\n }));\r\n }\r\n\r\n private buildMap(geojson: GeoJson): void {\r\n if (this.siteLayer) {\r\n this.map.removeLayer(this.siteLayer);\r\n }\r\n this.count = geojson?.properties?.count;\r\n this.siteLayer = Leaflet.geoJson(geojson, {\r\n style: (feature) => {\r\n return {\r\n className: `svg ${this.getPolygonClassName(feature.properties)}`, // Leaflet applies this class to the SVG path\r\n weight: 1,\r\n fillOpacity: 0.8,\r\n };\r\n },\r\n pointToLayer: (feature, latlng) => {\r\n const marker = Leaflet.marker(latlng, {\r\n icon: Leaflet.divIcon({\r\n className: '',\r\n html: '<div class=\"adb-map-marker\"></div>',\r\n iconAnchor: [3, 3]\r\n })\r\n });\r\n // if (feature.properties && feature.properties['Occurrence.OccurrenceId']) {\r\n // marker.on('click', () => {\r\n // window.location.href = this.config.observationPage + '/' + feature.properties['Occurrence.OccurrenceId'];\r\n // });\r\n // }\r\n return marker;\r\n }, onEachFeature: (feature, layer) => {\r\n if (feature.geometry.type === \"Polygon\" ||\r\n feature.geometry.type === \"MultiPolygon\") {\r\n layer.setStyle({ interactive: false });\r\n // if (feature.properties.ObservationsCount > 0) {\r\n // layer.on('click', () => {\r\n // const boundBox = JSON.stringify(this.getMapBoundsToBbox(layer.getBounds()));\r\n // this.router.navigate([], { queryParams: { bbox: boundBox }, queryParamsHandling: 'merge' });\r\n // });\r\n // layer.on('mouseover', () => {\r\n // layer.setStyle({ className: 'svg cursor-pointer' });\r\n // });\r\n // layer.on('mouseout', () => {\r\n // layer.setStyle({ className: 'svg' });\r\n // });\r\n // }\r\n // if (feature.properties.FeatureType) { //area\r\n // layer.setStyle({ interactive: false });\r\n // }\r\n }\r\n }\r\n });\r\n const circleLayer = Leaflet.featureGroup();\r\n circleLayer.addTo(this.siteLayer);\r\n this.map.addLayer(this.siteLayer);\r\n if (geojson.bbox) {\r\n const [minLon, minLat, maxLon, maxLat] = geojson.bbox;\r\n const bounds = Leaflet.latLngBounds([[minLat, minLon], [maxLat, maxLon]]);\r\n if (bounds.isValid()) {\r\n // Safari sometimes needs extra time after layer adds\r\n setTimeout(() => {\r\n this.map.invalidateSize({ animate: false });\r\n this.map.fitBounds(bounds, { animate: false });\r\n }, 50); // 30–50ms works best in Safari\r\n }\r\n }\r\n }\r\n\r\n private getPolygonClassName(props: any): string {\r\n if (props.FeatureType) {\r\n return 'map-area';\r\n }\r\n if (props.ObservationsCount < 10) return 'map-heat-low';\r\n if (props.ObservationsCount < 500) return 'map-heat-small';\r\n return 'map-heat-high';\r\n }\r\n\r\n private getMapBoundsToBbox(bounds: any): number[] {\r\n return [bounds.getNorthWest().lat, bounds.getNorthWest().lng, bounds.getSouthEast().lat, bounds.getSouthEast().lng]\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n}","<!-- @if(hasBox&&!mapLoading()){\r\n<div class=\"mb-1 d-flex justify-content-between flex-wrap\">\r\n <a [routerLink]=\"[]\" [queryParams]=\"{bbox:null,z:null}\" queryParamsHandling=\"merge\" class=\"d-flex gap-1 align-items-baseline\">\r\n <span class=\"fas fa-chevron-left\"></span>\r\n Tillbaka upp\r\n </a>\r\n</div>\r\n} -->\r\n@if(error){\r\n<div class=\"alert alert-danger\">\r\n {{'ERROR.SERVER_ERROR'|translate}}\r\n</div>\r\n}\r\n<div [class.loading]=\"mapLoading()\">\r\n <div [id]=\"mapId\" class=\"mb-1 map-container\"></div>\r\n</div>\r\n<div class=\"mb-1 d-flex gap-3 justify-content-between flex-wrap\">\r\n @if (!mapLoading()&&count) {\r\n <div class=\"d-flex align-items-center gap-1\">\r\n <div class=\"legend map-heat-low\"></div>\r\n &lt;10\r\n </div>\r\n <div class=\"d-flex align-items-center gap-1\">\r\n <div class=\"legend map-heat-medium\"></div>\r\n 10 - 500\r\n </div>\r\n <div class=\"d-flex align-items-center gap-1\">\r\n <div class=\"legend map-heat-high\"></div>\r\n &gt;500\r\n </div>\r\n <div class=\"ms-auto\">\r\n {{count|adbSpacing}} {{'OBSERVATION.OBSERVATIONS'|translate}}\r\n </div>\r\n }\r\n</div>","export const DateTypes = {\r\n THIS_YEAR: '1',\r\n LAST_YEAR: '2',\r\n ALL_YEAR: '3',\r\n LAST_5_YEAR: '4',\r\n LAST_25_YEAR: '5',\r\n CUSTOM: '6',\r\n}","import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { FormArray, FormControl, FormGroup, Validators } from \"@angular/forms\";\r\nimport { ActivatedRoute, ParamMap, Params, Router } from \"@angular/router\";\r\nimport { addYears, endOfDay, endOfYear, parseISO, startOfDay, startOfYear, subDays } from \"date-fns\";\r\nimport { catchError, combineLatest, debounceTime, map, Observable, of, shareReplay, Subscription } from \"rxjs\";\r\nimport { AdbMapConfigService, VisibleFilters } from \"../config\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { GeoJsonFeature } from \"../models\";\r\nimport { DateTypes } from \"../constants\";\r\n\r\n@Component({\r\n selector: 'adb-map-filters',\r\n templateUrl: 'map-filter.html',\r\n standalone: false\r\n})\r\nexport class AdbMapFilters implements OnInit, OnDestroy {\r\n @Input() inline = false;\r\n static datasets = ['1', '3', '5', '6', '4', '8'];\r\n artfakta = this.config.artfaktaTaxonLists;\r\n subscriptions = new Subscription();\r\n form: FormGroup;\r\n thisYear = new Date();\r\n lastYear = addYears(new Date(), -1);\r\n queryParamsMap: ParamMap;\r\n hasOwnArea: boolean;\r\n geo: GeoJsonFeature;\r\n area: { areaType: string; featureId: string; };\r\n areasArray: FormArray<any>;\r\n dataSetCount: number;\r\n taxonListCount: number;\r\n riskListCount: number;\r\n redListCount: number;\r\n areaCount: number;\r\n periodCount: number;\r\n listsError: any;\r\n filters: VisibleFilters;\r\n taxaLists: any[];\r\n hasTaxonInUrlParameter: any;\r\n dsControls: any;\r\n dateStartConfig: { maxDate: Date; };\r\n dateEndConfig: { minDate: Date; maxDate: Date; };\r\n\r\n constructor(\r\n private cdr: ChangeDetectorRef,\r\n private config: AdbMapConfigService,\r\n private http: HttpClient,\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute) {\r\n this.filters = config.filters;\r\n }\r\n\r\n ngOnInit(): void {\r\n const lists$ = this.http.get<any[]>(this.config.taxaListsApi);\r\n const combined$ = combineLatest([this.activatedRoute.paramMap, this.activatedRoute.queryParamMap, lists$])\r\n .pipe(map(results => ({ params: results[0], qParams: results[1], lists: results[2] })), debounceTime(0));\r\n this.subscriptions.add(combined$.subscribe(result => {\r\n this.form = this.createForm(result.params, result.qParams, result.lists);\r\n this.cdr.markForCheck();\r\n }));\r\n }\r\n\r\n removeArea(index: number): void {\r\n (this.form.get('areas') as FormArray).removeAt(index);\r\n this.form.markAsDirty();\r\n }\r\n\r\n addArea(): void {\r\n const areas = this.form.get('areas') as FormArray;\r\n areas.push(new FormControl(null));\r\n this.form.updateValueAndValidity();\r\n this.form.markAsDirty();\r\n }\r\n\r\n onSubmit(): void {\r\n const data = this.form.value;\r\n let params = {} as any;\r\n params.p = data.period ?? null;\r\n if (data.period === DateTypes.THIS_YEAR) {\r\n params.startAt = startOfYear(this.thisYear).toISOString();\r\n params.endAt = null;\r\n } else if (data.period === DateTypes.LAST_YEAR) {\r\n params.startAt = startOfYear(this.lastYear).toISOString();\r\n params.endAt = endOfYear(this.lastYear).toISOString();\r\n } else if (data.period === DateTypes.ALL_YEAR) {\r\n params.startAt = null;\r\n params.endAt = null;\r\n params.p = null;\r\n } else if (data.period === DateTypes.LAST_5_YEAR) {\r\n params.startAt = startOfYear(addYears(new Date(), -5)).toISOString();\r\n params.endAt = null;\r\n } else if (data.period === DateTypes.LAST_25_YEAR) {\r\n params.startAt = startOfYear(addYears(new Date(), -25)).toISOString();\r\n params.endAt = null;\r\n } else if (data.period === DateTypes.CUSTOM) {\r\n params.startAt = startOfDay(data.startAt).toISOString();\r\n params.endAt = endOfDay(data.endAt).toISOString();\r\n }\r\n if (this.hasOwnArea && data.geo) {\r\n params.geo = JSON.stringify(data.geo.geometry?.coordinates[0]);\r\n }\r\n const cleaned = data.areas?.filter(v => v != null && v !== '');\r\n if (cleaned.length > 0) {\r\n params.area = cleaned;\r\n }\r\n if (this.activatedRoute.snapshot.paramMap.has('taxonId')) {\r\n params.taxonId = this.activatedRoute.snapshot.paramMap.get('taxonId')\r\n } else {\r\n params.taxonId = data.taxonId ?? null;\r\n }\r\n if (data.list?.length > 0) {\r\n params.list = data.list;\r\n }\r\n if (data.ds?.length > 0) {\r\n const selected = data.ds.filter(f => f.selected).map(m => m.id);\r\n params.ds = selected.length ? selected : null;\r\n }\r\n this.router.navigate([], { queryParams: params, relativeTo: this.activatedRoute })\r\n }\r\n\r\n private createForm(params: Params, qMap: ParamMap, lists: any[]): FormGroup {\r\n this.hasTaxonInUrlParameter = params.has('taxonId');\r\n this.hasOwnArea = qMap.has('geo') && this.filters.showOwnArea;\r\n const areas = qMap.getAll('area').filter(a => a != null && a.trim() !== '' && a.includes('-'));\r\n const form: FormGroup = new FormGroup({\r\n period: new FormControl(qMap.has('p') ? qMap.get('p') : '3'),\r\n areas: new FormArray(\r\n (Array.isArray(areas) && areas.length ? areas : [null]).map(a => new FormControl(a))\r\n ),\r\n geo: new FormControl(qMap.has('geo') ? {\r\n type: 'Feature',\r\n geometry: { type: 'Polygon', coordinates: [JSON.parse(qMap.get('geo'))] }\r\n } : null)\r\n });\r\n this.areasArray = form.get('areas') as FormArray;\r\n this.periodCount = qMap.has('p') && qMap.get('p') !== '3' ? 1 : 0;\r\n this.areaCount = areas?.length;\r\n if (!this.hasTaxonInUrlParameter) {\r\n form.addControl('taxonId', new FormControl(qMap.get('taxonId') ?? null));\r\n const selectedTaxonList = qMap.has('list') ? qMap.getAll('list').map(val => Number(val)).filter(val => !isNaN(val)) : null;\r\n this.taxaLists = lists;\r\n this.taxonListCount = selectedTaxonList?.length;\r\n form.addControl('list', new FormControl(selectedTaxonList))\r\n let datasets = qMap.has('ds') ? (Array.isArray(qMap.getAll('ds')) ? qMap.getAll('ds') : [qMap.get('ds')]) : null;\r\n this.dataSetCount = datasets?.length;\r\n form.addControl('ds', new FormArray(\r\n AdbMapFilters.datasets.map(id => new FormGroup({\r\n id: new FormControl(id),\r\n selected: new FormControl(datasets?.includes(id))\r\n }))\r\n ));\r\n this.dsControls = (form.get('ds') as FormArray).controls;\r\n }\r\n this.updateCustomDate(form, qMap.get('p'), qMap);\r\n this.subscriptions.add(form.get('period').valueChanges.subscribe(period => {\r\n this.updateCustomDate(form, period, qMap);\r\n }));\r\n\r\n return form;\r\n }\r\n\r\n private updateCustomDate(form: FormGroup, period: string, qMap: ParamMap): void {\r\n // Remove existing controls safely\r\n if (form.contains('startAt')) {\r\n form.removeControl('startAt');\r\n }\r\n if (form.contains('endAt')) {\r\n form.removeControl('endAt');\r\n }\r\n if (period === '6') {\r\n const start = qMap.has('startAt') ? parseISO(qMap.get('startAt')) : null;\r\n const end = qMap.has('endAt') ? parseISO(qMap.get('endAt')) : null;\r\n this.dateStartConfig = { maxDate: end ?? new Date() };\r\n this.dateEndConfig = { minDate: start ?? null, maxDate: new Date() };\r\n const startControl = new FormControl(start, Validators.required);\r\n const endControl = new FormControl(end, Validators.required);\r\n form.addControl('startAt', startControl);\r\n form.addControl('endAt', endControl);\r\n this.subscriptions.add(\r\n startControl.valueChanges.subscribe(startAt => {\r\n this.dateEndConfig = { minDate: startAt ?? null, maxDate: new Date() };\r\n })\r\n );\r\n this.subscriptions.add(\r\n endControl.valueChanges.subscribe(endAt => {\r\n this.dateStartConfig = { maxDate: endAt ?? new Date() };\r\n })\r\n );\r\n }\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n}","@if(form){\r\n<form [formGroup]=\"form\" class=\"form mb-3\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"mb-3\">\r\n <adb-filter-section titleResource=\"TAXON.TAXA\" [expanded]=\"true\">\r\n @if(filters.showTaxon&&!hasTaxonInUrlParameter){\r\n <div class=\"mb-3\">\r\n <label for=\"species\">{{'TAXON.TAXON'|translate}}</label>\r\n <adb-taxon-picker formControlName=\"taxonId\" id=\"species\"></adb-taxon-picker>\r\n </div>\r\n }\r\n </adb-filter-section>\r\n @if(filters.showTime){\r\n <adb-filter-section [count]=\"periodCount\" titleResource=\"OBSERVATION.PERIOD\">\r\n <div class=\"mb-1\">\r\n <select class=\"form-select\" formControlName=\"period\" id=\"period\">\r\n <option value=\"1\">{{thisYear|date:'yyyy'}}</option>\r\n <option value=\"2\">{{lastYear|date:'yyyy'}}</option>\r\n <option value=\"3\">{{'OBSERVATION.ALL_YEAR'|translate}}</option>\r\n <option value=\"4\">{{'OBSERVATION.LAST_5_YEAR'|translate}}</option>\r\n <option value=\"5\">{{'OBSERVATION.LAST_25_YEAR'|translate}}</option>\r\n <option value=\"6\">{{'OBSERVATION.CUSTOMIZED'|translate}}</option>\r\n </select>\r\n </div>\r\n @if (form.value?.period==='6') {\r\n <div class=\"mb-2\">\r\n <label for=\"startAt\">{{'FROM' |translate}}</label>\r\n <input adbDatepicker type=\"text\" class=\"form-control datepicker\" id=\"startAt\" formControlName=\"startAt\" [settings]=\"dateStartConfig\">\r\n </div>\r\n <div class=\"mb-2\">\r\n <label for=\"endAt\">{{'TO' |translate}}</label>\r\n <input adbDatepicker type=\"text\" class=\"form-control datepicker\" id=\"endAt\" formControlName=\"endAt\" [settings]=\"dateEndConfig\">\r\n </div>\r\n }\r\n </adb-filter-section>\r\n }\r\n @if(filters.showArea){\r\n <adb-filter-section [count]=\"areaCount\" titleResource=\"GEOGRAPHY\" [lazy]=\"true\">\r\n <ng-template>\r\n @if(filters.showOwnArea){\r\n <div role=\"tablist\" aria-label=\"{{'AREA'|translate}}\" class=\"d-flex gap-2 justify-content-end\">\r\n <button class=\"btn btn-link p-0\" [class.text-dark]=\"!hasOwnArea\" (click)=\"hasOwnArea=false\" role=\"tab\" id=\"tab-select\" aria-selected=\"{{!hasOwnArea}}\" aria-controls=\"panel-select\">\r\n {{'CHOOSE'|translate}}\r\n </button>\r\n <button class=\"btn btn-link p-0\" [class.text-dark]=\"hasOwnArea\" (click)=\"hasOwnArea=true\" role=\"tab\" id=\"tab-draw\" aria-selected=\"false\" aria-controls=\"panel-draw\">\r\n {{'OWN_AREA'|translate}}\r\n </button>\r\n </div>\r\n }\r\n <div class=\"mb-2\">\r\n @if(hasOwnArea&&filters.showOwnArea){\r\n <div class=\"pt-1\" role=\"tabpanel\" id=\"area-draw\" aria-labelledby=\"tab-draw\">\r\n <div>\r\n <adb-polygon-drawer formControlName=\"geo\"></adb-polygon-drawer>\r\n </div>\r\n </div>\r\n }@else{\r\n <div role=\"tabpanel\" id=\"area-select\" aria-labelledby=\"tab-select\">\r\n <div formArrayName=\"areas\">\r\n <div class=\"d-flex align-items-end mb-1\">\r\n <label>{{'AREAS'|translate}}</label>\r\n <button class=\"ms-auto text-dark btn btn-sm btn-secondary\" attr.aria-label=\"{{'OBSERVATION.ADD_AREA'|translate}}\" title=\"{{'OBSERVATION.ADD_AREA'|translate}}\" type=\"button\" (click)=\"addArea()\">\r\n <span class=\"fas fa-plus\"></span>\r\n </button>\r\n </div>\r\n @for (ctrl of areasArray.controls; track ctrl; let i = $index; let last = $last) {\r\n <div class=\"d-flex mb-2\">\r\n <adb-area-picker id=\"area-{{i}}\" [formControlName]=\"i\"></adb-area-picker>\r\n @if(areasArray.length>1){\r\n <button class=\"btn btn-secondary ms-1\" attr.aria-label=\"{{'DELETE'|translate}}\" title=\"{{'DELETE'|translate}}\" type=\"button\" (click)=\"removeArea(i)\">\r\n <span class=\"fas fa-trash\"></span>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n </adb-filter-section>\r\n }\r\n @if(form.get('taxonId')){\r\n @if(filters.showTaxaLists){\r\n <adb-filter-section [count]=\"taxonListCount\" titleResource=\"LISTS.NATURE_CONSERVATION_LISTS\">\r\n <div class=\"mb-3\">\r\n <app-treeview formControlName=\"list\" [nodes]=\"taxaLists\"></app-treeview>\r\n </div>\r\n {{'LISTS.READ_MORE'|translate}}\r\n <a [href]=\"artfakta\">{{'LISTS.LIST_CONTENT'|translate}}</a>\r\n </adb-filter-section>\r\n }\r\n @if(filters.showDatasets){\r\n <adb-filter-section [count]=\"dataSetCount\" titleResource=\"DATASET.DATASETS\">\r\n @if (form.get('ds')) {\r\n <div formArrayName=\"ds\">\r\n @for (item of dsControls; track item; let i = $index) {\r\n <div [formGroupName]=\"i\" class=\"form-check\">\r\n <input type=\"checkbox\" formControlName=\"selected\" [id]=\"'ds-' + item.value.id\" class=\"form-check-input\">\r\n <label [for]=\"'ds-' + item.value.id\" class=\"form-check-label\">{{ 'PROVIDERS.'+item.value.id |translate }}</label>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </adb-filter-section>\r\n }\r\n }\r\n </div>\r\n <div class=\"d-flex justify-content-end gap-2\">\r\n @if (inline) {\r\n <a class=\"btn btn-secondary\" [routerLink]=\"[]\">\r\n {{'CANCEL'|translate}}\r\n </a>\r\n }\r\n <button type=\"submit\" class=\"btn btn-primary\" [disabled]=\"form.invalid||form.pristine\">{{'FILTER'|translate}}</button>\r\n </div>\r\n</form>\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { PolygonDrawerInput } from \"./components/polygon-drawer.component\";\r\nimport { RouterModule, RouterOutlet } from \"@angular/router\";\r\nimport { ADB_MAP_CONFIG, AdbMapConfig, AdbMapConfigService } from \"./config\";\r\nimport { TreeviewComponent } from \"./components/treeview\";\r\nimport { AdbDatePickerModule } from \"../date-picker/adb-date-picker.module\";\r\nimport { AdbFilterSectionModule } from \"../adb-filter-section/adb-filter-section.module\";\r\nimport { AdbPipesModule } from \"../../pipes/pipes.module\";\r\nimport { AdbObsMapComponent } from \"./components/observations-map\";\r\nimport { AdbMapFilters } from \"./components/map-filter\";\r\nimport { AdbPickerModule } from \"../adb-picker-module/adb-picker.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n RouterModule,\r\n ReactiveFormsModule,\r\n AdbDatePickerModule,\r\n TranslateModule.forChild(),\r\n AdbPipesModule,\r\n AdbFilterSectionModule,\r\n AdbPickerModule\r\n ],\r\n declarations: [\r\n AdbObsMapComponent,\r\n PolygonDrawerInput,\r\n AdbMapFilters,\r\n TreeviewComponent,\r\n // Stats,\r\n // AdbGeojsonPolygonDirective\r\n ],\r\n exports: [\r\n AdbObsMapComponent,\r\n PolygonDrawerInput,\r\n AdbMapFilters,\r\n // Stats,\r\n // AdbGeojsonPolygonDirective\r\n ],\r\n providers: [\r\n AdbMapConfigService\r\n ]\r\n})\r\nexport class AdbMapModule {\r\n static forRoot(config?: AdbMapConfig): ModuleWithProviders<AdbMapModule> {\r\n return {\r\n ngModule: AdbMapModule,\r\n providers: [\r\n {\r\n provide: ADB_MAP_CONFIG,\r\n useValue: config\r\n }\r\n ]\r\n };\r\n }\r\n}","/*\r\n * Public API Surface of artdata-shared\r\n */\r\n\r\n\r\nexport * from './lib/components/adb-artportalen-nav/adb-artportalen-nav.module';\r\nexport * from './lib/components/adb-artportalen-nav/environment.service';\r\nexport * from './lib/components/adb-artportalen-nav/adb-artportalen-nav.component';\r\nexport * from './lib/components/adb-artportalen-nav/adb-artportalen-footer.component';\r\n\r\nexport * from './lib/directives/directives.module';\r\nexport * from './lib/directives/click-outside.directive';\r\nexport * from './lib/directives/focus.directive';\r\nexport * from './lib/directives/redlist-badge-class.directive';\r\nexport * from './lib/directives/risk-class.directive';\r\nexport * from './lib/directives/file-upload.directive';\r\nexport * from './lib/directives/active-fragment.directive';\r\nexport * from './lib/directives/image-loader.directive';\r\n\r\n\r\nexport * from './lib/components/pagers/pagers.module';\r\nexport * from './lib/components/pagers/infinite-scroll.component';\r\nexport * from './lib/components/pagers/pager';\r\nexport * from './lib/components/pagers/pager-inline';\r\n\r\nexport * from './lib/pipes/pipes.module';\r\nexport * from './lib/pipes/highlight.pipe';\r\nexport * from './lib/pipes/highlight-html.pipe';\r\nexport * from './lib/pipes/number-spacing.pipe';\r\nexport * from './lib/pipes/date.pipe';\r\nexport * from './lib/pipes/emptyValue.pipe';\r\n\r\nexport * from './lib/components/date-picker/adb-date-picker.module';\r\nexport * from './lib/components/date-picker/adb-date-picker.component';\r\nexport * from './lib/components/date-picker/adb-date-picker.directive';\r\n\r\nexport * from './lib/components/adb-dropdown/adb-dropdown.module';\r\nexport * from './lib/components/adb-dropdown/adb-dropdown.directive';\r\nexport * from './lib/components/adb-dropdown/adb-dropdown2.directive';\r\n\r\n\r\nexport * from './lib/components/adb-confirm-modal/adb-modal.module';\r\nexport * from './lib/components/adb-confirm-modal/adb-confirm-modal';\r\nexport * from './lib/components/adb-confirm-modal/adb-modal.service';\r\n\r\nexport * from './lib/components/adb-toast/adb-toast.module';\r\nexport * from './lib/components/adb-toast/adb-toast';\r\nexport * from './lib/components/adb-toast/adb-toast.service';\r\n\r\nexport * from './lib/components/adb-buttons/adb-buttons.module';\r\nexport * from './lib/components/adb-buttons/help-button.component';\r\n\r\nexport * from './lib/components/adb-rich-editor/adb-rich-editor.module';\r\nexport * from './lib/components/adb-rich-editor/adb-rich-editor.component';\r\nexport * from './lib/components/adb-rich-editor/adb-rich-text';\r\n\r\nexport * from './lib/components/adb-filter-section/adb-filter-section.module';\r\nexport * from './lib/components/adb-filter-section/filter-section.component';\r\n\r\nexport * from './lib/components/adb-user/adb-user.module';\r\nexport * from './lib/components/adb-user/adb-user.service';\r\nexport * from './lib/components/adb-user/adb-user.interceptor';\r\nexport * from './lib/components/adb-user/auth-callback.component';\r\nexport * from './lib/components/adb-user/user-constants';\r\nexport * from './lib/components/adb-user/adb-user-service-config';\r\n\r\nexport * from './lib/components/adb-picker-module/adb-picker.module';\r\nexport * from './lib/components/adb-picker-module/adb-picker-config';\r\nexport * from './lib/components/adb-picker-module/components/adb-generic-picker';\r\nexport * from './lib/components/adb-picker-module/components/area-picker';\r\nexport * from './lib/components/adb-picker-module/components/taxon-picker';\r\n\r\nexport * from './lib/components/adb-map-module/adb-map.module';\r\nexport * from './lib/components/adb-map-module/config';\r\nexport * from './lib/components/adb-map-module/mapUtils';\r\nexport * from './lib/components/adb-map-module/components/map-filter';\r\nexport * from './lib/components/adb-map-module/components/observations-map';\r\nexport * from './lib/components/adb-map-module/components/polygon-drawer.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4.EnvironmentService","i5","i6.ClickOutsideDirective","i1.AdbDropdownService","i2.EnvironmentService","i3.LocaleDatePipe","i1.AdbDatePickerService","i1.AdbModalService","i1.AdbToastService","i2.AdbHelpButtonComponent","i3.AdbUserService","i1.AdbUserService","catchError","i3.ClickOutsideDirective","map","i1.AdbPickerConfigService","i3.GenericPickerComponent","i4.HighlightPipe","i2.AdbPickerConfigService","i4.GenericPickerComponent","i5.HighlightPipe","Leaflet","i2.AdbMapConfigService","i4","i5.NumberSpacingPipe","debounceTime","i1.AdbMapConfigService","i5.AdbDatePickerDirective","i6.FilterSectionComponent","i7.AdbAreaPickerComponent","i8.AdbTaxonPickerComponent","i9.PolygonDrawerInput","i10.TreeviewComponent","i11","i12"],"mappings":"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"}
1
+ {"version":3,"file":"adb-shared.mjs","sources":["../../../projects/artdata-shared/src/lib/components/adb-artportalen-nav/environment.service.ts","../../../projects/artdata-shared/src/lib/directives/click-outside.directive.ts","../../../projects/artdata-shared/src/lib/directives/file-upload.directive.ts","../../../projects/artdata-shared/src/lib/directives/focus.directive.ts","../../../projects/artdata-shared/src/lib/directives/redlist-badge-class.directive.ts","../../../projects/artdata-shared/src/lib/directives/risk-class.directive.ts","../../../projects/artdata-shared/src/lib/directives/active-fragment.directive.ts","../../../projects/artdata-shared/src/lib/directives/image-loader.directive.ts","../../../projects/artdata-shared/src/lib/directives/directives.module.ts","../../../projects/artdata-shared/src/lib/components/adb-artportalen-nav/adb-artportalen-nav.component.ts","../../../projects/artdata-shared/src/lib/components/adb-artportalen-nav/adb-artportalen-nav.component.html","../../../projects/artdata-shared/src/lib/components/adb-dropdown/adb-dropdown.service.ts","../../../projects/artdata-shared/src/lib/components/adb-dropdown/adb-dropdown.directive.ts","../../../projects/artdata-shared/src/lib/components/adb-dropdown/adb-dropdown2.directive.ts","../../../projects/artdata-shared/src/lib/components/adb-dropdown/adb-dropdown.module.ts","../../../projects/artdata-shared/src/lib/components/pagers/infinite-scroll.component.ts","../../../projects/artdata-shared/src/lib/components/pagers/pager-base.directive.ts","../../../projects/artdata-shared/src/lib/components/pagers/pager.ts","../../../projects/artdata-shared/src/lib/components/pagers/pager.html","../../../projects/artdata-shared/src/lib/components/pagers/pager-inline.ts","../../../projects/artdata-shared/src/lib/components/pagers/pager-inline.html","../../../projects/artdata-shared/src/lib/components/pagers/pagers.module.ts","../../../projects/artdata-shared/src/lib/components/adb-artportalen-nav/adb-artportalen-footer.component.ts","../../../projects/artdata-shared/src/lib/components/adb-artportalen-nav/adb-artportalen-footer.component.html","../../../projects/artdata-shared/src/lib/components/adb-artportalen-nav/adb-artportalen-nav.module.ts","../../../projects/artdata-shared/src/lib/pipes/date.pipe.ts","../../../projects/artdata-shared/src/lib/pipes/emptyValue.pipe.ts","../../../projects/artdata-shared/src/lib/pipes/highlight.pipe.ts","../../../projects/artdata-shared/src/lib/pipes/number-spacing.pipe.ts","../../../projects/artdata-shared/src/lib/pipes/highlight-html.pipe.ts","../../../projects/artdata-shared/src/lib/pipes/pipes.module.ts","../../../projects/artdata-shared/src/lib/components/date-picker/adb-date-picker.component.ts","../../../projects/artdata-shared/src/lib/components/date-picker/adb-date-picker.component.html","../../../projects/artdata-shared/src/lib/components/date-picker/adb-date-picker.service.ts","../../../projects/artdata-shared/src/lib/components/date-picker/adb-date-picker.directive.ts","../../../projects/artdata-shared/src/lib/components/date-picker/adb-date-picker.module.ts","../../../projects/artdata-shared/src/lib/components/adb-confirm-modal/adb-modal.service.ts","../../../projects/artdata-shared/src/lib/components/adb-confirm-modal/adb-confirm-modal.ts","../../../projects/artdata-shared/src/lib/components/adb-confirm-modal/adb-confirm-modal.html","../../../projects/artdata-shared/src/lib/components/adb-confirm-modal/adb-modal.module.ts","../../../projects/artdata-shared/src/lib/components/adb-toast/adb-toast.service.ts","../../../projects/artdata-shared/src/lib/components/adb-toast/adb-toast.ts","../../../projects/artdata-shared/src/lib/components/adb-toast/adb-toast.html","../../../projects/artdata-shared/src/lib/components/adb-toast/adb-toast.module.ts","../../../projects/artdata-shared/src/lib/components/adb-buttons/help-button.component.ts","../../../projects/artdata-shared/src/lib/components/adb-buttons/help-button.component.html","../../../projects/artdata-shared/src/lib/components/adb-buttons/adb-buttons.module.ts","../../../projects/artdata-shared/src/lib/components/adb-rich-editor/adb-rich-editor.component.ts","../../../projects/artdata-shared/src/lib/components/adb-rich-editor/adb-rich-editor.component.html","../../../projects/artdata-shared/src/lib/components/adb-rich-editor/rich-module-config.ts","../../../projects/artdata-shared/src/lib/components/adb-rich-editor/adb-rich-text.ts","../../../projects/artdata-shared/src/lib/components/adb-rich-editor/adb-rich-text.html","../../../projects/artdata-shared/src/lib/components/adb-rich-editor/adb-rich-editor.module.ts","../../../projects/artdata-shared/src/lib/components/adb-filter-section/filter-section.component.ts","../../../projects/artdata-shared/src/lib/components/adb-filter-section/filter-section.component.html","../../../projects/artdata-shared/src/lib/components/adb-filter-section/adb-filter-section.module.ts","../../../projects/artdata-shared/src/lib/components/adb-user/adb-user-service-config.ts","../../../projects/artdata-shared/src/lib/components/adb-user/user-constants.ts","../../../projects/artdata-shared/src/lib/components/adb-user/adb-user.service.ts","../../../projects/artdata-shared/src/lib/components/adb-user/auth-callback.component.ts","../../../projects/artdata-shared/src/lib/components/adb-user/adb-user.interceptor.ts","../../../projects/artdata-shared/src/lib/components/adb-user/adb-user.module.ts","../../../projects/artdata-shared/src/lib/components/adb-picker-module/components/adb-generic-picker.ts","../../../projects/artdata-shared/src/lib/components/adb-picker-module/components/adb-generic-picker.html","../../../projects/artdata-shared/src/lib/components/adb-picker-module/adb-picker-config.ts","../../../projects/artdata-shared/src/lib/components/adb-picker-module/components/taxon-picker.ts","../../../projects/artdata-shared/src/lib/components/adb-picker-module/components/taxon-picker.html","../../../projects/artdata-shared/src/lib/components/adb-picker-module/components/area-picker.ts","../../../projects/artdata-shared/src/lib/components/adb-picker-module/components/area-picker.html","../../../projects/artdata-shared/src/lib/components/adb-picker-module/adb-picker.module.ts","../../../projects/artdata-shared/src/lib/components/adb-map-module/mapUtils.ts","../../../projects/artdata-shared/src/lib/components/adb-map-module/components/polygon-drawer.component.ts","../../../projects/artdata-shared/src/lib/components/adb-map-module/components/polygon-drawer.component.html","../../../projects/artdata-shared/src/lib/components/adb-map-module/config.ts","../../../projects/artdata-shared/src/lib/components/adb-map-module/components/treeview.ts","../../../projects/artdata-shared/src/lib/components/adb-map-module/components/treeview.html","../../../projects/artdata-shared/src/lib/components/adb-map-module/components/observations-map.ts","../../../projects/artdata-shared/src/lib/components/adb-map-module/components/observations-map.html","../../../projects/artdata-shared/src/lib/components/adb-map-module/constants.ts","../../../projects/artdata-shared/src/lib/components/adb-map-module/components/map-filter.ts","../../../projects/artdata-shared/src/lib/components/adb-map-module/components/map-filter.html","../../../projects/artdata-shared/src/lib/components/adb-map-module/adb-map.module.ts","../../../projects/artdata-shared/src/public-api.ts","../../../projects/artdata-shared/src/adb-shared.ts"],"sourcesContent":["import { Inject, Injectable } from \"@angular/core\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class EnvironmentService {\r\n constructor(@Inject('env') public environment) {\r\n }\r\n}","import { Directive, Output, EventEmitter, ElementRef, HostListener } from '@angular/core';\r\n@Directive({\r\n selector: '[adbClickOutside]',\r\n standalone: false\r\n})\r\nexport class ClickOutsideDirective {\r\n @Output() adbClickOutside = new EventEmitter<any>();\r\n constructor(private elementRef: ElementRef) { }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(target: any) {\r\n const clickedInside = this.elementRef.nativeElement.contains(target);\r\n if (!clickedInside) {\r\n this.adbClickOutside.emit(target);\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, EventEmitter } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: 'input[adbFileUpload]',\r\n host: {\r\n '(change)': 'onBeginUpload($event.target)',\r\n '(click)': 'onClick($event.target)'\r\n },\r\n outputs: ['upload'],\r\n standalone: false\r\n})\r\nexport class FileUploadDirective {\r\n upload = new EventEmitter();\r\n click = new EventEmitter();\r\n constructor(private el: ElementRef) {}\r\n \r\n onBeginUpload(target: any) {\r\n if (target) {\r\n if (target.files && target.files[0]) {\r\n this.upload.emit(target.files[0]);\r\n }\r\n }\r\n }\r\n\r\n onClick(target: any) {\r\n (this.el.nativeElement as HTMLInputElement).value = '';\r\n if (target) {\r\n this.click.emit(target);\r\n }\r\n }\r\n}","/* eslint-disable @angular-eslint/directive-selector */\r\nimport { Directive, ElementRef, AfterViewInit, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[adbFocus]',\r\n standalone: false\r\n})\r\nexport class FocusDirective implements AfterViewInit {\r\n focused: boolean;\r\n @Input() set adbFocus(value: boolean) {\r\n this.focused = value;\r\n if (this.focused) {\r\n this.element.nativeElement.focus();\r\n }else{\r\n this.element.nativeElement.blur();\r\n }\r\n }\r\n\r\n constructor(public element: ElementRef<HTMLElement>) {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.\r\n if (this.focused) {\r\n setTimeout(() => this.element.nativeElement.focus(), 0);\r\n }\r\n }\r\n}\r\n","import { Directive, Input, HostBinding } from '@angular/core';\r\n@Directive({\r\n selector: '[adbRedListBadgeClass]',\r\n standalone: false\r\n})\r\nexport class RedListBadgeClassDirective {\r\n @Input('adbRedListBadgeClass') redlistId: string;\r\n @HostBinding('class')\r\n get hostClasses(): string {\r\n this.redlistId = this.redlistId ? this.redlistId.replace('°', '') : '';\r\n if (this.redlistId === 'EX' || this.redlistId === 'RE') {\r\n return 'bg-redlist-re border';\r\n } else if (this.redlistId === 'DD' || this.redlistId === 'NE' || this.redlistId === 'NA') {\r\n return 'bg-redlist-dd border';\r\n } else if (this.redlistId === 'CR') {\r\n return 'bg-redlist-cr border';\r\n } else if (this.redlistId === 'EN') {\r\n return 'bg-redlist-en border';\r\n } else if (this.redlistId === 'VU') {\r\n return 'bg-redlist-vu border';\r\n } else if (this.redlistId === 'NT') {\r\n return 'bg-redlist-nt border';\r\n } else if (this.redlistId === 'NONE') {\r\n return '';\r\n }\r\n return 'bg-redlist-lc border';\r\n }\r\n}\r\n\r\n","import { Directive, Input, HostBinding } from '@angular/core';\r\n@Directive({\r\n selector: '[adbRiskClass]',\r\n standalone: false\r\n})\r\nexport class RiskClassDirective { //move to shared\r\n @Input('adbRiskClass') category: string;\r\n @HostBinding('class')\r\n get hostClasses(): string {\r\n if (this.category === 'NK') {\r\n return 'bg-risk-class-nk text-dark border';\r\n } else if (this.category === 'LO') {\r\n return 'bg-risk-class-lo border';\r\n } else if (this.category === 'PH') {\r\n return 'bg-risk-class-ph border';\r\n } else if (this.category === 'HI') {\r\n return 'bg-risk-class-hi border';\r\n } else if (this.category === 'SE') {\r\n return 'bg-risk-class-se border';\r\n }\r\n return 'text-dark';\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[adbActiveFragment]',\r\n standalone: false\r\n})\r\nexport class RouterLinkActiveFragmentDirective implements OnInit, OnDestroy {\r\n @Input('adbActiveFragment') activeClass = 'active';\r\n @Input() fragment: string | null = null;\r\n\r\n private sub!: Subscription;\r\n\r\n constructor(\r\n private router: Router,\r\n private el: ElementRef,\r\n private renderer: Renderer2\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.updateActiveState();\r\n this.sub = this.router.events.subscribe(event => {\r\n if (event instanceof NavigationEnd) {\r\n this.updateActiveState();\r\n }\r\n });\r\n }\r\n\r\n private updateActiveState(): void {\r\n const currentFragment = this.router.parseUrl(this.router.url).fragment;\r\n const isActive = this.fragment && currentFragment === this.fragment;\r\n const classes = this.activeClass.split(' ').filter(c => !!c); // handle multiple classes\r\n if (this.fragment && currentFragment === this.fragment) {\r\n classes.forEach(cls => this.renderer.addClass(this.el.nativeElement, cls));\r\n } else {\r\n classes.forEach(cls => this.renderer.removeClass(this.el.nativeElement, cls));\r\n }\r\n if (isActive) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'aria-current', 'page');\r\n } else {\r\n this.renderer.removeAttribute(this.el.nativeElement, 'aria-current');\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.sub) {\r\n this.sub.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Directive, HostListener, Input, Renderer2, ElementRef, OnDestroy } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: 'img[adbImageLoader]',\r\n standalone: false\r\n})\r\nexport class ImageLoaderDirective implements OnDestroy {\r\n private _fallbackKey = 'IMAGE_MISSING';\r\n\r\n @Input('adbImageLoader')\r\n set fallbackKey(value: string | undefined) {\r\n this._fallbackKey = value && value.trim() ? value : 'IMAGE_MISSING';\r\n }\r\n\r\n get fallbackKey(): string {\r\n return this._fallbackKey;\r\n }\r\n\r\n private translationSub?: Subscription;\r\n private spinnerElement?: HTMLElement;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n private translate: TranslateService\r\n ) {\r\n this.showSpinner();\r\n }\r\n\r\n\r\n\r\n private showSpinner() {\r\n this.spinnerElement = this.renderer.createElement('i');\r\n this.renderer.addClass(this.spinnerElement, 'fa');\r\n this.renderer.addClass(this.spinnerElement, 'fa-spinner');\r\n this.renderer.addClass(this.spinnerElement, 'fa-spin');\r\n this.renderer.addClass(this.spinnerElement, 'text-dark');\r\n const parent = this.renderer.parentNode(this.el.nativeElement);\r\n this.renderer.insertBefore(parent, this.spinnerElement, this.el.nativeElement);\r\n }\r\n\r\n private hideSpinner() {\r\n if (this.spinnerElement) {\r\n const parent = this.renderer.parentNode(this.el.nativeElement);\r\n if (parent && this.spinnerElement) {\r\n this.renderer.removeChild(parent, this.spinnerElement);\r\n this.spinnerElement = undefined;\r\n }\r\n }\r\n }\r\n\r\n @HostListener('load')\r\n onLoad() {\r\n this.hideSpinner();\r\n }\r\n\r\n @HostListener('error')\r\n onError() {\r\n console.log('error');\r\n this.hideSpinner();\r\n this.renderer.setStyle(this.el.nativeElement, 'display', 'none');\r\n this.translationSub?.unsubscribe();\r\n this.translationSub = this.translate.get(this._fallbackKey).subscribe((translatedText) => {\r\n const textElement = this.renderer.createElement('p');\r\n const text = this.renderer.createText(translatedText);\r\n this.renderer.addClass(textElement,'fs-3')\r\n this.renderer.appendChild(textElement, text);\r\n const parent = this.renderer.parentNode(this.el.nativeElement);\r\n this.renderer.appendChild(parent, textElement);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.translationSub?.unsubscribe();\r\n this.hideSpinner();\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { ClickOutsideDirective } from \"./click-outside.directive\";\r\nimport { FileUploadDirective } from \"./file-upload.directive\";\r\nimport { FocusDirective } from \"./focus.directive\";\r\nimport { RedListBadgeClassDirective } from \"./redlist-badge-class.directive\";\r\nimport { RiskClassDirective } from \"./risk-class.directive\";\r\nimport { RouterLinkActiveFragmentDirective } from \"./active-fragment.directive\";\r\nimport { ImageLoaderDirective } from \"./image-loader.directive\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [ClickOutsideDirective, FocusDirective, FileUploadDirective, RedListBadgeClassDirective, RiskClassDirective, ImageLoaderDirective, RouterLinkActiveFragmentDirective],\r\n exports: [ClickOutsideDirective, FocusDirective, FileUploadDirective, RedListBadgeClassDirective, RiskClassDirective, ImageLoaderDirective, RouterLinkActiveFragmentDirective]\r\n})\r\nexport class AdbDirectivesModule { }","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\r\nimport { TranslateService, TranslationObject } from \"@ngx-translate/core\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { Event, NavigationEnd, Router } from \"@angular/router\";\r\nimport { Navigation } from \"./navigation.model\";\r\nimport { EnvironmentService } from \"./environment.service\";\r\n\r\n\r\n@Component({\r\n selector: 'adb-artportalen-nav',\r\n templateUrl: './adb-artportalen-nav.component.html',\r\n standalone: false\r\n})\r\nexport class ArtportalenNavComponent implements OnInit, OnDestroy {\r\n private subscription = new Subscription();\r\n @Output() loginClicked = new EventEmitter();\r\n @Output() logoutClicked = new EventEmitter();\r\n @Output() dropMenuChange = new EventEmitter<boolean>();\r\n\r\n @Input() showPattern = false;\r\n fullName: string;\r\n translationFinished = false;\r\n lastPosition = 0;\r\n\r\n @Input() set userName(fullName: string) {\r\n this.fullName = fullName;\r\n };\r\n\r\n navigation: Navigation;\r\n url: string;\r\n showNavMenu = false;\r\n showUserMenu = false;\r\n\r\n showReport = true;\r\n showObservations = true;\r\n showSubs = false;\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n private router: Router,\r\n public trans: TranslateService,\r\n private envService: EnvironmentService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.url = window.location.href;\r\n const baseUrl = this.envService.environment.resourceUrl;\r\n const url = '/assets/artportalen/links-ap3.json';\r\n this.subscription.add(this.httpClient.get<Navigation>(baseUrl + url).subscribe(result => {\r\n this.navigation = result;\r\n }));\r\n this.initTranslations(baseUrl);\r\n this.router.events.subscribe((event: Event) => {\r\n if (event instanceof NavigationEnd) {\r\n this.showNavMenu = false;\r\n this.dropMenuChange.emit(this.showNavMenu)\r\n }\r\n });\r\n }\r\n\r\n showMenuDropdown(show: boolean): void {\r\n this.showUserMenu = false;\r\n if (this.showNavMenu !== show) {\r\n this.showNavMenu = show;\r\n this.dropMenuChange.emit(show);\r\n }\r\n }\r\n\r\n setLanguage(lang): void {\r\n this.trans.use(lang);\r\n this.showNavMenu = false;\r\n this.dropMenuChange.emit(false);\r\n }\r\n\r\n onUserClick():void{\r\n if(this.fullName){\r\n this.logout(); \r\n }else{\r\n this.login(); \r\n }\r\n }\r\n\r\n login(): void {\r\n this.loginClicked.emit();\r\n }\r\n\r\n logout(): void {\r\n this.logoutClicked.emit();\r\n }\r\n\r\n\r\n private initTranslations(baseUrl: string): void {\r\n this.loadTranslation(baseUrl, this.trans.getCurrentLang());\r\n this.subscription.add(this.trans.onLangChange.subscribe((event) => {\r\n this.translationFinished = false;\r\n this.loadTranslation(baseUrl, event.lang);\r\n }));\r\n }\r\n\r\n private loadTranslation(baseUrl: string, lang: string): void {\r\n //TODO: Prepare for diffents lang then en sv (en-GB) or add more files in devcomponentserver :)\r\n const url = baseUrl + `/assets/artportalen/i18n/${lang}.json`;\r\n this.subscription.add(this.httpClient.get<TranslationObject>(url).subscribe(translations => {\r\n this.trans.setTranslation(lang, translations, true);\r\n this.translationFinished = true;\r\n }));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n\r\n","<div class=\"bg-primary adb-main-header position-static\" (adbClickOutside)=\"showMenuDropdown(false);\">\r\n @if (translationFinished) {\r\n <header class=\"container-lg px-0\">\r\n <div [attr.id]=\"showPattern?'banner':''\" class=\"px-1 d-flex flex-wrap align-items-center gap-2\">\r\n <nav class=\"d-flex flex-grow-1 align-items-center pe-2 py-2 gap-2\">\r\n <a class=\"d-flex text-white text-decoration-none d-flex gap-2\" href=\"https://www.artdatabanken.se/\" target=\"new\">\r\n <img style=\"height: 2rem;\" src=\"/assets/images/slu.svg\" alt=\"logo\">\r\n <div class=\"border-end d-none d-sm-block\"></div>\r\n <img class=\"d-none d-sm-block align-self-center pe-5\" style=\"height: 0.7rem;\" src=\"/assets/images/artdatabanken.svg\" alt=\"logo\">\r\n </a>\r\n <a [href]=\"navigation?.home\" class=\"text-white text-decoration-none fs-1 fw-bold\">{{'HEADER.TITLE'|translate}}</a>\r\n </nav>\r\n <div class=\"ms-auto d-flex align-items-center gap-2\">\r\n <div><ng-content></ng-content></div>\r\n <div>\r\n <button class=\"d-none d-md-block btn btn-primary-dark btn-lg\" type=\"button\"\r\n title=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\"\r\n attr.aria-label=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\"\r\n (click)=\"onUserClick()\">\r\n <small>{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}</small>\r\n </button>\r\n </div>\r\n <div>\r\n <button class=\"btn btn-primary-dark btn-lg\" type=\"button\" title=\"{{'HEADER.MENY'|translate}}\" attr.aria-label=\"{{'HEADER.MENY'|translate}}\" (click)=\"showMenuDropdown(!showNavMenu)\">\r\n <i class=\"fas fa-bars\"></i>\r\n <small class=\"ms-2 d-none d-md-inline-block\">{{'HEADER.MENY'|translate}}</small>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-center d-md-none p-2 border-dark border-top\">\r\n <button class=\"btn btn-primary-dark btn-lg\" type=\"button\"\r\n title=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\"\r\n attr.aria-label=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\" (click)=\"onUserClick()\">\r\n <small>{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}</small>\r\n </button>\r\n </div>\r\n </header>\r\n }\r\n @if (navigation) {\r\n <div role=\"dialog\" class=\"offcanvas offcanvas-end bg-primary text-white\" [class.show]=\"showNavMenu\" tabindex=\"-1\" aria-labelledby=\"offcanvasNav\">\r\n <div class=\"offcanvas-header\">\r\n <h1 class=\"offcanvas-title h-section mb-0\" id=\"offcanvasNav\"><a [href]=\"navigation.home\" class=\"text-white text-decoration-none\">{{'HEADER.TITLE'|translate}}</a></h1>\r\n <button type=\"button\" class=\"btn-close btn-close-white\" attr.aria-label=\"{{'CLOSE'|translate}}\" (click)=\"showMenuDropdown(false)\"></button>\r\n </div>\r\n <div class=\"offcanvas-body d-flex flex-column p-0\">\r\n <div class=\"px-3\">\r\n <div class=\"d-flex flex-wrap justify-content-between align-items-center mb-2 gap-1 px-2\">\r\n @if (fullName) {\r\n <div>\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-primary-dark\">\r\n {{'HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div>{{fullName}}</div>\r\n }\r\n @if (!fullName) {\r\n <div class=\"text-center\">\r\n <button type=\"button\" class=\"btn btn-primary-dark\" (click)=\"login()\" id=\"start-login\">{{'HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n @if (navigation) {\r\n <a class=\"text-white\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'HEADER.CREATE_USER'|translate}}\r\n </a>\r\n }\r\n }\r\n </div>\r\n <ul class=\"list-group list-group-flush border-top\">\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showReport?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"py-1 text-white flex-grow-1\" href=\"{{navigation.report.url}}\">\r\n {{navigation.report.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showReport = !showReport\" attr.aria-controls=\"report-links\" attr.aria-expanded=\"{{showReport}}\">\r\n <span class=\"fas\" [ngClass]=\"showReport?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n @if (showReport) {\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" id=\"report-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <div class=\"d-flex\">\r\n <a href=\"{{navigation.checklist.url}}\" class=\"text-white flex-grow-1\">\r\n {{navigation.checklist.transId|translate}}\r\n </a>\r\n </div>\r\n </li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.report.url}}\">\r\n {{'HEADER.REPORT'|translate}}\r\n </a>\r\n <li class=\"d-block py-1\">\r\n <div class=\"d-flex \">\r\n <a href=\"{{navigation.wanted.url}}\" class=\"text-white flex-grow-1\">\r\n {{navigation.wanted.transId|translate}}\r\n </a>\r\n </div>\r\n </li>\r\n </ul>\r\n </li>\r\n }\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showObservations?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"py-1 text-white flex-grow-1\" href=\"{{navigation.observations.url}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showObservations = !showObservations\" attr.aria-controls=\"observations-links\" attr.aria-expanded=\"{{showObservations}}\">\r\n <span class=\"fas\" [ngClass]=\"showObservations?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n @if (showObservations) {\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" id=\"observations-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.observations.url}}\">\r\n {{'HEADER.TODAYS_OBSERVATIONS'|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-0\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.fieldDiary.url}}\">\r\n {{'HEADER.FIELD_DIARY'|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n }\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showSubs?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <button class=\"btn btn-link p-0 text-white w-100 text-start\" (click)=\"showSubs = !showSubs\">\r\n {{navigation.subcriptions.transId|translate}}\r\n </button>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showSubs = !showSubs\" attr.aria-controls=\"subs-links\" attr.aria-expanded=\"{{showSubs}}\">\r\n <span class=\"fas\" [ngClass]=\"showSubs?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n @if (showSubs) {\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" id=\"subs-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.subcriptions.url}}\">\r\n {{'HEADER.MY_SUBSCRIPTIONS'|translate}}\r\n </a>\r\n </li>\r\n <li class=\"py-1\">\r\n <div class=\"d-flex\">\r\n <a href=\"{{navigation.events.url}}\" class=\"text-white flex-grow-1\">\r\n {{navigation.events.transId|translate}}\r\n </a>\r\n </div>\r\n </li>\r\n </ul>\r\n </li>\r\n }\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.fyndregler.url}}\">\r\n {{navigation.fyndregler.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block fw-bold py-1 text-white\" [href]=\"navigation.artportalenUrl\">\r\n Artportalen.se\r\n <i class=\"fas fa-external-link\"></i>\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block fw-bold py-1 text-white\" [href]=\"navigation.artfaktaUrl\">\r\n {{'HEADER.ARTFAKTA'|translate}}\r\n <i class=\"fas fa-external-link\"></i>\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <small class=\"d-block text-white pt-1\">\r\n {{'HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\">\r\n {{'HEADER.ARTDATABANKEN'|translate}}\r\n <span class=\"fas fa-external-link\"></span>\r\n </a>\r\n </small>\r\n </li>\r\n </ul>\r\n </div>\r\n <div id=\"pattern\" class=\"flex-grow-1\"> </div>\r\n </div>\r\n </div>\r\n }\r\n</div>","import { ElementRef, Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class AdbDropdownService {\r\n currentMenu: any;\r\n currentMenuId: string;\r\n}","import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output } from \"@angular/core\";\r\nimport { AdbDropdownService } from \"./adb-dropdown.service\";\r\n\r\n@Directive({\r\n selector: '[adbDropdown]',\r\n exportAs: 'adbDropdown',\r\n standalone: false\r\n})\r\nexport class AdbDropdownDirective {\r\n\r\n constructor(\r\n private elementRef: ElementRef,\r\n private adbDropdownService: AdbDropdownService) {\r\n this.id = this.getId();\r\n this.dropId = this.getId();\r\n }\r\n\r\n @Output() adbDropdown = new EventEmitter();\r\n @Input() insideClick = false;\r\n\r\n @HostBinding('id')\r\n id: string;\r\n\r\n @HostBinding('attr.data-toggle')\r\n dataToggle = \"dropdown\";\r\n\r\n @HostBinding('attr.aria-haspopup')\r\n haspPopup = true;\r\n\r\n @HostBinding('attr.aria-expanded')\r\n expanded = false;\r\n\r\n @HostBinding('attr.aria-controls')\r\n dropId:string;\r\n\r\n @HostListener('click')\r\n onClick(): void {\r\n this.adbDropdownService.currentMenuId = this.id;\r\n const node = this.elementRef.nativeElement.parentNode;\r\n const toggleButton = node.querySelector('.dropdown-toggle');\r\n let style = `transform:translate3d(0px, ${toggleButton?.clientHeight + 1}px, 0px);`;\r\n const menu = node.querySelector('.dropdown-menu');\r\n if (menu) {\r\n this.adbDropdownService.currentMenu = this.elementRef.nativeElement;\r\n if (menu.classList?.contains('dropdown-menu-end')) {\r\n style = style + 'inset: 0px 0px auto auto;';\r\n }\r\n menu.setAttribute('style', style);\r\n menu.setAttribute('id', this.dropId);\r\n if (menu.classList.contains('show')) {\r\n menu.classList.remove('show');\r\n this.expanded = false;\r\n } else {\r\n this.adbDropdown.emit();\r\n menu.classList.add('show');\r\n this.expanded = true;\r\n }\r\n }\r\n }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n onCheckOutSideClick(target: any): void {\r\n if (this.adbDropdownService.currentMenuId === this.id) {\r\n const parent = this.insideClick?this.elementRef.nativeElement.parentNode:this.elementRef.nativeElement;\r\n const clickedInside = parent.contains(target);\r\n if (!clickedInside) {\r\n const parent = this.elementRef.nativeElement.parentNode.querySelector('.dropdown-menu');\r\n parent?.classList.remove('show');\r\n this.expanded = false;\r\n }\r\n } else {\r\n const parent = this.elementRef.nativeElement.parentNode.querySelector('.dropdown-menu');\r\n parent?.classList.remove('show');\r\n this.expanded = false;\r\n }\r\n }\r\n\r\n close(): void {\r\n const node = this.elementRef.nativeElement.parentNode;\r\n const menu = node.querySelector('.dropdown-menu');\r\n menu.classList.remove('show');\r\n this.expanded = false;\r\n }\r\n\r\n private getId(): string {\r\n return '' + Math.floor(Math.random() * Date.now())\r\n }\r\n}","import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output } from \"@angular/core\";\r\nimport { AdbDropdownService } from \"./adb-dropdown.service\";\r\n\r\n@Directive({\r\n selector: '[adbDropdown2]',\r\n exportAs: 'adbDropdown',\r\n standalone: false\r\n})\r\nexport class AdbDropdown2Directive {\r\n\r\n constructor(\r\n private elementRef: ElementRef,\r\n private adbDropdownService: AdbDropdownService) {\r\n this.id = this.getId();\r\n this.dropId = this.getId();\r\n }\r\n\r\n @Output() adbDropdown = new EventEmitter();\r\n @Input() insideClick = false;\r\n\r\n @HostBinding('id')\r\n id: string;\r\n\r\n @HostBinding('attr.data-toggle')\r\n dataToggle = \"dropdown\";\r\n\r\n @HostBinding('attr.aria-haspopup')\r\n haspPopup = true;\r\n\r\n @HostBinding('attr.aria-expanded')\r\n expanded = false;\r\n\r\n @HostBinding('attr.aria-controls')\r\n dropId: string;\r\n\r\n @HostListener('click')\r\n onClick(): void {\r\n this.adbDropdownService.currentMenuId = this.id;\r\n const node = this.elementRef.nativeElement.parentNode;\r\n const menu = node.querySelector('.dropdown-menu');\r\n if (menu) {\r\n this.adbDropdownService.currentMenu = this.elementRef.nativeElement;\r\n this.setMenuPosition(node, menu);\r\n menu.setAttribute('id', this.dropId);\r\n if (menu.classList.contains('show')) {\r\n menu.classList.remove('show');\r\n this.expanded = false;\r\n } else {\r\n this.adbDropdown.emit();\r\n menu.classList.add('show');\r\n this.expanded = true;\r\n }\r\n }\r\n }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n onCheckOutSideClick(target: any): void {\r\n if (this.adbDropdownService.currentMenuId === this.id) {\r\n const parent = this.insideClick ? this.elementRef.nativeElement.parentNode : this.elementRef.nativeElement;\r\n const clickedInside = parent.contains(target);\r\n if (!clickedInside) {\r\n const parent = this.elementRef.nativeElement.parentNode.querySelector('.dropdown-menu');\r\n parent?.classList.remove('show');\r\n this.expanded = false;\r\n }\r\n } else {\r\n const parent = this.elementRef.nativeElement.parentNode.querySelector('.dropdown-menu');\r\n parent?.classList.remove('show');\r\n this.expanded = false;\r\n }\r\n }\r\n\r\n @HostListener('window:scroll')\r\n onWindowScroll(): void {\r\n const node = this.elementRef.nativeElement.parentNode;\r\n const menu = node.querySelector('.dropdown-menu');\r\n if (menu.classList?.contains('show')) {\r\n this.setMenuPosition(node, menu);\r\n }\r\n }\r\n\r\n private setMenuPosition(dropdownNode: any, menu: any): void {\r\n const toggleButton = dropdownNode.querySelector('.dropdown-toggle');\r\n menu.setAttribute('style', 'visibility:hidden');\r\n menu.setAttribute('style', 'display:block');\r\n const menuWidth = menu.offsetWidth;\r\n menu.setAttribute('style', 'visibility:visible');\r\n menu.setAttribute('style', 'display:none');\r\n const buttonRect = toggleButton.getBoundingClientRect();\r\n let menuPosition = `top:${buttonRect.bottom}px;left:${buttonRect.left}px;position:fixed;`;\r\n if (menu.classList?.contains('dropdown-menu-end')) {\r\n menuPosition = `top:${buttonRect.bottom}px;left:${buttonRect.right-menuWidth}px;position:fixed;`;\r\n }\r\n menu.setAttribute('style', menuPosition);\r\n }\r\n\r\n close(): void {\r\n const node = this.elementRef.nativeElement.parentNode;\r\n const menu = node.querySelector('.dropdown-menu');\r\n menu.classList.remove('show');\r\n this.expanded = false;\r\n }\r\n\r\n private getId(): string {\r\n return '' + Math.floor(Math.random() * Date.now())\r\n }\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { AdbDirectivesModule } from \"../../directives/directives.module\";\r\nimport { AdbDropdownDirective } from \"./adb-dropdown.directive\";\r\nimport { AdbDropdownService } from \"./adb-dropdown.service\";\r\nimport { AdbDropdown2Directive } from \"./adb-dropdown2.directive\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, TranslateModule.forChild(), AdbDirectivesModule],\r\n declarations: [AdbDropdownDirective, AdbDropdown2Directive],\r\n exports: [AdbDropdownDirective, AdbDropdown2Directive],\r\n providers: [AdbDropdownService]\r\n})\r\nexport class AdbDropdownModule { }","import { AfterViewInit, Directive, ElementRef, EventEmitter, HostBinding, OnDestroy, Output } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[onVisible]\",\r\n standalone: false\r\n})\r\nexport class InfiniteScrollComponent implements AfterViewInit, OnDestroy {\r\n @Output() public onVisible: EventEmitter<any> = new EventEmitter();\r\n @Output() public onHidden: EventEmitter<any> = new EventEmitter();\r\n \r\n @HostBinding('style.height') height = '1px';\r\n private _intersectionObserver?: IntersectionObserver;\r\n\r\n constructor(private _element: ElementRef) { }\r\n\r\n public ngAfterViewInit() {\r\n this._intersectionObserver = new IntersectionObserver(entries => {\r\n this.checkForIntersection(entries);\r\n }, {});\r\n this._intersectionObserver.observe(<Element>this._element.nativeElement);\r\n }\r\n\r\n public ngOnDestroy() {\r\n if (this._intersectionObserver) {\r\n this._intersectionObserver.disconnect();\r\n }\r\n }\r\n\r\n private checkForIntersection = (\r\n entries: Array<IntersectionObserverEntry>\r\n ) => {\r\n entries.forEach((entry: IntersectionObserverEntry) => {\r\n const isIntersecting =\r\n (<any>entry).isIntersecting &&\r\n entry.target === this._element.nativeElement;\r\n\r\n if (isIntersecting) {\r\n this.onVisible.emit();\r\n }else{\r\n this.onHidden.emit();\r\n }\r\n });\r\n };\r\n}\r\n","import { Input} from '@angular/core';\r\nimport { Directive } from '@angular/core';\r\n@Directive()\r\nexport abstract class PagerBaseDirective {\r\n private static DEFAULT_LIMIT = 10;\r\n private static VISIBLE_PAGES = 5;\r\n protected static SKIP_RESOURCE = 'offset';\r\n limit: number = PagerBaseDirective.DEFAULT_LIMIT;\r\n totalCount: number;\r\n\r\n @Input('totalCount') set setTotalCount(count: number) {\r\n this.totalCount = count;\r\n this.ngOnInitReady();\r\n }\r\n\r\n @Input('limit') set setLimit(value: number) {\r\n this.limit = value ?? PagerBaseDirective.DEFAULT_LIMIT;\r\n this.ngOnInitReady();\r\n }\r\n\r\n pages: Array<number>;\r\n amountOfPages: number;\r\n currentPage = 1;\r\n\r\n protected calculatePages(): void {\r\n if (this.totalCount >= 0 && this.limit > 0) {\r\n this.amountOfPages = Math.ceil(this.totalCount / this.limit);\r\n if ((this.currentPage + 1) > PagerBaseDirective.VISIBLE_PAGES) {\r\n this.pages = [\r\n this.currentPage - 2,\r\n this.currentPage - 1, this.currentPage];\r\n const above = this.amountOfPages - this.currentPage;\r\n if (above >= 1) {\r\n this.pages.push(this.currentPage + 1);\r\n }\r\n if (above >= 2) {\r\n this.pages.push(this.currentPage + 2);\r\n }\r\n } else if (this.totalCount) {\r\n const max = this.amountOfPages > PagerBaseDirective.VISIBLE_PAGES ? 5 : this.amountOfPages;\r\n this.pages = Array(Math.ceil(max)).fill(1).map((x, i) => i + 1);\r\n }\r\n } else {\r\n this.amountOfPages = 0;\r\n }\r\n }\r\n\r\n protected abstract ngOnInitReady():void;\r\n}\r\n","import { Component, Input, OnDestroy } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { PagerBaseDirective } from './pager-base.directive';\r\n\r\n@Component({\r\n selector: 'adb-pager-nav',\r\n templateUrl: 'pager.html',\r\n standalone: false\r\n})\r\nexport class PagerComponent extends PagerBaseDirective implements OnDestroy {\r\n private subscription = new Subscription();\r\n @Input() offsetName: string = \"offset\";\r\n @Input() infiniteLimit = false;\r\n params: { first: any, prev: any, pages?: any[], next: any, last: any };\r\n constructor(private activatedRoute: ActivatedRoute) {\r\n super();\r\n }\r\n\r\n ngOnInitReady() {\r\n this.subscription.add(this.activatedRoute.queryParams.subscribe(params => {\r\n if (params[this.offsetName]) {\r\n this.currentPage = (+params[this.offsetName] / this.limit) + 1;\r\n } else {\r\n this.currentPage = 1;\r\n }\r\n this.calculatePages();\r\n //create model\r\n this.params = {\r\n first: { [this.offsetName]: 0 },\r\n prev: { [this.offsetName]: (this.currentPage - 2) * this.limit },\r\n pages: [],\r\n next: { [this.offsetName]: this.currentPage * this.limit },\r\n last: { [this.offsetName]: (this.amountOfPages - 1) * this.limit },\r\n };\r\n if (this.pages) {\r\n for (const page of this.pages) {\r\n this.params.pages.push({ name: page, params: { [this.offsetName]: (page - 1) * this.limit } });\r\n }\r\n }\r\n\r\n }));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","@if (pages&&pages.length>1&&currentPage<=amountOfPages) {\r\n <nav class=\"d-flex justify-content-end my-1\">\r\n <ul class=\"pagination flex-wrap mb-0\">\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.first\" queryParamsHandling=\"merge\"\r\n [ngClass]=\"{'pe-none opacity-50':currentPage===1}\" [attr.aria-disabled]=\"currentPage===1\">\r\n <i class=\"fas fa-chevron-double-left\"></i>\r\n </a>\r\n </li>\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.prev\" queryParamsHandling=\"merge\"\r\n [ngClass]=\"{'pe-none opacity-50':currentPage===1}\" [attr.aria-disabled]=\"currentPage===1\">\r\n <i class=\"fas fa-chevron-left\"></i>\r\n </a>\r\n </li>\r\n @for (page of params.pages; track page) {\r\n <li class=\"page-item\" [class.active]=\"currentPage===page.name\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"page.params\"\r\n queryParamsHandling=\"merge\">{{page.name}}</a>\r\n </li>\r\n }\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.next\" queryParamsHandling=\"merge\"\r\n [ngClass]=\"{'pe-none opacity-50':currentPage>=amountOfPages}\" [attr.aria-disabled]=\"currentPage>=amountOfPages\">\r\n <i class=\"fas fa-chevron-right\"></i>\r\n </a>\r\n </li>\r\n @if (!infiniteLimit) {\r\n @if ((amountOfPages-1)*limit<10000) {\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.last\" queryParamsHandling=\"merge\"\r\n [attr.aria-disabled]=\"currentPage>=amountOfPages\" [ngClass]=\"{'pe-none opacity-50':currentPage>=amountOfPages}\">\r\n <i class=\"fas fa-chevron-double-right\"></i>\r\n </a>\r\n </li>\r\n }\r\n }\r\n @if (infiniteLimit) {\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.last\" queryParamsHandling=\"merge\"\r\n [attr.aria-disabled]=\"currentPage>=amountOfPages\" [ngClass]=\"{'pe-none opacity-50':currentPage>=amountOfPages}\">\r\n <i class=\"fas fa-chevron-double-right\"></i>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n </nav>\r\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { PagerBaseDirective } from './pager-base.directive';\r\n\r\n@Component({\r\n selector: 'adb-pager',\r\n templateUrl: 'pager-inline.html',\r\n standalone: false\r\n})\r\nexport class PagerInlineComponent extends PagerBaseDirective {\r\n @Output() pageChanged = new EventEmitter<number>();\r\n @Input() infiniteLimit = false;\r\n constructor() {\r\n super();\r\n }\r\n \r\n ngOnInitReady(): void {\r\n this.calculatePages();\r\n }\r\n\r\n onFirstClick(): void {\r\n this.currentPage = 1;\r\n this.pageChanged.emit(this.currentPage - 1);\r\n this.calculatePages();\r\n }\r\n onPrevClick(): void {\r\n this.currentPage = this.currentPage - 1;\r\n this.pageChanged.emit(this.currentPage - 1);\r\n this.calculatePages();\r\n }\r\n onPageClick(page: number): void {\r\n this.currentPage = page;\r\n this.pageChanged.emit(this.currentPage - 1);\r\n }\r\n onNextClick(): void {\r\n this.currentPage = this.currentPage + 1;\r\n this.pageChanged.emit(this.currentPage - 1);\r\n this.calculatePages();\r\n }\r\n onLastClick(): void {\r\n this.currentPage = this.amountOfPages;\r\n this.pageChanged.emit(this.currentPage - 1);\r\n this.calculatePages();\r\n }\r\n}\r\n","@if (pages&&pages.length>1&&currentPage<=amountOfPages) {\r\n <nav class=\"d-flex justify-content-end pr-2 my-1\">\r\n <ul class=\"pagination flex-wrap\">\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onFirstClick()\" [ngClass]=\"currentPage==1?'opacity-50 pe-none':''\" [disabled]=\"currentPage==1\">\r\n <i class=\"fas fa-chevron-double-left\"></i>\r\n </button>\r\n </li>\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onPrevClick()\" [ngClass]=\"currentPage==1?'opacity-50 pe-none':''\" [disabled]=\"currentPage==1\">\r\n <i class=\"fas fa-chevron-left\"></i>\r\n </button>\r\n </li>\r\n @for (page of pages; track page) {\r\n <li class=\"page-item\" [class.active]=\"currentPage==page\">\r\n <button class=\"page-link\" (click)=\"onPageClick(page)\">\r\n {{page}}\r\n </button>\r\n </li>\r\n }\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onNextClick()\" [ngClass]=\"currentPage>=amountOfPages?'opacity-50 pe-none':''\" [disabled]=\"currentPage>=amountOfPages\">\r\n <i class=\"fas fa-chevron-right\"></i>\r\n </button>\r\n </li>\r\n @if (!infiniteLimit) {\r\n @if ((amountOfPages-1)*limit<10000) {\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onLastClick()\" [ngClass]=\"currentPage>=amountOfPages?'opacity-50 pe-none':''\" [disabled]=\"currentPage>=amountOfPages\">\r\n <i class=\"fas fa-chevron-double-right\"></i>\r\n </button>\r\n </li>\r\n }\r\n }\r\n @if (infiniteLimit) {\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onLastClick()\" [ngClass]=\"currentPage>=amountOfPages?'opacity-50 pe-none':''\" [disabled]=\"currentPage>=amountOfPages\">\r\n <i class=\"fas fa-chevron-double-right\"></i>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </nav>\r\n}\r\n","\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { InfiniteScrollComponent } from \"./infinite-scroll.component\";\r\nimport { PagerComponent } from \"./pager\";\r\nimport { PagerInlineComponent } from \"./pager-inline\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule\r\n ],\r\n declarations: [InfiniteScrollComponent, PagerComponent, PagerInlineComponent],\r\n exports: [InfiniteScrollComponent, PagerComponent, PagerInlineComponent]\r\n})\r\nexport class AdbPagersModule { }","import { Component, Input, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { EnvironmentService } from \"./environment.service\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { TranslateService, TranslationObject } from \"@ngx-translate/core\";\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Navigation } from \"./navigation.model\";\r\n\r\n@Component({\r\n selector: 'adb-artportalen-footer',\r\n templateUrl: './adb-artportalen-footer.component.html',\r\n standalone: false\r\n})\r\nexport class ArtportalenFooterComponent implements OnInit,OnDestroy {\r\n private subscription = new Subscription();\r\n translationFinished = false;\r\n url: string;\r\n navigation: Navigation;\r\n baseUrl: any;\r\n constructor(\r\n private httpClient: HttpClient,\r\n private envService: EnvironmentService,\r\n public trans: TranslateService) {\r\n\r\n }\r\n ngOnInit(): void {\r\n this.url = window.location.href;\r\n this.baseUrl = this.envService.environment.resourceUrl;\r\n this.initTranslations(this.baseUrl);\r\n }\r\n\r\n private initTranslations(baseUrl: string): void {\r\n this.loadTranslation(baseUrl, this.trans.getCurrentLang());\r\n this.subscription.add(this.trans.onLangChange.subscribe((event) => {\r\n this.translationFinished = false;\r\n this.loadTranslation(baseUrl, event.lang);\r\n }));\r\n }\r\n\r\n private loadTranslation(baseUrl: string, lang: string): void {\r\n //TODO: Prepare for diffents lang then en sv (en-GB) or add more files in devcomponentserver :)\r\n const url = baseUrl + `/assets/artportalen/i18n/${lang}.json`;\r\n this.subscription.add(this.httpClient.get<TranslationObject>(url).subscribe(translations => {\r\n this.trans.setTranslation(lang, translations, true);\r\n this.translationFinished = true;\r\n }));\r\n }\r\n\r\n \r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}","@if (translationFinished) {\r\n <footer class=\"bg-primary-dark py-2 mt-auto container-fluid\">\r\n <div class=\"d-flex justify-content-center\">\r\n <div class=\"container py-3 px-5 justify-content-center text-white\">\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-2\"></div>\r\n <div class=\"col-md-4 mb-3\">\r\n <a href=\"https://www.slu.se/artdatabanken/rapportering-och-fynd/artportalen/om\" class=\"d-block text-white mb-2\">{{'FOOTER.ABOUT'|translate}}</a>\r\n <a href=\"https://www.slu.se/artdatabanken/rapportering-och-fynd/artportalen/artportalen-tillganglighetsredogorelse\" class=\"d-block text-white mb-2\">{{'FOOTER.WCAG'|translate}}</a>\r\n <a href=\"https://www.slu.se/artdatabanken/om-oss/kontakt/artportalen-support\" class=\"d-block text-white mb-2\"><span class=\"me-1\">{{'FOOTER.SUPPORT'|translate}}</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://www.slu.se/artdatabanken/rapportering-och-fynd/villkor-kontohavare\" class=\"d-block text-white mb-2\"><span class=\"me-1\">{{'FOOTER.TERMS_OF_USE'|translate}}</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://www.slu.se/artdatabanken/om-oss/behandling-av-personuppgifter\" class=\"d-block text-white mb-2\"><span class=\"me-1\">{{'FOOTER.PERSONAL_DATA'|translate}}</span><span class=\"fas fa-external-link\"></span></a>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"mb-2\" style=\"font-variant: small-caps;\"><sub><strong>{{'FOOTER.PARTNERS'|translate}}</strong></sub></div>\r\n <a href=\"https://birdlife.se\" class=\"d-block text-white mb-2\"><span class=\"me-1\">BirdLife Sverige</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://svenskbotanik.se\" class=\"d-block text-nowrap text-white mb-2\"><span class=\"me-1\">Svenska Botaniska Föreningen</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://www.sef.nu\" class=\"d-block text-nowrap text-white mb-2\"><span class=\"me-1\">Sveriges Entomologiska Förening</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://www.svampar.se\" class=\"d-block text-nowrap text-white mb-2\"><span class=\"me-1\">Sveriges Mykologiska Förening</span><span class=\"fas fa-external-link\"></span></a>\r\n </div>\r\n <div class=\"col-md-2\"></div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-2\"></div>\r\n <div class=\"col-md-4\">\r\n <div class=\"mb-3 text-white\">\r\n <div>{{'FOOTER.INFO'|translate}}</div>\r\n <div>{{'FOOTER.INFO2'|translate}}</div>\r\n <div>{{'FOOTER.INFO3'|translate}}\r\n <a href=\"https://www.naturvardsverket.se\" class=\"text-white mb-2\"><u class=\"me-1\">Naturvårdsverket.</u><span class=\"fas fa-external-link\"></span></a>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">{{'FOOTER.INFO4'|translate}}.</div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <a class=\"text-white text-decoration-none d-flex gap-2 mb-3\" href=\"https://www.artdatabanken.se/\" target=\"new\">\r\n <img class=\"d-block d-md-none\" style=\"height: 2.6rem;\" src=\"/assets/images/slu.svg\" alt=\"logo\">\r\n <img class=\"d-none d-md-block\" style=\"height: 2rem;\" src=\"/assets/images/slu.svg\" alt=\"logo\">\r\n <div class=\"border-end d-none d-sm-block\"></div>\r\n <div class=\"border-end d-block d-sm-none\"></div>\r\n <img class=\"d-none d-md-block align-self-center pe-5\" style=\"height: 0.7rem;\" src=\"/assets/images/artdatabanken.svg\" alt=\"logo\">\r\n <img class=\"d-block d-md-none align-self-center pe-5\" style=\"height: 0.8rem;\" src=\"/assets/images/artdatabanken.svg\" alt=\"logo\">\r\n </a>\r\n </div>\r\n <div class=\"col-md-2\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </footer>\r\n}","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { RouterModule } from '@angular/router';\r\nimport { AdbDirectivesModule } from '../../directives/directives.module';\r\nimport { ArtportalenNavComponent } from './adb-artportalen-nav.component';\r\nimport { AdbDropdownModule } from '../adb-dropdown/adb-dropdown.module';\r\nimport { AdbPagersModule } from '../pagers/pagers.module';\r\nimport { ArtportalenFooterComponent } from './adb-artportalen-footer.component';\r\n\r\n@NgModule({ declarations: [\r\n ArtportalenNavComponent,\r\n ArtportalenFooterComponent\r\n ],\r\n exports: [\r\n ArtportalenNavComponent,\r\n ArtportalenFooterComponent\r\n ], imports: [CommonModule,\r\n RouterModule,\r\n TranslateModule,\r\n AdbDirectivesModule,\r\n AdbDropdownModule,\r\n AdbPagersModule], \r\n providers: [EnvironmentService,provideHttpClient(withInterceptorsFromDi())] })\r\nexport class ArtportalenNavModule {\r\n public static forRoot(environment: any): ModuleWithProviders<ArtportalenNavModule> {\r\n return {\r\n ngModule: ArtportalenNavModule,\r\n providers: [\r\n EnvironmentService,\r\n {\r\n provide: 'env', // you can also use InjectionToken\r\n useValue: environment\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","import { DatePipe } from \"@angular/common\";\r\nimport { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\n@Pipe({\r\n name: 'adbLocaleDate',\r\n pure: false,\r\n standalone: false\r\n})\r\nexport class LocaleDatePipe implements PipeTransform {\r\n constructor(private translate: TranslateService) {}\r\n transform(value: any, format: string) {\r\n return new DatePipe(this.translate.currentLang).transform(value, format, null, this.translate.currentLang);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'adbEmptyValue',\r\n standalone: false\r\n})\r\nexport class EmptyValuePipe implements PipeTransform {\r\n transform(value: any) {\r\n if (!value) {\r\n return '-';\r\n }\r\n if (String(value).trim() === '') {\r\n return '-';\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'adbHighlight',\r\n standalone: false\r\n})\r\nexport class HighlightPipe implements PipeTransform {\r\n forbiddenSymbols = /[`!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?~]/;\r\n transform(value: any, searchs: any): any {\r\n if (!value) { return value; }\r\n value = value + '';\r\n if (searchs) {\r\n if (!Array.isArray(searchs)) {\r\n searchs = searchs.split(' ').filter(s => s);\r\n }\r\n for (let search of searchs) {\r\n if (this.forbiddenSymbols.test(search)) {\r\n search = search.replace(this.forbiddenSymbols, '');\r\n }\r\n const normalizedSearch = this.normalizeText(search);\r\n const normalizedValue = this.normalizeText(value);\r\n const start = normalizedValue ? normalizedValue.indexOf(normalizedSearch) : -1;\r\n if (start !== -1) {\r\n const regex = new RegExp(`(${search})(?![^<]*>)`, 'gi');\r\n const match = value.match(regex);\r\n if (match) {\r\n value = value.replace(regex, '<mark>$1</mark>');\r\n }\r\n }\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n private normalizeText(text: string): string {\r\n return text?.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '').toLocaleLowerCase();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'adbSpacing',\r\n pure: false,\r\n standalone: false\r\n})\r\nexport class NumberSpacingPipe implements PipeTransform {\r\n transform(value) {\r\n // If value is empty, 0 is falsy so perform an extra check to not make '0' to an empty string\r\n if (!value && value !== 0) {\r\n return '';\r\n }\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'adbHighlightHtml',\r\n standalone: false\r\n})\r\nexport class HighlightHtmlPipe implements PipeTransform {\r\n forbiddenSymbols = /[`!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?~]/;\r\n transform(value: any, searchs: any): any {\r\n if (!value) { return value; }\r\n value = value + '';\r\n if (searchs) {\r\n if (!Array.isArray(searchs)) {\r\n searchs = searchs.split(' ').filter(s => s);\r\n }\r\n for (let search of searchs) {\r\n if (this.forbiddenSymbols.test(search)) {\r\n search = search.replace(this.forbiddenSymbols, '');\r\n }\r\n const normalizedSearch = this.normalizeText(search);\r\n const normalizedValue = this.normalizeText(value);\r\n const start = normalizedValue ? normalizedValue.indexOf(normalizedSearch) : -1;\r\n if (start !== -1) {\r\n const regex =new RegExp(`([^<\\\\w]|^)(${this.escapeRegExp(search)})(?![^<]*>)`, 'gi');\r\n value = value.replace(regex, '$1<mark>$2</mark>');\r\n }\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n private normalizeText(text: string): string {\r\n return text?.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '').toLocaleLowerCase();\r\n }\r\n\r\n private escapeRegExp(text: string): string {\r\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { LocaleDatePipe } from \"./date.pipe\";\r\nimport { EmptyValuePipe } from \"./emptyValue.pipe\";\r\nimport { HighlightPipe } from \"./highlight.pipe\";\r\nimport { NumberSpacingPipe } from \"./number-spacing.pipe\";\r\nimport { HighlightHtmlPipe } from \"./highlight-html.pipe\";\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [HighlightPipe, HighlightHtmlPipe, NumberSpacingPipe, LocaleDatePipe, EmptyValuePipe],\r\n exports: [HighlightPipe, HighlightHtmlPipe, NumberSpacingPipe, LocaleDatePipe, EmptyValuePipe]\r\n})\r\nexport class AdbPipesModule { }","import { Component, ElementRef, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { addDays, addMonths, addYears, eachDayOfInterval, eachWeekOfInterval, endOfDay, endOfMonth, getHours, getISOWeek, getMinutes, getMonth, isSameDay, isSameMonth, isSameYear, isValid, isWithinInterval, parseISO, startOfDay, startOfMonth, subMonths, subYears } from \"date-fns\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Component({\r\n selector: 'adb-date-picker',\r\n templateUrl: './adb-date-picker.component.html',\r\n standalone: false\r\n})\r\nexport class AdbDatePickerComponent implements OnInit, OnDestroy {\r\n private subscriptions = new Subscription();\r\n static MONTHS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\r\n static WEEK_DAYS = ['1', '2', '3', '4', '5', '6', '7'];\r\n static YEAR_INTERVALL = 8;\r\n currentdDate: Date = new Date();\r\n currentMonth: number;\r\n\r\n selectedDate: Date = new Date();\r\n years: { value: Date, title: string, isThisYear: boolean }[];\r\n months: { value: number, isThisMonth: boolean }[];\r\n weekDays = AdbDatePickerComponent.WEEK_DAYS;\r\n weeks: PickerWeek[];\r\n range: { start: any; end: any; };\r\n noYearMode = false;;\r\n\r\n @Input() initialDate: Date;\r\n @Input() settings: any;\r\n @Input() toLeft: boolean;\r\n\r\n @HostBinding('id')\r\n @Input() id: string;\r\n\r\n @Output() selectDate = new EventEmitter<Date>();\r\n\r\n constructor(public elementRef: ElementRef, private translate: TranslateService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.settings) {\r\n if (this.settings?.minDate || this.settings?.maxDate) {\r\n const minDate = AdbDatePickerComponent.parseDate(this.settings.minDate);\r\n const maxDate = AdbDatePickerComponent.parseDate(this.settings.maxDate);\r\n this.range = {\r\n start: minDate ? startOfDay(minDate) : subYears(new Date(), 1000),\r\n end: maxDate ? endOfDay(maxDate) : addYears(new Date(), 1000)\r\n };\r\n }\r\n if(this.settings.noYear){\r\n this.noYearMode = this.settings.noYear;\r\n }\r\n }\r\n this.selectedDate = this.currentdDate = this.initialDate ?? new Date();\r\n this.currentMonth = getMonth(this.selectedDate);\r\n this.createCalendar()\r\n }\r\n\r\n onShowYear(): void {\r\n this.months = null;\r\n this.loadYearsInterval();\r\n }\r\n\r\n onShowMonth(): void {\r\n this.years = null;\r\n this.loadMonths();\r\n }\r\n\r\n onSelectYear(inYear?: Date): void {\r\n this.selectedDate.setFullYear(inYear.getFullYear());\r\n this.loadMonths();\r\n this.years = null;\r\n }\r\n\r\n onSelectMonth(inMonth?: number): void {\r\n this.selectedDate.setMonth(inMonth);\r\n this.currentMonth = getMonth(this.selectedDate);\r\n this.createCalendar();\r\n this.years = null;\r\n this.months = null;\r\n }\r\n\r\n onPrev(): void {\r\n if (this.years) {\r\n this.selectedDate = subYears(this.selectedDate, AdbDatePickerComponent.YEAR_INTERVALL);\r\n this.loadYearsInterval();\r\n } else if (this.months) {\r\n this.selectedDate = subYears(this.selectedDate, 1);\r\n this.loadMonths();\r\n } else {\r\n this.selectedDate = subMonths(this.selectedDate, 1);\r\n this.createCalendar();\r\n }\r\n this.currentMonth = getMonth(this.selectedDate);\r\n }\r\n\r\n onNext(): void {\r\n if (this.years) {\r\n this.selectedDate = addYears(this.selectedDate, AdbDatePickerComponent.YEAR_INTERVALL);\r\n this.loadYearsInterval();\r\n } else if (this.months) {\r\n this.selectedDate = addYears(this.selectedDate, 1);\r\n this.loadMonths();\r\n } else {\r\n this.selectedDate = addMonths(this.selectedDate, 1);\r\n this.createCalendar();\r\n }\r\n this.currentMonth = getMonth(this.selectedDate);\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n\r\n private loadMonths(): void {\r\n this.months = AdbDatePickerComponent.MONTHS.map(x => {\r\n return {\r\n value: x,\r\n isThisMonth: getMonth(this.selectedDate) === x && isSameYear(this.currentdDate, this.selectedDate)\r\n }\r\n });\r\n }\r\n\r\n private loadYearsInterval() {\r\n let year = subYears(this.selectedDate, AdbDatePickerComponent.YEAR_INTERVALL);\r\n const years = [];\r\n for (let i = 0; i < 16; i++) {\r\n years.push({\r\n value: year,\r\n title: year.getFullYear(),\r\n isThisYear: isSameYear(year, this.currentdDate)\r\n });\r\n year = addYears(year, 1);\r\n }\r\n this.years = years;\r\n }\r\n\r\n onSelectDate(day: PickerDay): void {\r\n this.selectDate.emit(day.value);\r\n }\r\n\r\n private createCalendar() {\r\n const weeks = [];\r\n const monthInterval = { start: startOfMonth(this.selectedDate), end: endOfMonth(this.selectedDate) };\r\n var fnsWweeks = eachWeekOfInterval(monthInterval, { weekStartsOn: this.translate.currentLang === 'sv' || this.translate.currentLang === 'sv-SE' ? 1 : 0 });\r\n for (const fnsWeek of fnsWweeks) {\r\n const week = { weekNumber: 0, days: [] };\r\n week.weekNumber = getISOWeek(new Date(fnsWeek));\r\n const weekInterval = { start: new Date(fnsWeek), end: addDays(new Date(fnsWeek), 6) };\r\n week.days = eachDayOfInterval(weekInterval).map(day => {\r\n day.setHours(getHours(new Date()));\r\n day.setMinutes(getMinutes(new Date()));\r\n return {\r\n value: day,\r\n isSelected: isSameYear(day, this.initialDate) && isSameDay(day, this.initialDate) && isSameMonth(day, this.initialDate),\r\n isInRange: this.range ? isWithinInterval(day, this.range) : true,\r\n isToday: isSameDay(day, new Date()),\r\n inMonth: monthInterval.start.getMonth() === day.getMonth()\r\n };\r\n });\r\n weeks.push(week);\r\n }\r\n this.weeks = weeks;\r\n }\r\n\r\n static parseDate(value: Date | string): Date {\r\n if (typeof value === 'string') {\r\n if (isValid(parseISO(value))) {\r\n return parseISO(value);\r\n } else {\r\n return null;\r\n }\r\n } else if (value instanceof Date) {\r\n return value;\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\nexport interface PickerWeek {\r\n weeks: {\r\n weekNumber: number;\r\n days: PickerDay[]\r\n }[];\r\n}\r\n\r\nexport interface PickerDay {\r\n value: Date,\r\n isToday: boolean,\r\n isInRange: boolean,\r\n inMonth: boolean,\r\n isSelected: boolean\r\n}","<div class=\"position-relative\" [class.to-left]=\"toLeft\">\r\n <nav class=\"bg-white shadow rounded position-absolute\">\r\n <header class=\"bg-primary p-2 rounded-top d-flex justify-content-between align-items-center gap-1\">\r\n <button tabIndex=\"-1\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onPrev()\" [disabled]=\"noYearMode&&currentMonth===0\"><span class=\"fa fa-chevron-left\"></span></button>\r\n <ng-container *ngIf=\"!years&&!months\">\r\n <button tabIndex=\"-1\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onShowMonth();$event.stopPropagation()\">{{selectedDate|adbLocaleDate:'MMM'}}</button>\r\n <button *ngIf=\"!noYearMode\" tabIndex=\"-1\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onShowYear();$event.stopPropagation()\">{{selectedDate|date:'yyyy'}}</button>\r\n </ng-container>\r\n <button tabIndex=\"-1\" *ngIf=\"years\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"years=null;$event.stopPropagation()\">{{years[0].title}} - {{years[years.length-1].title}}</button>\r\n <button tabIndex=\"-1\" *ngIf=\"months\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onShowYear();$event.stopPropagation()\">{{selectedDate|date:'yyyy'}}</button>\r\n <button tabIndex=\"-1\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onNext()\" [disabled]=\"noYearMode&&currentMonth===11\"><span class=\"fa fa-chevron-right\"></span></button>\r\n </header>\r\n <div class=\"p-0 border calendar\">\r\n <ul class=\"list-unstyled row\" *ngIf=\"years\">\r\n <li class=\"col-3 text-center px-2 py-3\" *ngFor=\"let year of years\">\r\n <button type=\"button\" tabIndex=\"-1\" class=\"btn btn-sm btn-outline-secondary rounded-pill\" (click)=\"onSelectYear(year.value);$event.stopPropagation()\" [class.active]=\"year.hasObservation\" [ngClass]=\"{'border border-secondary':year.isThisYear}\">{{year.title}}</button>\r\n </li>\r\n </ul>\r\n <ul class=\"list-unstyled row\" *ngIf=\"months\">\r\n <li class=\"col-4 text-center px-2 py-3\" *ngFor=\"let month of months\">\r\n <button type=\"button\" tabIndex=\"-1\" class=\"btn btn-sm btn-outline-secondary rounded-pill\" (click)=\"onSelectMonth(month.value);$event.stopPropagation()\" [class.active]=\"month.observation\" [ngClass]=\"{'border border-secondary':month.isThisMonth}\">\r\n {{'MONTHS.'+(month.value+1)|translate}}\r\n </button>\r\n </li>\r\n </ul>\r\n <div class=\"days\" *ngIf=\"!years&&!months\">\r\n <div class=\"text-center border-bottom py-2 text-muted\" *ngFor=\"let weekDay of weekDays\">{{'WEEK_DAYS.'+weekDay|translate}}</div>\r\n <ng-container *ngFor=\"let week of weeks\">\r\n <button tabIndex=\"-1\" class=\"btn rounded-circle p-0\" *ngFor=\"let day of week.days\" (click)=\"onSelectDate(day)\" type=\"button\" \r\n [class.border]=\"day.isToday\" [class.bg-primary]=\"day.isSelected\" [class.text-white]=\"day.isSelected\" [ngClass]=\"{'pe-none text-muted opacity-50':!day.inMonth||!day.isInRange}\">\r\n <small>{{day.value|date:'d'}}</small>\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </nav>\r\n</div>\r\n","import { ComponentRef, Inject, Injectable } from \"@angular/core\";\r\nimport { BehaviorSubject, Subject } from \"rxjs\";\r\nimport { AdbDatePickerComponent } from \"./adb-date-picker.component\";\r\n\r\n@Injectable()\r\nexport class AdbDatePickerService {\r\n viewRef: ComponentRef<AdbDatePickerComponent>;\r\n}","import { formatDate } from \"@angular/common\";\r\nimport { Directive, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Input, OnChanges, OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef } from \"@angular/core\";\r\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from \"@angular/forms\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { isValid, parseISO } from \"date-fns\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { AdbDatePickerComponent } from \"./adb-date-picker.component\";\r\nimport { AdbDatePickerService } from \"./adb-date-picker.service\";\r\n\r\n@Directive({\r\n selector: `input[adbDatepicker]`,\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => AdbDatePickerDirective),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: AdbDatePickerDirective,\r\n multi: true,\r\n },],\r\n standalone: false\r\n})\r\nexport class AdbDatePickerDirective implements ControlValueAccessor, Validator, OnInit, OnDestroy {\r\n private subscriptions = new Subscription();\r\n @HostBinding('autocomplete') autocomplete = 'off';\r\n @Output() adbBlur = new EventEmitter<Date>();\r\n @Input() format = 'yyyy-MM-dd';\r\n @Input() toLeft: boolean;\r\n @Input() settings: { maxDate?: Date | string, minDate?: Date | string } = null;\r\n id: string;\r\n currentDate: Date;\r\n isValid: boolean;\r\n\r\n constructor(\r\n private viewContainerRef: ViewContainerRef,\r\n private renderer: Renderer2,\r\n private elementRef: ElementRef,\r\n private adbDatePickerService: AdbDatePickerService,\r\n public translate: TranslateService) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.elementRef.nativeElement.setAttribute(\"placeholder\", this.format);\r\n }\r\n\r\n @HostListener('click')\r\n onClick(): void {\r\n if (this.adbDatePickerService.viewRef) {\r\n this.adbDatePickerService.viewRef.destroy();\r\n }\r\n const viewRef = this.viewContainerRef.createComponent<AdbDatePickerComponent>(AdbDatePickerComponent);\r\n viewRef.instance.settings = this.settings;\r\n viewRef.instance.toLeft = this.toLeft;\r\n viewRef.instance.initialDate = this.currentDate;\r\n this.id = this.getId();\r\n viewRef.instance.id = this.id;\r\n viewRef.instance.selectDate.subscribe((date) => {\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', formatDate(date, this.format, this.translate.currentLang));\r\n this.onChange(date);\r\n this.currentDate = date;\r\n this.onHide();\r\n this.adbBlur.emit(date);\r\n });\r\n this.adbDatePickerService.viewRef = viewRef;\r\n }\r\n\r\n @HostListener('keyup', ['$event']) public onKeyup(event: KeyboardEvent): void {\r\n const date = AdbDatePickerDirective.tryParse((event.target as HTMLInputElement).value);\r\n if (date) {\r\n const now = new Date();\r\n date.setHours(now.getHours()); date.setMinutes(now.getMinutes()); date.setSeconds(now.getSeconds());\r\n this.onChange(date);\r\n } else {\r\n this.onChange((event.target as HTMLInputElement).value); //send inccorect values to form\r\n }\r\n }\r\n\r\n @HostListener('keydown.shift.tab')\r\n @HostListener('keydown.tab')\r\n onTabDown(): void {\r\n this.updateValueOnLeave();\r\n this.onHide();\r\n this.adbBlur.emit(this.currentDate);\r\n }\r\n\r\n @HostListener('keydown.esc')\r\n onEscdOWN(): void {\r\n this.updateValueOnLeave();\r\n this.onHide();\r\n }\r\n\r\n\r\n onHide(): void {\r\n this.adbDatePickerService.viewRef = null;\r\n this.viewContainerRef.detach();\r\n this.viewContainerRef.clear();\r\n }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n onCheckOutSideClick(target: any): void {\r\n const nativeElement = this.adbDatePickerService.viewRef?.instance.elementRef.nativeElement ?? null;\r\n if (nativeElement) {\r\n if (nativeElement.id === this.id) {\r\n if (!target.hasAttribute('adbdatepicker')) {\r\n const clickedInside = nativeElement.contains(target);\r\n if (!clickedInside) {\r\n this.updateValueOnLeave();\r\n this.onHide();\r\n this.adbBlur.emit(this.currentDate);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private updateValueOnLeave(): void {\r\n if (this.isValid) {\r\n if (this.currentDate) {\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', formatDate(this.currentDate, this.format, this.translate.currentLang));\r\n } else {\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', '');\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n\r\n //Validator\r\n validate(control: AbstractControl): ValidationErrors {\r\n const value = control.value;\r\n if (!value) {\r\n this.currentDate = null;\r\n this.isValid = true;\r\n return null;\r\n }\r\n if (value instanceof Date) {\r\n this.currentDate = value;\r\n this.isValid = true;\r\n return null;\r\n }\r\n if (typeof value === 'string' || value instanceof String) {\r\n const date = AdbDatePickerDirective.tryParse(value as string);\r\n if (!date) {\r\n this.isValid = false;\r\n return { date: true }\r\n }\r\n }\r\n this.isValid = true;\r\n return null;\r\n }\r\n\r\n //ControlValueAccessor\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n onValidationChange: any = () => { };\r\n\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this.onValidationChange = fn;\r\n }\r\n\r\n writeValue(value: Date | string): void {\r\n if (!value) {\r\n this.currentDate = null;\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', '');\r\n return;\r\n }\r\n if (typeof value === 'string' || value instanceof String) {\r\n const date = AdbDatePickerDirective.tryParse(value as string);\r\n if (!date) {\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\r\n return;\r\n }\r\n value = date;\r\n }\r\n if (value instanceof Date) {\r\n this.currentDate = value;\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', formatDate(this.currentDate, this.format, this.translate.currentLang));\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.viewContainerRef.clear();\r\n }\r\n\r\n static tryParse(dateString: string): Date {\r\n const parsed = parseISO(dateString);\r\n return isValid(parsed) ? parsed : null;\r\n }\r\n\r\n private getId(): string {\r\n return '' + Math.floor(Math.random() * Date.now())\r\n }\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { AdbDirectivesModule } from \"../../directives/directives.module\";\r\nimport { AdbPipesModule } from \"../../pipes/pipes.module\";\r\nimport { AdbDatePickerComponent } from \"./adb-date-picker.component\";\r\nimport { AdbDatePickerDirective } from \"./adb-date-picker.directive\";\r\nimport { AdbDatePickerService } from \"./adb-date-picker.service\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, TranslateModule.forChild(), AdbPipesModule, AdbDirectivesModule],\r\n declarations: [AdbDatePickerComponent, AdbDatePickerDirective],\r\n exports: [AdbDatePickerComponent, AdbDatePickerDirective],\r\n providers: [AdbDatePickerService]\r\n})\r\nexport class AdbDatePickerModule { }","import { ApplicationRef, ComponentFactoryResolver, EmbeddedViewRef, Injectable, Injector, Renderer2, RendererFactory2 } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\nimport { AdbConfirmModal, DialogModel } from \"./adb-confirm-modal\";\r\n\r\n@Injectable()\r\nexport class AdbModalService {\r\n private closeSubject = new Subject<boolean>();\r\n close$ = this.closeSubject.asObservable();\r\n\r\n renderer: Renderer2;\r\n domElem: HTMLElement;\r\n backdrop: any;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n rendererFactory: RendererFactory2,\r\n private appRef: ApplicationRef,\r\n private injector: Injector) {\r\n this.renderer = rendererFactory.createRenderer(null, null);\r\n }\r\n\r\n hide(confirm: boolean): void {\r\n this.closeSubject.next(confirm);\r\n document.body.removeChild(this.domElem);\r\n document.body.removeChild(this.backdrop);\r\n var main = this.renderer.selectRootElement('main',true);\r\n this.renderer.removeAttribute(main, 'inert');\r\n this.closeSubject.unsubscribe();\r\n this.closeSubject = new Subject<boolean>();\r\n this.close$ = this.closeSubject.asObservable();\r\n }\r\n\r\n showConfirm(model: DialogModel): void {\r\n var main = this.renderer.selectRootElement('main',true);\r\n main.setAttribute('inert','');\r\n this.backdrop = this.renderer.createElement('div');\r\n this.backdrop.classList.add('modal-backdrop', 'fade', 'show');\r\n this.renderer.appendChild(document.body, this.backdrop);\r\n\r\n let componentRef = this.componentFactoryResolver.resolveComponentFactory(AdbConfirmModal).create(this.injector);\r\n model.header = model.header ?? 'NOT_SET';\r\n model.text = model.text ?? 'NOT_SET';\r\n model.confirm = model.confirm ?? 'OK';\r\n model.decline = model.decline ?? 'CANCEL';\r\n model.showDecline = model.showDecline ?? true;\r\n componentRef.instance.model = model;\r\n\r\n this.appRef.attachView(componentRef.hostView);\r\n this.domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(this.domElem);\r\n }\r\n}","import { AfterViewInit, Component, ElementRef, Input } from '@angular/core';\r\nimport { AdbModalService } from './adb-modal.service';\r\n@Component({\r\n templateUrl: 'adb-confirm-modal.html',\r\n standalone: false\r\n})\r\nexport class AdbConfirmModal implements AfterViewInit {\r\n @Input() public model: DialogModel;\r\n constructor(public modalRef: AdbModalService, private elementRef: ElementRef) {\r\n\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const element = this.elementRef.nativeElement.querySelector('#modal-close');\r\n if (element) {\r\n element.focus();\r\n }\r\n }\r\n\r\n onClose(confirm: boolean): void {\r\n this.modalRef.hide(confirm);\r\n }\r\n}\r\n\r\nexport interface DialogModel {\r\n header: string;\r\n text: string;\r\n confirm?: string;\r\n decline?: string;\r\n showDecline?: boolean;\r\n value?: any;\r\n}\r\n","@if (model) {\r\n <div class=\"modal fade show\" role=\"dialog\"\r\n attr.aria-labelledby=\"mod_header\"\r\n attr.aria-describedby=\"mod_desc\">\r\n <div class=\"modal-dialog modal-dialog-centered\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h1 class=\"h-subsection mb-0 modal-title\" id=\"mod_header\">{{model.header|translate}}</h1>\r\n <button type=\"button\" class=\"btn-close\" id=\"modal-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\" (click)=\"onClose(false)\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div id=\"mod_desc\">{{model.text|translate}}</div>\r\n @if (model.value) {\r\n <div>\r\n <strong>{{model.value}}</strong>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"modal-footer\">\r\n <div class=\"d-flex gap-2 justify-content-end\">\r\n @if (model.showDecline) {\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"onClose(false)\">{{model.decline|translate}}</button>\r\n }\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onClose(true)\">{{model.confirm|translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { AdbDirectivesModule } from \"../../directives/directives.module\";\r\nimport { AdbConfirmModal } from \"./adb-confirm-modal\";\r\nimport { AdbModalService } from \"./adb-modal.service\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, TranslateModule.forChild(), AdbDirectivesModule],\r\n declarations: [AdbConfirmModal],\r\n exports: [AdbConfirmModal],\r\n providers: [AdbModalService]\r\n})\r\nexport class AdbModalModule { }","import { ApplicationRef, ComponentFactoryResolver, EmbeddedViewRef, Injectable, Injector, Renderer2, RendererFactory2 } from \"@angular/core\";\r\nimport { Observable, of, Subject } from \"rxjs\";\r\nimport { delay } from \"rxjs/operators\";\r\nimport { AdbToast } from \"./adb-toast\";\r\n@Injectable()\r\nexport class AdbToastService {\r\n private toasts = new Array<ToastMessage>();\r\n private toastsSubject = new Subject<ToastMessage[]>();\r\n $toasts: Observable<ToastMessage[]> = this.toastsSubject.asObservable();\r\n renderer: Renderer2;\r\n domElement: HTMLElement;\r\n container: any;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private rendererFactory: RendererFactory2,\r\n private appRef: ApplicationRef,\r\n private injector: Injector) {\r\n }\r\n\r\n add(toastMessage: ToastMessage, time = 4000): void {\r\n this.addContainer();\r\n toastMessage.type = toastMessage.type ? toastMessage.type : ToastType.Primary;\r\n toastMessage.index = this.toasts.length;\r\n toastMessage.delay = of(toastMessage).pipe(delay(time)).subscribe(toast => {\r\n this.remove(toast);\r\n });\r\n this.toasts.push(toastMessage);\r\n this.toastsSubject.next(this.toasts);\r\n }\r\n\r\n remove(toast: ToastMessage) {\r\n this.toasts = this.toasts?.filter(x => x.index !== toast.index);\r\n this.toastsSubject.next(this.toasts);\r\n }\r\n\r\n private addContainer(): void {\r\n if (!this.container) {\r\n this.renderer = this.rendererFactory.createRenderer(null, null);\r\n //create container i top\r\n this.container = this.renderer.createElement('div');\r\n this.renderer.appendChild(document.body, this.container);\r\n let componentRef = this.componentFactoryResolver.resolveComponentFactory(AdbToast).create(this.injector);\r\n this.appRef.attachView(componentRef.hostView);\r\n const element = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n this.container.prepend(element);\r\n }\r\n }\r\n}\r\nexport interface ToastMessage {\r\n header?: string,\r\n headerValue?: any;\r\n message: string,\r\n messageValue?: any;\r\n type?: ToastType,\r\n index?: number;\r\n delay?: any;\r\n}\r\nexport enum ToastType {\r\n Primary = 1,\r\n Success = 2,\r\n Warn = 3,\r\n Danger = 4\r\n}","\r\nimport { Component } from '@angular/core';\r\nimport { AdbToastService, ToastMessage, ToastType } from './adb-toast.service';\r\n@Component({\r\n templateUrl: 'adb-toast.html',\r\n standalone: false\r\n})\r\nexport class AdbToast {\r\n toasts: ToastMessage[];\r\n toastType = ToastType;\r\n constructor(public toastService: AdbToastService) {\r\n this.toastService.$toasts.subscribe(toasts => {\r\n this.toasts = toasts;\r\n });\r\n }\r\n onRemoveToast(toast: ToastMessage): void {\r\n this.toastService.remove(toast);\r\n }\r\n}","<div class=\"position-fixed bottom-0 end-0\" style=\"z-index: 50000;min-width: 15rem;\">\r\n @for (toast of toasts; track toast) {\r\n <div class=\"alert alert-dismissible\" role=\"alert\"\r\n [class.alert-primary]=\"toast.type===toastType.Primary\"\r\n [class.alert-success]=\"toast.type===toastType.Success\"\r\n [class.alert-warning]=\"toast.type===toastType.Warn\"\r\n [class.alert-danger]=\"toast.type===toastType.Danger\">\r\n @if (toast.header) {\r\n <div class=\"d-flex align-items-center justify-content-between pb-1\">\r\n @if (!toast.headerValue) {\r\n <div class=\"fw-bold pb-1\">{{toast.header|translate}}</div>\r\n }\r\n @if (toast.headerValue) {\r\n <div class=\"fw-bold pb-1\">{{(toast.header|translate:toast.headerValue )}}</div>\r\n }\r\n <button type=\"button\" class=\"btn-close\" (click)=\"onRemoveToast(toast)\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\r\n </div>\r\n }\r\n <div class=\"d-flex align-items-center justify-content-between mt-1\">\r\n @if (!toast.messageValue) {\r\n <div>{{toast.message|translate}}</div>\r\n }\r\n @if (toast.messageValue) {\r\n <div>{{(toast.message|translate:toast.messageValue )}}</div>\r\n }\r\n <button type=\"button\" class=\"btn-close\" (click)=\"onRemoveToast(toast)\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\r\n </div>\r\n </div>\r\n }\r\n</div>","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { AdbDirectivesModule } from \"../../directives/directives.module\";\r\nimport { AdbToast } from \"./adb-toast\";\r\nimport { AdbToastService } from \"./adb-toast.service\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, TranslateModule.forChild(), AdbDirectivesModule],\r\n declarations: [AdbToast],\r\n exports: [AdbToast],\r\n providers: [AdbToastService]\r\n})\r\nexport class AdbToastModule { }","import { Component, ElementRef, HostBinding, HostListener, Input, OnInit } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'adb-help-button',\r\n templateUrl: 'help-button.component.html',\r\n standalone: false\r\n})\r\nexport class AdbHelpButtonComponent implements OnInit {\r\n showHelp = false;\r\n @Input() buttonClass = 'btn btn-invisible p-0';\r\n @Input() iconClass = 'fas fa-question-circle text-primary';\r\n @Input() label = '';\r\n id: number;\r\n @HostListener('document:click', ['$event'])\r\n public onClickDoc(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n const parent = target.parentElement;\r\n const clickedInside = this.elementRef.nativeElement.contains(parent);\r\n if (!clickedInside) {\r\n this.showHelp = false;\r\n }\r\n }\r\n\r\n\r\n constructor(private elementRef: ElementRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.id = + Math.floor(Math.random() * Date.now())\r\n }\r\n\r\n onClose(): void {\r\n const node = this.elementRef.nativeElement.parentNode;\r\n if (node) {\r\n if (this.showHelp) {\r\n node.classList.remove('position-relative');\r\n } else {\r\n node.classList.add('position-relative');\r\n }\r\n }\r\n this.showHelp = !this.showHelp\r\n }\r\n}","<button type=\"button\"\r\n class=\"w-auto d-flex gap-1 align-items-baseline help-button\"\r\n [ngClass]=\"buttonClass\"\r\n [attr.aria-controls]=\"id\" aria-label=\"Help\"\r\n [attr.aria-expanded]=\"showHelp\" (click)=\"onClose()\">\r\n <span [ngClass]=\"iconClass\"></span>\r\n {{label}}\r\n</button>\r\n<div>\r\n @if (showHelp) {\r\n <div [id]=\"id\" class=\"position-absolute start-0 w-100 adb-plate-primary text-start shadow\" style=\"z-index:4\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"flex-grow-1\"><ng-content></ng-content></div>\r\n <div class=\"ms-auto align-self-start d-flex align-items-start\">\r\n <button type=\"button\" class=\"btn-close p-1\" data-bs-dismiss=\"modal\" aria-label=\"Close\" (click)=\"showHelp=false\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { AdbDirectivesModule } from \"../../directives/directives.module\";\r\nimport { AdbHelpButtonComponent } from \"./help-button.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, AdbDirectivesModule],\r\n declarations: [AdbHelpButtonComponent],\r\n exports: [AdbHelpButtonComponent]\r\n})\r\nexport class AdbButtonsModule { }","import {\r\n Component,\r\n ElementRef,\r\n forwardRef,\r\n Input,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\ntype FormatType = 'italic' | 'bold';\r\n\r\nconst FORMAT_MARKERS: Record<FormatType, string[]> = {\r\n italic: ['*', '_'],\r\n bold: ['**', '__']\r\n};\r\n\r\nconst DEFAULT_MARKER: Record<FormatType, string> = {\r\n italic: '*',\r\n bold: '**'\r\n};\r\n\r\n@Component({\r\n selector: 'adb-rich-editor',\r\n templateUrl: './adb-rich-editor.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AdbRichEditorComponent),\r\n multi: true\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class AdbRichEditorComponent\r\n implements ControlValueAccessor, OnDestroy {\r\n\r\n text = '';\r\n\r\n @Input() hasTaxon = false;\r\n @Input() hasReference = false;\r\n @Input() rows = 3;\r\n\r\n constructor(private el: ElementRef) {}\r\n\r\n private getTextarea(): HTMLTextAreaElement | null {\r\n return this.el.nativeElement.querySelector('textarea');\r\n }\r\n\r\n onDoubleClick(): void {\r\n const textarea = this.getTextarea();\r\n if (!textarea) return;\r\n\r\n const start = textarea.selectionStart;\r\n let end = textarea.selectionEnd;\r\n\r\n while (end > start && textarea.value[end - 1] === ' ') {\r\n end--;\r\n }\r\n\r\n textarea.setSelectionRange(start, end);\r\n }\r\n\r\n\r\n onItalicClick(): void {\r\n this.applyFormatting('italic');\r\n }\r\n\r\n onBoldClick(): void {\r\n this.applyFormatting('bold');\r\n }\r\n\r\n private applyFormatting(type: FormatType): void {\r\n const textarea = this.getTextarea();\r\n if (!textarea) return;\r\n\r\n const start = textarea.selectionStart;\r\n const end = textarea.selectionEnd;\r\n const value = textarea.value;\r\n\r\n if (start === end) {\r\n const marker = DEFAULT_MARKER[type];\r\n const newValue =\r\n value.slice(0, start) +\r\n marker +\r\n marker +\r\n value.slice(start);\r\n\r\n this.updateValue(newValue);\r\n\r\n const cursor = start + marker.length;\r\n textarea.focus();\r\n textarea.setSelectionRange(cursor, cursor);\r\n return;\r\n }\r\n\r\n const existingMarker = this.findWrappingMarker(\r\n value,\r\n start,\r\n end,\r\n FORMAT_MARKERS[type]\r\n );\r\n\r\n const marker = existingMarker ?? DEFAULT_MARKER[type];\r\n\r\n const newValue = existingMarker\r\n ? value.slice(0, start - marker.length) +\r\n value.slice(start, end) +\r\n value.slice(end + marker.length)\r\n : value.slice(0, start) +\r\n marker +\r\n value.slice(start, end) +\r\n marker +\r\n value.slice(end);\r\n\r\n this.updateValue(newValue);\r\n\r\n const cursorStart = existingMarker\r\n ? start - marker.length\r\n : start + marker.length;\r\n\r\n const cursorEnd = existingMarker\r\n ? end - marker.length\r\n : end + marker.length;\r\n\r\n textarea.focus();\r\n textarea.setSelectionRange(cursorStart, cursorEnd);\r\n }\r\n\r\n private findWrappingMarker(\r\n value: string,\r\n start: number,\r\n end: number,\r\n markers: string[]\r\n ): string | null {\r\n return (\r\n markers.find(marker =>\r\n value.substring(start - marker.length, start) === marker &&\r\n value.substring(end, end + marker.length) === marker\r\n ) ?? null\r\n );\r\n }\r\n\r\n onTaxonClick(): void {\r\n this.replaceMarked('[Name](taxon:0)');\r\n }\r\n\r\n onReferenceClick(): void {\r\n this.replaceMarked('[Name](reference:0)');\r\n }\r\n\r\n private replaceMarked(replaceTag: string): void {\r\n const textarea = this.getTextarea();\r\n if (!textarea) return;\r\n\r\n const start = textarea.selectionStart;\r\n const end = textarea.selectionEnd;\r\n const value = textarea.value;\r\n\r\n const before = start > 0 ? value[start - 1] : '';\r\n const after = end < value.length ? value[end] : '';\r\n\r\n const spaceBefore = before && !/\\s/.test(before) ? ' ' : '';\r\n const spaceAfter = after && !/\\s/.test(after) ? ' ' : '';\r\n\r\n const newValue =\r\n value.slice(0, start) +\r\n spaceBefore +\r\n replaceTag +\r\n spaceAfter +\r\n value.slice(end);\r\n\r\n this.updateValue(newValue);\r\n\r\n const nameStart = newValue.indexOf('Name', start);\r\n if (nameStart === -1) return;\r\n\r\n const nameEnd = nameStart + 'Name'.length;\r\n\r\n requestAnimationFrame(() => {\r\n textarea.focus();\r\n textarea.setSelectionRange(nameStart, nameEnd);\r\n });\r\n }\r\n\r\n // ---------------------------------------\r\n // ControlValueAccessor\r\n // ---------------------------------------\r\n onChange: (value: string) => void = () => {};\r\n onTouched: () => void = () => {};\r\n\r\n writeValue(value: string): void {\r\n this.text = value ?? '';\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n // Intentionally left minimal\r\n // Disabled state should be handled via template binding\r\n }\r\n\r\n onTextChange(): void {\r\n this.onChange(this.text);\r\n }\r\n\r\n private updateValue(value: string): void {\r\n this.text = value;\r\n this.onChange(this.text);\r\n }\r\n\r\n ngOnDestroy(): void {}\r\n}\r\n","<div>\r\n <div class=\"d-flex justify-content-end gap-3 mb-1\">\r\n <button class=\"btn btn-secondary\" (click)=\"onItalicClick()\" title=\"Italic\" aria-label=\"Italic\" type=\"button\"><span class=\"fas fa-italic\"></span></button>\r\n <button class=\"btn btn-secondary\" (click)=\"onBoldClick()\" title=\"Italic\" aria-label=\"strong\" type=\"button\"><span class=\"fas fa-bold\"></span></button>\r\n @if (hasTaxon) {\r\n <button class=\"btn btn-secondary\" (click)=\"onTaxonClick()\" title=\"Taxon\" aria-label=\"Taxon\" type=\"button\"><span class=\"fas fa-bug\"></span></button>\r\n }\r\n @if (hasReference) {\r\n <button class=\"btn btn-secondary\" (click)=\"onReferenceClick()\" title=\"Reference\" aria-label=\"Reference\" type=\"button\"><span class=\"fas fa-asterisk\"></span></button>\r\n }\r\n </div>\r\n <textarea class=\"form-control\" [(ngModel)]=\"text\" (ngModelChange)=\"onTextChange()\" [rows]=\"rows\" (dblclick)=\"onDoubleClick()\"></textarea>\r\n</div>\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface RichModuleConfig {\r\n taxonUrl: string;\r\n}\r\n\r\nexport const RICH_MODULE_CONFIG = new InjectionToken<RichModuleConfig>('richModule.config');\r\n","import { Component, Inject, Input } from '@angular/core';\r\nimport { RICH_MODULE_CONFIG, RichModuleConfig } from './rich-module-config';\r\n\r\nexport interface RichTextPart {\r\n type: 'text' | 'italic' | 'bold' | 'taxon' | 'term' | 'reference';\r\n content: string;\r\n id?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'adb-rich-text',\r\n templateUrl: './adb-rich-text.html',\r\n standalone: false\r\n})\r\nexport class RichTextComponent {\r\n @Input() text: string = '';\r\n\r\n parts: RichTextPart[] = [];\r\n taxonUrl: string;\r\n\r\n constructor(@Inject(RICH_MODULE_CONFIG) config: RichModuleConfig) {\r\n this.taxonUrl = config.taxonUrl;\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.parts = this.text\r\n ? this.parseCustomMarkdown(this.text)\r\n : [];\r\n }\r\n\r\n private parseCustomMarkdown(input: string): RichTextPart[] {\r\n const parts: RichTextPart[] = [];\r\n const boldRegex = /(\\*\\*|__)(.+?)\\1/g;\r\n const italicRegex = /(\\*|_)([^*_]+?)\\1/g;\r\n const taxonRegex = /\\[([^\\]]+)\\]\\(taxon:([^)]+)\\)/g;\r\n const termRegex = /\\[([^\\]]+)\\]\\(term:([^)]+)\\)/g;\r\n const referenceRegex = /\\[([^\\]]+)\\]\\(reference:([^)]+)\\)/g;\r\n\r\n const combinedRegex = new RegExp(\r\n [\r\n boldRegex.source,\r\n italicRegex.source,\r\n taxonRegex.source,\r\n termRegex.source,\r\n referenceRegex.source\r\n ].join('|'),\r\n 'g'\r\n );\r\n\r\n let lastIndex = 0;\r\n let match: RegExpExecArray | null;\r\n\r\n while ((match = combinedRegex.exec(input)) !== null) {\r\n if (match.index > lastIndex) {\r\n parts.push({\r\n type: 'text',\r\n content: input.slice(lastIndex, match.index)\r\n });\r\n }\r\n\r\n if (match[2]) {\r\n parts.push({\r\n type: 'bold',\r\n content: match[2]\r\n });\r\n }\r\n else if (match[4]) {\r\n parts.push({\r\n type: 'italic',\r\n content: match[4]\r\n });\r\n }\r\n else if (match[5]) {\r\n parts.push({\r\n type: 'taxon',\r\n content: match[5],\r\n id: match[6]\r\n });\r\n }\r\n else if (match[7]) {\r\n parts.push({\r\n type: 'term',\r\n content: match[7],\r\n id: match[8]\r\n });\r\n }\r\n else if (match[9]) {\r\n parts.push({\r\n type: 'reference',\r\n content: match[9],\r\n id: match[10]\r\n });\r\n }\r\n lastIndex = combinedRegex.lastIndex;\r\n }\r\n if (lastIndex < input.length) {\r\n parts.push({\r\n type: 'text',\r\n content: input.slice(lastIndex)\r\n });\r\n }\r\n return parts;\r\n }\r\n}\r\n","<div style=\"white-space: pre-wrap;\">\r\n @for (part of parts; track part) {\r\n @if (part.type === 'text') {\r\n <span>{{ part.content }}</span>\r\n }\r\n @if (part.type === 'italic') {\r\n <em>{{ part.content }}</em>\r\n }\r\n @if (part.type === 'bold') {\r\n <b>{{ part.content }}</b>\r\n }\r\n @if (part.type === 'taxon') {\r\n <a [href]=\"taxonUrl + part.id\">{{ part.content }}</a>\r\n }\r\n @if (part.type === 'term') {\r\n <span>{{ part.content }}</span>\r\n }\r\n @if (part.type === 'reference') {\r\n <span>{{ part.content }}</span>\r\n }\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AdbRichEditorComponent } from './adb-rich-editor.component';\r\nimport { RichTextComponent } from './adb-rich-text';\r\nimport { RICH_MODULE_CONFIG, RichModuleConfig } from './rich-module-config';\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormsModule],\r\n declarations: [AdbRichEditorComponent, RichTextComponent],\r\n exports: [AdbRichEditorComponent, RichTextComponent]\r\n})\r\nexport class AdbRichEditorModule {\r\n static forRoot(config: RichModuleConfig): ModuleWithProviders<AdbRichEditorModule> {\r\n return {\r\n ngModule: AdbRichEditorModule,\r\n providers: [\r\n { provide: RICH_MODULE_CONFIG, useValue: config }\r\n ]\r\n };\r\n }\r\n}\r\n","import { Component, ContentChild, Input, OnDestroy, OnInit, TemplateRef } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'adb-filter-section',\r\n templateUrl: './filter-section.component.html',\r\n standalone: false\r\n})\r\nexport class FilterSectionComponent implements OnInit, OnDestroy {\r\n @Input() titleResource = 'Not set';\r\n @Input() helpResource = null;\r\n @Input() count: number;\r\n @Input() expanded;\r\n @Input() lazy = false;\r\n id: number;\r\n @ContentChild(TemplateRef)\r\n template?: TemplateRef<unknown>;\r\n\r\n ngOnInit(): void {\r\n this.id = + Math.floor(Math.random() * Date.now())\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n}\r\n","<button [attr.aria-expanded]=\"expanded\" [attr.aria-controls]=\"id\" class=\"btn btn-invisible px-1 bg-white\" type=\"button\" (click)=\"expanded = !expanded\">\r\n <div class=\"d-flex align-items-center gap-1 flex-wrap \">\r\n <div class=\"d-flex align-items-center\">\r\n <i class=\"fas fa-fw\" [ngClass]=\"expanded?'fa-chevron-down':'fa-chevron-right'\"></i>\r\n {{titleResource|translate}}\r\n </div>\r\n @if(helpResource){\r\n <adb-help-button (click)=\"$event.stopPropagation()\">{{helpResource|translate}}</adb-help-button>\r\n }\r\n @if(count > 0){\r\n <div class=\"ms-auto badge bg-dark\">{{count}}</div>\r\n }\r\n </div>\r\n</button>\r\n@if (expanded) {\r\n<div class=\"px-3 pb-3 border-bottom\" [id]=\"id\">\r\n @if (lazy && template) {\r\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n</div>\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { FilterSectionComponent } from \"./filter-section.component\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { AdbButtonsModule } from \"../adb-buttons/adb-buttons.module\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormsModule, TranslateModule, AdbButtonsModule],\r\n declarations: [FilterSectionComponent],\r\n exports: [FilterSectionComponent,AdbButtonsModule]\r\n})\r\nexport class AdbFilterSectionModule { }","import { InjectionToken } from \"@angular/core\";\r\n\r\n// adb-services/adb-data-service-config.ts\r\nexport interface AdbUserServiceConfig {\r\n redirectUrl: string;\r\n clientId: string;\r\n issuer: string;\r\n scope?: string;\r\n responseType?: string;\r\n idleTime?: number;\r\n autoLogin?: boolean;\r\n postLogoutUrl?: string;\r\n overrideIssuer?: boolean,\r\n log?: boolean\r\n}\r\nexport const ADB_USER_SERVICE_CONFIG = new InjectionToken<AdbUserServiceConfig>('ADB_DATA_SERVICE_CONFIG');\r\nexport const DEFAULT_ADB_USER_SERVICE_CONFIG = {\r\n scope: 'roles profile email',\r\n idleTime: 25,\r\n autoLogin: false,\r\n response_type: 'code',\r\n overrideIssuer: false,\r\n log: false\r\n};\r\n","export class UserModuleConstants {\r\n static CURRENT_URL = \"current_url\";\r\n static CODE_VERIFIER = 'nonce';\r\n static REFRESH_TOKEN = 'refresh-token';\r\n static TOKEN_EXPIRES = 'token_expires';\r\n static ACCESS_TOKEN = 'access-token';\r\n static USER_LAST_ACTIVE = 'lastActive'\r\n static ONGOING_CODEFLOW = 'ongoing-codeflow';\r\n}\r\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\r\nimport { ADB_USER_SERVICE_CONFIG, AdbUserServiceConfig } from './adb-user-service-config';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { addSeconds, format } from 'date-fns';\r\nimport { UserModuleConstants } from './user-constants';\r\nimport { NavigationStart, Router } from '@angular/router';\r\n\r\n\r\n@Injectable()\r\nexport class AdbUserService implements OnDestroy {\r\n\r\n private subscriptions = new Subscription();\r\n private userSubject: BehaviorSubject<any> = new BehaviorSubject<any>(null);\r\n user$ = this.userSubject.asObservable();\r\n\r\n lastRefreshTime = 0;\r\n intervalId: any;\r\n // hasEmitted = false;\r\n\r\n constructor(\r\n @Inject(ADB_USER_SERVICE_CONFIG) public config: AdbUserServiceConfig,\r\n private http: HttpClient,\r\n private router: Router) {\r\n this.config = { ...{ scope: 'roles', idleTime: 30, response_type: 'code' }, ...config };\r\n }\r\n\r\n init(): void {\r\n const accessToken = sessionStorage.getItem(UserModuleConstants.ACCESS_TOKEN);\r\n if (accessToken) {\r\n const user = this.getUser(accessToken);\r\n this.userSubject.next(user);\r\n this.startMainLoop();\r\n } else if (this.config.autoLogin) {\r\n //NOTE: Avoid re-triggering login if we're in the middle of the auth-callback handling\r\n const urlParams = new URLSearchParams(window.location.search);\r\n if (urlParams.has('code')) {\r\n this.log('Detected auth callback, skipping init login.');\r\n return;\r\n }\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationStart) {\r\n this.login(event.url);\r\n }\r\n });\r\n }\r\n }\r\n\r\n startMainLoop() {\r\n this.checkStatus();\r\n this.intervalId = setInterval(() => this.checkStatus(), 60 * 1000); // 60 seconds * 1000 milliseconds\r\n }\r\n\r\n login(url: string = null): void {\r\n this.log('url when login', url);\r\n if (url) {\r\n sessionStorage.setItem(UserModuleConstants.CURRENT_URL, url);\r\n } else {\r\n sessionStorage.setItem(UserModuleConstants.CURRENT_URL, this.router.url);\r\n }\r\n this.authorize();\r\n }\r\n\r\n logout(): void {\r\n clearInterval(this.intervalId);\r\n // this.hasEmitted = false;\r\n sessionStorage.clear();\r\n window.location.href = `${this.config.issuer}/connect/endsession?post_logout_redirect_uri=${this.config.postLogoutUrl}`;\r\n }\r\n\r\n private checkStatus(): void {\r\n this.log('checkStatus runs')\r\n const accessToken = sessionStorage.getItem(UserModuleConstants.ACCESS_TOKEN);\r\n if (accessToken) {\r\n this.log('has accesstoken')\r\n const timeToLive = this.getTokenTimeToLive();\r\n this.log('timeToLive', timeToLive)\r\n if (timeToLive === 0) {\r\n sessionStorage.removeItem(UserModuleConstants.ACCESS_TOKEN);\r\n this.authorize();\r\n } else {\r\n if (this.getTokenTimeToLive() <= 60 && this.hasUserBeenActive() && this.canRefreshToken()) {\r\n console.log('token is about to timeout but we will refresh it because user has been active the last 5minutes');\r\n this.refreshToken();\r\n }\r\n //NOTE: Might not be needed in this variant\r\n // if (!this.hasEmitted) {\r\n // const user = this.getUser(accessToken);\r\n // this.userSubject.next(user);\r\n // this.hasEmitted = true;\r\n // }\r\n }\r\n }\r\n }\r\n\r\n //TODO: make it not exported by the module\r\n _internalTriggerUserEvent(token: string): void {\r\n const user = this.getUser(token);\r\n this.userSubject.next(user);\r\n\r\n }\r\n\r\n private refreshToken() {\r\n const body = `client_id=${encodeURIComponent(this.config.clientId)}&` +\r\n `grant_type=${encodeURIComponent(\"refresh_token\")}&` +\r\n `refresh_token=${encodeURIComponent(sessionStorage.getItem(UserModuleConstants.REFRESH_TOKEN))}`;\r\n this.http.post<any>(`${this.config.issuer}/connect/token`, body, { headers: new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' }) }).subscribe({\r\n next: response => {\r\n this.setTokensInSession(response);\r\n }\r\n });\r\n this.lastRefreshTime = Date.now();\r\n }\r\n\r\n setTokensInSession(params: any): void {\r\n if (params.refresh_token) {\r\n sessionStorage.setItem(UserModuleConstants.REFRESH_TOKEN, params.refresh_token);\r\n }\r\n if (params.access_token) {\r\n sessionStorage.setItem(UserModuleConstants.ACCESS_TOKEN, params.access_token);\r\n }\r\n if (params.expires_in) {\r\n const expireTime = addSeconds(new Date(), params.expires_in);\r\n sessionStorage.setItem(UserModuleConstants.TOKEN_EXPIRES, format(expireTime, 'yyyy-MM-dd HH:mm:ss'));\r\n }\r\n }\r\n\r\n async authorize() {\r\n const codeVerifier = Array.from(crypto.getRandomValues(new Uint8Array(64)), byte =>\r\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'[(byte as number) % 62]\r\n ).join('');\r\n sessionStorage.setItem(UserModuleConstants.CODE_VERIFIER, codeVerifier);\r\n\r\n const encoder = new TextEncoder();\r\n const data = encoder.encode(codeVerifier);\r\n const hashBuffer = await crypto.subtle.digest('SHA-256', data);\r\n const hashArray = new Uint8Array(hashBuffer);\r\n let codeChallenge = btoa(String.fromCharCode(...hashArray));\r\n codeChallenge = codeChallenge.replace(/=/g, '')\r\n .replace(/\\+/g, '-')\r\n .replace(/\\//g, '_');\r\n\r\n const params = {\r\n response_type: this.config.responseType,\r\n client_id: this.config.clientId,\r\n redirect_uri: this.config.redirectUrl,\r\n scope: this.config.scope,\r\n code_challenge: codeChallenge,\r\n code_challenge_method: 'S256'\r\n };\r\n const url = new URL(this.config.issuer + '/connect/authorize');\r\n url.search = this.addQueryParams(params).toString();\r\n window.location.href = url.toString();\r\n }\r\n\r\n\r\n private addQueryParams(object: any): URLSearchParams {\r\n if (!object) {\r\n return null;\r\n }\r\n const urlParams = new URLSearchParams();\r\n for (const prop in object) {\r\n urlParams.append(prop, object[prop]);\r\n }\r\n return urlParams;\r\n }\r\n\r\n private getTokenTimeToLive(): number {\r\n const expires = sessionStorage.getItem(UserModuleConstants.TOKEN_EXPIRES);\r\n if (expires) {\r\n const expireDate = new Date(expires);\r\n const now = new Date();\r\n const timeToLive = Math.floor((expireDate.getTime() - now.getTime()) / 1000);\r\n return timeToLive < 0 ? 0 : timeToLive;\r\n }\r\n return 0;\r\n }\r\n\r\n //Cooldown for avoiding infinite refresh\r\n private canRefreshToken(): boolean {\r\n const now = Date.now();\r\n if (now - this.lastRefreshTime > (2 * 60 * 1000)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private hasUserBeenActive(): boolean {\r\n const lastActive = sessionStorage.getItem(UserModuleConstants.USER_LAST_ACTIVE);\r\n if (!lastActive) {\r\n return false;\r\n }\r\n const timeSinceLastActive = Date.now() - parseInt(lastActive, 10);\r\n const idleTimeMs = this.config.idleTime * 60 * 1000;\r\n return timeSinceLastActive <= idleTimeMs;\r\n }\r\n\r\n log(message: string, ...optionalParams: any[]): void {\r\n if (this.config?.log) {\r\n if (optionalParams?.length > 0) {\r\n console.log(message, optionalParams);\r\n } else {\r\n console.log(message);\r\n }\r\n }\r\n }\r\n\r\n getUser(token: string): any {\r\n try {\r\n const [header, payload, signature] = token.split('.');\r\n const base64Url = payload.replace(/-/g, '+').replace(/_/g, '/');\r\n const decodedPayload = atob(base64Url);\r\n const utf8Decoder = new TextDecoder('utf-8');\r\n const utf8DecodedPayload = utf8Decoder.decode(new Uint8Array(decodedPayload.split('').map(char => char.charCodeAt(0))));\r\n const parsedPayload = JSON.parse(utf8DecodedPayload);\r\n return parsedPayload;\r\n } catch (error) {\r\n console.error('Error decoding JWT', error);\r\n return null;\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n\r\n}","import { Component, OnInit } from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { UserModuleConstants } from \"./user-constants\";\r\nimport { AdbUserService } from \"./adb-user.service\";\r\n\r\n@Component({\r\n template: '<div class=\"loading-dead-spinner\"></div>',\r\n standalone: false\r\n})\r\nexport class AuthCallbackComponent implements OnInit {\r\n private subscriptions = new Subscription();\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n private router: Router,\r\n private http: HttpClient,\r\n private adbUserService: AdbUserService) { }\r\n\r\n ngOnInit(): void {\r\n this.subscriptions.add(this.activatedRoute.queryParamMap.subscribe(qParmas => {\r\n if (qParmas.has('code')) {\r\n const body = `grant_type=authorization_code` +\r\n `&code=${encodeURIComponent(qParmas.get('code'))}` +\r\n `&code_verifier=${encodeURIComponent(sessionStorage.getItem(UserModuleConstants.CODE_VERIFIER))}` +\r\n `&redirect_uri=${encodeURIComponent(this.adbUserService.config.redirectUrl)}` +\r\n `&client_id=${encodeURIComponent(this.adbUserService.config.clientId)}`;\r\n\r\n this.http.post<any>(`${this.adbUserService.config.issuer}/connect/token`, body,\r\n { headers: new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded','Accept': 'application/json; charset=utf-8' }) }).subscribe({\r\n next: response => {\r\n this.adbUserService.setTokensInSession(response);\r\n let requestedUrl = sessionStorage.getItem(UserModuleConstants.CURRENT_URL) ?? null;\r\n sessionStorage.removeItem(UserModuleConstants.CURRENT_URL);\r\n this.adbUserService._internalTriggerUserEvent(response.access_token);\r\n this.adbUserService.log('redirect url in auth-callback',requestedUrl);\r\n if (requestedUrl) {\r\n this.router.navigateByUrl(decodeURIComponent(requestedUrl), { replaceUrl: true }).then(() => {\r\n this.adbUserService.startMainLoop();\r\n });\r\n }else{\r\n this.router.navigate(['/'], { replaceUrl: true }).then(() => {\r\n this.adbUserService.startMainLoop();\r\n });;\r\n }\r\n }\r\n });\r\n }\r\n }));\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpErrorResponse, HttpResponse } from '@angular/common/http';\r\nimport { catchError, Observable, throwError } from 'rxjs';\r\nimport { UserModuleConstants } from './user-constants';\r\nimport { AdbUserService } from './adb-user.service';\r\n\r\n@Injectable()\r\nexport class AdbUserInterceptor implements HttpInterceptor {\r\n private static UNAUTHENTICATED = 401;\r\n constructor(private adbUserService: AdbUserService) { }\r\n\r\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (req.headers.get('X-System-Request') !== 'true') {\r\n sessionStorage.setItem(UserModuleConstants.USER_LAST_ACTIVE, Date.now().toString());\r\n }\r\n const accessToken = sessionStorage.getItem(UserModuleConstants.ACCESS_TOKEN);\r\n if (accessToken) {\r\n const clonedRequest = req.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${accessToken}`\r\n }\r\n });\r\n return next.handle(clonedRequest).pipe(catchError((err: HttpErrorResponse) => this.handleErrors(err)));\r\n } else {\r\n return next.handle(req).pipe(catchError((err: HttpErrorResponse) => this.handleErrors(err)));;\r\n }\r\n }\r\n\r\n\r\n private handleErrors(error: HttpErrorResponse) {\r\n if (error.error instanceof ErrorEvent) {\r\n // Client-side error\r\n } else {\r\n if (error.status === AdbUserInterceptor.UNAUTHENTICATED) {\r\n // this.adbUserService.authorize();\r\n }\r\n }\r\n return throwError(() => error);\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { HTTP_INTERCEPTORS } from \"@angular/common/http\";\r\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { ADB_USER_SERVICE_CONFIG, AdbUserServiceConfig, DEFAULT_ADB_USER_SERVICE_CONFIG } from \"./adb-user-service-config\";\r\n\r\nimport { RouterModule, Routes } from \"@angular/router\";\r\nimport { AuthCallbackComponent } from \"./auth-callback.component\";\r\nimport { AdbUserService } from \"./adb-user.service\";\r\nimport { AdbUserInterceptor } from \"./adb-user.interceptor\";\r\nconst routes: Routes = [\r\n { path: 'auth-callback', component: AuthCallbackComponent }\r\n];\r\n@NgModule({\r\n imports: [CommonModule, RouterModule.forChild(routes), TranslateModule.forChild()],\r\n declarations: [AuthCallbackComponent],\r\n exports: [AuthCallbackComponent],\r\n providers: [\r\n AdbUserService,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: AdbUserInterceptor,\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class AdbUserModule {\r\n static forRoot(config?: AdbUserServiceConfig): ModuleWithProviders<AdbUserModule> {\r\n return {\r\n ngModule: AdbUserModule,\r\n providers: [\r\n {\r\n provide: ADB_USER_SERVICE_CONFIG,\r\n useValue: {\r\n ...DEFAULT_ADB_USER_SERVICE_CONFIG,\r\n ...config,\r\n scope: `${config.scope || ''} offline_access`.trim() }\r\n }\r\n ],\r\n };\r\n }\r\n}","import {\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { BehaviorSubject, Observable, of, Subscription } from 'rxjs';\r\nimport { catchError, debounceTime, map, switchMap } from 'rxjs/operators';\r\nimport { PagedResult } from '../models';\r\n\r\n@Component({\r\n selector: 'adb-generic-picker',\r\n templateUrl: './adb-generic-picker.html',\r\n standalone: false\r\n})\r\nexport class GenericPickerComponent<T> implements OnInit, OnDestroy {\r\n private readonly subs = new Subscription();\r\n private readonly searchChanged$ = new BehaviorSubject<string>('');\r\n\r\n @Input() search!: (query: string) => Observable<PagedResult<T>>;\r\n @Input() displayFn!: (item: T) => string;\r\n @Input() loadById?: (id: any) => Observable<T>;\r\n @Input() disabled = false;\r\n @Input() placeholder = '';\r\n\r\n @ContentChild('itemTemplate') itemTemplate!: TemplateRef<any>;\r\n\r\n @Output() selectItemChange = new EventEmitter<T | null>();\r\n @Output() focus = new EventEmitter<FocusEvent>();\r\n\r\n @Input()\r\n set initialValue(item: T | null) {\r\n if (item) {\r\n this.searchQuery = this.displayFn(item);\r\n } else {\r\n this.searchQuery = '';\r\n }\r\n }\r\n searchQuery = '';\r\n loading = false;\r\n error: any = null;\r\n\r\n items$: Observable<T[]> = of([]);\r\n private itemsSnapshot: T[] = [];\r\n showPop = false;\r\n rowIndex = -1;\r\n\r\n ngOnInit(): void {\r\n this.items$ = this.searchChanged$.pipe(\r\n debounceTime(300),\r\n switchMap(query => {\r\n if (!query) {\r\n this.showPop = false;\r\n this.itemsSnapshot = [];\r\n this.loading = false;\r\n return of([]);\r\n }\r\n this.loading = true;\r\n this.showPop = true;\r\n return this.search(query).pipe(\r\n map(result => {\r\n this.loading = false;\r\n const items =\r\n result?.records?.length\r\n ? result.records\r\n : result?.items ?? [];\r\n this.itemsSnapshot = items;\r\n return items;\r\n }),\r\n catchError(err => {\r\n this.loading = false;\r\n this.error = err;\r\n this.itemsSnapshot = [];\r\n return of([]);\r\n })\r\n );\r\n })\r\n );\r\n }\r\n\r\n onModelChange(): void {\r\n this.rowIndex = -1;\r\n this.loading = true;\r\n this.showPop = true;\r\n this.searchChanged$.next(this.searchQuery);\r\n }\r\n\r\n onArrowDown(): void {\r\n if (!this.itemsSnapshot.length) return;\r\n this.rowIndex = (this.rowIndex + 1) % this.itemsSnapshot.length;\r\n }\r\n\r\n onArrowUp(): void {\r\n if (!this.itemsSnapshot.length) return;\r\n this.rowIndex = (this.rowIndex - 1 + this.itemsSnapshot.length) % this.itemsSnapshot.length;\r\n }\r\n\r\n onEnter(event: KeyboardEvent): void {\r\n if (this.rowIndex < 0) return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.selectItem(this.itemsSnapshot[this.rowIndex]);\r\n }\r\n\r\n resetPopup(): void {\r\n this.showPop = false;\r\n this.itemsSnapshot = [];\r\n this.rowIndex = -1;\r\n }\r\n\r\n selectItem(item: T | null): void {\r\n this.searchQuery = item ? this.displayFn(item) : '';\r\n this.selectItemChange.emit(item);\r\n this.resetPopup();\r\n }\r\n\r\n resetModel(): void {\r\n this.selectItem(null);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","<div (adbClickOutside)=\"resetPopup()\">\r\n <div class=\"input-group\">\r\n <input [(ngModel)]=\"searchQuery\" class=\"form-control\" role=\"combobox\" aria-autocomplete=\"list\" [attr.aria-expanded]=\"showPop\" aria-controls=\"picker-listbox\" [disabled]=\"disabled\" autocomplete=\"off\" (keyup.arrowdown)=\"onArrowDown()\"\r\n (keyup.arrowup)=\"onArrowUp()\" (keydown.enter)=\"onEnter($event)\" (keydown.escape)=\"resetPopup()\" (keydown.tab)=\"resetPopup()\" (ngModelChange)=\"onModelChange()\" (focus)=\"focus.emit($event)\" [placeholder]=\"placeholder\" />\r\n @if (searchQuery && !showPop) {\r\n <div>\r\n <button type=\"button\" (click)=\"resetModel()\" class=\"btn btn-secondary border border-start-0\">\r\n <span class=\"fas fa-times\"></span>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n@let items = items$ | async;\r\n@if (showPop) {\r\n<div class=\"pop\">\r\n <div class=\"pop-body\">\r\n <div [class.loading]=\"loading\">\r\n @if (error) {\r\n <div class=\"alert alert-danger mb-0\">\r\n Serverfel\r\n </div>\r\n }\r\n @else {\r\n <ul class=\"list-group list-group-flush\" role=\"listbox\" id=\"picker-listbox\">\r\n @for (item of items; track item; let i = $index) {\r\n <li role=\"option\" class=\"list-group-item list-group-item-action pointer\" [class.active]=\"i === rowIndex\" (click)=\"$event.preventDefault(); $event.stopPropagation(); selectItem(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item, searchQuery: searchQuery }\"></ng-container>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n}","import { InjectionToken } from \"@angular/core\";\r\nimport { Inject, Injectable } from \"@angular/core\";\r\nexport interface AdbPickerConfig {\r\n api: string\r\n}\r\n\r\nexport const ADB_PICKER_CONFIG = new InjectionToken<AdbPickerConfig>('ADB_PICKER_CONFIG');\r\n\r\n@Injectable()\r\nexport class AdbPickerConfigService {\r\n readonly areas: string;\r\n readonly taxa: string;\r\n constructor(@Inject(ADB_PICKER_CONFIG) config: AdbPickerConfig) {\r\n this.areas = config.api + '/areas';\r\n this.taxa = config.api + '/taxalookup';\r\n }\r\n}","import { Component, forwardRef, HostBinding, Input, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { map, catchError, of, tap } from 'rxjs';\r\nimport { Taxon } from '../models';\r\nimport { AdbPickerConfigService } from '../adb-picker-config';\r\n\r\n@Component({\r\n selector: 'adb-taxon-picker',\r\n templateUrl: 'taxon-picker.html',\r\n standalone: false,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AdbTaxonPickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class AdbTaxonPickerComponent implements ControlValueAccessor {\r\n @HostBinding('class.w-100') fullWidth = true;\r\n\r\n @Input() placeholder = 'Sök taxon';\r\n @Input() useObject = false;\r\n @Input() prefill = false;\r\n\r\n initialValue = signal<Taxon | null>(null);\r\n isDisabled = false;\r\n loading = false;\r\n showPrefill = false;\r\n\r\n\r\n private onChange: (value: any) => void = () => { };\r\n private onTouched: () => void = () => { };\r\n\r\n constructor(\r\n private config: AdbPickerConfigService,\r\n private http: HttpClient\r\n ) { }\r\n\r\n getTaxa = (query: string) => {\r\n this.loading = true;\r\n const params = { search: query };\r\n return this.http.get<Taxon[]>(this.config.taxa, { params }).pipe(\r\n map(result => Array.isArray(result) ? { items: result } : result),\r\n tap(() => this.loading = false),\r\n catchError(() => {\r\n this.loading = false;\r\n return of({ items: [] });\r\n })\r\n );\r\n };\r\n\r\n displayTaxon = (taxon: Taxon) => {\r\n if (!taxon) return '';\r\n if (taxon.swedishName && taxon.scientificName) {\r\n return `${taxon.swedishName} ${taxon.scientificName}`;\r\n }\r\n return taxon.scientificName ?? '';\r\n };\r\n\r\n loadTaxonById(id: any) {\r\n if (!id) return of(null);\r\n this.loading = true;\r\n return this.http.get<Taxon>(`${this.config.taxa}/${id}`).pipe(\r\n tap(() => this.loading = false),\r\n catchError(() => {\r\n this.loading = false;\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n onSelect(taxon: Taxon | null) {\r\n const value = this.useObject ? taxon : taxon?.id ?? null;\r\n this.onChange(value);\r\n }\r\n\r\n onFocus() {\r\n this.showPrefill = true;\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (!value) {\r\n this.initialValue.set(null);\r\n return;\r\n }\r\n if (this.useObject) {\r\n if (value.id) {\r\n this.loadTaxonById(value.id).subscribe(taxon => {\r\n this.initialValue.set(taxon);\r\n });\r\n } else {\r\n this.initialValue.set(value);\r\n }\r\n } else {\r\n this.loadTaxonById(value).subscribe(taxon => {\r\n this.initialValue.set(taxon);\r\n });\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n}\r\n","<adb-generic-picker [search]=\"getTaxa\" [displayFn]=\"displayTaxon\" [placeholder]=\"placeholder\" [disabled]=\"isDisabled\" [initialValue]=\"initialValue()\" (selectItemChange)=\"onSelect($event)\" (focus)=\"onFocus()\">\r\n <ng-template #itemTemplate let-taxon let-searchQuery=\"searchQuery\">\r\n <div class=\"d-flex flex-wrap gap-1 align-items-center\">\r\n <div innerHTML=\"{{taxon.swedishName | adbHighlight: searchQuery}}\"></div>\r\n <em innerHTML=\"{{taxon.scientificName | adbHighlight: searchQuery}}\"></em>\r\n </div>\r\n </ng-template>\r\n</adb-generic-picker>\r\n@if (showPrefill && prefill) {\r\n<div class=\"pop\">\r\n <div class=\"pop-body\">\r\n <div class=\"p-3\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n}","\r\nimport { Component, forwardRef, HostBinding, Input, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Area, PagedResult, SOSArea } from '../models';\r\nimport { AdbPickerConfigService } from '../adb-picker-config';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { tap } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'adb-area-picker',\r\n templateUrl: 'area-picker.html',\r\n standalone: false,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AdbAreaPickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class AdbAreaPickerComponent implements ControlValueAccessor {\r\n @HostBinding('class.w-100') fullWidth = true;\r\n\r\n @Input() placeholder = 'Sök område';\r\n @Input() useObject = false;\r\n @Input() prefill = false;\r\n\r\n initialValue = signal<Area | null>(null);\r\n isDisabled = false;\r\n loading = false;\r\n showPrefill = false;\r\n\r\n\r\n private onChange: (value: any) => void = () => { };\r\n private onTouched: () => void = () => { };\r\n\r\n constructor(\r\n private translate: TranslateService,\r\n private config: AdbPickerConfigService,\r\n private http: HttpClient\r\n ) { }\r\n\r\n getAreas = (query: string) => {\r\n this.showPrefill = false;\r\n const params = { search: query, skip: 0, take: 10 };\r\n return this.http.get<PagedResult<Area>>(this.config.areas, { params: params });\r\n };\r\n\r\n displayArea = (area: SOSArea) => {\r\n if (!area || Object.keys(area).length === 0) {\r\n return '';\r\n }\r\n return area ? `${area.name} ${this.translate.instant('AREATYPES.' + area.areaType)}` : '';\r\n }\r\n\r\n loadAreaId = (id: any) => {\r\n this.loading = true;\r\n const url = `${this.config.areas}/${id}`;\r\n return this.http.get<Area>(url).pipe(\r\n tap(() => this.loading = false)\r\n );\r\n }\r\n\r\n onSelect(area: Area | null) {\r\n const value = this.useObject ? area : area?.id ?? null;\r\n this.onChange(value);\r\n }\r\n\r\n onFocus() {\r\n this.showPrefill = true;\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (!value) {\r\n this.initialValue.set(null);\r\n return;\r\n }\r\n if (this.useObject) {\r\n if (value.id) {\r\n this.loadAreaId(value.id).subscribe(area => {\r\n this.initialValue.set(area);\r\n });\r\n } else {\r\n this.initialValue.set(value);\r\n }\r\n } else {\r\n this.loadAreaId(value).subscribe(area => {\r\n this.initialValue.set(area);\r\n });\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n}","<adb-generic-picker [search]=\"getAreas\" [displayFn]=\"displayArea\" [placeholder]=\"placeholder\" [disabled]=\"isDisabled\" [initialValue]=\"initialValue()\" (selectItemChange)=\"onSelect($event)\" (focus)=\"onFocus()\">\r\n <ng-template #itemTemplate let-area let-searchQuery=\"searchQuery\">\r\n <div class=\"d-flex flex-wrap gap-1 align-items-center\">\r\n <div innerHTML=\"{{area.name|adbHighlight: searchQuery}}\"></div>\r\n <div>{{'AREATYPES.'+area.areaType|translate}}</div>\r\n </div>\r\n </ng-template>\r\n</adb-generic-picker>\r\n@if (showPrefill && prefill) {\r\n<div class=\"pop\">\r\n <div class=\"pop-body\">\r\n <div class=\"p-3\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { GenericPickerComponent } from \"./components/adb-generic-picker\";\r\nimport { ADB_PICKER_CONFIG, AdbPickerConfig, AdbPickerConfigService } from \"./adb-picker-config\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { AdbTaxonPickerComponent } from \"./components/taxon-picker\";\r\nimport { AdbDirectivesModule } from \"../../directives/directives.module\";\r\nimport { AdbPipesModule } from \"../../pipes/pipes.module\";\r\nimport { AdbAreaPickerComponent } from \"./components/area-picker\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormsModule, TranslateModule.forChild(), AdbPipesModule, AdbDirectivesModule],\r\n declarations: [\r\n GenericPickerComponent,\r\n AdbAreaPickerComponent,\r\n AdbTaxonPickerComponent\r\n ],\r\n exports: [\r\n GenericPickerComponent,\r\n AdbAreaPickerComponent,\r\n AdbTaxonPickerComponent\r\n ],\r\n providers: [AdbPickerConfigService]\r\n})\r\nexport class AdbPickerModule {\r\n static forRoot(config?: AdbPickerConfig): ModuleWithProviders<AdbPickerModule> {\r\n return {\r\n ngModule: AdbPickerModule,\r\n providers: [\r\n {\r\n provide: ADB_PICKER_CONFIG,\r\n useValue: config\r\n }\r\n ]\r\n };\r\n }\r\n}","import { MapOptions } from \"./models\";\r\nimport * as Leaflet from 'leaflet';\r\n\r\nexport class AdbMapUtils {\r\n static readonly INITIAL_CENTER_LAT = 62;\r\n static readonly INITIAL_CENTER_LNG = 17;\r\n static OverlayMaps = {\r\n 'Altitude': new Leaflet.TileLayer.WMS(\"https://maps.sgu.se/lmv/hojdmodell/v1.1?SERVICE=WMS\",\r\n { layers: \"terrangskuggning\", format: \"image/png\", transparent: true, opacity: 0.3, maxZoom: 16, version: \"1.3.0\" }),\r\n 'Fjällkarta': new Leaflet.TileLayer.WMS(\r\n 'api/maps/mountain',\r\n {\r\n minZoom: 6,\r\n maxZoom: 18,\r\n maxNativeZoom: 14,\r\n attribution: '© <a href=\"https://www.lantmateriet.se/\">Fjällkart</a>',\r\n wms: true\r\n }),\r\n 'Kommuner': new Leaflet.TileLayer.WMS(\r\n 'https://sosgeo.artdata.slu.se/geoserver/GeoRegion/wms?',\r\n {\r\n layers: 'GeoRegion:Municipality',\r\n version: '1.1.0',\r\n transparent: true,\r\n format: 'image/png'\r\n }\r\n ),\r\n 'Län': new Leaflet.TileLayer.WMS(\r\n 'https://sosgeo.artdata.slu.se/geoserver/GeoRegion/wms?',\r\n {\r\n layers: 'GeoRegion:County',\r\n version: '1.1.0',\r\n transparent: true,\r\n format: 'image/png'\r\n }\r\n )\r\n , 'Ortnamn': new Leaflet.TileLayer.WMS(\r\n \"https://maps.sgu.se/lmv/topowebb-skikt/v1.1?SERVICE=WMS\",\r\n {\r\n layers: \"text\",\r\n format: \"image/png\",\r\n transparent: true,\r\n version: \"1.3.0\",\r\n }\r\n ),\r\n 'Ekonomisk zon': new Leaflet.TileLayer.WMS(\r\n \"https://sosgeo.artdata.slu.se/geoserver/it.geosolutions/wms?\",\r\n {\r\n layers: \"it.geosolutions:Ekonomiska_zonens_yttre_avgränsningslinjer_linje\",\r\n format: \"image/png\",\r\n transparent: true,\r\n version: \"1.1.0\"\r\n }\r\n )\r\n };\r\n\r\n static Providers: MapProvider[] = [\r\n {\r\n name: 'Open Streetmap',\r\n id: 3,\r\n url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\r\n minZoom: 0,\r\n maxZoom: 18,\r\n params: {\r\n maxNativeZoom: 18,\r\n attribution: '© <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'\r\n },\r\n wms: false\r\n },\r\n {\r\n name: 'Sveriges gränser',\r\n id: 7,\r\n url: 'https://sosgeo.artdata.slu.se/geoserver/GeoRegion/wms',\r\n minZoom: 6,\r\n maxZoom: 18,\r\n params: {\r\n maxNativeZoom: 14,\r\n attribution: '© <a href=\"https://www.lantmateriet.se/\">Sveriges gränser</a>',\r\n layers: 'GeoRegion:County', styles: 'municipality_name_yellow'\r\n },\r\n wms: true\r\n }\r\n ]\r\n\r\n //NOTE: Will be move\r\n static redListMapper2 = {\r\n 'VU': '228',\r\n 'EN': '229',\r\n 'CR': '230',\r\n 'RE': '231',\r\n 'DD': '232',\r\n 'NT': '233'\r\n }\r\n\r\n static createMap(\r\n elementId: string,\r\n options: MapOptions = {}\r\n ): Leaflet.Map {\r\n\r\n const map = Leaflet.map(elementId, {\r\n zoomAnimation: false,\r\n fadeAnimation: false,\r\n markerZoomAnimation: false,\r\n inertia: false,\r\n scrollWheelZoom: options.scrollZoom ?? true,\r\n zoomControl: options.zoom ?? true,\r\n dragging: options.zoom ?? true,\r\n minZoom: -1\r\n });\r\n\r\n map.setView([62, 17], 5);\r\n\r\n Leaflet.control.scale().addTo(map);\r\n\r\n if (options.providers !== false) {\r\n this.addProviders(map);\r\n }\r\n\r\n return map;\r\n }\r\n\r\n private static addProviders(map: Leaflet.Map): void {\r\n const backgroundMaps: Record<string, Leaflet.Layer> = {};\r\n\r\n for (const value of Object.values(AdbMapUtils.Providers)) {\r\n const baseOptions = {\r\n ...value.params,\r\n updateWhenZooming: false,\r\n updateWhenIdle: true,\r\n keepBuffer: 2,\r\n crossOrigin: true\r\n };\r\n backgroundMaps[value.name] = value.wms\r\n ? Leaflet.tileLayer.wms(value.url, baseOptions)\r\n : Leaflet.tileLayer(value.url, baseOptions);\r\n }\r\n\r\n map.addLayer(backgroundMaps['Open Streetmap']);\r\n Leaflet.control.layers(backgroundMaps, AdbMapUtils.OverlayMaps).addTo(map);\r\n }\r\n}\r\n\r\ninterface MapProvider {\r\n name: string;\r\n id: number;\r\n url: string;\r\n minZoom: number;\r\n maxZoom: number;\r\n wms: boolean;\r\n params?: any;\r\n}","import {\r\n Component,\r\n forwardRef,\r\n OnDestroy,\r\n OnInit,\r\n AfterViewInit\r\n} from \"@angular/core\";\r\nimport {\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR\r\n} from \"@angular/forms\";\r\nimport Leaflet from \"leaflet\";\r\nimport \"@geoman-io/leaflet-geoman-free\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { AdbMapUtils } from \"../mapUtils\";\r\n\r\n@Component({\r\n selector: \"adb-polygon-drawer\",\r\n templateUrl: \"polygon-drawer.component.html\",\r\n standalone: false,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => PolygonDrawerInput),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class PolygonDrawerInput\r\n implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy {\r\n\r\n private subscriptions = new Subscription();\r\n\r\n mapId = \"\" + Math.floor(Math.random() * Date.now());\r\n map!: Leaflet.Map;\r\n\r\n polygonDraw = false;\r\n shapeLayer: Leaflet.GeoJSON | null = null;\r\n geoJson: any;\r\n\r\n ngAfterViewInit(): void {\r\n this.map = AdbMapUtils.createMap(this.mapId, {\r\n zoom: true,\r\n scrollZoom: true,\r\n providers: true\r\n });\r\n\r\n this.map.whenReady(() => {\r\n this.initDraw();\r\n this.renderInitialShape();\r\n });\r\n }\r\n\r\n ngOnInit(): void { }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n\r\n private initDraw(): void {\r\n this.map.pm.removeControls();\r\n this.map.pm.enableDraw('Polygon', {\r\n tooltips: false,\r\n finishOn: 'snap',\r\n snapDistance: 30, \r\n snapMiddle: false\r\n });\r\n this.map.on(\"pm:create\", (e: any) => {\r\n if (e.shape !== \"Polygon\") return;\r\n\r\n this.polygonDraw = false;\r\n this.map.pm.disableDraw();\r\n\r\n this.clearShape();\r\n\r\n this.shapeLayer = Leaflet.geoJSON(e.layer.toGeoJSON(), {\r\n interactive: false\r\n });\r\n\r\n this.map.addLayer(this.shapeLayer);\r\n this.map.fitBounds(this.shapeLayer.getBounds());\r\n\r\n this.onChange(e.layer.toGeoJSON());\r\n\r\n this.map.removeLayer(e.layer);\r\n });\r\n }\r\n\r\n private renderInitialShape(): void {\r\n if (this.geoJson?.type === \"Feature\") {\r\n this.shapeLayer = Leaflet.geoJSON(this.geoJson, {\r\n interactive: false\r\n });\r\n this.map.addLayer(this.shapeLayer);\r\n this.map.fitBounds(this.shapeLayer.getBounds());\r\n } else {\r\n this.map.setView(\r\n [AdbMapUtils.INITIAL_CENTER_LAT, AdbMapUtils.INITIAL_CENTER_LNG],\r\n 5\r\n );\r\n }\r\n }\r\n\r\n private clearShape(): void {\r\n if (this.shapeLayer) {\r\n this.map.removeLayer(this.shapeLayer);\r\n this.shapeLayer = null;\r\n }\r\n }\r\n\r\n onDrawPolygon(): void {\r\n this.polygonDraw = true;\r\n\r\n this.map.pm.enableDraw(\"Polygon\", {\r\n allowSelfIntersection: false,\r\n snappable: false\r\n });\r\n }\r\n\r\n onUndoStep(): void {\r\n const draw = (this.map.pm as any).Draw?.Polygon;\r\n draw?._removeLastVertex();\r\n }\r\n\r\n onDeleteShape(): void {\r\n this.clearShape();\r\n this.map.pm.disableDraw();\r\n this.polygonDraw = false;\r\n this.onChange(null);\r\n this.map.setView([62, 17], 5);\r\n }\r\n\r\n // ControlValueAccessor\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n writeValue(geoJson: any): void {\r\n this.geoJson = geoJson;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void { }\r\n}\r\n","<div class=\"mb-1 d-flex gap-1 flex-wrap align-items-start\">\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"onDrawPolygon()\" title=\"Polygon\">\r\n <span class=\"fas fa-draw-polygon\"></span> {{'OBSERVATION.DRAW'|translate}}\r\n </button>\r\n @if (polygonDraw) {\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"onDeleteShape()\" title=\"Ta bort\">\r\n <span class=\"fas fa-times\"></span>\r\n </button>\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"onUndoStep()\" title=\"Ångra\">\r\n <span class=\"fas fa-undo\"></span>\r\n </button>\r\n }\r\n</div>\r\n<div [id]=\"mapId\" class=\"border\" style=\"height:20rem\"></div>","import { Inject, Injectable } from \"@angular/core\";\r\nimport { InjectionToken } from \"@angular/core\";\r\nexport interface AdbMapConfig {\r\n api: string,\r\n artfaktaTaxonLists: string,\r\n observationPage?: string;\r\n filters?: AdbMapFilterType[],\r\n log?: boolean\r\n}\r\n\r\nexport enum AdbMapFilterType {\r\n Taxon = 'taxon',\r\n Area = 'area',\r\n OwnArea = 'ownArea',\r\n Time = 'time',\r\n RedList = 'redlist',\r\n RiskList = 'risklist',\r\n TaxaLists = 'taxonLists',\r\n Datasources = 'datasources'\r\n}\r\n\r\nexport class VisibleFilters {\r\n showTaxon: boolean;\r\n showTime: boolean;\r\n showArea: boolean;\r\n showOwnArea: boolean;\r\n showTaxaLists: boolean;\r\n showDatasets: boolean;\r\n}\r\n\r\nexport const ADB_MAP_CONFIG = new InjectionToken<AdbMapConfig>('ADB_MAP_CONFIG');\r\n\r\n@Injectable()\r\nexport class AdbMapConfigService {\r\n readonly log: boolean;\r\n readonly artfaktaTaxonLists: string;\r\n readonly observationFeatures: string;\r\n readonly taxaListsApi: string;\r\n readonly filters: VisibleFilters;\r\n readonly observationPage: string;\r\n\r\n constructor(@Inject(ADB_MAP_CONFIG) config: AdbMapConfig) {\r\n this.log = config.log ?? false;\r\n this.artfaktaTaxonLists = config.artfaktaTaxonLists ?? 'https://artfakta.se/metadata/listor';\r\n this.taxaListsApi = config.api + '/taxalists';\r\n this.observationFeatures = config.api + '/observation-features';\r\n this.observationPage = config.observationPage ?? 'https://mobil.artportalen.se/observationer';\r\n this.filters = {\r\n showTaxon: this.hasFilter(AdbMapFilterType.Taxon, config.filters),\r\n showTime: this.hasFilter(AdbMapFilterType.Time, config.filters),\r\n showArea: this.hasFilter(AdbMapFilterType.Area, config.filters),\r\n showOwnArea: this.hasFilter(AdbMapFilterType.OwnArea, config.filters),\r\n showTaxaLists: this.hasFilter(AdbMapFilterType.TaxaLists, config.filters),\r\n showDatasets: this.hasFilter(AdbMapFilterType.Datasources, config.filters),\r\n };\r\n }\r\n\r\n private hasFilter(f: AdbMapFilterType, filters: AdbMapFilterType[]): boolean {\r\n return filters?.includes(f) ?? true;\r\n }\r\n}","import { Component, Input, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-treeview',\r\n templateUrl: './treeview.html',\r\n standalone:false,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TreeviewComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class TreeviewComponent implements ControlValueAccessor {\r\n @Input() nodes: ListItem[] = [];\r\n\r\n private selectedIds: number[] = [];\r\n private onChange: (value: number[]) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(ids: number[] | null): void {\r\n this.selectedIds = ids ?? [];\r\n this.applySelection(this.nodes);\r\n }\r\n\r\n registerOnChange(fn: (value: number[]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.setReadOnly(this.nodes, isDisabled);\r\n }\r\n\r\n onLeafToggle(node: ListItem): void {\r\n if (node._readOnly) return;\r\n\r\n node._selected = !node._selected;\r\n\r\n this.selectedIds = TreeviewComponent.collectSelectedLeafIds(this.nodes);\r\n this.onChange(this.selectedIds);\r\n this.onTouched();\r\n }\r\n\r\n private applySelection(nodes: ListItem[]): void {\r\n for (const node of nodes) {\r\n if (node.children?.length) {\r\n this.applySelection(node.children);\r\n } else {\r\n node._selected = this.selectedIds.includes(node.id);\r\n }\r\n }\r\n }\r\n\r\n private setReadOnly(nodes: ListItem[], readOnly: boolean): void {\r\n for (const node of nodes) {\r\n node._readOnly = readOnly;\r\n if (node.children?.length) {\r\n this.setReadOnly(node.children, readOnly);\r\n }\r\n }\r\n }\r\n\r\n private static collectSelectedLeafIds(nodes: ListItem[]): number[] {\r\n const ids: number[] = [];\r\n\r\n for (const node of nodes) {\r\n if (node.children?.length) {\r\n ids.push(...this.collectSelectedLeafIds(node.children));\r\n } else if (node._selected) {\r\n ids.push(node.id);\r\n }\r\n }\r\n\r\n return ids;\r\n }\r\n}\r\n\r\n interface ListItem {\r\n id: number;\r\n name?: string;\r\n children?: ListItem[];\r\n\r\n _selected?: boolean;\r\n _readOnly?: boolean;\r\n}\r\n\r\n","<ng-container *ngTemplateOutlet=\"nodeTpl; context: { $implicit: nodes }\">\r\n</ng-container>\r\n<ng-template #nodeTpl let-nodes>\r\n @for (node of nodes; track node) {\r\n <div class=\"ms-3\">\r\n @if(!node.children || node.children.length === 0){\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <input id=\"{{node.id}}\" type=\"checkbox\" class=\"form-check-input m-0\" [checked]=\"node._selected\" [disabled]=\"node._readOnly\" (change)=\"onLeafToggle(node)\" />\r\n <label for=\"{{node.id}}\">{{ node.name }}</label>\r\n </div>\r\n }\r\n @else {\r\n {{ node.name }}\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $implicit: node.children }\">\r\n </ng-container>\r\n </div>\r\n }\r\n </div>\r\n}\r\n</ng-template>","import { AfterViewInit, Component, effect, OnDestroy, OnInit, signal } from \"@angular/core\";\r\nimport * as Leaflet from 'leaflet';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { ActivatedRoute, ParamMap, Params, Router } from \"@angular/router\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { HttpClient, HttpResponse } from \"@angular/common/http\";\r\nimport { GeoJson } from \"../models\";\r\nimport { AdbMapConfigService } from \"../config\";\r\nimport { AdbMapUtils } from \"../mapUtils\";\r\n@Component({\r\n selector: 'adb-obs-map',\r\n templateUrl: 'observations-map.html',\r\n standalone: false\r\n})\r\nexport class AdbObsMapComponent implements AfterViewInit, OnInit, OnDestroy {\r\n private subscriptions = new Subscription();\r\n error: null;\r\n mapLoading = signal(false);\r\n siteLayer: Leaflet.FeatureGroup;\r\n hasBox: boolean;\r\n count: any;\r\n mapId = '' + Math.floor(Math.random() * Date.now());\r\n map = Leaflet.map;\r\n //Lock start\r\n mapReady = signal(false);\r\n hasQueryParams = false;\r\n hasUrlParams = false;\r\n queryParams: Params;\r\n urlParams: ParamMap;\r\n //Lock end\r\n\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n private config: AdbMapConfigService,\r\n private router: Router,\r\n private http: HttpClient) {\r\n effect(() => {\r\n // This will re-run whenever mapReady() changes\r\n if (this.mapReady() && this.hasQueryParams && this.hasUrlParams) {\r\n this.tryLoad();\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.map = AdbMapUtils.createMap(this.mapId, {\r\n zoom: true,\r\n scrollZoom: false,\r\n providers: true\r\n });\r\n\r\n this.map.whenReady(() => {\r\n this.mapReady.set(true);\r\n });\r\n }\r\n\r\n // Loads data only after:\r\n // - the Leaflet map is ready\r\n // - Angular has emitted query params (may be empty)\r\n // - Angular has emitted route params (may be empty)\r\n private tryLoad(): void {\r\n if (!this.mapReady() || !this.hasQueryParams || !this.hasUrlParams) {\r\n return;\r\n }\r\n const params: Params = { ...this.queryParams };\r\n this.hasBox = params.bbox ? true : false;\r\n if (this.urlParams.has('taxonId')) {\r\n params.taxonId = this.urlParams.get('taxonId');\r\n }\r\n this.loadFeature(params);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscriptions.add(\r\n this.activatedRoute.queryParams.subscribe(q => {\r\n this.queryParams = q ?? {};\r\n this.hasQueryParams = true;\r\n this.tryLoad();\r\n })\r\n );\r\n this.subscriptions.add(\r\n this.activatedRoute.paramMap.subscribe(p => {\r\n this.urlParams = p;\r\n this.hasUrlParams = true;\r\n this.tryLoad();\r\n })\r\n );\r\n }\r\n\r\n private loadFeature(qParams: Params): void {\r\n this.mapLoading.set(true);\r\n this.error = null;\r\n const url = this.config.observationFeatures;\r\n this.subscriptions.add(this.http.get<GeoJson>(url, { observe: 'response', params: qParams }).\r\n pipe(\r\n finalize(() => {\r\n this.mapLoading.set(false);\r\n })\r\n ).\r\n subscribe({\r\n next: (response: HttpResponse<GeoJson>) => {\r\n if (!response.body) {\r\n throw new Error('No GeoJson body');\r\n }\r\n const geo = response.body;\r\n geo.properties = { count: response.headers.get('X-Observations-TotalCount') };\r\n this.buildMap(geo);\r\n }, error: err => {\r\n this.error = err;\r\n }\r\n }));\r\n }\r\n\r\n private buildMap(geojson: GeoJson): void {\r\n if (this.siteLayer) {\r\n this.map.removeLayer(this.siteLayer);\r\n }\r\n this.count = geojson?.properties?.count;\r\n this.siteLayer = Leaflet.geoJson(geojson, {\r\n style: (feature) => {\r\n return {\r\n className: `svg ${this.getPolygonClassName(feature.properties)}`, // Leaflet applies this class to the SVG path\r\n weight: 1,\r\n fillOpacity: 0.8,\r\n };\r\n },\r\n pointToLayer: (feature, latlng) => {\r\n const marker = Leaflet.marker(latlng, {\r\n icon: Leaflet.divIcon({\r\n className: '',\r\n html: '<div class=\"adb-map-marker\"></div>',\r\n iconAnchor: [3, 3]\r\n })\r\n });\r\n // if (feature.properties && feature.properties['Occurrence.OccurrenceId']) {\r\n // marker.on('click', () => {\r\n // window.location.href = this.config.observationPage + '/' + feature.properties['Occurrence.OccurrenceId'];\r\n // });\r\n // }\r\n return marker;\r\n }, onEachFeature: (feature, layer) => {\r\n if (feature.geometry.type === \"Polygon\" ||\r\n feature.geometry.type === \"MultiPolygon\") {\r\n layer.setStyle({ interactive: false });\r\n // if (feature.properties.ObservationsCount > 0) {\r\n // layer.on('click', () => {\r\n // const boundBox = JSON.stringify(this.getMapBoundsToBbox(layer.getBounds()));\r\n // this.router.navigate([], { queryParams: { bbox: boundBox }, queryParamsHandling: 'merge' });\r\n // });\r\n // layer.on('mouseover', () => {\r\n // layer.setStyle({ className: 'svg cursor-pointer' });\r\n // });\r\n // layer.on('mouseout', () => {\r\n // layer.setStyle({ className: 'svg' });\r\n // });\r\n // }\r\n // if (feature.properties.FeatureType) { //area\r\n // layer.setStyle({ interactive: false });\r\n // }\r\n }\r\n }\r\n });\r\n const circleLayer = Leaflet.featureGroup();\r\n circleLayer.addTo(this.siteLayer);\r\n this.map.addLayer(this.siteLayer);\r\n if (geojson.bbox) {\r\n const [minLon, minLat, maxLon, maxLat] = geojson.bbox;\r\n const bounds = Leaflet.latLngBounds([[minLat, minLon], [maxLat, maxLon]]);\r\n if (bounds.isValid()) {\r\n // Safari sometimes needs extra time after layer adds\r\n setTimeout(() => {\r\n this.map.invalidateSize({ animate: false });\r\n this.map.fitBounds(bounds, { animate: false });\r\n }, 50); // 30–50ms works best in Safari\r\n }\r\n }\r\n }\r\n\r\n private getPolygonClassName(props: any): string {\r\n if (props.FeatureType) {\r\n return 'map-area';\r\n }\r\n if (props.ObservationsCount < 10) return 'map-heat-low';\r\n if (props.ObservationsCount < 500) return 'map-heat-small';\r\n return 'map-heat-high';\r\n }\r\n\r\n private getMapBoundsToBbox(bounds: any): number[] {\r\n return [bounds.getNorthWest().lat, bounds.getNorthWest().lng, bounds.getSouthEast().lat, bounds.getSouthEast().lng]\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n}","<!-- @if(hasBox&&!mapLoading()){\r\n<div class=\"mb-1 d-flex justify-content-between flex-wrap\">\r\n <a [routerLink]=\"[]\" [queryParams]=\"{bbox:null,z:null}\" queryParamsHandling=\"merge\" class=\"d-flex gap-1 align-items-baseline\">\r\n <span class=\"fas fa-chevron-left\"></span>\r\n Tillbaka upp\r\n </a>\r\n</div>\r\n} -->\r\n@if(error){\r\n<div class=\"alert alert-danger\">\r\n {{'ERROR.SERVER_ERROR'|translate}}\r\n</div>\r\n}\r\n<div [class.loading]=\"mapLoading()\">\r\n <div [id]=\"mapId\" class=\"mb-1 map-container\"></div>\r\n</div>\r\n<div class=\"mb-1 d-flex gap-3 justify-content-between flex-wrap\">\r\n @if (!mapLoading()&&count) {\r\n <div class=\"d-flex align-items-center gap-1\">\r\n <div class=\"legend map-heat-low\"></div>\r\n &lt;10\r\n </div>\r\n <div class=\"d-flex align-items-center gap-1\">\r\n <div class=\"legend map-heat-medium\"></div>\r\n 10 - 500\r\n </div>\r\n <div class=\"d-flex align-items-center gap-1\">\r\n <div class=\"legend map-heat-high\"></div>\r\n &gt;500\r\n </div>\r\n <div class=\"ms-auto\">\r\n {{count|adbSpacing}} {{'OBSERVATION.OBSERVATIONS'|translate}}\r\n </div>\r\n }\r\n</div>","export const DateTypes = {\r\n THIS_YEAR: '1',\r\n LAST_YEAR: '2',\r\n ALL_YEAR: '3',\r\n LAST_5_YEAR: '4',\r\n LAST_25_YEAR: '5',\r\n CUSTOM: '6',\r\n}","import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { FormArray, FormControl, FormGroup, Validators } from \"@angular/forms\";\r\nimport { ActivatedRoute, ParamMap, Params, Router } from \"@angular/router\";\r\nimport { addYears, endOfDay, endOfYear, parseISO, startOfDay, startOfYear, subDays } from \"date-fns\";\r\nimport { catchError, combineLatest, debounceTime, map, Observable, of, shareReplay, Subscription } from \"rxjs\";\r\nimport { AdbMapConfigService, VisibleFilters } from \"../config\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { GeoJsonFeature } from \"../models\";\r\nimport { DateTypes } from \"../constants\";\r\n\r\n@Component({\r\n selector: 'adb-map-filters',\r\n templateUrl: 'map-filter.html',\r\n standalone: false\r\n})\r\nexport class AdbMapFilters implements OnInit, OnDestroy {\r\n @Input() inline = false;\r\n static datasets = ['1', '3', '5', '6', '4', '8'];\r\n artfakta = this.config.artfaktaTaxonLists;\r\n subscriptions = new Subscription();\r\n form: FormGroup;\r\n thisYear = new Date();\r\n lastYear = addYears(new Date(), -1);\r\n queryParamsMap: ParamMap;\r\n hasOwnArea: boolean;\r\n geo: GeoJsonFeature;\r\n area: { areaType: string; featureId: string; };\r\n areasArray: FormArray<any>;\r\n dataSetCount: number;\r\n taxonListCount: number;\r\n riskListCount: number;\r\n redListCount: number;\r\n areaCount: number;\r\n periodCount: number;\r\n listsError: any;\r\n filters: VisibleFilters;\r\n taxaLists: any[];\r\n hasTaxonInUrlParameter: any;\r\n dsControls: any;\r\n dateStartConfig: { maxDate: Date; };\r\n dateEndConfig: { minDate: Date; maxDate: Date; };\r\n\r\n constructor(\r\n private cdr: ChangeDetectorRef,\r\n private config: AdbMapConfigService,\r\n private http: HttpClient,\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute) {\r\n this.filters = config.filters;\r\n }\r\n\r\n ngOnInit(): void {\r\n const lists$ = this.http.get<any[]>(this.config.taxaListsApi);\r\n const combined$ = combineLatest([this.activatedRoute.paramMap, this.activatedRoute.queryParamMap, lists$])\r\n .pipe(map(results => ({ params: results[0], qParams: results[1], lists: results[2] })), debounceTime(0));\r\n this.subscriptions.add(combined$.subscribe(result => {\r\n this.form = this.createForm(result.params, result.qParams, result.lists);\r\n this.cdr.markForCheck();\r\n }));\r\n }\r\n\r\n removeArea(index: number): void {\r\n (this.form.get('areas') as FormArray).removeAt(index);\r\n this.form.markAsDirty();\r\n }\r\n\r\n addArea(): void {\r\n const areas = this.form.get('areas') as FormArray;\r\n areas.push(new FormControl(null));\r\n this.form.updateValueAndValidity();\r\n this.form.markAsDirty();\r\n }\r\n\r\n onSubmit(): void {\r\n const data = this.form.value;\r\n let params = {} as any;\r\n params.p = data.period ?? null;\r\n if (data.period === DateTypes.THIS_YEAR) {\r\n params.startAt = startOfYear(this.thisYear).toISOString();\r\n params.endAt = null;\r\n } else if (data.period === DateTypes.LAST_YEAR) {\r\n params.startAt = startOfYear(this.lastYear).toISOString();\r\n params.endAt = endOfYear(this.lastYear).toISOString();\r\n } else if (data.period === DateTypes.ALL_YEAR) {\r\n params.startAt = null;\r\n params.endAt = null;\r\n params.p = null;\r\n } else if (data.period === DateTypes.LAST_5_YEAR) {\r\n params.startAt = startOfYear(addYears(new Date(), -5)).toISOString();\r\n params.endAt = null;\r\n } else if (data.period === DateTypes.LAST_25_YEAR) {\r\n params.startAt = startOfYear(addYears(new Date(), -25)).toISOString();\r\n params.endAt = null;\r\n } else if (data.period === DateTypes.CUSTOM) {\r\n params.startAt = startOfDay(data.startAt).toISOString();\r\n params.endAt = endOfDay(data.endAt).toISOString();\r\n }\r\n if (this.hasOwnArea && data.geo) {\r\n params.geo = JSON.stringify(data.geo.geometry?.coordinates[0]);\r\n }\r\n const cleaned = data.areas?.filter(v => v != null && v !== '');\r\n if (cleaned.length > 0) {\r\n params.area = cleaned;\r\n }\r\n if (this.activatedRoute.snapshot.paramMap.has('taxonId')) {\r\n params.taxonId = this.activatedRoute.snapshot.paramMap.get('taxonId')\r\n } else {\r\n params.taxonId = data.taxonId ?? null;\r\n }\r\n if (data.list?.length > 0) {\r\n params.list = data.list;\r\n }\r\n if (data.ds?.length > 0) {\r\n const selected = data.ds.filter(f => f.selected).map(m => m.id);\r\n params.ds = selected.length ? selected : null;\r\n }\r\n this.router.navigate([], { queryParams: params, relativeTo: this.activatedRoute })\r\n }\r\n\r\n private createForm(params: Params, qMap: ParamMap, lists: any[]): FormGroup {\r\n this.hasTaxonInUrlParameter = params.has('taxonId');\r\n this.hasOwnArea = qMap.has('geo') && this.filters.showOwnArea;\r\n const areas = qMap.getAll('area').filter(a => a != null && a.trim() !== '' && a.includes('-'));\r\n const form: FormGroup = new FormGroup({\r\n period: new FormControl(qMap.has('p') ? qMap.get('p') : '3'),\r\n areas: new FormArray(\r\n (Array.isArray(areas) && areas.length ? areas : [null]).map(a => new FormControl(a))\r\n ),\r\n geo: new FormControl(qMap.has('geo') ? {\r\n type: 'Feature',\r\n geometry: { type: 'Polygon', coordinates: [JSON.parse(qMap.get('geo'))] }\r\n } : null)\r\n });\r\n this.areasArray = form.get('areas') as FormArray;\r\n this.periodCount = qMap.has('p') && qMap.get('p') !== '3' ? 1 : 0;\r\n this.areaCount = areas?.length;\r\n if (!this.hasTaxonInUrlParameter) {\r\n form.addControl('taxonId', new FormControl(qMap.get('taxonId') ?? null));\r\n const selectedTaxonList = qMap.has('list') ? qMap.getAll('list').map(val => Number(val)).filter(val => !isNaN(val)) : null;\r\n this.taxaLists = lists;\r\n this.taxonListCount = selectedTaxonList?.length;\r\n form.addControl('list', new FormControl(selectedTaxonList))\r\n let datasets = qMap.has('ds') ? (Array.isArray(qMap.getAll('ds')) ? qMap.getAll('ds') : [qMap.get('ds')]) : null;\r\n this.dataSetCount = datasets?.length;\r\n form.addControl('ds', new FormArray(\r\n AdbMapFilters.datasets.map(id => new FormGroup({\r\n id: new FormControl(id),\r\n selected: new FormControl(datasets?.includes(id))\r\n }))\r\n ));\r\n this.dsControls = (form.get('ds') as FormArray).controls;\r\n }\r\n this.updateCustomDate(form, qMap.get('p'), qMap);\r\n this.subscriptions.add(form.get('period').valueChanges.subscribe(period => {\r\n this.updateCustomDate(form, period, qMap);\r\n }));\r\n\r\n return form;\r\n }\r\n\r\n private updateCustomDate(form: FormGroup, period: string, qMap: ParamMap): void {\r\n if (form.contains('startAt')) {\r\n form.removeControl('startAt');\r\n }\r\n if (form.contains('endAt')) {\r\n form.removeControl('endAt');\r\n }\r\n if (period === DateTypes.CUSTOM) {\r\n let start = qMap.has('startAt') ? parseISO(qMap.get('startAt')) : null;\r\n let end = qMap.has('endAt') ? parseISO(qMap.get('endAt')) : null;\r\n if(qMap.get('p')!==DateTypes.CUSTOM){\r\n start = new Date();\r\n end = new Date();\r\n }\r\n this.dateStartConfig = { maxDate: end ?? new Date() };\r\n this.dateEndConfig = { minDate: start ?? null, maxDate: new Date() };\r\n const startControl = new FormControl(start, Validators.required);\r\n const endControl = new FormControl(end, Validators.required);\r\n form.addControl('startAt', startControl);\r\n form.addControl('endAt', endControl);\r\n this.subscriptions.add(\r\n startControl.valueChanges.subscribe(startAt => {\r\n this.dateEndConfig = { minDate: startAt ?? null, maxDate: new Date() };\r\n })\r\n );\r\n this.subscriptions.add(\r\n endControl.valueChanges.subscribe(endAt => {\r\n this.dateStartConfig = { maxDate: endAt ?? new Date() };\r\n })\r\n );\r\n }\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n}","@if(form){\r\n<form [formGroup]=\"form\" class=\"form mb-3\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"mb-3\">\r\n <adb-filter-section titleResource=\"TAXON.TAXA\" [expanded]=\"true\">\r\n @if(filters.showTaxon&&!hasTaxonInUrlParameter){\r\n <div class=\"mb-3\">\r\n <label for=\"species\">{{'TAXON.TAXON'|translate}}</label>\r\n <adb-taxon-picker formControlName=\"taxonId\" id=\"species\"></adb-taxon-picker>\r\n </div>\r\n }\r\n </adb-filter-section>\r\n @if(filters.showTime){\r\n <adb-filter-section [count]=\"periodCount\" titleResource=\"OBSERVATION.PERIOD\">\r\n <div class=\"mb-1\">\r\n <select class=\"form-select\" formControlName=\"period\" id=\"period\">\r\n <option value=\"1\">{{thisYear|date:'yyyy'}}</option>\r\n <option value=\"2\">{{lastYear|date:'yyyy'}}</option>\r\n <option value=\"3\">{{'OBSERVATION.ALL_YEAR'|translate}}</option>\r\n <option value=\"4\">{{'OBSERVATION.LAST_5_YEAR'|translate}}</option>\r\n <option value=\"5\">{{'OBSERVATION.LAST_25_YEAR'|translate}}</option>\r\n <option value=\"6\">{{'OBSERVATION.CUSTOMIZED'|translate}}</option>\r\n </select>\r\n </div>\r\n @if (form.value?.period==='6') {\r\n <div class=\"mb-2\">\r\n <label for=\"startAt\">{{'FROM' |translate}}</label>\r\n <input adbDatepicker type=\"text\" class=\"form-control datepicker\" id=\"startAt\" formControlName=\"startAt\" [settings]=\"dateStartConfig\">\r\n </div>\r\n <div class=\"mb-2\">\r\n <label for=\"endAt\">{{'TO' |translate}}</label>\r\n <input adbDatepicker type=\"text\" class=\"form-control datepicker\" id=\"endAt\" formControlName=\"endAt\" [settings]=\"dateEndConfig\">\r\n </div>\r\n }\r\n </adb-filter-section>\r\n }\r\n @if(filters.showArea){\r\n <adb-filter-section [count]=\"areaCount\" titleResource=\"GEOGRAPHY\" [lazy]=\"true\">\r\n <ng-template>\r\n @if(filters.showOwnArea){\r\n <div role=\"tablist\" aria-label=\"{{'AREA'|translate}}\" class=\"d-flex gap-2 justify-content-end\">\r\n <button class=\"btn btn-link p-0\" [class.text-dark]=\"!hasOwnArea\" (click)=\"hasOwnArea=false\" role=\"tab\" id=\"tab-select\" aria-selected=\"{{!hasOwnArea}}\" aria-controls=\"panel-select\">\r\n {{'CHOOSE'|translate}}\r\n </button>\r\n <button class=\"btn btn-link p-0\" [class.text-dark]=\"hasOwnArea\" (click)=\"hasOwnArea=true\" role=\"tab\" id=\"tab-draw\" aria-selected=\"false\" aria-controls=\"panel-draw\">\r\n {{'OWN_AREA'|translate}}\r\n </button>\r\n </div>\r\n }\r\n <div class=\"mb-2\">\r\n @if(hasOwnArea&&filters.showOwnArea){\r\n <div class=\"pt-1\" role=\"tabpanel\" id=\"area-draw\" aria-labelledby=\"tab-draw\">\r\n <div>\r\n <adb-polygon-drawer formControlName=\"geo\"></adb-polygon-drawer>\r\n </div>\r\n </div>\r\n }@else{\r\n <div role=\"tabpanel\" id=\"area-select\" aria-labelledby=\"tab-select\">\r\n <div formArrayName=\"areas\">\r\n <div class=\"d-flex align-items-end mb-1\">\r\n <label>{{'AREAS'|translate}}</label>\r\n <button class=\"ms-auto text-dark btn btn-sm btn-secondary\" attr.aria-label=\"{{'OBSERVATION.ADD_AREA'|translate}}\" title=\"{{'OBSERVATION.ADD_AREA'|translate}}\" type=\"button\" (click)=\"addArea()\">\r\n <span class=\"fas fa-plus\"></span>\r\n </button>\r\n </div>\r\n @for (ctrl of areasArray.controls; track ctrl; let i = $index; let last = $last) {\r\n <div class=\"d-flex mb-2\">\r\n <adb-area-picker id=\"area-{{i}}\" [formControlName]=\"i\"></adb-area-picker>\r\n @if(areasArray.length>1){\r\n <button class=\"btn btn-secondary ms-1\" attr.aria-label=\"{{'DELETE'|translate}}\" title=\"{{'DELETE'|translate}}\" type=\"button\" (click)=\"removeArea(i)\">\r\n <span class=\"fas fa-trash\"></span>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n </adb-filter-section>\r\n }\r\n @if(form.get('taxonId')){\r\n @if(filters.showTaxaLists){\r\n <adb-filter-section [count]=\"taxonListCount\" titleResource=\"LISTS.NATURE_CONSERVATION_LISTS\">\r\n <div class=\"mb-3\">\r\n <app-treeview formControlName=\"list\" [nodes]=\"taxaLists\"></app-treeview>\r\n </div>\r\n {{'LISTS.READ_MORE'|translate}}\r\n <a [href]=\"artfakta\">{{'LISTS.LIST_CONTENT'|translate}}</a>\r\n </adb-filter-section>\r\n }\r\n @if(filters.showDatasets){\r\n <adb-filter-section [count]=\"dataSetCount\" titleResource=\"DATASET.DATASETS\">\r\n @if (form.get('ds')) {\r\n <div formArrayName=\"ds\">\r\n @for (item of dsControls; track item; let i = $index) {\r\n <div [formGroupName]=\"i\" class=\"form-check\">\r\n <input type=\"checkbox\" formControlName=\"selected\" [id]=\"'ds-' + item.value.id\" class=\"form-check-input\">\r\n <label [for]=\"'ds-' + item.value.id\" class=\"form-check-label\">{{ 'PROVIDERS.'+item.value.id |translate }}</label>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </adb-filter-section>\r\n }\r\n }\r\n </div>\r\n <div class=\"d-flex justify-content-end gap-2\">\r\n @if (inline) {\r\n <a class=\"btn btn-secondary\" [routerLink]=\"[]\">\r\n {{'CANCEL'|translate}}\r\n </a>\r\n }\r\n <button type=\"submit\" class=\"btn btn-primary\" [disabled]=\"form.invalid||form.pristine\">{{'FILTER'|translate}}</button>\r\n </div>\r\n</form>\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { PolygonDrawerInput } from \"./components/polygon-drawer.component\";\r\nimport { RouterModule, RouterOutlet } from \"@angular/router\";\r\nimport { ADB_MAP_CONFIG, AdbMapConfig, AdbMapConfigService } from \"./config\";\r\nimport { TreeviewComponent } from \"./components/treeview\";\r\nimport { AdbDatePickerModule } from \"../date-picker/adb-date-picker.module\";\r\nimport { AdbFilterSectionModule } from \"../adb-filter-section/adb-filter-section.module\";\r\nimport { AdbPipesModule } from \"../../pipes/pipes.module\";\r\nimport { AdbObsMapComponent } from \"./components/observations-map\";\r\nimport { AdbMapFilters } from \"./components/map-filter\";\r\nimport { AdbPickerModule } from \"../adb-picker-module/adb-picker.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n RouterModule,\r\n ReactiveFormsModule,\r\n AdbDatePickerModule,\r\n TranslateModule.forChild(),\r\n AdbPipesModule,\r\n AdbFilterSectionModule,\r\n AdbPickerModule\r\n ],\r\n declarations: [\r\n AdbObsMapComponent,\r\n PolygonDrawerInput,\r\n AdbMapFilters,\r\n TreeviewComponent,\r\n // Stats,\r\n // AdbGeojsonPolygonDirective\r\n ],\r\n exports: [\r\n AdbObsMapComponent,\r\n PolygonDrawerInput,\r\n AdbMapFilters,\r\n // Stats,\r\n // AdbGeojsonPolygonDirective\r\n ],\r\n providers: [\r\n AdbMapConfigService\r\n ]\r\n})\r\nexport class AdbMapModule {\r\n static forRoot(config?: AdbMapConfig): ModuleWithProviders<AdbMapModule> {\r\n return {\r\n ngModule: AdbMapModule,\r\n providers: [\r\n {\r\n provide: ADB_MAP_CONFIG,\r\n useValue: config\r\n }\r\n ]\r\n };\r\n }\r\n}","/*\r\n * Public API Surface of artdata-shared\r\n */\r\n\r\n\r\nexport * from './lib/components/adb-artportalen-nav/adb-artportalen-nav.module';\r\nexport * from './lib/components/adb-artportalen-nav/environment.service';\r\nexport * from './lib/components/adb-artportalen-nav/adb-artportalen-nav.component';\r\nexport * from './lib/components/adb-artportalen-nav/adb-artportalen-footer.component';\r\n\r\nexport * from './lib/directives/directives.module';\r\nexport * from './lib/directives/click-outside.directive';\r\nexport * from './lib/directives/focus.directive';\r\nexport * from './lib/directives/redlist-badge-class.directive';\r\nexport * from './lib/directives/risk-class.directive';\r\nexport * from './lib/directives/file-upload.directive';\r\nexport * from './lib/directives/active-fragment.directive';\r\nexport * from './lib/directives/image-loader.directive';\r\n\r\n\r\nexport * from './lib/components/pagers/pagers.module';\r\nexport * from './lib/components/pagers/infinite-scroll.component';\r\nexport * from './lib/components/pagers/pager';\r\nexport * from './lib/components/pagers/pager-inline';\r\n\r\nexport * from './lib/pipes/pipes.module';\r\nexport * from './lib/pipes/highlight.pipe';\r\nexport * from './lib/pipes/highlight-html.pipe';\r\nexport * from './lib/pipes/number-spacing.pipe';\r\nexport * from './lib/pipes/date.pipe';\r\nexport * from './lib/pipes/emptyValue.pipe';\r\n\r\nexport * from './lib/components/date-picker/adb-date-picker.module';\r\nexport * from './lib/components/date-picker/adb-date-picker.component';\r\nexport * from './lib/components/date-picker/adb-date-picker.directive';\r\n\r\nexport * from './lib/components/adb-dropdown/adb-dropdown.module';\r\nexport * from './lib/components/adb-dropdown/adb-dropdown.directive';\r\nexport * from './lib/components/adb-dropdown/adb-dropdown2.directive';\r\n\r\n\r\nexport * from './lib/components/adb-confirm-modal/adb-modal.module';\r\nexport * from './lib/components/adb-confirm-modal/adb-confirm-modal';\r\nexport * from './lib/components/adb-confirm-modal/adb-modal.service';\r\n\r\nexport * from './lib/components/adb-toast/adb-toast.module';\r\nexport * from './lib/components/adb-toast/adb-toast';\r\nexport * from './lib/components/adb-toast/adb-toast.service';\r\n\r\nexport * from './lib/components/adb-buttons/adb-buttons.module';\r\nexport * from './lib/components/adb-buttons/help-button.component';\r\n\r\nexport * from './lib/components/adb-rich-editor/adb-rich-editor.module';\r\nexport * from './lib/components/adb-rich-editor/adb-rich-editor.component';\r\nexport * from './lib/components/adb-rich-editor/adb-rich-text';\r\n\r\nexport * from './lib/components/adb-filter-section/adb-filter-section.module';\r\nexport * from './lib/components/adb-filter-section/filter-section.component';\r\n\r\nexport * from './lib/components/adb-user/adb-user.module';\r\nexport * from './lib/components/adb-user/adb-user.service';\r\nexport * from './lib/components/adb-user/adb-user.interceptor';\r\nexport * from './lib/components/adb-user/auth-callback.component';\r\nexport * from './lib/components/adb-user/user-constants';\r\nexport * from './lib/components/adb-user/adb-user-service-config';\r\n\r\nexport * from './lib/components/adb-picker-module/adb-picker.module';\r\nexport * from './lib/components/adb-picker-module/adb-picker-config';\r\nexport * from './lib/components/adb-picker-module/components/adb-generic-picker';\r\nexport * from './lib/components/adb-picker-module/components/area-picker';\r\nexport * from './lib/components/adb-picker-module/components/taxon-picker';\r\n\r\nexport * from './lib/components/adb-map-module/adb-map.module';\r\nexport * from './lib/components/adb-map-module/config';\r\nexport * from './lib/components/adb-map-module/mapUtils';\r\nexport * from './lib/components/adb-map-module/components/map-filter';\r\nexport * from './lib/components/adb-map-module/components/observations-map';\r\nexport * from './lib/components/adb-map-module/components/polygon-drawer.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4.EnvironmentService","i5","i6.ClickOutsideDirective","i1.AdbDropdownService","i2.EnvironmentService","i3.LocaleDatePipe","i1.AdbDatePickerService","i1.AdbModalService","i1.AdbToastService","i2.AdbHelpButtonComponent","i3.AdbUserService","i1.AdbUserService","catchError","i3.ClickOutsideDirective","map","i1.AdbPickerConfigService","i3.GenericPickerComponent","i4.HighlightPipe","i2.AdbPickerConfigService","i4.GenericPickerComponent","i5.HighlightPipe","Leaflet","i2.AdbMapConfigService","i4","i5.NumberSpacingPipe","debounceTime","i1.AdbMapConfigService","i5.AdbDatePickerDirective","i6.FilterSectionComponent","i7.AdbAreaPickerComponent","i8.AdbTaxonPickerComponent","i9.PolygonDrawerInput","i10.TreeviewComponent","i11","i12"],"mappings":"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"}