|
6 | 6 | * LICENSE file in the root directory of this source tree.
|
7 | 7 | */
|
8 | 8 |
|
9 |
| - |
10 | 9 | 'use strict';
|
11 | 10 |
|
12 | 11 | var d3 = require('d3');
|
@@ -63,7 +62,8 @@ function isValidCategory(v) {
|
63 | 62 | module.exports = function setConvert(ax, fullLayout) {
|
64 | 63 | fullLayout = fullLayout || {};
|
65 | 64 |
|
66 |
| - var axLetter = (ax._id || 'x').charAt(0); |
| 65 | + var axId = (ax._id || 'x'); |
| 66 | + var axLetter = axId.charAt(0); |
67 | 67 |
|
68 | 68 | function toLog(v, clip) {
|
69 | 69 | if(v > 0) return Math.log(v) / Math.LN10;
|
@@ -307,10 +307,25 @@ module.exports = function setConvert(ax, fullLayout) {
|
307 | 307 | var traceIndices = ax._traceIndices;
|
308 | 308 | var i, j;
|
309 | 309 |
|
| 310 | + var matchGroups = fullLayout._axisMatchGroups; |
| 311 | + if(matchGroups && matchGroups.length && ax._categories.length === 0) { |
| 312 | + for(i = 0; i < matchGroups.length; i++) { |
| 313 | + var group = matchGroups[i]; |
| 314 | + if(group[axId]) { |
| 315 | + for(var axId2 in group) { |
| 316 | + if(axId2 !== axId) { |
| 317 | + var ax2 = fullLayout[axisIds.id2name(axId2)]; |
| 318 | + traceIndices = traceIndices.concat(ax2._traceIndices); |
| 319 | + } |
| 320 | + } |
| 321 | + } |
| 322 | + } |
| 323 | + } |
| 324 | + |
310 | 325 | // [ [cnt, {$cat: index}], for 1,2 ]
|
311 |
| - var seen = ax._multicatSeen = [[0, {}], [0, {}]]; |
| 326 | + var seen = [[0, {}], [0, {}]]; |
312 | 327 | // [ [arrayIn[0][i], arrayIn[1][i]], for i .. N ]
|
313 |
| - var list = ax._multicatList = []; |
| 328 | + var list = []; |
314 | 329 |
|
315 | 330 | for(i = 0; i < traceIndices.length; i++) {
|
316 | 331 | var trace = fullData[traceIndices[i]];
|
@@ -558,15 +573,45 @@ module.exports = function setConvert(ax, fullLayout) {
|
558 | 573 | }
|
559 | 574 | };
|
560 | 575 |
|
| 576 | + // should skip if not category nor multicategory |
561 | 577 | ax.clearCalc = function() {
|
562 |
| - // initialize the category list, if there is one, so we start over |
563 |
| - // to be filled in later by ax.d2c |
564 |
| - ax._categories = (ax._initialCategories || []).slice(); |
565 |
| - |
566 |
| - // Build the lookup map for initialized categories |
567 |
| - ax._categoriesMap = {}; |
568 |
| - for(var j = 0; j < ax._categories.length; j++) { |
569 |
| - ax._categoriesMap[ax._categories[j]] = j; |
| 578 | + var matchGroups = fullLayout._axisMatchGroups; |
| 579 | + |
| 580 | + if(matchGroups && matchGroups.length) { |
| 581 | + for(var i = 0; i < matchGroups.length; i++) { |
| 582 | + var group = matchGroups[i]; |
| 583 | + |
| 584 | + if(group[axId]) { |
| 585 | + var categories = null; |
| 586 | + var categoriesMap = null; |
| 587 | + |
| 588 | + for(var axId2 in group) { |
| 589 | + var ax2 = fullLayout[axisIds.id2name(axId2)]; |
| 590 | + if(ax2._categories) { |
| 591 | + categories = ax2._categories; |
| 592 | + categoriesMap = ax2._categoriesMap; |
| 593 | + break; |
| 594 | + } |
| 595 | + } |
| 596 | + |
| 597 | + if(categories && categoriesMap) { |
| 598 | + ax._categories = categories; |
| 599 | + ax._categoriesMap = categoriesMap; |
| 600 | + } else { |
| 601 | + ax._categories = []; |
| 602 | + ax._categoriesMap = {}; |
| 603 | + } |
| 604 | + } |
| 605 | + } |
| 606 | + } else { |
| 607 | + ax._categories = []; |
| 608 | + ax._categoriesMap = {}; |
| 609 | + } |
| 610 | + |
| 611 | + if(ax._initialCategories) { |
| 612 | + for(var j = 0; j < ax._initialCategories.length; j++) { |
| 613 | + setCategoryIndex(ax._initialCategories[j]); |
| 614 | + } |
570 | 615 | }
|
571 | 616 | };
|
572 | 617 |
|
|
0 commit comments