Files
2026-04-29 07:00:00 +08:00

330 lines
12 KiB
JavaScript

function Kline() {}
Kline.prototype = {
browerState: 0,
klineWebsocket: null,
klineTradeInit: false,
tradeDate: new Date(),
tradesLimit: 100,
lastDepth: null,
depthShowSize: 15,
priceDecimalDigits: 6,
amountDecimalDigits: 4,
symbol: null,
curPrice: null,
title: "",
reset: function(a) {
this.refreshUrl(a);
this.symbol = a;
this.lastDepth = null;
this.curPrice = null;
this.klineTradeInit = false;
$("#gasks .table").empty();
$("#gbids .table").empty();
$("#asks .table").empty();
$("#bids .table").empty();
this.websocketRedister(a);
},
setTitle: function() {
document.title = (this.curPrice == null ? "": this.curPrice + " ") + this.title;
},
dateFormatTf: function(a) {
return (a < 10 ? "0": "") + a
},
dateFormat: function(a) {
return a.getFullYear() + "-" + this.dateFormatTf(a.getMonth() + 1) + "-" + this.dateFormatTf(a.getDate()) + " " + this.dateFormatTf(a.getHours()) + ":" + this.dateFormatTf(a.getMinutes()) + ":" + this.dateFormatTf(a.getSeconds())
},
dateInit: function(b) {
var a = new Date();
if (b) {
a.setTime(b)
}
$(".m_rightbot").text(this.dateFormat(a));
var c = this;
setInterval(function() {
a.setTime(a.getTime() + 1000);
$(".m_rightbot").text(c.dateFormat(a))
},
1000)
},
websocketRedister: function (symbol) {
this.updateDepth();
var $this = this;
//ÓÒ²àÉî¶Èͼ
var json = '{"asks":[[18580,0.055109],[18520,0.8982],[18500,5.802874],[18499.9,0.005422],[18499,5],[18490,0.008221],[18475.5,0.003233],[18425.3,0.002434],[18401.4,0.000136],[18399.9,0.005451],[18366.1,0.527979],[18366,0.065427],[18298,0.045],[18297.9,8.196],[18288,1.023276],[18266,0.277472],[18256.4,0.003269],[18199.9,0.005511],[18198.8,0.440183],[18198,0.165414],[18196,0.758338],[18188,0.996],[18187,1.61925],[18185,2.098884],[18120,0.000698],[18118,0.1996],[18117,1],[18115.5,0.110451],[18115,0.907724],[18114.8,0.579]],"bids":[[17905.5,0.34],[17905.3,0.11196],[17905,0.56],[17901.8,8.197],[17901.5,1.7965],[17901.2,1],[17901,0.203545],[17900,0.34264],[17881.1,0.418736],[17865,0.385071],[17862,0.1],[17857.6,0.00014],[17826.8,0.520464],[17811,0.07],[17810.1,0.035001],[17809.2,0.00332],[17808,0.299701],[17801,1],[17800,1.248358],[17730.2,1],[17729.8,0.167771],[17711,0.08],[17700,0.00565],[17679,0.15198],[17658,0.033],[17648.8,0.319029],[17611,0.09],[17600,2.310682],[17597.2,0.003351],[17580,0.309805]]}';
var depths = JSON.parse(json);
$this.updateDepth(depths);
},
pushTrades: function(l) {
},
updateDepth: function(e) {
window._set_current_depth(e);
if (!e) {
return
}
$("#gasks .table").html(this.getgview(this.getgasks(e.asks)));
$("#gbids .table").html(this.getgview(this.getgbids(e.bids)));
if (this.lastDepth == null) {
this.lastDepth = {};
this.lastDepth.asks = this.getAsks(e.asks, this.depthShowSize);
this.depthInit(this.lastDepth.asks, $("#asks .table"));
this.lastDepth.bids = this.getBids(e.bids, this.depthShowSize);
this.depthInit(this.lastDepth.bids, $("#bids .table"))
} else {
var b = $("#asks .table");
b.find("div.remove").remove();
b.find("div.add").removeClass("add");
var f = this.getAsks(e.asks, this.depthShowSize);
var a = this.lastDepth.asks;
this.lastDepth.asks = f;
this.asksAndBids(f.slice(0), a, b);
var d = $("#bids .table");
d.find("div.remove").remove();
d.find("div.add").removeClass("add");
var g = this.getBids(e.bids, this.depthShowSize);
var c = this.lastDepth.bids;
this.lastDepth.bids = g;
this.asksAndBids(g.slice(0), c, $("#bids .table"))
}
},
depthInit: function(f, h) {
h.empty();
if (f && f.length > 0) {
var g, b = "";
for (var e = 0; e < f.length; e++) {
var a = (f[e][0] + "").split(".");
var d = this.getPrice(a, g);
g = a[0];
a = (f[e][1] + "").split(".");
var c = this.getAmount(a);
b += "<div class='row'><span class='price'>" + d[0] + "<g>" + d[1] + "</g></span> <span class='amount'>" + c[0] + "<g>" + c[1] + "</g></span></div>"
}
h.append(b);
b = null
}
},
asksAndBids: function(b, c, l) {
for (var f = 0; f < c.length; f++) {
var n = false;
for (var d = 0; d < b.length; d++) {
if (c[f][0] == b[d][0]) {
n = true;
if (c[f][1] != b[d][1]) {
var a = l.find("div:eq(" + f + ") .amount");
a.addClass(c[f][1] > b[d][1] ? "red": "green");
var g = this.getAmount((b[d][1] + "").split("."));
setTimeout((function(j, i) {
return function() {
j.html(i[0] + "<g>" + i[1] + "</g>");
j.removeClass("red").removeClass("green");
j = null;
i = null
}
})(a, g), 500)
}
b.splice(d, 1);
break
}
}
if (!n) {
l.find("div:eq(" + f + ")").addClass("remove");
c[f][2] = -1
}
}
for (var d = 0; d < c.length; d++) {
for (var f = 0; f < b.length; f++) {
if (b[f][0] > c[d][0]) {
var k = (b[f][1] + "").split(".");
var g = this.getAmount(k);
l.find("div:eq(" + d + ")").before("<div class='row add'><span class='price'></span> <span class='amount'>" + g[0] + "<g>" + g[1] + "</g></span></div>");
c.splice(d, 0, b[f]);
b.splice(f, 1);
break
}
}
}
var h = "";
for (var f = 0; f < b.length; f++) {
c.push(b[f]);
var k = (b[f][1] + "").split(".");
var g = this.getAmount(k);
h += "<div class='row add'><span class='price'></span> <span class='amount'>" + g[0] + "<g>" + g[1] + "</g></span></div>"
}
if (h.length > 0) {
l.append(h)
}
h = null;
var m;
for (var f = 0; f < c.length; f++) {
var o = l.find("div:eq(" + f + ")");
if (! (c[f].length >= 3 && c[f][2] == -1)) {
var k = (c[f][0] + "").split(".");
var e = this.getPrice(k, m);
m = k[0];
o.find(".price").html(e[0] + "<g>" + e[1] + "</g>")
}
}
b = null;
c = null;
l.find("div.add").slideDown(800);
setTimeout((function(i, j) {
return function() {
i.slideUp(500,
function() {
$(this).remove()
});
j.removeClass("add")
}
})(l.find("div.remove"), l.find("div.add")), 1000)
},
getAsks: function(b, a) {
if (b.length > a) {
b.splice(0, b.length - a)
}
return b
},
getBids: function(b, a) {
if (b.length > a) {
b.splice(a, b.length - 1)
}
return b
},
getgview: function(c) {
var d = "";
var e;
for (var b = 0; b < c.length; b++) {
var a = c[b][0].split(".");
if (a.length == 1 || a[0] != e) {
d += "<div class='row'><span class='price'>" + c[b][0] + "</span> <span class='amount'>" + c[b][1] + "</span></div>";
e = a[0]
} else {
d += "<div class='row'><span class='price'><h>" + a[0] + ".</h>" + a[1] + "</span> <span class='amount'>" + c[b][1] + "</span></div>"
}
}
return d
},
getgasks: function(j) {
var k = j[j.length - 1][0];
var e = j[0][0];
var a = e - k;
var d = this.getBlock(a, 100);
var b = Math.abs(Number(Math.log(d) / Math.log(10))).toFixed(0);
if (a / d < 2) {
d = d / 2;
b++
}
if (d >= 1) { (b = 0)
}
k = parseInt(k / d) * d;
e = parseInt(e / d) * d;
var h = [];
var g = 0;
for (var f = j.length - 1; f >= 0; f--) {
if (j[f][0] > k) {
var c = parseInt(g, 10);
if (c > 0) {
h.unshift([Number(k).toFixed(b), c])
}
if (k >= e) {
break
}
k += d
}
g += j[f][1]
}
return h
},
getgbids: function(j) {
var k = j[j.length - 1][0];
var e = j[0][0];
var a = e - k;
var d = this.getBlock(a, 100);
var b = Math.abs(Number(Math.log(d) / Math.log(10))).toFixed(0);
if (a / d < 2) {
d = d / 2;
b++
}
if (d >= 1) { (b = 0)
}
k = parseInt(k / d) * d;
e = parseInt(e / d) * d;
var h = [];
var g = 0;
for (var f = 0; f < j.length; f++) {
if (j[f][0] < e) {
var c = parseInt(g, 10);
if (c > 0) {
h.push([Number(e).toFixed(b), c])
}
if (e <= k) {
break
}
e -= d
}
g += j[f][1]
}
return h
},
getBlock: function(a, c) {
if (a > c) {
return c
} else {
c = c / 10;
return this.getBlock(a, c)
}
},
getZeros: function(b) {
var a = "";
while (b > 0) {
b--;
a += "0"
}
return a
},
getPrice: function(a, d) {
var c = a[0];
if (d == c) {
c = "<h>" + c + ".</h>"
} else {
c += "."
}
var b = "";
if (a.length == 1) {
c += "0";
b = this.getZeros(this.priceDecimalDigits - 1)
} else {
c += a[1];
b = this.getZeros(this.priceDecimalDigits - a[1].length)
}
return [c, b]
},
getAmount: function(a) {
var c = a[0];
var b = "";
var d = this.amountDecimalDigits - c.length + 1;
if (d > 0) {
b = ".";
if (a.length == 1) {
b += this.getZeros(d)
} else {
if (d > a[1].length) {
b += a[1] + this.getZeros(d - a[1].length)
} else {
if (d == a[1].length) {
b += a[1]
} else {
b += a[1].substring(0, d)
}
}
}
}
return [c, b]
},
setTopTickers: function(c) {
},
setMarketShow: function(e, b, d, c) {
},
refreshPage: function(a) {
},
refreshUrl: function(a) {
}
};