Changeset - 46b7d108ea7a
[Not reviewed]
default
0 4 0
Marcin Kuzminski - 15 years ago 2010-06-30 17:05:20
marcin@python-works.com
made graphg ticker, and fixes a paging bug caused grapgh disaligment
4 files changed with 17 insertions and 14 deletions:
0 comments (0 inline, 0 general)
pylons_app/controllers/changelog.py
Show inline comments
 
@@ -63,25 +63,25 @@ class ChangelogController(BaseController
 
                            items_per_page=c.size)
 
            
 
        self._graph(changesets, c.size, p)
 
        
 
        return render('changelog/changelog.html')
 

	
 

	
 
    def _graph(self, repo, size, p):
 
        revcount = size
 
        if not repo.revisions:return dumps([]), 0
 
        
 
        max_rev = repo.revisions[-1]
 
        offset = 1 if p == 1 else  ((p - 1) * revcount)
 
        offset = 1 if p == 1 else  ((p - 1) * revcount + 1)
 
        rev_start = repo.revisions[(-1 * offset)]
 
        
 
        revcount = min(max_rev, revcount)
 
        rev_end = max(0, rev_start - revcount)
 
        dag = graph_rev(repo.repo, rev_start, rev_end)
 
        
 
        c.dag = tree = list(colored(dag))
 
        data = []
 
        for (id, type, ctx, vtx, edges) in tree:
 
            if type != CHANGESET:
 
                continue
 
            data.append(('', vtx, edges))
pylons_app/public/css/monoblue_custom.css
Show inline comments
 
@@ -733,57 +733,57 @@ p.files {
 

	
 
.cs_files .cs_removed {
 
	background: url("/images/icons/page_white_delete.png") no-repeat scroll
 
		3px;
 
	/*background-color: #FF8888;*/
 
	height: 16px;
 
	padding-left: 20px;
 
	margin-top: 7px;
 
	text-align: left;
 
}
 

	
 
/** end of changeset **/ /** canvas **/
 
#graph_nodes {
 
	margin-top: 8px;
 
}
 

	
 
#graph {
 
	overflow: hidden;
 
}
 

	
 
#graph_nodes {
 
	width: 160px;
 
	float: left;
 
	margin-left:-50px;
 
	margin-top: 5px;
 
}
 

	
 
#graph_content {
 
	width: 800px;
 
	float: left;
 
}
 

	
 
#graph_content .container_header {
 
	border: 1px solid #CCCCCC;
 
	height: 30px;
 
	background: #EEEEEE;
 
}
 

	
 
#graph_content .container .wrapper {
 
	width: 600px;
 
}
 

	
 
#graph_content .container {
 
	border-bottom: 1px solid #CCCCCC;
 
	border-left: 1px solid #CCCCCC;
 
	border-right: 1px solid #CCCCCC;
 
	height: 120px;
 
	min-height: 80px;
 
	overflow: hidden;
 
}
 

	
 
#graph_content .container .left {
 
	float: left;
 
	width: 70%;
 
	padding-left: 5px;
 
}
 

	
 
#graph_content .container .right {
 
	float: right;
 
	width: 25%;
 
	text-align: right;
pylons_app/public/js/graph.js
Show inline comments
 
// branch_renderer.js - Rendering of branch DAGs on the client side
 
//
 
// Copyright 2010 Marcin Kuzminski <marcin AT python-works DOT com>
 
// Copyright 2008 Jesper Noehr <jesper AT noehr DOT org>
 
// Copyright 2008 Dirkjan Ochtman <dirkjan AT ochtman DOT nl>
 
// Copyright 2006 Alexander Schremmer <alex AT alexanderweb DOT de>
 
//
 
// derived from code written by Scott James Remnant <scott@ubuntu.com>
 
// Copyright 2005 Canonical Ltd.
 
//
 
// This software may be used and distributed according to the terms
 
// of the GNU General Public License, incorporated herein by reference.
 

	
 
