diff -r c21cffd36f98 -r 84719280c84d integ/js/vs/_vs.strata.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/integ/js/vs/_vs.strata.js Fri Apr 12 15:08:00 2013 +0200 @@ -0,0 +1,616 @@ +(function ($) { +$.fn._vs.strata = { + + stratas: [], + + // Create stratas + init:function(_this) { + + if(_this.settings.chart.type!='StackedAreaChart') { + + _this.strata.create_strata(_this); + return; + } + settings = _this.settings; + + // No strata or empty strata, so nothing happens + if( (typeof(settings.data.strata) != 'function') && (typeof(settings.data.strata) == "undefined" || settings.data.strata.length == 0)) { // || settings.data.strata.length == 0) { + + for (var i=0; i= _this.settings.stream.now-2*(r+1)) + b[b.length-r-1].push(tk) + } + } + + } + var res = Array(); + + for(var j=0; j 0 || _this.strata.stratas.length>0) { + + // Strata have been defined, put them in the internal object + if(typeof settings.data.strata == 'function' || (settings.data.strata[0].length > 0 && typeof(settings.data.strata[0])=="object")) { + + // Strata have been defined as functions + if(typeof settings.data.strata == 'function') { + _this.strata.stratas = settings.data.strata(); + + } else if(typeof settings.data.strata[0].value == 'function') { + + for (var i=0; i= 0; i--) { + if(_this.strata.stratas[i].attr(key) == value){ + result.push(_this.strata.stratas[i]) + break; + } + } + } + if(typeof(result[0])=="undefined"){ + return false + }else{ + return result[0]; + } + }, + + // Create stratas + add:function(_this,setting){ + + var strata = function (){} + strata.myobj = setting + + strata.attr = function(key,value,param){ + if(typeof(value) == "undefined"){ + if(typeof(this[key])!="undefined"){ + return this[key]() + }else{ + return this.myobj[key] + } + }else{ + if(typeof(this[key])!="undefined"){ + this[key](value,param) + }else{ + this.myobj[key]=value + } + } + return this + } + return strata + }, + + // remove stratas + remove:function(_this,key,value){ + + }, + + // Returns n layers + strata_layers: function (_this, n, m, p) { + + // Scales for setting up the strata layers + var sn = d3.scale.linear().domain([1, m-2]).range([Math.PI/2, 2*Math.PI-Math.PI/2]); + var logscale = d3.scale.pow().exponent(10).domain([0, m]).range([0,1]); + + return d3.range(n).map(function(i) { + // For customs layers + var r = 5*Math.random(); + + return d3.range(m).map(function(j) { + + if(_this.settings.sedimentation.aggregation.strataType=="sin") { + if(i==1) return 20; + var x = 5+r*5*Math.sin(sn(j))+(i*50); + if(x<0) return -x; else return x; + } else if(_this.settings.sedimentation.aggregation.strataType=="log") { + return i+1; + //return logscale(j);//logscale(i); + } else { + if(typeof(p)=='undefined') + p=0; + return _this.strata.stratas[p][i].value(_this, p); + } + }).map(stream_index); + }); + function stream_index(d, i) { + return {x: i, y: Math.max(0, d)}; + } + }, + // Strata creation + create_strata: function(_this) { + + if(_this.settings.chart.type=='StackedAreaChart') { + + // Local variables for clearer code + var w = _this.settings.chart.width/_this.settings.data.model.length, + h = _this.settings.sedimentation.aggregation.height; + var color = _this.token.colorRange; + + if(typeof _this.settings.options.canvasFirst != "undefined" && _this.settings.options.canvasFirst == false) { + + // Create a .vis element that overlays the canvas + var vis = d3.select("#"+_this.settings.DOMelement.id) + .insert("div", ":first-child") + .style("position", "absolute") + .attr("class", "vis") + .style("z-index", 10) + .append("svg") + .attr("width", _this.settings.width) + .attr("height", _this.settings.height) + .append("g") + .attr("transform", "translate(" + _this.settings.chart.x + "," + _this.settings.chart.y + ")"); + } else { + + var vis = d3.select("#"+_this.settings.DOMelement.id) + .append("div") + .attr("class", "vis") + .style("z-index", 10) + .append("svg") + .attr("width", _this.settings.width) + .attr("height", _this.settings.height) + .append("g") + .attr("transform", "translate(" + _this.settings.chart.x + "," + _this.settings.chart.y + ")"); + } + + var sn = _this.strata.stratas[0].length, // number of layers + sm = 20; // number of samples per layer + smx = sm - 1, smy = 0; + + + var sum_strata = _this.strata.stratas.map( + function(d, i) { + for(var v=0, res=0; v