module.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. angular.module('kibana.hits', [])
  2. .controller('hits', function($scope, eventBus) {
  3. // Set and populate defaults
  4. var _d = {
  5. query : "*",
  6. group : "default",
  7. style : { "font-size": '36pt', "font-weight": "bold" },
  8. run_query : false
  9. }
  10. _.defaults($scope.panel,_d)
  11. $scope.init = function () {
  12. $scope.hits = 0;
  13. eventBus.register($scope,'time', function(event,time){
  14. if($scope.panel.run_query)
  15. set_time(time)
  16. });
  17. eventBus.register($scope,'query', function(event, query) {
  18. $scope.panel.query = _.isArray(query) ? query[0] : query;
  19. if($scope.panel.run_query)
  20. $scope.get_data();
  21. });
  22. eventBus.register($scope,'hits', function(event, hits) {
  23. $scope.hits = hits;
  24. })
  25. // Now that we're all setup, request the time from our group
  26. eventBus.broadcast($scope.$id,$scope.panel.group,'get_time')
  27. }
  28. $scope.get_data = function() {
  29. // Make sure we have everything for the request to complete
  30. if(_.isUndefined($scope.panel.index) || _.isUndefined($scope.time))
  31. return
  32. $scope.panel.loading = true;
  33. var request = $scope.ejs.Request().indices($scope.panel.index);
  34. var results = request
  35. .query(ejs.FilteredQuery(
  36. ejs.QueryStringQuery($scope.panel.query || '*'),
  37. ejs.RangeFilter($scope.time.field)
  38. .from($scope.time.from)
  39. .to($scope.time.to)
  40. )
  41. )
  42. .size(0)
  43. .doSearch();
  44. // Populate scope when we have results
  45. results.then(function(results) {
  46. $scope.panel.loading = false;
  47. if(_.isUndefined(results)) {
  48. $scope.panel.error = 'Your query was unsuccessful';
  49. return;
  50. }
  51. $scope.panel.error = false;
  52. $scope.hits = results.hits.total;
  53. });
  54. }
  55. function set_time(time) {
  56. $scope.time = time;
  57. $scope.panel.index = _.isUndefined(time.index) ? $scope.panel.index : time.index
  58. $scope.get_data();
  59. }
  60. })