|
12 | 12 | var Lib = require('../../lib');
|
13 | 13 | var BADNUM = require('../../constants/numerical').BADNUM;
|
14 | 14 |
|
| 15 | +module.exports = function convertColumnData(trace, ax1, ax2, var1Name, var2Name, arrayVarNames) { |
| 16 | + var1Name = var1Name || 'x'; |
| 17 | + var2Name = var2Name || 'y'; |
| 18 | + arrayVarNames = arrayVarNames || ['z']; |
15 | 19 |
|
16 |
| -module.exports = function convertColumnXYZ(trace, xa, ya) { |
17 |
| - var xCol = trace.x.slice(), |
18 |
| - yCol = trace.y.slice(), |
19 |
| - zCol = trace.z, |
| 20 | + var col1 = trace[var1Name].slice(), |
| 21 | + col2 = trace[var2Name].slice(), |
20 | 22 | textCol = trace.text,
|
21 |
| - colLen = Math.min(xCol.length, yCol.length, zCol.length), |
| 23 | + colLen = Math.min(col1.length, col2.length), |
22 | 24 | hasColumnText = (textCol !== undefined && !Array.isArray(textCol[0])),
|
23 |
| - xcalendar = trace.xcalendar, |
24 |
| - ycalendar = trace.ycalendar; |
| 25 | + col1Calendar = trace[var1Name + 'calendar'], |
| 26 | + col2Calendar = trace[var2Name + 'calendar']; |
25 | 27 |
|
26 |
| - var i; |
| 28 | + var i, j, arrayVar, newArray, arrayVarName; |
27 | 29 |
|
28 |
| - if(colLen < xCol.length) xCol = xCol.slice(0, colLen); |
29 |
| - if(colLen < yCol.length) yCol = yCol.slice(0, colLen); |
| 30 | + for(i = 0; i < arrayVarNames.length; i++) { |
| 31 | + arrayVar = trace[arrayVarNames[i]]; |
| 32 | + if(arrayVar) colLen = Math.min(colLen, arrayVar.length); |
| 33 | + } |
| 34 | + |
| 35 | + if(colLen < col1.length) col1 = col1.slice(0, colLen); |
| 36 | + if(colLen < col2.length) col2 = col2.slice(0, colLen); |
30 | 37 |
|
31 | 38 | for(i = 0; i < colLen; i++) {
|
32 |
| - xCol[i] = xa.d2c(xCol[i], 0, xcalendar); |
33 |
| - yCol[i] = ya.d2c(yCol[i], 0, ycalendar); |
| 39 | + col1[i] = ax1.d2c(col1[i], 0, col1Calendar); |
| 40 | + col2[i] = ax2.d2c(col2[i], 0, col2Calendar); |
34 | 41 | }
|
35 | 42 |
|
36 |
| - var xColdv = Lib.distinctVals(xCol), |
37 |
| - x = xColdv.vals, |
38 |
| - yColdv = Lib.distinctVals(yCol), |
39 |
| - y = yColdv.vals, |
40 |
| - z = Lib.init2dArray(y.length, x.length); |
| 43 | + var col1dv = Lib.distinctVals(col1), |
| 44 | + col1vals = col1dv.vals, |
| 45 | + col2dv = Lib.distinctVals(col2), |
| 46 | + col2vals = col2dv.vals, |
| 47 | + newArrays = []; |
| 48 | + |
| 49 | + for(i = 0; i < arrayVarNames.length; i++) { |
| 50 | + newArrays[i] = Lib.init2dArray(col2vals.length, col1vals.length); |
| 51 | + } |
41 | 52 |
|
42 |
| - var text; |
| 53 | + var i1, i2, text; |
43 | 54 |
|
44 |
| - if(hasColumnText) text = Lib.init2dArray(y.length, x.length); |
| 55 | + if(hasColumnText) text = Lib.init2dArray(col2vals.length, col1vals.length); |
45 | 56 |
|
46 | 57 | for(i = 0; i < colLen; i++) {
|
47 |
| - if(xCol[i] !== BADNUM && yCol[i] !== BADNUM) { |
48 |
| - var ix = Lib.findBin(xCol[i] + xColdv.minDiff / 2, x); |
49 |
| - var iy = Lib.findBin(yCol[i] + yColdv.minDiff / 2, y); |
| 58 | + if(col1[i] !== BADNUM && col2[i] !== BADNUM) { |
| 59 | + i1 = Lib.findBin(col1[i] + col1dv.minDiff / 2, col1vals); |
| 60 | + i2 = Lib.findBin(col2[i] + col2dv.minDiff / 2, col2vals); |
| 61 | + |
| 62 | + for(j = 0; j < arrayVarNames.length; j++) { |
| 63 | + arrayVarName = arrayVarNames[j]; |
| 64 | + arrayVar = trace[arrayVarName]; |
| 65 | + newArray = newArrays[j]; |
| 66 | + newArray[i2][i1] = arrayVar[i]; |
| 67 | + } |
50 | 68 |
|
51 |
| - z[iy][ix] = zCol[i]; |
52 |
| - if(hasColumnText) text[iy][ix] = textCol[i]; |
| 69 | + if(hasColumnText) text[i2][i1] = textCol[i]; |
53 | 70 | }
|
54 | 71 | }
|
55 | 72 |
|
56 |
| - trace.x = x; |
57 |
| - trace.y = y; |
58 |
| - trace.z = z; |
| 73 | + trace[var1Name] = col1vals; |
| 74 | + trace[var2Name] = col2vals; |
| 75 | + for(j = 0; j < arrayVarNames.length; j++) { |
| 76 | + trace[arrayVarNames[j]] = newArrays[j]; |
| 77 | + } |
59 | 78 | if(hasColumnText) trace.text = text;
|
60 | 79 | };
|
0 commit comments