JSFiddle - React, Tailwind, and code Playground
by InfinitiesLoop
JavaScript
var topicGroups = {
"legacy": {
"topics": ["general-event", "general-alert", "general-audit", "general-metric"]
},
"pro": {
"expand": {
"datacenter": ["lax1", "ams1", "cdg1", "hgh2", "icn1", "ord1"]
},
"topics": [
"telemetry-v1-lax1-client-pro-event",
"telemetry-v1-lax1-client-pro-metric",
"telemetry-v1-%datacenter%-server-pro-event",
"telemetry-v1-%datacenter%-server-pro-metric"
]
},
"everything-else": {
"expand": {
"datacenter": ["lax1", "ams1", "cdg1", "hgh2", "icn1", "ord1"]
},
"topics": [
"telemetry-v1-lax1-client-d3-event",
"telemetry-v1-lax1-client-d3-metric",
"telemetry-v1-lax1-client-agent-event",
"telemetry-v1-lax1-client-agent-metric",
"telemetry-v1-lax1-client-general-event",
"telemetry-v1-lax1-client-general-metric",
"telemetry-v1-lax1-client-hero-event",
"telemetry-v1-lax1-client-hero-metric",
"telemetry-v1-%datacenter%-server-general-event",
"telemetry-v1-%datacenter%-server-general-metric",
"telemetry-v1-%datacenter%-server-general-alert",
"telemetry-v1-%datacenter%-server-general-audit",
"telemetry-v1-lax1-client-biapi-data",
"telemetry-v1-lax1-pingdom"
]
}
};
function getTopicList(topicGroups, topicGroupName) {
var topics = {};
var topicGroup = topicGroups[topicGroupName];
var topicPatterns = topicGroup.topics;
for (var i = 0; i < topicPatterns.length; i++) {
if (topicGroup.expand) {
expandPattern(topics, topicGroup.expand, topicPatterns[i]);
}
else {
topics[topicPatterns[i]] = true;
}
}
return topics;
}
function expandPattern(intoArray, expandData, pattern) {
var keys = Object.keys(expandData);
for (var i = 0; i < keys.length; i++) {
var list = expandData[keys[i]];
for (var j = 0; j < list.length; j++) {
...