lib/mini_scheduler/web.rb in mini_scheduler-0.12.1 vs lib/mini_scheduler/web.rb in mini_scheduler-0.12.2
- old
+ new
@@ -2,10 +2,24 @@
# Based off sidetiq https://github.com/tobiassvn/sidetiq/blob/master/lib/sidetiq/web.rb
module MiniScheduler
module Web
VIEWS = File.expand_path('views', File.dirname(__FILE__)) unless defined? VIEWS
+ def self.find_schedules_by_time
+ Manager.discover_schedules.sort do |a, b|
+ a_next = a.schedule_info.next_run
+ b_next = b.schedule_info.next_run
+ if a_next && b_next
+ a_next <=> b_next
+ elsif a_next
+ -1
+ else
+ 1
+ end
+ end
+ end
+
def self.registered(app)
app.helpers do
def sane_time(time)
return unless time
@@ -22,26 +36,27 @@
end
end
app.get "/scheduler" do
MiniScheduler.before_sidekiq_web_request&.call
- @schedules = Manager.discover_schedules.sort do |a, b|
- a_next = a.schedule_info.next_run
- b_next = b.schedule_info.next_run
- if a_next && b_next
- a_next <=> b_next
- elsif a_next
- -1
- else
- 1
- end
- end
+ @schedules = Web.find_schedules_by_time
erb File.read(File.join(VIEWS, 'scheduler.erb')), locals: { view_path: VIEWS }
end
app.get "/scheduler/history" do
MiniScheduler.before_sidekiq_web_request&.call
- @scheduler_stats = Stat.order('started_at desc').limit(200)
+ @schedules = Manager.discover_schedules
+ @schedules.sort_by!(&:to_s)
+ @scheduler_stats = Stat.order('started_at desc')
+
+ @filter = params[:filter]
+ names = @schedules.map(&:to_s)
+ @filter = nil if !names.include?(@filter)
+ if @filter
+ @scheduler_stats = @scheduler_stats.where(name: @filter)
+ end
+
+ @scheduler_stats = @scheduler_stats.limit(200)
erb File.read(File.join(VIEWS, 'history.erb')), locals: { view_path: VIEWS }
end
app.post "/scheduler/:name/trigger" do
halt 404 unless (name = params[:name])