From e2ef0b42dd8c9a6e1154271f47b69df8dceaab96 Mon Sep 17 00:00:00 2001 From: Cora Grant Date: Tue, 29 Oct 2024 17:04:23 -0400 Subject: [PATCH] chore: remove V1 GL E-ink screen type We have no remaining screens of this type in the wild. --- assets/css/bus_eink.scss | 30 ----- assets/css/eink/base_route_pill.scss | 9 -- assets/css/eink/bus/header.scss | 73 ---------- assets/css/eink/bus/inline_alert.scss | 32 ----- assets/css/eink/green_line/departures.scss | 89 ------------- .../eink/green_line/double/departures.scss | 3 - .../css/eink/green_line/double/line_map.scss | 9 -- assets/css/eink/green_line/header.scss | 90 ------------- assets/css/eink/green_line/inline_alert.scss | 27 ---- .../eink/green_line/single/departures.scss | 3 - .../css/eink/green_line/single/line_map.scss | 5 - assets/css/eink/loading.scss | 88 ------------ assets/css/gl_eink_single.scss | 29 ---- assets/src/apps/gl_eink_single.tsx | 38 ------ assets/src/components/admin/admin_tables.tsx | 2 +- assets/webpack.config.js | 1 - lib/screens/alerts/alert.ex | 95 ------------- lib/screens/gl_screen_data.ex | 122 ----------------- lib/screens/screen_data.ex | 1 - .../controllers/screen_controller.ex | 2 +- test/fixtures/config.json | 125 ------------------ 21 files changed, 2 insertions(+), 871 deletions(-) delete mode 100644 assets/css/bus_eink.scss delete mode 100644 assets/css/eink/base_route_pill.scss delete mode 100644 assets/css/eink/bus/header.scss delete mode 100644 assets/css/eink/bus/inline_alert.scss delete mode 100644 assets/css/eink/green_line/departures.scss delete mode 100644 assets/css/eink/green_line/double/departures.scss delete mode 100644 assets/css/eink/green_line/double/line_map.scss delete mode 100644 assets/css/eink/green_line/header.scss delete mode 100644 assets/css/eink/green_line/inline_alert.scss delete mode 100644 assets/css/eink/green_line/single/departures.scss delete mode 100644 assets/css/eink/green_line/single/line_map.scss delete mode 100644 assets/css/eink/loading.scss delete mode 100644 assets/css/gl_eink_single.scss delete mode 100644 assets/src/apps/gl_eink_single.tsx delete mode 100644 lib/screens/gl_screen_data.ex diff --git a/assets/css/bus_eink.scss b/assets/css/bus_eink.scss deleted file mode 100644 index 1ec245a6c..000000000 --- a/assets/css/bus_eink.scss +++ /dev/null @@ -1,30 +0,0 @@ -@import "https://rsms.me/inter/inter.css"; - -@import "fonts"; - -@import "base/base_departure_time"; -@import "base/base_departure_destination"; -@import "eink/base_route_pill"; -@import "eink/loading"; - -@import "connection_error"; -@import "departure_destination"; -@import "departure_crowding"; -@import "departure_group"; -@import "departure_route"; -@import "departure_time"; -@import "digital_bridge"; -@import "fare_info"; -@import "flex_zone"; -@import "full_screen_takeover"; -@import "global_alert"; -@import "eink/bus/header"; -@import "eink/bus/inline_alert"; -@import "nearby_connections"; -@import "screen_container"; -@import "screen_page"; -@import "takeover_alert"; - -body { - margin: 0; -} diff --git a/assets/css/eink/base_route_pill.scss b/assets/css/eink/base_route_pill.scss deleted file mode 100644 index af3071068..000000000 --- a/assets/css/eink/base_route_pill.scss +++ /dev/null @@ -1,9 +0,0 @@ -@import "../base/base_route_pill"; - -.base-route-pill__pill { - background: black; -} - -.base-route-pill__route-text { - color: white; -} diff --git a/assets/css/eink/bus/header.scss b/assets/css/eink/bus/header.scss deleted file mode 100644 index 32839dd89..000000000 --- a/assets/css/eink/bus/header.scss +++ /dev/null @@ -1,73 +0,0 @@ -.header { - position: relative; - height: 288px; - color: white; - background-color: black; -} - -.header__environment { - @include font--text--75bold; - - position: absolute; - top: 12px; - left: 40px; - font-size: 48px; - line-height: 48px; - color: #fff; - letter-spacing: 0; -} - -.header__time { - @include font--text--55regular; - - position: absolute; - top: 28px; - right: 40px; - font-size: 72px; - line-height: 72px; - color: #fff; - text-align: right; - letter-spacing: 0; -} - -.header__realtime-indicator { - @include font--text--55regular; - - position: absolute; - right: 40px; - bottom: 47px; - width: 240px; - height: 64px; - font-size: 24px; - line-height: 32px; - color: #fff; - text-align: right; - text-transform: uppercase; -} - -.header__realtime-indicator-icon { - width: 32px; - height: 32px; - margin-right: 8px; -} - -.header__stop-name { - @include font--display--75bold; - - position: absolute; - bottom: 38px; - left: 56px; - width: 820px; - color: #fff; - letter-spacing: 1px; -} - -.header__stop-name--small { - font-size: 72px; - line-height: 72px; -} - -.header__stop-name--large { - font-size: 96px; - line-height: 96px; -} diff --git a/assets/css/eink/bus/inline_alert.scss b/assets/css/eink/bus/inline_alert.scss deleted file mode 100644 index 9fad8f478..000000000 --- a/assets/css/eink/bus/inline_alert.scss +++ /dev/null @@ -1,32 +0,0 @@ -.inline-alert { - margin-right: 40px; - text-align: right; -} - -.inline-alert__badge { - display: inline-block; - padding-right: 16px; - padding-left: 16px; - color: white; - text-transform: uppercase; - background-color: black; - border-radius: 10px; - - @include font--text--55regular; -} - -.inline-alert__icon { - position: relative; - top: 3px; - display: inline-block; - width: 38px; - padding-right: 12px; -} - -.inline-alert__text { - display: inline-block; - padding-top: 12px; - padding-bottom: 12px; - font-size: 36px; - line-height: 36px; -} diff --git a/assets/css/eink/green_line/departures.scss b/assets/css/eink/green_line/departures.scss deleted file mode 100644 index 102116a8b..000000000 --- a/assets/css/eink/green_line/departures.scss +++ /dev/null @@ -1,89 +0,0 @@ -.departures { - display: inline-block; - width: 758px; - vertical-align: top; -} - -.departures__headway-message { - @include font--text--55regular; - - padding-top: 72px; - padding-right: 40px; - padding-bottom: 72px; - font-size: 72px; - color: #999; - text-align: right; -} - -.departures__headway-message--large { - @include font--display--75bold; - - font-size: 96px; - line-height: 96px; - color: #000; - letter-spacing: 1px; -} - -.departures__headway-message__subheading { - @include font--text--55regular; - - padding-right: 40px; - padding-bottom: 72px; - font-size: 56px; - color: #999; - text-align: right; -} - -.departures__headway-message__range { - white-space: nowrap; -} - -.departures__departure { - padding-top: 72px; - padding-right: 40px; - padding-bottom: 72px; - font-size: 336px; - text-align: right; - - & .base-departure-time__text { - line-height: 1em; - } - - & .base-departure-time__minutes { - line-height: 1em; - } - - & .base-departure-time__minutes-label { - line-height: 0.729em; - } - - & .base-departure-time__timestamp { - font-size: 0.5em; - } - - & .base-departure-time__ampm { - font-size: 0.365em; - } -} - -.departures__hairline { - width: 718px; - height: 2px; - background: #ccc; -} - -.departures__container { - position: relative; - height: 100%; -} - -.departures__delay-badge { - position: absolute; - right: 0; - bottom: 52px; -} - -.departures-list-psa { - position: relative; - z-index: 1; -} diff --git a/assets/css/eink/green_line/double/departures.scss b/assets/css/eink/green_line/double/departures.scss deleted file mode 100644 index 5dcb2fd9b..000000000 --- a/assets/css/eink/green_line/double/departures.scss +++ /dev/null @@ -1,3 +0,0 @@ -.departures { - height: 1312px; -} diff --git a/assets/css/eink/green_line/double/line_map.scss b/assets/css/eink/green_line/double/line_map.scss deleted file mode 100644 index 235401dff..000000000 --- a/assets/css/eink/green_line/double/line_map.scss +++ /dev/null @@ -1,9 +0,0 @@ -.line-map { - display: inline-block; - width: 442px; - height: 1312px; -} - -.line-map__svg { - position: absolute; -} diff --git a/assets/css/eink/green_line/header.scss b/assets/css/eink/green_line/header.scss deleted file mode 100644 index 10c92d559..000000000 --- a/assets/css/eink/green_line/header.scss +++ /dev/null @@ -1,90 +0,0 @@ -.header { - position: relative; - height: 288px; - color: white; - background-color: black; -} - -.header__environment { - @include font--text--75bold; - - position: absolute; - top: 12px; - left: 40px; - font-size: 48px; - line-height: 48px; - color: #fff; - letter-spacing: 0; -} - -.header__time { - @include font--text--55regular; - - position: absolute; - top: 28px; - right: 40px; - font-size: 72px; - line-height: 72px; - color: #fff; - text-align: right; - letter-spacing: 0; -} - -.header__realtime-indicator { - @include font--text--55regular; - - position: absolute; - right: 40px; - bottom: 47px; - width: 240px; - height: 64px; - font-size: 24px; - line-height: 32px; - color: #fff; - text-align: right; - text-transform: uppercase; -} - -.header__realtime-indicator-icon { - width: 32px; - height: 32px; - margin-right: 8px; -} - -.header__stop-container { - @include font--display--75bold; - - position: absolute; - bottom: 28px; - left: 40px; - width: 900px; - color: #fff; - letter-spacing: 1px; -} - -.header__stop-container-route { - display: inline-block; - margin-right: 24px; - vertical-align: middle; -} - -.header__stop-container-route-image { - display: inline; - width: 128px; - height: 128px; -} - -.header__stop-name { - display: inline-block; - vertical-align: middle; -} - -.header__stop-name--small { - font-size: 72px; - line-height: 72px; -} - -.header__stop-name--large { - font-size: 96px; - line-height: 96px; -} diff --git a/assets/css/eink/green_line/inline_alert.scss b/assets/css/eink/green_line/inline_alert.scss deleted file mode 100644 index dbceae6b7..000000000 --- a/assets/css/eink/green_line/inline_alert.scss +++ /dev/null @@ -1,27 +0,0 @@ -.inline-alert { - margin-right: 40px; - text-align: right; -} - -.inline-alert__badge { - @include font--text--55regular; - - padding: 12px 32px 12px 16px; - font-size: 40px; - color: white; - background-color: black; - border-radius: 16px; -} - -.inline-alert__emphasis { - @include font--text--75bold; -} - -.inline-alert__icon { - position: relative; - top: 12px; - width: 48px; - height: 52px; - margin-right: 24px; - margin-left: 12px; -} diff --git a/assets/css/eink/green_line/single/departures.scss b/assets/css/eink/green_line/single/departures.scss deleted file mode 100644 index 77190a31a..000000000 --- a/assets/css/eink/green_line/single/departures.scss +++ /dev/null @@ -1,3 +0,0 @@ -.departures { - height: 1134px; -} diff --git a/assets/css/eink/green_line/single/line_map.scss b/assets/css/eink/green_line/single/line_map.scss deleted file mode 100644 index 2a10f98b8..000000000 --- a/assets/css/eink/green_line/single/line_map.scss +++ /dev/null @@ -1,5 +0,0 @@ -.line-map { - display: inline-block; - width: 442px; - height: 1134px; -} diff --git a/assets/css/eink/loading.scss b/assets/css/eink/loading.scss deleted file mode 100644 index 048857ded..000000000 --- a/assets/css/eink/loading.scss +++ /dev/null @@ -1,88 +0,0 @@ -.page-load-no-data-container-top { - width: 1200px; - height: 1600px; - padding: 0; - margin: 0 auto; -} - -.page-load-no-data__header { - height: 288px; - background-color: #000; -} - -.page-load-no-data__logo-container { - display: inline-block; - width: 208px; - vertical-align: middle; -} - -.page-load-no-data__logo-image { - width: 128px; - height: 128px; - margin: 24px 40px 20px; -} - -.page-load-no-data__header-text-container { - display: inline-block; - width: 700px; - margin-top: 30px; - color: white; - vertical-align: middle; -} - -.page-load-no-data__header-text { - font-family: neue-haas-grotesk-display; - font-size: 88px; - font-weight: 700; - line-height: 88px; - color: #fff; - letter-spacing: 1px; -} - -.page-load-no-data__main-content__loading-icon-container { - width: 236px; - height: 236px; - margin-top: 155px; - margin-bottom: 56px; -} - -.page-load-no-data__main-content__loading-icon { - width: 100%; - height: 100%; - object-fit: contain; -} - -.page-load-no-data__main-content { - margin-left: 208px; -} - -.page-load-no-data__main-content__heading { - width: 810px; - margin-bottom: 64px; - font-family: Inter, sans-serif; - font-size: 104px; - font-weight: bold; - line-height: 112px; - color: #000; - letter-spacing: 0; -} - -.page-load-no-data__hairline { - width: 811px; - height: 2px; - content: ""; - background: #b9b8b6; - border-radius: 1px; -} - -.page-load-no-data__main-content__subheading { - width: 916px; - height: 184px; - margin-top: 47px; - font-family: Inter, sans-serif; - font-size: 72px; - font-weight: normal; - line-height: 92px; - color: #000; - letter-spacing: 0; -} diff --git a/assets/css/gl_eink_single.scss b/assets/css/gl_eink_single.scss deleted file mode 100644 index d956c973c..000000000 --- a/assets/css/gl_eink_single.scss +++ /dev/null @@ -1,29 +0,0 @@ -@import "https://rsms.me/inter/inter.css"; - -@import "fonts"; - -@import "base/base_departure_time"; - -@import "connection_error"; -@import "digital_bridge"; -@import "fare_info"; -@import "flex_zone"; -@import "full_screen_takeover"; -@import "global_alert"; -@import "eink/green_line/header"; -@import "eink/green_line/inline_alert"; -@import "nearby_connections"; -@import "screen_container"; -@import "screen_page"; - -@import "eink/green_line/departures"; - -@import "eink/green_line/single/line_map"; -@import "eink/green_line/single/departures"; -@import "takeover_inline_alert"; - -@import "eink/loading"; - -body { - margin: 0; -} diff --git a/assets/src/apps/gl_eink_single.tsx b/assets/src/apps/gl_eink_single.tsx deleted file mode 100644 index ee20e4635..000000000 --- a/assets/src/apps/gl_eink_single.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import initSentry from "Util/sentry"; -initSentry("gl_eink_single"); - -require("../../css/gl_eink_single.scss"); - -import React from "react"; -import ReactDOM from "react-dom"; -import { BrowserRouter as Router, Route, Switch } from "react-router-dom"; - -import ScreenContainer, { - ScreenLayout, -} from "Components/eink/green_line/single/screen_container"; - -import { - AuditScreenPage, - MultiScreenPage, - ScreenPage, -} from "Components/eink/screen_page"; - -const App = (): JSX.Element => { - return ( - - - - - - - - - - - - - - ); -}; - -ReactDOM.render(, document.getElementById("app")); diff --git a/assets/src/components/admin/admin_tables.tsx b/assets/src/components/admin/admin_tables.tsx index 0c0f01abf..447b5d8e4 100644 --- a/assets/src/components/admin/admin_tables.tsx +++ b/assets/src/components/admin/admin_tables.tsx @@ -73,7 +73,7 @@ const AllScreensTable = (): JSX.Element => { Cell: EditableSelect, Filter: SelectColumnFilter, filter: "includes", - FormCell: buildFormSelect(["gl_eink_single", "solari_eink"]), + FormCell: FormStaticCell, }, { Header: "Disabled", diff --git a/assets/webpack.config.js b/assets/webpack.config.js index 93f30bb9e..a378170a2 100644 --- a/assets/webpack.config.js +++ b/assets/webpack.config.js @@ -116,7 +116,6 @@ module.exports = (env, argv) => { ...common_export_body, entry: { polyfills: "./src/polyfills.js", - gl_eink_single: "./src/apps/gl_eink_single.tsx", solari: "./src/apps/solari.tsx", admin: "./src/apps/admin.tsx", bus_eink_v2: "./src/apps/v2/bus_eink.tsx", diff --git a/lib/screens/alerts/alert.ex b/lib/screens/alerts/alert.ex index f15c23740..9924cb2d3 100644 --- a/lib/screens/alerts/alert.ex +++ b/lib/screens/alerts/alert.ex @@ -301,79 +301,6 @@ defmodule Screens.Alerts.Alert do defp format_query_param(_), do: [] - # V1 only - defp sort_key(alert, stop_id) do - { - specificity(alert, stop_id), - -high_severity(alert), - -new_service_in_next_two_weeks(alert), - -happening_now_key(alert), - -new_info_in_last_two_weeks(alert), - effect_index(alert.effect), - alert.id - } - end - - # SPECIFICITY - # 0 if current stop - # 1 if whole route - # 2 if a different specific stop - # 3 if no stop or route IE - # V1 only - defp specificity(%{informed_entities: ies}, stop_id) do - ies - |> Enum.map(&ie_specificity(&1, stop_id)) - |> Enum.min() - end - - # V1 only - defp ie_specificity(ie, stop_id) do - case ie_target(ie) do - {:stop, target_stop_id} -> - if target_stop_id == stop_id, do: 0, else: 2 - - {:route, _route_id} -> - 1 - - :other -> - 3 - end - end - - # V1 only - defp ie_target(%{stop: stop_id}) do - {:stop, stop_id} - end - - defp ie_target(%{route: route_id}) do - {:route, route_id} - end - - defp ie_target(_) do - :other - end - - # HIGH SEVERITY - # severity >= 7 - # Note that we differentiate among severities which are at least 7 (same as dotcom) - # V1 only - def high_severity(%{severity: severity}) when severity >= 7 do - severity - end - - def high_severity(_), do: 0 - - def high_severity?(alert) do - high_severity(alert) > 0 - end - - # HAPPENING NOW - # defined as: some active period contains the current time - # V1 only - defp happening_now_key(alert) do - if happening_now?(alert), do: 1, else: 0 - end - # V1 & V2 def happening_now?(%{active_period: aps}, now \\ DateTime.utc_now()) do Enum.any?(aps, &in_active_period(&1, now)) @@ -461,15 +388,6 @@ defmodule Screens.Alerts.Alert do ### - # V1 only - defp inline?(%{effect: :delay}) do - true - end - - defp inline?(_) do - false - end - # V1 only def build_delay_map(alerts) do Enum.reduce(alerts, %{}, &delay_map_reducer/2) @@ -506,19 +424,6 @@ defmodule Screens.Alerts.Alert do [] end - ### - # V1 only (gl_eink) - def by_route_id(route_id, stop_id) do - {inline_alerts, global_alerts} = - [route_id: route_id] - |> fetch_or_empty_list() - |> Enum.split_with(&inline?/1) - - global_alert = Enum.min_by(global_alerts, &sort_key(&1, stop_id), fn -> nil end) - - {inline_alerts, global_alert} - end - @alert_cause_mapping %{ accident: "an accident", construction: "construction", diff --git a/lib/screens/gl_screen_data.ex b/lib/screens/gl_screen_data.ex deleted file mode 100644 index ab0d042ef..000000000 --- a/lib/screens/gl_screen_data.ex +++ /dev/null @@ -1,122 +0,0 @@ -defmodule Screens.GLScreenData do - @moduledoc false - - alias Screens.Alerts.Alert - alias Screens.Config.Cache - alias Screens.Departures.Departure - alias Screens.LogScreenData - alias ScreensConfig.Gl - - def by_screen_id(screen_id, is_screen) do - if Cache.mode_disabled?(:light_rail) do - %{ - force_reload: false, - success: false - } - else - by_enabled_screen_id(screen_id, is_screen) - end - end - - defp by_enabled_screen_id(screen_id, is_screen) do - %Gl{ - stop_id: stop_id, - route_id: route_id, - direction_id: direction_id, - headway_mode: headway_mode?, - platform_id: platform_id, - service_level: service_level - } = Cache.app_params(screen_id) - - {line_map_data, departures} = - get_line_map_data_and_departures(route_id, stop_id, direction_id, platform_id) - - destination = get_destination(route_id, direction_id) - - _ = LogScreenData.log_departures(screen_id, is_screen, departures) - - # If we are unable to fetch departures or destination, we want to show an error message on the screen. - with {:ok, departures} <- departures, - {:ok, destination} <- destination do - {inline_alerts, global_alert} = Alert.by_route_id(route_id, stop_id) - {psa_type, psa_url} = Screens.Psa.current_psa_for(screen_id) - - %{ - force_reload: false, - success: true, - # credo:disable-for-next-line Screens.Checks.UntestableDateTime - current_time: Screens.Util.format_time(DateTime.utc_now()), - stop_name: destination, - stop_id: stop_id, - route_id: route_id, - departures: format_departure_rows(departures), - global_alert: format_global_alert(global_alert), - inline_alert: format_inline_alert(inline_alerts), - nearby_departures: Screens.NearbyDepartures.by_screen_id(screen_id), - line_map: line_map_data, - headway: Screens.Headways.by_route_id(route_id, stop_id, direction_id, service_level), - service_level: service_level, - is_headway_mode: headway_mode?, - psa_type: psa_type, - psa_url: psa_url - } - else - :error -> - %{ - force_reload: false, - success: false - } - end - end - - @typep line_map_data :: map() | nil - @typep departures :: {:ok, list()} | :error - @spec get_line_map_data_and_departures(String.t(), String.t(), 0 | 1, String.t()) :: - {line_map_data(), departures()} - defp get_line_map_data_and_departures(route_id, stop_id, direction_id, platform_id) do - predictions = - Screens.Predictions.Prediction.fetch(%{ - direction_id: direction_id, - route_ids: [route_id], - stop_ids: [stop_id] - }) - - case predictions do - {:ok, predictions} -> - {line_map_data, filtered_predictions} = - Screens.LineMap.by_stop_id(platform_id, route_id, direction_id, predictions) - - departures = Departure.from_predictions_or_schedules(filtered_predictions) - - {line_map_data, departures} - - :error -> - # handle case where vehicle request fails - {nil, :error} - end - end - - @spec get_destination(String.t(), 0 | 1) :: {:ok, String.t()} | :error - defp get_destination(route_id, direction_id) do - case Screens.Routes.Route.by_id(route_id) do - {:ok, %{direction_destinations: destinations}} -> {:ok, Enum.at(destinations, direction_id)} - :error -> :error - end - end - - defp format_departure_rows(departures) do - Enum.map(departures, &Map.from_struct/1) - end - - def format_global_alert(alert) do - Alert.to_map(alert) - end - - defp format_inline_alert([alert | _]) do - %{severity: alert.severity} - end - - defp format_inline_alert(_) do - nil - end -end diff --git a/lib/screens/screen_data.ex b/lib/screens/screen_data.ex index 0a3fbe286..3b0fa2f66 100644 --- a/lib/screens/screen_data.ex +++ b/lib/screens/screen_data.ex @@ -7,7 +7,6 @@ defmodule Screens.ScreenData do alias ScreensConfig.Screen @modules_by_app_id %{ - gl_eink_single: Screens.GLScreenData, solari: Screens.SolariScreenData } diff --git a/lib/screens_web/controllers/screen_controller.ex b/lib/screens_web/controllers/screen_controller.ex index 536fdcb3e..ba0f359e5 100644 --- a/lib/screens_web/controllers/screen_controller.ex +++ b/lib/screens_web/controllers/screen_controller.ex @@ -6,7 +6,7 @@ defmodule ScreensWeb.ScreenController do alias ScreensConfig.Screen @default_app_id :solari - @app_ids ~w[gl_eink_single solari]a + @app_ids ~w[solari]a @app_id_strings Enum.map(@app_ids, &Atom.to_string/1) plug(:body_class) diff --git a/test/fixtures/config.json b/test/fixtures/config.json index 0a660b6d6..7f2381b2f 100644 --- a/test/fixtures/config.json +++ b/test/fixtures/config.json @@ -3,31 +3,6 @@ "disabled_modes": ["ferry", "light_rail"] }, "screens": { - "111": { - "app_id": "gl_eink_single", - "app_params": { - "direction_id": 1, - "headway_mode": false, - "nearby_departures": ["941", "951"], - "platform_id": "70148", - "psa_config": { - "default_list": { - "paths": [], - "type": null - }, - "scheduled_overrides": [] - }, - "route_id": "Green-B", - "service_level": 1, - "stop_id": "place-bland" - }, - "device_id": "002046", - "disabled": true, - "name": "002046 Blandford EB GL02", - "refresh_if_loaded_before": "2020-10-13T16:44:59.406651Z", - "tags": [], - "vendor": "mercury" - }, "311": { "app_id": "solari", "app_params": { @@ -577,31 +552,6 @@ "tags": [], "vendor": "c3ms" }, - "102": { - "app_id": "gl_eink_single", - "app_params": { - "direction_id": 0, - "headway_mode": false, - "nearby_departures": ["941", "951"], - "platform_id": "70149", - "psa_config": { - "default_list": { - "paths": [], - "type": null - }, - "scheduled_overrides": [] - }, - "route_id": "Green-B", - "service_level": 1, - "stop_id": "place-bland" - }, - "device_id": "002051", - "disabled": false, - "name": "002051 Blandford WB GL04", - "refresh_if_loaded_before": "2020-10-13T16:44:59.406651Z", - "tags": [], - "vendor": "mercury" - }, "310": { "app_id": "solari", "app_params": { @@ -1539,31 +1489,6 @@ "tags": [], "vendor": "solari" }, - "104": { - "app_id": "gl_eink_single", - "app_params": { - "direction_id": 0, - "headway_mode": false, - "nearby_departures": ["1276", "1292"], - "platform_id": "70229", - "psa_config": { - "default_list": { - "paths": [], - "type": null - }, - "scheduled_overrides": [] - }, - "route_id": "Green-C", - "service_level": 1, - "stop_id": "place-bcnwa" - }, - "device_id": "002050", - "disabled": false, - "name": "002050 Wash Sq WB GL07", - "refresh_if_loaded_before": "2020-10-13T16:44:59.406651Z", - "tags": [], - "vendor": "mercury" - }, "312": { "app_id": "solari", "app_params": { @@ -1660,31 +1585,6 @@ "tags": [], "vendor": "solari" }, - "101": { - "app_id": "gl_eink_single", - "app_params": { - "direction_id": 1, - "headway_mode": false, - "nearby_departures": ["941", "951"], - "platform_id": "70148", - "psa_config": { - "default_list": { - "paths": [], - "type": null - }, - "scheduled_overrides": [] - }, - "route_id": "Green-B", - "service_level": 1, - "stop_id": "place-bland" - }, - "device_id": "002047", - "disabled": false, - "name": "002047 Blandford EB GL01", - "refresh_if_loaded_before": "2020-10-13T16:44:59.406651Z", - "tags": [], - "vendor": "mercury" - }, "305": { "app_id": "solari", "app_params": { @@ -1781,31 +1681,6 @@ "tags": [], "vendor": "solari" }, - "112": { - "app_id": "gl_eink_single", - "app_params": { - "direction_id": 0, - "headway_mode": false, - "nearby_departures": ["941", "951"], - "platform_id": "70149", - "psa_config": { - "default_list": { - "paths": [], - "type": null - }, - "scheduled_overrides": [] - }, - "route_id": "Green-B", - "service_level": 1, - "stop_id": "place-bland" - }, - "device_id": "002049", - "disabled": false, - "name": "002049 Blandford WB GL03", - "refresh_if_loaded_before": "2020-10-13T16:44:59.406651Z", - "tags": [], - "vendor": "mercury" - }, "402": { "app_id": "dup", "app_params": {