</div>
<div class="col-md-6">
- <% nodes = Node.filter([["ip_address", "!=", nil]]) %>
- <% nodes = Node.filter([["last_ping_at", ">", Time.now - 3600]]) %>
++ <% nodes = Node.filter([["last_ping_at", ">", Time.now - 3600],["ip_address", "!=", nil]]) %>
<div class="panel panel-default" style="min-height: 10.5em">
- <div class="panel-heading"><span class="panel-title">Compute and job status</span>
- <span class="pull-right">
- <%= link_to jobs_path, class: 'btn btn-default btn-xs' do %>
- All jobs <i class="fa fa-fw fa-arrow-circle-right"></i>
+ <div class="panel-heading"><span class="panel-title">Compute node status</span>
+ <span class="pull-right compute-node-actions">
+ <% if current_user.andand.is_admin %>
+ <span>
+ <%= link_to nodes_path, class: 'btn btn-default btn-xs' do %>
+ All nodes <i class="fa fa-fw fa-arrow-circle-right"></i>
+ <% end %>
+ </span>
<% end %>
+ <span>
+ <%= link_to jobs_path, class: 'btn btn-default btn-xs' do %>
+ All jobs <i class="fa fa-fw fa-arrow-circle-right"></i>
+ <% end %>
+ </span>
</span>
</div>
- <div class="panel-body">
+ <div class="panel-body compute-node-summary-pane">
<div>
<%= render partial: 'compute_node_summary', locals: {nodes: nodes} %>
- <div style="text-align: center">
- <a data-toggle="collapse" href="#compute_node_status">Details <span class="caret"></span></a>
- </div>
+ <% active_nodes = [] %>
+ <% nodes.sort_by { |n| n.hostname || "" }.each do |n| %>
+ <% if n.crunch_worker_state.in? ["busy", "idle"] %>
+ <% active_nodes << n %>
+ <% end %>
+ <% end %>
+ <% if active_nodes.any? %>
+ <div style="text-align: center">
+ <a data-toggle="collapse" href="#compute_node_status">Details <span class="caret"></span></a>
+ </div>
+ <% end %>
</div>
<div id="compute_node_status" class="collapse">
- <%= render partial: 'compute_node_status', locals: {nodes: nodes} %>
+ <%= render partial: 'compute_node_status', locals: {nodes: active_nodes} %>
</div>
</div>
</div>