Selaa lähdekoodia

Merge pull request #827 from cantino/diagram_toggle_disabled

Allow toggling disabled agents on an Agent Diagram
Akinori MUSHA 9 vuotta sitten
vanhempi
commit
5743087ea9

+ 9 - 5
app/controllers/diagrams_controller.rb

@@ -1,9 +1,13 @@
 class DiagramsController < ApplicationController
   def show
-    @agents = if params[:scenario_id].present?
-                current_user.scenarios.find(params[:scenario_id]).agents.includes(:receivers)
-              else
-                current_user.agents.includes(:receivers)
-              end
+    if params[:scenario_id].present?
+      @scenario = current_user.scenarios.find(params[:scenario_id])
+      agents = @scenario.agents
+    else
+      agents = current_user.agents
+    end
+    @disabled_agents = agents.inactive
+    agents = agents.active if params[:exclude_disabled].present?
+    @agents = agents.includes(:receivers)
   end
 end

+ 2 - 1
app/models/agent.rb

@@ -60,7 +60,8 @@ class Agent < ActiveRecord::Base
   has_many :scenario_memberships, :dependent => :destroy, :inverse_of => :agent
   has_many :scenarios, :through => :scenario_memberships, :inverse_of => :agents
 
-  scope :active, -> { where(disabled: false) }
+  scope :active,   -> { where(disabled: false) }
+  scope :inactive, -> { where(disabled: true) }
 
   scope :of_type, lambda { |type|
     type = case type

+ 8 - 1
app/views/diagrams/show.html.erb

@@ -9,7 +9,14 @@
         <h2>Agent Event Flow</h2>
       </div>
       <div class="btn-group">
-        <%= link_to icon_tag('glyphicon-chevron-left') + ' Back'.html_safe, (params[:scenario_id] ? scenario_path(params[:scenario_id]) : agents_path), class: "btn btn-default" %>
+        <%= link_to icon_tag('glyphicon-chevron-left') + ' Back'.html_safe, (@scenario ? scenario_path(@scenario) : agents_path), class: "btn btn-default" %>
+        <% if (num_disabled = @disabled_agents.count).nonzero? -%>
+          <% if params[:exclude_disabled] %>
+            <%= link_to @scenario ? scenario_diagram_path(@scenario) : diagram_path, class: 'btn btn-default' do %><%= icon_tag('glyphicon-eye-open') %> Show <%= pluralize(num_disabled, 'disabled Agent') %><% end %>
+          <% else %>
+            <%= link_to @scenario ? scenario_diagram_path(@scenario, exclude_disabled: true) : diagram_path(exclude_disabled: true), class: 'btn btn-default' do %><%= icon_tag('glyphicon-eye-close') %> Hide <%= pluralize(num_disabled, 'disabled Agent') %><% end %>
+          <% end %>
+        <% end %>
       </div>
 
       <div class='digraph'>