| 
									
										
										
										
											2014-08-19 16:46:08 +08:00
										 |  |  | define([ | 
					
						
							|  |  |  |   'angular', | 
					
						
							| 
									
										
										
										
											2015-05-14 03:34:50 +08:00
										 |  |  |   'jquery', | 
					
						
							| 
									
										
										
										
											2014-08-19 16:46:08 +08:00
										 |  |  |   'lodash', | 
					
						
							| 
									
										
										
										
											2016-01-28 01:51:01 +08:00
										 |  |  | ], function(angular, jquery, _) { | 
					
						
							| 
									
										
										
										
											2014-08-19 16:46:08 +08:00
										 |  |  |   'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-28 01:51:01 +08:00
										 |  |  |   var module = angular.module('grafana.controllers'); | 
					
						
							| 
									
										
										
										
											2014-08-19 16:46:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-14 18:34:30 +08:00
										 |  |  |   module.controller('SeriesOverridesCtrl', function($scope, $element, popoverSrv) { | 
					
						
							| 
									
										
										
										
											2014-08-19 16:46:08 +08:00
										 |  |  |     $scope.overrideMenu = []; | 
					
						
							|  |  |  |     $scope.currentOverrides = []; | 
					
						
							|  |  |  |     $scope.override = $scope.override || {}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $scope.addOverrideOption = function(name, propertyName, values) { | 
					
						
							|  |  |  |       var option = {}; | 
					
						
							|  |  |  |       option.text = name; | 
					
						
							|  |  |  |       option.propertyName = propertyName; | 
					
						
							|  |  |  |       option.index = $scope.overrideMenu.length; | 
					
						
							|  |  |  |       option.values = values; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-12 19:55:19 +08:00
										 |  |  |       option.submenu = _.map(values, function(value) { | 
					
						
							|  |  |  |         return { text: String(value), value: value }; | 
					
						
							| 
									
										
										
										
											2014-08-19 16:46:08 +08:00
										 |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       $scope.overrideMenu.push(option); | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-12 19:55:19 +08:00
										 |  |  |     $scope.setOverride = function(item, subItem) { | 
					
						
							| 
									
										
										
										
											2015-05-14 18:34:30 +08:00
										 |  |  |       // handle color overrides
 | 
					
						
							|  |  |  |       if (item.propertyName === 'color') { | 
					
						
							|  |  |  |         $scope.openColorSelector(); | 
					
						
							|  |  |  |         return; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-12 19:55:19 +08:00
										 |  |  |       $scope.override[item.propertyName] = subItem.value; | 
					
						
							| 
									
										
										
										
											2014-10-15 23:07:51 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |       // automatically disable lines for this series and the fill bellow to series
 | 
					
						
							|  |  |  |       // can be removed by the user if they still want lines
 | 
					
						
							| 
									
										
										
										
											2015-01-12 19:55:19 +08:00
										 |  |  |       if (item.propertyName === 'fillBelowTo') { | 
					
						
							| 
									
										
										
										
											2014-10-15 23:07:51 +08:00
										 |  |  |         $scope.override['lines'] = false; | 
					
						
							| 
									
										
										
										
											2015-01-12 19:55:19 +08:00
										 |  |  |         $scope.addSeriesOverride({ alias: subItem.value, lines: false }); | 
					
						
							| 
									
										
										
										
											2014-10-15 23:07:51 +08:00
										 |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-14 03:34:50 +08:00
										 |  |  |       $scope.updateCurrentOverrides(); | 
					
						
							| 
									
										
										
										
											2016-04-10 02:37:30 +08:00
										 |  |  |       $scope.ctrl.render(); | 
					
						
							| 
									
										
										
										
											2015-05-14 03:34:50 +08:00
										 |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $scope.colorSelected = function(color) { | 
					
						
							|  |  |  |       $scope.override['color'] = color; | 
					
						
							| 
									
										
										
										
											2014-08-19 16:46:08 +08:00
										 |  |  |       $scope.updateCurrentOverrides(); | 
					
						
							| 
									
										
										
										
											2016-01-27 06:54:57 +08:00
										 |  |  |       $scope.ctrl.render(); | 
					
						
							| 
									
										
										
										
											2014-08-19 16:46:08 +08:00
										 |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-14 03:34:50 +08:00
										 |  |  |     $scope.openColorSelector = function() { | 
					
						
							|  |  |  |       popoverSrv.show({ | 
					
						
							| 
									
										
										
										
											2016-02-23 01:46:58 +08:00
										 |  |  |         element: $element.find(".dropdown")[0], | 
					
						
							|  |  |  |         position: 'top center', | 
					
						
							|  |  |  |         openOn: 'click', | 
					
						
							|  |  |  |         template: '<gf-color-picker></gf-color-picker>', | 
					
						
							|  |  |  |         model: { | 
					
						
							| 
									
										
										
										
											2016-04-12 23:07:34 +08:00
										 |  |  |           autoClose: true, | 
					
						
							| 
									
										
										
										
											2016-02-23 01:46:58 +08:00
										 |  |  |           colorSelected: $scope.colorSelected, | 
					
						
							| 
									
										
										
										
											2016-04-09 06:12:08 +08:00
										 |  |  |         }, | 
					
						
							|  |  |  |         onClose: function() { | 
					
						
							| 
									
										
										
										
											2016-04-10 02:37:30 +08:00
										 |  |  |           $scope.ctrl.render(); | 
					
						
							| 
									
										
										
										
											2016-02-23 01:46:58 +08:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2015-05-14 03:34:50 +08:00
										 |  |  |       }); | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-19 16:46:08 +08:00
										 |  |  |     $scope.removeOverride = function(option) { | 
					
						
							|  |  |  |       delete $scope.override[option.propertyName]; | 
					
						
							|  |  |  |       $scope.updateCurrentOverrides(); | 
					
						
							| 
									
										
										
										
											2016-02-23 01:46:58 +08:00
										 |  |  |       $scope.ctrl.refresh(); | 
					
						
							| 
									
										
										
										
											2014-08-19 16:46:08 +08:00
										 |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-20 17:48:00 +08:00
										 |  |  |     $scope.getSeriesNames = function() { | 
					
						
							| 
									
										
										
										
											2016-01-27 06:54:57 +08:00
										 |  |  |       return _.map($scope.ctrl.seriesList, function(series) { | 
					
						
							| 
									
										
										
										
											2014-11-12 04:09:50 +08:00
										 |  |  |         return series.alias; | 
					
						
							| 
									
										
										
										
											2014-08-20 17:48:00 +08:00
										 |  |  |       }); | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-19 16:46:08 +08:00
										 |  |  |     $scope.updateCurrentOverrides = function() { | 
					
						
							|  |  |  |       $scope.currentOverrides = []; | 
					
						
							|  |  |  |       _.each($scope.overrideMenu, function(option) { | 
					
						
							| 
									
										
										
										
											2014-08-20 14:35:17 +08:00
										 |  |  |         var value = $scope.override[option.propertyName]; | 
					
						
							|  |  |  |         if (_.isUndefined(value)) { return; } | 
					
						
							|  |  |  |         $scope.currentOverrides.push({ | 
					
						
							|  |  |  |           name: option.text, | 
					
						
							|  |  |  |           propertyName: option.propertyName, | 
					
						
							|  |  |  |           value: String(value) | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2014-08-19 16:46:08 +08:00
										 |  |  |       }); | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $scope.addOverrideOption('Bars', 'bars', [true, false]); | 
					
						
							|  |  |  |     $scope.addOverrideOption('Lines', 'lines', [true, false]); | 
					
						
							| 
									
										
										
										
											2014-08-19 22:57:33 +08:00
										 |  |  |     $scope.addOverrideOption('Line fill', 'fill', [0,1,2,3,4,5,6,7,8,9,10]); | 
					
						
							|  |  |  |     $scope.addOverrideOption('Line width', 'linewidth', [0,1,2,3,4,5,6,7,8,9,10]); | 
					
						
							| 
									
										
										
										
											2015-11-19 13:46:22 +08:00
										 |  |  |     $scope.addOverrideOption('Null point mode', 'nullPointMode', ['connected', 'null', 'null as zero']); | 
					
						
							| 
									
										
										
										
											2014-10-15 22:55:46 +08:00
										 |  |  |     $scope.addOverrideOption('Fill below to', 'fillBelowTo', $scope.getSeriesNames()); | 
					
						
							| 
									
										
										
										
											2014-08-19 23:24:37 +08:00
										 |  |  |     $scope.addOverrideOption('Staircase line', 'steppedLine', [true, false]); | 
					
						
							|  |  |  |     $scope.addOverrideOption('Points', 'points', [true, false]); | 
					
						
							|  |  |  |     $scope.addOverrideOption('Points Radius', 'pointradius', [1,2,3,4,5]); | 
					
						
							| 
									
										
										
										
											2015-06-13 02:06:47 +08:00
										 |  |  |     $scope.addOverrideOption('Stack', 'stack', [true, false, 'A', 'B', 'C', 'D']); | 
					
						
							| 
									
										
										
										
											2015-05-14 03:34:50 +08:00
										 |  |  |     $scope.addOverrideOption('Color', 'color', ['change']); | 
					
						
							| 
									
										
										
										
											2014-08-20 15:31:22 +08:00
										 |  |  |     $scope.addOverrideOption('Y-axis', 'yaxis', [1, 2]); | 
					
						
							| 
									
										
										
										
											2016-06-21 08:54:01 +08:00
										 |  |  |     $scope.addOverrideOption('Z-index', 'zindex', [-3,-2,-1,0,1,2,3]); | 
					
						
							| 
									
										
										
										
											2015-06-13 02:06:47 +08:00
										 |  |  |     $scope.addOverrideOption('Transform', 'transform', ['negative-Y']); | 
					
						
							| 
									
										
										
										
											2015-07-10 18:16:41 +08:00
										 |  |  |     $scope.addOverrideOption('Legend', 'legend', [true, false]); | 
					
						
							| 
									
										
										
										
											2014-08-19 16:46:08 +08:00
										 |  |  |     $scope.updateCurrentOverrides(); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | }); |