Skip to content

Commit 9312c4b

Browse files
Fix multiple lazy load charts issue #883
1 parent 27fc93b commit 9312c4b

File tree

3 files changed

+33
-17
lines changed

3 files changed

+33
-17
lines changed

classes/Visualizer/Module/Frontend.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -670,18 +670,29 @@ function visualizerTriggerScriptLoader() {
670670
});
671671
}
672672

673-
function visualizerLoadScripts() {
673+
function visualizerLoadScripts( refresh = false ) {
674674
document.querySelectorAll("script[data-visualizer-script]").forEach(function(elem) {
675675
jQuery.getScript( elem.getAttribute("data-visualizer-script") )
676676
.done( function( script, textStatus ) {
677677
elem.setAttribute("src", elem.getAttribute("data-visualizer-script"));
678678
elem.removeAttribute("data-visualizer-script");
679679
setTimeout( function() {
680-
jQuery( '.visualizer-front:not(.visualizer-chart-loaded)' ).resize();
680+
visualizerRefreshChart();
681681
} );
682682
} );
683683
});
684684
}
685+
686+
function visualizerRefreshChart() {
687+
jQuery( '.visualizer-front:not(.visualizer-chart-loaded)' ).resize();
688+
if ( jQuery( 'div.viz-facade-loaded:not(.visualizer-lazy):empty' ).length > 0 ) {
689+
visualizerUserInteractionEvents.forEach( function( event ) {
690+
window.addEventListener( event, function() {
691+
jQuery( '.visualizer-front:not(.visualizer-chart-loaded)' ).resize();
692+
}, { passive: true } );
693+
} );
694+
}
695+
}
685696
</script>
686697
<?php
687698
}

js/render-facade.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,12 @@
106106
registerDefaultActions();
107107
});
108108

109-
$(window).on('load', function() {
110-
// Refresh charts if chart not generated.
109+
// Refresh charts if chart not generated.
110+
function refreshEachCharts() {
111111
setTimeout( function() {
112-
$( 'div.viz-facade-loaded:not(.visualizer-lazy):empty' ).removeClass( 'viz-facade-loaded' ).resize();
112+
displayChartsOnFrontEnd();
113113
}, 100 );
114-
} );
114+
}
115115

116116
function initChartDisplay() {
117117
if(visualizer.is_front == true){ // jshint ignore:line
@@ -139,6 +139,7 @@
139139
$('div.visualizer-front:not(.visualizer-lazy):not(.viz-facade-loaded)').each(function(index, element){
140140
var id = $(element).addClass('viz-facade-loaded').attr('id');
141141
showChart(id);
142+
refreshEachCharts();
142143
});
143144

144145
// interate through all charts that are to be lazy-loaded and observe each one.

js/render-google.js

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -508,19 +508,23 @@ var __visualizer_chart_images = [];
508508
}
509509

510510
objects = {};
511-
google.load( 'visualization', 'current', {packages: $chart_types, mapsApiKey: v.map_api_key, 'language' : v.language,
512-
callback: function () {
513-
gv = google.visualization;
514-
all_charts = v.charts;
515-
if(v.is_front == true && typeof v.id !== 'undefined'){ // jshint ignore:line
516-
if ( document.getElementById( v.id ).offsetParent !== null ) {
517-
renderChart(v.id);
511+
if ( 'object' === typeof google ) {
512+
google.load( 'visualization', 'current', {packages: $chart_types, mapsApiKey: v.map_api_key, 'language' : v.language,
513+
callback: function () {
514+
gv = google.visualization;
515+
all_charts = v.charts;
516+
if(v.is_front == true && typeof v.id !== 'undefined'){ // jshint ignore:line
517+
if ( document.getElementById( v.id ).offsetParent !== null ) {
518+
renderChart(v.id);
519+
}
520+
} else {
521+
render();
518522
}
519-
} else {
520-
render();
521523
}
522-
}
523-
});
524+
});
525+
} else {
526+
console.log( 'error', window.google );
527+
}
524528
});
525529

526530
$('body').on('visualizer:render:specificchart:start', function(event, v){

0 commit comments

Comments
 (0)