Skip to content

Commit 2dd1333

Browse files
committedMay 9, 2017
make Lib.getTargetArray API more robust
- add 📚 - do not make copy of set target arrays - return false if attribute string get does return array
1 parent 823375c commit 2dd1333

File tree

3 files changed

+22
-11
lines changed

3 files changed

+22
-11
lines changed
 

‎src/lib/index.js

+16-4
Original file line numberDiff line numberDiff line change
@@ -344,13 +344,25 @@ lib.mergeArray = function(traceAttr, cd, cdAttr) {
344344
}
345345
};
346346

347-
lib.getTargetArray = function(trace, target) {
347+
/** Returns target as set by 'target' transform attribute
348+
*
349+
* @param {object} trace : full trace object
350+
* @param {object} transformOpts : transform option object
351+
* - target (string} :
352+
* either an attribute string referencing an array in the trace object, or
353+
* a set array.
354+
*
355+
* @return {array or false} : the target array (NOT a copy!!) or false if invalid
356+
*/
357+
lib.getTargetArray = function(trace, transformOpts) {
358+
var target = transformOpts.target;
359+
348360
if(typeof target === 'string' && target) {
349361
var array = lib.nestedProperty(trace, target).get();
350-
351-
return Array.isArray(array) ? array : [];
362+
return Array.isArray(array) ? array : false;
363+
} else if(Array.isArray(target)) {
364+
return target;
352365
}
353-
else if(Array.isArray(target)) return target.slice();
354366

355367
return false;
356368
};

‎src/transforms/filter.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -142,12 +142,11 @@ exports.supplyDefaults = function(transformIn) {
142142
exports.calcTransform = function(gd, trace, opts) {
143143
if(!opts.enabled) return;
144144

145+
var targetArray = Lib.getTargetArray(trace, opts);
146+
if(!targetArray) return;
147+
145148
var target = opts.target;
146-
var targetArray = Lib.getTargetArray(trace, target);
147149
var len = targetArray.length;
148-
149-
if(!len) return;
150-
151150
var targetCalendar = opts.targetcalendar;
152151

153152
// even if you provide targetcalendar, if target is a string and there

‎src/transforms/sort.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,12 @@ exports.supplyDefaults = function(transformIn) {
7373
exports.calcTransform = function(gd, trace, opts) {
7474
if(!opts.enabled) return;
7575

76+
var targetArray = Lib.getTargetArray(trace, opts);
77+
if(!targetArray) return;
78+
7679
var target = opts.target;
77-
var targetArray = Lib.getTargetArray(trace, target);
7880
var len = targetArray.length;
7981

80-
if(!len) return;
81-
8282
var arrayAttrs = PlotSchema.findArrayAttributes(trace);
8383
var d2c = Axes.getDataToCoordFunc(gd, trace, target, targetArray);
8484
var indices = getIndices(opts, targetArray, d2c);

0 commit comments

Comments
 (0)
Please sign in to comment.