JSFiddle - React, Tailwind, and code Playground

by karlovac

HTML

<body>
    <ol></ol>
</body>

JavaScript

function getAttributeIdAliasMap(product_id, workflow, callback) {
  var
  results = {},
  url = "https://d49zl0bzgyeet.cloudfront.net/prod/" + workflow + "/customers/c1475/configureHtml/products/p_" + product_id + "/configureHtmlProductData.js",
    extendAttributeMap = function (k, v) {
      v = v || {};
      if (v.alias) {
        results[v.alias] = k;
      }
      if (v.subAttributes) {
          $.each(v.subAttributes, function (kk, vv) {
              extendAttributeMap(k + "." + kk, vv);
          });
      }
    };

  $.ajax({
    url: url,
    dataType: "jsonp",
    jsonpCallback: "configure_c1475_p_" + product_id + "_jsonp_callback",
    success: function (data) {
      try {
        $.each(data.attributes, extendAttributeMap);
        callback(null, results);
      } catch (e) {
        callback(new Error("Could not map attribute ID's to their alias using getAttributeIdAliasMap. Got error: " + e.message));
      }
    },
    error: function (err) {
      callback(new Error("Could not download product attributes for"))
    }
  });

}

getAttributeIdAliasMap(20147, "qa", function (err, attribute_map) {
  if (err) {
    throw err;
  }
  console.log(attribute_map);
    
    $.each(attribute_map, function (alias, attribute_key) {
        $('ol').append($("<li><b>" + alias +"</b>: <em>" + attribute_key + "</em></li>"));
    });
});