Browse Source

Merge branch 'master' into alerting_influxdb

bergquist 9 years ago
parent
commit
e36f9fa795
82 changed files with 406 additions and 88 deletions
  1. 40 0
      build.go
  2. 5 1
      conf/defaults.ini
  3. 7 2
      conf/sample.ini
  4. 5 1
      docs/sources/installation/configuration.md
  5. 8 1
      pkg/components/imguploader/imguploader.go
  6. 4 1
      pkg/login/ldap.go
  7. 4 2
      pkg/setting/setting.go
  8. 6 3
      pkg/tsdb/testdata/scenarios.go
  9. 9 7
      public/app/core/directives/metric_segment.js
  10. 314 62
      public/app/plugins/app/testdata/dashboards/graph_last_1h.json
  11. 1 1
      public/app/plugins/app/testdata/plugin.json
  12. BIN
      public/app/plugins/datasource/cloudwatch/img/amazon-web-services.png
  13. BIN
      public/app/plugins/datasource/elasticsearch/img/logo_large.png
  14. BIN
      public/app/plugins/datasource/graphite/img/graphite_logo.png
  15. 1 1
      public/app/plugins/datasource/opentsdb/datasource.js
  16. BIN
      public/app/plugins/datasource/opentsdb/img/opentsdb_logo.png
  17. 2 6
      public/app/plugins/panel/graph/tab_display.html
  18. BIN
      public/img/CopyQuery.png
  19. BIN
      public/img/alert_howto_new.png
  20. BIN
      public/img/angle_gradient_light_rev.png
  21. BIN
      public/img/angle_gradient_rev.png
  22. BIN
      public/img/check_radio_sheet.png
  23. BIN
      public/img/checkbox.png
  24. BIN
      public/img/checkbox_white.png
  25. BIN
      public/img/cubes.png
  26. BIN
      public/img/fav16.png
  27. BIN
      public/img/fav32.png
  28. BIN
      public/img/fav_dark_16.png
  29. BIN
      public/img/fav_dark_32.png
  30. BIN
      public/img/glyphicons-halflings-white.png
  31. BIN
      public/img/glyphicons-halflings.png
  32. BIN
      public/img/kibana.png
  33. BIN
      public/img/light.png
  34. BIN
      public/img/logo_transparent_200x.png
  35. BIN
      public/img/logo_transparent_200x75.png
  36. BIN
      public/img/logo_transparent_400x.png
  37. BIN
      public/img/page_header_line.png
  38. BIN
      public/img/small.png
  39. BIN
      public/img/transparent.png
  40. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/buttonBg.png
  41. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/buttonBgHover.png
  42. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/detach.png
  43. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/detachHover.png
  44. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/disable.png
  45. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/disableHover.png
  46. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/down.png
  47. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/downActive.png
  48. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/downHover.png
  49. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/errorIcon-sm.png
  50. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/errorIcon.png
  51. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/firebug.png
  52. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/infoIcon.png
  53. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/min.png
  54. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/minHover.png
  55. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/off.png
  56. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/offHover.png
  57. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/search.png
  58. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/shadowAlpha.png
  59. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/sprite.png
  60. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/tabHoverLeft.png
  61. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/tabHoverMid.png
  62. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/tabHoverRight.png
  63. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/tabLeft.png
  64. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/tabMenuCheckbox.png
  65. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/tabMenuPin.png
  66. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/tabMenuRadio.png
  67. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/tabMenuTarget.png
  68. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/tabMenuTargetHover.png
  69. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/tabMid.png
  70. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/tabRight.png
  71. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/textEditorBorders.png
  72. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/textEditorCorners.png
  73. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/titlebarMid.png
  74. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/toolbarMid.png
  75. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/twistyClosed.png
  76. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/twistyOpen.png
  77. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/up.png
  78. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/upActive.png
  79. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/upHover.png
  80. BIN
      public/vendor/lodash/vendor/firebug-lite/skin/xp/warningIcon.png
  81. BIN
      vendor/github.com/go-xorm/xorm/docs/images/cache_design.png
  82. BIN
      vendor/gopkg.in/macaron.v1/macaronlogo.png

