/** * mettre à jour la barre de progression * pour le formulaire de modification */ function updateCompletionProgress() { const inputs = document.querySelectorAll('input[data-important]'); let filledInputs = 0; let totalInputs = inputs.length; let missingFields = []; inputs.forEach(input => { if (input.value.trim() !== '') { filledInputs++; } else { // Get the field label or name for display in the popup let fieldName = ''; const label = input.closest('.row')?.querySelector('.form-label, .label-translated'); if (label) { fieldName = label.textContent.trim(); } else { // If no label found, try to get a meaningful name from the input const name = input.getAttribute('name'); if (name) { // Extract field name from the attribute (e.g., commerce_tag_value__contact:email -> Email) const parts = name.split('__'); if (parts.length > 1) { fieldName = parts[1].replace('commerce_tag_value_', '').replace('contact:', ''); // Capitalize first letter fieldName = fieldName.charAt(0).toUpperCase() + fieldName.slice(1); } else { fieldName = name; } } } missingFields.push(fieldName || input.getAttribute('name') || 'Champ inconnu'); } }); const completionPercentage = (filledInputs / totalInputs) * 100; const progressBar = document.querySelector('#completion_progress .progress-bar'); if (progressBar) { progressBar.style.width = completionPercentage + '%'; progressBar.setAttribute('aria-valuenow', completionPercentage); // Create the completion display with a clickable question mark const displayElement = document.querySelector('#completion_display'); // Format missing fields as an HTML list for better readability let missingFieldsContent = ''; if (missingFields.length > 0) { missingFieldsContent = ''; } else { missingFieldsContent = 'Tous les champs importants sont remplis !'; } displayElement.innerHTML = `Votre commerce est complété à ${Math.round(completionPercentage)}% ?`; // Initialize the Bootstrap popover const popoverTrigger = displayElement.querySelector('.missing-fields-info'); if (popoverTrigger) { // Add click handler to focus on the first missing field popoverTrigger.addEventListener('click', function(e) { e.preventDefault(); // Prevent scrolling to top // Find the first missing field const missingInput = document.querySelector('input[data-important]:not(.good_filled)'); if (missingInput) { // Focus on the first missing field missingInput.focus(); // Scroll to the field if needed missingInput.scrollIntoView({ behavior: 'smooth', block: 'center' }); } }); // Use setTimeout to ensure this runs after the current execution context setTimeout(() => { if (typeof bootstrap !== 'undefined' && bootstrap.Popover) { // Destroy existing popover if any const existingPopover = bootstrap.Popover.getInstance(popoverTrigger); if (existingPopover) { existingPopover.dispose(); } // Initialize new popover new bootstrap.Popover(popoverTrigger, { html: true, trigger: 'click', container: 'body' }); } else { console.warn('Bootstrap popover not available'); } }, 0); } } } function parseCuisine() { const cuisineInput = document.querySelector('input[name="commerce_tag_value__cuisine"]'); // Récupérer tous les checkboxes de type de cuisine const cuisineCheckboxes = document.querySelectorAll('input[name="cuisine_type"]'); // Ajouter un écouteur d'événement sur chaque checkbox cuisineCheckboxes.forEach(checkbox => { checkbox.addEventListener('change', () => { // Récupérer toutes les checkboxes cochées const checkedCuisines = Array.from(document.querySelectorAll('input[name="cuisine_type"]:checked')) .map(input => input.value); // Mettre à jour l'input avec les valeurs séparées par des points-virgules cuisineInput.value = checkedCuisines.join(';'); }); }); } window.updateCompletionProgress = updateCompletionProgress; window.parseCuisine = parseCuisine;