From 467c5abec67aa8b2f7930f38bbf75c7a9fa35cdf Mon Sep 17 00:00:00 2001
From: Glenn Vorhes <gavorhes@wisc.edu>
Date: Thu, 21 Jun 2018 14:45:27 -0500
Subject: [PATCH] add interface for callback

---
 dist/api/stn.d.ts   | 30 +++++++++++++++++++++++++++---
 dist/api/stn.js.map |  2 +-
 src/api/stn.ts      | 36 +++++++++++++++++++++++++++++++-----
 3 files changed, 59 insertions(+), 9 deletions(-)

diff --git a/dist/api/stn.d.ts b/dist/api/stn.d.ts
index 5cca8f9..db8c7fc 100644
--- a/dist/api/stn.d.ts
+++ b/dist/api/stn.d.ts
@@ -12,7 +12,7 @@ export interface iGeoFeature {
     geometry: Object;
     properties: Object;
 }
-export interface snappedPoint {
+export interface iSnappedPoint {
     type: string;
     geometry: {
         type: string;
@@ -35,6 +35,27 @@ export interface snappedPoint {
         refSiteFromId: number;
         refSiteToId: number;
         routeIds: number[];
+        year: number;
+    };
+}
+export interface iStnSegment {
+    type: string;
+    geometry: {
+        type: string;
+        coordinates: Array<number[]>;
+    };
+    properties: {
+        cumtMilgEnd: number;
+        cumtMilgStart: number;
+        offsetMiEnd: number;
+        offsetMiStart: number;
+        offsetPcntEnd: number;
+        offsetPcntStart: number;
+        rdwyLinkIdEnd: number;
+        rdwyLinkIdStart: number;
+        rdwyLinkIds: number[];
+        rdwyRteId: number;
+        year: number;
     };
 }
 export interface _iGeoJson {
@@ -48,7 +69,10 @@ export interface _iGeoJson {
     features: any[];
 }
 export interface iGeoJsonSnappedPoint extends _iGeoJson {
-    features: snappedPoint[];
+    features: iSnappedPoint[];
+}
+export interface iGeoJsonStnSegment extends _iGeoJson {
+    features: iStnSegment[];
 }
 /**
  *
@@ -83,4 +107,4 @@ export declare function getSnappedPoint(yr: number, routeId: number, lon: number
  * @param {(d) => any} callback
  * @param {(e: iError) => any} error
  */
-export declare function getStnSegment(yr: number, routeId: number, lonStart: number, latStart: number, lonEnd: number, latEnd: number, searchDistance?: number, callback?: (d) => any, error?: (e: iError) => any): void;
+export declare function getStnSegment(yr: number, routeId: number, lonStart: number, latStart: number, lonEnd: number, latEnd: number, searchDistance?: number, callback?: (d: iGeoJsonStnSegment) => any, error?: (e: iError) => any): void;
diff --git a/dist/api/stn.js.map b/dist/api/stn.js.map
index f0b2aea..0ed43b5 100644
--- a/dist/api/stn.js.map
+++ b/dist/api/stn.js.map
@@ -1 +1 @@
-{"version":3,"file":"stn.js","sourceRoot":"","sources":["../../src/api/stn.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Created by glenn on 6/13/2017.\r\n */\r\n\r\nimport * as ajx from './axios';\r\nimport {apiRoot} from './host';\r\n\r\nexport const stnApiUrl = apiRoot + '/stn';\r\n\r\nfunction _abortHelper(x: XMLHttpRequest) {\r\n    if (x && x['abort']) {\r\n        x.abort();\r\n    }\r\n}\r\n\r\nexport interface iError {\r\n    error?: string;\r\n}\r\n\r\nexport interface iRoutes extends iError {\r\n    routes: { [s: string]: number }\r\n}\r\n\r\nexport interface iGeoFeature {\r\n    type: string;\r\n    geometry: Object;\r\n    properties: Object;\r\n}\r\n\r\nexport interface snappedPoint {\r\n    type: string;\r\n    geometry: {\r\n        type: string;\r\n        coordinates: [number, number]\r\n    },\r\n    properties: {\r\n        cumtMilg: number;\r\n        dtLinkCurr: string;\r\n        dtOpnTrfc: string;\r\n        dtTrxHstl: string;\r\n        editIndc: number;\r\n        lcmCkotTxnId: number;\r\n        lcmDtHstl: number;\r\n        lcmDtTxnCurr: string;\r\n        lcmFromToDis: number;\r\n        lcmStus: number;\r\n        lnkOffsetMi: number;\r\n        lnkOffsetPcnt: number;\r\n        rdwyLinkId: number;\r\n        refSiteFromId: number;\r\n        refSiteToId: number;\r\n        routeIds: number[]\r\n    }\r\n}\r\n\r\nexport interface _iGeoJson{\r\n    type: string;\r\n    crs: {\r\n        type: string;\r\n        properties: {\r\n            name: string;\r\n        }\r\n    };\r\n    features: any[];\r\n}\r\n\r\nexport interface iGeoJsonSnappedPoint extends _iGeoJson{\r\n    features: snappedPoint[];\r\n}\r\n\r\n\r\n/**\r\n *\r\n * @param {number} yr\r\n * @param {number} lon\r\n * @param {number} lat\r\n * @param {number} searchDistance\r\n * @param {(d: iRoutes) => any} callback\r\n * @param {(e: iError) => any} error\r\n */\r\nexport function getRoutes(yr: number,\r\n                          lon: number,\r\n                          lat: number,\r\n                          searchDistance: number = 200,\r\n                          callback: (d: iRoutes) => any = (d) => {\r\n                              console.log(d);\r\n                          },\r\n                          error: (e: iError) => any = (e) => {\r\n                              console.log(e);\r\n                          }) {\r\n\r\n    ajx.get(stnApiUrl + '/routes', (d: iRoutes) => {\r\n            if (d.error) {\r\n                error(d)\r\n            } else {\r\n                callback(d)\r\n            }\r\n\r\n        },\r\n        {\r\n            year: yr,\r\n            lon: lon,\r\n            lat: lat,\r\n            distance: searchDistance\r\n        },\r\n        error\r\n    );\r\n}\r\n\r\n/**\r\n *\r\n * @param {number} yr\r\n * @param {number} routeId\r\n * @param {number} lon\r\n * @param {number} lat\r\n * @param {number} searchDistance\r\n * @param {(d) => any} callback\r\n * @param {(e: iError) => any} error\r\n */\r\nexport function getSnappedPoint(yr: number,\r\n                                routeId: number,\r\n                                lon: number,\r\n                                lat: number,\r\n                                searchDistance: number = 200,\r\n                                callback: (d: iGeoJsonSnappedPoint) => any = (d: iGeoJsonSnappedPoint) => {\r\n                                    console.log(d);\r\n                                },\r\n                                error: (e: iError) => any = (e) => {\r\n                                    console.log(e);\r\n                                }) {\r\n\r\n    ajx.get(stnApiUrl + '/snapped', (d: iGeoJsonSnappedPoint) => {\r\n            if (d['error']) {\r\n                error(d)\r\n            } else {\r\n                callback(d)\r\n            }\r\n        },\r\n        {\r\n            year: yr,\r\n            route: routeId,\r\n            lon: lon,\r\n            lat: lat,\r\n            distance: searchDistance\r\n        },\r\n        error\r\n    );\r\n}\r\n\r\n/**\r\n *\r\n * @param {number} yr\r\n * @param {number} routeId\r\n * @param {number} lonStart\r\n * @param {number} latStart\r\n * @param {number} lonEnd\r\n * @param {number} latEnd\r\n * @param {number} searchDistance\r\n * @param {(d) => any} callback\r\n * @param {(e: iError) => any} error\r\n */\r\nexport function getStnSegment(yr: number,\r\n                              routeId: number,\r\n                              lonStart: number,\r\n                              latStart: number,\r\n                              lonEnd: number,\r\n                              latEnd: number,\r\n                              searchDistance: number = 200,\r\n                              callback: (d) => any = (d) => {\r\n                                  console.log(d);\r\n                              },\r\n                              error: (e: iError) => any = (e) => {\r\n                                  console.log(e);\r\n                              }) {\r\n\r\n    ajx.get(stnApiUrl + '/segment', (d) => {\r\n            if (d['error']) {\r\n                error(d)\r\n            } else {\r\n                callback(d)\r\n            }\r\n        },\r\n        {\r\n            year: yr,\r\n            route: routeId,\r\n            lonStart: lonStart,\r\n            latStart: latStart,\r\n            lonEnd: lonEnd,\r\n            latEnd: latEnd,\r\n            distance: searchDistance\r\n        },\r\n        error\r\n    );\r\n}\r\n"]}
\ No newline at end of file
+{"version":3,"file":"stn.js","sourceRoot":"","sources":["../../src/api/stn.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Created by glenn on 6/13/2017.\r\n */\r\n\r\nimport * as ajx from './axios';\r\nimport {apiRoot} from './host';\r\n\r\nexport const stnApiUrl = apiRoot + '/stn';\r\n\r\nfunction _abortHelper(x: XMLHttpRequest) {\r\n    if (x && x['abort']) {\r\n        x.abort();\r\n    }\r\n}\r\n\r\nexport interface iError {\r\n    error?: string;\r\n}\r\n\r\nexport interface iRoutes extends iError {\r\n    routes: { [s: string]: number }\r\n}\r\n\r\nexport interface iGeoFeature {\r\n    type: string;\r\n    geometry: Object;\r\n    properties: Object;\r\n}\r\n\r\nexport interface iSnappedPoint {\r\n    type: string;\r\n    geometry: {\r\n        type: string;\r\n        coordinates: [number, number]\r\n    },\r\n    properties: {\r\n        cumtMilg: number;\r\n        dtLinkCurr: string;\r\n        dtOpnTrfc: string;\r\n        dtTrxHstl: string;\r\n        editIndc: number;\r\n        lcmCkotTxnId: number;\r\n        lcmDtHstl: number;\r\n        lcmDtTxnCurr: string;\r\n        lcmFromToDis: number;\r\n        lcmStus: number;\r\n        lnkOffsetMi: number;\r\n        lnkOffsetPcnt: number;\r\n        rdwyLinkId: number;\r\n        refSiteFromId: number;\r\n        refSiteToId: number;\r\n        routeIds: number[];\r\n        year: number;\r\n    }\r\n}\r\n\r\nexport interface iStnSegment {\r\n    type: string;\r\n    geometry: {\r\n        type: string;\r\n        coordinates: Array<number[]>\r\n    },\r\n    properties: {\r\n        cumtMilgEnd: number;\r\n        cumtMilgStart: number;\r\n        offsetMiEnd: number;\r\n        offsetMiStart: number;\r\n        offsetPcntEnd: number;\r\n        offsetPcntStart: number;\r\n        rdwyLinkIdEnd: number;\r\n        rdwyLinkIdStart: number;\r\n        rdwyLinkIds: number[];\r\n        rdwyRteId: number;\r\n        year: number;\r\n    }\r\n}\r\n\r\nexport interface _iGeoJson{\r\n    type: string;\r\n    crs: {\r\n        type: string;\r\n        properties: {\r\n            name: string;\r\n        }\r\n    };\r\n    features: any[];\r\n}\r\n\r\nexport interface iGeoJsonSnappedPoint extends _iGeoJson{\r\n    features: iSnappedPoint[];\r\n}\r\n\r\nexport interface iGeoJsonStnSegment extends _iGeoJson{\r\n    features: iStnSegment[];\r\n}\r\n\r\n\r\n/**\r\n *\r\n * @param {number} yr\r\n * @param {number} lon\r\n * @param {number} lat\r\n * @param {number} searchDistance\r\n * @param {(d: iRoutes) => any} callback\r\n * @param {(e: iError) => any} error\r\n */\r\nexport function getRoutes(yr: number,\r\n                          lon: number,\r\n                          lat: number,\r\n                          searchDistance: number = 200,\r\n                          callback: (d: iRoutes) => any = (d) => {\r\n                              console.log(d);\r\n                          },\r\n                          error: (e: iError) => any = (e) => {\r\n                              console.log(e);\r\n                          }) {\r\n\r\n    ajx.get(stnApiUrl + '/routes', (d: iRoutes) => {\r\n            if (d.error) {\r\n                error(d)\r\n            } else {\r\n                callback(d)\r\n            }\r\n\r\n        },\r\n        {\r\n            year: yr,\r\n            lon: lon,\r\n            lat: lat,\r\n            distance: searchDistance\r\n        },\r\n        error\r\n    );\r\n}\r\n\r\n/**\r\n *\r\n * @param {number} yr\r\n * @param {number} routeId\r\n * @param {number} lon\r\n * @param {number} lat\r\n * @param {number} searchDistance\r\n * @param {(d) => any} callback\r\n * @param {(e: iError) => any} error\r\n */\r\nexport function getSnappedPoint(yr: number,\r\n                                routeId: number,\r\n                                lon: number,\r\n                                lat: number,\r\n                                searchDistance: number = 200,\r\n                                callback: (d: iGeoJsonSnappedPoint) => any = (d: iGeoJsonSnappedPoint) => {\r\n                                    console.log(d);\r\n                                },\r\n                                error: (e: iError) => any = (e) => {\r\n                                    console.log(e);\r\n                                }) {\r\n\r\n    ajx.get(stnApiUrl + '/snapped', (d: iGeoJsonSnappedPoint) => {\r\n            if (d['error']) {\r\n                error(d)\r\n            } else {\r\n                callback(d)\r\n            }\r\n        },\r\n        {\r\n            year: yr,\r\n            route: routeId,\r\n            lon: lon,\r\n            lat: lat,\r\n            distance: searchDistance\r\n        },\r\n        error\r\n    );\r\n}\r\n\r\n/**\r\n *\r\n * @param {number} yr\r\n * @param {number} routeId\r\n * @param {number} lonStart\r\n * @param {number} latStart\r\n * @param {number} lonEnd\r\n * @param {number} latEnd\r\n * @param {number} searchDistance\r\n * @param {(d) => any} callback\r\n * @param {(e: iError) => any} error\r\n */\r\nexport function getStnSegment(yr: number,\r\n                              routeId: number,\r\n                              lonStart: number,\r\n                              latStart: number,\r\n                              lonEnd: number,\r\n                              latEnd: number,\r\n                              searchDistance: number = 200,\r\n                              callback: (d: iGeoJsonStnSegment) => any = (d: iGeoJsonStnSegment) => {\r\n                                  console.log(d);\r\n                              },\r\n                              error: (e: iError) => any = (e) => {\r\n                                  console.log(e);\r\n                              }) {\r\n\r\n    ajx.get(stnApiUrl + '/segment', (d: iGeoJsonStnSegment) => {\r\n            if (d['error']) {\r\n                error(d)\r\n            } else {\r\n                callback(d)\r\n            }\r\n        },\r\n        {\r\n            year: yr,\r\n            route: routeId,\r\n            lonStart: lonStart,\r\n            latStart: latStart,\r\n            lonEnd: lonEnd,\r\n            latEnd: latEnd,\r\n            distance: searchDistance\r\n        },\r\n        error\r\n    );\r\n}\r\n"]}
\ No newline at end of file
diff --git a/src/api/stn.ts b/src/api/stn.ts
index 75e7c60..66d1259 100644
--- a/src/api/stn.ts
+++ b/src/api/stn.ts
@@ -27,7 +27,7 @@ export interface iGeoFeature {
     properties: Object;
 }
 
-export interface snappedPoint {
+export interface iSnappedPoint {
     type: string;
     geometry: {
         type: string;
@@ -49,7 +49,29 @@ export interface snappedPoint {
         rdwyLinkId: number;
         refSiteFromId: number;
         refSiteToId: number;
-        routeIds: number[]
+        routeIds: number[];
+        year: number;
+    }
+}
+
+export interface iStnSegment {
+    type: string;
+    geometry: {
+        type: string;
+        coordinates: Array<number[]>
+    },
+    properties: {
+        cumtMilgEnd: number;
+        cumtMilgStart: number;
+        offsetMiEnd: number;
+        offsetMiStart: number;
+        offsetPcntEnd: number;
+        offsetPcntStart: number;
+        rdwyLinkIdEnd: number;
+        rdwyLinkIdStart: number;
+        rdwyLinkIds: number[];
+        rdwyRteId: number;
+        year: number;
     }
 }
 
@@ -65,7 +87,11 @@ export interface _iGeoJson{
 }
 
 export interface iGeoJsonSnappedPoint extends _iGeoJson{
-    features: snappedPoint[];
+    features: iSnappedPoint[];
+}
+
+export interface iGeoJsonStnSegment extends _iGeoJson{
+    features: iStnSegment[];
 }
 
 
@@ -166,14 +192,14 @@ export function getStnSegment(yr: number,
                               lonEnd: number,
                               latEnd: number,
                               searchDistance: number = 200,
-                              callback: (d) => any = (d) => {
+                              callback: (d: iGeoJsonStnSegment) => any = (d: iGeoJsonStnSegment) => {
                                   console.log(d);
                               },
                               error: (e: iError) => any = (e) => {
                                   console.log(e);
                               }) {
 
-    ajx.get(stnApiUrl + '/segment', (d) => {
+    ajx.get(stnApiUrl + '/segment', (d: iGeoJsonStnSegment) => {
             if (d['error']) {
                 error(d)
             } else {
-- 
GitLab