(function () {
var INGESCHAKELD = true;
if (!INGESCHAKELD) return;
if (!document.querySelector('.products_attributes_filters')) return;
var params = new URLSearchParams(window.location.search);
var search = params.get('search') || '';
var attribs = params.getAll('attribute_value');
var categoryId = null;
if (params.get('category')) {
categoryId = parseInt(params.get('category'));
} else {
var m = window.location.pathname.match(/\/shop\/category\/[^\/]+-(\d+)/);
if (m) categoryId = parseInt(m[1]);
}
var domain = [
['product_tmpl_id.sale_ok', '=', true],
['product_tmpl_id.is_published', '=', true]
];
if (categoryId) {
domain.push(['product_tmpl_id.public_categ_ids', 'child_of', categoryId]);
}
if (search) {
domain.push(['product_tmpl_id.name', 'ilike', search]);
}
attribs.forEach(function (av) {
var p = av.split('-');
if (p.length === 2) {
domain.push(['value_ids', 'in', [parseInt(p[1])]]);
}
});
fetch('/web/dataset/call_kw', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
method: 'call',
id: 1,
params: {
model: 'product.template.attribute.line',
method: 'search_read',
args: [domain],
kwargs: { fields: ['value_ids'], limit: 0 }
}
})
})
.then(function (r) { return r.json(); })
.then(function (data) {
if (!data.result || !data.result.length) return;
var beschikbaar = new Set();
data.result.forEach(function (line) {
(line.value_ids || []).forEach(function (id) { beschikbaar.add(id); });
});
document.querySelectorAll(
'.products_attributes_filters input[type="checkbox"][id]'
).forEach(function (input) {
var parts = input.id.split('-');
if (parts.length !== 2) return;
if (!beschikbaar.has(parseInt(parts[1]))) {
var wrap = input.closest('.form-check');
if (wrap) wrap.style.display = 'none';
}
});
document.querySelectorAll('[id^="o_products_attributes_"]').forEach(function (groep) {
var zichtbaar = groep.querySelectorAll('.form-check:not([style*="display: none"])');
if (zichtbaar.length === 0) {
var item = groep.closest('.accordion-item') || groep;
item.style.display = 'none';
}
});
})
.catch(function (e) {
console.warn('[Gamegear filter]', e);
});
})();