let createOrderFrame=()=>{ let me = window.myOrderFrame = document.createElement("div"); me.setAttribute("id","frmOrder"); me.className="container-fluid "; me.innerHTML=`
0
`; $('#app').append(me); me.addToOrder=(openType,optionData)=>{ optionData=JSON.parse(optionData.replace(/'/g,'"')); console.log("AddToOrder",openType,optionData); let me=document.createElement("li"); me.multiplier = 100; // assume always 100 multipier me.price = (openType.substr(0,1)==="b")?optionData.ask:optionData.bid; me.priceEffect = ((openType.substr(0,1)==="b")?-1:1); me.quantity = 1; // at this point, we add 1 by default. me.updateNumbers=()=>{ let prevTotalCostAmount=me.totalCostAmount; me.singleCostAmount = me.priceEffect * me.multiplier * me.price me.totalCostAmount = me.singleCostAmount * me.quantity; if ((prevTotalCostAmount !== undefined) && (prevTotalCostAmount !== me.totalCostAmount)) { myOrderFrame.costAmount += (me.totalCostAmount - prevTotalCostAmount); } if (me.getElementsByClassName("quantity")[0] !== undefined) { me.getElementsByClassName("quantity")[0].innerText = me.quantity; me.getElementsByClassName("totalCost")[0].innerText = me.totalCostAmount.toLocaleString('en',{minimumFractionDigits: 0, maximumFractionDigits: 2}); } }; me.updateNumbers(); me.increaseQty=_=>{ me.quantity += 1; me.updateNumbers(); } me.decreaseQty=_=>{ if (me.quantity>1) { // don't go below 0, if we did, we had to chnage the order type to use the correct (bid/ask) price. me.quantity -= 1; me.updateNumbers(); } } me.removeFromOrder=_=>{ me.quantity=0; me.updateNumbers(); me.parentElement.removeChild(me); } me.innerHTML=` [X] ${myMasterFilter.selectedDate}|${myMasterFilter.selectedTime.substr(0,5)}|${openType}@${Math.abs(me.singleCostAmount).toLocaleString('en',{minimumFractionDigits: 0, maximumFractionDigits: 2})}|${me.quantity}
[+][-]
${optionData.symbol} => ${me.totalCostAmount.toLocaleString('en',{minimumFractionDigits: 0, maximumFractionDigits: 2})}
`; $("#listOrderItems").append(me); // adjust the cumulation on the order frame myOrderFrame.costAmount+=me.totalCostAmount; } me.clearOrder = ()=>{ me.costAmount=0; $("#listOrderItems").empty(); } me.showCostAmount=_=>{ $("#lbCostAmount").text(me.costAmount.toLocaleString('en',{minimumFractionDigits: 0, maximumFractionDigits: 2})); } let _costAmount={}; Object.defineProperty(me,'costAmount',{ get:_=>{return(_costAmount);}, set: (newVal)=>{ console.log("changed cost", newVal); _costAmount=newVal; me.showCostAmount(); } }); // InitializeCostAmount me.costAmount=0; }