|
|
|
|
@ -39,7 +39,6 @@ function (angular, app, $, _, kbn, moment, timeSeries) { |
|
|
|
|
$scope.panelMeta = { |
|
|
|
|
modals : [], |
|
|
|
|
editorTabs: [], |
|
|
|
|
|
|
|
|
|
fullEditorTabs : [ |
|
|
|
|
{ |
|
|
|
|
title: 'General', |
|
|
|
|
@ -57,30 +56,9 @@ function (angular, app, $, _, kbn, moment, timeSeries) { |
|
|
|
|
src:'app/panels/graphite/styleEditor.html' |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
|
|
|
|
|
menuItems: [ |
|
|
|
|
{ text: 'Edit', click: 'openConfigureModal()' }, |
|
|
|
|
{ text: 'Fullscreen', click: 'toggleFullscreen()' }, |
|
|
|
|
{ text: 'Duplicate', click: 'duplicatePanel(panel)' }, |
|
|
|
|
{ text: 'Span', submenu: [ |
|
|
|
|
{ text: '1', click: 'updateColumnSpan(1)' }, |
|
|
|
|
{ text: '2', click: 'updateColumnSpan(2)' }, |
|
|
|
|
{ text: '3', click: 'updateColumnSpan(3)' }, |
|
|
|
|
{ text: '4', click: 'updateColumnSpan(4)' }, |
|
|
|
|
{ text: '5', click: 'updateColumnSpan(5)' }, |
|
|
|
|
{ text: '6', click: 'updateColumnSpan(6)' }, |
|
|
|
|
{ text: '7', click: 'updateColumnSpan(7)' }, |
|
|
|
|
{ text: '8', click: 'updateColumnSpan(8)' }, |
|
|
|
|
{ text: '9', click: 'updateColumnSpan(9)' }, |
|
|
|
|
{ text: '10', click: 'updateColumnSpan(10)' }, |
|
|
|
|
{ text: '11', click: 'updateColumnSpan(11)' }, |
|
|
|
|
{ text: '12', click: 'updateColumnSpan(12)' }, |
|
|
|
|
]}, |
|
|
|
|
{ text: 'Remove', click: 'remove_panel_from_row(row, panel)' } |
|
|
|
|
], |
|
|
|
|
|
|
|
|
|
status : "Unstable", |
|
|
|
|
description : "Graphs panel" |
|
|
|
|
fullscreenEdit: true, |
|
|
|
|
fullscreenView: true, |
|
|
|
|
description : "Graphing" |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
// Set and populate defaults
|
|
|
|
|
@ -220,10 +198,10 @@ function (angular, app, $, _, kbn, moment, timeSeries) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$scope.init = function() { |
|
|
|
|
// Hide view options by default
|
|
|
|
|
$scope.initPanel($scope); |
|
|
|
|
|
|
|
|
|
$scope.fullscreen = false; |
|
|
|
|
$scope.options = false; |
|
|
|
|
$scope.editor = {index: 1}; |
|
|
|
|
$scope.editor = { index: 1 }; |
|
|
|
|
$scope.editorTabs = _.pluck($scope.panelMeta.fullEditorTabs,'title'); |
|
|
|
|
$scope.hiddenSeries = {}; |
|
|
|
|
|
|
|
|
|
@ -239,15 +217,6 @@ function (angular, app, $, _, kbn, moment, timeSeries) { |
|
|
|
|
$scope.get_data(); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
$scope.remove_panel_from_row = function(row, panel) { |
|
|
|
|
if ($scope.fullscreen) { |
|
|
|
|
$rootScope.$emit('panel-fullscreen-exit'); |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
$scope.$parent.remove_panel_from_row(row, panel); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
$scope.removeTarget = function (target) { |
|
|
|
|
$scope.panel.targets = _.without($scope.panel.targets, target); |
|
|
|
|
$scope.get_data(); |
|
|
|
|
@ -284,13 +253,13 @@ function (angular, app, $, _, kbn, moment, timeSeries) { |
|
|
|
|
$scope.annotationsPromise = annotationsSrv.getAnnotations($scope.rangeUnparsed); |
|
|
|
|
|
|
|
|
|
return $scope.datasource.query(graphiteQuery) |
|
|
|
|
.then($scope.receiveGraphiteData) |
|
|
|
|
.then($scope.dataHandler) |
|
|
|
|
.then(null, function(err) { |
|
|
|
|
$scope.panel.error = err.message || "Graphite HTTP Request Error"; |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
$scope.receiveGraphiteData = function(results) { |
|
|
|
|
$scope.dataHandler = function(results) { |
|
|
|
|
$scope.panelMeta.loading = false; |
|
|
|
|
$scope.legend = []; |
|
|
|
|
|
|
|
|
|
@ -300,44 +269,11 @@ function (angular, app, $, _, kbn, moment, timeSeries) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
results = results.data; |
|
|
|
|
var data = []; |
|
|
|
|
|
|
|
|
|
$scope.datapointsWarning = false; |
|
|
|
|
$scope.datapointsCount = 0; |
|
|
|
|
$scope.datapointsOutside = false; |
|
|
|
|
|
|
|
|
|
_.each(results, function(targetData) { |
|
|
|
|
var datapoints = targetData.datapoints; |
|
|
|
|
var alias = targetData.target; |
|
|
|
|
var color = $scope.panel.aliasColors[alias] || $scope.colors[data.length]; |
|
|
|
|
var yaxis = $scope.panel.aliasYAxis[alias] || 1; |
|
|
|
|
|
|
|
|
|
var seriesInfo = { |
|
|
|
|
alias: alias, |
|
|
|
|
color: color, |
|
|
|
|
enable: true, |
|
|
|
|
yaxis: yaxis |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
var series = new timeSeries.ZeroFilled({ |
|
|
|
|
datapoints: datapoints, |
|
|
|
|
info: seriesInfo, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
if (datapoints && datapoints.length > 0) { |
|
|
|
|
var last = moment.utc(datapoints[datapoints.length - 1][1] * 1000); |
|
|
|
|
var from = moment.utc($scope.range.from); |
|
|
|
|
if (last - from < -1000) { |
|
|
|
|
$scope.datapointsOutside = true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$scope.datapointsCount += datapoints.length; |
|
|
|
|
|
|
|
|
|
$scope.legend.push(seriesInfo); |
|
|
|
|
data.push(series); |
|
|
|
|
}); |
|
|
|
|
var data = _.map(results.data, $scope.seriesHandler); |
|
|
|
|
|
|
|
|
|
$scope.datapointsWarning = $scope.datapointsCount || !$scope.datapointsOutside; |
|
|
|
|
|
|
|
|
|
@ -350,53 +286,39 @@ function (angular, app, $, _, kbn, moment, timeSeries) { |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
$scope.add_target = function() { |
|
|
|
|
$scope.panel.targets.push({target: ''}); |
|
|
|
|
}; |
|
|
|
|
$scope.seriesHandler = function(seriesData, index) { |
|
|
|
|
var datapoints = seriesData.datapoints; |
|
|
|
|
var alias = seriesData.target; |
|
|
|
|
var color = $scope.panel.aliasColors[alias] || $scope.colors[index]; |
|
|
|
|
var yaxis = $scope.panel.aliasYAxis[alias] || 1; |
|
|
|
|
|
|
|
|
|
var seriesInfo = { |
|
|
|
|
alias: alias, |
|
|
|
|
color: color, |
|
|
|
|
enable: true, |
|
|
|
|
yaxis: yaxis |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
$scope.enterFullscreenMode = function(options) { |
|
|
|
|
var docHeight = $(window).height(); |
|
|
|
|
var editHeight = Math.floor(docHeight * 0.3); |
|
|
|
|
var fullscreenHeight = Math.floor(docHeight * 0.7); |
|
|
|
|
var oldTimeRange = $scope.range; |
|
|
|
|
|
|
|
|
|
$scope.height = options.edit ? editHeight : fullscreenHeight; |
|
|
|
|
$scope.editMode = options.edit; |
|
|
|
|
|
|
|
|
|
if (!$scope.fullscreen) { |
|
|
|
|
var closeEditMode = $rootScope.$on('panel-fullscreen-exit', function() { |
|
|
|
|
$scope.editMode = false; |
|
|
|
|
$scope.fullscreen = false; |
|
|
|
|
delete $scope.height; |
|
|
|
|
|
|
|
|
|
closeEditMode(); |
|
|
|
|
|
|
|
|
|
$timeout(function() { |
|
|
|
|
if (oldTimeRange !== $scope.range) { |
|
|
|
|
$scope.dashboard.refresh(); |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
$scope.$emit('render'); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
var series = new timeSeries.ZeroFilled({ |
|
|
|
|
datapoints: datapoints, |
|
|
|
|
info: seriesInfo, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
$(window).scrollTop(0); |
|
|
|
|
if (datapoints && datapoints.length > 0) { |
|
|
|
|
var last = moment.utc(datapoints[datapoints.length - 1][1] * 1000); |
|
|
|
|
var from = moment.utc($scope.range.from); |
|
|
|
|
if (last - from < -1000) { |
|
|
|
|
$scope.datapointsOutside = true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$scope.fullscreen = true; |
|
|
|
|
$rootScope.$emit('panel-fullscreen-enter'); |
|
|
|
|
$scope.datapointsCount += datapoints.length; |
|
|
|
|
|
|
|
|
|
$timeout($scope.render); |
|
|
|
|
return series; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
$scope.openConfigureModal = function() { |
|
|
|
|
if ($scope.editMode) { |
|
|
|
|
$rootScope.$emit('panel-fullscreen-exit'); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$scope.enterFullscreenMode({edit: true}); |
|
|
|
|
$scope.add_target = function() { |
|
|
|
|
$scope.panel.targets.push({target: ''}); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
$scope.otherPanelInFullscreenMode = function() { |
|
|
|
|
@ -413,15 +335,6 @@ function (angular, app, $, _, kbn, moment, timeSeries) { |
|
|
|
|
$scope.render(); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
$scope.toggleFullscreen = function() { |
|
|
|
|
if ($scope.fullscreen && !$scope.editMode) { |
|
|
|
|
$rootScope.$emit('panel-fullscreen-exit'); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$scope.enterFullscreenMode({edit: false}); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
$scope.toggleSeries = function(info) { |
|
|
|
|
if ($scope.hiddenSeries[info.alias]) { |
|
|
|
|
delete $scope.hiddenSeries[info.alias]; |
|
|
|
|
@ -444,11 +357,6 @@ function (angular, app, $, _, kbn, moment, timeSeries) { |
|
|
|
|
$scope.render(); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
$scope.updateColumnSpan = function(span) { |
|
|
|
|
$scope.panel.span = span; |
|
|
|
|
$timeout($scope.render); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|