feat: 분봉 크로스헤어 툴팁에 '당일시가 대비 등락률' 추가

분봉 차트 클릭(세로선) 시 OHLC 팝업에 그 봉 종가의 당일 시가(첫 봉) 대비
등락률을 표시 — 그 시점까지의 오늘 누적 등락을 한눈에. 일봉은 미표시(분봉만).
- render_svg_chart(intraday=) → meta.dayOpen(첫 봉 시가, 분봉만) 주입
- 분봉 엔드포인트 intraday=True
- _setOhlcText: 당일시가대비 라인 + 팝업 박스/닫기버튼 동적 리사이즈

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
hyowons
2026-06-10 14:08:14 +09:00
parent 9c830f58f6
commit 51d0384ed4
2 changed files with 33 additions and 3 deletions
+8 -2
View File
@@ -7317,8 +7317,14 @@ def render_html() -> str:
'xTipTxt.appendChild(_mkTspan({"font-size":24,"font-weight":500},_pctStr(c.l,c.o),lcol));'
'xTipTxt.appendChild(_mkTspan({x:16,dy:34,"font-size":28,"font-weight":700},""+c.c.toLocaleString()+" ",ccol));'
'xTipTxt.appendChild(_mkTspan({"font-size":24,"font-weight":700},_pctStr(c.c,c.o),ccol));'
# 분봉: 당일 시가(첫 봉) 대비 등락률 — 그 시점까지의 오늘 누적 등락.
'var hasDO=meta.dayOpen&&meta.dayOpen>0;'
'if(hasDO){xTipTxt.appendChild(_mkTspan({x:16,dy:32,"font-size":23,"font-weight":600},"당일시가대비 "+_pctStr(c.c,meta.dayOpen),_col(c.c,meta.dayOpen)));}'
# 팝업 위치 — vline 의 반대 쪽으로 자동 배치 (좌/우). 화면 벗어남 방지 clamp.
'var tipW=320,tipH=176,gap=10;'
'var tipW=340,tipH=hasDO?212:176,gap=10;'
# 당일시가 라인 유무에 따라 배경 박스·닫기버튼 위치 동적 조정.
'xTipBg.setAttribute("width",tipW);xTipBg.setAttribute("height",tipH);'
'closeG.setAttribute("transform","translate("+(tipW-20)+",20)");'
'var tipX=xPos+gap;'
'if(tipX+tipW>meta.chartW-meta.padR)tipX=xPos-gap-tipW;'
'if(tipX<meta.padL)tipX=meta.padL+2;'
@@ -10055,7 +10061,7 @@ class Handler(BaseHTTPRequestHandler):
prev_close = _pc
except Exception:
pass
svg = sa.render_svg_chart(snap, range_key='1Y', ref_price=prev_close)
svg = sa.render_svg_chart(snap, range_key='1Y', ref_price=prev_close, intraday=True)
body = svg.encode('utf-8')
body, enc = _maybe_gzip(body, self.headers.get('Accept-Encoding'))
self.send_response(200)