OSDN Git Service

Project activities perfomance increased. Cache for project activitites disabled....
authorDmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com>
Wed, 4 Jan 2012 06:17:41 +0000 (08:17 +0200)
committerDmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com>
Wed, 4 Jan 2012 06:17:41 +0000 (08:17 +0200)
app/assets/stylesheets/projects.css.scss
app/controllers/projects_controller.rb
app/controllers/repositories_controller.rb
app/models/commit.rb
app/models/project.rb
app/models/repository.rb
app/views/repositories/_head.html.haml
app/views/repositories/branches.html.haml
app/views/repositories/show.html.haml
app/views/repositories/tags.html.haml

index 316ef03..79fb64c 100644 (file)
@@ -672,3 +672,17 @@ body.project-page h2.icon.loading {
     }
   }
 }
+
+a.project-update.titled { 
+  position: relative;
+  padding-right: 310px !important;
+
+  .right-block { 
+    padding: 10px;
+    width: 280px;
+    background: #f5f5f5;
+    position: absolute;
+    right: 0;
+    top: 0;
+  }
+}
index 1e859ce..69e1cc3 100644 (file)
@@ -69,7 +69,7 @@ class ProjectsController < ApplicationController
   def show
     return render "projects/empty" unless @project.repo_exists? && @project.has_commits?
     limit = (params[:limit] || 20).to_i
-    @activities = @project.cached_updates(limit)
+    @activities = @project.updates_wo_repo(limit)
   end
 
   def files
index 9a112f4..1e71593 100644 (file)
@@ -9,7 +9,7 @@ class RepositoriesController < ApplicationController
   layout "project"
 
   def show
-    @activities = @project.fresh_commits(20)
+    @activities = @project.commits_with_refs(20)
   end
 
   def branches
index 33d3b20..695dfa5 100644 (file)
@@ -2,6 +2,7 @@ class Commit
 
   attr_accessor :commit
   attr_accessor :head
+  attr_accessor :refs
 
   delegate :message,
     :committed_date,
index 33dd85e..9363782 100644 (file)
@@ -79,6 +79,7 @@ class Project < ActiveRecord::Base
     :repo_exists?,
     :commit,
     :commits,
+    :commits_with_refs,
     :tree,
     :heads,
     :commits_since,
@@ -144,6 +145,10 @@ class Project < ActiveRecord::Base
     users_projects.find_by_user_id(user_id)
   end
 
+  def fresh_merge_requests(n)
+    merge_requests.includes(:project, :author).order("created_at desc").first(n)
+  end
+
   def fresh_issues(n)
     issues.includes(:project, :author).order("created_at desc").first(n)
   end
@@ -290,6 +295,16 @@ class Project < ActiveRecord::Base
     end[0...n]
   end
 
+  def updates_wo_repo(n=3)
+    [
+      fresh_issues(n),
+      fresh_merge_requests(n),
+      fresh_notes(n)
+    ].compact.flatten.sort do |x, y|
+      y.created_at <=> x.created_at
+    end[0...n]
+  end
+
   def check_limit
     unless owner.can_create_project?
       errors[:base] << ("Your own projects limit is #{owner.projects_limit}! Please contact administrator to increase it")
index 6f90fd0..8da5d2d 100644 (file)
@@ -112,6 +112,16 @@ class Repository
     commits[0...n]
   end
 
+  def commits_with_refs(n = 20)
+    commits = repo.refs.map { |ref| Commit.new(ref.commit, ref) }
+
+    commits.sort! do |x, y|
+      y.committed_date <=> x.committed_date
+    end[0..n]
+
+    commits
+  end
+
   def commits_since(date)
     commits = heads.map do |h|
       repo.log(h.name, nil, :since => date).each { |c| Commit.new(c, h) }
index c22286e..894a301 100644 (file)
@@ -1,7 +1,7 @@
 .merge-tabs.repository
   = link_to project_repository_path(@project), :class => "activities-tab tab #{'active' if current_page?(project_repository_path(@project)) }" do 
     %span
-    Activities
+    History
   = link_to branches_project_repository_path(@project), :class => "tab #{'active' if current_page?(branches_project_repository_path(@project)) }" do 
     %span
     Branches
index 3a63e76..befa88c 100644 (file)
@@ -6,5 +6,8 @@
         %a.update-item{:href => project_commits_path(@project, :ref => branch.name)}
           %span.update-title{:style => "margin-bottom:0px;"}
             = branch.name
+            %span.update-author.right
+              = time_ago_in_words(branch.commit.committed_date)
+              ago
 - else 
   %h3 No brances
index 494f82b..128c852 100644 (file)
@@ -4,4 +4,18 @@
 #news-feed.news-feed
   .project-box.project-updates.ui-box.ui-box-small.ui-box-big
     - @activities.each do |update|
-      = render "projects/feed", :update => update, :project => @project
+      %a.project-update.titled{:href => project_commits_path(@project, :ref => update.head.name)}
+        = image_tag gravatar_icon(update.author_email), :class => "left", :width => 40
+        %span.update-title
+          = dashboard_feed_title(update)
+        %span.update-author
+          %strong= update.author_name
+          authored
+          = time_ago_in_words(update.created_at)
+          ago
+        .right-block
+          %span.update-title
+            %span.commit.tag= update.head.name
+          %span.update-author
+            .right= truncate update.commit.id
+
index 6c8e377..bff838f 100644 (file)
@@ -6,5 +6,8 @@
         %a.update-item{:href => project_commits_path(@project, :ref => tag.name)}
           %span.update-title{:style => "margin-bottom:0px;"}
             = tag.name
+            %span.update-author.right
+              = time_ago_in_words(tag.commit.committed_date)
+              ago
 - else 
   %h3 No tags