Files
OptiTrainer/client/js/masterFilter.js

172 lines
5.4 KiB
JavaScript
Raw Normal View History

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=`
<div id='datePicker'></div>
<div class="dropdown" id="grpSymbol">
<button class="btn btn-primary dropdown-toggle ddMnuBtn" type="button" id="ddMnuBtnSymbol" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Symbol
</button>
<div class="dropdown-menu" aria-labelledby="ddMnuBtnSymbol" id='lbSymbol'>
<a class="dropdown-item" href="#">Dummy</a>
</div>
</div>
<div class="dropdown" id="grpTime">
<button class="btn btn-primary dropdown-toggle ddMnuBtn" type="button" id="ddMnuBtnTime" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Time
</button>
<div class="dropdown-menu" aria-labelledby="ddMnuBtnTime" id='lbTime'>
<a class="dropdown-item" href="#">Select Date</a>
</div>
</div>
<h1 id='tbSymbol'>SELECT SYMBOL!</h1>
2020-04-24 21:00:37 -05:00
<h2 id='tbUnderlyingPrice'></h2>
<h2 id='tbSelectedTime'></h2>
<!--button onclick='rq()'>LOAD</button-->
`;
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<filterContext.availableDates.length;i++){
if (filterContext.availableDates[i].Date===theDate.toISOString().substr(0,10)){
isDateFound=true;
break;
};
}
if (!isDateFound) {
return {enabled:false, tooltip:"No data"};
}
}
let fetchSymbols=()=>{
$.get({
2020-04-24 00:58:12 -05:00
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("2020-04-23") + 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({
2020-04-24 00:58:12 -05:00
url:"/getOptionChain?Date=" + filterContext.theDate + "&Symbol=" + filterContext.theSymbol + "&Time="+filterContext.selectedTime
}).done(response=>{
dta=JSON.parse(response[0].Data);
//console.log("received",dta);
displayOptionChain();
2020-04-24 21:00:37 -05:00
$("#tbUnderlyingPrice").text(dta.underlyingPrice.toLocaleString('en',{minimumFractionDigits: 2, maximumFractionDigits: 2}));
});
}
let showTimesForDay=()=>{
return $.ajax({
2020-04-24 00:58:12 -05:00
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<allTimes.length;i++){
theTime=allTimes[i].Time;
if (filterContext.selectedTime !== undefined) {
if (filterContext.selectedTime.substring(0,4) === theTime.substring(0,4)){
timeChanged(theTime);
}
} else {
if (i==4) {
// select the 4th time in the day... that's usually around 9:30
timeChanged(theTime);
}
}
//lbTime.append($(`<option ${selectedFlag}>${theTime}</option>`))
lbTime.append($(`<button onclick="timeChanged('${theTime}');" class="dropdown-item" type="button">${theTime.substring(0,5)}</button>`))
}
$("#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<allSymbols.length;i++){
theSymbol=allSymbols[i].Symbol;
console.log(theSymbol);
lbSymbol.append($(`<button onclick="symbolChanged('${theSymbol}');" class="dropdown-item" type="button">${theSymbol}</button>`))
}
2020-04-24 00:58:12 -05:00
}