From eccb449dfd5c58e58927268f64bbd2a5ba597621 Mon Sep 17 00:00:00 2001 From: Aleksey Ivanov Date: Mon, 22 May 2017 22:34:20 +0300 Subject: [PATCH] Add configurable search_url #1552 --- app/models/agents/peak_detector_agent.rb | 5 ++++- .../agents/agent_views/peak_detector_agent/_show.html.erb | 3 +-- spec/models/agents/peak_detector_agent_spec.rb | 6 ++++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/models/agents/peak_detector_agent.rb b/app/models/agents/peak_detector_agent.rb index 2aed2378..045d4843 100644 --- a/app/models/agents/peak_detector_agent.rb +++ b/app/models/agents/peak_detector_agent.rb @@ -14,6 +14,8 @@ module Agents You may set `window_duration_in_days` to change the default memory window length of `14` days, `min_peak_spacing_in_days` to change the default minimum peak spacing of `2` days (peaks closer together will be ignored), and `std_multiple` to change the default standard deviation threshold multiple of `3`. You may set `min_events` for the minimal number of accumulated events before the agent starts detecting. + + You may set `search_url` to point to something else than Twitter search. MD event_description <<-MD @@ -28,7 +30,7 @@ module Agents MD def validate_options - unless options['expected_receive_period_in_days'].present? && options['message'].present? && options['value_path'].present? && options['min_events'].present? + unless options['expected_receive_period_in_days'].present? && options['message'].present? && options['value_path'].present? && options['min_events'].present? && options['search_url'].present? errors.add(:base, "expected_receive_period_in_days, value_path, min_events and message are required") end end @@ -40,6 +42,7 @@ module Agents 'value_path' => "count", 'message' => "A peak of {{count}} was found in {{filter}}", 'min_events' => '4', + 'search_url' => 'https://twitter.com/search?q=%{q}' } end diff --git a/app/views/agents/agent_views/peak_detector_agent/_show.html.erb b/app/views/agents/agent_views/peak_detector_agent/_show.html.erb index b5556a18..8736001b 100644 --- a/app/views/agents/agent_views/peak_detector_agent/_show.html.erb +++ b/app/views/agents/agent_views/peak_detector_agent/_show.html.erb @@ -1,12 +1,11 @@ <% content_for :head do %> <%= javascript_include_tag "graphing" %> <% end %> - <% if @agent.memory[:data] && @agent.memory[:data].length > 0 %>

Recent Trends

<% @agent.memory[:data].each.with_index do |(group_name, data), index| %>
-
<%= link_to group_name.to_s, "https://twitter.com/search?q=#{CGI::escape group_name.to_s}", :target => "blank" %>
+
<%= link_to group_name.to_s, format(@agent.options[:search_url], q: CGI::escape(group_name.to_s)), :target => "blank" %>
diff --git a/spec/models/agents/peak_detector_agent_spec.rb b/spec/models/agents/peak_detector_agent_spec.rb index abefd29a..7acfaf6c 100644 --- a/spec/models/agents/peak_detector_agent_spec.rb +++ b/spec/models/agents/peak_detector_agent_spec.rb @@ -10,6 +10,7 @@ describe Agents::PeakDetectorAgent do 'value_path' => "count", 'message' => "A peak was found", 'min_events' => "4", + 'search_url' => "https://twitter.com/search?q=%{q}" } } @@ -90,6 +91,11 @@ describe Agents::PeakDetectorAgent do expect(@agent).not_to be_valid end + it "should validate presence of search_url" do + @agent.options['search_url'] = nil + expect(@agent).not_to be_valid + end + it "should validate presence of expected_receive_period_in_days" do @agent.options['expected_receive_period_in_days'] = "" expect(@agent).not_to be_valid