defmodule BDS.Desktop.ShellLive.PanelRenderer do
@moduledoc false
use Phoenix.Component
alias BDS.Desktop.ShellData
alias BDS.Git
alias BDS.Media
alias BDS.Media.Media, as: MediaRecord
alias BDS.PostLinks
alias BDS.Posts
alias BDS.Posts.Post
@doc "Render the active panel tab body."
def render_panel_body(assigns) do
case assigns.workbench.panel.active_tab do
:tasks -> render_task_entries(assigns)
:output -> render_output_entries(assigns)
:post_links -> render_post_links(assigns)
:git_log -> render_git_log(assigns)
other -> render_generic_panel(assigns, other)
end
end
@doc "Render the editor toolbar for the current tab."
def render_editor_toolbar(assigns) do
buttons = editor_toolbar_buttons(assigns.current_tab)
assigns = assign(assigns, :editor_toolbar_buttons, buttons)
~H"""
<%= if Enum.any?(@editor_toolbar_buttons) do %>
<%= for button <- @editor_toolbar_buttons do %>
<% end %>
<% end %>
"""
end
defp render_task_entries(assigns) do
~H"""
<%= if Enum.empty?(Map.get(@task_status, :tasks, [])) do %>
<%= entry.title %><%= entry.message %>
<%= if present?(entry.details) do %>
<%= entry.details %>
<% end %>
<% end %>
<% end %>
"""
end
defp render_post_links(assigns) do
links = post_link_entries(assigns)
assigns =
assigns
|> assign(:backlinks, Map.get(links, :backlinks, []))
|> assign(:outlinks, Map.get(links, :outlinks, []))
~H"""
<%= if Enum.empty?(@backlinks) and Enum.empty?(@outlinks) do %>
<%= translated("Post Links") %><%= translated("No post links yet") %>
<% else %>
<%= if Enum.any?(@backlinks) do %>
<%= translated("Backlinks") %>
<%= for entry <- @backlinks do %>
<% end %>
<% end %>
<%= if Enum.any?(@outlinks) do %>
<%= translated("Links To") %>
<%= for entry <- @outlinks do %>
<% end %>
<% end %>
<% end %>
"""
end
defp render_git_log(assigns) do
entries = git_log_entries(assigns)
assigns = assign(assigns, :git_entries, entries)
~H"""
<%= if Enum.empty?(@git_entries) do %>
<%= translated("Git Log") %><%= translated("No git history yet") %>