module.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. define([
  2. 'angular',
  3. 'app/app',
  4. 'lodash',
  5. 'config',
  6. 'app/components/panelmeta',
  7. ],
  8. function (angular, app, _, config, PanelMeta) {
  9. 'use strict';
  10. var module = angular.module('grafana.panels.dashlist', []);
  11. app.useModule(module);
  12. module.directive('grafanaPanelDashlist', function() {
  13. return {
  14. controller: 'DashListPanelCtrl',
  15. templateUrl: 'app/panels/dashlist/module.html',
  16. };
  17. });
  18. module.controller('DashListPanelCtrl', function($scope, panelSrv, backendSrv) {
  19. $scope.panelMeta = new PanelMeta({
  20. panelName: 'Dashboard list',
  21. editIcon: "fa fa-star",
  22. fullscreen: true,
  23. });
  24. $scope.panelMeta.addEditorTab('Options', 'app/panels/dashlist/editor.html');
  25. var defaults = {
  26. mode: 'starred',
  27. query: '',
  28. limit: 10,
  29. tags: []
  30. };
  31. $scope.modes = ['starred', 'search'];
  32. _.defaults($scope.panel, defaults);
  33. $scope.dashList = [];
  34. $scope.init = function() {
  35. panelSrv.init($scope);
  36. if ($scope.panel.tag) {
  37. $scope.panel.tags = [$scope.panel.tag];
  38. }
  39. if ($scope.isNewPanel()) {
  40. $scope.panel.title = "Starred Dashboards";
  41. }
  42. };
  43. $scope.refreshData = function() {
  44. var params = {
  45. limit: $scope.panel.limit
  46. };
  47. if ($scope.panel.mode === 'starred') {
  48. params.starred = "true";
  49. } else {
  50. params.query = $scope.panel.query;
  51. params.tag = $scope.panel.tags;
  52. }
  53. return backendSrv.search(params).then(function(result) {
  54. $scope.dashList = result;
  55. $scope.panelRenderingComplete();
  56. });
  57. };
  58. $scope.init();
  59. });
  60. });