// tested working: Greasemonkey 3.31.4 (Firefox), Violentmonkey 2.12.7 (Chrome) // tested not working: Violentmonkey 2.12.7 (Firefox), Built-in userscripts support (Chrome) // ==UserScript== // @name e6checkboxes // @namespace jtvjan.nl // @include https://e621.net/posts // @include https://e621.net/posts?* // @version 1 // ==/UserScript== var selectedposts, hoverpreview, zoomon; try { selectedposts = JSON.parse(sessionStorage.getItem('nl.jtvjan.e6checkboxes')); if (!selectedposts) throw null; } catch (e) { selectedposts = []; } function updatetextarea() { $('#e6cb-textarea').val(selectedposts.join(' ')); sessionStorage.setItem('nl.jtvjan.e6checkboxes', JSON.stringify(selectedposts)); } function checkifselected() { selectedposts.forEach(function (post) { $('article[data-id=' + post + '] > .e6cb-box').attr('checked', true); }); } function togglehoverzoom() { if ($('#e6cb-zoom').prop('checked')) { $('.post-preview img').each(function () { this.setAttribute('data-title', this.getAttribute('title')); this.setAttribute('title', ''); }); zoomon = true; } else { $('.post-preview img').each(function () { if (this.hasAttribute('data-title')) this.setAttribute('title', this.getAttribute('data-title')); }); zoomon = false; } } $('.post-preview').append($('').on('click', function () { var myid = parseInt(this.parentNode.getAttribute('data-id'), 10), i; if (this.checked) selectedposts.push(myid); else if ((i = selectedposts.indexOf(myid)) !== -1) selectedposts.splice(i, 1); updatetextarea(); })); $('
').dialog({ title: 'e6checkboxes', position: {my: 'left top', at: 'left top', of: $('#tag-box')}, width: $('#tag-box').width(), minHeight: 60, resizable: false, close: function () { $('.e6cb-box').remove(); } }); $('#e6cb-toggle').on('click', function () { $('.e6cb-box').click(); updatetextarea(); }); $('#e6cb-clear').on('click', function () { if (selectedposts.length && confirm("Are you certain that you want to clear your selection? You will also lose posts you've checked on previous pages.")) { selectedposts = []; $('.e6cb-box').prop('checked', false); updatetextarea(); } }); $('#e6cb-import').on('click', function () { var prevsel = prompt('Your previously selected posts'), seen = {}; if (prevsel) { selectedposts = selectedposts.concat(prevsel.split(' ').map(function (n) { return parseInt(n, 10); })).filter(function (item) { // https://stackoverflow.com/a/9229821 return seen.hasOwnProperty(item) ? false : (seen[item] = true); }); checkifselected(); updatetextarea(); } }); $('#e6cb-zoom').on('click', togglehoverzoom); hoverpreview = $('').css({position: 'fixed', display: 'none', 'pointer-events': 'none', 'max-width': '100vw', 'max-height': '100vh', 'z-index': 6}).appendTo('body'); $('.post-preview > a').on('mouseenter', function () { if (zoomon) { hoverpreview.attr('src', this.parentNode.getAttribute('data-large-file-url')); hoverpreview.on('load.displayafterload', function () { hoverpreview.css('display', 'initial'); }); } }).on('mouseleave', function () { hoverpreview.off('load.displayafterload'); hoverpreview.css('display', 'none'); }).on('mousemove', function mousemove(e) { var xcorner, ycorner, wwidth, wheight; if (zoomon) { hoverpreview.off('load.fixpositionafterload'); if (hoverpreview[0].complete) { xcorner = e.clientX + hoverpreview.width(); wwidth = $(window).width(); ycorner = e.clientY + hoverpreview.height(); wheight = $(window).height(); hoverpreview.css({ left: e.clientX - (xcorner > wwidth ? xcorner - wwidth : 0), top: e.clientY - (ycorner > wheight ? ycorner - wheight : 0) }); } else hoverpreview.on('load.fixpositionafterload', mousemove.bind(this, e)); } }); togglehoverzoom(); checkifselected(); updatetextarea();