defmodule ChesstrainerWeb.ChessTestLive do use ChesstrainerWeb, :live_view @impl true def mount(_params, _session, socket) do {:ok, assign(socket, last_move: "None yet", san: "None yet", move_list: [])} end @impl true def render(assigns) do ~H"""

Chessground LiveView Test

Last Played Move:

{@last_move}

{@san}

{if length(@move_list) == 0 do "No Moves" else Enum.reverse(@move_list) |> Enum.join(", ") end}

""" end @impl true def handle_event("load_fen", %{"fen" => fen}, socket) do clean_fen = String.trim(fen) {:noreply, socket |> assign(:last_move, "Position Loaded") |> assign(:san, "None yet") |> assign(:move_list, []) |> push_event("set_fen", %{fen: clean_fen})} end @impl true def handle_event( "move_played", %{"from" => from, "to" => to, "fen" => _fen, "san" => san}, socket ) do current_moves = socket.assigns.move_list {:noreply, socket |> assign(:last_move, "#{from} ➔ #{to}") |> assign(:san, san) |> assign(:move_list, [san | current_moves])} end end