Mercurial > kallithea
view kallithea/templates/compare/compare_diff.html @ 8253:f4e158ed49b1
js: cleanup to use nested named functions instead of vars with anonymous functions
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Thu, 09 Jan 2020 23:40:42 +0100 |
parents | fb9550946c26 |
children | d6efaa91e967 |
line wrap: on
line source
## -*- coding: utf-8 -*- <%inherit file="/base/base.html"/> <%block name="title"> %if c.compare_home: ${_('%s Compare') % c.repo_name} %else: ${_('%s Compare') % c.repo_name} - ${'%s@%s' % (c.a_repo.repo_name, c.a_ref_name)} > ${'%s@%s' % (c.cs_repo.repo_name, c.cs_ref_name)} %endif </%block> <%def name="breadcrumbs_links()"> ${_('Compare Revisions')} </%def> <%block name="header_menu"> ${self.menu('repositories')} </%block> <%def name="main()"> ${self.repo_context_bar('changelog')} <div class="panel panel-primary"> <div class="panel-heading clearfix"> ${self.breadcrumbs()} </div> <div class="panel-body"> <div class="panel panel-default"> <div id="body" class="panel-heading"> <div class="compare-revision-selector"> ## divs are "inline-block" and cannot have whitespace between them. <span> ${h.hidden('compare_org')} </span><span> <i class="icon-right"></i> </span><span> ${h.hidden('compare_other')} </span><span> %if not c.compare_home: <a class="btn btn-default btn-sm" href="${c.swap_url}"><i class="icon-arrows-cw"></i>${_('Swap')}</a> %endif <button type="button" id="compare_revs" class="btn btn-default btn-sm"><i class="icon-git-compare"></i>${_('Compare Revisions')}</button> </span> </div> </div> %if c.compare_home: <div id="changeset_compare_view_content" class="panel-body"> <h4 class="text-muted">${_('Compare revisions, branches, bookmarks, or tags.')}</h4> </div> %else: <div id="changeset_compare_view_content" class="panel-body"> ##CS <h5>${ungettext('Showing %s commit','Showing %s commits', len(c.cs_ranges)) % len(c.cs_ranges)}</h5> <%include file="compare_cs.html" /> ## FILES <h5> % if c.limited_diff: ${ungettext('%s file changed', '%s files changed', len(c.file_diff_data)) % len(c.file_diff_data)}: % else: ${ungettext('%s file changed with %s insertions and %s deletions','%s files changed with %s insertions and %s deletions', len(c.file_diff_data)) % (len(c.file_diff_data),c.lines_added,c.lines_deleted)}: %endif ${c.ignorews_url(request.GET)} ${c.context_url(request.GET)} </h5> <div class="cs_files"> %if not c.file_diff_data: <span class="text-muted">${_('No files')}</span> %endif %for fid, url_fid, op, a_path, path, diff, stats in c.file_diff_data: <div class="cs_${op} clearfix"> <span class="node"> <i class="icon-diff-${op}"></i> ${h.link_to(path, '#%s' % fid)} </span> <div class="changes">${h.fancy_file_stats(stats)}</div> </div> %endfor %if c.limited_diff: <h5>${_('Changeset was too big and was cut off...')} <a href="${h.url.current(fulldiff=1, **request.GET.mixed())}">${_('Show full diff anyway')}</a></h5> %endif </div> </div> </div> %endif %if not c.compare_home: ## diff block <%namespace name="diff_block" file="/changeset/diff_block.html"/> ${diff_block.diff_block_js()} ${diff_block.diff_block(c.a_repo.repo_name, c.a_ref_type, c.a_ref_name, c.a_rev, c.cs_repo.repo_name, c.cs_ref_type, c.cs_ref_name, c.cs_rev, c.file_diff_data)} % if c.limited_diff: <h4>${_('Changeset was too big and was cut off...')} <a href="${h.url.current(fulldiff=1, **request.GET.mixed())}">${_('Show full diff')}</a></h4> % endif %endif </div> </div> <script>'use strict'; $(document).ready(function(){ var cache = {}; function make_revision_dropdown(css_selector, repo_name, ref_name, cache_key) { $(css_selector).select2({ placeholder: '{0}@{1}'.format(repo_name, ref_name || ${h.jshtml(_('Select changeset'))}), formatSelection: function(obj){ return '{0}@{1}'.format(repo_name, obj.text).html_escape(); }, dropdownAutoWidth: true, maxResults: 50, query: function(query){ var key = cache_key; var cached = cache[key] ; if(cached) { var data = {results: []}; var queryLower = query.term.toLowerCase(); //filter results $.each(cached.results, function(){ var section = this.text; var children = []; $.each(this.children, function(){ if(children.length < 50 ? ((queryLower.length == 0) || (this.text.toLowerCase().indexOf(queryLower) >= 0)) : ((queryLower.length != 0) && (this.text.toLowerCase().indexOf(queryLower) == 0))) { children.push(this); } }); children = branchSort(children, undefined, query) data.results.push({'text': section, 'children': children}); }); //push the typed in changeset data.results.push({'text':_TM['Specify changeset'], 'children': [{'id': query.term, 'text': query.term, 'type': 'rev'}]}); query.callback(data); }else{ $.ajax({ url: pyroutes.url('repo_refs_data', {'repo_name': repo_name}), data: {}, dataType: 'json', type: 'GET', success: function(data) { cache[key] = data; query.callback(data); } }); } } }); } make_revision_dropdown("#compare_org", ${h.js(c.a_repo.repo_name)}, ${h.js(c.a_ref_name)}, 'cache'); make_revision_dropdown("#compare_other", ${h.js(c.cs_repo.repo_name)}, ${h.js(c.cs_ref_name)}, 'cache2'); function values_changed() { var values = $('#compare_org').select2('data') && $('#compare_other').select2('data'); if (values) { $('#compare_revs').removeClass("disabled"); // TODO: the swap button ... if any } else { $('#compare_revs').addClass("disabled"); // TODO: the swap button ... if any } } values_changed(); $('#compare_org').change(values_changed); $('#compare_other').change(values_changed); $('#compare_revs').on('click', function(e){ var org = $('#compare_org').select2('data'); var other = $('#compare_other').select2('data'); if (!org || !other) { return; } var compare_url = ${h.js(h.url('compare_url',repo_name=c.repo_name,org_ref_type='__other_ref_type__',org_ref_name='__org__',other_ref_type='__org_ref_type__',other_ref_name='__other__', other_repo=c.cs_repo.repo_name))}; var u = compare_url.replace('__other_ref_type__',org.type) .replace('__org__',org.text) .replace('__org_ref_type__',other.type) .replace('__other__',other.text); window.location = u; }); }); </script> </%def>