Inscrivez-vous et obtenez 15% de réduction
| Boletín
Vente d'hiver
Jusqu'à 70% de réduction !
Le confort chez soi!
Découvrir maintenant
$(document).ready(function() {
var f = $('#rugFinderForm'), fi = $('#facetsInput'), pMin = $('#priceMinInput'), pMax = $('#priceMaxInput'), pD = $('#priceDropdown'), b = f.find('button[type="submit"]'), v = { t: $('#typeInput'), clr: $('#colorInput'), sz: $('#sizeInput') }, d = { t: $('#typeDropdown'), clr: $('#colorDropdown'), sz: $('#sizeDropdown') }; let p = false;
function debounce(fn, w) { let t; return function(...a) { clearTimeout(t); t = setTimeout(() => fn.apply(this, a), w); }; }
const debouncedApiCall = debounce(apiCall, 300);
function fetchData(fcts) {
if (p) return; p = true;
$.ajax({
url: '/rest/finder/items', type: 'GET', dataType: 'json', data: { facets: fcts.join(','), categoryId: v.t.val() || null, priceMin: pMin.val() || null, priceMax: pMax.val() || null },
beforeSend: () => b.prop('disabled', true),
success: r => {
updDropdown(d.clr, sortFacets((r.facets[28] || {}).values || []), 'Choisir la couleur');
updDropdown(d.sz, sortFacets((r.facets[29] || {}).values || []), 'Choisir la taille', true);
updItemCount(r.count || 0);
},
error: () => updItemCount(0),
complete: () => { b.prop('disabled', false); p = false; },
});
}
function sortFacets(f) { return f.sort((a, b) => a.id - b.id || a.name.localeCompare(b.name)); }
function updItemCount(c) { b.find('span').text(c > 0 ? c + ' Article trouvé' : 'Afficher les tapis'); }
function updDropdown(dd, v, dt, sz) {
var m = dd.next('.dropdown-menu');
m.empty().append($(' ', { type: 'button', class: 'dropdown-item text-danger' }).text('Retirer').on('click', () => resetDropdown(dd, dt)));
$.each(v, (_, i) => {
m.append($(' ', { type: 'button', class: 'dropdown-item', 'data-value': i.id }).html(sz ? fmtSize(i.name) : i.name).on('click', () => sel(dd, i.id, i.name)));
if ([201, 205, 212, 220, 224].indexOf(i.id) >= 0) m.append('
');
});
}
function fmtSize(n) { return n.replace(/(\d+(\s?x\s?\d+)?\s?cm)/g, "$1 "); }
function resetDropdown(dd, dt) {
dd.attr('data-value', ''); dd.closest('.dropdown').find('input[type="hidden"]').val('');
pMin.val(''); pMax.val('');
debouncedApiCall();
}
function sel(dd, v, t) {
if (t === 'Retirer') {
t = {
priceDropdown: 'Choisir le prix',
colorDropdown: 'Choisir la couleur',
sizeDropdown: 'Choisir la taille'
}[dd.attr('id')] || t;
}
if (dd.attr('data-value') !== String(v)) {
dd.text(t).attr('data-value', v);
dd.closest('.dropdown').find('input[type="hidden"]').val(v);
debouncedApiCall();
}
}
function apiCall() {
var fcts = [v.clr.val(), v.sz.val()].filter(x => x && x.trim());
fi.val(fcts.join(','));
fetchData(fcts);
}
f.on('submit', function(e) {
var p = new URLSearchParams();
if (pMin.val()?.trim()) p.append('priceMin', pMin.val());
if (pMax.val()?.trim()) p.append('priceMax', pMax.val());
if (fi.val()?.trim()) p.append('facets', fi.val());
p.append('categoryId', v.t.val() || '73');
f.attr('action', '/tapis' + '?' + p.toString());
f.off('submit').submit();
});
$(document).on('click', '.price-dropdown .dropdown-item', function() {
var min = $(this).data('min'), max = $(this).data('max');
if (min === 0 && max === 0) { resetDropdown(pD, 'Choisir le prix'); return; }
if (pMin.length && pMax.length) { pMin.val(min); pMax.val(max); } else { console.error('Price range inputs missing.'); return; }
var lbl = max ? min + ' € - ' + max + ' €' : min + '€ +'; pD.text(lbl);
debouncedApiCall();
});
$(document).on('click', '.dropdown-item', function() { const dd = $(this).closest('.dropdown').find('.btn'); sel(dd, $(this).data('value'), $(this).text()); });
d.t.on('click', '.dropdown-item', function() {
const val = $(this).data('value');
f.attr('action', val === '76' ? '/tapis-modernes' : val === '87' ? '/tapis-d-orient' : '/tapis');
v.t.val(val);
debouncedApiCall();
});
if (!v.clr.val() && !v.sz.val()) fetchData([]);
});
Top catégories Tout afficher Avis et évaluations
7.649+ Évaluations
5
/ 5 dans les 12 derniers mois
Nos partenaires pour une production de tapis durable
L’humain au cœur de nos préoccupations
You are on our French website!
The website is in French language. Would you like to be redirected to our Englisch website for a better experience?
Stay on Site
$(document).ready(function() {
function setLocalStorage(key, value) { localStorage.setItem(key, value); }
function getLocalStorage(key) { return localStorage.getItem(key); }
function fetchData() {
var lastShownDate = getLocalStorage('geoLocationModalShownDate');
var currentDate = new Date().getTime();
var daysSinceLastShown = lastShownDate ? (currentDate - lastShownDate) / (1000 * 3600 * 24) : null;
if (getLocalStorage('geoLocationModalShown') && daysSinceLastShown < 3) return;
fetch("https://morgenland-cpanel.eu/api/morgenland-info").then(function(r) {
if (!r.ok) throw new Error('HTTP error! status: ' + r.status);
return r.json();
}).then(function(d) {
var c = normalizeCountryCode(d.data.countryCode), l = [{"lang":"de","locale":"de","url":"https:\/\/www.morgenland-teppiche.de","name":"German","image":"https:\/\/cdn02.plentymarkets.com\/6wg68w8zahno\/frontend\/assets\/imgs\/flags\/German.png"},{"lang":"en","locale":"en","url":"https:\/\/www.morgenland-rugs.com","name":"English","image":"https:\/\/cdn02.plentymarkets.com\/6wg68w8zahno\/frontend\/assets\/imgs\/flags\/USA.png"},{"lang":"uk","locale":"en-gb","url":"https:\/\/www.morgenland-rugs.co.uk","name":"English","image":"https:\/\/cdn02.plentymarkets.com\/6wg68w8zahno\/frontend\/assets\/imgs\/flags\/UK.png"},{"lang":"nl","locale":"nl","url":"https:\/\/www.morgenland-tapijt.nl","name":"Dutch","image":"https:\/\/cdn02.plentymarkets.com\/6wg68w8zahno\/frontend\/assets\/imgs\/flags\/Netherland.png"},{"lang":"se","locale":"sv-SE","url":"https:\/\/www.morgenland-mattor.se","name":"Swedish","image":"https:\/\/cdn02.plentymarkets.com\/6wg68w8zahno\/frontend\/assets\/imgs\/flags\/Sweden.png"},{"lang":"at","locale":"de-AT","url":"https:\/\/www.morgenland-teppiche.at","name":"Austria","image":"https:\/\/cdn02.plentymarkets.com\/6wg68w8zahno\/frontend\/assets\/imgs\/flags\/Austria.png"},{"lang":"ch","locale":"de-CH","url":"https:\/\/www.morgenland-teppiche.ch","name":"Swiss German","image":"https:\/\/cdn02.plentymarkets.com\/6wg68w8zahno\/frontend\/assets\/imgs\/flags\/Switzerland.png"},{"lang":"nn","locale":"no-NO","url":"https:\/\/www.morgenland-tepper.com","name":"Norwegian","image":"https:\/\/cdn02.plentymarkets.com\/6wg68w8zahno\/frontend\/assets\/imgs\/flags\/Norway.png"},{"lang":"da","locale":"da","url":"https:\/\/www.morgenland-taepper.com","name":"Danish","image":"https:\/\/cdn02.plentymarkets.com\/6wg68w8zahno\/frontend\/assets\/imgs\/flags\/Denmark.png"},{"lang":"es","locale":"es","url":"https:\/\/www.morgenland-alfombra.es","name":"Spanish","image":"https:\/\/cdn02.plentymarkets.com\/6wg68w8zahno\/frontend\/assets\/imgs\/flags\/Spain.png"},{"lang":"it","locale":"it","url":"https:\/\/www.morgenland-tappeto.it","name":"Italian","image":"https:\/\/cdn02.plentymarkets.com\/6wg68w8zahno\/frontend\/assets\/imgs\/flags\/Italy.png"},{"lang":"pl","locale":"pl","url":"https:\/\/www.morgenland-dywany.pl","name":"Polish","image":"https:\/\/cdn02.plentymarkets.com\/6wg68w8zahno\/frontend\/assets\/imgs\/flags\/Poland.png"},{"lang":"pt","locale":"pt","url":"https:\/\/www.morgenland-tapetes.pt","name":"Portuguese","image":"https:\/\/cdn02.plentymarkets.com\/6wg68w8zahno\/frontend\/assets\/imgs\/flags\/Portguese.png"},{"lang":"cz","locale":"cs-CZ","url":"https:\/\/www.morgenland-koberce.cz","name":"Czech","image":"https:\/\/cdn02.plentymarkets.com\/6wg68w8zahno\/frontend\/assets\/imgs\/flags\/Czech-Republic.png"}], a = {"lang":"fr","name":"French","image":"https:\/\/cdn02.plentymarkets.com\/6wg68w8zahno\/frontend\/assets\/imgs\/flags\/France.png"}, f = findActiveUrl(l, c);
if (shouldShowModal(f, a, c)) {
updateModal(f);
$('#geoLocationModal').modal('show');
$('#geoLocationModal').attr('aria-hidden', 'false');
setLocalStorage('geoLocationModalShown', 'true');
setLocalStorage('geoLocationModalShownDate', currentDate);
}
}).catch(function(e) { console.error('Fetch error:', e.message); });
}
function normalizeCountryCode(c) {
return c.toLowerCase() === "gb" ? "uk" : c.toLowerCase();
}
function findActiveUrl(l, c) {
var d = l.filter(function(u) { return u.lang === 'en'; })[0];
return l.find(function(u) { return u.lang === c; }) || d;
}
function shouldShowModal(foundUrl, activeUrl, countryCode) {
if (!foundUrl || countryCode === activeUrl.lang) return false;
var exceptions = { 'de': ['at', 'ch'], 'uk': ['en'], 'en': ['uk'], 'at': ['de', 'ch'], 'ch': ['de', 'at'] };
var activeExceptions = exceptions[activeUrl.lang] || [];
return !activeExceptions.includes(foundUrl.lang);
}
function updateModal(f) {
var b = document.querySelector('#redirectButton'), t = document.querySelector('#geoLocationText'), bt = document.querySelector('#redirectButtonText'), bi = document.querySelector('#redirectButtonImage');
b.href = f.url;
t.textContent = "The website is in French language. Would you like to be redirected to our {name} website for a better experience?".replace("{name}", f.name);
bi.src = bi['data-src'] = f.image;
bi.alt = f.name;
bt.textContent = "Redirect to {name} Site".replace("{name}", f.name);
}
fetchData();
});