From 96537fcd3a9fe59d82ffb4fb9186be6922930963 Mon Sep 17 00:00:00 2001 From: Dominik Sander Date: Thu, 28 Apr 2016 16:04:02 +0200 Subject: [PATCH] Add agent role icons in agent tables --- .../stylesheets/application.css.scss.erb | 9 +++++++ app/controllers/agents_controller.rb | 2 +- app/controllers/scenarios_controller.rb | 2 +- app/helpers/agent_helper.rb | 24 +++++++++++++++++++ app/views/agents/_table.html.erb | 4 ++++ 5 files changed, 39 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/application.css.scss.erb b/app/assets/stylesheets/application.css.scss.erb index 144680c5..c400f1f3 100644 --- a/app/assets/stylesheets/application.css.scss.erb +++ b/app/assets/stylesheets/application.css.scss.erb @@ -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); +} diff --git a/app/controllers/agents_controller.rb b/app/controllers/agents_controller.rb index 3f935869..74fca714 100644 --- a/app/controllers/agents_controller.rb +++ b/app/controllers/agents_controller.rb @@ -6,7 +6,7 @@ class AgentsController < ApplicationController 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]) + @agents = current_user.agents.preload(:scenarios, :controllers, :links_as_receiver, :links_as_source, :control_links_as_controller).reorder(table_sort).page(params[:page]) if show_only_enabled_agents? @agents = @agents.where(disabled: false) diff --git a/app/controllers/scenarios_controller.rb b/app/controllers/scenarios_controller.rb index 5ee8d725..376d1bfd 100644 --- a/app/controllers/scenarios_controller.rb +++ b/app/controllers/scenarios_controller.rb @@ -26,7 +26,7 @@ class ScenariosController < ApplicationController @scenario = current_user.scenarios.find(params[:id]) set_table_sort sorts: %w[name last_check_at last_event_at last_receive_at], default: { name: :asc } - @agents = @scenario.agents.preload(:scenarios, :controllers).reorder(table_sort).page(params[:page]) + @agents = @scenario.agents.preload(:scenarios, :controllers, :links_as_receiver, :links_as_source, :control_links_as_controller).reorder(table_sort).page(params[:page]) respond_to do |format| format.html diff --git a/app/helpers/agent_helper.rb b/app/helpers/agent_helper.rb index 6299f24f..125c8526 100644 --- a/app/helpers/agent_helper.rb +++ b/app/helpers/agent_helper.rb @@ -57,4 +57,28 @@ module AgentHelper 'maybe'.freeze end end + + def agent_type_icon(agent) + receiver_count = agent.links_as_receiver.length + control_count = agent.control_links_as_controller.length + source_count = agent.links_as_source.length + + 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 end diff --git a/app/views/agents/_table.html.erb b/app/views/agents/_table.html.erb index 77dbe5d0..234e2032 100644 --- a/app/views/agents/_table.html.erb +++ b/app/views/agents/_table.html.erb @@ -1,6 +1,7 @@
+ @@ -14,6 +15,9 @@ <% @agents.each do |agent| %> +
<%= sortable_column 'name', 'asc' %> <%= sortable_column 'created_at', 'desc', name: 'Age' %> Schedule
+ <%= agent_type_icon(agent) %> + <%= link_to agent.name, agent_path(agent, return: (defined?(return_to) && return_to) || request.path) %>