OSDN Git Service

Graph: base implementation
authorValery Sizov <vsv2711@gmail.com>
Sun, 13 Nov 2011 11:58:45 +0000 (13:58 +0200)
committerValery Sizov <vsv2711@gmail.com>
Sun, 13 Nov 2011 11:58:45 +0000 (13:58 +0200)
app/assets/stylesheets/projects.css.scss
app/controllers/projects_controller.rb
app/views/layouts/project.html.haml
app/views/projects/graph.html.haml [new file with mode: 0644]
lib/assets/javascripts/branch-graph.js

index b03ad10..9c0eb59 100644 (file)
@@ -468,4 +468,13 @@ body.project-page table .commit {
 /** UI autocomplete **/
 .ui-autocomplete { @include round-borders-all(5px); }
 .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;
+}
index a0e7279..0564a82 100644 (file)
@@ -150,11 +150,9 @@ class ProjectsController < ApplicationController
       h[:id] = c.sha
       h[:date] = c.date
       h[:message] = c.message.force_encoding("UTF-8")
-      h[:email] = c.author.email
+      h[:login] = c.author.email
       h
     end.to_json
-
-    render :text => @commits_json
   end
 
   def blob
index ed28970..fc28b93 100644 (file)
@@ -22,7 +22,7 @@
               = 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 "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
                 Team
                 - if @project.users_projects.count > 0
diff --git a/app/views/projects/graph.html.haml b/app/views/projects/graph.html.haml
new file mode 100644 (file)
index 0000000..b5f6921
--- /dev/null
@@ -0,0 +1,9 @@
+#holder.graph
+
+:javascript
+  var chunk1={commits:#{@commits_json}};
+  var days=#{@days_json};
+  initGraph();
+  $(function(){
+    branchGraph($("#holder")[0]);
+  });
index b98c836..f8b7366 100644 (file)
@@ -1,30 +1,37 @@
-var commits = chunk1.commits,
+var commits = {},
     comms = {},
     pixelsX = [],
     pixelsY = [],
     mmax = Math.max,
     mtime = 0,
     mspace = 0,
-    parents = {};
-for (var i = 0, ii = commits.length; i < ii; i++) {
-    for (var j = 0, jj = commits[i].parents.length; j < jj; j++) {
-        parents[commits[i].parents[j][0]] = true;
-    }
-    mtime = Math.max(mtime, commits[i].time);
-    mspace = Math.max(mspace, commits[i].space);
-}
-mtime = mtime + 4;
-mspace = mspace + 10;
-for (i = 0; i < ii; i++) {
-    if (commits[i].id in parents) {
-        commits[i].isParent = true;
-    }
-    comms[commits[i].id] = commits[i];
-}
-var colors = ["#000"];
-for (var k = 0; k < mspace; k++) {
-    colors.push(Raphael.getColor());
+    parents = {},
+    ii = 0,
+    colors = ["#000"];
+
+function initGraph(){
+  commits = chunk1.commits;
+  ii = commits.length;
+  for (var i = 0; i < ii; i++) {
+      for (var j = 0, jj = commits[i].parents.length; j < jj; j++) {
+          parents[commits[i].parents[j][0]] = true;
+      }
+      mtime = Math.max(mtime, commits[i].time);
+      mspace = Math.max(mspace, commits[i].space);
+  }
+  mtime = mtime + 4;
+  mspace = mspace + 10;
+  for (i = 0; i < ii; i++) {
+      if (commits[i].id in parents) {
+          commits[i].isParent = true;
+      }
+      comms[commits[i].id] = commits[i];
+  }
+  for (var k = 0; k < mspace; k++) {
+      colors.push(Raphael.getColor());
+  }
 }
+
 function branchGraph(holder) {
     var ch = mspace * 20 + 20, cw = mtime * 20 + 20,
         r = Raphael("holder", cw, ch),