// ==UserScript== // @name Status.io Selector 2 // @namespace https://status.io // @description Effort to simplify configuration of incidents/maintenance windows // @require http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js // @require http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js // @require https://gist.github.com/raw/2625891/waitForKeyElements.js // @grant GM_addStyle // @grant GM_setClipboard // @version 0.0.1 // ==/UserScript== // draw frame var zNode = document.createElement('div'); zNode.setAttribute('id', 'myContainer'); document.body.appendChild(zNode); if (window.location.href.indexOf("5d49ec10226b9e13cb6a422e") > -1) { // render initial HTML var profilesHTML = '
' + '
'; zNode.innerHTML = profilesHTML; document.getElementById("controlplanesButton").addEventListener("click", controlplanesButtonClickAction, false); document.getElementById("dataplanesButton").addEventListener("click", dataplanesButtonClickAction, false); document.getElementById("stagesButton").addEventListener("click", stagesButtonClickAction, false); document.getElementById("shrinkButton").addEventListener("click", shrinkButtonClickAction, false); // initialize azure component and region variables var componentArray = ["api", "auth", "compute", "jobs", "odbc", "webapp", "sql"]; var regionArray = ["canadacentral", "canadaeast", "centralindia", "southindia", "westindia", "switzerlandnorth", "norwayeast", "westus2", "westus", "southcentralus", "westeurope", "northeurope", "ukwest", "uksouth", "southafricanorth", "uaenorth", "australiaeast", "australiacentral", "australiacentral2", "australiasoutheast", "japaneast", "japanwest", "koreacentral", "southeastasia", "eastasia", "brazilsouth", "eastus2", "eastus", "centralus", "northcentralus", "francecentral", "chinanorth2", "chinaeast2", "usgovvirginia", "usgovarizona"]; // create tracking maps var selectedComponents = new Map(); var selectedRegions = new Map(); for (i = 0; i < componentArray.length; i++) { selectedComponents.set(componentArray[i], false); } for (i = 0; i < regionArray.length; i++) { selectedRegions.set(regionArray[i], false) } // init component div groups var apiGroup = $("div.form-group").filter(":contains('API Service')"); var authGroup = $("div.form-group").filter(":contains('Authentication')"); var computeGroup = $("div.form-group").filter(":contains('Compute Service')"); var jobsGroup = $("div.form-group").filter(":contains('Jobs Service')"); var odbcGroup = $("div.form-group").filter(":contains('ODBC/JDBC Service')"); var webappGroup = $("div.form-group").filter(":contains('User Interface')"); var sqlGroup = $("div.form-group").filter(":contains('Databricks SQL')"); // write component HTML template var componentsHTML = ' ' + '' + '' + '

