Closed2

Livebookからコード入力機能を外して、スマートセルだけのリッチなノートにする試み

tatotato

背景

非エンジニアの近しい人にちょっとした機能付き(独自スマートセル)のノートブックを提供したい。
Livebookはコードを実行できるが、この用途では事故が起こる可能性が高いので抑制したい。

やること

  • 新規ブック作成時にデフォルトで作成されるcodeセルの除去(markdownセルに変更)
  • setupセルの除去
  • smartセルのメニューにある「コードに変換」などの除去

注意点やら補足やら(見る人がいるかもしれないので一応)

まだコード入力できるところが残ってます。例えば、最初からあるLEARNのページなどを開くとcodeセルが最初からあるので利用可能です。そのため、いたずらされない環境を作るという意味では、本スクラップはスクラップです(役に立ちません)。

編集などをさせずに、ただ成果物を見せるだけなら、Livebook上で公開する機能があります。ボタンくらいは付けられるようなので、スマートセルを使わない簡単なものなら、その機能だけでもいいかもしれません。

tatotato

コード(git diff)差分

Livebook Version 0.8.1

diff --git a/lib/livebook/session.ex b/lib/livebook/session.ex
index eaf59d65..7a508e60 100644
--- a/lib/livebook/session.ex
+++ b/lib/livebook/session.ex
@@ -760,7 +760,7 @@ defmodule Livebook.Session do
   end

   defp default_notebook() do
-    %{Notebook.new() | sections: [%{Section.new() | cells: [Cell.new(:code)]}]}
+    %{Notebook.new() | sections: [%{Section.new() | cells: [Cell.new(:markdown)]}]}
   end

   defp schedule_autosave(state) do
diff --git a/lib/livebook_web/live/session_live.ex b/lib/livebook_web/live/session_live.ex
index d3124471..97374d2d 100644
--- a/lib/livebook_web/live/session_live.ex
+++ b/lib/livebook_web/live/session_live.ex
@@ -286,19 +286,6 @@ defmodule LivebookWeb.SessionLive do
               </.menu_item>
             </.menu>
           </div>
-          <div>
-            <.live_component
-              module={LivebookWeb.SessionLive.CellComponent}
-              id={@data_view.setup_cell_view.id}
-              session_id={@session.id}
-              session_pid={@session.pid}
-              client_id={@client_id}
-              runtime={@data_view.runtime}
-              installing?={@data_view.installing?}
-              allowed_uri_schemes={@allowed_uri_schemes}
-              cell_view={@data_view.setup_cell_view}
-            />
-          </div>
           <div class="mt-8 flex flex-col w-full space-y-16" data-el-sections-container>
             <div :if={@data_view.section_views == []} class="flex justify-center">
               <button class="button-base button-small" phx-click="append_section">
diff --git a/lib/livebook_web/live/session_live/cell_component.ex b/lib/livebook_web/live/session_live/cell_component.ex
index 83a57d51..387240ac 100644
--- a/lib/livebook_web/live/session_live/cell_component.ex
+++ b/lib/livebook_web/live/session_live/cell_component.ex
@@ -432,9 +432,6 @@ defmodule LivebookWeb.SessionLive.CellComponent do
   defp toggle_source_button(assigns) do
     ~H"""
     <span class="tooltip top" data-tooltip="Toggle source" data-el-toggle-source-button>
-      <button class="icon-button" aria-label="toggle source">
-        <.remix_icon icon="code-line" class="text-xl" />
-      </button>
     </span>
     """
   end
@@ -442,24 +439,6 @@ defmodule LivebookWeb.SessionLive.CellComponent do
   defp convert_smart_cell_button(assigns) do
     ~H"""
     <span class="tooltip top" data-tooltip="Convert to Code cell">
-      <button
-        class="icon-button"
-        aria-label="toggle source"
-        data-link-package-search
-        phx-click={
-          with_confirm(
-            JS.push("convert_smart_cell", value: %{cell_id: @cell_id}),
-            title: "Convert cell",
-            description:
-              "Once you convert this Smart cell to a Code cell, the Smart cell will be moved to the bin.",
-            confirm_text: "Convert",
-            confirm_icon: "arrow-up-down-line",
-            opt_out_id: "convert-smart-cell"
-          )
-        }
-      >
-        <.remix_icon icon="pencil-line" class="text-xl" />
-      </button>
     </span>
     """
   end
diff --git a/lib/livebook_web/live/session_live/insert_buttons_component.ex b/lib/livebook_web/live/session_live/insert_buttons_component.ex
index 52c131bb..0cdef068 100644
--- a/lib/livebook_web/live/session_live/insert_buttons_component.ex
+++ b/lib/livebook_web/live/session_live/insert_buttons_component.ex
@@ -12,15 +12,6 @@ defmodule LivebookWeb.SessionLive.InsertButtonsComponent do
       <div class={
         "w-full absolute z-10 hover:z-[11] #{if(@persistent, do: "opacity-100", else: "opacity-0")} hover:opacity-100 focus-within:opacity-100 flex space-x-2 justify-center items-center"
       }>
-        <button
-          class="button-base button-small"
-          phx-click="insert_cell_below"
-          phx-value-type="code"
-          phx-value-section_id={@section_id}
-          phx-value-cell_id={@cell_id}
-        >
-          + Code
-        </button>
         <.menu id={"#{@id}-block-menu"} position={:bottom_left}>
           <:toggle>
             <button class="button-base button-small">+ Block</button>
このスクラップは2023/03/20にクローズされました