mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
- Removed the "dist" directory
- Created a grunt task to build, compress, and upload the build to s3 - Updated the README to point users to downloads.elasticsearch.org
This commit is contained in:
parent
a59f9e617f
commit
259562136f
.gitignoreGruntfile.jsREADME.md
dist
app
app.js
build.txtconfig.jscomponents
dashboards
panels
bettermap
column
dashcontrol
derivequeries
fields
filtering
histogram
hits
map
pie
query
table
terms
text
timepicker
trends
partials
css
4
.gitignore
vendored
4
.gitignore
vendored
@ -1 +1,3 @@
|
||||
node_modules
|
||||
node_modules
|
||||
.aws-config.json
|
||||
dist
|
37
Gruntfile.js
37
Gruntfile.js
@ -4,6 +4,7 @@ module.exports = function (grunt) {
|
||||
|
||||
var config = {
|
||||
pkg: grunt.file.readJSON('package.json'),
|
||||
aws: grunt.file.readJSON('.aws-config.json'),
|
||||
srcDir: 'src',
|
||||
destDir: 'dist',
|
||||
tempDir: 'tmp',
|
||||
@ -16,7 +17,7 @@ module.exports = function (grunt) {
|
||||
},
|
||||
clean: {
|
||||
on_start: ['<%= destDir %>', '<%= tempDir %>'],
|
||||
after_require: ['<%= tempDir %>'],
|
||||
temp: ['<%= tempDir %>'],
|
||||
},
|
||||
copy: {
|
||||
everthing_left_in_src: {
|
||||
@ -149,6 +150,29 @@ module.exports = function (grunt) {
|
||||
me: {
|
||||
// Target-specific file lists and/or options go here.
|
||||
},
|
||||
},
|
||||
zip: {
|
||||
dist: {
|
||||
cwd: '<%= destDir %>',
|
||||
src: ['<%= destDir %>/**/*','LICENSE.md','README.md'],
|
||||
dest: '<%= tempDir %>/dist.zip'
|
||||
}
|
||||
},
|
||||
s3: {
|
||||
options: {
|
||||
key: '<%= aws.key %>',
|
||||
secret: '<%= aws.secret %>',
|
||||
bucket: 'download.elasticsearch.org',
|
||||
access: 'private'
|
||||
},
|
||||
dist: {
|
||||
upload: [
|
||||
{
|
||||
src: '<%= tempDir %>/dist.zip',
|
||||
dest: 'kibana/releases/<%= pkg.name %>-latest.zip',
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -198,6 +222,8 @@ module.exports = function (grunt) {
|
||||
config.requirejs.compile_temp.options.modules = requireModules;
|
||||
|
||||
// load plugins
|
||||
grunt.loadNpmTasks('grunt-s3');
|
||||
grunt.loadNpmTasks('grunt-zip');
|
||||
grunt.loadNpmTasks('grunt-ngmin');
|
||||
grunt.loadNpmTasks('grunt-contrib-copy');
|
||||
grunt.loadNpmTasks('grunt-contrib-less');
|
||||
@ -224,11 +250,18 @@ module.exports = function (grunt) {
|
||||
'copy:everthing_left_in_src',
|
||||
'ngmin',
|
||||
'requirejs:compile_temp',
|
||||
'clean:after_require',
|
||||
'clean:temp',
|
||||
'write_revision_to_dest', // runs git-describe and replace:config
|
||||
'uglify:dest'
|
||||
]);
|
||||
|
||||
grunt.registerTask('distribute', [
|
||||
'build',
|
||||
'zip:dist',
|
||||
's3:dist',
|
||||
'clean:temp'
|
||||
]);
|
||||
|
||||
grunt.registerTask('write_revision_to_dest', function() {
|
||||
grunt.event.once('git-describe', function (desc) {
|
||||
grunt.config('string-replace.config', {
|
||||
|
32
README.md
32
README.md
@ -1,7 +1,7 @@
|
||||
# Kibana
|
||||
|
||||
__NOTE__: You have reached the Kibana 3 repository.
|
||||
Kibana 3 is completely new version of Kibana written entirely in HTML and Javascript. You can find
|
||||
__NOTE__: You have reached the Kibana 3 repository.
|
||||
Kibana 3 is completely new version of Kibana written entirely in HTML and Javascript. You can find
|
||||
the Kibana 2 repository at [https://github.com/rashidkpc/Kibana](https://github.com/rashidkpc/Kibana)
|
||||
|
||||
### Important!
|
||||
@ -17,41 +17,41 @@ The dashboard storage format has changed in Kibana 3 milestone 3. Existing dashb
|
||||
* Index configuration has been moved from the timepicker, to the main dashboard editor
|
||||
* The stringquery panel has been replaced with a more polished 'query' panel
|
||||
|
||||
More information about Kibana 3 can be found at [http://www.elasticsearch.org/overview/kibana/](http://www.elasticsearch.org/overview/kibana/)
|
||||
More information about Kibana 3 can be found at [http://www.elasticsearch.org/overview/kibana/](http://www.elasticsearch.org/overview/kibana/)
|
||||
|
||||
## Overview
|
||||
|
||||
Kibana is an open source (Apache Licensed), browser based analytics and search interface to Logstash
|
||||
and other timestamped data sets stored in ElasticSearch. With those in place Kibana is a snap to
|
||||
setup and start using (seriously). Kibana strives to be easy to get started with, while also being
|
||||
Kibana is an open source (Apache Licensed), browser based analytics and search interface to Logstash
|
||||
and other timestamped data sets stored in ElasticSearch. With those in place Kibana is a snap to
|
||||
setup and start using (seriously). Kibana strives to be easy to get started with, while also being
|
||||
flexible and powerful
|
||||
|
||||
### Requirements
|
||||
* A modern web browser. The latest version of Chrome, Safari and Firefox have all been tested to
|
||||
* A modern web browser. The latest version of Chrome, Safari and Firefox have all been tested to
|
||||
work. IE9 and greater should work. IE8 does not.
|
||||
* A webserver. No extensions are required, as long as it can serve plain html it will work
|
||||
* A browser reachable Elasticsearch server. Port 9200 must be open, or a proxy configured to allow
|
||||
* A browser reachable Elasticsearch server. Port 9200 must be open, or a proxy configured to allow
|
||||
access to it.
|
||||
|
||||
### Installation
|
||||
|
||||
1. Copy the contents of the dist/ directory to your webserver
|
||||
2. Edit config.js in your deployed directory to point to your elasticsearch server. This should __not be
|
||||
http://localhost:9200__, but rather the fully qualified domain name of your elasticsearch server.
|
||||
1. Download and extract [http://download.elasticsearch.org/kibana/releases/kibana-latest.zip](http://download.elasticsearch.org/kibana/releases/kibana-latest.zip) to your webserver.
|
||||
2. Edit config.js in your deployed directory to point to your elasticsearch server. This should __not be
|
||||
http://localhost:9200__, but rather the fully qualified domain name of your elasticsearch server.
|
||||
The url entered here _must be reachable_ by your browser.
|
||||
3. Point your browser at your installation. If you're using Logstash with the default indexing
|
||||
configuration the included Kibana logstash interface should work nicely.
|
||||
3. Point your browser at your installation. If you're using Logstash with the default indexing
|
||||
configuration the included Kibana logstash interface should work nicely.
|
||||
|
||||
### FAQ
|
||||
__Q__: Why doesnt it work? I have http://localhost:9200 in my config.js, my webserver and elasticsearch
|
||||
server are on the same machine
|
||||
server are on the same machine
|
||||
__A__: Kibana 3 does not work like previous versions of Kibana. To ease deployment, the server side
|
||||
component has been eliminated. Thus __the browser connects directly to Elasticsearch__. The default
|
||||
config.js setup works for the webserver+Elasticsearch on the same machine scenario. Do not set it
|
||||
to http://localhost:9200 unless your browser and elasticsearch are on the same machine
|
||||
|
||||
__Q__: How do I secure this? I don't want to leave 9200 open.
|
||||
__A__: A simple nginx virtual host and proxy configuration can be found in the sample/nginx.conf
|
||||
__Q__: How do I secure this? I don't want to leave 9200 open.
|
||||
__A__: A simple nginx virtual host and proxy configuration can be found in the sample/nginx.conf
|
||||
|
||||
### Support
|
||||
|
||||
|
19
dist/app/app.js
vendored
19
dist/app/app.js
vendored
File diff suppressed because one or more lines are too long
4
dist/app/components/require.config.js
vendored
4
dist/app/components/require.config.js
vendored
@ -1,4 +0,0 @@
|
||||
/*! kibana - v3.0.0m3pre - 2013-09-16
|
||||
* Copyright (c) 2013 Rashid Khan; Licensed Apache License */
|
||||
|
||||
require.config({baseUrl:"app",urlArgs:"r=2534463",paths:{config:"../config",settings:"components/settings",kbn:"components/kbn",css:"../vendor/require/css",text:"../vendor/require/text",moment:"../vendor/moment",filesaver:"../vendor/filesaver",angular:"../vendor/angular/angular","angular-strap":"../vendor/angular/angular-strap","angular-sanitize":"../vendor/angular/angular-sanitize",timepicker:"../vendor/angular/timepicker",datepicker:"../vendor/angular/datepicker",underscore:"components/underscore.extended","underscore-src":"../vendor/underscore",bootstrap:"../vendor/bootstrap/bootstrap",jquery:"../vendor/jquery/jquery-1.8.0","extend-jquery":"components/extend-jquery","jquery.flot":"../vendor/jquery/jquery.flot","jquery.flot.pie":"../vendor/jquery/jquery.flot.pie","jquery.flot.selection":"../vendor/jquery/jquery.flot.selection","jquery.flot.stack":"../vendor/jquery/jquery.flot.stack","jquery.flot.time":"../vendor/jquery/jquery.flot.time",modernizr:"../vendor/modernizr-2.6.1",elasticjs:"../vendor/elasticjs/elastic-angular-client"},shim:{underscore:{exports:"_"},angular:{deps:["jquery"],exports:"angular"},bootstrap:{deps:["jquery"]},modernizr:{exports:"Modernizr"},jquery:{exports:"jQuery"},"jquery.flot":["jquery"],"jquery.flot.pie":["jquery","jquery.flot"],"jquery.flot.selection":["jquery","jquery.flot"],"jquery.flot.stack":["jquery","jquery.flot"],"jquery.flot.time":["jquery","jquery.flot"],"angular-sanitize":["angular"],"angular-cookies":["angular"],"angular-loader":["angular"],"angular-mocks":["angular"],"angular-resource":["angular"],"angular-route":["angular"],"angular-touch":["angular"],"angular-strap":["angular","bootstrap","timepicker","datepicker"],timepicker:["jquery","bootstrap"],datepicker:["jquery","bootstrap"],elasticjs:["angular","../vendor/elasticjs/elastic"]}});
|
41
dist/app/dashboards/blank.json
vendored
41
dist/app/dashboards/blank.json
vendored
@ -1,41 +0,0 @@
|
||||
{
|
||||
"title": "",
|
||||
"services": {
|
||||
"query": {
|
||||
"idQueue": [
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4
|
||||
],
|
||||
"list": {
|
||||
"0": {
|
||||
"query": "*",
|
||||
"alias": "",
|
||||
"color": "#7EB26D",
|
||||
"id": 0
|
||||
}
|
||||
},
|
||||
"ids": [
|
||||
0
|
||||
]
|
||||
},
|
||||
"filter": {
|
||||
"idQueue": [
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
"list": {},
|
||||
"ids": []
|
||||
}
|
||||
},
|
||||
"rows": [
|
||||
],
|
||||
"editable": true,
|
||||
"index": {
|
||||
"interval": "none",
|
||||
"pattern": "[logstash-]YYYY.MM.DD",
|
||||
"default": "NOT_CONFIGURED"
|
||||
}
|
||||
}
|
102
dist/app/dashboards/default.json
vendored
102
dist/app/dashboards/default.json
vendored
@ -1,102 +0,0 @@
|
||||
{
|
||||
"title": "Introduction",
|
||||
"services": {
|
||||
"query": {
|
||||
"idQueue": [
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4
|
||||
],
|
||||
"list": {
|
||||
"0": {
|
||||
"query": "*",
|
||||
"alias": "",
|
||||
"color": "#7EB26D",
|
||||
"id": 0
|
||||
}
|
||||
},
|
||||
"ids": [
|
||||
0
|
||||
]
|
||||
},
|
||||
"filter": {
|
||||
"idQueue": [
|
||||
1,
|
||||
2
|
||||
],
|
||||
"list": {
|
||||
"0": {
|
||||
"from": "2013-07-27T22:08:06.800Z",
|
||||
"to": "2013-07-27T23:08:06.801Z",
|
||||
"field": "@timestamp",
|
||||
"type": "time",
|
||||
"mandate": "must",
|
||||
"active": true,
|
||||
"alias": "",
|
||||
"id": 0
|
||||
}
|
||||
},
|
||||
"ids": [
|
||||
0
|
||||
]
|
||||
}
|
||||
},
|
||||
"rows": [
|
||||
{
|
||||
"title": "Intro",
|
||||
"height": "450px",
|
||||
"editable": true,
|
||||
"collapse": false,
|
||||
"collapsable": false,
|
||||
"panels": [
|
||||
{
|
||||
"error": false,
|
||||
"span": 4,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "text",
|
||||
"mode": "markdown",
|
||||
"content": " \n\n##### Did you just upgrade? Not expecting this screen?\nIf you were using the old default page you might not be expecting this screen. I understand, change can be awkward. Let me explain. \n\n##### Setting a global default dashboard\nKibana has always shipped with an interface for Logstash, still does! You can access it [here](index.html#dashboard/file/logstash.json). However, if you want to make it your default again, all you you need to do is rename a file!\nIn your Kibana installation directory: \n\nRename *logstash.json* to *default.json* and refresh. Should be all set.\n\n##### But wait, there's more!\nIn fact, you can add any exported dashboard to that directory and access it as *http://YOUR-HOST -HERE/index.html#dashboard/file/YOUR-DASHBOARD.json*. Neat trick eh?",
|
||||
"style": {},
|
||||
"title": "",
|
||||
"status": "Stable"
|
||||
},
|
||||
{
|
||||
"error": false,
|
||||
"span": 1,
|
||||
"editable": false,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "text",
|
||||
"mode": "markdown",
|
||||
"content": "",
|
||||
"style": {},
|
||||
"status": "Stable"
|
||||
},
|
||||
{
|
||||
"error": false,
|
||||
"span": 7,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "text",
|
||||
"mode": "markdown",
|
||||
"content": "### Welcome to Kibana. \nGlad you could make it. Happy to have you here! Lets get started, shall we?\n##### Requirements\n* **A good browser.** \n The latest version of Chrome or Firefox is recommended. Safari (latest version) and Internet Explorer 9 and above are also supported.\n* **A webserver.** \n Just somewhere to host the HTML and Javascript. Basically any webserver will work.\n* **Elasticsearch** \n 0.20.5 or above. Kibana will soon move to requiring Elasticsearch 0.90 or above, so upgrading is recommended.\n\n##### Configuration\nIf Kibana and Elasticsearch are on the same host, and you're using the default Elasticsearch port, then you're all set. Kibana is configured to use that setup by default! \n\nIf not, you need to edit *config.js* and set the *elasticsearch* parameter with the URL (including port, probably 9200) of your Elasticsearch server. The host part should be the entire, fully qualified domain name, or IP, **not localhost**.\n#### Are you a Logstash User?\n+ **YES** - Great! We have a prebuilt dashboard: [(Logstash Dashboard)](index.html#/dashboard/file/logstash.json). See the note to the right about making it your global default \n\n+ **NO** - Hey, no problem, you just have a bit of setup to do. You have a few choices: \n\n 1. [Sample Dashboard](index.html#/dashboard/file/guided.json) *I don't have much data yet, please extract some basics for me* \n 2. [Unconfigured Dashboard](index.html#/dashboard/file/noted.json) *I have a lot of data and I don't want Kibana to query it at once*\n 3. [Blank Dashboard](index.html#/dashboard/file/blank.json) *I'm comfortable figuring it out on my own*",
|
||||
"style": {},
|
||||
"status": "Stable"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"editable": true,
|
||||
"index": {
|
||||
"interval": "none",
|
||||
"pattern": "[logstash-]YYYY.MM.DD",
|
||||
"default": "_all"
|
||||
}
|
||||
}
|
246
dist/app/dashboards/guided.json
vendored
246
dist/app/dashboards/guided.json
vendored
@ -1,246 +0,0 @@
|
||||
{
|
||||
"title": "Your Basic Dashboard",
|
||||
"services": {
|
||||
"query": {
|
||||
"idQueue": [
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4
|
||||
],
|
||||
"list": {
|
||||
"0": {
|
||||
"query": "*",
|
||||
"alias": "",
|
||||
"color": "#7EB26D",
|
||||
"id": 0
|
||||
}
|
||||
},
|
||||
"ids": [
|
||||
0
|
||||
]
|
||||
},
|
||||
"filter": {
|
||||
"idQueue": [
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
"list": {},
|
||||
"ids": []
|
||||
}
|
||||
},
|
||||
"rows": [
|
||||
{
|
||||
"title": "Options",
|
||||
"height": "50px",
|
||||
"editable": true,
|
||||
"collapse": false,
|
||||
"collapsable": true,
|
||||
"panels": [
|
||||
{
|
||||
"error": false,
|
||||
"span": 5,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "text",
|
||||
"status": "Stable",
|
||||
"mode": "markdown",
|
||||
"content": "If you have a field with a timestamp in it, you might want to add a 'timepicker' panel here. Click the cog icon over to the left to do so. You can also remove these information text panels there",
|
||||
"style": {},
|
||||
"title": "Have a timestamp somewhere?"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Query",
|
||||
"height": "50px",
|
||||
"editable": true,
|
||||
"collapse": false,
|
||||
"collapsable": true,
|
||||
"panels": [
|
||||
{
|
||||
"error": false,
|
||||
"span": 5,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "query",
|
||||
"label": "Search",
|
||||
"history": [
|
||||
"*"
|
||||
],
|
||||
"remember": 10,
|
||||
"pinned": true,
|
||||
"query": "*"
|
||||
},
|
||||
{
|
||||
"error": false,
|
||||
"span": 7,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "text",
|
||||
"status": "Stable",
|
||||
"mode": "markdown",
|
||||
"content": "#### Filtering\nSee the small *Filters* text to the left below? Click it to expand the filters row. Right now there are none. click on one of the icons in the document types list to filter down to only that document type",
|
||||
"style": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Filters",
|
||||
"height": "50px",
|
||||
"editable": true,
|
||||
"collapse": true,
|
||||
"collapsable": true,
|
||||
"panels": [
|
||||
{
|
||||
"error": false,
|
||||
"span": 12,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "filtering"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Graph",
|
||||
"height": "250px",
|
||||
"editable": true,
|
||||
"collapse": false,
|
||||
"collapsable": true,
|
||||
"panels": [
|
||||
{
|
||||
"error": false,
|
||||
"span": 3,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "terms",
|
||||
"queries": {
|
||||
"mode": "all",
|
||||
"ids": [
|
||||
0
|
||||
]
|
||||
},
|
||||
"field": "_type",
|
||||
"exclude": [],
|
||||
"missing": true,
|
||||
"other": true,
|
||||
"size": 100,
|
||||
"order": "count",
|
||||
"style": {
|
||||
"font-size": "10pt"
|
||||
},
|
||||
"donut": false,
|
||||
"tilt": false,
|
||||
"labels": true,
|
||||
"arrangement": "horizontal",
|
||||
"chart": "pie",
|
||||
"counter_pos": "none",
|
||||
"title": "Document types"
|
||||
},
|
||||
{
|
||||
"error": false,
|
||||
"span": 3,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "terms",
|
||||
"queries": {
|
||||
"mode": "all",
|
||||
"ids": [
|
||||
0
|
||||
]
|
||||
},
|
||||
"field": "_type",
|
||||
"exclude": [],
|
||||
"missing": true,
|
||||
"other": true,
|
||||
"size": 10,
|
||||
"order": "count",
|
||||
"style": {
|
||||
"font-size": "10pt"
|
||||
},
|
||||
"donut": false,
|
||||
"tilt": false,
|
||||
"labels": true,
|
||||
"arrangement": "horizontal",
|
||||
"chart": "table",
|
||||
"counter_pos": "above"
|
||||
},
|
||||
{
|
||||
"error": false,
|
||||
"span": 6,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "text",
|
||||
"status": "Stable",
|
||||
"mode": "markdown",
|
||||
"content": "### The most generic dashboard ever\nIt's the best I can do without knowing much about your data! I've tried to pick some sane defaults for you. The two *terms* panels to the left of this *text* panel show a breakdown of your document type. \n\nKibana is currently configured to point at the special Elasticsearch *_all* index. You can change that by clicking on the cog icon in the title bar. You can also add rows from that dialog. You can edit individual panels by click on the link that appears in their top right when yuo mouse over them\n\nThe *table* panel below has attempted to list your fields to the left, select a few to view them in the table. To add more panels, of different types, click the cog on the row label to the far left",
|
||||
"style": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Events",
|
||||
"height": "650px",
|
||||
"editable": true,
|
||||
"collapse": false,
|
||||
"collapsable": true,
|
||||
"panels": [
|
||||
{
|
||||
"error": false,
|
||||
"span": 12,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "table",
|
||||
"size": 100,
|
||||
"pages": 5,
|
||||
"offset": 0,
|
||||
"sort": [
|
||||
"_id",
|
||||
"desc"
|
||||
],
|
||||
"style": {
|
||||
"font-size": "9pt"
|
||||
},
|
||||
"overflow": "min-height",
|
||||
"fields": [],
|
||||
"highlight": [],
|
||||
"sortable": true,
|
||||
"header": true,
|
||||
"paging": true,
|
||||
"spyable": true,
|
||||
"queries": {
|
||||
"mode": "all",
|
||||
"ids": [
|
||||
0
|
||||
]
|
||||
},
|
||||
"field_list": true,
|
||||
"status": "Stable"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"editable": true,
|
||||
"index": {
|
||||
"interval": "none",
|
||||
"pattern": "[logstash-]YYYY.MM.DD",
|
||||
"default": "_all"
|
||||
}
|
||||
}
|
172
dist/app/dashboards/logstash.js
vendored
172
dist/app/dashboards/logstash.js
vendored
@ -1,172 +0,0 @@
|
||||
/* global _, kbn */
|
||||
|
||||
/*
|
||||
* Complex scripted Logstash dashboard
|
||||
* This script generates a dashboard object that Kibana can load. It also takes a number of user
|
||||
* supplied URL parameters, none are required:
|
||||
*
|
||||
* index :: Which index to search? If this is specified, interval is set to 'none'
|
||||
* pattern :: Does nothing if index is specified. Set a timestamped index pattern. Default: [logstash-]YYYY.MM.DD
|
||||
* interval :: Sets the index interval (eg: day,week,month,year), Default: day
|
||||
*
|
||||
* split :: The character to split the queries on Default: ','
|
||||
* query :: By default, a comma seperated list of queries to run. Default: *
|
||||
*
|
||||
* from :: Search this amount of time back, eg 15m, 1h, 2d. Default: 15m
|
||||
* timefield :: The field containing the time to filter on, Default: @timestamp
|
||||
*
|
||||
* fields :: comma seperated list of fields to show in the table
|
||||
* sort :: comma seperated field to sort on, and direction, eg sort=@timestamp,desc
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
// Setup some variables
|
||||
var dashboard, queries, _d_timespan;
|
||||
|
||||
// All url parameters are available via the ARGS object
|
||||
var ARGS;
|
||||
|
||||
// Set a default timespan if one isn't specified
|
||||
_d_timespan = '1h';
|
||||
|
||||
// Intialize a skeleton with nothing but a rows array and service object
|
||||
dashboard = {
|
||||
rows : [],
|
||||
services : {}
|
||||
};
|
||||
|
||||
// Set a title
|
||||
dashboard.title = 'Logstash Search';
|
||||
|
||||
// Allow the user to set the index, if they dont, fall back to logstash.
|
||||
if(!_.isUndefined(ARGS.index)) {
|
||||
dashboard.index = {
|
||||
default: ARGS.index,
|
||||
interval: 'none'
|
||||
};
|
||||
} else {
|
||||
// Don't fail to default
|
||||
dashboard.failover = false;
|
||||
dashboard.index = {
|
||||
default: ARGS.index||'ADD_A_TIME_FILTER',
|
||||
pattern: ARGS.pattern||'[logstash-]YYYY.MM.DD',
|
||||
interval: ARGS.interval||'day'
|
||||
};
|
||||
}
|
||||
|
||||
// In this dashboard we let users pass queries as comma seperated list to the query parameter.
|
||||
// Or they can specify a split character using the split aparameter
|
||||
// If query is defined, split it into a list of query objects
|
||||
// NOTE: ids must be integers, hence the parseInt()s
|
||||
if(!_.isUndefined(ARGS.query)) {
|
||||
queries = _.object(_.map(ARGS.query.split(ARGS.split||','), function(v,k) {
|
||||
return [k,{
|
||||
query: v,
|
||||
id: parseInt(k,10),
|
||||
alias: v
|
||||
}];
|
||||
}));
|
||||
} else {
|
||||
// No queries passed? Initialize a single query to match everything
|
||||
queries = {
|
||||
0: {
|
||||
query: '*',
|
||||
id: 0
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// Now populate the query service with our objects
|
||||
dashboard.services.query = {
|
||||
list : queries,
|
||||
ids : _.map(_.keys(queries),function(v){return parseInt(v,10);})
|
||||
};
|
||||
|
||||
// Lets also add a default time filter, the value of which can be specified by the user
|
||||
// This isn't strictly needed, but it gets rid of the info alert about the missing time filter
|
||||
dashboard.services.filter = {
|
||||
list: {
|
||||
0: {
|
||||
from: kbn.time_ago(ARGS.from||_d_timespan),
|
||||
to: new Date(),
|
||||
field: ARGS.timefield||"@timestamp",
|
||||
type: "time",
|
||||
active: true,
|
||||
id: 0
|
||||
}
|
||||
},
|
||||
ids: [0]
|
||||
};
|
||||
|
||||
// Ok, lets make some rows. The Filters row is collapsed by default
|
||||
dashboard.rows = [
|
||||
{
|
||||
title: "Options",
|
||||
height: "30px"
|
||||
},
|
||||
{
|
||||
title: "Query",
|
||||
height: "30px"
|
||||
},
|
||||
{
|
||||
title: "Filters",
|
||||
height: "100px",
|
||||
collapse: true
|
||||
},
|
||||
{
|
||||
title: "Chart",
|
||||
height: "300px"
|
||||
},
|
||||
{
|
||||
title: "Events",
|
||||
height: "400px"
|
||||
}
|
||||
];
|
||||
|
||||
// Setup some panels. A query panel and a filter panel on the same row
|
||||
dashboard.rows[0].panels = [
|
||||
{
|
||||
type: 'timepicker',
|
||||
span: 6,
|
||||
timespan: ARGS.from||_d_timespan
|
||||
}
|
||||
];
|
||||
|
||||
// Add a filtering panel to the 3rd row
|
||||
dashboard.rows[1].panels = [
|
||||
{
|
||||
type: 'query'
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
// Add a filtering panel to the 3rd row
|
||||
dashboard.rows[2].panels = [
|
||||
{
|
||||
type: 'filtering'
|
||||
}
|
||||
];
|
||||
|
||||
// And a histogram that allows the user to specify the interval and time field
|
||||
dashboard.rows[3].panels = [
|
||||
{
|
||||
type: 'histogram',
|
||||
time_field: ARGS.timefield||"@timestamp",
|
||||
auto_int: true
|
||||
}
|
||||
];
|
||||
|
||||
// And a table row where you can specify field and sort order
|
||||
dashboard.rows[4].panels = [
|
||||
{
|
||||
type: 'table',
|
||||
fields: !_.isUndefined(ARGS.fields) ? ARGS.fields.split(',') : [],
|
||||
sort: !_.isUndefined(ARGS.sort) ? ARGS.sort.split(',') : [ARGS.timefield||'@timestamp','desc'],
|
||||
overflow: 'expand'
|
||||
}
|
||||
];
|
||||
|
||||
// Now return the object and we're good!
|
||||
return dashboard;
|
217
dist/app/dashboards/logstash.json
vendored
217
dist/app/dashboards/logstash.json
vendored
@ -1,217 +0,0 @@
|
||||
{
|
||||
"title": "Logstash Search",
|
||||
"services": {
|
||||
"query": {
|
||||
"idQueue": [
|
||||
1
|
||||
],
|
||||
"list": {
|
||||
"0": {
|
||||
"query": "{{ARGS.query || '*'}}",
|
||||
"alias": "",
|
||||
"color": "#7EB26D",
|
||||
"id": 0
|
||||
}
|
||||
},
|
||||
"ids": [
|
||||
0
|
||||
]
|
||||
},
|
||||
"filter": {
|
||||
"idQueue": [
|
||||
1
|
||||
],
|
||||
"list": {
|
||||
"0": {
|
||||
"from": "2013-07-30T18:58:13.977Z",
|
||||
"to": "2013-07-30T19:58:13.977Z",
|
||||
"field": "@timestamp",
|
||||
"type": "time",
|
||||
"mandate": "must",
|
||||
"active": true,
|
||||
"alias": "",
|
||||
"id": 0
|
||||
}
|
||||
},
|
||||
"ids": [
|
||||
0
|
||||
]
|
||||
}
|
||||
},
|
||||
"rows": [
|
||||
{
|
||||
"title": "Options",
|
||||
"height": "50px",
|
||||
"editable": true,
|
||||
"collapse": false,
|
||||
"collapsable": true,
|
||||
"panels": [
|
||||
{
|
||||
"error": "",
|
||||
"span": 6,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "timepicker",
|
||||
"mode": "relative",
|
||||
"time_options": [
|
||||
"5m",
|
||||
"15m",
|
||||
"1h",
|
||||
"6h",
|
||||
"12h",
|
||||
"24h",
|
||||
"2d",
|
||||
"7d",
|
||||
"30d"
|
||||
],
|
||||
"timespan": "{{ARGS.from || '1h'}}",
|
||||
"timefield": "@timestamp",
|
||||
"timeformat": "",
|
||||
"refresh": {
|
||||
"enable": false,
|
||||
"interval": 30,
|
||||
"min": 3
|
||||
},
|
||||
"filter_id": 0,
|
||||
"status": "Stable"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Query",
|
||||
"height": "50px",
|
||||
"editable": true,
|
||||
"collapse": false,
|
||||
"collapsable": true,
|
||||
"panels": [
|
||||
{
|
||||
"error": false,
|
||||
"span": 12,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "query",
|
||||
"label": "Search",
|
||||
"history": [],
|
||||
"remember": 10,
|
||||
"pinned": true,
|
||||
"query": "*"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Filters",
|
||||
"height": "50px",
|
||||
"editable": true,
|
||||
"collapse": true,
|
||||
"collapsable": true,
|
||||
"panels": [
|
||||
{
|
||||
"error": false,
|
||||
"span": 12,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "filtering"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Graph",
|
||||
"height": "350px",
|
||||
"editable": true,
|
||||
"collapse": false,
|
||||
"collapsable": true,
|
||||
"panels": [
|
||||
{
|
||||
"span": 12,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "histogram",
|
||||
"mode": "count",
|
||||
"time_field": "@timestamp",
|
||||
"value_field": null,
|
||||
"auto_int": true,
|
||||
"resolution": 100,
|
||||
"interval": "30s",
|
||||
"fill": 3,
|
||||
"linewidth": 3,
|
||||
"timezone": "browser",
|
||||
"spyable": true,
|
||||
"zoomlinks": true,
|
||||
"bars": true,
|
||||
"stack": true,
|
||||
"points": false,
|
||||
"lines": false,
|
||||
"legend": true,
|
||||
"x-axis": true,
|
||||
"y-axis": true,
|
||||
"percentage": false,
|
||||
"interactive": true,
|
||||
"queries": {
|
||||
"mode": "all",
|
||||
"ids": [
|
||||
0
|
||||
]
|
||||
},
|
||||
"title": "Events over time"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Events",
|
||||
"height": "350px",
|
||||
"editable": true,
|
||||
"collapse": false,
|
||||
"collapsable": true,
|
||||
"panels": [
|
||||
{
|
||||
"error": false,
|
||||
"span": 12,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "table",
|
||||
"size": 100,
|
||||
"pages": 5,
|
||||
"offset": 0,
|
||||
"sort": [
|
||||
"@timestamp",
|
||||
"desc"
|
||||
],
|
||||
"style": {
|
||||
"font-size": "9pt"
|
||||
},
|
||||
"overflow": "min-height",
|
||||
"fields": [],
|
||||
"highlight": [],
|
||||
"sortable": true,
|
||||
"header": true,
|
||||
"paging": true,
|
||||
"spyable": true,
|
||||
"queries": {
|
||||
"mode": "all",
|
||||
"ids": [
|
||||
0
|
||||
]
|
||||
},
|
||||
"field_list": true,
|
||||
"status": "Stable"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"editable": true,
|
||||
"index": {
|
||||
"interval": "day",
|
||||
"pattern": "[logstash-]YYYY.MM.DD",
|
||||
"default": "NO_TIME_FILTER_OR_INDEX_PATTERN_NOT_MATCHED"
|
||||
}
|
||||
}
|
178
dist/app/dashboards/noted.json
vendored
178
dist/app/dashboards/noted.json
vendored
@ -1,178 +0,0 @@
|
||||
{
|
||||
"title": "Your Basic Dashboard",
|
||||
"services": {
|
||||
"query": {
|
||||
"idQueue": [
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4
|
||||
],
|
||||
"list": {
|
||||
"0": {
|
||||
"query": "*",
|
||||
"alias": "",
|
||||
"color": "#7EB26D",
|
||||
"id": 0
|
||||
}
|
||||
},
|
||||
"ids": [
|
||||
0
|
||||
]
|
||||
},
|
||||
"filter": {
|
||||
"idQueue": [
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
"list": {},
|
||||
"ids": []
|
||||
}
|
||||
},
|
||||
"rows": [
|
||||
{
|
||||
"title": "Options",
|
||||
"height": "50px",
|
||||
"editable": true,
|
||||
"collapse": false,
|
||||
"collapsable": true,
|
||||
"panels": [
|
||||
{
|
||||
"error": false,
|
||||
"span": 5,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "text",
|
||||
"status": "Stable",
|
||||
"mode": "markdown",
|
||||
"content": "If you have a field with a timestamp in it, you might want to add a 'timepicker' panel here. Click the cog icon over to the left to do so. You can also remove these information text panels there",
|
||||
"style": {},
|
||||
"title": "Have a timestamp somewhere?"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Query",
|
||||
"height": "50px",
|
||||
"editable": true,
|
||||
"collapse": false,
|
||||
"collapsable": true,
|
||||
"panels": [
|
||||
{
|
||||
"error": false,
|
||||
"span": 12,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "query",
|
||||
"label": "Search",
|
||||
"history": [
|
||||
"*"
|
||||
],
|
||||
"remember": 10,
|
||||
"pinned": true,
|
||||
"query": "*"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Filters",
|
||||
"height": "50px",
|
||||
"editable": true,
|
||||
"collapse": true,
|
||||
"collapsable": true,
|
||||
"panels": [
|
||||
{
|
||||
"error": false,
|
||||
"span": 3,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "text",
|
||||
"status": "Stable",
|
||||
"mode": "markdown",
|
||||
"content": "You found the filter row! This row has a 'filtering' panel in it that lists any active filters. You usually want one of these on any dashboard.",
|
||||
"style": {}
|
||||
},
|
||||
{
|
||||
"error": false,
|
||||
"span": 9,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "filtering"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Graph",
|
||||
"height": "250px",
|
||||
"editable": true,
|
||||
"collapse": false,
|
||||
"collapsable": true,
|
||||
"panels": [
|
||||
{
|
||||
"error": false,
|
||||
"span": 4,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "text",
|
||||
"status": "Stable",
|
||||
"mode": "markdown",
|
||||
"content": "See the small Filters text above this? Click it to expand the filters row. Right now there are none, but if you were to add a Table panel, you could click on event fields to drill down and add some. Or if you had timestamped data and used a time picker, your time filter would appear there",
|
||||
"style": {},
|
||||
"title": "Filtering"
|
||||
},
|
||||
{
|
||||
"error": false,
|
||||
"span": 8,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "text",
|
||||
"status": "Stable",
|
||||
"mode": "markdown",
|
||||
"content": "### Start here\nThis dashboard doesn't run any queries, but it's the best I can do without knowing much about your data!\n\n##### Kibana is currently configured to point at the special Elasticsearch *_all* index. You can change that by clicking on the cog icon in the title bar of this dashboard\nIf you have several indices and a lot of data, you should probably do that before you add any new panels. You can also add rows from that dialog. You can edit individual panels by click on the link that appears in their top right when you mouse over them",
|
||||
"style": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Table",
|
||||
"height": "650px",
|
||||
"editable": true,
|
||||
"collapse": false,
|
||||
"collapsable": true,
|
||||
"panels": [
|
||||
{
|
||||
"error": false,
|
||||
"span": 12,
|
||||
"editable": true,
|
||||
"group": [
|
||||
"default"
|
||||
],
|
||||
"type": "text",
|
||||
"status": "Stable",
|
||||
"mode": "markdown",
|
||||
"content": "## A good place for a table\nThis is a good place for a table panel. Table panels present your data in a tabular format and allow you pick the fields you want to see, sort on them, and drill down.",
|
||||
"style": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"editable": true,
|
||||
"index": {
|
||||
"interval": "none",
|
||||
"pattern": "[logstash-]YYYY.MM.DD",
|
||||
"default": "_all"
|
||||
}
|
||||
}
|
1
dist/app/panels/bettermap/editor.html
vendored
1
dist/app/panels/bettermap/editor.html
vendored
@ -1 +0,0 @@
|
||||
<div class="row-fluid"><div class="span4"><form><h6>Coordinate Field<tip>geoJSON array! Long,Lat NOT Lat,Long</tip></h6><input bs-typeahead="fields.list" type="text" class="input-small" ng-model="panel.field"></form></div><div class="span4"><form><h6>Tooltip Field</h6><input bs-typeahead="fields.list" type="text" class="input-small" ng-model="panel.tooltip"></form></div><div class="span2"><h6>Max Points</h6><input type="number" class="input-small" ng-model="panel.size"></div></div>
|
3
dist/app/panels/bettermap/leaflet.amd.js
vendored
3
dist/app/panels/bettermap/leaflet.amd.js
vendored
@ -1,3 +0,0 @@
|
||||
/*! kibana - v3.0.0m3pre - 2013-09-16
|
||||
* Copyright (c) 2013 Rashid Khan; Licensed Apache License */
|
||||
|
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{display:inline}.leaflet-popup-tip{width:21px;_width:27px;margin:0 auto;_margin-top:-3px;filter:progid:DXImageTransform.Microsoft.Matrix(M11=.70710678, M12=.70710678, M21=-.70710678, M22=.70710678);-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"}.leaflet-popup-tip-container{margin-top:-1px}.leaflet-popup-content-wrapper,.leaflet-popup-tip{border:1px solid #999}.leaflet-popup-content-wrapper{zoom:1}.leaflet-control-zoom,.leaflet-control-layers{border:3px solid #999}.leaflet-control-layers-toggle{}.leaflet-control-attribution,.leaflet-control-layers,.leaflet-control-scale-line{background:#fff}.leaflet-zoom-box{filter:alpha(opacity=50)}.leaflet-control-attribution{border-top:1px solid #bbb;border-left:1px solid #bbb}
|
7
dist/app/panels/bettermap/leaflet/leaflet.js
vendored
7
dist/app/panels/bettermap/leaflet/leaflet.js
vendored
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
.leaflet-cluster-anim .leaflet-marker-icon,.leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:-webkit-transform .2s ease-out,opacity .2s ease-in;-moz-transition:-moz-transform .2s ease-out,opacity .2s ease-in;-o-transition:-o-transform .2s ease-out,opacity .2s ease-in;transition:transform .2s ease-out,opacity .2s ease-in}.marker-cluster-small{background-color:rgba(181,226,140,.6)}.marker-cluster-small div{background-color:rgba(110,204,57,.6)}.marker-cluster-medium{background-color:rgba(241,211,87,.6)}.marker-cluster-medium div{background-color:rgba(240,194,12,.6)}.marker-cluster-large{background-color:rgba(253,156,115,.6)}.marker-cluster-large div{background-color:rgba(241,128,23,.6)}.marker-cluster{background-clip:padding-box;border-radius:20px}.marker-cluster div{width:30px;height:30px;margin-left:5px;margin-top:5px;text-align:center;border-radius:15px;font:12px "Helvetica Neue",Arial,Helvetica,sans-serif}.marker-cluster span{line-height:30px}.leaflet-label{background:#1f1f1f;background-clip:padding-box;border-radius:4px;border-style:solid;border-width:0;display:block;font-weight:200;font-size:11pt;padding:5px;position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;z-index:99999!important}.leaflet-label:before{border-right:6px solid #000;border-right-color:inherit;border-top:6px solid transparent;border-bottom:6px solid transparent;content:"";position:absolute;top:5px;left:-10px;display:none}
|
4
dist/app/panels/bettermap/leaflet/plugins.js
vendored
4
dist/app/panels/bettermap/leaflet/plugins.js
vendored
File diff suppressed because one or more lines are too long
1
dist/app/panels/bettermap/module.html
vendored
1
dist/app/panels/bettermap/module.html
vendored
@ -1 +0,0 @@
|
||||
<div ng-controller="bettermap" ng-init="init()"><span ng-show="panel.spyable" style="position:absolute;right:0px;top:0px" class="panelextra pointer"><i bs-modal="'app/partials/inspector.html'" class="icon-eye-open"></i></span> <div style="padding-right:10px;padding-top:10px;height:{{panel.height|| row.height}};overflow:hidden"><div bettermap="" id="bettermap" params="{{panel}}" style="height:100%"></div></div></div>
|
8
dist/app/panels/bettermap/module.js
vendored
8
dist/app/panels/bettermap/module.js
vendored
File diff suppressed because one or more lines are too long
1
dist/app/panels/column/editor.html
vendored
1
dist/app/panels/column/editor.html
vendored
@ -1 +0,0 @@
|
||||
<div><div class="row-fluid"><h4>Add Panel to Column</h4><select class="input-medium" ng-model="new_panel.type" ng-options="f for f in _.without(config.panel_names,'column')| stringSort" ng-change="reset_panel(new_panel.type);send_render();"></select><small>Select Type</small><div ng-show="!(_.isUndefined(new_panel.type))"><div column-edit="" panel="new_panel" config="config" row="row" dashboards="dashboards" type="new_panel.type"></div><button ng-click="add_panel(new_panel); reset_panel();" class="btn btn-primary">Create Panel</button><br></div></div><div class="row-fluid"><div class="span12"><h4>Panels</h4><table class="table table-condensed table-striped"><thead><th>Title</th><th>Type</th><th>Height</th><th>Delete</th><th>Move</th><th></th><th>Hide</th></thead><tr ng-repeat="app in panel.panels"><td>{{app.title}}</td><td>{{app.type}}</td><td><input type="text" class="input-small" ng-model="app.height"></td><td><i ng-click="panel.panels = _.without(panel.panels,app)" class="pointer icon-remove"></i></td><td><i ng-click="_.move(panel.panels,$index,$index-1)" ng-hide="$first" class="pointer icon-arrow-up"></i></td><td><i ng-click="_.move(panel.panels,$index,$index+1)" ng-hide="$last" class="pointer icon-arrow-down"></i></td><td><input type="checkbox" ng-model="app.hide" ng-checked="app.hide"></td></tr></table></div></div></div>
|
1
dist/app/panels/column/module.html
vendored
1
dist/app/panels/column/module.html
vendored
@ -1 +0,0 @@
|
||||
<div ng-controller="column" ng-init="init();"><div ng-repeat="(name, panel) in panel.panels" ng-hide="panel.height == '0px' || panel.hide" class="row-fluid panel" style="min-height:{{panel.height}}; position:relative"><div class="row-fluid"><div class="span12 alert alert-error panel-error" ng-hide="!panel.error"><a class="close" ng-click="panel.error=false">×</a> <i class="icon-exclamation-sign"></i> <strong>Oops!</strong> {{panel.error}}</div></div><div class="row-fluid"><kibana-panel type="panel.type"></kibana-panel></div></div></div>
|
4
dist/app/panels/column/module.js
vendored
4
dist/app/panels/column/module.js
vendored
@ -1,4 +0,0 @@
|
||||
/*! kibana - v3.0.0m3pre - 2013-09-16
|
||||
* Copyright (c) 2013 Rashid Khan; Licensed Apache License */
|
||||
|
||||
define("panels/column/module",["angular","app","underscore","config"],function(a,b,c,d){var e=a.module("kibana.panels.column",[]);b.useModule(e),e.controller("column",["$scope","$rootScope","$timeout",function(a,b,d){a.panelMeta={status:"Stable",description:"A pseudo panel that lets you add other panels to be arranged in a column withdefined heights."};var e={panels:[]};c.defaults(a.panel,e),a.init=function(){a.reset_panel()},a.toggle_row=function(b){b.collapse=b.collapse?!1:!0,b.collapse||d(function(){a.send_render()})},a.send_render=function(){a.$broadcast("render")},a.add_panel=function(b){a.panel.panels.push(b)},a.reset_panel=function(b){a.new_panel={loading:!1,error:!1,sizeable:!1,span:12,height:"150px",editable:!0,type:b}}}]),e.directive("columnEdit",["$compile","$timeout",function(b,d){return{scope:{new_panel:"=panel",row:"=",config:"=",dashboards:"=",type:"=type"},link:function(e,f){e.$on("render",function(){d(function(){e.panel=e.new_panel;var d="<div ng-include src=\"partial('panelgeneral')\"></div>";c.isUndefined(e.type)||""===e.type||(d=d+"<div ng-include src=\"'app/panels/"+e.type+"/editor.html'\"></div>"),f.html(b(a.element(d))(e))})})}}}]),e.filter("withoutColumn",function(){return function(){return c.without(d.panel_names,"column")}})});
|
1
dist/app/panels/column/panelgeneral.html
vendored
1
dist/app/panels/column/panelgeneral.html
vendored
@ -1 +0,0 @@
|
||||
<div class="row-fluid"><div class="span4"><label class="small">Title</label><input type="text" class="input-medium" ng-model="panel.title"></div><div class="span2"><label class="small">Height</label><input type="text" class="input-mini" ng-model="panel.height"></div><div class="span1"><label class="small">Editable</label><input type="checkbox" ng-model="panel.editable" ng-checked="panel.editable"></div></div>
|
1
dist/app/panels/dashcontrol/editor.html
vendored
1
dist/app/panels/dashcontrol/editor.html
vendored
@ -1 +0,0 @@
|
||||
<div><h5>Allow saving to</h5><div class="row-fluid"><div class="span2"><label class="small">Export</label><input type="checkbox" ng-model="panel.save.local" ng-checked="panel.save.local"></div><div class="span2"><label class="small">Defaults</label><input type="checkbox" ng-model="panel.save.default" ng-checked="panel.save.default"></div><div class="span2"><label class="small">Gist<tip>Requires your domain to be OAUTH registered with Github<tip></tip></tip></label><input type="checkbox" ng-model="panel.save.gist" ng-checked="panel.save.gist"></div><div class="span2"><label class="small">Elasticsearch</label><input type="checkbox" ng-model="panel.save.elasticsearch" ng-checked="panel.save.elasticsearch"></div></div><h5>Allow loading from</h5><div class="row-fluid"><div class="span2"><label class="small">Local file</label><input type="checkbox" ng-model="panel.load.local" ng-checked="panel.load.local"></div><div class="span2"><label class="small">Gist</label><input type="checkbox" ng-model="panel.load.gist" ng-checked="panel.load.gist"></div><div class="span2"><label class="small">Elasticsearch</label><input type="checkbox" ng-model="panel.load.elasticsearch" ng-checked="panel.load.elasticsearch"></div><div class="span3" ng-show="panel.load.elasticsearch"><label class="small">ES list size</label><input class="input-mini" type="number" ng-model="panel.elasticsearch_size"></div></div><h5>Sharing</h5><div class="row-fluid"><div class="span2"><label class="small">Allow Sharing</label><input type="checkbox" ng-model="panel.temp" ng-checked="panel.temp"></div><div class="span2" ng-show="panel.temp"><label class="small">TTL</label><input type="checkbox" ng-model="panel.ttl_enable" ng-checked="panel.temp"></div><div class="span5" ng-show="panel.temp && panel.ttl_enable"><label class="small">TTL Duration <i class="icon-question-sign" bs-tooltip="'Elasticsearch date math, eg: 1m,1d,1w,30d'"></i></label><input class="input-small" type="text" ng-model="panel.temp_ttl"></div></div></div>
|
1
dist/app/panels/dashcontrol/load.html
vendored
1
dist/app/panels/dashcontrol/load.html
vendored
@ -1 +0,0 @@
|
||||
<div><a class="close" ng-click="dismiss()" href="">×</a><h4>Load</h4><div ng-show="panel.load.local"><h5>Local File</h5><form><input type="file" id="dashupload" dash-upload=""><br></form></div><div ng-show="panel.load.gist"><h5>Gist <small>Enter a gist number or url</small></h5><form><input type="text" ng-model="gist.url"><br><button class="btn" ng-click="gist_dblist(dashboard.gist_id(gist.url))" ng-show="dashboard.is_gist(gist.url)"><i class="icon-github-alt"></i> Get gist:{{gist.url | gistid}}</button><h6 ng-show="gist.files.length">Dashboards in gist:{{gist.url | gistid}} <small>click to load</small></h6><h6 ng-hide="gist.files.length">No gist dashboards found</h6><table class="table table-condensed table-striped"><tr ng-repeat="file in gist.files"><td><a ng-click="dashboard.dash_load(file)">{{file.title}}</a></td></tr></table></form></div><div ng-show="panel.load.elasticsearch"><h5>Elasticsearch</h5><form class="input-append"><input type="text" ng-model="elasticsearch.query"><button ng-click="elasticsearch_dblist(elasticsearch.query)" class="btn"><i class="icon-search"></i></button></form><h6 ng-show="elasticsearch.dashboards.length">Elasticsearch stored dashboards</h6><h6 ng-hide="elasticsearch.dashboards.length">No dashboards matching your query found</h6><table class="table table-condensed table-striped"><tr ng-repeat="row in elasticsearch.dashboards | orderBy:['_id']"><td><a ng-click="elasticsearch_delete(row._id)"><i class="icon-remove"></i></a></td><td><a href="#/dashboard/elasticsearch/{{row._id}}">{{row._id}}</a></td><td><a><i class="icon-share" ng-click="share = dashboard.share_link(row._id,'elasticsearch',row._id)" bs-modal="'app/panels/dashcontrol/share.html'"></i></a></td></tr></table></div></div>
|
1
dist/app/panels/dashcontrol/module.html
vendored
1
dist/app/panels/dashcontrol/module.html
vendored
@ -1 +0,0 @@
|
||||
<div ng-controller="dashcontrol" ng-init="init()"><label class="small">Dash Control<tip icon="warning-sign">This panel is deprecated! Please remove it from your dashboard</tip></label><button class="btn" ng-show="panel.load.gist || panel.load.elasticsearch || panel.load.local" data-placement="bottom" data-unique="1" ng-click="elasticsearch_dblist(elasticsearch.query)" bs-popover="'app/panels/dashcontrol/load.html'"><i class="icon-folder-open"></i> <i class="icon-caret-down"></i></button> <button class="btn" ng-show="panel.save.gist || panel.save.elasticsearch || panel.save.local || panel.save.default" data-placement="bottom" data-unique="1" bs-popover="'app/panels/dashcontrol/save.html'"><i class="icon-save"></i> <i class="icon-caret-down"></i></button> <button ng-show="panel.temp" class="btn" ng-click="elasticsearch_save('temp',panel.temp_ttl)" bs-modal="'app/panels/dashcontrol/share.html'"><i class="icon-share"></i></button></div>
|
4
dist/app/panels/dashcontrol/module.js
vendored
4
dist/app/panels/dashcontrol/module.js
vendored
@ -1,4 +0,0 @@
|
||||
/*! kibana - v3.0.0m3pre - 2013-09-16
|
||||
* Copyright (c) 2013 Rashid Khan; Licensed Apache License */
|
||||
|
||||
define("panels/dashcontrol/module",["angular","app","underscore"],function(a,b,c){var d=a.module("kibana.panels.dashcontrol",[]);b.useModule(d),d.controller("dashcontrol",["$scope","$http","timer","dashboard","alertSrv",function(a,b,d,e,f){a.panelMeta={status:"Deprecated",description:"This panel has been moved to the navigation bar. See the dashboard setting editor to configure it."},a.panel=a.panel||{};var g={save:{gist:!1,elasticsearch:!0,local:!0,"default":!0},load:{gist:!0,elasticsearch:!0,local:!0},hide_control:!1,elasticsearch_size:20,temp:!0,ttl_enable:!0,temp_ttl:"30d"};c.defaults(a.panel,g),a.init=function(){a.gist_pattern=/(^\d{5,}$)|(^[a-z0-9]{10,}$)|(gist.github.com(\/*.*)\/[a-z0-9]{5,}\/*$)/,a.gist={},a.elasticsearch={}},a.set_default=function(){e.set_default()?f.set("Local Default Set",e.current.title+" has been set as your local default","success",5e3):f.set("Incompatible Browser","Sorry, your browser is too old for this feature","error",5e3)},a.purge_default=function(){e.purge_default()?f.set("Local Default Clear","Your local default dashboard has been cleared","success",5e3):f.set("Incompatible Browser","Sorry, your browser is too old for this feature","error",5e3)},a.elasticsearch_save=function(b,d){e.elasticsearch_save(b,a.elasticsearch.title||e.current.title,a.panel.ttl_enable?d:!1).then(function(d){c.isUndefined(d._id)?f.set("Save failed","Dashboard could not be saved to Elasticsearch","error",5e3):(f.set("Dashboard Saved",'This dashboard has been saved to Elasticsearch as "'+d._id+'"',"success",5e3),"temp"===b&&(a.share=e.share_link(e.current.title,"temp",d._id)))})},a.elasticsearch_delete=function(b){e.elasticsearch_delete(b).then(function(d){if(c.isUndefined(d))f.set("Dashboard Not Deleted","An error occurred deleting the dashboard","error",5e3);else if(d.found){f.set("Dashboard Deleted",b+" has been deleted","success",5e3);var e=c.where(a.elasticsearch.dashboards,{_id:b})[0];a.elasticsearch.dashboards=c.without(a.elasticsearch.dashboards,e)}else f.set("Dashboard Not Found","Could not find "+b+" in Elasticsearch","warning",5e3)})},a.elasticsearch_dblist=function(b){e.elasticsearch_list(b,a.panel.elasticsearch_size).then(function(b){c.isUndefined(b.hits)||(a.panel.error=!1,a.hits=b.hits.total,a.elasticsearch.dashboards=b.hits.hits)})},a.save_gist=function(){e.save_gist(a.gist.title).then(function(b){c.isUndefined(b)?f.set("Save failed","Gist could not be saved","error",5e3):(a.gist.last=b,f.set("Gist saved",'You will be able to access your exported dashboard file at <a href="'+b+'">'+b+"</a> in a moment","success"))})},a.gist_dblist=function(b){e.gist_list(b).then(function(b){b&&b.length>0?a.gist.files=b:f.set("Gist Failed","Could not retrieve dashboard list from gist","error",5e3)})}}]),d.directive("dashUpload",["timer","dashboard","alertSrv",function(a,b,c){return{restrict:"A",link:function(a){function d(c){for(var d,e=c.target.files,f=function(){return function(c){b.dash_load(JSON.parse(c.target.result)),a.$apply()}},g=0;d=e[g];g++){var h=new FileReader;h.onload=f(d),h.readAsText(d)}}window.File&&window.FileReader&&window.FileList&&window.Blob?document.getElementById("dashupload").addEventListener("change",d,!1):c.set("Oops","Sorry, the HTML5 File APIs are not fully supported in this browser.","error")}}}]),d.filter("gistid",function(){var a=/(\d{5,})|([a-z0-9]{10,})|(gist.github.com(\/*.*)\/[a-z0-9]{5,}\/*$)/;return function(b){if(!c.isUndefined(b)){var d=b.match(a);if(!c.isNull(d)&&!c.isUndefined(d))return d[0].replace(/.*\//,"")}}})});
|
1
dist/app/panels/dashcontrol/save.html
vendored
1
dist/app/panels/dashcontrol/save.html
vendored
@ -1 +0,0 @@
|
||||
<div><a class="close" ng-click="dismiss()" href="">×</a><h4>Save</h4><div ng-show="panel.save.default || panel.save.local"><h5>Locally</h5><form><ul class="nav nav-list"><li><a ng-show="panel.save.local" ng-click="dashboard.to_file()"><i class="icon-download"></i> Export to File</a></li><li><a ng-show="panel.save.default" ng-click="set_default()"><i class="icon-bookmark"></i> Set as My Default</a></li><li><a ng-show="panel.save.default" ng-click="purge_default()"><i class="icon-ban-circle"></i> Clear My Default</a></li></ul></form></div><div ng-show="panel.save.gist"><h5>Gist</h5><form class="input-append"><input class="input-medium" placeholder="Title" type="text" ng-model="gist.title"><button class="btn" ng-click="save_gist()"><i class="icon-github-alt"></i></button></form><br><small ng-show="gist.last">Last gist: <a target="_blank" href="{{gist.last}}">{{gist.last}}</a></small></div><div ng-show="panel.save.elasticsearch"><h5>Elasticsearch</h5><form class="input-append"><input class="input-medium" placeholder="Title" type="text" ng-model="elasticsearch.title"><button class="btn" ng-click="elasticsearch_save('dashboard')"><i class="icon-save"></i></button></form></div></div>
|
1
dist/app/panels/dashcontrol/share.html
vendored
1
dist/app/panels/dashcontrol/share.html
vendored
@ -1 +0,0 @@
|
||||
<div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h3>{{share.title}} <small>shareable link</small></h3></div><div class="modal-body"><label>Share this dashboard with this URL</label><input ng-model="share.link" type="text" style="width:90%" onclick="this.select()" onfocus="this.select()" ng-change="share = dashboard.share_link(share.title,share.type,share.id)"></div><div class="modal-footer"><button type="button" class="btn btn-success" ng-click="dismiss();$broadcast('render')">Close</button></div>
|
1
dist/app/panels/derivequeries/editor.html
vendored
1
dist/app/panels/derivequeries/editor.html
vendored
@ -1 +0,0 @@
|
||||
<div><div class="row-fluid"><div class="span1"><label class="small">Length</label><input type="number" style="width:80%" ng-model="panel.size" ng-change="set_refresh(true)"></div><div class="span3"><label class="small">Field</label><input type="text" bs-typeahead="fields.list" style="width:80%" ng-change="set_refresh(true)" ng-model="panel.field"></div><div class="span3"><label class="small">Query Mode</label><select style="width:80%" ng-change="set_refresh(true)" ng-model="panel.mode" ng-options="f for f in ['terms only','AND', 'OR']"></select></div><div class="span4"><label class="small">Exclude Terms(s) (comma seperated)</label><input array-join="" type="text" style="width:90%" ng-change="set_refresh(true)" ng-model="panel.exclude"></div><div class="span1"><label class="small">Rest</label><input type="checkbox" ng-model="panel.rest" ng-checked="panel.rest" ng-change="set_refresh(true)"></div></div></div>
|
16
dist/app/panels/derivequeries/module.html
vendored
16
dist/app/panels/derivequeries/module.html
vendored
@ -1,16 +0,0 @@
|
||||
<div ng-controller="derivequeries" ng-init="init()"><style>.end-derive {
|
||||
position:absolute;
|
||||
right:15px;
|
||||
top:5px;
|
||||
}
|
||||
.panel-derive-field {
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
}
|
||||
.panel-derive {
|
||||
padding-right: 35px !important;
|
||||
height: 31px !important;
|
||||
-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
|
||||
-moz-box-sizing: border-box; /* Firefox, other Gecko */
|
||||
box-sizing: border-box; /* Opera/IE 8+ */
|
||||
}</style><span ng-show="panel.spyable" style="position:absolute;right:0px;top:0px" class="panelextra pointer"><i bs-modal="'app/partials/inspector.html'" class="icon-eye-open"></i></span><label class="small">Create new queries from <span class="panel-derive-field" ng-show="!editing" ng-click="editing=true">{{panel.field}}</span><select ng-show="editing && fields.list.length>1" class="input-medium" ng-model="panel.field" ng-options="f for f in fields.list" ng-change="editing=false" ng-blur="editing=false"></select><input ng-show="editing && fields.list.length<2" type="text" ng-model="panel.field" ng-blur="editing=false">({{panel.mode}} mode)</label><div><form class="form-search" style="position:relative" ng-submit="get_data()"><input class="search-query panel-derive input-block-level" bs-typeahead="panel.history" data-min-length="0" data-items="100" type="text" ng-model="panel.query"><span class="end-derive"><i class="icon-search pointer" ng-click="get_data()"></i></span></form></div></div>
|
4
dist/app/panels/derivequeries/module.js
vendored
4
dist/app/panels/derivequeries/module.js
vendored
@ -1,4 +0,0 @@
|
||||
/*! kibana - v3.0.0m3pre - 2013-09-16
|
||||
* Copyright (c) 2013 Rashid Khan; Licensed Apache License */
|
||||
|
||||
define("panels/derivequeries/module",["angular","app","underscore"],function(a,b,c){var d=a.module("kibana.panels.derivequeries",[]);b.useModule(d),d.controller("derivequeries",["$scope","$rootScope","querySrv","fields","dashboard","filterSrv",function(b,d,e,f,g,h){b.panelMeta={status:"Experimental",description:"Creates a new set of queries using the Elasticsearch terms facet. For example, you might want to create 5 queries showing the most frequent HTTP response codes. Be careful not to select a high cardinality field, as Elasticsearch must load all unique values into memory."};var i={loading:!1,label:"Search",query:"*",ids:[],field:"_type",fields:[],spyable:!0,rest:!1,size:5,mode:"terms only",exclude:[],history:[],remember:10};c.defaults(b.panel,i),b.init=function(){b.editing=!1,b.panel.fields=f.list},b.get_data=function(){if(j(b.panel.query),0!==g.indices.length){b.panelMeta.loading=!0;var a=b.ejs.Request().indices(g.indices);a=a.facet(b.ejs.TermsFacet("query").field(b.panel.field).size(b.panel.size).exclude(b.panel.exclude).facetFilter(b.ejs.QueryFilter(b.ejs.FilteredQuery(b.ejs.QueryStringQuery(b.panel.query||"*"),h.getBoolFilter(h.ids))))).size(0),b.populate_modal(a);var d=a.doSearch();d.then(function(a){b.panelMeta.loading=!1;var d;""===b.panel.query||"terms only"===b.panel.mode?d="":"AND"===b.panel.mode?d=" AND ("+b.panel.query+")":"OR"===b.panel.mode&&(d=" OR ("+b.panel.query+")");var f=[],h=a.facets.query.terms,i=[];if(c.each(h,function(a){var c=b.panel.field+':"'+a.term+'"'+d,g=e.findQuery(c);g?f.push(g.id):f.push(e.set({alias:a.term,query:c})),i.push("NOT ("+c+")")}),b.panel.rest){var j=i.join(" AND "),k=e.findQuery(j);k?f.push(k.id):f.push(e.set({alias:"other",query:j}))}c.each(c.difference(b.panel.ids,f),function(a){e.remove(a)}),b.panel.ids=f,g.refresh()})}},b.set_refresh=function(a){b.refresh=a},b.close_edit=function(){b.refresh&&b.get_data(),b.refresh=!1},b.populate_modal=function(c){b.inspector=a.toJson(JSON.parse(c.toString()),!0)};var j=function(a){if(a=c.isArray(a)?a:[a],b.panel.remember>0){b.panel.history=c.union(a.reverse(),b.panel.history);var d=b.panel.history.length;d>b.panel.remember&&(b.panel.history=b.panel.history.slice(0,b.panel.remember))}}}])});
|
1
dist/app/panels/fields/editor.html
vendored
1
dist/app/panels/fields/editor.html
vendored
@ -1 +0,0 @@
|
||||
<div class="row-fluid"><div class="span3"><h6>Popup Position</h6><select class="input-small" ng-model="panel.micropanel_position" ng-options="f for f in ['top','right','bottom','left']" ng-change="reload_list();"></select></div><div class="span3"><h6>List Arrangement</h6><select class="input-small" ng-model="panel.arrange" ng-options="f for f in ['horizontal','vertical']"></select></div><div class="span3"><h6>Font Size</h6><select class="input-small" ng-model="panel.style['font-size']" ng-options="f for f in ['6pt','7pt','8pt','9pt','10pt','12pt','14pt','16pt','18pt','20pt','24pt','28pt','32pt','36pt','42pt','48pt','52pt','60pt','72pt']"></select></div></div>
|
1
dist/app/panels/fields/micropanel.html
vendored
1
dist/app/panels/fields/micropanel.html
vendored
@ -1 +0,0 @@
|
||||
<a class="close" ng-click="dismiss()" href="">×</a><h4>Micro Analysis of {{micropanel.field}} <i class="pointer icon-search" ng-click="fieldExists(micropanel.field,'must');dismiss();"></i> <i class="pointer icon-ban-circle" ng-click="fieldExists(micropanel.field,'mustNot');dismiss();"></i><br><small>{{micropanel.count}} events in the table set</small></h4><table style="width:480px" class="table table-bordered table-striped table-condensed"><thead><th>{{micropanel.field}}</th><th>Action</th><th>In set</th></thead><tbody><tr ng-repeat="field in micropanel.values"><td>{{{true: "__blank__",false:field[0]}[field[0] == ""]}}</td><td><i class="pointer icon-search" ng-click="build_search(micropanel.field,field[0],'must');dismiss();"></i> <i class="pointer icon-ban-circle" ng-click="build_search(micropanel.field,field[0],'mustNot');dismiss();"></i></td><td>{{field[1]}}</td></tr></tbody></table><span ng-repeat="(field,count) in micropanel.related"><a ng-click="toggle_field(field)">{{field}}</a> ({{Math.round((count / micropanel.count) * 100)}}%),</span>
|
1
dist/app/panels/fields/module.html
vendored
1
dist/app/panels/fields/module.html
vendored
@ -1 +0,0 @@
|
||||
<div ng-controller="fields" ng-init="init()"><h4>The 'fields' panel is deprecated.</h4>The table panel now integrates a field selector.</div>
|
4
dist/app/panels/fields/module.js
vendored
4
dist/app/panels/fields/module.js
vendored
@ -1,4 +0,0 @@
|
||||
/*! kibana - v3.0.0m3pre - 2013-09-16
|
||||
* Copyright (c) 2013 Rashid Khan; Licensed Apache License */
|
||||
|
||||
define("panels/fields/module",["angular","app","underscore"],function(a,b,c){var d=a.module("kibana.panels.fields",[]);b.useModule(d),d.controller("fields",["$scope",function(a){a.panelMeta={status:"Deprecated",description:"You should not use this table, it does not work anymore. The table panel nowintegrates a field selector. This module will soon be removed."};var b={style:{},arrange:"vertical",micropanel_position:"right"};c.defaults(a.panel,b),a.init=function(){}}])});
|
1
dist/app/panels/filtering/editor.html
vendored
1
dist/app/panels/filtering/editor.html
vendored
@ -1 +0,0 @@
|
||||
<div><div class="row-fluid"><div class="span12">No options here</div></div></div>
|
3
dist/app/panels/filtering/meta.html
vendored
3
dist/app/panels/filtering/meta.html
vendored
@ -1,3 +0,0 @@
|
||||
<div><style>.input-query-alias {
|
||||
margin-bottom: 5px !important;
|
||||
}</style><a class="close" ng-click="render();dismiss();" href="">×</a><h6>Query Alias</h6><form><input class="input-medium input-query-alias" type="text" ng-model="queries.list[id].alias" placeholder="Alias..."><div><i ng-repeat="color in queries.colors" class="pointer" ng-class="{'icon-circle-blank':queries.list[id].color == color,'icon-circle':queries.list[id].color != color}" style="color:{{color}}" ng-click="queries.list[id].color = color;render();"></i></div></form></div>
|
40
dist/app/panels/filtering/module.html
vendored
40
dist/app/panels/filtering/module.html
vendored
@ -1,40 +0,0 @@
|
||||
<div ng-controller="filtering" ng-init="init()"><style>.filtering-container {
|
||||
margin-top: 3px;
|
||||
}
|
||||
.filter-panel-filter {
|
||||
display:inline-block;
|
||||
vertical-align: top;
|
||||
margin-left: 10px;
|
||||
width: 220px;
|
||||
padding: 5px 5px 0px 5px;
|
||||
border: #555 1px solid;
|
||||
margin: 0px 5px 5px 0px;
|
||||
}
|
||||
.filter-panel-filter ul {
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
.filter-must {
|
||||
border-bottom: #7EB26D 3px solid;
|
||||
}
|
||||
.filter-mustNot {
|
||||
border-bottom: #E24D42 3px solid;
|
||||
}
|
||||
.filter-deselected {
|
||||
opacity: 0.5;
|
||||
}
|
||||
.filter-either {
|
||||
border-bottom: #EF843C 3px solid;
|
||||
}
|
||||
.filter-action {
|
||||
float:right;
|
||||
margin-bottom: 0px !important;
|
||||
margin-left: 3px;
|
||||
}
|
||||
.filter-mandate {
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
}
|
||||
.filter-apply {
|
||||
float:right;
|
||||
margin-bottom: 5px;
|
||||
}</style><div class="filtering-container"><span ng-show="filterSrv.ids.length == 0"><h5>No filters available</h5></span><div ng-repeat="id in filterSrv.ids" class="small filter-panel-filter" ng-class="{'filter-deselected': !filterSrv.list[id].active}"><div class="filter-{{filterSrv.list[id].mandate}}"><strong>{{filterSrv.list[id].type}}</strong> <span ng-show="!filterSrv.list[id].editing" class="filter-mandate" ng-click="filterSrv.list[id].editing = true">{{filterSrv.list[id].mandate}}</span> <span ng-show="filterSrv.list[id].editing"><select class="input-small" ng-model="filterSrv.list[id].mandate" ng-options="f for f in ['must','mustNot','either']"></select></span> <i class="filter-action pointer icon-remove" bs-tooltip="'Remove'" ng-click="remove(id)"></i> <i class="filter-action pointer" ng-class="{'icon-check': filterSrv.list[id].active,'icon-check-empty': !filterSrv.list[id].active}" bs-tooltip="'Toggle'" ng-click="toggle(id)"></i> <i class="filter-action pointer icon-edit" ng-hide="filterSrv.list[id].editing" bs-tooltip="'Edit'" ng-click="filterSrv.list[id].editing = true"></i></div><div ng-hide="filterSrv.list[id].editing && isEditable(filterSrv.list[id])"><ul class="unstyled"><li ng-repeat="(key,value) in filterSrv.list[id]" ng-show="show_key(key)"><strong>{{key}}</strong> : {{value}}</li></ul></div><div ng-show="filterSrv.list[id].editing && isEditable(filterSrv.list[id])"><ul class="unstyled"><li ng-repeat="key in _.keys(filterSrv.list[id])" ng-show="show_key(key)"><strong>{{key}}</strong> :<input type="text" ng-model="filterSrv.list[id][key]"></li></ul></div><div class="filter-apply" ng-show="filterSrv.list[id].editing"><button ng-click="filterSrv.list[id].editing=undefined" class="btn btn-mini" bs-tooltip="'Save without refresh'">Save</button> <button ng-click="filterSrv.list[id].editing=undefined;refresh()" class="btn btn-success btn-mini" bs-tooltip="'Save and refresh'">Apply</button></div></div></div></div>
|
4
dist/app/panels/filtering/module.js
vendored
4
dist/app/panels/filtering/module.js
vendored
@ -1,4 +0,0 @@
|
||||
/*! kibana - v3.0.0m3pre - 2013-09-16
|
||||
* Copyright (c) 2013 Rashid Khan; Licensed Apache License */
|
||||
|
||||
define("panels/filtering/module",["angular","app","underscore"],function(a,b,c){var d=a.module("kibana.panels.filtering",[]);b.useModule(d),d.controller("filtering",["$scope","filterSrv","$rootScope","dashboard",function(a,b,d,e){a.panelMeta={status:"Beta",description:"A controllable list of all filters currently applied to the dashboard. You almost certainly want one of these on your dashboard somewhere."};var f={};c.defaults(a.panel,f),a.init=function(){a.filterSrv=b},a.remove=function(a){b.remove(a),e.refresh()},a.toggle=function(a){b.list[a].active=!b.list[a].active,e.refresh()},a.refresh=function(){d.$broadcast("refresh")},a.render=function(){d.$broadcast("render")},a.show_key=function(a){return!c.contains(["type","id","alias","mandate","active","editing"],a)},a.isEditable=function(a){var b=["time"];return c.contains(b,a.type)?!1:!0}}])});
|
1
dist/app/panels/histogram/editor.html
vendored
1
dist/app/panels/histogram/editor.html
vendored
@ -1 +0,0 @@
|
||||
<div class="row-fluid"><div class="span2"><label class="small">Mode</label><select ng-change="set_refresh(true)" class="input-small" ng-model="panel.mode" ng-options="f for f in ['count','min','mean','max','total']"></select></div><div class="span2"><label class="small">Time Field</label><input ng-change="set_refresh(true)" placeholder="Start typing" bs-typeahead="fields.list" type="text" class="input-small" ng-model="panel.time_field"></div><div class="span2" ng-show="panel.mode != 'count'"><label class="small">Value Field</label><input ng-change="set_refresh(true)" placeholder="Start typing" bs-typeahead="fields.list" type="text" class="input-small" ng-model="panel.value_field"></div><div class="span3" ng-show="panel.mode != 'count'"><label class="small">Note</label><small>In <strong>{{panel.mode}}</strong> mode the configured field <strong>must</strong> be a numeric type</small></div></div><h5>Chart Settings</h5><div class="row-fluid" style="margin-bottom:10px"><div class="span1"><label class="small">Bars</label><input type="checkbox" ng-model="panel.bars" ng-checked="panel.bars"></div><div class="span1"><label class="small">Lines</label><input type="checkbox" ng-model="panel.lines" ng-checked="panel.lines"></div><div class="span1"><label class="small">Points</label><input type="checkbox" ng-model="panel.points" ng-checked="panel.points"></div><div class="span1"><label class="small">Stack</label><input type="checkbox" ng-model="panel.stack" ng-checked="panel.stack"></div><div class="span1"><label class="small">Legend</label><input type="checkbox" ng-model="panel.legend" ng-checked="panel.legend"></div><div class="span1"><label class="small">xAxis</label><input type="checkbox" ng-model="panel['x-axis']" ng-checked="panel['x-axis']"></div><div class="span1"><label class="small">yAxis</label><input type="checkbox" ng-model="panel['y-axis']" ng-checked="panel['y-axis']"></div><div class="span2" ng-show="panel.lines"><label class="small">Line Fill</label><select class="input-mini" ng-model="panel.fill" ng-options="f for f in [0,1,2,3,4,5,6,7,8,9,10]"></select></div><div class="span2" ng-show="panel.lines"><label class="small">Line Width</label><select class="input-mini" ng-model="panel.linewidth" ng-options="f for f in [0,1,2,3,4,5,6,7,8,9,10]"></select></div></div><div class="row-fluid"><div class="span2"><label class="small">Time correction</label><select ng-model="panel.timezone" class="input-small" ng-options="f for f in ['browser','utc']"></select></div><div class="span1"><label class="small">Selectable</label><input type="checkbox" ng-model="panel.interactive" ng-checked="panel.interactive"></div><div class="span2"><label class="small">Zoom Links</label><input type="checkbox" ng-model="panel.zoomlinks" ng-checked="panel.zoomlinks"></div><div class="span2"><label class="small">Auto-interval</label><input type="checkbox" ng-model="panel.auto_int" ng-checked="panel.auto_int"></div><div class="span2" ng-show="panel.auto_int"><label class="small">Resolution</label><input type="number" class="input-mini" ng-model="panel.resolution" ng-change="set_refresh(true)"></div><div class="span3" ng-show="panel.auto_int"><label class="small">Shoot for this many data points, rounding to sane intervals</label></div><div class="span2" ng-hide="panel.auto_int"><label class="small">Interval</label><input type="text" class="input-mini" ng-model="panel.interval" ng-change="set_refresh(true)"></div><div class="span3" ng-hide="panel.auto_int"><label class="small">Use Elasticsearch date math format (eg 1m, 5m, 1d, 2w, 1y)</label></div></div><h5>Tooltip Settings</h5><div class="row-fluid" style="margin-bottom:10px"><div class="span3"><label class="small">Stacked Values<tip>How should the values in stacked charts to be calculated?</tip></label><select class="input-medium" ng-model="panel.tooltip.value_type" ng-options="f for f in ['cumulative','individual']"></select></div><div class="span3"><label class="small">Display Query<tip>If an alias is set, it will be shown in the tooltip. If not, should it show the query?</tip></label><input type="checkbox" ng-model="panel.tooltip.query_as_alias"></div></div>
|
16
dist/app/panels/histogram/module.html
vendored
16
dist/app/panels/histogram/module.html
vendored
@ -1,16 +0,0 @@
|
||||
<div ng-controller="histogram" ng-init="init()" style="min-height:{{panel.height || row.height}}"><style>.histogram-legend {
|
||||
display:inline-block;
|
||||
padding-right:5px
|
||||
}
|
||||
.histogram-legend-dot {
|
||||
display:inline-block;
|
||||
height:10px;
|
||||
width:10px;
|
||||
border-radius:5px;
|
||||
}
|
||||
.histogram-legend-item {
|
||||
display:inline-block;
|
||||
}
|
||||
.histogram-chart {
|
||||
position:relative;
|
||||
}</style><span ng-show="panel.spyable" class="spy panelextra pointer"><i bs-modal="'app/partials/inspector.html'" class="icon-eye-open"></i></span><div><span ng-show="panel.zoomlinks && data"><a class="small" ng-click="zoom(2)"><i class="icon-zoom-out"></i> Zoom Out</a> |</span> <span ng-show="panel.legend" ng-repeat="series in data" class="histogram-legend"><i class="icon-circle" ng-style="{color: series.info.color}"></i> <span class="small histogram-legend-item">{{series.info.alias}} ({{series.hits}})</span></span> <span ng-show="panel.legend" class="small"><span ng-show="panel.value_field && panel.mode != 'count'">{{panel.value_field}}</span> {{panel.mode}} per <strong>{{panel.interval}}</strong> | (<strong>{{hits}}</strong> hits)</span></div><center><img ng-show="panel.loading && _.isUndefined(data)" src="img/load_big.gif"></center><div histogram-chart="" class="pointer histogram-chart" params="{{panel}}"></div></div>
|
4
dist/app/panels/histogram/module.js
vendored
4
dist/app/panels/histogram/module.js
vendored
File diff suppressed because one or more lines are too long
1
dist/app/panels/hits/editor.html
vendored
1
dist/app/panels/hits/editor.html
vendored
@ -1 +0,0 @@
|
||||
<div><div class="row-fluid"><div class="span3"><label class="small">Style</label><select class="input-small" ng-model="panel.chart" ng-options="f for f in ['bar','pie','list','total']"></select></div><div class="span2" ng-show="panel.chart == 'total' || panel.chart == 'list'"><label class="small">Font Size</label><select class="input-mini" ng-model="panel.style['font-size']" ng-options="f for f in ['7pt','8pt','9pt','10pt','12pt','14pt','16pt','18pt','20pt','24pt','28pt','32pt','36pt','42pt','48pt','52pt','60pt','72pt']"></select></div><div class="span3" ng-show="panel.chart == 'bar' || panel.chart == 'pie'"><label class="small">Legend</label><select class="input-small" ng-model="panel.counter_pos" ng-options="f for f in ['above','below','none']"></select></div><div class="span3" ng-show="panel.chart != 'total' && panel.counter_pos != 'none'"><label class="small">List Format</label><select class="input-small" ng-model="panel.arrangement" ng-options="f for f in ['horizontal','vertical']"></select></div><div class="span1" ng-show="panel.chart == 'pie'"><label class="small">Donut</label><input type="checkbox" ng-model="panel.donut" ng-checked="panel.donut"></div><div class="span1" ng-show="panel.chart == 'pie'"><label class="small">Tilt</label><input type="checkbox" ng-model="panel.tilt" ng-checked="panel.tilt"></div><div class="span1" ng-show="panel.chart == 'pie'"><label class="small">Labels</label><input type="checkbox" ng-model="panel.labels" ng-checked="panel.labels"></div></div></div>
|
1
dist/app/panels/hits/module.html
vendored
1
dist/app/panels/hits/module.html
vendored
@ -1 +0,0 @@
|
||||
<div ng-controller="hits" ng-init="init()"><span ng-show="panel.spyable" class="spy panelextra pointer"><i bs-modal="'app/partials/inspector.html'" class="icon-eye-open"></i></span><div ng-show="panel.counter_pos == 'above' && (panel.chart == 'bar' || panel.chart == 'pie')" id="{{$id}}-legend"><table class="small" ng-show="panel.arrangement == 'vertical'"><tr ng-repeat="query in data"><td><div style="display:inline-block;border-radius:5px;background:{{query.info.color}};height:10px;width:10px"></div></td><td style="padding-right:10px;padding-left:10px">{{query.info.alias}}</td><td>{{query.data[0][1]}}</td></tr></table><div class="small" ng-show="panel.arrangement == 'horizontal'" ng-repeat="query in data" style="float:left;padding-left: 10px"><span><i class="icon-circle" ng-style="{color:query.info.color}"></i> {{query.info.alias}} ({{query.data[0][1]}})</span></div><br></div><div style="clear:both"></div><div ng-show="panel.chart == 'pie' || panel.chart == 'bar'" hits-chart="" params="{{panel}}" style="position:relative"></div><div ng-show="panel.counter_pos == 'below' && (panel.chart == 'bar' || panel.chart == 'pie')" id="{{$id}}-legend"><table class="small" ng-show="panel.arrangement == 'vertical'"><tr ng-repeat="query in data"><td><i class="icon-circle" ng-style="{color:query.info.color}"></i></td><td style="padding-right:10px;padding-left:10px">{{query.info.alias}}</td><td>{{query.data[0][1]}}</td></tr></table><div class="small" ng-show="panel.arrangement == 'horizontal'" ng-repeat="query in data" style="float:left;padding-left: 10px"><span><i class="icon-circle" ng-style="{color:query.info.color}"></i></span> {{query.info.alias}} ({{query.data[0][1]}})</div><br></div><div ng-show="panel.chart == 'total'"><div ng-style="panel.style" style="line-height:{{panel.style['font-size']}}">{{hits}}</div></div><span ng-show="panel.chart == 'list'"><div ng-style="panel.style" style="display:inline-block;line-height:{{panel.style['font-size']}}" ng-repeat="query in data"><i class="icon-circle" style="color:{{query.info.color}}"></i> {{query.info.alias}} ({{query.hits}})</div></span><br ng-show="panel.arrangement == 'vertical' && panel.chart == 'list'"></div>
|
4
dist/app/panels/hits/module.js
vendored
4
dist/app/panels/hits/module.js
vendored
@ -1,4 +0,0 @@
|
||||
/*! kibana - v3.0.0m3pre - 2013-09-16
|
||||
* Copyright (c) 2013 Rashid Khan; Licensed Apache License */
|
||||
|
||||
define("panels/hits/module",["angular","app","underscore","jquery","kbn","jquery.flot","jquery.flot.pie"],function(a,b,c,d,e){var f=a.module("kibana.panels.hits",[]);b.useModule(f),f.controller("hits",["$scope","querySrv","dashboard","filterSrv",function(b,d,e,f){b.panelMeta={editorTabs:[{title:"Queries",src:"app/partials/querySelect.html"}],status:"Stable",description:"The total hits for a query or set of queries. Can be a pie chart, bar chart, list, or absolute total of all queries combined"};var g={queries:{mode:"all",ids:[]},style:{"font-size":"10pt"},arrangement:"horizontal",chart:"bar",counter_pos:"above",donut:!1,tilt:!1,labels:!0,spyable:!0};c.defaults(b.panel,g),b.init=function(){b.hits=0,b.$on("refresh",function(){b.get_data()}),b.get_data()},b.get_data=function(g,h){if(delete b.panel.error,b.panelMeta.loading=!0,0!==e.indices.length){var i=c.isUndefined(g)?0:g,j=b.ejs.Request().indices(e.indices[i]);b.panel.queries.ids=d.idsByMode(b.panel.queries),c.each(b.panel.queries.ids,function(a){var c=b.ejs.FilteredQuery(d.getEjsObj(a),f.getBoolFilter(f.ids));j=j.facet(b.ejs.QueryFacet(a).query(c)).size(0)}),b.inspector=a.toJson(JSON.parse(j.toString()),!0);var k=j.doSearch();k.then(function(a){if(b.panelMeta.loading=!1,0===i&&(b.hits=0,b.data=[],h=b.query_id=(new Date).getTime()),!c.isUndefined(a.error))return b.panel.error=b.parse_error(a.error),void 0;var f=c.map(c.keys(a.facets),function(a){return parseInt(a,10)});if(b.query_id===h&&c.intersection(f,b.panel.queries.ids).length===b.panel.queries.ids.length){var g=0;c.each(b.panel.queries.ids,function(e){var f=a.facets[e],h=c.isUndefined(b.data[g])||0===i?f.count:b.data[g].hits+f.count;b.hits+=f.count,b.data[g]={info:d.list[e],id:e,hits:h,data:[[g,h]]},g++}),b.$emit("render"),i<e.indices.length-1&&b.get_data(i+1,h)}})}},b.set_refresh=function(a){b.refresh=a},b.close_edit=function(){b.refresh&&b.get_data(),b.refresh=!1,b.$emit("render")}}]),f.directive("hitsChart",["querySrv",function(b){return{restrict:"A",link:function(f,g){function h(){g.css({height:f.panel.height||f.row.height});try{c.each(f.data,function(a){a.label=a.info.alias,a.color=a.info.color})}catch(a){return}try{"bar"===f.panel.chart&&(f.plot=d.plot(g,f.data,{legend:{show:!1},series:{lines:{show:!1},bars:{show:!0,fill:1,barWidth:.8,horizontal:!1},shadowSize:1},yaxis:{show:!0,min:0,color:"#c8c8c8"},xaxis:{show:!1},grid:{borderWidth:0,borderColor:"#eee",color:"#eee",hoverable:!0},colors:b.colors})),"pie"===f.panel.chart&&(f.plot=d.plot(g,f.data,{legend:{show:!1},series:{pie:{innerRadius:f.panel.donut?.4:0,tilt:f.panel.tilt?.45:1,radius:1,show:!0,combine:{color:"#999",label:"The Rest"},stroke:{width:0},label:{show:f.panel.labels,radius:2/3,formatter:function(a,b){return"<div ng-click=\"build_search(panel.query.field,'"+a+"')"+' "style="font-size:8pt;text-align:center;padding:2px;color:white;">'+a+"<br/>"+Math.round(b.percent)+"%</div>"},threshold:.1}}},grid:{hoverable:!0,clickable:!0},colors:b.colors}))}catch(a){g.text(a)}}f.$on("render",function(){h()}),a.element(window).bind("resize",function(){h()});var i=d("<div>");g.bind("plothover",function(a,b,c){if(c){var d="bar"===f.panel.chart?c.datapoint[1]:c.datapoint[1][0][1];i.html(e.query_color_dot(c.series.color,20)+" "+d.toFixed(0)).place_tt(b.pageX,b.pageY)}else i.remove()})}}}])});
|
1
dist/app/panels/map/editor.html
vendored
1
dist/app/panels/map/editor.html
vendored
@ -1 +0,0 @@
|
||||
<div class="row-fluid"><div class="span3"><form><h6>Field<tip>2 letter country or state code</tip></h6><h6>Field</h6><input bs-typeahead="fields.list" type="text" class="input-small" ng-model="panel.field"></form></div><div class="span1"><h6>Map</h6><select ng-change="$emit('render')" class="input-small" ng-model="panel.map" ng-options="f for f in ['world','europe','usa']"></select></div></div>
|
4
dist/app/panels/map/lib/map.europe.js
vendored
4
dist/app/panels/map/lib/map.europe.js
vendored
File diff suppressed because one or more lines are too long
4
dist/app/panels/map/lib/map.usa.js
vendored
4
dist/app/panels/map/lib/map.usa.js
vendored
File diff suppressed because one or more lines are too long
4
dist/app/panels/map/lib/map.world.js
vendored
4
dist/app/panels/map/lib/map.world.js
vendored
File diff suppressed because one or more lines are too long
58
dist/app/panels/map/module.html
vendored
58
dist/app/panels/map/module.html
vendored
@ -1,58 +0,0 @@
|
||||
<div ng-controller="map" ng-init="init()"><style>.jvectormap-label {
|
||||
position: absolute;
|
||||
display: none;
|
||||
visibility: hidden;
|
||||
border: solid 1px #CDCDCD;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
background: #292929;
|
||||
color: white;
|
||||
font-family: sans-serif, Verdana;
|
||||
font-size: smaller;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.jvectormap-zoomin, .jvectormap-zoomout {
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
background: #292929;
|
||||
padding: 3px;
|
||||
color: white;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
cursor: pointer;
|
||||
line-height: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.jvectormap {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.jvectormap-zoomin {
|
||||
display: none;
|
||||
top: 10px;
|
||||
}
|
||||
|
||||
.jvectormap-zoomout {
|
||||
display: none;
|
||||
top: 30px;
|
||||
}
|
||||
|
||||
.map-legend {
|
||||
color : #c8c8c8;
|
||||
padding : 10px;
|
||||
font-size: 11pt;
|
||||
font-weight: 200;
|
||||
background-color: #1f1f1f;
|
||||
border-radius: 5px;
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
top: 15px;
|
||||
display: none;
|
||||
z-index: 99;
|
||||
}</style><span ng-show="panel.spyable" class="spy panelextra pointer"><i bs-modal="'app/partials/modal.html'" class="icon-eye-open"></i></span><div class="jvectormap" map="" params="{{panel}}" style="height:{{panel.height || row.height}}"></div></div>
|
5
dist/app/panels/map/module.js
vendored
5
dist/app/panels/map/module.js
vendored
File diff suppressed because one or more lines are too long
1
dist/app/panels/pie/editor.html
vendored
1
dist/app/panels/pie/editor.html
vendored
@ -1 +0,0 @@
|
||||
<div class="row-fluid" ng-switch="panel.mode"><div class="row-fluid"><div class="span2"><label class="small">Mode</label><select class="input-small" ng-change="set_mode(panel.mode);set_refresh(true)" ng-model="panel.mode" ng-options="f for f in ['terms','goal']"></select></div></div><div ng-switch-when="terms"><div class="row-fluid"><div class="span2"><label class="small">Field</label><input type="text" class="input-small" bs-typeahead="fields.list" ng-model="panel.query.field" ng-change="set_refresh(true)"></div><div class="span2"><label class="small">Length</label><input class="input-small" type="number" ng-model="panel.size" ng-change="set_refresh(true)"></div><div class="span6"><label class="small">Exclude Terms(s) (comma seperated)</label><input array-join="" type="text" ng-model="panel.exclude"></div></div></div><div ng-switch-when="goal"><div class="row-fluid"><div class="span2"><form style="margin-bottom: 0px"><label class="small">Goal</label><input type="number" style="width:90%" ng-model="panel.query.goal" ng-change="set_refresh(true)"></form></div></div></div></div><div class="row-fluid"><div class="span1"><label class="small">Donut</label><input type="checkbox" ng-model="panel.donut" ng-checked="panel.donut"></div><div class="span1"><label class="small">Tilt</label><input type="checkbox" ng-model="panel.tilt" ng-checked="panel.tilt"></div><div class="span1"><label class="small">Labels</label><input type="checkbox" ng-model="panel.labels" ng-checked="panel.labels"></div><div class="span3"><label class="small">Legend</label><select class="input-small" ng-model="panel.legend" ng-options="f for f in ['above','below','none']"></select></div></div>
|
1
dist/app/panels/pie/module.html
vendored
1
dist/app/panels/pie/module.html
vendored
@ -1 +0,0 @@
|
||||
<div ng-controller="pie" ng-init="init()"><span ng-show="panel.spyable" style="position:absolute;right:0px;top:0px" class="panelextra pointer"><i bs-modal="'app/partials/modal.html'" class="icon-eye-open"></i></span><div ng-show="panel.legend == 'above'" ng-repeat="query in legend" style="float:left;padding-left: 10px"><span ng-show="panel.chart != \"none\""><i class="icon-circle" ng-style="{color:query.color}"></i></span><span class="small">{{query.label}} ({{query.data[0][1]}})</span></div><br><div style="clear:both"></div><div pie="" class="pointer" params="{{panel}}" style="position:relative"></div><div ng-show="panel.legend == 'below'" ng-repeat="query in legend" style="float:left;padding-left: 10px"><span ng-show="panel.chart != \"none\""><i class="icon-circle" ng-style="{color:query.color}"></i></span><span class="small">{{query.label}} ({{query.data[0][1]}})</span></div></div>
|
4
dist/app/panels/pie/module.js
vendored
4
dist/app/panels/pie/module.js
vendored
@ -1,4 +0,0 @@
|
||||
/*! kibana - v3.0.0m3pre - 2013-09-16
|
||||
* Copyright (c) 2013 Rashid Khan; Licensed Apache License */
|
||||
|
||||
define("panels/pie/module",["angular","app","underscore","jquery","kbn","config"],function(a,b,c,d,e,f){var g=a.module("kibana.panels.pie",[]);b.useModule(g),g.controller("pie",["$scope","$rootScope","querySrv","dashboard","filterSrv",function(b,d,e,g,h){b.panelMeta={status:"Deprecated",description:"Uses an Elasticsearch terms facet to create a pie chart. You should really only point this at not_analyzed fields for that reason. This panel is going away soon, it has <strong>been replaced by the terms panel</strong>. Please use that one instead."};var i={editorTabs:[{title:"Queries",src:"app/partials/querySelect.html"}],query:{field:"_type",goal:100},queries:{mode:"all",ids:[]},size:10,exclude:[],donut:!1,tilt:!1,legend:"above",labels:!0,mode:"terms",default_field:"DEFAULT",spyable:!0};c.defaults(b.panel,i),b.init=function(){b.$on("refresh",function(){b.get_data()}),b.get_data()},b.set_mode=function(a){switch(a){case"terms":b.panel.query={field:"_all"};break;case"goal":b.panel.query={goal:100}}},b.set_refresh=function(a){b.refresh=a},b.close_edit=function(){b.refresh&&b.get_data(),b.refresh=!1,b.$emit("render")},b.get_data=function(){if(0!==g.indices.length){b.panelMeta.loading=!0;var a=b.ejs.Request().indices(g.indices);b.panel.queries.ids=e.idsByMode(b.panel.queries);var d=b.ejs.BoolQuery();c.each(b.panel.queries.ids,function(a){d=d.should(e.getEjsObj(a))});var f;"terms"===b.panel.mode?(a=a.facet(b.ejs.TermsFacet("pie").field(b.panel.query.field||b.panel.default_field).size(b.panel.size).exclude(b.panel.exclude).facetFilter(b.ejs.QueryFilter(b.ejs.FilteredQuery(d,h.getBoolFilter(h.ids))))).size(0),b.populate_modal(a),f=a.doSearch(),f.then(function(a){b.panelMeta.loading=!1,b.hits=a.hits.total,b.data=[];var d=0;c.each(a.facets.pie.terms,function(a){var c={label:a.term,data:a.count};b.data.push(),b.data.push(c),d+=1}),b.$emit("render")})):(a=a.query(d).filter(h.getBoolFilter(h.ids)).size(0),b.populate_modal(a),f=a.doSearch(),f.then(function(a){b.panelMeta.loading=!1;var c=a.hits.total,d=b.panel.query.goal-c;b.data=[{label:"Complete",data:c,color:"#BF6730"},{data:d,color:"#e2d0c4"}],b.$emit("render")}))}},b.populate_modal=function(c){b.modal={title:"Inspector",body:"<h5>Last Elasticsearch Query</h5><pre>curl -XGET "+f.elasticsearch+"/"+g.indices+"/_search?pretty -d'\n"+a.toJson(JSON.parse(c.toString()),!0)+"'</pre>"}}}]),g.directive("pie",["querySrv","filterSrv","dashboard",function(b,f,g){return{restrict:"A",link:function(h,i){function j(){i.css({height:h.panel.height||h.row.height});var a;a="goal"===h.panel.mode?{show:h.panel.labels,radius:0,formatter:function(a,b){var d=parseInt(h.row.height.replace("px",""),10)/8+String("px");return c.isUndefined(a)?"":'<div style="font-size:'+d+';font-weight:bold;text-align:center;padding:2px;color:#fff;">'+Math.round(b.percent)+"%</div>"}}:{show:h.panel.labels,radius:2/3,formatter:function(a,b){return'<div "style="font-size:8pt;text-align:center;padding:2px;color:white;">'+a+"<br/>"+Math.round(b.percent)+"%</div>"},threshold:.1};var e={series:{pie:{innerRadius:h.panel.donut?.45:0,tilt:h.panel.tilt?.45:1,radius:1,show:!0,combine:{color:"#999",label:"The Rest"},label:a,stroke:{width:0}}},grid:{backgroundColor:null,hoverable:!0,clickable:!0},legend:{show:!1},colors:b.colors};i.is(":visible")&&require(["vendor/jquery/jquery.flot.pie.js"],function(){h.legend=d.plot(i,h.data,e).getData(),h.$$phase||h.$apply()})}i.html('<center><img src="img/load_big.gif"></center>'),h.$on("render",function(){j()}),a.element(window).bind("resize",function(){j()}),i.bind("plotclick",function(a,b,c){c&&"terms"===h.panel.mode&&(f.set({type:"terms",field:h.panel.query.field,value:c.series.label}),g.refresh())});var k=d("<div>");i.bind("plothover",function(a,b,c){c?k.html([e.query_color_dot(c.series.color,15),c.series.label||"",parseFloat(c.series.percent).toFixed(1)+"%"].join(" ")).place_tt(b.pageX,b.pageY,{offset:10}):k.remove()})}}}])});
|
1
dist/app/panels/query/editor.html
vendored
1
dist/app/panels/query/editor.html
vendored
@ -1 +0,0 @@
|
||||
<div><div class="row-fluid"><div class="span12">No options here</div></div></div>
|
6
dist/app/panels/query/meta.html
vendored
6
dist/app/panels/query/meta.html
vendored
@ -1,6 +0,0 @@
|
||||
<div class="panel-query-meta row-fluid" style="width:170px"><style>.input-query-alias {
|
||||
margin-bottom: 5px !important;
|
||||
}
|
||||
.panel-query-meta .pin {
|
||||
text-decoration: underline;
|
||||
}</style><a class="close" ng-click="render();dismiss();" href="">×</a> <i ng-click="toggle_pin(id);dismiss();" class="small pointer icon-pushpin"></i><label class="strong small">Query Alias</label><form><input class="input-medium input-query-alias" type="text" ng-model="querySrv.list[id].alias" placeholder="Alias..."><div><i ng-repeat="color in querySrv.colors" class="pointer" ng-class="{'icon-circle-blank':querySrv.list[id].color == color,'icon-circle':querySrv.list[id].color != color}" ng-style="{color:color}" ng-click="querySrv.list[id].color = color;render();"></i></div></form></div>
|
1
dist/app/panels/query/module.html
vendored
1
dist/app/panels/query/module.html
vendored
@ -1 +0,0 @@
|
||||
<div ng-controller="query" ng-init="init()" class="query-panel"><label class="small">{{panel.label}}</label><div ng-repeat="id in (unPinnedQueries = (querySrv.ids|pinnedQuery:false))" ng-class="{'short-query': unPinnedQueries.length>1}"><form class="form-search" style="position:relative;margin-bottom:5px" ng-submit="refresh()"><span class="begin-query"><i class="icon-circle pointer" data-unique="1" bs-popover="'app/panels/query/meta.html'" data-placement="right" ng-style="{color: querySrv.list[id].color}"></i> <i class="icon-remove-sign pointer remove-query" ng-show="querySrv.ids.length > 1" ng-click="querySrv.remove(id);refresh()"></i></span><input class="search-query panel-query" ng-class="{ 'input-block-level': unPinnedQueries.length==1, 'last-query': $last, 'has-remove': querySrv.ids.length > 1 }" bs-typeahead="panel.history" data-min-length="0" data-items="100" type="text" ng-model="querySrv.list[id].query"><span class="end-query"><i class="icon-search pointer" ng-click="refresh()" ng-show="$last"></i> <i class="icon-plus pointer" ng-click="querySrv.set({})" ng-show="$last"></i></span></form></div><div style="display:inline-block" ng-repeat="id in querySrv.ids|pinnedQuery:true"><span class="pointer" ng-show="$first" ng-click="panel.pinned = !panel.pinned"><small class="pins">Pinned</small> <i ng-class="{'icon-caret-right':panel.pinned,'icon-caret-left':!panel.pinned}"></i></span> <span ng-show="panel.pinned" class="pinned badge"><i class="icon-circle pointer" ng-style="{color: querySrv.list[id].color}" data-unique="1" bs-popover="'app/panels/query/meta.html'"></i><span bs-tooltip="querySrv.list[id].query">{{querySrv.list[id].alias || querySrv.list[id].query}}</span></span></div><span style="display:inline-block" ng-show="unPinnedQueries.length == 0"><i class="icon-search pointer" ng-click="refresh()"></i> <i class="icon-plus pointer" ng-click="querySrv.set({})"></i></span></div>
|
4
dist/app/panels/query/module.js
vendored
4
dist/app/panels/query/module.js
vendored
@ -1,4 +0,0 @@
|
||||
/*! kibana - v3.0.0m3pre - 2013-09-16
|
||||
* Copyright (c) 2013 Rashid Khan; Licensed Apache License */
|
||||
|
||||
define("css",{load:function(a,b,c){function d(a){var b=document.getElementsByTagName("head")[0],c=document.createElement("link");c.href=a,c.rel="stylesheet",c.type="text/css",b.appendChild(c)}d(requirejs.toUrl(a)),c(!0)},pluginBuilder:"../vendor/require/css-build"}),define("css-embed",function(){function a(a){var b=document.getElementsByTagName("head")[0],c=document.createElement("style"),d=document.createTextNode(a);c.type="text/css",c.styleSheet?c.styleSheet.cssText=d.nodeValue:c.appendChild(d),b.appendChild(c)}return a}),define("css!panels/query/query.css",["css-embed"],function(a){return a(".short-query{display:inline-block;margin-right:10px}.begin-query{position:absolute;left:13px;top:5px}.end-query{position:absolute;right:15px;top:5px}.panel-query{padding-left:35px!important;height:31px!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-search:hover .has-remove{padding-left:50px!important}.remove-query{opacity:0}.last-query{padding-right:45px!important}.form-search:hover .remove-query{opacity:1}.query-panel .pins{text-decoration:underline}.query-panel .pinned{margin-right:5px}"),!0}),define("panels/query/module",["angular","app","underscore","css!./query.css"],function(a,b,c){var d=a.module("kibana.panels.query",[]);b.useModule(d),d.controller("query",["$scope","querySrv","$rootScope",function(a,b,d){a.panelMeta={status:"Stable",description:"Manage all of the queries on the dashboard. You almost certainly need one of these somewhere. This panel allows you to add, remove, label, pin and color queries"};var e={label:"Search",query:"*",pinned:!0,history:[],remember:10};c.defaults(a.panel,e),a.querySrv=b,a.init=function(){},a.refresh=function(){f(c.pluck(a.querySrv.list,"query")),d.$broadcast("refresh")},a.render=function(){d.$broadcast("render")},a.toggle_pin=function(a){b.list[a].pin=b.list[a].pin?!1:!0};var f=function(b){if(a.panel.remember>0){a.panel.history=c.union(b.reverse(),a.panel.history);var d=a.panel.history.length;d>a.panel.remember&&(a.panel.history=a.panel.history.slice(0,a.panel.remember))}};a.init()}])});
|
1
dist/app/panels/query/query.css
vendored
1
dist/app/panels/query/query.css
vendored
@ -1 +0,0 @@
|
||||
.short-query{display:inline-block;margin-right:10px}.begin-query{position:absolute;left:13px;top:5px}.end-query{position:absolute;right:15px;top:5px}.panel-query{padding-left:35px!important;height:31px!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-search:hover .has-remove{padding-left:50px!important}.remove-query{opacity:0}.last-query{padding-right:45px!important}.form-search:hover .remove-query{opacity:1}.query-panel .pins{text-decoration:underline}.query-panel .pinned{margin-right:5px}
|
1
dist/app/panels/table/editor.html
vendored
1
dist/app/panels/table/editor.html
vendored
@ -1 +0,0 @@
|
||||
<div class="row-fluid"><div class="span4"><form class="input-append"><h6>Add Column</h6><input bs-typeahead="fields.list" type="text" class="input-small" ng-model="newfield"><button class="btn" ng-click="toggle_field(newfield);newfield=''"><i class="icon-plus"></i></button></form></div><div class="span8"><h6>Columns <small>Click to remove</small></h6><span style="margin-left:3px" ng-click="toggle_field(field)" ng-repeat="field in $parent.panel.fields" class="label pointer remove">{{field}}</span></div></div><div class="row-fluid"><div class="span4"><form class="input-append"><h6>Add field</h6><input bs-typeahead="fields.list" type="text" class="input-small" ng-model="newhighlight" ng-change="set_refresh(true)"><button class="btn" ng-click="toggle_highlight(newhighlight);newhighlight=''"><i class="icon-plus"></i></button></form></div><div class="span8"><h6>Highlighted fields <small>Click to remove</small></h6><span style="margin-left:3px" ng-click="toggle_highlight(field);set_refresh(true)" ng-repeat="field in $parent.panel.highlight" class="label remove pointer">{{field}}</span></div></div><h5>Options</h5><div class="row-fluid"><div class="span1"><h6>Header</h6><input type="checkbox" ng-model="panel.header" ng-checked="panel.header"></div><div class="span1"><h6>Sorting</h6><input type="checkbox" ng-model="panel.sortable" ng-checked="panel.sortable"></div><div class="span3" style="white-space:nowrap" ng-show="panel.sortable"><h6>Sort</h6><input ng-show="all_fields.length<=0 || !all_fields" style="width:85%" ng-model="panel.sort[0]" type="text"><select ng-show="all_fields.length>0" style="width:85%" ng-model="panel.sort[0]" ng-options="f for f in all_fields"></select><i ng-click="set_sort(panel.sort[0])" ng-class="{'icon-chevron-up': panel.sort[1] == 'asc','icon-chevron-down': panel.sort[1] == 'desc'}"></i></div><div class="span2"><h6>Font Size</h6><select class="input-small" ng-model="panel.style['font-size']" ng-options="f for f in ['7pt','8pt','9pt','10pt','12pt','14pt','16pt','18pt','20pt','24pt','28pt','32pt','36pt','42pt','48pt','52pt','60pt','72pt']"></select></div><div class="span2"><h6>Trim Factor<tip>Trim fields to this long divided by # of rows</tip></h6><input type="number" class="input-small" ng-model="panel.trimFactor"></div></div>
|
3
dist/app/panels/table/micropanel.html
vendored
3
dist/app/panels/table/micropanel.html
vendored
@ -1,3 +0,0 @@
|
||||
<a class="close" ng-click="dismiss()" href="">×</a><h4>Micro Analysis of {{micropanel.field}} <i class="pointer icon-search" ng-click="fieldExists(micropanel.field,'must');dismiss();"></i> <i class="pointer icon-ban-circle" ng-click="fieldExists(micropanel.field,'mustNot');dismiss();"></i><br><small>{{micropanel.count}} events in the table set</small></h4><table style="width:100%" class="table table-striped table-condensed"><thead><th>{{micropanel.field}}</th><th>Action</th><th style="text-align:right">Count</th></thead><tbody><tr ng-repeat="field in micropanel.values"><td>{{{true: "__blank__", false:field[0] }[field[0] == '' || field[0] == undefined]|tableTruncate:panel.trimFactor:3}}</td><td style="width:40px"><i class="pointer icon-search" ng-click="build_search(micropanel.field,field[0]);dismiss();"></i> <i class="pointer icon-ban-circle" ng-click="build_search(micropanel.field,field[0],true);dismiss();"></i></td><td class="progress" style="width:100px;position:relative"><style scoped="">.progress {
|
||||
overflow: visible;
|
||||
}</style><div bs-tooltip="percent(field[1],data.length)" class="bar" ng-class="micropanelColor($index)" ng-style="{width: percent(field[1],data.length)}"></div><span style="position:absolute;right:20px">{{field[1]}}</span></td></tr></tbody></table><div class="progress"><div ng-repeat="field in micropanel.values" bs-tooltip="field[0]+' ('+percent(field[1],data.length)+')'" class="bar {{micropanelColor($index)}}" ng-style="{width: percent(field[1],data.length)};"></div></div><span ng-repeat="(field,count) in micropanel.related"><a ng-click="toggle_field(field)">{{field}}</a> ({{Math.round((count / micropanel.count) * 100)}}%),</span>
|
5
dist/app/panels/table/module.html
vendored
5
dist/app/panels/table/module.html
vendored
@ -1,5 +0,0 @@
|
||||
<div ng-controller="table" ng-init="init()"><style>.table-doc-table {
|
||||
margin-left: 0px !important;
|
||||
overflow-y: auto;
|
||||
overflow-x: scroll;
|
||||
}</style><span ng-show="panel.spyable" style="position:absolute;right:0px;top:0px" class="panelextra pointer"><i bs-modal="'app/partials/inspector.html'" class="icon-eye-open"></i></span><div class="row-fluid"><div ng-class="{'span3':panel.field_list}" ng-show="panel.field_list"><div class="sidebar-nav"><h5>Fields <i class="icon-chevron-sign-left pointer" ng-click="panel.field_list = !panel.field_list" bs-tooltip="'Hide field list'" ng-show="panel.field_list"></i></h5><ul class="unstyled" style="{{panel.overflow}}:{{panel.height || row.height}};overflow-y:auto;overflow-x:hidden"><li ng-style="panel.style" ng-repeat="field in fields.list"><i class="pointer" ng-class="{'icon-check': _.contains(panel.fields,field),'icon-check-empty': !_.contains(panel.fields,field)}" ng-click="toggle_field(field)"></i> <a class="pointer" data-unique="1" bs-popover="'app/panels/table/micropanel.html'" data-placement="right" ng-click="toggle_micropanel(field)" ng-class="{label: _.contains(panel.fields,field)}">{{field}}</a></li></ul></div></div><div style="{{panel.overflow}}:{{panel.height || row.height}}" ng-class="{'span9':panel.field_list,'span12':!panel.field_list}" class="table-doc-table"><i class="pull-left icon-chevron-sign-right pointer" ng-click="panel.field_list = !panel.field_list" bs-tooltip="'Show field list'" ng-show="!panel.field_list"></i><div class="row-fluid" ng-show="panel.paging"><div class="span1 offset1" style="text-align:right"><i ng-click="panel.offset = 0" ng-show="panel.offset > 0" class="icon-circle-arrow-left pointer"></i> <i ng-click="panel.offset = (panel.offset - panel.size)" ng-show="panel.offset > 0" class="icon-arrow-left pointer"></i></div><div class="span8" style="text-align:center"><strong>{{panel.offset}}</strong> to <strong>{{panel.offset + data.slice(panel.offset,panel.offset+panel.size).length}}</strong> <small>of {{data.length}} available for paging</small></div><div class="span1" style="text-align:left"><i ng-click="panel.offset = (panel.offset + panel.size)" ng-show="data.length > panel.offset+panel.size" class="icon-arrow-right pointer"></i></div></div><table class="table-hover table table-condensed" ng-style="panel.style"><thead ng-show="panel.header"><th ng-show="panel.fields.length<1">_source (select columns from the list to the left)</th><th style="white-space:nowrap" ng-repeat="field in panel.fields"><i ng-show="!$first" class="pointer link icon-caret-left" ng-click="_.move(panel.fields,$index,$index-1)"></i> <span class="pointer" ng-click="set_sort(field)" ng-show="panel.sortable">{{field}} <i ng-show="field == panel.sort[0]" class="pointer link" ng-class="{'icon-chevron-up': panel.sort[1] == 'asc','icon-chevron-down': panel.sort[1] == 'desc'}"></i></span> <span ng-show="!panel.sortable">{{field}}</span> <i ng-show="!$last" class="pointer link icon-caret-right" ng-click="_.move(panel.fields,$index,$index+1)"></i></th></thead><tbody ng-repeat="event in data | slice:panel.offset:panel.offset+panel.size" ng-class-odd="'odd'"><tr ng-click="toggle_details(event)" class="pointer"><td ng-show="panel.fields.length<1">{{event._source|stringify|tableTruncate:panel.trimFactor:1}}</td><td ng-show="panel.fields.length>0" ng-repeat="field in panel.fields" ng-bind-html-unsafe="(event.highlight[field]||event._source[field]) |tableHighlight | tableTruncate:panel.trimFactor:panel.fields.length"></td></tr><tr ng-show="event.kibana.details"><td colspan="1000"><table class="table table-bordered table-condensed"><thead><th>Field</th><th>Action</th><th>Value</th></thead><tr ng-repeat="(key,value) in event.kibana.details._source" ng-class-odd="'odd'"><td>{{key}}</td><td style="white-space:nowrap"><i class="icon-search pointer" ng-click="build_search(key,value)" bs-tooltip="'Add filter to match this value'"></i> <i class="icon-ban-circle pointer" ng-click="build_search(key,value,true)" bs-tooltip="'Add filter to NOT match this value'"></i> <i class="pointer icon-th" ng-click="toggle_field(key)" bs-tooltip="'Toggle table column'"></i></td><td style="white-space:pre-wrap" ng-bind-html-unsafe="value|noXml|urlLink|stringify"></td></tr></table></td></tr></tbody></table><div class="row-fluid" ng-show="panel.paging"><div class="span1 offset3" style="text-align:right"><i ng-click="panel.offset = 0" ng-show="panel.offset > 0" class="icon-circle-arrow-left pointer"></i> <i ng-click="panel.offset = (panel.offset - panel.size)" ng-show="panel.offset > 0" class="icon-arrow-left pointer"></i></div><div class="span4" style="text-align:center"><strong>{{panel.offset}}</strong> to <strong>{{panel.offset + data.slice(panel.offset,panel.offset+panel.size).length}}</strong> <small>of {{data.length}} available for paging</small></div><div class="span1" style="text-align:left"><i ng-click="panel.offset = (panel.offset + panel.size)" ng-show="data.length > panel.offset+panel.size" class="icon-arrow-right pointer"></i></div></div></div></div></div>
|
4
dist/app/panels/table/module.js
vendored
4
dist/app/panels/table/module.js
vendored
@ -1,4 +0,0 @@
|
||||
/*! kibana - v3.0.0m3pre - 2013-09-16
|
||||
* Copyright (c) 2013 Rashid Khan; Licensed Apache License */
|
||||
|
||||
define("panels/table/module",["angular","app","underscore","kbn","moment"],function(a,b,c,d,e){var f=a.module("kibana.panels.table",[]);b.useModule(f),f.controller("table",["$rootScope","$scope","fields","querySrv","dashboard","filterSrv",function(b,e,f,g,h,i){e.panelMeta={editorTabs:[{title:"Paging",src:"app/panels/table/pagination.html"},{title:"Queries",src:"app/partials/querySelect.html"}],status:"Stable",description:"A paginated table of records matching your query or queries. Click on a row to expand it and review all of the fields associated with that document. <p>"};var j={status:"Stable",queries:{mode:"all",ids:[]},size:100,pages:5,offset:0,sort:["_score","desc"],group:"default",style:{"font-size":"9pt"},overflow:"min-height",fields:[],highlight:[],sortable:!0,header:!0,paging:!0,field_list:!0,trimFactor:300,normTimes:!0,spyable:!0};c.defaults(e.panel,j),e.init=function(){e.Math=Math,e.$on("refresh",function(){e.get_data()}),e.fields=f,e.get_data()},e.percent=d.to_percent,e.toggle_micropanel=function(a){var b=c.pluck(e.data,"_source");e.micropanel={field:a,values:d.top_field_values(b,a,10),related:d.get_related_fields(b,a),count:c.countBy(b,function(b){return c.contains(c.keys(b),a)})["true"]}},e.micropanelColor=function(a){var b=["bar-success","bar-warning","bar-danger","bar-info","bar-primary"];return a>b.length?"":b[a]},e.set_sort=function(a){e.panel.sort[0]===a?e.panel.sort[1]="asc"===e.panel.sort[1]?"desc":"asc":e.panel.sort[0]=a,e.get_data()},e.toggle_field=function(a){c.indexOf(e.panel.fields,a)>-1?e.panel.fields=c.without(e.panel.fields,a):e.panel.fields.push(a)},e.toggle_highlight=function(a){c.indexOf(e.panel.highlight,a)>-1?e.panel.highlight=c.without(e.panel.highlight,a):e.panel.highlight.push(a)},e.toggle_details=function(a){a.kibana=a.kibana||{},a.kibana.details=a.kibana.details?!1:e.without_kibana(a)},e.page=function(a){e.panel.offset=a*e.panel.size,e.get_data()},e.build_search=function(b,d,f){var g;c.isArray(d)?g="("+c.map(d,function(b){return a.toJson(b)}).join(" AND ")+")":c.isUndefined(d)?(g="*",f=!f):g=a.toJson(d),i.set({type:"field",field:b,query:g,mandate:f?"mustNot":"must"}),e.panel.offset=0,h.refresh()},e.fieldExists=function(a,b){i.set({type:"exists",field:a,mandate:b}),h.refresh()},e.get_data=function(a,b){if(e.panel.error=!1,0!==h.indices.length){e.panelMeta.loading=!0,e.panel.queries.ids=g.idsByMode(e.panel.queries);var f=c.isUndefined(a)?0:a;e.segment=f;var j=e.ejs.Request().indices(h.indices[f]),k=e.ejs.BoolQuery();c.each(e.panel.queries.ids,function(a){k=k.should(g.getEjsObj(a))}),j=j.query(e.ejs.FilteredQuery(k,i.getBoolFilter(i.ids))).highlight(e.ejs.Highlight(e.panel.highlight).fragmentSize(2147483647).preTags("@start-highlight@").postTags("@end-highlight@")).size(e.panel.size*e.panel.pages).sort(e.panel.sort[0],e.panel.sort[1]),e.populate_modal(j);var l=j.doSearch();l.then(function(a){return e.panelMeta.loading=!1,0===f&&(e.hits=0,e.data=[],b=e.query_id=(new Date).getTime()),c.isUndefined(a.error)?(e.query_id===b&&(e.data=e.data.concat(c.map(a.hits.hits,function(a){return{_source:d.flatten_json(a._source),highlight:d.flatten_json(a.highlight||{}),_type:a._type,_index:a._index,_id:a._id,_sort:a.sort}})),e.hits+=a.hits.total,e.data=c.sortBy(e.data,function(a){return a._sort[0]}),"desc"===e.panel.sort[1]&&e.data.reverse(),e.data=e.data.slice(0,e.panel.size*e.panel.pages),(e.data.length<e.panel.size*e.panel.pages||!c.contains(i.timeField(),e.panel.sort[0])||"desc"!==e.panel.sort[1])&&f+1<h.indices.length&&e.get_data(f+1,e.query_id)),void 0):(e.panel.error=e.parse_error(a.error),void 0)})}},e.populate_modal=function(b){e.inspector=a.toJson(JSON.parse(b.toString()),!0)},e.without_kibana=function(a){return{_source:a._source,highlight:a.highlight}},e.set_refresh=function(a){e.refresh=a},e.close_edit=function(){e.refresh&&e.get_data(),e.refresh=!1}}]),f.filter("tableHighlight",function(){return function(a){return!c.isUndefined(a)&&!c.isNull(a)&&a.toString().length>0?a.toString().replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/\r?\n/g,"<br/>").replace(/@start-highlight@/g,'<code class="highlight">').replace(/@end-highlight@/g,"</code>"):""}}),f.filter("tableTruncate",function(){return function(a,b,d){return!c.isUndefined(a)&&!c.isNull(a)&&a.toString().length>0?a.length>b/d?a.substr(0,b/d)+"...":a:""}}),f.filter("tableFieldFormat",["fields",function(a){return function(b,d,f,g){var h;return c.isUndefined(a.mapping[f._index])||c.isUndefined(a.mapping[f._index][f._type])||(h=a.mapping[f._index][f._type][d].type,"date"!==h||!g.panel.normTimes)?b:e(b).format("YYYY-MM-DD HH:mm:ss")}}])});
|
1
dist/app/panels/table/pagination.html
vendored
1
dist/app/panels/table/pagination.html
vendored
@ -1 +0,0 @@
|
||||
<div class="row-fluid"><div class="span3"><h6>Show Controls</h6><input type="checkbox" ng-model="panel.paging" ng-checked="panel.paging"></div><div class="span2"><h6>Overflow</h6><select class="input-small" ng-model="panel.overflow" ng-options="f.value as f.key for f in [{key:'scroll',value:'height'},{key:'expand',value:'min-height'}]"></select></div></div><div class="row-fluid"><div class="span2"><h6>Per Page</h6><input type="number" class="input-mini" ng-model="panel.size" ng-change="get_data()"></div><div class="span1"><h6> </h6><center><i class="icon-remove"></i><center></center></center></div><div class="span2"><h6>Page limit</h6><input type="number" class="input-mini" ng-model="panel.pages" ng-change="get_data()"></div><div class="span2 large"><h6>Pageable</h6><strong class="large">= {{panel.size * panel.pages}}</strong></div></div>
|
1
dist/app/panels/terms/editor.html
vendored
1
dist/app/panels/terms/editor.html
vendored
@ -1 +0,0 @@
|
||||
<div class="row-fluid"><div class="span2"><label class="small">Field</label><input type="text" class="input-small" bs-typeahead="fields.list" ng-model="panel.field" ng-change="set_refresh(true)"></div><div class="span2"><label class="small">Length</label><input class="input-small" type="number" ng-model="panel.size" ng-change="set_refresh(true)"></div><div class="span3"><label class="small">Order</label><select class="input-medium" ng-model="panel.order" ng-options="f for f in ['count','term','reverse_count','reverse_term']" ng-change="set_refresh(true)"></select></div><div class="span4"><label class="small">Exclude Terms(s) (comma seperated)</label><input array-join="" type="text" ng-model="panel.exclude"></div></div><div class="row-fluid"><div class="span2"><label class="small">Style</label><select class="input-small" ng-model="panel.chart" ng-options="f for f in ['bar','pie','table']"></select></div><div class="span2" ng-show="panel.chart == 'table'"><label class="small">Font Size</label><select class="input-mini" ng-model="panel.style['font-size']" ng-options="f for f in ['7pt','8pt','9pt','10pt','12pt','14pt','16pt','18pt','20pt','24pt','28pt','32pt','36pt','42pt','48pt','52pt','60pt','72pt']"></select></div><div class="span2" ng-show="panel.chart == 'bar' || panel.chart == 'pie'"><label class="small">Legend</label><select class="input-small" ng-model="panel.counter_pos" ng-options="f for f in ['above','below','none']"></select></div><div class="span3" ng-show="panel.chart != 'table' && panel.counter_pos != 'none'"><label class="small">Legend Format</label><select class="input-small" ng-model="panel.arrangement" ng-options="f for f in ['horizontal','vertical']"></select></div><div class="span1"><label class="small">Missing</label><input type="checkbox" ng-model="panel.missing" ng-checked="panel.missing"></div><div class="span1"><label class="small">Other</label><input type="checkbox" ng-model="panel.other" ng-checked="panel.other"></div><div class="span1" ng-show="panel.chart == 'pie'"><label class="small">Donut</label><input type="checkbox" ng-model="panel.donut" ng-checked="panel.donut"></div><div class="span1" ng-show="panel.chart == 'pie'"><label class="small">Tilt</label><input type="checkbox" ng-model="panel.tilt" ng-checked="panel.tilt"></div><div class="span1" ng-show="panel.chart == 'pie'"><label class="small">Labels</label><input type="checkbox" ng-model="panel.labels" ng-checked="panel.labels"></div></div>
|
1
dist/app/panels/terms/module.html
vendored
1
dist/app/panels/terms/module.html
vendored
@ -1 +0,0 @@
|
||||
<div ng-controller="terms" ng-init="init()"><span ng-show="panel.spyable" class="spy panelextra pointer"><i bs-modal="'app/partials/inspector.html'" class="icon-eye-open"></i></span> <div ng-show="panel.counter_pos == 'above' && (panel.chart == 'bar' || panel.chart == 'pie')" id="{{$id}}-legend"><table class="small" ng-show="panel.arrangement == 'vertical'"><tr ng-repeat="term in legend"><td><i class="icon-circle" ng-style="{color:term.color}"></i></td><td style="padding-right:10px;padding-left:10px">{{term.label}}</td><td>{{term.data[0][1]}}</td></tr></table><div class="small" ng-show="panel.arrangement == 'horizontal'" ng-repeat="term in legend" style="float:left;padding-left: 10px"><span><i class="icon-circle" ng-style="{color:term.color}"></i> {{term.label}} ({{term.data[0][1]}})</span></div><br></div><div style="clear:both"></div><div ng-show="panel.chart == 'pie' || panel.chart == 'bar'" terms-chart="" params="{{panel}}" style="position:relative" class="pointer"></div><div ng-show="panel.counter_pos == 'below' && (panel.chart == 'bar' || panel.chart == 'pie')" id="{{$id}}-legend"><table class="small" ng-show="panel.arrangement == 'vertical'"><tr ng-repeat="term in legend"><td><i class="icon-circle" ng-style="{color:term.color}"></i></td><td style="padding-right:10px;padding-left:10px">{{term.label}}</td><td>{{term.data[0][1]}}</td></tr></table><div class="small" ng-show="panel.arrangement == 'horizontal'" ng-repeat="term in legend" style="float:left;padding-left: 10px"><span><i class="icon-circle" ng-style="{color:term.color}"></i></span> {{term.label}} ({{term.data[0][1]}})</div><br></div><table ng-style="panel.style" class="table table-striped table-condensed" ng-show="panel.chart == 'table'"><thead><th>Term</th><th>Count</th><th>Action</th></thead><tr ng-repeat="term in data" ng-show="showMeta(term)"><td>{{term.label}}</td><td>{{term.data[0][1]}}</td><td><span ng-hide="term.meta == 'other'"><i class="icon-search pointer" ng-click="build_search(term)"></i> <i class="icon-ban-circle pointer" ng-click="build_search(term,true)"></i></span></td></tr></table></div>
|
4
dist/app/panels/terms/module.js
vendored
4
dist/app/panels/terms/module.js
vendored
@ -1,4 +0,0 @@
|
||||
/*! kibana - v3.0.0m3pre - 2013-09-16
|
||||
* Copyright (c) 2013 Rashid Khan; Licensed Apache License */
|
||||
|
||||
define("panels/terms/module",["angular","app","underscore","jquery","kbn"],function(a,b,c,d,e){var f=a.module("kibana.panels.terms",[]);b.useModule(f),f.controller("terms",["$scope","querySrv","dashboard","filterSrv",function(b,d,e,f){b.panelMeta={editorTabs:[{title:"Queries",src:"app/partials/querySelect.html"}],status:"Beta",description:"Displays the results of an elasticsearch facet as a pie chart, bar chart, or a table"};var g={queries:{mode:"all",ids:[]},field:"_type",exclude:[],missing:!0,other:!0,size:10,order:"count",style:{"font-size":"10pt"},donut:!1,tilt:!1,labels:!0,arrangement:"horizontal",chart:"bar",counter_pos:"above",spyable:!0};c.defaults(b.panel,g),b.init=function(){b.hits=0,b.$on("refresh",function(){b.get_data()}),b.get_data()},b.get_data=function(){if(0!==e.indices.length){b.panelMeta.loading=!0;var g,h,i;g=b.ejs.Request().indices(e.indices),b.panel.queries.ids=d.idsByMode(b.panel.queries),i=b.ejs.BoolQuery(),c.each(b.panel.queries.ids,function(a){i=i.should(d.getEjsObj(a))}),g=g.facet(b.ejs.TermsFacet("terms").field(b.panel.field).size(b.panel.size).order(b.panel.order).exclude(b.panel.exclude).facetFilter(b.ejs.QueryFilter(b.ejs.FilteredQuery(i,f.getBoolFilter(f.ids))))).size(0),b.inspector=a.toJson(JSON.parse(g.toString()),!0),h=g.doSearch(),h.then(function(a){var d=0;b.panelMeta.loading=!1,b.hits=a.hits.total,b.data=[],c.each(a.facets.terms.terms,function(a){var c={label:a.term,data:[[d,a.count]],actions:!0};b.data.push(c),d+=1}),b.data.push({label:"Missing field",data:[[d,a.facets.terms.missing]],meta:"missing",color:"#aaa",opacity:0}),b.data.push({label:"Other values",data:[[d+1,a.facets.terms.other]],meta:"other",color:"#444"}),b.$emit("render")})}},b.build_search=function(a,d){if(c.isUndefined(a.meta))f.set({type:"terms",field:b.panel.field,value:a.label,mandate:d?"mustNot":"must"});else{if("missing"!==a.meta)return;f.set({type:"exists",field:b.panel.field,mandate:d?"must":"mustNot"})}e.refresh()},b.set_refresh=function(a){b.refresh=a},b.close_edit=function(){b.refresh&&b.get_data(),b.refresh=!1,b.$emit("render")},b.showMeta=function(a){return c.isUndefined(a.meta)?!0:"other"!==a.meta||b.panel.other?"missing"!==a.meta||b.panel.missing?!0:!1:!1}}]),f.directive("termsChart",["querySrv",function(b){return{restrict:"A",link:function(f,g){function h(){var a,e;g.css({height:f.panel.height||f.row.height}),e=c.clone(f.data),e=f.panel.missing?e:c.without(e,c.findWhere(e,{meta:"missing"})),e=f.panel.other?e:c.without(e,c.findWhere(e,{meta:"other"})),require(["jquery.flot.pie"],function(){try{if("bar"===f.panel.chart&&(a=d.plot(g,e,{legend:{show:!1},series:{lines:{show:!1},bars:{show:!0,fill:1,barWidth:.8,horizontal:!1},shadowSize:1},yaxis:{show:!0,min:0,color:"#c8c8c8"},xaxis:{show:!1},grid:{borderWidth:0,borderColor:"#eee",color:"#eee",hoverable:!0,clickable:!0},colors:b.colors})),"pie"===f.panel.chart){var c=function(a,b){return"<div ng-click=\"build_search(panel.field,'"+a+"')"+' "style="font-size:8pt;text-align:center;padding:2px;color:white;">'+a+"<br/>"+Math.round(b.percent)+"%</div>"};a=d.plot(g,e,{legend:{show:!1},series:{pie:{innerRadius:f.panel.donut?.4:0,tilt:f.panel.tilt?.45:1,radius:1,show:!0,combine:{color:"#999",label:"The Rest"},stroke:{width:0},label:{show:f.panel.labels,radius:2/3,formatter:c,threshold:.1}}},grid:{hoverable:!0,clickable:!0},colors:b.colors})}g.is(":visible")&&setTimeout(function(){f.legend=a.getData(),f.$$phase||f.$apply()})}catch(h){g.text(h)}})}f.$on("render",function(){h()}),a.element(window).bind("resize",function(){h()}),g.bind("plotclick",function(a,b,c){c&&f.build_search(f.data[c.seriesIndex])});var i=d("<div>");g.bind("plothover",function(a,b,c){if(c){var d="bar"===f.panel.chart?c.datapoint[1]:c.datapoint[1][0][1];i.html(e.query_color_dot(c.series.color,20)+" "+c.series.label+" ("+d.toFixed(0)+")").place_tt(b.pageX,b.pageY)}else i.remove()})}}}])});
|
1
dist/app/panels/text/editor.html
vendored
1
dist/app/panels/text/editor.html
vendored
@ -1 +0,0 @@
|
||||
<div><div class="row-fluid"><div class="span4"><label class="small">Mode</label><select class="input-medium" ng-model="panel.mode" ng-options="f for f in ['html','markdown','text']"></select></div><div class="span2" ng-show="panel.mode == 'text'"><label class="small">Font Size</label><select class="input-mini" ng-model="panel.style['font-size']" ng-options="f for f in ['6pt','7pt','8pt','10pt','12pt','14pt','16pt','18pt','20pt','24pt','28pt','32pt','36pt','42pt','48pt','52pt','60pt','72pt']"></select></div></div><label class="small">Content <span ng-show="panel.mode == 'html'">(This area uses HTML sanitized via AngularJS's <a href="http://docs.angularjs.org/api/ngSanitize.$sanitize">$sanitize</a> service)</span> <span ng-show="panel.mode == 'markdown'">(This area uses <a target="_blank" href="http://en.wikipedia.org/wiki/Markdown">Markdown</a>. HTML is not supported)</span></label><textarea ng-model="panel.content" rows="6" style="width:95%"></textarea></div>
|
1
dist/app/panels/text/module.html
vendored
1
dist/app/panels/text/module.html
vendored
@ -1 +0,0 @@
|
||||
<div ng-controller="text" ng-init="init()"><markdown ng-show="ready && panel.mode == 'markdown'">{{panel.content}}</markdown><p ng-show="panel.mode == 'text'" ng-style="panel.style" ng-bind-html="panel.content | striphtml | newlines"></p><p ng-show="panel.mode == 'html'" ng-bind-html="panel.content"></p></div>
|
4
dist/app/panels/text/module.js
vendored
4
dist/app/panels/text/module.js
vendored
File diff suppressed because one or more lines are too long
1
dist/app/panels/timepicker/editor.html
vendored
1
dist/app/panels/timepicker/editor.html
vendored
@ -1 +0,0 @@
|
||||
<div class="row-fluid"><div class="span3"><h6>Default Mode</h6><select style="width:85%" ng-model="panel.mode" ng-options="f for f in ['relative','absolute','since']"></select></div><div class="span3"><h6>Time Field</h6><input type="text" class="input-small" ng-model="panel.timefield"></div></div><div class="row-fluid"><h5>Relative mode <small>settings</small></h5><div class="span6"><h6>Relative time options <small>comma seperated</small></h6><input type="text" array-join="" class="input-large" ng-model="panel.time_options"></div><div class="span3"><h6>Default timespan</h6><select class="input-mini" ng-model="panel.timespan" ng-options="f for f in panel.time_options"></select></div><div class="row-fluid"><h5>Auto-refresh <small>settings</small></h5><div class="span1"><label class="small">Enable</label><input type="checkbox" ng-model="panel.refresh.enable" ng-checked="panel.refresh.enable"></div><div class="span2"><label class="small">Interval (seconds)</label><input type="number" class="input-mini" ng-model="panel.refresh.interval"></div><div class="span3"><label class="small">Minimum Interval (seconds)</label><input type="number" class="input-mini" ng-model="panel.refresh.min"></div></div></div>
|
3
dist/app/panels/timepicker/module.html
vendored
3
dist/app/panels/timepicker/module.html
vendored
@ -1,3 +0,0 @@
|
||||
<div ng-controller="timepicker" ng-init="init()"><style>.timepicker-block {
|
||||
display: inline-block;
|
||||
}</style><div class="row-fluid form-horizontal" ng-switch="panel.mode" ng-show="filterSrv.idsByType('time').length > 0"><div ng-switch-when="absolute"><div class="timepicker-block"><form class="nomargin"><label><small>From</small></label><input type="text" class="input-smaller" ng-change="time_check()" ng-model="timepicker.from.date" data-date-format="mm/dd/yyyy" bs-datepicker=""><input type="text" class="input-mini" ng-change="time_check()" data-show-meridian="false" data-show-seconds="true" ng-model="timepicker.from.time" bs-timepicker=""></form></div><div class="timepicker-block" style="margin-left:10px"><form class="nomargin"><label style="margin-left:5px"><small>To (<a ng-click="to_now()">now</a>)</small></label><input type="text" class="input-smaller" ng-change="time_check()" ng-model="timepicker.to.date" data-date-format="mm/dd/yyyy" bs-datepicker=""><input type="text" class="input-mini" ng-change="time_check()" data-show-meridian="false" data-show-seconds="true" ng-model="timepicker.to.time" bs-timepicker=""></form></div><div class="timepicker-block"><form class="nomargin"><button class="btn" ng-click="time_apply()"><i class="icon-ok"></i></button></form></div></div><div ng-switch-when="since"><div class="timepicker-block"><form class="nomargin"><label><small>Since</small></label><input type="text" class="input-smaller" ng-change="time_check()" ng-model="timepicker.from.date" data-date-format="mm/dd/yyyy" bs-datepicker=""><input type="text" class="input-mini" ng-change="time_check()" data-show-meridian="false" data-show-seconds="true" ng-model="timepicker.from.time" bs-timepicker=""></form></div><div class="timepicker-block" style="margin-left:10px"><form class="nomargin"><label><small><br></small></label><button class="btn" ng-click="time_apply()"><i class="icon-ok"></i></button></form></div></div><div ng-switch-when="relative"><div class="timepicker-block"><form class="nomargin input-append"><label><small>The last</small></label><button class="btn btn" ng-repeat="timespan in panel.time_options" ng-class="{'btn-success': (panel.timespan == timespan)}" ng-click="set_timespan(timespan)">{{timespan}}</button> </form></div></div></div><div class="row-fluid" ng-show="filterSrv.idsByType('time').length < 1"><div><div class="span11"><h4>No time filter present</h4></div></div></div><div class="row-fluid nomargin"><div class="span12 small" ng-show="filterSrv.idsByType('time').length > 0"><a class="link" ng-click="set_mode('relative')" ng-class="{'strong': (panel.mode == 'relative')}">Relative</a> | <a class="link" ng-click="set_mode('absolute')" ng-class="{'strong': (panel.mode == 'absolute')}">Absolute</a> | <a class="link" ng-click="set_mode('since')" ng-class="{'strong': (panel.mode == 'since')}">Since</a> <span ng-hide="panel.mode == 'absolute' || panel.mode == 'none'">|<input type="checkbox" ng-model="panel.refresh.enable" ng-change="refresh();">Auto-refresh <span ng-class="{'ng-cloak': !panel.refresh.enable}">every <a data-title="<small>Auto-refresh Settings</small>" data-placement="bottom" bs-popover="'app/panels/timepicker/refreshctrl.html'">{{panel.refresh.interval}}s</a>.</span></span></div><div class="span12 small" ng-show="filterSrv.idsByType('time').length < 1"><a class="btn btn-small" ng-click="time_apply()">Create a time filter</a></div></div></div>
|
4
dist/app/panels/timepicker/module.js
vendored
4
dist/app/panels/timepicker/module.js
vendored
@ -1,4 +0,0 @@
|
||||
/*! kibana - v3.0.0m3pre - 2013-09-16
|
||||
* Copyright (c) 2013 Rashid Khan; Licensed Apache License */
|
||||
|
||||
define("panels/timepicker/module",["angular","app","underscore","moment","kbn"],function(a,b,c,d,e){var f=a.module("kibana.panels.timepicker",[]);b.useModule(f),f.controller("timepicker",["$scope","$rootScope","$timeout","timer","$http","dashboard","filterSrv",function(a,b,f,g,h,i,j){function k(b){return b.type="time",j.removeByType("time"),a.panel.filter_id=j.set(l(b)),a.panel.filter_id}function l(a){return a=c.clone(a),a.from=a.from.toDate(),a.to=a.to.toDate(),a}function m(b,c){a.timepicker={from:{time:b.format("HH:mm:ss"),date:b.format("MM/DD/YYYY")},to:{time:c.format("HH:mm:ss"),date:c.format("MM/DD/YYYY")}}}a.panelMeta={status:"Stable",description:"A panel for controlling the time range filters. If you have time based data, or if you're using time stamped indices, you need one of these"};var n={status:"Stable",mode:"relative",time_options:["5m","15m","1h","6h","12h","24h","2d","7d","30d"],timespan:"15m",timefield:"@timestamp",timeformat:"",refresh:{enable:!1,interval:30,min:3}};c.defaults(a.panel,n),a.init=function(){switch(a.refresh_interval=a.panel.refresh.interval,a.filterSrv=j,a.panel.mode){case"absolute":a.time={from:d(a.panel.time.from,"MM/DD/YYYY HH:mm:ss")||d(e.time_ago(a.panel.timespan)),to:d(a.panel.time.to,"MM/DD/YYYY HH:mm:ss")||d()};break;case"since":a.time={from:d(a.panel.time.from,"MM/DD/YYYY HH:mm:ss")||d(e.time_ago(a.panel.timespan)),to:d()};break;case"relative":a.time={from:d(e.time_ago(a.panel.timespan)),to:d()}}a.time.field=a.panel.timefield,m(a.time.from,a.time.to),o(),"absolute"!==a.panel.mode&&k(a.time),i.refresh(),a.panel.refresh.enable&&a.set_interval(a.panel.refresh.interval),a.$on("refresh",function(){if(j.idsByType("time").length>0){var b=j.timeRange("min");(0!==a.time.from.diff(d.utc(b.from),"seconds")||0!==a.time.to.diff(d.utc(b.to),"seconds"))&&(a.set_mode("absolute"),m(d(b.from),d(b.to)),a.time=a.time_calc(),o())}})},a.set_interval=function(b){if(a.panel.refresh.interval=b,c.isNumber(a.panel.refresh.interval)){if(a.panel.refresh.interval<a.panel.refresh.min)return a.panel.refresh.interval=a.panel.refresh.min,g.cancel(a.refresh_timer),void 0;g.cancel(a.refresh_timer),a.refresh()}else g.cancel(a.refresh_timer)},a.refresh=function(){a.panel.refresh.enable?(g.cancel(a.refresh_timer),a.refresh_timer=g.register(f(function(){a.refresh(),a.time_apply()},1e3*a.panel.refresh.interval))):g.cancel(a.refresh_timer)};var o=function(){"relative"!==a.panel.mode?a.panel.time={from:a.time.from.format("MM/DD/YYYY HH:mm:ss"),to:a.time.to.format("MM/DD/YYYY HH:mm:ss")}:delete a.panel.time};a.set_mode=function(b){a.panel.mode=b,a.panel.refresh.enable="absolute"===b?!1:a.panel.refresh.enable,o()},a.to_now=function(){a.timepicker.to={time:d().format("HH:mm:ss"),date:d().format("MM/DD/YYYY")}},a.set_timespan=function(b){a.panel.timespan=b,a.timepicker.from={time:d(e.time_ago(b)).format("HH:mm:ss"),date:d(e.time_ago(b)).format("MM/DD/YYYY")},a.time_apply()},a.close_edit=function(){a.time_apply()},a.time_calc=function(){var b,g;return c.isUndefined(a.timepicker)?(b="relative"===a.panel.mode?d(e.time_ago(a.panel.timespan)):a.time.from,g="absolute"!==a.panel.mode?d():a.time.to):(b="relative"===a.panel.mode?d(e.time_ago(a.panel.timespan)):d(d(a.timepicker.from.date).format("MM/DD/YYYY")+" "+a.timepicker.from.time,"MM/DD/YYYY HH:mm:ss"),g="absolute"!==a.panel.mode?d():d(d(a.timepicker.to.date).format("MM/DD/YYYY")+" "+a.timepicker.to.time,"MM/DD/YYYY HH:mm:ss")),b.valueOf()>=g.valueOf()&&(b=d(g.valueOf()-1e3)),f(function(){m(b,g)}),{from:b,to:g}},a.time_apply=function(){a.panel.error="",j.removeByType("time"),a.time=a.time_calc(),a.time.field=a.panel.timefield,o(),k(a.time),i.refresh()},a.$watch("panel.mode",a.time_apply)}])});
|
1
dist/app/panels/timepicker/refreshctrl.html
vendored
1
dist/app/panels/timepicker/refreshctrl.html
vendored
@ -1 +0,0 @@
|
||||
<form name="refreshPopover" class="form-inline input-append" style="margin:0px"><label><small>Interval (seconds)</small></label><br><input type="number" class="input-mini" ng-model="refresh_interval"><button type="button" class="btn" ng-click="set_interval(refresh_interval);dismiss()"><i class="icon-ok"></i></button></form>
|
1
dist/app/panels/trends/editor.html
vendored
1
dist/app/panels/trends/editor.html
vendored
@ -1 +0,0 @@
|
||||
<div><div class="row-fluid"><div class="span12">The trends panel will give you a percentage representation of how your query has moved in your current timespan compared a specified amount of time ago. For example, if the time is 1:10pm, your time picker was set to "Last 10m", and the "Time Ago" parameter was set to '1h', the panel would show how much the query results have changed since 12:00-12:10pm</div></div><h4>Settings</h4><div class="row-fluid"><div class="span3" ng-hide="panel.auto_int"><label class="small">Use Elasticsearch date math format here (eg 1m, 5m, 1d, 2w, 1y)</label></div><div class="span3"><label class="small">Time Ago</label><input type="text" class="input-small" ng-model="panel.ago" ng-change="set_refresh(true)"></div><div class="span2"><label class="small">Font Size</label><select class="input-small" ng-model="panel.style['font-size']" ng-options="f for f in ['7pt','8pt','9pt','10pt','12pt','14pt','16pt','18pt','20pt','24pt','28pt','32pt','36pt','42pt','48pt','52pt','60pt','72pt']"></select></div><div class="span3"><label class="small">List Format</label><select class="input-small" ng-model="panel.arrangement" ng-options="f for f in ['horizontal','vertical']"></select></div></div></div>
|
1
dist/app/panels/trends/module.html
vendored
1
dist/app/panels/trends/module.html
vendored
@ -1 +0,0 @@
|
||||
<div ng-controller="trends" ng-init="init()"><div ng-style="panel.style" style="line-height:{{panel.style['font-size']}};display:inline-block;padding-right: 5px" ng-repeat="query in trends"><i class="icon-circle" style="color:{{query.info.color}}"></i> <span bs-tooltip="'Then: '+query.hits.old+', Now: '+query.hits.new" ng-class="{'text-success': query.hits.new >= query.hits.old, 'text-error': query.hits.old > query.hits.new}" class="pointer strong"><i class="large" ng-class="{'icon-caret-up': query.hits.new >= query.hits.old, 'icon-caret-down': query.hits.old > query.hits.new}"></i> {{query.percent}}%</span> <span class="tiny light" ng-show="query.info.alias != ''">({{query.info.alias}})</span><br ng-show="panel.arrangement == 'vertical'"></div></div>
|
4
dist/app/panels/trends/module.js
vendored
4
dist/app/panels/trends/module.js
vendored
@ -1,4 +0,0 @@
|
||||
/*! kibana - v3.0.0m3pre - 2013-09-16
|
||||
* Copyright (c) 2013 Rashid Khan; Licensed Apache License */
|
||||
|
||||
define("panels/trends/module",["angular","app","underscore","kbn"],function(a,b,c,d){var e=a.module("kibana.panels.trends",[]);b.useModule(e),e.controller("trends",["$scope","kbnIndex","querySrv","dashboard","filterSrv",function(a,b,e,f,g){function h(a,b){return 0===a?null:100*(b-a)/a}a.panelMeta={editorTabs:[{title:"Queries",src:"app/partials/querySelect.html"}],status:"Beta",description:'A stock-ticker style representation of how queries are moving over time. For example, if the time is 1:10pm, your time picker was set to "Last 10m", and the "Time Ago" parameter was set to \'1h\', the panel would show how much the query results have changed since 12:00-12:10pm'};var i={queries:{mode:"all",ids:[]},style:{"font-size":"14pt"},ago:"1d",arrangement:"vertical"};c.defaults(a.panel,i),a.init=function(){a.hits=0,a.$on("refresh",function(){a.get_data()}),a.get_data()},a.get_data=function(h,i){if(delete a.panel.error,a.panelMeta.loading=!0,0!==f.indices.length){a.index=h>0?a.index:f.indices,a.panel.queries.ids=e.idsByMode(a.panel.queries);var k=c.uniq(c.pluck(g.getByType("time"),"field"));if(k.length>1)return a.panel.error="Time field must be consistent amongst time filters",void 0;if(0===k.length)return a.panel.error="A time filter must exist for this panel to function",void 0;k=k[0],a.time=g.timeRange("min"),a.old_time={from:new Date(a.time.from.getTime()-1e3*d.interval_to_seconds(a.panel.ago)),to:new Date(a.time.to.getTime()-1e3*d.interval_to_seconds(a.panel.ago))};var l=c.isUndefined(h)?0:h,m=a.ejs.Request(),n=c.difference(g.ids,g.idsByType("time"));c.each(a.panel.queries.ids,function(b){var c=a.ejs.FilteredQuery(e.getEjsObj(b),g.getBoolFilter(n).must(a.ejs.RangeFilter(k).from(a.time.from).to(a.time.to)));m=m.facet(a.ejs.QueryFacet(b).query(c)).size(0)}),c.each(a.panel.queries.ids,function(b){var c=a.ejs.FilteredQuery(e.getEjsObj(b),g.getBoolFilter(n).must(a.ejs.RangeFilter(k).from(a.old_time.from).to(a.old_time.to)));m=m.facet(a.ejs.QueryFacet("old_"+b).query(c)).size(0)}),0===l?b.indices(a.old_time.from,a.old_time.to,f.current.index.pattern,f.current.index.interval).then(function(b){a.index=c.union(b,a.index),m=m.indices(a.index[l]),j(m.doSearch(),l,i)}):j(m.indices(a.index[l]).doSearch(),l,i)}};var j=function(b,d,f){b.then(function(b){if(a.panelMeta.loading=!1,0===d&&(a.hits={},a.data=[],f=a.query_id=(new Date).getTime()),!c.isUndefined(b.error))return a.panel.error=a.parse_error(b.error),void 0;var g=c.map(c.keys(b.facets),function(a){return isNaN(a)?void 0:parseInt(a,10)});if(a.query_id===f&&c.intersection(g,a.panel.queries.ids).length===a.panel.queries.ids.length){var i=0;c.each(a.panel.queries.ids,function(f){var g=b.facets[f].count,j=b.facets["old_"+f].count,k={"new":c.isUndefined(a.data[i])||0===d?g:a.data[i].hits.new+g,old:c.isUndefined(a.data[i])||0===d?j:a.data[i].hits.old+j};a.hits.new+=g,a.hits.old+=j;var l=null==h(k.old,k.new)?"?":Math.round(100*h(k.old,k.new))/100;a.data[i]={info:e.list[f],hits:{"new":k.new,old:k.old},percent:l},i++}),a.$emit("render"),d<a.index.length-1?a.get_data(d+1,f):a.trends=a.data}})};a.set_refresh=function(b){a.refresh=b},a.close_edit=function(){a.refresh&&a.get_data(),a.refresh=!1,a.$emit("render")}}])});
|
1
dist/app/partials/dashLoader.html
vendored
1
dist/app/partials/dashLoader.html
vendored
@ -1 +0,0 @@
|
||||
<li class="dropdown" bs-tooltip="'Load'" data-placement="bottom" ng-show="showDropdown('load')"><a href="#" class="dropdown-toggle" data-toggle="dropdown" ng-click="elasticsearch_dblist('*')"><i class="icon-folder-open"></i></a><ul class="dropdown-menu" style="padding:10px"><li ng-show="loader.load_local"><h5>Local File<tip>Load dashboard JSON layout from file</tip></h5><form><input type="file" id="dashupload" dash-upload=""><br></form></li><li ng-show="loader.load_gist"><h5>Gist<tip>Enter a gist number or url</tip></h5><form><input type="text" ng-model="gist.url" placeholder="Gist number or URL"><br><button class="btn" ng-click="gist_dblist(dashboard.gist_id(gist.url))" ng-show="dashboard.is_gist(gist.url)"><i class="icon-github-alt"></i> Get gist:{{gist.url | gistid}}</button><h6 ng-show="gist.files.length">Dashboards in gist:{{gist.url | gistid}} <small>click to load</small></h6><h6 ng-hide="gist.files.length">No gist dashboards found</h6><table class="table table-condensed table-striped"><tr ng-repeat="file in gist.files"><td><a ng-click="dashboard.dash_load(file)">{{file.title}}</a></td></tr></table></form></li><li ng-show="loader.load_elasticsearch"><h5>Elasticsearch</h5><form><input type="text" ng-model="elasticsearch.query" ng-change="elasticsearch_dblist('title:'+elasticsearch.query+'*')" placeholder="Type to filter"></form><h6 ng-show="elasticsearch.dashboards.length">Elasticsearch stored dashboards</h6><h6 ng-hide="elasticsearch.dashboards.length">No dashboards matching your query found</h6><table class="table table-condensed table-striped"><tr ng-repeat="row in elasticsearch.dashboards | orderBy:['_id']"><td><a ng-click="elasticsearch_delete(row._id)"><i class="icon-remove"></i></a></td><td><a href="#/dashboard/elasticsearch/{{row._id}}">{{row._id}}</a></td><td><a><i class="icon-share" ng-click="share = dashboard.share_link(row._id,'elasticsearch',row._id)" bs-modal="'app/panels/dashcontrol/share.html'"></i></a></td></tr></table></li></ul></li><li class="dropdown" bs-tooltip="'Save'" data-placement="bottom" ng-show="showDropdown('save')"><a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="icon-save"></i></a><ul class="dropdown-menu" style="padding:10px"><li ng-show="loader.save_default || loader.save_local"><h5>Locally</h5><ul class="unstyled"><li><a class="link" ng-show="loader.save_local" ng-click="dashboard.to_file()"><i class="icon-download"></i> Export to File</a><tip>Export layout, not data, to file</tip></li><li><a class="link" ng-show="loader.save_default" ng-click="set_default()"><i class="icon-bookmark"></i> Set as Browser Default</a><tip>Store dashboard preference to browser's localStorage</tip></li><li><a class="link" ng-show="loader.save_default" ng-click="purge_default()"><i class="icon-ban-circle"></i> Clear Browser Default</a></li></ul></li><li ng-show="loader.save_gist"><h5>Gist</h5><form class="input-append"><input class="input-medium" placeholder="Title" type="text" ng-model="gist.title"><button class="btn" ng-click="save_gist()"><i class="icon-github-alt"></i></button></form><br><small ng-show="gist.last">Last gist: <a target="_blank" href="{{gist.last}}">{{gist.last}}</a></small></li><li ng-show="loader.save_elasticsearch"><h5>Elasticsearch</h5><form class="input-append"><input class="input-medium" placeholder="Title" type="text" ng-model="elasticsearch.title"><button class="btn" ng-click="elasticsearch_save('dashboard')"><i class="icon-save"></i></button></form></li></ul></li><li ng-show="showDropdown('share')"><a bs-tooltip="'Share'" data-placement="bottom" ng-click="elasticsearch_save('temp',loader.save_temp_ttl)" bs-modal="'app/partials/dashLoaderShare.html'"><i class="icon-share"></i></a></li>
|
1
dist/app/partials/dashLoaderShare.html
vendored
1
dist/app/partials/dashLoaderShare.html
vendored
@ -1 +0,0 @@
|
||||
<div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h3>{{share.title}} <small>shareable link</small></h3></div><div class="modal-body"><label>Share this dashboard with this URL</label><input ng-model="share.link" type="text" style="width:90%" onclick="this.select()" onfocus="this.select()" ng-change="share = dashboard.share_link(share.title,share.type,share.id)"></div><div class="modal-footer"><button type="button" class="btn btn-success" ng-click="dismiss();$broadcast('render')">Close</button></div>
|
1
dist/app/partials/dashboard.html
vendored
1
dist/app/partials/dashboard.html
vendored
@ -1 +0,0 @@
|
||||
<div class="row-fluid container" style="margin-top:10px"><div class="row-fluid kibana-row" ng-controller="RowCtrl" ng-repeat="(row_name, row) in dashboard.current.rows" ng-style="row_style(row)"><div class="row-control"><div class="row-fluid row-header" style="padding:0px;margin:0px;height:0px"><div style="vertical-align:bottom"><div><div ng-class="{'row-open': !row.collapse, 'row-close': row.collapse}" style="position:absolute;margin-left:-60px"><span ng-class="{pointer:row.collapsable}" ng-click="toggle_row(row)">{{row.title}}</span> <i ng-show="row.editable" class="icon-cog pointer editlink" bs-modal="'app/partials/roweditor.html'"></i></div></div></div></div><div class="row-fluid" style="padding-top:0px" ng-hide="row.collapse"><div ng-repeat="(name, panel) in row.panels" ng-hide="panel.span == 0 || panel.hide" class="span{{panel.span}} panel" style="min-height:{{row.height}}; position:relative"><div class="row-fluid"><div class="span12 alert alert-error panel-error" ng-hide="!panel.error"><a class="close" ng-click="panel.error=false">×</a> <i class="icon-exclamation-sign"></i> <strong>Oops!</strong> {{panel.error}}</div></div><div class="row-fluid"><kibana-panel type="panel.type" ng-cloak=""></kibana-panel></div></div></div></div></div></div>
|
1
dist/app/partials/dasheditor.html
vendored
1
dist/app/partials/dasheditor.html
vendored
File diff suppressed because one or more lines are too long
2
dist/app/partials/inspector.html
vendored
2
dist/app/partials/inspector.html
vendored
@ -1,2 +0,0 @@
|
||||
<div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h3>Last Elasticsearch Query</h3></div><div class="modal-body"><div><pre>curl -XGET '{{config.elasticsearch}}/{{dashboard.indices|stringify}}/_search?pretty' -d '{{inspector}}'
|
||||
</pre></div></div><div class="modal-footer"><button type="button" class="btn btn-success" ng-click="dismiss()">Close</button></div>
|
1
dist/app/partials/load.html
vendored
1
dist/app/partials/load.html
vendored
@ -1 +0,0 @@
|
||||
<div style="margin-top:50px" ng-controller="dashcontrol"><strong>type:</strong>{{type}}<br><strong>id:</strong>{{id}}<br></div>
|
1
dist/app/partials/modal.html
vendored
1
dist/app/partials/modal.html
vendored
@ -1 +0,0 @@
|
||||
<div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h3>{{modal.title}}</h3></div><div class="modal-body"><div ng-bind-html="modal.body"></div></div><div class="modal-footer"><button type="button" class="btn btn-danger" ng-click="dismiss()">Close</button></div>
|
1
dist/app/partials/paneladd.html
vendored
1
dist/app/partials/paneladd.html
vendored
@ -1 +0,0 @@
|
||||
<div ng-include="'app/partials/panelgeneral.html'"></div><div ng-include="edit_path(panel.type)"></div><div ng-repeat="tab in panelMeta.editorTabs"><h4>{{tab.title}}</h4><div ng-include="tab.src"></div></div>
|
1
dist/app/partials/paneleditor.html
vendored
1
dist/app/partials/paneleditor.html
vendored
@ -1 +0,0 @@
|
||||
<div class="modal-body"><div class="pull-right editor-title">{{panel.type}} settings</div><div ng-model="editor.index" bs-tabs=""><div ng-repeat="tab in setEditorTabs(panelMeta)" data-title="{{tab}}"></div></div><div ng-show="editorTabs[editor.index] == 'General'"><div ng-include="" src="'app/partials/panelgeneral.html'"></div></div><div ng-show="editorTabs[editor.index] == 'Panel'"><div ng-include="" src="edit_path(panel.type)"></div></div><div ng-repeat="tab in panelMeta.editorTabs" ng-show="editorTabs[editor.index] == tab.title"><div ng-include="" src="tab.src"></div></div></div><div class="modal-footer"><button type="button" class="btn btn-danger" ng-click="editor.index=0;close_edit();dismiss()">Close</button></div>
|
1
dist/app/partials/panelgeneral.html
vendored
1
dist/app/partials/panelgeneral.html
vendored
@ -1 +0,0 @@
|
||||
<div class="row-fluid"><div class="span12"><strong>{{panelMeta.status}}</strong> // <span ng-bind-html="panelMeta.description"></span></div></div><div class="row-fluid"><div class="span4"><label class="small">Title</label><input type="text" class="input-medium" ng-model="panel.title"></div><div class="span2" ng-hide="panel.sizeable == false"><label class="small">Span</label><select class="input-mini" ng-model="panel.span" ng-options="f for f in [0,1,2,3,4,5,6,7,8,9,10,11,12]"></select></div><div class="span2"><label class="small">Editable</label><input type="checkbox" ng-model="panel.editable" ng-checked="panel.editable"></div><div class="span2" ng-show="!_.isUndefined(panel.spyable)"><label class="small">Spyable <i class="icon-question-sign" bs-tooltip="'Allow query reveal via <i class=icon-eye-open></i>'"></i></label><input type="checkbox" ng-model="panel.spyable" ng-checked="panel.spyable"></div></div>
|
9
dist/app/partials/querySelect.html
vendored
9
dist/app/partials/querySelect.html
vendored
@ -1,9 +0,0 @@
|
||||
<div class="row-fluid"><style>.querySelect .query {
|
||||
margin-right: 5px;
|
||||
}
|
||||
.querySelect .selected {
|
||||
border: 3px solid;
|
||||
}
|
||||
.querySelect .unselected {
|
||||
border: 0px solid;
|
||||
}</style><div class="span2" style="margin-left:0px"><label class="small">Queries</label><select class="input-small" ng-change="set_refresh(true);" ng-model="panel.queries.mode" ng-options="f for f in ['all','pinned','unpinned','selected']"></select></div><div class="span9 querySelect" ng-show="panel.queries.mode == 'selected'"><label class="small">Selected Queries</label><span ng-style="{'border-color': querySrv.list[id].color}" ng-class="{selected:_.contains(panel.queries.ids,id),unselected:!_.contains(panel.queries.ids,id)}" ng-repeat="id in querySrv.ids" ng-click="panel.queries.ids = _.toggleInOut(panel.queries.ids,id);set_refresh(true);" class="query pointer badge"><i class="icon-circle" ng-style="{color: querySrv.list[id].color}"></i> <span>{{querySrv.list[id].alias || querySrv.list[id].query}}</span></span></div></div>
|
1
dist/app/partials/roweditor.html
vendored
1
dist/app/partials/roweditor.html
vendored
@ -1 +0,0 @@
|
||||
<div class="modal-body"><div class="pull-right editor-title">Row settings</div><div ng-model="editor.index" bs-tabs=""><div ng-repeat="tab in ['General','Panels','Add Panel']" data-title="{{tab}}"></div></div><div class="row-fluid" ng-show="editor.index == 0"><div class="span4"><label class="small">Title</label><input type="text" class="input-medium" ng-model="row.title"></div><div class="span2"><label class="small">Height</label><input type="text" class="input-mini" ng-model="row.height"></div><div class="span1"><label class="small">Editable</label><input type="checkbox" ng-model="row.editable" ng-checked="row.editable"></div><div class="span1"><label class="small">Collapsable</label><input type="checkbox" ng-model="row.collapsable" ng-checked="row.collapsable"></div></div><div class="row-fluid" ng-show="editor.index == 1"><div class="span12"><h4>Panels</h4><table class="table table-condensed table-striped"><thead><th>Title</th><th>Type</th><th>Span</th><th>Delete</th><th>Move</th><th></th><th>Hide</th></thead><tr ng-repeat="panel in row.panels"><td>{{panel.title}}</td><td>{{panel.type}}</td><td><select ng-hide="panel.sizeable == false" class="input-mini" ng-model="panel.span" ng-options="f for f in [0,1,2,3,4,5,6,7,8,9,10,11,12]"></select></td><td><i ng-click="row.panels = _.without(row.panels,panel)" class="pointer icon-remove"></i></td><td><i ng-click="_.move(row.panels,$index,$index-1)" ng-hide="$first" class="pointer icon-arrow-up"></i></td><td><i ng-click="_.move(row.panels,$index,$index+1)" ng-hide="$last" class="pointer icon-arrow-down"></i></td><td><input type="checkbox" ng-model="panel.hide" ng-checked="panel.hide"></td></tr></table></div></div><div class="row-fluid" ng-show="editor.index == 2"><h4>Select Panel Type</h4><form class="input-append"><select class="input-medium input-append" ng-model="panel.type" ng-options="f for f in config.panel_names|stringSort"></select><small ng-show="!panel.type">Select Type</small></form><div ng-show="!(_.isUndefined(panel.type))"><div add-panel="{{panel.type}}"></div></div></div></div><div class="modal-footer"><button ng-show="panel.type && editor.index == 2" ng-click="add_panel(row,panel); reset_panel(); editor.index == 1;" class="btn btn-success" ng-disabled="panel.loadingEditor">Add Panel</button> <button type="button" class="btn btn-danger" ng-click="editor.index=0;dismiss();reset_panel();close_edit()">Close</button></div>
|
120
dist/build.txt
vendored
120
dist/build.txt
vendored
@ -1,120 +0,0 @@
|
||||
|
||||
app/app.js
|
||||
----------------
|
||||
vendor/jquery/jquery-1.8.0.js
|
||||
vendor/angular/angular.js
|
||||
vendor/underscore.js
|
||||
app/components/underscore.extended.js
|
||||
app/../vendor/elasticjs/elastic.js
|
||||
vendor/elasticjs/elastic-angular-client.js
|
||||
vendor/bootstrap/bootstrap.js
|
||||
vendor/angular/angular-sanitize.js
|
||||
vendor/angular/timepicker.js
|
||||
vendor/angular/datepicker.js
|
||||
vendor/angular/angular-strap.js
|
||||
app/components/extend-jquery.js
|
||||
app/components/settings.js
|
||||
app/services/alertSrv.js
|
||||
app/components/kbn.js
|
||||
vendor/moment.js
|
||||
vendor/modernizr-2.6.1.js
|
||||
app/services/dashboard.js
|
||||
app/services/fields.js
|
||||
app/services/filterSrv.js
|
||||
app/services/kbnIndex.js
|
||||
app/services/querySrv.js
|
||||
app/services/timer.js
|
||||
app/services/all.js
|
||||
app/controllers/dash.js
|
||||
app/controllers/dashLoader.js
|
||||
app/controllers/row.js
|
||||
app/controllers/all.js
|
||||
app/directives/addPanel.js
|
||||
app/directives/arrayJoin.js
|
||||
app/directives/dashUpload.js
|
||||
app/directives/kibanaPanel.js
|
||||
app/directives/ngBlur.js
|
||||
app/directives/ngModelOnBlur.js
|
||||
app/directives/tip.js
|
||||
app/directives/all.js
|
||||
app/filters/all.js
|
||||
app/app.js
|
||||
vendor/jquery/jquery.flot.js
|
||||
vendor/jquery/jquery.flot.pie.js
|
||||
vendor/require/text.js
|
||||
|
||||
app/panels/bettermap/module.js
|
||||
----------------
|
||||
app/panels/bettermap/leaflet/leaflet-src.js
|
||||
vendor/require/css.js
|
||||
css!panels/bettermap/leaflet/leaflet.css
|
||||
css!panels/bettermap/leaflet/plugins.css
|
||||
app/panels/bettermap/module.js
|
||||
|
||||
app/panels/column/module.js
|
||||
----------------
|
||||
app/panels/column/module.js
|
||||
|
||||
app/panels/dashcontrol/module.js
|
||||
----------------
|
||||
app/panels/dashcontrol/module.js
|
||||
|
||||
app/panels/derivequeries/module.js
|
||||
----------------
|
||||
app/panels/derivequeries/module.js
|
||||
|
||||
app/panels/fields/module.js
|
||||
----------------
|
||||
app/panels/fields/module.js
|
||||
|
||||
app/panels/filtering/module.js
|
||||
----------------
|
||||
app/panels/filtering/module.js
|
||||
|
||||
app/panels/histogram/module.js
|
||||
----------------
|
||||
app/panels/histogram/timeSeries.js
|
||||
vendor/jquery/jquery.flot.selection.js
|
||||
vendor/jquery/jquery.flot.time.js
|
||||
vendor/jquery/jquery.flot.stack.js
|
||||
app/panels/histogram/module.js
|
||||
|
||||
app/panels/hits/module.js
|
||||
----------------
|
||||
app/panels/hits/module.js
|
||||
|
||||
app/panels/map/module.js
|
||||
----------------
|
||||
app/panels/map/lib/jquery.jvectormap.min.js
|
||||
app/panels/map/module.js
|
||||
|
||||
app/panels/pie/module.js
|
||||
----------------
|
||||
app/panels/pie/module.js
|
||||
|
||||
app/panels/query/module.js
|
||||
----------------
|
||||
vendor/require/css.js
|
||||
css!panels/query/query.css
|
||||
app/panels/query/module.js
|
||||
|
||||
app/panels/table/module.js
|
||||
----------------
|
||||
app/panels/table/module.js
|
||||
|
||||
app/panels/terms/module.js
|
||||
----------------
|
||||
app/panels/terms/module.js
|
||||
|
||||
app/panels/text/module.js
|
||||
----------------
|
||||
app/panels/text/lib/showdown.js
|
||||
app/panels/text/module.js
|
||||
|
||||
app/panels/timepicker/module.js
|
||||
----------------
|
||||
app/panels/timepicker/module.js
|
||||
|
||||
app/panels/trends/module.js
|
||||
----------------
|
||||
app/panels/trends/module.js
|
54
dist/config.js
vendored
54
dist/config.js
vendored
@ -1,54 +0,0 @@
|
||||
/**
|
||||
* These is the app's configuration, If you need to configure
|
||||
* the default dashboard, please see dashboards/default
|
||||
*/
|
||||
define(['settings'],
|
||||
function (Settings) {
|
||||
|
||||
|
||||
return new Settings({
|
||||
|
||||
/**
|
||||
* URL to your elasticsearch server. You almost certainly don't
|
||||
* want 'http://localhost:9200' here. Even if Kibana and ES are on
|
||||
* the same host
|
||||
*
|
||||
* By default this will attempt to reach ES at the same host you have
|
||||
* elasticsearch installed on. You probably want to set it to the FQDN of your
|
||||
* elasticsearch host
|
||||
* @type {String}
|
||||
*/
|
||||
elasticsearch: "http://"+window.location.hostname+":9200",
|
||||
|
||||
/**
|
||||
* The default ES index to use for storing Kibana specific object
|
||||
* such as stored dashboards
|
||||
* @type {String}
|
||||
*/
|
||||
kibana_index: "kibana-int",
|
||||
|
||||
/**
|
||||
* Panel modules available. Panels will only be loaded when they are defined in the
|
||||
* dashboard, but this list is used in the "add panel" interface.
|
||||
* @type {Array}
|
||||
*/
|
||||
panel_names: [
|
||||
'histogram',
|
||||
'map',
|
||||
'pie',
|
||||
'table',
|
||||
'filtering',
|
||||
'timepicker',
|
||||
'text',
|
||||
'fields',
|
||||
'hits',
|
||||
'dashcontrol',
|
||||
'column',
|
||||
'derivequeries',
|
||||
'trends',
|
||||
'bettermap',
|
||||
'query',
|
||||
'terms'
|
||||
]
|
||||
});
|
||||
});
|
1
dist/css/animate.min.css
vendored
1
dist/css/animate.min.css
vendored
File diff suppressed because one or more lines are too long
9
dist/css/bootstrap-responsive.min.css
vendored
9
dist/css/bootstrap-responsive.min.css
vendored
File diff suppressed because one or more lines are too long
1103
dist/css/bootstrap.dark.less
vendored
1103
dist/css/bootstrap.dark.less
vendored
File diff suppressed because it is too large
Load Diff
9
dist/css/bootstrap.dark.min.css
vendored
9
dist/css/bootstrap.dark.min.css
vendored
File diff suppressed because one or more lines are too long
1006
dist/css/bootstrap.light.less
vendored
1006
dist/css/bootstrap.light.less
vendored
File diff suppressed because it is too large
Load Diff
9
dist/css/bootstrap.light.min.css
vendored
9
dist/css/bootstrap.light.min.css
vendored
File diff suppressed because one or more lines are too long
1
dist/css/font-awesome.min.css
vendored
1
dist/css/font-awesome.min.css
vendored
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user