var Parse = {};
Parse.format = function (num) {
}
var Elem = {};
Elem.set = function (type, parent, className) {
var item = document.createElement(type);
if (!!className)
item.className = className;
if (parent)
parent.appendChild(item);
return item;
}
Elem.get = function (name) {
return document.getElementById(name);
}
Elem.remove = function (elem) {
if(elem) {
elem.parentNode.removeChild(elem);
}
}
Elem.color = function(elem, color, bgcolor) {
elem.style.color = color;
elem.style.backgroundColor = bgcolor;
}
var Style = {};
Style.display = function(id, display) {
Elem.get(id).style.display = display;
}
Style.color = function(id, color, bgcolor) {
var elem = Elem.get(id);
elem.style.color = color;
elem.style.backgroundColor = bgcolor;
}
var Storage = {};
Storage.get = function (name) {
var data = localStorage.getItem(name);
return data ? JSON.parse(data) : null;
}
Storage.set = function (name, val) {
localStorage.setItem(name, JSON.stringify(val));
}
Storage.add = function (name, addVal) {
let oldVal = Storage.get(name);
let newVal = oldVal.concat(addVal);
Storage.set(name, newVal);
}
Storage.clear = function () {
localStorage.clear();
}
window.onload = function() {
localData.init();
localData.get();
setValues();
setElems();
setTimeout(function(){
var scrollTop = parseInt(Storage.get("scrollTop"));
var outer = Elem.get("outer");
outer.style.maxHeight =
window.innerHeight + "px";
outer.scrollTop = scrollTop;
}, 50);
setTimeout(function(){
alert(JSON.stringify(values));
}, 100);
}
var config = {
width:[97,48,47,48,47],
height:[160,120,120,120,120],
textSize:[40,36,36,36,36],
valueSize:[80,60,60,60,60],
border: [
[[1,2],[3],[4]],
[[1,2],[],[],[3],[4]],
[[1,2],[],[3],[4],[]],
],
pos:[
"NA",
"TopLeft",
"TopRight",
"BottomLeft",
"BottomRight",
],
rad: "40px",
button: [
["confirm", "box", "green", "确定"],
["cancel", "box", "red", "取消"],
["debug", "box", "indigo", "调试"],
["items", "msg", "gray", "打印文本"],
["config", "msg", "gray", "打印配置"],
["values", "msg", "gray", "打印数据"],
["save", "msg", "darkgreen", "保持数据"],
["clear", "msg", "darkred", "清除数据"]
],
dict: "ABCDEFGHIJKLMNOPQRSTUVWXY",
};
var items = [
{title:"我的借贷",
color: ["#846", "#a68", "#eac"],
lines: [
{idx:11, text:["A.借入上限","B.已经借入","C.可以借入"]},
{idx:12, text:["D.借出上限","E.已经借出","F.可以借出"]},
{idx:13, text:["B.已经借入/E.已经借出","E.已经借出/B.已经借入","G.代理本金/G.托管本金"], mode: "G"}],
buttons:[
{idx:101, text:"借入", title:"借入本金", key:"B/X", tran:"1.00/0.01", limit:"C", bgcolor: "green"},
{idx:102, text:"借出", title:"借出本金", key:"E/Y", tran:"1.00/0.01", limit:"F", bgcolor: "red"}]},
{title:"我的本金",
color: ["#864", "#a86", "#eca"],
lines:[
{idx:21, text:["H.充值本金","NA/G.托管本金","I.已经投入","J.可以提现","NA/K.可以投入"], mode: "G"},
{idx:22, text:["K.可以投入/NA","G.代理本金/NA","J.可以提现/NA"], mode: "G"}], buttons:[
{idx:201, text:"充值", title:"本金充值", key:"H", tran:"1.00", limit: "Z", bgcolor: "green"},
{idx:202, text:"提现", title:"本金提现", key:"H", tran:"-1.00", limit:"J", bgcolor: "red"}]},
{title:"我的资金",
color: ["#468", "#68a", "#ace"],
lines: [
{idx:31, text:["L.上次投入","M.已经抢夺","N.可以抢夺"]},
{idx:32, text:["O.累计投入","P.累计抢夺","N.可以抢夺"]}],
buttons:[
{idx:301, text:"投入", title:"投入资金", key:"L/O", tran:"1.00/1.00", limit:"K", bgcolor: "green"},
{idx:302, text:"抢夺", title:"抢夺资金", key:"M/P", tran:"1.00/1.00", limit:"N", bgcolor: "red"}]},
{title:"我的收益",
color: ["#648", "#86a", "#cae"],
lines:[
{idx:41, text:["Q.收益上限","R.投入收益","S.可获收益"]},
{idx:42, text:["R.投入收益/U.实际收益","U.实际收益/R.投入收益","T.负利利息/T.正利利息"], mode: "T"},
{idx:43, text:["U.实际收益","V.已经提现","W.可以提现"]}],
buttons:[
{idx:401, text:"获取", title:"收益获取", key:"R", tran:"1", limit:"S", bgcolor: "green"},
{idx:402, text:"提现", limit:"W", title:"收益提现", key:"V", tran:"1.00", bgcolor: "red"}]},
{title:"我的利息",
color: ["#684", "#8a6", "#cea"],
lines:[
{idx:51, text:["X.借入利息/Y.借出利息","Y.借出利息/X.借入利息","T.负利利息/T.正利利息"], mode: "T"}],
buttons:[
{idx:501, text:"还款", title:"偿还借款", key:"B", tran:"-1.00", limit:"B", bgcolor: "green"},
{idx:502, text:"收款", title:"收回借款", key:"E", tran:"-1.00", limit:"E", bgcolor: "red"}]},
];
var values = {
"B":0,
"E":0,
"H":0,
"L": 0,
"M": 0,
"N": 0,
"O": 0,
"R": 0,
"V": 0,
"X": 0,
"Y": 0,
"Z": 50000};
var localData = {};
localData.init = function() {
config.values = {};
for (let i in config.dict) {
config.values[config.dict[i]] = 0;
}
config.values.Z = 50000;
}
localData.clear = function() {
Storage.set("scrollTop", 0);
Storage.set("values", config.values);
window.location.reload();
}
localData.get = function() {
var temp = Storage.get("values");
if (temp)
values = temp ? temp:config.values;
}
localData.set = function() {
var scrollTop = Elem.get("outer").scrollTop;
Storage.set("scrollTop", scrollTop);
Storage.set("values", values);
window.location.reload();
}
function setValues() {
values.A = values.H;
values.C = values.A - values.B;
values.D = values.H;
values.F = values.D - values.E;
values.G = values.B - values.E;
values.I = values.L - values.M;
values.J = values.H - values.I;
values.K = values.G + values.J;
values.N = values.I;
values.P = values.O - values.N;
values.Q = parseInt(values.O / 100);
values.S = values.Q - values.R;
values.T = values.X - values.Y;
values.U = values.R - values.T;
values.W = values.U - values.V;
if (values.G < 0) {
values.J = values.H + values.G - values.I;
values.W = values.U - values.V;
}
if (values.T < 0) {
values.U = values.R - values.T;
values.K = values.J;
}
return values;
}
function setElems() {
var outer = Elem.get("outer");
for (let i in items) {
var inner = Elem.set("div", outer, "inner");
var item = items[i];
//标题
item.inner = inner;
setTitle(item);
//数据
for (let j in item.lines) {
var data = item.lines[j];
data.color = item.color;
data.inner = inner;
setLine(data);
}
//按钮
for (let j in item.buttons) {
var data = item.buttons[j];
data.color = item.color;
data.outer = outer;
data.inner = inner;
setButton(data);
}
}
//弹窗
setAlert();
}
function setTitle(data) {
var title = Elem.set("div", data.inner, "title");
data.inner.style.backgroundColor = data.color[2];
title.innerHTML = data.title;
title.style.color = data.color[0];
}
function setButton(data) {
var button = Elem.set("div", data.inner, "button");
button.data = data;
button.innerHTML = data.text;
button.style.backgroundColor = data.bgcolor;
button.onclick = function() {
showAlert();
var title = Elem.get("alert-title");
var limit = Elem.get("alert-limit");
var input = Elem.get("alert-input");
Style.color("alert-box", data.color[0], data.color[2]);
Style.color("alert-input", data.bgcolor, "white");
input.min = 0;
input.max = values[data.limit];
input.dataready = data;
title.style.color = data.color[0];
title.innerHTML = data.title;
limit.innerHTML = "(范围:0-" + input.max + ")";
}
}
//设置弹窗
function setAlert() {
for (let i in config.button) {
var data = config.button[i];
var parent = Elem.get("alert-" + data[1]);
var button = Elem.set("div", parent, "button");
button.id = "button-" + data[0];
button.innerHTML = data[3];
Style.color(button.id, "white", data[2]);
}
Elem.get("button-debug").onclick = function() {
Style.display("alert-box", "none");
Style.display("alert-msg", "inline");
}
Elem.get("button-save").onclick = function() {
localData.set();
}
Elem.get("button-clear").onclick = function() {
localData.clear();
}
tapAlertBox();
hideAlert("alert-bg");
hideAlert("button-cancel");
hideAlert("button-confirm");
tapAlertMsg("button-items", items);
tapAlertMsg("button-config", config);
tapAlertMsg("button-values", values);
}
//点击弹窗
function hideAlert(id) {
Elem.get(id).onclick = function() {
tapAlertBox();
if (id == "button-confirm") {
var input = Elem.get("alert-input");
input.data = input.dataready;
if (input.data.idx == 301 && values.L == values.M) {
values.L = 0;
values.M = 0;
}
reload();
}
};
}
//显示弹窗
function showAlert() {
Style.display("alert-bg", "inline");
Style.display("alert-box", "inline");
Elem.get("outer").style.overflow = "hidden";
}
//隐藏弹窗
function tapAlertBox() {
Style.display("alert-bg", "none");
Style.display("alert-box", "none");
Style.display("alert-msg", "none");
Elem.get("outer").style.overflow = "scroll";
}
function tapAlertMsg(id, data) {
Elem.get(id).data = data;
Elem.get(id).onclick = function() {
alert(JSON.stringify(this.data));
}
}
//重新加载页面
function reload() {
var input = Elem.get("alert-input");
var key = input.data.key.split('/');
var tran = input.data.tran.split('/');
input.value = input.value < input.min ? input.min : input.value;
input.value = input.value > input.max ? input.max : input.value;
for (let i in key) {
values[key[i]] += parseInt(input.value) * parseFloat(tran[i]);
//values[key[i]] = values[key[i]].toFixed(2);
}
localData.set();
}
function setLine(data) {
data.G = values.G;
data.T = values.T;
var bid = data.idx != 21 ? 0: data.G <= 0 ? 1:2;
var border = config.border[bid];
for (let i in data.text) {
if (formatText(data, i) == "NA")
continue;
var line = Elem.set("div", data.inner, "line");
line.style.width = config.width[i] + "%";
//line.style.backgroundColor = data.color[0];
Elem.color(line, "white", data.color[0]);
var text = Elem.set("div", line, "text");
text.innerHTML = formatText(data, i);
text.style.fontSize = config.textSize[i] + "px";
var value = Elem.set("div", line, "value");
value.innerHTML = formatValue(data, i, values);
value.style.fontSize = config.valueSize[i] + "px";
if (!border[i])
continue;
for(let j in border[i]) {
var bid = border[i][j];
var rad = "border" + config.pos[bid] + "Radius";
line.style[rad] = config.rad;
}
}
}
function formatValue(data, i, values) {
var text = formatText(data, i);
var value = values[text.split('.')[0]];
var str = Math.abs(value).toString();
return "¥" + str.replace(/(\d)(?=(\d{3})+(\.|$))/g, '$1,');
}
function formatText(data, i) {
var text = data.text[i];
if (text.split('/')[1]) {
var idx = data[data.mode] > 0 ? 0 : 1;
return text.split('/')[idx];
} else {
return text;
}
}