Файл: templates/backend/default/assets/plugins/jquery-ricksaw-chart/js/Rickshaw.Series.js
Строк: 126
<?php
Rickshaw.namespace('Rickshaw.Series');
Rickshaw.Series = Rickshaw.Class.create( Array, {
initialize: function (data, palette, options) {
options = options || {};
this.palette = new Rickshaw.Color.Palette(palette);
this.timeBase = typeof(options.timeBase) === 'undefined' ?
Math.floor(new Date().getTime() / 1000) :
options.timeBase;
var timeInterval = typeof(options.timeInterval) == 'undefined' ?
1000 :
options.timeInterval;
this.setTimeInterval(timeInterval);
if (data && (typeof(data) == "object") && Array.isArray(data)) {
data.forEach( function(item) { this.addItem(item) }, this );
}
},
addItem: function(item) {
if (typeof(item.name) === 'undefined') {
throw('addItem() needs a name');
}
item.color = (item.color || this.palette.color(item.name));
item.data = (item.data || []);
// backfill, if necessary
if ((item.data.length === 0) && this.length && (this.getIndex() > 0)) {
this[0].data.forEach( function(plot) {
item.data.push({ x: plot.x, y: 0 });
} );
} else if (item.data.length === 0) {
item.data.push({ x: this.timeBase - (this.timeInterval || 0), y: 0 });
}
this.push(item);
if (this.legend) {
this.legend.addLine(this.itemByName(item.name));
}
},
addData: function(data, x) {
var index = this.getIndex();
Rickshaw.keys(data).forEach( function(name) {
if (! this.itemByName(name)) {
this.addItem({ name: name });
}
}, this );
this.forEach( function(item) {
item.data.push({
x: x || (index * this.timeInterval || 1) + this.timeBase,
y: (data[item.name] || 0)
});
}, this );
},
getIndex: function () {
return (this[0] && this[0].data && this[0].data.length) ? this[0].data.length : 0;
},
itemByName: function(name) {
for (var i = 0; i < this.length; i++) {
if (this[i].name == name)
return this[i];
}
},
setTimeInterval: function(iv) {
this.timeInterval = iv / 1000;
},
setTimeBase: function (t) {
this.timeBase = t;
},
dump: function() {
var data = {
timeBase: this.timeBase,
timeInterval: this.timeInterval,
items: []
};
this.forEach( function(item) {
var newItem = {
color: item.color,
name: item.name,
data: []
};
item.data.forEach( function(plot) {
newItem.data.push({ x: plot.x, y: plot.y });
} );
data.items.push(newItem);
} );
return data;
},
load: function(data) {
if (data.timeInterval) {
this.timeInterval = data.timeInterval;
}
if (data.timeBase) {
this.timeBase = data.timeBase;
}
if (data.items) {
data.items.forEach( function(item) {
this.push(item);
if (this.legend) {
this.legend.addLine(this.itemByName(item.name));
}
}, this );
}
}
} );
Rickshaw.Series.zeroFill = function(series) {
Rickshaw.Series.fill(series, 0);
};
Rickshaw.Series.fill = function(series, fill) {
var x;
var i = 0;
var data = series.map( function(s) { return s.data } );
while ( i < Math.max.apply(null, data.map( function(d) { return d.length } )) ) {
x = Math.min.apply( null,
data
.filter(function(d) { return d[i] })
.map(function(d) { return d[i].x })
);
data.forEach( function(d) {
if (!d[i] || d[i].x != x) {
d.splice(i, 0, { x: x, y: fill });
}
} );
i++;
}
};
?>