# Chart Demo

* order: 0

pie demo

---

```js
/** @jsx createElement */
'use strict';
import { createElement, Component, PropTypes, render } from 'rax';
import { View, Env, Dimensions, Page, Button } from 'weex-nuke';
import Chart, {
  Bar,
  Axis,
  Line,
  Point,
  Pie,
  Coord
} from 'nuke-biz-custom-chart';

const CHART_WIDTH = 304;
const CHART_HEIGHT = 304;

class Demo extends Component {
  constructor() {
    super();
    this.changeData = this.changeData.bind(this);
    this.state = {
      pieData: [
        { circle: 'wallet', val: 0, part: 'deposited' },
        { circle: 'wallet', val: 0, part: 'refunds' },
        { circle: 'wallet', val: 0, part: 'rebates' },
        { circle: 'wallet', val: 1, part: 'default' }
      ]
    };
  }
  calPieData(deposit, rebate, refund) {
    const pieData = [
      { circle: 'wallet', val: 0, part: 'deposited' },
      { circle: 'wallet', val: 0, part: 'refunds' },
      { circle: 'wallet', val: 0, part: 'rebates' },
      { circle: 'wallet', val: 1, part: 'default' }
    ];
    // Calculate the percentage
    if (deposit || rebate || refund) {
      const all = deposit + rebate + refund;
      pieData[0].val = deposit / all;
      pieData[1].val = refund / all;
      pieData[2].val = rebate / all;
      pieData[3].val = 0;
    }
    return pieData;
  }
  changeData() {
    const pieData = this.calPieData(0 * 1, 1.23 * 1, 10.51 * 1);
    this.setState({
      pieData: pieData
    });
  }
  render() {
    return (
      <Page title="Pie">
        <View
          style={{
            width: CHART_WIDTH,
            height: CHART_HEIGHT,
            backgroundColor: '#ffffff'
          }}
        >
          <Chart
            id="c1"
            style={{ width: CHART_WIDTH, height: CHART_HEIGHT }}
            data={this.state.pieData}
            margin={12}
          >
            <Coord type="polar" inner={0.62} transposed />
            <Pie
              position="circle*val"
              color={'part'}
              inner={0.3}
              theme={['#1A9CB7', '#F44336', '#FECC05', '#DADADA']}
            />
          </Chart>
          <Button onPress={this.changeData}> change data</Button>
        </View>
      </Page>
    );
  }
}

render(<Demo />);
```
