Skip to content

Commit

Permalink
Expand shared events
Browse files Browse the repository at this point in the history
  • Loading branch information
alcwhite committed Nov 4, 2021
1 parent 04853a9 commit 9a41b38
Show file tree
Hide file tree
Showing 12 changed files with 56 additions and 120 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ defmodule UnchartedPhoenix.LiveBarComponent do
"""

use Phoenix.LiveComponent
use UnchartedPhoenix.TableEvents
use UnchartedPhoenix.SharedEvents

def update(assigns, socket) do
x_axis = assigns.chart.dataset.axes.magnitude_axis
Expand All @@ -18,19 +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
end
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ defmodule UnchartedPhoenix.LiveColumnComponent do
"""

use Phoenix.LiveComponent
use UnchartedPhoenix.TableEvents
use UnchartedPhoenix.SharedEvents

def update(assigns, socket) do
y_axis = assigns.chart.dataset.axes.magnitude_axis
Expand All @@ -14,19 +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
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
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ defmodule UnchartedPhoenix.LiveLineComponent do
"""

use Phoenix.LiveComponent
use UnchartedPhoenix.TableEvents
use UnchartedPhoenix.SharedEvents

def update(assigns, socket) do
x_axis = assigns.chart.dataset.axes.x
Expand All @@ -18,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 @@ -28,14 +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
end
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,14 @@ defmodule UnchartedPhoenix.LivePieComponent do
"""

use Phoenix.LiveComponent
use UnchartedPhoenix.TableEvents
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
end
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,15 @@ defmodule UnchartedPhoenix.LiveProgressComponent do

alias Uncharted.ProgressChart
use Phoenix.LiveComponent
use UnchartedPhoenix.TableEvents
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
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
17 changes: 0 additions & 17 deletions uncharted_phoenix/lib/uncharted_phoenix/table_events.ex

This file was deleted.

0 comments on commit 9a41b38

Please sign in to comment.