Skip to content

Commit 7fec995

Browse files
committed
refactor upgrade cost markup into common component
1 parent 70e7718 commit 7fec995

File tree

4 files changed

+43
-75
lines changed

4 files changed

+43
-75
lines changed

lib/galaxies_web/components/common_components.ex

+28
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ defmodule GalaxiesWeb.CommonComponents do
44

55
use Gettext, backend: GalaxiesWeb.Gettext
66

7+
attr :events, :list, required: true
8+
79
def build_queue(assigns) do
810
# TODO look into replacing with <.table>
911
~H"""
@@ -87,4 +89,30 @@ defmodule GalaxiesWeb.CommonComponents do
8789
</div>
8890
"""
8991
end
92+
93+
attr :formula, :string, required: true
94+
attr :level, :integer, required: true
95+
96+
def upgrade_cost(assigns) do
97+
{metal, crystal, deuterium, energy} =
98+
Galaxies.calc_upgrade_cost(assigns.formula, assigns.level)
99+
100+
assigns = %{metal: metal, crystal: crystal, deuterium: deuterium, energy: energy}
101+
102+
~H"""
103+
Requirements:
104+
<%= if @metal > 0 do %>
105+
Metal: <strong>{Numbers.format_number(@metal)}</strong>
106+
<% end %>
107+
<%= if @crystal > 0 do %>
108+
Crystal: <strong>{Numbers.format_number(@crystal)}</strong>
109+
<% end %>
110+
<%= if @deuterium > 0 do %>
111+
Deuterium: <strong>{Numbers.format_number(@deuterium)}</strong>
112+
<% end %>
113+
<%= if @energy > 0 do %>
114+
Energy: <strong>{Numbers.format_number(@energy)}</strong>
115+
<% end %>
116+
"""
117+
end
90118
end

lib/galaxies_web/live/facilities_live.ex

+4-25
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
defmodule GalaxiesWeb.FacilitiesLive do
2-
alias GalaxiesWeb.Numbers
32
alias GalaxiesWeb.CommonComponents
43
use GalaxiesWeb, :live_view
54

@@ -54,7 +53,10 @@ defmodule GalaxiesWeb.FacilitiesLive do
5453
/>
5554
<p>
5655
{building.description_short}<br />
57-
{list_upgrade_costs(building.upgrade_cost_formula, building.current_level + 1)}
56+
<.upgrade_cost
57+
formula={building.upgrade_cost_formula}
58+
level={building.current_level + 1}
59+
/>
5860
</p>
5961
</div>
6062
</div>
@@ -113,27 +115,4 @@ defmodule GalaxiesWeb.FacilitiesLive do
113115

114116
assign(socket, build_queue: build_queue, planet_buildings: planet_buildings)
115117
end
116-
117-
defp list_upgrade_costs(nil, _current_level), do: nil
118-
119-
defp list_upgrade_costs(formula, current_level) do
120-
{metal, crystal, deuterium, energy} = Galaxies.calc_upgrade_cost(formula, current_level)
121-
assigns = %{metal: metal, crystal: crystal, deuterium: deuterium, energy: energy}
122-
123-
~H"""
124-
Requirements:
125-
<%= if @metal > 0 do %>
126-
Metal: <strong>{Numbers.format_number(@metal)}</strong>
127-
<% end %>
128-
<%= if @crystal > 0 do %>
129-
Crystal: <strong>{Numbers.format_number(@crystal)}</strong>
130-
<% end %>
131-
<%= if @deuterium > 0 do %>
132-
Deuterium: <strong>{Numbers.format_number(@deuterium)}</strong>
133-
<% end %>
134-
<%= if @energy > 0 do %>
135-
Energy: <strong>{Numbers.format_number(@energy)}</strong>
136-
<% end %>
137-
"""
138-
end
139118
end

lib/galaxies_web/live/research_live.ex

+7-25
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
defmodule GalaxiesWeb.ResearchLive do
2-
alias GalaxiesWeb.Numbers
2+
alias GalaxiesWeb.CommonComponents
33
use GalaxiesWeb, :live_view
44