'; // regional functions function canadaeastButtonClickAction(zEvent) { toggleRegion("canadaeast"); toggleButtonColor("canadaeastButton"); }; function canadacentralButtonClickAction(zEvent) { toggleRegion("canadacentral"); toggleButtonColor("canadacentralButton"); }; function canadacentralCPButtonClickAction(zEvent) { toggleRegion("canadacentral"); toggleRegion("canadaeast"); toggleButtonColor("canadacentralButton"); } function centralindiaButtonClickAction(zEvent) { toggleRegion("centralindia"); toggleButtonColor("centralindiaButton"); }; function centralindiaCPButtonClickAction(zEvent) { toggleRegion("centralindia"); toggleRegion("southindia"); toggleRegion("westindia"); toggleButtonColor("centralindiaButton"); }; function southindiaButtonClickAction(zEvent) { toggleRegion("southindia"); toggleButtonColor("southindiaButton"); }; function westindiaButtonClickAction(zEvent) { toggleRegion("westindia"); toggleButtonColor("westindiaButton"); }; function switzerlandnorthButtonClickAction(zEvent) { toggleRegion("switzerlandnorth"); toggleButtonColor("switzerlandnorthButton"); }; function norwayeastButtonClickAction(zEvent) { toggleRegion("norwayeast"); toggleButtonColor("norwayeastButton"); }; function westusButtonClickAction(zEvent) { toggleRegion("westus"); toggleButtonColor("westusButton"); }; function westusCPButtonClickAction(zEvent) { toggleRegion("westus"); toggleRegion("westus2"); toggleRegion("southcentralus"); toggleButtonColor("westusButton"); }; function westus2ButtonClickAction(zEvent) { toggleRegion("westus2"); toggleButtonColor("westus2Button"); }; function southcentralusButtonClickAction(zEvent) { toggleRegion("southcentralus"); toggleButtonColor("southcentralusButton"); }; function westeuropeButtonClickAction(zEvent) { toggleRegion("westeurope"); toggleButtonColor("westeuropeButton"); }; function westeuropeCPButtonClickAction(zEvent) { toggleRegion("westeurope"); toggleRegion("northeurope"); toggleButtonColor("westeuropeButton"); } function northeuropeButtonClickAction(zEvent) { toggleRegion("northeurope"); toggleButtonColor("northeuropeButton"); }; function ukwestButtonClickAction(zEvent) { toggleRegion("ukwest"); toggleButtonColor("ukwestButton"); }; function ukwestCPButtonClickAction(zEvent) { toggleRegion("ukwest"); toggleRegion("uksouth"); toggleButtonColor("ukwestButton"); } function uksouthButtonClickAction(zEvent) { toggleRegion("uksouth"); toggleButtonColor("uksouthButton"); }; function southafricanorthButtonClickAction(zEvent) { toggleRegion("southafricanorth"); toggleButtonColor("southafricanorthButton"); }; function uaenorthButtonClickAction(zEvent) { toggleRegion("uaenorth"); toggleButtonColor("uaenorthButton"); }; function australiaeastButtonClickAction(zEvent) { toggleRegion("australiaeast"); toggleButtonColor("australiaeastButton"); }; function australiaeastCPButtonClickAction(zEvent) { toggleRegion("australiaeast"); toggleRegion("australiacentral"); toggleRegion("australiacentral2"); toggleRegion("australiasoutheast"); toggleButtonColor("australiaeastButton"); } function australiacentralButtonClickAction(zEvent) { toggleRegion("australiacentral"); toggleButtonColor("australiacentralButton"); }; function australiacentral2ButtonClickAction(zEvent) { toggleRegion("australiacentral2"); toggleButtonColor("australiacentral2Button"); }; function australiasoutheastButtonClickAction(zEvent) { toggleRegion("australiasoutheast"); toggleButtonColor("australiasoutheastButton"); }; function japaneastButtonClickAction(zEvent) { toggleRegion("japaneast"); toggleButtonColor("japaneastButton"); }; function japaneastCPButtonClickAction(zEvent) { toggleRegion("japaneast"); toggleRegion("japanwest"); toggleButtonColor("japaneastButton"); } function japanwestButtonClickAction(zEvent) { toggleRegion("japanwest"); toggleButtonColor("japanwestButton"); }; function koreacentralButtonClickAction(zEvent) { toggleRegion("koreacentral"); toggleButtonColor("koreacentralButton"); }; function southeastasiaButtonClickAction(zEvent) { toggleRegion("southeastasia"); toggleButtonColor("southeastasiaButton"); }; function eastasiaButtonClickAction(zEvent) { toggleRegion("eastasia"); toggleButtonColor("eastasiaButton"); }; function brazilsouthButtonClickAction(zEvent) { toggleRegion("brazilsouth"); toggleButtonColor("brazilsouthButton"); }; function eastus2ButtonClickAction(zEvent) { toggleRegion("eastus2"); toggleButtonColor("eastus2Button"); }; function eastusButtonClickAction(zEvent) { toggleRegion("eastus"); toggleButtonColor("eastusButton"); }; function centralusButtonClickAction(zEvent) { toggleRegion("centralus"); toggleButtonColor("centralusButton"); }; function northcentralusButtonClickAction(zEvent) { toggleRegion("northcentralus"); toggleButtonColor("northcentralusButton"); }; function francecentralButtonClickAction(zEvent) { toggleRegion("francecentral"); toggleButtonColor("francecentralButton"); }; function chinanorth2ButtonClickAction(zEvent) { toggleRegion("chinanorth2"); toggleButtonColor("chinanorth2Button"); }; function chinaeast2ButtonClickAction(zEvent) { toggleRegion("chinaeast2"); toggleButtonColor("chinaeast2Button"); }; function usgovvirginiaButtonClickAction(zEvent) { toggleRegion("usgovvirginia"); toggleButtonColor("usgovvirginiaButton"); }; function usgovarizonaButtonClickAction(zEvent) { toggleRegion("usgovarizona"); toggleButtonColor("usgovarizonaButton"); }; // component functions function authButtonClickAction(zEvent) { toggleComponent("auth"); toggleButtonColor("authButton"); } function apiButtonClickAction(zEvent) { toggleComponent("api"); toggleButtonColor("apiButton"); } function computeButtonClickAction(zEvent) { toggleComponent("compute"); toggleButtonColor("computeButton"); } function jobsButtonClickAction(zEvent) { toggleComponent("jobs"); toggleButtonColor("jobsButton"); } function odbcButtonClickAction(zEvent) { toggleComponent("odbc"); toggleButtonColor("odbcButton"); } function webappButtonClickAction(zEvent) { toggleComponent("webapp"); toggleButtonColor("webappButton"); } function sqlButtonClickAction(zEvent) { toggleComponent("sql"); toggleButtonColor("sqlButton"); } // profile functions function controlplanesButtonClickAction(zEvent) { loadControlplanes(); }; function dataplanesButtonClickAction(zEvent) { loadDataplanes(); }; function stagesButtonClickAction(zEvent) { loadStages(); }; function shrinkButtonClickAction(zEvent) { shrink(); } // function loadDataplanes() { console.log("loading dataplanes profile") var dataplaneHTML = '' + '' + '' + '

