const apiURLbase = "https://cmeapi.infosentience.com/CME/"; const apiEndpoint = "GetHTML"; const apiDirectEndpoint = "CMEDirectHTML"; let css = ""; function getCommodityCode() { let url = new URL(location.href); let commodityCode = url.searchParams.get('product'); return commodityCode == null ? "" : commodityCode; } function getUserId() { let url = new URL(location.href); let userId = url.searchParams.get('userId'); return userId == null ? "" : userId; } function getEnvCode() { let url = new URL(location.href); let envCode = url.searchParams.get('env'); return envCode == null ? "" : envCode; } function getEnvParam() { let envCode = getEnvCode(); if (envCode == "") return ""; return "&env=" + envCode; } function getCSSParam() { if (css == "") return ""; return "&excludecss=true"; } function getIdParam() { let id = getUserId(); if (id == "") return ""; return "&userId=" + id; } function makeRequestForCommodity(useCommodityCode) { let url = getApiUrl(useCommodityCode); var http = new XMLHttpRequest(); http.onreadystatechange = getResponseFunc(http); http.open("GET", url, true); http.send(); } function getCommodityData() { makeRequestForCommodity(getCommodityCode()); } function getApiUrl(useCommodityCode) { let endpoint = getDashboardDiv() == null ? apiDirectEndpoint : apiEndpoint; return apiURLbase + endpoint + "?product=" + useCommodityCode + getEnvParam() + getCSSParam() + getIdParam(); } function getResponseFunc(useReq) { let func = function() { if (useReq.readyState == XMLHttpRequest.DONE) { if (useReq.status == 200) { handleResponseText(useReq.responseText); } else if (useReq.status == 400) { alert('Error fetching dashboard for commodity ' + getCommodityCode()) } } } return func; } function handleResponseText(useText) { setDashboardHTML(getDashboardContainer(), useText); reducePadding(); } function getDashboardContainer() { var div = document.getElementById("dashboard-div"); if (div != null) { return div; } return document.body; } function getDashboardDiv() { return document.getElementById("dashboard-div"); } function clearDashboardContainer() { let container = getDashboardContainer() while (container.children.length > 0) { container.removeChild(container.children[0]); } } function setDashboardHTML(elm, html, append = false) { if (css != "") { html = insertCSS(html); } else { stripCSS(html); } if (append) { elm.innerHTML += html; } else elm.innerHTML = html; let scripts = Array.from(elm.querySelectorAll("script")); if (scripts.length < 1) return; makeNewScript(scripts[0], scripts); } function stripCSS(htmlStr) { var startIndex = htmlStr.indexOf("