- Add walking transfers
- Pick route with minimal walking distance, instead of stop count
- Turned `shared` into the new server, client no longer relies on `server`
- Prepare to send full route data (instead of string) to the client
The client first requests stops from the TS server (`0.0.0.0:80`), then the path from the Dart server (`localhost:8001`). It will be trivial to move the TS logic to the Dart server since the Dart server is the one that parsed all that data, and it's anyway in a `JSON` file.
There is a `server/GET_ROUTES.json` file, but it's not needed. I just included it for easier debugging. `server/GET_STOPS.json` includes both the stops and the routes, and the client does some (inefficient) work to re-organize it.
The Dart server uses a basic A* implementation to sort find direct routes and routes with transfers. The A* logic is in `src/shared/lib/src/graph/graph.dart`. This file defines the state itself, and `package:a_star` on Pub.dev (mine) defines the algorithm. `src/shared/bin/path.dart` is the whole of the Dart server.
TODO:
- add unit tests
- this PR breaks almost nothing, so there is duplicate work being done on the client and some unused logic
- return a structured path object for the client to use as it wants. This PR just sends a well-formatted string
Makes a new (dart) package called `shared`, which contains:
- the code needed to parse through OCCT and BC data
- any data definitions for types in that data (eg, stops)
- shared utils
The client will then import types from this package. This PR also re-generates the GET_STOPS json file to include OCCT
- download all stops on startup, sort by route
- refactored lat/long textboxes into custom widget
- added a button to show the stops list
- sidebar to filter which routes can show
- clicking on a stop or the map adds that marker to the start/end
* Start script to generate BC data
* Finished BC data
* moved file slightly to account for future addition of OCCT and added /stops endpoint to server
---------
Co-authored-by: Pagwin <git@pagwin.xyz>
* Fixed base API
* Better parsing of the actual server data
* Removed deno.lock from the repo
* Fixed server responses and added usingDocker
* Fix uris with usingDocker
* Fixed polyline logic to show entire route
* Created default project
* Added client to .vscode/launch.json
* Ignore .vscode/settings.json
* Some data scraping
* Client skeleton
* Client data types and fromJson() functions
* Final touches on JSON
* Added ApiService
* ApiService changes
* Prototype for stops
* ViewModel and UI
* Basic client UI