|
128 | 128 | specificHtml +
|
129 | 129 | '</div>' +
|
130 | 130 | '</div>'
|
131 |
| - }; |
| 131 | + } |
132 | 132 |
|
133 | 133 | function renderTextInput(parameter, name){
|
134 | 134 | return '<input style="margin: 5px 0" class="form-control" placeholder="'+ (parameter.placeholder || name) + '">';
|
|
159 | 159 | filteredOptions = [],
|
160 | 160 | maxElementsToShow = filterModal.settings.maxElementsInMultiBox ;
|
161 | 161 |
|
| 162 | + //filtering out by date |
162 | 163 | if (filterModal.startTime || filterModal.endTime) {
|
163 | 164 | filteredOptions = filterOptionsByDateRange(parameter.options);
|
164 | 165 | }else{
|
165 | 166 | filteredOptions = parameter.options;
|
166 | 167 | }
|
167 | 168 |
|
| 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 | + |
168 | 173 | $.each(filteredOptions, function(index, filterParameter){
|
169 | 174 | var display = 'block';
|
170 | 175 | if (index > maxElementsToShow - 1 && !(filterParameter.checked)){
|
|
656 | 661 | });
|
657 | 662 | }
|
658 | 663 |
|
| 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 | + |
659 | 713 | function addSingleSelectedToDataModal(selectedItem ,selectBox){
|
660 | 714 | var serverParameterName = getAttributeBackendName(selectBox),
|
661 | 715 | humanParameterName = getAttributeHumanName(selectBox),
|
|
0 commit comments