@@ -22,14 +22,13 @@ window.setupJsonEditor = ($editors = $(".live-json-editor")) -> |
||
22 | 22 |
return editors |
23 | 23 |
|
24 | 24 |
hideSchedule = -> |
25 |
- $(".schedule-region select").hide() |
|
25 |
+ $(".schedule-region .can-be-scheduled").hide() |
|
26 | 26 |
$(".schedule-region .cannot-be-scheduled").show() |
27 | 27 |
|
28 | 28 |
showSchedule = (defaultSchedule = null) -> |
29 |
- $(".schedule-region select").show() |
|
30 | 29 |
if defaultSchedule? |
31 | 30 |
$(".schedule-region select").val(defaultSchedule).change() |
32 |
- $(".schedule-region select").show() |
|
31 |
+ $(".schedule-region .can-be-scheduled").show() |
|
33 | 32 |
$(".schedule-region .cannot-be-scheduled").hide() |
34 | 33 |
|
35 | 34 |
hideLinks = -> |
@@ -43,6 +42,16 @@ showLinks = -> |
||
43 | 42 |
$(".link-region .cannot-receive-events").hide() |
44 | 43 |
showEventDescriptions() |
45 | 44 |
|
45 |
+hideChains = -> |
|
46 |
+ $(".chain-region .select2-container").hide() |
|
47 |
+ $(".chain-region .propagate-immediately").hide() |
|
48 |
+ $(".chain-region .cannot-receive-events").show() |
|
49 |
+ |
|
50 |
+showChains = -> |
|
51 |
+ $(".chain-region .select2-container").show() |
|
52 |
+ $(".chain-region .propagate-immediately").show() |
|
53 |
+ $(".chain-region .cannot-receive-events").hide() |
|
54 |
+ |
|
46 | 55 |
hideEventCreation = -> |
47 | 56 |
$(".event-related-region").hide() |
48 | 57 |
|
@@ -161,6 +170,11 @@ $(document).ready -> |
||
161 | 170 |
else |
162 | 171 |
hideLinks() |
163 | 172 |
|
173 |
+ if json.can_run_other_agents |
|
174 |
+ showChains() |
|
175 |
+ else |
|
176 |
+ hideChains() |
|
177 |
+ |
|
164 | 178 |
if json.can_create_events |
165 | 179 |
showEventCreation() |
166 | 180 |
else |
@@ -191,6 +205,12 @@ $(document).ready -> |
||
191 | 205 |
else |
192 | 206 |
hideLinks() |
193 | 207 |
|
208 |
+ if $(".chain-region") |
|
209 |
+ if $(".chain-region").data("can-run-other-agents") == true |
|
210 |
+ showChains() |
|
211 |
+ else |
|
212 |
+ hideChains() |
|
213 |
+ |
|
194 | 214 |
if $(".event-related-region") |
195 | 215 |
if $(".event-related-region").data("can-create-events") == true |
196 | 216 |
showEventCreation() |
@@ -182,6 +182,10 @@ class Agent < ActiveRecord::Base |
||
182 | 182 |
!cannot_create_events? |
183 | 183 |
end |
184 | 184 |
|
185 |
+ def can_run_other_agents? |
|
186 |
+ self.class.can_run_other_agents? |
|
187 |
+ end |
|
188 |
+ |
|
185 | 189 |
def log(message, options = {}) |
186 | 190 |
puts "Agent##{id}: #{message}" unless Rails.env.test? |
187 | 191 |
AgentLog.log_for_agent(self, message, options) |
@@ -304,6 +308,14 @@ class Agent < ActiveRecord::Base |
||
304 | 308 |
!!@cannot_receive_events |
305 | 309 |
end |
306 | 310 |
|
311 |
+ def can_run_other_agents! |
|
312 |
+ @can_run_other_agents = true |
|
313 |
+ end |
|
314 |
+ |
|
315 |
+ def can_run_other_agents? |
|
316 |
+ @can_run_other_agents |
|
317 |
+ end |
|
318 |
+ |
|
307 | 319 |
# Find all Agents that have received Events since the last execution of this method. Update those Agents with |
308 | 320 |
# their new `last_checked_event_id` and queue each of the Agents to be called with #receive using `async_receive`. |
309 | 321 |
# This is called by bin/schedule.rb periodically. |
@@ -33,11 +33,26 @@ |
||
33 | 33 |
<div class="form-group"> |
34 | 34 |
<%= f.label :schedule, :class => 'control-label' %> |
35 | 35 |
<div class="schedule-region" data-can-be-scheduled="<%= @agent.can_be_scheduled? %>"> |
36 |
- <%= f.select :schedule, options_for_select(Agent::SCHEDULES.map {|s| [s.humanize.titleize, s] }, @agent.schedule), {}, :class => 'form-control' %> |
|
36 |
+ <div class="can-be-scheduled"> |
|
37 |
+ <%= f.select :schedule, options_for_select(Agent::SCHEDULES.map {|s| [s.humanize.titleize, s] }, @agent.schedule), {}, :class => 'form-control' %> |
|
38 |
+ </div> |
|
37 | 39 |
<span class='cannot-be-scheduled text-info'>This type of Agent cannot be scheduled.</span> |
38 | 40 |
</div> |
39 | 41 |
</div> |
40 | 42 |
|
43 |
+ <div class="chain-region" data-can-run-other-agents="<%= @agent.can_run_other_agents? %>"> |
|
44 |
+ <div class="can-run-other-agents"> |
|
45 |
+ <div class="form-group"> |
|
46 |
+ <%= f.label :targets %> |
|
47 |
+ <% eventTargets = current_user.agents.select(&:can_be_scheduled?) %> |
|
48 |
+ <%= f.select(:target_ids, |
|
49 |
+ options_for_select(eventTargets.map {|s| [s.name, s.id] }, |
|
50 |
+ @agent.target_ids), |
|
51 |
+ {}, { multiple: true, size: 5, class: 'select2 form-control' }) %> |
|
52 |
+ </div> |
|
53 |
+ </div> |
|
54 |
+ </div> |
|
55 |
+ |
|
41 | 56 |
<div class='event-related-region' data-can-create-events="<%= @agent.can_create_events? %>"> |
42 | 57 |
<div class="form-group"> |
43 | 58 |
<%= f.label :keep_events_for, "Keep events" %> |
@@ -134,6 +134,17 @@ |
||
134 | 134 |
</p> |
135 | 135 |
<% end %> |
136 | 136 |
|
137 |
+ <% if @agent.can_run_other_agents? %> |
|
138 |
+ <p> |
|
139 |
+ <b>Targets:</b> |
|
140 |
+ <% if (agents = @agent.targets).length > 0 %> |
|
141 |
+ <%= agents.map { |agent| link_to(agent.name, agent_path(agent)) }.to_sentence.html_safe %> |
|
142 |
+ <% else %> |
|
143 |
+ None |
|
144 |
+ <% end %> |
|
145 |
+ </p> |
|
146 |
+ <% end %> |
|
147 |
+ |
|
137 | 148 |
<p> |
138 | 149 |
<b>Working:</b> |
139 | 150 |
<%= working @agent %> |