Skip to content

Commit

Permalink
Don't consider a vehicle "invalid" when on a shuttle run (#546)
Browse files Browse the repository at this point in the history
Add an is_shuttle property to Vehicle.
  • Loading branch information
arkadyan authored Mar 31, 2020
1 parent d6cdfd9 commit b260612
Show file tree
Hide file tree
Showing 37 changed files with 132 additions and 52 deletions.
9 changes: 5 additions & 4 deletions assets/src/components/propertiesList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React from "react"
import { intersperseString } from "../helpers/array"
import { filterToAlphanumeric } from "../models/searchQuery"
import { formattedRunNumber } from "../models/shuttle"
import { isShuttle, isVehicle } from "../models/vehicle"
import { isVehicle } from "../models/vehicle"
import { Ghost, Vehicle, VehicleOrGhost } from "../realtime"
import { formattedTime, formattedTimeDiff, now } from "../util/dateTime"

Expand All @@ -29,9 +29,10 @@ const vehicleProperties = (vehicle: Vehicle): Property[] => {
return [
{
label: "Run",
value: isShuttle(vehicle)
? formattedRunNumber(vehicle)
: runId || "Not Available",
value:
isVehicle(vehicle) && vehicle.isShuttle
? formattedRunNumber(vehicle)
: runId || "Not Available",
},
{
label: "Vehicle",
Expand Down
8 changes: 2 additions & 6 deletions assets/src/components/propertiesPanel/header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,7 @@ import {
LadderDirections,
VehicleDirection,
} from "../../models/ladderDirection"
import {
isShuttle,
isVehicle,
shouldShowHeadwayDiagram,
} from "../../models/vehicle"
import { isVehicle, shouldShowHeadwayDiagram } from "../../models/vehicle"
import {
drawnStatus,
humanReadableScheduleAdherence,
Expand Down Expand Up @@ -123,7 +119,7 @@ const Header = ({ vehicle, route }: Props) => {
<HeadwayTarget vehicle={vehicle} />
) : (
isVehicle(vehicle) &&
!isShuttle(vehicle) && <ScheduleAdherence vehicle={vehicle} />
!vehicle.isShuttle && <ScheduleAdherence vehicle={vehicle} />
)}
</div>
<CloseButton onClick={hideMe} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React, { useState } from "react"
import useInterval from "../../hooks/useInterval"
import { useTripShape } from "../../hooks/useShapes"
import { hasBlockWaiver } from "../../models/blockWaiver"
import { isShuttle, shouldShowHeadwayDiagram } from "../../models/vehicle"
import { shouldShowHeadwayDiagram } from "../../models/vehicle"
import { DataDiscrepancy, Vehicle } from "../../realtime"
import { Route, Shape } from "../../schedule"
import Map from "../map"
Expand Down Expand Up @@ -56,7 +56,7 @@ const Location = ({ vehicle }: { vehicle: Vehicle }) => {
<div className="m-vehicle-properties-panel__location">
<div className="m-properties-list__property-label">Next Stop</div>
<div className="m-properties-list__property-value">
{isOffCourse || isShuttle(vehicle) ? (
{isOffCourse || vehicle.isShuttle ? (
<NotAvailable />
) : (
<>{stopStatus.stopName}</>
Expand Down
4 changes: 2 additions & 2 deletions assets/src/components/routeVariantName.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import React from "react"
import { isShuttle, isVehicle } from "../models/vehicle"
import { isVehicle } from "../models/vehicle"
import { VehicleOrGhost } from "../realtime"

export const RouteVariantName = ({ vehicle }: { vehicle: VehicleOrGhost }) => {
if (isVehicle(vehicle) && isShuttle(vehicle)) {
if (isVehicle(vehicle) && vehicle.isShuttle) {
return <div className="m-route-variant-name">Shuttle</div>
}

Expand Down
3 changes: 0 additions & 3 deletions assets/src/models/vehicle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@ export const isGhost = (
export const isLateVehicleIndicator = ({ id }: Ghost): boolean =>
id.startsWith("ghost-incoming-")

export const isShuttle = (vehicle: Vehicle): boolean =>
(vehicle.runId || "").startsWith("999")

export const isRecentlyLoggedOn = (vehicleOrGhost: VehicleOrGhost): boolean => {
if (isGhost(vehicleOrGhost) || !vehicleOrGhost.operatorLogonTime) {
return false
Expand Down
2 changes: 2 additions & 0 deletions assets/src/models/vehicleData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ export interface VehicleData {
previous_vehicle_id: string
schedule_adherence_secs: number
scheduled_headway_secs: number
is_shuttle: boolean
is_off_course: boolean
layover_departure_time: number | null
block_is_active: boolean
Expand Down Expand Up @@ -136,6 +137,7 @@ export const vehicleFromData = (vehicleData: VehicleData): Vehicle => ({
previousVehicleId: vehicleData.previous_vehicle_id,
scheduleAdherenceSecs: vehicleData.schedule_adherence_secs,
scheduledHeadwaySecs: vehicleData.scheduled_headway_secs,
isShuttle: vehicleData.is_shuttle,
isOffCourse: vehicleData.is_off_course,
layoverDepartureTime: vehicleData.layover_departure_time,
blockIsActive: vehicleData.block_is_active,
Expand Down
4 changes: 2 additions & 2 deletions assets/src/models/vehicleStatus.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import featureIsEnabled from "../laboratoryFeatures"
import { Vehicle, VehicleOrGhost } from "../realtime.d"
import { isGhost, isShuttle } from "./vehicle"
import { isGhost, isVehicle } from "./vehicle"

/** Where a vehicle is relative to its schedule.
* Swiftly assigns this to all vehicles.
Expand Down Expand Up @@ -39,7 +39,7 @@ export const drawnStatus = (vehicleOrGhost: VehicleOrGhost): DrawnStatus => {
}
const vehicle = vehicleOrGhost

if (isShuttle(vehicle)) {
if (isVehicle(vehicle) && vehicle.isShuttle) {
return "plain"
}

Expand Down
1 change: 1 addition & 0 deletions assets/src/realtime.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ export interface Vehicle {
previousVehicleId: string
scheduleAdherenceSecs: number
scheduledHeadwaySecs: number
isShuttle: boolean
isOffCourse: boolean
layoverDepartureTime: number | null
blockIsActive: boolean
Expand Down
4 changes: 2 additions & 2 deletions assets/src/settings.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { isShuttle, isVehicle } from "./models/vehicle"
import { isVehicle } from "./models/vehicle"
import { VehicleOrGhost } from "./realtime"

export enum VehicleLabelSetting {
Expand All @@ -20,6 +20,6 @@ export const vehicleLabelSetting = (
settings: Settings,
vehicle: VehicleOrGhost
): VehicleLabelSetting =>
isVehicle(vehicle) && isShuttle(vehicle)
isVehicle(vehicle) && vehicle.isShuttle
? settings.shuttleVehicleLabel
: settings.ladderVehicleLabel
1 change: 1 addition & 0 deletions assets/tests/components/incomingBox.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ describe("IncomingBox", () => {
previousVehicleId: "y0620",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 420,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: 1576091880,
blockIsActive: true,
Expand Down
13 changes: 13 additions & 0 deletions assets/tests/components/ladder.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ describe("ladder", () => {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: true,
Expand Down Expand Up @@ -89,6 +90,7 @@ describe("ladder", () => {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: true,
Expand Down Expand Up @@ -140,6 +142,7 @@ describe("ladder", () => {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: true,
Expand Down Expand Up @@ -241,6 +244,7 @@ describe("ladder", () => {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: false,
Expand Down Expand Up @@ -280,6 +284,7 @@ describe("ladder", () => {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: true,
Expand Down Expand Up @@ -355,6 +360,7 @@ describe("ladder", () => {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: true,
Expand Down Expand Up @@ -429,6 +435,7 @@ describe("ladder", () => {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: true,
Expand Down Expand Up @@ -468,6 +475,7 @@ describe("ladder", () => {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: true,
Expand Down Expand Up @@ -568,6 +576,7 @@ describe("ladder", () => {
previousVehicleId: "",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: true,
Expand Down Expand Up @@ -652,6 +661,7 @@ describe("ladder", () => {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: true,
Expand Down Expand Up @@ -742,6 +752,7 @@ describe("ladder", () => {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: true,
Expand Down Expand Up @@ -805,6 +816,7 @@ describe("ladder", () => {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: true,
Expand Down Expand Up @@ -874,6 +886,7 @@ describe("ladder", () => {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: true,
layoverDepartureTime: null,
blockIsActive: true,
Expand Down
2 changes: 2 additions & 0 deletions assets/tests/components/layoverBox.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ const vehicles: Vehicle[] = [
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: 1000002,
blockIsActive: true,
Expand Down Expand Up @@ -72,6 +73,7 @@ const vehicles: Vehicle[] = [
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: 1000001,
blockIsActive: true,
Expand Down
1 change: 1 addition & 0 deletions assets/tests/components/map.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ const vehicle: Vehicle = {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: false,
Expand Down
1 change: 1 addition & 0 deletions assets/tests/components/propertiesList.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ const vehicle: Vehicle = {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: false,
Expand Down
1 change: 1 addition & 0 deletions assets/tests/components/propertiesPanel.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ const vehicle: Vehicle = {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: false,
Expand Down
3 changes: 2 additions & 1 deletion assets/tests/components/propertiesPanel/header.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ const vehicle: Vehicle = {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: false,
Expand Down Expand Up @@ -145,7 +146,7 @@ describe("Header", () => {
test("renders for a shuttle", () => {
const shuttleVehicle: Vehicle = {
...vehicle,
runId: "999-0555",
isShuttle: true,
}

const tree = renderer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ const vehicle: Vehicle = {
previousVehicleId: "y1750",
scheduleAdherenceSecs: -305,
scheduledHeadwaySecs: 480,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: true,
Expand Down Expand Up @@ -104,6 +105,7 @@ describe("HeadwayDiagram", () => {
previousVehicleId: "y1798",
scheduleAdherenceSecs: 408,
scheduledHeadwaySecs: 540,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: true,
Expand Down Expand Up @@ -161,6 +163,7 @@ describe("HeadwayDiagram", () => {
previousVehicleId: "y1894",
scheduleAdherenceSecs: 313,
scheduledHeadwaySecs: 600,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ const vehicle: Vehicle = {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: false,
Expand Down Expand Up @@ -148,6 +149,7 @@ describe("VehiclePropertiesPanel", () => {
const shuttleVehicle: Vehicle = {
...vehicle,
runId: "999-0555",
isShuttle: true,
}

const tree = renderer
Expand Down
3 changes: 3 additions & 0 deletions assets/tests/components/routeLadder.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ const vehicles: Vehicle[] = [
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: true,
Expand Down Expand Up @@ -84,6 +85,7 @@ const vehicles: Vehicle[] = [
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: true,
Expand Down Expand Up @@ -382,6 +384,7 @@ describe("routeLadder", () => {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: true,
Expand Down
3 changes: 2 additions & 1 deletion assets/tests/components/routeVariantName.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ const vehicle: Vehicle = {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: false,
Expand Down Expand Up @@ -91,7 +92,7 @@ describe("RouteVariantName", () => {
test("renders a static label for a shuttle", () => {
const testVehicle: Vehicle = {
...vehicle,
runId: "999-0604",
isShuttle: true,
}

const wrapper = shallow(<RouteVariantName vehicle={testVehicle} />)
Expand Down
1 change: 1 addition & 0 deletions assets/tests/components/searchPage.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ const vehicle: Vehicle = {
previousVehicleId: "v2",
scheduleAdherenceSecs: 0,
scheduledHeadwaySecs: 120,
isShuttle: false,
isOffCourse: false,
layoverDepartureTime: null,
blockIsActive: false,
Expand Down
Loading

0 comments on commit b260612

Please sign in to comment.