Mercurial > kallithea
view kallithea/templates/files/diff_2way.html @ 8251:fb9550946c26
js: use strict ... and fix the problems it points out
"use strict" gives stricter checks, both statically and at runtime. The
strictness tightens up the code and prevents some kinds of problems.
The <script> tag addition might not be pretty, but has consistently been added
with:
sed -i 's,<script>$,&'"'"'use strict'"'"';,g' `hg loc '*.html'`
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Mon, 17 Feb 2020 17:49:45 +0100 |
parents | 1f3e993156e4 |
children | 0617a88e0daa |
line wrap: on
line source
## -*- coding: utf-8 -*- <%inherit file="/base/base.html"/> <%block name="js_extra"> <script src="${h.url('/codemirror/lib/codemirror.js')}"></script> <script src="${h.url('/js/mergely.js')}"></script> </%block> <%block name="css_extra"> <link rel="stylesheet" type="text/css" href="${h.url('/codemirror/lib/codemirror.css')}"/> <link rel="stylesheet" type="text/css" href="${h.url('/css/mergely.css')}"/> </%block> <%block name="title"> ${_('%s File side-by-side diff') % c.repo_name} </%block> <%def name="breadcrumbs_links()"> ${_('File diff')} ${h.show_id(c.changeset_1)} → ${h.show_id(c.changeset_2)} </%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="no-padding panel-body overflow-x-visible"> <div class="panel panel-default"> <div class="panel-heading clearfix"> <div class="pull-left"> ${h.link_to(c.node1.path,h.url('files_home',repo_name=c.repo_name, revision=c.cs2.raw_id,f_path=c.node1.path))} </div> <div class="pull-left diff-actions"> <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=c.node1.path,diff2=c.cs2.raw_id,diff1=c.cs1.raw_id,diff='diff',fulldiff=1)}" data-toggle="tooltip" title="${_('Show full diff for this file')}"> <i class="icon-file-code"></i></a> <a href="${h.url('files_diff_2way_home',repo_name=c.repo_name,f_path=c.node1.path,diff2=c.cs2.raw_id,diff1=c.cs1.raw_id,diff='diff',fulldiff=1)}" data-toggle="tooltip" title="${_('Show full side-by-side diff for this file')}"> <i class="icon-docs"></i></a> <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=c.node1.path,diff2=c.cs2.raw_id,diff1=c.cs1.raw_id,diff='raw')}" data-toggle="tooltip" title="${_('Raw diff')}"><i class="icon-diff"></i></a> <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=c.node1.path,diff2=c.cs2.raw_id,diff1=c.cs1.raw_id,diff='download')}" data-toggle="tooltip" title="${_('Download diff')}"><i class="icon-floppy"></i></a> ${h.checkbox('ignorews', label=_('Ignore whitespace'))} ${h.checkbox('edit_mode', label=_('Edit'))} </div> </div> <div id="compare" class="overflow-x-visible"></div> </div> </div> <script>'use strict'; var orig1_url = ${h.jshtml(h.url('files_raw_home',repo_name=c.repo_name,f_path=c.node1.path,revision=c.cs1.raw_id))}; var orig2_url = ${h.jshtml(h.url('files_raw_home',repo_name=c.repo_name,f_path=c.node2.path,revision=c.cs2.raw_id))}; $(document).ready(function () { $('#compare').mergely({ width: 'auto', /* let the 2 compare panes use all the window space currently available below footer (i.e. on an empty page with just header and footer): */ height: $(window).height() - $('.footer').offset().top - $('.footer').height(), fgcolor: {a:'#ddffdd',c:'#cccccc',d:'#ffdddd'}, bgcolor: '#fff', viewport: true, cmsettings: {mode: 'text/plain', readOnly: true, lineWrapping: false, lineNumbers: true}, lhs: function(setValue) { if (${h.js(c.node1.is_binary)}) { setValue('Binary file'); } else{ $.ajax(orig1_url, {dataType: 'text', success: setValue}); } }, rhs: function(setValue) { if (${h.js(c.node2.is_binary)}) { setValue('Binary file'); } else{ $.ajax(orig2_url, {dataType: 'text', success: setValue}); } } }); // recompute width - avoids overflow and horizontal scrollbar $('#compare').mergely('resize'); $('#ignorews').change(function(e){ var val = e.currentTarget.checked; $('#compare').mergely('options', {ignorews: val}); $('#compare').mergely('update'); }); $('#edit_mode').change(function(e){ var val = !e.currentTarget.checked; $('#compare').mergely('cm', 'lhs').setOption('readOnly', val); $('#compare').mergely('cm', 'rhs').setOption('readOnly', val); $('#compare').mergely('update'); }); }); </script> </div> </%def>