mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
67 lines
1.5 KiB
TypeScript
67 lines
1.5 KiB
TypeScript
///<reference path="../../headers/common.d.ts" />
|
|
|
|
import _ from 'lodash';
|
|
import moment from 'moment';
|
|
import {coreModule} from 'app/core/core';
|
|
import {MetricsPanelCtrl} from 'app/plugins/sdk';
|
|
import {AnnotationEvent} from './event';
|
|
|
|
export class EventEditorCtrl {
|
|
panelCtrl: MetricsPanelCtrl;
|
|
event: AnnotationEvent;
|
|
timeRange: {from: number, to: number};
|
|
form: any;
|
|
close: any;
|
|
|
|
/** @ngInject **/
|
|
constructor(private annotationsSrv) {
|
|
this.event.panelId = this.panelCtrl.panel.id;
|
|
this.event.dashboardId = this.panelCtrl.dashboard.id;
|
|
}
|
|
|
|
save() {
|
|
if (!this.form.$valid) {
|
|
return;
|
|
}
|
|
|
|
let saveModel = _.cloneDeep(this.event);
|
|
saveModel.time = saveModel.time.valueOf();
|
|
saveModel.timeEnd = 0;
|
|
|
|
if (saveModel.isRegion) {
|
|
saveModel.timeEnd = saveModel.timeEnd.valueOf();
|
|
|
|
if (saveModel.timeEnd < saveModel.time) {
|
|
console.log('invalid time');
|
|
return;
|
|
}
|
|
}
|
|
|
|
this.annotationsSrv.saveAnnotationEvent(saveModel).then(() => {
|
|
this.panelCtrl.refresh();
|
|
this.close();
|
|
});
|
|
}
|
|
|
|
timeChanged() {
|
|
this.panelCtrl.render();
|
|
}
|
|
}
|
|
|
|
export function eventEditor() {
|
|
return {
|
|
restrict: 'E',
|
|
controller: EventEditorCtrl,
|
|
bindToController: true,
|
|
controllerAs: 'ctrl',
|
|
templateUrl: 'public/app/features/annotations/partials/event_editor.html',
|
|
scope: {
|
|
"panelCtrl": "=",
|
|
"event": "=",
|
|
"close": "&",
|
|
}
|
|
};
|
|
}
|
|
|
|
coreModule.directive('eventEditor', eventEditor);
|