Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 2dd1333

Browse filesBrowse files
committed
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
Copy full SHA for 2dd1333

File tree

3 files changed

+22
-11
lines changed
Filter options

3 files changed

+22
-11
lines changed

‎src/lib/index.js

Copy file name to clipboardExpand all lines: src/lib/index.js
+16-4Lines changed: 16 additions & 4 deletions
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

Copy file name to clipboardExpand all lines: src/transforms/filter.js
+3-4Lines changed: 3 additions & 4 deletions
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

Copy file name to clipboardExpand all lines: src/transforms/sort.js
+3-3Lines changed: 3 additions & 3 deletions
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 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.