mirror of
https://github.com/Fishwaldo/huginn.git
synced 2025-03-15 19:31:26 +00:00
Merge pull request #1482 from kreuzwerker/feature/agent-icons
Add Agent connection status icons
This commit is contained in:
commit
30fcfe1338
3 changed files with 55 additions and 0 deletions
|
@ -318,3 +318,12 @@ $service-colors: (
|
|||
color: yellow;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.glyphicon-flipped {
|
||||
-ms-transform: translateZ(0);
|
||||
-webkit-transform: translateZ(0);
|
||||
transform: translateZ(0);
|
||||
-ms-transform: scaleX(-1);
|
||||
-webkit-transform: scaleX(-1);
|
||||
transform: scaleX(-1);
|
||||
}
|
||||
|
|
|
@ -57,4 +57,46 @@ module AgentHelper
|
|||
'maybe'.freeze
|
||||
end
|
||||
end
|
||||
|
||||
def agent_type_icon(agent, agents)
|
||||
receiver_count = links_counter_cache(agents)[:links_as_receiver][agent.id] || 0
|
||||
control_count = links_counter_cache(agents)[:control_links_as_controller][agent.id] || 0
|
||||
source_count = links_counter_cache(agents)[:links_as_source][agent.id] || 0
|
||||
|
||||
if control_count > 0 && receiver_count > 0
|
||||
content_tag('span') do
|
||||
concat icon_tag('glyphicon-arrow-right')
|
||||
concat tag('br')
|
||||
concat icon_tag('glyphicon-new-window', class: 'glyphicon-flipped')
|
||||
end
|
||||
elsif control_count > 0 && receiver_count == 0
|
||||
icon_tag('glyphicon-new-window', class: 'glyphicon-flipped')
|
||||
elsif receiver_count > 0 && source_count == 0
|
||||
icon_tag('glyphicon-arrow-right')
|
||||
elsif receiver_count == 0 && source_count > 0
|
||||
icon_tag('glyphicon-arrow-left')
|
||||
elsif receiver_count > 0 && source_count > 0
|
||||
icon_tag('glyphicon-transfer')
|
||||
else
|
||||
icon_tag('glyphicon-unchecked')
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def links_counter_cache(agents)
|
||||
@counter_cache ||= {}
|
||||
@counter_cache[agents.__id__] ||= {}.tap do |cache|
|
||||
agent_ids = agents.map(&:id)
|
||||
cache[:links_as_receiver] = Hash[Link.where(receiver_id: agent_ids)
|
||||
.group(:receiver_id)
|
||||
.pluck('receiver_id', 'count(receiver_id) as id')]
|
||||
cache[:links_as_source] = Hash[Link.where(source_id: agent_ids)
|
||||
.group(:source_id)
|
||||
.pluck('source_id', 'count(source_id) as id')]
|
||||
cache[:control_links_as_controller] = Hash[ControlLink.where(controller_id: agent_ids)
|
||||
.group(:controller_id)
|
||||
.pluck('controller_id', 'count(controller_id) as id')]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<div class='table-responsive'>
|
||||
<table class='table table-striped'>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th><%= sortable_column 'name', 'asc' %></th>
|
||||
<th><%= sortable_column 'created_at', 'desc', name: 'Age' %></th>
|
||||
<th>Schedule</th>
|
||||
|
@ -14,6 +15,9 @@
|
|||
|
||||
<% @agents.each do |agent| %>
|
||||
<tr>
|
||||
<td class='<%= "agent-unavailable" if agent.unavailable? %>'>
|
||||
<%= agent_type_icon(agent, @agents) %>
|
||||
</td>
|
||||
<td class='<%= "agent-unavailable" if agent.unavailable? %>'>
|
||||
<%= link_to agent.name, agent_path(agent, return: (defined?(return_to) && return_to) || request.path) %>
|
||||
<br/>
|
||||
|
|
Loading…
Add table
Reference in a new issue