@@ -21,6 +21,8 @@ export class ConditionItemComponent implements OnInit {
2121 @Input ( ) index : number ;
2222 @Input ( ) fields : ElasticSearchFieldInfoType [ ] ;
2323 @Output ( ) delete : EventEmitter < number > = new EventEmitter ( ) ;
24+ filteredFields : ElasticSearchFieldInfoType [ ] = [ ] ;
25+ protected readonly operatorEnum = ElasticOperatorsEnum ;
2426 selectableOperators = [ ElasticOperatorsEnum . IS_ONE_OF ,
2527 ElasticOperatorsEnum . IS_NOT_ONE_OF ,
2628 ElasticOperatorsEnum . CONTAIN_ONE_OF ,
@@ -40,6 +42,7 @@ export class ConditionItemComponent implements OnInit {
4042 private operatorsService : OperatorService ) { }
4143
4244 ngOnInit ( ) {
45+ this . filteredFields = this . fields . filter ( field => field . name && ! field . name . includes ( '.keyword' ) ) ;
4346 }
4447
4548 onScroll ( ) {
@@ -133,5 +136,22 @@ export class ConditionItemComponent implements OnInit {
133136 this . isMultipleSelectValue ( ) ;
134137 }
135138
136- protected readonly operatorEnum = ElasticOperatorsEnum ;
139+ onSearch ( term : { term : string } ) {
140+ this . filteredFields = this . fields . filter ( field => field . name && ! field . name . includes ( '.keyword' ) ) ;
141+ if ( ! term . term ) {
142+ return ;
143+ }
144+
145+ const searchTerm = term . term . toLowerCase ( ) ;
146+ this . filteredFields = this . filteredFields
147+ . filter ( field => field . name . toLowerCase ( ) . includes ( searchTerm ) )
148+ . sort ( ( a , b ) => {
149+ const aStarts = a . name . toLowerCase ( ) . startsWith ( searchTerm ) ;
150+ const bStarts = b . name . toLowerCase ( ) . startsWith ( searchTerm ) ;
151+
152+ if ( aStarts && ! bStarts ) { return - 1 ; }
153+ if ( ! aStarts && bStarts ) { return 1 ; }
154+ return a . name . localeCompare ( b . name ) ;
155+ } ) ;
156+ }
137157}
0 commit comments