Browse Source

Adjust Evaluation of Rows

pull/15/head^2
peterforstmeier 15 years ago
parent
commit
1f90834ddf
  1. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
  2. 45
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardPrinter.cs
  3. 26
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs
  4. 10
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs
  5. 5
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs
  6. 65
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/EvaluationHelper.cs
  7. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/AbstractRenderer.cs

1
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj

@ -138,6 +138,7 @@ @@ -138,6 +138,7 @@
<Compile Include="Project\Exceptions\WrongColumnException.cs" />
<Compile Include="Project\Exceptions\WrongSectionException.cs" />
<Compile Include="Project\Exporter\Converters\GroupedTableConverter.cs" />
<Compile Include="Project\Expressions\EvaluationHelper.cs" />
<Compile Include="Project\Expressions\SimpleExpressionEvaluator\Compilation\Functions\ReportingService\FieldReference.cs" />
<Compile Include="Project\Exporter\BasePager.cs" />
<Compile Include="Project\Exporter\Converters\BaseConverter.cs" />

45
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardPrinter.cs

@ -179,6 +179,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing @@ -179,6 +179,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
#endregion
#region Container
@ -228,48 +229,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing @@ -228,48 +229,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
}
#endregion
#region Evaluate
public static IExpressionEvaluatorFacade SetupEvaluator ()
{
return new ExpressionEvaluatorFacade(null);
}
public static IExpressionEvaluatorFacade CreateEvaluator (ISinglePage singlePage,IDataNavigator dataNavigator)
{
if (singlePage == null) {
throw new ArgumentNullException("singlePage");
}
if (dataNavigator == null) {
throw new ArgumentNullException("dataNavigator");
}
singlePage.IDataNavigator = dataNavigator;
IExpressionEvaluatorFacade evaluatorFacade = new ExpressionEvaluatorFacade(singlePage);
return evaluatorFacade;
}
public static void EvaluateRow(IExpressionEvaluatorFacade evaluator,ExporterCollection row)
{
try {
foreach (BaseExportColumn element in row) {
ExportText textItem = element as ExportText;
if (textItem != null) {
// if (textItem.Text.StartsWith("=",StringComparison.InvariantCulture)) {
//// Console.WriteLine(textItem.Text);
// }
textItem.Text = evaluator.Evaluate(textItem.Text);
}
}
} catch (Exception) {
throw ;
}
}
#endregion
}
}

26
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs

@ -48,7 +48,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -48,7 +48,7 @@ namespace ICSharpCode.Reports.Core.Exporter
this.DataNavigator = dataNavigator;
SectionBounds = this.SinglePage.SectionBounds;
this.Layouter = layouter;
this.Evaluator = StandardPrinter.CreateEvaluator(this.SinglePage,this.DataNavigator);
this.Evaluator = EvaluationHelper.CreateEvaluator(this.SinglePage,this.DataNavigator);
}
@ -247,6 +247,26 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -247,6 +247,26 @@ namespace ICSharpCode.Reports.Core.Exporter
}
protected Point ConvertStandardRow(ExporterCollection mylist, ISimpleContainer simpleContainer)
{
var rowSize = simpleContainer.Size;
Console.WriteLine("ConvertStandardRow");
Point curPos = new Point (DefaultLeftPosition,CurrentPosition.Y + simpleContainer.Size.Height);
ExporterCollection ml = BaseConverter.ConvertItems (simpleContainer, curPos);
//curPos = new Point (DefaultLeftPosition,curPos.Y + simpleContainer.Size.Height);
EvaluationHelper.EvaluateRow(Evaluator,ml);
mylist.AddRange(ml);
//
simpleContainer.Size = rowSize;
Console.WriteLine("");
return curPos;
}
/*
protected Point ConvertStandardRow(ExporterCollection mylist, ISimpleContainer simpleContainer)
{
var rowSize = simpleContainer.Size;
@ -258,11 +278,11 @@ Console.WriteLine("ConvertStandardRow"); @@ -258,11 +278,11 @@ Console.WriteLine("ConvertStandardRow");
return curPos;
}
*/
protected void AfterConverting (ExporterCollection convertedList)
{
StandardPrinter.EvaluateRow(Evaluator,convertedList);
EvaluationHelper.EvaluateRow(Evaluator,convertedList);
}

10
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs

