HistorySrv.ts 1.5 KB

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