Browse Source

DataPageBuilder runs ExpressionVisitor.cs on every Data row

reports
Peter Forstmeier 12 years ago
parent
commit
ee463213c4
  1. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/ExpressionVisitor.cs
  2. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/ExpressionHelper.cs
  3. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/Irony/Ast/AstExtensions.cs
  4. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/Irony/Ast/ParametersCallNode.cs
  5. 9
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  6. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs
  7. 18
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/ExpressionVisitor.cs

@ -4,9 +4,9 @@ using System; @@ -4,9 +4,9 @@ using System;
using System.Collections.ObjectModel;
using ICSharpCode.Reporting.Expressions;
using ICSharpCode.Reporting.Expressions.Irony;
using ICSharpCode.Reporting.Expressions.Irony.Ast;
using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
using ICSharpCode.Reporting.Expressions.Irony.Ast;
namespace ICSharpCode.Reporting.Exporter.Visitors
{
@ -61,7 +61,6 @@ namespace ICSharpCode.Reporting.Exporter.Visitors @@ -61,7 +61,6 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
} catch (Exception e) {
var s = String.Format("SharpReport.Exprssions -> {0} for {1}",e.Message,exportColumn.Text);
Console.WriteLine(s);
// throw e;
}
}
}

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/ExpressionHelper.cs

@ -28,6 +28,7 @@ namespace ICSharpCode.Reporting.Expressions @@ -28,6 +28,7 @@ namespace ICSharpCode.Reporting.Expressions
return false;
}
public static string ComposeAstNodeError (string branch,AstNode node) {
return String.Format ("Missing {0} <{1}>",branch,node.AsString);
}

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/Irony/Ast/AstExtensions.cs

@ -1,11 +1,10 @@ @@ -1,11 +1,10 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.Reporting.BaseClasses;
using Irony.Interpreter;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
using Irony.Interpreter;
namespace ICSharpCode.Reporting.Expressions.Irony.Ast
{

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/Irony/Ast/ParametersCallNode.cs

@ -31,7 +31,6 @@ namespace ICSharpCode.Reporting.Expressions.Irony.Ast @@ -31,7 +31,6 @@ namespace ICSharpCode.Reporting.Expressions.Irony.Ast
var parametersCollection = thread.GetParametersCollection();
result = parametersCollection.Find(parameterNode.AsString);
if (result == null)
// return String.Format("Missing Parameter <{0}>",parameterNode.AsString);
return ExpressionHelper.ComposeAstNodeError("Parameters",parameterNode);
return result.ParameterValue;
}

9
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs

@ -14,6 +14,7 @@ using System.Linq; @@ -14,6 +14,7 @@ using System.Linq;
using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Exporter.Visitors;
using ICSharpCode.Reporting.Expressions;
using ICSharpCode.Reporting.Globals;
using ICSharpCode.Reporting.Interfaces;
@ -38,6 +39,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -38,6 +39,7 @@ namespace ICSharpCode.Reporting.PageBuilder
ReportModel = reportModel;
Pages = new Collection<ExportPage>();
Graphics = CreateGraphics.FromSize(reportModel.ReportSettings.PageSize);
ExpressionVisitor = new ExpressionVisitor(ReportModel.ReportSettings);
}
@ -207,6 +209,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -207,6 +209,7 @@ namespace ICSharpCode.Reporting.PageBuilder
CurrentLocation = DetailStart;
}
protected void UpdatePageInfo() {
foreach (var page in Pages) {
page.PageInfo.TotalPages = Pages.Count;
@ -233,10 +236,14 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -233,10 +236,14 @@ namespace ICSharpCode.Reporting.PageBuilder
protected ExportPage CurrentPage {get; set;}
protected Graphics Graphics {get;private set;}
internal Point DetailStart {get;private set;}
internal Point DetailEnds {get; private set;}
internal ExpressionVisitor ExpressionVisitor {get; private set;}
internal Rectangle DetailsRectangle {
get {
var s = new Size(DetailEnds.X - DetailStart.X,DetailEnds.Y - DetailStart.Y);
@ -244,8 +251,8 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -244,8 +251,8 @@ namespace ICSharpCode.Reporting.PageBuilder
}
}
protected Graphics Graphics {get;private set;}
public Collection<ExportPage> Pages {get; private set;}
}
}

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs

@ -20,7 +20,7 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter @@ -20,7 +20,7 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
/// <summary>
/// Description of SectionConverter.
/// </summary>
internal class ContainerConverter : IContainerConverter
class ContainerConverter : IContainerConverter
{
public ContainerConverter(Graphics graphics, Point currentLocation)
{

18
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs

@ -13,7 +13,6 @@ using System.Drawing; @@ -13,7 +13,6 @@ using System.Drawing;
using System.Linq;
using ICSharpCode.Reporting.DataManager.Listhandling;
using ICSharpCode.Reporting.Expressions;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.Converter;
@ -26,6 +25,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -26,6 +25,7 @@ namespace ICSharpCode.Reporting.PageBuilder
/// </summary>
public class DataPageBuilder:BasePageBuilder
{
public DataPageBuilder(IReportModel reportModel, Type elementType,IEnumerable list):base(reportModel)
{
List = list;
@ -49,25 +49,29 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -49,25 +49,29 @@ namespace ICSharpCode.Reporting.PageBuilder
var converter = new ContainerConverter(base.Graphics, CurrentLocation);
var position = DetailStart;
var collectionSource = new CollectionSource(List,ElementType,ReportModel.ReportSettings);
CurrentSection = ReportModel.DetailSection;
CurrentSection = ReportModel.DetailSection;
var collectionSource = new CollectionSource(List,ElementType,ReportModel.ReportSettings);
if(collectionSource.Count > 0) {
collectionSource.Bind();
CurrentLocation = DetailStart;
do {
var row = CreateContainerForSection(position);
row.Parent = CurrentPage;
var row = CreateContainerForSection(CurrentPage,position);
collectionSource.Fill(CurrentSection.Items);
var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection.Items);
converter.SetParent(row,convertedItems);
MeasureAndArrangeContainer(row);
if (PageFull(row)) {
InsertRange(rows);
MeasureAndArrangeContainer(row);
rows.Clear();
ExpressionVisitor.Visit(CurrentPage);
CurrentPage.PageInfo.PageNumber = Pages.Count + 1;
Pages.Add(CurrentPage);
MeasureAndArrangeContainer(row);
@ -81,6 +85,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -81,6 +85,7 @@ namespace ICSharpCode.Reporting.PageBuilder
}
row.ExportedItems.AddRange(convertedItems);
ExpressionVisitor.Visit(row as ExportContainer);
rows.Add(row);
position = new Point(CurrentSection.Location.X,position.Y + row.DesiredSize.Height + 1);
}
@ -297,10 +302,11 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -297,10 +302,11 @@ namespace ICSharpCode.Reporting.PageBuilder
}
IExportContainer CreateContainerForSection(Point location )
ExportContainer CreateContainerForSection(ExportPage parent,Point location )
{
var detail = (ExportContainer)CurrentSection.CreateExportColumn();
detail.Location = location;
detail.Parent = parent;
return detail;
}

Loading…
Cancel
Save