PanelModel.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import {Emitter} from 'app/core/core';
  2. export interface GridPos {
  3. x: number;
  4. y: number;
  5. w: number;
  6. h: number;
  7. }
  8. const notPersistedProperties: {[str: string]: boolean} = {
  9. "events": true,
  10. };
  11. export class PanelModel {
  12. id: number;
  13. gridPos: GridPos;
  14. type: string;
  15. title: string;
  16. events: Emitter;
  17. constructor(model) {
  18. this.events = new Emitter();
  19. // copy properties from persisted model
  20. for (var property in model) {
  21. this[property] = model[property];
  22. }
  23. }
  24. getSaveModel() {
  25. const model: any = {};
  26. for (var property in this) {
  27. if (notPersistedProperties[property] || !this.hasOwnProperty(property)) {
  28. continue;
  29. }
  30. model[property] = this[property];
  31. }
  32. return model;
  33. }
  34. updateGridPos(newPos: GridPos) {
  35. let sizeChanged = false;
  36. if (this.gridPos.w !== newPos.w || this.gridPos.h !== newPos.h) {
  37. sizeChanged = true;
  38. }
  39. this.gridPos.x = newPos.x;
  40. this.gridPos.y = newPos.y;
  41. this.gridPos.w = newPos.w;
  42. this.gridPos.h = newPos.h;
  43. if (sizeChanged) {
  44. console.log('PanelModel sizeChanged event and render events fired');
  45. this.events.emit('panel-size-changed');
  46. }
  47. }
  48. }