|
@ -39,7 +39,9 @@ var OPTIONKEYS = [ |
|
|
'animationPreload', |
|
|
'animationPreload', |
|
|
'animationAutoStart', |
|
|
'animationAutoStart', |
|
|
'axisColor', |
|
|
'axisColor', |
|
|
'gridColor' |
|
|
|
|
|
|
|
|
'gridColor', |
|
|
|
|
|
'xCenter', |
|
|
|
|
|
'yCenter' |
|
|
]; |
|
|
]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -78,7 +80,9 @@ var DEFAULTS = { |
|
|
animationInterval: 1000, // milliseconds
|
|
|
animationInterval: 1000, // milliseconds
|
|
|
animationPreload : false, |
|
|
animationPreload : false, |
|
|
axisColor : '#4D4D4D', |
|
|
axisColor : '#4D4D4D', |
|
|
gridColor : '#D3D3D3' |
|
|
|
|
|
|
|
|
gridColor : '#D3D3D3', |
|
|
|
|
|
xCenter : '55%', |
|
|
|
|
|
yCenter : '50%' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Following not in defaults (yet) but present in user settings
|
|
|
// Following not in defaults (yet) but present in user settings
|
|
@ -174,9 +178,6 @@ function Graph3d(container, data, options) { |
|
|
// These require special attention in some way
|
|
|
// These require special attention in some way
|
|
|
// TODO: handle these
|
|
|
// TODO: handle these
|
|
|
|
|
|
|
|
|
this.defaultXCenter = '55%'; |
|
|
|
|
|
this.defaultYCenter = '50%'; |
|
|
|
|
|
|
|
|
|
|
|
this.showLegend = undefined; // auto by default (based on graph style)
|
|
|
this.showLegend = undefined; // auto by default (based on graph style)
|
|
|
|
|
|
|
|
|
this.style = Graph3d.STYLE.DOT; |
|
|
this.style = Graph3d.STYLE.DOT; |
|
@ -345,8 +346,8 @@ Graph3d.prototype._convertTranslationToScreen = function(translation) { |
|
|
// shift and scale the point to the center of the screen
|
|
|
// shift and scale the point to the center of the screen
|
|
|
// use the width of the graph to scale both horizontally and vertically.
|
|
|
// use the width of the graph to scale both horizontally and vertically.
|
|
|
return new Point2d( |
|
|
return new Point2d( |
|
|
this.xcenter + bx * this.frame.canvas.clientWidth, |
|
|
|
|
|
this.ycenter - by * this.frame.canvas.clientWidth); |
|
|
|
|
|
|
|
|
this.currentXCenter + bx * this.frame.canvas.clientWidth, |
|
|
|
|
|
this.currentYCenter - by * this.frame.canvas.clientWidth); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -873,30 +874,30 @@ Graph3d.prototype.animationStop = function() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* Resize the center position based on the current values in this.defaultXCenter |
|
|
|
|
|
* and this.defaultYCenter (which are strings with a percentage or a value |
|
|
|
|
|
* in pixels). The center positions are the variables this.xCenter |
|
|
|
|
|
* and this.yCenter |
|
|
|
|
|
|
|
|
* Resize the center position based on the current values in this.xCenter |
|
|
|
|
|
* and this.yCenter (which are strings with a percentage or a value |
|
|
|
|
|
* in pixels). The center positions are the variables this.currentXCenter |
|
|
|
|
|
* and this.currentYCenter |
|
|
*/ |
|
|
*/ |
|
|
Graph3d.prototype._resizeCenter = function() { |
|
|
Graph3d.prototype._resizeCenter = function() { |
|
|
// calculate the horizontal center position
|
|
|
// calculate the horizontal center position
|
|
|
if (this.defaultXCenter.charAt(this.defaultXCenter.length-1) === '%') { |
|
|
|
|
|
this.xcenter = |
|
|
|
|
|
parseFloat(this.defaultXCenter) / 100 * |
|
|
|
|
|
|
|
|
if (this.xCenter.charAt(this.xCenter.length-1) === '%') { |
|
|
|
|
|
this.currentXCenter = |
|
|
|
|
|
parseFloat(this.xCenter) / 100 * |
|
|
this.frame.canvas.clientWidth; |
|
|
this.frame.canvas.clientWidth; |
|
|
} |
|
|
} |
|
|
else { |
|
|
else { |
|
|
this.xcenter = parseFloat(this.defaultXCenter); // supposed to be in px
|
|
|
|
|
|
|
|
|
this.currentXCenter = parseFloat(this.xCenter); // supposed to be in px
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// calculate the vertical center position
|
|
|
// calculate the vertical center position
|
|
|
if (this.defaultYCenter.charAt(this.defaultYCenter.length-1) === '%') { |
|
|
|
|
|
this.ycenter = |
|
|
|
|
|
parseFloat(this.defaultYCenter) / 100 * |
|
|
|
|
|
|
|
|
if (this.yCenter.charAt(this.yCenter.length-1) === '%') { |
|
|
|
|
|
this.currentYCenter = |
|
|
|
|
|
parseFloat(this.yCenter) / 100 * |
|
|
(this.frame.canvas.clientHeight - this.frame.filter.clientHeight); |
|
|
(this.frame.canvas.clientHeight - this.frame.filter.clientHeight); |
|
|
} |
|
|
} |
|
|
else { |
|
|
else { |
|
|
this.ycenter = parseFloat(this.defaultYCenter); // supposed to be in px
|
|
|
|
|
|
|
|
|
this.currentYCenter = parseFloat(this.yCenter); // supposed to be in px
|
|
|
} |
|
|
} |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
@ -995,8 +996,6 @@ Graph3d.prototype.setOptions = function (options) { |
|
|
safeCopy(options, this, OPTIONKEYS); |
|
|
safeCopy(options, this, OPTIONKEYS); |
|
|
|
|
|
|
|
|
// Handle the rest of the parameters
|
|
|
// Handle the rest of the parameters
|
|
|
if (options.xCenter !== undefined) this.defaultXCenter = options.xCenter; |
|
|
|
|
|
if (options.yCenter !== undefined) this.defaultYCenter = options.yCenter; |
|
|
|
|
|
if (options.showLegend !== undefined) this.defaultShowLegend = options.showLegend; |
|
|
if (options.showLegend !== undefined) this.defaultShowLegend = options.showLegend; |
|
|
|
|
|
|
|
|
if (options.style !== undefined) { |
|
|
if (options.style !== undefined) { |
|
|