diff --git a/CHANGELOG.md b/CHANGELOG.md index 917d9b7fda8..24d52dd9bfc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,8 +5,13 @@ * **SingleStat**: Add seriename as option in singlestat panel, closes [#4740](https://github.com/grafana/grafana/issues/4740) * **Localization**: Week start day now dependant on browser locale setting, closes [#3003](https://github.com/grafana/grafana/issues/3003) * **Templating**: Update panel repeats for variables that change on time refresh, closes [#5021](https://github.com/grafana/grafana/issues/5021) +* **Elasticsearch**: Support to set Precision Threshold for Unique Count metric, closes [#4689](https://github.com/grafana/grafana/issues/4689) -# 3.1.0 stable (unreleased) +# 3.1.1 (unreleased / v3.1.x branch) +* **IFrame embedding**: Fixed issue of using full iframe height, fixes [#5605](https://github.com/grafana/grafana/issues/5606) +* **Panel PNG rendering**: Fixed issue detecting render completion, fixes [#5605](https://github.com/grafana/grafana/issues/5606) + +# 3.1.0 stable (2016-07-12) ### Bugfixes & Enhancements, * **User Alert Notices**: Backend error alert popups did not show properly, fixes [#5435](https://github.com/grafana/grafana/issues/5435) diff --git a/docs/sources/installation/debian.md b/docs/sources/installation/debian.md index 92f11764aa4..360d43512f0 100644 --- a/docs/sources/installation/debian.md +++ b/docs/sources/installation/debian.md @@ -10,20 +10,13 @@ page_keywords: grafana, installation, debian, ubuntu, guide Description | Download ------------ | ------------- -Stable .deb for Debian-based Linux | [3.0.4](https://grafanarel.s3.amazonaws.com/builds/grafana_3.0.4-1464167696_amd64.deb) -Beta .deb for Debian-based Linux | [3.1.0-beta1](https://grafanarel.s3.amazonaws.com/builds/grafana_3.1.0-1466666977beta1_amd64.deb) +Stable .deb for Debian-based Linux | [3.1.0](https://grafanarel.s3.amazonaws.com/builds/grafana_3.1.0-1468321182_amd64.deb) ## Install Stable - $ wget https://grafanarel.s3.amazonaws.com/builds/grafana_3.0.4-1464167696_amd64.deb + $ wget https://grafanarel.s3.amazonaws.com/builds/grafana_3.1.0-1468321182_amd64.deb $ sudo apt-get install -y adduser libfontconfig - $ sudo dpkg -i grafana_3.0.4-1464167696_amd64.deb - -## Install 3.1 beta - - $ wget https://grafanarel.s3.amazonaws.com/builds/grafana_3.1.0-1466666977beta1_amd64.deb - $ sudo apt-get install -y adduser libfontconfig - $ sudo dpkg -i grafana_3.1.0-1466666977beta1_amd64.deb + $ sudo dpkg -i grafana_3.1.0-1468321182_amd64.deb ## APT Repository diff --git a/docs/sources/installation/rpm.md b/docs/sources/installation/rpm.md index 0e423eb0af4..c08521a7538 100644 --- a/docs/sources/installation/rpm.md +++ b/docs/sources/installation/rpm.md @@ -10,42 +10,24 @@ page_keywords: grafana, installation, centos, fedora, opensuse, redhat, guide Description | Download ------------ | ------------- -Stable .RPM for CentOS / Fedora / OpenSuse / Redhat Linux | [3.0.4 (x86-64 rpm)](https://grafanarel.s3.amazonaws.com/builds/grafana-3.0.4-1464167696.x86_64.rpm) -Beta .RPM for CentOS / Fedora / OpenSuse / Redhat Linux | [3.1.0-beta1 (x86-64 rpm)](https://grafanarel.s3.amazonaws.com/builds/grafana-3.1.0-1466666977beta1.x86_64.rpm) +Stable .RPM for CentOS / Fedora / OpenSuse / Redhat Linux | [3.1.0 (x86-64 rpm)](https://grafanarel.s3.amazonaws.com/builds/grafana-3.1.0-1468321182.x86_64.rpm) ## Install Latest Stable You can install Grafana using Yum directly. - $ sudo yum install https://grafanarel.s3.amazonaws.com/builds/grafana-3.0.4-1464167696.x86_64.rpm + $ sudo yum install https://grafanarel.s3.amazonaws.com/builds/grafana-3.1.0-1468321182.x86_64.rpm Or install manually using `rpm`. #### On CentOS / Fedora / Redhat: $ sudo yum install initscripts fontconfig - $ sudo rpm -Uvh grafana-3.0.4-1464167696.x86_64.rpm + $ sudo rpm -Uvh grafana-3.1.0-1468321182.x86_64.rpm #### On OpenSuse: - $ sudo rpm -i --nodeps grafana-3.0.4-1464167696.x86_64.rpm - -## Install 3.1 Beta - -You can install Grafana using Yum directly. - - $ sudo yum install https://grafanarel.s3.amazonaws.com/builds/grafana-3.1.0-1466666977beta1.x86_64.rpm - -Or install manually using `rpm`. - -#### On CentOS / Fedora / Redhat: - - $ sudo yum install initscripts fontconfig - $ sudo rpm -Uvh https://grafanarel.s3.amazonaws.com/builds/grafana-3.1.0-1466666977beta1.x86_64.rpm - -#### On OpenSuse: - - $ sudo rpm -i --nodeps https://grafanarel.s3.amazonaws.com/builds/grafana-3.1.0-1466666977beta1.x86_64.rpm + $ sudo rpm -i --nodeps grafana-3.1.0-1468321182.x86_64.rpm ## Install via YUM Repository diff --git a/docs/sources/installation/windows.md b/docs/sources/installation/windows.md index 858f8cfea2d..88c92d2ffed 100644 --- a/docs/sources/installation/windows.md +++ b/docs/sources/installation/windows.md @@ -10,7 +10,7 @@ page_keywords: grafana, installation, windows guide Description | Download ------------ | ------------- -Stable Zip package for Windows | [grafana.3.0.4.windows-x64.zip](https://grafanarel.s3.amazonaws.com/winbuilds/dist/grafana-3.0.4.windows-x64.zip) +Stable Zip package for Windows | [grafana.3.1.0.windows-x64.zip](https://grafanarel.s3.amazonaws.com/winbuilds/dist/grafana-3.1.0.windows-x64.zip) ## Configure diff --git a/latest.json b/latest.json index e18c220a7b0..f27001ccc41 100644 --- a/latest.json +++ b/latest.json @@ -1,4 +1,4 @@ { - "stable": "3.0.4", - "testing": "3.1.0-beta1" + "stable": "3.1.0", + "testing": "3.1.0" } diff --git a/pkg/api/dashboard.go b/pkg/api/dashboard.go index 797dfe635ed..1812226aa90 100644 --- a/pkg/api/dashboard.go +++ b/pkg/api/dashboard.go @@ -140,10 +140,10 @@ func PostDashboard(c *middleware.Context, cmd m.SaveDashboardCommand) Response { return Json(412, util.DynMap{"status": "version-mismatch", "message": err.Error()}) } if pluginErr, ok := err.(m.UpdatePluginDashboardError); ok { - message := "Dashboard is belongs to plugin " + pluginErr.PluginId + "." + message := "The dashboard belongs to plugin " + pluginErr.PluginId + "." // look up plugin name if pluginDef, exist := plugins.Plugins[pluginErr.PluginId]; exist { - message = "Dashboard is belongs to plugin " + pluginDef.Name + "." + message = "The dashboard belongs to plugin " + pluginDef.Name + "." } return Json(412, util.DynMap{"status": "plugin-dashboard", "message": message}) } diff --git a/public/app/core/components/search/search.html b/public/app/core/components/search/search.html index b66eeffdc36..e8e2179ce5c 100644 --- a/public/app/core/components/search/search.html +++ b/public/app/core/components/search/search.html @@ -72,8 +72,8 @@ Import - - Explore ready made dashboards on Grafana.net + + Find dashboards on
diff --git a/public/app/core/profiler.ts b/public/app/core/profiler.ts index 6505cd0405f..eb05672ec2c 100644 --- a/public/app/core/profiler.ts +++ b/public/app/core/profiler.ts @@ -101,7 +101,7 @@ export class Profiler { renderingCompleted(panelId, panelTimings) { // add render counter to root scope // used by phantomjs render.js to know when panel has rendered - this.$rootScope.panelsRendered = this.panelsRendered++; + this.$rootScope.panelsRendered = this.panelsRendered + 1; if (this.enabled) { panelTimings.renderEnd = new Date().getTime(); diff --git a/public/app/core/services/alert_srv.ts b/public/app/core/services/alert_srv.ts index f3a01d27fdb..9682afdb39e 100644 --- a/public/app/core/services/alert_srv.ts +++ b/public/app/core/services/alert_srv.ts @@ -85,6 +85,9 @@ export class AlertSrv { scope.confirmTextValid = payload.confirmText.toLowerCase() === value.toLowerCase(); }; + scope.onConfirm = payload.onConfirm; + scope.onAltAction = payload.onAltAction; + scope.altActionText = payload.altActionText; scope.icon = payload.icon || "fa-check"; scope.yesText = payload.yesText || "Yes"; scope.noText = payload.noText || "Cancel"; diff --git a/public/app/features/dashboard/dashnav/dashnav.ts b/public/app/features/dashboard/dashnav/dashnav.ts index 7b932f9810f..0f09ee5f5b9 100644 --- a/public/app/features/dashboard/dashnav/dashnav.ts +++ b/public/app/features/dashboard/dashnav/dashnav.ts @@ -141,9 +141,13 @@ export class DashNavCtrl { $scope.appEvent('confirm-modal', { title: 'Plugin Dashboard', text: err.data.message, - text2: 'Your changes will be overwritten next time you update the plugin. Use Save As to create custom version.', - yesText: "Save & Overwrite", + text2: 'Your changes will be lost when you update the plugin. Use Save As to create custom version.', + yesText: "Overwrite", icon: "fa-warning", + altActionText: "Save As", + onAltAction: function() { + $scope.saveDashboardAs(); + }, onConfirm: function() { $scope.saveDashboard({overwrite: true}); } diff --git a/public/app/features/dashboard/viewStateSrv.js b/public/app/features/dashboard/viewStateSrv.js index fe1277c59c0..b74b3a4e8b3 100644 --- a/public/app/features/dashboard/viewStateSrv.js +++ b/public/app/features/dashboard/viewStateSrv.js @@ -107,9 +107,12 @@ function (angular, _, $) { this.dashboard.meta.fullscreen = this.state.fullscreen; if (!this.state.fullscreen) { - this.state.panelId = null; this.state.fullscreen = null; this.state.edit = null; + // clear panel id unless in solo mode + if (!this.dashboard.meta.soloMode) { + this.state.panelId = null; + } } $location.search(this.serializeToUrl()); @@ -196,11 +199,13 @@ function (angular, _, $) { var self = this; self.panelScopes.push(panelScope); - if (self.state.panelId === panelScope.ctrl.panel.id) { - if (self.state.edit) { - panelScope.ctrl.editPanel(); - } else { - panelScope.ctrl.viewPanel(); + if (!self.dashboard.meta.soloMode) { + if (self.state.panelId === panelScope.ctrl.panel.id) { + if (self.state.edit) { + panelScope.ctrl.editPanel(); + } else { + panelScope.ctrl.viewPanel(); + } } } diff --git a/public/app/features/panel/solo_panel_ctrl.js b/public/app/features/panel/solo_panel_ctrl.js index 0eb271675ee..de299d7f9fe 100644 --- a/public/app/features/panel/solo_panel_ctrl.js +++ b/public/app/features/panel/solo_panel_ctrl.js @@ -17,15 +17,12 @@ function (angular, $) { var params = $location.search(); panelId = parseInt(params.panelId); - // add fullscreen param; - params.fullscreen = true; - $location.search(params); + $scope.onAppEvent("dashboard-initialized", $scope.initPanelScope); dashboardLoaderSrv.loadDashboard($routeParams.type, $routeParams.slug).then(function(result) { + result.meta.soloMode = true; $scope.initDashboard(result, $scope); }); - - $scope.onAppEvent("dashboard-initialized", $scope.initPanelScope); }; $scope.initPanelScope = function() { diff --git a/public/app/features/plugins/partials/plugin_list.html b/public/app/features/plugins/partials/plugin_list.html index f4ee2b57815..c276faae93a 100644 --- a/public/app/features/plugins/partials/plugin_list.html +++ b/public/app/features/plugins/partials/plugin_list.html @@ -5,9 +5,9 @@ -
+ + Find plugins on + + + + +
-
    -
  1. - -
    -
    - - {{plugin.type}} -
    -
    - Update available! -
    -
    -
    -
    - -
    -
    -
    {{plugin.name}}
    -
    By {{plugin.info.author.name}}
    -
    -
    -
    -
  2. -
-
+
    +
  1. + +
    +
    + + {{plugin.type}} +
    +
    + Update available! +
    +
    +
    +
    + +
    +
    +
    {{plugin.name}}
    +
    By {{plugin.info.author.name}}
    +
    +
    +
    +
  2. +
+
diff --git a/public/app/partials/confirm_modal.html b/public/app/partials/confirm_modal.html index a4a6ee0c9ea..85788911ff7 100644 --- a/public/app/partials/confirm_modal.html +++ b/public/app/partials/confirm_modal.html @@ -1,4 +1,4 @@ -