UNPKG

nuke-biz-custom-chart

Version:

custom-chart

127 lines (107 loc) 2.79 kB
# Chart Demo - order: 0 Pie percent demo --- ````js /** @jsx createElement */ 'use strict'; import { createElement, Component, PropTypes,render } from 'rax'; import Chart, { Pie, Coord } from 'nuke-biz-custom-chart'; import { View, Text, Env } from 'weex-nuke'; const { isWeex } = Env; const $PIE_WIDTH = 375; const $PIE_HEIGHT = 320; const styles = { pieChart: { width: $PIE_WIDTH, height: $PIE_HEIGHT, backgroundColor: 'rgba(255, 255, 255, 1)', position: 'relative', flexDirection: 'column', justifyContent: 'center', alignItems: 'center', }, chartCanvas: { width: isWeex ? 262 : $PIE_WIDTH, height: isWeex ? 262 : $PIE_HEIGHT, }, pieChartTitle: { flexDirection: 'row', justifyContent: 'center', alignItems: 'center', width: $PIE_WIDTH, position: 'absolute', top: isWeex ? 25 : 32, }, pieChartTitleText: { fontFamily: 'PingFangSC-Light', fontSize: 26, color: '#333333', }, pieChartNumberIsWeex: { position: 'absolute', top: 78, left: 106, width: isWeex ? 164 : $PIE_WIDTH, borderRadius: 82, height: isWeex ? 164 : $PIE_HEIGHT, backgroundColor: '#ffffff', flexDirection: 'row', justifyContent: 'center', alignItems: 'center', }, pieChartNumber: { position: 'absolute', top: 140, width: $PIE_WIDTH, // top: 160, flexDirection: 'row', justifyContent: 'center', alignItems: 'center', }, pieChartPre: { fontFamily: 'PingFangSC-Medium', fontSize: 40, color: '#333333', lineHeight: 40, }, pieChartIcon: { fontSize: 22, marginLeft: 5, }, }; class Mod extends Component { render() { const { color, data, label } = this.props; const percentage = data[0].value * 100; return ( <View style={styles.pieChart}> <Chart style={styles.chartCanvas} data={data}> <Coord type="polar" inner={0.9} transposed /> <Pie position="title*value" color={color} inner={0.2} /> </Chart> <View style={styles.pieChartTitle}> <Text style={styles.pieChartTitleText}>{label}</Text> </View> <View style={isWeex ? styles.pieChartNumberIsWeex : styles.pieChartNumber}> <Text style={styles.pieChartPre}>{percentage.toFixed(2)}</Text> <Text style={styles.pieChartIcon}>%</Text> </View> </View> ); } } Mod.propTypes = { style: PropTypes.object, data: PropTypes.array, color: PropTypes.oneOfType([PropTypes.string, PropTypes.array]), }; Mod.defaultProps = { // label: 'IOPS', style: {}, // color: 'color', color: ['color', ['#00C1DE', '#C1C3C4']], data: [{ title: '使用', value: 0.21, color: '1' }, { title: '使用', value: 0.79, color: '2' }], }; render(<Mod />); ````