defmodule Snowhite.Modules.StockMarket do use Snowhite.Builder.Module import Snowhite.Builder.Module alias __MODULE__ alias __MODULE__.Symbol def mount(socket) do send(self(), :updated) socket = assign(socket, :prices, []) {:ok, socket} end def module_options do %{ symbols: :required, adapter: {:optional, StockMarket.Adapters.Finnhub}, adapter_options: {:optional, []} } end def render(assigns) do ~L"""
<%= for %Symbol{symbol: symbol, value: value, change: change} <- @prices do %>

<%= symbol %>

<%= Float.round(value, 2) %>

<%= Float.round(change, 2) %>

<% end %>
""" end defp color(value) when value > 0, do: "positive" defp color(value) when value < 0, do: "negative" defp color(_value), do: "even" def handle_info(:updated, socket) do prices = StockMarket.Server.prices() socket = assign(socket, :prices, prices) {:noreply, socket} end def applications(options) do [ {StockMarket.Server, options} ] end end