Commit 0ebc610e authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Project activities perfomance increased. Cache for project activitites...

Project activities perfomance increased. Cache for project activitites disabled. Repository conception changed
parent ac620363
...@@ -672,3 +672,17 @@ body.project-page h2.icon.loading { ...@@ -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;
}
}
...@@ -69,7 +69,7 @@ class ProjectsController < ApplicationController ...@@ -69,7 +69,7 @@ class ProjectsController < ApplicationController
def show def show
return render "projects/empty" unless @project.repo_exists? && @project.has_commits? return render "projects/empty" unless @project.repo_exists? && @project.has_commits?
limit = (params[:limit] || 20).to_i limit = (params[:limit] || 20).to_i
@activities = @project.cached_updates(limit) @activities = @project.updates_wo_repo(limit)
end end
def files def files
......
...@@ -9,7 +9,7 @@ class RepositoriesController < ApplicationController ...@@ -9,7 +9,7 @@ class RepositoriesController < ApplicationController
layout "project" layout "project"
def show def show
@activities = @project.fresh_commits(20) @activities = @project.commits_with_refs(20)
end end
def branches def branches
......
...@@ -2,6 +2,7 @@ class Commit ...@@ -2,6 +2,7 @@ class Commit
attr_accessor :commit attr_accessor :commit
attr_accessor :head attr_accessor :head
attr_accessor :refs
delegate :message, delegate :message,
:committed_date, :committed_date,
......
...@@ -79,6 +79,7 @@ class Project < ActiveRecord::Base ...@@ -79,6 +79,7 @@ class Project < ActiveRecord::Base
:repo_exists?, :repo_exists?,
:commit, :commit,
:commits, :commits,
:commits_with_refs,
:tree, :tree,
:heads, :heads,
:commits_since, :commits_since,
...@@ -144,6 +145,10 @@ class Project < ActiveRecord::Base ...@@ -144,6 +145,10 @@ class Project < ActiveRecord::Base
users_projects.find_by_user_id(user_id) users_projects.find_by_user_id(user_id)
end end
def fresh_merge_requests(n)
merge_requests.includes(:project, :author).order("created_at desc").first(n)
end
def fresh_issues(n) def fresh_issues(n)
issues.includes(:project, :author).order("created_at desc").first(n) issues.includes(:project, :author).order("created_at desc").first(n)
end end
...@@ -290,6 +295,16 @@ class Project < ActiveRecord::Base ...@@ -290,6 +295,16 @@ class Project < ActiveRecord::Base
end[0...n] end[0...n]
end 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 def check_limit
unless owner.can_create_project? unless owner.can_create_project?
errors[:base] << ("Your own projects limit is #{owner.projects_limit}! Please contact administrator to increase it") errors[:base] << ("Your own projects limit is #{owner.projects_limit}! Please contact administrator to increase it")
......
...@@ -112,6 +112,16 @@ class Repository ...@@ -112,6 +112,16 @@ class Repository
commits[0...n] commits[0...n]
end 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) def commits_since(date)
commits = heads.map do |h| commits = heads.map do |h|
repo.log(h.name, nil, :since => date).each { |c| Commit.new(c, h) } repo.log(h.name, nil, :since => date).each { |c| Commit.new(c, h) }
......
.merge-tabs.repository .merge-tabs.repository
= link_to project_repository_path(@project), :class => "activities-tab tab #{'active' if current_page?(project_repository_path(@project)) }" do = link_to project_repository_path(@project), :class => "activities-tab tab #{'active' if current_page?(project_repository_path(@project)) }" do
%span %span
Activities History
= link_to branches_project_repository_path(@project), :class => "tab #{'active' if current_page?(branches_project_repository_path(@project)) }" do = link_to branches_project_repository_path(@project), :class => "tab #{'active' if current_page?(branches_project_repository_path(@project)) }" do
%span %span
Branches Branches
......
...@@ -6,5 +6,8 @@ ...@@ -6,5 +6,8 @@
%a.update-item{:href => project_commits_path(@project, :ref => branch.name)} %a.update-item{:href => project_commits_path(@project, :ref => branch.name)}
%span.update-title{:style => "margin-bottom:0px;"} %span.update-title{:style => "margin-bottom:0px;"}
= branch.name = branch.name
%span.update-author.right
= time_ago_in_words(branch.commit.committed_date)
ago
- else - else
%h3 No brances %h3 No brances
...@@ -4,4 +4,18 @@ ...@@ -4,4 +4,18 @@
#news-feed.news-feed #news-feed.news-feed
.project-box.project-updates.ui-box.ui-box-small.ui-box-big .project-box.project-updates.ui-box.ui-box-small.ui-box-big
- @activities.each do |update| - @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
...@@ -6,5 +6,8 @@ ...@@ -6,5 +6,8 @@
%a.update-item{:href => project_commits_path(@project, :ref => tag.name)} %a.update-item{:href => project_commits_path(@project, :ref => tag.name)}
%span.update-title{:style => "margin-bottom:0px;"} %span.update-title{:style => "margin-bottom:0px;"}
= tag.name = tag.name
%span.update-author.right
= time_ago_in_words(tag.commit.committed_date)
ago
- else - else
%h3 No tags %h3 No tags
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment