Files
2021-02-16 23:07:41 +01:00

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);
}
}