defmodule ZoeyscomputerWeb.HomeLive do use ZoeyscomputerWeb, :live_view def mount(_params, _session, socket) do if connected?(socket) do :timer.send_interval(750, self(), :update_stats) end socket = assign(socket, cpu_usage: 0, memory_usage: 0, page_title: "home") {:ok, socket} end def handle_info(:update_stats, socket) do {:noreply, assign(socket, get_stats())} end defp get_stats do cpu_usage = :cpu_sup.util() mem_data = :memsup.get_system_memory_data() total_memory = Keyword.get(mem_data, :total_memory, 0) free_memory = Keyword.get(mem_data, :free_memory, 0) memory_usage = if total_memory > 0 do (total_memory - free_memory) / total_memory * 100 else 0 end %{ cpu_usage: Float.round(cpu_usage, 2), memory_usage: Float.round(100 - memory_usage, 2) } end def render(assigns) do ~H"""