' + '' + '

' + '' + '' + '

' + '' + '' + '
' + '' + '

' + '' + '' + '

' + '' + ''; zNode.innerHTML = profilesHTML + '
' + dataplaneHTML + '
' + componentsHTML + ''; // regional listeners document.getElementById("canadacentralButton").addEventListener("click", canadacentralButtonClickAction, false); document.getElementById("canadaeastButton").addEventListener("click", canadaeastButtonClickAction, false); document.getElementById("centralindiaButton").addEventListener("click", centralindiaButtonClickAction, false); document.getElementById("southindiaButton").addEventListener("click", southindiaButtonClickAction, false); document.getElementById("westindiaButton").addEventListener("click", westindiaButtonClickAction, false); document.getElementById("switzerlandnorthButton").addEventListener("click", switzerlandnorthButtonClickAction, false); document.getElementById("norwayeastButton").addEventListener("click", norwayeastButtonClickAction, false); document.getElementById("westusButton").addEventListener("click", westusButtonClickAction, false); document.getElementById("westus2Button").addEventListener("click", westus2ButtonClickAction, false); document.getElementById("southcentralusButton").addEventListener("click", southcentralusButtonClickAction, false); document.getElementById("westeuropeButton").addEventListener("click", westeuropeButtonClickAction, false); document.getElementById("northeuropeButton").addEventListener("click", northeuropeButtonClickAction, false); document.getElementById("ukwestButton").addEventListener("click", ukwestButtonClickAction, false); document.getElementById("uksouthButton").addEventListener("click", uksouthButtonClickAction, false); document.getElementById("southafricanorthButton").addEventListener("click", southafricanorthButtonClickAction, false); document.getElementById("uaenorthButton").addEventListener("click", uaenorthButtonClickAction, false); document.getElementById("australiaeastButton").addEventListener("click", australiaeastButtonClickAction, false); document.getElementById("australiacentralButton").addEventListener("click", australiacentralButtonClickAction, false); document.getElementById("australiacentral2Button").addEventListener("click", australiacentral2ButtonClickAction, false); document.getElementById("australiasoutheastButton").addEventListener("click", australiasoutheastButtonClickAction, false); document.getElementById("japaneastButton").addEventListener("click", japaneastButtonClickAction, false); document.getElementById("japanwestButton").addEventListener("click", japanwestButtonClickAction, false); document.getElementById("koreacentralButton").addEventListener("click", koreacentralButtonClickAction, false); document.getElementById("southeastasiaButton").addEventListener("click", southeastasiaButtonClickAction, false); document.getElementById("eastasiaButton").addEventListener("click", eastasiaButtonClickAction, false); document.getElementById("brazilsouthButton").addEventListener("click", brazilsouthButtonClickAction, false); document.getElementById("eastus2Button").addEventListener("click", eastus2ButtonClickAction, false); document.getElementById("eastusButton").addEventListener("click", eastusButtonClickAction, false); document.getElementById("centralusButton").addEventListener("click", centralusButtonClickAction, false); document.getElementById("northcentralusButton").addEventListener("click", northcentralusButtonClickAction, false); document.getElementById("francecentralButton").addEventListener("click", francecentralButtonClickAction, false); document.getElementById("chinanorth2Button").addEventListener("click", chinanorth2ButtonClickAction, false); document.getElementById("chinaeast2Button").addEventListener("click", chinaeast2ButtonClickAction, false); document.getElementById("usgovvirginiaButton").addEventListener("click", usgovvirginiaButtonClickAction, false); document.getElementById("usgovarizonaButton").addEventListener("click", usgovarizonaButtonClickAction, false); // profile listeners document.getElementById("controlplanesButton").addEventListener("click", controlplanesButtonClickAction, false); document.getElementById("dataplanesButton").addEventListener("click", dataplanesButtonClickAction, false); document.getElementById("stagesButton").addEventListener("click", stagesButtonClickAction, false); document.getElementById("shrinkButton").addEventListener("click", shrinkButtonClickAction, false); // component listeners document.getElementById("apiButton").addEventListener("click", apiButtonClickAction, false); document.getElementById("authButton").addEventListener("click", authButtonClickAction, false); document.getElementById("computeButton").addEventListener("click", computeButtonClickAction, false); document.getElementById("jobsButton").addEventListener("click", jobsButtonClickAction, false); document.getElementById("odbcButton").addEventListener("click", odbcButtonClickAction, false); document.getElementById("webappButton").addEventListener("click", webappButtonClickAction, false); document.getElementById("sqlButton").addEventListener("click", sqlButtonClickAction, false); document.getElementById("allComponentsButton").addEventListener("click", allComponentsButtonClickAction, false); // aux listeners document.getElementById("resetButton").addEventListener("click", resetButtonClickAction, false); document.getElementById("applyButton").addEventListener("click", applyButtonClickAction, false); }; function loadControlplanes() { console.log("loading controlplanes"); var controlplaneHTML = '' + '