+ 40 - 0
build.go

@@ -5,6 +5,7 @@ package main
 import (
 	"bytes"
 	"crypto/md5"
+	"crypto/sha1"
 	"encoding/json"
 	"flag"
 	"fmt"
@@ -85,17 +86,21 @@ func main() {
 		case "package":
 			grunt(gruntBuildArg("release")...)
 			createLinuxPackages()
+			sha1FilesInDist()
 
 		case "pkg-rpm":
 			grunt(gruntBuildArg("release")...)
 			createRpmPackages()
+			sha1FilesInDist()
 
 		case "pkg-deb":
 			grunt(gruntBuildArg("release")...)
 			createDebPackages()
+			sha1FilesInDist()
 
 		case "latest":
 			makeLatestDistCopies()
+			sha1FilesInDist()
 
 		case "clean":
 			clean()
@@ -501,3 +506,38 @@ func md5File(file string) error {
 
 	return out.Close()
 }
+
+func sha1FilesInDist() {
+	filepath.Walk("./dist", func(path string, f os.FileInfo, err error) error {
+		if strings.Contains(path, ".sha1") == false {
+			sha1File(path)
+		}
+		return nil
+	})
+}
+
+func sha1File(file string) error {
+	fd, err := os.Open(file)
+	if err != nil {
+		return err
+	}
+	defer fd.Close()
+
+	h := sha1.New()
+	_, err = io.Copy(h, fd)
+	if err != nil {
+		return err
+	}
+
+	out, err := os.Create(file + ".sha1")
+	if err != nil {
+		return err
+	}
+
+	_, err = fmt.Fprintf(out, "%x\n", h.Sum(nil))
+	if err != nil {
+		return err
+	}
+
+	return out.Close()
+}

+ 5 - 1
conf/defaults.ini

@@ -267,6 +267,7 @@ auto_sign_up = true
 [auth.ldap]
 enabled = false
 config_file = /etc/grafana/ldap.toml
+allow_sign_up = true
 
 #################################### SMTP / Emailing #####################
 [smtp]
@@ -292,6 +293,9 @@ mode = console, file
 # Either "debug", "info", "warn", "error", "critical", default is "info"
 level = info
 
+# optional settings to set different levels for specific loggers. Ex filters = sqlstore:debug
+filters =
+
 # For "console" mode only
 [log.console]
 level =
@@ -421,7 +425,7 @@ url = https://grafana.net
 #################################### External Image Storage ##############
 [external_image_storage]
 # You can choose between (s3, webdav)
-provider = s3
+provider =
 
 [external_image_storage.s3]
 bucket_url =

+ 7 - 2
conf/sample.ini

@@ -252,6 +252,7 @@
 [auth.ldap]
 ;enabled = false
 ;config_file = /etc/grafana/ldap.toml
+;allow_sign_up = true
 
 #################################### SMTP / Emailing ##########################
 [smtp]
@@ -276,6 +277,10 @@
 # Either "trace", "debug", "info", "warn", "error", "critical", default is "info"
 ;level = info
 
+# optional settings to set different levels for specific loggers. Ex filters = sqlstore:debug
+;filters =
+
+
 # For "console" mode only
 [log.console]
 ;level =
@@ -375,8 +380,8 @@
 #################################### External image storage ##########################
 [external_image_storage]
 # Used for uploading images to public servers so they can be included in slack/email messages.
-# you can choose between (s3, webdav or internal)
-;provider = s3
+# you can choose between (s3, webdav)
+;provider =
 
 [external_image_storage.s3]
 ;bucket_url =

+ 5 - 1
docs/sources/installation/configuration.md

@@ -30,6 +30,9 @@ using environment variables using the syntax:
 Where the section name is the text within the brackets. Everything
 should be upper case, `.` should be replaced by `_`. For example, given these configuration settings:
 
+    # default section
+    instance_name = ${HOSTNAME}
+
     [security]
     admin_user = admin
 
@@ -39,6 +42,7 @@ should be upper case, `.` should be replaced by `_`. For example, given these co
 
 Then you can override them using:
 
+    export GF_DEFAULT_INSTANCE_NAME=my-instance
     export GF_SECURITY_ADMIN_USER=true
     export GF_AUTH_GOOGLE_CLIENT_SECRET=newS3cretKey
 
@@ -528,7 +532,7 @@ Use space to separate multiple modes, e.g. "console file"
 ### level
 Either "debug", "info", "warn", "error", "critical", default is "info"
 
-### filter
+### filters
 optional settings to set different levels for specific loggers.
 Ex `filters = sqlstore:debug`
 

+ 8 - 1
pkg/components/imguploader/imguploader.go

@@ -10,6 +10,13 @@ type ImageUploader interface {
 	Upload(path string) (string, error)
 }
 
+type NopImageUploader struct {
+}
+
+func (NopImageUploader) Upload(path string) (string, error) {
+	return "", nil
+}
+
 func NewImageUploader() (ImageUploader, error) {
 
 	switch setting.ImageUploadProvider {
@@ -53,5 +60,5 @@ func NewImageUploader() (ImageUploader, error) {
 		return NewWebdavImageUploader(url, username, password)
 	}
 
-	return nil, fmt.Errorf("could not find specified provider")
+	return NopImageUploader{}, nil
 }

+ 4 - 1
pkg/login/ldap.go

@@ -13,6 +13,7 @@ import (
 	"github.com/grafana/grafana/pkg/bus"
 	"github.com/grafana/grafana/pkg/log"
 	m "github.com/grafana/grafana/pkg/models"
+	"github.com/grafana/grafana/pkg/setting"
 )
 
 type ldapAuther struct {
@@ -132,8 +133,10 @@ func (a *ldapAuther) getGrafanaUserFor(ldapUser *ldapUserInfo) (*m.User, error)
 	// get user from grafana db
 	userQuery := m.GetUserByLoginQuery{LoginOrEmail: ldapUser.Username}
 	if err := bus.Dispatch(&userQuery); err != nil {
-		if err == m.ErrUserNotFound {
+		if err == m.ErrUserNotFound && setting.LdapAllowSignup {
 			return a.createGrafanaUser(ldapUser)
+		} else if err == m.ErrUserNotFound {
+			return nil, ErrInvalidCredentials
 		} else {
 			return nil, err
 		}

+ 4 - 2
pkg/setting/setting.go

@@ -134,8 +134,9 @@ var (
 	GoogleTagManagerId string
 
 	// LDAP
-	LdapEnabled    bool
-	LdapConfigFile string
+	LdapEnabled     bool
+	LdapConfigFile  string
+	LdapAllowSignup bool = true
 
 	// SMTP email settings
 	Smtp SmtpSettings
@@ -551,6 +552,7 @@ func NewConfigContext(args *CommandLineArgs) error {
 	ldapSec := Cfg.Section("auth.ldap")
 	LdapEnabled = ldapSec.Key("enabled").MustBool(false)
 	LdapConfigFile = ldapSec.Key("config_file").String()
+	LdapAllowSignup = ldapSec.Key("allow_sign_up").MustBool(true)
 
 	alerting := Cfg.Section("alerting")
 	AlertingEnabled = alerting.Key("enabled").MustBool(false)

+ 6 - 3
pkg/tsdb/testdata/scenarios.go

@@ -90,10 +90,13 @@ func init() {
 			queryRes := tsdb.NewQueryResult()
 
 			stringInput := query.Model.Get("stringInput").MustString()
-			values := []float64{}
+			values := []null.Float{}
 			for _, strVal := range strings.Split(stringInput, ",") {
+				if strVal == "null" {
+					values = append(values, null.FloatFromPtr(nil))
+				}
 				if val, err := strconv.ParseFloat(strVal, 64); err == nil {
-					values = append(values, val)
+					values = append(values, null.FloatFrom(val))
 				}
 			}
 
@@ -107,7 +110,7 @@ func init() {
 			step := (endTime - startTime) / int64(len(values)-1)
 
 			for _, val := range values {
-				series.Points = append(series.Points, tsdb.NewTimePoint(null.FloatFrom(val), float64(startTime)))
+				series.Points = append(series.Points, tsdb.TimePoint{val, null.FloatFrom(float64(startTime))})
 				startTime += step
 			}
 

+ 9 - 7
public/app/core/directives/metric_segment.js

@@ -186,25 +186,27 @@ function (_, $, coreModule) {
 
           $scope.getOptionsInternal = function() {
             if ($scope.options) {
-              var optionSegments = _.map($scope.options, function(option) {
+              cachedOptions = _.map($scope.options, function(option) {
                 return uiSegmentSrv.newSegment({value: option.text});
               });
-              return $q.when(optionSegments);
+              return $q.when(cachedOptions);
             } else {
               return $scope.getOptions().then(function(options) {
-                cachedOptions = options;
-                return _.map(options, function(option) {
+                cachedOptions =_.map(options, function(option) {
+                  if (option.html) {
+                    return option;
+                  }
                   return uiSegmentSrv.newSegment({value: option.text});
                 });
+                return cachedOptions;
               });
             }
           };
 
           $scope.onSegmentChange = function() {
-            var options = $scope.options || cachedOptions;
 
-            if (options) {
-              var option = _.find(options, {text: $scope.segment.value});
+            if (cachedOptions) {
+              var option = _.find(cachedOptions, {value: $scope.segment.value});
               if (option && option.value !== $scope.property) {
                 $scope.property = option.value;
               } else if (attrs.custom !== 'false') {

+ 314 - 62
public/app/plugins/app/testdata/dashboards/graph_last_1h.json

@@ -1,5 +1,5 @@
 {
-  "revision": 4,
+  "revision": 5,
   "title": "TestData - Graph Panel Last 1h",
   "tags": [
     "grafana-test"
@@ -320,124 +320,376 @@
           ]
         },
         {
-          "title": "",
-          "error": false,
-          "span": 4,
+          "content": "Just verify that the tooltip time has millisecond resolution ",
           "editable": true,
-          "type": "text",
-          "isNew": true,
+          "error": false,
           "id": 6,
+          "isNew": true,
+          "links": [],
           "mode": "markdown",
-          "content": "Just verify that the tooltip time has millisecond resolution ",
-          "links": []
+          "span": 4,
+          "title": "",
+          "type": "text"
         }
       ],
       "title": "New row"
     },
     {
-      "title": "New row",
-      "height": 336,
-      "editable": true,
       "collapse": false,
+      "editable": true,
+      "height": 336,
       "panels": [
         {
-          "title": "2 yaxis and axis lables",
-          "error": false,
-          "span": 7.99561403508772,
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "Grafana TestData",
           "editable": true,
-          "type": "graph",
-          "isNew": true,
+          "error": false,
+          "fill": 1,
           "id": 5,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "B-series",
+              "yaxis": 2
+            }
+          ],
+          "span": 7.99561403508772,
+          "stack": false,
+          "steppedLine": false,
           "targets": [
             {
-              "target": "",
               "refId": "A",
               "scenarioId": "csv_metric_values",
-              "stringInput": "1,20,90,30,5,0"
+              "stringInput": "1,20,90,30,5,0",
+              "target": ""
             },
             {
-              "target": "",
               "refId": "B",
               "scenarioId": "csv_metric_values",
-              "stringInput": "2000,3000,4000,1000,3000,10000"
+              "stringInput": "2000,3000,4000,1000,3000,10000",
+              "target": ""
             }
           ],
-          "datasource": "Grafana TestData",
-          "renderer": "flot",
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "2 yaxis and axis lables",
+          "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "xaxis": {
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
           "yaxes": [
             {
+              "format": "percent",
               "label": "Perecent",
-              "show": true,
               "logBase": 1,
-              "min": null,
               "max": null,
-              "format": "percent"
+              "min": null,
+              "show": true
             },
             {
+              "format": "short",
               "label": "Pressure",
-              "show": true,
               "logBase": 1,
-              "min": null,
               "max": null,
-              "format": "short"
+              "min": null,
+              "show": true
+            }
+          ]
+        },
+        {
+          "content": "Verify that axis labels look ok",
+          "editable": true,
+          "error": false,
+          "id": 7,
+          "isNew": true,
+          "links": [],
+          "mode": "markdown",
+          "span": 4.00438596491228,
+          "title": "",
+          "type": "text"
+        }
+      ],
+      "title": "New row"
+    },
+    {
+      "collapse": false,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "Grafana TestData",
+          "editable": true,
+          "error": false,
+          "fill": 1,
+          "id": 8,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 4,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "refId": "B",
+              "scenarioId": "csv_metric_values",
+              "stringInput": "1,20,null,null,null,null,null,null,100,10,10,20,30,40,10",
+              "target": ""
             }
           ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "null value connected",
+          "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
           "xaxis": {
-            "show": true,
             "mode": "time",
             "name": null,
+            "show": true,
             "values": []
           },
-          "lines": true,
-          "fill": 1,
-          "linewidth": 2,
-          "points": false,
-          "pointradius": 5,
+          "yaxes": [
+            {
+              "format": "short",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "short",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        },
+        {
+          "aliasColors": {},
           "bars": false,
-          "stack": false,
-          "percentage": false,
+          "datasource": "Grafana TestData",
+          "editable": true,
+          "error": false,
+          "fill": 1,
+          "id": 10,
+          "isNew": true,
           "legend": {
-            "show": true,
-            "values": false,
-            "min": false,
-            "max": false,
+            "avg": false,
             "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
             "total": false,
-            "avg": false
+            "values": false
           },
-          "nullPointMode": "connected",
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "null as zero",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 3,
+          "stack": false,
           "steppedLine": false,
+          "targets": [
+            {
+              "refId": "B",
+              "scenarioId": "csv_metric_values",
+              "stringInput": "1,20,null,null,null,null,null,null,100,10,10,20,30,40,10",
+              "target": ""
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "null value null as zero",
           "tooltip": {
-            "value_type": "cumulative",
+            "msResolution": false,
             "shared": true,
             "sort": 0,
-            "msResolution": false
+            "value_type": "cumulative"
           },
-          "timeFrom": null,
-          "timeShift": null,
+          "type": "graph",
+          "xaxis": {
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "short",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "short",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        },
+        {
           "aliasColors": {},
+          "bars": false,
+          "datasource": "Grafana TestData",
+          "editable": true,
+          "error": false,
+          "fill": 1,
+          "id": 9,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "null",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
           "seriesOverrides": [
             {
               "alias": "B-series",
-              "yaxis": 2
+              "zindex": -3
+            }
+          ],
+          "span": 5,
+          "stack": true,
+          "steppedLine": false,
+          "targets": [
+            {
+              "hide": false,
+              "refId": "B",
+              "scenarioId": "csv_metric_values",
+              "stringInput": "1,20,null,null,null,null,null,null,100,10,10,20,30,40,10",
+              "target": ""
+            },
+            {
+              "alias": "",
+              "hide": false,
+              "refId": "A",
+              "scenarioId": "csv_metric_values",
+              "stringInput": "1,20,90,30,5,10,20,30,40,40,40,100,10,20,20",
+              "target": ""
+            },
+            {
+              "alias": "",
+              "hide": false,
+              "refId": "C",
+              "scenarioId": "csv_metric_values",
+              "stringInput": "1,20,90,30,5,10,20,30,40,40,40,100,10,20,20",
+              "target": ""
             }
           ],
           "thresholds": [],
-          "links": []
-        },
-        {
-          "title": "",
-          "error": false,
-          "span": 4.00438596491228,
-          "editable": true,
-          "type": "text",
-          "isNew": true,
-          "id": 7,
-          "mode": "markdown",
-          "content": "Verify that axis labels look ok",
-          "links": []
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Stacking value ontop of nulls",
+          "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "xaxis": {
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "short",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "short",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
         }
-      ]
+      ],
+      "title": "New row"
     }
   ],
   "time": {
@@ -477,7 +729,7 @@
   },
   "refresh": false,
   "schemaVersion": 13,
-  "version": 3,
+  "version": 13,
   "links": [],
   "gnetId": null
 }

+ 1 - 1
public/app/plugins/app/testdata/plugin.json

@@ -9,7 +9,7 @@
       "name": "Grafana Project",
       "url": "http://grafana.org"
     },
-    "version": "1.0.13",
+    "version": "1.0.14",
     "updated": "2016-09-26"
   },
 

BIN
public/app/plugins/datasource/cloudwatch/img/amazon-web-services.png


BIN
public/app/plugins/datasource/elasticsearch/img/logo_large.png


BIN
public/app/plugins/datasource/graphite/img/graphite_logo.png


+ 1 - 1
public/app/plugins/datasource/opentsdb/datasource.js

@@ -419,7 +419,7 @@ function (angular, _, dateMath) {
               return target.metric === metricData.metric;
             } else {
               return target.metric === metricData.metric &&
-              _.all(target.tags, function(tagV, tagK) {
+              _.every(target.tags, function(tagV, tagK) {
                 interpolatedTagValue = templateSrv.replace(tagV, options.scopedVars, 'pipe');
                 return metricData.tags[tagK] === interpolatedTagValue || interpolatedTagValue === "*";
               });

BIN
public/app/plugins/datasource/opentsdb/img/opentsdb_logo.png


+ 2 - 6
public/app/plugins/panel/graph/tab_display.html

@@ -71,13 +71,9 @@
 
 		<div class="section gf-form-group">
 			<h5 class="section-heading">Stacking & Null value</h5>
-			<gf-form-switch class="gf-form"
-									 label="Stack" label-class="width-7"
-												checked="ctrl.panel.stack" on-change="ctrl.render()">
+			<gf-form-switch class="gf-form" label="Stack" label-class="width-7" checked="ctrl.panel.stack" on-change="ctrl.render()">
 			</gf-form-switch>
-			<gf-form-switch class="gf-form" ng-show="ctrl.panel.stack"
-																	 label="Percent" label-class="width-7"
-																	checked="ctrl.panel.percentage" on-change="ctrl.render()">
+			<gf-form-switch class="gf-form" ng-show="ctrl.panel.stack" label="Percent" label-class="width-7" checked="ctrl.panel.percentage" on-change="ctrl.render()">
 			</gf-form-switch>
 			<div class="gf-form">
 				<label class="gf-form-label width-7">Null value</label>

BIN
public/img/CopyQuery.png


BIN
public/img/alert_howto_new.png


BIN
public/img/angle_gradient_light_rev.png


BIN
public/img/angle_gradient_rev.png


BIN
public/img/check_radio_sheet.png


BIN
public/img/checkbox.png


BIN
public/img/checkbox_white.png


BIN
public/img/cubes.png


BIN
public/img/fav16.png


BIN
public/img/fav32.png


BIN
public/img/fav_dark_16.png


BIN
public/img/fav_dark_32.png


BIN
public/img/glyphicons-halflings-white.png


BIN
public/img/glyphicons-halflings.png


BIN
public/img/kibana.png


BIN
public/img/light.png


BIN
public/img/logo_transparent_200x.png


BIN
public/img/logo_transparent_200x75.png


BIN
public/img/logo_transparent_400x.png


BIN
public/img/page_header_line.png


BIN
public/img/small.png


BIN
public/img/transparent.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/buttonBg.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/buttonBgHover.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/detach.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/detachHover.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/disable.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/disableHover.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/down.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/downActive.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/downHover.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/errorIcon-sm.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/errorIcon.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/firebug.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/infoIcon.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/min.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/minHover.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/off.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/offHover.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/search.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/shadowAlpha.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/sprite.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/tabHoverLeft.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/tabHoverMid.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/tabHoverRight.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/tabLeft.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/tabMenuCheckbox.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/tabMenuPin.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/tabMenuRadio.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/tabMenuTarget.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/tabMenuTargetHover.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/tabMid.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/tabRight.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/textEditorBorders.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/textEditorCorners.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/titlebarMid.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/toolbarMid.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/twistyClosed.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/twistyOpen.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/up.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/upActive.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/upHover.png


BIN
public/vendor/lodash/vendor/firebug-lite/skin/xp/warningIcon.png


BIN
vendor/github.com/go-xorm/xorm/docs/images/cache_design.png


BIN
vendor/gopkg.in/macaron.v1/macaronlogo.png