@@ -15,4 +15,14 @@ module AgentHelper |
||
15 | 15 |
def agent_show_class(agent) |
16 | 16 |
agent.short_type.underscore.dasherize |
17 | 17 |
end |
18 |
-end |
|
18 |
+ |
|
19 |
+ def agent_schedule(agent, delimiter = ', ') |
|
20 |
+ return 'n/a' unless agent.can_be_scheduled? |
|
21 |
+ |
|
22 |
+ runners = agent.runners |
|
23 |
+ [ |
|
24 |
+ *(CGI.escape_html(agent.schedule.humanize.titleize) unless agent.schedule == 'never' && agent.runners.count > 0), |
|
25 |
+ *runners.map { |agent| link_to(agent.name, agent_path(agent)) }, |
|
26 |
+ ].join(delimiter).html_safe |
|
27 |
+ end |
|
28 |
+end |
@@ -138,7 +138,9 @@ module DotHelper |
||
138 | 138 |
def agent_edge(agent, receiver) |
139 | 139 |
edge(agent_id[agent], |
140 | 140 |
agent_id[receiver], |
141 |
- style: ('dashed' unless receiver.propagate_immediately), |
|
141 |
+ style: ('dashed' unless agent.can_run_other_agents? || !receiver.propagate_immediately?), |
|
142 |
+ label: (' runs ' if agent.can_run_other_agents?), |
|
143 |
+ arrowhead: ('empty' if agent.can_run_other_agents?), |
|
142 | 144 |
color: (@disabled if agent.disabled? || receiver.disabled?)) |
143 | 145 |
end |
144 | 146 |
|
@@ -151,10 +153,17 @@ module DotHelper |
||
151 | 153 |
fontsize: 10, |
152 | 154 |
fontname: ('Helvetica' if rich) |
153 | 155 |
|
156 |
+ statement 'edge', |
|
157 |
+ fontsize: 10, |
|
158 |
+ fontname: ('Helvetica' if rich) |
|
159 |
+ |
|
154 | 160 |
agents.each.with_index { |agent, index| |
155 | 161 |
agent_node(agent) |
156 | 162 |
|
157 |
- agent.receivers.each { |receiver| |
|
163 |
+ [ |
|
164 |
+ *agent.receivers, |
|
165 |
+ *(agent.targets if agent.can_run_other_agents?) |
|
166 |
+ ].each { |receiver| |
|
158 | 167 |
agent_edge(agent, receiver) if agents.include?(receiver) |
159 | 168 |
} |
160 | 169 |
} |