Freewheeling/src/interfaces.ts

130 lines
2.3 KiB
TypeScript

// Messages passed to and from the Web Worker
export interface Message {
loadData?: LoadData,
dataLoaded?: DataLoaded
findClosestNode?: FindClosestNode,
foundClosestNode?: FoundClosestNode,
findPathsFromNode?: FindPathsFromNode,
foundPathsFromNode?: FoundPathsFromNode,
getFullPath?: GetFullPath,
returnFullPath?: ReturnFullPath,
excludeAreas?: ExcludeAreas,
searchArea?: SearchArea,
continueSearch?: ContinueSearch,
searchAreaResult?: SearchAreaResult,
errorMessage?: ErrorMessage
}
interface LoadData {
data: Uint8Array
}
interface DataLoaded {
}
interface FindClosestNode {
latitude: number,
longitude: number
}
interface FoundClosestNode {
originalLatitude: number,
originalLongitude: number,
foundLatitude: number,
foundLongitude: number,
foundNodeId: number
}
interface FindPathsFromNode {
nodeId: number,
minimumSpeed: number,
maximumSpeed: number,
maximumSpeedLimit: number,
dragCoefficient: number,
allowMotorways: boolean,
allowTunnels: boolean,
allowAgainstOneway: boolean,
limitCornerSpeed: boolean,
reverse: boolean
}
export interface Endpoint {
nodeId: number,
latitude: number,
longitude: number,
distanceFromStart: number
}
interface FoundPathsFromNode {
nodeId: number,
endpoints: Endpoint[],
reverse: boolean
}
interface GetFullPath {
startNodeId: number,
endNodeId: number,
minimumSpeed: number,
dragCoefficient: number
}
export interface Coordinate {
latitude: number,
longitude: number
}
export interface PathSegment {
start: Coordinate,
end: Coordinate,
calculatedSpeed: number,
requiredSpeed: number
}
interface ReturnFullPath {
pathSegments: PathSegment[]
}
export interface Ring {
coordinates: Coordinate[]
}
export interface Polygon {
rings: Ring[]
}
interface ExcludeAreas {
polygons: Polygon[]
}
interface SearchArea {
polygons: Polygon[],
minimumSpeed: number,
maximumSpeed: number,
maximumSpeedLimit: number,
dragCoefficient: number,
allowMotorways: boolean,
allowTunnels: boolean,
allowAgainstOneway: boolean,
limitCornerSpeed: boolean
}
interface ContinueSearch {
}
export interface SearchAreaResultEntry {
nodeId: number,
latitude: number,
longitude: number,
longestRoute: number
}
interface SearchAreaResult {
remainingNodes: number,
searchResults: SearchAreaResultEntry[]
}
interface ErrorMessage {
error: string
}