| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import angular from 'angular';
- import _ from 'lodash';
- import { DashboardModel } from 'app/features/dashboard/state';
- export let 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 DashLinksEditorCtrl {
- dashboard: DashboardModel;
- iconMap: any;
- mode: any;
- link: any;
- emptyListCta = {
- title: 'There are no dashboard links added yet',
- buttonIcon: 'gicon gicon-link',
- buttonTitle: 'Add Dashboard Link',
- infoBox: {
- __html: `<p>
- Dashboard Links allow you to place links to other dashboards and web sites directly in below the dashboard
- header.
- </p>`,
- },
- infoBoxTitle: 'What are Dashboard Links?',
- };
- /** @ngInject */
- constructor($scope: any, $rootScope: any) {
- 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';
- this.dashboard.updateSubmenuVisibility();
- }
- editLink(link: any) {
- this.link = link;
- this.mode = 'edit';
- console.log(this.link);
- }
- saveLink() {
- this.backToList();
- }
- moveLink(index: string | number, dir: string | number) {
- // @ts-ignore
- _.move(this.dashboard.links, index, index + dir);
- }
- deleteLink(index: number) {
- this.dashboard.links.splice(index, 1);
- this.dashboard.updateSubmenuVisibility();
- }
- }
- function dashLinksEditor() {
- return {
- restrict: 'E',
- controller: DashLinksEditorCtrl,
- templateUrl: 'public/app/features/dashboard/components/DashLinks/editor.html',
- bindToController: true,
- controllerAs: 'ctrl',
- scope: {
- dashboard: '=',
- },
- };
- }
- angular.module('grafana.directives').directive('dashLinksEditor', dashLinksEditor);
|