diff --git a/lib/outlook/html_preparations.ex b/lib/outlook/html_preparations.ex
index 864a1ba..cb8c4b5 100644
--- a/lib/outlook/html_preparations.ex
+++ b/lib/outlook/html_preparations.ex
@@ -11,10 +11,4 @@ defmodule Outlook.HtmlPreparations do
|> HtmlPreparation.floki_to_internal
|> HtmlPreparation.set_sibling_with
end
-
- def get_tree_items(content_tree) do
- content_tree
- |> HtmlPreparation.strip_whitespace_textnodes
- |> HtmlPreparation.build_indentation_list(0)
- end
end
diff --git a/lib/outlook/html_preparations/html_preparation.ex b/lib/outlook/html_preparations/html_preparation.ex
index 66c76be..b7a0a45 100644
--- a/lib/outlook/html_preparations/html_preparation.ex
+++ b/lib/outlook/html_preparations/html_preparation.ex
@@ -90,20 +90,4 @@ defmodule Outlook.HtmlPreparations.HtmlPreparation do
end
def strip_whitespace_textnodes([]), do: []
-
-
- def build_indentation_list [ %{type: :element} = node | rest], level do
- [ %{node: Map.replace(node, :content, []), level: level}
- | [ build_indentation_list(node.content, level + 1)
- | build_indentation_list(rest, level)
- ]
- ] |> List.flatten
- end
-
- def build_indentation_list [ node | rest ], level do
- [ %{node: node, level: level}
- | build_indentation_list( rest, level ) ]
- end
-
- def build_indentation_list([ ], _), do: []
end
diff --git a/lib/outlook_web/components/html_tree_component.ex b/lib/outlook_web/components/html_tree_component.ex
index 30ddcea..e1f38c2 100644
--- a/lib/outlook_web/components/html_tree_component.ex
+++ b/lib/outlook_web/components/html_tree_component.ex
@@ -6,52 +6,40 @@ defmodule OutlookWeb.HtmlTreeComponent do
alias Phoenix.LiveView.JS
- attr :tree_items, :list, required: true
+ attr :tree, :list, required: true
- def treeview(assigns) do
+ def render_tree(assigns) do
~H"""
-
- <%= for tree_item <- @tree_items do %>
- <%= case tree_item do %>
- <% %{node: %{type: :element}} = item -> %>
- <.tree_element node={item.node} level={item.level}>
- <% %{node: %{type: :text}} = item -> %>
- <.tree_text node={item.node} level={item.level}>
- <% %{node: %{type: :comment}} = item -> %>
- <.tree_comment node={item.node} level={item.level}>
- <% end %>
- <% end %>
-
- <.link phx-click={JS.push("apply_modifier", value: %{modifier: :unwrap})}>
- <.button title="unwraps selected elements">Unwrap
-
- <.link phx-click={JS.push("partition_text", value: %{modifier: :unwrap})}>
- <.button title="splits text into sentences">Partition
-
+ <.tnode :for={node <- @tree} node={node} />
"""
end
- def tree_element(assigns) do
+ def attributes(assigns) do
+ ~H" <%= @name %>="<%= @value %>""
+ end
+
+ def tnode(%{node: %{status: _}} = assigns), do: ~H"<%= String.slice(@node.content, 0..20) %><%= if String.length(@node.content) > 20 do %>...<% end %>
"
+
+ def tnode(assigns) when assigns.node.type == :element do
~H"""
-
- <%= "#{String.duplicate(" ", @level)}<#{@node.name}>" %>
-
+ <<%= @node.name %><.attributes :for={{k,v} <- @node.attributes} name={k} value={v}
+ />>
+
+ <.tnode :for={child_node <- @node.content} node={child_node} />
+
"""
end
- def tree_text(assigns) do
+ def tnode(assigns) when assigns.node.type == :text do
~H"""
-
- <%= "#{String.duplicate(" ", @level)}\"#{String.slice(@node.content, 0, 15)}...\"\n" %>
-
+ "<%= String.slice(@node.content, 0..35) %><%= if String.length(@node.content) > 35 do %>..."<% end %>
"""
end
- def tree_comment(assigns) do
+ def tnode(assigns) when assigns.node.type == :comment do
~H"""
-
- <%= "#{String.duplicate(" ", @level)}\n" %>
-
+ <!--<%= String.slice(@node.content, 0..35) %>
+ <%= if String.length(@node.content) > 35 do %>"..."<% end %>-->
"""
end
end
diff --git a/lib/outlook_web/live/article_live/new_components.ex b/lib/outlook_web/live/article_live/new_components.ex
index 635a339..f23fad3 100644
--- a/lib/outlook_web/live/article_live/new_components.ex
+++ b/lib/outlook_web/live/article_live/new_components.ex
@@ -34,7 +34,7 @@ defmodule OutlookWeb.ArticleLive.NewComponents do
<%= InternalTree.render_html_preview(@raw_internal_tree) |> raw %>
- <.treeview tree_items={HtmlPreparations.get_tree_items(@raw_internal_tree)} >
+ <.render_tree tree={@raw_internal_tree} >
<.button phx-click="approve_raw_internaltree">Continue