Show More
@@ -930,6 +930,9 b' def annotate(web, req, tmpl):' | |||
|
930 | 930 | "linenumber": "% 6d" % (lineno + 1), |
|
931 | 931 | "revdate": f.date()} |
|
932 | 932 | |
|
933 | diffopts = webutil.difffeatureopts(req, web.repo.ui, 'annotate') | |
|
934 | diffopts = {k: getattr(diffopts, k) for k in diffopts.defaults} | |
|
935 | ||
|
933 | 936 | return tmpl("fileannotate", |
|
934 | 937 | file=f, |
|
935 | 938 | annotate=annotate, |
@@ -938,6 +941,7 b' def annotate(web, req, tmpl):' | |||
|
938 | 941 | rename=webutil.renamelink(fctx), |
|
939 | 942 | permissions=fctx.manifest().flags(f), |
|
940 | 943 | ishead=int(ishead), |
|
944 | diffopts=diffopts, | |
|
941 | 945 | **webutil.commonentry(web.repo, fctx)) |
|
942 | 946 | |
|
943 | 947 | @webcommand('filelog') |
@@ -62,6 +62,13 b' annotate |' | |||
|
62 | 62 | </div> |
|
63 | 63 | |
|
64 | 64 | <div class="page_path description">{desc|strip|escape|websub|nonempty}</div> |
|
65 | ||
|
66 | {diffoptsform} | |
|
67 | ||
|
68 | <script type="text/javascript"{if(nonce, ' nonce="{nonce}"')}> | |
|
69 | renderDiffOptsForm(); | |
|
70 | </script> | |
|
71 | ||
|
65 | 72 | <div class="page_body"> |
|
66 | 73 | <table> |
|
67 | 74 | <tbody class="sourcelines" |
@@ -334,3 +334,19 b" searchform = '" | |||
|
334 | 334 | </div>' |
|
335 | 335 | searchhint = 'Find changesets by keywords (author, files, the commit message), revision |
|
336 | 336 | number or hash, or <a href="{url|urlescape}help/revsets">revset expression</a>.' |
|
337 | ||
|
338 | diffoptsform = ' | |
|
339 | <form id="diffopts-form" | |
|
340 | data-ignorews="{if(get(diffopts, 'ignorews'), '1', '0')}" | |
|
341 | data-ignorewsamount="{if(get(diffopts, 'ignorewsamount'), '1', '0')}" | |
|
342 | data-ignorewseol="{if(get(diffopts, 'ignorewseol'), '1', '0')}" | |
|
343 | data-ignoreblanklines="{if(get(diffopts, 'ignoreblanklines'), '1', '0')}"> | |
|
344 | <span>Ignore whitespace changes - </span> | |
|
345 | <span>Everywhere:</span> | |
|
346 | <input id="ignorews-checkbox" type="checkbox" /> | |
|
347 | <span>Within whitespace:</span> | |
|
348 | <input id="ignorewsamount-checkbox" type="checkbox" /> | |
|
349 | <span>At end of lines:</span> | |
|
350 | <input id="ignorewseol-checkbox" type="checkbox" /> | |
|
351 | </form> | |
|
352 | </div>' |
@@ -65,6 +65,12 b'' | |||
|
65 | 65 | </tr> |
|
66 | 66 | </table> |
|
67 | 67 | |
|
68 | {diffoptsform} | |
|
69 | ||
|
70 | <script type="text/javascript"{if(nonce, ' nonce="{nonce}"')}> | |
|
71 | renderDiffOptsForm(); | |
|
72 | </script> | |
|
73 | ||
|
68 | 74 | <div class="overflow"> |
|
69 | 75 | <table class="bigtable"> |
|
70 | 76 | <thead> |
@@ -251,3 +251,18 b" searchform = '" | |||
|
251 | 251 | </form>' |
|
252 | 252 | searchhint = 'Find changesets by keywords (author, files, the commit message), revision |
|
253 | 253 | number or hash, or <a href="{url|urlescape}help/revsets">revset expression</a>.' |
|
254 | ||
|
255 | diffoptsform = ' | |
|
256 | <form id="diffopts-form" | |
|
257 | data-ignorews="{if(get(diffopts, 'ignorews'), '1', '0')}" | |
|
258 | data-ignorewsamount="{if(get(diffopts, 'ignorewsamount'), '1', '0')}" | |
|
259 | data-ignorewseol="{if(get(diffopts, 'ignorewseol'), '1', '0')}" | |
|
260 | data-ignoreblanklines="{if(get(diffopts, 'ignoreblanklines'), '1', '0')}"> | |
|
261 | <span>Ignore whitespace changes - </span> | |
|
262 | <span>Everywhere:</span> | |
|
263 | <input id="ignorews-checkbox" type="checkbox" /> | |
|
264 | <span>Within whitespace:</span> | |
|
265 | <input id="ignorewsamount-checkbox" type="checkbox" /> | |
|
266 | <span>At end of lines:</span> | |
|
267 | <input id="ignorewseol-checkbox" type="checkbox" /> | |
|
268 | </form>' |
@@ -434,6 +434,56 b' function ajaxScrollInit(urlFormat,' | |||
|
434 | 434 | scrollHandler(); |
|
435 | 435 | } |
|
436 | 436 | |
|
437 | function renderDiffOptsForm() { | |
|
438 | // We use URLSearchParams for query string manipulation. Old browsers don't | |
|
439 | // support this API. | |
|
440 | if (!("URLSearchParams" in window)) { | |
|
441 | return; | |
|
442 | } | |
|
443 | ||
|
444 | var form = document.getElementById("diffopts-form"); | |
|
445 | ||
|
446 | var KEYS = [ | |
|
447 | "ignorews", | |
|
448 | "ignorewsamount", | |
|
449 | "ignorewseol", | |
|
450 | "ignoreblanklines", | |
|
451 | ]; | |
|
452 | ||
|
453 | var urlParams = new URLSearchParams(window.location.search); | |
|
454 | ||
|
455 | function updateAndRefresh(e) { | |
|
456 | var checkbox = e.target; | |
|
457 | var name = checkbox.id.substr(0, checkbox.id.indexOf("-")); | |
|
458 | urlParams.set(name, checkbox.checked ? "1" : "0"); | |
|
459 | window.location.search = urlParams.toString(); | |
|
460 | } | |
|
461 | ||
|
462 | var allChecked = form.getAttribute("data-ignorews") == "1"; | |
|
463 | ||
|
464 | for (var i = 0; i < KEYS.length; i++) { | |
|
465 | var key = KEYS[i]; | |
|
466 | ||
|
467 | var checkbox = document.getElementById(key + "-checkbox"); | |
|
468 | if (!checkbox) { | |
|
469 | continue; | |
|
470 | } | |
|
471 | ||
|
472 | currentValue = form.getAttribute("data-" + key); | |
|
473 | checkbox.checked = currentValue != "0"; | |
|
474 | ||
|
475 | // ignorews implies ignorewsamount and ignorewseol. | |
|
476 | if (allChecked && (key == "ignorewsamount" || key == "ignorewseol")) { | |
|
477 | checkbox.checked = true; | |
|
478 | checkbox.disabled = true; | |
|
479 | } | |
|
480 | ||
|
481 | checkbox.addEventListener("change", updateAndRefresh, false); | |
|
482 | } | |
|
483 | ||
|
484 | form.style.display = 'block'; | |
|
485 | } | |
|
486 | ||
|
437 | 487 | document.addEventListener('DOMContentLoaded', function() { |
|
438 | 488 | process_dates(); |
|
439 | 489 | }, false); |
@@ -97,6 +97,12 b' div.annotate-info {' | |||
|
97 | 97 | } |
|
98 | 98 | div.annotate-info a { color: #0000FF; text-decoration: underline; } |
|
99 | 99 | td.annotate:hover div.annotate-info { display: inline; } |
|
100 | ||
|
101 | #diffopts-form { | |
|
102 | padding-left: 8px; | |
|
103 | display: none; | |
|
104 | } | |
|
105 | ||
|
100 | 106 | .linenr { color:#999999; text-decoration:none } |
|
101 | 107 | div.rss_logo { float: right; white-space: nowrap; } |
|
102 | 108 | div.rss_logo a { |
@@ -226,6 +226,13 b' div.annotate-info {' | |||
|
226 | 226 | div.annotate-info a { color: #0000FF; } |
|
227 | 227 | td.annotate:hover div.annotate-info { display: inline; } |
|
228 | 228 | |
|
229 | #diffopts-form { | |
|
230 | font-size: smaller; | |
|
231 | color: #424242; | |
|
232 | padding-bottom: 10px; | |
|
233 | display: none; | |
|
234 | } | |
|
235 | ||
|
229 | 236 | .source, .sourcefirst { |
|
230 | 237 | font-family: monospace; |
|
231 | 238 | white-space: pre; |
@@ -340,7 +340,7 b' static file' | |||
|
340 | 340 | |
|
341 | 341 | $ get-with-headers.py --twice localhost:$HGPORT 'static/style-gitweb.css' - date etag server |
|
342 | 342 | 200 Script output follows |
|
343 |
content-length: 90 |
|
|
343 | content-length: 9066 | |
|
344 | 344 | content-type: text/css |
|
345 | 345 | |
|
346 | 346 | body { font-family: sans-serif; font-size: 12px; border:solid #d9d8d1; border-width:1px; margin:10px; background: white; color: black; } |
@@ -442,6 +442,12 b' static file' | |||
|
442 | 442 | } |
|
443 | 443 | div.annotate-info a { color: #0000FF; text-decoration: underline; } |
|
444 | 444 | td.annotate:hover div.annotate-info { display: inline; } |
|
445 | ||
|
446 | #diffopts-form { | |
|
447 | padding-left: 8px; | |
|
448 | display: none; | |
|
449 | } | |
|
450 | ||
|
445 | 451 | .linenr { color:#999999; text-decoration:none } |
|
446 | 452 | div.rss_logo { float: right; white-space: nowrap; } |
|
447 | 453 | div.rss_logo a { |
@@ -284,6 +284,25 b' hgweb fileannotate, html' | |||
|
284 | 284 | </tr> |
|
285 | 285 | </table> |
|
286 | 286 | |
|
287 | ||
|
288 | <form id="diffopts-form" | |
|
289 | data-ignorews="0" | |
|
290 | data-ignorewsamount="0" | |
|
291 | data-ignorewseol="0" | |
|
292 | data-ignoreblanklines="0"> | |
|
293 | <span>Ignore whitespace changes - </span> | |
|
294 | <span>Everywhere:</span> | |
|
295 | <input id="ignorews-checkbox" type="checkbox" /> | |
|
296 | <span>Within whitespace:</span> | |
|
297 | <input id="ignorewsamount-checkbox" type="checkbox" /> | |
|
298 | <span>At end of lines:</span> | |
|
299 | <input id="ignorewseol-checkbox" type="checkbox" /> | |
|
300 | </form> | |
|
301 | ||
|
302 | <script type="text/javascript"> | |
|
303 | renderDiffOptsForm(); | |
|
304 | </script> | |
|
305 | ||
|
287 | 306 | <div class="overflow"> |
|
288 | 307 | <table class="bigtable"> |
|
289 | 308 | <thead> |
General Comments 0
You need to be logged in to leave comments.
Login now