Commit 94690bd2c4b30116aeee42fab5f97d5023ac750f

Authored by Valery Sizov
1 parent 6b66a766

Graph: base implementation

app/assets/stylesheets/projects.css.scss
@@ -468,4 +468,13 @@ body.project-page table .commit { @@ -468,4 +468,13 @@ body.project-page table .commit {
468 /** UI autocomplete **/ 468 /** UI autocomplete **/
469 .ui-autocomplete { @include round-borders-all(5px); } 469 .ui-autocomplete { @include round-borders-all(5px); }
470 .ui-menu-item { cursor: pointer } 470 .ui-menu-item { cursor: pointer }
471 - 471 +
  472 +#holder {
  473 + border: solid 1px #999;
  474 + cursor: move;
  475 + height: 70%;
  476 + overflow: scroll;
  477 + position: absolute;
  478 + width: auto;
  479 + margin: 6ex 3ex 0ex 0ex;
  480 +}
app/controllers/projects_controller.rb
@@ -150,11 +150,9 @@ class ProjectsController < ApplicationController @@ -150,11 +150,9 @@ class ProjectsController < ApplicationController
150 h[:id] = c.sha 150 h[:id] = c.sha
151 h[:date] = c.date 151 h[:date] = c.date
152 h[:message] = c.message.force_encoding("UTF-8") 152 h[:message] = c.message.force_encoding("UTF-8")
153 - h[:email] = c.author.email 153 + h[:login] = c.author.email
154 h 154 h
155 end.to_json 155 end.to_json
156 -  
157 - render :text => @commits_json  
158 end 156 end
159 157
160 def blob 158 def blob
app/views/layouts/project.html.haml
@@ -22,7 +22,7 @@ @@ -22,7 +22,7 @@
22 = link_to "History", project_path(@project), :class => current_page?(:controller => "projects", :action => "show", :id => @project) ? "current" : nil 22 = link_to "History", project_path(@project), :class => current_page?(:controller => "projects", :action => "show", :id => @project) ? "current" : nil
23 = link_to "Tree", tree_project_path(@project), :class => current_page?(:controller => "projects", :action => "tree", :id => @project) ? "current" : nil 23 = link_to "Tree", tree_project_path(@project), :class => current_page?(:controller => "projects", :action => "tree", :id => @project) ? "current" : nil
24 = link_to "Commits", project_commits_path(@project), :class => current_page?(:controller => "commits", :action => "index", :project_id => @project) ? "current" : nil 24 = link_to "Commits", project_commits_path(@project), :class => current_page?(:controller => "commits", :action => "index", :project_id => @project) ? "current" : nil
25 - = link_to "Network graph", graph_project_path(@project), :class => current_page?(:controller => "projects", :action => "graph", :project_id => @project) ? "current" : nil 25 + = link_to "Network graph", graph_project_path(@project), :class => current_page?(:controller => "projects", :action => "graph", :id => @project) ? "current" : nil
26 = link_to team_project_path(@project), :class => (current_page?(:controller => "projects", :action => "team", :id => @project) || controller.controller_name == "team_members") ? "current" : nil do 26 = link_to team_project_path(@project), :class => (current_page?(:controller => "projects", :action => "team", :id => @project) || controller.controller_name == "team_members") ? "current" : nil do
27 Team 27 Team
28 - if @project.users_projects.count > 0 28 - if @project.users_projects.count > 0
app/views/projects/graph.html.haml 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +#holder.graph
  2 +
  3 +:javascript
  4 + var chunk1={commits:#{@commits_json}};
  5 + var days=#{@days_json};
  6 + initGraph();
  7 + $(function(){
  8 + branchGraph($("#holder")[0]);
  9 + });
lib/assets/javascripts/branch-graph.js
1 -var commits = chunk1.commits, 1 +var commits = {},
2 comms = {}, 2 comms = {},
3 pixelsX = [], 3 pixelsX = [],
4 pixelsY = [], 4 pixelsY = [],
5 mmax = Math.max, 5 mmax = Math.max,
6 mtime = 0, 6 mtime = 0,
7 mspace = 0, 7 mspace = 0,
8 - parents = {};  
9 -for (var i = 0, ii = commits.length; i < ii; i++) {  
10 - for (var j = 0, jj = commits[i].parents.length; j < jj; j++) {  
11 - parents[commits[i].parents[j][0]] = true;  
12 - }  
13 - mtime = Math.max(mtime, commits[i].time);  
14 - mspace = Math.max(mspace, commits[i].space);  
15 -}  
16 -mtime = mtime + 4;  
17 -mspace = mspace + 10;  
18 -for (i = 0; i < ii; i++) {  
19 - if (commits[i].id in parents) {  
20 - commits[i].isParent = true;  
21 - }  
22 - comms[commits[i].id] = commits[i];  
23 -}  
24 -var colors = ["#000"];  
25 -for (var k = 0; k < mspace; k++) {  
26 - colors.push(Raphael.getColor()); 8 + parents = {},
  9 + ii = 0,
  10 + colors = ["#000"];
  11 +
  12 +function initGraph(){
  13 + commits = chunk1.commits;
  14 + ii = commits.length;
  15 + for (var i = 0; i < ii; i++) {
  16 + for (var j = 0, jj = commits[i].parents.length; j < jj; j++) {
  17 + parents[commits[i].parents[j][0]] = true;
  18 + }
  19 + mtime = Math.max(mtime, commits[i].time);
  20 + mspace = Math.max(mspace, commits[i].space);
  21 + }
  22 + mtime = mtime + 4;
  23 + mspace = mspace + 10;
  24 + for (i = 0; i < ii; i++) {
  25 + if (commits[i].id in parents) {
  26 + commits[i].isParent = true;
  27 + }
  28 + comms[commits[i].id] = commits[i];
  29 + }
  30 + for (var k = 0; k < mspace; k++) {
  31 + colors.push(Raphael.getColor());
  32 + }
27 } 33 }
  34 +
28 function branchGraph(holder) { 35 function branchGraph(holder) {
29 var ch = mspace * 20 + 20, cw = mtime * 20 + 20, 36 var ch = mspace * 20 + 20, cw = mtime * 20 + 20,
30 r = Raphael("holder", cw, ch), 37 r = Raphael("holder", cw, ch),