diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/AbstractItem.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/AbstractItem.cs index ef79ecd92e3..5d50d9cfb5e 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/AbstractItem.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/AbstractItem.cs @@ -64,12 +64,8 @@ protected void DrawControl (Graphics graphics,Rectangle borderRectangle) Description("Draw a Border around the Item")] public bool DrawBorder {get;set;} - protected new Size DefaultSize {get;set;} - - - public bool VisibleInReport {get;set;} #endregion diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseReportItem.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseReportItem.cs index b92537a0b4b..9cf7876417b 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseReportItem.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseReportItem.cs @@ -110,7 +110,7 @@ protected virtual Rectangle DisplayRectangle #region Properties -// public bool Visible {get;set;} + public bool Visible {get;set;} public bool VisibleInReport {get;set;} diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs index 3e6c1c19567..634cba5e190 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs @@ -148,11 +148,11 @@ public Size MeasureOverride (Size availableSize) // resultSize.Width = double.IsPositiveInfinity(availableSize.Width) ? // resultSize.Width : availableSize.Width; -// +// // resultSize.Height = double.IsPositiveInfinity(availableSize.Height) ? // resultSize.Height : availableSize.Height; - resultSize.Width = double.IsPositiveInfinity(availableSize.Width) ? + resultSize.Width = double.IsPositiveInfinity(availableSize.Width) ? resultSize.Width : availableSize.Width; var b = double.IsPositiveInfinity(availableSize.Height); resultSize.Height = double.IsPositiveInfinity(availableSize.Height) ? diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/CollectionStrategy.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/CollectionStrategy.cs index 3a824232b0f..30f1cbf10cc 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/CollectionStrategy.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/CollectionStrategy.cs @@ -200,6 +200,8 @@ public override void Bind() #endregion + + #region Fill public override void Fill(int position,ReportItemCollection collection) { @@ -210,6 +212,11 @@ public override void Fill(int position,ReportItemCollection collection) } } + public override void Fill(IDataItem item) + { + FillInternal(Current,item); + } + private void FillInternal(object fillFrom,IDataItem item) { @@ -248,67 +255,6 @@ private void FillInternal(object fillFrom,IDataItem item) } } - /* - private void FillInternal(object fillFrom,IDataItem item) - { - if (item is BaseDataItem) - { - var retVal = FollowPropertyPath(fillFrom,item.ColumnName); - if (retVal != null) { - item.DBValue = retVal.ToString(); - } else { - item.DBValue = String.Empty; - } - } - - else - { - //image processing from IList - BaseImageItem baseImageItem = item as BaseImageItem; - - if (baseImageItem != null) { - PropertyDescriptor p = this.listProperties.Find(baseImageItem.ColumnName, true); - if (p != null) { - baseImageItem.Image = p.GetValue(this.Current) as System.Drawing.Image; - } - return; - } - - } - } - */ - - public override void Fill(IDataItem item) - { - FillInternal(Current,item); - } - - #region PropertyPath from StackOverflow - - //http://stackoverflow.com/questions/366332/best-way-to-get-sub-properties-using-getproperty - - /* - private static object FollowPropertyPath(object value, string path) - { - Type currentType = value.GetType(); - foreach (string propertyName in path.Split('.')) - { - - PropertyInfo property = currentType.GetProperty(propertyName); - - if (property != null) { - - value = property.GetValue(value, null); - currentType = property.PropertyType; - } else { - - return WrongColumnName(path); - } - } - return value; - } - */ - #endregion static string WrongColumnName(string propertyName) diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs index 046ac28c57e..7a0e1703475 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs @@ -64,8 +64,6 @@ protected void InitNewPage () if (this.EvaluatorFacade == null) { - Console.WriteLine (""); - Console.WriteLine ("InitNewPage create evaluator"); EvaluatorFacade = EvaluationHelper.CreateEvaluator(SinglePage,SinglePage.IDataNavigator); } EvaluatorFacade.SinglePage = this.SinglePage; @@ -182,7 +180,6 @@ protected ExporterCollection old_ConvertSection (BaseSection section,int dataRow if (section.Items.Count > 0) { Size sectionSize = section.Size; - Console.WriteLine ("BasePager-createEval for {0}",section.Name); IExpressionEvaluatorFacade evaluator = EvaluationHelper.CreateEvaluator(this.SinglePage,this.SinglePage.IDataNavigator); Rectangle desiredRectangle = LayoutHelper.CalculateSectionLayout(this.Graphics,section); @@ -309,40 +306,15 @@ protected void FinishRendering (IDataNavigator dataNavigator) if (this.Pages.Count == 0) { return; } - Console.WriteLine ("FinishRendereing create IExpressionEvaluatorFacade"); - - //IExpressionEvaluatorFacade evaluatorFacade = new ExpressionEvaluatorFacade(this.SinglePage); - //Evaluator.SinglePage = this.SinglePage; foreach (ExporterPage page in this.pages) { page.TotalPages = this.Pages.Count; -// dataNavigator.Reset(); -// dataNavigator.MoveNext(); page.IDataNavigator = dataNavigator; EvaluatorFacade.SinglePage = page; EvaluateRecursive(EvaluatorFacade,page.Items); } } - /* - protected void FinishRendering (IDataNavigator dataNavigator) - { - if (this.Pages.Count == 0) { - return; - } - Console.WriteLine ("FinishRendereing create IExpressionEvaluatorFacade"); - - IExpressionEvaluatorFacade evaluatorFacade = new ExpressionEvaluatorFacade(this.SinglePage); - - foreach (ExporterPage p in this.pages) - { - p.TotalPages = this.Pages.Count; - p.IDataNavigator = dataNavigator; - evaluatorFacade.SinglePage = p; - EvaluateRecursive(evaluatorFacade,p.Items); - } - } - */ private static void EvaluateRecursive (IExpressionEvaluatorFacade evaluatorFassade,ExporterCollection items) { diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/GapList.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/GapList.cs index c3c2c4d43ca..64d63d7a12e 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/GapList.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/GapList.cs @@ -27,9 +27,6 @@ public void CalculateGapList (BaseSection section) for (int i = 0; i < section.Items.Count; i++) { GapBetweenItems[i] = CalculateGap(oldItem,section.Items[i]); } - for (int i = 0; i < section.Items.Count; i++) { - Console.WriteLine(GapBetweenItems[i]); - } GapBetweenItems[section.Items.Count] = CalculateLastGap(section); } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/EvaluationHelper.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/EvaluationHelper.cs index f78842459c1..92da9d795e2 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/EvaluationHelper.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/EvaluationHelper.cs @@ -33,7 +33,6 @@ public static IExpressionEvaluatorFacade CreateEvaluator (ISinglePage singlePag throw new ArgumentNullException("singlePage"); } - Console.WriteLine ("EvaluationHelper.CreateEvaluator"); singlePage.IDataNavigator = dataNavigator; IExpressionEvaluatorFacade evaluatorFacade = new ExpressionEvaluatorFacade(singlePage); return evaluatorFacade; diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ExpressionEvaluatorFacade.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ExpressionEvaluatorFacade.cs index 67eacbe3d58..88bb9a1f773 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ExpressionEvaluatorFacade.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ExpressionEvaluatorFacade.cs @@ -23,7 +23,6 @@ public class ExpressionEvaluatorFacade:IExpressionEvaluatorFacade public ExpressionEvaluatorFacade(IPageInfo pageInfo) { - Console.WriteLine("Eval-fassade Constr"); compiler = new ReportingLanguageCompiler(); this.context = new ExpressionContext(null); context.ResolveUnknownVariable += VariableStore; @@ -36,18 +35,13 @@ public ExpressionEvaluatorFacade(IPageInfo pageInfo) public string Evaluate (string expression) { try { - string s = EvaluationHelper.ExtractExpressionPart(expression); + string r = EvaluationHelper.ExtractResultPart(expression); if (s.Length > 0) { this.context.ContextObject = this.SinglePage ; return EvaluateExpression (s); } -// if (EvaluationHelper.CanEvaluate(expression)) { -// this.context.ContextObject = this.SinglePage; -// return EvaluateExpression(expression); -// } - } catch (Exception e) { expression = e.Message; WriteLogMessage(e); @@ -72,22 +66,6 @@ public string Evaluate (string expression, object row) return expression; } - /* - public string Evaluate (string expression, object row) - { - try { - if (EvaluationHelper.CanEvaluate(expression)) { - this.context.ContextObject = row; - return EvaluateExpression (expression); - } - } catch (Exception e) { - expression = e.Message; - WriteLogMessage(e); - } - - return expression; - } - */ public void Evaluate (IReportExpression expressionItem) { @@ -100,15 +78,13 @@ public void Evaluate (IReportExpression expressionItem) } else { expr = expressionItem.Text; } - expressionItem.Text = Evaluate(expr); } - string EvaluateExpression(string expression) { - IExpression compiled = compiler.CompileExpression(expression); + IExpression compiled = compiler.CompileExpression(expression); if (compiled != null) { return (compiled.Evaluate(context)).ToString(); } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ReportingLanguage/ReportingLanguage.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ReportingLanguage/ReportingLanguage.cs index e410c885339..e384f680c58 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ReportingLanguage/ReportingLanguage.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ReportingLanguage/ReportingLanguage.cs @@ -133,7 +133,9 @@ public ReportingLanguage():base(false) LUnOp.Rule = Symbol("-") | "!"; - FunctionExpression.Rule = QualifiedName + LCb + ExprList.Q() + RCb; + FunctionExpression.Rule = QualifiedName + LCb + ExprList.Q() + RCb + | QualifiedName + LCb + BinExpr + RCb; + QualifiedName.Rule = identifier | QualifiedName + dot + identifier diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/SimpleExpressionEvaluator/Compilation/Functions/ReportingService/FieldReference.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/SimpleExpressionEvaluator/Compilation/Functions/ReportingService/FieldReference.cs index d9073493862..6f71d61d7d2 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/SimpleExpressionEvaluator/Compilation/Functions/ReportingService/FieldReference.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/SimpleExpressionEvaluator/Compilation/Functions/ReportingService/FieldReference.cs @@ -54,15 +54,23 @@ string ExtractValueFromSinglePage(ref Variable variable, ISinglePage singlePage, { if (singlePage.IDataNavigator.CurrentRow > -1) { - var dataRow = singlePage.IDataNavigator.GetDataRow; - var item = dataRow.Find(variable.VariableName); - if (item != null) { - retval = item.Value.ToString(); - } else { - retval = GlobalValues.UnkownFunctionMessage(variable.VariableName); - WriteLogmessage(variable); + try { + var dataRow = singlePage.IDataNavigator.GetDataRow; + var item = dataRow.Find(variable.VariableName); + + if (item != null) { + retval = item.Value.ToString(); + } else { + retval = GlobalValues.UnkownFunctionMessage(variable.VariableName); + WriteLogmessage(variable); + } + + return retval; + } catch (Exception e) { + Console.WriteLine ("Error in FieldReference.ExtractValueFromSinglePage"); + Console.WriteLine("IDataNavigator currentrow = {0} count = {1}",singlePage.IDataNavigator.CurrentRow,singlePage.IDataNavigator.Count); + throw e; } - return retval; } return variable.VariableName; } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/RendererFactory.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/RendererFactory.cs index 567bf6a9583..0178c7fffe1 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/RendererFactory.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/RendererFactory.cs @@ -29,7 +29,7 @@ public static class PrintRendererFactory if (t.Equals(typeof(BaseRowItem))) { // return new GroupedRowConverter (dataNavigator,singlePage,layouter); - Console.WriteLine("render Row"); +// Console.WriteLine("render Row"); } return null; }