55
alias Galaxies.Accounts
66

7+
import CommonComponents
8+
79
def mount(_params, _session, socket) do
810
socket = GalaxiesWeb.Common.mount_live_context(socket)
911

@@ -45,7 +47,10 @@ defmodule GalaxiesWeb.ResearchLive do
4547
/>
4648
<p>
4749
{research.description_short}<br />
48-
{list_upgrade_costs(research.upgrade_cost_formula, research.current_level + 1)}
50+
<.upgrade_cost
51+
formula={research.upgrade_cost_formula}
52+
level={research.current_level + 1}
53+
/>
4954
</p>
5055
</div>
5156
</div>
@@ -117,27 +122,4 @@ defmodule GalaxiesWeb.ResearchLive do
117122
list_replace(t, to_replace, [h | acc])
118123
end
119124
end
120-
121-
defp list_upgrade_costs(nil, _current_level), do: nil
122-
123-
defp list_upgrade_costs(formula, current_level) do
124-
{metal, crystal, deuterium, energy} = Galaxies.calc_upgrade_cost(formula, current_level)
125-
assigns = %{metal: metal, crystal: crystal, deuterium: deuterium, energy: energy}
126-
127-
~H"""
128-
Requirements:
129-
<%= if @metal > 0 do %>
130-
Metal: <strong>{Numbers.format_number(@metal)}</strong>
131-
<% end %>
132-
<%= if @crystal > 0 do %>
133-
Crystal: <strong>{Numbers.format_number(@crystal)}</strong>
134-
<% end %>
135-
<%= if @deuterium > 0 do %>
136-
Deuterium: <strong>{Numbers.format_number(@deuterium)}</strong>
137-
<% end %>
138-
<%= if @energy > 0 do %>
139-
Energy: <strong>{Numbers.format_number(@energy)}</strong>
140-
<% end %>
141-
"""
142-
end
143125
end

lib/galaxies_web/live/resources_live.ex

+4-25
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
defmodule GalaxiesWeb.ResourcesLive do
2-
alias GalaxiesWeb.Numbers
32
alias GalaxiesWeb.CommonComponents
43
use GalaxiesWeb, :live_view
54

@@ -54,7 +53,10 @@ defmodule GalaxiesWeb.ResourcesLive do
5453
/>
5554
<p>
5655
{building.description_short}<br />
57-
{list_upgrade_costs(building.upgrade_cost_formula, building.current_level + 1)}
56+
<.upgrade_cost
57+
formula={building.upgrade_cost_formula}
58+
level={building.current_level + 1}
59+
/>
5860
</p>
5961
</div>
6062
</div>
@@ -113,27 +115,4 @@ defmodule GalaxiesWeb.ResourcesLive do
113115

114116
assign(socket, build_queue: build_queue, planet_buildings: planet_buildings)
115117
end
116-
117-
defp list_upgrade_costs(nil, _current_level), do: nil
118-
119-
defp list_upgrade_costs(formula, current_level) do
120-
{metal, crystal, deuterium, energy} = Galaxies.calc_upgrade_cost(formula, current_level)
121-
assigns = %{metal: metal, crystal: crystal, deuterium: deuterium, energy: energy}
122-
123-
~H"""
124-
Requirements:
125-
<%= if @metal > 0 do %>
126-
Metal: <strong>{Numbers.format_number(@metal)}</strong>
127-
<% end %>
128-
<%= if @crystal > 0 do %>
129-
Crystal: <strong>{Numbers.format_number(@crystal)}</strong>
130-
<% end %>
131-
<%= if @deuterium > 0 do %>
132-
Deuterium: <strong>{Numbers.format_number(@deuterium)}</strong>
133-
<% end %>
134-
<%= if @energy > 0 do %>
135-
Energy: <strong>{Numbers.format_number(@energy)}</strong>
136-
<% end %>
137-
"""
138-
end
139118
end

0 commit comments

Comments
 (0)