Skip to content

Commit 888cf68

Browse files
committed
texttemplate: DRY code for gl(2|3)d traces, pass meta to scatter3d
1 parent e381c25 commit 888cf68

File tree

4 files changed

+21
-32
lines changed

4 files changed

+21
-32
lines changed

src/traces/scatter3d/convert.js

+11-17
Original file line numberDiff line numberDiff line change
@@ -242,24 +242,18 @@ function convertPlotlyOptions(scene, data) {
242242
}
243243

244244
// check texttemplate
245-
if(data.texttemplate) {
245+
var texttemplate = data.texttemplate;
246+
if(texttemplate) {
247+
var isArray = Array.isArray(texttemplate);
248+
var N = isArray ? Math.min(texttemplate.length, len) : len;
249+
var txt = isArray ? function(i) {return texttemplate[i];} : function() { return texttemplate;};
246250
var d3locale = scene.fullLayout._d3locale;
247-
if(Array.isArray(data.texttemplate)) {
248-
text = new Array(data.texttemplate.length);
249-
for(i = 0; i < Math.min(len, data.texttemplate.length); i++) {
250-
var pt = {};
251-
pt.text = text[i];
252-
appendArrayPointValue(pt, data, i);
253-
text[i] = Lib.texttemplateString(data.texttemplate[i], pt, d3locale, pt);
254-
}
255-
} else {
256-
text = new Array(len);
257-
for(i = 0; i < len; i++) {
258-
var pt1 = {};
259-
pt1.text = text[i];
260-
appendArrayPointValue(pt1, data, i);
261-
text[i] = Lib.texttemplateString(data.texttemplate, pt1, d3locale, pt1);
262-
}
251+
text = new Array(N);
252+
for(i = 0; i < N; i++) {
253+
var pt = {};
254+
pt.text = text[i];
255+
appendArrayPointValue(pt, data, i);
256+
text[i] = Lib.texttemplateString(txt(i), pt, d3locale, pt, data._meta || {});
263257
}
264258
}
265259

src/traces/scattergl/convert.js

+8-14
Original file line numberDiff line numberDiff line change
@@ -115,21 +115,15 @@ function convertTextStyle(trace, gd) {
115115

116116
var texttemplate = trace.texttemplate;
117117
if(texttemplate) {
118-
var d3locale = gd._fullLayout._d3locale;
119118
optsOut.text = [];
120-
var pt;
121-
if(Array.isArray(texttemplate)) {
122-
for(i = 0; i < Math.min(texttemplate.length, count); i++) {
123-
pt = {};
124-
appendArrayPointValue(pt, trace, i);
125-
optsOut.text.push(Lib.texttemplateString(texttemplate[i], pt, d3locale, pt, trace._meta || {}));
126-
}
127-
} else {
128-
for(i = 0; i < count; i++) {
129-
pt = {};
130-
appendArrayPointValue(pt, trace, i);
131-
optsOut.text.push(Lib.texttemplateString(texttemplate, pt, d3locale, pt, trace._meta || {}));
132-
}
119+
var isArray = Array.isArray(texttemplate);
120+
var N = isArray ? Math.min(texttemplate.length, count) : count;
121+
var txt = isArray ? function(i) {return texttemplate[i];} : function() { return texttemplate;};
122+
var d3locale = gd._fullLayout._d3locale;
123+
for(i = 0; i < N; i++) {
124+
var pt = {};
125+
appendArrayPointValue(pt, trace, i);
126+
optsOut.text.push(Lib.texttemplateString(txt(i), pt, d3locale, pt, trace._meta || {}));
133127
}
134128
} else {
135129
if(Array.isArray(trace.text) && trace.text.length < count) {
Loading

test/image/mocks/gl3d_scatter3d-texttemplate.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
"x": [2, 1, 0],
1313
"y": [0, 4, 1],
1414
"z": [-5, -2, 4],
15-
"texttemplate": ["1", "2"],
15+
"texttemplate": ["1", "2 with %{meta.text}"],
16+
"meta": {"text": "meta"},
1617
"mode": "markers+text"
1718
}],
1819
"layout": {

0 commit comments

Comments
 (0)