fleeta-api-lib
Version:
A comprehensive library for fleet management applications - API, Auth, Device management
137 lines • 4.56 kB
TypeScript
/**
* GPS Data Filtering Utilities
* Provides functions for filtering GPS device data based on various criteria
*/
import type { DeviceGpsInfo } from '../../gps-websocket/types';
/**
* GPS Data Subscriber interface
*/
interface GpsDataSubscriber {
filter?: {
psnList?: string[];
activeOnly?: boolean;
videoOnly?: boolean;
boundingBox?: {
sw: {
lat: number;
lng: number;
};
ne: {
lat: number;
lng: number;
};
};
speedRange?: {
min: number;
max: number;
};
};
}
/**
* Apply basic auto-filtering to device data
* @param devices - Raw device data
* @param autoFilter - Auto-filter configuration
* @returns Filtered device data
*/
export declare function applyAutoFilter(devices: DeviceGpsInfo[], autoFilter: {
excludeInactive: boolean;
excludeInvalidCoords: boolean;
excludeStatic: boolean;
minSpeedThreshold: number;
}): DeviceGpsInfo[];
/**
* Apply subscriber-specific filtering to device data
* @param devices - Device data to filter
* @param filter - Subscriber filter configuration
* @returns Filtered device data
*/
export declare function applySubscriberFilter(devices: DeviceGpsInfo[], filter?: GpsDataSubscriber['filter']): DeviceGpsInfo[];
/**
* Filter devices by status
* @param devices - Device data
* @param status - Status to filter by
* @returns Filtered devices
*/
export declare function filterByStatus(devices: DeviceGpsInfo[], status: 'all' | 'active' | 'inactive' | 'video'): DeviceGpsInfo[];
/**
* Filter devices within a specific radius from a center point
* @param devices - Device data
* @param center - Center coordinate
* @param radiusKm - Radius in kilometers
* @returns Devices within radius
*/
export declare function filterByRadius(devices: DeviceGpsInfo[], center: {
lat: number;
lng: number;
}, radiusKm: number): DeviceGpsInfo[];
/**
* Filter devices by speed range
* @param devices - Device data
* @param minSpeed - Minimum speed (km/h)
* @param maxSpeed - Maximum speed (km/h)
* @returns Devices within speed range
*/
export declare function filterBySpeed(devices: DeviceGpsInfo[], minSpeed: number, maxSpeed?: number): DeviceGpsInfo[];
/**
* Group devices by their properties
* @param devices - Device data to group
* @param groupBy - Property to group by
* @returns Grouped devices
*/
export declare function groupDevices(devices: DeviceGpsInfo[], groupBy: 'status' | 'video' | 'speed' | 'region'): Record<string, DeviceGpsInfo[]>;
/**
* Sort devices by various criteria
* @param devices - Device data to sort
* @param sortBy - Sort criteria
* @param ascending - Sort direction
* @returns Sorted devices
*/
export declare function sortDevices(devices: DeviceGpsInfo[], sortBy: 'psn' | 'speed' | 'distance' | 'lastUpdate', ascending?: boolean, referencePoint?: {
lat: number;
lng: number;
}): DeviceGpsInfo[];
/**
* Find devices near a specific device
* @param devices - All device data
* @param targetPsn - Target device PSN
* @param radiusKm - Search radius in kilometers
* @returns Devices near the target device
*/
export declare function findNearbyDevices(devices: DeviceGpsInfo[], targetPsn: string, radiusKm: number): DeviceGpsInfo[];
/**
* Validate if coordinates are valid GPS coordinates
* @param lat - Latitude
* @param lng - Longitude
* @returns True if coordinates are valid
*/
export declare function isValidCoordinate(lat: number, lng: number): boolean;
/**
* Check if device is within bounding box
* @param device - Device to check
* @param boundingBox - Bounding box coordinates
* @returns True if device is within bounds
*/
export declare function isWithinBoundingBox(device: DeviceGpsInfo, boundingBox: {
sw: {
lat: number;
lng: number;
};
ne: {
lat: number;
lng: number;
};
}): boolean;
/**
* Create a combined filter function from multiple filter criteria
* @param filters - Array of filter functions
* @returns Combined filter function
*/
export declare function createCombinedFilter(...filters: Array<(device: DeviceGpsInfo) => boolean>): (device: DeviceGpsInfo) => boolean;
/**
* Create a filter function for device search
* @param searchQuery - Search query string
* @returns Filter function for search
*/
export declare function createSearchFilter(searchQuery: string): (device: DeviceGpsInfo) => boolean;
export {};
//# sourceMappingURL=filtering.d.ts.map