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 {
}
}
}
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
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
......
......@@ -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
......
......@@ -2,6 +2,7 @@ class Commit
attr_accessor :commit
attr_accessor :head
attr_accessor :refs
delegate :message,
:committed_date,
......
......@@ -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")
......
......@@ -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) }
......
.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
......
......@@ -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
......@@ -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
......@@ -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
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