{"version":3,"file":"helgoland-favorite.mjs","sources":["../../../../projects/helgoland/favorite/src/lib/service/favorite.service.ts","../../../../projects/helgoland/favorite/src/lib/favorite-toggler/favorite-toggler.component.ts","../../../../projects/helgoland/favorite/src/lib/favorite-toggler/favorite-toggler.component.html","../../../../projects/helgoland/favorite/src/lib/service/json-favorite-exporter.service.ts","../../../../projects/helgoland/favorite/src/lib/favorite.module.ts","../../../../projects/helgoland/favorite/src/public-api.ts","../../../../projects/helgoland/favorite/src/helgoland-favorite.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport {\n  DatasetOptions,\n  HelgolandTimeseries,\n  LocalStorage,\n} from '@helgoland/core';\nimport { Observable, ReplaySubject } from 'rxjs';\n\nexport interface Favorite {\n  id: string;\n  label: string;\n}\n\nexport interface SingleFavorite extends Favorite {\n  favorite: HelgolandTimeseries;\n  options: DatasetOptions;\n}\n\nfunction isSingleFavorite(object: any): object is SingleFavorite {\n  return 'favorite' in object;\n}\n\nexport interface GroupFavorite extends Favorite {\n  favorites: {\n    dataset: HelgolandTimeseries;\n    options: DatasetOptions;\n  }[];\n}\n\nfunction isGroupFavorite(object: any): object is GroupFavorite {\n  return 'favorites' in object;\n}\n\nconst CACHE_PARAM_FAVORITES_SINGLE = 'SingleFavorites';\nconst CACHE_PARAM_FAVORITES_GROUP = 'GroupFavorites';\n\n@Injectable()\nexport class FavoriteService {\n  private singleFavs: Map<string, SingleFavorite> = new Map();\n  private groupFavs: Map<string, GroupFavorite> = new Map();\n  private groupCounter = 0;\n\n  private favoriteCountChanged: ReplaySubject<number> = new ReplaySubject();\n\n  constructor(protected localStorage: LocalStorage) {\n    this.loadFavorites();\n  }\n\n  public addFavorite(\n    dataset: HelgolandTimeseries,\n    options: DatasetOptions,\n    label?: string,\n  ): boolean {\n    if (!this.singleFavs.has(dataset.internalId)) {\n      this.singleFavs.set(dataset.internalId, {\n        id: dataset.internalId,\n        label: label ? label : dataset.label,\n        favorite: dataset,\n        options,\n      });\n      this.saveFavorites();\n      return true;\n    }\n    return false;\n  }\n\n  public getFavoriteCountChanged(): Observable<number> {\n    return this.favoriteCountChanged;\n  }\n\n  public hasFavorite(dataset: HelgolandTimeseries): boolean {\n    return this.singleFavs.has(dataset.internalId);\n  }\n\n  public setFavorites(\n    singles: Map<string, SingleFavorite>,\n    groups: Map<string, GroupFavorite>,\n  ) {\n    this.groupFavs = groups;\n    this.singleFavs = singles;\n    this.saveFavorites();\n  }\n\n  public getFavorites(): SingleFavorite[] {\n    return Array.from(this.singleFavs.values());\n  }\n\n  public removeFavorite(favoriteId: string): boolean {\n    if (this.singleFavs.has(favoriteId)) {\n      this.singleFavs.delete(favoriteId);\n      this.saveFavorites();\n      return true;\n    }\n    if (this.groupFavs.has(favoriteId)) {\n      this.groupFavs.delete(favoriteId);\n      this.saveFavorites();\n      return true;\n    }\n    return false;\n  }\n\n  public addFavoriteGroup(\n    datasets: { dataset: HelgolandTimeseries; options: DatasetOptions }[],\n    label?: string,\n  ): boolean {\n    const id = 'Group' + this.groupCounter++;\n    this.groupFavs.set(id, {\n      id,\n      label: label ? label : id,\n      favorites: datasets,\n    });\n    this.saveFavorites();\n    return true;\n  }\n\n  public getFavoriteGroups(): GroupFavorite[] {\n    return Array.from(this.groupFavs.values());\n  }\n\n  public removeAllFavorites(): boolean {\n    this.singleFavs.clear();\n    this.groupFavs.clear();\n    this.saveFavorites();\n    return true;\n  }\n\n  public changeLabel(favorite: Favorite, label: string) {\n    favorite.label = label;\n    if (isSingleFavorite(favorite)) {\n      this.singleFavs.set(favorite.id, favorite);\n    }\n    if (isGroupFavorite(favorite)) {\n      this.groupFavs.set(favorite.id, favorite);\n    }\n    this.saveFavorites();\n  }\n\n  private saveFavorites(): void {\n    this.localStorage.save(CACHE_PARAM_FAVORITES_SINGLE, this.getFavorites());\n    this.localStorage.save(\n      CACHE_PARAM_FAVORITES_GROUP,\n      this.getFavoriteGroups(),\n    );\n    this.updateFavoriteCount();\n  }\n\n  private loadFavorites(): void {\n    this.singleFavs = new Map();\n    this.groupFavs = new Map();\n    const loadedSingleFavs = this.localStorage.loadArray<SingleFavorite>(\n      CACHE_PARAM_FAVORITES_SINGLE,\n    );\n    if (loadedSingleFavs) {\n      loadedSingleFavs.forEach((entry) => {\n        entry.favorite = this.instanciateClass(entry.favorite);\n        this.singleFavs.set(entry.id, entry);\n      });\n    }\n    const loadedGroupFavs = this.localStorage.loadArray<GroupFavorite>(\n      CACHE_PARAM_FAVORITES_GROUP,\n    );\n    if (loadedGroupFavs) {\n      loadedGroupFavs.forEach((entry) => {\n        entry.favorites.map((element) => {\n          return {\n            dataset: this.instanciateClass(element.dataset),\n            options: element.options,\n          };\n        });\n        this.groupFavs.set(entry.id, entry);\n      });\n    }\n    this.updateFavoriteCount();\n  }\n\n  private instanciateClass(\n    timeseries: HelgolandTimeseries,\n  ): HelgolandTimeseries {\n    const storedFav = timeseries as HelgolandTimeseries;\n    return new HelgolandTimeseries(\n      storedFav.id,\n      storedFav.url,\n      storedFav.label,\n      storedFav.uom,\n      storedFav.platform,\n      storedFav.firstValue,\n      storedFav.lastValue,\n      storedFav.referenceValues,\n      storedFav.renderingHints,\n      storedFav.parameters,\n    );\n  }\n\n  private updateFavoriteCount() {\n    this.favoriteCountChanged.next(this.singleFavs.size + this.groupFavs.size);\n  }\n}\n","import { NgClass } from '@angular/common';\nimport { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { DatasetOptions, HelgolandTimeseries } from '@helgoland/core';\nimport { TranslateService } from '@ngx-translate/core';\n\nimport { FavoriteService } from '../service/favorite.service';\n\n@Component({\n  selector: 'n52-favorite-toggler',\n  templateUrl: './favorite-toggler.component.html',\n  standalone: true,\n  imports: [NgClass],\n})\nexport class FavoriteTogglerComponent implements OnChanges {\n  @Input({ required: true })\n  public dataset!: HelgolandTimeseries;\n\n  @Input({ required: true })\n  public options!: DatasetOptions;\n\n  public isFavorite: boolean = false;\n\n  constructor(\n    protected favSrvc: FavoriteService,\n    protected translate: TranslateService,\n  ) {}\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (changes['dataset'] && this.dataset) {\n      this.isFavorite = this.favSrvc.hasFavorite(this.dataset);\n    }\n  }\n\n  public toggle() {\n    if (this.isFavorite) {\n      this.removeFavorite();\n    } else {\n      this.addFavorite();\n    }\n  }\n\n  protected addFavorite() {\n    this.isFavorite = true;\n    this.favSrvc.addFavorite(this.dataset, this.options);\n  }\n\n  protected removeFavorite() {\n    this.isFavorite = false;\n    this.favSrvc.removeFavorite(this.dataset.internalId);\n  }\n}\n","<i\n  class=\"fa\"\n  (click)=\"toggle(); $event.stopPropagation()\"\n  [ngClass]=\"isFavorite ? 'fa-star' : 'fa-star-o'\"\n></i>\n","import { Injectable } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\n\nimport {\n  FavoriteService,\n  GroupFavorite,\n  SingleFavorite,\n} from './favorite.service';\n\n@Injectable()\nexport class JsonFavoriteExporterService {\n  constructor(protected favoriteSrvc: FavoriteService) {}\n\n  public exportFavorites() {\n    const filename = 'favorites.json';\n    const json = {\n      singles: this.favoriteSrvc.getFavorites(),\n      groups: this.favoriteSrvc.getFavoriteGroups(),\n    };\n    // if (window.navigator.msSaveBlob) {\n    //     // IE version >= 10\n    //     const blob = new Blob([json], {\n    //         type: 'application/json;charset=utf-8;'\n    //     });\n    //     window.navigator.msSaveBlob(blob, filename);\n    // } else {\n    // FF, Chrome ...\n    const a = document.createElement('a');\n    a.href =\n      'data:application/json,' + encodeURIComponent(JSON.stringify(json));\n    a.target = '_blank';\n    a.download = filename;\n    document.body.appendChild(a);\n    a.click();\n    // }\n  }\n\n  public importFavorites(event: any): Observable<boolean> {\n    return new Observable<boolean>((observer: Observer<boolean>) => {\n      const files = event.target.files;\n      if (files && files.length > 0) {\n        this.favoriteSrvc.removeAllFavorites();\n        const reader = new FileReader();\n        reader.readAsText(files[0]);\n        reader.onerror = () => {\n          // alertService.error($translate.instant('favorite.import.wrongFile'));\n        };\n        reader.onload = (e: any) => {\n          const result = e.target.result;\n          const json = JSON.parse(result);\n          const singles = new Map<string, SingleFavorite>();\n          json.singles.forEach((single: SingleFavorite) =>\n            singles.set(single.id, single),\n          );\n          const groups = new Map<string, GroupFavorite>();\n          json.groups.forEach((group: GroupFavorite) =>\n            groups.set(group.id, group),\n          );\n          this.favoriteSrvc.setFavorites(singles, groups);\n          observer.next(true);\n          observer.complete();\n        };\n      }\n    });\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FavoriteTogglerComponent } from './favorite-toggler/favorite-toggler.component';\nimport { FavoriteService } from './service/favorite.service';\nimport { JsonFavoriteExporterService } from './service/json-favorite-exporter.service';\n\nconst COMPONENTS = [FavoriteTogglerComponent];\n\n/**\n * The favorite module includes the following functionality:\n * - favorite service to handle favorites\n * - toggler component so activate a favorite\n * - import/export serivce\n */\n@NgModule({\n  imports: [CommonModule, COMPONENTS],\n  exports: [COMPONENTS],\n  providers: [FavoriteService, JsonFavoriteExporterService],\n})\nexport class HelgolandFavoriteModule {}\n","/*\n * Public API Surface of favorite\n */\n\nexport * from './lib/favorite.module';\nexport * from './lib/service/favorite.service';\nexport * from './lib/service/json-favorite-exporter.service';\nexport * from './lib/favorite-toggler/favorite-toggler.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FavoriteService"],"mappings":"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"}