Skip to content

Commit

Permalink
Merge pull request #46 from alcwhite/shared-table-events
Browse files Browse the repository at this point in the history
Move shared table events out into shared macro
  • Loading branch information
rheubach committed Nov 19, 2021
2 parents a8bf977 + 9a41b38 commit c8f3af8
Show file tree
Hide file tree
Showing 11 changed files with 56 additions and 158 deletions.
20 changes: 2 additions & 18 deletions uncharted_phoenix/lib/uncharted_phoenix/components/live_bar.ex
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@ defmodule UnchartedPhoenix.LiveBarComponent do
"""

use Phoenix.LiveComponent

def mount(socket) do
{:ok, assign(socket, :show_table, false)}
end
use UnchartedPhoenix.SharedEvents

def update(assigns, socket) do
x_axis = assigns.chart.dataset.axes.magnitude_axis
Expand All @@ -21,27 +18,14 @@ defmodule UnchartedPhoenix.LiveBarComponent do

socket =
socket
|> assign(:chart, assigns.chart)
|> shared_update(assigns)
|> assign(:bars, Uncharted.BarChart.bars(assigns.chart))
|> assign(:grid_lines, grid_lines)
|> assign(:offsetter, grid_line_offsetter)
|> assign(:axis, x_axis)
|> assign(:always_show_table, assigns.always_show_table)
|> assign(:width, assigns.chart.width || 600)
|> assign(:height, assigns.chart.height || 400)

{:ok, socket}
end

def render(assigns) do
Phoenix.View.render(UnchartedPhoenix.ComponentView, "live_bar.html", assigns)
end

def handle_event("show_table", _, socket) do
{:noreply, assign(socket, :show_table, true)}
end

def handle_event("hide_table", _, socket) do
{:noreply, assign(socket, :show_table, false)}
end
end
20 changes: 2 additions & 18 deletions uncharted_phoenix/lib/uncharted_phoenix/components/live_column.ex
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@ defmodule UnchartedPhoenix.LiveColumnComponent do
"""

use Phoenix.LiveComponent

def mount(socket) do
{:ok, assign(socket, :show_table, false)}
end
use UnchartedPhoenix.SharedEvents

def update(assigns, socket) do
y_axis = assigns.chart.dataset.axes.magnitude_axis
Expand All @@ -17,27 +14,14 @@ defmodule UnchartedPhoenix.LiveColumnComponent do

socket =
socket
|> assign(:chart, assigns.chart)
|> shared_update(assigns)
|> assign(:columns, Uncharted.ColumnChart.columns(assigns.chart))
|> assign(:grid_lines, grid_lines)
|> assign(:grid_line_offsetter, grid_line_offsetter)
|> assign(:axis, y_axis)
|> assign(:always_show_table, assigns.always_show_table)
|> assign(:width, assigns.chart.width || 700)
|> assign(:height, assigns.chart.height || 400)

{:ok, socket}
end

def render(assigns) do
Phoenix.View.render(UnchartedPhoenix.ComponentView, "live_column.html", assigns)
end

def handle_event("show_table", _, socket) do
{:noreply, assign(socket, :show_table, true)}
end

def handle_event("hide_table", _, socket) do
{:noreply, assign(socket, :show_table, false)}
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,14 @@ defmodule UnchartedPhoenix.LiveDoughnutComponent do
"""

use Phoenix.LiveComponent

def mount(socket) do
{:ok, assign(socket, :show_table, false)}
end
use UnchartedPhoenix.SharedEvents

def update(assigns, socket) do
socket =
socket
|> assign(:chart, assigns.chart)
|> shared_update(assigns)
|> assign(:doughnut_slices, Uncharted.DoughnutChart.doughnut_slices(assigns.chart))
|> assign(:always_show_table, assigns.always_show_table)

{:ok, socket}
end

def render(assigns) do
Phoenix.View.render(UnchartedPhoenix.ComponentView, "live_doughnut.html", assigns)
end

def handle_event("show_table", _, socket) do
{:noreply, assign(socket, :show_table, true)}
end

def handle_event("hide_table", _, socket) do
{:noreply, assign(socket, :show_table, false)}
end
end
20 changes: 2 additions & 18 deletions uncharted_phoenix/lib/uncharted_phoenix/components/live_funnel.ex
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@ defmodule UnchartedPhoenix.LiveFunnelComponent do
"""

use Phoenix.LiveComponent

def mount(socket) do
{:ok, assign(socket, :show_table, false)}
end
use UnchartedPhoenix.SharedEvents

