Javascript, HTML, CSS Code
Copy
<html>
<head>
<script type="text/javascript"> window.addEventListener('error', function(event) { var message = JSON.parse(JSON.stringify(event.message)); var source = event.filename; var lineno = event.lineno; var colno = event.colno; var error = event.error; window.parent.postMessage({ type: 'iframeError', details: { message: message, source: source, lineno: lineno, colno: colno, error: error ? error.stack : '' } }, '*'); }); window.addEventListener('unhandledrejection', function(event) { window.parent.postMessage({ type: 'iframePromiseRejection', details: { reason: event.reason } }, '*'); }); </script>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Calculadora de Alimentación Avícola - Excel Macro</title>
<meta name="description" content="Una calculadora para el control del consumo y ahorro en concentrado para gallinas ponedoras, junto con un macro para guardar los resultados en Excel.">
<meta name="keywords" content="calculadora, alimentación, gallinas, ahorro, concentrado, cálculos, macro, Excel">
<!-- Libraries -->
<!-- jQuery (3.6.0) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" crossorigin="anonymous"></script>
<!-- Bootstrap CSS (5.3.3) -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" crossorigin="anonymous">
<!-- Bootstrap JS (5.3.3) -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.min.js" crossorigin="anonymous"></script>
<!-- Font Awesome (6.6.0) -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.6.0/css/fontawesome.min.css" crossorigin="anonymous">
<script type="text/javascript">
try {
document.addEventListener("DOMContentLoaded", function() {
// Variables
let records = [];
// Function: Calculate Costs
function calculate() {
const numHens = parseFloat(document.getElementById('num-hens').value) || 0;
const feedCost = parseFloat(document.getElementById('feed-cost').value) || 0;
const dailyBeforeAmount = parseFloat(document.getElementById('daily-before-amount').value) || 0;
const dailyAfterAmount = parseFloat(document.getElementById('daily-after-amount').value) || 0;
const monthlyBeforeCost = dailyBeforeAmount * numHens * 30 * feedCost / 1000; // Assuming daily amount is in grams
const monthlyAfterCost = dailyAfterAmount * numHens * 30 * feedCost / 1000; // Assuming daily amount is in grams
const monthlySavings = monthlyBeforeCost - monthlyAfterCost;
const record = { numHens, feedCost, monthlyBeforeCost, monthlyAfterCost, monthlySavings };
records.push(record);
displayResults(monthlyBeforeCost, monthlyAfterCost, monthlySavings);
}
// Function: Display Results
function displayResults(monthlyBeforeCost, monthlyAfterCost, monthlySavings) {
// Update UI with results
document.getElementById('result-cost-monthly-before').textContent = formatCurrency(monthlyBeforeCost);
document.getElementById('result-cost-monthly-after').textContent = formatCurrency(monthlyAfterCost);
document.getElementById('result-savings').textContent = formatCurrency(monthlySavings);
}
// Function: Format currency
function formatCurrency(amount) {
return '$' + amount.toFixed(2);
}
// Function: Save records to Excel
function saveToExcel() {
const worksheet = XLSX.utils.json_to_sheet(records);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Registros');
XLSX.writeFile(workbook, 'registros_alimentacion_avicola.xlsx');
}
// Event Listeners
document.getElementById('calc-button').addEventListener('click', calculate);
document.getElementById('save-button').addEventListener('click', saveToExcel);
});
} catch (error) {
throw error;
}
</script>
<style>
body {
background: linear-gradient(135deg, #f5f9f7 0%, #d9f7dc 100%);
font-family: 'Poppins', sans-serif;
}
.main-container {
padding: 20px;
}
.result, .form {
padding: 20px;
background: white;
border-radius: 10px;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}
#calc-button, #save-button {
background: #4CAF50;
color: white;
padding: 10px 15px;
border: none;
border-radius: 5px;
cursor: pointer;
transition: background 0.3s;
}
#calc-button:hover, #save-button:hover {
background: #45a049;
}
</style>
<link rel="canonical" href="https://calculator.tools/prompt/10519/">
<meta charset="utf-8">
</head>
<body>
<div id="main-container" class="container main-container">
<h1 class="text-center">Calculadora de Alimentación para Gallinas Ponedoras</h1>
<div class="form">
<div class="mb-3">
<label for="num-hens" class="form-label">Número total de gallinas:</label>
<input type="number" id="num-hens" class="form-control" placeholder="Ejemplo: 20">
</div>
<div class="mb-3">
<label for="feed-cost" class="form-label">Precio del concentrado por kilogramo:</label>
<input type="number" id="feed-cost" class="form-control" placeholder="Ejemplo: 1500">
</div>
<div class="mb-3">
<label for="daily-before-amount" class="form-label">Consumo total de alimento diario antes:</label>
<input type="number" id="daily-before-amount" class="form-control" placeholder="Ejemplo: 2500">
</div>
<div class="mb-3">
<label for="daily-after-amount" class="form-label">Consumo total de alimento diario después:</label>
<input type="number" id="daily-after-amount" class="form-control" placeholder="Ejemplo: 2000">
</div>
<button type="button" id="calc-button">Calcular</button>
</div>
<div class="result mt-4">
<h2>Resultados</h2>
<p>Gasto mensual antes: <span id="result-cost-monthly-before">$0</span></p>
<p>Gasto mensual después: <span id="result-cost-monthly-after">$0</span></p>
<p>Ahorro mensual: <span id="result-savings">$0</span></p>
<button type="button" id="save-button">Guardar Registros en Excel</button>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.16.9/xlsx.full.min.js"></script>
<script type="text/javascript"> var localStoragePrefix = "ct-{{ cachebreaker }}"; var lastSave = 0; function saveLocal(data) { if (Date.now() - lastSave < 1000) { return; } let cookie = localStoragePrefix + "=" + JSON.stringify(data) + "; path=" + window.location.pathname + "'; SameSite=Strict"; cookie += "; expires=" + new Date(Date.now() + 1000 * 60 * 60 * 24 * 365 * 1000).toUTCString(); document.cookie = cookie; lastSave = Date.now(); } function loadLocal() { var cookiePrefix = localStoragePrefix + "="; var cookieStart = document.cookie.indexOf(cookiePrefix); if (cookieStart > -1) { let cookieEnd = document.cookie.indexOf(";", cookieStart); if (cookieEnd == -1) { cookieEnd = document.cookie.length; } var cookieData = document.cookie.substring(cookieStart + cookiePrefix.length, cookieEnd); return JSON.parse(cookieData); } } </script>
<script type="text/javascript"> window.addEventListener('load', function() { var observer = new MutationObserver(function() { window.parent.postMessage({height: document.documentElement.scrollHeight || document.body.scrollHeight},"*"); }); observer.observe(document.body, {attributes: true, childList: true, subtree: true}); window.parent.postMessage({height: document.documentElement.scrollHeight || document.body.scrollHeight},"*"); }); </script>
</body>
</html>