Commit c94159ab089fe964263643ffc7e881ba8cac3f23

Authored by Dmitriy Zaporozhets
1 parent 219ac189

improved dashboard

app/assets/stylesheets/common.scss
... ... @@ -615,6 +615,7 @@ p.time {
615 615 margin:auto;
616 616  
617 617 .wll {
  618 + padding:5px;
618 619 border:none;
619 620 &:hover {
620 621 background:none;
... ... @@ -623,12 +624,19 @@ p.time {
623 624 h4 {
624 625 color:#666;
625 626 }
  627 + &.event_feed {
  628 + min-height:40px;
  629 + border-bottom:1px solid #eee;
  630 + .avatar {
  631 + width:32px;
  632 + }
  633 + ul {
  634 + margin-left:50px;
  635 + .avatar {
  636 + width:24px;
  637 + }
  638 + }
  639 + }
626 640 }
627 641 }
628 642 }
629   -
630   -.event_feed {
631   - ul {
632   - margin-left:50px;
633   - }
634   -}
... ...
app/controllers/dashboard_controller.rb
... ... @@ -4,12 +4,12 @@ class DashboardController < ApplicationController
4 4 def index
5 5 @projects = current_user.projects.all
6 6  
7   - @active_projects = @projects.select(&:repo_exists?).select(&:last_activity_date_cached).sort_by(&:last_activity_date_cached).reverse
  7 + @active_projects = @projects.select(&:last_activity_date).sort_by(&:last_activity_date).reverse
8 8  
9   - @merge_requests = MergeRequest.where("author_id = :id or assignee_id = :id", :id => current_user.id).opened.order("created_at DESC").limit(10)
  9 + @merge_requests = MergeRequest.where("author_id = :id or assignee_id = :id", :id => current_user.id).opened.order("created_at DESC").limit(5)
10 10  
11 11 @user = current_user
12   - @issues = current_user.assigned_issues.opened.order("created_at DESC").limit(10)
  12 + @issues = current_user.assigned_issues.opened.order("created_at DESC").limit(5)
13 13 @issues = @issues.includes(:author, :project)
14 14  
15 15 @events = Event.where(:project_id => @projects.map(&:id)).recent.limit(20)
... ...
app/models/project.rb
... ... @@ -277,31 +277,21 @@ class Project < ActiveRecord::Base
277 277 end
278 278  
279 279 def last_activity
280   - updates(1).first
  280 + events.last
281 281 rescue
282 282 nil
283 283 end
284 284  
285 285 def last_activity_date
286   - last_activity.try(:created_at)
287   - end
288   -
289   - def last_activity_date_cached(expire = 1.hour)
290   - activity_date_key = "project_#{id}_activity_date"
291   -
292   - cached_activities = Rails.cache.read(activity_date_key)
293   - if cached_activities
294   - activity_date = if cached_activities == "Never"
295   - nil
296   - else
297   - cached_activities
298   - end
  286 + if events.last
  287 + events.last.created_at
299 288 else
300   - activity_date = last_activity_date
301   - Rails.cache.write(activity_date_key, activity_date || "Never", :expires_in => expire)
  289 + updated_at
302 290 end
  291 + end
303 292  
304   - activity_date
  293 + def last_activity_date_cached(expire = 1.hour)
  294 + last_activity_date
305 295 end
306 296  
307 297 # Get project updates from cache
... ...
app/views/dashboard/_events_feed.html.haml
1   -- @events.each do |event|
2   - .wll.event_feed
3   - - if event.push?
4   - - if event.new_branch?
5   - User pushed new branch
6   - - else
7   - = image_tag gravatar_icon(event.pusher_email), :class => "avatar"
8   - #{event.pusher_name} pushed to
9   - = link_to project_commits_path(event.project, :ref => event.branch_name) do
10   - %strong= event.branch_name
11   - %span.cgray
12   - = time_ago_in_words(event.created_at)
13   - ago.
14   - - if event.commits.count > 1
15   - = link_to compare_project_commits_path(event.project, :from => event.commits.first.prev_commit_id, :to => event.commits.last.id) do
16   - Compare #{event.commits.first.commit.id[0..8]}...#{event.commits.last.id[0..8]}
17   - - @project = event.project
18   - %ul.unstyled
19   - = render event.commits
  1 += render @events
  2 +
... ...
app/views/dashboard/index.html.haml
... ... @@ -8,7 +8,7 @@
8 8  
9 9 %div.dashboard_category
10 10 %h3
11   - Projects
  11 + = link_to "Projects" , "#projects", :id => "projects"
12 12 %small
13 13 ( most recent )
14 14  
... ... @@ -34,7 +34,8 @@
34 34 - unless @merge_requests.blank?
35 35 %div.dashboard_category
36 36 %h3
37   - Merge Requests
  37 + = link_to "Merge Requests" , "#merge_requests", :id => "merge_requests"
  38 +
38 39 %small ( authored or assigned to you )
39 40 %strong.right
40 41 = link_to dashboard_merge_requests_path do
... ... @@ -46,7 +47,7 @@
46 47 - unless @issues.blank?
47 48 %div.dashboard_category
48 49 %h3
49   - Issues
  50 + = link_to "Issues" , "#issues", :id => "issues"
50 51 %small ( assigned to you )
51 52 %strong.right
52 53 = link_to dashboard_merge_requests_path do
... ... @@ -58,7 +59,7 @@
58 59 - unless @events.blank?
59 60 %div.dashboard_category
60 61 %h3
61   - Activities
  62 + = link_to "Activities" , "#activities", :id => "activities"
62 63  
63 64 %hr
64 65 .row
... ...
app/views/events/_event.html.haml 0 → 100644
... ... @@ -0,0 +1,31 @@
  1 +.wll.event_feed
  2 + - if event.push?
  3 + - if event.new_branch?
  4 + = image_tag gravatar_icon(event.pusher_email), :class => "avatar"
  5 + %strong #{event.pusher_name}
  6 + pushed new branch
  7 + = link_to project_commits_path(event.project, :ref => event.branch_name) do
  8 + %strong= event.branch_name
  9 + at
  10 + %strong= link_to event.project.name, event.project
  11 + %span.cgray
  12 + = time_ago_in_words(event.created_at)
  13 + ago.
  14 + - else
  15 + = image_tag gravatar_icon(event.pusher_email), :class => "avatar"
  16 + %strong #{event.pusher_name}
  17 + pushed to
  18 + = link_to project_commits_path(event.project, :ref => event.branch_name) do
  19 + %strong= event.branch_name
  20 + at
  21 + %strong= link_to event.project.name, event.project
  22 + %span.cgray
  23 + = time_ago_in_words(event.created_at)
  24 + ago.
  25 + - if event.commits.count > 1
  26 + = link_to compare_project_commits_path(event.project, :from => event.commits.first.prev_commit_id, :to => event.commits.last.id) do
  27 + Compare #{event.commits.first.commit.id[0..8]}...#{event.commits.last.id[0..8]}
  28 + - @project = event.project
  29 + %ul.unstyled
  30 + = render event.commits
  31 +
... ...