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=callData[allColumns["c"+(i+1)]];
if (!isNaN(cellValue)) {
cellValue=Number(cellValue).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=putData[allColumns["c"+(i+1)]];
if (!isNaN(cellValue)) {
cellValue=Number(cellValue).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=JSON.parse(localStorage["KPIs"]);
allColumns.length=3;
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{
if (localStorage["KPIs"] === undefined) {
localStorage["KPIs"] = '{"c1":"delta","c2":"openInterest","c3":"last"}';
}
let displayColumnKPIs=JSON.parse(localStorage["KPIs"]);
let selectedValue=displayColumnKPIs["c"+colNum];
let capitalize=(theOption)=>{
// add a blank before each Upper Case letter
let optionText=theOption.replace(/([A-Z])/g, ' $1').trim();
// make the first letter upper case
optionText= optionText.charAt(0).toUpperCase() + optionText.substring(1);
return(optionText);
}
let allOptions=Object.keys(dta.callExpDateMap[Object.keys(dta.callExpDateMap)[0]][Object.keys(dta.callExpDateMap[Object.keys(dta.callExpDateMap)[0]])[0]][0]);
allOptions=allOptions.sort();
let me=`
`;
return(me);
}
let displayOptionChain=()=>{
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 |
| ${getColumnSelection(1)} | ${getColumnSelection(2)} | ${getColumnSelection(3)} | Bid | Ask | Strike | ${getColumnSelection(1)} | ${getColumnSelection(2)} | ${getColumnSelection(3)} | Bid | Ask |
`;
app.appendChild(newNode)
myTblOptionChain = $("#tblOptionChain")[0];
// I don't think this is needed anymore...
//myTblOptionChain.allColumns=["delta","theta","vega"];
myTblOptionChain.changeColKPI=(colNum, kpi)=>{
console.log("ChangeKPI",colNum,kpi);
let displayColumnKPIs=JSON.parse(localStorage["KPIs"]);
displayColumnKPIs["c"+colNum]=kpi;
localStorage["KPIs"]=JSON.stringify(displayColumnKPIs);
displayOptionChain();
}
// "click" the date if it's the context dte
if ($(".nav").find(".active").children().length > 0){
$(".nav").find(".active").children()[0].click();
}
}