Commit f88a2617 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Tree ajax log. progress bar & refactoring

parent 1a2bacfb
...@@ -114,3 +114,8 @@ function showDiff(link) { ...@@ -114,3 +114,8 @@ function showDiff(link) {
return _chosen.apply(this, [default_options]); return _chosen.apply(this, [default_options]);
}}) }})
})(jQuery); })(jQuery);
function ajaxGet(url) {
$.ajax({type: "GET", url: url, dataType: "script"});
}
...@@ -134,4 +134,8 @@ module ApplicationHelper ...@@ -134,4 +134,8 @@ module ApplicationHelper
end end
active ? "current" : nil active ? "current" : nil
end end
def hexdigest(string)
Digest::SHA1.hexdigest string
end
end end
module TreeHelper
def tree_icon(content)
if content.is_a?(Grit::Blob)
if content.text?
image_tag "file_txt.png"
elsif content.image?
image_tag "file_img.png"
else
image_tag "file_bin.png"
end
else
image_tag "file_dir.png"
end
end
def tree_hex_class(content)
"file_#{hexdigest(content.name)}"
end
def tree_full_path(content)
if params[:path]
File.join(params[:path], content.name)
else
content.name
end
end
end
...@@ -29,12 +29,13 @@ ...@@ -29,12 +29,13 @@
%td %td
%td %td
- index = 0
- contents.select{ |i| i.is_a?(Grit::Tree)}.each do |content| - contents.select{ |i| i.is_a?(Grit::Tree)}.each do |content|
= render :partial => "refs/tree_item", :locals => { :content => content } = render :partial => "refs/tree_item", :locals => { :content => content, :index => (index += 1) }
- contents.select{ |i| i.is_a?(Grit::Blob)}.each do |content| - contents.select{ |i| i.is_a?(Grit::Blob)}.each do |content|
= render :partial => "refs/tree_item", :locals => { :content => content } = render :partial => "refs/tree_item", :locals => { :content => content, :index => (index += 1) }
- contents.select{ |i| i.is_a?(Grit::Submodule)}.each do |content| - contents.select{ |i| i.is_a?(Grit::Submodule)}.each do |content|
= render :partial => "refs/submodule_item", :locals => { :content => content } = render :partial => "refs/submodule_item", :locals => { :content => content, :index => (index += 1) }
- if content = contents.select{ |c| c.is_a?(Grit::Blob) and c.name =~ /^readme/i }.first - if content = contents.select{ |c| c.is_a?(Grit::Blob) and c.name =~ /^readme/i }.first
.file_holder#README .file_holder#README
...@@ -58,8 +59,9 @@ ...@@ -58,8 +59,9 @@
}); });
// Load last commit log for each file in tree
$(window).load(function(){ $(window).load(function(){
$.ajax({type: "GET", url: '#{@logs_path}', dataType: "script"}); ajaxGet('#{@logs_path}');
}); });
......
- file = params[:path] ? File.join(params[:path], content.name) : content.name - file = tree_full_path(content)
%tr{ :class => "tree-item file_#{Digest::SHA1.hexdigest(content.name)}", :url => tree_file_project_ref_path(@project, @ref, file) } %tr{ :class => "tree-item #{tree_hex_class(content)}", :url => tree_file_project_ref_path(@project, @ref, file) }
%td.tree-item-file-name %td.tree-item-file-name
- if content.is_a?(Grit::Blob) = tree_icon(content)
- if content.text?
= image_tag "file_txt.png", :class => "tree-ico"
- elsif content.image?
= image_tag "file_img.png", :class => "tree-ico"
- else
= image_tag "file_bin.png", :class => "tree-ico"
- else
= image_tag "file_dir.png", :class => "tree-ico"
= link_to truncate(content.name, :length => 40), tree_file_project_ref_path(@project, @ref || @commit.id, file), :remote => :true = link_to truncate(content.name, :length => 40), tree_file_project_ref_path(@project, @ref || @commit.id, file), :remote => :true
%td.tree_time_ago.cgray %td.tree_time_ago.cgray
- if index == 1
%span.log_loading
Loading commit data..
= image_tag "ajax_loader_tree.gif", :width => 14
%td.tree_commit %td.tree_commit
...@@ -4,6 +4,6 @@ ...@@ -4,6 +4,6 @@
- tm = @project.team_member_by_name_or_email(content_commit.author_email, content_commit.author_name) - tm = @project.team_member_by_name_or_email(content_commit.author_email, content_commit.author_name)
:plain :plain
var row = $("table.table_#{@hex_path} tr.file_#{Digest::SHA1.hexdigest(file_name)}"); var row = $("table.table_#{@hex_path} tr.file_#{hexdigest(file_name)}");
row.find("td.tree_time_ago").html('#{escape_javascript(time_ago_in_words(content_commit.committed_date))} ago'); row.find("td.tree_time_ago").html('#{escape_javascript(time_ago_in_words(content_commit.committed_date))} ago');
row.find("td.tree_commit").html('#{escape_javascript(render("tree_commit", :tm => tm, :content_commit => content_commit))}'); row.find("td.tree_commit").html('#{escape_javascript(render("tree_commit", :tm => tm, :content_commit => content_commit))}');
:plain :plain
// Load Files list
$("#tree-holder").html("#{escape_javascript(render(:partial => "tree", :locals => {:repo => @repo, :commit => @commit, :tree => @tree}))}"); $("#tree-holder").html("#{escape_javascript(render(:partial => "tree", :locals => {:repo => @repo, :commit => @commit, :tree => @tree}))}");
$("#tree-content-holder").show("slide", { direction: "right" }, 150); $("#tree-content-holder").show("slide", { direction: "right" }, 150);
$('.project-refs-form #path').val("#{params[:path]}"); $('.project-refs-form #path').val("#{params[:path]}");
// Load last commit log for each file in tree
$('#tree-slider').waitForImages(function() { $('#tree-slider').waitForImages(function() {
$.ajax({type: "GET", url: '#{@logs_path}', dataType: "script"}); ajaxGet('#{@logs_path}');
}); });
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