|
|
| <%= 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
)%> |
<%= if @summary.state == :charging and not is_nil(@summary.time_to_full_charge) do %>
| <%= gettext "Remaining Time" %> |
<%=
round(@summary.time_to_full_charge * 60 * 60)
|> Convert.sec_to_str()
|> Enum.reject(&String.ends_with?(&1, "s"))
|> Enum.join(", ")
%> |
<% end %>
<%= unless is_nil(@summary.ideal_battery_range_km) do %>
| <%=
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
%> |
<% end %>
<%= unless is_nil(@summary.est_battery_range_km) do %>
| <%= 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
%> |
<% end %>
<%= if @summary.state == :charging do %>
<%= unless is_nil(@summary.charge_energy_added) do %>
| <%= gettext "Charged" %> |
<%= @summary.charge_energy_added %> kWh |
<% end %>
<%= unless is_nil(@summary.charger_power) do %>
| <%= gettext "Charger Power" %> |
<%= @summary.charger_power %> kW |
<% end %>
<% end %>
<%= if @summary.plugged_in do %>
<%= unless @summary.scheduled_charging_start_time in [nil, :unknown] do %>
| <%= gettext "Scheduled Charging" %> |
<%=
tag :span, data: [date: @summary.scheduled_charging_start_time |> DateTime.to_iso8601()],
phx_hook: "LocalTime", id: "scheduled_start_time_#{@car.id}"
%> |
<% end %>
<%= if not is_nil(@summary.charge_limit_soc) do %>
| <%= gettext "Charge Limit" %> |
<%= @summary.charge_limit_soc %>% |
<% 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).()
%>
| <%= gettext "State of Charge" %> |
<%= soc_text %>
|
<% end %>
<%= if @summary.state == :driving and not is_nil(@summary.speed) do %>
| <%= gettext "Speed" %> |
<%=
if @settings.unit_of_length == :mi do
"#{Convert.km_to_miles(@summary.speed, 0)} mph"
else
"#{@summary.speed} km/h"
end
%> |
<% 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 %>
| <%= 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
%> |
<% end %>
<%= unless is_nil(@summary.inside_temp) do %>
| <%= 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
%> |
<% end %>
<% end %>
<%= unless is_nil(@summary.odometer) do %>
| <%= gettext "Mileage" %> |
<%=
if @settings.unit_of_length == :mi do
"#{Convert.km_to_miles(@summary.odometer, 0)} mi"
else
"#{round(@summary.odometer)} km"
end
%> |
<% end %>
<%= unless is_nil(@summary.version) do %>
| <%= gettext "Version" %> |
<%= link @summary.version, to: "https://www.notateslaapp.com/software-updates/version/#{@summary.version}/release-notes", target: "_blank", rel: "noopener noreferrer" %> |
<% end %>
<%=
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
%>