Files @ c9e3ea5bb59a
Branch filter:

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

Marcin Kuzminski
merge beta into codereview
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
a1ec653f5f95
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
f91d3f9b7230
1e757ac98988
1e757ac98988
1e757ac98988
f91d3f9b7230
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
77e376fdc4c6
1e757ac98988
28524453bb76
833f9dec0a06
60a00fd76d58
28524453bb76
c4ff52b0d112
28524453bb76
28524453bb76
c4ff52b0d112
833f9dec0a06
1e757ac98988
f91d3f9b7230
1e757ac98988
37b3c3244bbc
1e757ac98988
8fe1a141de02
28524453bb76
37b3c3244bbc
28524453bb76
1e757ac98988
1e757ac98988
51063deaceb9
1e757ac98988
39b49c999efb
1e757ac98988
37b3c3244bbc
162300a90342
162300a90342
287eff9614fa
496cfa1025e7
f91d3f9b7230
1e757ac98988
f219eb1f6bb3
0614862a20ec
0614862a20ec
0614862a20ec
350d95dece6f
350d95dece6f
350d95dece6f
350d95dece6f
350d95dece6f
350d95dece6f
f91d3f9b7230
0614862a20ec
76947224bf27
76947224bf27
493e03a4d268
493e03a4d268
76947224bf27
76947224bf27
0614862a20ec
0855c64c571f
1e757ac98988
8fe1a141de02
8fe1a141de02
8fe1a141de02
1e757ac98988
1e757ac98988
f91d3f9b7230
f91d3f9b7230
f91d3f9b7230
f91d3f9b7230
1e757ac98988
0855c64c571f
0855c64c571f
0855c64c571f
9784a54a0f5b
1e757ac98988
99536f257644
99536f257644
52da7cba88a6
99536f257644
99536f257644
99536f257644
99536f257644
f1467dfcf093
f1467dfcf093
99536f257644
1e757ac98988
1e757ac98988
04d3fae0e4c0
1e757ac98988
f91d3f9b7230
f91d3f9b7230
1e757ac98988
f91d3f9b7230
1e757ac98988
1e757ac98988
1e757ac98988
f91d3f9b7230
1e757ac98988
1e757ac98988
f91d3f9b7230
cabe887a9829
1e757ac98988
1e757ac98988
f91d3f9b7230
28524453bb76
f91d3f9b7230
28524453bb76
28524453bb76
f91d3f9b7230
28524453bb76
28524453bb76
28524453bb76
28524453bb76
28524453bb76
28524453bb76
28524453bb76
28524453bb76
28524453bb76
f91d3f9b7230
28524453bb76
28524453bb76
f91d3f9b7230
28524453bb76
28524453bb76
28524453bb76
28524453bb76
28524453bb76
28524453bb76
28524453bb76
28524453bb76
f91d3f9b7230
28524453bb76
f91d3f9b7230
f91d3f9b7230
37b3c3244bbc
395dfc93fe73
af1fafcd5927
37b3c3244bbc
37b3c3244bbc
37b3c3244bbc
37b3c3244bbc
37b3c3244bbc
37b3c3244bbc
37b3c3244bbc
af1fafcd5927
37b3c3244bbc
af1fafcd5927
37b3c3244bbc
37b3c3244bbc
37b3c3244bbc
395dfc93fe73
37b3c3244bbc
395dfc93fe73
f91d3f9b7230
395dfc93fe73
37b3c3244bbc
f91d3f9b7230
37b3c3244bbc
f91d3f9b7230
f91d3f9b7230
37b3c3244bbc
f91d3f9b7230
f91d3f9b7230
d5d7c40e8591
d5d7c40e8591
d5d7c40e8591
d5d7c40e8591
f219eb1f6bb3
d5d7c40e8591
f91d3f9b7230
833f9dec0a06
833f9dec0a06
833f9dec0a06
833f9dec0a06
833f9dec0a06
833f9dec0a06
833f9dec0a06
833f9dec0a06
833f9dec0a06
833f9dec0a06
833f9dec0a06
f91d3f9b7230
833f9dec0a06
f91d3f9b7230
864e4daef963
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
864e4daef963
864e4daef963
1e757ac98988
864e4daef963
864e4daef963
1e757ac98988
f91d3f9b7230
864e4daef963
864e4daef963
864e4daef963
864e4daef963
864e4daef963
864e4daef963
864e4daef963
864e4daef963
f91d3f9b7230
1e757ac98988
864e4daef963
f91d3f9b7230
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
f91d3f9b7230
1e757ac98988
f91d3f9b7230
37b3c3244bbc
## -*- 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="info_box" style="clear: both;padding: 10px 6px;vertical-align: right;text-align: right;"><a href="${h.url('pullrequest_home',repo_name=c.repo_name)}" class="ui-btn small">${_('Open new pull request')}</a></div>
					<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 ${'tablerow%s' % (cnt%2)}">
						<div class="left">
							<div>
							${h.checkbox(cs.short_id,class_="changeset_range")}
							<span class="tooltip" title="${h.age(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 class="date">${cs.date}</div>
						</div>
						<div class="mid">
                            <div class="message">${h.urlify_commit(h.wrap_paragraphs(cs.message),c.repo_name,h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}</div>
                            <div class="expand"><span class="expandtext">&darr; ${_('show more')} &darr;</span></div>
						</div>
						<div class="right">
									<div class="changes">
                                        <div id="${cs.raw_id}"  style="float:right;" class="changed_total tooltip" title="${_('Affected number of files, click to show more details')}">${len(cs.affected_files)}</div>
                                        <div class="comments-container">
                                        %if len(c.comments.get(cs.raw_id,[])) > 0:
                                            <div class="comments-cnt" title="${('comments')}">
                                              <a href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id,anchor='comment-%s' % c.comments[cs.raw_id][0].comment_id)}">
                                               <div class="comments-cnt">${len(c.comments[cs.raw_id])}</div>
                                               <img src="${h.url('/images/icons/comments.png')}">
                                              </a>
                                            </div>
                                        %endif
                                        </div>
                                        <div class="changeset-status-container">
                                            %if c.statuses.get(cs.raw_id):
                                              <div title="${_('Changeset status')}" class="changeset-status-lbl">${c.statuses.get(cs.raw_id)[1]}</div>
                                              <div class="changeset-status-ico"><img src="${h.url('/images/icons/flag_status_%s.png' % c.statuses.get(cs.raw_id)[0])}" /></div>
                                            %endif
                                        </div>
									</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(h.shorter(cs.branch),h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}
                                    </span>
									%endif
                                    %if h.is_hg(c.rhodecode_repo):
                                      %for book in cs.bookmarks:
                                      <span class="bookbook" title="${'%s %s' % (_('bookmark'),book)}">
                                         ${h.link_to(h.shorter(book),h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}
                                      </span>
                                      %endfor
                                    %endif
									%for tag in cs.tags:
										<span class="tagtag"  title="${'%s %s' % (_('tag'),tag)}">
										${h.link_to(h.shorter(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');

                        }
                    });

                    var msgs = YUQ('.message');
                    // get first element height
                    var el = YUQ('#graph_content .container')[0];
                    var row_h = el.clientHeight;
                    for(var i=0;i<msgs.length;i++){
                    	var m = msgs[i];

                    	var h = m.clientHeight;
                    	var pad = YUD.getStyle(m,'padding');
                    	if(h > row_h){
                    		var offset = row_h - (h+12);
                    		YUD.setStyle(m.nextElementSibling,'display','block');
                    		YUD.setStyle(m.nextElementSibling,'margin-top',offset+'px');
                    	};
                    }
                    YUE.on(YUQ('.expand'),'click',function(e){
                    	var elem = e.currentTarget.parentNode.parentNode;
                    	YUD.setStyle(e.currentTarget,'display','none');
                    	YUD.setStyle(elem,'height','auto');

                    	//redraw the graph, max_w and jsdata are global vars
                        set_canvas(max_w);

                        var r = new BranchRenderer();
                        r.render(jsdata,max_w);

                    })

                    // 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,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;
                    	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>