Created
July 5, 2017 14:52
-
-
Save anvinjain/10298e5fd47ce64f301bc5709b798bbb to your computer and use it in GitHub Desktop.
FkProf Policy Calculator // source https://jsbin.com/wumoqif
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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