Project activities perfomance increased. Cache for project activitites disabled. Repository conception changed
This commit is contained in:
parent
ac62036320
commit
0ebc610e49
10 changed files with 64 additions and 4 deletions
|
@ -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) }
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue