fix: slot label literal, netqty filter, today-only closed, calcSD + SD wire
This commit is contained in:
parent
2540a89bae
commit
b3b1946ee6
1 changed files with 7 additions and 4 deletions
|
|
@ -330,7 +330,7 @@ async function loadMarket(){
|
|||
const map=Object.fromEntries(data.map(q=>[q.key,q]));
|
||||
if(!window._mktCache)window._mktCache={};(data||[]).forEach(function(q){window._mktCache[q.key]=q;});grid.innerHTML=SLOTS.map(slot=>{
|
||||
const q=map[slot.key];
|
||||
if(!q){var c=(window._mktCache||{})[slot.key];if(c){q=c;}else{return '<div class="card mcard"><div class="mlbl">+slot.label+"</div><div class="mprice" style="color:var(--text3)">—</div><div class="mchg" style="color:var(--text3)">—</div></div>';}}
|
||||
if(!q){var c=(window._mktCache||{})[slot.key];if(c){q=c;}else{return '<div class="card mcard"><div class="mlbl">'+slot.label+'</div><div class="mprice" style="color:var(--text3)">—</div><div class="mchg" style="color:var(--text3)">—</div></div>';}}
|
||||
const up=q.changePct>=0,cl=up?'up':'dn',arrow=up?'\u25b2':'\u25bc';
|
||||
const price=q.price>10000?q.price.toLocaleString('en-IN',{maximumFractionDigits:0}):q.price.toFixed(2);
|
||||
return '<div class="card mcard"><div class="mlbl">'+slot.label+'</div>'+
|
||||
|
|
@ -341,7 +341,7 @@ async function loadMarket(){
|
|||
}
|
||||
async function loadPositions(){
|
||||
const {data}=await fetch('/api/positions').then(r=>r.json());
|
||||
const open=data.filter(p=>p.is_closed===0);
|
||||
const open=data.filter(p=>p.is_closed===0 && +p.netqty!==0);
|
||||
const tbody=document.getElementById('pos-body'),tfoot=document.getElementById('pos-foot');
|
||||
if(!open.length){tbody.innerHTML='<tr><td colspan="7" style="text-align:center;padding:36px;color:var(--text3)">No open positions</td></tr>';tfoot.style.display='none';return;}
|
||||
const sU=open.reduce((s,p)=>s+p.unrealised_pnl,0),sR=open.reduce((s,p)=>s+p.realised_pnl,0),sT=open.reduce((s,p)=>s+p.total_pnl,0);
|
||||
|
|
@ -507,6 +507,8 @@ function detectStrategy(opts) {
|
|||
return opts.length+'-Leg Strategy';
|
||||
}
|
||||
|
||||
|
||||
function calcSD(spot,dte,vix){var v=vix>1?vix/100:0.18;var dv=v/Math.sqrt(252);var move=spot*dv*Math.sqrt(Math.max(dte,1));return{sd1:move,sd2:move*2};}
|
||||
async function loadPayoff() {
|
||||
var canvas = document.getElementById('payoff-chart');
|
||||
var emptyEl = document.getElementById('pf-empty');
|
||||
|
|
@ -583,7 +585,7 @@ async function loadPayoff() {
|
|||
var tc = dk?'#3D444D':'#C4B8B0';
|
||||
|
||||
if (payoffChartInst) payoffChartInst.destroy();
|
||||
canvas._beLines = bes; canvas._spotLine = spot; canvas._chartXs = xs;
|
||||
var vixV=(window._mktCache&&window._mktCache['INDIAVIX'])?window._mktCache['INDIAVIX'].price:0;canvas._sdInfo=calcSD(spot,typeof dte==='number'?dte:7,vixV);canvas._beLines=bes;canvas._spotLine=spot;canvas._chartXs=xs;
|
||||
|
||||
payoffChartInst = new Chart(canvas, {
|
||||
type: 'line',
|
||||
|
|
@ -634,7 +636,8 @@ async function loadClosedPositions() {
|
|||
var staleEl = document.getElementById('closed-stale');
|
||||
if (!tbody) return;
|
||||
|
||||
var data = res.data || [];
|
||||
var tIST=new Date().toLocaleDateString('en-CA',{timeZone:'Asia/Kolkata'});
|
||||
var data=(res.data||[]).filter(function(p){return p.updated_at&&p.updated_at.slice(0,10)>=tIST;});
|
||||
var totalBooked = res.totalBooked || 0;
|
||||
|
||||
// Update collapsed header badge
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue