module.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. define([
  2. 'angular',
  3. 'app',
  4. 'lodash',
  5. 'config',
  6. '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: 'Dash 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. tag: '',
  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.isNewPanel()) {
  37. $scope.panel.title = "Starred Dashboards";
  38. }
  39. };
  40. $scope.refreshData = function() {
  41. var params = {
  42. limit: $scope.panel.limit
  43. };
  44. if ($scope.panel.mode === 'starred') {
  45. params.starred = "true";
  46. } else {
  47. params.query = $scope.panel.query;
  48. params.tag = $scope.panel.tag;
  49. }
  50. return backendSrv.search(params).then(function(result) {
  51. $scope.dashList = result.dashboards;
  52. });
  53. };
  54. $scope.init();
  55. });
  56. });