From 85768baf9f54a1f43499cd6171d637e30adbd504 Mon Sep 17 00:00:00 2001 From: Romain Dardour Date: Sun, 30 Sep 2012 14:57:51 +0200 Subject: [PATCH] V1 --- Gemfile | 4 + lib/sidekiq/web.rb | 39 +- sidekiq.gemspec | 1 + web/assets/images/logo.png | Bin 0 -> 4143 bytes web/assets/images/status-sd8051fd480.png | Bin 0 -> 2271 bytes web/assets/images/status/active.png | Bin 0 -> 2081 bytes web/assets/images/status/idle.png | Bin 0 -> 1980 bytes web/assets/javascripts/application.js | 56 +- web/assets/stylesheets/application.css | 4 +- web/assets/stylesheets/partials/_base.scss | 116 ++++ web/assets/stylesheets/partials/_colors.scss | 44 ++ web/assets/stylesheets/partials/_fonts.scss | 3 + web/assets/stylesheets/partials/_h5bp.scss | 293 ++++++++++ web/assets/stylesheets/partials/_layout.scss | 135 +++++ web/assets/stylesheets/partials/_navbar.scss | 96 ++++ .../stylesheets/partials/_normalize.scss | 504 ++++++++++++++++++ web/assets/stylesheets/partials/_prettify.css | 30 ++ .../stylesheets/partials/_variables.scss | 28 + web/assets/stylesheets/public.scss | 74 +++ web/assets/stylesheets/style.scss | 69 +++ web/assets/stylesheets/vendors.scss | 2 + web/views/_nav.slim | 13 + web/views/_status.slim | 3 + web/views/_summary.slim | 27 +- web/views/_workers.slim | 7 +- web/views/index.slim | 15 +- web/views/layout.slim | 53 +- web/views/poll.slim | 1 + web/views/queue.slim | 15 +- web/views/queues.slim | 12 +- web/views/retries.slim | 18 +- web/views/retry.slim | 10 +- web/views/scheduled.slim | 18 +- 33 files changed, 1595 insertions(+), 95 deletions(-) create mode 100644 web/assets/images/logo.png create mode 100644 web/assets/images/status-sd8051fd480.png create mode 100644 web/assets/images/status/active.png create mode 100644 web/assets/images/status/idle.png create mode 100644 web/assets/stylesheets/partials/_base.scss create mode 100644 web/assets/stylesheets/partials/_colors.scss create mode 100644 web/assets/stylesheets/partials/_fonts.scss create mode 100644 web/assets/stylesheets/partials/_h5bp.scss create mode 100644 web/assets/stylesheets/partials/_layout.scss create mode 100644 web/assets/stylesheets/partials/_navbar.scss create mode 100644 web/assets/stylesheets/partials/_normalize.scss create mode 100644 web/assets/stylesheets/partials/_prettify.css create mode 100644 web/assets/stylesheets/partials/_variables.scss create mode 100644 web/assets/stylesheets/public.scss create mode 100644 web/assets/stylesheets/style.scss create mode 100644 web/assets/stylesheets/vendors.scss create mode 100644 web/views/_nav.slim create mode 100644 web/views/_status.slim diff --git a/Gemfile b/Gemfile index d35f0475..20a8f789 100644 --- a/Gemfile +++ b/Gemfile @@ -10,3 +10,7 @@ gem 'sqlite3' group :test do gem 'simplecov', :require => false end + +group :development do + gem 'compass' +end diff --git a/lib/sidekiq/web.rb b/lib/sidekiq/web.rb index ef0626fb..006f93d6 100644 --- a/lib/sidekiq/web.rb +++ b/lib/sidekiq/web.rb @@ -1,6 +1,7 @@ require 'sinatra/base' require 'slim' require 'sprockets' +require 'compass' require 'sidekiq/paginator' module Sidekiq @@ -16,6 +17,31 @@ module Sidekiq @environment.append_path 'assets/stylesheets' @environment.append_path 'assets/stylesheets/vendor' @environment.append_path 'assets/images' + + configure do + Compass.configuration do |config| + + config.project_path = @root + + config.sass_dir = 'views' + config.images_dir = 'assets/images' + config.sass_dir = 'assets/stylesheets' + config.css_dir = 'assets/stylesheets' + config.javascripts_dir = 'assets/javascripts' + config.fonts_dir = 'assets/stylesheets/fonts' + + # You can select your preferred output style here (can be overridden via the command line): + output_style = :compressed + + # To enable relative paths to assets via compass helper functions. Uncomment: + relative_assets = true + + # To disable debugging comments that display the original location of your selectors. Uncomment: + line_comments = false + end + end + + end def call(env) @@ -36,8 +62,10 @@ module Sidekiq set :views, "#{dir}/views" set :root, "#{dir}/public" set :slim, :pretty => true + use SprocketsMiddleware, :root => dir + helpers do def reset_worker_list @@ -99,6 +127,10 @@ module Sidekiq "#{env['SCRIPT_NAME']}/" end + def current_path + @current_path ||= request.path_info.gsub(/^\//,'') + end + def current_status return 'idle' if workers.size == 0 return 'active' @@ -248,7 +280,12 @@ module Sidekiq end def self.tabs - @tabs ||= ["Queues", "Retries", "Scheduled"] + @tabs ||= { + "Workers" =>'', + "Queues" =>'queues', + "Retries" =>'retries', + "Scheduled" =>'scheduled' + } end end diff --git a/sidekiq.gemspec b/sidekiq.gemspec index 99cc86e1..7165e609 100644 --- a/sidekiq.gemspec +++ b/sidekiq.gemspec @@ -26,4 +26,5 @@ Gem::Specification.new do |gem| gem.add_development_dependency 'actionmailer', '~> 3' gem.add_development_dependency 'activerecord', '~> 3' gem.add_development_dependency 'pry' + gem.add_development_dependency 'compass' end diff --git a/web/assets/images/logo.png b/web/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b06e15ce3069d1694cfbcd38e555854836de60bf GIT binary patch literal 4143 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 100 diff --git a/web/views/index.slim b/web/views/index.slim index b0b79b51..9c296cd4 100644 --- a/web/views/index.slim +++ b/web/views/index.slim @@ -1,11 +1,8 @@ -== slim :_summary - -.actions - form.pull-left action="#{root_path}reset" method="post" - button.btn.btn-small type="submit" title="If you kill -9 Sidekiq, this table can fill up with old data." Clear worker list - .pull-right - span.poll-status - a.btn.btn-small name='poll' href='#{{root_path}}poll' Live Poll +.row.header + .span7 + h3 Workers + .span2.actions + form action="#{root_path}reset" method="post" + button.btn.btn.btn-primary.btn-block type="submit" title="If you kill -9 Sidekiq, this table can fill up with old data." Clear worker list == slim :_workers - diff --git a/web/views/layout.slim b/web/views/layout.slim index 70a95ba7..9187035c 100644 --- a/web/views/layout.slim +++ b/web/views/layout.slim @@ -1,33 +1,38 @@ doctype html html head + link href='#{{root_path}}assets/vendors.css' media='screen' rel='stylesheet' type='text/css' link href='#{{root_path}}assets/application.css' media='screen' rel='stylesheet' type='text/css' title= Sidekiq::NAME - body - .navbar.navbar-fixed-top.navbar-inverse - .navbar-inner - .container - a.btn.btn-navbar data-toggle="collapse" data-target=".nav-collapse" - span.icon-bar - span.icon-bar - span.icon-bar - a.brand href='#{{root_path}}' - = Sidekiq::NAME - div.nav-collapse - ul.nav - li - a href='#{{root_path}}' Home - - tabs.each do |tab| - li - a href='#{{root_path}}#{{tab.downcase}}': #{tab} + body.admin + .navbar.navbar-fixed-top + ==slim :_nav - ul.nav.pull-right - li - a Redis: #{location} - li - a #{Time.now.utc} + #page + .container + .row + .span3.summary_bar + h3 + span.title Status + == slim :_status + == slim :_summary + .row + .span3 + a.btn.btn-block name='poll' href='#{{root_path}}poll' Live Poll + .span3.poll-status + p + span.text + span.badge - .container - == yield + ul.unstyled + li + span.desc Redis + div.data #{location} + li + span.desc Time + div.data #{Time.now.utc.strftime('%H:%M:%S UTC')} + + .span9 + == yield script type="text/javascript" src="#{{root_path}}assets/application.js" diff --git a/web/views/poll.slim b/web/views/poll.slim index 827c96ed..ffdeb4e2 100644 --- a/web/views/poll.slim +++ b/web/views/poll.slim @@ -1,3 +1,4 @@ div == slim :_summary == slim :_workers + == slim :_status diff --git a/web/views/queue.slim b/web/views/queue.slim index 78dd9eca..cceefe77 100644 --- a/web/views/queue.slim +++ b/web/views/queue.slim @@ -1,10 +1,13 @@ -header - h1 Current messages in #{@name} +header.row + .span5 + h3 + | Current messages in + span.title #{@name} + .span4 + == slim :_paging, :locals => { :url => "#{root_path}queues/#{@name}" } -== slim :_paging, :locals => { :url => "#{root_path}queues/#{@name}" } - -table class="table table-striped table-bordered" - tr +table class="queue table table-hover table-bordered table-striped" + thead th Class th Arguments th diff --git a/web/views/queues.slim b/web/views/queues.slim index 022e07f8..9f15c940 100644 --- a/web/views/queues.slim +++ b/web/views/queues.slim @@ -1,19 +1,19 @@ -h1 Queues +h3 Queues - if @queues.size > 0 - table class="table table-striped table-bordered" - tr + table class="queues table table-hover table-bordered table-striped" + thead th Queue th Size - th + th Actions - queues.each do |(queue, size)| tr td a href="#{root_path}queues/#{queue}" #{queue} td= number_with_delimiter(size) - td + td width="20%" form action="#{root_path}queues/#{queue}" method="post" input.btn.btn-danger type="submit" name="delete" value="Delete" data-confirm="Are you sure you want to delete the #{queue} queue?" - else p No queues found. - a href="#{root_path}" Back + a href="#{root_path}" ← Back diff --git a/web/views/retries.slim b/web/views/retries.slim index 1cbeb29a..6a305d15 100644 --- a/web/views/retries.slim +++ b/web/views/retries.slim @@ -1,15 +1,19 @@ -h1 Retries +header.row + .span5 + h3 Retries + .span4 + - if @retries.size > 0 + == slim :_paging, :locals => { :url => "#{root_path}retries" } - if @retries.size > 0 - == slim :_paging, :locals => { :url => "#{root_path}retries" } form action="#{root_path}retries" method="post" table class="table table-striped table-bordered" tr - th + th width="20px" input type="checkbox" class="check_all" - th Next Retry - th Retry Count + th width="25%" Next Retry + th width="11%" Retry count th Queue th Worker th Args @@ -24,8 +28,8 @@ h1 Retries a href="#{root_path}queues/#{msg['queue']}" #{msg['queue']} td= msg['class'] td= display_args(msg['args']) - input.btn.btn-primary type="submit" name="retry" value="Retry Now" + input.btn.btn-primary type="submit" name="retry" value="Retry Now" input.btn.btn-danger type="submit" name="delete" value="Delete" - else p No retries found. - a href="#{root_path}" Back + a href="#{root_path}" ← Back diff --git a/web/views/retry.slim b/web/views/retry.slim index 6a1dd1cf..4acec003 100644 --- a/web/views/retry.slim +++ b/web/views/retry.slim @@ -1,8 +1,8 @@ header - h1 Job + h3 Job - @retries.each do |msg| - table class="table table-striped table-bordered" + table class="retry table table-bordered table-striped" tbody tr th Queue @@ -31,8 +31,8 @@ header th Next Retry td== relative_time(Time.at(@score)) - h1 Error - table class="table table-striped table-bordered" + h3 Error + table class="error table table-bordered table-striped" tbody tr th Error Class @@ -47,6 +47,6 @@ header td code== msg['error_backtrace'].join("
") form.form-horizontal action="#{root_path}retries/#{@score}" method="post" - a.btn href="#{root_path}retries" ← Back + a.btn href="#{root_path}retries" ← Back input.btn.btn-primary type="submit" name="retry" value="Retry Now" input.btn.btn-danger type="submit" name="delete" value="Delete" diff --git a/web/views/scheduled.slim b/web/views/scheduled.slim index 3e8ff34c..e3359948 100644 --- a/web/views/scheduled.slim +++ b/web/views/scheduled.slim @@ -1,15 +1,19 @@ -h1 Scheduled Jobs +header.row + .span5 + h3 Scheduled Jobs + .span4 + - if @scheduled.size > 0 + == slim :_paging, :locals => { :url => "#{root_path}scheduled" } - if @scheduled.size > 0 - == slim :_paging, :locals => { :url => "#{root_path}scheduled" } form action="#{root_path}scheduled" method="post" table class="table table-striped table-bordered" - tr - th + thead + th width="20px" input type="checkbox" class="check_all" - th When - th Queue + th width="25%" When + th width="10%" Queue th Worker th Args - @scheduled.each do |(msg, score)| @@ -24,4 +28,4 @@ h1 Scheduled Jobs input.btn.btn-danger type="submit" name="delete" value="Delete" - else p No scheduled jobs found. - a href="#{root_path}" Back + a href="#{root_path}" ← Back