import angular from "angular"; import _ from "lodash"; import $ from "jquery"; import coreModule from "app/core/core_module"; export class AnnotationsEditorCtrl { mode: any; datasources: any; annotations: any; currentAnnotation: any; currentDatasource: any; currentIsNew: any; annotationDefaults: any = { name: "", datasource: null, iconColor: "rgba(255, 96, 96, 1)", enable: true, showIn: 0, hide: false }; showOptions: any = [ { text: "All Panels", value: 0 }, { text: "Specific Panels", value: 1 } ]; /** @ngInject */ constructor($scope, private datasourceSrv) { $scope.ctrl = this; this.mode = "list"; this.datasources = datasourceSrv.getAnnotationSources(); this.annotations = $scope.dashboard.annotations.list; this.reset(); this.onColorChange = this.onColorChange.bind(this); } datasourceChanged() { return this.datasourceSrv .get(this.currentAnnotation.datasource) .then(ds => { this.currentDatasource = ds; }); } edit(annotation) { this.currentAnnotation = annotation; this.currentAnnotation.showIn = this.currentAnnotation.showIn || 0; this.currentIsNew = false; this.datasourceChanged(); this.mode = "edit"; $(".tooltip.in").remove(); } reset() { this.currentAnnotation = angular.copy(this.annotationDefaults); this.currentAnnotation.datasource = this.datasources[0].name; this.currentIsNew = true; this.datasourceChanged(); } update() { this.reset(); this.mode = "list"; } setupNew() { this.mode = "new"; this.reset(); } backToList() { this.mode = "list"; } add() { this.annotations.push(this.currentAnnotation); this.reset(); this.mode = "list"; } removeAnnotation(annotation) { var index = _.indexOf(this.annotations, annotation); this.annotations.splice(index, 1); } onColorChange(newColor) { this.currentAnnotation.iconColor = newColor; } } coreModule.controller("AnnotationsEditorCtrl", AnnotationsEditorCtrl);