diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9959767c087..cb4ab3ad1e8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,19 @@
-# 3.0.0 (unrelased master branch)
+# 3.0.0-beta2 (unreleased)
+
+### New Features (introduces since 3.0-beta1)
+* **Preferences**: Set home dashboard on user and org level, closes [#1678](https://github.com/grafana/grafana/issues/1678)
+* **Preferences**: Set timezone on user and org level, closes [#3214](https://github.com/grafana/grafana/issues/3214), [#1200](https://github.com/grafana/grafana/issues/1200)
+* **Preferences**: Set theme on user and org level, closes [#3214](https://github.com/grafana/grafana/issues/3214), [#1917](https://github.com/grafana/grafana/issues/1917)
+
+### Bug fixes
+* **Dashboard**: Fixed dashboard panel layout for mobile devices, fixes [#4529](https://github.com/grafana/grafana/issues/4529)
+* **Table Panel**: Fixed issue with table panel sort, fixes [#4532](https://github.com/grafana/grafana/issues/4532)
+* **Page Load Crash**: A Datasource with null jsonData would make Grafana fail to load page, fixes [#4536](https://github.com/grafana/grafana/issues/4536)
+* **Metrics tab**: Fix for missing datasource name in datasource selector, fixes [#4540](https://github.com/grafana/grafana/issues/4540)
+* **Graph**: Fix legend in table mode with series on right-y axis, fixes [#4551](https://github.com/grafana/grafana/issues/4551), [#1145](https://github.com/grafana/grafana/issues/1145)
+* **Password**: Password reset link/page did not work, fixes [#4542](https://github.com/grafana/grafana/issues/4542)
+
+# 3.0.0-beta1 (2016-03-31)
### New Features
* **Playlists**: Playlists can now be persisted and started from urls, closes [#3655](https://github.com/grafana/grafana/issues/3655)
diff --git a/Gruntfile.js b/Gruntfile.js
index 70defdeaf6d..9a0c69b96f9 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -18,6 +18,7 @@ module.exports = function (grunt) {
}
config.pkg.version = grunt.option('pkgVer') || config.pkg.version;
+ console.log('Version', config.pkg.version);
// load plugins
require('load-grunt-tasks')(grunt);
diff --git a/appveyor.yml b/appveyor.yml
index 83506312912..7d84bafc148 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: "4"
+ nodejs_version: "5"
GOPATH: c:\gopath
install:
diff --git a/build.go b/build.go
index 9a945a2b07d..93b9e6db087 100644
--- a/build.go
+++ b/build.go
@@ -73,8 +73,7 @@ func main() {
grunt("test")
case "package":
- //verifyGitRepoIsClean()
- grunt("release")
+ grunt("release", fmt.Sprintf("--pkgVer=%v-%v", linuxPackageVersion, linuxPackageIteration))
createLinuxPackages()
case "pkg-rpm":
@@ -100,12 +99,12 @@ func main() {
func makeLatestDistCopies() {
rpmIteration := "-1"
if linuxPackageIteration != "" {
- rpmIteration = "-" + linuxPackageIteration
+ rpmIteration = linuxPackageIteration
}
- runError("cp", "dist/grafana_"+version+"_amd64.deb", "dist/grafana_latest_amd64.deb")
- runError("cp", "dist/grafana-"+linuxPackageVersion+rpmIteration+".x86_64.rpm", "dist/grafana-latest-1.x86_64.rpm")
- runError("cp", "dist/grafana-"+version+".linux-x64.tar.gz", "dist/grafana-latest.linux-x64.tar.gz")
+ runError("cp", fmt.Sprintf("dist/grafana_%v-%v_amd64.deb", linuxPackageVersion, linuxPackageIteration), "dist/grafana_latest_amd64.deb")
+ runError("cp", fmt.Sprintf("dist/grafana-%v-%v.x86_64.rpm", linuxPackageVersion, rpmIteration), "dist/grafana-latest-1.x86_64.rpm")
+ runError("cp", fmt.Sprintf("dist/grafana-%v-%v.linux-x64.tar.gz", linuxPackageVersion, linuxPackageIteration), "dist/grafana-latest.linux-x64.tar.gz")
}
func readVersionFromPackageJson() {
@@ -133,6 +132,11 @@ func readVersionFromPackageJson() {
if len(parts) > 1 {
linuxPackageVersion = parts[0]
linuxPackageIteration = parts[1]
+ if linuxPackageIteration != "" {
+ // add timestamp to iteration
+ linuxPackageIteration = fmt.Sprintf("%s%v", linuxPackageIteration, time.Now().Unix())
+ }
+ log.Println(fmt.Sprintf("teration %v", linuxPackageIteration))
}
}
diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml
index 1ecefe85c68..46b0b964b59 100644
--- a/docs/mkdocs.yml
+++ b/docs/mkdocs.yml
@@ -86,13 +86,12 @@ pages:
- ['http_api/snapshot.md', 'API', 'Snapshot API']
- ['http_api/other.md', 'API', 'Other API']
-- ['plugins/overview.md', 'Plugins', 'Overview']
+- ['plugins/index.md', 'Plugins', 'Overview']
- ['plugins/installation.md', 'Plugins', 'Installation']
-- ['plugins/app.md', 'Plugins', 'App plugins']
-- ['plugins/datasources.md', 'Plugins', 'Datasource plugins']
-- ['plugins/panels.md', 'Plugins', 'Panel plugins']
-- ['plugins/development.md', 'Plugins', 'Plugin development']
-- ['plugins/plugin.json.md', 'Plugins', 'Plugin json']
+- ['plugins/development.md', 'Plugins', 'Development']
+- ['plugins/apps.md', 'Plugins', 'Apps']
+- ['plugins/datasources.md', 'Plugins', 'Datasources']
+- ['plugins/panels.md', 'Plugins', 'Panels']
- ['tutorials/index.md', 'Tutorials', 'Tutorials']
- ['tutorials/hubot_howto.md', 'Tutorials', 'How To integrate Hubot and Grafana']
diff --git a/docs/sources/installation/debian.md b/docs/sources/installation/debian.md
index b5c72f3182c..2d24e7a9c3f 100644
--- a/docs/sources/installation/debian.md
+++ b/docs/sources/installation/debian.md
@@ -10,14 +10,21 @@ page_keywords: grafana, installation, debian, ubuntu, guide
Description | Download
------------ | -------------
-.deb for Debian-based Linux | [grafana_2.6.0_amd64.deb](https://grafanarel.s3.amazonaws.com/builds/grafana_2.6.0_amd64.deb)
+Stable .deb for Debian-based Linux | [grafana_2.6.0_amd64.deb](https://grafanarel.s3.amazonaws.com/builds/grafana_2.6.0_amd64.deb)
+Beta .deb for Debian-based Linux | [grafana_3.0.0-beta11459429091_amd64.deb](https://grafanarel.s3.amazonaws.com/builds/grafana_3.0.0-beta11459429091_amd64.deb)
-## Install
+## Install Stable
$ wget https://grafanarel.s3.amazonaws.com/builds/grafana_2.6.0_amd64.deb
$ sudo apt-get install -y adduser libfontconfig
$ sudo dpkg -i grafana_2.6.0_amd64.deb
+## Install 3.0 Beta
+
+ $ wget https://grafanarel.s3.amazonaws.com/builds/grafana_3.0.0-beta11459429091_amd64.deb
+ $ sudo apt-get install -y adduser libfontconfig
+ $ sudo dpkg -i grafana_3.0.0-beta11459429091_amd64.deb
+
## APT Repository
Add the following line to your `/etc/apt/sources.list` file.
diff --git a/docs/sources/installation/rpm.md b/docs/sources/installation/rpm.md
index ec4f648e44b..5e8e746d0f7 100644
--- a/docs/sources/installation/rpm.md
+++ b/docs/sources/installation/rpm.md
@@ -10,9 +10,10 @@ page_keywords: grafana, installation, centos, fedora, opensuse, redhat, guide
Description | Download
------------ | -------------
-.RPM for CentOS / Fedora / OpenSuse / Redhat Linux | [grafana-2.6.0-1.x86_64.rpm](https://grafanarel.s3.amazonaws.com/builds/grafana-2.6.0-1.x86_64.rpm)
+Stable .RPM for CentOS / Fedora / OpenSuse / Redhat Linux | [grafana-2.6.0-1.x86_64.rpm](https://grafanarel.s3.amazonaws.com/builds/grafana-2.6.0-1.x86_64.rpm)
+Beta .RPM for CentOS / Fedor / OpenSuse / Redhat Linux | [grafana-3.0.0-beta11459429091.x86_64.rpm](https://grafanarel.s3.amazonaws.com/builds/grafana-3.0.0-beta11459429091.x86_64.rpm)
-## Install from package file
+## Install Stable Release from package file
You can install Grafana using Yum directly.
@@ -29,6 +30,24 @@ Or install manually using `rpm`.
$ sudo rpm -i --nodeps grafana-2.6.0-1.x86_64.rpm
+## Install Beta Release from package file
+
+You can install Grafana using Yum directly.
+
+ $ sudo yum install https://grafanarel.s3.amazonaws.com/builds/grafana-3.0.0-beta11459429091.x86_64.rpm
+
+Or install manually using `rpm`.
+
+#### On CentOS / Fedora / Redhat:
+
+ $ sudo yum install initscripts fontconfig
+ $ sudo rpm -Uvh grafana-3.0.0-beta11459429091.x86_64.rpm
+
+#### On OpenSuse:
+
+ $ sudo rpm -i --nodeps grafana-3.0.0-beta11459429091.x86_64.rpm
+
+
## Install via YUM Repository
Add the following to a new file at `/etc/yum.repos.d/grafana.repo`
diff --git a/docs/sources/installation/windows.md b/docs/sources/installation/windows.md
index 1bc2b5a2b92..9a1ccbd0a19 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
------------ | -------------
-Zip package for Windows | [grafana.2.5.0.windows-x64.zip](https://grafanarel.s3.amazonaws.com/winbuilds/dist/grafana-2.5.0.windows-x64.zip)
+Stable Zip package for Windows | [grafana.2.5.0.windows-x64.zip](https://grafanarel.s3.amazonaws.com/winbuilds/dist/grafana-2.5.0.windows-x64.zip)
## Configure
diff --git a/docs/sources/plugins/app.md b/docs/sources/plugins/app.md
deleted file mode 100644
index 250af25c57d..00000000000
--- a/docs/sources/plugins/app.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-page_title: App plugin
-page_description: App plugin for Grafana
-page_keywords: grafana, plugins, documentation
----
-
- > Our goal is not to have a very extensive documentation but rather have actual code that people can look at. An example implementation of an app can be found in this [example app repo](https://github.com/grafana/example-app)
-
-# Apps
-
-App plugins is a new kind of grafana plugin that can bundle datasource and panel plugins within one package. It also enable the plugin author to create custom pages within grafana. The custom pages enables the plugin author to include things like documentation, sign up forms or controlling other services using HTTP requests.
-
-Datasource and panel plugins will show up like normal plugins. The app pages will be available in the main menu.
-
-
-
-## Enabling app plugins
-After installing an app it have to be enabled before it show up as an datasource or panel. You can do that on the app page in the config tab.
-
-## README.md
-
-The readme file in the mounted folder will show up in the overview tab on the app page.
-
-## Module exports
-```javascript
-export {
- ExampleAppConfigCtrl as ConfigCtrl,
- StreamPageCtrl,
- LogsPageCtrl
-};
-```
-The only required export is the ConfigCtrl. Both StreamPageCtrl and LogsPageCtrl are custom pages defined in plugin.json
-
-## Custom pages
-Custom pages are defined in the plugin.json like this.
-```json
-"pages": [
- { "name": "Live stream", "component": "StreamPageCtrl", "role": "Editor"},
- { "name": "Log view", "component": "LogsPageCtrl", "role": "Viewer"}
-]
-```
-The component field have to match one of the components exported in the module.js in the root of the plugin.
-
-## Bundled plugins
-
-When Grafana starts it will scan all directories within an app plugin and load folders containing a plugin.json as an plugin.
diff --git a/docs/sources/plugins/apps.md b/docs/sources/plugins/apps.md
new file mode 100644
index 00000000000..74038a9feb9
--- /dev/null
+++ b/docs/sources/plugins/apps.md
@@ -0,0 +1,24 @@
+---
+page_title: App plugin
+page_description: App plugin for Grafana
+page_keywords: grafana, plugins, documentation
+---
+
+
+# Apps
+
+App plugins is a new kind of grafana plugin that can bundle datasource and panel plugins within one package. It also enable the plugin author to create custom pages within grafana. The custom pages enables the plugin author to include things like documentation, sign up forms or controlling other services using HTTP requests.
+
+Datasource and panel plugins will show up like normal plugins. The app pages will be available in the main menu.
+
+
+
+## Enabling app plugins
+After installing an app it have to be enabled before it show up as an datasource or panel. You can do that on the app page in the config tab.
+
+### Develop your own App
+
+> Our goal is not to have a very extensive documentation but rather have actual
+> code that people can look at. An example implementation of an app can be found
+> in this [example app repo](https://github.com/grafana/example-app)
+
diff --git a/docs/sources/plugins/datasources.md b/docs/sources/plugins/datasources.md
index c44cd842844..3732948d527 100644
--- a/docs/sources/plugins/datasources.md
+++ b/docs/sources/plugins/datasources.md
@@ -4,11 +4,18 @@ page_description: Datasource plugins for Grafana
page_keywords: grafana, plugins, documentation
---
- > Our goal is not to have a very extensive documentation but rather have actual code that people can look at. An example implementation of a datasource can be found in this [example datasource repo](https://github.com/grafana/simple-json-datasource)
# Datasources
-Datasource plugins enables people to develop plugins for any database that communicates over http. Its up to the plugin to transform the data into time series data so that any grafana panel can then show it.
+Datasource plugins enables people to develop plugins for any database that
+communicates over http. Its up to the plugin to transform the data into
+time series data so that any grafana panel can then show it.
+
+## Datasource development
+
+> Our goal is not to have a very extensive documentation but rather have actual
+> code that people can look at. An example implementation of a datasource can be
+> found in this [example datasource repo](https://github.com/grafana/simple-json-datasource)
To interact with the rest of grafana the plugins module file can export 5 different components.
@@ -19,11 +26,14 @@ To interact with the rest of grafana the plugins module file can export 5 differ
- AnnotationsQueryCtrl
## Plugin json
+
There are two datasource specific settings for the plugin.json
+
```javascript
"metrics": true,
"annotations": false,
```
+
These settings indicates what kind of data the plugin can deliver. At least one of them have to be true
## Datasource
diff --git a/docs/sources/plugins/developing_plugins.md b/docs/sources/plugins/development.md
similarity index 63%
rename from docs/sources/plugins/developing_plugins.md
rename to docs/sources/plugins/development.md
index 43a99956d55..e8b5c620732 100644
--- a/docs/sources/plugins/developing_plugins.md
+++ b/docs/sources/plugins/development.md
@@ -1,5 +1,5 @@
---
-page_title: Plugin development
+page_title: Plugin development guide
page_description: Plugin development for Grafana
page_keywords: grafana, plugins, documentation, development
---
@@ -11,7 +11,7 @@ From grafana 3.0 it's very easy to develop your own plugins and share them with
## Short version
1. [Setup grafana](https://github.com/grafana/grafana/blob/master/DEVELOPMENT.md)
-2. Clone an example plugin into ```data/plugins```
+2. Clone an example plugin into ```/var/lib/grafana/plugins``` or `data/plugins` (relative to grafana git repo if your running development version from source dir)
3. Code away!
## What languages?
@@ -26,20 +26,25 @@ All our example plugins have build scripted configured.
## module.(js|ts)
-This is the entry point for every plugin. This is the place where you should export your plugin implementation. Depending on what kind of plugin you are developing you will be expected to export different things. You can find whats expected for [datasource](http://docs.grafana.org/v3.0/plugins/datasources/), [panels](http://docs.grafana.org/v3.0/plugins/panels/) and [apps](http://docs.grafana.org/v3.0/plugins/app/)
-plugins in the documentation.
+This is the entry point for every plugin. This is the place where you should export
+your plugin implementation. Depending on what kind of plugin you are developing you
+will be expected to export different things. You can find what's expected for [datasource](./datasources.md), [panels](./panels.md)
+and [apps](./apps.md) plugins in the documentation.
## Start developing your plugin
There are two ways that you can start developing a Grafana plugin.
-1. Setup a Grafana development environment. [(described here)](https://github.com/grafana/grafana/blob/master/DEVELOPMENT.md) and place your plugin in the ```data/plugins``` folder.
-2. Install Grafana and place your plugin the plugins directory which is set in your [config file](http://docs.grafana.org/installation/configuration/)
+
+1. Setup a Grafana development environment. [(described here)](https://github.com/grafana/grafana/blob/master/DEVELOPMENT.md) and place your plugin in the ```data/plugins``` folder.
+2. Install Grafana and place your plugin in the plugins directory which is set in your [config file](../installation/configuration.md). By default this is `/var/lib/grafana/plugins` on Linux systems.
+3. Place your plugin directory anywhere you like and specify it grafana.ini.
We encourage people to setup the full Grafana environment so that you can get inspiration from the rest of grafana code base.
-When Grafana starts it will scan the plugin folders and mount every folder that contains a plugin.json file unless the folder contains a subfolder named dist. In that case grafana will mount the dist folder instead.
-This makes it possible to have both built and src content in the same plugin folder.
+When Grafana starts it will scan the plugin folders and mount every folder that contains a plugin.json file unless
+the folder contains a subfolder named dist. In that case grafana will mount the dist folder instead.
+This makes it possible to have both built and src content in the same plugin git repo.
-## Boilerplate
+## Examples
We currently have three different examples that you can fork/download to get started developing your grafana plugin.
- [simple-json-datasource](https://github.com/grafana/simple-json-datasource) (small datasource plugin for querying json data from backends)
diff --git a/docs/sources/plugins/index.md b/docs/sources/plugins/index.md
new file mode 100644
index 00000000000..156262a4ec1
--- /dev/null
+++ b/docs/sources/plugins/index.md
@@ -0,0 +1,21 @@
+---
+page_title: Plugin overview
+page_description: Plugins for Grafana
+page_keywords: grafana, plugins, documentation
+---
+
+# Plugins
+
+From Grafana 3.0 not only datasource plugins are supported but also panel plugins and apps.
+Having panels as plugins make it easy to create and add any kind of panel, to show your data
+or improve your favorite dashboards. Apps is something new in Grafana that enables
+bundling of datasources, panels, dashboards and Grafana pages into a cohesive experiance.
+
+Grafana already have a strong community of contributors and plugin developers.
+By making it easier to develop and install plugins we hope that the community
+can grow even stronger and develop new plugins that we would never think about.
+
+You can discover available plugins on [Grafana.net](http://grafana.net)
+
+
+
diff --git a/docs/sources/plugins/installation.md b/docs/sources/plugins/installation.md
index 7c60ccca7d2..0dada8b69a7 100644
--- a/docs/sources/plugins/installation.md
+++ b/docs/sources/plugins/installation.md
@@ -4,14 +4,12 @@ page_description: Plugin installation for Grafana
page_keywords: grafana, plugins, documentation
---
-# Plugins
-
-## Installing plugins
+# Installing plugins
The easiest way to install plugins is by using the CLI tool grafana-cli which is bundled with grafana. Before any modification take place after modifying plugins, grafana-server needs to be restarted.
### Grafana plugin directory
-On Linux systems the grafana-cli will assume that the grafana plugin directory is "/var/lib/grafana/plugins". It's possible to override the directory which grafana-cli will operate on by specifying the --path flag. On Windows systems this parameter have to be specified for every call.
+On Linux systems the grafana-cli will assume that the grafana plugin directory is `/var/lib/grafana/plugins`. It's possible to override the directory which grafana-cli will operate on by specifying the --path flag. On Windows systems this parameter have to be specified for every call.
### Grafana-cli commands
diff --git a/docs/sources/plugins/overview.md b/docs/sources/plugins/overview.md
deleted file mode 100644
index 6d0864ac8f5..00000000000
--- a/docs/sources/plugins/overview.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-page_title: Plugin overview
-page_description: Plugins for Grafana
-page_keywords: grafana, plugins, documentation
----
-
-# Plugins
-
-From Grafana 3.0 not only datasource plugins are supported but also panel plugins and apps. Having panels as plugins make it easy to create and add any kind of panel, to show your data or improve your favorite dashboards. Apps is something new in Grafana that enables bundling of datasources, panels that belongs together.
-
-Grafana already have a strong community of contributors and plugin developers. By making it easier to develop and install plugins we hope that the community can grow even stronger and develop new plugins that we would never think about.
-
diff --git a/docs/sources/plugins/panels.md b/docs/sources/plugins/panels.md
index ad9d5db66d8..7182c3182a3 100644
--- a/docs/sources/plugins/panels.md
+++ b/docs/sources/plugins/panels.md
@@ -4,26 +4,15 @@ page_description: Panel plugins for Grafana
page_keywords: grafana, plugins, documentation
---
- > Our goal is not to have a very extensive documentation but rather have actual code that people can look at. An example implementation of a datasource can be found in the grafana repo under /examples/panel-boilerplate-es5
# Panels
-To interact with the rest of grafana the panel plugin need to export a class in the module.js.
-This class have to inherit from sdk.PanelCtrl or sdk.MetricsPanelCtrl and be exported as PanelCtrl.
+Panels are the main bulding block of dashboards.
-```javascript
- return {
- PanelCtrl: BoilerPlatePanelCtrl
- };
-```
+## Panel development
-This class will be instantiated once for every panel of its kind in a dashboard and treated as an AngularJs controller.
+Examples
-## MetricsPanelCtrl or PanelCtrl
-
-MetricsPanelCtrl inherits from PanelCtrl and adds some common features for datasource usage. So if your Panel will be working with a datasource you should inherit from MetricsPanelCtrl. If don't need to access any datasource then you should inherit from PanelCtrl instead.
-
-## Implementing a MetricsPanelCtrl
-
-If you choose to inherit from MetricsPanelCtrl you should implement a function called refreshData that will take a datasource as in parameter when its time to get new data. Its recommended that the refreshData function calls the issueQueries in the base class but its not mandatory. An examples of such implementation can be found in our [example panel](https://github.com/grafana/grafana/blob/master/examples/panel-boilerplate-es5/module.js#L27-L38)
+- [clock-panel](https://github.com/grafana/clock-panel)
+- [singlestat-panel](https://github.com/grafana/grafana/blob/master/public/app/plugins/panel/singlestat/module.ts)
diff --git a/docs/sources/versions.html_fragment b/docs/sources/versions.html_fragment
index d699cc6b6ac..0d62ee1e461 100644
--- a/docs/sources/versions.html_fragment
+++ b/docs/sources/versions.html_fragment
@@ -1,3 +1,4 @@
+