<%= @summary.display_name %>

<%= unless is_nil(@car.model) do %>

Model <%= @car.model %> <%= if @car.marketing_name != nil do %><%= @car.marketing_name %> <% else %><%= @car.trim_badging %><% end %>

<% end %>
<%= if @summary.is_preconditioning do %> <% end %> <%= if not is_nil(@summary.battery_level) and not is_nil(@summary.usable_battery_level) and @summary.battery_level - @summary.usable_battery_level > 2 do %> <% end %> <%= if @summary.state != :driving and @summary.is_user_present do %> <% end %> <%= if @summary.plugged_in == true do %> <% end %> <%= if @summary.windows_open do %> <% end %> <%= if @summary.doors_open do %> <% end %> <%= if @summary.sentry_mode do %> <% end %> <%= unless is_nil(@summary.locked) do %> <% end %> <%= if @summary.update_available do %> <% end %> <%= if @summary.healthy == false do %> <% end %>
<%= if @summary.state == :charging and not is_nil(@summary.time_to_full_charge) do %> <% end %> <%= unless is_nil(@summary.ideal_battery_range_km) do %> <% end %> <%= unless is_nil(@summary.est_battery_range_km) do %> <% end %> <%= if @summary.state == :charging do %> <%= unless is_nil(@summary.charge_energy_added) do %> <% end %> <%= unless is_nil(@summary.charger_power) do %> <% end %> <% end %> <%= if @summary.plugged_in do %> <%= unless @summary.scheduled_charging_start_time in [nil, :unknown] do %> <% end %> <%= if not is_nil(@summary.charge_limit_soc) do %> <% end %> <% end %> <%= unless is_nil(@summary.battery_level) do %> <% {soc_text, tooltip} = (fn -> {text, tooltip_battery_level} = case {@summary.battery_level, @summary.usable_battery_level} do {lvl, lvl} -> {"#{lvl}%", lvl} {lvl, nil} -> {"#{lvl}%", lvl} {lvl, usable_lvl} -> {"#{usable_lvl}% (#{lvl}%)", usable_lvl} end current_range = case @settings.preferred_range do :ideal -> @summary.ideal_battery_range_km :rated -> @summary.rated_battery_range_km end tooltip = if is_number(current_range) and is_number(tooltip_battery_level) and tooltip_battery_level > 0 do r100 = current_range / tooltip_battery_level * 100 r100_str = if @settings.unit_of_length == :mi do "#{Convert.km_to_miles(r100, 0)} mi" else "#{round(r100)} km" end gettext("≈ %{range} at 100%", range: r100_str) end {text, tooltip} end).() %> <% end %> <%= if @summary.state == :driving and not is_nil(@summary.speed) do %> <% end %> <%= if @summary.state not in [:asleep, :offline, :suspended] or DateTime.diff(DateTime.utc_now(), @summary.since) < 30*60 do %> <%= unless is_nil(@summary.outside_temp) do %> <% end %> <%= unless is_nil(@summary.inside_temp) do %> <% end %> <% end %> <%= unless is_nil(@summary.odometer) do %> <% end %> <%= unless is_nil(@summary.version) do %> <% end %>
<%= gettext "Status" %> <%= raw( @translate_state.(@summary.state) <> unless is_nil(@duration) do " #{gettext("for")} " <> case @duration do [a , b] -> "#{a}, #{b}" [a] -> a end else "" end )%>
<%= gettext "Remaining Time" %> <%= round(@summary.time_to_full_charge * 60 * 60) |> Convert.sec_to_str() |> Enum.reject(&String.ends_with?(&1, "s")) |> Enum.join(", ") %>
<%= case @settings.preferred_range do :ideal -> gettext "Range (ideal)" :rated -> gettext "Range (rated)" end %> <%= range = case @settings.preferred_range do :ideal -> @summary.ideal_battery_range_km :rated -> @summary.rated_battery_range_km end if @settings.unit_of_length == :mi do "#{Convert.km_to_miles(range, 1)} mi" else "#{range} km" end %>
<%= gettext "Range (est.)" %> <%= if @settings.unit_of_length == :mi do "#{Convert.km_to_miles(@summary.est_battery_range_km, 1)} mi" else "#{@summary.est_battery_range_km} km" end %>
<%= gettext "Charged" %> <%= @summary.charge_energy_added %> kWh
<%= gettext "Charger Power" %> <%= @summary.charger_power %> kW
<%= gettext "Scheduled Charging" %> <%= tag :span, data: [date: @summary.scheduled_charging_start_time |> DateTime.to_iso8601()], phx_hook: "LocalTime", id: "scheduled_start_time_#{@car.id}" %>
<%= gettext "Charge Limit" %> <%= @summary.charge_limit_soc %>%
<%= gettext "State of Charge" %> <%= soc_text %>
<%= gettext "Speed" %> <%= if @settings.unit_of_length == :mi do "#{Convert.km_to_miles(@summary.speed, 0)} mph" else "#{@summary.speed} km/h" end %>
<%= gettext "Outside Temperature" %> <%= if @settings.unit_of_temperature == :F do "#{Convert.celsius_to_fahrenheit(@summary.outside_temp, 1)} °F" else "#{@summary.outside_temp} °C" end %>
<%= gettext "Inside Temperature" %> <%= if @settings.unit_of_temperature == :F do "#{Convert.celsius_to_fahrenheit(@summary.inside_temp, 1)} °F" else "#{@summary.inside_temp} °C" end %>
<%= gettext "Mileage" %> <%= if @settings.unit_of_length == :mi do "#{Convert.km_to_miles(@summary.odometer, 0)} mi" else "#{round(@summary.odometer)} km" end %>
<%= gettext "Version" %> <%= link @summary.version, to: "https://www.notateslaapp.com/software-updates/version/#{@summary.version}/release-notes", target: "_blank", rel: "noopener noreferrer" %>
<%= cond do not is_nil(@error) -> link @error, to: "#", class: "button is-danger is-small is-outlined is-fullwidth", disabled: true @summary.state == :online and !@summary.sentry_mode and !@summary.is_user_present and !@summary.is_preconditioning -> link gettext("try to sleep"), to: "#", phx_click: "suspend_logging", class: "button is-info is-small is-outlined is-fullwidth" <> (if @loading, do: " is-loading", else: "") @summary.state == :suspended -> link gettext("cancel sleep attempt"), to: "#", phx_click: "resume_logging", class: "button is-info is-small is-outlined is-fullwidth" <> (if @loading, do: " is-loading", else: "") true -> nil end %>