Adrian Price-Whelan removed extra list of json specs  over 10 years ago

Commit id: 950ddbdc817776d886700975e8154a37b7e88194

deletions | additions      

       

cScaler = d3.scale.linear();  // Functions to compute the amount to translate the individual plots by  xTranslator xPlotTranslator  = function (index) (plot)  { index = plot["gridPosition"][1];  return index*(plotSize['width'] + plotSpacing['horizontal']); } yTranslator yPlotTranslator  = function (index) (plot)  { index = plot["gridPosition"][0];  return (nRows - index - 1)*(plotSize['height'] + plotSpacing['vertical']); } // Get the domains in data units for each column in the data file  var columnDomains = domains(allPlotData, columnNames);  // if this plot has a color-by axis, set the domain and range of the color scaler 

cScaler.domain(columnDomains[state['colorAxis']]);  cScaler.range(state['colorMap'] || dColorMap);  }  var brushCell;    // TODO: needs better names, brain dumping...  var d = [];  for (var ii=0; ii < state['plots'].length; ii++) {  var this_plot = state['plots'][ii];    d.push({ xColumnName : this_plot['xAxis'],  yColumnName : this_plot['yAxis'],  i : this_plot['gridPosition'][0],  j : this_plot['gridPosition'][1],  plotIndex : ii  });  }    var xColumnNames = [],  yColumnNames = [];    d.map(function(dd) {  xColumnNames.push(dd.xColumnName);  yColumnNames.push(dd.yColumnName);  });    var // Set up a  cell group for each plot window, to then draw points and rectangle over  var cells  = svg.selectAll(".cell")  .data(d)  .enter().append("g") d3.select("svg").selectAll("g.cell").data(state["plots"]);  cells.enter().append("g")  .attr("class", "cell") "cell");  cells.exit().remove();  cells.transition()  .duration(500)  .ease('quad-out')  .attr("transform", function(d) function(p)  { return "translate(" + xTranslator(d.j) xPlotTranslator(p)  + "," + yTranslator(d.i) yPlotTranslator(p)  + ")"; }) .each(plot);   // Define the brush object  var brush = d3.svg.brush() 

.on("brush", brushmove)  .on("brushend", brushend);    cell.call(brush); cells.call(brush);    // Add axes to the plots  var xAxis = d3.svg.axis() 

  // TODO: fix the axes here. should really pass in full data info, so i know about grid position, etc...  svg.selectAll(".x.axis")  .data(d) .data(state["plots"])  .enter().append("g")  .attr("class", "x axis")  .attr("transform", function(d, function(p,  i) { return "translate(" + xTranslator(d.j) xPlotTranslator(p)  + "," + (yTranslator(d.i) (yPlotTranslator(p)  + plotSize['height'] + 15) + ")"; }) .each(function(d) .each(function(p)  { xScaler.domain(columnDomains[d.xColumnName]); xScaler.domain(columnDomains[p['xAxis']]);  d3.select(this).call(xAxis);   });    svg.selectAll(".y.axis")  .data(d) .data(state["plots"])  .enter().append("g")  .attr("class", "y axis")  .attr("transform", function(d, function(p,  i) { return "translate(" + (xTranslator(d.j) (xPlotTranslator(p)  + plotSpacing['horizontal']/2 + 10) + "," + yTranslator(d.i) yPlotTranslator(p)  + ")"; }) .each(function(d) .each(function(p)  { yScaler.domain(columnDomains[d.yColumnName]); yScaler.domain(columnDomains[p['yAxis']]);  d3.select(this).call(yAxis);   });    // add axis labels  svg.selectAll(".x-label")  .data(d) .data(state["plots"])  .enter().append("text")  .text(function(d,i) .text(function(p,i)  { return d.xColumnName; p['xAxis'];  }) .attr("class", "axis-label")  .attr("x", function(d, function(p,  i) { return xTranslator(d.j) xPlotTranslator(p)  + plotSpacing['horizontal']/2 + plotSize['width']/2. - $(this).width()/2.; }) .attr("y", function(d, function(p,  i) { return yTranslator(d.i) yPlotTranslator(p)  + plotSpacing['vertical']/2 + plotSize['height'] + 50; });   svg.selectAll(".y-label")  .data(d) .data(state["plots"])  .enter().append("text")  .text(function(d,i) .text(function(p,i)  { return d.yColumnName; p['yAxis'];  }) .attr("class", "axis-label")   .attr("x", function(d, function(p,  i) { return xTranslator(d.j); xPlotTranslator(p);  }) .attr("y", function(d, function(p,  i) { return (plotSpacing['vertical']/2-yTranslator(d.i)) (plotSpacing['vertical']/2-yPlotTranslator(p))  + plotSize['height']/2. + $(this).width()/2.; }) .attr("transform", function (d,i) { return "rotate(-90," + $(this).attr('x') + "," + $(this).attr('y') + ")"; });    // If state has a 'selection': 

}  });  var brushCell;  // Clear the previously-active brush, if any.  function brushstart(p) {  if (brushCell !== this) {  d3.select(brushCell).call(brush.clear());  xScaler.domain(columnDomains[p.xColumnName]);  yScaler.domain(columnDomains[p.yColumnName]); xScaler.domain(columnDomains[p['xAxis']]);  yScaler.domain(columnDomains[p['yAxis']]);  brushCell = this;  }  } 

// Highlight the selected circles.  function brushmove(p) {  var e = brush.extent(),  xCol = p.xColumnName || p.xAxis, p['xAxis'],  yCol = p.yColumnName || p.yAxis; p['yAxis'];    svg.selectAll("circle").classed("hidden", function(d) {  return e[0][0] > d[xCol] || d[xCol] > e[1][0] 

function plot(p) {  var cell = d3.select(this);    xScaler.domain(columnDomains[p.xColumnName]);  yScaler.domain(columnDomains[p.yColumnName]); xScaler.domain(columnDomains[p['xAxis']]);  yScaler.domain(columnDomains[p['yAxis']]);    var marker = state['plots'][p['plotIndex']]['marker']; p['marker'];    if (typeof marker != 'undefined') {  opacity = marker['opacity']; 

size = 3;  }    cell.append("rect") var rect = cell.selectAll("rect.frame").data([1]);  rect.enter().append("rect");  rect.exit().remove();  rect.transition().duration(500).ease("quad-out")  .attr("class", "frame")  .attr("x", plotSpacing['horizontal'] / 2)  .attr("y", plotSpacing['vertical'] / 2)  .attr("width", plotSize['width'])  .attr("height", plotSize['height']);    cell.selectAll("circle")  .data(allPlotData)  .enter().append("circle") var circ = cell.selectAll("circle").data(allPlotData)  circ.enter().append("circle");  circ.exit().remove();  circ.transition().duration(500).ease("quad-out")  .attr("cx", function(d) { return xScaler(d[p.xColumnName]); xScaler(d[p['xAxis']]);  }) .attr("cy", function(d) { return yScaler(d[p.yColumnName]); yScaler(d[p['yAxis']]);  }) .attr("r", size)  .attr("opacity", opacity)  .style("fill", function(d) { return cScaler(d[state['colorAxis']]) || "#333333"; });  

// Finally, update caption  var caption = d3.select("#caption")  .style('opacity', 0)  .text(state.caption || ""); "")  .transition()  .duration(1000)  .style('opacity', 1);  }