Rouge
Rouge

Reputation: 4239

Flash Builder: PieChart issue

I am trying to show data in my pieChart. Everything works great if I have multiple fields in my dataprovide (ex: EmployeeA, EmployeeB..etc). The pie will be divided into pieces and have texts shown on each pieces.

However, if my dataprovider only has one field (ex: EmployeeA). The pieChart will show the whole pie with no texts on the pieChart. I was wondering if there are any ways to show the data text inside the pieChart. Thanks a lot.

Code:

<mx:PieChart id="piechart1" x="254" y="321" width="367" height="367"
         dataProvider="{getHours.lastResult}">
        <mx:series>
<mx:PieSeries id="pieSeries" labelFunction="pieFunction" 
              explodeRadius="0.05" field="EmployeeOverTime" labelPosition="inside"/>
          </mx:series>
</mx:PieChart>

//EmployeeOverTime data will show on each pie pieces if I have multiple
//employees in the department but won't show if the department has only one employee.

Upvotes: 0

Views: 342

Answers (1)

Clintm
Clintm

Reputation: 4877

It looks like it was a bug in the PieSeries code. I had to monkey patch the charting code in order to get this to work. Here's an fxp file that works.

http://dl.dropbox.com/u/20054635/forever/piechart.fxp

The bug is that on line 3323 there's this code:

var rscale:Number = 1;
        // find out how much we would have to scale to get to the next neighbor up
       /* var RXScale:Number = Math.abs(ld.labelX - nextNeighbor.labelX)/(ld.labelWidth/2 + nextNeighbor.labelWidth/2);

Then on line 3338 it removes the label based on rscale (which is now zero because there was no nextNeighbor when there is only 1 item in the piechart)

 if (rscale * Number(labelFormat.size) < insideLabelSizeLimit)
            {
                ld.prev.next = ld.next;
                ld.next.prev = ld.prev;
                removedLabels.push(ld);

Upvotes: 1

Related Questions