Widget fixes 4 (#9583)

* Globe: fix issue with more than one widget

* Widgets/JS: prevent race conditions by storing all callbacks waiting for the same script.  After the script is loaded run all callbacks.

* Fix broken Mapquest maps
This commit is contained in:
Tony Murray
2018-12-21 09:00:53 -06:00
committed by GitHub
parent 024b0a58f4
commit 2a765bfed7
4 changed files with 23 additions and 9 deletions

View File

@@ -299,11 +299,25 @@ $(document).ready(function () {
}, 300000);
});
var jsfilesadded = [];
var jsFilesAdded = [];
var jsLoadingFiles = {};
function loadjs(filename, func){
if (jsfilesadded.indexOf(filename) < 0) {
$.getScript(filename, func);
jsfilesadded.push(filename);
if (jsFilesAdded.indexOf(filename) < 0) {
if (filename in jsLoadingFiles) {
// store all waiting callbacks
jsLoadingFiles[filename].push(func);
} else {
// first request, load the script store the callback for this request
jsLoadingFiles[filename] = [func];
$.getScript(filename, function () {
// finish loading the script, call all waiting callbacks
jsFilesAdded.push(filename);
for (var i = 0; i < jsLoadingFiles[filename].length; i++) {
jsLoadingFiles[filename][i]();
}
delete jsLoadingFiles[filename];
});
}
} else {
func();
}
@@ -351,7 +365,7 @@ function init_map(id, engine, api_key, config) {
roads.addTo(leaflet);
});
} else if (engine === 'mapquest') {
loadScript('https://www.mapquestapi.com/sdk/leaflet/v2.2/mq-map.js?key=' + api_key, function () {
loadjs('https://www.mapquestapi.com/sdk/leaflet/v2.2/mq-map.js?key=' + api_key, function () {
var roads = MQ.mapLayer();
var satellite = MQ.hybridLayer();

View File

@@ -137,7 +137,7 @@ foreach ((array)$config['webui']['custom_css'] as $custom_css) {
}
?>
<script src="js/select2.min.js"></script>
<script src="js/librenms.js?ver=20181211"></script>
<script src="js/librenms.js?ver=20181221"></script>
<script type="text/javascript">
<!-- Begin

View File

@@ -69,7 +69,7 @@
<script src="js/lazyload.js"></script>
@endif
<script src="{{ asset('js/select2.min.js') }}"></script>
<script src="{{ asset('js/librenms.js?ver=20181211') }}"></script>
<script src="{{ asset('js/librenms.js?ver=20181221') }}"></script>
<script type="text/javascript">
<!-- Begin

View File

@@ -1,4 +1,4 @@
<div id='chart_div'></div>
<div id='chart_div-{{ $id }}'></div>
<script type='text/javascript'>
loadjs('https://www.gstatic.com/charts/loader.js', function() {
@@ -21,7 +21,7 @@
markerOpacity: 0.90,
tooltip: {isHtml: true}
};
var chart = new google.visualization.GeoChart(document.getElementById('chart_div'));
var chart = new google.visualization.GeoChart(document.getElementById('chart_div-{{ $id }}'));
chart.draw(data, options);
}
});