' + '

' + '' + '

' + '' + '

' + '' + '

' + '' + ''; zNode.innerHTML = profilesHTML + '
' + controlplaneHTML + '
' + componentsHTML + ''; // regional listeners document.getElementById("canadacentralButton").addEventListener("click", canadacentralCPButtonClickAction, false); document.getElementById("switzerlandnorthButton").addEventListener("click", switzerlandnorthButtonClickAction, false); document.getElementById("norwayeastButton").addEventListener("click", norwayeastButtonClickAction, false); document.getElementById("centralindiaButton").addEventListener("click", centralindiaCPButtonClickAction, false); document.getElementById("westusButton").addEventListener("click", westusCPButtonClickAction, false); document.getElementById("westeuropeButton").addEventListener("click", westeuropeCPButtonClickAction, false); document.getElementById("ukwestButton").addEventListener("click", ukwestCPButtonClickAction, false); document.getElementById("southafricanorthButton").addEventListener("click", southafricanorthButtonClickAction, false); document.getElementById("uaenorthButton").addEventListener("click", uaenorthButtonClickAction, false); document.getElementById("australiaeastButton").addEventListener("click", australiaeastCPButtonClickAction, false); document.getElementById("japaneastButton").addEventListener("click", japaneastCPButtonClickAction, false); // profile listeners document.getElementById("controlplanesButton").addEventListener("click", controlplanesButtonClickAction, false); document.getElementById("dataplanesButton").addEventListener("click", dataplanesButtonClickAction, false); document.getElementById("stagesButton").addEventListener("click", stagesButtonClickAction, false); document.getElementById("shrinkButton").addEventListener("click", shrinkButtonClickAction, false); // component listeners document.getElementById("apiButton").addEventListener("click", apiButtonClickAction, false); document.getElementById("authButton").addEventListener("click", authButtonClickAction, false); document.getElementById("computeButton").addEventListener("click", computeButtonClickAction, false); document.getElementById("jobsButton").addEventListener("click", jobsButtonClickAction, false); document.getElementById("odbcButton").addEventListener("click", odbcButtonClickAction, false); document.getElementById("webappButton").addEventListener("click", webappButtonClickAction, false); document.getElementById("sqlButton").addEventListener("click", sqlButtonClickAction, false); document.getElementById("allComponentsButton").addEventListener("click", allComponentsButtonClickAction, false); // aux listeners document.getElementById("resetButton").addEventListener("click", resetButtonClickAction, false); document.getElementById("applyButton").addEventListener("click", applyButtonClickAction, false); }; function loadStages() { console.log("loading stages"); var stagesHTML = '' + '' + '' + ''; zNode.innerHTML = profilesHTML + '
' + stagesHTML + '
' + componentsHTML + ''; document.getElementById("controlplanesButton").addEventListener("click", controlplanesButtonClickAction, false); document.getElementById("dataplanesButton").addEventListener("click", dataplanesButtonClickAction, false); document.getElementById("stagesButton").addEventListener("click", stagesButtonClickAction, false); document.getElementById("shrinkButton").addEventListener("click", shrinkButtonClickAction, false); }; function shrink() { var profilesHTML = '
' + '
'; zNode.innerHTML = profilesHTML + '
'; document.getElementById("controlplanesButton").addEventListener("click", controlplanesButtonClickAction, false); document.getElementById("dataplanesButton").addEventListener("click", dataplanesButtonClickAction, false); document.getElementById("stagesButton").addEventListener("click", stagesButtonClickAction, false); document.getElementById("shrinkButton").addEventListener("click", shrinkButtonClickAction, false); } } if (window.location.href.indexOf("5cf02dde58a00904bda41926") > -1) { } if (window.location.href.indexOf("60087ab5608daf0535dc8e23") > -1) { } // aux functions function applyButtonClickAction(zEvent) { apply(); } function allComponentsButtonClickAction(zEvent) { var enabledCount = 0 for (i = 0; i < componentArray.length; i++) { var component = componentArray[i]; if (checkComponent(component) == true) { enabledCount++; } } if (enabledCount == componentArray.length) { for (i = 0; i < componentArray.length; i++) { var component = componentArray[i]; var buttonName = component + "Button"; deselectComponent(component); clearButtonColor(buttonName); } } else { for (i = 0; i < componentArray.length; i++) { var component = componentArray[i]; var buttonName = component + "Button"; selectComponent(component); setButtonColor(buttonName); } } } function resetButtonClickAction(zEvent) { reset(); } function toggleComponent(component) { if (checkComponent(component) == false) { selectComponent(component); } else { deselectComponent(component); } } function toggleButtonColor(buttonName) { var bg = document.getElementById(buttonName).style.background; if(bg != '') { clearButtonColor(buttonName); } else { setButtonColor(buttonName); } } function checkComponent(component) { var status = selectedComponents.get(component); return status; } function checkRegion(region) { var status = selectedRegions.get(region) return status; } function selectComponent(component) { selectedComponents.set(component, true); console.log(selectedComponents); } function deselectComponent(component) { selectedComponents.set(component, false); console.log(selectedComponents); } function toggleRegion(region) { if (checkRegion(region) == false) { selectRegion(region); } else { deselectRegion(region); } } function selectRegion(region) { selectedRegions.set(region, true); console.log(selectedRegions); } function deselectRegion(region) { selectedRegions.set(region, false); console.log(selectedRegions); } function setButtonColor(buttonName) { document.getElementById(buttonName).style.background = '#00FF00'; } function clearButtonColor(buttonName) { document.getElementById(buttonName).style.background = ''; } function selectCheckbox(box) { box.setAttribute("class", "checked"); } function deselectCheckbox(box) { box.setAttribute("class", ""); } function apply() { for (i = 0; i < componentArray.length; i++) { var component = componentArray[i]; for (j = 0; j < regionArray.length; j++) { var region = regionArray[j]; var groupName = component + "Group"; var group = eval(groupName); var checkboxStr = `group.find('*').filter(\":contains(' ${region}:')\").filter("div.clearfix.prettycheckbox.labelright.blue").children().filter("A")[0]`; var checkbox = eval(checkboxStr); if (checkRegion(region) == true && checkComponent(component) == true) { selectCheckbox(checkbox); } else { deselectCheckbox(checkbox); } } } } function reset() { for (i = 0; i < componentArray.length; i++) { var component = componentArray[i]; deselectComponent(component); var buttonName = component + 'Button'; clearButtonColor(buttonName); } for (i = 0; i < regionArray.length; i++) { var region = regionArray[i]; deselectRegion(region); var buttonName = region + 'Button'; clearButtonColor(buttonName); } apply(); }