Bläddra i källkod

Show target-runner relationships in a diagram.

Akinori MUSHA 10 år sedan
förälder
incheckning
0ae0f1a302
2 ändrade filer med 22 tillägg och 3 borttagningar
  1. 11 1
      app/helpers/agent_helper.rb
  2. 11 2
      app/helpers/dot_helper.rb

+ 11 - 1
app/helpers/agent_helper.rb

@@ -15,4 +15,14 @@ module AgentHelper
   def agent_show_class(agent)
     agent.short_type.underscore.dasherize
   end
-end
+
+  def agent_schedule(agent, delimiter = ', ')
+    return 'n/a' unless agent.can_be_scheduled?
+
+    runners = agent.runners
+    [
+      *(CGI.escape_html(agent.schedule.humanize.titleize) unless agent.schedule == 'never' && agent.runners.count > 0),
+      *runners.map { |agent| link_to(agent.name, agent_path(agent)) },
+    ].join(delimiter).html_safe
+  end
+end

+ 11 - 2
app/helpers/dot_helper.rb

@@ -138,7 +138,9 @@ module DotHelper
       def agent_edge(agent, receiver)
         edge(agent_id[agent],
              agent_id[receiver],
-             style: ('dashed' unless receiver.propagate_immediately),
+             style: ('dashed' unless agent.can_run_other_agents? || !receiver.propagate_immediately?),
+             label: (' runs ' if agent.can_run_other_agents?),
+             arrowhead: ('empty' if agent.can_run_other_agents?),
              color: (@disabled if agent.disabled? || receiver.disabled?))
       end
 
@@ -151,10 +153,17 @@ module DotHelper
                   fontsize: 10,
                   fontname: ('Helvetica' if rich)
 
+        statement 'edge',
+                  fontsize: 10,
+                  fontname: ('Helvetica' if rich)
+
         agents.each.with_index { |agent, index|
           agent_node(agent)
 
-          agent.receivers.each { |receiver|
+          [
+            *agent.receivers,
+            *(agent.targets if agent.can_run_other_agents?)
+          ].each { |receiver|
             agent_edge(agent, receiver) if agents.include?(receiver)
           }
         }