|
1 | 1 | 'use strict'; |
2 | 2 |
|
3 | | -var d3 = require('@plotly/d3'); |
4 | | - |
5 | | -var helpers = require('../sunburst/helpers'); |
6 | | - |
7 | | -var uniformText = require('../bar/uniform_text'); |
8 | | -var clearMinTextSize = uniformText.clearMinTextSize; |
9 | | -var resizeText = require('../bar/style').resizeText; |
| 3 | +var draw = require('../treemap/draw'); |
10 | 4 | var drawDescendants = require('./draw_descendants'); |
11 | | -var plotOne = require('../treemap/plot_one'); |
12 | | -var type = 'icicle'; |
13 | 5 |
|
14 | 6 | module.exports = function _plot(gd, cdmodule, transitionOpts, makeOnCompleteCallback) { |
15 | | - var fullLayout = gd._fullLayout; |
16 | | - var layer = fullLayout['_' + type + 'layer']; |
17 | | - var join, onComplete; |
18 | | - |
19 | | - // If transition config is provided, then it is only a partial replot and traces not |
20 | | - // updated are removed. |
21 | | - var isFullReplot = !transitionOpts; |
22 | | - |
23 | | - clearMinTextSize(type, fullLayout); |
24 | | - |
25 | | - join = layer.selectAll('g.trace.' + type) |
26 | | - .data(cdmodule, function(cd) { return cd[0].trace.uid; }); |
27 | | - |
28 | | - join.enter().append('g') |
29 | | - .classed('trace', true) |
30 | | - .classed(type, true); |
31 | | - |
32 | | - join.order(); |
33 | | - |
34 | | - if(!fullLayout.uniformtext.mode && helpers.hasTransition(transitionOpts)) { |
35 | | - if(makeOnCompleteCallback) { |
36 | | - // If it was passed a callback to register completion, make a callback. If |
37 | | - // this is created, then it must be executed on completion, otherwise the |
38 | | - // pos-transition redraw will not execute: |
39 | | - onComplete = makeOnCompleteCallback(); |
40 | | - } |
41 | | - |
42 | | - var transition = d3.transition() |
43 | | - .duration(transitionOpts.duration) |
44 | | - .ease(transitionOpts.easing) |
45 | | - .each('end', function() { onComplete && onComplete(); }) |
46 | | - .each('interrupt', function() { onComplete && onComplete(); }); |
47 | | - |
48 | | - transition.each(function() { |
49 | | - // Must run the selection again since otherwise enters/updates get grouped together |
50 | | - // and these get executed out of order. Except we need them in order! |
51 | | - layer.selectAll('g.trace').each(function(cd) { |
52 | | - plotOne(gd, cd, this, transitionOpts, drawDescendants); |
53 | | - }); |
54 | | - }); |
55 | | - } else { |
56 | | - join.each(function(cd) { |
57 | | - plotOne(gd, cd, this, transitionOpts, drawDescendants); |
58 | | - }); |
59 | | - |
60 | | - if(fullLayout.uniformtext.mode) { |
61 | | - resizeText(gd, layer.selectAll('.trace'), type); |
62 | | - } |
63 | | - } |
64 | | - |
65 | | - if(isFullReplot) { |
66 | | - join.exit().remove(); |
67 | | - } |
| 7 | + return draw(gd, cdmodule, transitionOpts, makeOnCompleteCallback, { |
| 8 | + type: 'icicle', |
| 9 | + drawDescendants: drawDescendants |
| 10 | + }); |
68 | 11 | }; |
0 commit comments