module.js 1.7 KB

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