bibhamrokhanpin/wp-content/plugins/video-thumbnails/js/bulk.js

199 lines
5.9 KiB
JavaScript
Raw Normal View History

2024-04-10 12:01:06 +00:00
var video_thumbnails_bulk_scanner;
jQuery(function ($) {
function VideoThumbnailsBulkScanner( posts ) {
this.currentItem = 0;
this.posts = posts;
this.paused = false;
this.newThumbnails = 0;
this.existingThumbnails = 0;
this.delay = 1000;
this.delayTimer = false;
this.logList = $('#vt-bulk-scan-results .log');
this.progressBar = $('#vt-bulk-scan-results .progress-bar');
this.language = video_thumbnails_bulk_language;
}
VideoThumbnailsBulkScanner.prototype.log = function(text) {
$('<li>'+text+'</li>').prependTo(this.logList).hide().slideDown(200);
console.log(text);
};
VideoThumbnailsBulkScanner.prototype.disableSubmit = function(text) {
$('#video-thumbnails-bulk-scan-options input[type="submit"]').attr('disabled','disabled');
};
VideoThumbnailsBulkScanner.prototype.enableSubmit = function(text) {
$('#video-thumbnails-bulk-scan-options input[type="submit"]').removeAttr('disabled');
};
VideoThumbnailsBulkScanner.prototype.findPosts = function(text) {
var data = {
action: 'video_thumbnails_bulk_posts_query',
params: $('#video-thumbnails-bulk-scan-options').serialize()
};
var self = this;
this.disableSubmit();
$('#queue-count').text(this.language.working);
$.post(ajaxurl, data, function(response) {
self.posts = $.parseJSON( response );
if ( self.posts.length == 1 ) {
queueText = self.language.queue_singular;
} else {
queueText = self.language.queue_plural.replace('%d',self.posts.length);
}
$('#queue-count').text(queueText);
if ( self.posts.length > 0 ) {
self.enableSubmit();
}
});
};
VideoThumbnailsBulkScanner.prototype.startScan = function() {
this.disableSubmit();
this.paused = false;
if ( this.currentItem == 0 ) {
this.log( this.language.started );
this.progressBar.show();
this.resetProgressBar();
$('#video-thumbnails-bulk-scan-options').slideUp();
} else {
this.log( this.language.resumed );
}
this.scanCurrentItem();
};
VideoThumbnailsBulkScanner.prototype.pauseScan = function() {
this.clearSchedule();
this.paused = true;
this.log( this.language.paused );
};
VideoThumbnailsBulkScanner.prototype.toggleScan = function() {
if ( this.paused ) {
this.startScan();
} else {
this.pauseScan();
}
};
VideoThumbnailsBulkScanner.prototype.scanCompleted = function() {
if ( this.posts.length == 1 ) {
message = this.language.done + ' ' + this.language.final_count_singular;
} else {
message = this.language.done + ' ' + this.language.final_count_plural.replace('%d',this.posts.length);
}
this.log( message );
};
VideoThumbnailsBulkScanner.prototype.resetProgressBar = function() {
$('#vt-bulk-scan-results .percentage').html('0%');
this.progressBar
.addClass('disable-animation')
.css('width','0')
this.progressBar.height();
this.progressBar.removeClass('disable-animation');
};
VideoThumbnailsBulkScanner.prototype.updateProgressBar = function() {
console.log( percentage = ( this.currentItem + 1 ) / this.posts.length );
if ( percentage == 1 ) {
progressText = this.language.done;
this.scanCompleted();
} else {
progressText = Math.round(percentage*100)+'%';
}
$('#vt-bulk-scan-results .percentage').html(progressText);
this.progressBar.css('width',(percentage*100)+'%');
};
VideoThumbnailsBulkScanner.prototype.updateCounter = function() {
$('#vt-bulk-scan-results .stats .scanned').html( (this.currentItem+1) + '/' + this.posts.length );
$('#vt-bulk-scan-results .stats .found-new').html( this.newThumbnails );
$('#vt-bulk-scan-results .stats .found-existing').html( this.existingThumbnails );
}
VideoThumbnailsBulkScanner.prototype.updateStats = function() {
this.updateProgressBar();
this.updateCounter();
}
VideoThumbnailsBulkScanner.prototype.scheduleNextItem = function() {
if ( ( this.currentItem + 1 ) < this.posts.length ) {
var self = this;
self.currentItem++;
this.delayTimer = setTimeout(function() {
self.scanCurrentItem();
}, this.delay);
}
}
VideoThumbnailsBulkScanner.prototype.clearSchedule = function() {
clearTimeout( this.delayTimer );
}
VideoThumbnailsBulkScanner.prototype.scanCurrentItem = function() {
if ( this.paused ) return false;
if ( this.currentItem < this.posts.length ) {
this.log( '[ID: ' + this.posts[this.currentItem] + '] ' + this.language.scanning_of.replace('%1$s',this.currentItem+1).replace('%2$s',this.posts.length) );
var data = {
action: 'video_thumbnails_get_thumbnail_for_post',
post_id: this.posts[this.currentItem]
};
var self = this;
$.ajax({
url: ajaxurl,
type: "POST",
data: data,
success: function(response) {
var result = $.parseJSON( response );
if ( result.length == 0 ) {
self.log( '[ID: ' + self.posts[self.currentItem] + '] ' + self.language.no_thumbnail );
} else {
if ( result.type == 'new' ) {
resultText = self.language.new_thumbnail;
} else {
resultText = self.language.existing_thumbnail;
}
self.log( '[ID: ' + self.posts[self.currentItem] + '] ' + resultText + ' ' + result.url );
if ( result.type == 'new' ) {
self.newThumbnails++;
} else {
self.existingThumbnails++;
}
}
self.updateStats();
self.scheduleNextItem();
},
error: function(jqXHR, textStatus, errorThrown) {
self.log( '[ID: ' + self.posts[self.currentItem] + '] ' + self.language.error + ' ' + errorThrown );
self.updateStats();
self.scheduleNextItem();
}
});
} else {
this.updateStats();
this.currentItem = 0;
}
};
video_thumbnails_bulk_scanner = new VideoThumbnailsBulkScanner();
video_thumbnails_bulk_scanner.findPosts();
$('#video-thumbnails-bulk-scan-options').on('change',function(e){
video_thumbnails_bulk_scanner.findPosts();
});
$('#video-thumbnails-bulk-scan-options').on('submit',function(e){
e.preventDefault();
video_thumbnails_bulk_scanner.startScan();
});
});