grafana/public/app/core/core.ts

90 lines
3.0 KiB
TypeScript
Raw Normal View History

2015-12-16 05:21:13 -06:00
///<reference path="../headers/common.d.ts" />
2015-12-16 10:01:34 -06:00
///<reference path="./mod_defs.d.ts" />
2015-12-16 05:21:13 -06:00
2016-02-12 11:55:45 -06:00
import "./directives/dash_class";
import "./directives/confirm_click";
import "./directives/dash_edit_link";
import "./directives/dropdown_typeahead";
import "./directives/metric_segment";
import "./directives/misc";
import "./directives/ng_model_on_blur";
import "./directives/spectrum_picker";
import "./directives/tags";
import "./directives/value_select_dropdown";
import "./directives/plugin_component";
import "./directives/rebuild_on_change";
import "./directives/give_focus";
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 18:14:39 -05:00
import "./directives/diff-view";
import './jquery_extended';
import './partials';
import './components/jsontree/jsontree';
import './components/code_editor/code_editor';
2017-08-31 09:38:49 -05:00
import './utils/outline';
2015-10-30 09:04:27 -05:00
import {grafanaAppDirective} from './components/grafana_app';
import {sideMenuDirective} from './components/sidemenu/sidemenu';
import {searchDirective} from './components/search/search';
2016-03-01 14:01:41 -06:00
import {infoPopover} from './components/info_popover';
import {colorPicker} from './components/colorpicker';
import {navbarDirective} from './components/navbar/navbar';
import {arrayJoin} from './directives/array_join';
import {liveSrv} from './live/live_srv';
import {Emitter} from './utils/emitter';
import {layoutSelector} from './components/layout_selector/layout_selector';
import {switchDirective} from './components/switch';
2016-04-01 19:34:30 -05:00
import {dashboardSelector} from './components/dashboard_selector';
import {queryPartEditorDirective} from './components/query_part/query_part_editor';
2016-10-08 03:06:47 -05:00
import {formDropdownDirective} from './components/form_dropdown/form_dropdown';
2016-01-13 14:07:57 -06:00
import 'app/core/controllers/all';
import 'app/core/services/all';
2016-02-09 04:17:49 -06:00
import 'app/core/routes/routes';
import './filters/filters';
import coreModule from './core_module';
import appEvents from './app_events';
import colors from './utils/colors';
import {assignModelProperties} from './utils/model_utils';
import {contextSrv} from './services/context_srv';
import {KeybindingSrv} from './services/keybindingSrv';
2016-11-03 14:32:36 -05:00
import {helpModal} from './components/help/help';
2017-09-21 06:32:57 -05:00
import {PasswordStrength} from './components/PasswordStrength';
2017-05-19 09:00:01 -05:00
import {JsonExplorer} from './components/json_explorer/json_explorer';
import {NavModelSrv, NavModel} from './nav_model_srv';
2017-06-08 15:19:11 -05:00
import {userPicker} from './components/user_picker';
import {userGroupPicker} from './components/user_group_picker';
2017-08-15 04:51:47 -05:00
import {geminiScrollbar} from './components/scroll/scroll';
2017-08-16 04:28:52 -05:00
import {gfPageDirective} from './components/gf_page';
import {orgSwitcher} from './components/org_switcher';
2015-09-10 04:26:40 -05:00
2016-02-21 11:08:44 -06:00
export {
arrayJoin,
coreModule,
grafanaAppDirective,
sideMenuDirective,
navbarDirective,
searchDirective,
colorPicker,
liveSrv,
layoutSelector,
switchDirective,
infoPopover,
Emitter,
appEvents,
2016-04-01 19:34:30 -05:00
dashboardSelector,
queryPartEditorDirective,
colors,
2016-10-08 03:06:47 -05:00
formDropdownDirective,
assignModelProperties,
contextSrv,
KeybindingSrv,
2016-11-03 14:32:36 -05:00
helpModal,
2017-05-19 09:00:01 -05:00
JsonExplorer,
NavModelSrv,
NavModel,
2017-06-08 15:19:11 -05:00
userPicker,
userGroupPicker,
2017-08-15 04:51:47 -05:00
geminiScrollbar,
gfPageDirective,
orgSwitcher,
2017-09-21 06:32:57 -05:00
PasswordStrength,
2016-02-21 11:08:44 -06:00
};