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

This commit is contained in:
Torkel Ödegaard 2014-09-19 17:16:34 +02:00
commit c287405471
9 changed files with 65 additions and 21 deletions

View File

@ -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)

View File

@ -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) {

View File

@ -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);
});
};

View File

@ -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,

View File

@ -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() {

View File

@ -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 {

View File

@ -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;
}
}

View File

@ -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 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>
<div ng-view></div>
</body>
</body>
</html>

View File

@ -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');