Files @ baef43bc457c
Branch filter:

Location: kallithea/rhodecode/templates/changelog/changelog.html

Marcin Kuzminski
revert default to 20, for large repositories it's better to go less and have it faster.
This is still saved in user session so everyone can set high number and have it saved while logged in.
## -*- coding: utf-8 -*-

<%inherit file="/base/base.html"/>

<%def name="title()">
${c.repo_name} ${_('Changelog')} - ${c.rhodecode_name}
</%def>

<%def name="breadcrumbs_links()">
    ${h.link_to(u'Home',h.url('/'))}
    &raquo;
    ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
    &raquo;
    ${_('Changelog')} - ${_('showing ')} ${c.size if c.size <= c.total_cs else c.total_cs} ${_('out of')} ${c.total_cs} ${_('revisions')}  
</%def>

<%def name="page_nav()">
	${self.menu('changelog')}     
</%def>

<%def name="main()">
<div class="box">
    <!-- box / title -->
    <div class="title">
        ${self.breadcrumbs()}
    </div>
    <div class="table">
		% if c.pagination:
			<div id="graph">
				<div id="graph_nodes">
					<canvas id="graph_canvas"></canvas>
				</div>
				<div id="graph_content">
					<div class="container_header">
				        ${h.form(h.url.current(),method='get')}
				        <div class="info_box" style="float:left">
				          ${h.submit('set',_('Show'),class_="ui-btn")}
				          ${h.text('size',size=1,value=c.size)}
				          ${_('revisions')}
				        </div>
				        ${h.end_form()}
					<div id="rev_range_container" style="display:none"></div>
                    <div style="float:right">${h.select('branch_filter',c.branch_name,c.branch_filters)}</div>
					</div>
					
				%for cnt,cs in enumerate(c.pagination):
					<div id="chg_${cnt+1}" class="container ${'tablerow1' if cnt%2==0 else 'tablerow2'}">
						<div class="left">
							<div>
							${h.checkbox(cs.short_id,class_="changeset_range")}
							<span class="tooltip" title="${cs.date}"><a href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id)}"><span class="changeset_id">${cs.revision}:<span class="changeset_hash">${h.short_id(cs.raw_id)}</span></span></a></span>
							</div>
							<div class="author">
								<div class="gravatar">
									<img alt="gravatar" src="${h.gravatar_url(h.email(cs.author),16)}"/>
								</div>
								<div title="${cs.author}" class="user">${h.person(cs.author)}</div>
							</div>
						</div>
						<div class="mid">
							<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 id="${cs.raw_id}_changes_info" class="changes">
                                        <span id="${cs.raw_id}" class="changed_total tooltip" title="${_('Affected number of files, click to show more details')}">${len(cs.affected_files)}</span>
									</div>					
								   %if cs.parents:
									%for p_cs in reversed(cs.parents):
										<div class="parent">${_('Parent')}
											<span class="changeset_id">${p_cs.revision}:<span class="changeset_hash">${h.link_to(h.short_id(p_cs.raw_id),
											h.url('changeset_home',repo_name=c.repo_name,revision=p_cs.raw_id),title=p_cs.message)}</span></span>
										</div>
									%endfor
								   %else:	
                                        <div class="parent">${_('No parents')}</div>   
                                   %endif  
                    									
								<span class="logtags">
									%if len(cs.parents)>1:
									<span class="merge">${_('merge')}</span>
									%endif
									%if cs.branch:
									<span class="branchtag" title="${'%s %s' % (_('branch'),cs.branch)}">
									   ${h.link_to(cs.branch,h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}</span>
									%endif
									%for tag in cs.tags:
										<span class="tagtag"  title="${'%s %s' % (_('tag'),tag)}">
										${h.link_to(tag,h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}</span>
									%endfor
								</span>																	
						</div>				
					</div>
					
				%endfor
				<div class="pagination-wh pagination-left">
					${c.pagination.pager('$link_previous ~2~ $link_next')}
				</div>			
				</div>
			</div>
			
			<script type="text/javascript" src="${h.url('/js/graph.js')}"></script>
			<script type="text/javascript">
				YAHOO.util.Event.onDOMReady(function(){
					
                    //Monitor range checkboxes and build a link to changesets
                    //ranges 
                    var checkboxes = YUD.getElementsByClassName('changeset_range');
                    var url_tmpl = "${h.url('changeset_home',repo_name=c.repo_name,revision='__REVRANGE__')}";
                    YUE.on(checkboxes,'click',function(e){      
                        var checked_checkboxes = [];
                        for (pos in checkboxes){
                            if(checkboxes[pos].checked){
                                checked_checkboxes.push(checkboxes[pos]);
                            }
                        }
                        if(checked_checkboxes.length>1){
                        	var rev_end = checked_checkboxes[0].name;
                        	var rev_start = checked_checkboxes[checked_checkboxes.length-1].name;
                        	
                            var url = url_tmpl.replace('__REVRANGE__',
                            		rev_start+'...'+rev_end);
                            
                        var link = "<a href="+url+">${_('Show selected changes __S -> __E')}</a>"
                        link = link.replace('__S',rev_start);
                        link = link.replace('__E',rev_end);
                        YUD.get('rev_range_container').innerHTML = link;
                        YUD.setStyle('rev_range_container','display','');
                        }
                        else{
                        	YUD.setStyle('rev_range_container','display','none');
                        	
                        }
                    });					
					
                    // Fetch changeset details 
                    YUE.on(YUD.getElementsByClassName('changed_total'),'click',function(e){
                    	var id = e.currentTarget.id
                    	var url = "${h.url('changelog_details',repo_name=c.repo_name,cs='__CS__')}"
                    	var url = url.replace('__CS__',id);
                    	ypjax(url,id+'_changes_info',function(){tooltip_activate()});
                    });
                    
                    // change branch filter
                    YUE.on(YUD.get('branch_filter'),'change',function(e){
                    	var selected_branch = e.currentTarget.options[e.currentTarget.selectedIndex].value;
                    	console.log(selected_branch);
                    	var url_main = "${h.url('changelog_home',repo_name=c.repo_name)}";
                    	var url = "${h.url('changelog_home',repo_name=c.repo_name,branch='__BRANCH__')}";
                    	var url = url.replace('__BRANCH__',selected_branch);
                    	if(selected_branch != ''){
                    		window.location = url;
                    	}else{
                    		window.location = url_main;
                    	}
                        
                    });
                    
					function set_canvas(heads) {
						var c = document.getElementById('graph_nodes');
						var t = document.getElementById('graph_content');
						canvas = document.getElementById('graph_canvas');
						var div_h = t.clientHeight;
						c.style.height=div_h+'px';
						canvas.setAttribute('height',div_h);
						c.style.height=max_w+'px';
						canvas.setAttribute('width',max_w);
					};
					var heads = 1;
					var max_heads = 0;
					var jsdata = ${c.jsdata|n};
					
					for( var i=0;i<jsdata.length;i++){
					    var m = Math.max.apply(Math, jsdata[i][1]);
					    if (m>max_heads){
					        max_heads = m;
					    }
					}
					var max_w = Math.max(100,max_heads*25);
					set_canvas(max_w);
					
					var r = new BranchRenderer();
					r.render(jsdata,max_w);
										
				});
			</script>
		%else:
			${_('There are no changes yet')}
		%endif  
    </div>
</div>    
</%def>