Spaces:
Running
Running
label the return window and show each asset scoring grid
Browse files- 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(){
|