Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Highlighting #92

Merged
merged 2 commits into from
May 17, 2013
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions common/css/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
margin: 0px;
}


[ng\:cloak], [ng-cloak], .ng-cloak {
display: none !important;
}
Expand Down
3 changes: 1 addition & 2 deletions panels/derivequeries/module.js
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,6 @@ angular.module('kibana.derivequeries', [])
_.each(results.facets.query.terms, function(v) {
data.push($scope.panel.field+':"'+v.term+'"')
});
console.log(data)
$scope.send_query(data)
});
}
Expand Down Expand Up @@ -121,4 +120,4 @@ angular.module('kibana.derivequeries', [])



});
});
15 changes: 14 additions & 1 deletion panels/table/editor.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,23 @@ <h6>Add field</h6>
</form>
</div>
<div class="span8">
<h6>Selected fields <small>Click to remove</small></h6>
<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 remove pointer">{{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">
Expand Down
8 changes: 4 additions & 4 deletions panels/table/module.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@

</thead>
<tbody ng-repeat="row in data.slice(panel.offset,panel.offset+panel.size)" ng-class-odd="'odd'">
<tr ng-click="toggle_details(row)">
<td ng-repeat="field in panel.fields">{{row[field]}}</td>
<tr ng-click="toggle_details(row)" class="pointer">
<td ng-repeat="field in panel.fields" ng-bind-html-unsafe="(row.highlight[field]||row._source[field]) | highlight"></td>
</tr>
<tr ng-show="row.kibana.details">
<td colspan=1000>
Expand All @@ -46,7 +46,7 @@
<th>Action</th>
<th>Value</th>
</thead>
<tr ng-repeat="(key,value) in row.kibana.details" ng-class-odd="'odd'">
<tr ng-repeat="(key,value) in row.kibana.details._source" ng-class-odd="'odd'">
<td>{{key}}</td>
<td>
<i class='icon-search pointer' ng-click="build_search(key,value)"></i>
Expand All @@ -59,7 +59,7 @@
</tr>
</tbody>
</table>
<div class="row-fluid" ng-show="panel.paging">>
<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>
Expand Down
56 changes: 49 additions & 7 deletions panels/table/module.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ angular.module('kibana.table', [])
group : "default",
style : {'font-size': '9pt'},
fields : [],
highlight : [],
sortable: true,
header : true,
paging : true,
Expand Down Expand Up @@ -92,6 +93,13 @@ angular.module('kibana.table', [])
broadcast_results();
}

$scope.toggle_highlight = function(field) {
if (_.indexOf($scope.panel.highlight,field) > -1)
$scope.panel.highlight = _.without($scope.panel.highlight,field)
else
$scope.panel.highlight.push(field)
}

$scope.toggle_details = function(row) {
row.kibana = row.kibana || {};
row.kibana.details = !row.kibana.details ? $scope.without_kibana(row) : false;
Expand Down Expand Up @@ -129,6 +137,12 @@ angular.module('kibana.table', [])
.to($scope.time.to)
)
)
.highlight(
ejs.Highlight($scope.panel.highlight)
.fragmentSize(2147483647) // Max size of a 32bit unsigned int
.preTags('@start-highlight@')
.postTags('@end-highlight@')
)
.size($scope.panel.size*$scope.panel.pages)
.sort($scope.panel.sort[0],$scope.panel.sort[1]);

Expand All @@ -155,14 +169,17 @@ angular.module('kibana.table', [])
// Check that we're still on the same query, if not stop
if($scope.query_id === query_id) {
$scope.data= $scope.data.concat(_.map(results.hits.hits, function(hit) {
return flatten_json(hit['_source']);
return {
_source : flatten_json(hit['_source']),
highlight : flatten_json(hit['highlight']||{})
}
}));

$scope.hits += results.hits.total;

// Sort the data
$scope.data = _.sortBy($scope.data, function(v){
return v[$scope.panel.sort[0]]
return v._source[$scope.panel.sort[0]]
});

// Reverse if needed
Expand All @@ -177,7 +194,7 @@ angular.module('kibana.table', [])
}

// This breaks, use $scope.data for this
$scope.all_fields = get_all_fields($scope.data);
$scope.all_fields = get_all_fields(_.pluck($scope.data,'_source'));
broadcast_results();

// If we're not sorting in reverse chrono order, query every index for
Expand Down Expand Up @@ -205,9 +222,10 @@ angular.module('kibana.table', [])
}

$scope.without_kibana = function (row) {
row = _.clone(row)
delete row.kibana
return row
return {
_source : row._source,
highlight : row.highlight
}
}

// Broadcast a list of all fields. Note that receivers of field array
Expand All @@ -222,15 +240,39 @@ angular.module('kibana.table', [])
eventBus.broadcast($scope.$id,$scope.panel.group,"table_documents",
{
query: $scope.panel.query,
docs : $scope.data,
docs : _.pluck($scope.data,'_source'),
index: $scope.index
});
}

$scope.set_refresh = function (state) {
$scope.refresh = state;
}

$scope.close_edit = function() {
if($scope.refresh)
$scope.get_data();
$scope.refresh = false;
}


function set_time(time) {
$scope.time = time;
$scope.index = _.isUndefined(time.index) ? $scope.index : time.index
$scope.get_data();
}

})
.filter('highlight', function() {
return function(text) {
if (text.toString().length) {
return text.toString().
replace(/&/g, '&amp;').
replace(/</g, '&lt;').
replace(/>/g, '&gt;').
replace(/@start-highlight@/g, '<code class="highlight">').
replace(/@end-highlight@/g, '</code>')
}
return '';
}
});