Browse Source

Better PageBreak, including UnitTest's

reports
Peter Forstmeier 13 years ago
parent
commit
429b701d4f
  1. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  2. 28
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs
  3. 39
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs

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

@ -49,7 +49,7 @@ namespace ICSharpCode.Reporting.PageBuilder
{ {
if (Pages.Count == 0) { if (Pages.Count == 0) {
var header = CreateSection(ReportModel.ReportHeader,CurrentLocation); var header = CreateSection(ReportModel.ReportHeader,CurrentLocation);
var r = new Rectangle(header.Location.X,header.Location.Y,header.Size.Width,header.Size.Height); var r = new Rectangle(header.Location.X, header.Location.Y, header.Size.Width, header.Size.Height);
CurrentLocation = new Point (ReportModel.ReportSettings.LeftMargin,r.Bottom + 1); CurrentLocation = new Point (ReportModel.ReportSettings.LeftMargin,r.Bottom + 1);
AddSectionToPage(header); AddSectionToPage(header);
} }

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

@ -45,7 +45,7 @@ namespace ICSharpCode.Reporting.PageBuilder
void BuildDetail() void BuildDetail()
{ {
List<IExportContainer> rows = new List<IExportContainer>(); var rows = new List<IExportContainer>();
var converter = new ContainerConverter(base.Graphics, CurrentLocation); var converter = new ContainerConverter(base.Graphics, CurrentLocation);
var position = DetailStart; var position = DetailStart;
@ -55,18 +55,16 @@ namespace ICSharpCode.Reporting.PageBuilder
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(position);
row.Parent = CurrentPage; 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(convertedItems)) {
if (PageFull(row)) { if (PageFull(row)) {
row.ExportedItems.AddRange(convertedItems);
rows.Add(row);
InsertRange(rows); InsertRange(rows);
MeasureAndArrangeContainer(row); MeasureAndArrangeContainer(row);
rows.Clear(); rows.Clear();
@ -77,20 +75,18 @@ MeasureAndArrangeContainer(row);
CurrentPage = CreateNewPage(); CurrentPage = CreateNewPage();
WriteStandardSections(); WriteStandardSections();
CurrentLocation = DetailStart; CurrentLocation = DetailStart;
} else {
row.ExportedItems.AddRange(convertedItems); position = DetailStart;
rows.Add(row); row.Location = position;
// MeasureAndArrangeContainer(row);
position = new Point(CurrentSection.Location.X,position.Y + row.DesiredSize.Height + 5);
} }
row.ExportedItems.AddRange(convertedItems);
rows.Add(row);
position = new Point(CurrentSection.Location.X,position.Y + row.DesiredSize.Height + 1);
} }
while (collectionSource.MoveNext()); while (collectionSource.MoveNext());
InsertRange(rows); InsertRange(rows);
} else {
// detail = CreateContainerForSection(DetailStart);
// InsertDetailAtPosition(detail);
} }
} }

39
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs

@ -39,8 +39,9 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory
[Test] [Test]
public void CanInitDataPageBuilder() public void CanInitDataPageBuilder()
{ {
var dpb = new DataPageBuilder (new ReportModel(),typeof(string),new System.Collections.Generic.List<string>()); var dpb = new DataPageBuilder (new ReportModel(),
// dpb.DataSource(new ReportModel(),new System.Collections.Generic.List<string>()); typeof(string),
new System.Collections.Generic.List<string>());
Assert.That(dpb,Is.Not.Null); Assert.That(dpb,Is.Not.Null);
} }
@ -83,24 +84,34 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory
ex.Run(); ex.Run();
} }
/*
[Test] [Test]
// [Ignore] public void ReportContains_2_Pages () {
public void LastPageContains_4_Section()
{
reportCreator.BuildExportList(); reportCreator.BuildExportList();
var exporteditems = reportCreator.Pages[1].ExportedItems; Assert.That(reportCreator.Pages.Count,Is.EqualTo(2));
var sections = from s in exporteditems
where s.GetType() == typeof(ExportContainer)
select s;
Assert.That(sections.ToList().Count,Is.EqualTo(4));
} }
*/
[Test] [Test]
public void ReportContains_2_Pages () { public void LastElementInPageIsPageFooter() {
reportCreator.BuildExportList(); reportCreator.BuildExportList();
Assert.That(reportCreator.Pages.Count,Is.EqualTo(2));
var firstPage = reportCreator.Pages[1].ExportedItems;
var firstElement = firstPage.Last();
Assert.That(firstElement.Name,Is.EqualTo("ReportFooter"));
var lastPage = reportCreator.Pages[1].ExportedItems;
var lastElement = lastPage.Last();
Assert.That(lastElement.Name,Is.EqualTo("ReportFooter"));
}
[Test]
public void FirstElementOnScoundPageIsReportHeader() {
reportCreator.BuildExportList();
var exporteditems = reportCreator.Pages[1].ExportedItems;
var result = exporteditems[0];
Assert.That(result.Name,Is.EqualTo("ReportPageHeader"));
} }

Loading…
Cancel
Save