stufffffffff

This commit is contained in:
2026-02-16 22:44:51 -07:00
parent cc3ec73be7
commit ff3c151e9d
3 changed files with 38 additions and 12 deletions
+19 -6
View File
@@ -73,13 +73,26 @@ func getStationForVehicle(vehicle *pb.VehiclePosition) *pb.VehicleFeed_Station {
return nearestStop return nearestStop
} }
func getVehicles() ([]*pb.VehiclePosition, *pb.FeedHeader, error) { func fetchVehicleFeed() ([]byte, error) {
resp, err := http.Get("https://apps.rideuta.com/tms/gtfs/Vehicle") if os.Getenv("PRETEND_FEED") == "true" {
if err != nil { return os.ReadFile("pretend-feed.bin")
return nil, nil, err } else {
} resp, err := http.Get("https://apps.rideuta.com/tms/gtfs/Vehicle")
if err != nil {
return nil, err
}
bytes, err := io.ReadAll(resp.Body) bytes, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}
return bytes, nil
}
}
func getVehicles() ([]*pb.VehiclePosition, *pb.FeedHeader, error) {
bytes, err := fetchVehicleFeed()
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
+7 -3
View File
@@ -51,18 +51,22 @@
} }
#banner { #banner {
grid-column-start: 1; grid-column: span 2;
grid-column-end: 3;
background-color: #ef4444; background-color: #ef4444;
color: white; color: white;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
height: 40px;
} }
#banner.hidden { #banner.hidden {
display: none; display: none;
} }
#map, #sidebar {
grid-row: 2 / 3;
}
</style> </style>
</head> </head>
@@ -71,7 +75,7 @@
style=" style="
display: grid; display: grid;
grid-template-columns: auto 300px; grid-template-columns: auto 300px;
grid-template-rows: 40px 1fr; grid-template-rows: auto 1fr;
height: 100vh; height: 100vh;
" "
> >
+12 -3
View File
@@ -85,6 +85,8 @@ protobuf.load("/schema.proto").then((root) => {
document.getElementById("count-frontrunner").innerText = totals.frontrunner.toString() document.getElementById("count-frontrunner").innerText = totals.frontrunner.toString()
} }
let bannerVisible = false
async function reload() { async function reload() {
const bin = await fetch("/api").then((r) => r.arrayBuffer()); const bin = await fetch("/api").then((r) => r.arrayBuffer());
const { vehicles, info } = root const { vehicles, info } = root
@@ -96,10 +98,17 @@ protobuf.load("/schema.proto").then((root) => {
populateTotals(vehicles) populateTotals(vehicles)
if (vehicles.length == 0) { if (vehicles.length == 0) {
document.getElementById("banner").classList.remove("hidden") if (!bannerVisible) {
map.invalidateSize() document.getElementById("banner").classList.remove("hidden")
bannerVisible = true
map.invalidateSize()
}
} else { } else {
document.getElementById("banner").classList.add("hidden") if (bannerVisible) {
document.getElementById("banner").classList.add("hidden")
bannerVisible = false
map.invalidateSize()
}
} }
// render vehicles on map // render vehicles on map