Browse Source

Merge branch 'master' of github.com:torkelo/grafana-private into pro

Torkel Ödegaard 11 years ago
parent
commit
c287405471

+ 1 - 0
CHANGELOG.md

@@ -4,6 +4,7 @@
 - [Issue #802](https://github.com/grafana/grafana/issues/802). Annotations: Fix when using InfluxDB datasource
 - [Issue #795](https://github.com/grafana/grafana/issues/795). Chrome: Fix for display issue in chrome beta & chrome canary when entering edit mode
 - [Issue #818](https://github.com/grafana/grafana/issues/818). Graph: Added percent y-axis format
+- [Issue #828](https://github.com/grafana/grafana/issues/828). Elasticsearch: saving new dashboard with title equal to slugified url would cause it to deleted.
 
 # 1.8.0-RC1 (2014-09-12)
 

+ 4 - 4
src/app/components/kbn.js

@@ -567,8 +567,8 @@ function($, _, moment) {
 
   kbn.msFormat = function(size, decimals) {
     // Less than 1 milli, downscale to micro
-    if (Math.abs(size) < 1) {
-      return kbn.microsFormat(size * 1000,decimals);
+    if (size !== 0 && Math.abs(size) < 1) {
+      return kbn.microsFormat(size * 1000, decimals);
     }
     else if (Math.abs(size) < 1000) {
       return size.toFixed(decimals) + " ms";
@@ -595,7 +595,7 @@ function($, _, moment) {
 
   kbn.sFormat = function(size, decimals) {
     // Less than 1 sec, downscale to milli
-    if (Math.abs(size) < 1) {
+    if (size !== 0 && Math.abs(size) < 1) {
       return kbn.msFormat(size * 1000, decimals);
     }
     // Less than 10 min, use seconds
@@ -624,7 +624,7 @@ function($, _, moment) {
 
   kbn.microsFormat = function(size, decimals) {
     // Less than 1 micro, downscale to nano
-    if (Math.abs(size) < 1) {
+    if (size !== 0 && Math.abs(size) < 1) {
       return kbn.nanosFormat(size * 1000, decimals);
     }
     else if (Math.abs(size) < 1000) {

+ 2 - 2
src/app/controllers/dashboardNavCtrl.js

@@ -78,7 +78,7 @@ function (angular, _, moment, config, store) {
       var clone = angular.copy($scope.dashboard);
       $scope.db.saveDashboard(clone)
         .then(function(result) {
-          alertSrv.set('Dashboard Saved', 'Dashboard has been saved as "' + result.title + '"','success', 5000);
+          alertSrv.set('Dashboard Saved', 'Saved as "' + result.title + '"','success', 3000);
 
           if (result.url !== $location.path()) {
             $location.search({});
@@ -88,7 +88,7 @@ function (angular, _, moment, config, store) {
           $rootScope.$emit('dashboard-saved', $scope.dashboard);
 
         }, function(err) {
-          alertSrv.set('Save failed', err, 'error',5000);
+          alertSrv.set('Save failed', err, 'error', 5000);
         });
     };
 

+ 5 - 0
src/app/directives/grafanaGraph.js

@@ -110,6 +110,11 @@ function (angular, $, kbn, moment, _) {
 
           // Populate element
           var options = {
+            hooks: {
+              drawSeries: [function() {
+                console.log('drawSeries', arguments);
+              }]
+            },
             legend: { show: false },
             series: {
               stackpercent: panel.stack ? panel.percentage : false,

+ 4 - 2
src/app/services/elasticsearch/es-datasource.js

@@ -37,6 +37,7 @@ function (angular, _, config, kbn, moment) {
       };
 
       if (this.basicAuth) {
+        options.withCredentials = true;
         options.headers = {
           "Authorization": "Basic " + this.basicAuth
         };
@@ -168,7 +169,7 @@ function (angular, _, config, kbn, moment) {
 
         return this._request('PUT', '/dashboard/' + id, this.index, data)
           .then(function(results) {
-            self._removeUnslugifiedDashboard(results, title);
+            self._removeUnslugifiedDashboard(results, title, id);
             return { title: title, url: '/dashboard/db/' + id };
           }, function() {
             throw 'Failed to save to elasticsearch';
@@ -176,8 +177,9 @@ function (angular, _, config, kbn, moment) {
       }
     };
 
-    ElasticDatasource.prototype._removeUnslugifiedDashboard = function(saveResult, title) {
+    ElasticDatasource.prototype._removeUnslugifiedDashboard = function(saveResult, title, id) {
       if (saveResult.statusText !== 'Created') { return; }
+      if (title === id) { return; }
 
       var self = this;
       this._get('/dashboard/' + title).then(function() {

+ 1 - 1
src/css/less/bootswatch.light.less

@@ -59,6 +59,7 @@ a.text-success:hover { color: darken(@green, 10%); }
 	}
 
 	.brand {
+		padding: 0px 15px;
 
 		&:hover {
 			color: @navbarLinkColorHover;
@@ -461,7 +462,6 @@ legend {
 // -----------------------------------------------------
 
 .alert {
-	.border-radius(0);
 	text-shadow: none;
 
 	&-heading, h1, h2, h3, h4, h5, h6 {

+ 31 - 6
src/css/less/overrides.less

@@ -317,13 +317,38 @@ div.flot-text {
   color: @textColor !important;
 }
 
-.dashboard-notice {
+.page-alert-list {
   z-index:8000;
-  margin-left:0px;
-  padding:3px 0px 3px 0px;
-  width:100%;
-  padding-left:20px;
-  color: @white;
+  min-width: 300px;
+  max-width: 300px;
+  position: fixed;
+  right: 20px;
+  top: 56px;
+
+  .alert {
+    color: @white;
+    padding-bottom: 13px;
+    position: relative;
+  }
+
+  .alert-close {
+    position: absolute;
+    top: -4px;
+    right: -2px;
+    width: 19px;
+    height: 19px;
+    padding: 0;
+    background: @grayLighter;
+    border-radius: 50%;
+    border: none;
+    font-size: 1.1rem;
+    color: @grayDarker;
+  }
+
+  .alert-title {
+    font-weight: bold;
+    padding-bottom: 2px;
+  }
 }
 
 

+ 13 - 8
src/index.html

@@ -24,12 +24,17 @@
 
     <link rel="stylesheet" href="css/grafana.light.min.css" ng-if="grafana.style === 'light'">
 
-    <div ng-repeat='alert in dashAlerts.list' class="alert-{{alert.severity}} dashboard-notice" ng-show="$last">
-      <button type="button" class="close" ng-click="dashAlerts.clear(alert)" style="padding-right:50px">&times;</button>
-      <strong>{{alert.title}}</strong> <span ng-bind-html='alert.text'></span> <div style="padding-right:10px" class='pull-right small'> {{$index + 1}} alert(s) </div>
-    </div>
-
-    <div ng-view></div>
-
-  </body>
+		<div class="page-alert-list">
+			<div ng-repeat='alert in dashAlerts.list' class="alert-{{alert.severity}} alert">
+				<button type="button" class="alert-close" ng-click="dashAlerts.clear(alert)">
+					<i class="icon-remove-sign"></i>
+				</button>
+				<div class="alert-title">{{alert.title}}</div>
+				<div ng-bind-html='alert.text'></div>
+			</div>
+		</div>
+
+		<div ng-view></div>
+
+	</body>
 </html>

+ 6 - 0
src/test/specs/kbn-format-specs.js

@@ -15,6 +15,12 @@ define([
       expect(str).to.be('1.02 hour');
     });
 
+    it('should not downscale when value is zero', function() {
+      var str = kbn.msFormat(0, 2);
+      expect(str).to.be('0.00 ms');
+    });
+
+
     it('should translate 365445 as 6.09 min', function() {
       var str = kbn.msFormat(365445, 2);
       expect(str).to.be('6.09 min');