VChart icon indicating copy to clipboard operation
VChart copied to clipboard

[Bug] 大屏条形图切换动画类型,不生效

Open skie1997 opened this issue 5 months ago • 1 comments

Version

2.0.1-alpha.4

Link to Minimal Reproduction

vscreen

Steps to Reproduce

const spec = {
    "type": "bar",
    "theme": {},
    "xField": [
        "10002"
    ],
    "yField": [
        "OCxMNY4j86cy",
        "10001"
    ],
    "direction": "horizontal",
    "sortDataByAxis": true,
    "seriesField": "30001",
    "padding": {
        "left": 6,
        "right": 6,
        "top": 6,
        "bottom": 6
    },
    "labelLayout": "region",
    "data": [
        {
            "id": "data",
            "values": [
                {
                    "10001": "Profit",
                    "10002": 20,
                    "10003": "XU0wVG43cGL7",
                    "30001": "2023",
                    "OCxMNY4j86cy": "Labels",
                    "XU0wVG43cGL7": 20,
                    "vGTOlXqnCrc3": "2023"
                },
                {
                    "10001": "Profit",
                    "10002": 44,
                    "10003": "XU0wVG43cGL7",
                    "30001": "2022",
                    "OCxMNY4j86cy": "Labels",
                    "XU0wVG43cGL7": 44,
                    "vGTOlXqnCrc3": "2022"
                },
                {
                    "10001": "Profit",
                    "10002": 15,
                    "10003": "XU0wVG43cGL7",
                    "30001": "2023",
                    "OCxMNY4j86cy": "Tables",
                    "XU0wVG43cGL7": 15,
                    "vGTOlXqnCrc3": "2023"
                },
                {
                    "10001": "Profit",
                    "10002": 20,
                    "10003": "XU0wVG43cGL7",
                    "30001": "2022",
                    "OCxMNY4j86cy": "Tables",
                    "XU0wVG43cGL7": 20,
                    "vGTOlXqnCrc3": "2022"
                },
                {
                    "10001": "Profit",
                    "10002": 50,
                    "10003": "XU0wVG43cGL7",
                    "30001": "2023",
                    "OCxMNY4j86cy": "Storage",
                    "XU0wVG43cGL7": 50,
                    "vGTOlXqnCrc3": "2023"
                },
                {
                    "10001": "Profit",
                    "10002": 65,
                    "10003": "XU0wVG43cGL7",
                    "30001": "2022",
                    "OCxMNY4j86cy": "Storage",
                    "XU0wVG43cGL7": 65,
                    "vGTOlXqnCrc3": "2022"
                },
                {
                    "10001": "Profit",
                    "10002": 15,
                    "10003": "XU0wVG43cGL7",
                    "30001": "2023",
                    "OCxMNY4j86cy": "Furn",
                    "XU0wVG43cGL7": 15,
                    "vGTOlXqnCrc3": "2023"
                },
                {
                    "10001": "Profit",
                    "10002": 40,
                    "10003": "XU0wVG43cGL7",
                    "30001": "2022",
                    "OCxMNY4j86cy": "Furn",
                    "XU0wVG43cGL7": 40,
                    "vGTOlXqnCrc3": "2022"
                },
                {
                    "10001": "Profit",
                    "10002": 57,
                    "10003": "XU0wVG43cGL7",
                    "30001": "2023",
                    "OCxMNY4j86cy": "Art",
                    "XU0wVG43cGL7": 57,
                    "vGTOlXqnCrc3": "2023"
                },
                {
                    "10001": "Profit",
                    "10002": 35,
                    "10003": "XU0wVG43cGL7",
                    "30001": "2022",
                    "OCxMNY4j86cy": "Art",
                    "XU0wVG43cGL7": 35,
                    "vGTOlXqnCrc3": "2022"
                }
            ],
            "fields": {
                "10001": {
                    "alias": "指标名称"
                },
                "10002": {
                    "alias": "指标值"
                },
                "30001": {
                    "alias": "图例项",
                    "domain": null,
                    "sortIndex": null,
                    "lockStatisticsByDomain": true
                },
                "OCxMNY4j86cy": {
                    "alias": "Product",
                    "domain": [
                        "Art",
                        "Furn",
                        "Labels",
                        "Storage",
                        "Tables"
                    ],
                    "sortIndex": 0,
                    "lockStatisticsByDomain": true
                },
                "vGTOlXqnCrc3": {
                    "alias": "Year"
                },
                "XU0wVG43cGL7": {
                    "alias": "Profit"
                }
            }
        }
    ],
    "stackInverse": true,
    "axes": [
        {
            "type": "band",
            "tick": {
                "style": {
                    "strokeOpacity": 0.2
                }
            },
            "grid": {
                "visible": false,
                "style": {
                    "zIndex": 150,
                    "stroke": "#FFFFFF",
                    "lineWidth": 1,
                    "lineDash": []
                }
            },
            "orient": "left",
            "visible": true,
            "domainLine": {
                "visible": false,
                "style": {
                    "lineWidth": 1,
                    "stroke": "#d5d7e2"
                }
            },
            "title": {
                "visible": false,
                "space": 5,
                "text": "",
                "style": {
                    "fontSize": 12,
                    "fill": "rgba(255,255,255,0.5)",
                    "fontFamily": "D-DIN",
                    "fontWeight": "normal"
                }
            },
            "maxHeight": null,
            "autoIndent": false,
            "sampling": false,
            "zIndex": 200,
            "label": {
                "visible": true,
                "space": 8,
                "style": {
                    "fontSize": 12,
                    "fill": "rgba(255,255,255,0.7)",
                    "angle": 0,
                    "fontFamily": "D-DIN",
                    "fontWeight": "normal",
                    "direction": "horizontal",
                    "maxLineWidth": 174
                },
                "autoHide": true,
                "autoHideMethod": "greedy",
                "flush": true,
                "lastVisible": true,
                "autoHideSeparation": 4
            },
            "hover": true,
            "background": {
                "visible": true,
                "state": {
                    "hover": {
                        "fillOpacity": 0.08,
                        "fill": "#141414"
                    },
                    "hover_reverse": {
                        "fillOpacity": 0.08,
                        "fill": "#141414"
                    }
                }
            },
            "paddingInner": 0.13,
            "paddingOuter": 0.13,
            "ticks": true,
            "maxWidth": 180
        },
        {
            "type": "linear",
            "tick": {
                "size": 4,
                "visible": true
            },
            "niceType": "rough",
            "zIndex": 200,
            "grid": {
                "visible": true
            },
            "orient": "bottom",
            "visible": true,
            "domainLine": {
                "visible": false,
                "style": {
                    "lineWidth": 1,
                    "stroke": "#d5d7e2"
                }
            },
            "title": {
                "visible": false,
                "text": "",
                "space": 8,
                "style": {
                    "fontSize": 12,
                    "fill": "rgba(255,255,255,0.5)",
                    "fontFamily": "D-DIN",
                    "fontWeight": "normal"
                }
            },
            "autoIndent": false,
            "sampling": false,
            "label": {
                "visible": true,
                "space": 4,
                "flush": true,
                "padding": 0,
                "style": {
                    "fontSize": 12,
                    "maxLineWidth": 174,
                    "fill": "rgba(255,255,255,0.7)",
                    "angle": 0,
                    "fontFamily": "D-DIN",
                    "fontWeight": "normal",
                    "dy": 0,
                    "direction": "horizontal"
                },
                "autoHide": true,
                "autoHideMethod": "greedy",
                "autoHideSeparation": 4,
                "rotateAngle": [
                    null
                ],
                "labelOverlap": "custom",
                "tighten": false
            },
            "background": {
                "visible": true,
                "state": {
                    "hover": {
                        "fillOpacity": 0.08,
                        "fill": "#141414"
                    },
                    "hover_reverse": {
                        "fillOpacity": 0.08,
                        "fill": "#141414"
                    }
                }
            },
            "innerOffset": {
                "top": 0
            },
            "zero": true,
            "nice": true,
            "paddingInner": 0.13,
            "paddingOuter": 0.13,
            "ticks": true
        },
        {
            "type": "linear",
            "tick": {
                "size": 4,
                "visible": true
            },
            "niceType": "rough",
            "zIndex": 200,
            "grid": {
                "visible": false
            },
            "orient": "top",
            "visible": true,
            "domainLine": {
                "visible": false
            },
            "title": {
                "visible": false
            },
            "autoIndent": false,
            "sampling": false,
            "label": {
                "visible": true,
                "space": 4,
                "flush": true,
                "padding": 0,
                "style": {
                    "visible": false,
                    "fontSize": 12,
                    "maxLineWidth": 174,
                    "fill": "rgba(255,255,255,0.7)",
                    "angle": 0,
                    "fontFamily": "D-DIN",
                    "fontWeight": "normal",
                    "dy": 0,
                    "direction": "horizontal"
                },
                "autoHide": true,
                "autoHideMethod": "greedy",
                "autoHideSeparation": 4,
                "rotateAngle": [
                    null
                ],
                "labelOverlap": "custom",
                "tighten": false
            },
            "background": {
                "visible": true,
                "state": {
                    "hover": {
                        "fillOpacity": 0.08,
                        "fill": "#141414"
                    },
                    "hover_reverse": {
                        "fillOpacity": 0.08,
                        "fill": "#141414"
                    }
                }
            },
            "innerOffset": {
                "top": 0
            },
            "zero": true,
            "nice": true,
            "paddingInner": 0.13,
            "paddingOuter": 0.13,
            "ticks": true
        }
    ],
    "color": {
        "field": "30001",
        "type": "ordinal",
        "range": [
            "rgb(0,110,255)",
            "rgb(0,229,229)"
        ],
        "specified": {},
        "domain": [
            "2023",
            "2022"
        ]
    },
    "colorGradient": {
        "type": "linear",
        "x0": {
            "field": "30001",
            "type": "ordinal",
            "range": [
                0,
                0
            ]
        },
        "y0": {
            "field": "30001",
            "type": "ordinal",
            "range": [
                1,
                1
            ]
        },
        "x1": {
            "field": "30001",
            "type": "ordinal",
            "range": [
                1,
                1
            ]
        },
        "y1": {
            "field": "30001",
            "type": "ordinal",
            "range": [
                1,
                1
            ]
        },
        "stops": [
            {
                "offset": 0,
                "color": {
                    "field": "30001",
                    "type": "ordinal",
                    "range": [
                        "rgba(0,110,255,0.2)",
                        "rgba(0,229,229,0.2)"
                    ]
                }
            },
            {
                "offset": 1,
                "color": {
                    "field": "30001",
                    "type": "ordinal",
                    "range": [
                        "rgb(0,110,255)",
                        "rgb(0,229,229)"
                    ]
                }
            }
        ]
    },
    "legends": [
        {
            "type": "discrete",
            "visible": true,
            "id": "legend-discrete",
            "orient": "top",
            "position": "end",
            "layoutType": "normal",
            "maxRow": 1,
            "title": {
                "textStyle": {
                    "fontSize": 12,
                    "fill": "rgba(255,255,255,0.7)"
                }
            },
            "layoutLevel": 70,
            "item": {
                "focus": false,
                "focusIconStyle": {
                    "size": 14
                },
                "maxWidth": 400,
                "spaceRow": 0,
                "spaceCol": 0,
                "padding": {
                    "left": 10,
                    "right": 0,
                    "top": 0,
                    "bottom": 5
                },
                "background": {
                    "visible": false,
                    "style": {
                        "fillOpacity": 0.001
                    }
                },
                "label": {
                    "style": {
                        "fontSize": 12,
                        "fill": "rgba(255,255,255,0.7)",
                        "fontFamily": "D-DIN",
                        "fontWeight": "normal"
                    },
                    "state": {
                        "unSelected": {
                            "fillOpacity": 0.2
                        }
                    }
                },
                "shape": {
                    "style": {
                        "lineWidth": 0,
                        "symbolType": "square",
                        "size": 12,
                        "fillOpacity": 1,
                        "width": 12,
                        "height": 7.416
                    }
                }
            },
            "pager": {
                "layout": "horizontal",
                "padding": 0,
                "textStyle": {
                    "fill": "rgba(255,255,255,0.7)"
                },
                "space": 0,
                "handler": {
                    "preShape": "triangleLeft",
                    "nextShape": "triangleRight",
                    "style": {
                        "fill": "rgba(255,255,255,0.7)",
                        "cursor": "pointer",
                        "fillOpaity": 1
                    },
                    "state": {
                        "disable": {
                            "fill": "rgba(255,255,255,0.7)",
                            "cursor": "not-allowed",
                            "fillOpacity": 0.45
                        }
                    }
                }
            },
            "alignSelf": "end",
            "padding": {
                "left": 10,
                "right": 0,
                "top": 0,
                "bottom": 12
            }
        }
    ],
    "label": {
        "visible": false,
        "offset": 3,
        "overlap": {
            "hideOnHit": true,
            "avoidBaseMark": false,
            "strategy": [
                {
                    "type": "position",
                    "position": []
                }
            ],
            "clampForce": true
        },
        "style": {
            "fontSize": 12,
            "fontFamily": "D-DIN",
            "fontWeight": "normal",
            "zIndex": 400,
            "lineHeight": "100%",
            "boundsPadding": [
                1,
                0,
                0,
                0
            ],
            "fill": "rgba(255,255,255,1)",
            "strokeOpacity": 0
        },
        "position": "outside",
        "smartInvert": false,
        "fontWeight": "normal",
        "animation": false,
        "avoidBaseMark": true
    },
    "tooltip": {
        "visible": true,
        "renderMode": "canvas",
        "mark": {
            "visible": true
        },
        "style": {
            "panel": {
                "padding": {
                    "top": 5,
                    "bottom": 10,
                    "left": 10,
                    "right": 10
                },
                "backgroundColor": "rgba(8, 28, 48, 0.95)",
                "border": {
                    "color": "#CFCFCF",
                    "width": 0,
                    "radius": 2
                },
                "shadow": {
                    "x": 0,
                    "y": 4,
                    "blur": 12,
                    "spread": 0,
                    "color": "rgba(0, 0, 0, 0.2)"
                }
            },
            "titleLabel": {
                "fontSize": 14,
                "fontColor": "#FFF",
                "fontWeight": "bold",
                "fontFamily": "D-DIN",
                "align": "left",
                "lineHeight": 18
            },
            "keyLabel": {
                "fontSize": 12,
                "fontColor": "rgba(255,255,255,0.65)",
                "fontWeight": "normal",
                "fontFamily": "SourceHanSansCN-Normal",
                "align": "left",
                "lineHeight": 18
            },
            "valueLabel": {
                "fontSize": 12,
                "fontColor": "#FFF",
                "fontWeight": "normal",
                "fontFamily": "D-DIN",
                "align": "right",
                "lineHeight": 18
            },
            "shape": {
                "size": 10,
                "spacing": 10,
                "shapeLineWidth": 0
            },
            "spaceRow": 10
        },
        "dimension": {
            "visible": true
        }
    },
    "hover": {
        "enable": true
    },
    "select": {
        "enable": true
    },
    "bar": {
        "state": {
            "hover": {
                "cursor": "pointer",
                "fillOpacity": 0.8,
                "stroke": "#58595B",
                "lineWidth": 1,
                "zIndex": 500
            },
            "selected": {
                "cursor": "pointer",
                "fillOpacity": 1,
                "stroke": "#58595B",
                "lineWidth": 1
            },
            "selected_reverse": {
                "fillOpacity": 0.3,
                "lineWidth": 0.3
            }
        },
        "style": {
            "cornerRadius": 0,
            "fill": {
                "gradient": "linear",
                "stops": [
                    {
                        "offset": 0
                    },
                    {
                        "offset": 1
                    }
                ]
            },
            "lineWidth": 2,
            "stroke": {
                "gradient": "linear",
                "stops": [
                    {
                        "offset": 0
                    },
                    {
                        "offset": 1
                    }
                ]
            }
        }
    },
    "region": [
        {
            "clip": true
        }
    ],
    "background": "rgba(0, 0, 0, 1)",
    "markLine": [],
    "animation": true,
    "crosshair": {
        "yField": {
            "visible": true,
            "line": {
                "type": "rect",
                "style": {
                    "fillOpacity": 1,
                    "fill": "rgba(80,156,255,0.1)"
                }
            }
        },
        "gridZIndex": 100,
        "xField": {
            "line": {
                "style": {
                    "fillOpacity": 1,
                    "fill": "rgba(80,156,255,0.1)"
                }
            },
            "visible": false
        }
    },
    "morph": {
        "enable": false
    },
    "fillOpacity": {
        "fillOpacity": 1
    },
    "axesPadding": true,
    "plotLayout": {
        "clip": false
    },
    "scales": [
        {
            "id": "gradientFillStop0_data",
            "type": "ordinal",
            "range": [
                "rgba(0,110,255,0.2)",
                "rgba(0,229,229,0.2)",
                "rgba(46,85,234,0.2)",
                "rgba(184,231,254,0.2)",
                "rgba(0,214,137,0.2)",
                "rgba(183,249,245,0.2)",
                "rgba(251,204,113,0.2)",
                "rgba(244,110,80,0.2)"
            ],
            "domain": [
                "2023",
                "2022"
            ]
        },
        {
            "id": "gradientFillStop1_data",
            "type": "ordinal",
            "range": [
                "rgb(0,110,255)",
                "rgb(0,229,229)",
                "rgb(46,85,234)",
                "rgb(184,231,254)",
                "rgb(0,214,137)",
                "rgb(183,249,245)",
                "rgb(251,204,113)",
                "rgb(244,110,80)"
            ],
            "domain": [
                "2023",
                "2022"
            ]
        },
        {
            "id": "gradientStrokeStop0_data",
            "type": "ordinal",
            "range": [
                "rgba(51, 139, 255, 0.2)",
                "rgba(25, 255, 255, 0.2)",
                "rgba(92, 123, 239, 0.2)",
                "rgba(234, 248, 255, 0.2)",
                "rgba(10, 255, 167, 0.2)",
                "rgba(230, 253, 252, 0.2)",
                "rgba(252, 222, 163, 0.2)",
                "rgba(247, 150, 128, 0.2)"
            ],
            "domain": [
                "2023",
                "2022"
            ]
        },
        {
            "id": "gradientStrokeStop1_data",
            "type": "ordinal",
            "range": [
                "rgba(51, 139, 255, 1)",
                "rgba(25, 255, 255, 1)",
                "rgba(92, 123, 239, 1)",
                "rgba(234, 248, 255, 1)",
                "rgba(10, 255, 167, 1)",
                "rgba(230, 253, 252, 1)",
                "rgba(252, 222, 163, 1)",
                "rgba(247, 150, 128, 1)"
            ],
            "domain": [
                "2023",
                "2022"
            ]
        },
        {
            "id": "gradientX1_data",
            "type": "ordinal",
            "range": [
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1
            ],
            "domain": [
                "2023",
                "2022"
            ]
        },
        {
            "id": "gradientY1_data",
            "type": "ordinal",
            "range": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
            ],
            "domain": [
                "2023",
                "2022"
            ]
        }
    ],
    "barWidth": "60%",
    "barBackground": {
        "fieldLevel": 1,
        "visible": false,
        "interactive": false,
        "style": {
            "cornerRadius": 0,
            "fill": "rgba(255,255,255,1)",
            "fillOpacity": 0.1
        }
    },
    "animationAppear": {
        "bar": {
            "type": "moveIn",
            "options": {
                "direction": "y",
                "orient": "negative",
                "excludeChannels": [
                    "x"
                ],
                point: (datum, element, opt, ctx) => {
                  const channel = 'y'
                  const size = 'width'
                  const channelAttr = element.getGraphicAttribute(channel)
                  return { [channel]: channelAttr + opt[size] }
                },
            },
            "easing": "circInOut",
            "duration": 1000
        }
    },
    "animationNormal": false,
    "animationEnter": false,
    "animationUpdate": false,
    "animationExit": false,
    "hash": "27d7bdb2fff3dc32abc82b52fefe2e4a",
    "line": {
        "style": {
            "stroke": {
                "gradient": "linear",
                "stops": [
                    {
                        "offset": 0
                    },
                    {
                        "offset": 1
                    }
                ]
            }
        }
    },
    "width": 240,
    "height": 154
}

const vchart = new VChart(spec, { dom: CONTAINER_ID });
vchart.renderSync()

setTimeout(() => {
  console.log('update')
  vchart.updateSpec({
    ...spec,
    animationAppear: {
      bar: {
        type: 'growHeightIn'
      }
    }
  }, true, { reuse: false }, { reAnimate: true })
  vchart.reRunNormalAnimation()
}, 2000)

// Just for the convenience of console debugging, DO NOT COPY!
window['vchart'] = vchart;

Current Behavior

Image

Expected Behavior

growHeightIn动画生效

Environment

- OS:
- Browser:
- Framework:

Any additional comments?

No response

skie1997 avatar Jul 14 '25 07:07 skie1997

本地暂时没有复现

xile611 avatar Jul 14 '25 09:07 xile611