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])