Files
grafana/public/app/features/dashboard/PanelModel.ts

80 lines
1.6 KiB
TypeScript
Raw Normal View History

import {Emitter} from 'app/core/core';
2017-10-10 09:34:14 +02:00
export interface GridPos {
2017-10-10 09:34:14 +02:00
x: number;
y: number;
w: number;
h: number;
}
const notPersistedProperties: {[str: string]: boolean} = {
"events": true,
"fullscreen": true,
"isEditing": true,
};
export class PanelModel {
id: number;
gridPos: GridPos;
2017-10-10 09:34:14 +02:00
type: string;
title: string;
alert?: any;
// non persisted
fullscreen: boolean;
isEditing: boolean;
events: Emitter;
scopedVars: any;
2017-10-10 17:57:53 +02:00
constructor(model) {
this.events = new Emitter();
// copy properties from persisted model
for (var property in model) {
this[property] = model[property];
}
}
getSaveModel() {
2017-10-10 17:57:53 +02:00
const model: any = {};
for (var property in this) {
if (notPersistedProperties[property] || !this.hasOwnProperty(property)) {
continue;
}
2017-10-10 17:57:53 +02:00
model[property] = this[property];
}
2017-10-10 17:57:53 +02:00
return model;
}
setViewMode(fullscreen: boolean, isEditing: boolean) {
this.fullscreen = fullscreen;
this.isEditing = isEditing;
2017-10-11 16:32:05 +02:00
this.events.emit('panel-size-changed');
}
updateGridPos(newPos: GridPos) {
let sizeChanged = false;
if (this.gridPos.w !== newPos.w || this.gridPos.h !== newPos.h) {
sizeChanged = true;
}
this.gridPos.x = newPos.x;
this.gridPos.y = newPos.y;
this.gridPos.w = newPos.w;
this.gridPos.h = newPos.h;
if (sizeChanged) {
console.log('PanelModel sizeChanged event and render events fired');
this.events.emit('panel-size-changed');
}
}
2017-10-11 21:36:03 +02:00
resizeDone() {
this.events.emit('panel-size-changed');
}
2017-10-10 09:34:14 +02:00
}