cancel
Showing results for 
Search instead for 
Did you mean: 

how to search for a part of the text in the input field filter

hcardenas
Discoverer
0 Kudos

Hello ,

I have created an input field filter for a table and the code is as follows:

var Input = this.getValue(); 
//var i = 0; 
var res = Table_1.getDataSource().getMembers("BSTNK"); 
//var inputDim = ArrayUtils.create(Type.string);
var filter_data = [""];
 
if (Input === "") {
    Table_1.getDataSource().removeDimensionFilter("BSTNK");
    Chart_1.getDataSource().removeDimensionFilter("BSTNK");
Chart_2.getDataSource().removeDimensionFilter("BSTNK");
Chart_3.getDataSource().removeDimensionFilter("BSTNK");
} else {
    for (var i = 0; i < res.length; i++) { 
        if (res[i].description.startsWith(Input)) {
            filter_data.push(res[i].description);
        }
    }
    Table_1.getDataSource().setDimensionFilter("BSTNK", Input);
    Chart_1.getDataSource().setDimensionFilter("BSTNK", Input);
Chart_2.getDataSource().removeDimensionFilter("BSTNK");
Chart_3.getDataSource().removeDimensionFilter("BSTNK");
}     
 
This searches exactly for the text that I entered in the input control, but what I want to achieve is that it searches the records, if I only enter a certain part of the string, for example if the total text is "540-P04", so I can simply search for it putting "540" .            

What part of the code I have should I improve or change?

 

View Entire Topic
hcardenas
Discoverer
0 Kudos

I managed to solve it, adapt my code as follows: :

var Input = this.getValue().toLowerCase(); 
var DIM = Table_1.getDimensionsOnRows()[2]; 
var filter_data = [""];
 
Table_1.getDataSource().removeDimensionFilter(DIM); 
 
if(Input.length > 0 )
{
var selections = Table_1.getDataSource().getDataSelections();
for (var i=0;i<selections.length;i++)
{var MEM = Table_1.getDataSource().getResultMember(DIM,selections[i]);
var DESC_LOWER_CASE = MEM.description.toLowerCase(); // set to lower case 
 
var DESC_ORIGINAL = MEM.description;
// nueva var para tomar el valor de descripción original: DESC_ORIGINAL se enviará a la matriz de filtro final
 
if(DESC_LOWER_CASE.includes(Input)) 
// Compruebe si el valor del campo de entrada en minúsculas coincide con el valor de dimensión.descripción en minúsculas 
 
{filter_data.push(DESC_ORIGINAL); }  
// Agregue valores DESC_ORIGINAL a la matriz 'Filter_data' si se cumple la condición anterior
 
}  //FIN DEL PRIMER BUCLE IF
 
/*Filtrar la tabla por la dimensión DIM (ubicación) con los valores que se encuentran en el array 'Filter_data' */
if(filter_data.length-1 >0) // Necesario en caso de que nada coincida con la cadena de búsqueda
{Table_1.getDataSource().setDimensionFilter(DIM,filter_data);}}