I am working on a jquery data tablr plugin and need to filter the table data based on some criteria. I have mainly 2 select box with 4 options each. When I select the drop down, I would like to sort the data table based on the selected value. Here I would like to sort the age and salary column from the data table. I am able to sort the data by checking some condtions, but I think it is not the correct way. If any new option will come, need to check that also. So here I would like to know that is there any easy method to achive this by reducing the number of condtions.
This is my drop down
Age:
<select id="min" name="min" class="filter">
<option value="0">Select</option>
<option value="1">20 and 30</option>
<option value="2">30 and 40</option>
<option value="3">>50</option>
</select>
Salary:
<select id="max" name="max" class="filter">
<option value="0">Select</option>
<option value="1">50k and 80k</option>
<option value="2">80k and 90k</option>
<option value="3">>1 Lakh</option>
</select>
This is the condtion I have wrote and which worked for me.
var min = parseInt( $('#min').val());
var max = parseInt( $('#max').val());
var age = parseFloat( data[3] ) || 0;
var salary = parseFloat( data[5] ) || 0;
if(min==0 && max==0){
return true;
}else if(min==1 && max==0){
var maxAge = 30;
var minAge = 20;
if ( (age >= minAge && age<=maxAge) ){
return true;
}
}else if(min==2 && max==0){
var maxAge = 40;
var minAge = 30;
if ( (age > minAge && age<=maxAge) ){
return true;
}
}else if(min==3 && max==0){
var maxAge = '';
var minAge = 50;
if ( (age >= minAge ) ){
return true;
}
}else if(min==0 && max==1){
var maxSal = 80000;
var minSal = 50000;
if ( (salary >= minSal && salary<=maxSal) ){
return true;
}
}else if(min==0 && max==2){
var maxSal = 90000;
var minSal = 80000;
if ( (salary > minSal && salary<=maxSal) ){
return true;
}
}else if(min==0 && max==3){
var maxSal = '';
var minSal = 100000;
if ( (salary >= minSal ) ){
return true;
}
}else if(min==1 && max==1){
var maxAge = 30;
var minAge = 20;
var maxSal = 80000;
var minSal = 50000;
if ( (age >= minAge && age<=maxAge) && (salary >= minSal && salary<=maxSal) ){
return true;
}
}else if(min==1 && max==2){
var maxAge = 30;
var minAge = 20;
var maxSal = 90000;
var minSal = 80000;
if ( (age >= minAge && age<=maxAge) && (salary > minSal && salary<=maxSal) ){
return true;
}
}
else if(min==1 && max==3){
var maxAge = 30;
var minAge = 20;
var maxSal = '';
var minSal = 100000;
if ( (age >= minAge && age<=maxAge) && (salary >= minSal) ){
return true;
}
}else if(min==2 && max==1){
var maxAge = 40;
var minAge = 30;
var maxSal = 80000;
var minSal = 50000;
if ( (age > minAge && age<=maxAge) && (salary >= minSal && salary<=maxSal) ){
return true;
}
}
else if(min==2 && max==2){
var maxAge = 40;
var minAge = 30;
var maxSal = 90000;
var minSal = 80000;
if ( (age > minAge && age<=maxAge) && (salary > minSal && salary<=maxSal) ){
return true;
}
}else if(min==2 && max==3){
var maxAge = 40;
var minAge = 30;
var maxSal = '';
var minSal = 100000;
if ( (age > minAge && age<=maxAge) && (salary >= minSal) ){
return true;
}
}else if(min==3 && max==1){
var maxAge = '';
var minAge = 50;
var maxSal = 80000;
var minSal = 50000;
if ( (age >= minAge) && (salary >= minSal && salary<=maxSal) ){
return true;
}
}else if(min==3 && max==2){
var maxAge = '';
var minAge = 50;
var maxSal = 90000;
var minSal = 80000;
if ( (age >= minAge) && (salary > minSal && salary<=maxSal) ){
return true;
}
}else if(min==3 && max==3){
var maxAge = '';
var minAge = 50;
var maxSal = '';
var minSal = 100000;
if ( (age >= minAge) && (salary >= minSal) ){
return true;
}
}
return false;
}
Can you guys help me to solve this with any easy way other than writing a lengthy if else condition?