JSFiddle - React, Tailwind, and code Playground
by Darby Rathbone
JavaScript
function Round2Cent(v) {
return Math.round(v * 100) / 100;
}
$(document).ready(function () {
$("#btext").hide();
//Updates when new number is entered
$("#form input").keyup(function (event) {
if (event.keyCode == 9) return; // 9 = tab
fun_list()
});
function ShowValue(selector, v) {
$(selector).html(isNaN(v) ? "Error" : "$" + Round2Cent(v));
}
//Functions to update on input change
function fun_list() {
get_values();
window.clval = ((revenue * margin) * (1 - churn) / (1 + discount - (1 - churn)));
window.clpa = (lead + (hours * hr) / closing);
window.nltval = clval - clpa;
window.leadcon = leadr * closing;
// clv();
// cpa();
// nltv();
ShowValue("#clv", clval);
ShowValue("#cpa", clpa);
ShowValue("#nltv", nltval);
// ShowValue("#car", ldead);
result();
return;
}
// updates values
function get_values() {
window.revenue = parse_currency($("#form input[name='revenue']").val());
window.margin = parse_percent($("#form input[name='margin']").val());
window.churn = parse_percent($("#form input[name='churn']").val());
window.discount = parse_percent($("#form input[name='discount']").val());
window.lead = parse_currency($("#form input[name='lead']").val());
window.closing = parse_percent($("#form input[name='closing']").val());
window.hours = parse_currency($("#form input[name='hours']").val());
window.hr = parse_currency($("#form input[name='hr']").val());
window.leadr = parse_currency($("#form input[name='leadr']").val());
};
// Takes a string like "$123,456.789" and returns 123456.789 - from start-up death clock
function parse_currency(str) {
return parseFloat(str.replace(/\$|,/g, "")) || "";
}
function parse_percent(str) {
return...