diff --git a/app/controllers/agents_controller.rb b/app/controllers/agents_controller.rb index 7adda59f2a..56770830d3 100644 --- a/app/controllers/agents_controller.rb +++ b/app/controllers/agents_controller.rb @@ -7,6 +7,22 @@ def index set_table_sort sorts: %w[name created_at last_check_at last_event_at last_receive_at], default: { created_at: :desc } @agents = current_user.agents.preload(:scenarios, :controllers).reorder(table_sort).page(params[:page]) + @shared_agents = Agent.shared - @agents + + if show_only_enabled_agents? + @agents = @agents.where(disabled: false) + end + + respond_to do |format| + format.html + format.json { render json: @agents } + end + end + + def shared + set_table_sort sorts: %w[name users.username created_at last_check_at last_event_at last_receive_at], default: { created_at: :desc } + + @agents = Agent.shared.preload(:scenarios, :controllers).reorder(table_sort).page(params[:page]) if show_only_enabled_agents? @agents = @agents.where(disabled: false) diff --git a/app/views/agents/_shared_table.html.erb b/app/views/agents/_shared_table.html.erb new file mode 100644 index 0000000000..b45e48b9f1 --- /dev/null +++ b/app/views/agents/_shared_table.html.erb @@ -0,0 +1,103 @@ +
+ | <%= sortable_column 'name', 'asc' %> | +<%= sortable_column 'created_at', 'desc', name: 'Age' %> | +Schedule | +<%= sortable_column 'last_check_at', name: 'Last Check' %> | +<%= sortable_column 'last_event_at', name: 'Last Event Out' %> | +<%= sortable_column 'last_receive_at', name: 'Last Event In' %> | +Events Created | +Working? | +<%= sortable_column 'users.username', 'asc', name: 'User' %> | ++ |
---|---|---|---|---|---|---|---|---|---|---|
+ <%= agent_type_icon(agent, agents) %> + | +
+ <% if current_user == agent.user %>
+ <%= link_to agent.name, agent_path(agent, return: (defined?(return_to) && return_to) || request.path) %>
+ <% else %>
+ <%= agent.name %>
+ <% end %>
+ + <%= agent.short_type.titleize %> + <% if current_user == agent.user %> + <% if agent.scenarios.present? %> + + <%= scenario_links(agent) %> + + <% end %> + <% end %> + |
+ + <%= time_ago_in_words agent.created_at %> + | +
+ <% if agent.can_be_scheduled? %>
+ <%= agent_schedule(agent, ', ') %> + <% else %> + + <% end %> + |
+ + <% if agent.can_be_scheduled? %> + <%= agent.last_check_at ? time_ago_in_words(agent.last_check_at) + " ago" : "never" %> + <% else %> + + <% end %> + | ++ <% if agent.can_create_events? %> + <%= agent.last_event_at ? time_ago_in_words(agent.last_event_at) + " ago" : "never" %> + <% else %> + + <% end %> + | ++ <% if agent.can_receive_events? %> + <%= agent.last_receive_at ? time_ago_in_words(agent.last_receive_at) + " ago" : "never" %> + <% else %> + + <% end %> + | ++ <% if agent.can_create_events? %> + <%= link_to(agent.events_count || 0, agent_events_path(agent, return: (defined?(return_to) && return_to) || request.path)) %> + <% else %> + + <% end %> + | +<%= working(agent) %> | ++ <% if current_user == agent.user %> + <%= agent.user.username %> + <% else %> + <%= link_to agent.user.username, edit_admin_user_path(agent.user, return: (defined?(return_to) && return_to) || request.path) %> + <% end %> + | +
+ <% if current_user == agent.user %>
+
+
+ <%= render 'agents/action_menu', agent: agent, return_to: (defined?(return_to) && return_to) || request.path %>
+
+ <% else %>
+ <%#= link_to 'Become User', switch_user_admin_user_path(agent.user), class: "btn btn-sm btn-default btn-info" %>
+ <% end %>
+ |
+
<%= markdown(@scenario.description) %><% end %> - <%= render 'agents/table', :return_to => scenario_path(@scenario) %> + <%= render partial: 'agents/table', locals: {agents: @agents}, :return_to => scenario_path(@scenario) %>