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++) {
     ...