summaryrefslogtreecommitdiffstats
path: root/debian/missing-sources/epoch/tests/render/js/data.js
diff options
context:
space:
mode:
Diffstat (limited to 'debian/missing-sources/epoch/tests/render/js/data.js')
-rw-r--r--debian/missing-sources/epoch/tests/render/js/data.js210
1 files changed, 210 insertions, 0 deletions
diff --git a/debian/missing-sources/epoch/tests/render/js/data.js b/debian/missing-sources/epoch/tests/render/js/data.js
new file mode 100644
index 0000000..a49da68
--- /dev/null
+++ b/debian/missing-sources/epoch/tests/render/js/data.js
@@ -0,0 +1,210 @@
+(function() {
+
+ // Quick data generator
+ Data = function() {
+ this.layers = []
+ };
+
+ Data.prototype.add = function(fn) {
+ fn = fn ? fn : function(x) { return x; };
+ this.layers.push(fn);
+ return this;
+ };
+
+ Data.prototype.get = function(domain, step) {
+ domain = domain ? domain : [0, 10];
+ step = step ? step : 1;
+
+ var data = []
+ for (var i = 0; i < this.layers.length; i++) {
+ layer = { label: String.fromCharCode(i + 65), values: [] };
+ for (var x = domain[0]; x < domain[1]; x += step) {
+ layer.values.push({ x: x, y: this.layers[i](x) });
+ }
+ data.push(layer);
+ }
+ return data;
+ };
+
+ Data.prototype.random = function(entries, domain, range) {
+ entries = entries ? entries : 50;
+ domain = domain ? domain : [0, 100];
+ range = range ? range : [0, 100];
+
+ var values = [];
+ for (var i = 0; i < entries; i++) {
+ var x = (domain[1] - domain[0]) * Math.random() + domain[0],
+ y = (range[1] - range[0]) * Math.random() + range[1];
+ values.push({ x: x, y: y });
+ }
+
+ return [{ label: 'A', values: values }];
+ };
+
+ Data.prototype.multiRandom = function(numSeries, entries, domain, range) {
+ numSeries = numSeries ? numSeries : 3;
+ entries = entries ? entries : 50;
+ domain = domain ? domain : [0, 100];
+ range = range ? range : [0, 100];
+
+ var data = [];
+
+ for (var j = 0; j < numSeries; j++) {
+ var layer = { label: String.fromCharCode(65 + j), values: [] };
+ for (var i = 0; i < entries; i++) {
+ var x = (domain[1] - domain[0]) * Math.random() + domain[0],
+ y = (range[1] - range[0]) * Math.random() + range[1];
+ layer.values.push({ x: x, y: y });
+ }
+ data.push(layer);
+ }
+
+ return data;
+ };
+
+ window.data = function() { return new Data(); };
+
+
+ // Quick real-time data generator
+ Time = function() {
+ Data.call(this);
+ };
+
+ Time.prototype = new Data()
+
+ Time.prototype.get = function(domain, step) {
+ var data = Data.prototype.get.apply(this, arguments),
+ time = parseInt(new Date().getTime() / 1000);
+
+ for (var i = 0; i < data[0].values.length; i++) {
+ for (var j = 0; j < this.layers.length; j++) {
+ delete data[j].values[i].x;
+ data[j].values[i].time = time + i;
+ }
+ }
+
+ this.currentTime = time;
+ this.lastX = domain[1];
+
+ return data;
+ };
+
+ Time.prototype.next = function(step) {
+ this.currentTime++;
+ this.lastX += (step ? step : 1);
+
+ var data = [];
+ for (var j = 0; j < this.layers.length; j++) {
+ data.push({ time: this.currentTime, y: this.layers[j](this.lastX) })
+ }
+
+ return data;
+ }
+
+ window.time = function() { return new Time(); };
+
+
+
+
+ window.nextTime = (function() {
+ var currentTime = parseInt(new Date().getTime() / 1000);
+ return function() { return currentTime++; }
+ })();
+
+
+ /*
+ * Normal distribution random histogram data generator.
+ */
+ var NormalData = function(layers) {
+ this.layers = layers;
+ this.timestamp = ((new Date()).getTime() / 1000)|0;
+ };
+
+ var normal = function() {
+ var U = Math.random(),
+ V = Math.random();
+ return Math.sqrt(-2*Math.log(U)) * Math.cos(2*Math.PI*V);
+ };
+
+ NormalData.prototype.sample = function() {
+ return parseInt(normal() * 12.5 + 50);
+ }
+
+ NormalData.prototype.rand = function() {
+ var histogram = {};
+
+ for (var i = 0; i < 1000; i ++) {
+ var r = this.sample();
+ if (!histogram[r]) {
+ histogram[r] = 1;
+ }
+ else {
+ histogram[r]++;
+ }
+ }
+
+ return histogram;
+ };
+
+ NormalData.prototype.history = function(entries) {
+ if (typeof(entries) != 'number' || !entries) {
+ entries = 60;
+ }
+
+ var history = [];
+ for (var k = 0; k < this.layers; k++) {
+ history.push({ label: String.fromCharCode(65+k), values: [] });
+ }
+
+ for (var i = 0; i < entries; i++) {
+ for (var j = 0; j < this.layers; j++) {
+ history[j].values.push({time: this.timestamp, histogram: this.rand()});
+ }
+ this.timestamp++;
+ }
+
+ return history;
+ };
+
+ NormalData.prototype.next = function() {
+ var entry = [];
+ for (var i = 0; i < this.layers; i++) {
+ entry.push({ time: this.timestamp, histogram: this.rand() });
+ }
+ this.timestamp++;
+ return entry;
+ }
+
+ window.NormalData = NormalData;
+
+
+ /*
+ * Beta distribution histogram data generator.
+ */
+ var BetaData = function(alpha, beta, layers) {
+ this.alpha = alpha;
+ this.beta = beta;
+ this.layers = layers;
+ this.timestamp = ((new Date()).getTime() / 1000)|0;
+ };
+
+ BetaData.prototype = new NormalData();
+
+ BetaData.prototype.sample = function() {
+ var X = 0,
+ Y = 0;
+
+ for (var j = 1; j <= this.alpha; j++)
+ X += -Math.log(1 - Math.random());
+
+ for (var j = 1; j <= this.beta; j++)
+ Y += -Math.log(1 - Math.random());
+
+ return parseInt(100 * X / (X + Y));
+ }
+
+ window.BetaData = BetaData;
+
+})();
+
+