16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/sidekiq_job_stats/web_extension.rb', line 16
def self.registered(app)
app.helpers Helpers::Stats
app.get '/job_stats' do
sort_param = respond_to?(:url_params) ? url_params("sort") : params[:sort]
dir_param = respond_to?(:url_params) ? url_params("direction") : params[:direction]
@sort = WebExtension::STAT_SORT_KEYS.include?(sort_param.to_s) ? sort_param.to_s : "name"
@direction = %w[asc desc].include?(dir_param) ? dir_param : "asc"
@jobs = SidekiqJobStats::Statistic.find_all
@jobs.sort! do |a, b|
av = @sort == "name" ? a.name.to_s : a.send(@sort.to_sym)
bv = @sort == "name" ? b.name.to_s : b.send(@sort.to_sym)
result = begin
Float(av.to_s) <=> Float(bv.to_s)
rescue ArgumentError, TypeError
av.to_s <=> bv.to_s
end
@direction == "desc" ? -(result || 0) : (result || 0)
end
render(:erb, File.read("#{ROOT}/views/job_stats.erb"))
end
app.get '/job_stats/job_history/:job_class' do
klass = route_params(:job_class) || params[:job_class]
@job_class = SidekiqJobStats::Statistic.find_all.find { |j| j.job_class.to_s == klass }
@start = 0
start_param = respond_to?(:url_params) ? url_params("start") : params[:start]
@start = start_param.to_i if start_param && !start_param.empty?
@limit = 100
limit_param = respond_to?(:url_params) ? url_params("limit") : params[:limit]
@limit = limit_param.to_i if limit_param && !limit_param.empty?
sort_param = respond_to?(:url_params) ? url_params("sort") : params[:sort]
dir_param = respond_to?(:url_params) ? url_params("direction") : params[:direction]
@sort = sort_param.to_s
@direction = %w[asc desc].include?(dir_param) ? dir_param : "asc"
@size = @job_class.histories_recorded
if @sort.empty?
@histories = @job_class.job_histories(@start, @limit)
else
all = @job_class.all_job_histories
all.sort! do |a, b|
av, bv = a[@sort], b[@sort]
result = begin
Float(av.to_s) <=> Float(bv.to_s)
rescue ArgumentError
av.to_s <=> bv.to_s
end
@direction == "desc" ? -(result || 0) : (result || 0)
end
@histories = all[@start, @limit] || []
end
render(:erb, File.read("#{ROOT}/views/job_histories.erb"))
end
end
|