history_srv.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import _ from 'lodash';
  2. import coreModule from 'app/core/core_module';
  3. import { DashboardModel } from '../dashboard_model';
  4. export interface HistoryListOpts {
  5. limit: number;
  6. start: number;
  7. }
  8. export interface RevisionsModel {
  9. id: number;
  10. checked: boolean;
  11. dashboardId: number;
  12. parentVersion: number;
  13. version: number;
  14. created: Date;
  15. createdBy: string;
  16. message: string;
  17. }
  18. export interface CalculateDiffOptions {
  19. new: DiffTarget;
  20. base: DiffTarget;
  21. diffType: string;
  22. }
  23. export interface DiffTarget {
  24. dashboardId: number;
  25. version: number;
  26. unsavedDashboard?: DashboardModel; // when doing diffs against unsaved dashboard version
  27. }
  28. export class HistorySrv {
  29. /** @ngInject */
  30. constructor(private backendSrv, private $q) {}
  31. getHistoryList(dashboard: DashboardModel, options: HistoryListOpts) {
  32. const id = dashboard && dashboard.id ? dashboard.id : void 0;
  33. return id ? this.backendSrv.get(`api/dashboards/id/${id}/versions`, options) : this.$q.when([]);
  34. }
  35. calculateDiff(options: CalculateDiffOptions) {
  36. return this.backendSrv.post('api/dashboards/calculate-diff', options);
  37. }
  38. restoreDashboard(dashboard: DashboardModel, version: number) {
  39. const id = dashboard && dashboard.id ? dashboard.id : void 0;
  40. const url = `api/dashboards/id/${id}/restore`;
  41. return id && _.isNumber(version) ? this.backendSrv.post(url, { version }) : this.$q.when({});
  42. }
  43. }
  44. coreModule.service('historySrv', HistorySrv);