Updated agent picker to properly display/search descriptions that return procs

Dustin Miller 9 gadi atpakaļ
vecāks
revīzija
e9ac0295cc

+ 7 - 6
app/assets/javascripts/pages/agent-edit-page.js.coffee

@@ -16,6 +16,8 @@ class @AgentEditPage
16 16
     if $("#agent_type").length
17 17
       $("#agent_type").on "change", => @handleTypeChange(false)
18 18
       @handleTypeChange(true)
19
+
20
+      # Update the dropdown to match agent description as well as agent name
19 21
       $('#agent_type').select2
20 22
         width: 'resolve'
21 23
         formatResult: formatAgentForSelect
@@ -29,12 +31,6 @@ class @AgentEditPage
29 31
       @enableDryRunButton()
30 32
       @buildAce()
31 33
 
32
-  formatAgentForSelect = (agent) ->
33
-    originalOption = agent.element
34
-    description = $(originalOption).attr('title')
35
-    description = if /^[a-zA-Z]/.test(description) then description else ''
36
-    '<strong>' + agent.text + '</strong><br/>' + description
37
-
38 34
   handleTypeChange: (firstTime) ->
39 35
     $(".event-descriptions").html("").hide()
40 36
     type = $('#agent_type').val()
@@ -192,5 +188,10 @@ class @AgentEditPage
192 188
     @updateFromEditors()
193 189
     Utils.handleDryRunButton(e.target)
194 190
 
191
+  formatAgentForSelect = (agent) ->
192
+    originalOption = agent.element
193
+    description = agent.element[0].title
194
+    '<strong>' + agent.text + '</strong><br/>' + description
195
+
195 196
 $ ->
196 197
   Utils.registerPage(AgentEditPage, forPathsMatching: /^agents/)

+ 5 - 0
app/assets/stylesheets/application.css.scss.erb

@@ -304,3 +304,8 @@ $service-colors:      #55acee     #8fc857     #444444     #2c4762     #007EE5
304 304
 .label-service {
305 305
   @include services;
306 306
 }
307
+
308
+.select2-highlighted a {
309
+  color: yellow;
310
+  text-decoration: underline;
311
+}

+ 1 - 3
app/models/agents/user_location_agent.rb

@@ -7,12 +7,10 @@ module Agents
7 7
     gem_dependency_check { defined?(Haversine) }
8 8
 
9 9
     description do <<-MD
10
-      The UserLocationAgent creates events based on WebHook POSTS that contain a `latitude` and `longitude`.  You can use the [POSTLocation](https://github.com/cantino/post_location) or [PostGPS](https://github.com/chriseidhof/PostGPS) iOS app to post your location.
10
+      The UserLocationAgent creates events based on WebHook POSTS that contain a `latitude` and `longitude`.  You can use the [POSTLocation](https://github.com/cantino/post_location) or [PostGPS](https://github.com/chriseidhof/PostGPS) iOS app to post your location to `https://#{ENV['DOMAIN']}/users/#{user.id}/update_location/:secret` where `:secret` is specified in your options.
11 11
 
12 12
       #{'## Include `haversine` in your Gemfile to use this Agent!' if dependencies_missing?}
13 13
 
14
-      Your POST path will be `https://#{ENV['DOMAIN']}/users/#{user.id}/update_location/:secret` where `:secret` is specified in your options.
15
-
16 14
       If you want to only keep more precise locations, set `max_accuracy` to the upper bound, in meters. The default name for this field is `accuracy`, but you can change this by setting a value for `accuracy_field`.
17 15
 
18 16
       If you want to require a certain distance traveled, set `min_distance` to the minimum distance, in meters. Note that GPS readings and the measurement itself aren't exact, so don't rely on this for precision filtering.

+ 1 - 1
app/views/agents/_form.html.erb

@@ -23,7 +23,7 @@
23 23
           <% if @agent.new_record? %>
24 24
             <div class="form-group type-select">
25 25
               <%= f.label :type %>
26
-              <%= f.select :type, options_for_select([['Select an Agent Type', 'Agent', {title: ''}]] + Agent.types.map {|type| [type.name.gsub(/^.*::/, '').underscore.humanize.titleize, type, {title: type.description.to_s.strip.split(/\r?\n/)[0]}] }, @agent.type), {}, :class => 'form-control' %>
26
+              <%= f.select :type, options_for_select([['Select an Agent Type', 'Agent', {title: ''}]] + Agent.types.map {|type| [type.name.gsub(/^.*::/, '').underscore.humanize.titleize, type, {title: h(Agent.build_for_type(type.name,current_user,{}).html_description.lines.first.strip)}] }, @agent.type), {}, :class => 'form-control' %>
27 27
             </div>
28 28
           <% end %>
29 29
         </div>