Commit Graph

63 Commits

Author SHA1 Message Date
Torkel Ödegaard
cafed8ce8f Merge branch 'master' into develop 2017-12-12 13:19:07 +01:00
bergquist
16f072b320 dashboards as cfg: move saving logic for dashboards into its own service 2017-12-07 15:27:01 +01:00
bergquist
d69b63cbc0 dashboards as cfg: read first cfg version 2017-12-07 15:27:01 +01:00
Marcus Efraimsson
a335150ad1 dashfolders: Add a helper for creating a dashboard folder 2017-11-28 12:51:40 +01:00
Torkel Ödegaard
fc69d59cae dashboard folder search fix 2017-06-23 16:00:26 -04:00
Torkel Ödegaard
d6341162cb refactoring dashboad folder acl checks 2017-06-19 11:54:37 -04:00
Torkel Ödegaard
cbbbccf12a refactoring dashoard folder guardian 2017-06-17 18:24:38 -04:00
Daniel Lee
dd02bf7c9b WIP: adds API check to stop folders being included in folders 2017-06-16 02:45:47 +02:00
Daniel Lee
9f79b9b8c5 WIP: fix go fmt error 2017-06-12 15:49:09 +02:00
Daniel Lee
97c13b77bf WIP: Add or update Dashboard ACL
SQL Integration Tests for the guardian class too.
2017-06-12 15:49:09 +02:00
Daniel Lee
3785894b40 WIP: guardian service for search
Removes restricted dashboards from search result.
2017-06-12 15:49:09 +02:00
Daniel Lee
1248728d7f WIP: rough prototype of dashboard folders
Breaks some stuff like selected dash in the search result.
In dashboard search, if the user is not searching then the result is
returned as a tree structure. No ACL's or user group ux yet.
2017-06-12 15:49:09 +02:00
Torkel Ödegaard
cabbfe9adc refactoring: moved dashboard history item formating (message) and fixed dashboard history migration issue, and removed from frontend tests that where no longer needed 2017-06-05 22:59:04 +02:00
Torkel Ödegaard
c87418d060 refactoring: Dashboard history restore operation is now reusing existing
operations instead of duplicating a bunch of get & save logic.
2017-06-05 17:45:27 +02:00
Torkel Ödegaard
e18007153d refactoring: Renamed dashboard version queries that wrongly had Command suffix, added missing OrgId to dashboard history commands and queries 2017-06-05 16:34:32 +02:00
Ben Tranter
b6e46c9eb8 History and Version Control for Dashboard Updates
A simple version control system for dashboards. Closes #1504.

Goals

1. To create a new dashboard version every time a dashboard is saved.
2. To allow users to view all versions of a given dashboard.
3. To allow users to rollback to a previous version of a dashboard.
4. To allow users to compare two versions of a dashboard.

Usage

Navigate to a dashboard, and click the settings cog. From there, click
the "Changelog" button to be brought to the Changelog view. In this
view, a table containing each version of a dashboard can be seen. Each
entry in the table represents a dashboard version. A selectable
checkbox, the version number, date created, name of the user who created
that version, and commit message is shown in the table, along with a
button that allows a user to restore to a previous version of that
dashboard. If a user wants to restore to a previous version of their
dashboard, they can do so by clicking the previously mentioned button.
If a user wants to compare two different versions of a dashboard, they
can do so by clicking the checkbox of two different dashboard versions,
then clicking the "Compare versions" button located below the dashboard.
From there, the user is brought to a view showing a summary of the
dashboard differences. Each summarized change contains a link that can
be clicked to take the user a JSON diff highlighting the changes line by
line.

Overview of Changes

Backend Changes

- A `dashboard_version` table was created to store each dashboard
  version, along with a dashboard version model and structs to represent
  the queries and commands necessary for the dashboard version API
  methods.
- API endpoints were created to support working with dashboard
  versions.
- Methods were added to create, update, read, and destroy dashboard
  versions in the database.
  - Logic was added to compute the diff between two versions, and
  display it to the user.
  - The dashboard migration logic was updated to save a "Version
  1" of each existing dashboard in the database.

Frontend Changes

- New views
- Methods to pull JSON and HTML from endpoints

New API Endpoints

Each endpoint requires the authorization header to be sent in
the format,

```
Authorization: Bearer <jwt>
```

where `<jwt>` is a JSON web token obtained from the Grafana
admin panel.

`GET "/api/dashboards/db/:dashboardId/versions?orderBy=<string>&limit=<int>&start=<int>"`

Get all dashboard versions for the given dashboard ID. Accepts
three URL parameters:

- `orderBy` String to order the results by. Possible values
  are `version`, `created`, `created_by`, `message`. Default
  is `versions`. Ordering is always in descending order.
- `limit` Maximum number of results to return
- `start` Position in results to start from

`GET "/api/dashboards/db/:dashboardId/versions/:id"`

Get an individual dashboard version by ID, for the given
dashboard ID.

`POST "/api/dashboards/db/:dashboardId/restore"`

Restore to the given dashboard version. Post body is of
content-type `application/json`, and must contain.

```json
{
  "dashboardId": <int>,
  "version": <int>
}
```

`GET "/api/dashboards/db/:dashboardId/compare/:versionA...:versionB"`

