import FilterOption from './filter-option';
import FilterOptionEnum from '../../../../enum/filter-option-enum';
import Utils from '../../../../helpers/utils';
/**
* Filter option with displayType = 'list'
* @extends FilterOption
*/
class FilterOptionList extends FilterOption {
/**
* Get the content html template for DisplayType.LIST
* Depending on its filterTreeType, it returns different templates for 'vertical' and 'horizontal'
* @returns {string} Raw html template
*/
getBlockContentTemplate() {
if (this.selectType == FilterOptionEnum.SelectType.SINGLE) {
return `
<ul class="{{class.filterOptionItemList}} {{class.filterOptionItemListSingleList}}">
{{filterItems}}
</ul>
`;
} else {
return `
<ul class="{{class.filterOptionItemList}} {{class.filterOptionItemListMultipleList}}">
{{filterItems}}
</ul>
`;
}
}
/**
* Prepare filter option data
* @param {Object} data - Filter data
*/
prepareFilterOptionData(data) {
if ((data.filterType == 'price' || data.filterType == 'variants_price') && data.values && jQ.isArray(data.values)) {
for (var i = 0; i < data.values.length; i++) {
var under = false, above = false;
// Convert max-price to active currency
if (data.values[i].hasOwnProperty('to')) {
under = true;
data.values[i]['to'] = Utils.convertPriceBasedOnActiveCurrency(data.values[i]['to']);
}
// Convert min-price to active currency
if (data.values[i].hasOwnProperty('from')) {
above = true;
data.values[i]['from'] = Utils.convertPriceBasedOnActiveCurrency(data.values[i]['from']);
}
// Replace the key string
if (under && above) {
data.values[i]['key'] = data.values[i]['from'] + '-' + data.values[i]['to'];
} else if (under) {
data.values[i]['key'] = '*-' + data.values[i]['to'];
} else {
data.values[i]['key'] = data.values[i]['from'] + '-*';
}
}
}
return data;
}
/**
* Set data for FilterOptionList. Override default setData by FilterOption.
* It calls super.setData(), and then set some extra data exclusive to range slider.
* @param {Object} data - Filter data
*/
setData(data) {
// Prepare filter option data
data = this.prepareFilterOptionData(data);
super.setData(data);
}
}
export default FilterOptionList;