Browse Source

Uniform handling of common user options (#2168)

codeClimate
wimrijnders 8 years ago
committed by Alexander Wunschik
parent
commit
674813dcad
1 changed files with 64 additions and 28 deletions
  1. +64
    -28
      lib/graph3d/Graph3d.js

+ 64
- 28
lib/graph3d/Graph3d.js View File

@ -8,6 +8,65 @@ var Filter = require('./Filter');
var Slider = require('./Slider');
var StepNumber = require('./StepNumber');
// -----------------------------------------------------------------------------
// Definitions private to module
// -----------------------------------------------------------------------------
/**
* Field names in the options hash which are of relevance to the user.
*
* Specifically, these are the fields which require no special handling,
* and can be directly copied over.
*/
var OPTIONKEYS = [
'width',
'height',
'filterLabel',
'legendLabel',
'xLabel',
'yLabel',
'zLabel',
'xValueLabel',
'yValueLabel',
'zValueLabel',
'showGrid',
'showPerspective',
'showShadow',
'showAnimationControls',
'keepAspectRatio',
'verticalRatio',
'animationInterval',
'animationPreload',
'animationAutoStart',
'axisColor',
'gridColor'
];
/**
* Copy fields from src to dst in a controlled manner.
*
* Only the fields mentioned in array 'fields' will be copied over,
* and only if these are actually defined.
*
* @param fields array with names of fields to copy
*/
function safeCopy(src, dst, fields) {
for (var i in fields) {
var field = fields[i];
if (src[field] !== undefined) {
dst[field] = src[field];
}
}
}
// -----------------------------------------------------------------------------
// Class Graph3d
// -----------------------------------------------------------------------------
/**
* @constructor Graph3d
* Graph3d displays data in 3d.
@ -867,24 +926,14 @@ Graph3d.prototype.setOptions = function (options) {
if (options !== undefined) {
// retrieve parameter values
if (options.width !== undefined) this.width = options.width;
if (options.height !== undefined) this.height = options.height;
// Handle the parameters which can be simply copied over
safeCopy(options, this, OPTIONKEYS);
// Handle the rest of the parameters
if (options.xCenter !== undefined) this.defaultXCenter = options.xCenter;
if (options.yCenter !== undefined) this.defaultYCenter = options.yCenter;
if (options.filterLabel !== undefined) this.filterLabel = options.filterLabel;
if (options.legendLabel !== undefined) this.legendLabel = options.legendLabel;
if (options.showLegend !== undefined) this.defaultShowLegend = options.showLegend;
if (options.xLabel !== undefined) this.xLabel = options.xLabel;
if (options.yLabel !== undefined) this.yLabel = options.yLabel;
if (options.zLabel !== undefined) this.zLabel = options.zLabel;
if (options.xValueLabel !== undefined) this.xValueLabel = options.xValueLabel;
if (options.yValueLabel !== undefined) this.yValueLabel = options.yValueLabel;
if (options.zValueLabel !== undefined) this.zValueLabel = options.zValueLabel;
if (options.dotSizeRatio !== undefined) this.dotSizeRatio = options.dotSizeRatio;
if (options.style !== undefined) {
var styleNumber = this._getStyleNumber(options.style);
@ -892,21 +941,10 @@ Graph3d.prototype.setOptions = function (options) {
this.style = styleNumber;
}
}
if (options.showGrid !== undefined) this.showGrid = options.showGrid;
if (options.showPerspective !== undefined) this.showPerspective = options.showPerspective;
if (options.showShadow !== undefined) this.showShadow = options.showShadow;
if (options.tooltip !== undefined) this.showTooltip = options.tooltip;
if (options.showAnimationControls !== undefined) this.showAnimationControls = options.showAnimationControls;
if (options.keepAspectRatio !== undefined) this.keepAspectRatio = options.keepAspectRatio;
if (options.verticalRatio !== undefined) this.verticalRatio = options.verticalRatio;
if (options.animationInterval !== undefined) this.animationInterval = options.animationInterval;
if (options.animationPreload !== undefined) this.animationPreload = options.animationPreload;
if (options.animationAutoStart !== undefined)this.animationAutoStart = options.animationAutoStart;
if (options.tooltip !== undefined) this.showTooltip = options.tooltip;
if (options.xBarWidth !== undefined) this.defaultXBarWidth = options.xBarWidth;
if (options.yBarWidth !== undefined) this.defaultYBarWidth = options.yBarWidth;
if (options.xMin !== undefined) this.defaultXMin = options.xMin;
if (options.xStep !== undefined) this.defaultXStep = options.xStep;
if (options.xMax !== undefined) this.defaultXMax = options.xMax;
@ -928,8 +966,6 @@ Graph3d.prototype.setOptions = function (options) {
}
// colors
if (options.axisColor !== undefined) this.axisColor = options.axisColor;
if (options.gridColor !== undefined) this.gridColor = options.gridColor;
if (options.dataColor) {
if (typeof options.dataColor === 'string') {
this.dataColor.fill = options.dataColor;

Loading…
Cancel
Save