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, :system_total_memory, 0) free_memory = Keyword.get(mem_data, :free_memory, 0) buff_memory = Keyword.get(mem_data, :buffered_memory, 0) cached_memory = Keyword.get(mem_data, :cached_memory, 0) memory_usage = if total_memory > 0 do 100 - (free_memory + buff_memory + cached_memory) * 100 / total_memory else 0 end %{ cpu_usage: Float.round(cpu_usage, 2), memory_usage: Float.round(memory_usage, 2) } end def render(assigns) do ~H"""