Skip to content

Commit 3dd56c5

Browse files
committed
adding related to filtering
1 parent 96a17f8 commit 3dd56c5

File tree

1 file changed

+55
-1
lines changed

1 file changed

+55
-1
lines changed

jquery.filters.js

+55-1
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@
128128
specificHtml +
129129
'</div>' +
130130
'</div>'
131-
};
131+
}
132132

133133
function renderTextInput(parameter, name){
134134
return '<input style="margin: 5px 0" class="form-control" placeholder="'+ (parameter.placeholder || name) + '">';
@@ -159,12 +159,17 @@
159159
filteredOptions = [],
160160
maxElementsToShow = filterModal.settings.maxElementsInMultiBox ;
161161

162+
//filtering out by date
162163
if (filterModal.startTime || filterModal.endTime) {
163164
filteredOptions = filterOptionsByDateRange(parameter.options);
164165
}else{
165166
filteredOptions = parameter.options;
166167
}
167168

169+
// filtering out by relatedTo, if related To selected.
170+
// for example, not showing BMW option if filter ASIA was selected
171+
filteredOptions = filterOutSelectedRelatedTo(filteredOptions);
172+
168173
$.each(filteredOptions, function(index, filterParameter){
169174
var display = 'block';
170175
if (index > maxElementsToShow - 1 && !(filterParameter.checked)){
@@ -656,6 +661,55 @@
656661
});
657662
}
658663

664+
function filterOutSelectedRelatedTo(options){
665+
var result = [],
666+
relevantSelectedFilter;
667+
668+
$.each(options, function(_, option){
669+
if (option.relatedTo){
670+
$.each(option.relatedTo, function(relatedToName, relatedToValue){
671+
relevantSelectedFilter = getRelevantSelectedFilter(relatedToName);
672+
if (relevantSelectedFilter) {
673+
if (existsInSelectedFilter(relevantSelectedFilter.values, relatedToValue.value)) {
674+
result.push(option)
675+
}
676+
}else{
677+
result.push(option)
678+
}
679+
})
680+
}else{
681+
result.push(option)
682+
}
683+
});
684+
685+
return result;
686+
}
687+
688+
function getRelevantSelectedFilter(relatedToName){
689+
var relevantFilter = undefined;
690+
691+
$.each(filterModal.selectedFilterParameters, function(filterName, filter){
692+
if (relatedToName == filterName){
693+
relevantFilter = filter;
694+
return true;
695+
}
696+
});
697+
return relevantFilter;
698+
}
699+
700+
function existsInSelectedFilter(selectFilterValues, relatedToValue){
701+
var exists = false,
702+
selectedValues;
703+
704+
selectedValues = selectFilterValues.map(function(element) { return element.value });
705+
if (existsInArray(relatedToValue, selectedValues)){
706+
exists = true;
707+
return true;
708+
}
709+
710+
return exists;
711+
}
712+
659713
function addSingleSelectedToDataModal(selectedItem ,selectBox){
660714
var serverParameterName = getAttributeBackendName(selectBox),
661715
humanParameterName = getAttributeHumanName(selectBox),

0 commit comments

Comments
 (0)