import { FormGroup } from '@angular/forms'; import { GeoJsonGeometryTypes } from 'geojson'; import { EntityKey, EntityStoreOptions, EntityStoreStrategyOptions } from '@ximple/igo2-common'; import { VectorLayer } from '../../layer'; import { IgoMap } from '../../map'; import { FeatureMotion } from './feature.enums'; import OlFeature from 'ol/Feature'; export interface Feature

{ type: string; projection?: string; geometry?: FeatureGeometry; properties: P; extent?: [number, number, number, number]; meta?: FeatureMeta; ol?: OlFeature; } export interface FeatureMeta { id: EntityKey; title?: string; mapTitle?: string; sourceTitle?: string; order?: number; alias?: { [key: string]: string; }; revision?: number; excludeAttribute?: Array; excludeAttributeOffline?: Array; } export interface FeatureGeometry { type: GeoJsonGeometryTypes; coordinates: any; } export interface FeatureStoreOptions extends EntityStoreOptions { map: IgoMap; layer?: VectorLayer; } export interface FeatureStoreStrategyOptions extends EntityStoreStrategyOptions { viewScale?: [number, number, number, number]; areaRatio?: number; } export interface FeatureStoreLoadingStrategyOptions extends FeatureStoreStrategyOptions { getFeatureId?: (Feature: any) => EntityKey; motion?: FeatureMotion; } export interface FeatureStoreLoadingLayerStrategyOptions extends FeatureStoreStrategyOptions { } export interface FeatureStoreSelectionStrategyOptions extends FeatureStoreStrategyOptions { map: IgoMap; getFeatureId?: (Feature: any) => EntityKey; motion?: FeatureMotion; layer?: VectorLayer; many?: boolean; hitTolerance?: number; dragBox?: boolean; } export interface FeatureFormSubmitEvent { form: FormGroup; feature: Feature | undefined; data: Feature; }