recent radio button

This commit is contained in:
gitlabhq 2011-10-21 14:03:34 +03:00
parent 977fe73073
commit 24f04c0a61
6 changed files with 54 additions and 21 deletions

View file

@ -60,24 +60,21 @@ class ProjectsController < ApplicationController
end end
def show def show
if @project.repo_exists? return render "projects/empty" unless @project.repo_exists?
@date = case params[:view] @date = case params[:view]
when "week" then Date.today - 7.days when "week" then Date.today - 7.days
else Date.today when "day" then Date.today
end.at_beginning_of_day else nil
end
@heads = @project.repo.heads if @date
@commits = @heads.map do |h| @date = @date.at_beginning_of_day
@project.repo.log(h.name, nil, :since => @date)
end.flatten.uniq { |c| c.id }
@commits.sort! do |x, y|
y.committed_date <=> x.committed_date
end
@commits = @project.commits_since(@date)
@messages = project.notes.since(@date).order("created_at DESC") @messages = project.notes.since(@date).order("created_at DESC")
else else
return render "projects/empty" @commits = @project.fresh_commits
@messages = project.notes.fresh.limit(10)
end end
end end
@ -89,11 +86,12 @@ class ProjectsController < ApplicationController
@date = case params[:view] @date = case params[:view]
when "week" then Date.today - 7.days when "week" then Date.today - 7.days
when "all" then nil when "all" then nil
else Date.today when "day" then Date.today
else nil
end end
@notes = @project.common_notes.order("created_at DESC") @notes = @project.common_notes.order("created_at DESC")
@notes = @notes.since(@date.at_beginning_of_day) if @date @notes = @date ? @notes.since(@date.at_beginning_of_day) : @notes.fresh.limit(10)
@note = Note.new @note = Note.new
end end

View file

@ -24,6 +24,7 @@ class Note < ActiveRecord::Base
scope :last_week, where("created_at >= :date", :date => (Date.today - 7.days)) scope :last_week, where("created_at >= :date", :date => (Date.today - 7.days))
scope :since, lambda { |day| where("created_at >= :date", :date => (day)) } scope :since, lambda { |day| where("created_at >= :date", :date => (day)) }
scope :fresh, order("created_at DESC")
mount_uploader :attachment, AttachmentUploader mount_uploader :attachment, AttachmentUploader
end end

View file

@ -126,6 +126,34 @@ class Project < ActiveRecord::Base
end end
end end
def heads
@heads ||= repo.heads
end
def fresh_commits
commits = heads.map do |h|
repo.commits(h.name, 10)
end.flatten.uniq { |c| c.id }
commits.sort! do |x, y|
y.committed_date <=> x.committed_date
end
commits[0..10]
end
def commits_since(date)
commits = heads.map do |h|
repo.log(h.name, nil, :since => date)
end.flatten.uniq { |c| c.id }
commits.sort! do |x, y|
y.committed_date <=> x.committed_date
end
commits
end
def tree(fcommit, path = nil) def tree(fcommit, path = nil)
fcommit = commit if fcommit == :head fcommit = commit if fcommit == :head
tree = fcommit.tree tree = fcommit.tree

View file

@ -1,9 +1,12 @@
%div %div
%h2.left Recent history %h2.left History
.right .right
= form_tag project_path(@project), :method => :get do = form_tag project_path(@project), :method => :get do
.span-2 .span-2
= radio_button_tag :view, "day", (params[:view] || "day") == "day", :onclick => "this.form.submit()", :id => "day_view" = radio_button_tag :view, "recent", (params[:view] || "recent") == "recent", :onclick => "this.form.submit()", :id => "recent_view"
= label_tag "recent_view","Recent"
.span-2
= radio_button_tag :view, "day", params[:view] == "day", :onclick => "this.form.submit()", :id => "day_view"
= label_tag "day_view","Today" = label_tag "day_view","Today"
.span-2 .span-2
= radio_button_tag :view, "week", params[:view] == "week", :onclick => "this.form.submit()", :id => "week_view" = radio_button_tag :view, "week", params[:view] == "week", :onclick => "this.form.submit()", :id => "week_view"

View file

@ -4,7 +4,10 @@
.right .right
= form_tag wall_project_path(@project), :method => :get do = form_tag wall_project_path(@project), :method => :get do
.span-2 .span-2
= radio_button_tag :view, "day", (params[:view] || "day") == "day", :onclick => "this.form.submit()", :id => "day_view" = radio_button_tag :view, "recent", (params[:view] || "recent") == "recent", :onclick => "this.form.submit()", :id => "recent_view"
= label_tag "recent_view","Recent"
.span-2
= radio_button_tag :view, "day", params[:view] == "day", :onclick => "this.form.submit()", :id => "day_view"
= label_tag "day_view","Today" = label_tag "day_view","Today"
.span-2 .span-2
= radio_button_tag :view, "week", params[:view] == "week", :onclick => "this.form.submit()", :id => "week_view" = radio_button_tag :view, "week", params[:view] == "week", :onclick => "this.form.submit()", :id => "week_view"

View file

@ -73,7 +73,7 @@ describe "Projects" do
end end
it "should beahave like dashboard" do it "should beahave like dashboard" do
page.should have_content("Recent history") page.should have_content("History")
end end
end end