libs/depiction/src/lib/datasetlist/list-entry.component.ts
Represents an abstract dataset entry for a list, which has the following functions:
Properties |
|
Methods |
|
Inputs |
Outputs |
constructor(internalIdHandler: InternalIdHandler, translateSrvc: TranslateService)
|
|||||||||
Parameters :
|
Protected internalId |
Type : InternalDatasetId
|
Private langChangeSubscription |
Type : Subscription
|
Public loading |
Type : boolean
|
Protected Abstract loadDataset | ||||||
loadDataset(lang?: string)
|
||||||
Parameters :
Returns :
void
|
Public ngOnDestroy |
ngOnDestroy()
|
Returns :
void
|
Public ngOnInit |
ngOnInit()
|
Returns :
void
|
Protected onLanguageChanged | ||||||
onLanguageChanged(langChangeEvent: LangChangeEvent)
|
||||||
Parameters :
Returns :
void
|
Public removeDataset |
removeDataset()
|
Returns :
void
|
Public toggleSelection |
toggleSelection()
|
Returns :
void
|
datasetId | |
Type : string
|
|
selected | |
Type : boolean
|
|
onDeleteDataset | |
Type : EventEmitter<boolean>
|
|
onSelectDataset | |
Type : EventEmitter<boolean>
|
|
import { EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';
import { InternalDatasetId, InternalIdHandler } from '@helgoland/core';
import { LangChangeEvent, TranslateService } from '@ngx-translate/core';
import { Subscription } from 'rxjs';
/**
* Represents an abstract dataset entry for a list, which has the following functions:
* - can be selected and is selectable internally, with a corresponding output event
* - can be deleted, which also triggers an output event
* - translatable, so it triggers the methode onLanguageChanged when the language is switched
*/
export abstract class ListEntryComponent implements OnInit, OnDestroy {
@Input()
public datasetId: string;
@Input()
public selected: boolean;
@Output()
public onDeleteDataset: EventEmitter<boolean> = new EventEmitter();
@Output()
public onSelectDataset: EventEmitter<boolean> = new EventEmitter();
public loading: boolean;
protected internalId: InternalDatasetId;
private langChangeSubscription: Subscription;
constructor(
protected internalIdHandler: InternalIdHandler,
protected translateSrvc: TranslateService
) { }
public ngOnInit(): void {
if (this.datasetId) {
this.internalId = this.internalIdHandler.resolveInternalId(this.datasetId);
this.loadDataset(this.translateSrvc.currentLang);
}
this.langChangeSubscription = this.translateSrvc.onLangChange.subscribe((langChangeEvent: LangChangeEvent) => this.onLanguageChanged(langChangeEvent));
}
public ngOnDestroy(): void {
this.langChangeSubscription.unsubscribe();
}
public removeDataset() {
this.onDeleteDataset.emit(true);
}
public toggleSelection() {
this.selected = !this.selected;
this.onSelectDataset.emit(this.selected);
}
protected onLanguageChanged(langChangeEvent: LangChangeEvent): void {
if (this.internalId) {
this.loadDataset(langChangeEvent.lang);
}
}
protected abstract loadDataset(lang?: string): void;
}