Quel accompagnement choisir pour une raclette réussie ?

La raclette est un plat convivial et gourmand. Le secret d’une soirée réussie réside dans le choix des accompagnements qui subliment le fromage fondu! Pour vous aider à bien doser et varier les plaisirs, nous vous proposons une série d’outils interactifs simples, en français, à intégrer facilement.

Découvrez ci-dessous les quantités recommandées par convive ainsi qu’un simulateur de courses à adapter selon vos invités. Vous pourrez aussi explorer un graphique dynamique des proportions idéales.

Quantités recommandées par convive

Tableau des accompagnements avec leurs quantités recommandées en grammes par personne
Accompagnement Quantité

Simulateur de quantités pour votre raclette

Entrez le nombre de convives et sélectionnez les accompagnements souhaités pour calculer les quantités totales recommandées.

Choisissez les accompagnements (minimum 1) :

Répartition des quantités recommandées (par convive)

// Données fournies – quantités recommandées par convive const quantitesData = { « title »: « Quantités recommandées par convive », « columns »: [« Accompagnement », « Quantité »], « rows »: [ [« Fromage à raclette », « 200 à 250 g »], [« Charcuterie », « 100 g »], [« Pommes de terre », « 250 g »], [« Légumes grillés », « 150 g »], [« Poisson fumé / Crevettes », « 50 à 80 g »], [« Tofu / Tempeh / Seitan », « 100 g »], [« Condiments (cornichons, oignons) », « en quantité suffisante »] ] }; // Fonction utilitaire qui extrait une valeur moyenne en grammes d’une chaîne (ex: « 200 à 250 g » => 225) function extraireMoyenneGrammes(str) { if (!str) return 0; if (str.includes(« quantité suffisante »)) return 50; // On estime 50g minimal comme valeur arbitraire pour condiments // Extraire les nombres const regex = /(\d+)(?:\s*à\s*(\d+))?\s*g/; const match = str.match(regex); if (!match) return 0; if (match[2]) { // Moyenne entre les deux bornes return (parseInt(match[1], 10) + parseInt(match[2], 10)) / 2; } return parseInt(match[1], 10); } // Rendu tableau dynamique (function renderQuantitiesTable { const tbody = document.getElementById(‘quantites-tbody’); quantitesData.rows.forEach(row => { const tr = document.createElement(‘tr’); tr.className = « border-b border-gray-300 »; const tdAccompagnement = document.createElement(‘td’); tdAccompagnement.className = « border px-4 py-2 font-medium »; tdAccompagnement.textContent = row[0]; const tdQuantite = document.createElement(‘td’); tdQuantite.className = « border px-4 py-2 »; tdQuantite.textContent = row[1]; tr.appendChild(tdAccompagnement); tr.appendChild(tdQuantite); tbody.appendChild(tr); }); }); // Génération des checkboxes dans le simulateur (function renderCheckboxes { const container = document.getElementById(‘accompagnements-checkboxes’); quantitesData.rows.forEach((row, idx) => { // On ne rend pas la checkbox pour condiments car « quantité suffisante » très variable, mais on la garde cochée if (row[0].toLowerCase.includes(« condiments »)) return; const id = `acc-${idx}`; const label = document.createElement(‘label’); label.className = « inline-flex items-center space-x-2 cursor-pointer »; const checkbox = document.createElement(‘input’); checkbox.type = ‘checkbox’; checkbox.id = id; checkbox.name = ‘accompagnement’; checkbox.value = row[0]; checkbox.checked = true; checkbox.className = « form-checkbox h-5 w-5 text-green-600 »; const span = document.createElement(‘span’); span.textContent = row[0]; label.appendChild(checkbox); label.appendChild(span); container.appendChild(label); }); }); // Calcul et affichage des quantités totales selon le nombre de convives et accompagnements choisis document.getElementById(‘simulateur-form’).addEventListener(‘submit’, function(event){ event.preventDefault; const nbInvites = parseInt(document.getElementById(‘nombre-invites’).value, 10); if (isNaN(nbInvites) || nbInvites el.value); if (selectedAccompagnements.length === 0) { alert(« Veuillez sélectionner au moins un accompagnement. »); return; } // Condiments toujours présents en quantité suffisante estimée (50g par personne) const condiments = quantitesData.rows.find(r => r[0].toLowerCase.includes(« condiments »)); // Calcul par accompagnement let resultHTML = `

Quantités totales recommandées pour ${nbInvites} convive${nbInvites > 1 ? ‘s’ :  »} :

    `; selectedAccompagnements.forEach(acc => { const quantiteStr = quantitesData.rows.find(r => r[0] === acc)[1]; const qteMoyenne = extraireMoyenneGrammes(quantiteStr); const qteTotale = Math.round(nbInvites * qteMoyenne); resultHTML += `
  • ${acc} : environ ${qteTotale.toLocaleString(‘fr-FR’)} g
  • `; }); // Ajouter condiments à part const qteCondiments = Math.round(nbInvites * extraireMoyenneGrammes(condiments[1])); resultHTML += `
  • ${condiments[0]} : en quantité suffisante (~${qteCondiments} g estimés)
  • `; resultHTML += `
`; document.getElementById(‘resultats-simulateur’).innerHTML = resultHTML; }); // Création graphique camembert avec Chart.js (function renderChart{ const ctx = document.getElementById(‘graphique-repartition’).getContext(‘2d’); // Labels et valeurs moyennes extraites const labels = []; const dataValues = []; quantitesData.rows.forEach(row => { if (row[0].toLowerCase.includes(« condiments »)) return; // exclure condiments du graphique labels.push(row[0]); dataValues.push(extraireMoyenneGrammes(row[1])); }); // Couleurs pastel pour chaque secteur const backgroundColors = [ ‘#FBBF24’, ‘#F87171’, ‘#34D399’, ‘#60A5FA’, ‘#A78BFA’, ‘#F472B6’ ]; window.racletteChart = new Chart(ctx, { type: ‘doughnut’, data: { labels: labels, datasets: [{ label: ‘Proportions en grammes’, data: dataValues, backgroundColor: backgroundColors, borderColor: ‘#fff’, borderWidth: 2, hoverOffset: 20 }] }, options: { responsive: true, maintainAspectRatio: false, animation: {duration: 600}, plugins: { legend: { position: ‘bottom’, labels: {font: {size:14}} }, tooltip: { callbacks: { label: ctx => `${ctx.label} : ${ctx.parsed} g` } } } } }); });