mirror of
				https://github.com/dgtlmoon/changedetection.io.git
				synced 2025-10-31 14:47:21 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			104 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| $(document).ready(function () {
 | |
|     $('.needs-localtime').each(function () {
 | |
|         for (var option of this.options) {
 | |
|             var dateObject = new Date(option.value * 1000);
 | |
|             option.label = dateObject.toLocaleString(undefined, {dateStyle: "full", timeStyle: "medium"});
 | |
|         }
 | |
|     });
 | |
| 
 | |
|     // Load it when the #screenshot tab is in use, so we dont give a slow experience when waiting for the text diff to load
 | |
|     window.addEventListener('hashchange', function (e) {
 | |
|         toggle(location.hash);
 | |
|     }, false);
 | |
| 
 | |
|     toggle(location.hash);
 | |
| 
 | |
|     function toggle(hash_name) {
 | |
|         if (hash_name === '#screenshot') {
 | |
|             $("img#screenshot-img").attr('src', screenshot_url);
 | |
|             $("#settings").hide();
 | |
|         } else if (hash_name === '#error-screenshot') {
 | |
|             $("img#error-screenshot-img").attr('src', error_screenshot_url);
 | |
|             $("#settings").hide();
 | |
|         } else if (hash_name === '#extract') {
 | |
|             $("#settings").hide();
 | |
|         } else {
 | |
|             $("#settings").show();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     const article = $('.highlightable-filter')[0];
 | |
| 
 | |
|     // We could also add the  'touchend' event for touch devices, but since
 | |
|     // most iOS/Android browsers already show a dialog when you select
 | |
|     // text (often with a Share option) we'll skip that
 | |
|     article.addEventListener('mouseup', dragTextHandler, false);
 | |
|     article.addEventListener('mousedown', clean, false);
 | |
| 
 | |
|     function clean(event) {
 | |
|       $("#highlightSnippet").remove();
 | |
|     }
 | |
| 
 | |
|     // Listen for Escape key press
 | |
|     window.addEventListener('keydown', function (e) {
 | |
|         if (e.key === 'Escape') {
 | |
|             clean();
 | |
|         }
 | |
|     }, false);
 | |
| 
 | |
|     function dragTextHandler(event) {
 | |
|         console.log('mouseupped');
 | |
| 
 | |
|         // Check if any text was selected
 | |
|         if (window.getSelection().toString().length > 0) {
 | |
| 
 | |
|             // Find out how much (if any) user has scrolled
 | |
|             var scrollTop = (window.pageYOffset !== undefined) ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop;
 | |
| 
 | |
|             // Get cursor position
 | |
|             const posX = event.clientX;
 | |
|             const posY = event.clientY + 20 + scrollTop;
 | |
| 
 | |
|             // Append HTML to the body, create the "Tweet Selection" dialog
 | |
|             document.body.insertAdjacentHTML('beforeend', '<div id="highlightSnippet" style="position: absolute; top: ' + posY + 'px; left: ' + posX + 'px;"><div class="pure-form-message-inline" style="font-size: 70%">Ignore any change on any line which contains the selected text.</div><br><a data-mode="exact" href="javascript:void(0);" class="pure-button button-secondary button-xsmall">Ignore exact text</a> </div>');
 | |
| 
 | |
|             if (/\d/.test(window.getSelection().toString())) {
 | |
|                 // Offer regex replacement
 | |
|                 document.getElementById("highlightSnippet").insertAdjacentHTML('beforeend', '<a data-mode="digit-regex"  href="javascript:void(0);" class="pure-button button-secondary button-xsmall">Ignore text including number changes</a>');
 | |
|             }
 | |
| 
 | |
|             $('#highlightSnippet a').bind('click', function (e) {
 | |
|                 if(!window.getSelection().toString().trim().length) {
 | |
|                     alert('Oops no text selected!');
 | |
|                     return;
 | |
|                 }
 | |
| 
 | |
|                 $.ajax({
 | |
|                     type: "POST",
 | |
|                     url: highlight_submit_ignore_url,
 | |
|                     data: {'mode': $(this).data('mode'), 'selection': window.getSelection().toString()},
 | |
|                     statusCode: {
 | |
|                         400: function () {
 | |
|                             // More than likely the CSRF token was lost when the server restarted
 | |
|                             alert("There was a problem processing the request, please reload the page.");
 | |
|                         }
 | |
|                     }
 | |
|                 }).done(function (data) {
 | |
|                     $("#highlightSnippet").html(data)
 | |
|                 }).fail(function (data) {
 | |
|                     console.log(data);
 | |
|                     alert('There was an error communicating with the server.');
 | |
|                 });
 | |
|             });
 | |
| 
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     $('#diff-form').on('submit', function (e) {
 | |
|         if ($('select[name=from_version]').val() === $('select[name=to_version]').val()) {
 | |
|             e.preventDefault();
 | |
|             alert('Error - You are trying to compare the same version.');
 | |
|         }
 | |
|     });
 | |
| });
 | 
