user dashboard
This commit is contained in:
parent
267bd6068c
commit
485c5199b7
7 changed files with 73 additions and 4 deletions
|
@ -1,5 +1,6 @@
|
||||||
class DashboardController < ApplicationController
|
class DashboardController < ApplicationController
|
||||||
def index
|
def index
|
||||||
@projects = current_user.projects.all
|
@projects = current_user.projects.all
|
||||||
|
@active_projects = @projects.select(&:last_activity_date).sort_by(&:last_activity_date).reverse
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,2 +1,9 @@
|
||||||
module DashboardHelper
|
module DashboardHelper
|
||||||
|
def path_to_object(project, object)
|
||||||
|
case object.class.name.to_s
|
||||||
|
when "Issue" then project_issues_path(project, project.issues.find(object.id))
|
||||||
|
when "Grit::Commit" then project_commit_path(project, project.repo.commits(object.id).first)
|
||||||
|
else "#"
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -119,6 +119,26 @@ class Project < ActiveRecord::Base
|
||||||
repo rescue false
|
repo rescue false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def last_activity
|
||||||
|
updates(1).first
|
||||||
|
rescue
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def last_activity_date
|
||||||
|
last_activity.try(:created_at)
|
||||||
|
end
|
||||||
|
|
||||||
|
def updates(n = 3)
|
||||||
|
[
|
||||||
|
fresh_commits(n),
|
||||||
|
issues.last(n),
|
||||||
|
notes.fresh.limit(n)
|
||||||
|
].compact.flatten.sort do |x, y|
|
||||||
|
y.created_at <=> x.created_at
|
||||||
|
end[0..n]
|
||||||
|
end
|
||||||
|
|
||||||
def commit(commit_id = nil)
|
def commit(commit_id = nil)
|
||||||
if commit_id
|
if commit_id
|
||||||
repo.commits(commit_id).first
|
repo.commits(commit_id).first
|
||||||
|
@ -131,16 +151,16 @@ class Project < ActiveRecord::Base
|
||||||
@heads ||= repo.heads
|
@heads ||= repo.heads
|
||||||
end
|
end
|
||||||
|
|
||||||
def fresh_commits
|
def fresh_commits(n = 10)
|
||||||
commits = heads.map do |h|
|
commits = heads.map do |h|
|
||||||
repo.commits(h.name, 10)
|
repo.commits(h.name, n)
|
||||||
end.flatten.uniq { |c| c.id }
|
end.flatten.uniq { |c| c.id }
|
||||||
|
|
||||||
commits.sort! do |x, y|
|
commits.sort! do |x, y|
|
||||||
y.committed_date <=> x.committed_date
|
y.committed_date <=> x.committed_date
|
||||||
end
|
end
|
||||||
|
|
||||||
commits[0..10]
|
commits[0..n]
|
||||||
end
|
end
|
||||||
|
|
||||||
def commits_since(date)
|
def commits_since(date)
|
||||||
|
|
|
@ -1 +1,36 @@
|
||||||
timeline
|
#dashboard-content.dashboard-content.content
|
||||||
|
%aside
|
||||||
|
%h4
|
||||||
|
%a.button-small.button-green{:href => ""} New Repository
|
||||||
|
Your Repositories
|
||||||
|
%ol.project-list
|
||||||
|
- @projects.each do |project|
|
||||||
|
%li
|
||||||
|
%a{:href => "#"}
|
||||||
|
%span.arrow →
|
||||||
|
%span.project-name= project.name
|
||||||
|
%span.time
|
||||||
|
%strong Last activity:
|
||||||
|
= project.last_activity_date ? time_ago_in_words(project.last_activity_date) + " ago" : "Never"
|
||||||
|
#news-feed.news-feed
|
||||||
|
%h2.icon
|
||||||
|
%span>
|
||||||
|
Dashboard
|
||||||
|
- @active_projects.each do |project|
|
||||||
|
.project-box.project-updates.ui-box.ui-box-small.ui-box-big
|
||||||
|
%h3= project.name
|
||||||
|
.data
|
||||||
|
- project.updates.each do |update|
|
||||||
|
%a.project-update{:href => path_to_object(project, update)}
|
||||||
|
%img{:src => "http://placehold.it/40x40"}
|
||||||
|
%span.update-title [#{update.class.name}] added a matcher that helps debugging matching problems
|
||||||
|
%span.update-author
|
||||||
|
%strong= update.author.name
|
||||||
|
authored
|
||||||
|
= time_ago_in_words(update.created_at)
|
||||||
|
ago
|
||||||
|
%br
|
||||||
|
/ .project-update
|
||||||
|
/ .project-updates
|
||||||
|
/ #news-feed
|
||||||
|
/ #dashboard-content
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<%= link_to truncate(@project.name, :length => 20), project_path(@project), :class => "current button" if @project && !@project.new_record? %>
|
<%= link_to truncate(@project.name, :length => 20), project_path(@project), :class => "current button" if @project && !@project.new_record? %>
|
||||||
|
<%= link_to 'Dashboard', dashboard_path, :class => current_page?(dashboard_path) ? "current button" : "button" %>
|
||||||
<%= link_to 'Projects', projects_path, :class => current_page?(projects_path) ? "current button" : "button" %>
|
<%= link_to 'Projects', projects_path, :class => current_page?(projects_path) ? "current button" : "button" %>
|
||||||
<%= link_to('Admin', admin_root_path, :class => admin_namespace? ? "current button" : "button" ) if current_user.is_admin? %>
|
<%= link_to('Admin', admin_root_path, :class => admin_namespace? ? "current button" : "button" ) if current_user.is_admin? %>
|
||||||
<%= link_to profile_path, :class => ((controller.controller_name == "keys" || controller.controller_name == "profile") ? "current button" : "button") do %>
|
<%= link_to profile_path, :class => ((controller.controller_name == "keys" || controller.controller_name == "profile") ? "current button" : "button") do %>
|
||||||
|
|
|
@ -15,6 +15,7 @@ Gitlab::Application.routes.draw do
|
||||||
put "profile/password", :to => "profile#password_update"
|
put "profile/password", :to => "profile#password_update"
|
||||||
put "profile/edit", :to => "profile#social_update"
|
put "profile/edit", :to => "profile#social_update"
|
||||||
get "profile", :to => "profile#show"
|
get "profile", :to => "profile#show"
|
||||||
|
get "dashboard", :to => "dashboard#index"
|
||||||
#get "profile/:id", :to => "profile#show"
|
#get "profile/:id", :to => "profile#show"
|
||||||
|
|
||||||
resources :projects, :only => [:new, :create, :index]
|
resources :projects, :only => [:new, :create, :index]
|
||||||
|
|
|
@ -8,4 +8,8 @@ module CommitExt
|
||||||
rescue
|
rescue
|
||||||
"-- invalid encoding for commit message"
|
"-- invalid encoding for commit message"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def created_at
|
||||||
|
committed_date
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue