Merge pull request #271 from czhu12/chriszhu__async_metrics_for_clsuters

asyn metrics loading
This commit is contained in:
Chris Zhu
2025-08-24 09:47:15 -07:00
committed by GitHub
6 changed files with 33 additions and 7 deletions

View File

@@ -4,7 +4,6 @@ class Clusters::MetricsController < Clusters::BaseController
before_action :set_cluster
def show
@nodes = K8::Metrics::Api::Node.ls(@cluster)
@time_range = params[:time_range] || "2h"
start_time = parse_time_range(@time_range)
end_time = Time.now

View File

@@ -0,0 +1,21 @@
class Async::Clusters::Metrics::ShowViewModel < Async::BaseViewModel
include MetricsHelper
include StorageHelper
expects :cluster_id
def cluster
@cluster ||= current_user.clusters.find(params[:cluster_id])
end
def initial_render
render "shared/components/table_skeleton", locals: { columns: 5 }
end
def async_render
nodes = K8::Metrics::Api::Node.ls(cluster)
render "clusters/metrics/live_metrics", locals: {
nodes: nodes
}
end
end

View File

@@ -1,5 +1,5 @@
<%= add_on_layout(@add_on) do %>
<%= turbo_frame_tag "metrics", data: { controller: "refresh-turbo-frame", "refresh-turbo-frame-frequency-value": 5000 } do %>
<%= turbo_frame_tag "metrics", data: { controller: "refresh-turbo-frame", "refresh-turbo-frame-frequency-value": 30000 } do %>
<%= render(
"shared/partials/async_renderer",
view_model: Async::AddOns::Metrics::ShowViewModel.new(

View File

@@ -33,7 +33,7 @@
</tr>
</thead>
<tbody>
<% @nodes.each do |node| %>
<% nodes.each do |node| %>
<tr class="cursor-pointer hover:bg-base-200/40">
<td>
<div class="flex items-center space-x-3 truncate">
@@ -86,7 +86,7 @@
</tr>
</thead>
<tbody>
<% @nodes.each do |node| %>
<% nodes.each do |node| %>
<% node.namespaces.each do |namespace, pods| %>
<% pods.each do |pod| %>
<tr class="cursor-pointer hover:bg-base-200/40">

View File

@@ -1,6 +1,12 @@
<%= cluster_layout(@cluster) do %>
<%= turbo_frame_tag "metrics", data: { controller: "refresh-turbo-frame", "refresh-turbo-frame-frequency-value": 5000 } do %>
<%= render "clusters/metrics/live_metrics" %>
<%= turbo_frame_tag "metrics", data: { controller: "refresh-turbo-frame", "refresh-turbo-frame-frequency-value": 30000 } do %>
<%= render(
"shared/partials/async_renderer",
view_model: Async::Clusters::Metrics::ShowViewModel.new(
current_user,
cluster_id: @cluster.id
)
) %>
<% end %>
<%= turbo_frame_tag "charts" do %>

View File

@@ -1,7 +1,7 @@
<%= content_for :title, t("scaffold.edit.title", model: "Project") %>
<%= project_layout(@project) do %>
<%= turbo_frame_tag "metrics", data: { controller: "refresh-turbo-frame", "refresh-turbo-frame-frequency-value": 5000 } do %>
<%= turbo_frame_tag "metrics", data: { controller: "refresh-turbo-frame", "refresh-turbo-frame-frequency-value": 30000 } do %>
<%= render(
"shared/partials/async_renderer",
view_model: Async::Projects::Metrics::IndexViewModel.new(