Categorias:

Posts Recentes:

Calculadora de Ração para Cachorro

// RAÇAS MÉDIAS (10-25kg) { name: ‘Beagle’, minWeight: 10, maxWeight: 15, category: ‘Média’, origin: ‘Reino Unido’, region: [‘Brasil’, ‘EUA’, ‘Portugal’] }, { name: ‘Bulldog Francês’,

Calculadora de Ração para Cachorro

`; container.innerHTML = ''; container.appendChild(widget); this.attachEventListeners(widget, blogUrl); }, attachEventListeners: function(widget, blogUrl) { const form = widget.querySelector('#calculator-form'); const resultsContainer = widget.querySelector('#results-container'); const breedInput = widget.querySelector('#dog-breed'); const breedHidden = widget.querySelector('#dog-breed-hidden'); const breedSuggestions = widget.querySelector('#breed-suggestions'); const weightInput = widget.querySelector('#dog-weight'); const objectiveSelect = widget.querySelector('#objective'); const objectiveHint = widget.querySelector('#objective-hint'); // Busca de raças breedInput.addEventListener('input', (e) => { const query = e.target.value; const suggestions = BreedDatabase.searchBreeds(query); if (query.length > 0 && suggestions.length > 0) { breedSuggestions.innerHTML = suggestions.map(breed => `
${breed.name}
${breed.minWeight.toFixed(1)} - ${breed.maxWeight.toFixed(1)}kg • ${breed.origin}
`).join(''); breedSuggestions.classList.add('show'); } else { breedSuggestions.classList.remove('show'); } }); // Selecionar raça da sugestão breedSuggestions.addEventListener('click', (e) => { const item = e.target.closest('.breed-suggestion-item'); if (item) { const breedName = item.dataset.breed; breedInput.value = breedName; breedHidden.value = breedName; breedSuggestions.classList.remove('show'); updateObjectiveSuggestion(); } }); // Fechar sugestões ao clicar fora document.addEventListener('click', (e) => { if (!e.target.closest('.breed-search-container')) { breedSuggestions.classList.remove('show'); } }); // Atualizar sugestão de objetivo const updateObjectiveSuggestion = () => { const breedName = breedInput.value || breedHidden.value; const weight = parseFloat(weightInput.value); if (breedName && weight > 0) { const breed = BreedDatabase.getBreedByName(breedName); if (breed) { const recommended = BreedDatabase.getRecommendedObjective(breed, weight); const message = BreedDatabase.getWeightMessage(breed, weight); objectiveHint.textContent = message; if (objectiveSelect.value === 'maintenance') { objectiveSelect.value = recommended; } } } }; weightInput.addEventListener('change', updateObjectiveSuggestion); weightInput.addEventListener('blur', updateObjectiveSuggestion); form.addEventListener('submit', (e) => { e.preventDefault(); const breedName = breedInput.value || breedHidden.value; const dogData = { breed: breedName, weightKg: parseFloat(weightInput.value), ageYears: parseFloat(widget.querySelector('#dog-age').value), activityLevel: widget.querySelector('#activity-level').value, objective: objectiveSelect.value }; // Validar const errors = this.validateForm(dogData, widget); if (Object.keys(errors).length > 0) { return; } // Calcular const result = Calculator.calculate(dogData); // Mostrar resultados this.showResults(widget, result, blogUrl); }); }, validateForm: function(dogData, widget) { const errors = {}; if (!dogData.breed) { errors.breed = 'Raça é obrigatória'; } if (!dogData.weightKg || dogData.weightKg <= 0) { errors.weight = 'Peso é obrigatório e deve ser maior que 0'; } if (dogData.ageYears === undefined || dogData.ageYears < 0) { errors.age = 'Idade é obrigatória'; } widget.querySelector('#error-breed').textContent = errors.breed || ''; widget.querySelector('#error-weight').textContent = errors.weight || ''; widget.querySelector('#error-age').textContent = errors.age || ''; return errors; }, showResults: function(widget, result, blogUrl) { const form = widget.querySelector('#calculator-form'); const resultsContainer = widget.querySelector('#results-container'); const mealsHtml = result.mealDistribution.map((percentage, index) => { const gramsPerMeal = Math.round(result.dailyGramsPerDay * percentage); const cupsPerMeal = (result.cupsPerDay * percentage).toFixed(2); return `
Refeição ${index + 1} ${gramsPerMeal}g / ${cupsPerMeal} xícara(s)
`; }).join(''); const tipsHtml = result.tips.map(tip => `
  • ${tip}
  • `).join(''); const weightStatus = result.weightDiff ? result.weightDiff.status : 'ideal'; const weightAlertClass = `weight-alert ${weightStatus}`; resultsContainer.innerHTML = `
    ${result.weightMessage ? `
    ${result.weightMessage}
    ` : ''}

    ${result.dogData.breed}

    Peso Atual ${result.dogData.weightKg} kg
    Peso Ideal ${result.weightDiff ? result.weightDiff.ideal.toFixed(1) : '--'} kg
    Refeições ${result.mealsPerDay}x/dia
    Quantidade Diária
    ${result.dailyGramsPerDay}g
    ${result.cupsPerDay} xícara(s)
    Calorias Diárias
    ${result.dailyCalories}
    kcal
    RER
    ${result.rer}
    kcal
    MER
    ${result.mer}
    kcal

    Distribuição de Refeições

    ${mealsHtml}

    💡 Dicas Importantes

      ${tipsHtml}
    Voltar para o Blog
    `; form.style.display = 'none'; resultsContainer.style.display = 'block'; } }; // Inicializar if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', () => { CalculatorUI.init(); }); } else { CalculatorUI.init(); } })();

    Deixe um comentário

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

    Veja também

    Calculadora de Ração para Cachorro

    // RAÇAS MÉDIAS (10-25kg) { name: ‘Beagle’, minWeight: 10, maxWeight: 15, category: ‘Média’, origin: ‘Reino Unido’, region: [‘Brasil’, ‘EUA’, ‘Portugal’] }, { name: ‘Bulldog Francês’,