| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- define([
- 'angular',
- 'app/app',
- 'lodash',
- 'app/core/config',
- 'app/features/panel/panel_meta',
- ],
- function (angular, app, _, config, PanelMeta) {
- 'use strict';
- var module = angular.module('grafana.panels.dashlist', []);
- app.useModule(module);
- module.directive('grafanaPanelDashlist', function() {
- return {
- controller: 'DashListPanelCtrl',
- templateUrl: 'app/panels/dashlist/module.html',
- };
- });
- module.controller('DashListPanelCtrl', function($scope, panelSrv, backendSrv) {
- $scope.panelMeta = new PanelMeta({
- panelName: 'Dashboard list',
- editIcon: "fa fa-star",
- fullscreen: true,
- });
- $scope.panelMeta.addEditorTab('Options', 'app/panels/dashlist/editor.html');
- var defaults = {
- mode: 'starred',
- query: '',
- limit: 10,
- tags: []
- };
- $scope.modes = ['starred', 'search'];
- _.defaults($scope.panel, defaults);
- $scope.dashList = [];
- $scope.init = function() {
- panelSrv.init($scope);
- if ($scope.panel.tag) {
- $scope.panel.tags = [$scope.panel.tag];
- delete $scope.panel.tag;
- }
- if ($scope.isNewPanel()) {
- $scope.panel.title = "Starred Dashboards";
- }
- };
- $scope.refreshData = function() {
- var params = {
- limit: $scope.panel.limit
- };
- if ($scope.panel.mode === 'starred') {
- params.starred = "true";
- } else {
- params.query = $scope.panel.query;
- params.tag = $scope.panel.tags;
- }
- return backendSrv.search(params).then(function(result) {
- $scope.dashList = result;
- $scope.panelRenderingComplete();
- });
- };
- $scope.init();
- });
- });
|