SeaWolf-AI commited on
Commit
66a0e80
Β·
verified Β·
1 Parent(s): 7698edd

label the return window and show each asset scoring grid

Browse files
Files changed (1) hide show
  1. app/static/index.html +25 -2
app/static/index.html CHANGED
@@ -272,6 +272,7 @@ pre{background:#0f1729;color:#e6edf7;border-radius:11px;padding:14px 16px;overfl
272
  <div class="card" style="margin-top:16px">
273
  <h2><span id="t-rank">β€”</span>
274
  <span class="faint" style="font-weight:400;font-size:13px" id="rk-sub"></span></h2>
 
275
  <div class="note" id="rk-note" style="margin:0 0 12px"></div>
276
  <div class="tw"><table>
277
  <thead><tr>
@@ -337,7 +338,11 @@ var S = {
337
  idAs:"μ°Έκ°€ ID", keyIs:"μ°Έκ°€ν‚€ (μ—μ΄μ „νŠΈ 연결에 μ”λ‹ˆλ‹€)",
338
  accepted:function(a,p){ return "μ ‘μˆ˜λμŠ΅λ‹ˆλ‹€. " + a + " ν¬μ§€μ…˜ " + p; },
339
  luck:"운의 ν•œκ³„μ„ ", rank:"μˆœμœ„",
340
- th:["μ°Έκ°€μž / μ „λž΅","μœ ν˜•","수읡λ₯ ","운 λŒ€λΉ„","νšŒμ „","수수료","참가일"],
 
 
 
 
341
  kpi:["μ°Έκ°€μž","ν˜„μž¬ 1μœ„","μ‹œμž₯","운의 ν•œκ³„μ„ "],
342
  people:function(n){ return n + "λͺ…"; },
343
  market:function(l){ return l + " μ‹œμž₯ (λ‹¨μˆœ 보유)"; }, over:"β˜… λ„˜μŒ",
@@ -395,7 +400,11 @@ var S = {
395
  idAs:"Entrant", keyIs:"Your key (use it to connect an agent)",
396
  accepted:function(a,p){ return "Recorded. " + a + " position " + p; },
397
  luck:"Luck ceiling", rank:"Standings",
398
- th:["Entrant / strategy","Type","Return","vs luck","Turnover","Fees","Joined"],
 
 
 
 
399
  kpi:["Entrants","Leader","market","Luck ceiling"],
400
  people:function(n){ return String(n); },
401
  market:function(l){ return l + " market (buy and hold)"; }, over:"β˜… cleared",
@@ -477,6 +486,9 @@ function drawTV(a){
477
  }
478
 
479
  var LANG = "ko", R = null, MAN = null, ME = null, ASSET = null, chart = null;
 
 
 
480
  function L(){ return S[LANG]; }
481
  /* 막 번호. 숫자만 두면 λͺ©λ‘μœΌλ‘œ 읽히고, 이름을 뢙이면 λ…Όμ§€λ‘œ μ½νžŒλ‹€. */
482
  function ko1(i){
@@ -732,12 +744,14 @@ async function pick(a){
732
  prompt_(a);
733
  drawTV(a);
734
  $("rk-sub").textContent = R.assets[a].label + " Β· $500 Β· " + R.assets[a].why;
 
735
  await Promise.all([drawChart(a), drawRank(a)]);
736
  }
737
 
738
  async function drawChart(a){
739
  var s = L();
740
  var d = await (await fetch("/api/curves?asset=" + a + "&top=12")).json();
 
741
  var el = $("chart");
742
  if (chart) { chart.remove(); chart = null; }
743
  chart = LightweightCharts.createChart(el, {
@@ -904,6 +918,15 @@ function whoLink(name, type){
904
  "</b></a>";
905
  }
906
 
 
 
 
 
 
 
 
 
 
907
  function setSide(v){ $("pos").value = v * 100; onPos(); }
908
 
909
  function onPos(){
 
272
  <div class="card" style="margin-top:16px">
273
  <h2><span id="t-rank">β€”</span>
274
  <span class="faint" style="font-weight:400;font-size:13px" id="rk-sub"></span></h2>
275
+ <div class="faint" id="rk-grid" style="font-size:12px;margin:-8px 0 12px"></div>
276
  <div class="note" id="rk-note" style="margin:0 0 12px"></div>
277
  <div class="tw"><table>
278
  <thead><tr>
 
338
  idAs:"μ°Έκ°€ ID", keyIs:"μ°Έκ°€ν‚€ (μ—μ΄μ „νŠΈ 연결에 μ”λ‹ˆλ‹€)",
339
  accepted:function(a,p){ return "μ ‘μˆ˜λμŠ΅λ‹ˆλ‹€. " + a + " ν¬μ§€μ…˜ " + p; },
340
  luck:"운의 ν•œκ³„μ„ ", rank:"μˆœμœ„",
341
+ th:["μ°Έκ°€μž / μ „λž΅","μœ ν˜•","수읡λ₯  (κ°œλ§‰ 이후 λˆ„μ )","운 λŒ€λΉ„","νšŒμ „","수수료","참가일"],
342
+ gridInfo:function(n, t, st){ return "채점 격자 <b>" + n + "봉</b> Β· λ§ˆμ§€λ§‰ 반영 " + t +
343
+ " UTC Β· " + st + " β€” 수읡λ₯ μ€ <b>μ‹œμ¦Œ κ°œλ§‰(" + (R ? R.opens : "") +
344
+ ")λΆ€ν„° μ§€κΈˆκΉŒμ§€ λˆ„μ </b>이며 일일 변동이 μ•„λ‹™λ‹ˆλ‹€."; },
345
+ mktOpen:"거래 쀑", mktClosed:"μž₯ 마감 β€” 재개될 λ•ŒκΉŒμ§€ 수읡λ₯ μ΄ 멈좰 μžˆμŠ΅λ‹ˆλ‹€",
346
  kpi:["μ°Έκ°€μž","ν˜„μž¬ 1μœ„","μ‹œμž₯","운의 ν•œκ³„μ„ "],
347
  people:function(n){ return n + "λͺ…"; },
348
  market:function(l){ return l + " μ‹œμž₯ (λ‹¨μˆœ 보유)"; }, over:"β˜… λ„˜μŒ",
 
400
  idAs:"Entrant", keyIs:"Your key (use it to connect an agent)",
401
  accepted:function(a,p){ return "Recorded. " + a + " position " + p; },
402
  luck:"Luck ceiling", rank:"Standings",
403
+ th:["Entrant / strategy","Type","Return (since open)","vs luck","Turnover","Fees","Joined"],
404
+ gridInfo:function(n, t, st){ return "Scoring grid <b>" + n + " bars</b> Β· last " + t +
405
+ " UTC Β· " + st + " β€” returns are <b>cumulative since the season opened (" +
406
+ (R ? R.opens : "") + ")</b>, not a daily change."; },
407
+ mktOpen:"trading", mktClosed:"market closed β€” returns are paused until it reopens",
408
  kpi:["Entrants","Leader","market","Luck ceiling"],
409
  people:function(n){ return String(n); },
410
  market:function(l){ return l + " market (buy and hold)"; }, over:"β˜… cleared",
 
486
  }
487
 
488
  var LANG = "ko", R = null, MAN = null, ME = null, ASSET = null, chart = null;
489
+ /* μ’…λͺ©λ§ˆλ‹€ 채점 격자의 κΉŠμ΄κ°€ λ‹€λ₯΄λ‹€. λ―Έκ΅­μž₯은 λ§ˆκ°ν•˜λ©΄ λ©ˆμΆ”κ³  코인은 계속 κ°„λ‹€.
490
+ κ·Έ 차이λ₯Ό 화면에 μ•ˆ 적으면 "μ™œ 이 μ’…λͺ©λ§Œ 수읡λ₯ μ΄ μž‘λƒ"λŠ” μ˜€ν•΄κ°€ 생긴닀. */
491
+ var GRID = {};
492
  function L(){ return S[LANG]; }
493
  /* 막 번호. 숫자만 두면 λͺ©λ‘μœΌλ‘œ 읽히고, 이름을 뢙이면 λ…Όμ§€λ‘œ μ½νžŒλ‹€. */
494
  function ko1(i){
 
744
  prompt_(a);
745
  drawTV(a);
746
  $("rk-sub").textContent = R.assets[a].label + " Β· $500 Β· " + R.assets[a].why;
747
+ drawGrid(a);
748
  await Promise.all([drawChart(a), drawRank(a)]);
749
  }
750
 
751
  async function drawChart(a){
752
  var s = L();
753
  var d = await (await fetch("/api/curves?asset=" + a + "&top=12")).json();
754
+ GRID[a] = {n: (d.t || []).length, last: (d.t || []).length ? d.t[d.t.length - 1] : null};
755
  var el = $("chart");
756
  if (chart) { chart.remove(); chart = null; }
757
  chart = LightweightCharts.createChart(el, {
 
918
  "</b></a>";
919
  }
920
 
921
+ function drawGrid(a){
922
+ var g = GRID[a], s = L();
923
+ if (!g || !g.n) { $("rk-grid").textContent = ""; return; }
924
+ /* λ§ˆμ§€λ§‰ 봉이 두 μ‹œκ°„ λ„˜κ²Œ λ¬΅μ—ˆμœΌλ©΄ κ·Έ μ‹œμž₯은 μ§€κΈˆ λ‹«ν˜€ μžˆλ‹€λŠ” λœ»μ΄λ‹€. */
925
+ var age = (Date.now() - Date.parse(g.last + "Z")) / 3600000;
926
+ $("rk-grid").innerHTML = s.gridInfo(g.n, g.last.slice(5, 16).replace("T", " "),
927
+ age > 2.5 ? s.mktClosed : s.mktOpen);
928
+ }
929
+
930
  function setSide(v){ $("pos").value = v * 100; onPos(); }
931
 
932
  function onPos(){