(gd, cd, element, transitionOpts)
| 83 | }; |
| 84 | |
| 85 | function plotOne(gd, cd, element, transitionOpts) { |
| 86 | var isStatic = gd._context.staticPlot; |
| 87 | |
| 88 | var fullLayout = gd._fullLayout; |
| 89 | var hasTransition = !fullLayout.uniformtext.mode && helpers.hasTransition(transitionOpts); |
| 90 | |
| 91 | var gTrace = d3.select(element); |
| 92 | var slices = gTrace.selectAll('g.slice'); |
| 93 | |
| 94 | var cd0 = cd[0]; |
| 95 | var trace = cd0.trace; |
| 96 | var hierarchy = cd0.hierarchy; |
| 97 | var entry = helpers.findEntryWithLevel(hierarchy, trace.level); |
| 98 | var maxDepth = helpers.getMaxDepth(trace); |
| 99 | |
| 100 | var gs = fullLayout._size; |
| 101 | var domain = trace.domain; |
| 102 | var vpw = gs.w * (domain.x[1] - domain.x[0]); |
| 103 | var vph = gs.h * (domain.y[1] - domain.y[0]); |
| 104 | var rMax = 0.5 * Math.min(vpw, vph); |
| 105 | var cx = (cd0.cx = gs.l + (gs.w * (domain.x[1] + domain.x[0])) / 2); |
| 106 | var cy = (cd0.cy = gs.t + gs.h * (1 - domain.y[0]) - vph / 2); |
| 107 | |
| 108 | if (!entry) { |
| 109 | return slices.remove(); |
| 110 | } |
| 111 | |
| 112 | // previous root 'pt' (can be empty) |
| 113 | var prevEntry = null; |
| 114 | // stash of 'previous' position data used by tweening functions |
| 115 | var prevLookup = {}; |
| 116 | |
| 117 | if (hasTransition) { |
| 118 | // Important: do this before binding new sliceData! |
| 119 | slices.each(function (pt) { |
| 120 | prevLookup[helpers.getPtId(pt)] = { |
| 121 | rpx0: pt.rpx0, |
| 122 | rpx1: pt.rpx1, |
| 123 | x0: pt.x0, |
| 124 | x1: pt.x1, |
| 125 | transform: pt.transform |
| 126 | }; |
| 127 | |
| 128 | if (!prevEntry && helpers.isEntry(pt)) { |
| 129 | prevEntry = pt; |
| 130 | } |
| 131 | }); |
| 132 | } |
| 133 | |
| 134 | // N.B. slice data isn't the calcdata, |
| 135 | // grab corresponding calcdata item in sliceData[i].data.data |
| 136 | var sliceData = partition(entry).descendants(); |
| 137 | |
| 138 | var maxHeight = entry.height + 1; |
| 139 | var yOffset = 0; |
| 140 | var cutoff = maxDepth; |
| 141 | // N.B. handle multiple-root special case |
| 142 | if (cd0.hasMultipleRoots && helpers.isHierarchyRoot(entry)) { |
no test coverage detected
searching dependent graphs…