summaryrefslogtreecommitdiff
path: root/vendor
diff options
context:
space:
mode:
authorSato Hiroyuki <sathiroyuki@gmail.com>2013-02-26 13:28:11 +0900
committerSato Hiroyuki <sathiroyuki@gmail.com>2013-02-26 20:31:39 +0900
commitd8a40d8c933da8e89013e989940f8b60d0f2e247 (patch)
tree8ccafedef6f21a99c318615164209e7d5cbce9ea /vendor
parentc9b1df1201dccded5fdfb4835209af9c0f258c55 (diff)
downloadgitlab-ce-d8a40d8c933da8e89013e989940f8b60d0f2e247.tar.gz
Move graph module from lib or vendor directory to app directory.
Because not autoloading lib directory at development mode.
Diffstat (limited to 'vendor')
-rw-r--r--vendor/assets/javascripts/branch-graph.js385
1 files changed, 0 insertions, 385 deletions
diff --git a/vendor/assets/javascripts/branch-graph.js b/vendor/assets/javascripts/branch-graph.js
deleted file mode 100644
index fb22953acd2..00000000000
--- a/vendor/assets/javascripts/branch-graph.js
+++ /dev/null
@@ -1,385 +0,0 @@
-!function(){
-
- var BranchGraph = function(element, options){
- this.element = element;
- this.options = options;
-
- this.preparedCommits = {};
- this.mtime = 0;
- this.mspace = 0;
- this.parents = {};
- this.colors = ["#000"];
-
- this.load();
- };
-
- BranchGraph.prototype.load = function(){
- $.ajax({
- url: this.options.url,
- method: 'get',
- dataType: 'json',
- success: $.proxy(function(data){
- $('.loading', this.element).hide();
- this.prepareData(data.days, data.commits);
- this.buildGraph();
- }, this)
- });
- };
-
- BranchGraph.prototype.prepareData = function(days, commits){
- this.days = days;
- this.dayCount = days.length;
- this.commits = commits;
- this.commitCount = commits.length;
-
- this.collectParents();
-
- this.mtime += 4;
- this.mspace += 10;
- for (var i = 0; i < this.commitCount; i++) {
- if (this.commits[i].id in this.parents) {
- this.commits[i].isParent = true;
- }
- this.preparedCommits[this.commits[i].id] = this.commits[i];
- }
- this.collectColors();
- };
-
- BranchGraph.prototype.collectParents = function(){
- for (var i = 0; i < this.commitCount; i++) {
- for (var j = 0, jj = this.commits[i].parents.length; j < jj; j++) {
- this.parents[this.commits[i].parents[j][0]] = true;
- }
- this.mtime = Math.max(this.mtime, this.commits[i].time);
- this.mspace = Math.max(this.mspace, this.commits[i].space);
- }
- };
-
- BranchGraph.prototype.collectColors = function(){
- for (var k = 0; k < this.mspace; k++) {
- this.colors.push(Raphael.getColor(.8));
- // Skipping a few colors in the spectrum to get more contrast between colors
- Raphael.getColor();Raphael.getColor();
- }
- };
-
- BranchGraph.prototype.buildGraph = function(){
- var graphWidth = $(this.element).width()
- , ch = this.mspace * 20 + 100
- , cw = Math.max(graphWidth, this.mtime * 20 + 260)
- , r = Raphael(this.element.get(0), cw, ch)
- , top = r.set()
- , cuday = 0
- , cumonth = ""
- , offsetX = 20
- , offsetY = 60
- , barWidth = Math.max(graphWidth, this.dayCount * 20 + 320)
- , scrollLeft = cw;
-
- this.raphael = r;
-
- r.rect(0, 0, barWidth, 20).attr({fill: "#222"});
- r.rect(0, 20, barWidth, 20).attr({fill: "#444"});
-
- for (mm = 0; mm < this.dayCount; mm++) {
- if(this.days[mm] != null){
- if(cuday != this.days[mm][0]){
- // Dates
- r.text(offsetX + mm * 20, 31, this.days[mm][0]).attr({
- font: "12px Monaco, monospace",
- fill: "#DDD"
- });
- cuday = this.days[mm][0];
- }
- if(cumonth != this.days[mm][1]){
- // Months
- r.text(offsetX + mm * 20, 11, this.days[mm][1]).attr({
- font: "12px Monaco, monospace",
- fill: "#EEE"
- });
- cumonth = this.days[mm][1];
- }
- }
- }
-
- for (i = 0; i < this.commitCount; i++) {
- var x = offsetX + 20 * this.commits[i].time
- , y = offsetY + 10 * this.commits[i].space
- , c
- , ps;
-
- // Draw dot
- r.circle(x, y, 3).attr({
- fill: this.colors[this.commits[i].space],
- stroke: "none"
- });
-
- // Draw lines
- for (var j = 0, jj = this.commits[i].parents.length; j < jj; j++) {
- c = this.preparedCommits[this.commits[i].parents[j][0]];
- ps = this.commits[i].parent_spaces[j];
- if (c) {
- var cx = offsetX + 20 * c.time
- , cy = offsetY + 10 * c.space
- , psy = offsetY + 10 * ps;
- if (c.space == this.commits[i].space && c.space == ps) {
- r.path([
- "M", x, y,
- "L", cx, cy
- ]).attr({
- stroke: this.colors[c.space],
- "stroke-width": 2
- });
-
- } else if (c.space < this.commits[i].space) {
- r.path([
- "M", x - 5, y,
- "l-5-2,0,4,5,-2",
- "L", x - 10, y,
- "L", x - 15, psy,
- "L", cx + 5, psy,
- "L", cx, cy])
- .attr({
- stroke: this.colors[this.commits[i].space],
- "stroke-width": 2
- });
- } else {
- r.path([
- "M", x - 3, y + 6,
- "l-4,3,4,2,0,-5",
- "L", x - 5, y + 10,
- "L", x - 10, psy,
- "L", cx + 5, psy,
- "L", cx, cy])
- .attr({
- stroke: this.colors[c.space],
- "stroke-width": 2
- });
- }
- }
- }
-
- if (this.commits[i].refs) {
- this.appendLabel(x, y, this.commits[i].refs);
- }
-
- // mark commit and displayed in the center
- if (this.commits[i].id == this.options.commit_id) {
- r.path([
- 'M', x, y - 5,
- 'L', x + 4, y - 15,
- 'L', x - 4, y - 15,
- 'Z'
- ]).attr({
- "fill": "#000",
- "fill-opacity": .7,
- "stroke": "none"
- });
- scrollLeft = x - graphWidth / 2;
- }
-
- this.appendAnchor(top, this.commits[i], x, y);
- }
- top.toFront();
- this.element.scrollLeft(scrollLeft);
- this.bindEvents();
- };
-
- BranchGraph.prototype.bindEvents = function(){
- var drag = {}
- , element = this.element;
-
- var dragger = function(event){
- element.scrollLeft(drag.sl - (event.clientX - drag.x));
- element.scrollTop(drag.st - (event.clientY - drag.y));
- };
-
- element.on({
- mousedown: function (event) {
- drag = {
- x: event.clientX,
- y: event.clientY,
- st: element.scrollTop(),
- sl: element.scrollLeft()
- };
- $(window).on('mousemove', dragger);
- }
- });
- $(window).on({
- mouseup: function(){
- //bars.animate({opacity: 0}, 300);
- $(window).off('mousemove', dragger);
- },
- keydown: function(event){
- if(event.keyCode == 37){
- // left
- element.scrollLeft( element.scrollLeft() - 50);
- }
- if(event.keyCode == 38){
- // top
- element.scrollTop( element.scrollTop() - 50);
- }
- if(event.keyCode == 39){
- // right
- element.scrollLeft( element.scrollLeft() + 50);
- }
- if(event.keyCode == 40){
- // bottom
- element.scrollTop( element.scrollTop() + 50);
- }
- }
- });
- };
-
- BranchGraph.prototype.appendLabel = function(x, y, refs){
- var r = this.raphael
- , shortrefs = refs
- , text, textbox, rect;
-
- if (shortrefs.length > 17){
- // Truncate if longer than 15 chars
- shortrefs = shortrefs.substr(0,15) + "…";
- }
-
- text = r.text(x+5, y+8 + 10, shortrefs).attr({
- font: "10px Monaco, monospace",
- fill: "#FFF",
- title: refs
- });
-
- textbox = text.getBBox();
- text.transform([
- 't', textbox.height/-4, textbox.width/2 + 5,
- 'r90'
- ]);
-
- // Create rectangle based on the size of the textbox
- rect = r.rect(x, y, textbox.width + 15, textbox.height + 5, 4).attr({
- "fill": "#000",
- "fill-opacity": .7,
- "stroke": "none"
- });
-
- triangle = r.path([
- 'M', x, y + 5,
- 'L', x + 4, y + 15,
- 'L', x - 4, y + 15,
- 'Z'
- ]).attr({
- "fill": "#000",
- "fill-opacity": .7,
- "stroke": "none"
- });
-
- // Rotate and reposition rectangle over text
- rect.transform([
- 'r', 90, x, y,
- 't', 15, -9
- ]);
-
- // Set text to front
- text.toFront();
- };
-
- BranchGraph.prototype.appendAnchor = function(top, commit, x, y) {
- var r = this.raphael
- , options = this.options
- , anchor;
- anchor = r.circle(x, y, 10).attr({
- fill: "#000",
- opacity: 0,
- cursor: "pointer"
- })
- .click(function(){
- window.open(options.commit_url.replace('%s', commit.id), '_blank');
- })
- .hover(function(){
- this.tooltip = r.commitTooltip(x, y + 5, commit);
- top.push(this.tooltip.insertBefore(this));
- }, function(){
- this.tooltip && this.tooltip.remove() && delete this.tooltip;
- });
- top.push(anchor);
- };
-
- this.BranchGraph = BranchGraph;
-
-}(this);
-Raphael.fn.commitTooltip = function(x, y, commit){
- var nameText, idText, messageText
- , boxWidth = 300
- , boxHeight = 200;
-
- nameText = this.text(x, y + 10, commit.author.name);
- idText = this.text(x, y + 35, commit.id);
- messageText = this.text(x, y + 50, commit.message);
-
- textSet = this.set(nameText, idText, messageText).attr({
- "text-anchor": "start",
- "font": "12px Monaco, monospace"
- });
-
- nameText.attr({
- "font": "14px Arial",
- "font-weight": "bold"
- });
-
- idText.attr({
- "fill": "#AAA"
- });
-
- textWrap(messageText, boxWidth - 50);
-
- var rect = this.rect(x - 10, y - 10, boxWidth, 100, 4).attr({
- "fill": "#FFF",
- "stroke": "#000",
- "stroke-linecap": "round",
- "stroke-width": 2
- });
- var tooltip = this.set(rect, textSet);
-
- rect.attr({
- "height" : tooltip.getBBox().height + 10,
- "width" : tooltip.getBBox().width + 10
- });
-
- tooltip.transform([
- 't', 20, 20
- ]);
-
- return tooltip;
-};
-
-function textWrap(t, width) {
- var content = t.attr("text");
- var abc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
- t.attr({
- "text" : abc
- });
- var letterWidth = t.getBBox().width / abc.length;
-
- t.attr({
- "text" : content
- });
-
- var words = content.split(" ");
- var x = 0, s = [];
- for ( var i = 0; i < words.length; i++) {
-
- var l = words[i].length;
- if (x + (l * letterWidth) > width) {
- s.push("\n");
- x = 0;
- }
- x += l * letterWidth;
- s.push(words[i] + " ");
- }
- t.attr({
- "text" : s.join("")
- });
- var b = t.getBBox()
- , h = Math.abs(b.y2) - Math.abs(b.y) + 1;
- t.attr({
- "y": b.y + h
- });
-}