HistorySrv.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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) {}
  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) : Promise.resolve([]);
  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 }) : Promise.resolve({});
  42. }
  43. }
  44. coreModule.service('historySrv', HistorySrv);