60 lines
1.7 KiB
JavaScript
60 lines
1.7 KiB
JavaScript
"use strict";
|
|
|
|
var optionResults;
|
|
|
|
$(document).ready(function() {
|
|
|
|
$("#option-terms").on("submit", function(e) {
|
|
//
|
|
e.preventDefault();
|
|
sendRequest();
|
|
})
|
|
});
|
|
|
|
function serializeForm(id) {
|
|
//
|
|
return $(id).serializeArray()
|
|
.reduce(function(a, x) { a[x.name] = x.value; return a; }, {});
|
|
}
|
|
|
|
function sendRequest() {
|
|
//
|
|
var inputData = serializeForm("#option-terms");
|
|
// Get the right data-types
|
|
inputData.ExpiryDate = new Date(inputData.ExpiryDate).toJSON();
|
|
inputData.OptType = parseInt(inputData.OptType);
|
|
inputData.Rfr = parseFloat(inputData.Rfr);
|
|
inputData.Sims = parseInt(inputData.Sims);
|
|
inputData.Spot = parseFloat(inputData.Spot);
|
|
inputData.Strike = parseFloat(inputData.Strike);
|
|
inputData.ValueDate = new Date(inputData.ValueDate).toJSON();
|
|
inputData.Vol = parseFloat(inputData.impliedVol);
|
|
|
|
// Send request
|
|
var startTime;
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "http://localhost:8080",
|
|
data: JSON.stringify(inputData),
|
|
beforeSend: function(request, settings) {
|
|
startTime = new Date().getTime();
|
|
},
|
|
success: function(e) {
|
|
optionResults = e;
|
|
updateTable();
|
|
let requestTime = new Date().getTime() - startTime;
|
|
console.log("Request time: ", requestTime);
|
|
},
|
|
});
|
|
}
|
|
|
|
function updateTable() {
|
|
$("#results-table > tbody > tr").each(function(idx, el) {
|
|
$($(el).children()[1])[0].innerText =
|
|
optionResults["ClosedForm"][$($(el).children()[0]).text()].toFixed(4);
|
|
$($(el).children()[2])[0].innerText =
|
|
optionResults["MonteCarlo"][$($(el).children()[0]).text()].toFixed(4);
|
|
});
|
|
}
|
|
|