diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d6fa247b59..445fb52289e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,9 @@ -# 2.6.0 (unreleased) +# 2.6.0 (2015-12-04) + +### Bug Fixes +* **metric editors**: Fix for clicking typeahead auto dropdown option, fixes [#3428](https://github.com/grafana/grafana/issues/3428) + +# 2.6.0-Beta1 (2015-12-04) ### New Table Panel * **table**: New powerful and flexible table panel, closes [#215](https://github.com/grafana/grafana/issues/215) @@ -6,6 +11,7 @@ ### Enhancements * **CloudWatch**: Support for multiple AWS Credentials, closes [#3053](https://github.com/grafana/grafana/issues/3053), [#3080](https://github.com/grafana/grafana/issues/3080) * **Elasticsearch**: Support for dynamic daily indices for annotations, closes [#3061](https://github.com/grafana/grafana/issues/3061) +* **Elasticsearch**: Support for setting min_doc_count for date histogram, closes [#3416](https://github.com/grafana/grafana/issues/3416) * **Graph Panel**: Option to hide series with all zeroes from legend and tooltip, closes [#1381](https://github.com/grafana/grafana/issues/1381), [#3336](https://github.com/grafana/grafana/issues/3336) ### Bug Fixes diff --git a/appveyor.yml b/appveyor.yml index 993f8f2882c..83506312912 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -5,7 +5,7 @@ os: Windows Server 2012 R2 clone_folder: c:\gopath\src\github.com\grafana\grafana environment: - nodejs_version: "0.12.2" + nodejs_version: "4" GOPATH: c:\gopath install: diff --git a/build.go b/build.go index 4a345c5fc73..fcd7289cd6a 100644 --- a/build.go +++ b/build.go @@ -76,6 +76,14 @@ func main() { grunt("release") createLinuxPackages() + case "pkg-rpm": + grunt("release") + createRpmPackages() + + case "pkg-deb": + grunt("release") + createDebPackages() + case "latest": makeLatestDistCopies() @@ -147,7 +155,7 @@ type linuxPackageOptions struct { depends []string } -func createLinuxPackages() { +func createDebPackages() { createPackage(linuxPackageOptions{ packageType: "deb", homeDir: "/usr/share/grafana", @@ -167,7 +175,9 @@ func createLinuxPackages() { depends: []string{"adduser", "libfontconfig"}, }) +} +func createRpmPackages() { createPackage(linuxPackageOptions{ packageType: "rpm", homeDir: "/usr/share/grafana", @@ -189,6 +199,11 @@ func createLinuxPackages() { }) } +func createLinuxPackages() { + createDebPackages() + createRpmPackages() +} + func createPackage(options linuxPackageOptions) { packageRoot, _ := ioutil.TempDir("", "grafana-linux-pack") @@ -315,6 +330,8 @@ func build(pkg string, tags []string) { args = append(args, "-o", binary) args = append(args, pkg) setBuildEnv() + + runPrint("go", "version") runPrint("go", args...) // Create an md5 checksum of the binary, to be included in the archive for diff --git a/package.json b/package.json index 75136e48f1a..c82da556b1e 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "company": "Coding Instinct AB" }, "name": "grafana", - "version": "2.6.0-pre1", + "version": "2.6.0-beta1", "repository": { "type": "git", "url": "http://github.com/torkelo/grafana.git" diff --git a/pkg/setting/setting.go b/pkg/setting/setting.go index d6a853a9cdc..34ed216a4a6 100644 --- a/pkg/setting/setting.go +++ b/pkg/setting/setting.go @@ -174,6 +174,9 @@ func applyEnvVariableOverrides() { if len(envValue) > 0 { key.SetValue(envValue) + if strings.Contains(envKey, "PASSWORD") { + envValue = "*********" + } appliedEnvOverrides = append(appliedEnvOverrides, fmt.Sprintf("%s=%s", envKey, envValue)) } } @@ -188,6 +191,9 @@ func applyCommandLineDefaultProperties(props map[string]string) { value, exists := props[keyString] if exists { key.SetValue(value) + if strings.Contains(keyString, "password") { + value = "*********" + } appliedCommandLineProperties = append(appliedCommandLineProperties, fmt.Sprintf("%s=%s", keyString, value)) } } diff --git a/public/app/core/directives/metric_segment.js b/public/app/core/directives/metric_segment.js index 1d07544bb2d..bf7f7309b2b 100644 --- a/public/app/core/directives/metric_segment.js +++ b/public/app/core/directives/metric_segment.js @@ -55,8 +55,8 @@ function (_, $, coreModule) { }); }; - $scope.switchToLink = function() { - if (linkMode) { return; } + $scope.switchToLink = function(fromClick) { + if (linkMode && !fromClick) { return; } clearTimeout(cancelBlur); cancelBlur = null; @@ -69,7 +69,7 @@ function (_, $, coreModule) { $scope.inputBlur = function() { // happens long before the click event on the typeahead options // need to have long delay because the blur - cancelBlur = setTimeout($scope.switchToLink, 100); + cancelBlur = setTimeout($scope.switchToLink, 200); }; $scope.source = function(query, callback) { @@ -100,7 +100,7 @@ function (_, $, coreModule) { } $input.val(value); - $scope.switchToLink(); + $scope.switchToLink(true); return value; }; diff --git a/public/app/core/directives/value_select_dropdown.js b/public/app/core/directives/value_select_dropdown.js index 4f5076abd2f..873174c6fc6 100644 --- a/public/app/core/directives/value_select_dropdown.js +++ b/public/app/core/directives/value_select_dropdown.js @@ -156,7 +156,7 @@ function (angular, _, coreModule) { vm.selectionsChanged = function(commitChange) { vm.selectedValues = _.filter(vm.options, {selected: true}); - if (vm.selectedValues.length > 1 && vm.selectedValues.length !== vm.options.length) { + if (vm.selectedValues.length > 1) { if (vm.selectedValues[0].text === 'All') { vm.selectedValues[0].selected = false; vm.selectedValues = vm.selectedValues.slice(1, vm.selectedValues.length); diff --git a/public/app/features/dashboard/timeSrv.js b/public/app/features/dashboard/timeSrv.js index 691bfd07904..62d7b8c591e 100644 --- a/public/app/features/dashboard/timeSrv.js +++ b/public/app/features/dashboard/timeSrv.js @@ -47,8 +47,9 @@ define([ if (value.length === 15) { return moment.utc(value, 'YYYYMMDDTHHmmss'); } - var epoch = parseInt(value); - if (!_.isNaN(epoch)) { + + if (!isNaN(value)) { + var epoch = parseInt(value); return moment(epoch); } diff --git a/public/app/panels/table/controller.ts b/public/app/panels/table/controller.ts index 270e2f65a3d..54deb28b11e 100644 --- a/public/app/panels/table/controller.ts +++ b/public/app/panels/table/controller.ts @@ -26,7 +26,7 @@ export class TablePanelCtrl { var panelDefaults = { targets: [{}], - transform: 'timeseries_to_rows', + transform: 'timeseries_to_columns', pageSize: null, showHeader: true, styles: [ diff --git a/public/app/panels/table/editor.ts b/public/app/panels/table/editor.ts index e41ff422800..b9fc0c3dd63 100644 --- a/public/app/panels/table/editor.ts +++ b/public/app/panels/table/editor.ts @@ -45,11 +45,17 @@ export class TablePanelEditorCtrl { }; $scope.addColumn = function() { - $scope.panel.columns.push({text: $scope.addColumnSegment.value, value: $scope.addColumnSegment.value}); - $scope.render(); + var columns = transformers[$scope.panel.transform].getColumns($scope.dataRaw); + var column = _.findWhere(columns, {text: $scope.addColumnSegment.value}); + + if (column) { + $scope.panel.columns.push(column); + $scope.render(); + } var plusButton = uiSegmentSrv.newPlusButton(); $scope.addColumnSegment.html = plusButton.html; + $scope.addColumnSegment.value = plusButton.value; }; $scope.transformChanged = function() { diff --git a/public/app/panels/table/renderer.ts b/public/app/panels/table/renderer.ts index a55a8bf2fac..c782cce3579 100644 --- a/public/app/panels/table/renderer.ts +++ b/public/app/panels/table/renderer.ts @@ -112,7 +112,7 @@ export class TableRenderer { // this hack adds header content to cell (not visible) var widthHack = ''; if (addWidthHack) { - widthHack = '