var oldAdditionalsToggleFilter = window.toggleFilter; window.toggleFilter = function(field) { oldAdditionalsToggleFilter(field); return additionals_transform_to_select2(field); }; function filterAdditionalsFormatState (opt) { var $opt = $('' + opt.name_with_icon + ''); return $opt; } /* global availableFilters additionals_field_formats additionals_filter_urls:true* */ function additionals_transform_to_select2(field){ var field_format = availableFilters[field]['field_format']; var initialized_select2 = $('#tr_' + field + ' .values .select2'); if (initialized_select2.length == 0 && (typeof additionals_field_formats !== 'undefined') && $.inArray(field_format, additionals_field_formats) >= 0) { $('#tr_' + field + ' .toggle-multiselect').hide(); $('#tr_' + field + ' .values .value').attr('multiple', 'multiple'); $('#tr_' + field + ' .values .value').select2({ ajax: { url: additionals_filter_urls[field_format], dataType: 'json', delay: 250, data: function(params) { return { q: params.term }; }, processResults: function(data, params) { return { results: data }; }, cache: true }, placeholder: ' ', minimumInputLength: 1, width: '90%', templateResult: filterAdditionalsFormatState }).on('select2:open', function (e) { $(this).parent('span').find('.select2-search__field').val(' ').trigger($.Event('input', { which: 13 })).val(''); }); } } var SELECT2_DELAY = 250; var select2Filters = {}; function setSelect2Filter(type, options) { if (typeof operatorByType === 'undefined') { return; } operatorByType[type] = operatorByType[type] || operatorByType['list_optional']; select2Filters[type] = options; } var oldBuildFilterRow = buildFilterRow; buildFilterRow = function (field, operator, values) { oldBuildFilterRow(field, operator, values); var options = select2Options(field); if (options) { setSelect2FilterValues(field, options, values); transformToSelect2(field, options); } }; function select2Options(field) { var filter = availableFilters[field]; var options = select2Filters[filter['type']]; if (!options && filter['field_format']) { options = select2Filters[field]; } return options; } function setSelect2FilterValues(field, options, values) { var needAddValues = !rowHasSelectTag(field); if (needAddValues) { addSelectTag(field); } var $select = findSelectTagInRowBy(field); if (options['multiple'] !== false) { $select.attr('multiple', true); } if (needAddValues) { addOptionTags($select, field, values); } } function addSelectTag(field) { var fieldId = sanitizeToId(field); $('#tr_' + fieldId).find('td.values').append( '' ); } function addOptionTags($select, field, values) { var filterValues = availableFilters[field]['values']; for (var i = 0; i < filterValues.length; i++) { var filterValue = filterValues[i]; var option = $('