Merge branch 'master' into develop

This commit is contained in:
Torkel Ödegaard
2017-06-23 12:56:59 -04:00
8 changed files with 18 additions and 8 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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