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 `` } 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":"theta","c3":"vega"}'; } 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=`
CALLSPUTS
${getColumnSelection(1)}${getColumnSelection(2)}${getColumnSelection(3)}BidAskStrike${getColumnSelection(1)}${getColumnSelection(2)}${getColumnSelection(3)}BidAsk
`; app.appendChild(newNode) myTblOptionChain = $("#tblOptionChain")[0]; 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(); } }