File

libs/core/src/lib/abstract-services/rendering-hints-dataset.service.ts

Extends

DatasetService

Index

Properties
Methods

Constructor

constructor(servicesConnector: HelgolandServicesConnector)
Parameters :
Name Type Optional
servicesConnector HelgolandServicesConnector No

Properties

Public datasetIds
Type : string[]
Default value : []
Inherited from DatasetService
Defined in DatasetService:7
Public datasetIdsChanged
Type : EventEmitter<string[]>
Default value : new EventEmitter()
Inherited from DatasetService
Defined in DatasetService:11
Public datasetOptions
Type : Map<string | T>
Default value : new Map()
Inherited from DatasetService
Defined in DatasetService:9

Methods

Public Async addDataset
addDataset(internalId: string, options?: T)
Parameters :
Name Type Optional
internalId string No
options T Yes
Returns : Promise<boolean>
Private Async addLoadedDataset
addLoadedDataset(timeseries: HelgolandTimeseries, resolve: (value: boolean | PromiseLike) => void)
Parameters :
Name Type Optional
timeseries HelgolandTimeseries No
resolve function No
Returns : any
Private createOptionsOfRenderingHints
createOptionsOfRenderingHints(timeseries: HelgolandTimeseries)
Parameters :
Name Type Optional
timeseries HelgolandTimeseries No
Returns : T
Private handleBarRenderingHints
handleBarRenderingHints(barHints: BarRenderingHints, options: DatasetOptions)
Parameters :
Name Type Optional
barHints BarRenderingHints No
options DatasetOptions No
Returns : void
Private handleLineRenderingHints
handleLineRenderingHints(lineHints: LineRenderingHints, options: DatasetOptions)
Parameters :
Name Type Optional
lineHints LineRenderingHints No
options DatasetOptions No
Returns : void
Public Async addDataset
addDataset(internalId: string, options?: T)
Inherited from DatasetService
Defined in DatasetService:20

Adds the dataset to the selection

Parameters :
Name Type Optional
internalId string No
options T Yes
Returns : Promise<boolean>

Successfull added the dataset.

Protected Abstract createStyles
createStyles(internalId: string)
Inherited from DatasetService
Defined in DatasetService:68
Parameters :
Name Type Optional
internalId string No
Returns : T
Public hasDataset
hasDataset(id: string)
Inherited from DatasetService
Defined in DatasetService:59
Parameters :
Name Type Optional
id string No
Returns : boolean
Public hasDatasets
hasDatasets()
Inherited from DatasetService
Defined in DatasetService:55
Returns : boolean
Protected Abstract loadState
loadState()
Inherited from DatasetService
Defined in DatasetService:72
Returns : void
Public removeAllDatasets
removeAllDatasets()
Inherited from DatasetService
Defined in DatasetService:38
Returns : void
Public removeDataset
removeDataset(internalId: string)
Inherited from DatasetService
Defined in DatasetService:45
Parameters :
Name Type Optional
internalId string No
Returns : void
Protected Abstract saveState
saveState()
Inherited from DatasetService
Defined in DatasetService:70
Returns : void
Public updateDatasetOptions
updateDatasetOptions(options: T, internalId: string)
Inherited from DatasetService
Defined in DatasetService:63
Parameters :
Name Type Optional
options T No
internalId string No
Returns : void
import { DatasetType, HelgolandTimeseries } from '../api-communication/model/internal/dataset';
import { BarRenderingHints, LineRenderingHints } from '../model/dataset-api/dataset';
import { DatasetOptions } from '../model/internal/options';
import { HelgolandServicesConnector } from '../api-communication/helgoland-services-connector';
import { DatasetService } from './dataset.service';

export abstract class RenderingHintsDatasetService<T extends DatasetOptions | DatasetOptions[]> extends DatasetService<T> {

    constructor(
        protected servicesConnector: HelgolandServicesConnector
    ) {
        super();
    }

    public async addDataset(internalId: string, options?: T): Promise<boolean> {
        return new Promise<boolean>((resolve) => {
            if (this.datasetIds.indexOf(internalId) < 0) {
                if (options) {
                    this.datasetIds.push(internalId);
                    this.datasetOptions.set(internalId, options);
                    this.datasetIdsChanged.emit(this.datasetIds);
                    this.saveState();
                    resolve(true);
                } else {
                    this.servicesConnector.getDataset(internalId, { type: DatasetType.Timeseries })
                        .subscribe(dataset => this.addLoadedDataset(dataset, resolve));
                }
            }
        });
    }

    private async addLoadedDataset(timeseries: HelgolandTimeseries, resolve: (value?: boolean | PromiseLike<boolean>) => void) {
        this.datasetIds.push(timeseries.internalId);
        this.datasetOptions.set(timeseries.internalId, this.createOptionsOfRenderingHints(timeseries));
        this.datasetIdsChanged.emit(this.datasetIds);
        this.saveState();
        resolve(true);
    }

    private createOptionsOfRenderingHints(timeseries: HelgolandTimeseries): T {
        const options = this.createStyles(timeseries.internalId) as DatasetOptions;
        if (timeseries.renderingHints) {
            if (timeseries.renderingHints.properties && timeseries.renderingHints.properties.color) {
                options.color = timeseries.renderingHints.properties.color;
            }
            switch (timeseries.renderingHints.chartType) {
                case 'line':
                    this.handleLineRenderingHints(timeseries.renderingHints as LineRenderingHints, options);
                    break;
                case 'bar':
                    this.handleBarRenderingHints(timeseries.renderingHints as BarRenderingHints, options);
                    break;
                default:
                    break;
            }
        }
        return options as T;
    }


    private handleLineRenderingHints(lineHints: LineRenderingHints, options: DatasetOptions) {
        if (lineHints.properties.width) {
            options.lineWidth = Math.round(parseFloat(lineHints.properties.width));
        }
    }

    private handleBarRenderingHints(barHints: BarRenderingHints, options: DatasetOptions) {
        if (barHints.properties.width) {
            options.lineWidth = Math.round(parseFloat(barHints.properties.width));
        }
    }
}

result-matching ""

    No results matching ""