mirror of
https://github.com/grafana/grafana.git
synced 2025-02-12 08:35:43 -06:00
58 lines
1.2 KiB
JavaScript
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;
|
|
};
|
|
|
|
});
|
|
|
|
});
|