var filterContext={}; let createMasterFilterFrame=()=>{ let theFrameDiv=document.createElement("div"); theFrameDiv.setAttribute("id","frmMasterFilter"); theFrameDiv.className="container-fluid " window.document.getElementById('app').append(theFrameDiv); theFrameDiv.innerHTML=`

SELECT SYMBOL!

`; fetchSymbols(); return true; } let beforeShowDay=(theDate)=>{ let isoDate=theDate.toISOString().substr(0,10); //console.log("BeforeShow",isoDate,theDate); let isDateFound=false; for (let i=0;i{ $.get({ url:"/getSymbols" }).done(response=>{ let allSymbols=response; console.log(allSymbols); refreshSymbolList(allSymbols); }); } let getCurrentSymbol=()=>{ return(filterContext.theSymbol); } let symbolChanged=(newSymbol)=>{ console.log("symbolChanged",newSymbol); filterContext.theSymbol=newSymbol document.title=getCurrentSymbol(); $("#tbSymbol").text(getCurrentSymbol()); getAvailDatesForSymbol(getCurrentSymbol()).done(_=>{ $("#datePicker").datepicker('destroy'); $("#datePicker").datepicker({beforeShowDay:beforeShowDay}) .on('changeDate', (e)=>{ if (e.date !== undefined) { console.log("DatePicker changed date",e.date); filterContext.theDate=e.date.toISOString().substr(0,10); showTimesForDay(filterContext.theDate); } }); if (filterContext.theDate === undefined) { console.log("no date in contest, setting date to the last in chain."); filterContext.theDate=filterContext.availableDates[filterContext.availableDates.length-1].Date; } currentTZDate = new Date(Date.parse(filterContext.theDate) + new Date().getTimezoneOffset()*60000); console.log("setting datepicker date to ", filterContext.theDate, currentTZDate); $("#datePicker").datepicker('setDate',currentTZDate); }); } let timeChanged=(newTime)=>{ if (filterContext.selectedTime!==newTime){ filterContext.selectedTime=newTime; $("#tbSelectedTime").text(newTime); console.log("Time changed", newTime); } requestOptionChain(); } let requestOptionChain=()=>{ $.ajax({ url:"/getOptionChain?Date=" + filterContext.theDate + "&Symbol=" + filterContext.theSymbol + "&Time="+filterContext.selectedTime }).done(response=>{ dta=JSON.parse(response[0].Data); //console.log("received",dta); displayOptionChain(); $("#tbUnderlyingPrice").text(dta.underlyingPrice.toLocaleString('en',{minimumFractionDigits: 2, maximumFractionDigits: 2})); }); } let showTimesForDay=()=>{ return $.ajax({ url:"/getTimes?Date=" + filterContext.theDate + "&Symbol=" + filterContext.theSymbol }).done(response=>{ let availableTimes=response; //console.log(availableTimes); let lbTime=$("#lbTime"); lbTime.empty(); allTimes = availableTimes; for (let i=0;i${theTime}`)) lbTime.append($(``)) } $("#lbTime").change(); }); } let getAvailDatesForSymbol=(theSymbol)=>{ return $.ajax({ url:"/getDates?Symbol=" + theSymbol }).done(response=>{ let availableDates=response; //console.log(availableDates); filterContext.availableDates=availableDates; }); } let refreshSymbolList=(allSymbols)=>{ let lbSymbol=$("#lbSymbol"); lbSymbol.empty(); for (let i=0;i${theSymbol}`)) } }