(pt)
| 323 | }); |
| 324 | |
| 325 | function makeExitSliceInterpolator(pt) { |
| 326 | var id = helpers.getPtId(pt); |
| 327 | var prev = prevLookup[id]; |
| 328 | var entryPrev = prevLookup[helpers.getPtId(entry)]; |
| 329 | var next; |
| 330 | |
| 331 | if (entryPrev) { |
| 332 | var a = (pt.x1 > entryPrev.x1 ? 2 * Math.PI : 0) + baseX; |
| 333 | // if pt to remove: |
| 334 | // - if 'below' where the root-node used to be: shrink it radially inward |
| 335 | // - otherwise, collapse it clockwise or counterclockwise which ever is shortest to theta=0 |
| 336 | next = |
| 337 | pt.rpx1 < entryPrev.rpx1 |
| 338 | ? { x0: pt.x0, x1: pt.x1, rpx0: 0, rpx1: 0 } |
| 339 | : { x0: a, x1: a, rpx0: pt.rpx0, rpx1: pt.rpx1 }; |
| 340 | } else { |
| 341 | // this happens when maxdepth is set, when leaves must |
| 342 | // be removed and the rootPt is new (i.e. does not have a 'prev' object) |
| 343 | var parent; |
| 344 | var parentId = helpers.getPtId(pt.parent); |
| 345 | slices.each(function (pt2) { |
| 346 | if (helpers.getPtId(pt2) === parentId) { |
| 347 | return (parent = pt2); |
| 348 | } |
| 349 | }); |
| 350 | var parentChildren = parent.children; |
| 351 | var ci; |
| 352 | parentChildren.forEach(function (pt2, i) { |
| 353 | if (helpers.getPtId(pt2) === id) { |
| 354 | return (ci = i); |
| 355 | } |
| 356 | }); |
| 357 | var n = parentChildren.length; |
| 358 | var interp = interpolate(parent.x0, parent.x1); |
| 359 | next = { |
| 360 | rpx0: rMax, |
| 361 | rpx1: rMax, |
| 362 | x0: interp(ci / n), |
| 363 | x1: interp((ci + 1) / n) |
| 364 | }; |
| 365 | } |
| 366 | |
| 367 | return interpolate(prev, next); |
| 368 | } |
| 369 | |
| 370 | function makeUpdateSliceInterpolator(pt) { |
| 371 | var prev0 = prevLookup[helpers.getPtId(pt)]; |
no test coverage detected
searching dependent graphs…