diff --git a/ureport2-core/dsl/ReportParser.g4 b/ureport2-core/dsl/ReportParser.g4 index a312c8f..86d1be5 100644 --- a/ureport2-core/dsl/ReportParser.g4 +++ b/ureport2-core/dsl/ReportParser.g4 @@ -1,12 +1,17 @@ grammar ReportParser; import ReportLexer; -expression : expr - | ternaryExpr +expression : exprComposite | ifExpr | caseExpr ; +exprComposite : expr #singleExprComposite + | ternaryExpr #ternaryExprComposite + | LeftParen exprComposite RightParen #parenExprComposite + | exprComposite Operator exprComposite #complexExprComposite + ; + ternaryExpr : ifCondition (join ifCondition)* '?' expr ':' expr ; caseExpr : 'case' '{' casePart (',' casePart)* '}' ; diff --git a/ureport2-core/src/main/java/com/bstek/ureport/build/compute/ChartValueCompute.java b/ureport2-core/src/main/java/com/bstek/ureport/build/compute/ChartValueCompute.java index 99d7ec5..c7ff4a7 100644 --- a/ureport2-core/src/main/java/com/bstek/ureport/build/compute/ChartValueCompute.java +++ b/ureport2-core/src/main/java/com/bstek/ureport/build/compute/ChartValueCompute.java @@ -21,6 +21,7 @@ import java.util.List; import com.bstek.ureport.build.BindData; import com.bstek.ureport.build.Context; import com.bstek.ureport.chart.Chart; +import com.bstek.ureport.chart.ChartData; import com.bstek.ureport.definition.value.ChartValue; import com.bstek.ureport.definition.value.ValueType; import com.bstek.ureport.model.Cell; @@ -35,7 +36,7 @@ public class ChartValueCompute implements ValueCompute { public List compute(Cell cell, Context context) { ChartValue chartValue=(ChartValue)cell.getValue(); Chart chart=chartValue.getChart(); - String data=chart.doCompute(cell, context); + ChartData data=chart.doCompute(cell, context); List list=new ArrayList(); list.add(new BindData(data)); return list; diff --git a/ureport2-core/src/main/java/com/bstek/ureport/chart/Chart.java b/ureport2-core/src/main/java/com/bstek/ureport/chart/Chart.java index bc0ba87..7844071 100644 --- a/ureport2-core/src/main/java/com/bstek/ureport/chart/Chart.java +++ b/ureport2-core/src/main/java/com/bstek/ureport/chart/Chart.java @@ -33,10 +33,10 @@ public class Chart { private Dataset dataset; private XAxes xaxes; private YAxes yaxes; - public String doCompute(Cell cell, Context context){ + public ChartData doCompute(Cell cell, Context context){ StringBuilder sb=new StringBuilder(); sb.append("{"); - sb.append("type:\""+dataset.type()+"\","); + sb.append("type:\""+dataset.getType()+"\","); sb.append("data:"+dataset.buildDataJson(context, cell)+","); sb.append("options:{"); if(options!=null && options.size()>0){ @@ -61,7 +61,8 @@ public class Chart { } sb.append("}"); sb.append("}"); - return sb.toString(); + ChartData chartData=new ChartData(sb.toString()); + return chartData; } public List