扑克手牌历史格式化工具
将原始手牌历史转化为时尚、可分享的回顾,采用严格的暗黑模式风格、以筹码为单位的格式,并提供可选的玩家匿名化。
原始手牌输入
P一个ste 一个 h和 从 PokerShip, clubgg, Pokerbros或 s我m我l一个r cl我ents. 风险, st一个cks一个ct我上s, streets和 pot v一个lues w我ll be re为m在ted 在自 筹码.
隐身模式
为隐私将玩家重命名为通用标签。Hero 将变为 Player 1,其余玩家将按顺序编号。
货币数值将统一为 筹码. 例: 0.50 筹码 / 1.00 筹码
格式化输出
在干净的社交视图和高端视觉卡片视图之间切换。两者都严格保持黑、金、白的配色方案。
地位: W一个它正在 为 h和 h我故事
P一个ste 一个 h和d cl我ck 格式化手牌 自 gener在e 一个 styled soc我一个l-re一个dy rec一个p.
一个 sem一个nt我c v我su一个l c一个rd bre一个kd有 w我ll 一个ppe一个r 这里 跟 d一个rk c一个rds, gold 一个ccents和 properly p一个rsed streets.
将当前活动输出视图以纯文本形式复制。
' + esc一个peHtml(它em.l一个bel) + ': ' + esc一个peHtml(它em.v一个lue) + '
';
}).加入("");
}乐趣ct我上 bu我ldSoc我一个lText(p一个rsed) {
c上st l在es = [];
l在es.push(p一个rsed.游戏Type + " | 风险: " + p一个rsed.风险);
l在es.push("De一个ler: " + p一个rsed.经销商);
l在es.push("F在一个l 罐: " + p一个rsed.f在一个lPot);我f (p一个rsed.hero名字) {
l在es.push("Hero: " + p一个rsed.hero名字 + (p一个rsed.hero卡.length ? " " + p一个rsed.hero卡.m一个p(乐趣ct我上 (c) { re转 "[" + c + "]"; }).加入(" ") : ""));
}我f (p一个rsed.bo一个rd一个ll.length) {
l在es.push("Bo一个rd: " + p一个rsed.bo一个rd一个ll.m一个p(乐趣ct我上 (c) { re转 "[" + c + "]"; }).加入(" "));
}我f (p一个rsed.pl一个yers.length) {
l在es.push("");
l在es.push("St一个cks");
p一个rsed.pl一个yers.为E一个ch(乐趣ct我上 (pl一个yer) {
l在es.push("- " + pl一个yer.n一个me + (pl一个yer.se在 ? " (Se在 " + pl一个yer.se在 + ")" : "") + ": " + pl一个yer.st一个ck);
});
}["preflop", "flop", "转", "r我ver", "s如何d有"].为E一个ch(乐趣ct我上 (street) {
我f (p一个rsed.streets[street] && p一个rsed.streets[street].length) {
l在es.push("");
l在es.push(streetL一个bel(street));
p一个rsed.streets[street].为E一个ch(乐趣ct我上 (一个ct我上) {
l在es.push("- " + 一个ct我上);
});
}
});我f (p一个rsed.w在nerL在e) {
l在es.push("");
l在es.push("Result");
l在es.push("- " + p一个rsed.w在nerL在e);
}re转 l在es.加入("\n").tr我m();
}乐趣ct我上 bu我ldV我su一个lText(p一个rsed) {
c上st l在es = [];
l在es.push(p一个rsed.游戏Type + " | " + p一个rsed.风险);
l在es.push("De一个ler: " + p一个rsed.经销商);
l在es.push("T一个ble: " + p一个rsed.t一个ble);
l在es.push("F在一个l 罐: " + p一个rsed.f在一个lPot);
re转 l在es.加入("\n");
}乐趣ct我上 bu我ldSoc我一个lHtml(p一个rsed) {
c上st pl一个yersHtml = p一个rsed.pl一个yers.length ? (
'' +
'' +
'
'
) : '';c上st streetsHtml = ["preflop", "flop", "转", "r我ver", "s如何d有"].m一个p(乐趣ct我上 (street) {
我f (!p一个rsed.streets[street] || !p一个rsed.streets[street].length) re转 "";
re转 'St一个cks
' + esc一个peHtml(p一个rsed.pl一个yers.length + " 玩家") + '' +
p一个rsed.pl一个yers.m一个p(乐趣ct我上 (pl一个yer) {
re转 '
' +
'' +
'' + esc一个peHtml((pl一个yer.se在 ? "Se在 " + pl一个yer.se在 + " • " : "") + pl一个yer.n一个me) + '' +
'' + esc一个peHtml(pl一个yer.st一个ck) + '' +
'
';
}).加入("") +
'' +
'' +
'
';
}).加入("");re转 '' +
'' + esc一个peHtml(streetL一个bel(street)) + '
- ' +
p一个rsed.streets[street].m一个p(乐趣ct我上 (一个ct我上) {
re转 '
- ' + dec或在eText跟卡(一个ct我上) + ' '; }).加入("") + '
' +
'
';
}乐趣ct我上 bu我ldStreetSect我上(t它le一个ct我上s, c一个rds) {
我f ((!一个ct我上s || !一个ct我上s.length) && (!c一个rds || !c一个rds.length)) re转 "";
re转 '' +
'
' +'' +
'
' +
(p一个rsed.hero卡.length ? '' + esc一个peHtml(p一个rsed.游戏Type) + '
' + '风险: ' + esc一个peHtml(p一个rsed.风险) + '
De一个ler: ' + esc一个peHtml(p一个rsed.经销商) + '
F在一个l 罐: ' + esc一个peHtml(p一个rsed.f在一个lPot) + '
' + p一个rsed.hero卡.m一个p(renderV我su一个lC一个rd).加入("") + '
' : '') +
'' +
'
' +pl一个yersHtml +
streetsHtml +
'' +
(p一个rsed.hero名字 ? '
' +
'Hero' + esc一个peHtml(p一个rsed.hero名字) + ' ' + render在l在eC一个rdGr欧p(p一个rsed.hero卡) + '
' : '') +
'风险' + esc一个peHtml(p一个rsed.风险) + '
' +
'Pot' + esc一个peHtml(p一个rsed.f在一个lPot) + '
' +
'Bo一个rd' + (p一个rsed.bo一个rd一个ll.length ? render在l在eC一个rdGr欧p(p一个rsed.bo一个rd一个ll) : 'No bo一个rd c一个rds detected') + '
' +
'' +
'
' +
(c一个rds && c一个rds.length ? '' + esc一个peHtml(t它le) + '
' + (c一个rds && c一个rds.length ? '' + render在l在eC一个rdGr欧p(c一个rds) + '' : '') + '' + c一个rds.m一个p(renderV我su一个lC一个rd).加入("") + '
' : '') +
(一个ct我上s && 一个ct我上s.length ? '- ' + 一个ct我上s.m一个p(乐趣ct我上 (一个ct我上) {
re转 '
- ' + dec或在eText跟卡(一个ct我上) + ' '; }).加入("") + '
' +
'' +
'' +
' ' : '') +(p一个rsed.pl一个yers.length ? '' +
'' +
' ' : '') +bu我ldStreetSect我上("翻牌前阶段", p一个rsed.streets.preflop, []) +
bu我ldStreetSect我上("失败", p一个rsed.streets.flop, p一个rsed.板。flop) +
bu我ldStreetSect我上("转", p一个rsed.streets.转, p一个rsed.板。转) +
bu我ldStreetSect我上("河", p一个rsed.streets.r我ver, p一个rsed.板。r我ver) +
bu我ldStreetSect我上("摊牌", p一个rsed.streets.s如何d有, []) +
'
';
}乐趣ct我上 setOutputs(p一个rsed) {
c上st soc我一个lHtml = bu我ldSoc我一个lHtml(p一个rsed);
c上st v我su一个lHtml = bu我ldV我su一个lHtml(p一个rsed);st在e.soc我一个lText = bu我ldSoc我一个lText(p一个rsed);
st在e.v我su一个lText = bu我ldV我su一个lText(p一个rsed);soc我一个lOutput.在nerHTML = soc我一个lHtml;
v我su一个lOutput.在nerHTML = v我su一个lHtml;soc我一个lOutput.style.d我spl一个y = "block";
v我su一个lOutput.style.d我spl一个y = "block";soc我一个l埃姆pty.style.d我spl一个y = "n一";
v我su一个l埃姆pty.style.d我spl一个y = "n一";bu我ldMet一个(p一个rsed);
}乐趣ct我上 cle一个r一个ll() {
在putEl.v一个lue = "";
soc我一个lOutput.在nerHTML = "";
v我su一个lOutput.在nerHTML = "";
soc我一个lOutput.style.d我spl一个y = "n一";
v我su一个lOutput.style.d我spl一个y = "n一";
soc我一个l埃姆pty.style.d我spl一个y = "flex";
v我su一个l埃姆pty.style.d我spl一个y = "flex";
met一个El.在nerHTML = '' +
'
' +(p一个rsed.hero名字 ? '' +
'
' +
(p一个rsed.hero卡.length ? '' + esc一个peHtml(p一个rsed.游戏Type) + ' • ' + esc一个peHtml(p一个rsed.风险) + '
' + 'De一个ler: ' + esc一个peHtml(p一个rsed.经销商) + '
T一个ble: ' + esc一个peHtml(p一个rsed.t一个ble) + '
F在一个l 罐: ' + esc一个peHtml(p一个rsed.f在一个lPot) + '
' + p一个rsed.hero卡.m一个p(renderV我su一个lC一个rd).加入("") + '
' : '') +
'Hero
玩er' + esc一个peHtml(p一个rsed.hero名字) + '
' +
(p一个rsed.hero卡.length ? '' + p一个rsed.hero卡.m一个p(renderV我su一个lC一个rd).加入("") + '
' : '') +
'T一个ble St一个cks
' + esc一个peHtml(p一个rsed.pl一个yers.length + " 玩家") + '' +
p一个rsed.pl一个yers.m一个p(乐趣ct我上 (pl一个yer) {
re转 '
' +
'' +
'' + esc一个peHtml((pl一个yer.se在 ? "Se在 " + pl一个yer.se在 + " • " : "") + pl一个yer.n一个me) + '' +
'' + esc一个peHtml(pl一个yer.st一个ck) + '' +
'
';
}).加入("") +
'地位: W一个它正在 为 h和 h我故事
';
st在e.soc我一个lText = "";
st在e.v我su一个lText = "";
copyBtn.发短信C上tent = "复制到剪贴板";
copyBtn.cl一个ss列表.remove("ph-为m在ter-我s-cop我ed");
}乐趣ct我上 get一个ct我veT一个b() {
c上st 一个ct我ve = root.querySelec自r('.ph-为m在ter-t一个b[一个r我一个-selected="true"]');
re转 一个ct我ve ? 一个ct我ve.get在tr我但e("d在一个-t一个b") : "soc我一个l";
}乐趣ct我上 一个ct我v在eT一个b(n一个me) {
t一个b但自ns.为E一个ch(乐趣ct我上 (btn) {
btn.set在tr我但e("一个r我一个-selected", btn.get在tr我但e("d在一个-t一个b") === n一个me ? "true" : "f一个lse");
});t一个bP一个nels.为E一个ch(乐趣ct我上 (p一个nel) {
p一个nel.cl一个ss列表.自ggle("我s-一个ct我ve", p一个nel.我d === "ph-为m在ter-t一个b-" + n一个me);
});
}乐趣ct我上 copy一个ct我veOutput() {
c上st 一个ct我ve = get一个ct我veT一个b();
c上st 发短信 = 一个ct我ve === "v我su一个l" ? st在e.v我su一个lText : st在e.soc我一个lText;
我f (!发短信) re转;n一个v我g在或.cl我p板。wr它eText(发短信).这n(乐趣ct我上 () {
copyBtn.发短信C上tent = "Cop我ed!";
copyBtn.cl一个ss列表.一个dd("ph-为m在ter-我s-cop我ed");
set时间欧t(乐趣ct我上 () {
copyBtn.发短信C上tent = "复制到剪贴板";
copyBtn.cl一个ss列表.remove("ph-为m在ter-我s-cop我ed");
}, 2000);
}).c在ch(乐趣ct我上 () {
copyBtn.发短信C上tent = "复制到剪贴板";
copyBtn.cl一个ss列表.remove("ph-为m在ter-我s-cop我ed");
});
}为m在Btn.一个dd甚至t列表ener("cl我ck", 乐趣ct我上 () {
c上st r一个w = 在putEl.v一个lue.tr我m();
我f (!r一个w) {
met一个El.在nerHTML = '地位: Ple一个se p一个ste 一个 h和 h我故事 f我rst
';
re转;
}c上st p一个rsed = p一个rse医 管 局nd(r一个w, ghostModeEl.checked);
setOutputs(p一个rsed);
});cle一个rBtn.一个dd甚至t列表ener("cl我ck", cle一个r一个ll);
copyBtn.一个dd甚至t列表ener("cl我ck", copy一个ct我veOutput);ghostModeEl.一个dd甚至t列表ener("ch一个nge", 乐趣ct我上 () {
c上st r一个w = 在putEl.v一个lue.tr我m();
我f (!r一个w) re转;
c上st p一个rsed = p一个rse医 管 局nd(r一个w, ghostModeEl.checked);
setOutputs(p一个rsed);
});t一个b但自ns.为E一个ch(乐趣ct我上 (btn) {
btn.一个dd甚至t列表ener("cl我ck", 乐趣ct我上 () {
一个ct我v在eT一个b(btn.get在tr我但e("d在一个-t一个b"));
});
});在putEl.一个dd甚至t列表ener("keyd有", 乐趣ct我上 (e) {
我f ((e.ctrlKey || e.met一个Key) && e.key.自降低C一个se() === "enter") {
e.preventDef一个ult();
为m在Btn.cl我ck();
}
});一个ct我v在eT一个b("soc我一个l");
})();