|
|
@@ -231,25 +231,76 @@ class BarStyle extends React.Component {
|
|
|
/>
|
|
|
</FormItem>
|
|
|
<Divider>标注</Divider>
|
|
|
- <FormItem label='显示' {...formItemLayout}>
|
|
|
- <Checkbox
|
|
|
- checked={!!barStyle.labelVisible}
|
|
|
- onChange={e => {
|
|
|
- let checked = e.target.checked;
|
|
|
- let seriesArr = [];
|
|
|
- for(let i = 0; i < chartOption.series.length; i++) {
|
|
|
- seriesArr.push({
|
|
|
- label: { normal: { show: checked } },
|
|
|
- labelLine: { normal: { show: checked } }
|
|
|
- });
|
|
|
- }
|
|
|
- dispatch({ type: 'chartDesigner/setFields', fields: [
|
|
|
- { name: 'styleConfig', value: deepAssign(styleConfig, { bar: { labelVisible: checked } }) },
|
|
|
- { name: 'chartOption', value: deepAssign(chartOption, { series: seriesArr }) },
|
|
|
- ] });
|
|
|
- }}
|
|
|
- />
|
|
|
- </FormItem>
|
|
|
+ <Row>
|
|
|
+ <Col span={12}>
|
|
|
+ <FormItem label='显示' labelCol={{ span: 16 }} wrapperCol={{ span: 8 }}>
|
|
|
+ <Checkbox
|
|
|
+ checked={!!barStyle.labelVisible}
|
|
|
+ onChange={e => {
|
|
|
+ let checked = e.target.checked;
|
|
|
+ let seriesArr = [];
|
|
|
+ for(let i = 0; i < chartOption.series.length; i++) {
|
|
|
+ seriesArr.push({
|
|
|
+ label: { normal: { show: checked } },
|
|
|
+ labelLine: { normal: { show: checked } }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ dispatch({ type: 'chartDesigner/setFields', fields: [
|
|
|
+ { name: 'styleConfig', value: deepAssign(styleConfig, { bar: { labelVisible: checked } }) },
|
|
|
+ { name: 'chartOption', value: deepAssign(chartOption, { series: seriesArr }) },
|
|
|
+ ] });
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ <Col span={12}>
|
|
|
+ {!!barStyle.labelVisible && <FormItem label='显示0标注' labelCol={{ span: 16 }} wrapperCol={{ span: 8 }}>
|
|
|
+ <Checkbox
|
|
|
+ checked={!!barStyle.labelZeroVisible}
|
|
|
+ onChange={e => {
|
|
|
+ let checked = e.target.checked;
|
|
|
+ let seriesArr = [];
|
|
|
+ let labelFormatter = barStyle.labelFormatter;
|
|
|
+ for(let i = 0; i < chartOption.series.length; i++) {
|
|
|
+ seriesArr.push({
|
|
|
+ label: { normal: {
|
|
|
+ formatterKey: checked,
|
|
|
+ formatter: !checked ? (params) => {
|
|
|
+ const { name : a, seriesName: b, value: c} = params;
|
|
|
+ // {a: 系列名 name} {b: 数据名 seriesName} {c: 数据值 value}
|
|
|
+ const obj = { a, b, c };
|
|
|
+ let str = labelFormatter || '{c}';
|
|
|
+ if(c === 0) {
|
|
|
+ return '';
|
|
|
+ }else {
|
|
|
+ let ss = `${str.replace(/{([^{ ^}])+}/g, function(x, y) {
|
|
|
+ let s;
|
|
|
+ if(!Object.prototype.hasOwnProperty.call(obj, y)) {
|
|
|
+ return x;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ s = obj[y];
|
|
|
+ }catch(e) {
|
|
|
+ s = x;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return s;
|
|
|
+ })}`
|
|
|
+ return ss;
|
|
|
+ }
|
|
|
+ } : ((labelFormatter === '' || labelFormatter === null || labelFormatter === undefined) ? '{c}' : labelFormatter)
|
|
|
+ } },
|
|
|
+ });
|
|
|
+ }
|
|
|
+ dispatch({ type: 'chartDesigner/setFields', fields: [
|
|
|
+ { name: 'styleConfig', value: deepAssign(styleConfig, { bar: { labelZeroVisible: checked } }) },
|
|
|
+ { name: 'chartOption', value: deepAssign(chartOption, { series: seriesArr }) },
|
|
|
+ ] });
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </FormItem>}
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
{!!barStyle.labelVisible && <FormItem label={<Tooltip title="{a}:系列名 {b}:数据名 {c}:数据值">格式化</Tooltip>} {...formItemLayout}>
|
|
|
<Input
|
|
|
defaultValue={barStyle.labelFormatter ? barStyle.labelFormatter : null}
|
|
|
@@ -257,11 +308,36 @@ class BarStyle extends React.Component {
|
|
|
onBlur={e => {
|
|
|
let value = e.target.value;
|
|
|
let seriesArr = [];
|
|
|
+ let labelZeroVisible = barStyle.labelZeroVisible;
|
|
|
for(let i = 0; i < chartOption.series.length; i++) {
|
|
|
seriesArr.push({
|
|
|
- label: {
|
|
|
- normal: { formatter: (value === '' || value === null || value === undefined) ? '{c}' : value }
|
|
|
- }
|
|
|
+ label: { normal: {
|
|
|
+ formatterKey: value,
|
|
|
+ formatter: !labelZeroVisible ? (params) => {
|
|
|
+ const { name : a, seriesName: b, value: c} = params;
|
|
|
+ // {a: 系列名 name} {b: 数据名 seriesName} {c: 数据值 value}
|
|
|
+ const obj = { a, b, c };
|
|
|
+ let str = value || '{c}';
|
|
|
+ if(c === 0) {
|
|
|
+ return '';
|
|
|
+ }else {
|
|
|
+ let ss = `${str.replace(/{([^{ ^}])+}/g, function(x, y) {
|
|
|
+ let s;
|
|
|
+ if(!Object.prototype.hasOwnProperty.call(obj, y)) {
|
|
|
+ return x;
|
|
|
+ }else {
|
|
|
+ try {
|
|
|
+ s = obj[y];
|
|
|
+ }catch(e) {
|
|
|
+ s = x;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return s;
|
|
|
+ })}`
|
|
|
+ return ss;
|
|
|
+ }
|
|
|
+ } : ((value === '' || value === null || value === undefined) ? '{c}' : value)
|
|
|
+ } },
|
|
|
});
|
|
|
}
|
|
|
dispatch({ type: 'chartDesigner/setFields', fields: [
|