mirror of
https://github.com/ajurna/cbwebreader.git
synced 2025-12-06 06:17:17 +00:00
86 lines
2.8 KiB
JavaScript
86 lines
2.8 KiB
JavaScript
var qsRegex;
|
|
var buttonFilter;
|
|
var $grid = $('.comic-container').isotope({
|
|
itemSelector: '.grid-item',
|
|
layoutMode: 'fitRows',
|
|
filter: function() {
|
|
var $this = $(this);
|
|
var searchResult = qsRegex ? $this.text().match( qsRegex ) : true;
|
|
var buttonResult = buttonFilter ? $this.is( buttonFilter ) : true;
|
|
return searchResult && buttonResult;
|
|
}
|
|
});
|
|
$('#filters').on( 'click', 'button', function() {
|
|
if (typeof $( this ).attr('data-filter') === "undefined") {
|
|
|
|
}else {
|
|
buttonFilter = $( this ).attr('data-filter');
|
|
sessionStorage.setItem(window.location.href+"button", buttonFilter);
|
|
$grid.isotope();
|
|
}
|
|
});
|
|
|
|
var $quicksearch = $('#quicksearch').keyup( debounce( function() {
|
|
qsRegex = new RegExp($quicksearch.val(), 'gi');
|
|
sessionStorage.setItem(window.location.href+'text', $quicksearch.val());
|
|
$grid.isotope();
|
|
}) );
|
|
|
|
// debounce so filtering doesn't happen every millisecond
|
|
function debounce( fn, threshold ) {
|
|
var timeout;
|
|
threshold = threshold || 100;
|
|
return function debounced() {
|
|
clearTimeout( timeout );
|
|
var args = arguments;
|
|
var _this = this;
|
|
function delayed() {
|
|
fn.apply( _this, args );
|
|
}
|
|
timeout = setTimeout( delayed, threshold );
|
|
};
|
|
}
|
|
setInterval(function (){
|
|
$grid.isotope();
|
|
}, 1000)
|
|
|
|
let field = document.getElementById("quicksearch");
|
|
|
|
// See if we have an autosave value
|
|
// (this will only happen if the page is accidentally refreshed)
|
|
if (sessionStorage.getItem(window.location.href+'text') || sessionStorage.getItem(window.location.href+'button')) {
|
|
// Restore the contents of the text field
|
|
field.value = sessionStorage.getItem(window.location.href+'text');
|
|
qsRegex = new RegExp($quicksearch.val(), 'gi');
|
|
buttonFilter = sessionStorage.getItem(window.location.href+'button');
|
|
$grid.isotope();
|
|
}
|
|
|
|
// Listen for changes in the text field
|
|
field.addEventListener("change", function() {
|
|
// And save the results into the session storage object
|
|
|
|
});
|
|
|
|
function comic_action(selector, item_type, action) {
|
|
$.ajax({
|
|
url: '/comic/action/' + action + '/' + item_type + '/' + selector + '/',
|
|
success: function (){window.location.reload()}
|
|
})
|
|
|
|
}
|
|
|
|
$( ".progress-bar" ).each(function( index ) {
|
|
let bar = $(this)
|
|
bar.css('width', bar.attr('aria-valuenow') + '%')
|
|
});
|
|
|
|
let comic_action_elements = document.getElementsByClassName('comic_action')
|
|
|
|
comic_action_elements.forEach(el => el.addEventListener('click', event => {
|
|
let target = $(event.target).closest('button')
|
|
let selector = target.attr('selector')
|
|
let item_type = target.attr('itemtype')
|
|
let action = target.attr('comic_action')
|
|
comic_action(selector, item_type, action)
|
|
})); |