@ -5,6 +5,7 @@ using System; @@ -5,6 +5,7 @@ using System;
using System.Drawing;
using ICSharpCode.Reports.Core.BaseClasses.Printing;
using ICSharpCode.Reports.Core.Interfaces;
using ICSharpCode.Reports.Expressions.ReportingLanguage;
namespace ICSharpCode.Reports.Core.Exporter
{
@ -68,7 +69,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -68,7 +69,6 @@ namespace ICSharpCode.Reports.Core.Exporter
childSize = section.Items[1].Size;
}
do {
base.SaveSectionSize(section.Size);
PrintHelper.AdjustSectionLocation (section);
@ -103,8 +103,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -103,8 +103,6 @@ namespace ICSharpCode.Reports.Core.Exporter
FillRow(simpleContainer,childNavigator);
FireRowRendering(simpleContainer,childNavigator);
PrepareContainerForConverting(section,simpleContainer);
// FireRowRendering(simpleContainer,childNavigator);
base.CurrentPosition = ConvertStandardRow(exporterCollection,simpleContainer);
CheckForPageBreak(section,exporterCollection);
}
@ -121,12 +119,10 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -121,12 +119,10 @@ namespace ICSharpCode.Reports.Core.Exporter
else
{
// No Grouping at all, the first item in section.items is the DetailRow
Size containerSize = section.Items[0].Size;
FillRow(simpleContainer,base.DataNavigator);
FireRowRendering(simpleContainer,base.DataNavigator);
base.PrepareContainerForConverting(section,simpleContainer);
// FireRowRendering(simpleContainer,base.DataNavigator);
base.CurrentPosition = ConvertStandardRow (exporterCollection,simpleContainer);
section.Size = base.RestoreSectionSize;
section.Items[0].Size = containerSize;
@ -180,10 +176,10 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -180,10 +176,10 @@ namespace ICSharpCode.Reports.Core.Exporter
base.FireSectionRendering(section);
ExporterCollection list = StandardPrinter.ConvertPlainCollection(groupCollection,offset);
StandardPrinter.EvaluateRow(base.Evaluator,list);
EvaluationHelper.EvaluateRow(base.Evaluator,list);
exportList.AddRange(list);
AfterConverting (list);
//AfterConverting (list);
retVal = new Point (DefaultLeftPosition,offset.Y + groupCollection[0].Size.Height + 20 + (3 *GlobalValues.GapBetweenContainer));
} else {
FillRow(groupedRows[0],base.DataNavigator);

5
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs

@ -8,6 +8,7 @@ using System.Linq; @@ -8,6 +8,7 @@ using System.Linq;
using ICSharpCode.Reports.Core.BaseClasses.Printing;
using ICSharpCode.Reports.Core.Interfaces;
using ICSharpCode.Reports.Expressions.ReportingLanguage;
namespace ICSharpCode.Reports.Core.Exporter
{
@ -207,9 +208,9 @@ base.PrepareContainerForConverting(section,simpleContainer); @@ -207,9 +208,9 @@ base.PrepareContainerForConverting(section,simpleContainer);
groupCollection = section.Items.ExtractGroupedColumns();
base.DataNavigator.Fill(groupCollection);
base.FireSectionRendering(section);
ExporterCollection list = StandardPrinter.ConvertPlainCollection(groupCollection,offset);
StandardPrinter.EvaluateRow(base.Evaluator,list);
ExporterCollection list = StandardPrinter.ConvertPlainCollection(groupCollection,offset);
EvaluationHelper.EvaluateRow(base.Evaluator,list);
exportList.AddRange(list);
AfterConverting (list);

65
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/EvaluationHelper.cs

@ -0,0 +1,65 @@ @@ -0,0 +1,65 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 30.01.2011
* Time: 19:59
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using ICSharpCode.Reports.Core;
using ICSharpCode.Reports.Core.Exporter;
using ICSharpCode.Reports.Core.Interfaces;
namespace ICSharpCode.Reports.Expressions.ReportingLanguage
{
/// <summary>
/// Description of EvaluationHelper.
/// </summary>
public class EvaluationHelper
{
public static IExpressionEvaluatorFacade SetupEvaluator ()
{
return new ExpressionEvaluatorFacade(null);
}
public static IExpressionEvaluatorFacade CreateEvaluator (ISinglePage singlePage,IDataNavigator dataNavigator)
{
if (singlePage == null) {
throw new ArgumentNullException("singlePage");
}
if (dataNavigator == null) {
throw new ArgumentNullException("dataNavigator");
}
singlePage.IDataNavigator = dataNavigator;
IExpressionEvaluatorFacade evaluatorFacade = new ExpressionEvaluatorFacade(singlePage);
return evaluatorFacade;
}
public static void EvaluateRow(IExpressionEvaluatorFacade evaluator,ExporterCollection row)
{
try {
foreach (BaseExportColumn column in row) {
var container = column as IExportContainer;
if (container != null) {
EvaluateRow(evaluator,container.Items);
}
ExportText textItem = column as ExportText;
if (textItem != null) {
// if (textItem.Text.StartsWith("=",StringComparison.InvariantCulture)) {
//// Console.WriteLine(textItem.Text);
// }
textItem.Text = evaluator.Evaluate(textItem.Text);
}
}
} catch (Exception) {
throw ;
}
}
}
}

2
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/AbstractRenderer.cs

@ -85,7 +85,7 @@ namespace ICSharpCode.Reports.Core @@ -85,7 +85,7 @@ namespace ICSharpCode.Reports.Core
this.reportDocument.RenderPageEnd += new EventHandler<ReportPageEventArgs> (PrintPageFooter);
this.reportDocument.RenderReportEnd += new EventHandler<ReportPageEventArgs> (PrintReportFooter);
this.Evaluator = StandardPrinter.SetupEvaluator();
this.Evaluator = EvaluationHelper.SetupEvaluator();
}

Loading…
Cancel
Save