Initial ethoFS Integration
This commit is contained in:
112
assets/dashboard/plugins/jquery-sparkline/src/chart-pie.js
vendored
Normal file
112
assets/dashboard/plugins/jquery-sparkline/src/chart-pie.js
vendored
Normal file
@@ -0,0 +1,112 @@
|
||||
/**
|
||||
* Pie charts
|
||||
*/
|
||||
$.fn.sparkline.pie = pie = createClass($.fn.sparkline._base, {
|
||||
type: 'pie',
|
||||
|
||||
init: function (el, values, options, width, height) {
|
||||
var total = 0, i;
|
||||
|
||||
pie._super.init.call(this, el, values, options, width, height);
|
||||
|
||||
this.shapes = {}; // map shape ids to value offsets
|
||||
this.valueShapes = {}; // maps value offsets to shape ids
|
||||
this.values = values = $.map(values, Number);
|
||||
|
||||
if (options.get('width') === 'auto') {
|
||||
this.width = this.height;
|
||||
}
|
||||
|
||||
if (values.length > 0) {
|
||||
for (i = values.length; i--;) {
|
||||
total += values[i];
|
||||
}
|
||||
}
|
||||
this.total = total;
|
||||
this.initTarget();
|
||||
this.radius = Math.floor(Math.min(this.canvasWidth, this.canvasHeight) / 2);
|
||||
},
|
||||
|
||||
getRegion: function (el, x, y) {
|
||||
var shapeid = this.target.getShapeAt(el, x, y);
|
||||
return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;
|
||||
},
|
||||
|
||||
getCurrentRegionFields: function () {
|
||||
var currentRegion = this.currentRegion;
|
||||
return {
|
||||
isNull: this.values[currentRegion] === undefined,
|
||||
value: this.values[currentRegion],
|
||||
percent: this.values[currentRegion] / this.total * 100,
|
||||
color: this.options.get('sliceColors')[currentRegion % this.options.get('sliceColors').length],
|
||||
offset: currentRegion
|
||||
};
|
||||
},
|
||||
|
||||
changeHighlight: function (highlight) {
|
||||
var currentRegion = this.currentRegion,
|
||||
newslice = this.renderSlice(currentRegion, highlight),
|
||||
shapeid = this.valueShapes[currentRegion];
|
||||
delete this.shapes[shapeid];
|
||||
this.target.replaceWithShape(shapeid, newslice);
|
||||
this.valueShapes[currentRegion] = newslice.id;
|
||||
this.shapes[newslice.id] = currentRegion;
|
||||
},
|
||||
|
||||
renderSlice: function (valuenum, highlight) {
|
||||
var target = this.target,
|
||||
options = this.options,
|
||||
radius = this.radius,
|
||||
borderWidth = options.get('borderWidth'),
|
||||
offset = options.get('offset'),
|
||||
circle = 2 * Math.PI,
|
||||
values = this.values,
|
||||
total = this.total,
|
||||
next = offset ? (2*Math.PI)*(offset/360) : 0,
|
||||
start, end, i, vlen, color;
|
||||
|
||||
vlen = values.length;
|
||||
for (i = 0; i < vlen; i++) {
|
||||
start = next;
|
||||
end = next;
|
||||
if (total > 0) { // avoid divide by zero
|
||||
end = next + (circle * (values[i] / total));
|
||||
}
|
||||
if (valuenum === i) {
|
||||
color = options.get('sliceColors')[i % options.get('sliceColors').length];
|
||||
if (highlight) {
|
||||
color = this.calcHighlightColor(color, options);
|
||||
}
|
||||
|
||||
return target.drawPieSlice(radius, radius, radius - borderWidth, start, end, undefined, color);
|
||||
}
|
||||
next = end;
|
||||
}
|
||||
},
|
||||
|
||||
render: function () {
|
||||
var target = this.target,
|
||||
values = this.values,
|
||||
options = this.options,
|
||||
radius = this.radius,
|
||||
borderWidth = options.get('borderWidth'),
|
||||
shape, i;
|
||||
|
||||
if (!pie._super.render.call(this)) {
|
||||
return;
|
||||
}
|
||||
if (borderWidth) {
|
||||
target.drawCircle(radius, radius, Math.floor(radius - (borderWidth / 2)),
|
||||
options.get('borderColor'), undefined, borderWidth).append();
|
||||
}
|
||||
for (i = values.length; i--;) {
|
||||
if (values[i]) { // don't render zero values
|
||||
shape = this.renderSlice(i).append();
|
||||
this.valueShapes[i] = shape.id; // store just the shapeid
|
||||
this.shapes[shape.id] = i;
|
||||
}
|
||||
}
|
||||
target.render();
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user