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 @@ -49,7 +49,7 @@ namespace ICSharpCode.Reporting.PageBuilder
{
if (Pages.Count == 0) {
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);
AddSectionToPage(header);
}

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

@ -45,7 +45,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -45,7 +45,7 @@ namespace ICSharpCode.Reporting.PageBuilder
void BuildDetail()
{
List<IExportContainer> rows = new List<IExportContainer>();
var rows = new List<IExportContainer>();
var converter = new ContainerConverter(base.Graphics, CurrentLocation);
var position = DetailStart;
@ -55,18 +55,16 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -55,18 +55,16 @@ namespace ICSharpCode.Reporting.PageBuilder
if(collectionSource.Count > 0) {
collectionSource.Bind();
CurrentLocation = DetailStart;
do {
var row = CreateContainerForSection(position);
row.Parent = CurrentPage;
collectionSource.Fill(CurrentSection.Items);
var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection.Items);
converter.SetParent(row,convertedItems);
MeasureAndArrangeContainer(row);
// if (PageFull(convertedItems)) {
if (PageFull(row)) {
row.ExportedItems.AddRange(convertedItems);
rows.Add(row);
MeasureAndArrangeContainer(row);
if (PageFull(row)) {
InsertRange(rows);
MeasureAndArrangeContainer(row);
rows.Clear();
@ -77,20 +75,18 @@ MeasureAndArrangeContainer(row); @@ -77,20 +75,18 @@ MeasureAndArrangeContainer(row);
CurrentPage = CreateNewPage();
WriteStandardSections();
CurrentLocation = DetailStart;
} else {
row.ExportedItems.AddRange(convertedItems);
rows.Add(row);
// MeasureAndArrangeContainer(row);
position = new Point(CurrentSection.Location.X,position.Y + row.DesiredSize.Height + 5);
position = DetailStart;
row.Location = position;
}
row.ExportedItems.AddRange(convertedItems);
rows.Add(row);
position = new Point(CurrentSection.Location.X,position.Y + row.DesiredSize.Height + 1);
}
while (collectionSource.MoveNext());
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 @@ -39,8 +39,9 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory
[Test]
public void CanInitDataPageBuilder()
{
var dpb = new DataPageBuilder (new ReportModel(),typeof(string),new System.Collections.Generic.List<string>());
// dpb.DataSource(new ReportModel(),new System.Collections.Generic.List<string>());
var dpb = new DataPageBuilder (new ReportModel(),
typeof(string),
new System.Collections.Generic.List<string>());
Assert.That(dpb,Is.Not.Null);
}
@ -83,24 +84,34 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory @@ -83,24 +84,34 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory
ex.Run();
}
/*
[Test]
// [Ignore]
public void LastPageContains_4_Section()
{
public void ReportContains_2_Pages () {
reportCreator.BuildExportList();
var exporteditems = reportCreator.Pages[1].ExportedItems;
var sections = from s in exporteditems
where s.GetType() == typeof(ExportContainer)
select s;
Assert.That(sections.ToList().Count,Is.EqualTo(4));
Assert.That(reportCreator.Pages.Count,Is.EqualTo(2));
}
*/
[Test]
public void ReportContains_2_Pages () {
public void LastElementInPageIsPageFooter() {
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