Graph: base implementation
This commit is contained in:
parent
6b66a766d1
commit
94690bd2c4
5 changed files with 48 additions and 25 deletions
|
@ -468,4 +468,13 @@ body.project-page table .commit {
|
||||||
/** UI autocomplete **/
|
/** UI autocomplete **/
|
||||||
.ui-autocomplete { @include round-borders-all(5px); }
|
.ui-autocomplete { @include round-borders-all(5px); }
|
||||||
.ui-menu-item { cursor: pointer }
|
.ui-menu-item { cursor: pointer }
|
||||||
|
|
||||||
|
#holder {
|
||||||
|
border: solid 1px #999;
|
||||||
|
cursor: move;
|
||||||
|
height: 70%;
|
||||||
|
overflow: scroll;
|
||||||
|
position: absolute;
|
||||||
|
width: auto;
|
||||||
|
margin: 6ex 3ex 0ex 0ex;
|
||||||
|
}
|
||||||
|
|
|
@ -150,11 +150,9 @@ class ProjectsController < ApplicationController
|
||||||
h[:id] = c.sha
|
h[:id] = c.sha
|
||||||
h[:date] = c.date
|
h[:date] = c.date
|
||||||
h[:message] = c.message.force_encoding("UTF-8")
|
h[:message] = c.message.force_encoding("UTF-8")
|
||||||
h[:email] = c.author.email
|
h[:login] = c.author.email
|
||||||
h
|
h
|
||||||
end.to_json
|
end.to_json
|
||||||
|
|
||||||
render :text => @commits_json
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def blob
|
def blob
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
= link_to "History", project_path(@project), :class => current_page?(:controller => "projects", :action => "show", :id => @project) ? "current" : nil
|
= link_to "History", project_path(@project), :class => current_page?(:controller => "projects", :action => "show", :id => @project) ? "current" : nil
|
||||||
= link_to "Tree", tree_project_path(@project), :class => current_page?(:controller => "projects", :action => "tree", :id => @project) ? "current" : nil
|
= link_to "Tree", tree_project_path(@project), :class => current_page?(:controller => "projects", :action => "tree", :id => @project) ? "current" : nil
|
||||||
= link_to "Commits", project_commits_path(@project), :class => current_page?(:controller => "commits", :action => "index", :project_id => @project) ? "current" : nil
|
= link_to "Commits", project_commits_path(@project), :class => current_page?(:controller => "commits", :action => "index", :project_id => @project) ? "current" : nil
|
||||||
= link_to "Network graph", graph_project_path(@project), :class => current_page?(:controller => "projects", :action => "graph", :project_id => @project) ? "current" : nil
|
= link_to "Network graph", graph_project_path(@project), :class => current_page?(:controller => "projects", :action => "graph", :id => @project) ? "current" : nil
|
||||||
= link_to team_project_path(@project), :class => (current_page?(:controller => "projects", :action => "team", :id => @project) || controller.controller_name == "team_members") ? "current" : nil do
|
= link_to team_project_path(@project), :class => (current_page?(:controller => "projects", :action => "team", :id => @project) || controller.controller_name == "team_members") ? "current" : nil do
|
||||||
Team
|
Team
|
||||||
- if @project.users_projects.count > 0
|
- if @project.users_projects.count > 0
|
||||||
|
|
9
app/views/projects/graph.html.haml
Normal file
9
app/views/projects/graph.html.haml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#holder.graph
|
||||||
|
|
||||||
|
:javascript
|
||||||
|
var chunk1={commits:#{@commits_json}};
|
||||||
|
var days=#{@days_json};
|
||||||
|
initGraph();
|
||||||
|
$(function(){
|
||||||
|
branchGraph($("#holder")[0]);
|
||||||
|
});
|
|
@ -1,30 +1,37 @@
|
||||||
var commits = chunk1.commits,
|
var commits = {},
|
||||||
comms = {},
|
comms = {},
|
||||||
pixelsX = [],
|
pixelsX = [],
|
||||||
pixelsY = [],
|
pixelsY = [],
|
||||||
mmax = Math.max,
|
mmax = Math.max,
|
||||||
mtime = 0,
|
mtime = 0,
|
||||||
mspace = 0,
|
mspace = 0,
|
||||||
parents = {};
|
parents = {},
|
||||||
for (var i = 0, ii = commits.length; i < ii; i++) {
|
ii = 0,
|
||||||
for (var j = 0, jj = commits[i].parents.length; j < jj; j++) {
|
colors = ["#000"];
|
||||||
parents[commits[i].parents[j][0]] = true;
|
|
||||||
}
|
function initGraph(){
|
||||||
mtime = Math.max(mtime, commits[i].time);
|
commits = chunk1.commits;
|
||||||
mspace = Math.max(mspace, commits[i].space);
|
ii = commits.length;
|
||||||
}
|
for (var i = 0; i < ii; i++) {
|
||||||
mtime = mtime + 4;
|
for (var j = 0, jj = commits[i].parents.length; j < jj; j++) {
|
||||||
mspace = mspace + 10;
|
parents[commits[i].parents[j][0]] = true;
|
||||||
for (i = 0; i < ii; i++) {
|
}
|
||||||
if (commits[i].id in parents) {
|
mtime = Math.max(mtime, commits[i].time);
|
||||||
commits[i].isParent = true;
|
mspace = Math.max(mspace, commits[i].space);
|
||||||
}
|
}
|
||||||
comms[commits[i].id] = commits[i];
|
mtime = mtime + 4;
|
||||||
}
|
mspace = mspace + 10;
|
||||||
var colors = ["#000"];
|
for (i = 0; i < ii; i++) {
|
||||||
for (var k = 0; k < mspace; k++) {
|
if (commits[i].id in parents) {
|
||||||
colors.push(Raphael.getColor());
|
commits[i].isParent = true;
|
||||||
|
}
|
||||||
|
comms[commits[i].id] = commits[i];
|
||||||
|
}
|
||||||
|
for (var k = 0; k < mspace; k++) {
|
||||||
|
colors.push(Raphael.getColor());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function branchGraph(holder) {
|
function branchGraph(holder) {
|
||||||
var ch = mspace * 20 + 20, cw = mtime * 20 + 20,
|
var ch = mspace * 20 + 20, cw = mtime * 20 + 20,
|
||||||
r = Raphael("holder", cw, ch),
|
r = Raphael("holder", cw, ch),
|
||||||
|
|
Loading…
Reference in a new issue