Mercurial > kallithea
view kallithea/templates/summary/summary.html @ 6847:dbc009ab5af3
summary: drop the in-page paging and replace it with simpler page reload
This makes code and future refactorings simpler, and it only losses a little
bit of nice-ness.
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Sun, 27 Aug 2017 17:00:57 +0200 |
parents | 651e37ed51c6 |
children | f92d08061a24 |
line wrap: on
line source
<%inherit file="/base/base.html"/> <%block name="title"> ${_('%s Summary') % c.repo_name} </%block> <%def name="breadcrumbs_links()"> ${_('Summary')} ## locking icon %if c.db_repo.enable_locking: %if c.db_repo.locked[0]: <span class="locking_locked icon-block" data-toggle="tooltip" title="${_('Repository locked by %s') % h.person_by_id(c.db_repo.locked[0])}"></span> %else: <span class="locking_unlocked icon-ok" data-toggle="tooltip" title="${_('Repository unlocked')}"></span> %endif %endif ##FORK %if c.db_repo.fork: - <i class="icon-fork"></i> ${_('Fork of')} "<a href="${h.url('summary_home',repo_name=c.db_repo.fork.repo_name)}">${c.db_repo.fork.repo_name}</a>" %endif ##REMOTE %if c.db_repo.clone_uri: - <i class="icon-fork"></i> ${_('Clone from')} "<a href="${h.url(str(h.hide_credentials(c.db_repo.clone_uri)))}">${h.hide_credentials(c.db_repo.clone_uri)}</a>" %endif </%def> <%block name="header_menu"> ${self.menu('repositories')} </%block> <%block name="head_extra"> <link href="${h.url('atom_feed_home',repo_name=c.db_repo.repo_name,api_key=request.authuser.api_key)}" rel="alternate" title="${_('%s ATOM feed') % c.repo_name}" type="application/atom+xml" /> <link href="${h.url('rss_feed_home',repo_name=c.db_repo.repo_name,api_key=request.authuser.api_key)}" rel="alternate" title="${_('%s RSS feed') % c.repo_name}" type="application/rss+xml" /> <script> redirect_hash_branch = function(){ var branch = window.location.hash.replace(/^#(.*)/, '$1'); if (branch){ window.location = ${h.js(h.url('changelog_home',repo_name=c.repo_name,branch='__BRANCH__'))} .replace('__BRANCH__',branch); } } redirect_hash_branch(); window.onhashchange = function() { redirect_hash_branch(); }; </script> </%block> <%def name="main()"> ${self.repo_context_bar('summary')} <div class="panel panel-primary"> <div class="panel-heading clearfix"> ${self.breadcrumbs()} </div> <div id="summary-panel-body" class="form panel-body"> <div id="summary" class="pull-left"> <div class="form-group form-inline"> <label>${_('Clone URL')}:</label> <div id="clone-url"> <div id="clone_by_name" class="input-group"> <span class="input-group-addon">${self.repotag(c.db_repo)}</span> <input class="form-control" size="80" readonly="readonly" value="${c.clone_repo_url}"/> <span class="input-group-addon btn">${_('Show by ID')}</span> </div> <div id="clone_by_id" class="input-group" style="display:none"> <span class="input-group-addon">${self.repotag(c.db_repo)}</span> <input class="form-control" size="80" readonly="readonly" value="${c.clone_repo_url_id}"/> <span class="input-group-addon btn">${_('Show by Name')}</span> </div> </div> </div> <div class="form-group"> <label>${_('Description')}:</label> <div class="desc">${h.urlify_text(c.db_repo.description, stylize=c.visual.stylify_metatags)}</div> </div> <div class="form-group"> <label>${_('Trending files')}:</label> <div> %if c.show_stats: <div id="lang_stats"></div> %else: ${_('Statistics are disabled for this repository')} %if h.HasPermissionAny('hg.admin')('enable stats on from summary'): ${h.link_to(_('Enable'),h.url('edit_repo',repo_name=c.repo_name, anchor='repo_enable_statistics'),class_="btn btn-default btn-xs")} %endif %endif </div> </div> <div class="form-group"> <label>${_('Download')}:</label> <div> %if len(c.db_repo_scm_instance.revisions) == 0: ${_('There are no downloads yet')} %elif not c.enable_downloads: ${_('Downloads are disabled for this repository')} %if h.HasPermissionAny('hg.admin')('enable downloads on from summary'): ${h.link_to(_('Enable'),h.url('edit_repo',repo_name=c.repo_name, anchor='repo_enable_downloads'),class_="btn btn-default btn-xs")} %endif %else: <span id="${'zip_link'}"> <a class="btn btn-default btn-sm" href="${h.url('files_archive_home',repo_name=c.db_repo.repo_name,fname='tip.zip')}"><i class="icon-file-zip"></i> ${_('Download as zip')}</a> </span> ${h.hidden('download_options')} <span> <label data-toggle="tooltip" title="${_('Check this to download archive with subrepos')}"> <input id="archive_subrepos" type="checkbox" name="subrepos" /> ${_('With subrepos')} </label> </span> %endif </div> </div> </div> <ul id="summary-menu-stats" class="list-group pull-right"> <li class="list-group-item"> <a title="${_('Owner')} ${c.db_repo.owner.email}"> <i class="icon-user"></i> ${c.db_repo.owner.username} ${h.gravatar_div(c.db_repo.owner.email, size=18, div_class="pull-right")} </a> </li> <li class="list-group-item"> <a title="${_('Followers')}" href="${h.url('repo_followers_home',repo_name=c.repo_name)}"> <i class="icon-heart"></i> ${_('Followers')} <span class="badge pull-right" id="current_followers_count">${c.repository_followers}</span> </a> </li> <li class="list-group-item"> <a title="${_('Forks')}" href="${h.url('repo_forks_home',repo_name=c.repo_name)}"> <i class="icon-fork"></i> ${_('Forks')} <span class="badge pull-right">${c.repository_forks}</span> </a> </li> %if request.authuser.username != 'default': <li class="list-group-item clearfix"> <a href="#" onclick="javascript:showRepoSize('repo_size_2','${c.db_repo.repo_name}')"> <i class="icon-ruler"></i> ${_('Size')} <span class="badge pull-right" id="repo_size_2"></span> </a> </li> %endif <li class="list-group-item"> %if request.authuser.username != 'default': <a href="${h.url('atom_feed_home',repo_name=c.db_repo.repo_name,api_key=request.authuser.api_key)}"><i class="icon-rss-squared"></i> ${_('Feed')}</a> %else: <a href="${h.url('atom_feed_home',repo_name=c.db_repo.repo_name)}"><i class="icon-rss-squared"></i> ${_('Feed')}</a> %endif </li> %if c.show_stats: <li class="list-group-item"> <a title="${_('Statistics')}" href="${h.url('repo_stats_home',repo_name=c.repo_name)}"> <i class="icon-graph"></i> ${_('Statistics')} </a> </li> %endif </ul> </div> </div> <div class="panel panel-primary"> <div class="panel-heading"> <div class="breadcrumbs panel-title"> %if c.cs_pagination: ${h.link_to(_('Latest Changes'),h.url('changelog_home',repo_name=c.repo_name))} %else: ${_('Quick Start')} %endif </div> </div> <div class="panel-body"> <div id="shortlog_data"> <%include file='../changelog/changelog_summary_data.html'/> </div> </div> </div> %if c.readme_data: <div id="readme" class="anchor"> </div> <div class="panel panel-primary"> <div class="panel-heading" title="${_('Readme file from revision %s:%s') % (c.db_repo.landing_rev[0], c.db_repo.landing_rev[1])}"> <div class="breadcrumbs panel-title"> <a href="${h.url('files_home',repo_name=c.repo_name,revision='tip',f_path=c.readme_file)}">${c.readme_file}</a> </div> </div> <div class="readme panel-body"> ${c.readme_data|n} </div> </div> %endif <script type="text/javascript"> $(document).ready(function(){ $('#clone-url input').click(function(e){ if($(this).hasClass('selected')){ $(this).removeClass('selected'); return ; }else{ $(this).addClass('selected'); $(this).select(); } }); var $clone_by_name = $('#clone_by_name'); var $clone_by_id = $('#clone_by_id'); $clone_by_name.find('.btn').click(function(e){ $clone_by_name.hide(); $clone_by_id.show(); }); $clone_by_id.find('.btn').click(function(e){ $clone_by_id.hide(); $clone_by_name.show(); }); var cache = {} $("#download_options").select2({ placeholder: _TM['Select changeset'], dropdownAutoWidth: true, query: function(query){ var key = 'cache'; var cached = cache[key] ; if(cached) { var data = {results: []}; //filter results $.each(cached.results, function(){ var section = this.text; var children = []; $.each(this.children, function(){ if(query.term.length == 0 || this.text.toUpperCase().indexOf(query.term.toUpperCase()) >= 0 ){ children.push({'id': this.id, 'text': this.text}); } }); data.results.push({'text': section, 'children': children}); }); query.callback(data); }else{ $.ajax({ url: pyroutes.url('repo_refs_data', {'repo_name': ${h.js(c.repo_name)}}), data: {}, dataType: 'json', type: 'GET', success: function(data) { cache[key] = data; query.callback({results: data.results}); } }); } } }); // on change of download options $('#download_options').change(function(e){ var new_cs = e.added for(k in tmpl_links){ var s = $('#'+k+'_link'); if(s){ var title_tmpl = ${h.jshtml(_('Download %s as %s') % ('__CS_NAME__','__CS_EXT__'))}; title_tmpl= title_tmpl.replace('__CS_NAME__',new_cs.text); title_tmpl = title_tmpl.replace('__CS_EXT__',k); title_tmpl = '<i class="icon-file-zip"></i> '+ title_tmpl; var url = tmpl_links[k].replace('__CS__',new_cs.id); var subrepos = $('#archive_subrepos').is(':checked'); url = url.replace('__SUB__',subrepos); url = url.replace('__NAME__',title_tmpl); s.html(url); } } }); var tmpl_links = {}; %for cnt,archive in enumerate(c.db_repo_scm_instance._get_archives()): tmpl_links[${h.jshtml(archive['type'])}] = ${h.js(h.link_to('__NAME__', h.url('files_archive_home',repo_name=c.db_repo.repo_name, fname='__CS__'+archive['extension'],subrepos='__SUB__'),class_='btn btn-default btn-sm'))}; %endfor }); </script> %if c.show_stats: <script type="text/javascript"> $(document).ready(function(){ var data = ${h.js(c.trending_languages)}; var total = 0; var no_data = true; var tbl = document.createElement('table'); tbl.setAttribute('class','table'); var cnt = 0; for (var i=0;i<data.length;i++){ total+= data[i][1].count; } for (var i=0;i<data.length;i++){ cnt += 1; no_data = false; var hide = cnt>2; var tr = document.createElement('tr'); if (hide){ tr.setAttribute('style','display:none'); tr.setAttribute('class','stats_hidden'); } var k = data[i][0]; var obj = data[i][1]; var percentage = Math.round((obj.count/total*100),2); var td1 = document.createElement('td'); td1.width = 250; var trending_language_label = document.createElement('div'); trending_language_label.innerHTML = obj.desc+" ("+k+")"; td1.appendChild(trending_language_label); var td2 = document.createElement('td'); td2.setAttribute('style','padding-right:14px !important'); var trending_language = document.createElement('div'); var nr_files = obj.count + ' ' + ${h.jshtml(_('files'))}; trending_language.title = k+" "+nr_files; if (percentage>22){ trending_language.innerHTML = "<b class='progress-bar' role='progressbar'" + "aria-valuemin='0' aria-valuemax='100' aria-valuenow='" + percentage + "' style='width: " + percentage + "%;'>" + percentage + "%, " + nr_files + "</b>"; } else{ trending_language.innerHTML = "<b class='progress-bar' role='progressbar'" + "aria-valuemin='0' aria-valuemax='100' aria-valuenow='" + percentage + "' style='width: " + percentage + "%;'>" + percentage + "%</b>"; } td2.appendChild(trending_language); tr.appendChild(td1); tr.appendChild(td2); tbl.appendChild(tr); if(cnt == 3){ var show_more = document.createElement('tr'); var td = document.createElement('td'); lnk = document.createElement('a'); lnk.href='#'; lnk.innerHTML = ${h.jshtml(_('Show more'))}; lnk.id='code_stats_show_more'; td.appendChild(lnk); show_more.appendChild(td); show_more.appendChild(document.createElement('td')); tbl.appendChild(show_more); } } if (data.length == 0) { tbl.innerHTML = '<tr><td>' + ${h.jshtml(_('No data ready yet'))} + '</td></tr>'; } $('#lang_stats').append(tbl); $('#code_stats_show_more').click(function(){ $('.stats_hidden').show(); $('#code_stats_show_more').hide(); }); }); </script> %endif </%def>