// This is an example Chiasm plugin based on HTML5 Canvas.
// This displays a wave simulation.
// Clicking on the canvas interacts with the simulation.
// Note that D3.js is not used at all here.
function Wave (){
function backgroundRect(my, svg){
my.addPublicProperty("backgroundRectColor", "white");
var rect = svg.append("rect");
my.when("box", function (box){
rect.attr("width", box.width).attr("height", box.height);
});
my.when("backgroundRectColor", function (color){
rect.attr("fill", color);
});
rect.on("click", function (){
var r = function (){ return Math.floor(Math.random() * 256); };
my.backgroundRectColor = "rgb(" + r() + "," + r() + "," + r() + ")";
});
console.log("ll")
}
function marginConvention(my, svg){
var g = svg.append("g");
my.addPublicProperty("margin", {top: 20, right: 20, bottom: 30, left: 20});
my.when(["box", "margin"], function (box, margin){
my.width = box.width - margin.left - margin.right;
my.height = box.height - margin.top - margin.bottom;
g.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
});
return g;
}
function marginRect(my, g){
my.addPublicProperty("marginRectColor", "lightgray");
var rect = g.append("rect");
my.when(["width", "height"], function (width, height){
rect.attr("width", width).attr("height", height);
});
my.when("marginRectColor", function (color){
rect.attr("fill", color);
});
rect.on("click", function (){
var r = function (){ return Math.floor(Math.random() * 256); };
my.marginRectColor = "rgb(" + r() + "," + r() + "," + r() + ")";
});
}
function xScaleLinear(my){
var scale = d3.scale.linear();
my.addPublicProperty("xScaleDomain", [0, 1000]);
my.when(["xScaleDomain", "width"], function (xScaleDomain, width){
my.xScale = scale
.domain(xScaleDomain)
.range([0, width]);
});
}
function xAxis(my, g){
var axisG = g.append("g").attr("class", "x axis");
var axis = d3.svg.axis();
my.when("xScale", function (xScale){
axis.scale(xScale);
axisG.call(axis);
});
my.when("height", function (height){
axisG.attr("transform", "translate(0," + height + ")");
});
}
var my = new ChiasmComponent();
my.el = document.createElement("div");
// Construct the SVG DOM.
var svg = d3.select(my.el).append("svg");
backgroundRect(my, svg);
var g = marginConvention(my, svg);
marginRect(my, g);
xScaleLinear(my);
xAxis(my, g);
return my;
}