Packages
livebook
0.8.1
0.19.8
0.19.7
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.3
0.17.2
0.17.1
0.17.0
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.14.0-rc.1
0.14.0-rc.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
Automate code & data workflows with interactive notebooks
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
lib/livebook_web/live/home_live/edit_sessions_component.ex
defmodule LivebookWeb.HomeLive.EditSessionsComponent do
use LivebookWeb, :live_component
alias LivebookWeb.HomeLive.SessionListComponent
@impl true
def render(assigns) do
~H"""
<div class="p-6 flex flex-col space-y-8">
<h3 class="text-2xl font-semibold text-gray-800">
<%= title(@action) %>
</h3>
<.message action={@action} selected_sessions={@selected_sessions} sessions={@sessions} />
<div class="mt-8 flex justify-end space-x-2">
<button
class="button-base button-red"
role="button"
phx-click={SessionListComponent.toggle_edit(:off) |> JS.push(@action, target: @myself)}
>
<.remix_icon icon="close-circle-line" class="align-middle mr-1" />
<%= button_label(@action) %>
</button>
<%= live_patch("Cancel", to: @return_to, class: "button-base button-outlined-gray") %>
</div>
</div>
"""
end
defp message(%{action: "close_all"} = assigns) do
~H"""
<p class="text-gray-700">
Are you sure you want to close <%= pluralize(length(@selected_sessions), "session", "sessions") %>?
<%= if not_persisted_count(@selected_sessions) > 0 do %>
<br />
<span class="font-medium">Important:</span>
<%= pluralize(
not_persisted_count(@selected_sessions),
"notebook is not persisted and its content may be lost.",
"notebooks are not persisted and their content may be lost."
) %>
<% end %>
</p>
"""
end
defp message(%{action: "disconnect"} = assigns) do
~H"""
<p class="text-gray-700">
Are you sure you want to disconnect <%= pluralize(
length(@selected_sessions),
"session",
"sessions"
) %>?
</p>
"""
end
@impl true
def handle_event("close_all", %{}, socket) do
socket.assigns.selected_sessions
|> Enum.map(& &1.pid)
|> Livebook.Session.close()
{:noreply, push_patch(socket, to: socket.assigns.return_to, replace: true)}
end
def handle_event("disconnect", %{}, socket) do
socket.assigns.selected_sessions
|> Enum.reject(&(&1.memory_usage.runtime == nil))
|> Enum.map(& &1.pid)
|> Livebook.Session.disconnect_runtime()
{:noreply, push_patch(socket, to: socket.assigns.return_to, replace: true)}
end
defp button_label("close_all"), do: "Close sessions"
defp button_label("disconnect"), do: "Disconnect runtime"
defp title("close_all"), do: "Close sessions"
defp title("disconnect"), do: "Disconnect runtime"
defp not_persisted_count(selected_sessions) do
Enum.count(selected_sessions, &(!&1.file))
end
end