jQuery(function($){ // avoid error on IE var imagify = { log: function (content) { if (console !== 'undefined') console.log(content); } }; var overviewCanvas = document.getElementById("imagify-overview-chart"); var overviewData = [ { value: imagifyBulk.totalUnoptimizedAttachments, color:"#D9E4EB", highlight: "#D9E4EB", label: imagifyBulk.overviewChartLabels.unoptimized }, { value: imagifyBulk.totalOptimizedAttachments, color: "#46B1CE", highlight: "#46B1CE", label: imagifyBulk.overviewChartLabels.optimized }, { value: imagifyBulk.totalErrorsAttachments, color: "#2E3242", highlight: "#2E3242", label: imagifyBulk.overviewChartLabels.error } ] // to avoid JS error if ( overviewCanvas ) { var overviewDoughnut = new Chart(overviewCanvas.getContext("2d")).Doughnut(overviewData, { segmentStrokeColor : "transparent", segmentStrokeWidth : 0, animateRotate : true, animation: true, percentageInnerCutout: 85, legendTemplate : "", tooltipTemplate: "<%= value %>" }); //then you just need to generate the legend var overviewLegend = overviewDoughnut.generateLegend(); //and append it to your page somewhere document.getElementById("imagify-overview-chart-legend").innerHTML = overviewLegend; } // Simulate a click on the "Imagif'em all" button $('#imagify-simulate-bulk-action').click(function(e){ e.preventDefault(); $('#imagify-bulk-action').trigger('click'); }); $('#imagify-bulk-action').click(function(){ var $obj = $(this), $optimization_level = $('[name="optimization_level"]:checked').val(); if (typeof $optimization_level === "undefined") { $optimization_level = -1; } if ( $obj.attr('disabled') ) { return false; } $obj.attr('disabled', 'disabled'); $obj.find('.dashicons').addClass('rotate'); confirmMessage = function(){ return imagifyBulk.processing; }; $(window).on('beforeunload', confirmMessage); // Display an alert to wait swal({ title:imagifyBulk.waitTitle, text: imagifyBulk.waitText, closeOnConfirm: false, showConfirmButton: false, imageUrl: imagifyBulk.waitImageUrl }); $.get(ajaxurl+"?action=imagify_get_unoptimized_attachment_ids&optimization_level="+$optimization_level+"&imagifybulkuploadnonce="+$('#imagifybulkuploadnonce').val()) .done(function(response) { if( !response.success ) { $obj.removeAttr('disabled'); $obj.find('.dashicons').removeClass('rotate'); // remove confirm dialog before quit the page $(window).off('beforeunload', confirmMessage); imagify.log(response); if ( response.data.message == 'over-quota' ) { // Display an alert to warn that the monthly quota is consumed swal({ title:imagifyBulk.overQuotaTitle, text: imagifyBulk.overQuotaText, type: "error", customClass: "imagify-sweet-alert", html: true }); } if ( response.data.message == 'no-images' ) { // Display an alert to warn that all images has been optimized swal({ title:imagifyBulk.noAttachmentToOptimizeTitle, text: imagifyBulk.noAttachmentToOptimizeText, type: "info", customClass: "imagify-sweet-alert" }); } } else { swal.close(); var config = { 'lib': ajaxurl+"?action=imagify_bulk_upload&imagifybulkuploadnonce="+$('#imagifybulkuploadnonce').val(), 'images': response.data } var table = $('.imagify-bulk-table table tbody'), files = 0, errors = 0, original_overall_size = 0, overall_saving = 0; $('.imagify-row-progress').slideDown(); $('.imagify-no-uploaded-yet, .imagify-row-complete').hide(200); Optimizer = new ImagifyGulp(config); // before the attachment optimization Optimizer.before(function(data) { table.append('"'+data.filename+'Compressing'); }) // after the attachment optimization .each(function (data) { var $progress = $('#imagify-progress-bar'); $progress.css({'width': data.progress + '%'}); $progress.find('.percent').html(data.progress + '%'); if ( data.success ) { $('#attachment-'+data.image+' .imagify-cell-status').html('Complete'); $('#attachment-'+data.image+' .imagify-cell-original').html(data.original_size_human); $('#attachment-'+data.image+' .imagify-cell-optimized').html(data.new_size_human); $('#attachment-'+data.image+' .imagify-cell-percentage').html(''+data.percent+'%'); draw_me_a_chart( $('#attachment-'+data.image+' .imagify-cell-percentage').find('canvas') ); $('#attachment-'+data.image+' .imagify-cell-thumbnails').html(data.thumbnails); $('#attachment-'+data.image+' .imagify-cell-savings').html(Optimizer.toHumanSize(data.overall_saving, 1)); // The overview chart percent $('#imagify-overview-chart-percent').html(data.global_optimized_attachments_percent + '%'); // The total optimized images $('#imagify-total-optimized-attachments').html(data.global_already_optimized_attachments); // The comsuption bar $('.imagify-unconsumed-percent').html(data.global_unconsumed_quota + '%'); $('.imagify-unconsumed-bar').animate({'width': data.global_unconsumed_quota + '%'}); // The original bar $('#imagify-original-bar').find('.imagify-barnb') .html(data.global_original_human); // The optimized bar $('#imagify-optimized-bar').animate({'width': data.global_optimized_percent+"%"}) $('#imagify-optimized-bar').find('.imagify-barnb') .html(data.global_optimized_human); // The Percent data $('#imagify-total-optimized-attachments-pct').html( data.global_optimized_percent + '%' ); // The table footer total optimized files files = files + data.thumbnails + 1; $('.imagify-cell-nb-files').html(files + ' file(s)'); // The table footer original size original_overall_size = original_overall_size + data.original_overall_size; $('.imagify-total-original').html(Optimizer.toHumanSize(original_overall_size, 1)); // The table footer overall saving overall_saving = overall_saving + data.overall_saving; $('.imagify-total-gain').html(Optimizer.toHumanSize(overall_saving, 1)); } else { error_class = 'error'; error_dashincon = 'dismiss'; error_message = 'Error'; if ( data.error.indexOf("This image is already compressed") ) { error_class = 'warning'; error_dashicon = 'warning'; error_message = 'Notice'; } else { errors++; $('.imagify-cell-errors').html(errors + ' error(s)'); } $('#attachment-'+data.image).after(''+data.error+''); $('#attachment-'+data.image+' .imagify-cell-status').html(''+error_message+''); } overviewDoughnut.segments[0].value = data.global_unoptimized_attachments; overviewDoughnut.segments[1].value = data.global_optimized_attachments; overviewDoughnut.segments[2].value = data.global_errors_attachments; overviewDoughnut.update(); }) // after all attachments optimization .done(function (data) { $obj.removeAttr('disabled'); $obj.find('.dashicons').removeClass('rotate'); // remove confirm dialog before quit the page $(window).off('beforeunload', confirmMessage); // Hide the progress bar $('.imagify-row-progress').slideUp(); if ( data.global_percent !== 'NaN' ) { // Display the complete section $('.imagify-row-complete').removeClass('hidden') .addClass( 'done' ) .attr('aria-hidden', 'false'); $('html, body').animate({ scrollTop: $('.imagify-row-complete').offset().top }, 200); $('.imagify-ac-rt-total-gain').html(data.global_gain_human); $('.imagify-ac-rt-total-original').html(data.global_original_size_human); text2share = imagifyBulk.textToShare; text2share = text2share.replace( '%1$s', data.global_gain_human ); text2share = text2share.replace( '%2$s', data.global_original_size_human ); text2share = encodeURIComponent(text2share); $('.imagify-sn-twitter').attr( 'href', 'https://twitter.com/intent/tweet?source=webclient&original_referer=' + imagifyBulk.pluginURL + '&text=' + text2share + '&url=' + imagifyBulk.pluginURL + '&related=imagify&hastags=performance,web,wordpress' ); $('.imagify-ac-chart').attr('data-percent', data.global_percent); draw_me_complete_chart( $('.imagify-ac-chart').find('canvas') ); } }) .error(function (id) { imagify.log('Can\'t optimize image with id ' + id); }) .run(); } }); }); /* * Mini chart * You can use draw_me_a_chart() function with AJAX calls * * @param {element} canvas */ function draw_me_a_chart( canvas ) { canvas.each(function(){ var the_value = parseInt( $(this).closest('.imagify-chart').next('.imagipercent').text() ), overviewData = [ { value: the_value, color: "#00B3D3" }, { value: 100 - the_value, color:"#D8D8D8" } ], overviewDoughnut = new Chart( $(this)[0].getContext("2d")).Doughnut(overviewData, { segmentStrokeColor : "#FFF", segmentStrokeWidth : 1, animateRotate : true, tooltipEvents: [] }); }); } /* * Complete Chart * You can use draw_me_complete_chart() function with AJAX calls * * @param {element} canvas */ function draw_me_complete_chart( canvas ) { canvas.each(function(){ var the_value = parseInt( $(this).closest('.imagify-ac-chart').attr('data-percent') ), overviewData = [ { value: the_value, color: "#40B1D0" }, { value: 100 - the_value, color:"#FFFFFF" } ], overviewDoughnut = new Chart( $(this)[0].getContext("2d")).Doughnut(overviewData, { segmentStrokeColor : "transparent", segmentStrokeWidth : 0, animateRotate : true, animation: true, percentageInnerCutout: 70, tooltipEvents: [] }); }); } }); var width = 700, height = 290; if ( window.innerWidth ) { var clientLeft = (window.innerWidth-width)/2; var clientTop = (window.innerHeight-height)/2; } else { var clientLeft = (document.body.clientWidth-width)/2; var clientTop = (document.body.clientHeight-height)/2; } [].forEach.call( document.querySelectorAll('.imagify-share-networks a'), function(el) { el.addEventListener('click', function(evt) { window.open(this.href,'',"status=no, scrollbars=no, menubar=no, top="+clientTop+", left="+clientLeft+", width="+width+", height="+height); evt.preventDefault(); }, false); });