defmodule MoonWeb.Pages.Components.Charts.LineChartPage do @moduledoc false use MoonWeb, :live_view alias Moon.Components.LineChartCard alias Moon.Components.Link alias MoonWeb.Components.ExampleAndCode alias MoonWeb.Components.Page alias MoonWeb.Components.ComponentPageDescription data(breadcrumbs, :any, default: [ %{ to: "#", name: "Charts" }, %{ to: "/components/charts/line-chart", name: "Line Chart" } ] ) def mount(_params, _session, socket) do filters = [ %{ label: "Active players", data_key: "actives", value: "3,174", color: "frieza", is_active: true }, %{ label: "Turnover", data_key: "turnover", value: "12,174.23", color: "krillin", is_active: true }, %{ label: "GGR", data_key: "ggr", value: "12,174.23", color: "roshi", is_active: false }, %{ label: "Bets", data_key: "bets", value: "3,174", color: "whis", is_active: true }, %{ label: "Margin", data_key: "margin", value: "5.38%", color: "chichi", is_active: false } ] socket = assign(socket, filters: filters, select_options: [ [key: "by mobile", value: "mobile"], [key: "by desktop", value: "desktop"] ], values: generate_data(filters) ) {:ok, socket} end def handle_params(_params, uri, socket) do {:noreply, assign(socket, uri: uri)} end def render(assigns) do ~F"""

Based on Vega-Lite

<:example> <:code>{line_chard_1_code()} <:state>@filters = {inspect(@filters, pretty: true)}

@values = {inspect(@values, pretty: true)}
""" end def generate_data(filters) do 1..25 |> Enum.to_list() |> Enum.flat_map(fn day -> filters |> Enum.map(fn filter -> %{ x: "#{day}/06", y: Enum.random(30..100), category: filter.data_key } end) end) end def line_chard_1_code do """ """ end end