Module: QueryReviewer::Views::QueryReviewBoxHelper

Included in:
ControllerExtensions::QueryViewBase
Defined in:
lib/query_reviewer/views/query_review_box_helper.rb

Instance Method Summary collapse

Instance Method Details

#duration_with_color(query) ⇒ Object



85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/query_reviewer/views/query_review_box_helper.rb', line 85

def duration_with_color(query)
  title = query.duration_stats
  duration = query.duration
  span_html = if duration > QueryReviewer::CONFIGURATION["critical_duration_threshold"]
    "<span style=\"color: #{severity_color(9)}\" title=\"#{title}\">#{"%.3f" % duration}</span>"
  elsif duration > QueryReviewer::CONFIGURATION["warn_duration_threshold"]
    "<span style=\"color: #{severity_color(QueryReviewer::CONFIGURATION["critical_severity"])}\" title=\"#{title}\">#{"%.3f" % duration}</span>"
  else
    "<span title=\"#{title}\">#{"%.3f" % duration}</span>"
  end
  span_html.respond_to?(:html_safe) ? span_html.html_safe : span_html
end


81
82
83
# File 'lib/query_reviewer/views/query_review_box_helper.rb', line 81

def enabled_by_cookie
  controller.send(:cookies)["query_review_enabled"]
end

#ignore_hash?(h) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/query_reviewer/views/query_review_box_helper.rb', line 49

def ignore_hash?(h)
  (controller.send(:cookies)["query_review_ignore_list"] || "").split(",").include?(h.to_s)
end

#overall_max_severityObject



32
33
34
35
36
37
# File 'lib/query_reviewer/views/query_review_box_helper.rb', line 32

def overall_max_severity
  max = 0
  max = queries_with_warnings_sorted_nonignored[0].max_severity unless queries_with_warnings_sorted_nonignored.empty?
  max = warnings_no_query_sorted.first.severity unless warnings_no_query_sorted.empty? || warnings_no_query_sorted.first.severity < max
  max
end

#parent_div_classObject



4
5
6
# File 'lib/query_reviewer/views/query_review_box_helper.rb', line 4

def parent_div_class
  "sql_#{parent_div_status.downcase}"
end

#parent_div_statusObject



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/query_reviewer/views/query_review_box_helper.rb', line 8

def parent_div_status
  if !enabled_by_cookie
    "DISABLED"
  elsif overall_max_severity < (QueryReviewer::CONFIGURATION["warn_severity"] || 4)
    "OK"
  elsif overall_max_severity < (QueryReviewer::CONFIGURATION["critical_severity"] || 7)
    # uh oh
    "WARNING"
  else
    # oh @#&!
    "CRITICAL"
  end
end

#queries_with_warningsObject



53
54
55
# File 'lib/query_reviewer/views/query_review_box_helper.rb', line 53

def queries_with_warnings
  @queries.queries.select{|q| q.has_warnings?}
end

#queries_with_warnings_sortedObject



57
58
59
# File 'lib/query_reviewer/views/query_review_box_helper.rb', line 57

def queries_with_warnings_sorted
  queries_with_warnings.sort{|a,b| (b.max_severity * 1000 + (b.duration || 0)) <=> (a.max_severity * 1000 + (a.duration || 0))}
end

#queries_with_warnings_sorted_ignoredObject



65
66
67
# File 'lib/query_reviewer/views/query_review_box_helper.rb', line 65

def queries_with_warnings_sorted_ignored
  queries_with_warnings_sorted.reject{|q| q.max_severity >= ::QueryReviewer::CONFIGURATION["warn_severity"] && !ignore_hash?(q.to_hash)}
end

#queries_with_warnings_sorted_nonignoredObject



61
62
63
# File 'lib/query_reviewer/views/query_review_box_helper.rb', line 61

def queries_with_warnings_sorted_nonignored
  queries_with_warnings_sorted.select{|q| q.max_severity >= ::QueryReviewer::CONFIGURATION["warn_severity"] && !ignore_hash?(q.to_hash)}
end

#severity_color(severity) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/query_reviewer/views/query_review_box_helper.rb', line 39

def severity_color(severity)
  red = (severity * 16.0 / 10).to_i
  green = ((10-severity) * 16.0 / 10).to_i
  red = 8 if red > 8
  red = 0 if red < 0
  green = 8 if green > 8
  green = 0 if green < 0
  "##{red.to_s(16)}#{green.to_s(16)}0"
end

#syntax_highlighted_sql(sql) ⇒ Object



22
23
24
25
26
27
28
29
30
# File 'lib/query_reviewer/views/query_review_box_helper.rb', line 22

def syntax_highlighted_sql(sql)
  sql = sql.to_sql if sql.respond_to?(:to_sql)
  if QueryReviewer::CONFIGURATION["uv"]
    uv_out = Uv.parse(sql, "xhtml", "sql_rails", false, "blackboard")
    uv_out.gsub("<pre class=\"blackboard\">", "<code class=\"sql\">").gsub("</pre>", "</code>")
  else
    sql.gsub(/</, "&lt;").gsub(/>/, "&gt;")
  end
end

#warnings_no_query_sortedObject



69
70
71
# File 'lib/query_reviewer/views/query_review_box_helper.rb', line 69

def warnings_no_query_sorted
  @queries.collection_warnings.sort{|a,b| a.severity <=> b.severity}.reverse
end

#warnings_no_query_sorted_ignoredObject



73
74
75
# File 'lib/query_reviewer/views/query_review_box_helper.rb', line 73

def warnings_no_query_sorted_ignored
  warnings_no_query_sorted.select{|q| q.severity < ::QueryReviewer::CONFIGURATION["warn_severity"]}
end

#warnings_no_query_sorted_nonignoredObject



77
78
79
# File 'lib/query_reviewer/views/query_review_box_helper.rb', line 77

def warnings_no_query_sorted_nonignored
  warnings_no_query_sorted.select{|q| q.severity >= ::QueryReviewer::CONFIGURATION["warn_severity"]}
end