soloPanelCtrl.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. define([
  2. 'angular',
  3. 'jquery',
  4. ],
  5. function (angular, $) {
  6. "use strict";
  7. var module = angular.module('grafana.routes');
  8. module.controller('SoloPanelCtrl',
  9. function(
  10. $scope,
  11. backendSrv,
  12. $routeParams,
  13. dashboardSrv,
  14. timeSrv,
  15. $location,
  16. templateValuesSrv,
  17. contextSrv) {
  18. var panelId;
  19. $scope.init = function() {
  20. contextSrv.sidemenu = false;
  21. var params = $location.search();
  22. panelId = parseInt(params.panelId);
  23. backendSrv.getDashboard($routeParams.slug)
  24. .then(function(dashboard) {
  25. $scope.initPanelScope(dashboard);
  26. }).then(null, function(err) {
  27. $scope.appEvent('alert-error', ['Load panel error', err.message]);
  28. });
  29. };
  30. $scope.initPanelScope = function(dashboard) {
  31. $scope.dashboard = dashboardSrv.create(dashboard.model);
  32. $scope.row = {
  33. height: ($(window).height() - 10) + 'px',
  34. };
  35. $scope.test = "Hej";
  36. $scope.$index = 0;
  37. $scope.panel = $scope.getPanelById(panelId);
  38. if (!$scope.panel) {
  39. $scope.appEvent('alert-error', ['Panel not found', '']);
  40. return;
  41. }
  42. $scope.panel.span = 12;
  43. $scope.dashboardViewState = { registerPanel: function() { }, state: {}};
  44. timeSrv.init($scope.dashboard);
  45. templateValuesSrv.init($scope.dashboard, $scope.dashboardViewState);
  46. };
  47. $scope.getPanelById = function(id) {
  48. var rows = $scope.dashboard.rows;
  49. for (var i = 0; i < rows.length; i++) {
  50. var row = rows[i];
  51. for (var j = 0; j < row.panels.length; j++) {
  52. var panel = row.panels[j];
  53. if (panel.id === id) {
  54. return panel;
  55. }
  56. }
  57. }
  58. return null;
  59. };
  60. if (!$scope.skipAutoInit) {
  61. $scope.init();
  62. }
  63. });
  64. });