Commit baa64c5
committed
fix(bar): only morph surviving bars on data update; snap the rest
Bar-family update animations were producing "from 0,0" artifacts and
floating bars on stacked legend toggles. Root cause: after
`getPreviousPath` returned the previous render's full `d` string, the
path-builders still appended ~5 line commands to it as padding, so
`pathFrom` ended up with more SVG commands than `pathTo` and SVG.js
morph produced garbage.
The padding was only needed for the initial-mount case (where
`pathFrom` is a single `move()` and must be padded to match `pathTo`).
Restructure each bar/column/funnel/candlestick/boxplot path-builder
to build `pathTo` first (incl. `roundPathCorners`), then split on
update vs. initial mount:
- Update branch calls `getPreviousPath(realIndex, j, pathTo)`, which
returns the captured d only if its SVG command count matches
`pathTo` (survivor with stable shape → smooth morph). On mismatch
(corner state flipped, e.g. bar became new top of stack) or no
capture (re-enabled series), returns `pathTo` itself, making
`pathFrom === pathTo` a visual no-op (snap).
- Initial-mount branch keeps the existing baseline + padding so the
rise-from-baseline animation is unchanged.1 parent 6f42c52 commit baa64c5
4 files changed
Lines changed: 167 additions & 102 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
608 | 608 | | |
609 | 609 | | |
610 | 610 | | |
611 | | - | |
| 611 | + | |
612 | 612 | | |
613 | 613 | | |
614 | 614 | | |
615 | 615 | | |
616 | 616 | | |
617 | | - | |
618 | | - | |
619 | | - | |
| 617 | + | |
| 618 | + | |
620 | 619 | | |
621 | 620 | | |
622 | 621 | | |
| |||
807 | 806 | | |
808 | 807 | | |
809 | 808 | | |
810 | | - | |
811 | | - | |
812 | | - | |
813 | | - | |
814 | | - | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
815 | 822 | | |
816 | | - | |
| 823 | + | |
817 | 824 | | |
818 | | - | |
| 825 | + | |
819 | 826 | | |
820 | 827 | | |
821 | | - | |
822 | 828 | | |
823 | 829 | | |
824 | 830 | | |
825 | 831 | | |
826 | 832 | | |
827 | | - | |
828 | | - | |
| 833 | + | |
| 834 | + | |
829 | 835 | | |
830 | 836 | | |
831 | 837 | | |
832 | | - | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
| 841 | + | |
| 842 | + | |
| 843 | + | |
| 844 | + | |
| 845 | + | |
| 846 | + | |
| 847 | + | |
| 848 | + | |
| 849 | + | |
| 850 | + | |
| 851 | + | |
| 852 | + | |
| 853 | + | |
| 854 | + | |
833 | 855 | | |
834 | 856 | | |
835 | 857 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
283 | 283 | | |
284 | 284 | | |
285 | 285 | | |
286 | | - | |
287 | | - | |
288 | | - | |
289 | | - | |
290 | | - | |
291 | 286 | | |
292 | 287 | | |
293 | 288 | | |
| |||
344 | 339 | | |
345 | 340 | | |
346 | 341 | | |
347 | | - | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
348 | 352 | | |
349 | 353 | | |
350 | 354 | | |
| |||
435 | 439 | | |
436 | 440 | | |
437 | 441 | | |
438 | | - | |
439 | | - | |
440 | | - | |
441 | | - | |
442 | | - | |
443 | 442 | | |
444 | 443 | | |
445 | 444 | | |
| |||
466 | 465 | | |
467 | 466 | | |
468 | 467 | | |
469 | | - | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
470 | 478 | | |
471 | 479 | | |
472 | 480 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
485 | 485 | | |
486 | 486 | | |
487 | 487 | | |
488 | | - | |
489 | | - | |
490 | | - | |
491 | 488 | | |
492 | | - | |
493 | | - | |
494 | | - | |
495 | | - | |
496 | | - | |
497 | | - | |
498 | | - | |
499 | | - | |
500 | | - | |
501 | | - | |
| 489 | + | |
| 490 | + | |
502 | 491 | | |
503 | 492 | | |
504 | | - | |
| 493 | + | |
505 | 494 | | |
506 | | - | |
507 | | - | |
508 | | - | |
509 | | - | |
510 | | - | |
511 | | - | |
512 | | - | |
513 | | - | |
514 | | - | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
515 | 499 | | |
516 | | - | |
517 | | - | |
518 | | - | |
519 | | - | |
520 | | - | |
521 | | - | |
| 500 | + | |
522 | 501 | | |
523 | 502 | | |
524 | 503 | | |
525 | 504 | | |
526 | 505 | | |
527 | 506 | | |
528 | 507 | | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
529 | 526 | | |
530 | 527 | | |
531 | 528 | | |
| |||
600 | 597 | | |
601 | 598 | | |
602 | 599 | | |
603 | | - | |
| 600 | + | |
604 | 601 | | |
605 | | - | |
| 602 | + | |
| 603 | + | |
606 | 604 | | |
607 | | - | |
| 605 | + | |
608 | 606 | | |
609 | 607 | | |
610 | 608 | | |
| |||
672 | 670 | | |
673 | 671 | | |
674 | 672 | | |
675 | | - | |
676 | | - | |
677 | | - | |
678 | | - | |
679 | | - | |
680 | | - | |
681 | | - | |
682 | 673 | | |
683 | | - | |
684 | | - | |
685 | | - | |
686 | | - | |
687 | | - | |
688 | | - | |
| 674 | + | |
| 675 | + | |
689 | 676 | | |
690 | 677 | | |
691 | | - | |
692 | | - | |
693 | | - | |
694 | | - | |
695 | | - | |
696 | | - | |
697 | | - | |
698 | | - | |
699 | | - | |
700 | | - | |
701 | | - | |
702 | | - | |
703 | | - | |
704 | | - | |
705 | | - | |
706 | | - | |
| 678 | + | |
707 | 679 | | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
708 | 686 | | |
709 | 687 | | |
710 | 688 | | |
711 | 689 | | |
712 | 690 | | |
713 | 691 | | |
714 | 692 | | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
715 | 712 | | |
716 | 713 | | |
717 | 714 | | |
| |||
0 commit comments