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

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

@ -28,6 +28,7 @@ namespace ICSharpCode.Reporting.Expressions
return false; return false;
} }
public static string ComposeAstNodeError (string branch,AstNode node) { public static string ComposeAstNodeError (string branch,AstNode node) {
return String.Format ("Missing {0} <{1}>",branch,node.AsString); 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 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // 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) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using ICSharpCode.Reporting.BaseClasses; using Irony.Interpreter;
using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.Items; using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.PageBuilder.ExportColumns; using ICSharpCode.Reporting.PageBuilder.ExportColumns;
using Irony.Interpreter;
namespace ICSharpCode.Reporting.Expressions.Irony.Ast 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
var parametersCollection = thread.GetParametersCollection(); var parametersCollection = thread.GetParametersCollection();
result = parametersCollection.Find(parameterNode.AsString); result = parametersCollection.Find(parameterNode.AsString);
if (result == null) if (result == null)
// return String.Format("Missing Parameter <{0}>",parameterNode.AsString);
return ExpressionHelper.ComposeAstNodeError("Parameters",parameterNode); return ExpressionHelper.ComposeAstNodeError("Parameters",parameterNode);
return result.ParameterValue; return result.ParameterValue;
} }

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

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

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

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

Loading…
Cancel
Save