Commit 03c9a6134462957817bc7f7a38c98fb63422ab8a
1 parent
5e7a9de8
Exists in
master
and in
1 other branch
show a breakdown of messages and tenants for
problems as well (as browsers)
Showing
2 changed files
with
41 additions
and
10 deletions
Show diff stats
app/helpers/application_helper.rb
| 1 | 1 | module ApplicationHelper |
| 2 | - | |
| 3 | - def user_agent_graph(error) | |
| 4 | - tallies = tally(error.notices) {|notice| pretty_user_agent(notice.user_agent)} | |
| 5 | - create_percentage_table(tallies, :total => error.notices.count) | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + def message_graph(problem) | |
| 6 | + create_percentage_table_for(problem) {|notice| notice.message} | |
| 6 | 7 | end |
| 7 | - | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + def user_agent_graph(problem) | |
| 12 | + create_percentage_table_for(problem) {|notice| pretty_user_agent(notice.user_agent)} | |
| 13 | + end | |
| 14 | + | |
| 8 | 15 | def pretty_user_agent(user_agent) |
| 9 | 16 | (user_agent.nil? || user_agent.none?) ? "N/A" : "#{user_agent.browser} #{user_agent.version}" |
| 10 | 17 | end |
| 11 | - | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + def tenant_graph(problem) | |
| 22 | + create_percentage_table_for(problem) {|notice| get_host(notice.request['url'])} | |
| 23 | + end | |
| 24 | + | |
| 25 | + def get_host(url) | |
| 26 | + uri = url && URI.parse(url) | |
| 27 | + uri.blank? ? "N/A" : uri.host | |
| 28 | + end | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + def create_percentage_table_for(problem, &block) | |
| 33 | + tallies = tally(problem.notices, &block) | |
| 34 | + create_percentage_table_from_tallies(tallies, :total => problem.notices.count) | |
| 35 | + end | |
| 36 | + | |
| 12 | 37 | def tally(collection, &block) |
| 13 | 38 | collection.inject({}) do |tallies, item| |
| 14 | 39 | value = yield item |
| ... | ... | @@ -16,18 +41,21 @@ module ApplicationHelper |
| 16 | 41 | tallies |
| 17 | 42 | end |
| 18 | 43 | end |
| 19 | - | |
| 20 | - def create_percentage_table(tallies, options={}) | |
| 44 | + | |
| 45 | + def create_percentage_table_from_tallies(tallies, options={}) | |
| 21 | 46 | total = (options[:total] || total_from_tallies(tallies)) |
| 22 | 47 | percent = 100.0 / total.to_f |
| 23 | 48 | rows = tallies.map {|value, count| [(count.to_f * percent), value]} \ |
| 24 | 49 | .sort {|a, b| a[0] <=> b[0]} |
| 25 | 50 | render :partial => "errs/tally_table", :locals => {:rows => rows} |
| 26 | 51 | end |
| 27 | - | |
| 52 | + | |
| 53 | + | |
| 28 | 54 | def total_from_tallies(tallies) |
| 29 | 55 | tallies.values.inject(0) {|sum, n| sum + n} |
| 30 | 56 | end |
| 31 | 57 | private :total_from_tallies |
| 58 | + | |
| 59 | + | |
| 32 | 60 | end |
| 33 | 61 | ... | ... |
app/views/notices/_summary.html.haml
| ... | ... | @@ -2,7 +2,7 @@ |
| 2 | 2 | %table.summary |
| 3 | 3 | %tr |
| 4 | 4 | %th Message |
| 5 | - %td.main.nowrap= notice.message | |
| 5 | + %td.main.nowrap= message_graph(notice.problem) | |
| 6 | 6 | - if notice.request['url'].present? |
| 7 | 7 | %tr |
| 8 | 8 | %th URL |
| ... | ... | @@ -19,3 +19,6 @@ |
| 19 | 19 | %tr |
| 20 | 20 | %th Browser |
| 21 | 21 | %td= user_agent_graph(notice.problem) |
| 22 | + %tr | |
| 23 | + %th Tenant | |
| 24 | + %td= tenant_graph(notice.problem) | ... | ... |