Skip to content

Instantly share code, notes, and snippets.

@anvinjain
Created July 5, 2017 14:52
Show Gist options
  • Save anvinjain/10298e5fd47ce64f301bc5709b798bbb to your computer and use it in GitHub Desktop.
Save anvinjain/10298e5fd47ce64f301bc5709b798bbb to your computer and use it in GitHub Desktop.
FkProf Policy Calculator // source https://jsbin.com/wumoqif
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<title>FkProf Policy Calculator</title>
</head>
<body>
<table>
<tr>
<td><label>Cluster Size</label></td>
<td><input id="param_s" type="number"></input></td>
</tr>
<tr>
<td><label>Duration (secs)</label></td>
<td><input id="param_d" type="number"></input></td>
</tr>
<tr>
<td><label>Calculate</label></td>
<td>
<input type="radio" name="calc_action" name value="param_c" checked>Cluster Coverage<br>
<input type="radio" name="calc_action" value="param_p">Concurrent Profiles<br>
</td>
</tr>
<tr id="param_c_row" style="display:none">
<td><label>Cluster Coverage (%)</label></td>
<td><input id="param_c" type="number"></input></td>
</tr>
<tr id="param_p_row">
<td><label>Max Concurrent Profiles</label></td>
<td><input id="param_p" type="number"></input></td>
</tr>
<tr>
<td>---------------------</td><td></td>
</tr>
<tr id="result_c_row" style="color:brown">
<td><label>Cluster Coverage (%)</label></td>
<td id="result_c" style="font-weight: bold"></td>
</tr>
<tr id="result_p_row" style="color:brown;display:none">
<td><label>Max Concurrent Profiles</label></td>
<td id="result_p" style="font-weight: bold"></td>
</tr>
</table>
<script id="jsbin-javascript">
var s_win_d = 1200;
var s_buffer = 60;
var s_win_end_tol = 60;
var calc_action = "param_c";
$(function() {
calculate();
$("#param_s").on("input", function() {
calculate();
});
$("#param_d").on("input", function() {
calculate();
});
$("#param_p").on("input", function() {
calculate();
});
$("#param_c").on("input", function() {
calculate();
});
$("input[type=radio][name=calc_action]").change(function() {
calc_action = $(this).val();
switch(calc_action) {
case "param_c":
$("#param_c_row").hide();
$("#param_p_row").show();
$("#result_c_row").show();
$("#result_p_row").hide();
break;
case "param_p":
$("#param_c_row").show();
$("#param_p_row").hide();
$("#result_c_row").hide();
$("#result_p_row").show();
break;
}
calculate();
});
});
function getClusterSize() {
return parseInt($("#param_s").val());
}
function getProfileDuration() {
return parseInt($("#param_d").val());
}
function getMaxConcurrentProfiles() {
return parseInt($("#param_p").val());
}
function getClusterCoverage() {
return parseInt($("#param_c").val());
}
function calculate() {
switch(calc_action) {
case "param_c":
calcClusterCoverage();
break;
case "param_p":
calcMaxConcurrentProfiles();
break;
}
}
function calcClusterCoverage() {
var c_cluster = getClusterSize();
var s_profile = getProfileDuration();
var c_concurrent = getMaxConcurrentProfiles();
if(c_cluster && s_profile && c_concurrent) {
var s_effective_win_d = s_win_d - s_win_end_tol - (2 * s_buffer);
var c_seq = Math.floor(s_effective_win_d / (s_profile + s_buffer));
var c_cov = (100 * (c_concurrent * c_seq)) / c_cluster;
$("#result_c").text(c_cov);
} else {
$("#result_c").text("Required fields missing");
}
}
function calcMaxConcurrentProfiles() {
var c_cluster = getClusterSize();
var s_profile = getProfileDuration();
var c_cov = getClusterCoverage();
if(c_cluster && s_profile && c_cov) {
var s_effective_win_d = s_win_d - s_win_end_tol - (2 * s_buffer);
var c_seq = Math.floor(s_effective_win_d / (s_profile + s_buffer));
var c_concurrent = Math.ceil(Math.floor(c_cluster * (c_cov / 100)) / c_seq);
$("#result_p").text(c_concurrent);
} else {
$("#result_p").text("Required fields missing");
}
}
</script>
<script id="jsbin-source-javascript" type="text/javascript">var s_win_d = 1200;
var s_buffer = 60;
var s_win_end_tol = 60;
var calc_action = "param_c";
$(function() {
calculate();
$("#param_s").on("input", function() {
calculate();
});
$("#param_d").on("input", function() {
calculate();
});
$("#param_p").on("input", function() {
calculate();
});
$("#param_c").on("input", function() {
calculate();
});
$("input[type=radio][name=calc_action]").change(function() {
calc_action = $(this).val();
switch(calc_action) {
case "param_c":
$("#param_c_row").hide();
$("#param_p_row").show();
$("#result_c_row").show();
$("#result_p_row").hide();
break;
case "param_p":
$("#param_c_row").show();
$("#param_p_row").hide();
$("#result_c_row").hide();
$("#result_p_row").show();
break;
}
calculate();
});
});
function getClusterSize() {
return parseInt($("#param_s").val());
}
function getProfileDuration() {
return parseInt($("#param_d").val());
}
function getMaxConcurrentProfiles() {
return parseInt($("#param_p").val());
}
function getClusterCoverage() {
return parseInt($("#param_c").val());
}
function calculate() {
switch(calc_action) {
case "param_c":
calcClusterCoverage();
break;
case "param_p":
calcMaxConcurrentProfiles();
break;
}
}
function calcClusterCoverage() {
var c_cluster = getClusterSize();
var s_profile = getProfileDuration();
var c_concurrent = getMaxConcurrentProfiles();
if(c_cluster && s_profile && c_concurrent) {
var s_effective_win_d = s_win_d - s_win_end_tol - (2 * s_buffer);
var c_seq = Math.floor(s_effective_win_d / (s_profile + s_buffer));
var c_cov = (100 * (c_concurrent * c_seq)) / c_cluster;
$("#result_c").text(c_cov);
} else {
$("#result_c").text("Required fields missing");
}
}
function calcMaxConcurrentProfiles() {
var c_cluster = getClusterSize();
var s_profile = getProfileDuration();
var c_cov = getClusterCoverage();
if(c_cluster && s_profile && c_cov) {
var s_effective_win_d = s_win_d - s_win_end_tol - (2 * s_buffer);
var c_seq = Math.floor(s_effective_win_d / (s_profile + s_buffer));
var c_concurrent = Math.ceil(Math.floor(c_cluster * (c_cov / 100)) / c_seq);
$("#result_p").text(c_concurrent);
} else {
$("#result_p").text("Required fields missing");
}
}
</script></body>
</html>
var s_win_d = 1200;
var s_buffer = 60;
var s_win_end_tol = 60;
var calc_action = "param_c";
$(function() {
calculate();
$("#param_s").on("input", function() {
calculate();
});
$("#param_d").on("input", function() {
calculate();
});
$("#param_p").on("input", function() {
calculate();
});
$("#param_c").on("input", function() {
calculate();
});
$("input[type=radio][name=calc_action]").change(function() {
calc_action = $(this).val();
switch(calc_action) {
case "param_c":
$("#param_c_row").hide();
$("#param_p_row").show();
$("#result_c_row").show();
$("#result_p_row").hide();
break;
case "param_p":
$("#param_c_row").show();
$("#param_p_row").hide();
$("#result_c_row").hide();
$("#result_p_row").show();
break;
}
calculate();
});
});
function getClusterSize() {
return parseInt($("#param_s").val());
}
function getProfileDuration() {
return parseInt($("#param_d").val());
}
function getMaxConcurrentProfiles() {
return parseInt($("#param_p").val());
}
function getClusterCoverage() {
return parseInt($("#param_c").val());
}
function calculate() {
switch(calc_action) {
case "param_c":
calcClusterCoverage();
break;
case "param_p":
calcMaxConcurrentProfiles();
break;
}
}
function calcClusterCoverage() {
var c_cluster = getClusterSize();
var s_profile = getProfileDuration();
var c_concurrent = getMaxConcurrentProfiles();
if(c_cluster && s_profile && c_concurrent) {
var s_effective_win_d = s_win_d - s_win_end_tol - (2 * s_buffer);
var c_seq = Math.floor(s_effective_win_d / (s_profile + s_buffer));
var c_cov = (100 * (c_concurrent * c_seq)) / c_cluster;
$("#result_c").text(c_cov);
} else {
$("#result_c").text("Required fields missing");
}
}
function calcMaxConcurrentProfiles() {
var c_cluster = getClusterSize();
var s_profile = getProfileDuration();
var c_cov = getClusterCoverage();
if(c_cluster && s_profile && c_cov) {
var s_effective_win_d = s_win_d - s_win_end_tol - (2 * s_buffer);
var c_seq = Math.floor(s_effective_win_d / (s_profile + s_buffer));
var c_concurrent = Math.ceil(Math.floor(c_cluster * (c_cov / 100)) / c_seq);
$("#result_p").text(c_concurrent);
} else {
$("#result_p").text("Required fields missing");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment