Skip to content

[BUG] Pie chart is cut in half when responsive and inside a collapsed element 2.6.0 #4397

@Peter-Van-Drunen

Description

@Peter-Van-Drunen

Expected Behavior

Currently while using a pie chart with responsive: true in a bootstrap modal and using Reactjs.net (or any collapsible element in html5 by my reckoning) I experienced a bug where the pie chart in a grid would become broken when re-rendered in a hidden modal.

Before I go any further yes I know reactjs has a charts wrapper called react-chartjs but using react components in Reactjs.net is hard and as far as I can tell charts.js works fine beyond this bug I found.

Here is the modal before I search my list of modals:
working

The canvas is in a <div class="col-sm-4"> wrapper element. The same goes for the bootstrap panels next to it.

I would expect this behavior to remain constant but when I used a reactjs search feature to filter out my list of modals and then reopen a modal the below behavior is encountered.

Current Behavior

After filtering out the modals based on their name, the pie chart appears like so:
broken
broken2

The pie chart will flicker between the half-pie and the small pie depending on which one has had a mouseover event most recently.

Possible Solution

For now, the solution I found was to manually resize the canvas each time the modal is updated in Reactjs using componentWillUpdate(). Simply getting the canvas node and setting canvas.height=height and canvas.width=width works fine. I did this because the issue seems to be related to the responsive resizing returning a value of -30 for the dimensions of the canvas due to the canvas being in a collapsed modal element and then getting confused when it tries to resize from there. So simply changing this value manually before calling new Chart( ... ) works to fix this bug. However this does result in blurry canvas in some situations.

Steps to Reproduce (for bugs)

Bug would be hard to reproduce in a fiddle or something because it involves Reactjs. If someone can point me in the right direction for reproducing this bug in straight-forward way I would be glad to do that.

Environment

  • Chart.js version: 2.6.0
  • Browser name and version: Chrome Version 58.0.3029.110 (64-bit)
  • Reactjs v15.3.2
  • Bootstrap v3.3.7

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions