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 | 576 | /* Apps Table */ |
577 | 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 | 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 | 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 | 8 | format.html do |
9 | 9 | @all_errs = !!params[:all_errs] |
10 | 10 | |
11 | - @sort = params[:sort] | |
11 | + @sort = params[:sort] | |
12 | 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 | 16 | @problems = resource.problems |
17 | 17 | @problems = @problems.unresolved unless @all_errs |
... | ... | @@ -52,10 +52,14 @@ class AppsController < InheritedResources::Base |
52 | 52 | def collection |
53 | 53 | # Sort apps by number of unresolved errs, descending. |
54 | 54 | # Caches the unresolved err counts while performing the sort. |
55 | - @unresolved_counts = {} | |
55 | + @unresolved_counts, @problem_counts = {}, {} | |
56 | 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 | 64 | end |
61 | 65 | ... | ... |
app/helpers/apps_helper.rb
... | ... | @@ -10,5 +10,31 @@ module AppsHelper |
10 | 10 | return html |
11 | 11 | end |
12 | 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 | 39 | end |
14 | 40 | ... | ... |
app/views/apps/index.html.haml
... | ... | @@ -2,43 +2,42 @@ |
2 | 2 | - content_for :action_bar do |
3 | 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 | 5 | %table.apps |
9 | 6 | %thead |
10 | 7 | %tr |
11 | 8 | %th Name |
12 | - - if any_github_repos | |
9 | + - if any_github_repos? | |
13 | 10 | %th GitHub Repo |
14 | - - if any_issue_trackers | |
11 | + - if any_issue_trackers? | |
15 | 12 | %th Tracker |
16 | - %th Last Deploy | |
13 | + - if any_deploys? | |
14 | + %th Last Deploy | |
17 | 15 | %th Errors |
18 | 16 | %tbody |
19 | 17 | - @apps.each do |app| |
20 | 18 | %tr |
21 | 19 | %td.name= link_to app.name, app_path(app) |
22 | - - if any_github_repos | |
20 | + - if any_github_repos? | |
23 | 21 | %td.github_repo |
24 | 22 | - if app.github_repo? |
25 | 23 | = link_to(app.github_repo, app.github_url, :target => '_blank') |
26 | - - if any_issue_trackers | |
24 | + - if any_issue_trackers? | |
27 | 25 | %td.issue_tracker |
28 | 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 | 37 | %td.count |
37 | - - if app.problems.count > 0 | |
38 | + - if @problem_counts[app.id] > 0 | |
38 | 39 | - unresolved = @unresolved_counts[app.id] || app.problems.unresolved.count |
39 | 40 | = link_to unresolved, app_path(app), :class => (unresolved == 0 ? "resolved" : nil) |
40 | - - else | |
41 | - \- | |
42 | 41 | - if @apps.none? |
43 | 42 | %tr |
44 | 43 | %td{:colspan => 3} | ... | ... |