From d6f758661b42b27d9dbfdf804b6ba6f6058f6022 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonatan=20K=C5=82osko?= Date: Sat, 7 Jan 2023 15:18:31 +0100 Subject: [PATCH] Make automatic reevaluation more accessible (#1628) --- lib/livebook_web/live/session_live.ex | 14 ++++ .../live/session_live/cell_component.ex | 71 +++++++++++++------ .../live/session_live/section_component.ex | 2 +- test/livebook_web/live/session_live_test.exs | 14 ++++ 4 files changed, 77 insertions(+), 24 deletions(-) diff --git a/lib/livebook_web/live/session_live.ex b/lib/livebook_web/live/session_live.ex index 6803ed980..a1df0f652 100644 --- a/lib/livebook_web/live/session_live.ex +++ b/lib/livebook_web/live/session_live.ex @@ -1260,6 +1260,20 @@ defmodule LivebookWeb.SessionLive do {:noreply, socket} end + def handle_event( + "set_reevaluate_automatically", + %{"value" => value, "cell_id" => cell_id}, + socket + ) do + assert_policy!(socket, :edit) + + Session.set_cell_attributes(socket.assigns.session.pid, cell_id, %{ + reevaluate_automatically: value + }) + + {:noreply, socket} + end + def handle_event("save", %{}, socket) do assert_policy!(socket, :edit) diff --git a/lib/livebook_web/live/session_live/cell_component.ex b/lib/livebook_web/live/session_live/cell_component.ex index 01ec93eb8..0a6570e16 100644 --- a/lib/livebook_web/live/session_live/cell_component.ex +++ b/lib/livebook_web/live/session_live/cell_component.ex @@ -295,31 +295,56 @@ defmodule LivebookWeb.SessionLive.CellComponent do """ end - defp cell_evaluation_button(%{status: :ready, reevaluate_automatically: true} = assigns) - when assigns.validity in [:evaluated, :stale] do - ~H""" - <%= live_patch to: Routes.session_path(@socket, :cell_settings, @session_id, @cell_id), - class: "text-gray-600 hover:text-gray-800 focus:text-gray-800 flex space-x-1 items-center" do %> - <.remix_icon icon="check-line" class="text-xl" /> - - Reevaluates automatically - - <% end %> - """ - end - defp cell_evaluation_button(%{status: :ready} = assigns) do ~H""" - +
+ + <.menu id={"cell-#{@cell_id}-evaluation-menu"} position="bottom-left" distant> + <:toggle> + + + <:content> + + + + +
""" end diff --git a/lib/livebook_web/live/session_live/section_component.ex b/lib/livebook_web/live/session_live/section_component.ex index bc266f9b4..f7f853939 100644 --- a/lib/livebook_web/live/session_live/section_component.ex +++ b/lib/livebook_web/live/session_live/section_component.ex @@ -54,7 +54,7 @@ defmodule LivebookWeb.SessionLive.SectionComponent do <% else %>