Comments (3)
I see what the problem is, the or-filter creates a "filters" property in the local scope of the aggregation, whereas the and-filter uses the "filters" property in the $parent scope. All "and" aggregations $watch the filters property in the $parent scope, so if you have two identical aggregations they will have their enabled filters synchronized; however, an "or" aggregation uses a filter property in the local scope, so the enabled filters will not synchronize between two identical aggregations. How to fix this is another problem entirely... suggestions welcome.
from elasticui.
Here's a hack to OrFilterController so identically named or-aggregations have synchronized filter selections, just like their and-aggregation counterpart. The general idea is to register the FilterCollection of an or-aggregation in $rootScope so an identically named or-aggregation can share the FilterCollection. There were a number of alternate approaches, but this was the lowest cost to implement.
module elasticui.controllers {
export class OrFilterController {
public filters = new util.FilterCollection();
private name: any;
private scope: any;
static $inject = ['$scope', '$rootScope'];
constructor($scope: any, $rootScope: any){
$scope.$watch('aggregation.agg', () => {
this.name = Object.keys($scope.aggregation.agg.toJSON())[0];
if ($rootScope[this.name]) {
$scope.filters = $rootScope[this.name];
} else {
$scope.filters = this.filters;
$rootScope[this.name] = this.filters;
}
});
$scope.$watchCollection('filters.ejsObjects', () => this.updateCombinedFilter());
this.scope = $scope;
}
private updateCombinedFilter() {
if (this.scope.combinedFilter) {
this.scope.$parent.filters.remove(this.scope.combinedFilter);
}
this.scope.combinedFilter = this.filters.getAsORFilter();
if (this.scope.combinedFilter) {
this.scope.$parent.filters.add(this.scope.combinedFilter);
}
}
}
}
from elasticui.
Hi Peter,
Would it be possible to provide a small JS Fiddle illustrating the issue?
I'm pretty sure I know what you mean, but before I look into a fix I want to make sure how you build the aggregations / filters.
from elasticui.
Related Issues (20)
- multiple items cannot be selected using eui-checklist widget
- Input search does not refresh the search when the clean icon is clicked
- Partial search HOT 1
- Impossible to use more than one searchbox HOT 1
- Top level filter parameter deprecated in ES 5
- checkbox does not filter
- Hello!
- is it possible to use ElasticUI with elasticsearch 5.x? HOT 6
- Has "ElasticUI" been tested with partial files?
- change indexVM.page in controlle HOT 1
- How do I add some logic to eui-query? HOT 1
- Default to AND operator in searchbox HOT 1
- Term Aggregation - Custom order
- Sort HOT 1
- Is it possible to add custom parameter to a url?
- Multilanguage, translate ... change the {{bucket.key}} on the fly
- Access Control with POST/GET/DELETE/...
- Space issue in Single Select and Checkbox HOT 2
- UseCase Searchbox to filter only one facet
- jsfiddle Demo does not work.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from elasticui.