var allCombinations;
var optionChainContext={};
$(document).ready(_=>{
dta={};
createOrderFrame();
createMasterFilterFrame();
let selectDataFirst=_=>{
return {enabled:false, tooltip:"Select a Ticker!"};
}
$("#datePicker").datepicker({beforeShowDay:selectDataFirst});
});
let dta={};
let datesOut=(dateInp)=>{
let date=dateInp.split(':')[0];
let dte=dateInp.split(':')[1];
let attrActive="";
if (optionChainContext.selectedDate === date) {
attrActive="active";
//fillChainTable(dateInp,date);
}
return `
${date}
(DTE: ${dte})`
}
let getCallArtifact=(callData,allColumns)=>{
let artifact="";
let classes=(callData.delta < 0.5)?" otm":" itm";
for (let i=0;i< allColumns.length;i++){
let cellValue=Number(callData[allColumns[i]]).toLocaleString('en',{minimumFractionDigits: 2, maximumFractionDigits: 2});
artifact+=`
${cellValue} |
`;
}
let strCallJSON=JSON.stringify(callData).replace(/"/g,"\\'");
bidFrm=Number(callData.bid).toLocaleString('en',{minimumFractionDigits: 2, maximumFractionDigits: 2});
askFrm=Number(callData.ask).toLocaleString('en',{minimumFractionDigits: 2, maximumFractionDigits: 2});
classes += " priceClick";
artifact+=`
${bidFrm} |
${askFrm} |
`;
return artifact;
}
let getPutArtifact=(putData,allColumns)=>{
let artifact="";
let classes=(putData.delta > -0.5)?" otm":" itm";
for (let i=0;i< allColumns.length;i++){
let cellValue=Number(putData[allColumns[i]]).toLocaleString('en',{minimumFractionDigits: 2, maximumFractionDigits: 2});
artifact+=`
${cellValue} |
`;
}
let strPutJSON=JSON.stringify(putData).replace(/"/g,"\\'");
bidFrm=Number(putData.bid).toLocaleString('en',{minimumFractionDigits: 2, maximumFractionDigits: 2});
askFrm=Number(putData.ask).toLocaleString('en',{minimumFractionDigits: 2, maximumFractionDigits: 2});
classes += " priceClick";
artifact+=`
${bidFrm} |
${askFrm} |
`;
return artifact;
}
let getStrikeArtifact=(strike)=>{
return `
${strike} |
`;
}
let fillChainRow=(rowData)=>{
let theTable=document.getElementById("tblOptionChain");
let theNewRow=theTable.insertRow(-1);
let allColumns=["delta","theta","vega"];
theNewRow.innerHTML=getCallArtifact(rowData.call,allColumns) + getStrikeArtifact(rowData.strike) + getPutArtifact(rowData.put,allColumns);
}
let clearChainTable=()=>{
let theTable=document.getElementById("tblOptionChain");
for (let i=theTable.rows.length;i>3;i--){
theTable.deleteRow(-1);
}
}
let fillChainTable=(expirationDate,dateOnly)=>{
// Maintain Active Tab
$(".nav a").on("click", function(){
$(".nav").find(".active").removeClass("active");
$(this).parent().addClass("active");
});
clearChainTable();
optionChainContext.selectedDate=dateOnly;
let allCalls=dta.callExpDateMap[expirationDate];
let allPuts=dta.putExpDateMap[expirationDate];
//console.log(expirationDate,allCalls,allPuts);
let allStrikes=Object.keys(allCalls);
for (let i=0;i{
let app=window.document.getElementById('app');
$("#wrapperOptionChain").remove();
let newNode=document.createElement("div");
newNode.setAttribute("id","wrapperOptionChain");
newNode.innerHTML=`
${Object.keys(dta.callExpDateMap).map(datesOut).join('')}
| CALLS | | PUTS |
| Delta | Theta | Vega | Bid | Ask | Strike | Delta | Theta | Vega | Bid | Ask |
`;
app.appendChild(newNode)
// "click" the date if it's the context dte
if ($(".nav").find(".active").children().length > 0){
$(".nav").find(".active").children()[0].click();
}
}