(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();
}
})();