Compare two dashboard versions by ID for the given
dashboard ID, returning a JSON delta formatted
representation of the diff. The URL format follows
what GitHub does. For example, visiting
[/api/dashboards/db/18/compare/22...33](http://ec2-54-80-139-44.compute-1.amazonaws.com:3000/api/dashboards/db/18/compare/22...33)
will return the diff between versions 22 and 33 for
the dashboard ID 18.

Dependencies Added

- The Go package [gojsondiff](https://github.com/yudai/gojsondiff)
  was added and vendored.
2017-05-24 19:14:39 -04:00
Pavlos Daoglou
7f7f080ad8 [5443] Check if title is empty before save a new dashboard 2016-11-29 12:25:20 +02:00
Torkel Ödegaard
68a8d9bc91 feat(apps): more work on plugin dashboard sync 2016-07-08 13:41:46 +02:00
Torkel Ödegaard
85be7dd902 feat(apps): progress on app dashboard sync 2016-07-08 12:26:51 +02:00
Torkel Ödegaard
d44325affd feat(apps): progress on app dashboard imports 2016-07-08 09:35:06 +02:00
Torkel Ödegaard
0d4c76a029 feat(import): save gnetId for dashbards imported from grafana.net 2016-05-27 16:42:32 +02:00
utkarshcmu
66621d762e Added getDashboardSlugById api 2016-03-17 01:01:58 -07:00
Torkel Ödegaard
3fb0b71822 refactor(): refactoring json usage 2016-03-12 00:13:06 +01:00
Torkel Ödegaard
60adcedebe feat(plugins): worked on plugin dashboard import handling 2016-03-10 19:57:48 +01:00
utkarshcmu
338afc80d5 Merge branch 'master' of https://github.com/grafana/grafana into metadata 2016-02-01 10:32:36 -08:00
bergquist
d27bb4d3fb style(playlist): move dashboard access to dashboard.go 2016-01-29 01:41:23 +01:00
utkarshcmu
58121d89fc Updated http_api docs 2016-01-27 22:02:33 -08:00
utkarshcmu
753fd164d7 Added createdBy in metadata ui and dashboard table 2016-01-27 17:11:21 -08:00
utkarshcmu
cb5c1bd24d Removed created_by and fixed gofmt 2015-12-18 02:30:20 -08:00
utkarshcmu
af371249f9 Successfully displayed userdId in UI 2015-12-18 01:52:05 -08:00
utkarshcmu
e0ffcda32e Added UI , DB settings 2015-12-18 00:20:23 -08:00
utkarshcmu
1b7f4f31ca Tired of gofmt 2015-11-20 04:52:50 -08:00
utkarshcmu
ca01604b43 Added statements in constructor 2015-11-20 04:37:24 -08:00
utkarshcmu
93f9a0c39c Fixed created & updated columns in dashboard table 2015-11-20 03:10:24 -08:00
Dieter Plaetinck
66ba19b7ba clearer errors
"Not found" should only be for http path/method not found (404)
if it's about specific resources, we should be explicit for clarity
2015-07-08 08:55:31 +02:00
Torkel Ödegaard
bae1e2f0c1 Fix for validating tags in dashboard json in backend, Fixes #2152 2015-06-12 09:04:10 +02:00
Torkel Ödegaard
7ce31bfaa0 changed dependency for gosimple/slug, they had finally removed the gopkgs dependency, Fixes #2153 2015-06-12 08:53:20 +02:00
Torkel Ödegaard
448a8b8d1c Major refactorings around searching, moved to seperate package, trying to move stuff out of models package, extend search support searching different types of entities and different types of dashboards, #960 2015-05-13 13:36:24 +02:00
Torkel Ödegaard
187834b17c Trying to get dashboard loading and dashboard meta flags like canSave, canStar more managable 2015-05-13 09:58:45 +02:00
Torkel Ödegaard
b3be51f17f Lots of work on search and dashboard loading, trying to generalize concepts and code, #960 2015-05-12 14:11:30 +02:00
Torkel Ödegaard
a40299b4dc Progress on json file index and search #960 2015-05-12 12:20:03 +02:00
Torkel Ödegaard
73ee8a5985 HTTP API: fix for POST /api/dashboards/db returned 200 ok when dashboard was not found, Fixes #1929 2015-05-04 07:46:53 +02:00
Torkel Ödegaard
4fd2c0570c Replaced slug dependency with one that did not use gopkgs.com 2015-04-24 15:46:16 +02:00
Torkel Ödegaard
942e8fdba8 Support for unicode / international characters in dashboard title (improved slugify), Fixes #1734, Fixes #827 2015-04-15 12:36:02 +02:00
Torkel Ödegaard
94c3a07115 Fixed small issue when using 'Save As', dashboard version was not reset 2015-03-19 10:32:47 -04:00
Torkel Ödegaard
04d25dc58a Dashboard: When saving a dashboard and another user has made changes inbetween, the user is promted with a warning if he really wants to overwrite the other's changes, Closes #718 2015-03-02 22:24:01 +01:00
Torkel Ödegaard
26e4809e2e Big Backend Refatoring: Renamed Account -> Org 2015-02-23 20:07:49 +01:00
Torkel Ödegaard
f8a10fa7af Updated account and profile pages, very temporary solution, do not like it at all 2015-02-06 08:21:00 +01:00
Torkel Ödegaard
42a5aefb23 Worked on home dashboard 2015-02-03 15:04:35 +01:00
Torkel Ödegaard
d562dcd90c Default datasource and event system test 2015-01-09 11:01:37 +01:00