426 lines
18 KiB
JavaScript
426 lines
18 KiB
JavaScript
"use strict";
|
|
var elements = new Object();
|
|
var modalActive = 0;
|
|
const wpjson = "https://zinomedia.de/wp_hq/pkrstarsbotextension/wp-json";
|
|
const production = 0;
|
|
|
|
document.addEventListener("DOMContentLoaded", function(event) {
|
|
defer(function() {
|
|
console.log("jQuery is now loaded");
|
|
init();
|
|
|
|
});
|
|
});
|
|
|
|
function init() {
|
|
// Append
|
|
jQuery(".pp-offcanvas-content").append('<div id="slideOut" class="slideToggle vertical-center pp-offcanvas-5fb1907e2d646-close"><i class="fas fa-caret-left center"></i></div>');
|
|
jQuery(".pp-modal-container").append('<div id="slideInOverlay" class="slideToggle vertical-center"><i class="fas fa-caret-right center"></i></div>');
|
|
|
|
|
|
// Draggable
|
|
jQuery(".pp-modal").draggable({
|
|
containment: "#main",
|
|
scroll: false,
|
|
});
|
|
|
|
elements = {
|
|
"sidebarLinks": {
|
|
"1": { obj: jQuery(".pp-offcanvas-1"), callback: openModalStreamerInfo, extraClass: "modal-5fb29d747a583" },
|
|
"2": { obj: jQuery(".pp-offcanvas-2"), callback: emptyCallback },
|
|
"3": { obj: jQuery(".pp-offcanvas-3"), callback: emptyCallback },
|
|
"4": { obj: jQuery(".pp-offcanvas-4"), callback: emptyCallback },
|
|
"5": { obj: jQuery(".pp-offcanvas-5"), callback: emptyCallback },
|
|
"6": { obj: jQuery(".pp-offcanvas-6"), callback: emptyCallback },
|
|
},
|
|
"sidebarToggles": {
|
|
"slideIn": { obj: jQuery("#slideIn"), callback: sidebarSlideIn },
|
|
"slideOut": { obj: jQuery("#slideOut"), callback: sidebarSlideOut },
|
|
"slideInOverlay": { obj: jQuery("#slideInOverlay"), callback: sidebarSlideInOverlay },
|
|
},
|
|
"buttons": {
|
|
"sample": { obj: jQuery("#sampleButton") },
|
|
},
|
|
"modals": {
|
|
"streamerInfo": {
|
|
"obj": jQuery("#modal-5fb29d747a583"),
|
|
"header": jQuery("#modal-5fb29d747a583 .pp-modal-body"),
|
|
"container": jQuery("#modal-5fb29d747a583 .pp-modal"),
|
|
"close": jQuery("#modal-5fb29d747a583 .pp-modal-close"),
|
|
"enabled": 0,
|
|
// "intervalDelay": 60000,
|
|
"callback": emptyCallback,
|
|
"values": {
|
|
"af": {
|
|
"header": jQuery("span").filter(function() { return (jQuery(this).text() === 'Aggression Factor AF') })[0],
|
|
"text": jQuery("span").filter(function() { return (jQuery(this).text() === 'Aggression Factor AF') }).parent()[0].nextElementSibling.children[0],
|
|
"overall": jQuery("#afOverall")[0],
|
|
"flop": jQuery("#afFlop")[0],
|
|
"turn": jQuery("#afTurn")[0],
|
|
"river": jQuery("#afRiver")[0],
|
|
"refresh": function() {
|
|
// loaderAF();
|
|
initLoader("af", ["flop", "turn", "river"]);
|
|
apirequest("/extension/v1/af", { "betrounds": ["flop", "turn", "river"] }, setAF, "overall");
|
|
apirequest("/extension/v1/af", { "betrounds": ["flop"] }, setAF, "flop");
|
|
apirequest("/extension/v1/af", { "betrounds": ["turn"] }, setAF, "turn");
|
|
apirequest("/extension/v1/af", { "betrounds": ["river"] }, setAF, "river");
|
|
},
|
|
"startInterval": function() {
|
|
startInterval("af");
|
|
},
|
|
"stopInterval": function() {
|
|
stopInterval("af");
|
|
},
|
|
"intervalID": 0,
|
|
"intervalDelay": 60000,
|
|
},
|
|
"threebet": {
|
|
"header": jQuery("span").filter(function() { return (jQuery(this).text() === '3Bet') })[0],
|
|
"text": jQuery("span").filter(function() { return (jQuery(this).text() === '3Bet') }).parent()[0].nextElementSibling.children[0],
|
|
"overall": jQuery("#3betOverall")[0],
|
|
"refresh": function() {
|
|
// loader3Bet();
|
|
initLoader("threebet", ["overall"]);
|
|
apirequest("/extension/v1/3bet", { "betrounds": ["holecards", "flop", "turn", "river"] }, set3Bet);
|
|
},
|
|
"startInterval": function() {
|
|
startInterval("threebet");
|
|
},
|
|
"stopInterval": function() {
|
|
stopInterval("threebet");
|
|
},
|
|
"intervalID": 0,
|
|
"intervalDelay": 60000,
|
|
},
|
|
"blinds": {
|
|
"header": jQuery("span").filter(function() { return (jQuery(this).text() === 'Cash Game Blinds Spent') })[0],
|
|
"text": jQuery("span").filter(function() { return (jQuery(this).text() === 'Cash Game Blinds Spent') }).parent()[0].nextElementSibling.children[0],
|
|
"big_blind_play": jQuery("#bigBlindSpentPlay")[0],
|
|
"small_blind_play": jQuery("#smallBlindSpentPlay")[0],
|
|
"total_blind_play": jQuery("#totalBlindSpentPlay")[0],
|
|
"big_blind_real": jQuery("#bigBlindSpentReal")[0],
|
|
"small_blind_real": jQuery("#smallBlindSpentReal")[0],
|
|
"total_blind_real": jQuery("#totalBlindSpentReal")[0],
|
|
"refresh": function() {
|
|
initLoader("blinds", ["big_blind_play", "small_blind_play", "total_blind_play", "big_blind_real", "small_blind_real", "total_blind_real"]);
|
|
apirequest("/extension/v1/blinds", {}, setBlinds);
|
|
},
|
|
"startInterval": function() {
|
|
startInterval("blinds");
|
|
},
|
|
"stopInterval": function() {
|
|
stopInterval("blinds");
|
|
},
|
|
"intervalID": 0,
|
|
"intervalDelay": 60000,
|
|
},
|
|
"tournamentwinnings": {
|
|
"header": jQuery("span").filter(function() { return (jQuery(this).text() === 'Tournament Winnings') })[0],
|
|
"text": jQuery("span").filter(function() { return (jQuery(this).text() === 'Tournament Winnings') }).parent()[0].nextElementSibling.children[0],
|
|
"winnings_realmoney": jQuery("#tournamentWinningsRealMoney")[0],
|
|
"winnings_playmoney": jQuery("#tournamentWinningsPlayMoney")[0],
|
|
"refresh": function() {
|
|
initLoader("tournamentwinnings", ["winnings_playmoney", "winnings_realmoney"]);
|
|
apirequest("/extension/v1/tournamentwinnings", {}, setTournamentWinnings);
|
|
},
|
|
"startInterval": function() {
|
|
startInterval("tournamentwinnings");
|
|
},
|
|
"stopInterval": function() {
|
|
stopInterval("tournamentwinnings");
|
|
},
|
|
"intervalID": 0,
|
|
"intervalDelay": 60000,
|
|
},
|
|
"bountywinnings": {
|
|
"header": jQuery("span").filter(function() { return (jQuery(this).text() === 'Bounty Winnings') })[0],
|
|
"text": jQuery("span").filter(function() { return (jQuery(this).text() === 'Bounty Winnings') }).parent()[0].nextElementSibling.children[0],
|
|
"winnings_realmoney": jQuery("#bountyWinningsRealMoney")[0],
|
|
"winnings_playmoney": jQuery("#bountyWinningsPlayMoney")[0],
|
|
"refresh": function() {
|
|
initLoader("bountywinnings", ["winnings_playmoney", "winnings_realmoney"]);
|
|
apirequest("/extension/v1/bountywinnings", {}, setBountyWinnings);
|
|
},
|
|
"startInterval": function() {
|
|
startInterval("bountywinnings");
|
|
},
|
|
"stopInterval": function() {
|
|
stopInterval("bountywinnings");
|
|
},
|
|
"intervalID": 0,
|
|
"intervalDelay": 60000,
|
|
},
|
|
}
|
|
},
|
|
},
|
|
};
|
|
|
|
// Center
|
|
elements.modals.streamerInfo.container.addClass("center");
|
|
sidebarClick();
|
|
eventListeners();
|
|
|
|
// Testing / Production
|
|
if (!production) {
|
|
let auth = {
|
|
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDU3MDUxNzEsIm9wYXF1ZV91c2VyX2lkIjoiVTE2MzUwMDkwIiwidXNlcl9pZCI6IjE2MzUwMDkwIiwiY2hhbm5lbF9pZCI6IjE2MzUwMDkwIiwicm9sZSI6ImJyb2FkY2FzdGVyIiwiaXNfdW5saW5rZWQiOmZhbHNlLCJwdWJzdWJfcGVybXMiOnsibGlzdGVuIjpbImJyb2FkY2FzdCIsIndoaXNwZXItVTE2MzUwMDkwIiwiZ2xvYmFsIl0sInNlbmQiOlsiYnJvYWRjYXN0Iiwid2hpc3Blci0qIl19fQ.AOmTlG4RoZhfm7YixnrgcTw_lhsOHCd-UwfM4QCBUGU",
|
|
"channelId": 16350090,
|
|
};
|
|
sessionStorage.setItem('auth', JSON.stringify(auth));
|
|
var obj = JSON.parse(sessionStorage.auth);
|
|
console.log(obj);
|
|
}
|
|
else {
|
|
window.Twitch.ext.onAuthorized(function(auth) {
|
|
console.log('The JWT that will be passed to the EBS is', auth.token);
|
|
console.log('The channel ID is', auth.channelId);
|
|
console.log('The client ID is', auth.clientId);
|
|
console.log('The userId ID is', auth.userId);
|
|
sessionStorage.setItem('auth', JSON.stringify(auth));
|
|
var obj = JSON.parse(sessionStorage.auth);
|
|
console.log(obj);
|
|
});
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// function loaderAF() {
|
|
// let elem = elements.modals.streamerInfo.values.af;
|
|
// ["flop", "turn", "river", "overall"].forEach(function(entry) {
|
|
// let elem = elements.modals.streamerInfo.values.af[entry];
|
|
// elem.textContent = '';
|
|
// elem.nextSibling.nextSibling.textContent = '';
|
|
// jQuery(elem).addClass("ajax");
|
|
// jQuery(elem.nextSibling.nextSibling).addClass("ajax");
|
|
// });
|
|
// }
|
|
|
|
function initLoader(name, nodes) {
|
|
let elem = elements.modals.streamerInfo.values[name];
|
|
nodes.forEach(function(entry) {
|
|
let elem = elements.modals.streamerInfo.values[name][entry];
|
|
elem.textContent = '';
|
|
|
|
|
|
// if (typeof(elem.nextSibling.nextSibling.textContent) != 'undefined' && elem.nextSibling.nextSibling.textContent != null)
|
|
// elem.nextSibling.nextSibling.textContent = '';
|
|
|
|
if (elem.hasOwnProperty("nextSibling.nextSibling.textContent"))
|
|
elem.nextSibling.nextSibling.textContent = '';
|
|
|
|
|
|
jQuery(elem).addClass("ajax");
|
|
jQuery(elem.nextSibling.nextSibling).addClass("ajax");
|
|
});
|
|
}
|
|
|
|
function removeLoader(name, nodes) {
|
|
let elem = elements.modals.streamerInfo.values[name];
|
|
nodes.forEach(function(entry) {
|
|
let elem = elements.modals.streamerInfo.values[name][entry];
|
|
|
|
if (elem.hasOwnProperty("nextSibling.nextSibling.textContent"))
|
|
jQuery(elem.nextSibling.nextSibling).removeClass("ajax");
|
|
|
|
jQuery(elem).removeClass("ajax");
|
|
});
|
|
}
|
|
|
|
function startInterval(name) {
|
|
console.log("Interval " + name + " starting...");
|
|
if (!elements.modals.streamerInfo.values[name].intervalID) {
|
|
elements.modals.streamerInfo.values[name].intervalID = setInterval(async() => {
|
|
elements.modals.streamerInfo.values[name].refresh();
|
|
}, elements.modals.streamerInfo.values[name].intervalDelay);
|
|
}
|
|
}
|
|
|
|
function stopInterval(name) {
|
|
if (elements.modals.streamerInfo.values[name].intervalID) {
|
|
clearTimeout(elements.modals.streamerInfo.values[name].intervalID);
|
|
elements.modals.streamerInfo.values[name].intervalID = 0;
|
|
}
|
|
console.log("Interval " + name + " stopped.");
|
|
}
|
|
|
|
function setBountyWinnings(data) {
|
|
console.log(data);
|
|
let elem = elements.modals.streamerInfo.values.bountywinnings;
|
|
elem.header.textContent = "Bounty Winnings " + data.winnings_realmoney + " | " + data.winnings_playmoney; // header
|
|
elem.winnings_playmoney.textContent = data.winnings_playmoney;
|
|
elem.winnings_realmoney.textContent = data.winnings_realmoney;
|
|
removeLoader("bountywinnings", ["winnings_playmoney", "winnings_realmoney"]);
|
|
}
|
|
|
|
function setTournamentWinnings(data) {
|
|
console.log(data);
|
|
let elem = elements.modals.streamerInfo.values.tournamentwinnings;
|
|
elem.header.textContent = "Tournament Winnings " + data.winnings_realmoney + " | " + data.winnings_playmoney; // header
|
|
elem.winnings_playmoney.textContent = data.winnings_playmoney;
|
|
elem.winnings_realmoney.textContent = data.winnings_realmoney;
|
|
removeLoader("tournamentwinnings", ["winnings_playmoney", "winnings_realmoney"]);
|
|
}
|
|
|
|
function setBlinds(data) {
|
|
console.log(data);
|
|
let elem = elements.modals.streamerInfo.values.blinds;
|
|
|
|
elem.header.textContent = "Cash Game Blinds Spent " + data.total_real + " | " + data.total_play; // header
|
|
elem.big_blind_play.textContent = data.big_blind_play;
|
|
elem.small_blind_play.textContent = data.small_blind_play;
|
|
elem.total_blind_play.textContent = data.total_play;
|
|
elem.big_blind_real.textContent = data.big_blind_real;
|
|
elem.small_blind_real.textContent = data.small_blind_real;
|
|
elem.total_blind_real.textContent = data.total_real;
|
|
|
|
removeLoader("blinds", ["big_blind_play", "small_blind_play", "total_blind_play", "big_blind_real", "small_blind_real", "total_blind_real"]);
|
|
// ["big_blind", "small_blind", "total"].forEach(function(entry) {
|
|
// jQuery(elem.entry).removeClass("ajax");
|
|
// });
|
|
|
|
// jQuery(elem.nextSibling.nextSibling).removeClass("ajax");
|
|
}
|
|
|
|
function set3Bet(data) {
|
|
console.log(data);
|
|
let elem = elements.modals.streamerInfo.values.threebet.overall;
|
|
|
|
elem.textContent = data.threebet;
|
|
elem.nextSibling.nextSibling.textContent = "Based on " + data.unique_handids + " records"
|
|
elements.modals.streamerInfo.values.threebet.header.textContent = "3Bet " + data.threebet;
|
|
jQuery(elem).removeClass("ajax");
|
|
jQuery(elem.nextSibling.nextSibling).removeClass("ajax");
|
|
}
|
|
|
|
function setAF(data, args) {
|
|
console.log(data);
|
|
let elem = elements.modals.streamerInfo.values.af[args];
|
|
elem.textContent = data.af;
|
|
elem.nextSibling.nextSibling.textContent = "Based on " + data.unique_handids + " records"
|
|
|
|
if (args == "overall")
|
|
elements.modals.streamerInfo.values.af.header.textContent = "Aggression Factor (AF) " + data.af;
|
|
|
|
jQuery(elem).removeClass("ajax");
|
|
jQuery(elem.nextSibling.nextSibling).removeClass("ajax");
|
|
}
|
|
|
|
function eventListeners() {
|
|
elements.buttons.sample.obj.bind('click', function() {
|
|
// console.log("clicked");
|
|
// apirequest("/extension/v1/3bet", { "betrounds": ["holecards", "flop", "turn", "river"] }, set3Bet);
|
|
apirequest("/extension/v1/tournamentwinnings", {}, setTournamentWinnings);
|
|
// apirequest("/extension/v1/af", { "betrounds": ["flop", "turn", "river"] }, setAF, "overall");
|
|
// elements.modals.streamerInfo.values.af.refresh();
|
|
});
|
|
}
|
|
|
|
function apirequest(route, data, callback, args) {
|
|
let auth = JSON.parse(sessionStorage.auth);
|
|
|
|
// Add authentication
|
|
data["token"] = auth.token;
|
|
data["channelID"] = auth.channelId;
|
|
// console.log(data);
|
|
|
|
let url = wpjson + route;
|
|
jQuery.ajax({
|
|
method: 'POST',
|
|
url: url,
|
|
data: data,
|
|
dataType: 'json',
|
|
success: function(receivedData) {
|
|
callback(receivedData, args);
|
|
},
|
|
});
|
|
}
|
|
|
|
function sidebarSlideInOverlay() {
|
|
elements.sidebarToggles.slideIn.obj.click();
|
|
// elements.sidebarToggles.slideInOverlay.obj.hide();
|
|
}
|
|
|
|
function sidebarSlideIn() {
|
|
// elements.sidebarToggles["slideIn"].obj.hide();
|
|
}
|
|
|
|
function active_modal() {
|
|
// Check if a modal is active
|
|
let enabled;
|
|
for (const [key, node] of Object.entries(elements["modals"])) {
|
|
enabled = node.enabled;
|
|
}
|
|
console.log("enabled: " + enabled);
|
|
|
|
return enabled;
|
|
}
|
|
|
|
function sidebarSlideOut() {
|
|
// if (!active_modal()) {
|
|
// elements.sidebarToggles["slideIn"].obj.delay(450).show(0);
|
|
// }
|
|
// else {
|
|
// elements.sidebarToggles.slideInOverlay.obj.delay(450).show(0);
|
|
// }
|
|
|
|
}
|
|
|
|
function openModalStreamerInfo() {
|
|
elements.modals.streamerInfo.enabled = 1; // caution: never set back to 0, use?
|
|
|
|
for (const [key, node] of Object.entries(elements["modals"])) {
|
|
for (let [key, value] of Object.entries(node.values)) {
|
|
value.refresh();
|
|
value.startInterval();
|
|
}
|
|
}
|
|
// elements.modals.streamerInfo.values.af.refresh();
|
|
// elements.modals.streamerInfo.values.af.startInterval();
|
|
}
|
|
|
|
function modalStreamerInfo() {
|
|
console.log("clicked");
|
|
}
|
|
|
|
function emptyCallback() {
|
|
console.log("empty callback");
|
|
return;
|
|
}
|
|
|
|
function sidebarClick() {
|
|
for (const [key, node] of Object.entries(elements["sidebarLinks"])) {
|
|
node.obj.addClass(node.extraClass);
|
|
node.obj.click(function() {
|
|
node.callback(node);
|
|
});
|
|
}
|
|
for (const [key, node] of Object.entries(elements["sidebarToggles"])) {
|
|
node.obj.click(function() {
|
|
node.callback();
|
|
});
|
|
}
|
|
|
|
for (const [key, node] of Object.entries(elements["modals"])) {
|
|
node.close.click(function() {
|
|
node.enabled = 0;
|
|
|
|
for (let [key, value] of Object.entries(node.values)) {
|
|
value.stopInterval();
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|
|
|
|
function defer(method) {
|
|
if (window.jQuery) {
|
|
method();
|
|
}
|
|
else {
|
|
setTimeout(function() { defer(method) }, 50);
|
|
}
|
|
}
|