Commit 653c0de31f784475e4d8695b7933f5c336b9b9f6
1 parent
baef45e9
Exists in
master
and in
1 other branch
Hide repo, tracker and deploy columns on apps#index page if no apps have any of those attributes
Showing
4 changed files
with
60 additions
and
33 deletions
Show diff stats
app/assets/stylesheets/errbit.css
| @@ -576,17 +576,15 @@ div.issue_tracker.nested label.r_on, div.issue_tracker.nested label.r_on:hover { | @@ -576,17 +576,15 @@ div.issue_tracker.nested label.r_on, div.issue_tracker.nested label.r_on:hover { | ||
| 576 | /* Apps Table */ | 576 | /* Apps Table */ |
| 577 | table.apps tbody tr:hover td ,table.errs tbody tr:hover td { background-color: #F2F2F2;} | 577 | table.apps tbody tr:hover td ,table.errs tbody tr:hover td { background-color: #F2F2F2;} |
| 578 | 578 | ||
| 579 | -table.apps td.name, table.errs td.message { | ||
| 580 | - width: 100%; | ||
| 581 | -} | ||
| 582 | -table.apps td { | ||
| 583 | - padding-top: 16px; | ||
| 584 | - padding-bottom: 16px; | 579 | +table.apps td.name, table.errs td.message { width: 100%; } |
| 580 | +table.apps td { padding: 16px 25px; } | ||
| 581 | +table.apps th { padding: 10px 25px; } | ||
| 582 | + | ||
| 583 | +table.apps td.issue_tracker, table.apps td.count, table.apps td.deploy { | ||
| 584 | + text-align: center; | ||
| 585 | } | 585 | } |
| 586 | table.apps td.issue_tracker, table.apps td.count { | 586 | table.apps td.issue_tracker, table.apps td.count { |
| 587 | - padding-top: 10px; | ||
| 588 | - padding-bottom: 10px; | ||
| 589 | - text-align: center; | 587 | + padding: 10px 8px; |
| 590 | } | 588 | } |
| 591 | table.apps td.issue_tracker img { vertical-align: top; } | 589 | table.apps td.issue_tracker img { vertical-align: top; } |
| 592 | 590 |
app/controllers/apps_controller.rb
| @@ -8,10 +8,10 @@ class AppsController < InheritedResources::Base | @@ -8,10 +8,10 @@ class AppsController < InheritedResources::Base | ||
| 8 | format.html do | 8 | format.html do |
| 9 | @all_errs = !!params[:all_errs] | 9 | @all_errs = !!params[:all_errs] |
| 10 | 10 | ||
| 11 | - @sort = params[:sort] | 11 | + @sort = params[:sort] |
| 12 | @order = params[:order] | 12 | @order = params[:order] |
| 13 | - @sort = "last_notice_at" unless %w{message app last_deploy_at count}.member?(@sort) | ||
| 14 | - @order = "desc" unless (@order == "asc") | 13 | + @sort = "last_notice_at" unless %w{message app last_deploy_at last_notice_at count}.member?(@sort) |
| 14 | + @order = "desc" unless %w{asc desc}.member?(@order) | ||
| 15 | 15 | ||
| 16 | @problems = resource.problems | 16 | @problems = resource.problems |
| 17 | @problems = @problems.unresolved unless @all_errs | 17 | @problems = @problems.unresolved unless @all_errs |
| @@ -52,10 +52,14 @@ class AppsController < InheritedResources::Base | @@ -52,10 +52,14 @@ class AppsController < InheritedResources::Base | ||
| 52 | def collection | 52 | def collection |
| 53 | # Sort apps by number of unresolved errs, descending. | 53 | # Sort apps by number of unresolved errs, descending. |
| 54 | # Caches the unresolved err counts while performing the sort. | 54 | # Caches the unresolved err counts while performing the sort. |
| 55 | - @unresolved_counts = {} | 55 | + @unresolved_counts, @problem_counts = {}, {} |
| 56 | @apps ||= end_of_association_chain.all.sort{|a,b| | 56 | @apps ||= end_of_association_chain.all.sort{|a,b| |
| 57 | - [a,b].each{|app| @unresolved_counts[app.id] ||= app.problems.unresolved.count } | ||
| 58 | - @unresolved_counts[b.id] <=> @unresolved_counts[a.id] | 57 | + [a,b].each do |app| |
| 58 | + @unresolved_counts[app.id] ||= app.problems.unresolved.count | ||
| 59 | + @problem_counts[app.id] ||= app.problems.count | ||
| 60 | + end | ||
| 61 | + unresolved = @unresolved_counts[b.id] <=> @unresolved_counts[a.id] | ||
| 62 | + unresolved != 0 ? unresolved : @problem_counts[b.id] <=> @problem_counts[a.id] | ||
| 59 | } | 63 | } |
| 60 | end | 64 | end |
| 61 | 65 |
app/helpers/apps_helper.rb
| @@ -10,5 +10,31 @@ module AppsHelper | @@ -10,5 +10,31 @@ module AppsHelper | ||
| 10 | return html | 10 | return html |
| 11 | end | 11 | end |
| 12 | end | 12 | end |
| 13 | + | ||
| 14 | + def any_github_repos? | ||
| 15 | + detect_any_apps_with_attributes unless @any_github_repos | ||
| 16 | + @any_github_repos | ||
| 17 | + end | ||
| 18 | + | ||
| 19 | + def any_issue_trackers? | ||
| 20 | + detect_any_apps_with_attributes unless @any_issue_trackers | ||
| 21 | + @any_issue_trackers | ||
| 22 | + end | ||
| 23 | + | ||
| 24 | + def any_deploys? | ||
| 25 | + detect_any_apps_with_attributes unless @any_deploys | ||
| 26 | + @any_deploys | ||
| 27 | + end | ||
| 28 | + | ||
| 29 | + private | ||
| 30 | + | ||
| 31 | + def detect_any_apps_with_attributes | ||
| 32 | + @any_github_repos = @any_issue_trackers = @any_deploys = false | ||
| 33 | + @apps.each do |app| | ||
| 34 | + @any_github_repos ||= app.github_repo? | ||
| 35 | + @any_issue_trackers ||= app.issue_tracker_configured? | ||
| 36 | + @any_deploys ||= !!app.last_deploy_at | ||
| 37 | + end | ||
| 38 | + end | ||
| 13 | end | 39 | end |
| 14 | 40 |
app/views/apps/index.html.haml
| @@ -2,43 +2,42 @@ | @@ -2,43 +2,42 @@ | ||
| 2 | - content_for :action_bar do | 2 | - content_for :action_bar do |
| 3 | %span= link_to('Add a New App', new_app_path, :class => 'add') if current_user.admin? | 3 | %span= link_to('Add a New App', new_app_path, :class => 'add') if current_user.admin? |
| 4 | 4 | ||
| 5 | -- any_github_repos = @apps.any? {|a| a.github_repo? } | ||
| 6 | -- any_issue_trackers = @apps.any? {|a| a.issue_tracker_configured? } | ||
| 7 | - | ||
| 8 | %table.apps | 5 | %table.apps |
| 9 | %thead | 6 | %thead |
| 10 | %tr | 7 | %tr |
| 11 | %th Name | 8 | %th Name |
| 12 | - - if any_github_repos | 9 | + - if any_github_repos? |
| 13 | %th GitHub Repo | 10 | %th GitHub Repo |
| 14 | - - if any_issue_trackers | 11 | + - if any_issue_trackers? |
| 15 | %th Tracker | 12 | %th Tracker |
| 16 | - %th Last Deploy | 13 | + - if any_deploys? |
| 14 | + %th Last Deploy | ||
| 17 | %th Errors | 15 | %th Errors |
| 18 | %tbody | 16 | %tbody |
| 19 | - @apps.each do |app| | 17 | - @apps.each do |app| |
| 20 | %tr | 18 | %tr |
| 21 | %td.name= link_to app.name, app_path(app) | 19 | %td.name= link_to app.name, app_path(app) |
| 22 | - - if any_github_repos | 20 | + - if any_github_repos? |
| 23 | %td.github_repo | 21 | %td.github_repo |
| 24 | - if app.github_repo? | 22 | - if app.github_repo? |
| 25 | = link_to(app.github_repo, app.github_url, :target => '_blank') | 23 | = link_to(app.github_repo, app.github_url, :target => '_blank') |
| 26 | - - if any_issue_trackers | 24 | + - if any_issue_trackers? |
| 27 | %td.issue_tracker | 25 | %td.issue_tracker |
| 28 | - if app.issue_tracker_configured? | 26 | - if app.issue_tracker_configured? |
| 29 | - = image_tag("#{app.issue_tracker.class::Label}_create.png") | ||
| 30 | - %td.deploy | ||
| 31 | - - if app.last_deploy_at | ||
| 32 | - - revision = app.deploys.last.short_revision | ||
| 33 | - = link_to( app.last_deploy_at.to_s(:micro) << (revision.present? ? " (#{revision})" : ""), app_deploys_path(app)) | ||
| 34 | - - else | ||
| 35 | - n/a | 27 | + - tracker_img = image_tag("#{app.issue_tracker.class::Label}_goto.png") |
| 28 | + - if app.issue_tracker.url | ||
| 29 | + = link_to( tracker_img, app.issue_tracker.url ) | ||
| 30 | + - else | ||
| 31 | + = tracker_img | ||
| 32 | + - if any_deploys? | ||
| 33 | + %td.deploy | ||
| 34 | + - if app.last_deploy_at | ||
| 35 | + - revision = app.deploys.last.short_revision | ||
| 36 | + = link_to( app.last_deploy_at.to_s(:micro) << (revision.present? ? " (#{revision})" : ""), app_deploys_path(app)) | ||
| 36 | %td.count | 37 | %td.count |
| 37 | - - if app.problems.count > 0 | 38 | + - if @problem_counts[app.id] > 0 |
| 38 | - unresolved = @unresolved_counts[app.id] || app.problems.unresolved.count | 39 | - unresolved = @unresolved_counts[app.id] || app.problems.unresolved.count |
| 39 | = link_to unresolved, app_path(app), :class => (unresolved == 0 ? "resolved" : nil) | 40 | = link_to unresolved, app_path(app), :class => (unresolved == 0 ? "resolved" : nil) |
| 40 | - - else | ||
| 41 | - \- | ||
| 42 | - if @apps.none? | 41 | - if @apps.none? |
| 43 | %tr | 42 | %tr |
| 44 | %td{:colspan => 3} | 43 | %td{:colspan => 3} |