"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('
'); jQuery(".pp-modal-container").append('
'); // 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); } }