PluginProbe ʕ •ᴥ•ʔ
TinyPNG – JPEG, PNG & WebP image compression / 2.2.4
TinyPNG – JPEG, PNG & WebP image compression v2.2.4
3.7.0 3.6.14 trunk 1.0.0 1.1.0 1.2.0 1.2.1 1.3.0 1.3.1 1.3.2 1.4.0 1.5.0 1.6.0 1.7.0 1.7.1 1.7.2 2.0.0 2.0.1 2.0.2 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 3.0.0 3.0.1 3.1.0 3.2.0 3.2.1 3.3 3.4 3.4.1 3.4.2 3.4.4 3.4.5 3.4.6 3.5.0 3.5.1 3.5.2 3.6.0 3.6.1 3.6.10 3.6.11 3.6.12 3.6.13 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.6.9
tiny-compress-images / src / js / dashboard-widget.js
tiny-compress-images / src / js Last commit date
admin.js 9 years ago bulk-optimization.js 9 years ago dashboard-widget.js 9 years ago
dashboard-widget.js
122 lines
1 (function() {
2 function generateDashboardWidget(element) {
3 var element = jQuery(element)
4 var container = element.find('.inside')
5 jQuery('.chart').addClass('hidden')
6 // Adding a class to the widget element so that classes are only used in the stylesheet
7 jQuery('#tinypng_dashboard_widget').addClass('tiny_dashboard_widget')
8 attachHandlers(container);
9 retrieveStats(container);
10 }
11
12 function retrieveStats(container) {
13 jQuery.ajax({
14 url: ajaxurl,
15 type: 'POST',
16 data: {
17 _nonce: tinyCompress.nonce,
18 action: 'tiny_get_optimization_statistics',
19 id: '#tinypng_dashboard_widget'
20 },
21 success: function(data) {
22 if (data == 0) {
23 container.append("<p> An error occured. </p>")
24 } else {
25 renderWidget(data, container);
26 }
27 },
28 error: function() {
29 container.append("<p> An error occured. </p>")
30 }
31 })
32 }
33
34 function attachHandlers(container) {
35 setContainerClass(container);
36 jQuery(window).resize(function(){setContainerClass(container)});
37 jQuery('#tinypng_dashboard_widget .hndle').click(function() {
38 jQuery(this).siblings('.inside').removeClass('mobile')
39 })
40 }
41
42 function setContainerClass(container) {
43 if (jQuery(container).width() < 400) {
44 jQuery(container).addClass('mobile')
45 } else if (jQuery(container).width() < 490 && jQuery(container).width() >= 400) {
46 jQuery(container).addClass('tablet')
47 jQuery(container).removeClass('mobile')
48 } else if (jQuery(container).width() >= 490) {
49 jQuery(container).removeClass('tablet').removeClass('mobile')
50 }
51 }
52
53 function renderWidget(data, container) {
54 var stats = jQuery.parseJSON(data);
55 var savings = stats['display-percentage'];
56 var libraryOptimized = optimizedPercentage(stats);
57 renderContent(libraryOptimized, stats, savings);
58 renderChart(savings);
59 jQuery('#optimization-chart').show();
60 jQuery('#widget-spinner').attr('class', 'hidden');
61 }
62
63 function renderPercentage(percentage) {
64 jQuery('#savings-percentage').find('span').html(percentage)
65 }
66
67 function renderContent(percentage, stats, savingsPercentage) {
68 renderPercentage(savingsPercentage);
69 if ( 0 == stats['uploaded-images'] + stats['available-unoptimised-sizes'] ) {
70 jQuery('#tinypng_dashboard_widget').addClass('no-images-uploaded')
71 } else if ( percentage == 0 ) {
72 jQuery('#tinypng_dashboard_widget').addClass('not-optimized')
73 } else if ( percentage == 100 ) {
74 jQuery('#tinypng_dashboard_widget').addClass('full-optimized')
75 } else {
76 jQuery("#uploaded-images").html( stats['uploaded-images'] )
77 jQuery("#unoptimised-sizes").html( stats['available-unoptimised-sizes'] )
78 jQuery('#tinypng_dashboard_widget').addClass('half-optimized')
79 }
80 jQuery('#ie8-compressed').find('span').html(savingsPercentage)
81 }
82
83 function chartOptions(percentage) {
84 chart = {};
85 chart['size'] = 160;
86 chart['radius'] = chart['size'] / 2 * 0.9;
87 chart['main-radius'] = chart['radius'] * 0.88;
88 chart['circle-size'] = 2 * Math.PI * chart['main-radius'];
89 chart['dash-array-size'] = percentage / 100 * chart['circle-size'];
90 return chart
91 }
92
93 function optimizedPercentage(stats) {
94 if ( 0 != stats['unoptimized-library-size'] ) {
95 return Math.round((stats['optimized-image-sizes'] / (stats['optimized-image-sizes'] + stats['available-unoptimised-sizes']) * 100), 0);
96 } else {
97 return 0
98 }
99 }
100
101 function renderChart(savingsPercentage) {
102 chart = chartOptions(savingsPercentage);
103 jQuery('#optimization-chart svg circle.main').css('stroke-dasharray', chart['dash-array-size'] + ' ' + chart['circle-size'])
104 style =
105 " @keyframes shwoosh {" +
106 " from { stroke-dasharray: 0 " + chart['circle-size'] + "}" +
107 " to { stroke-dasharray:" + chart['dash-array-size'] + " " + chart['circle-size'] + "}}"
108
109 // JQuery bug where you cannot append to style tag https://bugs.jquery.com/ticket/9832
110 try {
111 jQuery('#tinypng_dashboard_widget .inside style').append(style);
112 } catch(err) {
113
114 }
115 }
116
117 // Check if widget is loaded
118 if (jQuery('#tinypng_dashboard_widget').length) {
119 generateDashboardWidget('#tinypng_dashboard_widget')
120 }
121 }).call()
122