js-statusio-selector/statusio-selector.user.js

1296 lines
70 KiB
JavaScript

// ==UserScript==
// @name Status.io Selector
// @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
// @version 0.0.2
// @downloadUrl https://gitea.frijole.lol/o0beaner/js-statusio-selector/raw/branch/main/statusio-selector.user.js
// @updateURL https://gitea.frijole.lol/o0beaner/js-statusio-selector/raw/branch/main/statusio-selector.user.js
// @include /^https?://app\.status\.io/dashboard/.*/?(maintenance|incident)/create$/
// @include /^https?://app\.status\.io/dashboard/.*/?(maintenance|incident)/.*/?edit$/
// @grant GM_addStyle
// @grant GM_setClipboard
// ==/UserScript==
//--- Style our newly added elements using CSS.
GM_addStyle ( multilineStr ( function () {/*!
#myContainer {
position: fixed;
bottom: 150px;
right: 0;
font-size: 14px;
background: orange;
border: 3px outset black;
margin: 3px;
opacity: 0.7;
z-index: 222;
padding: 5px 5px;
}
#myButton {
cursor: pointer;
}
#myContainer p {
color: red;
background: white;
}
*/} ) );
function multilineStr (dummyFunc) {
var str = dummyFunc.toString ();
str = str.replace (/^[^\/]+\/\*!?/, '') // Strip function () { /*!
.replace (/\s*\*\/\s*\}\s*$/, '') // Strip */ }
.replace (/\/\/.+$/gm, '') // Double-slash comments wreck CSS. Strip them.
;
return str;
}
// draw frame
var zNode = document.createElement('div');
zNode.setAttribute('id', 'myContainer');
document.body.appendChild(zNode);
var auxHTML = '<center><button id="applyButton" type="button">Apply Selection</button><button id="resetButton" type="button">Reset Form</button><center>';
var debugFlag = false;
var currentMode = "";
//azure status page controls
if (window.location.href.indexOf("5d49ec10226b9e13cb6a422e") > -1) {
// render initial HTML
var profilesHTML = '<center><button id="controlplanesButton" type="button">Controlplanes</button> ' +
'<button id="stagesButton" type="button">Stages</button> <button id="dataplanesButton" type="button">' +
'Dataplanes</button> <button id="shrinkButton" type="button">Shrink</button> <button id="debugButton" type="button">Debug</button></center>';
zNode.innerHTML = profilesHTML;
if (debugFlag == true) {
toggleButtonColor(debugButton);
};
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);
document.getElementById("debugButton").addEventListener("click", debugButtonClickAction, 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"];
var buttonArray = [];
// 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 = '<center><button id="allComponentsButton" type="button">AllComponents</button> <button id="apiButton" type="button">API</button>' +
'<button id="authButton">Auth</button><button id="computeButton" type="button">Compute</button><button id="jobsButton" type="button">Jobs</button>' +
'<button id="odbcButton" type="button">ODBC/JDBC</button><button id="webappButton" type="button">Webapp</button>' +
'<button id="sqlButton" type="button">SQL</button></center></br></br>';
// 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 southeastasiaCPButtonClickAction(zEvent) {
toggleRegion("southeastasia");
toggleRegion("eastasia");
toggleButtonColor("southeastasiaButton");
};
function eastasiaButtonClickAction(zEvent) {
toggleRegion("eastasia");
toggleButtonColor("eastasiaButton");
};
function brazilsouthButtonClickAction(zEvent) {
toggleRegion("brazilsouth");
toggleButtonColor("brazilsouthButton");
};
function eastus2ButtonClickAction(zEvent) {
toggleRegion("eastus2");
toggleButtonColor("eastus2Button");
};
function eastus2CPButtonClickAction(zEvent) {
toggleRegion("eastus2");
toggleRegion("eastus");
toggleRegion("centralus");
toggleRegion("northcentralus");
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");
};
function stage1ButtonClickAction(zEvent) {
toggleRegion("canadacentral");
toggleRegion("canadaeast");
toggleRegion("centralindia");
toggleRegion("southindia");
toggleRegion("westindia");
toggleRegion("switzerlandnorth");
toggleRegion("norwayeast");
toggleButtonColor("stage1Button");
};
function stage1point5ButtonClickAction(zEvent) {
toggleRegion("westus");
toggleRegion("westus2");
toggleRegion("southcentralus");
toggleButtonColor("stage1point5Button");
};
function stage2ButtonClickAction(zEvent) {
toggleRegion("westeurope");
toggleRegion("northeurope");
toggleRegion("ukwest");
toggleRegion("uksouth");
toggleRegion("southafricanorth");
toggleRegion("uaenorth");
toggleButtonColor("stage2Button");
};
function stage3amButtonClickAction(zEvent) {
toggleRegion("australiaeast");
toggleRegion("australiacentral");
toggleRegion("australiacentral2");
toggleRegion("australiasoutheast");
toggleRegion("japaneast");
toggleRegion("japanwest");
toggleRegion("koreacentral");
toggleRegion("southeastasia");
toggleRegion("eastasia");
toggleButtonColor("stage3amButton");
};
function stage3pmButtonClickAction(zEvent) {
toggleRegion("brazilsouth");
toggleRegion("eastus2");
toggleRegion("eastus");
toggleRegion("centralus");
toggleRegion("northcentralus");
toggleRegion("francecentral");
toggleButtonColor("stage3pmButton");
};
function stagegovcloudButtonClickAction(zEvent) {
toggleRegion("usgovvirginia");
toggleRegion("usgovarizona");
toggleButtonColor("stagegovcloudButton");
};
function stagemooncakeButtonClickAction(zEvent) {
toggleRegion("chinanorth2");
toggleRegion("chinaeast2");
toggleButtonColor("stagemooncakeButton");
};
// 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 management functions
function loadDataplanes() {
currentMode = "dataplane";
console.log("Loading Azure dataplanes profile");
var dataplaneHTML = '<center><button id="canadacentralButton" style="width:234px" type="button">Canada Central</button><button id="canadaeastButton" style="width:234px" type="button">Canada East</button></br><button id="centralindiaButton" style="width:156px" type="button">Central India</button><button id="southindiaButton" style="width:156px" type="button">South India</button><button id="westindiaButton" style="width:156px" type="button">West India</button></br><button id="switzerlandnorthButton" style="width:234px" type="button">Switzerland North</button><button id="norwayeastButton" style="width:234px" type="button">Norway East</button></br></br><button id="westusButton" style="width:156px" type="button">West US</button><button id="westus2Button" style="width:156px" type="button">West US 2</button><button id="southcentralusButton" style="width:156px" type="button">South Central US</button></br></br><button id="westeuropeButton" style="width:117px" type="button">West Europe</button><button id="northeuropeButton" style="width:117px" type="button">North Europe</button><button id="ukwestButton" style="width:117px" type="button">UK West</button><button id="uksouthButton" style="width:117px" type="button">UK South</button><br><button id="southafricanorthButton" style="width:234px" type="button">South Africa North</button><button id="uaenorthButton" style="width:234px" type="button">UAE North</button></br></br><button id="australiaeastButton" style="width:156px" type="button">Australia East</button><button id="australiacentralButton" style="width:156px" type="button">Australia Central</button><button id="australiacentral2Button" style="width:156px" type="button">Australia Central 2</button></br><button id="australiasoutheastButton" style="width:138px" type="button">Australia Southeast</button><button id="japaneastButton" style="width:110px" type="button">Japan East</button><button id="japanwestButton" style="width:110px" type="button">Japan West</button><button id="koreacentralButton" style="width:110px" type="button">Korea Central</button></br><button id="southeastasiaButton" style="width:234px" type="button">Southeast Asia</button><button id="eastasiaButton" style="width:234px" type="button">East Asia</button></br></br><button id="brazilsouthButton" style="width:156px" type="button">Brazil South</button><button id="eastus2Button" style="width:156px" type="button">East US 2</button><button id="eastusButton" style="width:156px" type="button">East US</button></br><button id="centralusButton" style="width:156px" type="button">Central US</button><button id="northcentralusButton" style="width:156px" type="button">North Central US</button><button id="francecentralButton" style="width:156px" type="button">France Central</button></br></br><button id="chinanorth2Button" style="width:117px" type="button">China North 2</button><button id="chinaeast2Button" style="width:117px" type="button">China East 2</button><button id="usgovvirginiaButton" style="width:117px" type="button">US Gov Virginia</button><button id="usgovarizonaButton" style="width:117px" type="button">US Gov Arizona</button></center>';
zNode.innerHTML = profilesHTML + '<hr class="solid">' + dataplaneHTML + '<hr class="solid">' + componentsHTML +
auxHTML;
if (debugFlag == true) {
toggleButtonColor("debugButton");
};
// array of active buttons
buttonArray = ["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"];
reset();
// 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);
document.getElementById("debugButton").addEventListener("click", debugButtonClickAction, 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() {
currentMode = "controlplane";
console.log("Loading Azure controlplanes profile");
var controlplaneHTML = '<center><button id="canadacentralButton" style="width:234px" type="button">Canada Central</button><button id="centralindiaButton" style="width:234px" type="button">Central India</button></br><button id="switzerlandnorthButton" style="width:234px" type="button">Switzerland North</button><button id="norwayeastButton" style="width:234px" type="button">Norway East</button></br></br><button id="westusButton" style="width:468px" type="button">West US</button></br></br><button id="westeuropeButton" style="width:234px" type="button">West Europe</button><button id="ukwestButton" style="width:234px" type="button">UK West</button></br><button id="southafricanorthButton" style="width:234px" type="button">South Africa North</button><button id="uaenorthButton" style="width:234px" type="button">UAE North</button></br></br><button id="australiaeastButton" style="width:117px" type="button">Australia East</button><button id="japaneastButton" style="width:117px" type="button">Japan East</button><button id="koreacentralButton" style="width:117px" type="button">Korea Central</button><button id="southeastasiaButton" style="width:117px" type="button">Southeast Asia</button></br></br><button id="brazilsouthButton" style="width:156px" type="button">Brazil South</button><button id="eastus2Button" style="width:156px" type="button">East US 2</button><button id="francecentralButton" style="width:156px" type="button">France Central</button></br></br><button id="chinanorth2Button" style="width:117px" type="button">China North 2</button><button id="chinaeast2Button" style="width:117px" type="button">China East 2</button><button id="usgovvirginiaButton" style="width:117px" type="button">US Gov Virginia</button><button id="usgovarizonaButton" style="width:117px" type="button">US Gov Arizona</button></center>';
zNode.innerHTML = profilesHTML + '<hr class="solid">' + controlplaneHTML + '<hr class="solid">' + componentsHTML + auxHTML;
if (debugFlag == true) {
toggleButtonColor("debugButton");
};
// array of active buttons
buttonArray = ["canadacentral", "centralindia", "switzerlandnorth", "norwayeast", "westus", "westeurope","ukwest", "southafricanorth",
"uaenorth", "australiaeast", "japaneast", "koreacentral", "southeastasia", "brazilsouth", "eastus2", "francecentral",
"chinanorth2", "chinaeast2", "usgovvirginia", "usgovarizona"];
// clear everything on profile load
reset();
// 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);
document.getElementById("koreacentralButton").addEventListener("click", koreacentralButtonClickAction, false);
document.getElementById("southeastasiaButton").addEventListener("click", southeastasiaCPButtonClickAction, false);
document.getElementById("brazilsouthButton").addEventListener("click", brazilsouthButtonClickAction, false);
document.getElementById("eastus2Button").addEventListener("click", eastus2CPButtonClickAction, 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);
document.getElementById("debugButton").addEventListener("click", debugButtonClickAction, 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() {
currentMode = "stage";
console.log("Loading Azure stages profile");
var stagesHTML = '<center><button id="stage1Button" style="width:94px" type="button">Stage-1</button><button id="stage1point5Button" style="width:94px" type="button">Stage-1.5</button><button id="stage2Button" style="width:92px" type="button">Stage-2</button><button id="stage3amButton" style="width:94px" type="button">Stage-3AM</button><button id="stage3pmButton" style="width:94px" type="button">Stage-3PM</button></br><button id="stagegovcloudButton" style="width:234px" type="button">Govcloud</button><button id="stagemooncakeButton" style="width:234px" type="button">Mooncake</button></center>';
zNode.innerHTML = profilesHTML + '<hr class="solid">' + stagesHTML + '<hr class="solid">' + componentsHTML + auxHTML;
if (debugFlag == true) {
toggleButtonColor("debugButton");
};
// array of active buttons
buttonArray = ["stage1", "stage1point5", "stage2", "stage3am", "stage3pm", "stagegovcloud", "stagemooncake"];
reset();
// regional listeners
document.getElementById("stage1Button").addEventListener("click", stage1ButtonClickAction, false);
document.getElementById("stage1point5Button").addEventListener("click", stage1point5ButtonClickAction, false);
document.getElementById("stage2Button").addEventListener("click", stage2ButtonClickAction, false);
document.getElementById("stage3amButton").addEventListener("click", stage3amButtonClickAction, false);
document.getElementById("stage3pmButton").addEventListener("click", stage3pmButtonClickAction, false);
document.getElementById("stagegovcloudButton").addEventListener("click", stagegovcloudButtonClickAction, false);
document.getElementById("stagemooncakeButton").addEventListener("click", stagemooncakeButtonClickAction, 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);
document.getElementById("debugButton").addEventListener("click", debugButtonClickAction, 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 shrink() {
currentMode = "";
zNode.innerHTML = profilesHTML
if (debugFlag == true) {
toggleButtonColor("debugButton");
};
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);
document.getElementById("debugButton").addEventListener("click", debugButtonClickAction, false);
};
};
// aws status page controls
if (window.location.href.indexOf("5cf02dde58a00904bda41926") > -1) {
// render initial HTML
var profilesHTML = '<center><button id="controlplanesButton" type="button">Controlplanes</button> ' +
'<button id="stagesButton" type="button">Stages</button> <button id="dataplanesButton" type="button">' +
'Dataplanes</button> <button id="shrinkButton" type="button">Shrink</button> <button id="debugButton" type="button">Debug</button></center>';
zNode.innerHTML = profilesHTML;
if (debugFlag == true) {
toggleButtonColor("debugButton");
};
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);
document.getElementById("debugButton").addEventListener("click", debugButtonClickAction, false);
// initialize azure component and region variables
var componentArray = ["api", "auth", "compute", "jobs", "odbc", "webapp", "sql"];
var regionArray = ["us-west-1", "us-west-2", "us-east-1", "us-east-2", "sa-east-1", "eu-west-1", "eu-west-2", "eu-central-1",
"ap-south-1", "ap-southeast-1", "ap-southeast-2", "ap-northeast-1", "ap-northeast-2", "ca-central-1"];
var buttonArray = [];
var ceFlag = false;
// 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')");
var ceGroup = $("div.form-group").filter(":contains('Community Edition')");
// write component HTML template
var componentsHTML = '<center><button id="allComponentsButton" type="button">AllComponents</button> <button id="apiButton" type="button">API</button>' +
'<button id="authButton">Auth</button><button id="computeButton" type="button">Compute</button><button id="jobsButton" type="button">Jobs</button>' +
'<button id="odbcButton" type="button">ODBC/JDBC</button><button id="webappButton" type="button">Webapp</button>' +
'<button id="sqlButton" type="button">SQL</button></center></br>';
// regional functions
function cacentral1ButtonClickAction(zEvent) {
toggleRegion("ca-central-1");
toggleButtonColor("cacentral1Button");
};
function eucentral1ButtonClickAction(zEvent) {
toggleRegion("eu-central-1");
toggleButtonColor("eucentral1Button");
};
function euwest2ButtonClickAction(zEvent) {
toggleRegion("eu-west-2");
toggleButtonColor("euwest2Button");
};
function uswest1ButtonClickAction(zEvent) {
toggleRegion("us-west-1");
toggleButtonColor("uswest1Button");
};
function uswest2ButtonClickAction(zEvent) {
toggleRegion("us-west-2");
toggleButtonColor("uswest2Button");
};
function uswest2CPButtonClickAction(zEvent) {
toggleRegion("us-west-2");
toggleRegion("us-west-1");
toggleRegion("us-east-1");
toggleButtonColor("uswest2Button");
};
function useast1ButtonClickAction(zEvent) {
toggleRegion("us-east-1");
toggleButtonColor("useast1Button");
};
function useast2ButtonClickAction(zEvent) {
toggleRegion("us-east-2");
toggleButtonColor("useast2Button");
};
function apsouth1ButtonClickAction(zEvent) {
toggleRegion("ap-south-1");
toggleButtonColor("apsouth1Button");
};
function apsoutheast2ButtonClickAction(zEvent) {
toggleRegion("ap-southeast-2");
toggleButtonColor("apsoutheast2Button");
};
function apnortheast1ButtonClickAction(zEvent) {
toggleRegion("ap-northeast-1");
toggleButtonColor("apnortheast1Button");
};
function euwest1ButtonClickAction(zEvent) {
toggleRegion("eu-west-1");
toggleButtonColor("euwest1Button");
};
function ceButtonClickAction(zEvent) {
toggleButtonColor("ceButton");
toggleCe();
};
function stage1ButtonClickAction(zEvent) {
toggleRegion("ca-central-1");
toggleRegion("eu-central-1");
toggleRegion("eu-west-2");
toggleCe();
toggleButtonColor("stage1Button");
};
function stage2ButtonClickAction(zEvent) {
toggleRegion("us-west-2");
toggleRegion("us-west-1");
toggleRegion("us-east-1");
toggleRegion("us-east-2");
toggleButtonColor("stage2Button");
};
function stage3amButtonClickAction(zEvent) {
toggleRegion("ap-south-1");
toggleRegion("ap-southeast-2");
toggleRegion("ap-northeast-1");
toggleButtonColor("stage3amButton");
};
function stage3pmButtonClickAction(zEvent) {
toggleRegion("eu-west-1");
toggleButtonColor("stage3pmButton");
};
// 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 management functions
function loadDataplanes() {
currentMode = "dataplane";
console.log("Loading AWS dataplanes profile");
var dataplaneHTML = '<center><button id="ceButton" style="width:117px" type="button">CE</button><button id="cacentral1Button" style="width:117px" type="button">ca-central-1</button><button id="eucentral1Button" style="width:117px" type="button">eu-central-1</button><button id="euwest2Button" style="width:117px" type="button">eu-west-2</button></br></br><button id="uswest2Button" style="width:234px" type="button">us-west-2</button><button id="uswest1Button" style="width:234px" type="button">us-west-1</button></br><button id="useast1Button" style="width:234px" type="button">us-east-1</button><button id="useast2Button" style="width:234px" type="button">us-east-2</button></br></br><button id="apsouth1Button" style="width:156px" type="button">ap-south-1</button><button id="apsoutheast2Button" style="width:156px" type="button">ap-southeast-2</button><button id="apnortheast1Button" style="width:156px" type="button">ap-northeast-1</button></br></br><button id="euwest1Button" style="width:468px" type="button">eu-west-1</button></center>';
zNode.innerHTML = profilesHTML + '<hr class="solid">' + dataplaneHTML + '<hr class="solid">' + componentsHTML + auxHTML;
if (debugFlag == true) {
toggleButtonColor("debugButton");
};
// array of active buttons
buttonArray = ["ce", "cacentral1", "eucentral1", "euwest2", "uswest2", "uswest1", "useast1", "useast2", "apsouth1",
"apsoutheast2", "apnortheast1", "euwest1"];
// clear everything on profile load
reset();
// regional listeners
document.getElementById("cacentral1Button").addEventListener("click", cacentral1ButtonClickAction, false);
document.getElementById("eucentral1Button").addEventListener("click", eucentral1ButtonClickAction, false);
document.getElementById("euwest2Button").addEventListener("click", euwest2ButtonClickAction, false);
document.getElementById("uswest1Button").addEventListener("click", uswest1ButtonClickAction, false);
document.getElementById("uswest2Button").addEventListener("click", uswest2ButtonClickAction, false);
document.getElementById("useast1Button").addEventListener("click", useast1ButtonClickAction, false);
document.getElementById("useast2Button").addEventListener("click", useast2ButtonClickAction, false);
document.getElementById("apsouth1Button").addEventListener("click", apsouth1ButtonClickAction, false);
document.getElementById("apsoutheast2Button").addEventListener("click", apsoutheast2ButtonClickAction, false);
document.getElementById("apnortheast1Button").addEventListener("click", apnortheast1ButtonClickAction, false);
document.getElementById("euwest1Button").addEventListener("click", euwest1ButtonClickAction, false);
document.getElementById("ceButton").addEventListener("click", ceButtonClickAction, 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);
document.getElementById("debugButton").addEventListener("click", debugButtonClickAction, 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() {
currentMode = "controlplane";
console.log("Loading AWS controlplanes profile");
var controlplaneHTML = '<center><button id="ceButton" style="width:117px" type="button">CE</button><button id="cacentral1Button" style="width:117px" type="button">ca-central-1</button><button id="eucentral1Button" style="width:117px" type="button">eu-central-1</button><button id="euwest2Button" style="width:117px" type="button">eu-west-2</button></br></br><button id="uswest2Button" style="width:234px" type="button">us-west-2</button><button id="useast2Button" style="width:234px" type="button">us-east-2</button></br></br><button id="apsouth1Button" style="width:156px" type="button">ap-south-1</button><button id="apsoutheast2Button" style="width:156px" type="button">ap-southeast-2</button><button id="apnortheast1Button" style="width:156px" type="button">ap-northeast-1</button></br></br><button id="euwest1Button" style="width:468px" type="button">eu-west-1</button></center>';
zNode.innerHTML = profilesHTML + '<hr class="solid">' + controlplaneHTML + '<hr class="solid">' + componentsHTML + auxHTML;
if (debugFlag == true) {
toggleButtonColor("debugButton");
};
// array of active buttons
buttonArray = ["ce", "cacentral1", "eucentral1", "euwest2", "uswest2", "useast2", "apsouth1",
"apsoutheast2", "apnortheast1", "euwest1"];
// clear everything on profile load
reset();
// regional listeners
// document.getElementById("canadacentralButton").addEventListener("click", canadacentralCPButtonClickAction, false);
document.getElementById("cacentral1Button").addEventListener("click", cacentral1ButtonClickAction, false);
document.getElementById("eucentral1Button").addEventListener("click", eucentral1ButtonClickAction, false);
document.getElementById("euwest2Button").addEventListener("click", euwest2ButtonClickAction, false);
document.getElementById("uswest2Button").addEventListener("click", uswest2CPButtonClickAction, false);
document.getElementById("useast2Button").addEventListener("click", useast2ButtonClickAction, false);
document.getElementById("apsouth1Button").addEventListener("click", apsouth1ButtonClickAction, false);
document.getElementById("apsoutheast2Button").addEventListener("click", apsoutheast2ButtonClickAction, false);
document.getElementById("apnortheast1Button").addEventListener("click", apnortheast1ButtonClickAction, false);
document.getElementById("euwest1Button").addEventListener("click", euwest1ButtonClickAction, false);
document.getElementById("ceButton").addEventListener("click", ceButtonClickAction, 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);
document.getElementById("debugButton").addEventListener("click", debugButtonClickAction, 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() {
currentMode = "stage";
console.log("Loading AWS stages profile");
var stagesHTML = '<center><button id="stage1Button" style="width:117px" type="button">Stage-1</button><button id="stage2Button" style="width:117px" type="button">Stage-2</button><button id="stage3amButton" style="width:117px" type="button">Stage-3 AM</button><button id="stage3pmButton" style="width:117px" type="button">Stage-3 PM</button></center>';
zNode.innerHTML = profilesHTML + '<hr class="solid">' + stagesHTML + '<hr class="solid">' + componentsHTML + auxHTML;
if (debugFlag == true) {
toggleButtonColor("debugButton");
}
// array of active buttons
buttonArray = ["stage1", "stage2", "stage3am", "stage3pm"];
// clear everything on profile load
reset();
// regional listeners
document.getElementById("stage1Button").addEventListener("click", stage1ButtonClickAction, false);
document.getElementById("stage2Button").addEventListener("click", stage2ButtonClickAction, false);
document.getElementById("stage3amButton").addEventListener("click", stage3amButtonClickAction, false);
document.getElementById("stage3pmButton").addEventListener("click", stage3pmButtonClickAction, 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 shrink() {
currentMode = "";
zNode.innerHTML = profilesHTML
if (debugFlag == true) {
toggleButtonColor("debugButton");
};
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);
document.getElementById("debugButton").addEventListener("click", debugButtonClickAction, false);
};
};
// gcp status page controls
if (window.location.href.indexOf("60087ab5608daf0535dc8e23") > -1) {
// render initial HTML
var profilesHTML = '<center><button id="controlplanesButton" type="button">Controlplanes</button> ' +
'<button id="stagesButton" type="button">Stages</button>' +
' <button id="shrinkButton" type="button">Shrink</button> <button id="debugButton" type="button">Debug</button></center>';
zNode.innerHTML = profilesHTML;
if (debugFlag == true) {
toggleButtonColor("debugButton");
};
document.getElementById("controlplanesButton").addEventListener("click", controlplanesButtonClickAction, false);
document.getElementById("stagesButton").addEventListener("click", stagesButtonClickAction, false);
document.getElementById("shrinkButton").addEventListener("click", shrinkButtonClickAction, false);
document.getElementById("debugButton").addEventListener("click", debugButtonClickAction, false);
// initialize azure component and region variables
var componentArray = ["api", "auth", "compute", "jobs", "odbc", "webapp"];
var regionArray = ["us-west1", "us-central1", "europe-west2", "us-west4"];
var buttonArray = [];
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')");
// write component HTML template
var componentsHTML = '<center><button id="allComponentsButton" type="button">AllComponents</button> <button id="apiButton" type="button">API</button>' +
'<button id="authButton">Auth</button><button id="computeButton" type="button">Compute</button><button id="jobsButton" type="button">Jobs</button>' +
'<button id="odbcButton" type="button">ODBC/JDBC</button><button id="webappButton" type="button">Webapp</button>' +
'</center></br></br>';
// regional functions
function uswest1ButtonClickAction(zEvent) {
toggleRegion("us-west1");
toggleButtonColor("uswest1Button");
};
function uscentral1ButtonClickAction(zEvent) {
toggleRegion("us-central1");
toggleButtonColor("uscentral1Button");
};
function europewest2ButtonClickAction(zEvent) {
toggleRegion("europe-west2");
toggleButtonColor("europewest2Button");
};
function uswest4ButtonClickAction(zEvent) {
toggleRegion("us-west4");
toggleButtonColor("uswest4Button");
};
function stage1ButtonClickAction(zEvent) {
toggleRegion("us-west1");
toggleRegion("us-central1");
toggleRegion("europe-west2");
toggleRegion("us-west4");
toggleButtonColor("stage1Button");
};
// 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 loadControlplanes() {
currentMode = "controlplane";
console.log("Loading GCP controlplanes profile");
var controlplaneHTML = '<center><button id="uswest1Button" style="width:117px" type="button">US-West1</button><button id="uscentral1Button" style="width:117px" type="button">US-Central1</button><button id="europewest2Button" style="width:117px" type="button">EU-West2</button><button id="uswest4Button" style="width:117px" type="button">US-West4</button></br></center>';
zNode.innerHTML = profilesHTML + '<hr class="solid">' + controlplaneHTML + '<hr class="solid">' + componentsHTML + auxHTML;
if (debugFlag == true) {
toggleButtonColor("debugButton");
};
// array of active buttons
buttonArray = ["uswest1", "uscentral1", "europewest2", "uswest4"];
// clear everything on profile load
reset();
// regional listeners
document.getElementById("uswest1Button").addEventListener("click", uswest1ButtonClickAction, false);
document.getElementById("uscentral1Button").addEventListener("click", uscentral1ButtonClickAction, false);
document.getElementById("europewest2Button").addEventListener("click", europewest2ButtonClickAction, false);
document.getElementById("uswest4Button").addEventListener("click", uswest4ButtonClickAction, false);
// profile listeners
document.getElementById("controlplanesButton").addEventListener("click", controlplanesButtonClickAction, false);
document.getElementById("stagesButton").addEventListener("click", stagesButtonClickAction, false);
document.getElementById("shrinkButton").addEventListener("click", shrinkButtonClickAction, false);
document.getElementById("debugButton").addEventListener("click", debugButtonClickAction, 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("allComponentsButton").addEventListener("click", allComponentsButtonClickAction, false);
// aux listeners
document.getElementById("resetButton").addEventListener("click", resetButtonClickAction, false);
document.getElementById("applyButton").addEventListener("click", applyButtonClickAction, false);
};
function loadStages() {
currentMode = "stage";
console.log("Loading GCP stages profile");
var stagesHTML = '<center><button id="stage1Button" style="width:468px" type="button">Stage-1</button></center>';
zNode.innerHTML = profilesHTML + '<hr class="solid">' + stagesHTML + '<hr class="solid">' + componentsHTML + auxHTML;
if (debugFlag == true) {
toggleButtonColor("debugButton");
}
// array of active buttons
buttonArray = ["stage1"];
// clear everything on profile load
reset();
// regional listeners
document.getElementById("stage1Button").addEventListener("click", stage1ButtonClickAction, false);
// profile listeners
document.getElementById("controlplanesButton").addEventListener("click", controlplanesButtonClickAction, 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("allComponentsButton").addEventListener("click", allComponentsButtonClickAction, false);
// aux listeners
document.getElementById("resetButton").addEventListener("click", resetButtonClickAction, false);
document.getElementById("applyButton").addEventListener("click", applyButtonClickAction, false);
};
function shrink() {
currentMode = "";
zNode.innerHTML = profilesHTML
if (debugFlag == true) {
toggleButtonColor("debugButton");
};
document.getElementById("controlplanesButton").addEventListener("click", controlplanesButtonClickAction, false);
document.getElementById("stagesButton").addEventListener("click", stagesButtonClickAction, false);
document.getElementById("shrinkButton").addEventListener("click", shrinkButtonClickAction, false);
document.getElementById("debugButton").addEventListener("click", debugButtonClickAction, false);
};
};
// profile functions
function controlplanesButtonClickAction(zEvent) {
loadControlplanes();
};
function dataplanesButtonClickAction(zEvent) {
loadDataplanes();
};
function stagesButtonClickAction(zEvent) {
loadStages();
};
function shrinkButtonClickAction(zEvent) {
shrink();
};
function debugButtonClickAction(zEvent) {
toggleDebug();
toggleButtonColor("debugButton");
};
// 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);
if (debugFlag == true) {
console.log(selectedComponents);
}
};
function deselectComponent(component) {
selectedComponents.set(component, false);
if (debugFlag == true) {
console.log(selectedComponents);
};
};
function toggleRegion(region) {
if (checkRegion(region) == false) {
selectRegion(region);
} else {
deselectRegion(region);
}
};
function selectRegion(region) {
selectedRegions.set(region, true);
if (debugFlag == true) {
console.log(selectedRegions);
};
};
function deselectRegion(region) {
selectedRegions.set(region, false);
if (debugFlag == true) {
console.log(selectedRegions);
};
};
function setButtonColor(buttonName) {
document.getElementById(buttonName).style.background = '#00FF00';
};
function clearButtonColor(buttonName) {
document.getElementById(buttonName).style.background = '';
};
function selectCheckbox(box) {
box.filter("A")[0].classList.add("checked");
box.filter("INPUT")[0].checked = true;
};
function deselectCheckbox(box) {
box.filter("A")[0].classList.remove("checked");
box.filter("INPUT")[0].checked = false;
};
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()`;
var checkbox = eval(checkboxStr);
if (checkRegion(region) == true && checkComponent(component) == true) {
selectCheckbox(checkbox);
} else {
deselectCheckbox(checkbox);
}
}
}
if (typeof ceFlag != 'undefined') {
var checkboxStr = `$("div.form-group").filter(":contains('Community Edition')").children().slice(1).children().children().children().children().children()`;
var checkbox = eval(checkboxStr);
if (checkCe() == 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 < buttonArray.length; i++) {
var region = buttonArray[i];
var buttonName = region + 'Button';
clearButtonColor(buttonName);
};
for (i = 0; i < regionArray.length; i++) {
var region = regionArray[i];
deselectRegion(region);
};
if (typeof ceFlag != 'undefined') {
deselectCe();
if (currentMode != 'stage') {
clearButtonColor("ceButton");
};
}
apply();
};
function checkDebug() {
var status = debugFlag;
return status;
};
function toggleDebug() {
if (checkDebug() == false) {
enableDebug();
} else {
disableDebug();
};
};
function enableDebug() {
debugFlag = true;
console.log("DEBUG logging enabled");
};
function disableDebug() {
debugFlag = false;
console.log("DEBUG logging disabled");
};
function selectCe() {
ceFlag = true;
if (debugFlag == true) {
console.log("DEBUG: ceFlag = " + ceFlag);
};
};
function deselectCe() {
ceFlag = false;
};
function toggleCe() {
if (checkCe() == false) {
selectCe();
} else {
deselectCe();
}
};
function checkCe() {
var status = ceFlag;
return status;
};