grafana/public/app/features/dashboard/playlistSrv.js
2015-03-29 12:57:28 +02:00

58 lines
1.2 KiB
JavaScript

define([
'angular',
'lodash',
'kbn',
'store'
],
function (angular, _, kbn) {
'use strict';
var module = angular.module('grafana.services');
module.service('playlistSrv', function($location, $rootScope, $timeout) {
var self = this;
this.next = function() {
$timeout.cancel(self.cancelPromise);
angular.element(window).unbind('resize');
var dash = self.dashboards[self.index % self.dashboards.length];
$location.url('dashboard/db/' + dash.slug);
self.index++;
self.cancelPromise = $timeout(self.next, self.interval);
};
this.prev = function() {
self.index = Math.max(self.index - 2, 0);
self.next();
};
this.start = function(dashboards, timespan) {
self.stop();
self.index = 0;
self.interval = kbn.interval_to_ms(timespan);
self.dashboards = dashboards;
$rootScope.playlistSrv = this;
self.cancelPromise = $timeout(self.next, self.interval);
self.next();
};
this.stop = function() {
self.index = 0;
if (self.cancelPromise) {
$timeout.cancel(self.cancelPromise);
}
$rootScope.playlistSrv = null;
};
});
});