Ver Fonte

Load home page faster

Andrew há 9 anos atrás
pai
commit
b2a6cd2b2e

+ 4 - 0
app/controllers/blazer/queries_controller.rb

@@ -2,11 +2,15 @@ module Blazer
   class QueriesController < BaseController
     before_action :set_query, only: [:show, :edit, :update, :destroy]
 
+    def home
+    end
+
     def index
       @queries = Blazer::Query.order(:name)
       @queries = @queries.includes(:creator) if Blazer.user_class
       @trending_queries = Blazer::Audit.group(:query_id).where("created_at > ?", 2.days.ago).having("COUNT(DISTINCT user_id) >= 3").uniq.count(:user_id)
       @checks = Blazer::Check.group(:query_id).count
+      render layout: false
     end
 
     def new

+ 30 - 0
app/views/blazer/queries/home.html.erb

@@ -0,0 +1,30 @@
+<div id="queries">
+  <div id="header" style="margin-bottom: 20px;">
+    <div class="pull-right">
+      <%= link_to "New Query", new_query_path, class: "btn btn-info" %>
+      <%= link_to "Dashboards", dashboards_path, class: "btn btn-primary" %>
+      <%= link_to "Checks", checks_path, class: "btn btn-primary" %>
+    </div>
+    <input type="text" placeholder="Start typing a query or person" style="width: 300px; display: inline-block;" autofocus=true class="search form-control" />
+  </div>
+
+  <table class="table">
+    <thead>
+      <tr>
+        <th>Query</th>
+        <th style="width: 20%; text-align: right;">Mastermind</th>
+      </tr>
+    </thead>
+    <tbody class="list">
+    </tbody>
+  </table>
+</div>
+
+<script>
+  $(".list").load("<%= queries_path %>", function () {
+    var options = {
+      valueNames: ['query', 'creator']
+    };
+    var userList = new List('queries', options);
+  });
+</script>

+ 28 - 56
app/views/blazer/queries/index.html.erb

@@ -1,57 +1,29 @@
-<div id="queries">
-  <div id="header" style="margin-bottom: 20px;">
-    <div class="pull-right">
-      <%= link_to "New Query", new_query_path, class: "btn btn-info" %>
-      <%= link_to "Dashboards", dashboards_path, class: "btn btn-primary" %>
-      <%= link_to "Checks", checks_path, class: "btn btn-primary" %>
-    </div>
-    <input type="text" placeholder="Start typing a query or person" style="width: 300px; display: inline-block;" autofocus=true class="search form-control" />
-  </div>
-
-  <table class="table">
-    <thead>
-      <tr>
-        <th>Query</th>
-        <th style="width: 20%; text-align: right;">Mastermind</th>
-      </tr>
-    </thead>
-    <tbody class="list">
-      <% @queries.each do |query| %>
-        <tr>
-          <td class="query">
-            <%= link_to query.name, query %>
-            <span style="color: #ccc;"><%= extract_vars(query.statement).join(", ") %></span>
-            <% if query.created_at > 2.days.ago %>
-              <small style="font-weight: bold; color: #5cb85c;">NEW</small>
-            <% end %>
-            <% if @trending_queries[query.id] %>
-              <small style="font-weight: bold; color: #f60;">TRENDING</small>
-            <% end %>
-            <% if @checks[query.id] %>
-              <small style="font-weight: bold; color: #f60;">CHECK</small>
-            <% end %>
-            <div class="hide"><%= query.name.gsub(/\s+/, "") %></div>
-          </td>
-          <td class="creator text-right text-muted">
-            <% if query.respond_to?(:creator) && (creator = query.creator) && creator.respond_to?(Blazer.user_name) %>
-              <% name = creator.send(Blazer.user_name) %>
-              <% if creator == blazer_user %>
-                You
-                <div class="hide">me <%= name %></div>
-              <% else %>
-                <%= name %>
-              <% end %>
-            <% end %>
-          </td>
-        </tr>
+<% @queries.each do |query| %>
+  <tr>
+    <td class="query">
+      <%= link_to query.name, query %>
+      <span style="color: #ccc;"><%= extract_vars(query.statement).join(", ") %></span>
+      <% if query.created_at > 2.days.ago %>
+        <small style="font-weight: bold; color: #5cb85c;">NEW</small>
       <% end %>
-    </tbody>
-  </table>
-</div>
-
-<script>
-  var options = {
-    valueNames: ['query', 'creator']
-  };
-  var userList = new List('queries', options);
-</script>
+      <% if @trending_queries[query.id] %>
+        <small style="font-weight: bold; color: #f60;">TRENDING</small>
+      <% end %>
+      <% if @checks[query.id] %>
+        <small style="font-weight: bold; color: #f60;">CHECK</small>
+      <% end %>
+      <div class="hide"><%= query.name.gsub(/\s+/, "") %></div>
+    </td>
+    <td class="creator text-right text-muted">
+      <% if query.respond_to?(:creator) && (creator = query.creator) && creator.respond_to?(Blazer.user_name) %>
+        <% name = creator.send(Blazer.user_name) %>
+        <% if creator == blazer_user %>
+          You
+          <div class="hide">me <%= name %></div>
+        <% else %>
+          <%= name %>
+        <% end %>
+      <% end %>
+    </td>
+  </tr>
+<% end %>

+ 2 - 2
config/routes.rb

@@ -1,5 +1,5 @@
 Blazer::Engine.routes.draw do
-  resources :queries, except: [:index] do
+  resources :queries do
     post :run, on: :collection # err on the side of caution
     get :tables, on: :collection
   end
@@ -7,5 +7,5 @@ Blazer::Engine.routes.draw do
     get :run, on: :member
   end
   resources :dashboards
-  root to: "queries#index"
+  root to: "queries#home"
 end