diff --git a/index.html b/index.html index 8bfb577024..9af67adf1e 100644 --- a/index.html +++ b/index.html @@ -53,6 +53,11 @@ font-size: 14px; } +#ctrl .swap{ + font-size: 10px; + margin-left: 3px; +} + #ctrl span.label { display: inline-block; width: 60px; @@ -214,6 +219,11 @@ .attr("value", function(d) { return d; }) .text(function(d) { return d; }); + // swap btn + ctrl.selectAll(function(d){ return d==="x" ? [this] : []; }) + .append("a").attr({"class":"swap", "href":"#"}).text("swap") + .on('click', swapXY); + // Toggle Inspect / Config Form var toggles = main.append("div").attr("class","toggles"); @@ -302,6 +312,59 @@ parse(self.spec, data); } +function swapXY(){ + var o = {}; + var encXY = d3.selectAll("#ctrl div.enc").selectAll(function(d){ + return d==="x" || d==="y" ? [this] : []; + }); + encXY.each(function(d) { + o[d] = readEnc(this); + }); + encXY.each(function(d){ + var e = o[d==="x" ? "y": "x"]; + loadEnc(this, e.shelf, e.aggr, e.type); + }) + + update(); +} + +function loadEncoding(encoding){ + var dataUrl = encoding.config("dataUrl"); + if(dataUrl) d3.select("select.dsel").node().value = dataUrl; + + d3.select("select.mark").node().value = encoding.marktype(); + + d3.selectAll("#ctrl div.enc").each(function(d) { + if(encoding.has(d)){ + var e = encoding._enc[d]; + loadEnc(this, e.name, e.type, e.bin ? "bin" : e.aggr) + }else{ + loadEnc(this, "-", "-", "-"); + } + }); +} + +function loadEnc(dom, v, a ,t){ + var s = d3.select(dom); + s.select("select.shelf").node().value = v; + s.select("select.type").node().value = t; + s.select("select.aggr").node().value = a; +} + +function readEnc(dom){ + //read encoding from the UI + var s = d3.select(dom).select("select.shelf").node(); + var v = s.options[s.selectedIndex].value; + + var s = d3.select(dom).select("select.type").node(); + var t = s.options[s.selectedIndex].value; + + var s = d3.select(dom).select("select.aggr").node(); + var a = s.options[s.selectedIndex].value; + + return {shelf:v, type:t, aggr:a}; +} + function encodings(cfg) { var marktype = "bar", bin = null, @@ -314,15 +377,8 @@ marktype = s.options[s.selectedIndex].value; d3.selectAll("#ctrl div.enc").each(function(d) { - var x = d; - var s = d3.select(this).select("select.shelf").node(); - var v = s.options[s.selectedIndex].value; - - var s = d3.select(this).select("select.type").node(); - var t = s.options[s.selectedIndex].value; - - var s = d3.select(this).select("select.aggr").node(); - var a = s.options[s.selectedIndex].value; + var x = d, e=readEnc(this), + v=e.shelf, a=e.aggr, t=e.type; if (v !== "-" || a === "count") { enc[x] = {