fixes to the calculator
This commit is contained in:
+23
-17
@@ -6,6 +6,9 @@
|
||||
<title>Federated Computer — The Computer for your business — and the AI that runs on it.</title>
|
||||
<meta name="description" content="The open-source operating system for your business — and the private AI that runs on it. Unlimited users, one low price, and agentic AI that never leaves your building.">
|
||||
<meta name="theme-color" content="#001a2b">
|
||||
<link rel="icon" href="./favicon.ico" sizes="32x32">
|
||||
<link rel="icon" href="./favicon.svg" type="image/svg+xml">
|
||||
<link rel="apple-touch-icon" href="./apple-touch-icon.png">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
||||
@@ -1441,79 +1444,79 @@
|
||||
<h3 class="said-savings-title">What would your business save?</h3>
|
||||
|
||||
|
||||
<form class="savings-calc is-compact" id="customers-savings-calc" data-annual="2900" onsubmit="return false">
|
||||
<form class="savings-calc is-compact" id="customers-savings-calc" data-plans="[{"annual":700,"name":"Good","tier":"good"},{"annual":1450,"name":"Better","tier":"better"},{"annual":2900,"name":"Best","tier":"best"}]" onsubmit="return false">
|
||||
<fieldset class="calc-apps">
|
||||
<legend class="plan-subhead">Which of these do you pay for?</legend>
|
||||
<div class="calc-app-grid">
|
||||
|
||||
<label class="calc-app">
|
||||
<input type="checkbox" value="13" data-per-seat="true" checked>
|
||||
<input type="checkbox" value="13" data-tier="good" data-per-seat="true" checked>
|
||||
<span class="calc-app-name">Google Workspace</span>
|
||||
<span class="calc-app-cost">$13/person</span>
|
||||
</label>
|
||||
|
||||
<label class="calc-app">
|
||||
<input type="checkbox" value="14" data-per-seat="true">
|
||||
<input type="checkbox" value="14" data-tier="good" data-per-seat="true">
|
||||
<span class="calc-app-name">Microsoft 365</span>
|
||||
<span class="calc-app-cost">$14/person</span>
|
||||
</label>
|
||||
|
||||
<label class="calc-app">
|
||||
<input type="checkbox" value="9" data-per-seat="true" checked>
|
||||
<input type="checkbox" value="9" data-tier="better" data-per-seat="true" checked>
|
||||
<span class="calc-app-name">Slack</span>
|
||||
<span class="calc-app-cost">$9/person</span>
|
||||
</label>
|
||||
|
||||
<label class="calc-app">
|
||||
<input type="checkbox" value="13" data-per-seat="true">
|
||||
<input type="checkbox" value="13" data-tier="better" data-per-seat="true">
|
||||
<span class="calc-app-name">Zoom</span>
|
||||
<span class="calc-app-cost">$13/person</span>
|
||||
</label>
|
||||
|
||||
<label class="calc-app">
|
||||
<input type="checkbox" value="10" data-per-seat="true">
|
||||
<input type="checkbox" value="10" data-tier="good" data-per-seat="true">
|
||||
<span class="calc-app-name">Dropbox</span>
|
||||
<span class="calc-app-cost">$10/person</span>
|
||||
</label>
|
||||
|
||||
<label class="calc-app">
|
||||
<input type="checkbox" value="8" data-per-seat="true">
|
||||
<input type="checkbox" value="8" data-tier="good" data-per-seat="true">
|
||||
<span class="calc-app-name">1Password</span>
|
||||
<span class="calc-app-cost">$8/person</span>
|
||||
</label>
|
||||
|
||||
<label class="calc-app">
|
||||
<input type="checkbox" value="25" data-per-seat="true">
|
||||
<input type="checkbox" value="25" data-tier="better" data-per-seat="true">
|
||||
<span class="calc-app-name">Salesforce</span>
|
||||
<span class="calc-app-cost">$25/person</span>
|
||||
</label>
|
||||
|
||||
<label class="calc-app">
|
||||
<input type="checkbox" value="20" data-per-seat="true">
|
||||
<input type="checkbox" value="20" data-tier="better" data-per-seat="true">
|
||||
<span class="calc-app-name">HubSpot</span>
|
||||
<span class="calc-app-cost">$20/person</span>
|
||||
</label>
|
||||
|
||||
<label class="calc-app">
|
||||
<input type="checkbox" value="19" data-per-seat="true">
|
||||
<input type="checkbox" value="19" data-tier="best" data-per-seat="true">
|
||||
<span class="calc-app-name">Zendesk</span>
|
||||
<span class="calc-app-cost">$19/person</span>
|
||||
</label>
|
||||
|
||||
<label class="calc-app">
|
||||
<input type="checkbox" value="135" data-per-seat="false">
|
||||
<input type="checkbox" value="135" data-tier="good" data-per-seat="false">
|
||||
<span class="calc-app-name">Mailchimp</span>
|
||||
<span class="calc-app-cost">$135 flat</span>
|
||||
</label>
|
||||
|
||||
<label class="calc-app">
|
||||
<input type="checkbox" value="65" data-per-seat="false" checked>
|
||||
<input type="checkbox" value="65" data-tier="good" data-per-seat="false" checked>
|
||||
<span class="calc-app-name">Squarespace</span>
|
||||
<span class="calc-app-cost">$65 flat</span>
|
||||
</label>
|
||||
|
||||
<label class="calc-app">
|
||||
<input type="checkbox" value="12" data-per-seat="true">
|
||||
<input type="checkbox" value="12" data-tier="best" data-per-seat="true">
|
||||
<span class="calc-app-name">Jira</span>
|
||||
<span class="calc-app-cost">$12/person</span>
|
||||
</label>
|
||||
@@ -1531,7 +1534,7 @@
|
||||
|
||||
<div class="calc-result" aria-live="polite">
|
||||
|
||||
<div class="calc-stat is-highlight"><span class="calc-stat-label">You'd save</span><span class="calc-stat-value" data-out="savings">$0</span><span class="calc-stat-unit">/year</span></div>
|
||||
<div class="calc-stat is-highlight"><span class="calc-stat-label">You save</span><span class="calc-stat-value" data-out="savings">$0</span><span class="calc-stat-unit">/year on the <span data-out="plan">Good</span> plan</span></div>
|
||||
<a class="more calc-more" href="./pricing/#savings">Try the full calculator<span class="arrow" aria-hidden="true">→</span></a>
|
||||
</div>
|
||||
|
||||
@@ -1540,7 +1543,7 @@
|
||||
(function () {
|
||||
var form = document.getElementById('customers-savings-calc');
|
||||
if (!form) return;
|
||||
var annual = +form.dataset.annual || 0;
|
||||
var plans = JSON.parse(form.dataset.plans || '[]');
|
||||
var range = form.querySelector('input[type=range]');
|
||||
var shown = form.querySelector('.calc-users-value');
|
||||
var fmt = function (n) { return '$' + Math.round(n).toLocaleString('en-US'); };
|
||||
@@ -1553,16 +1556,19 @@
|
||||
return 1000 + (step - 20) * 500;
|
||||
}
|
||||
function update() {
|
||||
var n = users(+range.value), count = 0, cost = 0;
|
||||
var n = users(+range.value), count = 0, cost = 0, need = 0;
|
||||
shown.textContent = n.toLocaleString('en-US') + (+range.value === +range.max ? '+' : '');
|
||||
range.setAttribute('aria-valuetext', shown.textContent + ' people');
|
||||
form.querySelectorAll('.calc-app input:checked').forEach(function (box) {
|
||||
count++;
|
||||
need = Math.max(need, plans.findIndex(function (p) { return p.tier === box.dataset.tier; }));
|
||||
cost += +box.value * (box.dataset.perSeat === 'true' ? n : 1) * 12;
|
||||
});
|
||||
out('count', count);
|
||||
out('cost', fmt(cost));
|
||||
out('savings', fmt(Math.max(0, cost - annual)));
|
||||
var plan = plans[need] || plans[plans.length - 1] || { name: '', annual: 0 };
|
||||
out('savings', fmt(Math.max(0, cost - plan.annual)));
|
||||
out('plan', plan.name);
|
||||
}
|
||||
form.addEventListener('input', update);
|
||||
update();
|
||||
|
||||
Reference in New Issue
Block a user