85 lines
2.5 KiB
JavaScript
85 lines
2.5 KiB
JavaScript
/*! Icinga Web 2 | (c) 2014 Icinga Development Team | GPLv2+ */
|
|
|
|
(function(Icinga) {
|
|
|
|
var Monitoring = function(module) {
|
|
/**
|
|
* The Icinga.Module instance
|
|
*/
|
|
this.module = module;
|
|
|
|
/**
|
|
* The observer used to handle the timeline's infinite loading
|
|
*/
|
|
this.scrollCheckTimer = null;
|
|
|
|
/**
|
|
* Whether to skip the timeline's scroll-check
|
|
*/
|
|
this.skipScrollCheck = false;
|
|
|
|
this.initialize();
|
|
};
|
|
|
|
Monitoring.prototype = {
|
|
|
|
initialize: function()
|
|
{
|
|
this.module.on('rendered', this.enableScrollCheck);
|
|
this.module.icinga.logger.debug('Monitoring module loaded');
|
|
},
|
|
|
|
/**
|
|
* Enable the timeline's scroll-check
|
|
*/
|
|
enableScrollCheck: function()
|
|
{
|
|
/**
|
|
* Re-enable the scroll-check in case the timeline has just been extended
|
|
*/
|
|
if (this.skipScrollCheck) {
|
|
this.skipScrollCheck = false;
|
|
}
|
|
|
|
/**
|
|
* Prepare the timer to handle the timeline's infinite loading
|
|
*/
|
|
var $timeline = $('div.timeline');
|
|
if ($timeline.length && !$timeline.closest('.dashboard').length) {
|
|
if (this.scrollCheckTimer === null) {
|
|
this.scrollCheckTimer = this.module.icinga.timer.register(
|
|
this.checkTimelinePosition,
|
|
this,
|
|
800
|
|
);
|
|
this.module.icinga.logger.debug('Enabled timeline scroll-check');
|
|
}
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Check whether the user scrolled to the end of the timeline
|
|
*/
|
|
checkTimelinePosition: function()
|
|
{
|
|
if (!$('div.timeline').length) {
|
|
this.module.icinga.timer.unregister(this.scrollCheckTimer);
|
|
this.scrollCheckTimer = null;
|
|
this.module.icinga.logger.debug('Disabled timeline scroll-check');
|
|
} else if (!this.skipScrollCheck && this.module.icinga.utils.isVisible('#end')) {
|
|
this.skipScrollCheck = true;
|
|
this.module.icinga.loader.loadUrl(
|
|
$('#end').remove().attr('href'),
|
|
$('div.timeline'),
|
|
undefined,
|
|
undefined,
|
|
'append'
|
|
).addToHistory = false;
|
|
}
|
|
}
|
|
};
|
|
|
|
Icinga.availableModules.monitoring = Monitoring;
|
|
|
|
}(Icinga));
|