def update(assigns, socket) do
x_axis = assigns.chart.dataset.axes.magnitude_axis
Expand All @@ -22,27 +19,14 @@ defmodule UnchartedPhoenix.LiveFunnelComponent do

socket =
socket
|> assign(:chart, assigns.chart)
|> shared_update(assigns)
|> assign(:bars, Uncharted.FunnelChart.bars(assigns.chart))
|> assign(:grid_lines, grid_lines)
|> assign(:offsetter, grid_line_offsetter)
|> assign(:axis, x_axis)
|> assign(:always_show_table, assigns.always_show_table)
|> assign(:width, assigns.chart.width || 600)
|> assign(:height, assigns.chart.height || 400)

{:ok, socket}
end

def render(assigns) do
Phoenix.View.render(UnchartedPhoenix.ComponentView, "live_funnel.html", assigns)
end

def handle_event("show_table", _, socket) do
{:noreply, assign(socket, :show_table, true)}
end

def handle_event("hide_table", _, socket) do
{:noreply, assign(socket, :show_table, false)}
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@ defmodule UnchartedPhoenix.LiveHorizontalFunnelComponent do
"""

use Phoenix.LiveComponent

def mount(socket) do
{:ok, assign(socket, :show_table, false)}
end
use UnchartedPhoenix.SharedEvents

def update(assigns, socket) do
x_axis = assigns.chart.dataset.axes.magnitude_axis
Expand All @@ -22,12 +19,11 @@ defmodule UnchartedPhoenix.LiveHorizontalFunnelComponent do

socket =
socket
|> assign(:chart, assigns.chart)
|> shared_update(assigns)
|> assign(:columns, Uncharted.HorizontalFunnelChart.bars(assigns.chart))
|> assign(:grid_lines, grid_lines)
|> assign(:offsetter, grid_line_offsetter)
|> assign(:axis, x_axis)
|> assign(:always_show_table, assigns.always_show_table)
|> assign(:width, assigns.chart.width || 600)
|> assign(:height, assigns.chart.height || 400)

Expand All @@ -37,12 +33,4 @@ defmodule UnchartedPhoenix.LiveHorizontalFunnelComponent do
def render(assigns) do
Phoenix.View.render(UnchartedPhoenix.ComponentView, "live_horiz_funnel.html", assigns)
end

def handle_event("show_table", _, socket) do
{:noreply, assign(socket, :show_table, true)}
end

def handle_event("hide_table", _, socket) do
{:noreply, assign(socket, :show_table, false)}
end
end
20 changes: 2 additions & 18 deletions uncharted_phoenix/lib/uncharted_phoenix/components/live_line.ex
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@ defmodule UnchartedPhoenix.LiveLineComponent do
"""

use Phoenix.LiveComponent

def mount(socket) do
{:ok, assign(socket, :show_table, false)}
end
use UnchartedPhoenix.SharedEvents

def update(assigns, socket) do
x_axis = assigns.chart.dataset.axes.x
Expand All @@ -21,7 +18,7 @@ defmodule UnchartedPhoenix.LiveLineComponent do

socket =
socket
|> assign(:chart, assigns.chart)
|> shared_update(assigns)
|> assign(:points, Uncharted.LineChart.points(assigns.chart))
|> assign(:lines, Uncharted.LineChart.lines(assigns.chart))
|> assign(:x_grid_lines, x_grid_lines)
Expand All @@ -31,22 +28,9 @@ defmodule UnchartedPhoenix.LiveLineComponent do
|> assign(:y_grid_line_offsetter, y_grid_line_offsetter)
|> assign(:y_axis, y_axis)
|> assign(:show_gridlines, assigns.chart.dataset.axes.show_gridlines)
|> assign(:always_show_table, assigns.always_show_table)
|> assign(:width, assigns.chart.width || 700)
|> assign(:height, assigns.chart.height || 400)

{:ok, socket}
end

def render(assigns) do
Phoenix.View.render(UnchartedPhoenix.ComponentView, "live_line.html", assigns)
end

def handle_event("show_table", _, socket) do
{:noreply, assign(socket, :show_table, true)}
end

