import {UIEventSource} from "../../UIEventSource";
import FilteredLayer from "../../../Models/FilteredLayer";
import {FeatureSourceForLayer, Tiled} from "../FeatureSource";
import {BBox} from "../../BBox";

export default class SimpleFeatureSource implements FeatureSourceForLayer, Tiled {
    public readonly features: UIEventSource<{ feature: any; freshness: Date }[]>;
    public readonly name: string = "SimpleFeatureSource";
    public readonly layer: FilteredLayer;
    public readonly bbox: BBox = BBox.global;
    public readonly tileIndex: number;

    constructor(layer: FilteredLayer, tileIndex: number, featureSource?: UIEventSource<{ feature:any; freshness: Date }[]>) {
        this.name = "SimpleFeatureSource(" + layer.layerDef.id + ")"
        this.layer = layer
        this.tileIndex = tileIndex ?? 0;
        this.bbox = BBox.fromTileIndex(this.tileIndex)
        this.features = featureSource ?? new UIEventSource<{ feature: any; freshness: Date }[]>([]);
    }

}