defmodule LivebookWeb.SessionLive.IndicatorsComponent do
use LivebookWeb, :live_component
@impl true
def render(assigns) do
~L"""
<%= if @data_view.path do %>
<%= if @data_view.dirty do %>
<%= live_patch to: Routes.session_path(@socket, :file_settings, @session_id),
class: "icon-button icon-outlined-button border-blue-400 hover:bg-blue-50 focus:bg-blue-50" do %>
<%= remix_icon("save-line", class: "text-xl text-blue-500") %>
<% end %>
<% else %>
<%= live_patch to: Routes.session_path(@socket, :file_settings, @session_id),
class: "icon-button icon-outlined-button border-green-300 hover:bg-green-50 focus:bg-green-50" do %>
<%= remix_icon("save-line", class: "text-xl text-green-400") %>
<% end %>
<% end %>
<% else %>
<%= live_patch to: Routes.session_path(@socket, :file_settings, @session_id),
class: "icon-button icon-outlined-button border-gray-200 hover:bg-gray-100 focus:bg-gray-100" do %>
<%= remix_icon("save-line", class: "text-xl text-gray-400") %>
<% end %>
<% end %>
<%= if @data_view.runtime do %>
<%= render_global_evaluation_status(@data_view.global_evaluation_status) %>
<% else %>
<%= live_patch to: Routes.session_path(@socket, :runtime_settings, @session_id),
class: "icon-button icon-outlined-button border-gray-200 hover:bg-gray-100 focus:bg-gray-100" do %>
<%= remix_icon("loader-3-line", class: "text-xl text-gray-400") %>
<% end %>
<% end %>
<%# Note: this indicator is shown/hidden using CSS based on the current mode %>
ins
"""
end
defp render_global_evaluation_status({:evaluating, cell_id}) do
assigns = %{cell_id: cell_id}
~L"""
"""
end
defp render_global_evaluation_status({:evaluated, cell_id}) do
assigns = %{cell_id: cell_id}
~L"""
"""
end
defp render_global_evaluation_status({:stale, cell_id}) do
assigns = %{cell_id: cell_id}
~L"""
"""
end
defp render_global_evaluation_status({:fresh, nil}) do
assigns = %{}
~L"""
"""
end
end