grafana/public/app/features/dashlinks/editor.ts

79 lines
1.5 KiB
TypeScript

import angular from 'angular';
import _ from 'lodash';
export var iconMap = {
'external link': 'fa-external-link',
dashboard: 'fa-th-large',
question: 'fa-question',
info: 'fa-info',
bolt: 'fa-bolt',
doc: 'fa-file-text-o',
cloud: 'fa-cloud',
};
export class DashLinkEditorCtrl {
dashboard: any;
iconMap: any;
mode: any;
link: any;
/** @ngInject */
constructor($scope, $rootScope) {
this.iconMap = iconMap;
this.dashboard.links = this.dashboard.links || [];
this.mode = 'list';
$scope.$on('$destroy', () => {
$rootScope.appEvent('dash-links-updated');
});
}
backToList() {
this.mode = 'list';
}
setupNew() {
this.mode = 'new';
this.link = { type: 'dashboards', icon: 'external link' };
}
addLink() {
this.dashboard.links.push(this.link);
this.mode = 'list';
}
editLink(link) {
this.link = link;
this.mode = 'edit';
console.log(this.link);
}
saveLink() {
this.backToList();
}
moveLink(index, dir) {
_.move(this.dashboard.links, index, index + dir);
}
deleteLink(index) {
this.dashboard.links.splice(index, 1);
this.dashboard.updateSubmenuVisibility();
}
}
function dashLinksEditor() {
return {
restrict: 'E',
controller: DashLinkEditorCtrl,
templateUrl: 'public/app/features/dashlinks/editor.html',
bindToController: true,
controllerAs: 'ctrl',
scope: {
dashboard: '=',
},
};
}
angular.module('grafana.directives').directive('dashLinksEditor', dashLinksEditor);