kibana-sinatra 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/kibana-sinatra.gemspec +24 -0
- data/lib/kibana/assets/app/app.js +140 -0
- data/lib/kibana/assets/app/components/extend-jquery.js +46 -0
- data/lib/kibana/assets/app/components/kbn.js +332 -0
- data/lib/kibana/assets/app/components/require.config.js +90 -0
- data/lib/kibana/assets/app/components/settings.js +27 -0
- data/lib/kibana/assets/app/components/underscore.extended.js +32 -0
- data/lib/kibana/assets/app/controllers/all.js +5 -0
- data/lib/kibana/assets/app/controllers/dash.js +91 -0
- data/lib/kibana/assets/app/controllers/dashLoader.js +123 -0
- data/lib/kibana/assets/app/controllers/row.js +76 -0
- data/lib/kibana/assets/app/dashboards/blank.json +42 -0
- data/lib/kibana/assets/app/dashboards/default.json +89 -0
- data/lib/kibana/assets/app/dashboards/guided.json +274 -0
- data/lib/kibana/assets/app/dashboards/logstash.js +181 -0
- data/lib/kibana/assets/app/dashboards/logstash.json +222 -0
- data/lib/kibana/assets/app/dashboards/noted.json +202 -0
- data/lib/kibana/assets/app/directives/addPanel.js +30 -0
- data/lib/kibana/assets/app/directives/all.js +10 -0
- data/lib/kibana/assets/app/directives/arrayJoin.js +34 -0
- data/lib/kibana/assets/app/directives/confirmClick.js +26 -0
- data/lib/kibana/assets/app/directives/dashUpload.js +37 -0
- data/lib/kibana/assets/app/directives/kibanaPanel.js +103 -0
- data/lib/kibana/assets/app/directives/ngBlur.js +20 -0
- data/lib/kibana/assets/app/directives/ngModelOnBlur.js +25 -0
- data/lib/kibana/assets/app/directives/tip.js +20 -0
- data/lib/kibana/assets/app/filters/all.js +110 -0
- data/lib/kibana/assets/app/panels/bettermap/editor.html +17 -0
- data/lib/kibana/assets/app/panels/bettermap/leaflet/images/layers-2x.png +0 -0
- data/lib/kibana/assets/app/panels/bettermap/leaflet/images/layers.png +0 -0
- data/lib/kibana/assets/app/panels/bettermap/leaflet/images/marker-icon-2x.png +0 -0
- data/lib/kibana/assets/app/panels/bettermap/leaflet/images/marker-icon.png +0 -0
- data/lib/kibana/assets/app/panels/bettermap/leaflet/images/marker-shadow.png +0 -0
- data/lib/kibana/assets/app/panels/bettermap/leaflet/leaflet-src.js +8724 -0
- data/lib/kibana/assets/app/panels/bettermap/leaflet/leaflet.css +463 -0
- data/lib/kibana/assets/app/panels/bettermap/leaflet/leaflet.ie.css +51 -0
- data/lib/kibana/assets/app/panels/bettermap/leaflet/leaflet.js +8 -0
- data/lib/kibana/assets/app/panels/bettermap/leaflet/plugins.css +75 -0
- data/lib/kibana/assets/app/panels/bettermap/leaflet/plugins.js +16 -0
- data/lib/kibana/assets/app/panels/bettermap/module.css +4 -0
- data/lib/kibana/assets/app/panels/bettermap/module.html +6 -0
- data/lib/kibana/assets/app/panels/bettermap/module.js +232 -0
- data/lib/kibana/assets/app/panels/column/editor.html +36 -0
- data/lib/kibana/assets/app/panels/column/module.html +16 -0
- data/lib/kibana/assets/app/panels/column/module.js +105 -0
- data/lib/kibana/assets/app/panels/column/panelgeneral.html +11 -0
- data/lib/kibana/assets/app/panels/dashcontrol/editor.html +44 -0
- data/lib/kibana/assets/app/panels/dashcontrol/load.html +40 -0
- data/lib/kibana/assets/app/panels/dashcontrol/module.html +6 -0
- data/lib/kibana/assets/app/panels/dashcontrol/module.js +198 -0
- data/lib/kibana/assets/app/panels/dashcontrol/save.html +30 -0
- data/lib/kibana/assets/app/panels/dashcontrol/share.html +11 -0
- data/lib/kibana/assets/app/panels/derivequeries/editor.html +23 -0
- data/lib/kibana/assets/app/panels/derivequeries/module.html +33 -0
- data/lib/kibana/assets/app/panels/derivequeries/module.js +160 -0
- data/lib/kibana/assets/app/panels/fields/editor.html +10 -0
- data/lib/kibana/assets/app/panels/fields/micropanel.html +25 -0
- data/lib/kibana/assets/app/panels/fields/module.html +3 -0
- data/lib/kibana/assets/app/panels/fields/module.js +37 -0
- data/lib/kibana/assets/app/panels/filtering/editor.html +7 -0
- data/lib/kibana/assets/app/panels/filtering/meta.html +15 -0
- data/lib/kibana/assets/app/panels/filtering/module.html +78 -0
- data/lib/kibana/assets/app/panels/filtering/module.js +66 -0
- data/lib/kibana/assets/app/panels/histogram/editor.html +74 -0
- data/lib/kibana/assets/app/panels/histogram/interval.js +57 -0
- data/lib/kibana/assets/app/panels/histogram/module.html +91 -0
- data/lib/kibana/assets/app/panels/histogram/module.js +511 -0
- data/lib/kibana/assets/app/panels/histogram/timeSeries.js +179 -0
- data/lib/kibana/assets/app/panels/hits/editor.html +29 -0
- data/lib/kibana/assets/app/panels/hits/module.html +44 -0
- data/lib/kibana/assets/app/panels/hits/module.js +270 -0
- data/lib/kibana/assets/app/panels/map/editor.html +15 -0
- data/lib/kibana/assets/app/panels/map/lib/jquery.jvectormap.min.js +8 -0
- data/lib/kibana/assets/app/panels/map/lib/map.europe.js +1 -0
- data/lib/kibana/assets/app/panels/map/lib/map.usa.js +1 -0
- data/lib/kibana/assets/app/panels/map/lib/map.world.js +1 -0
- data/lib/kibana/assets/app/panels/map/module.html +63 -0
- data/lib/kibana/assets/app/panels/map/module.js +185 -0
- data/lib/kibana/assets/app/panels/pie/editor.html +49 -0
- data/lib/kibana/assets/app/panels/pie/module.html +12 -0
- data/lib/kibana/assets/app/panels/pie/module.js +297 -0
- data/lib/kibana/assets/app/panels/query/editor.html +7 -0
- data/lib/kibana/assets/app/panels/query/meta.html +21 -0
- data/lib/kibana/assets/app/panels/query/module.html +25 -0
- data/lib/kibana/assets/app/panels/query/module.js +69 -0
- data/lib/kibana/assets/app/panels/query/query.css +39 -0
- data/lib/kibana/assets/app/panels/table/editor.html +48 -0
- data/lib/kibana/assets/app/panels/table/micropanel.html +44 -0
- data/lib/kibana/assets/app/panels/table/module.html +104 -0
- data/lib/kibana/assets/app/panels/table/module.js +389 -0
- data/lib/kibana/assets/app/panels/table/pagination.html +27 -0
- data/lib/kibana/assets/app/panels/terms/editor.html +51 -0
- data/lib/kibana/assets/app/panels/terms/module.html +55 -0
- data/lib/kibana/assets/app/panels/terms/module.js +307 -0
- data/lib/kibana/assets/app/panels/text/editor.html +16 -0
- data/lib/kibana/assets/app/panels/text/lib/showdown.js +1454 -0
- data/lib/kibana/assets/app/panels/text/module.html +10 -0
- data/lib/kibana/assets/app/panels/text/module.js +85 -0
- data/lib/kibana/assets/app/panels/timepicker/editor.html +34 -0
- data/lib/kibana/assets/app/panels/timepicker/module.html +73 -0
- data/lib/kibana/assets/app/panels/timepicker/module.js +268 -0
- data/lib/kibana/assets/app/panels/timepicker/refreshctrl.html +5 -0
- data/lib/kibana/assets/app/panels/trends/editor.html +20 -0
- data/lib/kibana/assets/app/panels/trends/module.html +11 -0
- data/lib/kibana/assets/app/panels/trends/module.js +232 -0
- data/lib/kibana/assets/app/partials/dashLoader.html +78 -0
- data/lib/kibana/assets/app/partials/dashLoaderShare.html +11 -0
- data/lib/kibana/assets/app/partials/dashboard.html +77 -0
- data/lib/kibana/assets/app/partials/dasheditor.html +151 -0
- data/lib/kibana/assets/app/partials/inspector.html +15 -0
- data/lib/kibana/assets/app/partials/load.html +4 -0
- data/lib/kibana/assets/app/partials/modal.html +12 -0
- data/lib/kibana/assets/app/partials/paneladd.html +6 -0
- data/lib/kibana/assets/app/partials/paneleditor.html +23 -0
- data/lib/kibana/assets/app/partials/panelgeneral.html +22 -0
- data/lib/kibana/assets/app/partials/querySelect.html +24 -0
- data/lib/kibana/assets/app/partials/roweditor.html +65 -0
- data/lib/kibana/assets/app/services/alertSrv.js +49 -0
- data/lib/kibana/assets/app/services/all.js +11 -0
- data/lib/kibana/assets/app/services/dashboard.js +417 -0
- data/lib/kibana/assets/app/services/fields.js +96 -0
- data/lib/kibana/assets/app/services/filterSrv.js +200 -0
- data/lib/kibana/assets/app/services/kbnIndex.js +101 -0
- data/lib/kibana/assets/app/services/panelMove.js +83 -0
- data/lib/kibana/assets/app/services/querySrv.js +147 -0
- data/lib/kibana/assets/app/services/timer.js +34 -0
- data/lib/kibana/assets/css/animate.min.css +3270 -0
- data/lib/kibana/assets/css/bootstrap-responsive.min.css +9 -0
- data/lib/kibana/assets/css/bootstrap.dark.min.css +9 -0
- data/lib/kibana/assets/css/bootstrap.light.min.css +9 -0
- data/lib/kibana/assets/css/font-awesome.min.css +403 -0
- data/lib/kibana/assets/css/main.css +193 -0
- data/lib/kibana/assets/css/normalize.min.css +1 -0
- data/lib/kibana/assets/css/timepicker.css +423 -0
- data/lib/kibana/assets/font/FontAwesome.otf +0 -0
- data/lib/kibana/assets/font/fontawesome-webfont.eot +0 -0
- data/lib/kibana/assets/font/fontawesome-webfont.svg +399 -0
- data/lib/kibana/assets/font/fontawesome-webfont.ttf +0 -0
- data/lib/kibana/assets/font/fontawesome-webfont.woff +0 -0
- data/lib/kibana/assets/img/glyphicons-halflings-white.png +0 -0
- data/lib/kibana/assets/img/glyphicons-halflings.png +0 -0
- data/lib/kibana/assets/img/kibana.png +0 -0
- data/lib/kibana/assets/img/load.gif +0 -0
- data/lib/kibana/assets/img/load_big.gif +0 -0
- data/lib/kibana/assets/index.html +49 -0
- data/lib/kibana/assets/vendor/angular/angular-dragdrop.js +304 -0
- data/lib/kibana/assets/vendor/angular/angular-sanitize.js +556 -0
- data/lib/kibana/assets/vendor/angular/angular-strap.js +875 -0
- data/lib/kibana/assets/vendor/angular/angular.js +15158 -0
- data/lib/kibana/assets/vendor/angular/datepicker.js +1046 -0
- data/lib/kibana/assets/vendor/angular/timepicker.js +888 -0
- data/lib/kibana/assets/vendor/bootstrap/bootstrap.js +2280 -0
- data/lib/kibana/assets/vendor/bootstrap/less/accordion.less +34 -0
- data/lib/kibana/assets/vendor/bootstrap/less/alerts.less +79 -0
- data/lib/kibana/assets/vendor/bootstrap/less/bootstrap.dark.less +4 -0
- data/lib/kibana/assets/vendor/bootstrap/less/bootstrap.less +63 -0
- data/lib/kibana/assets/vendor/bootstrap/less/bootstrap.light.less +4 -0
- data/lib/kibana/assets/vendor/bootstrap/less/bootswatch.dark.less +554 -0
- data/lib/kibana/assets/vendor/bootstrap/less/bootswatch.light.less +9 -0
- data/lib/kibana/assets/vendor/bootstrap/less/breadcrumbs.less +24 -0
- data/lib/kibana/assets/vendor/bootstrap/less/button-groups.less +229 -0
- data/lib/kibana/assets/vendor/bootstrap/less/buttons.less +228 -0
- data/lib/kibana/assets/vendor/bootstrap/less/carousel.less +158 -0
- data/lib/kibana/assets/vendor/bootstrap/less/close.less +32 -0
- data/lib/kibana/assets/vendor/bootstrap/less/code.less +61 -0
- data/lib/kibana/assets/vendor/bootstrap/less/component-animations.less +22 -0
- data/lib/kibana/assets/vendor/bootstrap/less/dropdowns.less +248 -0
- data/lib/kibana/assets/vendor/bootstrap/less/forms.less +690 -0
- data/lib/kibana/assets/vendor/bootstrap/less/grid.less +21 -0
- data/lib/kibana/assets/vendor/bootstrap/less/hero-unit.less +25 -0
- data/lib/kibana/assets/vendor/bootstrap/less/labels-badges.less +84 -0
- data/lib/kibana/assets/vendor/bootstrap/less/layouts.less +16 -0
- data/lib/kibana/assets/vendor/bootstrap/less/media.less +55 -0
- data/lib/kibana/assets/vendor/bootstrap/less/mixins.less +702 -0
- data/lib/kibana/assets/vendor/bootstrap/less/modals.less +95 -0
- data/lib/kibana/assets/vendor/bootstrap/less/navbar.less +497 -0
- data/lib/kibana/assets/vendor/bootstrap/less/navs.less +409 -0
- data/lib/kibana/assets/vendor/bootstrap/less/overrides.less +237 -0
- data/lib/kibana/assets/vendor/bootstrap/less/pager.less +43 -0
- data/lib/kibana/assets/vendor/bootstrap/less/pagination.less +123 -0
- data/lib/kibana/assets/vendor/bootstrap/less/popovers.less +133 -0
- data/lib/kibana/assets/vendor/bootstrap/less/progress-bars.less +122 -0
- data/lib/kibana/assets/vendor/bootstrap/less/reset.less +216 -0
- data/lib/kibana/assets/vendor/bootstrap/less/responsive-1200px-min.less +28 -0
- data/lib/kibana/assets/vendor/bootstrap/less/responsive-767px-max.less +193 -0
- data/lib/kibana/assets/vendor/bootstrap/less/responsive-768px-979px.less +19 -0
- data/lib/kibana/assets/vendor/bootstrap/less/responsive-navbar.less +189 -0
- data/lib/kibana/assets/vendor/bootstrap/less/responsive-utilities.less +59 -0
- data/lib/kibana/assets/vendor/bootstrap/less/responsive.less +48 -0
- data/lib/kibana/assets/vendor/bootstrap/less/scaffolding.less +53 -0
- data/lib/kibana/assets/vendor/bootstrap/less/sprites.less +197 -0
- data/lib/kibana/assets/vendor/bootstrap/less/tables.less +244 -0
- data/lib/kibana/assets/vendor/bootstrap/less/tests/buttons.html +139 -0
- data/lib/kibana/assets/vendor/bootstrap/less/tests/css-tests.css +150 -0
- data/lib/kibana/assets/vendor/bootstrap/less/tests/css-tests.html +1399 -0
- data/lib/kibana/assets/vendor/bootstrap/less/tests/forms-responsive.html +71 -0
- data/lib/kibana/assets/vendor/bootstrap/less/tests/forms.html +179 -0
- data/lib/kibana/assets/vendor/bootstrap/less/tests/navbar-fixed-top.html +104 -0
- data/lib/kibana/assets/vendor/bootstrap/less/tests/navbar-static-top.html +107 -0
- data/lib/kibana/assets/vendor/bootstrap/less/tests/navbar.html +107 -0
- data/lib/kibana/assets/vendor/bootstrap/less/thumbnails.less +53 -0
- data/lib/kibana/assets/vendor/bootstrap/less/tooltip.less +70 -0
- data/lib/kibana/assets/vendor/bootstrap/less/type.less +247 -0
- data/lib/kibana/assets/vendor/bootstrap/less/utilities.less +30 -0
- data/lib/kibana/assets/vendor/bootstrap/less/variables.dark.less +304 -0
- data/lib/kibana/assets/vendor/bootstrap/less/variables.less +301 -0
- data/lib/kibana/assets/vendor/bootstrap/less/variables.light.less +301 -0
- data/lib/kibana/assets/vendor/bootstrap/less/wells.less +29 -0
- data/lib/kibana/assets/vendor/elasticjs/elastic-angular-client.js +81 -0
- data/lib/kibana/assets/vendor/elasticjs/elastic.js +19993 -0
- data/lib/kibana/assets/vendor/filesaver.js +216 -0
- data/lib/kibana/assets/vendor/jquery/jquery-1.8.0.js +2 -0
- data/lib/kibana/assets/vendor/jquery/jquery-ui-1.10.3.js +5253 -0
- data/lib/kibana/assets/vendor/jquery/jquery.flot.js +3060 -0
- data/lib/kibana/assets/vendor/jquery/jquery.flot.pie.js +817 -0
- data/lib/kibana/assets/vendor/jquery/jquery.flot.selection.js +360 -0
- data/lib/kibana/assets/vendor/jquery/jquery.flot.stack.js +188 -0
- data/lib/kibana/assets/vendor/jquery/jquery.flot.stackpercent.js +126 -0
- data/lib/kibana/assets/vendor/jquery/jquery.flot.time.js +431 -0
- data/lib/kibana/assets/vendor/modernizr-2.6.1.js +4 -0
- data/lib/kibana/assets/vendor/moment.js +1662 -0
- data/lib/kibana/assets/vendor/require/css-build.js +78 -0
- data/lib/kibana/assets/vendor/require/css.js +23 -0
- data/lib/kibana/assets/vendor/require/require.js +2024 -0
- data/lib/kibana/assets/vendor/require/text.js +386 -0
- data/lib/kibana/assets/vendor/require/tmpl.js +17 -0
- data/lib/kibana/assets/vendor/timezone.js +993 -0
- data/lib/kibana/assets/vendor/underscore.js +1246 -0
- data/lib/kibana/sinatra.rb +3 -0
- data/lib/kibana/sinatra/version.rb +5 -0
- data/lib/kibana/sinatra/web.rb +28 -0
- data/lib/kibana/views/config.erb +54 -0
- metadata +325 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6c47667fea1a8f40992e94933560d24476c55e5a
|
4
|
+
data.tar.gz: f61f2d585cb4f182ba696d5908992f3de1eaf842
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3210da00beeb85b4caafc21f75b2557408f0266ed719de1ac14dd4cabc0858525eac05f0ad227cb5fb1b468de47be1d4d7e0b9c4508275e8e5abf5e3eb32c5ce
|
7
|
+
data.tar.gz: 3cf521038c0e6bba9d4decaf8ae4f65e9dfa9d43ad203a421ab417786804b674f462c176ba8a93124eba7b086fed0316c89369e89575768d103a9880bb423081
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Ian Neubert
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# Kibana::Sinatra
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'kibana-sinatra'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install kibana-sinatra
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
TODO: Write usage instructions here
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'kibana/sinatra/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "kibana-sinatra"
|
8
|
+
spec.version = Kibana::Sinatra::VERSION
|
9
|
+
spec.authors = ["Ian Neubert"]
|
10
|
+
spec.email = ["ian@ianneubert.com"]
|
11
|
+
spec.description = %q{This gem packages up Kibana 3 into a Sinatra app that can be used stand alone, or with Rails.}
|
12
|
+
spec.summary = %q{This gem packages up Kibana 3 into a Sinatra app that can be used stand alone, or with Rails.}
|
13
|
+
spec.homepage = "http://github.com/ianneub/kibana-sinatra"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "sinatra", "~> 1.4"
|
24
|
+
end
|
@@ -0,0 +1,140 @@
|
|
1
|
+
/**
|
2
|
+
* main app level module
|
3
|
+
*/
|
4
|
+
define([
|
5
|
+
'angular',
|
6
|
+
'jquery',
|
7
|
+
'underscore',
|
8
|
+
'require',
|
9
|
+
|
10
|
+
'elasticjs',
|
11
|
+
'bootstrap',
|
12
|
+
'angular-sanitize',
|
13
|
+
'angular-strap',
|
14
|
+
'angular-dragdrop',
|
15
|
+
'extend-jquery'
|
16
|
+
],
|
17
|
+
function (angular, $, _, appLevelRequire) {
|
18
|
+
"use strict";
|
19
|
+
|
20
|
+
var app = angular.module('kibana', []),
|
21
|
+
// we will keep a reference to each module defined before boot, so that we can
|
22
|
+
// go back and allow it to define new features later. Once we boot, this will be false
|
23
|
+
pre_boot_modules = [],
|
24
|
+
// these are the functions that we need to call to register different
|
25
|
+
// features if we define them after boot time
|
26
|
+
register_fns = {};
|
27
|
+
|
28
|
+
/**
|
29
|
+
* Tells the application to watch the module, once bootstraping has completed
|
30
|
+
* the modules controller, service, etc. functions will be overwritten to register directly
|
31
|
+
* with this application.
|
32
|
+
* @param {[type]} module [description]
|
33
|
+
* @return {[type]} [description]
|
34
|
+
*/
|
35
|
+
app.useModule = function (module) {
|
36
|
+
if (pre_boot_modules) {
|
37
|
+
pre_boot_modules.push(module);
|
38
|
+
} else {
|
39
|
+
_.extend(module, register_fns);
|
40
|
+
}
|
41
|
+
return module;
|
42
|
+
};
|
43
|
+
|
44
|
+
app.safeApply = function ($scope, fn) {
|
45
|
+
switch($scope.$$phase) {
|
46
|
+
case '$apply':
|
47
|
+
// $digest hasn't started, we should be good
|
48
|
+
$scope.$eval(fn);
|
49
|
+
break;
|
50
|
+
case '$digest':
|
51
|
+
// waiting to $apply the changes
|
52
|
+
setTimeout(function () { app.safeApply($scope, fn); }, 10);
|
53
|
+
break;
|
54
|
+
default:
|
55
|
+
// clear to begin an $apply $$phase
|
56
|
+
$scope.$apply(fn);
|
57
|
+
break;
|
58
|
+
}
|
59
|
+
};
|
60
|
+
|
61
|
+
app.config(function ($routeProvider, $controllerProvider, $compileProvider, $filterProvider, $provide) {
|
62
|
+
$routeProvider
|
63
|
+
.when('/dashboard', {
|
64
|
+
templateUrl: 'app/partials/dashboard.html',
|
65
|
+
})
|
66
|
+
.when('/dashboard/:kbnType/:kbnId', {
|
67
|
+
templateUrl: 'app/partials/dashboard.html',
|
68
|
+
})
|
69
|
+
.when('/dashboard/:kbnType/:kbnId/:params', {
|
70
|
+
templateUrl: 'app/partials/dashboard.html'
|
71
|
+
})
|
72
|
+
.otherwise({
|
73
|
+
redirectTo: 'dashboard'
|
74
|
+
});
|
75
|
+
// this is how the internet told me to dynamically add modules :/
|
76
|
+
register_fns.controller = $controllerProvider.register;
|
77
|
+
register_fns.directive = $compileProvider.directive;
|
78
|
+
register_fns.factory = $provide.factory;
|
79
|
+
register_fns.service = $provide.service;
|
80
|
+
register_fns.filter = $filterProvider.register;
|
81
|
+
});
|
82
|
+
|
83
|
+
var apps_deps = [
|
84
|
+
'elasticjs.service',
|
85
|
+
'$strap.directives',
|
86
|
+
'ngSanitize',
|
87
|
+
'ngDragDrop',
|
88
|
+
'kibana'
|
89
|
+
];
|
90
|
+
|
91
|
+
_.each('controllers directives factories services filters'.split(' '),
|
92
|
+
function (type) {
|
93
|
+
var module_name = 'kibana.'+type;
|
94
|
+
// create the module
|
95
|
+
app.useModule(angular.module(module_name, []));
|
96
|
+
// push it into the apps dependencies
|
97
|
+
apps_deps.push(module_name);
|
98
|
+
});
|
99
|
+
|
100
|
+
app.panel_helpers = {
|
101
|
+
partial: function (name) {
|
102
|
+
return 'app/partials/'+name+'.html';
|
103
|
+
}
|
104
|
+
};
|
105
|
+
|
106
|
+
// load the core components
|
107
|
+
require([
|
108
|
+
'controllers/all',
|
109
|
+
'directives/all',
|
110
|
+
'filters/all'
|
111
|
+
], function () {
|
112
|
+
|
113
|
+
// bootstrap the app
|
114
|
+
angular
|
115
|
+
.element(document)
|
116
|
+
.ready(function() {
|
117
|
+
$('body').attr('ng-controller', 'DashCtrl');
|
118
|
+
angular.bootstrap(document, apps_deps)
|
119
|
+
.invoke(['$rootScope', function ($rootScope) {
|
120
|
+
_.each(pre_boot_modules, function (module) {
|
121
|
+
_.extend(module, register_fns);
|
122
|
+
});
|
123
|
+
pre_boot_modules = false;
|
124
|
+
|
125
|
+
$rootScope.requireContext = appLevelRequire;
|
126
|
+
$rootScope.require = function (deps, fn) {
|
127
|
+
var $scope = this;
|
128
|
+
$scope.requireContext(deps, function () {
|
129
|
+
var deps = _.toArray(arguments);
|
130
|
+
$scope.$apply(function () {
|
131
|
+
fn.apply($scope, deps);
|
132
|
+
});
|
133
|
+
});
|
134
|
+
};
|
135
|
+
}]);
|
136
|
+
});
|
137
|
+
});
|
138
|
+
|
139
|
+
return app;
|
140
|
+
});
|
@@ -0,0 +1,46 @@
|
|
1
|
+
define(['jquery'],
|
2
|
+
function ($) {
|
3
|
+
'use strict';
|
4
|
+
|
5
|
+
/**
|
6
|
+
* jQuery extensions
|
7
|
+
*/
|
8
|
+
var $win = $(window);
|
9
|
+
|
10
|
+
$.fn.place_tt = (function () {
|
11
|
+
var defaults = {
|
12
|
+
offset: 5,
|
13
|
+
css: {
|
14
|
+
position : 'absolute',
|
15
|
+
top : -1000,
|
16
|
+
left : 0,
|
17
|
+
color : "#c8c8c8",
|
18
|
+
padding : '10px',
|
19
|
+
'font-size': '11pt',
|
20
|
+
'font-weight' : 200,
|
21
|
+
'background-color': '#1f1f1f',
|
22
|
+
'border-radius': '5px',
|
23
|
+
}
|
24
|
+
};
|
25
|
+
|
26
|
+
return function (x, y, opts) {
|
27
|
+
opts = $.extend(true, {}, defaults, opts);
|
28
|
+
return this.each(function () {
|
29
|
+
var $tooltip = $(this), width, height;
|
30
|
+
|
31
|
+
$tooltip.css(opts.css);
|
32
|
+
if (!$.contains(document.body, $tooltip[0])) {
|
33
|
+
$tooltip.appendTo(document.body);
|
34
|
+
}
|
35
|
+
|
36
|
+
width = $tooltip.outerWidth(true);
|
37
|
+
height = $tooltip.outerHeight(true);
|
38
|
+
|
39
|
+
$tooltip.css('left', x + opts.offset + width > $win.width() ? x - opts.offset - width : x + opts.offset);
|
40
|
+
$tooltip.css('top', y + opts.offset + height > $win.height() ? y - opts.offset - height : y + opts.offset);
|
41
|
+
});
|
42
|
+
};
|
43
|
+
})();
|
44
|
+
|
45
|
+
return $;
|
46
|
+
});
|
@@ -0,0 +1,332 @@
|
|
1
|
+
define(['jquery', 'underscore'],
|
2
|
+
function($, _) {
|
3
|
+
'use strict';
|
4
|
+
|
5
|
+
var kbn = {};
|
6
|
+
|
7
|
+
kbn.get_object_fields = function(obj) {
|
8
|
+
var field_array = [];
|
9
|
+
obj = kbn.flatten_json(obj._source);
|
10
|
+
for (var field in obj) {
|
11
|
+
field_array.push(field);
|
12
|
+
}
|
13
|
+
return field_array.sort();
|
14
|
+
};
|
15
|
+
|
16
|
+
kbn.get_all_fields = function(data) {
|
17
|
+
var fields = [];
|
18
|
+
_.each(data,function(hit) {
|
19
|
+
fields = _.uniq(fields.concat(_.keys(hit)));
|
20
|
+
});
|
21
|
+
// Remove stupid angular key
|
22
|
+
fields = _.without(fields,'$$hashKey');
|
23
|
+
return fields;
|
24
|
+
};
|
25
|
+
|
26
|
+
kbn.has_field = function(obj,field) {
|
27
|
+
var obj_fields = kbn.get_object_fields(obj);
|
28
|
+
if (_.inArray(obj_fields,field) < 0) {
|
29
|
+
return false;
|
30
|
+
} else {
|
31
|
+
return true;
|
32
|
+
}
|
33
|
+
};
|
34
|
+
|
35
|
+
kbn.get_related_fields = function(docs,field) {
|
36
|
+
var field_array = [];
|
37
|
+
_.each(docs, function(doc) {
|
38
|
+
var keys = _.keys(doc);
|
39
|
+
if(_.contains(keys,field)) {
|
40
|
+
field_array = field_array.concat(keys);
|
41
|
+
}
|
42
|
+
});
|
43
|
+
var counts = _.countBy(_.without(field_array,field),function(field){return field;});
|
44
|
+
return counts;
|
45
|
+
};
|
46
|
+
|
47
|
+
kbn.recurse_field_dots = function(object,field) {
|
48
|
+
var value = null;
|
49
|
+
var nested;
|
50
|
+
if (typeof object[field] !== 'undefined') {
|
51
|
+
value = object[field];
|
52
|
+
}
|
53
|
+
else if (nested = field.match(/(.*?)\.(.*)/)) {
|
54
|
+
if(typeof object[nested[1]] !== 'undefined') {
|
55
|
+
value = (typeof object[nested[1]][nested[2]] !== 'undefined') ?
|
56
|
+
object[nested[1]][nested[2]] : kbn.recurse_field_dots(
|
57
|
+
object[nested[1]],nested[2]);
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
61
|
+
return value;
|
62
|
+
};
|
63
|
+
|
64
|
+
kbn.top_field_values = function(docs,field,count,grouped) {
|
65
|
+
var all_values = _.pluck(docs,field),
|
66
|
+
groups = {},
|
67
|
+
counts,
|
68
|
+
hasArrays;
|
69
|
+
// manually grouping into pairs allows us to keep the original value,
|
70
|
+
_.each(all_values, function (value) {
|
71
|
+
var k;
|
72
|
+
if(_.isArray(value)) {
|
73
|
+
hasArrays = true;
|
74
|
+
}
|
75
|
+
if(_.isArray(value) && !grouped) {
|
76
|
+
k = value;
|
77
|
+
} else {
|
78
|
+
k = _.isUndefined(value) ? '' : [value.toString()];
|
79
|
+
}
|
80
|
+
_.each(k, function(key) {
|
81
|
+
if (_.has(groups, key)) {
|
82
|
+
groups[key][1] ++;
|
83
|
+
} else {
|
84
|
+
groups[key] = [(grouped ? value : key), 1];
|
85
|
+
}
|
86
|
+
});
|
87
|
+
});
|
88
|
+
|
89
|
+
counts = _.values(groups).sort(function(a, b) {
|
90
|
+
return a[1] - b[1];
|
91
|
+
}).reverse().slice(0,count);
|
92
|
+
|
93
|
+
return {
|
94
|
+
counts: counts,
|
95
|
+
hasArrays : hasArrays
|
96
|
+
};
|
97
|
+
};
|
98
|
+
|
99
|
+
/**
|
100
|
+
* Calculate a graph interval
|
101
|
+
*
|
102
|
+
* from:: Date object containing the start time
|
103
|
+
* to:: Date object containing the finish time
|
104
|
+
* size:: Calculate to approximately this many bars
|
105
|
+
* user_interval:: User specified histogram interval
|
106
|
+
*
|
107
|
+
*/
|
108
|
+
kbn.calculate_interval = function(from,to,size,user_interval) {
|
109
|
+
if(_.isObject(from)) {
|
110
|
+
from = from.valueOf();
|
111
|
+
}
|
112
|
+
if(_.isObject(to)) {
|
113
|
+
to = to.valueOf();
|
114
|
+
}
|
115
|
+
return user_interval === 0 ? kbn.round_interval((to - from)/size) : user_interval;
|
116
|
+
};
|
117
|
+
|
118
|
+
kbn.round_interval = function(interval) {
|
119
|
+
switch (true) {
|
120
|
+
// 0.5s
|
121
|
+
case (interval <= 500):
|
122
|
+
return 100; // 0.1s
|
123
|
+
// 5s
|
124
|
+
case (interval <= 5000):
|
125
|
+
return 1000; // 1s
|
126
|
+
// 7.5s
|
127
|
+
case (interval <= 7500):
|
128
|
+
return 5000; // 5s
|
129
|
+
// 15s
|
130
|
+
case (interval <= 15000):
|
131
|
+
return 10000; // 10s
|
132
|
+
// 45s
|
133
|
+
case (interval <= 45000):
|
134
|
+
return 30000; // 30s
|
135
|
+
// 3m
|
136
|
+
case (interval <= 180000):
|
137
|
+
return 60000; // 1m
|
138
|
+
// 9m
|
139
|
+
case (interval <= 450000):
|
140
|
+
return 300000; // 5m
|
141
|
+
// 20m
|
142
|
+
case (interval <= 1200000):
|
143
|
+
return 600000; // 10m
|
144
|
+
// 45m
|
145
|
+
case (interval <= 2700000):
|
146
|
+
return 1800000; // 30m
|
147
|
+
// 2h
|
148
|
+
case (interval <= 7200000):
|
149
|
+
return 3600000; // 1h
|
150
|
+
// 6h
|
151
|
+
case (interval <= 21600000):
|
152
|
+
return 10800000; // 3h
|
153
|
+
// 24h
|
154
|
+
case (interval <= 86400000):
|
155
|
+
return 43200000; // 12h
|
156
|
+
// 48h
|
157
|
+
case (interval <= 172800000):
|
158
|
+
return 86400000; // 24h
|
159
|
+
// 1w
|
160
|
+
case (interval <= 604800000):
|
161
|
+
return 86400000; // 24h
|
162
|
+
// 3w
|
163
|
+
case (interval <= 1814400000):
|
164
|
+
return 604800000; // 1w
|
165
|
+
// 2y
|
166
|
+
case (interval < 3628800000):
|
167
|
+
return 2592000000; // 30d
|
168
|
+
default:
|
169
|
+
return 31536000000; // 1y
|
170
|
+
}
|
171
|
+
};
|
172
|
+
|
173
|
+
kbn.secondsToHms = function(seconds){
|
174
|
+
var numyears = Math.floor(seconds / 31536000);
|
175
|
+
if(numyears){
|
176
|
+
return numyears + 'y';
|
177
|
+
}
|
178
|
+
var numdays = Math.floor((seconds % 31536000) / 86400);
|
179
|
+
if(numdays){
|
180
|
+
return numdays + 'd';
|
181
|
+
}
|
182
|
+
var numhours = Math.floor(((seconds % 31536000) % 86400) / 3600);
|
183
|
+
if(numhours){
|
184
|
+
return numhours + 'h';
|
185
|
+
}
|
186
|
+
var numminutes = Math.floor((((seconds % 31536000) % 86400) % 3600) / 60);
|
187
|
+
if(numminutes){
|
188
|
+
return numminutes + 'm';
|
189
|
+
}
|
190
|
+
var numseconds = (((seconds % 31536000) % 86400) % 3600) % 60;
|
191
|
+
if(numseconds){
|
192
|
+
return numseconds + 's';
|
193
|
+
}
|
194
|
+
return 'less then a second'; //'just now' //or other string you like;
|
195
|
+
};
|
196
|
+
|
197
|
+
kbn.to_percent = function(number,outof) {
|
198
|
+
return Math.floor((number/outof)*10000)/100 + "%";
|
199
|
+
};
|
200
|
+
|
201
|
+
kbn.addslashes = function(str) {
|
202
|
+
str = str.replace(/\\/g, '\\\\');
|
203
|
+
str = str.replace(/\'/g, '\\\'');
|
204
|
+
str = str.replace(/\"/g, '\\"');
|
205
|
+
str = str.replace(/\0/g, '\\0');
|
206
|
+
return str;
|
207
|
+
};
|
208
|
+
|
209
|
+
kbn.interval_regex = /(\d+(?:\.\d+)?)([Mwdhmsy])/;
|
210
|
+
|
211
|
+
// histogram & trends
|
212
|
+
kbn.intervals_in_seconds = {
|
213
|
+
y: 31536000,
|
214
|
+
M: 2592000,
|
215
|
+
w: 604800,
|
216
|
+
d: 86400,
|
217
|
+
h: 3600,
|
218
|
+
m: 60,
|
219
|
+
s: 1
|
220
|
+
};
|
221
|
+
|
222
|
+
kbn.describe_interval = function (string) {
|
223
|
+
var matches = string.match(kbn.interval_regex);
|
224
|
+
if (!matches || !_.has(kbn.intervals_in_seconds, matches[2])) {
|
225
|
+
throw new Error('Invalid interval string, expexcting a number followed by one of "Mwdhmsy"');
|
226
|
+
} else {
|
227
|
+
return {
|
228
|
+
sec: kbn.intervals_in_seconds[matches[2]],
|
229
|
+
type: matches[2],
|
230
|
+
count: parseInt(matches[1], 10)
|
231
|
+
};
|
232
|
+
}
|
233
|
+
};
|
234
|
+
|
235
|
+
kbn.interval_to_ms = function(string) {
|
236
|
+
var info = kbn.describe_interval(string);
|
237
|
+
return info.sec * 1000 * info.count;
|
238
|
+
};
|
239
|
+
|
240
|
+
kbn.interval_to_seconds = function (string) {
|
241
|
+
var info = kbn.describe_interval(string);
|
242
|
+
return info.sec * info.count;
|
243
|
+
};
|
244
|
+
|
245
|
+
// This should go away, moment.js can do this
|
246
|
+
kbn.time_ago = function(string) {
|
247
|
+
return new Date(new Date().getTime() - (kbn.interval_to_ms(string)));
|
248
|
+
};
|
249
|
+
|
250
|
+
// LOL. hahahahaha. DIE.
|
251
|
+
kbn.flatten_json = function(object,root,array) {
|
252
|
+
if (typeof array === 'undefined') {
|
253
|
+
array = {};
|
254
|
+
}
|
255
|
+
if (typeof root === 'undefined') {
|
256
|
+
root = '';
|
257
|
+
}
|
258
|
+
for(var index in object) {
|
259
|
+
var obj = object[index];
|
260
|
+
var rootname = root.length === 0 ? index : root + '.' + index;
|
261
|
+
if(typeof obj === 'object' ) {
|
262
|
+
if(_.isArray(obj)) {
|
263
|
+
if(obj.length > 0 && typeof obj[0] === 'object') {
|
264
|
+
var strval = '';
|
265
|
+
for (var objidx = 0, objlen = obj.length; objidx < objlen; objidx++) {
|
266
|
+
if (objidx > 0) {
|
267
|
+
strval = strval + ', ';
|
268
|
+
}
|
269
|
+
|
270
|
+
strval = strval + JSON.stringify(obj[objidx]);
|
271
|
+
}
|
272
|
+
array[rootname] = strval;
|
273
|
+
} else if(obj.length === 1 && _.isNumber(obj[0])) {
|
274
|
+
array[rootname] = parseFloat(obj[0]);
|
275
|
+
} else {
|
276
|
+
array[rootname] = typeof obj === 'undefined' ? null : obj;
|
277
|
+
}
|
278
|
+
} else {
|
279
|
+
kbn.flatten_json(obj,rootname,array);
|
280
|
+
}
|
281
|
+
} else {
|
282
|
+
array[rootname] = typeof obj === 'undefined' ? null : obj;
|
283
|
+
}
|
284
|
+
}
|
285
|
+
return kbn.sortObj(array);
|
286
|
+
};
|
287
|
+
|
288
|
+
kbn.xmlEnt = function(value) {
|
289
|
+
if(_.isString(value)) {
|
290
|
+
var stg1 = value.replace(/</g, '<')
|
291
|
+
.replace(/>/g, '>')
|
292
|
+
.replace(/\r\n/g, '<br/>')
|
293
|
+
.replace(/\r/g, '<br/>')
|
294
|
+
.replace(/\n/g, '<br/>')
|
295
|
+
.replace(/\t/g, ' ')
|
296
|
+
.replace(/ /g, ' ')
|
297
|
+
.replace(/<del>/g, '<del>')
|
298
|
+
.replace(/<\/del>/g, '</del>');
|
299
|
+
return stg1;
|
300
|
+
} else {
|
301
|
+
return value;
|
302
|
+
}
|
303
|
+
};
|
304
|
+
|
305
|
+
kbn.sortObj = function(arr) {
|
306
|
+
// Setup Arrays
|
307
|
+
var sortedKeys = [];
|
308
|
+
var sortedObj = {};
|
309
|
+
var i;
|
310
|
+
// Separate keys and sort them
|
311
|
+
for (i in arr) {
|
312
|
+
sortedKeys.push(i);
|
313
|
+
}
|
314
|
+
sortedKeys.sort();
|
315
|
+
|
316
|
+
// Reconstruct sorted obj based on keys
|
317
|
+
for (i in sortedKeys) {
|
318
|
+
sortedObj[sortedKeys[i]] = arr[sortedKeys[i]];
|
319
|
+
}
|
320
|
+
return sortedObj;
|
321
|
+
};
|
322
|
+
|
323
|
+
kbn.query_color_dot = function (color, diameter) {
|
324
|
+
return '<div class="icon-circle" style="' + [
|
325
|
+
'display:inline-block',
|
326
|
+
'color:' + color,
|
327
|
+
'font-size:' + diameter + 'px',
|
328
|
+
].join(';') + '"></div>';
|
329
|
+
};
|
330
|
+
|
331
|
+
return kbn;
|
332
|
+
});
|