mirror of https://github.com/grafana/grafana
parent
5d9cb85ccf
commit
861d74ce0d
@ -1,259 +0,0 @@ |
||||
From a428f9e5deb100e0d7a1c6b210cb41127dfd24c8 Mon Sep 17 00:00:00 2001
|
||||
From: Rashid Khan <rashidkpc@gmail.com>
|
||||
Date: Fri, 6 Sep 2013 14:38:01 -0700
|
||||
Subject: [PATCH 1/5] Fix nginx.conf after switching dashboard load to GET
|
||||
|
||||
---
|
||||
sample/nginx.conf | 16 +++++++++++-----
|
||||
1 file changed, 11 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/sample/nginx.conf b/sample/nginx.conf
|
||||
index 50a365a..3af4ea2 100644
|
||||
--- a/sample/nginx.conf
|
||||
+++ b/sample/nginx.conf
|
||||
@@ -38,13 +38,19 @@ server {
|
||||
location ~ ^/kibana-int/dashboard/.*$ {
|
||||
proxy_pass http://127.0.0.1:9200;
|
||||
proxy_read_timeout 90;
|
||||
- auth_basic "Restricted";
|
||||
- auth_basic_user_file /etc/nginx/conf.d/kibana.myhost.org.htpasswd;
|
||||
+ limit_except GET {
|
||||
+ proxy_pass http://127.0.0.1:9200;
|
||||
+ auth_basic "Restricted";
|
||||
+ auth_basic_user_file /etc/nginx/conf.d/kibana.myhost.org.htpasswd;
|
||||
+ }
|
||||
}
|
||||
location ~ ^/kibana-int/temp.*$ {
|
||||
proxy_pass http://127.0.0.1:9200;
|
||||
proxy_read_timeout 90;
|
||||
- auth_basic "Restricted";
|
||||
- auth_basic_user_file /etc/nginx/conf.d/kibana.myhost.org.htpasswd;
|
||||
+ limit_except GET {
|
||||
+ proxy_pass http://127.0.0.1:9200;
|
||||
+ auth_basic "Restricted";
|
||||
+ auth_basic_user_file /etc/nginx/conf.d/kibana.myhost.org.htpasswd;
|
||||
+ }
|
||||
}
|
||||
-}
|
||||
\ No newline at end of file
|
||||
+}
|
||||
--
|
||||
1.8.4
|
||||
|
||||
|
||||
From 6a9a2b95b13346c523351175bc5fac5d43b3a674 Mon Sep 17 00:00:00 2001
|
||||
From: Stephen Wood <stephen@moz.com>
|
||||
Date: Fri, 6 Sep 2013 16:23:33 -0700
|
||||
Subject: [PATCH 2/5] Clarify error message.
|
||||
|
||||
Elasticsearch will throw a 404 if there is no indexes added yet, resulting in
|
||||
this unclear message -- even for people that are not using any sort of proxy.
|
||||
|
||||
This message update should make it easier to quickly troubleshoot why the
|
||||
the dialogue is popping up.
|
||||
---
|
||||
js/services.js | 9 +++++----
|
||||
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/js/services.js b/js/services.js
|
||||
index 1d309f5..d694062 100644
|
||||
--- a/js/services.js
|
||||
+++ b/js/services.js
|
||||
@@ -89,9 +89,10 @@ angular.module('kibana.services', [])
|
||||
if(status === 0) {
|
||||
alertSrv.set('Error',"Could not contact Elasticsearch at "+config.elasticsearch+
|
||||
". Please ensure that Elasticsearch is reachable from your system." ,'error');
|
||||
- } else {
|
||||
- alertSrv.set('Error',"Could not find "+config.elasticsearch+"/"+indices.join(',')+"/_mapping. If you"+
|
||||
- " are using a proxy, ensure it is configured correctly",'error');
|
||||
+ } else {
|
||||
+ alertSrv.set('Error',"No index found at "+config.elasticsearch+"/" +
|
||||
+ indices.join(',')+"/_mapping. Please create at least one index." +
|
||||
+ "If you're using a proxy ensure it is configured correctly.",'error');
|
||||
}
|
||||
});
|
||||
|
||||
@@ -963,4 +964,4 @@ angular.module('kibana.services', [])
|
||||
return false;
|
||||
});
|
||||
};
|
||||
-});
|
||||
\ No newline at end of file
|
||||
+});
|
||||
--
|
||||
1.8.4
|
||||
|
||||
|
||||
From e071366bbf9139fce45781a503f0f922d4db263d Mon Sep 17 00:00:00 2001
|
||||
From: Rashid Khan <rashidkpc@gmail.com>
|
||||
Date: Tue, 10 Sep 2013 14:34:45 -0700
|
||||
Subject: [PATCH 3/5] fixed unlinted line
|
||||
|
||||
---
|
||||
js/services.js | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/js/services.js b/js/services.js
|
||||
index d694062..f2c6add 100644
|
||||
--- a/js/services.js
|
||||
+++ b/js/services.js
|
||||
@@ -89,7 +89,7 @@ angular.module('kibana.services', [])
|
||||
if(status === 0) {
|
||||
alertSrv.set('Error',"Could not contact Elasticsearch at "+config.elasticsearch+
|
||||
". Please ensure that Elasticsearch is reachable from your system." ,'error');
|
||||
- } else {
|
||||
+ } else {
|
||||
alertSrv.set('Error',"No index found at "+config.elasticsearch+"/" +
|
||||
indices.join(',')+"/_mapping. Please create at least one index." +
|
||||
"If you're using a proxy ensure it is configured correctly.",'error');
|
||||
--
|
||||
1.8.4
|
||||
|
||||
|
||||
From d72c72b3dfea036cc2238f63a38625f0ac1b40ac Mon Sep 17 00:00:00 2001
|
||||
From: Spencer Alger <spencer@spenceralger.com>
|
||||
Date: Tue, 10 Sep 2013 23:25:09 -0700
|
||||
Subject: [PATCH 4/5] fixing indent issue
|
||||
|
||||
---
|
||||
js/services.js | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/js/services.js b/js/services.js
|
||||
index d694062..f2c6add 100644
|
||||
--- a/js/services.js
|
||||
+++ b/js/services.js
|
||||
@@ -89,7 +89,7 @@ angular.module('kibana.services', [])
|
||||
if(status === 0) {
|
||||
alertSrv.set('Error',"Could not contact Elasticsearch at "+config.elasticsearch+
|
||||
". Please ensure that Elasticsearch is reachable from your system." ,'error');
|
||||
- } else {
|
||||
+ } else {
|
||||
alertSrv.set('Error',"No index found at "+config.elasticsearch+"/" +
|
||||
indices.join(',')+"/_mapping. Please create at least one index." +
|
||||
"If you're using a proxy ensure it is configured correctly.",'error');
|
||||
--
|
||||
1.8.4
|
||||
|
||||
|
||||
From 7ab2a5349a52a15695d2f8fca541f880f474f4a0 Mon Sep 17 00:00:00 2001
|
||||
From: Rashid Khan <rashidkpc@gmail.com>
|
||||
Date: Wed, 11 Sep 2013 11:14:05 -0700
|
||||
Subject: [PATCH 5/5] Closes #477, closes #464. Also fixes urlLink and noXml
|
||||
filters on array fields
|
||||
|
||||
---
|
||||
js/filters.js | 56 ++++++++++++++++++++++++++++++++----------------
|
||||
panels/table/module.html | 2 +-
|
||||
panels/table/module.js | 1 +
|
||||
3 files changed, 40 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/js/filters.js b/js/filters.js
|
||||
index fb60c24..7f25a12 100644
|
||||
--- a/js/filters.js
|
||||
+++ b/js/filters.js
|
||||
@@ -32,18 +32,23 @@ angular.module('kibana.filters', [])
|
||||
return arr.toString();
|
||||
}
|
||||
};
|
||||
-
|
||||
}).filter('noXml', function() {
|
||||
- return function(text) {
|
||||
- if(!_.isString(text)) {
|
||||
- return text;
|
||||
- }
|
||||
- return text.
|
||||
+ var noXml = function(text) {
|
||||
+ return _.isString(text) ?
|
||||
+ text.
|
||||
replace(/&/g, '&').
|
||||
replace(/</g, '<').
|
||||
replace(/>/g, '>').
|
||||
replace(/'/g, ''').
|
||||
- replace(/"/g, '"');
|
||||
+ replace(/"/g, '"') :
|
||||
+ text;
|
||||
+ };
|
||||
+ return function(text) {
|
||||
+ return _.isArray(text) ?
|
||||
+ _.map(text,function(t) {
|
||||
+ return noXml(t);
|
||||
+ }) :
|
||||
+ noXml(text);
|
||||
};
|
||||
}).filter('urlLink', function() {
|
||||
var //URLs starting with http://, https://, or ftp://
|
||||
@@ -53,20 +58,35 @@ angular.module('kibana.filters', [])
|
||||
//Change email addresses to mailto:: links.
|
||||
r3 = /(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})/gim;
|
||||
|
||||
- return function(text, target, otherProp) {
|
||||
+ var urlLink = function(text) {
|
||||
+ var t1,t2,t3;
|
||||
if(!_.isString(text)) {
|
||||
return text;
|
||||
+ } else {
|
||||
+ var i=1;
|
||||
+ _.each(text.match(r1), function(url) {
|
||||
+ t1 = text.replace(r1, "<a href=\"$1\" target=\"_blank\">$1</a>");
|
||||
+ });
|
||||
+ text = t1 || text;
|
||||
+ _.each(text.match(r2), function(url) {
|
||||
+ t2 = text.replace(r2, "$1<a href=\"http://$2\" target=\"_blank\">$2</a>");
|
||||
+ });
|
||||
+ text = t2 || text;
|
||||
+ _.each(text.match(r3), function(url) {
|
||||
+ t3 = text.replace(r3, "<a href=\"mailto:$1\">$1</a>");
|
||||
+ });
|
||||
+ text = t3 || text;
|
||||
+ return text;
|
||||
}
|
||||
- _.each(text.match(r1), function(url) {
|
||||
- text = text.replace(r1, "<a href=\"$1\" target=\"_blank\">$1</a>");
|
||||
- });
|
||||
- _.each(text.match(r2), function(url) {
|
||||
- text = text.replace(r2, "$1<a href=\"http://$2\" target=\"_blank\">$2</a>");
|
||||
- });
|
||||
- _.each(text.match(r3), function(url) {
|
||||
- text = text.replace(r3, "<a href=\"mailto:$1\">$1</a>");
|
||||
- });
|
||||
- return text;
|
||||
+ };
|
||||
+
|
||||
+ return function(text, target, otherProp) {
|
||||
+
|
||||
+ return _.isArray(text) ?
|
||||
+ _.map(text,function(t) {
|
||||
+ return urlLink(t);
|
||||
+ }) :
|
||||
+ urlLink(text);
|
||||
};
|
||||
}).filter('gistid', function() {
|
||||
var gist_pattern = /(\d{5,})|([a-z0-9]{10,})|(gist.github.com(\/*.*)\/[a-z0-9]{5,}\/*$)/;
|
||||
diff --git a/panels/table/module.html b/panels/table/module.html
|
||||
index c872549..92f3bdc 100644
|
||||
--- a/panels/table/module.html
|
||||
+++ b/panels/table/module.html
|
||||
@@ -75,7 +75,7 @@
|
||||
<i class='icon-ban-circle pointer' ng-click="build_search(key,value,true)"></i>
|
||||
</td>
|
||||
<!-- At some point we need to create a more efficient way of applying the filter pipeline -->
|
||||
- <td style="white-space:pre-wrap" ng-bind-html-unsafe="value|noXml|urlLink"></td>
|
||||
+ <td style="white-space:pre-wrap" ng-bind-html-unsafe="value|noXml|urlLink|stringify"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
diff --git a/panels/table/module.js b/panels/table/module.js
|
||||
index 52c7367..0b2f62b 100644
|
||||
--- a/panels/table/module.js
|
||||
+++ b/panels/table/module.js
|
||||
@@ -267,6 +267,7 @@ angular.module('kibana.table', [])
|
||||
|
||||
|
||||
})
|
||||
+// This also escapes some xml sequences
|
||||
.filter('tableHighlight', function() {
|
||||
return function(text) {
|
||||
if (!_.isUndefined(text) && !_.isNull(text) && text.toString().length > 0) {
|
||||
--
|
||||
1.8.4
|
@ -1,368 +0,0 @@ |
||||
From ea62d4aea330fc6cd547b17438755e0f7b571b33 Mon Sep 17 00:00:00 2001
|
||||
From: Rashid Khan <rashidkpc@gmail.com>
|
||||
Date: Wed, 11 Sep 2013 15:42:03 -0700
|
||||
Subject: [PATCH 1/5] Added pointer to chart hovers
|
||||
|
||||
---
|
||||
panels/histogram/module.html | 10 +++++-----
|
||||
panels/pie/module.html | 4 ++--
|
||||
panels/terms/module.html | 12 ++++++------
|
||||
3 files changed, 13 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/panels/histogram/module.html b/panels/histogram/module.html
|
||||
index 5d76715..4ce6b6a 100644
|
||||
--- a/panels/histogram/module.html
|
||||
+++ b/panels/histogram/module.html
|
||||
@@ -8,10 +8,10 @@
|
||||
display:inline-block;
|
||||
height:10px;
|
||||
width:10px;
|
||||
- border-radius:5px;
|
||||
+ border-radius:5px;
|
||||
}
|
||||
.histogram-legend-item {
|
||||
- display:inline-block;
|
||||
+ display:inline-block;
|
||||
}
|
||||
.histogram-chart {
|
||||
position:relative;
|
||||
@@ -23,7 +23,7 @@
|
||||
<div>
|
||||
<span ng-show='panel.zoomlinks && data'>
|
||||
<!--<a class='small' ng-click='zoom(0.5)'><i class='icon-zoom-in'></i> Zoom In</a>-->
|
||||
- <a class='small' ng-click='zoom(2)'><i class='icon-zoom-out'></i> Zoom Out</a> |
|
||||
+ <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>
|
||||
@@ -32,5 +32,5 @@
|
||||
<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="common/img/load_big.gif"></center>
|
||||
- <div histogram-chart class="histogram-chart" params="{{panel}}"></div>
|
||||
-</kibana-panel>
|
||||
\ No newline at end of file
|
||||
+ <div histogram-chart class="pointer histogram-chart" params="{{panel}}"></div>
|
||||
+</kibana-panel>
|
||||
\ No newline at end of file
|
||||
diff --git a/panels/pie/module.html b/panels/pie/module.html
|
||||
index a36cf2c..f089586 100644
|
||||
--- a/panels/pie/module.html
|
||||
+++ b/panels/pie/module.html
|
||||
@@ -8,9 +8,9 @@
|
||||
</div><br>
|
||||
<div style="clear:both"></div>
|
||||
|
||||
- <div pie params="{{panel}}" style="position:relative"></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></span>
|
||||
</div>
|
||||
-</kibana-panel>
|
||||
\ No newline at end of file
|
||||
+</kibana-panel>
|
||||
\ No newline at end of file
|
||||
diff --git a/panels/terms/module.html b/panels/terms/module.html
|
||||
index 814729c..70b870b 100644
|
||||
--- a/panels/terms/module.html
|
||||
+++ b/panels/terms/module.html
|
||||
@@ -5,7 +5,7 @@
|
||||
<!-- START Pie or bar chart -->
|
||||
<div ng-show="panel.counter_pos == 'above' && (panel.chart == 'bar' || panel.chart == 'pie')" id='{{$id}}-legend'>
|
||||
<!-- vertical legend above -->
|
||||
- <table class="small" ng-show="panel.arrangement == 'vertical'">
|
||||
+ <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>
|
||||
@@ -21,11 +21,11 @@
|
||||
<!-- keep legend from over lapping -->
|
||||
<div style="clear:both"></div>
|
||||
|
||||
- <div ng-show="panel.chart == 'pie' || panel.chart == 'bar'" terms-chart params="{{panel}}" style="position:relative"></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'>
|
||||
<!-- vertical legend below -->
|
||||
- <table class="small" ng-show="panel.arrangement == 'vertical'">
|
||||
+ <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></i></td> <td style="padding-right:10px;padding-left:10px;">{{term.label}}</td><td>{{term.data[0][1]}}</td>
|
||||
</tr>
|
||||
@@ -39,7 +39,7 @@
|
||||
</div>
|
||||
<!-- END Pie or Bar chart -->
|
||||
|
||||
- <table ng-style="panel.style" class="table table-striped table-condensed" ng-show="panel.chart == 'table'">
|
||||
+ <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>
|
||||
@@ -48,11 +48,11 @@
|
||||
<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-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>
|
||||
|
||||
-</kibana-panel>
|
||||
\ No newline at end of file
|
||||
+</kibana-panel>
|
||||
\ No newline at end of file
|
||||
--
|
||||
1.8.4
|
||||
|
||||
|
||||
From b63af822c75342a39362e4aef3693ed50cdebe44 Mon Sep 17 00:00:00 2001
|
||||
From: Rashid Khan <rashidkpc@gmail.com>
|
||||
Date: Wed, 11 Sep 2013 15:58:53 -0700
|
||||
Subject: [PATCH 2/5] Cleaned up timepicker layout
|
||||
|
||||
---
|
||||
panels/timepicker/module.html | 43 ++++++++++++++++++++++++-------------------
|
||||
1 file changed, 24 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/panels/timepicker/module.html b/panels/timepicker/module.html
|
||||
index 2c89289..c327b42 100644
|
||||
--- a/panels/timepicker/module.html
|
||||
+++ b/panels/timepicker/module.html
|
||||
@@ -1,36 +1,41 @@
|
||||
<kibana-panel ng-controller='timepicker' ng-init="init()">
|
||||
- <div class="row-fluid" ng-switch="panel.mode" ng-show="filterSrv.idsByType('time').length > 0">
|
||||
- <div ng-switch-when="absolute">
|
||||
- <div class="span5">
|
||||
+ <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-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="span5" style="margin-left:10px">
|
||||
+ <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-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="span1">
|
||||
+ <div class="timepicker-block">
|
||||
<form class="nomargin">
|
||||
- <label><small><br></small></label>
|
||||
- <button class="btn" ng-click="time_apply()" ><i class="icon-ok"></i></button>
|
||||
+ <button class="btn" ng-click="time_apply()"><i class="icon-ok"></i></button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div ng-switch-when="since">
|
||||
- <div class="span5">
|
||||
+ <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-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="span1" style="margin-left:10px">
|
||||
+ <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>
|
||||
@@ -38,7 +43,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div ng-switch-when="relative">
|
||||
- <div class="span11">
|
||||
+ <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>
|
||||
@@ -56,18 +61,18 @@
|
||||
</div>
|
||||
<div class="row-fluid nomargin">
|
||||
<div class="span12 small" ng-show="filterSrv.idsByType('time').length > 0">
|
||||
- <a ng-click="set_mode('relative')" ng-class="{'strong': (panel.mode == 'relative')}">Relative</a> |
|
||||
- <a ng-click="set_mode('absolute')" ng-class="{'strong': (panel.mode == 'absolute')}">Absolute</a> |
|
||||
- <a 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
|
||||
+ <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="'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>
|
||||
+ <a class='btn btn-small' ng-click="time_apply()">Create a time filter</a>
|
||||
</div>
|
||||
</div>
|
||||
</kibana-panel>
|
||||
\ No newline at end of file
|
||||
--
|
||||
1.8.4
|
||||
|
||||
|
||||
From 14d525da34e80ed9523fdca87fa12bc63b98733b Mon Sep 17 00:00:00 2001
|
||||
From: Rashid Khan <rashidkpc@gmail.com>
|
||||
Date: Wed, 11 Sep 2013 16:39:17 -0700
|
||||
Subject: [PATCH 3/5] added JSONifying of objects
|
||||
|
||||
---
|
||||
js/filters.js | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/js/filters.js b/js/filters.js
|
||||
index 7f25a12..c21fa0b 100644
|
||||
--- a/js/filters.js
|
||||
+++ b/js/filters.js
|
||||
@@ -29,7 +29,11 @@ angular.module('kibana.filters', [])
|
||||
}).filter('stringify', function() {
|
||||
return function(arr, start, end) {
|
||||
if(!_.isUndefined(arr)) {
|
||||
- return arr.toString();
|
||||
+ if(_.isObject(arr) && !_.isArray(arr)) {
|
||||
+ return angular.toJson(arr);
|
||||
+ } else {
|
||||
+ return arr.toString();
|
||||
+ }
|
||||
}
|
||||
};
|
||||
}).filter('noXml', function() {
|
||||
--
|
||||
1.8.4
|
||||
|
||||
|
||||
From 8b5ac5e56eaf23111116fb4544bf4ad8a679cfdc Mon Sep 17 00:00:00 2001
|
||||
From: Rashid Khan <rashidkpc@gmail.com>
|
||||
Date: Wed, 11 Sep 2013 16:41:53 -0700
|
||||
Subject: [PATCH 4/5] Show _source by default, sort by _score by default
|
||||
|
||||
---
|
||||
panels/table/module.html | 14 +++++++++-----
|
||||
panels/table/module.js | 4 ++--
|
||||
2 files changed, 11 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/panels/table/module.html b/panels/table/module.html
|
||||
index 92f3bdc..b59af11 100644
|
||||
--- a/panels/table/module.html
|
||||
+++ b/panels/table/module.html
|
||||
@@ -39,10 +39,12 @@
|
||||
<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 class="small" ng-show="panel.fields.length == 0"><center>No columns configured. You may want to select some from the list on the left.</center></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>
|
||||
|
||||
@@ -58,7 +60,8 @@
|
||||
<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-repeat="field in panel.fields" ng-bind-html-unsafe="(event.highlight[field]||event._source[field]) | tableFieldFormat:field:event:this |tableHighlight | tableTruncate:panel.trimFactor:panel.fields.length"></td>-->
|
||||
- <td ng-repeat="field in panel.fields" ng-bind-html-unsafe="(event.highlight[field]||event._source[field]) |tableHighlight | tableTruncate:panel.trimFactor:panel.fields.length"></td>
|
||||
+ <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>
|
||||
@@ -70,9 +73,10 @@
|
||||
</thead>
|
||||
<tr ng-repeat="(key,value) in event.kibana.details._source" ng-class-odd="'odd'">
|
||||
<td>{{key}}</td>
|
||||
- <td>
|
||||
- <i class='icon-search pointer' ng-click="build_search(key,value)"></i>
|
||||
- <i class='icon-ban-circle pointer' ng-click="build_search(key,value,true)"></i>
|
||||
+ <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>
|
||||
<!-- At some point we need to create a more efficient way of applying the filter pipeline -->
|
||||
<td style="white-space:pre-wrap" ng-bind-html-unsafe="value|noXml|urlLink|stringify"></td>
|
||||
diff --git a/panels/table/module.js b/panels/table/module.js
|
||||
index 0b2f62b..bfac1a3 100644
|
||||
--- a/panels/table/module.js
|
||||
+++ b/panels/table/module.js
|
||||
@@ -45,10 +45,10 @@ angular.module('kibana.table', [])
|
||||
size : 100, // Per page
|
||||
pages : 5, // Pages available
|
||||
offset : 0,
|
||||
- sort : ['@timestamp','desc'],
|
||||
+ sort : ['_score','desc'],
|
||||
group : "default",
|
||||
style : {'font-size': '9pt'},
|
||||
- overflow: 'height',
|
||||
+ overflow: 'min-height',
|
||||
fields : [],
|
||||
highlight : [],
|
||||
sortable: true,
|
||||
--
|
||||
1.8.4
|
||||
|
||||
|
||||
From 4b0678542c9d9bb8ebeed4e92bbe85d30f9e1d6a Mon Sep 17 00:00:00 2001
|
||||
From: Rashid Khan <rashidkpc@gmail.com>
|
||||
Date: Wed, 11 Sep 2013 16:46:15 -0700
|
||||
Subject: [PATCH 5/5] Removed default @message from logstash dashboards
|
||||
|
||||
---
|
||||
dashboards/logstash.js | 2 +-
|
||||
dashboards/logstash.json | 2 --
|
||||
2 files changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dashboards/logstash.js b/dashboards/logstash.js
|
||||
index e67a080..16f6280 100644
|
||||
--- a/dashboards/logstash.js
|
||||
+++ b/dashboards/logstash.js
|
||||
@@ -160,7 +160,7 @@ dashboard.rows[3].panels = [
|
||||
dashboard.rows[4].panels = [
|
||||
{
|
||||
type: 'table',
|
||||
- fields: !_.isUndefined(ARGS.fields) ? ARGS.fields.split(',') : ['@timestamp','@message'],
|
||||
+ fields: !_.isUndefined(ARGS.fields) ? ARGS.fields.split(',') : [],
|
||||
sort: !_.isUndefined(ARGS.sort) ? ARGS.sort.split(',') : [ARGS.timefield||'@timestamp','desc'],
|
||||
overflow: 'expand'
|
||||
}
|
||||
diff --git a/dashboards/logstash.json b/dashboards/logstash.json
|
||||
index 4631e91..fcad036 100644
|
||||
--- a/dashboards/logstash.json
|
||||
+++ b/dashboards/logstash.json
|
||||
@@ -191,8 +191,6 @@
|
||||
},
|
||||
"overflow": "min-height",
|
||||
"fields": [
|
||||
- "@timestamp",
|
||||
- "@message"
|
||||
],
|
||||
"highlight": [],
|
||||
"sortable": true,
|
||||
--
|
||||
1.8.4
|
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue