mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Merge branch 'master' into develop
This commit is contained in:
@@ -203,6 +203,12 @@ For MySQL, use either `true`, `false`, or `skip-verify`.
|
|||||||
|
|
||||||
(MySQL only) The common name field of the certificate used by the `mysql` server. Not necessary if `ssl_mode` is set to `skip-verify`.
|
(MySQL only) The common name field of the certificate used by the `mysql` server. Not necessary if `ssl_mode` is set to `skip-verify`.
|
||||||
|
|
||||||
|
### max_idle_conn
|
||||||
|
The maximum number of connections in the idle connection pool.
|
||||||
|
|
||||||
|
### max_open_conn
|
||||||
|
The maximum number of open connections to the database.
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
## [security]
|
## [security]
|
||||||
|
|||||||
@@ -304,6 +304,7 @@ func (hs *HttpServer) registerRoutes() {
|
|||||||
}, reqEditorRole)
|
}, reqEditorRole)
|
||||||
|
|
||||||
r.Get("/annotations", wrap(GetAnnotations))
|
r.Get("/annotations", wrap(GetAnnotations))
|
||||||
|
r.Post("/annotations/mass-delete", reqOrgAdmin, bind(dtos.DeleteAnnotationsCmd{}), wrap(DeleteAnnotations))
|
||||||
|
|
||||||
r.Group("/annotations", func() {
|
r.Group("/annotations", func() {
|
||||||
r.Post("/", bind(dtos.PostAnnotationsCmd{}), wrap(PostAnnotation))
|
r.Post("/", bind(dtos.PostAnnotationsCmd{}), wrap(PostAnnotation))
|
||||||
|
|||||||
@@ -183,6 +183,7 @@ func (e MysqlExecutor) getTypedRowData(types []*sql.ColumnType, rows *core.Rows)
|
|||||||
values := make([]interface{}, len(types))
|
values := make([]interface{}, len(types))
|
||||||
|
|
||||||
for i, stype := range types {
|
for i, stype := range types {
|
||||||
|
e.log.Info("type", "type", stype)
|
||||||
switch stype.DatabaseTypeName() {
|
switch stype.DatabaseTypeName() {
|
||||||
case mysql.FieldTypeNameTiny:
|
case mysql.FieldTypeNameTiny:
|
||||||
values[i] = new(int8)
|
values[i] = new(int8)
|
||||||
@@ -209,7 +210,7 @@ func (e MysqlExecutor) getTypedRowData(types []*sql.ColumnType, rows *core.Rows)
|
|||||||
case mysql.FieldTypeNameDateTime:
|
case mysql.FieldTypeNameDateTime:
|
||||||
values[i] = new(time.Time)
|
values[i] = new(time.Time)
|
||||||
case mysql.FieldTypeNameTime:
|
case mysql.FieldTypeNameTime:
|
||||||
values[i] = new(time.Duration)
|
values[i] = new(string)
|
||||||
case mysql.FieldTypeNameYear:
|
case mysql.FieldTypeNameYear:
|
||||||
values[i] = new(int16)
|
values[i] = new(int16)
|
||||||
case mysql.FieldTypeNameNULL:
|
case mysql.FieldTypeNameNULL:
|
||||||
@@ -307,6 +308,9 @@ func (s *stringStringScan) Update(rows *sql.Rows) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s.time = null.FloatFromPtr(nil)
|
||||||
|
s.value = null.FloatFromPtr(nil)
|
||||||
|
|
||||||
for i := 0; i < s.columnCount; i++ {
|
for i := 0; i < s.columnCount; i++ {
|
||||||
if rb, ok := s.rowPtrs[i].(*sql.RawBytes); ok {
|
if rb, ok := s.rowPtrs[i].(*sql.RawBytes); ok {
|
||||||
s.rowValues[i] = string(*rb)
|
s.rowValues[i] = string(*rb)
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ export class FormDropdownCtrl {
|
|||||||
optionCache: any;
|
optionCache: any;
|
||||||
lookupText: boolean;
|
lookupText: boolean;
|
||||||
|
|
||||||
|
/** @ngInject **/
|
||||||
constructor(private $scope, $element, private $sce, private templateSrv, private $q) {
|
constructor(private $scope, $element, private $sce, private templateSrv, private $q) {
|
||||||
this.inputElement = $element.find('input').first();
|
this.inputElement = $element.find('input').first();
|
||||||
this.linkElement = $element.find('a').first();
|
this.linkElement = $element.find('a').first();
|
||||||
|
|||||||
@@ -29,8 +29,7 @@ const template = `
|
|||||||
ng-model="ctrl.message"
|
ng-model="ctrl.message"
|
||||||
ng-model-options="{allowInvalid: true}"
|
ng-model-options="{allowInvalid: true}"
|
||||||
ng-maxlength="this.max"
|
ng-maxlength="this.max"
|
||||||
autocomplete="off"
|
autocomplete="off" />
|
||||||
required />
|
|
||||||
<small class="gf-form-hint-text muted" ng-cloak>
|
<small class="gf-form-hint-text muted" ng-cloak>
|
||||||
<span ng-class="{'text-error': ctrl.saveForm.message.$invalid && ctrl.saveForm.message.$dirty }">
|
<span ng-class="{'text-error': ctrl.saveForm.message.$invalid && ctrl.saveForm.message.$dirty }">
|
||||||
{{ctrl.message.length || 0}}
|
{{ctrl.message.length || 0}}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
///<reference path="../../headers/common.d.ts" />
|
///<reference path="../../headers/common.d.ts" />
|
||||||
|
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
//import {coreModule} from 'app/core/core';
|
|
||||||
import {DashboardModel} from '../dashboard/model';
|
import {DashboardModel} from '../dashboard/model';
|
||||||
|
|
||||||
export class MetricsTabCtrl {
|
export class MetricsTabCtrl {
|
||||||
@@ -32,7 +31,6 @@ export class MetricsTabCtrl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.addQueryDropdown = {text: 'Add Query', value: null, fake: true};
|
this.addQueryDropdown = {text: 'Add Query', value: null, fake: true};
|
||||||
|
|
||||||
// update next ref id
|
// update next ref id
|
||||||
this.panelCtrl.nextRefId = this.dashboard.getNextQueryLetter(this.panel);
|
this.panelCtrl.nextRefId = this.dashboard.getNextQueryLetter(this.panel);
|
||||||
}
|
}
|
||||||
@@ -80,4 +78,3 @@ export function metricsTabDirective() {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
//coreModule.directive('metricsTab', metricsTabDirective);
|
|
||||||
|
|||||||
@@ -115,6 +115,9 @@ $gf-form-margin: 0.25rem;
|
|||||||
@include border-radius($input-border-radius-sm);
|
@include border-radius($input-border-radius-sm);
|
||||||
@include box-shadow($input-box-shadow);
|
@include box-shadow($input-box-shadow);
|
||||||
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
|
||||||
// Unstyle the caret on `<select>`s in IE10+.
|
// Unstyle the caret on `<select>`s in IE10+.
|
||||||
&::-ms-expand {
|
&::-ms-expand {
|
||||||
|
|||||||
@@ -9,7 +9,6 @@
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
|
|
||||||
.tabbed-view-header {
|
.tabbed-view-header {
|
||||||
/* padding: 0; */
|
|
||||||
background-color: $body-bg;
|
background-color: $body-bg;
|
||||||
padding: 1.5em 1rem 0 1rem;
|
padding: 1.5em 1rem 0 1rem;
|
||||||
}
|
}
|
||||||
@@ -48,7 +47,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.tabbed-view-body {
|
.tabbed-view-body {
|
||||||
padding: $spacer*2;
|
padding: $spacer*2 $spacer;
|
||||||
min-height: 250px;
|
min-height: 250px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user