0
Skip to Content
Home
News & Analysis
Market Intelligence
Hatchery Scout
Tools
About
Contact
Open Menu
Close Menu
Home
News & Analysis
Market Intelligence
Hatchery Scout
Tools
About
Contact
Open Menu
Close Menu
Home
News & Analysis
Market Intelligence
Hatchery Scout
Tools
About
Contact
This page has moved to
HatcheryScout.net
(function () { function initializeRuminIQWidget() { const form = document.getElementById("riq-form"); if (!form) { return; } const RIQ_API_BASE_URL = "https://api.ruminiq.com"; const currencyFormatter = new Intl.NumberFormat("en-US", { style: "currency", currency: "USD", maximumFractionDigits: 2 }); const submitButton = document.getElementById("riq-submit"); const statusEl = document.getElementById("riq-status"); const emptyStateEl = document.getElementById("riq-empty-state"); const resultEl = document.getElementById("riq-result"); const errorEl = document.getElementById("riq-error"); const totalValueEl = document.getElementById("riq-total-value"); const perHeadEl = document.getElementById("riq-per-head"); const confidenceEl = document.getElementById("riq-confidence"); const pricingBasisEl = document.getElementById("riq-pricing-basis"); const adjustmentsEl = document.getElementById("riq-adjustments"); const notesEl = document.getElementById("riq-notes"); function setStatus(message) { statusEl.textContent = message; } function setLoading(isLoading) { submitButton.disabled = isLoading; submitButton.textContent = isLoading ? "Calculating..." : "Estimate Herd Value"; } function appendListItems(container, items) { container.innerHTML = ""; (Array.isArray(items) ? items : []).forEach(function (item) { const li = document.createElement("li"); li.textContent = String(item || ""); container.appendChild(li); }); } function formatCurrency(value) { return currencyFormatter.format(Number(value || 0)); } function showError(message) { errorEl.hidden = false; errorEl.textContent = message; resultEl.hidden = true; emptyStateEl.hidden = false; adjustmentsEl.innerHTML = ""; notesEl.innerHTML = ""; } function showResult(data) { emptyStateEl.hidden = true; errorEl.hidden = true; resultEl.hidden = false; totalValueEl.textContent = formatCurrency(data.estimated_total_value); perHeadEl.textContent = formatCurrency(data.estimated_value_per_head); confidenceEl.textContent = String(data.confidence || "").toUpperCase(); pricingBasisEl.textContent = data.pricing_basis || ""; appendListItems(adjustmentsEl, data.adjustment_summary); appendListItems(notesEl, data.notes); } function collectPayload() { return { species: form.species.value, headCount: Number(form.headCount.value), avgWeight: Number(form.avgWeight.value), region: form.region.value.trim(), classType: form.classType.value, qualityTier: form.qualityTier.value, saleChannel: form.saleChannel.value }; } async function submitValuation(event) { event.preventDefault(); setLoading(true); setStatus("Requesting valuation..."); errorEl.hidden = true; try { const response = await fetch(RIQ_API_BASE_URL + "/api/value-herd", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(collectPayload()) }); const payload = await response.json(); if (!response.ok || !payload.success || !payload.data) { const detail = payload && payload.error && Array.isArray(payload.error.details) ? payload.error.details.join(" ") : ""; throw new Error((payload && payload.error && payload.error.message) || detail || "The valuation request failed."); } showResult(payload.data); setStatus("Valuation updated."); } catch (error) { showError(error.message || "Unable to reach the valuation service."); setStatus("Unable to complete valuation."); } finally { setLoading(false); } } if (!form.dataset.riqBound) { form.dataset.riqBound = "true"; form.addEventListener("submit", submitValuation); } } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", initializeRuminIQWidget); } else { initializeRuminIQWidget(); } })();