export default function ($) { let ufilterData = { filters: { price: { fields: { i: 'price_min', x: 'price_max' } }, date: { fields: { i: 'date_min', x: 'date_max' } }, leader: { select: 'leaders', field: 'l' }, place: { select: 'places', field: 'p' }, status: { select: 'status', field: 's' }, search: { fields: { q: 'search' } }, tag: { select: 'tag', field: 't' }, category: { select: 'category', field: 'c' }, }, popovers_open : null, popovers : [], createFilterString: function(filterKey) { var filterData = ufilterData.filters[filterKey]; var filterStr = filterKey + '='; var fillterArr = []; if (filterData.fields) { for (var fieldIndex in filterData.fields) { var fieldValue = $('.popover-content .f-' + filterData.fields[fieldIndex]).val(); filterStr += fieldIndex + ':' + encodeURIComponent(fieldValue) + ','; } } else if (filterData.select) { if(filterKey == 'tag') { var uniqueValues = new Set(); } $('.popover-content .f-' + filterData.select + '-v:checked').each(function() { filterStr += $(this).val() + ','; if(filterKey == 'tag') { let parts = $(this).data('tags').split(".."); parts.forEach(part => { uniqueValues.add(part); }); } }); if(filterKey == 'tag') { $('.f-form-tag').val([...uniqueValues].join('..')); console.info($('.f-form-tag').val()); } } return filterStr.slice(0, -1); // Letztes Komma entfernen }, removeFilterFromString: function(filterString, filterKey) { var filterRegex = new RegExp(filterKey + '=[^|]*\\|?'); return filterString.replace(filterRegex, ''); }, addFilterToString: function(filterString, filterKey) { var newFilterValue = ufilterData.createFilterString(filterKey); filterString = ufilterData.removeFilterFromString(filterString, filterKey); // Entfernen Sie zuerst den vorhandenen Filterwert (falls vorhanden) // Fügen Sie den neuen Filterwert hinzu if (filterString) { return filterString + '|' + newFilterValue; } else { return newFilterValue; } }, filterExists: function(filterString, filterKey) { var filterRegex = new RegExp(filterKey + '=[^|]*'); return filterRegex.test(filterString); }, getPopoverContent: function(templateClass) { // Hauptgerüst kopieren var template = $('.ed-filter-templates .f-default').clone(); // Inhalt für den Slot extrahieren var slotContent = $('.ed-filter-templates .f-' + templateClass).html(); // Inhalt im Slot des Hauptgerüsts ersetzen template.find('.filter-slot').html(slotContent); return template.html(); }, initPopover : function (elm, filter){ if(!ufilterData.popovers.includes(filter)) { $(elm).popover({ placement: 'auto', sanitize: false, // trigger: "click", container: false,//'div.row.show-grid', template: '