grafana/public/app/features/dashlinks/module.js

78 lines
1.9 KiB
JavaScript
Raw Normal View History

define([
'angular',
'lodash',
],
function (angular, _) {
'use strict';
angular
.module('grafana.directives')
.directive('dashLinksEditor', function() {
return {
scope: {
dashboard: "="
},
restrict: 'E',
2015-05-05 13:33:06 -05:00
controller: 'DashLinkEditorCtrl',
templateUrl: 'app/features/dashlinks/editor.html',
link: function() {
}
};
2015-05-05 13:33:06 -05:00
}).directive('dashLink', function(linkSrv) {
return {
scope: {
2015-05-05 13:33:06 -05:00
link: "="
},
restrict: 'E',
controller: 'DashLinkCtrl',
templateUrl: 'app/features/dashlinks/module.html',
2015-05-05 13:33:06 -05:00
link: function(scope, elem) {
function update() {
var linkInfo = linkSrv.getPanelLinkAnchorInfo(scope.link);
elem.find("span").text(linkInfo.title);
elem.find("a").attr("href", linkInfo.href);
if (scope.link.type === 'dashboard') {
scope.tooltip = 'Go to dashboard';
}
2015-05-05 13:33:06 -05:00
}
update();
scope.$on('refresh', update);
}
};
2015-05-05 13:33:06 -05:00
})
.controller("DashLinkCtrl", function($scope) {
})
.controller('DashLinkEditorCtrl', function($scope, backendSrv) {
$scope.dashboard.links = $scope.dashboard.links || [];
$scope.addLink = function() {
$scope.dashboard.links.push({
type: 'dashboard',
name: 'Related dashboard'
});
};
$scope.searchDashboards = function(queryStr, callback) {
var query = {query: queryStr};
backendSrv.search(query).then(function(result) {
var dashboards = _.map(result.dashboards, function(dash) {
return dash.title;
});
callback(dashboards);
});
};
$scope.deleteLink = function(link) {
$scope.dashboard.links = _.without($scope.dashboard.links, link);
};
});
});