def handle_event("hide_table", _, socket) do
{:noreply, assign(socket, :show_table, false)}
end
end
20 changes: 2 additions & 18 deletions uncharted_phoenix/lib/uncharted_phoenix/components/live_pie.ex
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,14 @@ defmodule UnchartedPhoenix.LivePieComponent do
"""

use Phoenix.LiveComponent

def mount(socket) do
{:ok, assign(socket, :show_table, false)}
end
use UnchartedPhoenix.SharedEvents

def update(assigns, socket) do
socket =
socket
|> assign(:chart, assigns.chart)
|> shared_update(assigns)
|> assign(:pie_slices, Uncharted.PieChart.pie_slices(assigns.chart))
|> assign(:always_show_table, assigns.always_show_table)

{:ok, socket}
end

def render(assigns) do
Phoenix.View.render(UnchartedPhoenix.ComponentView, "live_pie.html", assigns)
end

def handle_event("show_table", _, socket) do
{:noreply, assign(socket, :show_table, true)}
end

def handle_event("hide_table", _, socket) do
{:noreply, assign(socket, :show_table, false)}
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,15 @@ defmodule UnchartedPhoenix.LiveProgressComponent do

alias Uncharted.ProgressChart
use Phoenix.LiveComponent

def mount(socket) do
{:ok, assign(socket, :show_table, false)}
end
use UnchartedPhoenix.SharedEvents

def update(assigns, socket) do
socket =
socket
|> assign(:chart, assigns.chart)
|> shared_update(assigns)
|> assign(:data, ProgressChart.data(assigns.chart))
|> assign(:progress, ProgressChart.progress(assigns.chart))
|> assign(:always_show_table, assigns.always_show_table)

{:ok, socket}
end

def render(assigns) do
Phoenix.View.render(UnchartedPhoenix.ComponentView, "live_progress.html", assigns)
end

def handle_event("show_table", _, socket) do
{:noreply, assign(socket, :show_table, true)}
end

def handle_event("hide_table", _, socket) do
{:noreply, assign(socket, :show_table, false)}
end
end
20 changes: 2 additions & 18 deletions uncharted_phoenix/lib/uncharted_phoenix/components/live_scatter.ex
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@ defmodule UnchartedPhoenix.LiveScatterComponent do
"""

use Phoenix.LiveComponent

def mount(socket) do
{:ok, assign(socket, :show_table, false)}
end
use UnchartedPhoenix.SharedEvents

def update(assigns, socket) do
x_axis = assigns.chart.dataset.axes.x
Expand All @@ -21,7 +18,7 @@ defmodule UnchartedPhoenix.LiveScatterComponent do

socket =
socket
|> assign(:chart, assigns.chart)
|> shared_update(assigns)
|> assign(:points, Uncharted.ScatterPlot.points(assigns.chart))
|> assign(:x_grid_lines, x_grid_lines)
|> assign(:x_grid_line_offsetter, x_grid_line_offsetter)
Expand All @@ -30,22 +27,9 @@ defmodule UnchartedPhoenix.LiveScatterComponent do
|> assign(:y_grid_line_offsetter, y_grid_line_offsetter)
|> assign(:y_axis, y_axis)
|> assign(:show_gridlines, assigns.chart.dataset.axes.show_gridlines)
|> assign(:always_show_table, assigns.always_show_table)
|> assign(:width, assigns.chart.width || 700)
|> assign(:height, assigns.chart.height || 400)

{:ok, socket}
end

def render(assigns) do
Phoenix.View.render(UnchartedPhoenix.ComponentView, "live_scatter.html", assigns)
end

def handle_event("show_table", _, socket) do
{:noreply, assign(socket, :show_table, true)}
end

def handle_event("hide_table", _, socket) do
{:noreply, assign(socket, :show_table, false)}
end
end
38 changes: 38 additions & 0 deletions uncharted_phoenix/lib/uncharted_phoenix/shared_events.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
defmodule UnchartedPhoenix.SharedEvents do
defmacro __using__(_) do
quote do
def mount(socket) do
{:ok, assign(socket, :show_table, false)}
end

def handle_event("show_table", _, socket) do
{:noreply, assign(socket, :show_table, true)}
end

def handle_event("hide_table", _, socket) do
{:noreply, assign(socket, :show_table, false)}
end

def render(%{chart: %{dataset: dataset}} = assigns) do
Phoenix.View.render(
UnchartedPhoenix.ComponentView,
"live#{chart_name(dataset)}.html",
assigns
)
end

defp chart_name(dataset) do
Atom.to_string(dataset.__struct__)
|> String.replace(~r/Elixir.Uncharted.|Plot|Chart|.Dataset/, "")
|> String.replace(~r/[A-Z]/, "_\\0")
|> String.downcase()
end

defp shared_update(socket, assigns) do
socket
|> assign(:chart, assigns.chart)
|> assign(:always_show_table, assigns.always_show_table)
end
end
end
end

0 comments on commit c8f3af8

Please sign in to comment.