var colors = [
 
	[ 1.0, 0.0, 0.0 ],
 
@@ -23,25 +24,26 @@ var colors = [
 

	
 
function BranchRenderer() {
 
	
 
	this.canvas = document.getElementById("graph_canvas");
 
	
 
	if (navigator.userAgent.indexOf('MSIE') >= 0) 
 
		this.canvas = window.G_vmlCanvasManager.initElement(this.canvas);
 
	this.ctx = this.canvas.getContext('2d');
 
	this.ctx.strokeStyle = 'rgb(0, 0, 0)';
 
	this.ctx.fillStyle = 'rgb(0, 0, 0)';
 
	this.cur = [0, 0];
 
	this.max_column = 1;
 
	this.line_width = 3;
 
	this.line_width = 2.5;
 
	this.dot_radius = 5.5;
 
	this.bg = [0, 4];
 
	this.cell = [2, 0];
 
	this.revlink = '';
 
	
 
	this.scale = function(height) {
 
		this.box_size = Math.floor(height/1.2);
 
		this.cell_height = this.box_size;
 
		this.bg_height = height;
 
	}
 
	
 
	this.setColor = function(color, bg, fg) {
 
		color %= colors.length;
 
@@ -51,25 +53,25 @@ function BranchRenderer() {
 
		red = Math.round(red * 255);
 
		green = Math.round(green * 255);
 
		blue = Math.round(blue * 255);
 
		var s = 'rgb(' + red + ', ' + green + ', ' + blue + ')';
 
		this.ctx.strokeStyle = s;
 
		this.ctx.fillStyle = s;
 
	}
 

	
 
	this.render = function(data) {
 
		var idx = 1;
 
		var rela = document.getElementById('graph');
 
		var pad = 160;
 
		var scale = 20;
 
		var scale = 22;
 
		
 
		for (var i in data) {
 
			this.scale(scale);
 
			var row = document.getElementById("chg_"+idx);
 
			var	next = document.getElementById("chg_"+idx+1);
 
			var extra = 0;
 
			
 
			//skip this since i don't have DATE in my app
 
			//if (next.is('.changesets-date')) {
 
			//	extra = next.outerHeight();
 
			//}
 
						
 
@@ -93,38 +95,39 @@ function BranchRenderer() {
 
					this.max_column = start;
 
				}
 
				
 
				if (end > this.max_column) {
 
					this.max_column = end;
 
				}
 
				
 
				this.setColor(color, 0.0, 0.65);
 
				
 
				
 
				y = row.offsetTop-rela.offsetTop+4;
 
				x = pad-((this.cell[0] + this.box_size * start - 1) + this.bg_height-2);
 
				this.ctx.lineWidth=this.line_width;
 
				this.ctx.beginPath();
 
				this.ctx.moveTo(x, y);
 
				
 
				//i don't know why it's +1 just fixes some drawing graph.
 
				y += row.clientHeight+1;
 
				x = pad-((1 + this.box_size * end) + this.bg_height-2);
 
				this.ctx.lineTo(x,y+extra);
 
				this.ctx.lineTo(x,y+extra,3);
 
				this.ctx.stroke();
 
			}
 
			
 
			column = node[0]
 
			color = node[1]
 
			
 
			radius = 4;
 
			radius = this.dot_radius;
 
			y = row.offsetTop-rela.offsetTop+4;
 
			x = pad-(Math.round(this.cell[0] * scale/2 * column + radius) + 15 - (column*4));
 
		
 
			this.ctx.beginPath();
 
			this.setColor(color, 0.25, 0.75);
 
			this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
 
			this.ctx.fill();
 
			
 
			idx++;
 
		}
 
				
 
	}
pylons_app/templates/changelog/changelog.html
Show inline comments
 
@@ -33,35 +33,35 @@
 
			<div>
 
				<span>${_('Show')}: </span>
 
				<span>${h.text('size',size=2,value=c.size)}</span>
 
				<span>${_('revisions')}</span>
 
				${h.submit('set',_('set'))}
 
			</div>
 
			${h.end_form()}
 
		</div>
 
	%for cnt,cs in enumerate(c.pagination):
 
		<div id="chg_${cnt+1}" class="container">
 
			<div class="left">
 
				<div class="date">${_('commit')} ${cs.revision}: ${cs.raw_id}@${cs.date}</div>
 
				<div class="author">${cs.author}</div>
 
				<div class="message">
 
					${h.link_to(h.wrap_paragraphs(cs.message),
 
					h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}
 
				</div>
 
					<span class="logtags">
 
						<span class="branchtag">${cs.branch}</span>
 
						%for tag in cs.tags:
 
							<span class="tagtag">${tag}</span>
 
						%endfor
 
					</span>
 
				<div class="author">${cs.author}</div>
 
				<div class="message">
 
					${h.link_to(h.wrap_paragraphs(cs.message),
 
					h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}
 
				</div>
 
			</div>	
 
			<div class="right">
 
						<div class="changes">
 
							<span class="removed" title="${_('removed')}">${len(cs.removed)}</span>
 
							<span class="changed" title="${_('changed')}">${len(cs.changed)}</span>
 
							<span class="added" title="${_('added')}">${len(cs.added)}</span>
 
						</div>					
 
							%if len(cs.parents)>1:
 
							<div class="merge">
 
								${_('merge')}<img alt="merge" src="/images/icons/arrow_join.png"/>
 
							</div>
 
							%endif						
0 comments (0 inline, 0 general)